@openc3/vue-common 6.6.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/dist/{ArrayWidget-Bb_Ldxq7.cjs → ArrayWidget-DaONH8Iv.cjs} +2 -2
  2. package/dist/{ArrayWidget-Bb_Ldxq7.cjs.map → ArrayWidget-DaONH8Iv.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-Ck6pzAyW.js → ArrayWidget-j3ncPuPx.js} +4 -4
  4. package/dist/{ArrayWidget-Ck6pzAyW.js.map → ArrayWidget-j3ncPuPx.js.map} +1 -1
  5. package/dist/ArrayplotWidget-DPMVlst7.cjs +2 -0
  6. package/dist/ArrayplotWidget-DPMVlst7.cjs.map +1 -0
  7. package/dist/{ArrayplotWidget-ntRLh6-B.js → ArrayplotWidget-DuLaiGa9.js} +22 -22
  8. package/dist/ArrayplotWidget-DuLaiGa9.js.map +1 -0
  9. package/dist/{BarColumn-Bgz2YJ59.js → BarColumn-BWJ0Dd4O.js} +3 -3
  10. package/dist/{BarColumn-Bgz2YJ59.js.map → BarColumn-BWJ0Dd4O.js.map} +1 -1
  11. package/dist/{BarColumn-DtRNuOpa.cjs → BarColumn-CchXr_ex.cjs} +2 -2
  12. package/dist/{BarColumn-DtRNuOpa.cjs.map → BarColumn-CchXr_ex.cjs.map} +1 -1
  13. package/dist/{BlockWidget-DGH3Zz5p.js → BlockWidget-Bf5Dd6Cr.js} +4 -4
  14. package/dist/{BlockWidget-DGH3Zz5p.js.map → BlockWidget-Bf5Dd6Cr.js.map} +1 -1
  15. package/dist/{BlockWidget-DOY5lVfa.cjs → BlockWidget-CeDueZQ0.cjs} +2 -2
  16. package/dist/{BlockWidget-DOY5lVfa.cjs.map → BlockWidget-CeDueZQ0.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-CFyZXGt6.cjs → ButtonWidget-BZulfQct.cjs} +3 -3
  18. package/dist/{ButtonWidget-CFyZXGt6.cjs.map → ButtonWidget-BZulfQct.cjs.map} +1 -1
  19. package/dist/{ButtonWidget-D_tupiPB.js → ButtonWidget-bl_mGFYh.js} +17 -17
  20. package/dist/{ButtonWidget-D_tupiPB.js.map → ButtonWidget-bl_mGFYh.js.map} +1 -1
  21. package/dist/{CanvasWidget-C6dc7mUw.cjs → CanvasWidget-DwAXTAyn.cjs} +2 -2
  22. package/dist/{CanvasWidget-C6dc7mUw.cjs.map → CanvasWidget-DwAXTAyn.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-CzG2jYQb.js → CanvasWidget-boDemgx1.js} +2 -2
  24. package/dist/{CanvasWidget-CzG2jYQb.js.map → CanvasWidget-boDemgx1.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-0FAaw4G2.js → CanvasdotWidget-BZBbJcER.js} +2 -2
  26. package/dist/{CanvasdotWidget-0FAaw4G2.js.map → CanvasdotWidget-BZBbJcER.js.map} +1 -1
  27. package/dist/{CanvasdotWidget-9bBVHC1l.cjs → CanvasdotWidget-ByJp9ZIa.cjs} +2 -2
  28. package/dist/{CanvasdotWidget-9bBVHC1l.cjs.map → CanvasdotWidget-ByJp9ZIa.cjs.map} +1 -1
  29. package/dist/{CanvasimageWidget-CNJlzLqo.js → CanvasimageWidget-6ywvT5jd.js} +3 -3
  30. package/dist/{CanvasimageWidget-CNJlzLqo.js.map → CanvasimageWidget-6ywvT5jd.js.map} +1 -1
  31. package/dist/{CanvasimageWidget-DjvdDCRS.cjs → CanvasimageWidget-BDprHuH3.cjs} +2 -2
  32. package/dist/{CanvasimageWidget-DjvdDCRS.cjs.map → CanvasimageWidget-BDprHuH3.cjs.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-C1fI-ftP.cjs → CanvasimagevalueWidget-Cl_EuzNC.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-C1fI-ftP.cjs.map → CanvasimagevalueWidget-Cl_EuzNC.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-DudwwOD6.js → CanvasimagevalueWidget-DjWrA3gX.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-DudwwOD6.js.map → CanvasimagevalueWidget-DjWrA3gX.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-BZQp16dH.js → CanvaslabelWidget-Bq4V2BQh.js} +2 -2
  38. package/dist/{CanvaslabelWidget-BZQp16dH.js.map → CanvaslabelWidget-Bq4V2BQh.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget--6Sjc4E8.cjs → CanvaslabelWidget-aalWFBxK.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget--6Sjc4E8.cjs.map → CanvaslabelWidget-aalWFBxK.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-CHS36Te9.js → CanvaslabelvalueWidget-C8oNcFLi.js} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-CHS36Te9.js.map → CanvaslabelvalueWidget-C8oNcFLi.js.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-DZCxsIKk.cjs → CanvaslabelvalueWidget-DIO0fADo.cjs} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-DZCxsIKk.cjs.map → CanvaslabelvalueWidget-DIO0fADo.cjs.map} +1 -1
  45. package/dist/{CanvaslineWidget-Bn83Rb10.cjs → CanvaslineWidget-CqNOzV_A.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-Bn83Rb10.cjs.map → CanvaslineWidget-CqNOzV_A.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-nhKEAGhs.js → CanvaslineWidget-nvbL2GoL.js} +2 -2
  48. package/dist/{CanvaslineWidget-nhKEAGhs.js.map → CanvaslineWidget-nvbL2GoL.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-C6x_4Gc9.cjs → CanvaslinevalueWidget-D0kOhxXn.cjs} +2 -2
  50. package/dist/{CanvaslinevalueWidget-C6x_4Gc9.cjs.map → CanvaslinevalueWidget-D0kOhxXn.cjs.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-DsyIDkJy.js → CanvaslinevalueWidget-ZACQedKx.js} +2 -2
  52. package/dist/{CanvaslinevalueWidget-DsyIDkJy.js.map → CanvaslinevalueWidget-ZACQedKx.js.map} +1 -1
  53. package/dist/{CheckbuttonWidget-DCam7Jd0.js → CheckbuttonWidget-B82UE8AB.js} +2 -2
  54. package/dist/{CheckbuttonWidget-DCam7Jd0.js.map → CheckbuttonWidget-B82UE8AB.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-BvggsGZY.cjs → CheckbuttonWidget-L9xyRwfS.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-BvggsGZY.cjs.map → CheckbuttonWidget-L9xyRwfS.cjs.map} +1 -1
  57. package/dist/ClassificationBanners-ZF9Ab7D0.cjs +2 -0
  58. package/dist/ClassificationBanners-ZF9Ab7D0.cjs.map +1 -0
  59. package/dist/ClassificationBanners-jiqWjTAZ.js +35 -0
  60. package/dist/ClassificationBanners-jiqWjTAZ.js.map +1 -0
  61. package/dist/{ComboboxWidget-ZX-k-_aK.js → ComboboxWidget-4OFiSkI6.js} +2 -2
  62. package/dist/{ComboboxWidget-ZX-k-_aK.js.map → ComboboxWidget-4OFiSkI6.js.map} +1 -1
  63. package/dist/{ComboboxWidget-BS5WSbrK.cjs → ComboboxWidget-6hmnB_mK.cjs} +2 -2
  64. package/dist/{ComboboxWidget-BS5WSbrK.cjs.map → ComboboxWidget-6hmnB_mK.cjs.map} +1 -1
  65. package/dist/{CriticalCmdDialog-7tOK2XQk.cjs → CriticalCmdDialog-C-UGhtjE.cjs} +2 -2
  66. package/dist/{CriticalCmdDialog-7tOK2XQk.cjs.map → CriticalCmdDialog-C-UGhtjE.cjs.map} +1 -1
  67. package/dist/{CriticalCmdDialog-Dylpoz_4.js → CriticalCmdDialog-FhXDdBn4.js} +9 -9
  68. package/dist/{CriticalCmdDialog-Dylpoz_4.js.map → CriticalCmdDialog-FhXDdBn4.js.map} +1 -1
  69. package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -1
  70. package/dist/CustomIcon-h5X7369N.js.map +1 -1
  71. package/dist/{DateWidget-DuJ5uC2t.js → DateWidget-BmwtdirF.js} +2 -2
  72. package/dist/{DateWidget-DuJ5uC2t.js.map → DateWidget-BmwtdirF.js.map} +1 -1
  73. package/dist/{DateWidget-jejbk2-G.cjs → DateWidget-CmSp7svA.cjs} +2 -2
  74. package/dist/{DateWidget-jejbk2-G.cjs.map → DateWidget-CmSp7svA.cjs.map} +1 -1
  75. package/dist/{DetailsDialog-BQE0TraI.js → DetailsDialog-CLKEfU0s.js} +89 -89
  76. package/dist/DetailsDialog-CLKEfU0s.js.map +1 -0
  77. package/dist/DetailsDialog-DEicfRO1.cjs +2 -0
  78. package/dist/DetailsDialog-DEicfRO1.cjs.map +1 -0
  79. package/dist/DynamicWidget-BWEVCUfd.cjs.map +1 -1
  80. package/dist/DynamicWidget-CfMtj7H8.js.map +1 -1
  81. package/dist/{EventListDialog-CGUFCrJF.js → EventListDialog-BvSMSn7J.js} +52 -52
  82. package/dist/{EventListDialog-CGUFCrJF.js.map → EventListDialog-BvSMSn7J.js.map} +1 -1
  83. package/dist/EventListDialog-Em1RcH7I.cjs +2 -0
  84. package/dist/{EventListDialog-CDcJcxy5.cjs.map → EventListDialog-Em1RcH7I.cjs.map} +1 -1
  85. package/dist/{FormatvalueWidget-DYICPNcx.js → FormatvalueWidget-C8exC3bj.js} +3 -3
  86. package/dist/{FormatvalueWidget-DYICPNcx.js.map → FormatvalueWidget-C8exC3bj.js.map} +1 -1
  87. package/dist/{FormatvalueWidget-wu7Q3sXu.cjs → FormatvalueWidget-auKALSPC.cjs} +2 -2
  88. package/dist/{FormatvalueWidget-wu7Q3sXu.cjs.map → FormatvalueWidget-auKALSPC.cjs.map} +1 -1
  89. package/dist/Graph-BJqtVAaV.cjs +2 -0
  90. package/dist/Graph-BJqtVAaV.cjs.map +1 -0
  91. package/dist/Graph-CWcrowaT.js +2662 -0
  92. package/dist/Graph-CWcrowaT.js.map +1 -0
  93. package/dist/GraphWidget-BroqS0SO.cjs +2 -0
  94. package/dist/{GraphWidget-CQjKAMPR.cjs.map → GraphWidget-BroqS0SO.cjs.map} +1 -1
  95. package/dist/{GraphWidget-cTVq29cY.js → GraphWidget-CvzxZYVx.js} +31 -44
  96. package/dist/{GraphWidget-cTVq29cY.js.map → GraphWidget-CvzxZYVx.js.map} +1 -1
  97. package/dist/{HorizontalWidget-v1pfd94Z.js → HorizontalWidget-Ck151zVw.js} +6 -6
  98. package/dist/{HorizontalWidget-v1pfd94Z.js.map → HorizontalWidget-Ck151zVw.js.map} +1 -1
  99. package/dist/HorizontalWidget-DBeyBZCp.cjs +2 -0
  100. package/dist/{HorizontalWidget--AkRJPlL.cjs.map → HorizontalWidget-DBeyBZCp.cjs.map} +1 -1
  101. package/dist/HorizontalboxWidget-CuWtYdgh.cjs +2 -0
  102. package/dist/{HorizontalboxWidget-synL-Bar.cjs.map → HorizontalboxWidget-CuWtYdgh.cjs.map} +1 -1
  103. package/dist/{HorizontalboxWidget-B06-c_n4.js → HorizontalboxWidget-D3P-cl9V.js} +15 -15
  104. package/dist/{HorizontalboxWidget-B06-c_n4.js.map → HorizontalboxWidget-D3P-cl9V.js.map} +1 -1
  105. package/dist/{HorizontallineWidget-DEODVJCk.js → HorizontallineWidget-BE1TjPU8.js} +2 -2
  106. package/dist/{HorizontallineWidget-DEODVJCk.js.map → HorizontallineWidget-BE1TjPU8.js.map} +1 -1
  107. package/dist/{HorizontallineWidget-lTr2JTFY.cjs → HorizontallineWidget-QUFjdOSu.cjs} +2 -2
  108. package/dist/{HorizontallineWidget-lTr2JTFY.cjs.map → HorizontallineWidget-QUFjdOSu.cjs.map} +1 -1
  109. package/dist/{IframeWidget-n8lNXrpt.js → IframeWidget-BgJCgues.js} +2 -2
  110. package/dist/{IframeWidget-n8lNXrpt.js.map → IframeWidget-BgJCgues.js.map} +1 -1
  111. package/dist/{IframeWidget-ByhwW9yG.cjs → IframeWidget-DOZ1YyS2.cjs} +2 -2
  112. package/dist/{IframeWidget-ByhwW9yG.cjs.map → IframeWidget-DOZ1YyS2.cjs.map} +1 -1
  113. package/dist/{ImageLoader-DBWVFtNu.cjs → ImageLoader-AGF0VbZ5.cjs} +2 -2
  114. package/dist/{ImageLoader-DBWVFtNu.cjs.map → ImageLoader-AGF0VbZ5.cjs.map} +1 -1
  115. package/dist/{ImageLoader-CfcErydq.js → ImageLoader-CWn-PLOk.js} +2 -2
  116. package/dist/{ImageLoader-CfcErydq.js.map → ImageLoader-CWn-PLOk.js.map} +1 -1
  117. package/dist/{ImageviewerWidget-DE8fj06Z.js → ImageviewerWidget-BlhFZD2f.js} +2 -2
  118. package/dist/{ImageviewerWidget-DE8fj06Z.js.map → ImageviewerWidget-BlhFZD2f.js.map} +1 -1
  119. package/dist/{ImageviewerWidget-D4mU6wLX.cjs → ImageviewerWidget-DnmhYP68.cjs} +2 -2
  120. package/dist/{ImageviewerWidget-D4mU6wLX.cjs.map → ImageviewerWidget-DnmhYP68.cjs.map} +1 -1
  121. package/dist/{InterfacesTab-DTAAIx-y.cjs → InterfacesTab-76UJTIwF.cjs} +2 -2
  122. package/dist/{InterfacesTab-DTAAIx-y.cjs.map → InterfacesTab-76UJTIwF.cjs.map} +1 -1
  123. package/dist/{InterfacesTab-BF-Wx5gk.js → InterfacesTab-Cwz-zG7j.js} +3 -3
  124. package/dist/{InterfacesTab-BF-Wx5gk.js.map → InterfacesTab-Cwz-zG7j.js.map} +1 -1
  125. package/dist/{LabelWidget-DQZqRxKF.cjs → LabelWidget-C0DhD9Mn.cjs} +2 -2
  126. package/dist/{LabelWidget-DQZqRxKF.cjs.map → LabelWidget-C0DhD9Mn.cjs.map} +1 -1
  127. package/dist/{LabelWidget-iUIJLhdA.js → LabelWidget-Cwosk4x2.js} +2 -2
  128. package/dist/{LabelWidget-iUIJLhdA.js.map → LabelWidget-Cwosk4x2.js.map} +1 -1
  129. package/dist/{LabelledWidget-9HWChRmv.cjs → LabelledWidget-D8-aKfA_.cjs} +2 -2
  130. package/dist/{LabelledWidget-9HWChRmv.cjs.map → LabelledWidget-D8-aKfA_.cjs.map} +1 -1
  131. package/dist/{LabelledWidget-KI6fMlsr.js → LabelledWidget-Dl6rAFTQ.js} +4 -4
  132. package/dist/{LabelledWidget-KI6fMlsr.js.map → LabelledWidget-Dl6rAFTQ.js.map} +1 -1
  133. package/dist/{LabelprogressbarWidget-DwzTP73u.cjs → LabelprogressbarWidget-DosPhvaY.cjs} +2 -2
  134. package/dist/{LabelprogressbarWidget-DwzTP73u.cjs.map → LabelprogressbarWidget-DosPhvaY.cjs.map} +1 -1
  135. package/dist/{LabelprogressbarWidget-C2lzmqBH.js → LabelprogressbarWidget-MuAKesOz.js} +4 -4
  136. package/dist/{LabelprogressbarWidget-C2lzmqBH.js.map → LabelprogressbarWidget-MuAKesOz.js.map} +1 -1
  137. package/dist/{LabelsparklineWidget-Ci6GGm29.js → LabelsparklineWidget-6LA6Ox3d.js} +4 -4
  138. package/dist/{LabelsparklineWidget-Ci6GGm29.js.map → LabelsparklineWidget-6LA6Ox3d.js.map} +1 -1
  139. package/dist/{LabelsparklineWidget-DMjBshq8.cjs → LabelsparklineWidget-CLU8722I.cjs} +2 -2
  140. package/dist/{LabelsparklineWidget-DMjBshq8.cjs.map → LabelsparklineWidget-CLU8722I.cjs.map} +1 -1
  141. package/dist/{LabelvalueWidget-oiW-JDw6.js → LabelvalueWidget-BxAXx-Tf.js} +4 -4
  142. package/dist/{LabelvalueWidget-oiW-JDw6.js.map → LabelvalueWidget-BxAXx-Tf.js.map} +1 -1
  143. package/dist/{LabelvalueWidget-mAb0eLA8.cjs → LabelvalueWidget-WP4gK29n.cjs} +2 -2
  144. package/dist/{LabelvalueWidget-mAb0eLA8.cjs.map → LabelvalueWidget-WP4gK29n.cjs.map} +1 -1
  145. package/dist/{LabelvaluedescWidget-CZJ0kZN-.cjs → LabelvaluedescWidget-BQ-6OXHc.cjs} +2 -2
  146. package/dist/{LabelvaluedescWidget-CZJ0kZN-.cjs.map → LabelvaluedescWidget-BQ-6OXHc.cjs.map} +1 -1
  147. package/dist/{LabelvaluedescWidget-Ck0AJ9g0.js → LabelvaluedescWidget-Dwwlnd1g.js} +5 -5
  148. package/dist/{LabelvaluedescWidget-Ck0AJ9g0.js.map → LabelvaluedescWidget-Dwwlnd1g.js.map} +1 -1
  149. package/dist/{LabelvaluelimitsbarWidget-aaVLaejn.js → LabelvaluelimitsbarWidget-Dv8Qk8kK.js} +4 -4
  150. package/dist/{LabelvaluelimitsbarWidget-aaVLaejn.js.map → LabelvaluelimitsbarWidget-Dv8Qk8kK.js.map} +1 -1
  151. package/dist/{LabelvaluelimitsbarWidget-DjBqYxRr.cjs → LabelvaluelimitsbarWidget-Z_7ARnvo.cjs} +2 -2
  152. package/dist/{LabelvaluelimitsbarWidget-DjBqYxRr.cjs.map → LabelvaluelimitsbarWidget-Z_7ARnvo.cjs.map} +1 -1
  153. package/dist/{LabelvaluelimitscolumnWidget-Uur6aqOg.js → LabelvaluelimitscolumnWidget-D-_gl6fq.js} +5 -5
  154. package/dist/{LabelvaluelimitscolumnWidget-Uur6aqOg.js.map → LabelvaluelimitscolumnWidget-D-_gl6fq.js.map} +1 -1
  155. package/dist/{LabelvaluelimitscolumnWidget-GputlDZq.cjs → LabelvaluelimitscolumnWidget-DiO1b01N.cjs} +2 -2
  156. package/dist/{LabelvaluelimitscolumnWidget-GputlDZq.cjs.map → LabelvaluelimitscolumnWidget-DiO1b01N.cjs.map} +1 -1
  157. package/dist/{LabelvaluerangebarWidget-Bs9locqu.js → LabelvaluerangebarWidget-B3MKT-3Y.js} +4 -4
  158. package/dist/{LabelvaluerangebarWidget-Bs9locqu.js.map → LabelvaluerangebarWidget-B3MKT-3Y.js.map} +1 -1
  159. package/dist/{LabelvaluerangebarWidget-Ci-n_hxk.cjs → LabelvaluerangebarWidget-DtajHP0b.cjs} +2 -2
  160. package/dist/{LabelvaluerangebarWidget-Ci-n_hxk.cjs.map → LabelvaluerangebarWidget-DtajHP0b.cjs.map} +1 -1
  161. package/dist/{Layout-1z8iJV5-.js → Layout-Bkb6VP3e.js} +2 -2
  162. package/dist/{Layout-1z8iJV5-.js.map → Layout-Bkb6VP3e.js.map} +1 -1
  163. package/dist/Layout-CSbYbZWA.cjs +2 -0
  164. package/dist/{Layout-kOQnicRa.cjs.map → Layout-CSbYbZWA.cjs.map} +1 -1
  165. package/dist/{LedWidget-BN8IgAxJ.js → LedWidget-DOuDD8LI.js} +6 -6
  166. package/dist/LedWidget-DOuDD8LI.js.map +1 -0
  167. package/dist/LedWidget-DeREi8-u.cjs +2 -0
  168. package/dist/LedWidget-DeREi8-u.cjs.map +1 -0
  169. package/dist/LimitsbarWidget-BHr3IcIx.cjs +2 -0
  170. package/dist/{LimitsbarWidget-Co5GAHro.cjs.map → LimitsbarWidget-BHr3IcIx.cjs.map} +1 -1
  171. package/dist/{LimitsbarWidget-BxxoKTjp.js → LimitsbarWidget-D1U6SvVL.js} +4 -4
  172. package/dist/{LimitsbarWidget-BxxoKTjp.js.map → LimitsbarWidget-D1U6SvVL.js.map} +1 -1
  173. package/dist/{LimitscolorWidget-BpTcgqRC.cjs → LimitscolorWidget-BUkKRrSL.cjs} +2 -2
  174. package/dist/{LimitscolorWidget-BpTcgqRC.cjs.map → LimitscolorWidget-BUkKRrSL.cjs.map} +1 -1
  175. package/dist/{LimitscolorWidget-DFDwf4In.js → LimitscolorWidget-iSMGusqt.js} +2 -2
  176. package/dist/{LimitscolorWidget-DFDwf4In.js.map → LimitscolorWidget-iSMGusqt.js.map} +1 -1
  177. package/dist/{LimitscolumnWidget-CqJJKDzz.cjs → LimitscolumnWidget-COfNnb6f.cjs} +2 -2
  178. package/dist/{LimitscolumnWidget-CqJJKDzz.cjs.map → LimitscolumnWidget-COfNnb6f.cjs.map} +1 -1
  179. package/dist/{LimitscolumnWidget-CdBh2mJu.js → LimitscolumnWidget-DjxZTt_r.js} +4 -4
  180. package/dist/{LimitscolumnWidget-CdBh2mJu.js.map → LimitscolumnWidget-DjxZTt_r.js.map} +1 -1
  181. package/dist/{LinegraphWidget-jXksfbPb.js → LinegraphWidget-BHKU6zlT.js} +13 -13
  182. package/dist/LinegraphWidget-BHKU6zlT.js.map +1 -0
  183. package/dist/LinegraphWidget-RleSRWKa.cjs +2 -0
  184. package/dist/LinegraphWidget-RleSRWKa.cjs.map +1 -0
  185. package/dist/{MatrixbycolumnsWidget-DCwxPjwS.js → MatrixbycolumnsWidget-BKO-A2QD.js} +4 -4
  186. package/dist/{MatrixbycolumnsWidget-DCwxPjwS.js.map → MatrixbycolumnsWidget-BKO-A2QD.js.map} +1 -1
  187. package/dist/MatrixbycolumnsWidget-DWouVj7A.cjs +2 -0
  188. package/dist/{MatrixbycolumnsWidget-DxRhvPGv.cjs.map → MatrixbycolumnsWidget-DWouVj7A.cjs.map} +1 -1
  189. package/dist/{MicroservicesTab-DGaTcj-y.cjs → MicroservicesTab-L6qMAy4x.cjs} +2 -2
  190. package/dist/{MicroservicesTab-DGaTcj-y.cjs.map → MicroservicesTab-L6qMAy4x.cjs.map} +1 -1
  191. package/dist/{MicroservicesTab-B-SdMwek.js → MicroservicesTab-xLup6THU.js} +4 -4
  192. package/dist/{MicroservicesTab-B-SdMwek.js.map → MicroservicesTab-xLup6THU.js.map} +1 -1
  193. package/dist/{Openc3Screen-BZN0Wtrm.js → Openc3Screen-1rQ_Dbp4.js} +585 -452
  194. package/dist/Openc3Screen-1rQ_Dbp4.js.map +1 -0
  195. package/dist/Openc3Screen-BHHnSEoI.cjs +6 -0
  196. package/dist/Openc3Screen-BHHnSEoI.cjs.map +1 -0
  197. package/dist/{OutputDialog-CxKDhrg6.cjs → OutputDialog-DgM7aoa-.cjs} +2 -2
  198. package/dist/{OutputDialog-CxKDhrg6.cjs.map → OutputDialog-DgM7aoa-.cjs.map} +1 -1
  199. package/dist/{OutputDialog-CcSp-Uqo.js → OutputDialog-Ut5cXGxQ.js} +12 -12
  200. package/dist/{OutputDialog-CcSp-Uqo.js.map → OutputDialog-Ut5cXGxQ.js.map} +1 -1
  201. package/dist/{PackagesTab-Dx25CfF0.js → PackagesTab-ChJDyU3Z.js} +17 -17
  202. package/dist/{PackagesTab-Dx25CfF0.js.map → PackagesTab-ChJDyU3Z.js.map} +1 -1
  203. package/dist/PackagesTab-jqsRJEcJ.cjs +2 -0
  204. package/dist/{PackagesTab-B4V2n4io.cjs.map → PackagesTab-jqsRJEcJ.cjs.map} +1 -1
  205. package/dist/PluginsTab-CayzDij0.js +1340 -0
  206. package/dist/PluginsTab-CayzDij0.js.map +1 -0
  207. package/dist/PluginsTab-DYEv8EPg.cjs +6 -0
  208. package/dist/PluginsTab-DYEv8EPg.cjs.map +1 -0
  209. package/dist/{ProgressbarWidget-C0AkbX_o.cjs → ProgressbarWidget-Xba7gDbW.cjs} +2 -2
  210. package/dist/{ProgressbarWidget-C0AkbX_o.cjs.map → ProgressbarWidget-Xba7gDbW.cjs.map} +1 -1
  211. package/dist/{ProgressbarWidget-Cdu5nJC3.js → ProgressbarWidget-fbr2qu_N.js} +2 -2
  212. package/dist/{ProgressbarWidget-Cdu5nJC3.js.map → ProgressbarWidget-fbr2qu_N.js.map} +1 -1
  213. package/dist/{RadiobuttonWidget-DslmJO31.cjs → RadiobuttonWidget-CdpKw7jr.cjs} +2 -2
  214. package/dist/{RadiobuttonWidget-DslmJO31.cjs.map → RadiobuttonWidget-CdpKw7jr.cjs.map} +1 -1
  215. package/dist/{RadiobuttonWidget-CZZGbvdG.js → RadiobuttonWidget-DL08zcQT.js} +2 -2
  216. package/dist/{RadiobuttonWidget-CZZGbvdG.js.map → RadiobuttonWidget-DL08zcQT.js.map} +1 -1
  217. package/dist/{RadiogroupWidget-DKgBAR9E.cjs → RadiogroupWidget-DSA8ENmw.cjs} +2 -2
  218. package/dist/{RadiogroupWidget-DKgBAR9E.cjs.map → RadiogroupWidget-DSA8ENmw.cjs.map} +1 -1
  219. package/dist/{RadiogroupWidget-CQN3v8Ip.js → RadiogroupWidget-DW9Xpj3c.js} +2 -2
  220. package/dist/{RadiogroupWidget-CQN3v8Ip.js.map → RadiogroupWidget-DW9Xpj3c.js.map} +1 -1
  221. package/dist/{RangebarWidget-Tq80I5zA.cjs → RangebarWidget-B4oRyUwG.cjs} +2 -2
  222. package/dist/{RangebarWidget-Tq80I5zA.cjs.map → RangebarWidget-B4oRyUwG.cjs.map} +1 -1
  223. package/dist/{RangebarWidget-dZN9WjoZ.js → RangebarWidget-o9q55kjc.js} +4 -4
  224. package/dist/{RangebarWidget-dZN9WjoZ.js.map → RangebarWidget-o9q55kjc.js.map} +1 -1
  225. package/dist/RedisTab-BGz2ZN9T.js +171 -0
  226. package/dist/RedisTab-BGz2ZN9T.js.map +1 -0
  227. package/dist/RedisTab-Uqcfgux1.cjs +2 -0
  228. package/dist/RedisTab-Uqcfgux1.cjs.map +1 -0
  229. package/dist/{RollupWidget-CHdZAUCb.cjs → RollupWidget-43v3NX_Z.cjs} +2 -2
  230. package/dist/{RollupWidget-CHdZAUCb.cjs.map → RollupWidget-43v3NX_Z.cjs.map} +1 -1
  231. package/dist/{RollupWidget-i9DnNJl6.js → RollupWidget-BHnjj-DF.js} +2 -2
  232. package/dist/{RollupWidget-i9DnNJl6.js.map → RollupWidget-BHnjj-DF.js.map} +1 -1
  233. package/dist/{RoutersTab-Cp8wM-mS.cjs → RoutersTab-Be53r61Y.cjs} +2 -2
  234. package/dist/{RoutersTab-Cp8wM-mS.cjs.map → RoutersTab-Be53r61Y.cjs.map} +1 -1
  235. package/dist/{RoutersTab-DiYEI1Nq.js → RoutersTab-CCEPlZ_Y.js} +3 -3
  236. package/dist/{RoutersTab-DiYEI1Nq.js.map → RoutersTab-CCEPlZ_Y.js.map} +1 -1
  237. package/dist/{ScriptChooser-BnTP6ucF.cjs → ScriptChooser-B6TGFTBN.cjs} +2 -2
  238. package/dist/{ScriptChooser-BnTP6ucF.cjs.map → ScriptChooser-B6TGFTBN.cjs.map} +1 -1
  239. package/dist/{ScriptChooser-Cua8ObYv.js → ScriptChooser-CXjcm3bN.js} +2 -2
  240. package/dist/{ScriptChooser-Cua8ObYv.js.map → ScriptChooser-CXjcm3bN.js.map} +1 -1
  241. package/dist/{ScrollwindowWidget-54GU96Ve.js → ScrollwindowWidget-D-QVwztC.js} +15 -15
  242. package/dist/ScrollwindowWidget-D-QVwztC.js.map +1 -0
  243. package/dist/ScrollwindowWidget-D6ZHZr3o.cjs +2 -0
  244. package/dist/ScrollwindowWidget-D6ZHZr3o.cjs.map +1 -0
  245. package/dist/{SecretsTab-DY16usGc.cjs → SecretsTab-DDZ1VoUf.cjs} +2 -2
  246. package/dist/{SecretsTab-DY16usGc.cjs.map → SecretsTab-DDZ1VoUf.cjs.map} +1 -1
  247. package/dist/{SecretsTab-uWRVI1EE.js → SecretsTab-vVy356vr.js} +7 -7
  248. package/dist/{SecretsTab-uWRVI1EE.js.map → SecretsTab-vVy356vr.js.map} +1 -1
  249. package/dist/SettingsTab-CbWrf7U9.js +1763 -0
  250. package/dist/SettingsTab-CbWrf7U9.js.map +1 -0
  251. package/dist/SettingsTab-DsIVE5UL.cjs +3 -0
  252. package/dist/SettingsTab-DsIVE5UL.cjs.map +1 -0
  253. package/dist/{SignalWidget-B_kA9eCJ.js → SignalWidget-CsWuufdx.js} +2 -2
  254. package/dist/{SignalWidget-B_kA9eCJ.js.map → SignalWidget-CsWuufdx.js.map} +1 -1
  255. package/dist/{SignalWidget-COL8kXSJ.cjs → SignalWidget-CysAE9ZG.cjs} +2 -2
  256. package/dist/{SignalWidget-COL8kXSJ.cjs.map → SignalWidget-CysAE9ZG.cjs.map} +1 -1
  257. package/dist/{SimpleTextDialog-BWUqPlTv.cjs → SimpleTextDialog-CU6G5CBY.cjs} +2 -2
  258. package/dist/{SimpleTextDialog-BWUqPlTv.cjs.map → SimpleTextDialog-CU6G5CBY.cjs.map} +1 -1
  259. package/dist/{SimpleTextDialog-BulqUrdH.js → SimpleTextDialog-ChV5vRcV.js} +5 -5
  260. package/dist/{SimpleTextDialog-BulqUrdH.js.map → SimpleTextDialog-ChV5vRcV.js.map} +1 -1
  261. package/dist/{SpacerWidget-D_Ya_b1j.cjs → SpacerWidget-ChNk5TFU.cjs} +2 -2
  262. package/dist/{SpacerWidget-D_Ya_b1j.cjs.map → SpacerWidget-ChNk5TFU.cjs.map} +1 -1
  263. package/dist/{SpacerWidget-XoMPHak8.js → SpacerWidget-Di9-qunj.js} +2 -2
  264. package/dist/{SpacerWidget-XoMPHak8.js.map → SpacerWidget-Di9-qunj.js.map} +1 -1
  265. package/dist/{SparklineWidget-DQNsvEj9.js → SparklineWidget-B6-zhdPW.js} +4 -4
  266. package/dist/{SparklineWidget-DQNsvEj9.js.map → SparklineWidget-B6-zhdPW.js.map} +1 -1
  267. package/dist/{SparklineWidget-CRzXTS5z.cjs → SparklineWidget-D1tVqSRL.cjs} +2 -2
  268. package/dist/{SparklineWidget-CRzXTS5z.cjs.map → SparklineWidget-D1tVqSRL.cjs.map} +1 -1
  269. package/dist/{TabbookWidget-_HVA72t5.js → TabbookWidget-B1E1_mzA.js} +2 -2
  270. package/dist/{TabbookWidget-_HVA72t5.js.map → TabbookWidget-B1E1_mzA.js.map} +1 -1
  271. package/dist/{TabbookWidget-Bh-GDBXg.cjs → TabbookWidget-Btg-Axid.cjs} +2 -2
  272. package/dist/{TabbookWidget-Bh-GDBXg.cjs.map → TabbookWidget-Btg-Axid.cjs.map} +1 -1
  273. package/dist/{TargetsTab-BfoRYnTP.js → TargetsTab-DbbQcBuK.js} +3 -3
  274. package/dist/{TargetsTab-BfoRYnTP.js.map → TargetsTab-DbbQcBuK.js.map} +1 -1
  275. package/dist/{TargetsTab-CGE-jQAz.cjs → TargetsTab-pbmAAkOA.cjs} +2 -2
  276. package/dist/{TargetsTab-CGE-jQAz.cjs.map → TargetsTab-pbmAAkOA.cjs.map} +1 -1
  277. package/dist/{TextBoxDialog-C60jmnyN.js → TextBoxDialog-CdFHdj5W.js} +4 -4
  278. package/dist/{TextBoxDialog-C60jmnyN.js.map → TextBoxDialog-CdFHdj5W.js.map} +1 -1
  279. package/dist/{TextBoxDialog-DWt30tB8.cjs → TextBoxDialog-DbD8P4Xc.cjs} +2 -2
  280. package/dist/{TextBoxDialog-DWt30tB8.cjs.map → TextBoxDialog-DbD8P4Xc.cjs.map} +1 -1
  281. package/dist/{TextboxWidget-0JXn4bMH.js → TextboxWidget-CBVEXPw_.js} +4 -4
  282. package/dist/{TextboxWidget-0JXn4bMH.js.map → TextboxWidget-CBVEXPw_.js.map} +1 -1
  283. package/dist/{TextboxWidget-uDptDK_z.cjs → TextboxWidget-CHXcR8lA.cjs} +2 -2
  284. package/dist/{TextboxWidget-uDptDK_z.cjs.map → TextboxWidget-CHXcR8lA.cjs.map} +1 -1
  285. package/dist/{TextfieldWidget-BXr9MkVW.js → TextfieldWidget-DZMHrtQa.js} +2 -2
  286. package/dist/{TextfieldWidget-BXr9MkVW.js.map → TextfieldWidget-DZMHrtQa.js.map} +1 -1
  287. package/dist/{TextfieldWidget-B0FCskrL.cjs → TextfieldWidget-vSJ9CtKs.cjs} +2 -2
  288. package/dist/{TextfieldWidget-B0FCskrL.cjs.map → TextfieldWidget-vSJ9CtKs.cjs.map} +1 -1
  289. package/dist/{TimeWidget-q5tUvHC6.cjs → TimeWidget-ClkxS_oo.cjs} +2 -2
  290. package/dist/{TimeWidget-q5tUvHC6.cjs.map → TimeWidget-ClkxS_oo.cjs.map} +1 -1
  291. package/dist/{TimeWidget-C67uwMGH.js → TimeWidget-K4MNmJ7J.js} +2 -2
  292. package/dist/{TimeWidget-C67uwMGH.js.map → TimeWidget-K4MNmJ7J.js.map} +1 -1
  293. package/dist/{TitleWidget-t_YLgUMB.js → TitleWidget-8IcwweFE.js} +2 -2
  294. package/dist/{TitleWidget-t_YLgUMB.js.map → TitleWidget-8IcwweFE.js.map} +1 -1
  295. package/dist/{TitleWidget-REsd7MqR.cjs → TitleWidget-DJJ17ATm.cjs} +2 -2
  296. package/dist/{TitleWidget-REsd7MqR.cjs.map → TitleWidget-DJJ17ATm.cjs.map} +1 -1
  297. package/dist/ToolsTab-BkabqeR_.cjs +7 -0
  298. package/dist/{ToolsTab-CGztf9_j.cjs.map → ToolsTab-BkabqeR_.cjs.map} +1 -1
  299. package/dist/{ToolsTab-DKYeIlXu.js → ToolsTab-tkganPCk.js} +6 -6
  300. package/dist/{ToolsTab-DKYeIlXu.js.map → ToolsTab-tkganPCk.js.map} +1 -1
  301. package/dist/{TopBar-BrCfgCxc.js → TopBar-BoI8SRaF.js} +10 -10
  302. package/dist/{TopBar-BrCfgCxc.js.map → TopBar-BoI8SRaF.js.map} +1 -1
  303. package/dist/TopBar-zJvwq8pr.cjs +2 -0
  304. package/dist/{TopBar-B0UcAtIW.cjs.map → TopBar-zJvwq8pr.cjs.map} +1 -1
  305. package/dist/{UpgradeToEnterpriseDialog-CGyR2v7U.js → UpgradeToEnterpriseDialog-BYz9YoyY.js} +9 -9
  306. package/dist/{UpgradeToEnterpriseDialog-CGyR2v7U.js.map → UpgradeToEnterpriseDialog-BYz9YoyY.js.map} +1 -1
  307. package/dist/{UpgradeToEnterpriseDialog-DJ3oth3I.cjs → UpgradeToEnterpriseDialog-BxHUptQB.cjs} +2 -2
  308. package/dist/{UpgradeToEnterpriseDialog-DJ3oth3I.cjs.map → UpgradeToEnterpriseDialog-BxHUptQB.cjs.map} +1 -1
  309. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs +1498 -0
  310. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs.map +1 -0
  311. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js} +12916 -12652
  312. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js.map +1 -0
  313. package/dist/VWidget-3ziiUuPM.cjs +2 -0
  314. package/dist/VWidget-3ziiUuPM.cjs.map +1 -0
  315. package/dist/VWidget-CoIgX3hM.js +190 -0
  316. package/dist/VWidget-CoIgX3hM.js.map +1 -0
  317. package/dist/{ValueWidget-3jNtnh5i.js → ValueWidget-BvT1ASar.js} +4 -4
  318. package/dist/{ValueWidget-3jNtnh5i.js.map → ValueWidget-BvT1ASar.js.map} +1 -1
  319. package/dist/{ValueWidget-CjZeSiPQ.cjs → ValueWidget-RU-vFOh9.cjs} +2 -2
  320. package/dist/{ValueWidget-CjZeSiPQ.cjs.map → ValueWidget-RU-vFOh9.cjs.map} +1 -1
  321. package/dist/{ValuelimitsbarWidget-CkLbRP8P.cjs → ValuelimitsbarWidget-B5UtwjJW.cjs} +2 -2
  322. package/dist/{ValuelimitsbarWidget-CkLbRP8P.cjs.map → ValuelimitsbarWidget-B5UtwjJW.cjs.map} +1 -1
  323. package/dist/{ValuelimitsbarWidget-JSceOzGS.js → ValuelimitsbarWidget-C5lBnUmB.js} +4 -4
  324. package/dist/{ValuelimitsbarWidget-JSceOzGS.js.map → ValuelimitsbarWidget-C5lBnUmB.js.map} +1 -1
  325. package/dist/{ValuelimitscolumnWidget-DpU4BoB7.cjs → ValuelimitscolumnWidget-BruOZb26.cjs} +2 -2
  326. package/dist/{ValuelimitscolumnWidget-DpU4BoB7.cjs.map → ValuelimitscolumnWidget-BruOZb26.cjs.map} +1 -1
  327. package/dist/{ValuelimitscolumnWidget-HR1TNHwQ.js → ValuelimitscolumnWidget-DHYI0WBL.js} +4 -4
  328. package/dist/{ValuelimitscolumnWidget-HR1TNHwQ.js.map → ValuelimitscolumnWidget-DHYI0WBL.js.map} +1 -1
  329. package/dist/{ValuerangebarWidget-DnZrho8S.js → ValuerangebarWidget-BSszZhlE.js} +4 -4
  330. package/dist/{ValuerangebarWidget-DnZrho8S.js.map → ValuerangebarWidget-BSszZhlE.js.map} +1 -1
  331. package/dist/{ValuerangebarWidget-CpZYmUl_.cjs → ValuerangebarWidget-BhQVRHhm.cjs} +2 -2
  332. package/dist/{ValuerangebarWidget-CpZYmUl_.cjs.map → ValuerangebarWidget-BhQVRHhm.cjs.map} +1 -1
  333. package/dist/{VerticalWidget-DJvoxqLE.js → VerticalWidget-1GhgYrC3.js} +13 -13
  334. package/dist/{VerticalWidget-DJvoxqLE.js.map → VerticalWidget-1GhgYrC3.js.map} +1 -1
  335. package/dist/VerticalWidget-XZrIw9zV.cjs +2 -0
  336. package/dist/{VerticalWidget-CcJMMaK_.cjs.map → VerticalWidget-XZrIw9zV.cjs.map} +1 -1
  337. package/dist/VerticalboxWidget-BV-onQ8m.cjs +2 -0
  338. package/dist/{VerticalboxWidget-CJR_mOLa.cjs.map → VerticalboxWidget-BV-onQ8m.cjs.map} +1 -1
  339. package/dist/{VerticalboxWidget-CYYyLBoO.js → VerticalboxWidget-DYHJqEzd.js} +13 -13
  340. package/dist/{VerticalboxWidget-CYYyLBoO.js.map → VerticalboxWidget-DYHJqEzd.js.map} +1 -1
  341. package/dist/{Widget-Bn_S-zBo.js → Widget-B8t93Oid.js} +4 -4
  342. package/dist/Widget-B8t93Oid.js.map +1 -0
  343. package/dist/{Widget-O7wkmc39.cjs → Widget-Blq-k5SB.cjs} +2 -2
  344. package/dist/{Widget-O7wkmc39.cjs.map → Widget-Blq-k5SB.cjs.map} +1 -1
  345. package/dist/cmdUtilities-BMsSNjt_.js +46 -0
  346. package/dist/cmdUtilities-BMsSNjt_.js.map +1 -0
  347. package/dist/cmdUtilities-ChD8v8-7.cjs +2 -0
  348. package/dist/cmdUtilities-ChD8v8-7.cjs.map +1 -0
  349. package/dist/components.cjs +3 -3
  350. package/dist/components.cjs.map +1 -1
  351. package/dist/components.js +685 -823
  352. package/dist/components.js.map +1 -1
  353. package/dist/icons.cjs.map +1 -1
  354. package/dist/icons.js.map +1 -1
  355. package/dist/{index-qCq0L4jN.js → index-DDjz5VQq.js} +345 -327
  356. package/dist/index-DDjz5VQq.js.map +1 -0
  357. package/dist/index-DZh4NjG5.cjs +7 -0
  358. package/dist/index-DZh4NjG5.cjs.map +1 -0
  359. package/dist/plugins.cjs +2 -2
  360. package/dist/plugins.cjs.map +1 -1
  361. package/dist/plugins.js +184 -177
  362. package/dist/plugins.js.map +1 -1
  363. package/dist/settings-DyvFSj59.cjs +2 -0
  364. package/dist/settings-DyvFSj59.cjs.map +1 -0
  365. package/dist/settings-UZsgbUSr.js +34 -0
  366. package/dist/settings-UZsgbUSr.js.map +1 -0
  367. package/dist/tools/admin.cjs +3 -3
  368. package/dist/tools/admin.cjs.map +1 -1
  369. package/dist/tools/admin.js +84 -76
  370. package/dist/tools/admin.js.map +1 -1
  371. package/dist/tools/base.cjs +1 -1
  372. package/dist/tools/base.cjs.map +1 -1
  373. package/dist/tools/base.js +504 -473
  374. package/dist/tools/base.js.map +1 -1
  375. package/dist/tools/calendar.cjs +1 -1
  376. package/dist/tools/calendar.js +1 -1
  377. package/dist/tools/scriptrunner.cjs +34 -34
  378. package/dist/tools/scriptrunner.cjs.map +1 -1
  379. package/dist/tools/scriptrunner.js +945 -876
  380. package/dist/tools/scriptrunner.js.map +1 -1
  381. package/dist/util.cjs +1 -1
  382. package/dist/util.js +4 -2
  383. package/dist/util.js.map +1 -1
  384. package/dist/vue-common.css +1 -1
  385. package/dist/widgets.cjs +1 -1
  386. package/dist/widgets.js +63 -63
  387. package/package.json +15 -15
  388. package/dist/ArrayplotWidget-DC41cpv1.cjs +0 -2
  389. package/dist/ArrayplotWidget-DC41cpv1.cjs.map +0 -1
  390. package/dist/ArrayplotWidget-ntRLh6-B.js.map +0 -1
  391. package/dist/DetailsDialog-BQE0TraI.js.map +0 -1
  392. package/dist/DetailsDialog-DmKpPDNn.cjs +0 -2
  393. package/dist/DetailsDialog-DmKpPDNn.cjs.map +0 -1
  394. package/dist/EventListDialog-CDcJcxy5.cjs +0 -2
  395. package/dist/Graph-DCihpnT0.js +0 -1853
  396. package/dist/Graph-DCihpnT0.js.map +0 -1
  397. package/dist/Graph-mSqImgca.cjs +0 -2
  398. package/dist/Graph-mSqImgca.cjs.map +0 -1
  399. package/dist/GraphWidget-CQjKAMPR.cjs +0 -2
  400. package/dist/HorizontalWidget--AkRJPlL.cjs +0 -2
  401. package/dist/HorizontalboxWidget-synL-Bar.cjs +0 -2
  402. package/dist/Layout-kOQnicRa.cjs +0 -2
  403. package/dist/LedWidget-BN8IgAxJ.js.map +0 -1
  404. package/dist/LedWidget-BUTbyEBi.cjs +0 -2
  405. package/dist/LedWidget-BUTbyEBi.cjs.map +0 -1
  406. package/dist/LimitsbarWidget-Co5GAHro.cjs +0 -2
  407. package/dist/LinegraphWidget-Bay0EtbI.cjs +0 -2
  408. package/dist/LinegraphWidget-Bay0EtbI.cjs.map +0 -1
  409. package/dist/LinegraphWidget-jXksfbPb.js.map +0 -1
  410. package/dist/MatrixbycolumnsWidget-DxRhvPGv.cjs +0 -2
  411. package/dist/Openc3Screen-BZN0Wtrm.js.map +0 -1
  412. package/dist/Openc3Screen-dtpBWZdA.cjs +0 -5
  413. package/dist/Openc3Screen-dtpBWZdA.cjs.map +0 -1
  414. package/dist/PackagesTab-B4V2n4io.cjs +0 -2
  415. package/dist/PluginsTab-DHO1tK2S.cjs +0 -6
  416. package/dist/PluginsTab-DHO1tK2S.cjs.map +0 -1
  417. package/dist/PluginsTab-lHDR5v6S.js +0 -562
  418. package/dist/PluginsTab-lHDR5v6S.js.map +0 -1
  419. package/dist/RedisTab-CdiSo-CO.cjs +0 -2
  420. package/dist/RedisTab-CdiSo-CO.cjs.map +0 -1
  421. package/dist/RedisTab-CkSwEwTZ.js +0 -135
  422. package/dist/RedisTab-CkSwEwTZ.js.map +0 -1
  423. package/dist/ScrollwindowWidget-54GU96Ve.js.map +0 -1
  424. package/dist/ScrollwindowWidget-C5_X-KwQ.cjs +0 -2
  425. package/dist/ScrollwindowWidget-C5_X-KwQ.cjs.map +0 -1
  426. package/dist/SettingsTab-BVnr4OtU.js +0 -1445
  427. package/dist/SettingsTab-BVnr4OtU.js.map +0 -1
  428. package/dist/SettingsTab-BkwaDhYo.cjs +0 -3
  429. package/dist/SettingsTab-BkwaDhYo.cjs.map +0 -1
  430. package/dist/ToolsTab-CGztf9_j.cjs +0 -7
  431. package/dist/TopBar-B0UcAtIW.cjs +0 -2
  432. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs +0 -1497
  433. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs.map +0 -1
  434. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js.map +0 -1
  435. package/dist/VWidget-BMxLXtSO.cjs +0 -2
  436. package/dist/VWidget-BMxLXtSO.cjs.map +0 -1
  437. package/dist/VWidget-j2GIGGSX.js +0 -326
  438. package/dist/VWidget-j2GIGGSX.js.map +0 -1
  439. package/dist/VerticalWidget-CcJMMaK_.cjs +0 -2
  440. package/dist/VerticalboxWidget-CJR_mOLa.cjs +0 -2
  441. package/dist/Widget-Bn_S-zBo.js.map +0 -1
  442. package/dist/index-DcL65Mqb.cjs +0 -7
  443. package/dist/index-DcL65Mqb.cjs.map +0 -1
  444. package/dist/index-qCq0L4jN.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../src/components/config/Config.js","../src/components/config/OpenConfigDialog.vue","../src/components/config/SaveConfigDialog.vue","../src/components/LogMessages.vue","../src/components/NotFound.vue","../src/components/TargetPacketItemChooser.vue"],"sourcesContent":["/*\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: {\n configKey: '',\n // Applications can set to avoid persisting default config\n // Useful when loading and setting existing config\n dontSaveDefaultConfig: false,\n },\n methods: {\n loadDefaultConfig: function () {\n if (localStorage[`${this.configKey}__default`]) {\n return JSON.parse(localStorage[`${this.configKey}__default`])\n } else {\n return {}\n }\n },\n saveDefaultConfig: function (config) {\n if (this.dontSaveDefaultConfig === true) {\n return\n }\n localStorage[`${this.configKey}__default`] = JSON.stringify(config)\n },\n openConfigBase: function (name, routed = false, callback = null) {\n new OpenC3Api()\n .load_config(this.configKey, name)\n .then((response) => {\n if (response) {\n this.$notify.normal({\n title: 'Loading configuration',\n body: name,\n })\n if (callback) callback(JSON.parse(response))\n if (!routed) {\n if (!this.$route.fullPath.includes(name)) {\n this.$router.push({\n query: {\n config: name,\n },\n })\n }\n }\n } else {\n this.$notify.caution({\n title: 'Unknown configuration',\n body: name,\n })\n }\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error opening configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n saveConfigBase: function (name, config) {\n new OpenC3Api()\n .save_config(this.configKey, name, JSON.stringify(config))\n .then(() => {\n this.$notify.normal({\n title: 'Saved configuration',\n body: name,\n })\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error saving configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n resetConfigBase: function () {\n localStorage.removeItem(`${this.configKey}__default`)\n\n const query = { ...this.$route.query }\n delete query.config\n this.$router.replace({ query })\n },\n },\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n autofocus\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"open-config-cancel-btn\"\n @click=\"cancel\"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n if (!this.selectedItem) return\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (!this.configName) {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n watch: {\n selectedItem: function (val) {\n if (val) {\n this.configName = val.config\n }\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n <div class=\"d-flex align-baseline\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"download-log\"\n @click=\"downloadLog\"\n />\n <span> Log Messages </span>\n <v-btn\n :icon=\"buttonIcon\"\n variant=\"text\"\n data-test=\"pause\"\n @click=\"pause\"\n />\n </div>\n <v-spacer />\n <v-select\n v-model=\"logLevel\"\n label=\"Filter by log level\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n :items=\"logLevels\"\n class=\"mr-2\"\n style=\"max-width: 150px\"\n data-test=\"log-messages-level\"\n />\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n style=\"max-width: 300px\"\n class=\"search\"\n data-test=\"search-log-messages\"\n />\n <v-btn\n icon=\"mdi-delete-sweep\"\n variant=\"text\"\n class=\"ml-2\"\n data-test=\"clear-log\"\n @click=\"clearLog\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"shownData\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n sticky\n hover\n data-test=\"log-messages\"\n >\n <template #item.timestamp=\"{ item }\">\n <time :title=\"item.timestamp\" :datetime=\"item.timestamp\">\n {{ item.timestamp }}\n </time>\n </template>\n <template #item.level=\"{ item }\">\n <span :style=\"'display: inline-flex; color:' + getColor(item.level)\">\n <rux-status class=\"mr-1\" :status=\"getStatus(item.level)\"></rux-status>\n {{ item.level }}</span\n >\n </template>\n <template #item.message=\"{ item }\">\n <div style=\"white-space: pre-wrap\">{{ item.message }}</div>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { format } from 'date-fns'\nimport { Cable } from '@openc3/js-common/services'\nimport { AstroStatusColors, UnknownToAstroStatus } from '@/icons'\nimport { TimeFilters } from '@/util'\n\nexport default {\n mixins: [TimeFilters],\n props: {\n historyCount: {\n type: Number,\n default: 200,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n AstroStatusColors,\n data: [],\n shownData: [],\n logLevels: ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],\n logLevel: 'INFO',\n search: '',\n headers: [\n { title: 'Time', value: 'timestamp', nowrap: true },\n { title: 'Level', value: 'level' },\n { title: 'Source', value: 'microservice_name' },\n { title: 'Message', value: 'message' },\n ],\n cable: new Cable(),\n subscription: null,\n paused: false,\n }\n },\n computed: {\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n },\n watch: {\n logLevel: function (newVal, oldVal) {\n this.createSubscription()\n },\n },\n created() {\n this.createSubscription()\n },\n unmounted() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n pause: function () {\n this.paused = !this.paused\n },\n createSubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.data = []\n this.shownData = this.data\n }\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (messages) => {\n this.cable.recordPing()\n if (messages.length > this.historyCount) {\n messages.splice(0, messages.length - this.historyCount)\n }\n // Filter messages before they're added to the table\n // This prevents a bunch of invisible 'INFO' messages from pushing\n // off the 'WARN' or 'ERROR' messages if we filter inside the data-table\n messages = messages.filter((message) => {\n switch (this.logLevel) {\n case 'DEBUG':\n return true\n case 'INFO':\n if (message.level !== 'DEBUG') {\n return true\n }\n break\n case 'WARN':\n if (message.level !== 'DEBUG' && message.level !== 'INFO') {\n return true\n }\n break\n case 'ERROR':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN'\n ) {\n return true\n }\n break\n case 'FATAL':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN' &&\n message.level !== 'ERROR'\n ) {\n return true\n }\n break\n }\n return false\n })\n messages.map((message) => {\n message.timestamp = this.formatTimestamp(\n message['@timestamp'],\n this.timeZone,\n )\n if (\n message.message.raw &&\n message.message.json_class === 'String'\n ) {\n // This is binary data, display in hex.\n let result = '0x'\n for (let i = 0; i < message.message.raw.length; i++) {\n let nibble = message.message.raw[i]\n .toString(16)\n .toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n result += nibble\n }\n message.message = result\n } else {\n message.message = message.message.replaceAll('\\\\n', '\\n')\n }\n })\n this.data = messages.reverse().concat(this.data)\n if (this.data.length > this.historyCount) {\n this.data.length = this.historyCount\n }\n if (!this.paused) {\n this.shownData = this.data\n }\n },\n },\n {\n // Channel parameter is history_count with underscore\n history_count: this.historyCount,\n types: ['log', 'notification', 'alert'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n getColor(level) {\n return AstroStatusColors[UnknownToAstroStatus[level]]\n },\n getStatus(level) {\n return UnknownToAstroStatus[level]\n },\n downloadLog() {\n const output = this.shownData\n .map(\n (entry) =>\n // Other fields are available like container_name, msg_id ... probably not useful\n `${entry.timestamp} | ${entry.level} | ${entry.microservice_name} | ${entry.message}`,\n )\n .join('\\n')\n const blob = new Blob([output], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute(\n 'download',\n format(Date.now(), 'yyyy_MM_dd_HH_mm_ss') + '_message_log.txt',\n )\n link.click()\n },\n clearLog: function () {\n this.$dialog\n .confirm('Are you sure you want to clear the log?', {\n okText: 'Clear',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n this.data = []\n this.shownData = []\n })\n .catch(function (err) {\n // Canceling the dialog forces catch and sets err to true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n /* take up any remaining vertical space\n (e.g. whatever is left after the tabs in cmdtlmserver)\n */\n flex-grow: 1;\n\n /* flex so the table can grow without making the card itself scroll */\n display: flex;\n flex-direction: column;\n}\n.v-data-table {\n height: 25vh; /* give it at least a bit of height to start with */\n flex-grow: 1; /* and then grow to fill all the space it can */\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card v-if=\"show\">\n <v-card-title> 404 Not Found </v-card-title>\n <v-card-text class=\"d-flex align-center mt-3\">\n The requested URL\n <code class=\"mx-1\"> {{ $route.fullPath }} </code>\n was not routable.\n <span class=\"text-h3 mx-1\"> 🦄 </span>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { getMountedApps } from 'single-spa'\n\nconst SINGLE_SPA_APP_CHANGE_EVENT = 'single-spa:app-change'\n\n// This component is actually always loaded for every route other than /login\n// because of the catch-all path in tool-base's router, so we need logic to\n// hide it when a tool is loaded.\nexport default {\n data() {\n return {\n show: false,\n }\n },\n created() {\n window.addEventListener(SINGLE_SPA_APP_CHANGE_EVENT, this.handleAppChange)\n },\n mounted() {\n // Give single-spa some time to get an app mounted to avoid flashing this\n setTimeout(() => {\n this.show = getMountedApps().length === 0\n }, 150)\n },\n unmounted() {\n window.removeEventListener(\n SINGLE_SPA_APP_CHANGE_EVENT,\n this.handleAppChange,\n )\n },\n methods: {\n handleAppChange: function (event) {\n this.show = !event.detail.appsByNewStatus.MOUNTED\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n\n# 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 :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n >\n <template v-if=\"includeLatestPacketInDropdown\" #prepend-item>\n <v-list-item title=\"LATEST\" @click=\"packetNameChanged('LATEST')\" />\n <v-divider />\n </template>\n </v-autocomplete>\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 v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\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 />\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 v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\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 />\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\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pa-3\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': hazardous }\">\n Description: {{ description }}\n <template v-if=\"hazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { 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 },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\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 }\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 || isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\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 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 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.selectedPacketName) {\n if (this.packetNames.length === 0) {\n this.selectedPacketName = null\n } else {\n this.selectedPacketName = this.packetNames[0].value\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 this.itemNames = packet.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 })\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 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 } 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 })\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 })\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 })\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 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 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: 300px;\n}\n</style>\n"],"names":["Config","config","name","routed","callback","OpenC3Api","response","error","query","_sfc_main","value","configId","row","item","dialog","_a","_hoisted_1","_hoisted_2","_createBlock","_component_v_dialog","$options","_cache","$event","_withKeys","_withCtx","_createVNode","_component_v_card","_createElementVNode","_withModifiers","args","_component_v_toolbar","_component_v_spacer","_component_v_card_text","_component_v_row","_component_v_text_field","$data","_component_v_data_table","_component_v_btn","_toDisplayString","_component_v_card_actions","_createTextVNode","val","TimeFilters","AstroStatusColors","Cable","newVal","oldVal","messages","message","result","i","nibble","subscription","level","UnknownToAstroStatus","output","entry","blob","link","format","err","_hoisted_3","_component_v_card_title","_component_v_select","_normalizeStyle","_component_rux_status","SINGLE_SPA_APP_CHANGE_EVENT","getMountedApps","event","_openBlock","_ctx","_createCommentVNode","propValue","_b","_c","indexes","target","cmd","names","packet","items","label","a","b","packetName","_createElementBlock","$props","_component_v_col","_component_v_autocomplete","_createSlots","_component_v_list_item","_component_v_divider","_component_v_combobox","_normalizeClass","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,MAAAA,KAAe;AAAA,EACb,MAAM;AAAA,IACJ,WAAW;AAAA;AAAA;AAAA,IAGX,uBAAuB;AAAA,EAC3B;AAAA,EACE,SAAS;AAAA,IACP,mBAAmB,WAAY;AAC7B,aAAI,aAAa,GAAG,KAAK,SAAS,WAAW,IACpC,KAAK,MAAM,aAAa,GAAG,KAAK,SAAS,WAAW,CAAC,IAErD,CAAA;AAAA,IAEX;AAAA,IACA,mBAAmB,SAAUC,GAAQ;AACnC,MAAI,KAAK,0BAA0B,OAGnC,aAAa,GAAG,KAAK,SAAS,WAAW,IAAI,KAAK,UAAUA,CAAM;AAAA,IACpE;AAAA,IACA,gBAAgB,SAAUC,GAAMC,IAAS,IAAOC,IAAW,MAAM;AAC/D,UAAIC,EAAS,EACV,YAAY,KAAK,WAAWH,CAAI,EAChC,KAAK,CAACI,MAAa;AAClB,QAAIA,KACF,KAAK,QAAQ,OAAO;AAAA,UAClB,OAAO;AAAA,UACP,MAAMJ;AAAA,QACpB,CAAa,GACGE,KAAUA,EAAS,KAAK,MAAME,CAAQ,CAAC,GACtCH,KACE,KAAK,OAAO,SAAS,SAASD,CAAI,KACrC,KAAK,QAAQ,KAAK;AAAA,UAChB,OAAO;AAAA,YACL,QAAQA;AAAA,UAC5B;AAAA,QACA,CAAiB,KAIL,KAAK,QAAQ,QAAQ;AAAA,UACnB,OAAO;AAAA,UACP,MAAMA;AAAA,QACpB,CAAa;AAAA,MAEL,CAAC,EACA,MAAM,CAACK,MAAU;AAChB,QAAIA,KACF,KAAK,QAAQ,QAAQ;AAAA,UACnB,OAAO,gCAAgCL,CAAI;AAAA,UAC3C,MAAMK;AAAA,QACpB,CAAa;AAAA,MAEL,CAAC;AAAA,IACL;AAAA,IACA,gBAAgB,SAAUL,GAAMD,GAAQ;AACtC,UAAII,EAAS,EACV,YAAY,KAAK,WAAWH,GAAM,KAAK,UAAUD,CAAM,CAAC,EACxD,KAAK,MAAM;AACV,aAAK,QAAQ,OAAO;AAAA,UAClB,OAAO;AAAA,UACP,MAAMC;AAAA,QAClB,CAAW;AAAA,MACH,CAAC,EACA,MAAM,CAACK,MAAU;AAChB,QAAIA,KACF,KAAK,QAAQ,QAAQ;AAAA,UACnB,OAAO,+BAA+BL,CAAI;AAAA,UAC1C,MAAMK;AAAA,QACpB,CAAa;AAAA,MAEL,CAAC;AAAA,IACL;AAAA,IACA,iBAAiB,WAAY;AAC3B,mBAAa,WAAW,GAAG,KAAK,SAAS,WAAW;AAEpD,YAAMC,IAAQ,EAAE,GAAG,KAAK,OAAO,MAAK;AACpC,aAAOA,EAAM,QACb,KAAK,QAAQ,QAAQ,EAAE,OAAAA,EAAK,CAAE;AAAA,IAChC;AAAA,EACJ;AACA,GCEKC,IAAU;AAAA,EACb,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA;AAAA;EAEd,OAAO;AACL,WAAO;AAAA,MACL,SAAS,CAAA;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA;QAET;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,UACP,UAAU;AAAA;;MAGd,QAAQ;AAAA,MACR,cAAc,CAAA;AAAA,IAChB;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,cAAc,WAAY;AACxB,aAAI,KAAK,aAAa,SACb,KAAK,QAAQ;AAAA,QAClB,CAACR,MAAWA,EAAO,aAAa,KAAK,aAAa,CAAC;AAAA,MACrD,IAEK;AAAA,IACT;AAAA,IACA,OAAO,WAAY;AACjB,aAAI,KAAK,iBAAiB,MAAM,KAAK,iBAAiB,OAC7C,yBAEF;AAAA,IACT;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AACJ,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAIS,GAAO;AACT,aAAK,MAAM,qBAAqBA,CAAK;AAAA,MACvC;AAAA;;EAGJ,UAAU;AACR,QAAIC,IAAW;AACf,QAAIN,EAAS,EACV,aAAa,KAAK,SAAS,EAC3B,KAAK,CAACC,MAAa;AAClB,WAAK,UAAUA,EAAS,IAAI,CAACL,OAC3BU,KAAY,GACL,EAAE,UAAAA,GAAU,QAAAV,EAAK,EACzB;AAAA,IACH,CAAC,EACA,MAAM,CAACM,MAAU;AAChB,WAAK,MAAM,WAAW,gCAAgCA,CAAK,EAAE;AAAA,IAC/D,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,IACP,WAAW,SAAUK,GAAK;AACxB,WAAK,eAAe,CAACA,EAAI,KAAK,QAAQ;AAAA,IACxC;AAAA,IACA,SAAS,WAAY;AACnB,MAAK,KAAK,iBACV,KAAK,MAAM,WAAW,KAAK,aAAa,MAAM,GAC9C,KAAK,OAAO,IACZ,KAAK,SAAS,MACd,KAAK,eAAe,CAAA;AAAA,IACtB;AAAA,IACA,QAAQ,WAAY;AAClB,WAAK,OAAO,IACZ,KAAK,SAAS,MACd,KAAK,eAAe,CAAA;AAAA,IACtB;AAAA,IACA,cAAc,SAAUC,GAAM;AAC5B,WAAK,QACF,QAAQ,oCAAoCA,EAAK,MAAM,IAAI;AAAA,QAC1D,QAAQ;AAAA,QACR,YAAY;AAAA,OACb,EACA,KAAK,CAACC,MAAW;;AAChB,UAAIC,IAAA,KAAK,iBAAL,gBAAAA,EAAmB,YAAWF,EAAK,WACrC,KAAK,eAAe,CAAA,IAEtB,KAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQA,CAAI,GAAG,CAAC,GACjD,IAAIR,EAAS,EAAG,cAAc,KAAK,WAAWQ,EAAK,MAAM;AAAA,MAC3D,CAAC,EACA,MAAM,CAACN,MAAU;AAChB,QAAIA,MAAU,MACZ,KAAK;AAAA,UACH;AAAA,UACA,2BAA2BM,EAAK,MAAM,WAAWN,CAAK;AAAA,QACxD;AAAA,MAEJ,CAAC;AAAA,IACL;AAAA;AAEJ,GA5KeS,IAAA,EAAA,OAAM,YAAW,GAjChCC,IAAA,CAAA,aAAA;;;cAuBEC,EA2EWC,GAAA;AAAA,IAlGb,YAuBqBC,EAAA;AAAA,IAvBrB,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAuBqBF,EAAA,OAAIE;AAAA,IAAE,OAAM;AAAA,IAAO,WAvBxCC,EAuBqDH,EAAA,QAAM,CAAA,KAAA,CAAA;AAAA;IAvB3D,SAAAI,EAwBI,MAyES;AAAA,MAzETC,EAyESC,GAAA,MAAA;AAAA,QAjGb,SAAAF,EAyBM,MAuEO;AAAA,UAvEPG,EAuEO,QAAA;AAAA,YAvEA,UAAMN,EAAA,CAAA,MAAAA,EAAA,CAAA,IAzBnBO,YAyB6BR,EAAA,WAAAA,EAAA,QAAA,GAAAS,CAAA,GAAO,CAAA,SAAA,CAAA;AAAA;YAC5BJ,EAIYK,GAAA,EAJD,QAAO,KAAI,GAAA;AAAA,cA1B9B,SAAAN,EA2BU,MAAY;AAAA,gBAAZC,EAAYM,CAAA;AAAA,gBACZV,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAM,EAA+B,cAAzB,sBAAkB,EAAA;AAAA,gBACxBF,EAAYM,CAAA;AAAA;cA7BtB,GAAA;AAAA;YAgCQN,EA4CcO,GAAA,MAAA;AAAA,cA5EtB,SAAAR,EAiCU,MA0CM;AAAA,gBA1CNG,EA0CM,OA1CNX,GA0CM;AAAA,kBAzCJS,EAeQQ,GAAA,EAfD,OAAA,GAAK,GAAA;AAAA,oBAlCxB,SAAAT,EAmCc,MAaE;AAAA,sBAbFC,EAaES,GAAA;AAAA,wBAhDhB,YAoCyBC,EAAA;AAAA,wBApCzB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAoCyBa,EAAA,SAAMb;AAAA,wBACf,OAAM;AAAA,wBACN,MAAK;AAAA,wBACL,sBAAmB;AAAA,wBACnB,WAAA;AAAA,wBACA,SAAQ;AAAA,wBACR,SAAQ;AAAA,wBACR,cAAW;AAAA,wBACX,WAAA;AAAA,wBACA,eAAA;AAAA,wBACA,gBAAA;AAAA,wBACA,aAAU;AAAA;;oBA/C1B,GAAA;AAAA;kBAkDYG,EAqBeW,GAAA;AAAA,oBAvE3B,YAmDuBD,EAAA;AAAA,oBAnDvB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAmDuBa,EAAA,eAAYb;AAAA,oBACrB,eAAA;AAAA,oBACA,mBAAgB;AAAA,oBAChB,cAAW;AAAA,oBACV,QAAQa,EAAA;AAAA,oBACR,SAASA,EAAA;AAAA,oBACT,OAAOA,EAAA;AAAA,oBACP,kBAAgB;AAAA,oBAChB,0BAAwB,CAAA,CAAA;AAAA,oBACxB,gCAAYb,GAAQV,MAAQQ,EAAA,UAAUR,CAAG;AAAA;oBAE/B,gBAAYY,EACrB,CAME,EAPuB,MAAAX,QAAI;AAAA,sBAC7BY,EAMEY,GAAA;AAAA,wBALA,OAAM;AAAA,wBACN,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,aAAU;AAAA,wBACT,SAAK,CAAAf,MAAEF,EAAA,aAAaP,CAAI;AAAA;;oBApE3C,GAAA;AAAA;kBAwEYY,EAEQQ,GAAA,EAFD,OAAA,GAAK,GAAA;AAAA,oBAxExB,SAAAT,EAyEc,MAA4D;AAAA,wBAA5DG,EAA4D,QAAA;AAAA,wBAAvC,OAAM;AAAA,wBAzEzC,aAyEyDW,EAAclB,EAAN,KAAK;AAAA,sBAzEtE,GAAA,MAAA,GAAAH,CAAA,GAAA;AAAA,4BAyE4BG,EAAA,KAAK;AAAA;;oBAzEjC,GAAA;AAAA;;;cAAA,GAAA;AAAA;YA6EQK,EAkBiBc,GAAA,EAlBD,OAAM,OAAM,GAAA;AAAA,cA7EpC,SAAAf,EA8EU,MAAY;AAAA,gBAAZC,EAAYM,CAAA;AAAA,gBACZN,EAMQY,GAAA;AAAA,kBALN,SAAQ;AAAA,kBACR,aAAU;AAAA,kBACT,SAAOjB,EAAA;AAAA;kBAlFpB,SAAAI,EAmFW,MAEDH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,oBArFVmB,EAmFW,UAED;AAAA;kBArFV,GAAA;AAAA;gBAsFUf,EAQQY,GAAA;AAAA,kBAPN,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,aAAU;AAAA,kBACT,YAAYjB,EAAA;AAAA,kBACZ,SA3FbQ,EA2F4BR,EAAA,SAAO,CAAA,SAAA,CAAA;AAAA;kBA3FnC,SAAAI,EA4FW,MAEDH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,oBA9FVmB,EA4FW,MAED;AAAA;kBA9FV,GAAA;AAAA;;cAAA,GAAA;AAAA;;;QAAA,GAAA;AAAA;;IAAA,GAAA;AAAA;;kDC2GK/B,IAAU;AAAA,EACb,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA;AAAA;EAEd,OAAO;AACL,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,SAAS,CAAA;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA;QAET;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,UACP,UAAU;AAAA;;MAGd,QAAQ;AAAA,MACR,cAAc,CAAA;AAAA,IAChB;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,cAAc,WAAY;AACxB,aAAI,KAAK,aAAa,SACb,KAAK,QAAQ;AAAA,QAClB,CAACR,MAAWA,EAAO,aAAa,KAAK,aAAa,CAAC;AAAA,MACrD,IAEK;AAAA,IACT;AAAA,IACA,OAAO,WAAY;AACjB,aAAK,KAAK,aAGH,OAFE;AAAA,IAGX;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AACJ,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAIS,GAAO;AACT,aAAK,MAAM,qBAAqBA,CAAK;AAAA,MACvC;AAAA;;EAGJ,OAAO;AAAA,IACL,cAAc,SAAU+B,GAAK;AAC3B,MAAIA,MACF,KAAK,aAAaA,EAAI;AAAA,IAE1B;AAAA;EAEF,UAAU;AACR,QAAI9B,IAAW;AACf,QAAIN,EAAS,EACV,aAAa,KAAK,SAAS,EAC3B,KAAK,CAACC,MAAa;AAClB,WAAK,UAAUA,EAAS,IAAI,CAACL,OAC3BU,KAAY,GACL,EAAE,UAAAA,GAAU,QAAAV,EAAK,EACzB;AAAA,IACH,CAAC,EACA,MAAM,CAACM,MAAU;AAChB,WAAK,MAAM,WAAW,gCAAgCA,CAAK,EAAE;AAAA,IAC/D,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,IACP,WAAW,SAAUK,GAAK;AACxB,WAAK,eAAe,CAACA,EAAI,KAAK,QAAQ;AAAA,IACxC;AAAA,IACA,SAAS,WAAY;AACnB,WAAK,MAAM,WAAW,KAAK,UAAU,GACrC,KAAK,OAAO,IACZ,KAAK,SAAS,MACd,KAAK,eAAe,CAAA,GACpB,KAAK,aAAa;AAAA,IACpB;AAAA,IACA,QAAQ,WAAY;AAClB,WAAK,OAAO,IACZ,KAAK,SAAS,MACd,KAAK,eAAe,CAAA,GACpB,KAAK,aAAa;AAAA,IACpB;AAAA,IACA,cAAc,SAAUC,GAAM;AAC5B,WAAK,QACF,QAAQ,oCAAoCA,EAAK,MAAM,IAAI;AAAA,QAC1D,QAAQ;AAAA,QACR,YAAY;AAAA,OACb,EACA,KAAK,CAACC,MAAW;;AAChB,UAAIC,IAAA,KAAK,iBAAL,gBAAAA,EAAmB,YAAWF,EAAK,WACrC,KAAK,eAAe,CAAA,GACpB,KAAK,aAAa,KAEpB,KAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQA,CAAI,GAAG,CAAC,GACjD,IAAIR,EAAS,EAAG,cAAc,KAAK,WAAWQ,EAAK,MAAM;AAAA,MAC3D,CAAC,EACA,MAAM,CAACN,MAAU;AAChB,QAAIA,MAAU,MACZ,KAAK;AAAA,UACH;AAAA,UACA,2BAA2BM,EAAK,MAAM,WAAWN,CAAK;AAAA,QACxD;AAAA,MAEJ,CAAC;AAAA,IACL;AAAA;AAEJ,GAzLeS,IAAA,EAAA,OAAM,YAAW,GAjChCC,IAAA,CAAA,aAAA;;;cAuBEC,EA8EWC,GAAA;AAAA,IArGb,YAuBqBC,EAAA;AAAA,IAvBrB,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAuBqBF,EAAA,OAAIE;AAAA,IAAE,OAAM;AAAA,IAAO,WAvBxCC,EAuBqDH,EAAA,QAAM,CAAA,KAAA,CAAA;AAAA;IAvB3D,SAAAI,EAwBI,MA4ES;AAAA,MA5ETC,EA4ESC,GAAA,MAAA;AAAA,QApGb,SAAAF,EAyBM,MA0EO;AAAA,UA1EPG,EA0EO,QAAA;AAAA,YA1EA,UAAMN,EAAA,CAAA,MAAAA,EAAA,CAAA,IAzBnBO,YAyB6BR,EAAA,WAAAA,EAAA,QAAA,GAAAS,CAAA,GAAO,CAAA,SAAA,CAAA;AAAA;YAC5BJ,EAIYK,GAAA,EAJD,QAAO,KAAI,GAAA;AAAA,cA1B9B,SAAAN,EA2BU,MAAY;AAAA,gBAAZC,EAAYM,CAAA;AAAA,gBACZV,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAM,EAA+B,cAAzB,sBAAkB,EAAA;AAAA,gBACxBF,EAAYM,CAAA;AAAA;cA7BtB,GAAA;AAAA;YAgCQN,EAqDcO,GAAA,MAAA;AAAA,cArFtB,SAAAR,EAiCU,MAmDM;AAAA,gBAnDNG,EAmDM,OAnDNX,GAmDM;AAAA,kBAlDJS,EAcQQ,GAAA,EAdD,OAAA,GAAK,GAAA;AAAA,oBAlCxB,SAAAT,EAmCc,MAYE;AAAA,sBAZFC,EAYES,GAAA;AAAA,wBA/ChB,YAoCyBC,EAAA;AAAA,wBApCzB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAoCyBa,EAAA,SAAMb;AAAA,wBACf,OAAM;AAAA,wBACN,MAAK;AAAA,wBACL,sBAAmB;AAAA,wBACnB,WAAA;AAAA,wBACA,SAAQ;AAAA,wBACR,SAAQ;AAAA,wBACR,cAAW;AAAA,wBACX,eAAA;AAAA,wBACA,gBAAA;AAAA,wBACA,aAAU;AAAA;;oBA9C1B,GAAA;AAAA;kBAiDYG,EAqBeW,GAAA;AAAA,oBAtE3B,YAkDuBD,EAAA;AAAA,oBAlDvB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAkDuBa,EAAA,eAAYb;AAAA,oBACrB,eAAA;AAAA,oBACA,mBAAgB;AAAA,oBAChB,cAAW;AAAA,oBACV,QAAQa,EAAA;AAAA,oBACR,SAASA,EAAA;AAAA,oBACT,OAAOA,EAAA;AAAA,oBACP,kBAAgB;AAAA,oBAChB,0BAAwB,CAAA,CAAA;AAAA,oBACxB,gCAAYb,GAAQV,MAAQQ,EAAA,UAAUR,CAAG;AAAA;oBAE/B,gBAAYY,EACrB,CAME,EAPuB,MAAAX,QAAI;AAAA,sBAC7BY,EAMEY,GAAA;AAAA,wBALA,OAAM;AAAA,wBACN,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,aAAU;AAAA,wBACT,SAAK,CAAAf,MAAEF,EAAA,aAAaP,CAAI;AAAA;;oBAnE3C,GAAA;AAAA;kBAuEYY,EASQQ,GAAA,EATD,OAAA,GAAK,GAAA;AAAA,oBAvExB,SAAAT,EAwEc,MAOE;AAAA,sBAPFC,EAOES,GAAA;AAAA,wBA/EhB,YAyEyBC,EAAA;AAAA,wBAzEzB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAyEyBa,EAAA,aAAUb;AAAA,wBACnB,gBAAA;AAAA,wBACA,WAAA;AAAA,wBACC,YAAYF,EAAA;AAAA,wBACb,OAAM;AAAA,wBACN,aAAU;AAAA;;oBA9E1B,GAAA;AAAA;kBAiFYK,EAEQQ,GAAA,EAFD,OAAA,GAAK,GAAA;AAAA,oBAjFxB,SAAAT,EAkFc,MAA4D;AAAA,wBAA5DG,EAA4D,QAAA;AAAA,wBAAvC,OAAM;AAAA,wBAlFzC,aAkFyDW,EAAclB,EAAN,KAAK;AAAA,sBAlFtE,GAAA,MAAA,GAAAH,CAAA,GAAA;AAAA,4BAkF4BG,EAAA,KAAK;AAAA;;oBAlFjC,GAAA;AAAA;;;cAAA,GAAA;AAAA;YAsFQK,EAYiBc,GAAA,EAZD,OAAM,OAAM,GAAA;AAAA,cAtFpC,SAAAf,EAuFU,MAAY;AAAA,gBAAZC,EAAYM,CAAA;AAAA,gBACZN,EAA0DY,GAAA;AAAA,kBAAnD,SAAQ;AAAA,kBAAY,SAAOjB,EAAA;AAAA;kBAxF5C,SAAAI,EAwFoD,MAAQH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,oBAxF5DmB,EAwFoD,UAAQ;AAAA;kBAxF5D,GAAA;AAAA;gBAyFUf,EAQQY,GAAA;AAAA,kBAPN,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,aAAU;AAAA,kBACT,YAAYjB,EAAA;AAAA,kBACZ,SA9FbQ,EA8F4BR,EAAA,SAAO,CAAA,SAAA,CAAA;AAAA;kBA9FnC,SAAAI,EA+FW,MAEDH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,oBAjGVmB,EA+FW,MAED;AAAA;kBAjGV,GAAA;AAAA;;cAAA,GAAA;AAAA;;;QAAA,GAAA;AAAA;;IAAA,GAAA;AAAA;;kDCgHK/B,IAAU;AAAA,EACb,QAAQ,CAACiC,CAAW;AAAA,EACpB,OAAO;AAAA,IACL,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO;AACL,WAAO;AAAA,MACL,mBAAAC;AAAA,MACA,MAAM,CAAA;AAAA,MACN,WAAW,CAAA;AAAA,MACX,WAAW,CAAC,SAAS,QAAQ,QAAQ,SAAS,OAAO;AAAA,MACrD,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,EAAE,OAAO,QAAQ,OAAO,aAAa,QAAQ;QAC7C,EAAE,OAAO,SAAS,OAAO,QAAM;AAAA,QAC/B,EAAE,OAAO,UAAU,OAAO;QAC1B,EAAE,OAAO,WAAW,OAAO;;MAE7B,OAAO,IAAIC,EAAK;AAAA,MAChB,cAAc;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,YAAY,WAAY;AACtB,aAAI,KAAK,SACA,aAEA;AAAA,IAEX;AAAA;EAEF,OAAO;AAAA,IACL,UAAU,SAAUC,GAAQC,GAAQ;AAClC,WAAK,mBAAkB;AAAA,IACzB;AAAA;EAEF,UAAU;AACR,SAAK,mBAAkB;AAAA,EACzB;AAAA,EACA,YAAY;AACV,IAAI,KAAK,gBACP,KAAK,aAAa,YAAW,GAE/B,KAAK,MAAM,WAAU;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACP,OAAO,WAAY;AACjB,WAAK,SAAS,CAAC,KAAK;AAAA,IACtB;AAAA,IACA,qBAAqB;AACnB,MAAI,KAAK,iBACP,KAAK,aAAa,YAAW,GAC7B,KAAK,OAAO,CAAA,GACZ,KAAK,YAAY,KAAK,OAExB,KAAK,MACF;AAAA,QACC;AAAA,QACA,OAAO;AAAA,QACP;AAAA,UACE,UAAU,CAACC,MAAa;AACtB,iBAAK,MAAM,WAAU,GACjBA,EAAS,SAAS,KAAK,gBACzBA,EAAS,OAAO,GAAGA,EAAS,SAAS,KAAK,YAAY,GAKxDA,IAAWA,EAAS,OAAO,CAACC,MAAY;AACtC,sBAAQ,KAAK,UAAQ;AAAA,gBACnB,KAAK;AACH,yBAAO;AAAA,gBACT,KAAK;AACH,sBAAIA,EAAQ,UAAU;AACpB,2BAAO;AAET;AAAA,gBACF,KAAK;AACH,sBAAIA,EAAQ,UAAU,WAAWA,EAAQ,UAAU;AACjD,2BAAO;AAET;AAAA,gBACF,KAAK;AACH,sBACEA,EAAQ,UAAU,WAClBA,EAAQ,UAAU,UAClBA,EAAQ,UAAU;AAElB,2BAAO;AAET;AAAA,gBACF,KAAK;AACH,sBACEA,EAAQ,UAAU,WAClBA,EAAQ,UAAU,UAClBA,EAAQ,UAAU,UAClBA,EAAQ,UAAU;AAElB,2BAAO;AAET;AAAA,cACJ;AACA,qBAAO;AAAA,YACT,CAAC,GACDD,EAAS,IAAI,CAACC,MAAY;AAKxB,kBAJAA,EAAQ,YAAY,KAAK;AAAA,gBACvBA,EAAQ,YAAY;AAAA,gBACpB,KAAK;AAAA,cACP,GAEEA,EAAQ,QAAQ,OAChBA,EAAQ,QAAQ,eAAe,UAC/B;AAEA,oBAAIC,IAAS;AACb,yBAASC,IAAI,GAAGA,IAAIF,EAAQ,QAAQ,IAAI,QAAQE,KAAK;AACnD,sBAAIC,IAASH,EAAQ,QAAQ,IAAIE,CAAC,EAC/B,SAAS,EAAE,EACX,YAAW;AACd,kBAAIC,EAAO,SAAS,MAClBA,IAAS,MAAMA,IAEjBF,KAAUE;AAAA,gBACZ;AACA,gBAAAH,EAAQ,UAAUC;AAAA,cACpB;AACE,gBAAAD,EAAQ,UAAUA,EAAQ,QAAQ,WAAW,OAAO;AAAA,CAAI;AAAA,YAE5D,CAAC,GACD,KAAK,OAAOD,EAAS,QAAO,EAAG,OAAO,KAAK,IAAI,GAC3C,KAAK,KAAK,SAAS,KAAK,iBAC1B,KAAK,KAAK,SAAS,KAAK,eAErB,KAAK,WACR,KAAK,YAAY,KAAK;AAAA,UAE1B;AAAA;QAEF;AAAA;AAAA,UAEE,eAAe,KAAK;AAAA,UACpB,OAAO,CAAC,OAAO,gBAAgB,OAAO;AAAA;MAE1C,EACC,KAAK,CAACK,MAAiB;AACtB,aAAK,eAAeA;AAAA,MACtB,CAAC;AAAA,IACL;AAAA,IACA,SAASC,GAAO;AACd,aAAOV,EAAkBW,EAAqBD,CAAK,CAAC;AAAA,IACtD;AAAA,IACA,UAAUA,GAAO;AACf,aAAOC,EAAqBD,CAAK;AAAA,IACnC;AAAA,IACA,cAAc;AACZ,YAAME,IAAS,KAAK,UACjB;AAAA,QACC,CAACC;AAAA;AAAA,UAEC,GAAGA,EAAM,SAAS,MAAMA,EAAM,KAAK,MAAMA,EAAM,iBAAiB,MAAMA,EAAM,OAAO;AAAA;AAAA,MACvF,EACC,KAAK;AAAA,CAAI,GACNC,IAAO,IAAI,KAAK,CAACF,CAAM,GAAG;AAAA,QAC9B,MAAM;AAAA,OACP,GAEKG,IAAO,SAAS,cAAc,GAAG;AACvC,MAAAA,EAAK,OAAO,IAAI,gBAAgBD,CAAI,GACpCC,EAAK;AAAA,QACH;AAAA,QACAC,EAAO,KAAK,OAAO,qBAAqB,IAAI;AAAA,MAC9C,GACAD,EAAK,MAAK;AAAA,IACZ;AAAA,IACA,UAAU,WAAY;AACpB,WAAK,QACF,QAAQ,2CAA2C;AAAA,QAClD,QAAQ;AAAA,QACR,YAAY;AAAA,OACb,EACA,KAAK,CAAC5C,MAAW;AAChB,aAAK,OAAO,CAAA,GACZ,KAAK,YAAY,CAAA;AAAA,MACnB,CAAC,EACA,MAAM,SAAU8C,GAAK;AAAA,MAEtB,CAAC;AAAA,IACL;AAAA;AAEJ,GA7RW5C,KAAA,EAAA,OAAM,wBAAuB,GAzBxCC,KAAA,CAAA,SAAA,UAAA,GAoGa4C,KAAA,EAAA,OAAA,EAAA,eAAA,WAAA,EAA6B;;;cA7ExC3C,EAgFSQ,GAAA,MAAA;AAAA,IAvGX,SAAAF,EAwBI,MAmDe;AAAA,MAnDfC,EAmDeqC,GAAA,EAnDD,OAAM,oDAAmD,GAAA;AAAA,QAxB3E,SAAAtC,EAyBM,MAgBM;AAAA,UAhBNG,EAgBM,OAhBNX,IAgBM;AAAA,YAfJS,EAOEY,GAAA;AAAA,cANA,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,OAAM;AAAA,cACN,aAAU;AAAA,cACT,SAAOjB,EAAA;AAAA;YAEVC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAM,EAA2B,cAArB,kBAAc,EAAA;AAAA,YACpBF,EAKEY,GAAA;AAAA,cAJC,MAAMjB,EAAA;AAAA,cACP,SAAQ;AAAA,cACR,aAAU;AAAA,cACT,SAAOA,EAAA;AAAA;;UAGZK,EAAYM,CAAA;AAAA,UACZN,EAUEsC,GAAA;AAAA,YArDR,YA4CiB5B,EAAA;AAAA,YA5CjB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MA4CiBa,EAAA,WAAQb;AAAA,YACjB,OAAM;AAAA,YACN,gBAAA;AAAA,YACA,SAAQ;AAAA,YACR,SAAQ;AAAA,YACP,OAAOa,EAAA;AAAA,YACR,OAAM;AAAA,YACN,OAAA,EAAA,aAAA,QAAA;AAAA,YACA,aAAU;AAAA;UAEZV,EAAYM,CAAA;AAAA,UACZN,EAYES,GAAA;AAAA,YAnER,YAwDiBC,EAAA;AAAA,YAxDjB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAwDiBa,EAAA,SAAMb;AAAA,YACf,OAAM;AAAA,YACN,sBAAmB;AAAA,YACnB,WAAA;AAAA,YACA,SAAQ;AAAA,YACR,SAAQ;AAAA,YACR,eAAA;AAAA,YACA,gBAAA;AAAA,YACA,OAAA,EAAA,aAAA,QAAA;AAAA,YACA,OAAM;AAAA,YACN,aAAU;AAAA;UAEZG,EAMEY,GAAA;AAAA,YALA,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,aAAU;AAAA,YACT,SAAOjB,EAAA;AAAA;;QAzEhB,GAAA;AAAA;MA4EIK,EA0BeW,GAAA;AAAA,QAzBZ,SAASD,EAAA;AAAA,QACT,OAAOA,EAAA;AAAA,QACP,QAAQA,EAAA;AAAA,QACR,kBAAgB;AAAA,QACjB,uBAAA;AAAA,QACA,cAAA;AAAA,QACA,SAAQ;AAAA,QACR,QAAA;AAAA,QACA,OAAA;AAAA,QACA,aAAU;AAAA;QAEC,kBAAcX,EACvB,CAEO,EAHoB,MAAAX,QAAI;AAAA,UAC/Bc,EAEO,QAAA;AAAA,YAFA,OAAOd,EAAK;AAAA,YAAY,UAAUA,EAAK;AAAA,eACzCA,EAAK,SAAS,GAAA,GA1F3BI,EAAA;AAAA;QA6FiB,cAAUO,EACnB,CAGC,EAJsB,MAAAX,QAAI;AAAA,UAC3Bc,EAGC,QAAA;AAAA,YAHM,OA9FfqC,EAAA,iCA8FuD5C,EAAA,SAASP,EAAK,KAAK,CAAA;AAAA;YAChEY,EAAsEwC,GAAA;AAAA,cAA1D,OAAM;AAAA,cAAQ,QAAQ7C,EAAA,UAAUP,EAAK,KAAK;AAAA;YA/FhE2B,EA+FgF,MACtEF,EAAGzB,EAAK,KAAK,GAAA,CAAA;AAAA;;QAGN,gBAAYW,EACrB,CAA2D,EADlC,MAAAX,QAAI;AAAA,UAC7Bc,EAA2D,OAA3DkC,IAA2DvB,EAArBzB,EAAK,OAAO,GAAA,CAAA;AAAA;QApG1D,GAAA;AAAA;;IAAA,GAAA;AAAA;;qFCiCMqD,IAA8B,yBAK/BzD,KAAU;AAAA,EACb,OAAO;AACL,WAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,UAAU;AACR,WAAO,iBAAiByD,GAA6B,KAAK,eAAe;AAAA,EAC3E;AAAA,EACA,UAAU;AAER,eAAW,MAAM;AACf,WAAK,OAAOC,EAAc,EAAG,WAAW;AAAA,IAC1C,GAAG,GAAG;AAAA,EACR;AAAA,EACA,YAAY;AACV,WAAO;AAAA,MACLD;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,SAAUE,GAAO;AAChC,WAAK,OAAO,CAACA,EAAM,OAAO,gBAAgB;AAAA,IAC5C;AAAA;AAEJ,GAzCYpD,KAAA,EAAA,OAAM,OAAM;;;SAJRmB,EAAA,QAAdkC,EAAA,GAAAnD,EAQSQ,KA3BX,KAAA,EAAA,GAAA;AAAA,IAAA,SAAAF,EAoBI,MAA4C;AAAA,MAA5CC,EAA4CqC,GAAA,MAAA;AAAA,QApBhD,SAAAtC,EAoBkB,MAAeH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,UApBjCmB,EAoBkB,iBAAe;AAAA;QApBjC,GAAA;AAAA;MAqBIf,EAKcO,GAAA,EALD,OAAM,2BAA0B,GAAA;AAAA,QArBjD,SAAAR,EAqBkD,MAE5C;AAAA,UAvBNH,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAmB,EAqBkD,qBAE5C;AAAA,UAAAb,EAAiD,QAAjDX,IAAiDsB,EAA1BgC,EAAA,OAAO,QAAQ,GAAA,CAAA;AAAA,UAvB5CjD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAmB,EAuBuD,qBAEjD;AAAA,UAAAnB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAM,EAAsC,QAAA,EAAhC,OAAM,kBAAe,QAAI,EAAA;AAAA;QAzBrC,GAAA;AAAA;;IAAA,GAAA;AAAA,QAAA4C,EAAA,IAAA,EAAA;;oDC6JK9D,KAAU;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,CAAC+D,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;;EAGb,OAAO,CAAC,UAAU,SAAS;AAAA,EAC3B,OAAO;;AACL,WAAO;AAAA,MACL,aAAa,CAAA;AAAA,MACb,qBAAoBzD,IAAA,KAAK,sBAAL,gBAAAA,EAAwB;AAAA,MAC5C,aAAa,CAAA;AAAA,MACb,qBAAoB0D,IAAA,KAAK,sBAAL,gBAAAA,EAAwB;AAAA,MAC5C,WAAW,CAAA;AAAA,MACX,mBAAkBC,IAAA,KAAK,oBAAL,gBAAAA,EAAsB;AAAA,MACxC,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;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,UAAIxB,IAAI,KAAK,UAAU;AAAA,QACrB,CAACrC,MAASA,EAAK,UAAU,KAAK;AAAA,MAChC,GACI8D,IAAU,CAAC,GAAG,MAAM,KAAK,UAAUzB,CAAC,EAAE,KAAK,EAAE,KAAI,CAAE;AACvD,cAAI,KAAK,YAAY,KAAK,uBACxByB,EAAQ,QAAQ,KAAK,IAAI,KAAK,GAEzBA;AAAA,IACT;AAAA,IACA,aAAa,WAAY;AACvB,UAAIzB,IAAI,KAAK,UAAU;AAAA,QACrB,CAACrC,MAASA,EAAK,UAAU,KAAK;AAAA,MAChC;AACA,aAAI,EAAAqC,MAAM,MAAM,MAAM,KAAK,UAAUA,CAAC,EAAE,KAAK;AAAA,IAK/C;AAAA;EAEF,OAAO;AAAA,IACL,mBAAmB,SAAUT,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,SAAUI,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,SAAUJ,GAAK;AAC1B,MAAIA,IACF,KAAK,uBAAL,KAAK,qBAAuB,KAE5B,KAAK,qBAAqB;AAAA,IAE9B;AAAA;EAEF,UAAU;AACR,SAAK,mBAAmB,IACxB,KAAK,MAAM,IAAIpC,EAAS,GACxB,KAAK,IAAI,iBAAgB,EAAG,KAAK,CAAC4C,MAAW;AAC3C,WAAK,cAAcA,EAAO,QAAQ,CAAC2B,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,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,CAAC5E,OACrB;AAAA,UACL,OAAOA;AAAA,UACP,OAAOA;AAAA,QACT,EACD,GACG,KAAK,YACP,KAAK,YAAY,QAAQ,KAAK,GAAG,GAE9B,KAAK,uBACJ,KAAK,YAAY,WAAW,IAC9B,KAAK,qBAAqB,OAE1B,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,QAGlD,KAAK,oBAAoB,KAAK,kBAAkB,GACnC,KAAK,YAAY,KAAK,CAAC6E,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,CAACnE,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,gBAAMgE,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,eAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,EAAE;AAAA,YAC9D,CAACE,MAAW;AACV,mBAAK,YAAYA,EAAO,MAAM,IAAI,CAAClE,MAAS;AAC1C,oBAAIoE,IAAQpE,EAAK;AACjB,uBAAIA,EAAK,aAAa,cACpBoE,KAAS,OAEJ;AAAA,kBACL,OAAOA;AAAA,kBACP,OAAOpE,EAAK;AAAA,kBACZ,aAAaA,EAAK;AAAA,kBAClB,OAAOA,EAAK,aAAaA,EAAK;AAAA,gBAChC;AAAA,cACF,CAAC,GACD,KAAK,UAAU,KAAK,CAACqE,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,OACnB,GACD,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,mBAAmB,SAAUzE,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,qBAAqB,SAAUA,GAAO;AACpC,UAAIA,MAAU;AACZ,aAAK,gBAAgB,IACrB,KAAK,mBAAmB;AAAA,eACfA,MAAU;AACnB,aAAK,gBAAgB,IACrB,KAAK,qBAAqB;AAAA,WACrB;AACL,aAAK,gBAAgB;AACrB,cAAMqE,IAAS,KAAK,YAAY,KAAK,CAACA,MAC7BrE,MAAUqE,EAAO,KACzB;AACD,YAAIA,GAAQ;AACV,eAAK,qBAAqBA,EAAO;AACjC,gBAAMF,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,eAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,EAAE;AAAA,YAC9D,CAACE,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,OACnB;AAAA,IAEL;AAAA,IAEA,iBAAiB,SAAUrE,GAAO;AAChC,YAAMG,IAAO,KAAK,UAAU,KAAK,CAACA,MACzBH,MAAUG,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,OACnB;AAAA,IAEL;AAAA,IAEA,cAAc,SAAUH,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,OACnB;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,CAAC0E,MAAe;AACvC,YAAIA,MAAe,KAAK,IAAK;AAC7B,cAAMP,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,aAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoBO,EAAW,KAAK,EAAE;AAAA,UACvD,CAACL,MAAW;AACV,YAAAA,EAAO,MAAM,QAAQ,CAAClE,MAAS;AAC7B,mBAAK,MAAM,WAAW;AAAA,gBACpB,YAAY,KAAK;AAAA,gBACjB,YAAYuE,EAAW;AAAA,gBACvB,UAAUvE,EAAK;AAAA,gBACf,WAAW,KAAK;AAAA,gBAChB,SAAS,KAAK;AAAA,gBACd,aAAa,KAAK;AAAA,eACnB;AAAA,YACH,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,GA1nBOG,KAAA,EAAA,OAAM,YAAW;;;AAAtB,SAAAqD,EAAA,GAAAgB,EA6HM,OA7HNrE,IA6HM;AAAA,IA5HJS,EAmFQQ,GAAA;AAAA,MAnFA,eAAaqD,EAAA;AAAA;MA3BzB,SAAA9D,EA4BM,MAYQ;AAAA,QAZRC,EAYQ8D,GAAA;AAAA,UAZA,MAAMnE,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;UA5BhE,SAAAI,EA6BQ,MAUE;AAAA,YAVFC,EAUE+D,GAAA;AAAA,cAvCV,YA8BmBrD,EAAA;AAAA,cA9BnB,uBAAA;AAAA,uCA8BmBA,EAAA,qBAAkBb;AAAA,gBAQNF,EAAA;AAAA;cAPrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOe,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;;UArCrB,GAAA;AAAA;QAyCMV,EAkBQ8D,GAAA;AAAA,UAlBA,MAAMnE,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;UAzChE,SAAAI,EA0CQ,MAgBiB;AAAA,YAhBjBC,EAgBiB+D,GAAA;AAAA,cA1DzB,YA2CmBrD,EAAA;AAAA,cA3CnB,uBAAA;AAAA,uCA2CmBA,EAAA,qBAAkBb;AAAA,gBASNF,EAAA;AAAA;cARrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUe,EAAA,mBAAmBf,EAAA;AAAA,cAC7B,OAAOe,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA,YAnDrB,GAAAsD,EAAA,EAAA,GAAA,KAAA;AAAA,cAsD0BrE,EAAA;gBAtD1B,MAsD0D;AAAA,gBAtD1D,IAAAI,EAuDY,MAAmE;AAAA,kBAAnEC,EAAmEiE,GAAA;AAAA,oBAAtD,OAAM;AAAA,oBAAU,gCAAOtE,EAAA,kBAAiB,QAAA;AAAA;kBACrDK,EAAakE,CAAA;AAAA;gBAxDzB,KAAA;AAAA,kBAAA;AAAA;;UAAA,GAAA;AAAA;QA6DcL,EAAA,mBADRpE,EAkBQqE,GAAA;AAAA,UA9Ed,KAAA;AAAA,UA8DS,MAAMnE,EAAA;AAAA,UACP,OAAM;AAAA,UACN,aAAU;AAAA;UAhElB,SAAAI,EAkEQ,MAWE;AAAA,YAXFC,EAWE+D,GAAA;AAAA,cA7EV,YAmEmBrD,EAAA;AAAA,cAnEnB,uBAAA;AAAA,uCAmEmBA,EAAA,mBAAgBb;AAAA,gBASJD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAF,EAAA,gBAAgBE,CAAM;AAAA;cAR3C,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUa,EAAA,iBAAiBf,EAAA;AAAA,cAC3B,OAAOe,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;;UA3ErB,GAAA;AAAA,2BAAAoC,EAAA,IAAA,EAAA;AAAA,QAiFce,EAAA,cAAclE,EAAA,oBADtBF,EAmBQqE,GAAA;AAAA,UAnGd,KAAA;AAAA,UAkFQ,MAAK;AAAA,UACL,OAAM;AAAA,UACN,aAAU;AAAA,UACV,OAAA,EAAA,aAAA,QAAA;AAAA;UArFR,SAAA/D,EAuFQ,MAWE;AAAA,YAXFC,EAWEmE,GAAA;AAAA,cAlGV,YAwFmBzD,EAAA;AAAA,cAxFnB,uBAAA;AAAA,uCAwFmBA,EAAA,qBAAkBb;AAAA,gBASND,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAF,EAAA,aAAaE,CAAM;AAAA;cARxC,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUa,EAAA,iBAAiBf,EAAA;AAAA,cAC3B,OAAOA,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;;UAhGrB,GAAA;AAAA,cAAAmD,EAAA,IAAA,EAAA;AAAA,QAoGmBe,EAAA,mBAAbpE,EASQqE,GAAA;AAAA,UA7Gd,KAAA;AAAA,UAoGgC,MAAMnE,EAAA;AAAA,UAAS,OAAA,EAAA,aAAA,QAAA;AAAA;UApG/C,SAAAI,EAqGQ,MAOQ;AAAA,YAPRC,EAOQY,GAAA;AAAA,cANL,UAAUjB,EAAA;AAAA,cACX,OAAM;AAAA,cACN,aAAU;AAAA,cACT,SAAOA,EAAA;AAAA;cAzGlB,SAAAI,EA2GU,MAAsB;AAAA,gBA3GhCgB,EAAAF,EA2GalB,EAAA,gBAAgB,GAAA,CAAA;AAAA;cA3G7B,GAAA;AAAA;;UAAA,GAAA;AAAA,2BAAAmD,EAAA,IAAA,EAAA;AAAA;MAAA,GAAA;AAAA;IA+GiBe,EAAA,oBAAbpE,EAiCQe,GAAA;AAAA,MAhJZ,KAAA;AAAA,MA+G8B,OAAM;AAAA,MAAO,cAAA;AAAA;MA/G3C,SAAAT,EAgHM,MASQ;AAAA,QATRC,EASQ8D,GAAA;AAAA,UATA,MAAMnE,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;UAhHhE,SAAAI,EAiHQ,MAOE;AAAA,YAPFC,EAOE+D,GAAA;AAAA,cAxHV,YAkHmBrD,EAAA;AAAA,cAlHnB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAkHmBa,EAAA,oBAAiBb;AAAA,cAC1B,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOa,EAAA;AAAA;;UAvHlB,GAAA;AAAA;QA0HMV,EASQ8D,GAAA;AAAA,UATA,MAAMnE,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;UA1HhE,SAAAI,EA2HQ,MAOE;AAAA,YAPFC,EAOE+D,GAAA;AAAA,cAlIV,YA4HmBrD,EAAA;AAAA,cA5HnB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MA4HmBa,EAAA,kBAAeb;AAAA,cACxB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOa,EAAA;AAAA;;UAjIlB,GAAA;AAAA;QAoIMV,EAUQ8D,GAAA;AAAA,UAVA,MAAMnE,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;UApIhE,SAAAI,EAqIQ,MAQE;AAAA,YARFC,EAQE+D,GAAA;AAAA,cA7IV,YAsImBrD,EAAA;AAAA,cAtInB,uBAAAd,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAsImBa,EAAA,sBAAmBb;AAAA,cAC5B,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUa,EAAA,oBAAe;AAAA,cACzB,OAAOA,EAAA;AAAA;;UA5IlB,GAAA;AAAA;QA+IMV,EAAyD8D,GAAA;AAAA,UAAjD,MAAMnE,EAAA;AAAA,UAAS,OAAA,EAAA,aAAA,QAAA;AAAA;;MA/I7B,GAAA;AAAA,UAAAmD,EAAA,IAAA,EAAA;AAAA,IAiJI9C,EAKQQ,GAAA;AAAA,MALD,cAAA;AAAA,MAAW,OAAM;AAAA;MAjJ5B,SAAAT,EAkJM,MAGQ;AAAA,QAHRC,EAGQ8D,GAAA;AAAA,UAHA,MAAMnE,EAAA;AAAA,UAAU,OAlJ9ByE,qBAkJwD1D,EAAA,UAAS,CAAA;AAAA;UAlJjE,SAAAX,EAkJqE,MAChD;AAAA,YAnJrBgB,EAkJqE,mBAChDF,EAAGH,EAAA,WAAW,IAAG,KAC9B,CAAA;AAAA,YAAgBA,EAAA,aAAhBkC,EAAA,GAAAgB,EAAmDS,KApJ3D,KAAA,EAAA,GAAA;AAAA,cAAAtD,EAoJmC,eAAa;AAAA,sBApJhD+B,EAAA,IAAA,EAAA;AAAA;UAAA,GAAA;AAAA;;MAAA,GAAA;AAAA;;;;"}
1
+ {"version":3,"file":"components.js","sources":["../src/components/config/Config.js","../src/components/config/OpenConfigDialog.vue","../src/components/config/SaveConfigDialog.vue","../src/components/CommandParameterEditor.vue","../src/components/CommandEditor.vue","../src/components/LogMessages.vue","../src/components/NotFound.vue"],"sourcesContent":["/*\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: {\n configKey: '',\n // Applications can set to avoid persisting default config\n // Useful when loading and setting existing config\n dontSaveDefaultConfig: false,\n },\n methods: {\n loadDefaultConfig: function () {\n if (localStorage[`${this.configKey}__default`]) {\n return JSON.parse(localStorage[`${this.configKey}__default`])\n } else {\n return {}\n }\n },\n saveDefaultConfig: function (config) {\n if (this.dontSaveDefaultConfig === true) {\n return\n }\n localStorage[`${this.configKey}__default`] = JSON.stringify(config)\n },\n openConfigBase: function (name, routed = false, callback = null) {\n new OpenC3Api()\n .load_config(this.configKey, name)\n .then((response) => {\n if (response) {\n this.$notify.normal({\n title: 'Loading configuration',\n body: name,\n })\n if (callback) callback(JSON.parse(response))\n if (!routed) {\n if (!this.$route.fullPath.includes(name)) {\n this.$router.push({\n query: {\n config: name,\n },\n })\n }\n }\n } else {\n this.$notify.caution({\n title: 'Unknown configuration',\n body: name,\n })\n }\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error opening configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n saveConfigBase: function (name, config) {\n new OpenC3Api()\n .save_config(this.configKey, name, JSON.stringify(config))\n .then(() => {\n this.$notify.normal({\n title: 'Saved configuration',\n body: name,\n })\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error saving configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n resetConfigBase: function () {\n localStorage.removeItem(`${this.configKey}__default`)\n\n const query = { ...this.$route.query }\n delete query.config\n this.$router.replace({ query })\n },\n },\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n autofocus\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"open-config-cancel-btn\"\n @click=\"cancel\"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n if (!this.selectedItem) return\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, 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 <v-dialog v-model=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (!this.configName) {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n watch: {\n selectedItem: function (val) {\n if (val) {\n this.configName = val.config\n }\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-text-field\n v-if=\"!states\"\n :model-value=\"textFieldValue\"\n hide-details\n density=\"compact\"\n variant=\"filled\"\n data-test=\"cmd-param-value\"\n @update:model-value=\"handleChange\"\n />\n <div v-else class=\"d-flex align-center\">\n <v-select\n :items=\"stateOptions\"\n :model-value=\"selectValue\"\n item-title=\"label\"\n :class=\"stateClass\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n placeholder=\"Select...\"\n min-width=\"120px\"\n data-test=\"cmd-param-select\"\n @update:model-value=\"handleChange\"\n />\n <v-text-field\n :model-value=\"stateValue\"\n disabled\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n min-width=\"60px\"\n data-test=\"cmd-param-value\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport { CmdUtilities } from '../util'\nexport default {\n name: 'CommandParameterEditor',\n mixins: [CmdUtilities],\n props: {\n modelValue: {\n type: [String, Number],\n default: undefined,\n },\n states: {\n type: Object,\n default: () => null,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n textFieldValue() {\n return this.convertToString(this.modelValue)\n },\n stateValue() {\n if (this.statesInHex) {\n return '0x' + this.modelValue.toString(16)\n } else {\n return this.modelValue\n }\n },\n selectValue() {\n // this makes the placeholder prop work\n return this.modelValue === '' ? null : this.modelValue\n },\n stateOptions() {\n if (!this.states) {\n return null\n }\n return Object.keys(this.states).map((label) => {\n return {\n label,\n ...this.states[label],\n }\n })\n },\n hazardous() {\n return (\n Object.entries(this.states)\n .find(([label, state]) => state.value === this.modelValue)\n ?.at(1)?.hazardous !== undefined\n )\n },\n stateClass() {\n return this.hazardous ? 'hazardous mr-4' : 'mr-4'\n },\n },\n methods: {\n handleChange(value) {\n this.$emit('update:modelValue', value)\n },\n },\n}\n</script>\n<style scoped>\n/* This allows Value or State selection to be wider and show state names */\n.container :deep(.v-select__selections) {\n width: auto;\n}\n.v-overflow-btn {\n margin-top: 0px;\n}\n.container {\n padding: 0px;\n}\n.hazardous :deep(.v-select__selection-text) {\n color: rgb(255, 220, 0) !important;\n}\n</style>\n","<!--\n# Copyright 2025, OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <div style=\"padding: 10px\">\n <target-packet-item-chooser\n :initial-target-name=\"targetName\"\n :initial-packet-name=\"commandName\"\n :disabled=\"sendDisabled\"\n :button-text=\"showCommandButton ? 'Send' : null\"\n mode=\"cmd\"\n @on-set=\"commandChanged($event)\"\n @add-item=\"buildCmd($event)\"\n />\n </div>\n\n <v-card v-if=\"computedRows.length !== 0\">\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n Parameters\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"computedRows\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n @contextmenu:row=\"showContextMenu\"\n >\n <template #item.val=\"{ item }\">\n <slot\n name=\"parameter-editor\"\n :item=\"item\"\n :states-in-hex=\"statesInHex\"\n >\n <!-- Default parameter editor if slot not provided -->\n <command-parameter-editor\n v-model=\"item.val\"\n :states=\"item.states\"\n :states-in-hex=\"statesInHex\"\n />\n </slot>\n </template>\n </v-data-table>\n </v-card>\n\n <v-menu v-model=\"contextMenuShown\" :target=\"[x, y]\">\n <v-list>\n <v-list-item\n v-for=\"(item, index) in contextMenuOptions\"\n :key=\"index\"\n @click.stop=\"item.action\"\n >\n <v-list-item-title>{{ item.title }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <details-dialog\n v-model=\"viewDetails\"\n :target-name=\"targetName\"\n :packet-name=\"commandName\"\n :item-name=\"parameterName\"\n :type=\"'cmd'\"\n />\n </v-card>\n</template>\n\n<script>\nimport 'sprintf-js'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport CommandParameterEditor from './CommandParameterEditor.vue'\nimport DetailsDialog from './DetailsDialog.vue'\nimport { CmdUtilities } from '../util'\n\nexport default {\n name: 'CommandEditor',\n components: {\n TargetPacketItemChooser,\n CommandParameterEditor,\n DetailsDialog,\n },\n mixins: [CmdUtilities],\n props: {\n initialTargetName: {\n type: String,\n default: null,\n },\n initialPacketName: {\n type: String,\n default: null,\n },\n cmdString: {\n type: String,\n default: null,\n },\n sendDisabled: {\n type: Boolean,\n default: false,\n },\n statesInHex: {\n type: Boolean,\n default: false,\n },\n showIgnoredParams: {\n type: Boolean,\n default: false,\n },\n cmdRaw: {\n type: Boolean,\n default: false,\n },\n showCommandButton: {\n type: Boolean,\n default: true,\n },\n },\n emits: ['command-changed', 'build-cmd'],\n data() {\n return {\n search: '',\n headers: [\n { title: 'Name', value: 'parameter_name' },\n { title: 'Value or State', value: 'val' },\n { title: 'Units', value: 'units' },\n { title: 'Range', value: 'range' },\n { title: 'Description', value: 'description' },\n ],\n api: null,\n targetName: '',\n commandName: '',\n commandDescription: '',\n ignoredParams: [],\n computedRows: [],\n reservedItemNames: [\n 'PACKET_TIMESECONDS',\n 'PACKET_TIMEFORMATTED',\n 'RECEIVED_TIMESECONDS',\n 'RECEIVED_TIMEFORMATTED',\n 'RECEIVED_COUNT',\n ],\n contextMenuShown: false,\n viewDetails: false,\n parameterName: '',\n x: 0,\n y: 0,\n contextMenuOptions: [\n {\n title: 'Details',\n action: () => {\n this.contextMenuShown = false\n this.viewDetails = true\n },\n },\n ],\n }\n },\n created() {\n this.api = new OpenC3Api()\n if (this.cmdString) {\n this.processCmdString()\n } else {\n this.targetName = this.initialTargetName\n this.commandName = this.initialPacketName\n this.updateCmdParams()\n }\n },\n methods: {\n commandChanged(event) {\n if (\n this.targetName !== event.targetName ||\n this.commandName !== event.packetName\n ) {\n this.targetName = event.targetName\n this.commandName = event.packetName\n this.updateCmdParams()\n }\n this.$emit('command-changed', event)\n },\n buildCmd(event) {\n this.$emit('build-cmd', event)\n },\n showContextMenu(event, row) {\n event.preventDefault()\n this.parameterName = row.item.parameter_name\n this.contextMenuShown = false\n this.x = event.clientX\n this.y = event.clientY\n this.$nextTick(() => {\n this.contextMenuShown = true\n })\n },\n updateCmdParams() {\n this.ignoredParams = []\n this.computedRows = []\n if (this.targetName && this.commandName) {\n this.api\n .get_target(this.targetName)\n .then(\n (target) => {\n this.ignoredParams = target.ignored_parameters\n return this.api.get_cmd(this.targetName, this.commandName)\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting ignored parameters:', error)\n },\n )\n .then(\n (command) => {\n if (command) {\n command.items.forEach((parameter) => {\n if (this.reservedItemNames.includes(parameter.name)) return\n if (\n !this.ignoredParams.includes(parameter.name) ||\n this.showIgnoredParams\n ) {\n let val = parameter.default\n if (\n !parameter.states &&\n parameter.data_type === 'STRING' &&\n typeof parameter.default === 'string'\n ) {\n val = `'${val}'`\n }\n if (parameter.required) {\n val = null // Special marker for required parameters\n }\n if (parameter.format_string && parameter.default) {\n val = sprintf(parameter.format_string, parameter.default)\n }\n let range = 'N/A'\n if (\n parameter.minimum != null &&\n parameter.maximum != null\n ) {\n if (parameter.data_type === 'FLOAT') {\n if (parameter.minimum < -1e6) {\n if (Number.isSafeInteger(parameter.minimum)) {\n parameter.minimum =\n parameter.minimum.toExponential(3)\n }\n }\n if (parameter.maximum > 1e6) {\n if (Number.isSafeInteger(parameter.maximum)) {\n parameter.maximum =\n parameter.maximum.toExponential(3)\n }\n }\n }\n range = `${parameter.minimum}..${parameter.maximum}`\n }\n this.computedRows.push({\n parameter_name: parameter.name,\n val: val,\n states: parameter.states,\n description: parameter.description,\n range: range,\n units: parameter.units,\n type: parameter.data_type,\n })\n }\n })\n this.commandDescription = command.description\n\n // Populate with parsed parameters if available\n this.populateParametersFromParsed()\n }\n },\n (error) => {\n // eslint-disable-next-line no-console\n console.error('Error getting command parameters:', error)\n },\n )\n }\n },\n triggerUpdateCmdParams() {\n this.updateCmdParams()\n },\n getRows() {\n return this.computedRows\n },\n getCmdString() {\n let cmd = `${this.targetName} ${this.commandName}`\n if (this.computedRows.length === 0) return cmd\n cmd += ' with '\n for (const row of this.computedRows) {\n // null value indicates required parameter not set, see updateCmdParams\n if (row.val === null) {\n throw new Error(`Required parameter ${row.parameter_name} not set`)\n }\n if (row.val !== null && row.val !== undefined && row.val !== '') {\n if (row.states) {\n // If states exist, find the state name for the value\n const stateEntry = Object.entries(row.states).find(\n ([, state]) => state.value === row.val,\n )\n if (stateEntry) {\n // Although not always necessary, always quote states\n cmd += ` ${row.parameter_name} '${stateEntry[0]}',`\n continue\n }\n }\n // We only put the param value in quotes if it is a string with spaces\n // Check for array syntax because we do NOT quote arrays\n let value = this.convertToString(row.val)\n if (value.includes(' ') && !this.isArray(value)) {\n cmd += ` ${row.parameter_name} '${value}',`\n } else {\n cmd += ` ${row.parameter_name} ${value},`\n }\n }\n }\n // Remove trailing comma\n return cmd.slice(0, -1)\n },\n parseCmdString(cmdString) {\n // Parse commands in format: \"TARGET COMMAND with PARAM1 value1, PARAM2 value2\"\n const parts = cmdString.split(' ')\n if (parts.length < 2) return { target: '', command: '', params: {} }\n if (parts.length === 2) {\n return { target: parts[0], command: parts[1], params: {} }\n }\n // Check for a malformed command string that doesn't have 'with'\n if (parts[2] !== 'with') return { target: '', command: '', params: {} }\n\n const target = parts[0]\n const command = parts[1]\n let params = {}\n\n const paramsString = cmdString.split(' with ')[1]\n let paramPairs = []\n let bracketLevel = 0\n let current = ''\n // Parse the params char by char to handle commas inside brackets\n for (let char of paramsString) {\n if (char === '[') {\n bracketLevel++\n current += char\n } else if (char === ']') {\n bracketLevel--\n current += char\n } else if (char === ',' && bracketLevel === 0) {\n paramPairs.push(current.trim())\n current = ''\n } else {\n current += char\n }\n }\n if (current.trim() !== '') {\n paramPairs.push(current.trim())\n }\n\n for (let pair of paramPairs) {\n let firstSpace = pair.indexOf(' ')\n if (firstSpace > 0) {\n let key = pair.substring(0, firstSpace).trim()\n let value = pair.substring(firstSpace + 1).trim()\n params[key] = value\n }\n }\n return { target: target, command: command, params: params }\n },\n processCmdString() {\n const parsed = this.parseCmdString(this.cmdString)\n if (parsed.target && parsed.command) {\n this.targetName = parsed.target\n this.commandName = parsed.command\n this.parsedParameters = parsed.params\n this.updateCmdParams()\n }\n },\n populateParametersFromParsed() {\n // Populate parameters after command parameters are loaded\n if (\n !this.parsedParameters ||\n Object.keys(this.parsedParameters).length === 0\n ) {\n return\n }\n\n this.$nextTick(() => {\n // Give time for parameters to load\n setTimeout(() => {\n this.computedRows.forEach((row) => {\n if (this.parsedParameters.hasOwnProperty(row.parameter_name)) {\n const value = this.parsedParameters[row.parameter_name]\n // Set the value based on parameter type\n if (row.states && typeof value === 'string') {\n // For state parameters, try to match the state name\n const stateKey = Object.keys(row.states).find(\n (key) =>\n key === value || key.toLowerCase() === value.toLowerCase(),\n )\n if (stateKey) {\n row.val = row.states[stateKey].value\n } else {\n row.val = value\n }\n } else if (row.type === 'STRING' && typeof value === 'string') {\n // For string parameters, add quotes if not present\n row.val =\n value.startsWith(\"'\") || value.startsWith('\"')\n ? value\n : `'${value}'`\n } else {\n row.val = value\n }\n }\n })\n }, 100) // Shorter delay since we're already in the component\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card>\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n <div class=\"d-flex align-baseline\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"download-log\"\n @click=\"downloadLog\"\n />\n <span> Log Messages </span>\n <v-btn\n :icon=\"buttonIcon\"\n variant=\"text\"\n data-test=\"pause\"\n @click=\"pause\"\n />\n </div>\n <v-spacer />\n <v-select\n v-model=\"logLevel\"\n label=\"Filter by log level\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n :items=\"logLevels\"\n class=\"mr-2\"\n style=\"max-width: 150px\"\n data-test=\"log-messages-level\"\n />\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n style=\"max-width: 300px\"\n class=\"search\"\n data-test=\"search-log-messages\"\n />\n <v-btn\n icon=\"mdi-delete-sweep\"\n variant=\"text\"\n class=\"ml-2\"\n data-test=\"clear-log\"\n @click=\"clearLog\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"shownData\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n sticky\n hover\n data-test=\"log-messages\"\n >\n <template #item.timestamp=\"{ item }\">\n <time :title=\"item.timestamp\" :datetime=\"item.timestamp\">\n {{ item.timestamp }}\n </time>\n </template>\n <template #item.level=\"{ item }\">\n <span :style=\"'display: inline-flex; color:' + getColor(item.level)\">\n <rux-status class=\"mr-1\" :status=\"getStatus(item.level)\"></rux-status>\n {{ item.level }}</span\n >\n </template>\n <template #item.message=\"{ item }\">\n <div style=\"white-space: pre-wrap\">{{ item.message }}</div>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { format } from 'date-fns'\nimport { Cable } from '@openc3/js-common/services'\nimport { AstroStatusColors, UnknownToAstroStatus } from '@/icons'\nimport { TimeFilters } from '@/util'\n\nexport default {\n mixins: [TimeFilters],\n props: {\n historyCount: {\n type: Number,\n default: 200,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n AstroStatusColors,\n data: [],\n shownData: [],\n logLevels: ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],\n logLevel: 'INFO',\n search: '',\n headers: [\n { title: 'Time', value: 'timestamp', nowrap: true },\n { title: 'Level', value: 'level' },\n { title: 'Source', value: 'microservice_name' },\n { title: 'Message', value: 'message' },\n ],\n cable: new Cable(),\n subscription: null,\n paused: false,\n }\n },\n computed: {\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n },\n watch: {\n logLevel: function (newVal, oldVal) {\n this.createSubscription()\n },\n },\n created() {\n this.createSubscription()\n },\n unmounted() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n pause: function () {\n this.paused = !this.paused\n },\n createSubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.data = []\n this.shownData = this.data\n }\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (messages) => {\n this.cable.recordPing()\n if (messages.length > this.historyCount) {\n messages.splice(0, messages.length - this.historyCount)\n }\n // Filter messages before they're added to the table\n // This prevents a bunch of invisible 'INFO' messages from pushing\n // off the 'WARN' or 'ERROR' messages if we filter inside the data-table\n messages = messages.filter((message) => {\n switch (this.logLevel) {\n case 'DEBUG':\n return true\n case 'INFO':\n if (message.level !== 'DEBUG') {\n return true\n }\n break\n case 'WARN':\n if (message.level !== 'DEBUG' && message.level !== 'INFO') {\n return true\n }\n break\n case 'ERROR':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN'\n ) {\n return true\n }\n break\n case 'FATAL':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN' &&\n message.level !== 'ERROR'\n ) {\n return true\n }\n break\n }\n return false\n })\n messages.map((message) => {\n message.timestamp = this.formatTimestamp(\n message['@timestamp'],\n this.timeZone,\n )\n if (\n message.message.raw &&\n message.message.json_class === 'String'\n ) {\n // This is binary data, display in hex.\n let result = '0x'\n for (let i = 0; i < message.message.raw.length; i++) {\n let nibble = message.message.raw[i]\n .toString(16)\n .toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n result += nibble\n }\n message.message = result\n } else {\n message.message = message.message.replaceAll('\\\\n', '\\n')\n }\n })\n this.data = messages.reverse().concat(this.data)\n if (this.data.length > this.historyCount) {\n this.data.length = this.historyCount\n }\n if (!this.paused) {\n this.shownData = this.data\n }\n },\n },\n {\n // Channel parameter is history_count with underscore\n history_count: this.historyCount,\n types: ['log', 'notification', 'alert'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n getColor(level) {\n return AstroStatusColors[UnknownToAstroStatus[level]]\n },\n getStatus(level) {\n return UnknownToAstroStatus[level]\n },\n downloadLog() {\n const output = this.shownData\n .map(\n (entry) =>\n // Other fields are available like container_name, msg_id ... probably not useful\n `${entry.timestamp} | ${entry.level} | ${entry.microservice_name} | ${entry.message}`,\n )\n .join('\\n')\n const blob = new Blob([output], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute(\n 'download',\n format(Date.now(), 'yyyy_MM_dd_HH_mm_ss') + '_message_log.txt',\n )\n link.click()\n },\n clearLog: function () {\n this.$dialog\n .confirm('Are you sure you want to clear the log?', {\n okText: 'Clear',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n this.data = []\n this.shownData = []\n })\n .catch(function (err) {\n // Canceling the dialog forces catch and sets err to true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n /* take up any remaining vertical space\n (e.g. whatever is left after the tabs in cmdtlmserver)\n */\n flex-grow: 1;\n\n /* flex so the table can grow without making the card itself scroll */\n display: flex;\n flex-direction: column;\n}\n.v-data-table {\n height: 25vh; /* give it at least a bit of height to start with */\n flex-grow: 1; /* and then grow to fill all the space it can */\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card v-if=\"show\">\n <v-card-title> 404 Not Found </v-card-title>\n <v-card-text class=\"d-flex align-center mt-3\">\n The requested URL\n <code class=\"mx-1\"> {{ $route.fullPath }} </code>\n was not routable.\n <span class=\"text-h3 mx-1\"> 🦄 </span>\n </v-card-text>\n </v-card>\n <div v-if=\"showSpinner\" class=\"d-flex justify-center align-center\">\n <v-progress-circular indeterminate />\n </div>\n</template>\n\n<script>\nimport { getMountedApps } from 'single-spa'\n\nconst POLL_INTERVAL_MS = 50\nconst NOT_FOUND_TIMEOUT_MS = 2000\nconst SINGLE_SPA_APP_CHANGE_EVENT = 'single-spa:app-change'\n\n// This component is actually always loaded for every route other than /login\n// because of the catch-all path in tool-base's router, so we need logic to\n// hide it when a tool is loaded.\nexport default {\n data() {\n return {\n appsMounted: false,\n show: false,\n hideSpinner: false,\n pollInterval: null,\n }\n },\n computed: {\n showSpinner: function () {\n return !this.hideSpinner && !this.show\n },\n },\n created() {\n window.addEventListener(SINGLE_SPA_APP_CHANGE_EVENT, this.handleAppChange)\n },\n mounted() {\n this.pollForMountedApps()\n // This gives some time to allow slow connections to find the apps before flashing the 404\n setTimeout(() => {\n if (!this.appsMounted) {\n this.show = true\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n }\n }\n }, NOT_FOUND_TIMEOUT_MS)\n },\n unmounted() {\n window.removeEventListener(\n SINGLE_SPA_APP_CHANGE_EVENT,\n this.handleAppChange,\n )\n if (this.pollInterval) {\n clearInterval(this.pollInterval)\n }\n },\n methods: {\n handleAppChange: function (event) {\n this.show = !event.detail.appsByNewStatus.MOUNTED\n },\n pollForMountedApps: function () {\n // Check to see if there are single-spa apps that matched the route.\n // The app-change event doesn't cover this case...\n this.pollInterval = setInterval(() => {\n this.appsMounted = getMountedApps().length > 0\n if (getMountedApps().length > 0) {\n this.hideSpinner = true\n clearInterval(this.pollInterval)\n }\n }, POLL_INTERVAL_MS)\n },\n },\n}\n</script>\n"],"names":["Config","config","name","routed","callback","OpenC3Api","response","error","query","_sfc_main","value","configId","row","item","dialog","_a","_hoisted_1","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_createElementVNode","args","_component_v_toolbar","_component_v_spacer","_cache","_component_v_card_text","_component_v_row","_component_v_text_field","$data","_component_v_data_table","_withCtx","_component_v_btn","_toDisplayString","_component_v_card_actions","val","CmdUtilities","label","_b","state","_createElementBlock","$props","_openBlock","_component_v_select","TargetPacketItemChooser","CommandParameterEditor","DetailsDialog","event","target","command","parameter","range","cmd","stateEntry","cmdString","parts","params","paramsString","paramPairs","bracketLevel","current","char","pair","firstSpace","key","parsed","stateKey","_component_target_packet_item_chooser","_component_v_card_title","_renderSlot","_ctx","_component_command_parameter_editor","_component_v_menu","_component_v_list","_Fragment","_renderList","index","_component_v_list_item","_withModifiers","_component_v_list_item_title","_createTextVNode","_component_details_dialog","TimeFilters","AstroStatusColors","Cable","newVal","oldVal","messages","message","result","i","nibble","subscription","level","UnknownToAstroStatus","output","entry","blob","link","format","err","_hoisted_3","_hoisted_2","_normalizeStyle","_component_rux_status","POLL_INTERVAL_MS","NOT_FOUND_TIMEOUT_MS","SINGLE_SPA_APP_CHANGE_EVENT","getMountedApps","_component_v_progress_circular"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"icons.cjs","sources":["../public/icons/status-dark.png","../src/icons/AstroStatusIndicator.vue","../src/icons/CosmosRuxIcon.vue","../src/icons/index.js"],"sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAAAgCAYAAAALxXRVAAAAxHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVDbDcMwCPxnio5gc8TB4zhtKnWDjl8IJEranmReh84Are/Xk24OrkIyzdp6a8UgXToPC7QExmZrkc1uWJOy/FIn3gm2EswjUm3Zv9frIRBuWDSdhPSexHIluqS+fgnlz/CJPH6kUE8hcBA1BUasVVrX+bzCcuyW0HjkRvQ69k8+2/Uek/0D5hUVxSwgMQD8gTAsaGYBb6zmhxFeEWiK2UH+3WkHfQAmGFlDwtBoyQAAAYVpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNQFIVPW7UiFRE7iIhkqE7WQUUcaxWKUCHUCq06mLz0D5o0JCkujoJrwcGfxaqDi7OuDq6CIPgD4uripOgiJd6XFFrEeOHxPs675/DefYC/Xmaq2REDVM0yUom4kMmuCsFXdGEE/fBhQmKmPieKSXjW1z31Ud1FeZZ335/Vq+RMBvgE4hjTDYt4g3hm09I57xOHWVFSiM+Jxw26IPEj12WX3zgXHPbzzLCRTs0Th4mFQhvLbcyKhko8TRxRVI3y/RmXFc5bnNVylTXvyV8Yymkry1ynNYwEFrEEEQJkVFFCGRaitGukmEjRedzDP+T4RXLJ5CqBkWMBFaiQHD/4H/yerZmfmnSTQnGg88W2P0aB4C7QqNn297FtN06AwDNwpbX8lTow+0l6raVFjoC+beDiuqXJe8DlDjD4pEuG5EgBWv58Hng/o2/KAgO3QM+aO7fmOU4fgDTNKnkDHBwCYwXKXvd4d3f73P7tac7vB5UicrQ0WLbfAAANemlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDozYjNlMzQ0NC03YTU4LTQxYjItYTZjYi0wMzljNWI3NjRmN2IiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGUxZjUyNzQtNTMyNC00MzE5LWE3MjYtOGQyNjJlNjI1Y2YwIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZDkzZGI3ODgtMmQwNi00NjdhLWI2OGItZWJlNmJiNGU1ODQ2IgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJNYWMgT1MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjg4MTUzMjA5MTAxNDUxIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMzowNjozMFQxMzoyNjo0OC0wNjowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjM6MDY6MzBUMTM6MjY6NDgtMDY6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNWQ3MTYyZi0xYWQ1LTQwNWUtODAxOS03NmExMTI4MDI1YmYiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTWFjIE9TKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQxMzoyNjo0OS0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5gv8dKAAAABmJLR0QA9QAHANj00CgxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wYeExoxB4CzXgAAB65JREFUeNrtnF9sFNcVh78z6z8kEwgPTUVxTZqYh2lVbAKVKleuiuEJkGzIAzFSpEQukaoqQUUhiUiLSkRD2hQ1FYmqqnEtUqUK7UPBVozUBzBpUHkproGXrVqXAoKgKg/EZKFre+f0YcftFs967/zz7rrze5y999yd2fn2d8+9ZwZSpUqVKlWqVKmMpb9vcvT9zB90xF6RXo1UYWWllyAcfEzPjKL6ddy7oymEqcJKTBvmmrN7gR8bNt9v550fLG74KIUui3Vft2zN3Ywaf+bm1zTJ79+w4o8Stu/OO7ToNNsUtgJtqqwEEOEGMCEwIo2ceO9+rifx3TvGtdUt0CuwBaVNxRtfuYEwoXDSyjB0Ya1cW1QABoQvEoTa2XkG1W8kc7bygZw7tyFm+GKFsBYB3HmHFneKAyr0oxVmTYIryqDVxIG4QHxsTFcWXF5R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\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses, UnknownToAstroStatus } from '.'\nimport dark from '../../public/icons/status-dark.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n const offset = AstroStatuses.indexOf(UnknownToAstroStatus[this.status])\n // Scale according to severity ... offset 1 is most severe (critical)\n // We knock off 5% for every less severe value\n const relativeScale = 1 - (offset - 1) * 0.05\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor * relativeScale\n const bgHeight = 32 * this.scaleFactor * relativeScale\n const iconWidth = 32 * this.scaleFactor * relativeScale // Each icon in the png is 32px wide with no space in between\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n `padding-top: ${offset - 1}px;`,\n ].join('')\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :size=\"size\" :icon=\"icon\" :style=\"colorStyle\" />\n</template>\n\n<script>\n// This component is a Vue wrapper around Astro RuxIcon so that it works as a Vuetify icon set\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'small',\n },\n color: {\n type: String,\n default: 'white',\n },\n },\n computed: {\n colorStyle: function () {\n return {\n '--iconColor': this.color,\n }\n },\n },\n}\n</script>\n\n<style scoped>\nrux-icon {\n color: var(--iconColor);\n}\n</style>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { h } from 'vue'\nimport AstroStatusIndicator from './AstroStatusIndicator.vue'\nimport CosmosRuxIcon from './CosmosRuxIcon.vue'\nimport CustomIcon from './CustomIcon.vue'\n\nconst UnknownToAstroStatus = {\n fatal: 'critical',\n FATAL: 'critical',\n error: 'critical',\n ERROR: 'critical',\n warn: 'caution',\n WARN: 'caution',\n info: 'normal',\n INFO: 'normal',\n debug: 'off',\n DEBUG: 'off',\n critical: 'critical',\n CRITICAL: 'critical',\n serious: 'serious',\n SERIOUS: 'serious',\n caution: 'caution',\n CAUTION: 'caution',\n normal: 'normal',\n NORMAL: 'normal',\n standby: 'standby',\n STANDBY: 'standby',\n off: 'off',\n OFF: 'OFF',\n}\n\nconst UnknownToCosmosStatus = {\n fatal: 'FATAL',\n FATAL: 'FATAL',\n error: 'ERROR',\n ERROR: 'ERROR',\n warn: 'WARN',\n WARN: 'WARN',\n info: 'INFO',\n INFO: 'INFO',\n debug: 'DEBUG',\n DEBUG: 'DEBUG',\n critical: 'ERROR',\n CRITICAL: 'ERROR',\n serious: 'WARN',\n SERIOUS: 'WARN',\n caution: 'WARN',\n CAUTION: 'WARN',\n normal: 'INFO',\n NORMAL: 'INFO',\n standby: 'INFO',\n STANDBY: 'INFO',\n off: 'INFO',\n OFF: 'INFO',\n}\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#a4abb6',\n}\n\nconst getStatusColorContrast = function (severityLevel) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[UnknownToAstroStatus[severityLevel]]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nconst AstroIconVuetifySets = {\n astro: {\n component: (props) => {\n return h(CosmosRuxIcon, {\n ...props,\n })\n },\n },\n ['astro-status']: {\n component: (props) => {\n return h(AstroStatusIndicator, {\n ...props,\n status: props.icon,\n })\n },\n },\n}\n\nconst CustomIconSet = {\n extras: {\n component: (props) => {\n return h(CustomIcon, {\n ...props,\n })\n },\n },\n}\n\nexport {\n AstroIconVuetifySets,\n AstroStatuses,\n AstroStatusColors,\n AstroStatusIndicator,\n CustomIconSet,\n getStatusColorContrast,\n UnknownToAstroStatus,\n UnknownToCosmosStatus,\n}\n"],"names":["dark","_sfc_main","offset","AstroStatuses","UnknownToAstroStatus","relativeScale","bgWidth","bgHeight","iconWidth","_createElementBlock","_normalizeStyle","$options","_createBlock","_component_rux_icon","$props","UnknownToCosmosStatus","AstroStatusColors","getStatusColorContrast","severityLevel","black","white","statusColor","r","g","b","AstroIconVuetifySets","props","h","CosmosRuxIcon","AstroStatusIndicator","CustomIconSet","CustomIcon"],"mappings":"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"}
1
+ {"version":3,"file":"icons.cjs","sources":["../public/icons/status-dark.png","../src/icons/AstroStatusIndicator.vue","../src/icons/CosmosRuxIcon.vue","../src/icons/index.js"],"sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAAAgCAYAAAALxXRVAAAAxHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVDbDcMwCPxnio5gc8TB4zhtKnWDjl8IJEranmReh84Are/Xk24OrkIyzdp6a8UgXToPC7QExmZrkc1uWJOy/FIn3gm2EswjUm3Zv9frIRBuWDSdhPSexHIluqS+fgnlz/CJPH6kUE8hcBA1BUasVVrX+bzCcuyW0HjkRvQ69k8+2/Uek/0D5hUVxSwgMQD8gTAsaGYBb6zmhxFeEWiK2UH+3WkHfQAmGFlDwtBoyQAAAYVpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNQFIVPW7UiFRE7iIhkqE7WQUUcaxWKUCHUCq06mLz0D5o0JCkujoJrwcGfxaqDi7OuDq6CIPgD4uripOgiJd6XFFrEeOHxPs675/DefYC/Xmaq2REDVM0yUom4kMmuCsFXdGEE/fBhQmKmPieKSXjW1z31Ud1FeZZ335/Vq+RMBvgE4hjTDYt4g3hm09I57xOHWVFSiM+Jxw26IPEj12WX3zgXHPbzzLCRTs0Th4mFQhvLbcyKhko8TRxRVI3y/RmXFc5bnNVylTXvyV8Yymkry1ynNYwEFrEEEQJkVFFCGRaitGukmEjRedzDP+T4RXLJ5CqBkWMBFaiQHD/4H/yerZmfmnSTQnGg88W2P0aB4C7QqNn297FtN06AwDNwpbX8lTow+0l6raVFjoC+beDiuqXJe8DlDjD4pEuG5EgBWv58Hng/o2/KAgO3QM+aO7fmOU4fgDTNKnkDHBwCYwXKXvd4d3f73P7tac7vB5UicrQ0WLbfAAANemlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDozYjNlMzQ0NC03YTU4LTQxYjItYTZjYi0wMzljNWI3NjRmN2IiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGUxZjUyNzQtNTMyNC00MzE5LWE3MjYtOGQyNjJlNjI1Y2YwIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZDkzZGI3ODgtMmQwNi00NjdhLWI2OGItZWJlNmJiNGU1ODQ2IgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJNYWMgT1MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjg4MTUzMjA5MTAxNDUxIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMzowNjozMFQxMzoyNjo0OC0wNjowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjM6MDY6MzBUMTM6MjY6NDgtMDY6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNWQ3MTYyZi0xYWQ1LTQwNWUtODAxOS03NmExMTI4MDI1YmYiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTWFjIE9TKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQxMzoyNjo0OS0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5gv8dKAAAABmJLR0QA9QAHANj00CgxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wYeExoxB4CzXgAAB65JREFUeNrtnF9sFNcVh78z6z8kEwgPTUVxTZqYh2lVbAKVKleuiuEJkGzIAzFSpEQukaoqQUUhiUiLSkRD2hQ1FYmqqnEtUqUK7UPBVozUBzBpUHkproGXrVqXAoKgKg/EZKFre+f0YcftFs967/zz7rrze5y999yd2fn2d8+9ZwZSpUqVKlWqVKmMpb9vcvT9zB90xF6RXo1UYWWllyAcfEzPjKL6ddy7oymEqcJKTBvmmrN7gR8bNt9v550fLG74KIUui3Vft2zN3Ywaf+bm1zTJ79+w4o8Stu/OO7ToNNsUtgJtqqwEEOEGMCEwIo2ceO9+rifx3TvGtdUt0CuwBaVNxRtfuYEwoXDSyjB0Ya1cW1QABoQvEoTa2XkG1W8kc7bygZw7tyFm+GKFsBYB3HmHFneKAyr0oxVmTYIryqDVxIG4QHxsTFcWXF5R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\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses, UnknownToAstroStatus } from '.'\nimport dark from '../../public/icons/status-dark.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n const offset = AstroStatuses.indexOf(UnknownToAstroStatus[this.status])\n // Scale according to severity ... offset 1 is most severe (critical)\n // We knock off 5% for every less severe value\n const relativeScale = 1 - (offset - 1) * 0.05\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor * relativeScale\n const bgHeight = 32 * this.scaleFactor * relativeScale\n const iconWidth = 32 * this.scaleFactor * relativeScale // Each icon in the png is 32px wide with no space in between\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n `padding-top: ${offset - 1}px;`,\n ].join('')\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :size=\"size\" :icon=\"icon\" :style=\"colorStyle\" />\n</template>\n\n<script>\n// This component is a Vue wrapper around Astro RuxIcon so that it works as a Vuetify icon set\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'small',\n },\n color: {\n type: String,\n default: 'white',\n },\n },\n computed: {\n colorStyle: function () {\n return {\n '--iconColor': this.color,\n }\n },\n },\n}\n</script>\n\n<style scoped>\nrux-icon {\n color: var(--iconColor);\n}\n</style>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { h } from 'vue'\nimport AstroStatusIndicator from './AstroStatusIndicator.vue'\nimport CosmosRuxIcon from './CosmosRuxIcon.vue'\nimport CustomIcon from './CustomIcon.vue'\n\nconst UnknownToAstroStatus = {\n fatal: 'critical',\n FATAL: 'critical',\n error: 'critical',\n ERROR: 'critical',\n warn: 'caution',\n WARN: 'caution',\n info: 'normal',\n INFO: 'normal',\n debug: 'off',\n DEBUG: 'off',\n critical: 'critical',\n CRITICAL: 'critical',\n serious: 'serious',\n SERIOUS: 'serious',\n caution: 'caution',\n CAUTION: 'caution',\n normal: 'normal',\n NORMAL: 'normal',\n standby: 'standby',\n STANDBY: 'standby',\n off: 'off',\n OFF: 'OFF',\n}\n\nconst UnknownToCosmosStatus = {\n fatal: 'FATAL',\n FATAL: 'FATAL',\n error: 'ERROR',\n ERROR: 'ERROR',\n warn: 'WARN',\n WARN: 'WARN',\n info: 'INFO',\n INFO: 'INFO',\n debug: 'DEBUG',\n DEBUG: 'DEBUG',\n critical: 'ERROR',\n CRITICAL: 'ERROR',\n serious: 'WARN',\n SERIOUS: 'WARN',\n caution: 'WARN',\n CAUTION: 'WARN',\n normal: 'INFO',\n NORMAL: 'INFO',\n standby: 'INFO',\n STANDBY: 'INFO',\n off: 'INFO',\n OFF: 'INFO',\n}\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#a4abb6',\n}\n\nconst getStatusColorContrast = function (severityLevel) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[UnknownToAstroStatus[severityLevel]]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nconst AstroIconVuetifySets = {\n astro: {\n component: (props) => {\n return h(CosmosRuxIcon, {\n ...props,\n })\n },\n },\n ['astro-status']: {\n component: (props) => {\n return h(AstroStatusIndicator, {\n ...props,\n status: props.icon,\n })\n },\n },\n}\n\nconst CustomIconSet = {\n extras: {\n component: (props) => {\n return h(CustomIcon, {\n ...props,\n })\n },\n },\n}\n\nexport {\n AstroIconVuetifySets,\n AstroStatuses,\n AstroStatusColors,\n AstroStatusIndicator,\n CustomIconSet,\n getStatusColorContrast,\n UnknownToAstroStatus,\n UnknownToCosmosStatus,\n}\n"],"names":["dark","_sfc_main","offset","AstroStatuses","UnknownToAstroStatus","relativeScale","bgWidth","bgHeight","iconWidth","_createElementBlock","$options","_createBlock","_component_rux_icon","$props","UnknownToCosmosStatus","AstroStatusColors","getStatusColorContrast","severityLevel","black","white","statusColor","r","g","b","AstroIconVuetifySets","props","h","CosmosRuxIcon","AstroStatusIndicator","CustomIconSet","CustomIcon"],"mappings":"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"}
package/dist/icons.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sources":["../public/icons/status-dark.png","../src/icons/AstroStatusIndicator.vue","../src/icons/CosmosRuxIcon.vue","../src/icons/index.js"],"sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAAAgCAYAAAALxXRVAAAAxHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVDbDcMwCPxnio5gc8TB4zhtKnWDjl8IJEranmReh84Are/Xk24OrkIyzdp6a8UgXToPC7QExmZrkc1uWJOy/FIn3gm2EswjUm3Zv9frIRBuWDSdhPSexHIluqS+fgnlz/CJPH6kUE8hcBA1BUasVVrX+bzCcuyW0HjkRvQ69k8+2/Uek/0D5hUVxSwgMQD8gTAsaGYBb6zmhxFeEWiK2UH+3WkHfQAmGFlDwtBoyQAAAYVpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNQFIVPW7UiFRE7iIhkqE7WQUUcaxWKUCHUCq06mLz0D5o0JCkujoJrwcGfxaqDi7OuDq6CIPgD4uripOgiJd6XFFrEeOHxPs675/DefYC/Xmaq2REDVM0yUom4kMmuCsFXdGEE/fBhQmKmPieKSXjW1z31Ud1FeZZ335/Vq+RMBvgE4hjTDYt4g3hm09I57xOHWVFSiM+Jxw26IPEj12WX3zgXHPbzzLCRTs0Th4mFQhvLbcyKhko8TRxRVI3y/RmXFc5bnNVylTXvyV8Yymkry1ynNYwEFrEEEQJkVFFCGRaitGukmEjRedzDP+T4RXLJ5CqBkWMBFaiQHD/4H/yerZmfmnSTQnGg88W2P0aB4C7QqNn297FtN06AwDNwpbX8lTow+0l6raVFjoC+beDiuqXJe8DlDjD4pEuG5EgBWv58Hng/o2/KAgO3QM+aO7fmOU4fgDTNKnkDHBwCYwXKXvd4d3f73P7tac7vB5UicrQ0WLbfAAANemlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDozYjNlMzQ0NC03YTU4LTQxYjItYTZjYi0wMzljNWI3NjRmN2IiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGUxZjUyNzQtNTMyNC00MzE5LWE3MjYtOGQyNjJlNjI1Y2YwIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZDkzZGI3ODgtMmQwNi00NjdhLWI2OGItZWJlNmJiNGU1ODQ2IgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJNYWMgT1MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjg4MTUzMjA5MTAxNDUxIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMzowNjozMFQxMzoyNjo0OC0wNjowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjM6MDY6MzBUMTM6MjY6NDgtMDY6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNWQ3MTYyZi0xYWQ1LTQwNWUtODAxOS03NmExMTI4MDI1YmYiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTWFjIE9TKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQxMzoyNjo0OS0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5gv8dKAAAABmJLR0QA9QAHANj00CgxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wYeExoxB4CzXgAAB65JREFUeNrtnF9sFNcVh78z6z8kEwgPTUVxTZqYh2lVbAKVKleuiuEJkGzIAzFSpEQukaoqQUUhiUiLSkRD2hQ1FYmqqnEtUqUK7UPBVozUBzBpUHkproGXrVqXAoKgKg/EZKFre+f0YcftFs967/zz7rrze5y999yd2fn2d8+9ZwZSpUqVKlWqVKmMpb9vcvT9zB90xF6RXo1UYWWllyAcfEzPjKL6ddy7oymEqcJKTBvmmrN7gR8bNt9v550fLG74KIUui3Vft2zN3Ywaf+bm1zTJ79+w4o8Stu/OO7ToNNsUtgJtqqwEEOEGMCEwIo2ceO9+rifx3TvGtdUt0CuwBaVNxRtfuYEwoXDSyjB0Ya1cW1QABoQvEoTa2XkG1W8kc7bygZw7tyFm+GKFsBYB3HmHFneKAyr0oxVmTYIryqDVxIG4QHxsTFcWXF5R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\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses, UnknownToAstroStatus } from '.'\nimport dark from '../../public/icons/status-dark.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n const offset = AstroStatuses.indexOf(UnknownToAstroStatus[this.status])\n // Scale according to severity ... offset 1 is most severe (critical)\n // We knock off 5% for every less severe value\n const relativeScale = 1 - (offset - 1) * 0.05\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor * relativeScale\n const bgHeight = 32 * this.scaleFactor * relativeScale\n const iconWidth = 32 * this.scaleFactor * relativeScale // Each icon in the png is 32px wide with no space in between\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n `padding-top: ${offset - 1}px;`,\n ].join('')\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :size=\"size\" :icon=\"icon\" :style=\"colorStyle\" />\n</template>\n\n<script>\n// This component is a Vue wrapper around Astro RuxIcon so that it works as a Vuetify icon set\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'small',\n },\n color: {\n type: String,\n default: 'white',\n },\n },\n computed: {\n colorStyle: function () {\n return {\n '--iconColor': this.color,\n }\n },\n },\n}\n</script>\n\n<style scoped>\nrux-icon {\n color: var(--iconColor);\n}\n</style>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { h } from 'vue'\nimport AstroStatusIndicator from './AstroStatusIndicator.vue'\nimport CosmosRuxIcon from './CosmosRuxIcon.vue'\nimport CustomIcon from './CustomIcon.vue'\n\nconst UnknownToAstroStatus = {\n fatal: 'critical',\n FATAL: 'critical',\n error: 'critical',\n ERROR: 'critical',\n warn: 'caution',\n WARN: 'caution',\n info: 'normal',\n INFO: 'normal',\n debug: 'off',\n DEBUG: 'off',\n critical: 'critical',\n CRITICAL: 'critical',\n serious: 'serious',\n SERIOUS: 'serious',\n caution: 'caution',\n CAUTION: 'caution',\n normal: 'normal',\n NORMAL: 'normal',\n standby: 'standby',\n STANDBY: 'standby',\n off: 'off',\n OFF: 'OFF',\n}\n\nconst UnknownToCosmosStatus = {\n fatal: 'FATAL',\n FATAL: 'FATAL',\n error: 'ERROR',\n ERROR: 'ERROR',\n warn: 'WARN',\n WARN: 'WARN',\n info: 'INFO',\n INFO: 'INFO',\n debug: 'DEBUG',\n DEBUG: 'DEBUG',\n critical: 'ERROR',\n CRITICAL: 'ERROR',\n serious: 'WARN',\n SERIOUS: 'WARN',\n caution: 'WARN',\n CAUTION: 'WARN',\n normal: 'INFO',\n NORMAL: 'INFO',\n standby: 'INFO',\n STANDBY: 'INFO',\n off: 'INFO',\n OFF: 'INFO',\n}\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#a4abb6',\n}\n\nconst getStatusColorContrast = function (severityLevel) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[UnknownToAstroStatus[severityLevel]]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nconst AstroIconVuetifySets = {\n astro: {\n component: (props) => {\n return h(CosmosRuxIcon, {\n ...props,\n })\n },\n },\n ['astro-status']: {\n component: (props) => {\n return h(AstroStatusIndicator, {\n ...props,\n status: props.icon,\n })\n },\n },\n}\n\nconst CustomIconSet = {\n extras: {\n component: (props) => {\n return h(CustomIcon, {\n ...props,\n })\n },\n },\n}\n\nexport {\n AstroIconVuetifySets,\n AstroStatuses,\n AstroStatusColors,\n AstroStatusIndicator,\n CustomIconSet,\n getStatusColorContrast,\n UnknownToAstroStatus,\n UnknownToCosmosStatus,\n}\n"],"names":["dark","_sfc_main","offset","AstroStatuses","UnknownToAstroStatus","relativeScale","bgWidth","bgHeight","iconWidth","_createElementBlock","_normalizeStyle","$options","_createBlock","_component_rux_icon","$props","UnknownToCosmosStatus","AstroStatusColors","getStatusColorContrast","severityLevel","black","white","statusColor","r","g","b","AstroIconVuetifySets","props","h","CosmosRuxIcon","AstroStatusIndicator","CustomIconSet","CustomIcon"],"mappings":"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"}
1
+ {"version":3,"file":"icons.js","sources":["../public/icons/status-dark.png","../src/icons/AstroStatusIndicator.vue","../src/icons/CosmosRuxIcon.vue","../src/icons/index.js"],"sourcesContent":["export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAAAgCAYAAAALxXRVAAAAxHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjabVDbDcMwCPxnio5gc8TB4zhtKnWDjl8IJEranmReh84Are/Xk24OrkIyzdp6a8UgXToPC7QExmZrkc1uWJOy/FIn3gm2EswjUm3Zv9frIRBuWDSdhPSexHIluqS+fgnlz/CJPH6kUE8hcBA1BUasVVrX+bzCcuyW0HjkRvQ69k8+2/Uek/0D5hUVxSwgMQD8gTAsaGYBb6zmhxFeEWiK2UH+3WkHfQAmGFlDwtBoyQAAAYVpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNQFIVPW7UiFRE7iIhkqE7WQUUcaxWKUCHUCq06mLz0D5o0JCkujoJrwcGfxaqDi7OuDq6CIPgD4uripOgiJd6XFFrEeOHxPs675/DefYC/Xmaq2REDVM0yUom4kMmuCsFXdGEE/fBhQmKmPieKSXjW1z31Ud1FeZZ335/Vq+RMBvgE4hjTDYt4g3hm09I57xOHWVFSiM+Jxw26IPEj12WX3zgXHPbzzLCRTs0Th4mFQhvLbcyKhko8TRxRVI3y/RmXFc5bnNVylTXvyV8Yymkry1ynNYwEFrEEEQJkVFFCGRaitGukmEjRedzDP+T4RXLJ5CqBkWMBFaiQHD/4H/yerZmfmnSTQnGg88W2P0aB4C7QqNn297FtN06AwDNwpbX8lTow+0l6raVFjoC+beDiuqXJe8DlDjD4pEuG5EgBWv58Hng/o2/KAgO3QM+aO7fmOU4fgDTNKnkDHBwCYwXKXvd4d3f73P7tac7vB5UicrQ0WLbfAAANemlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNC40LjAtRXhpdjIiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgeG1sbnM6R0lNUD0iaHR0cDovL3d3dy5naW1wLm9yZy94bXAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgIHhtcE1NOkRvY3VtZW50SUQ9ImdpbXA6ZG9jaWQ6Z2ltcDozYjNlMzQ0NC03YTU4LTQxYjItYTZjYi0wMzljNWI3NjRmN2IiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MGUxZjUyNzQtNTMyNC00MzE5LWE3MjYtOGQyNjJlNjI1Y2YwIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZDkzZGI3ODgtMmQwNi00NjdhLWI2OGItZWJlNmJiNGU1ODQ2IgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJNYWMgT1MiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjg4MTUzMjA5MTAxNDUxIgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMzowNjozMFQxMzoyNjo0OC0wNjowMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjM6MDY6MzBUMTM6MjY6NDgtMDY6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozNWQ3MTYyZi0xYWQ1LTQwNWUtODAxOS03NmExMTI4MDI1YmYiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTWFjIE9TKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQxMzoyNjo0OS0wNjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5gv8dKAAAABmJLR0QA9QAHANj00CgxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5wYeExoxB4CzXgAAB65JREFUeNrtnF9sFNcVh78z6z8kEwgPTUVxTZqYh2lVbAKVKleuiuEJkGzIAzFSpEQukaoqQUUhiUiLSkRD2hQ1FYmqqnEtUqUK7UPBVozUBzBpUHkproGXrVqXAoKgKg/EZKFre+f0YcftFs967/zz7rrze5y999yd2fn2d8+9ZwZSpUqVKlWqVKmMpb9vcvT9zB90xF6RXo1UYWWllyAcfEzPjKL6ddy7oymEqcJKTBvmmrN7gR8bNt9v550fLG74KIUui3Vft2zN3Ywaf+bm1zTJ79+w4o8Stu/OO7ToNNsUtgJtqqwEEOEGMCEwIo2ceO9+rifx3TvGtdUt0CuwBaVNxRtfuYEwoXDSyjB0Ya1cW1QABoQvEoTa2XkG1W8kc7bygZw7tyFm+GKFsBYB3HmHFneKAyr0oxVmTYIryqDVxIG4QHxsTFcWXF5R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\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses, UnknownToAstroStatus } from '.'\nimport dark from '../../public/icons/status-dark.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n const offset = AstroStatuses.indexOf(UnknownToAstroStatus[this.status])\n // Scale according to severity ... offset 1 is most severe (critical)\n // We knock off 5% for every less severe value\n const relativeScale = 1 - (offset - 1) * 0.05\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor * relativeScale\n const bgHeight = 32 * this.scaleFactor * relativeScale\n const iconWidth = 32 * this.scaleFactor * relativeScale // Each icon in the png is 32px wide with no space in between\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n `padding-top: ${offset - 1}px;`,\n ].join('')\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :size=\"size\" :icon=\"icon\" :style=\"colorStyle\" />\n</template>\n\n<script>\n// This component is a Vue wrapper around Astro RuxIcon so that it works as a Vuetify icon set\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'small',\n },\n color: {\n type: String,\n default: 'white',\n },\n },\n computed: {\n colorStyle: function () {\n return {\n '--iconColor': this.color,\n }\n },\n },\n}\n</script>\n\n<style scoped>\nrux-icon {\n color: var(--iconColor);\n}\n</style>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { h } from 'vue'\nimport AstroStatusIndicator from './AstroStatusIndicator.vue'\nimport CosmosRuxIcon from './CosmosRuxIcon.vue'\nimport CustomIcon from './CustomIcon.vue'\n\nconst UnknownToAstroStatus = {\n fatal: 'critical',\n FATAL: 'critical',\n error: 'critical',\n ERROR: 'critical',\n warn: 'caution',\n WARN: 'caution',\n info: 'normal',\n INFO: 'normal',\n debug: 'off',\n DEBUG: 'off',\n critical: 'critical',\n CRITICAL: 'critical',\n serious: 'serious',\n SERIOUS: 'serious',\n caution: 'caution',\n CAUTION: 'caution',\n normal: 'normal',\n NORMAL: 'normal',\n standby: 'standby',\n STANDBY: 'standby',\n off: 'off',\n OFF: 'OFF',\n}\n\nconst UnknownToCosmosStatus = {\n fatal: 'FATAL',\n FATAL: 'FATAL',\n error: 'ERROR',\n ERROR: 'ERROR',\n warn: 'WARN',\n WARN: 'WARN',\n info: 'INFO',\n INFO: 'INFO',\n debug: 'DEBUG',\n DEBUG: 'DEBUG',\n critical: 'ERROR',\n CRITICAL: 'ERROR',\n serious: 'WARN',\n SERIOUS: 'WARN',\n caution: 'WARN',\n CAUTION: 'WARN',\n normal: 'INFO',\n NORMAL: 'INFO',\n standby: 'INFO',\n STANDBY: 'INFO',\n off: 'INFO',\n OFF: 'INFO',\n}\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#a4abb6',\n}\n\nconst getStatusColorContrast = function (severityLevel) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[UnknownToAstroStatus[severityLevel]]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nconst AstroIconVuetifySets = {\n astro: {\n component: (props) => {\n return h(CosmosRuxIcon, {\n ...props,\n })\n },\n },\n ['astro-status']: {\n component: (props) => {\n return h(AstroStatusIndicator, {\n ...props,\n status: props.icon,\n })\n },\n },\n}\n\nconst CustomIconSet = {\n extras: {\n component: (props) => {\n return h(CustomIcon, {\n ...props,\n })\n },\n },\n}\n\nexport {\n AstroIconVuetifySets,\n AstroStatuses,\n AstroStatusColors,\n AstroStatusIndicator,\n CustomIconSet,\n getStatusColorContrast,\n UnknownToAstroStatus,\n UnknownToCosmosStatus,\n}\n"],"names":["dark","_sfc_main","offset","AstroStatuses","UnknownToAstroStatus","relativeScale","bgWidth","bgHeight","iconWidth","_createElementBlock","$options","_createBlock","_component_rux_icon","$props","UnknownToCosmosStatus","AstroStatusColors","getStatusColorContrast","severityLevel","black","white","statusColor","r","g","b","AstroIconVuetifySets","props","h","CosmosRuxIcon","AstroStatusIndicator","CustomIconSet","CustomIcon"],"mappings":"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"}