@openc3/vue-common 6.8.0 → 6.9.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 (416) hide show
  1. package/dist/{ArrayWidget-DaONH8Iv.cjs → ArrayWidget-DJkuPBFS.cjs} +2 -2
  2. package/dist/{ArrayWidget-DaONH8Iv.cjs.map → ArrayWidget-DJkuPBFS.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-j3ncPuPx.js → ArrayWidget-DLfNWDzN.js} +4 -4
  4. package/dist/{ArrayWidget-j3ncPuPx.js.map → ArrayWidget-DLfNWDzN.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-DPMVlst7.cjs → ArrayplotWidget-COGxmBEP.cjs} +2 -2
  6. package/dist/{ArrayplotWidget-DPMVlst7.cjs.map → ArrayplotWidget-COGxmBEP.cjs.map} +1 -1
  7. package/dist/{ArrayplotWidget-DuLaiGa9.js → ArrayplotWidget-CoRsUxHG.js} +7 -7
  8. package/dist/{ArrayplotWidget-DuLaiGa9.js.map → ArrayplotWidget-CoRsUxHG.js.map} +1 -1
  9. package/dist/{BarColumn-CchXr_ex.cjs → BarColumn-BaPaYtki.cjs} +2 -2
  10. package/dist/{BarColumn-CchXr_ex.cjs.map → BarColumn-BaPaYtki.cjs.map} +1 -1
  11. package/dist/{BarColumn-BWJ0Dd4O.js → BarColumn-DHP-zQ4R.js} +3 -3
  12. package/dist/{BarColumn-BWJ0Dd4O.js.map → BarColumn-DHP-zQ4R.js.map} +1 -1
  13. package/dist/{BlockWidget-Bf5Dd6Cr.js → BlockWidget-BmHSFvOq.js} +4 -4
  14. package/dist/{BlockWidget-Bf5Dd6Cr.js.map → BlockWidget-BmHSFvOq.js.map} +1 -1
  15. package/dist/{BlockWidget-CeDueZQ0.cjs → BlockWidget-DLncsLLX.cjs} +2 -2
  16. package/dist/{BlockWidget-CeDueZQ0.cjs.map → BlockWidget-DLncsLLX.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-BZulfQct.cjs → ButtonWidget-BLePbTf_.cjs} +3 -3
  18. package/dist/{ButtonWidget-BZulfQct.cjs.map → ButtonWidget-BLePbTf_.cjs.map} +1 -1
  19. package/dist/{ButtonWidget-bl_mGFYh.js → ButtonWidget-C3ZWRjZZ.js} +6 -6
  20. package/dist/{ButtonWidget-bl_mGFYh.js.map → ButtonWidget-C3ZWRjZZ.js.map} +1 -1
  21. package/dist/{CanvasWidget-DwAXTAyn.cjs → CanvasWidget-C8Sy9t9G.cjs} +2 -2
  22. package/dist/{CanvasWidget-DwAXTAyn.cjs.map → CanvasWidget-C8Sy9t9G.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-boDemgx1.js → CanvasWidget-CL-XzPF4.js} +2 -2
  24. package/dist/{CanvasWidget-boDemgx1.js.map → CanvasWidget-CL-XzPF4.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-ByJp9ZIa.cjs → CanvasdotWidget-6MPKD5iZ.cjs} +2 -2
  26. package/dist/{CanvasdotWidget-ByJp9ZIa.cjs.map → CanvasdotWidget-6MPKD5iZ.cjs.map} +1 -1
  27. package/dist/{CanvasdotWidget-BZBbJcER.js → CanvasdotWidget-D8Y9DgVE.js} +2 -2
  28. package/dist/{CanvasdotWidget-BZBbJcER.js.map → CanvasdotWidget-D8Y9DgVE.js.map} +1 -1
  29. package/dist/{CanvasimageWidget-6ywvT5jd.js → CanvasimageWidget-DHSGK_tD.js} +3 -3
  30. package/dist/{CanvasimageWidget-6ywvT5jd.js.map → CanvasimageWidget-DHSGK_tD.js.map} +1 -1
  31. package/dist/{CanvasimageWidget-BDprHuH3.cjs → CanvasimageWidget-DYUaf3zy.cjs} +2 -2
  32. package/dist/{CanvasimageWidget-BDprHuH3.cjs.map → CanvasimageWidget-DYUaf3zy.cjs.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-DjWrA3gX.js → CanvasimagevalueWidget-Btt_fQfC.js} +3 -3
  34. package/dist/{CanvasimagevalueWidget-DjWrA3gX.js.map → CanvasimagevalueWidget-Btt_fQfC.js.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-Cl_EuzNC.cjs → CanvasimagevalueWidget-Bu1ECOWl.cjs} +2 -2
  36. package/dist/{CanvasimagevalueWidget-Cl_EuzNC.cjs.map → CanvasimagevalueWidget-Bu1ECOWl.cjs.map} +1 -1
  37. package/dist/{CanvaslabelWidget-Bq4V2BQh.js → CanvaslabelWidget-BF_8RTjv.js} +2 -2
  38. package/dist/{CanvaslabelWidget-Bq4V2BQh.js.map → CanvaslabelWidget-BF_8RTjv.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-aalWFBxK.cjs → CanvaslabelWidget-Dik-ld55.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-aalWFBxK.cjs.map → CanvaslabelWidget-Dik-ld55.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-DIO0fADo.cjs → CanvaslabelvalueWidget-BBlKBoZO.cjs} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-DIO0fADo.cjs.map → CanvaslabelvalueWidget-BBlKBoZO.cjs.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-C8oNcFLi.js → CanvaslabelvalueWidget-scbwaujI.js} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-C8oNcFLi.js.map → CanvaslabelvalueWidget-scbwaujI.js.map} +1 -1
  45. package/dist/{CanvaslineWidget-CqNOzV_A.cjs → CanvaslineWidget-DN0ojc37.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-CqNOzV_A.cjs.map → CanvaslineWidget-DN0ojc37.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-nvbL2GoL.js → CanvaslineWidget-gRvm_-TT.js} +2 -2
  48. package/dist/{CanvaslineWidget-nvbL2GoL.js.map → CanvaslineWidget-gRvm_-TT.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-ZACQedKx.js → CanvaslinevalueWidget-CljziRek.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-ZACQedKx.js.map → CanvaslinevalueWidget-CljziRek.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-D0kOhxXn.cjs → CanvaslinevalueWidget-Cz1XYp0r.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-D0kOhxXn.cjs.map → CanvaslinevalueWidget-Cz1XYp0r.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-L9xyRwfS.cjs → CheckbuttonWidget-B5jOzhZ4.cjs} +2 -2
  54. package/dist/{CheckbuttonWidget-L9xyRwfS.cjs.map → CheckbuttonWidget-B5jOzhZ4.cjs.map} +1 -1
  55. package/dist/{CheckbuttonWidget-B82UE8AB.js → CheckbuttonWidget-BOabI_jE.js} +2 -2
  56. package/dist/{CheckbuttonWidget-B82UE8AB.js.map → CheckbuttonWidget-BOabI_jE.js.map} +1 -1
  57. package/dist/{ClassificationBanners-jiqWjTAZ.js → ClassificationBanners-BGDnMx4r.js} +2 -2
  58. package/dist/{ClassificationBanners-jiqWjTAZ.js.map → ClassificationBanners-BGDnMx4r.js.map} +1 -1
  59. package/dist/{ClassificationBanners-ZF9Ab7D0.cjs → ClassificationBanners-CbcQDr3v.cjs} +2 -2
  60. package/dist/{ClassificationBanners-ZF9Ab7D0.cjs.map → ClassificationBanners-CbcQDr3v.cjs.map} +1 -1
  61. package/dist/{ComboboxWidget-4OFiSkI6.js → ComboboxWidget-BLXNYFiY.js} +2 -2
  62. package/dist/{ComboboxWidget-4OFiSkI6.js.map → ComboboxWidget-BLXNYFiY.js.map} +1 -1
  63. package/dist/{ComboboxWidget-6hmnB_mK.cjs → ComboboxWidget-_lxTm8Wb.cjs} +2 -2
  64. package/dist/{ComboboxWidget-6hmnB_mK.cjs.map → ComboboxWidget-_lxTm8Wb.cjs.map} +1 -1
  65. package/dist/{CriticalCmdDialog-FhXDdBn4.js → CriticalCmdDialog-CnNlsHRX.js} +3 -3
  66. package/dist/{CriticalCmdDialog-FhXDdBn4.js.map → CriticalCmdDialog-CnNlsHRX.js.map} +1 -1
  67. package/dist/{CriticalCmdDialog-C-UGhtjE.cjs → CriticalCmdDialog-niBmkudw.cjs} +2 -2
  68. package/dist/{CriticalCmdDialog-C-UGhtjE.cjs.map → CriticalCmdDialog-niBmkudw.cjs.map} +1 -1
  69. package/dist/{DateWidget-BmwtdirF.js → DateWidget-BTqLCtLS.js} +2 -2
  70. package/dist/{DateWidget-BmwtdirF.js.map → DateWidget-BTqLCtLS.js.map} +1 -1
  71. package/dist/{DateWidget-CmSp7svA.cjs → DateWidget-BvabEAhO.cjs} +2 -2
  72. package/dist/{DateWidget-CmSp7svA.cjs.map → DateWidget-BvabEAhO.cjs.map} +1 -1
  73. package/dist/{DetailsDialog-CLKEfU0s.js → DetailsDialog-BNCS3QAe.js} +2 -2
  74. package/dist/{DetailsDialog-CLKEfU0s.js.map → DetailsDialog-BNCS3QAe.js.map} +1 -1
  75. package/dist/{DetailsDialog-DEicfRO1.cjs → DetailsDialog-DgN9Jcio.cjs} +2 -2
  76. package/dist/{DetailsDialog-DEicfRO1.cjs.map → DetailsDialog-DgN9Jcio.cjs.map} +1 -1
  77. package/dist/EventListDialog-B8rnN9Zi.cjs +2 -0
  78. package/dist/EventListDialog-B8rnN9Zi.cjs.map +1 -0
  79. package/dist/{EventListDialog-BvSMSn7J.js → EventListDialog-C2pwmD0d.js} +554 -389
  80. package/dist/EventListDialog-C2pwmD0d.js.map +1 -0
  81. package/dist/{FormatvalueWidget-C8exC3bj.js → FormatvalueWidget-CLYx8qbg.js} +3 -3
  82. package/dist/{FormatvalueWidget-C8exC3bj.js.map → FormatvalueWidget-CLYx8qbg.js.map} +1 -1
  83. package/dist/{FormatvalueWidget-auKALSPC.cjs → FormatvalueWidget-ulLzg1E-.cjs} +2 -2
  84. package/dist/{FormatvalueWidget-auKALSPC.cjs.map → FormatvalueWidget-ulLzg1E-.cjs.map} +1 -1
  85. package/dist/{Graph-CWcrowaT.js → Graph-BliBYJxD.js} +486 -1050
  86. package/dist/Graph-BliBYJxD.js.map +1 -0
  87. package/dist/Graph-DxC2MPYf.cjs +2 -0
  88. package/dist/Graph-DxC2MPYf.cjs.map +1 -0
  89. package/dist/{GraphWidget-CvzxZYVx.js → GraphWidget-Cb6Ozf54.js} +2 -2
  90. package/dist/GraphWidget-Cb6Ozf54.js.map +1 -0
  91. package/dist/{GraphWidget-BroqS0SO.cjs → GraphWidget-g-0vO4_S.cjs} +2 -2
  92. package/dist/GraphWidget-g-0vO4_S.cjs.map +1 -0
  93. package/dist/{HorizontalWidget-Ck151zVw.js → HorizontalWidget-AY2M01qP.js} +2 -2
  94. package/dist/{HorizontalWidget-Ck151zVw.js.map → HorizontalWidget-AY2M01qP.js.map} +1 -1
  95. package/dist/{HorizontalWidget-DBeyBZCp.cjs → HorizontalWidget-BiEZZpZQ.cjs} +2 -2
  96. package/dist/{HorizontalWidget-DBeyBZCp.cjs.map → HorizontalWidget-BiEZZpZQ.cjs.map} +1 -1
  97. package/dist/{HorizontalboxWidget-D3P-cl9V.js → HorizontalboxWidget-2MEKvq_C.js} +5 -5
  98. package/dist/{HorizontalboxWidget-D3P-cl9V.js.map → HorizontalboxWidget-2MEKvq_C.js.map} +1 -1
  99. package/dist/{HorizontalboxWidget-CuWtYdgh.cjs → HorizontalboxWidget-CWq4ej6k.cjs} +2 -2
  100. package/dist/{HorizontalboxWidget-CuWtYdgh.cjs.map → HorizontalboxWidget-CWq4ej6k.cjs.map} +1 -1
  101. package/dist/{HorizontallineWidget-BE1TjPU8.js → HorizontallineWidget-DgpOPA7q.js} +2 -2
  102. package/dist/{HorizontallineWidget-BE1TjPU8.js.map → HorizontallineWidget-DgpOPA7q.js.map} +1 -1
  103. package/dist/{HorizontallineWidget-QUFjdOSu.cjs → HorizontallineWidget-Dm5G1l4A.cjs} +2 -2
  104. package/dist/{HorizontallineWidget-QUFjdOSu.cjs.map → HorizontallineWidget-Dm5G1l4A.cjs.map} +1 -1
  105. package/dist/{IframeWidget-DOZ1YyS2.cjs → IframeWidget-DDw5t7eV.cjs} +2 -2
  106. package/dist/IframeWidget-DDw5t7eV.cjs.map +1 -0
  107. package/dist/{IframeWidget-BgJCgues.js → IframeWidget-UKKUl7k5.js} +2 -2
  108. package/dist/IframeWidget-UKKUl7k5.js.map +1 -0
  109. package/dist/{ImageLoader-AGF0VbZ5.cjs → ImageLoader-9TCd0KxL.cjs} +2 -2
  110. package/dist/{ImageLoader-AGF0VbZ5.cjs.map → ImageLoader-9TCd0KxL.cjs.map} +1 -1
  111. package/dist/{ImageLoader-CWn-PLOk.js → ImageLoader-C-CIL4YD.js} +2 -2
  112. package/dist/{ImageLoader-CWn-PLOk.js.map → ImageLoader-C-CIL4YD.js.map} +1 -1
  113. package/dist/{ImageviewerWidget-BlhFZD2f.js → ImageviewerWidget-DhuQH5Io.js} +2 -2
  114. package/dist/{ImageviewerWidget-BlhFZD2f.js.map → ImageviewerWidget-DhuQH5Io.js.map} +1 -1
  115. package/dist/{ImageviewerWidget-DnmhYP68.cjs → ImageviewerWidget-DpXzLOpF.cjs} +2 -2
  116. package/dist/{ImageviewerWidget-DnmhYP68.cjs.map → ImageviewerWidget-DpXzLOpF.cjs.map} +1 -1
  117. package/dist/{InterfacesTab-76UJTIwF.cjs → InterfacesTab-CiVfsUia.cjs} +2 -2
  118. package/dist/{InterfacesTab-76UJTIwF.cjs.map → InterfacesTab-CiVfsUia.cjs.map} +1 -1
  119. package/dist/{InterfacesTab-Cwz-zG7j.js → InterfacesTab-Dq3oAKqz.js} +6 -6
  120. package/dist/{InterfacesTab-Cwz-zG7j.js.map → InterfacesTab-Dq3oAKqz.js.map} +1 -1
  121. package/dist/{LabelWidget-C0DhD9Mn.cjs → LabelWidget-D-m2gFIZ.cjs} +2 -2
  122. package/dist/{LabelWidget-C0DhD9Mn.cjs.map → LabelWidget-D-m2gFIZ.cjs.map} +1 -1
  123. package/dist/{LabelWidget-Cwosk4x2.js → LabelWidget-SO9zqcNN.js} +2 -2
  124. package/dist/{LabelWidget-Cwosk4x2.js.map → LabelWidget-SO9zqcNN.js.map} +1 -1
  125. package/dist/{LabelledWidget-D8-aKfA_.cjs → LabelledWidget-BFfsD2wz.cjs} +2 -2
  126. package/dist/{LabelledWidget-D8-aKfA_.cjs.map → LabelledWidget-BFfsD2wz.cjs.map} +1 -1
  127. package/dist/{LabelledWidget-Dl6rAFTQ.js → LabelledWidget-DWoM5AJ5.js} +4 -4
  128. package/dist/{LabelledWidget-Dl6rAFTQ.js.map → LabelledWidget-DWoM5AJ5.js.map} +1 -1
  129. package/dist/{LabelprogressbarWidget-DosPhvaY.cjs → LabelprogressbarWidget-B8x5YimU.cjs} +2 -2
  130. package/dist/{LabelprogressbarWidget-DosPhvaY.cjs.map → LabelprogressbarWidget-B8x5YimU.cjs.map} +1 -1
  131. package/dist/{LabelprogressbarWidget-MuAKesOz.js → LabelprogressbarWidget-D3vnkvQZ.js} +4 -4
  132. package/dist/{LabelprogressbarWidget-MuAKesOz.js.map → LabelprogressbarWidget-D3vnkvQZ.js.map} +1 -1
  133. package/dist/{LabelsparklineWidget-6LA6Ox3d.js → LabelsparklineWidget-DO0T-Jot.js} +4 -4
  134. package/dist/{LabelsparklineWidget-6LA6Ox3d.js.map → LabelsparklineWidget-DO0T-Jot.js.map} +1 -1
  135. package/dist/{LabelsparklineWidget-CLU8722I.cjs → LabelsparklineWidget-DyPaUfc9.cjs} +2 -2
  136. package/dist/{LabelsparklineWidget-CLU8722I.cjs.map → LabelsparklineWidget-DyPaUfc9.cjs.map} +1 -1
  137. package/dist/{LabelvalueWidget-BxAXx-Tf.js → LabelvalueWidget-B6BbNFnk.js} +4 -4
  138. package/dist/{LabelvalueWidget-BxAXx-Tf.js.map → LabelvalueWidget-B6BbNFnk.js.map} +1 -1
  139. package/dist/{LabelvalueWidget-WP4gK29n.cjs → LabelvalueWidget-cTPG6Xqi.cjs} +2 -2
  140. package/dist/{LabelvalueWidget-WP4gK29n.cjs.map → LabelvalueWidget-cTPG6Xqi.cjs.map} +1 -1
  141. package/dist/{LabelvaluedescWidget-BQ-6OXHc.cjs → LabelvaluedescWidget-C4sIZ0md.cjs} +2 -2
  142. package/dist/{LabelvaluedescWidget-BQ-6OXHc.cjs.map → LabelvaluedescWidget-C4sIZ0md.cjs.map} +1 -1
  143. package/dist/{LabelvaluedescWidget-Dwwlnd1g.js → LabelvaluedescWidget-CxfL-H9C.js} +10 -10
  144. package/dist/{LabelvaluedescWidget-Dwwlnd1g.js.map → LabelvaluedescWidget-CxfL-H9C.js.map} +1 -1
  145. package/dist/{LabelvaluelimitsbarWidget-Dv8Qk8kK.js → LabelvaluelimitsbarWidget-BT5k9mHv.js} +4 -4
  146. package/dist/{LabelvaluelimitsbarWidget-Dv8Qk8kK.js.map → LabelvaluelimitsbarWidget-BT5k9mHv.js.map} +1 -1
  147. package/dist/{LabelvaluelimitsbarWidget-Z_7ARnvo.cjs → LabelvaluelimitsbarWidget-CBnU6Afl.cjs} +2 -2
  148. package/dist/{LabelvaluelimitsbarWidget-Z_7ARnvo.cjs.map → LabelvaluelimitsbarWidget-CBnU6Afl.cjs.map} +1 -1
  149. package/dist/{LabelvaluelimitscolumnWidget-DiO1b01N.cjs → LabelvaluelimitscolumnWidget-CwoMfO0P.cjs} +2 -2
  150. package/dist/{LabelvaluelimitscolumnWidget-DiO1b01N.cjs.map → LabelvaluelimitscolumnWidget-CwoMfO0P.cjs.map} +1 -1
  151. package/dist/{LabelvaluelimitscolumnWidget-D-_gl6fq.js → LabelvaluelimitscolumnWidget-DUbmxh4p.js} +5 -5
  152. package/dist/{LabelvaluelimitscolumnWidget-D-_gl6fq.js.map → LabelvaluelimitscolumnWidget-DUbmxh4p.js.map} +1 -1
  153. package/dist/{LabelvaluerangebarWidget-DtajHP0b.cjs → LabelvaluerangebarWidget-DB4gw6Rd.cjs} +2 -2
  154. package/dist/{LabelvaluerangebarWidget-DtajHP0b.cjs.map → LabelvaluerangebarWidget-DB4gw6Rd.cjs.map} +1 -1
  155. package/dist/{LabelvaluerangebarWidget-B3MKT-3Y.js → LabelvaluerangebarWidget-DexAc2UB.js} +4 -4
  156. package/dist/{LabelvaluerangebarWidget-B3MKT-3Y.js.map → LabelvaluerangebarWidget-DexAc2UB.js.map} +1 -1
  157. package/dist/{Layout-Bkb6VP3e.js → Layout-Dd6dRf3R.js} +2 -2
  158. package/dist/{Layout-Bkb6VP3e.js.map → Layout-Dd6dRf3R.js.map} +1 -1
  159. package/dist/Layout-DvBekli8.cjs +2 -0
  160. package/dist/{Layout-CSbYbZWA.cjs.map → Layout-DvBekli8.cjs.map} +1 -1
  161. package/dist/{LedWidget-DOuDD8LI.js → LedWidget-D1RwHb_V.js} +4 -4
  162. package/dist/{LedWidget-DOuDD8LI.js.map → LedWidget-D1RwHb_V.js.map} +1 -1
  163. package/dist/{LedWidget-DeREi8-u.cjs → LedWidget-a99ygZOA.cjs} +2 -2
  164. package/dist/{LedWidget-DeREi8-u.cjs.map → LedWidget-a99ygZOA.cjs.map} +1 -1
  165. package/dist/{LimitsbarWidget-D1U6SvVL.js → LimitsbarWidget-ClOmoV50.js} +2 -2
  166. package/dist/{LimitsbarWidget-D1U6SvVL.js.map → LimitsbarWidget-ClOmoV50.js.map} +1 -1
  167. package/dist/{LimitsbarWidget-BHr3IcIx.cjs → LimitsbarWidget-DaHpj-rM.cjs} +2 -2
  168. package/dist/{LimitsbarWidget-BHr3IcIx.cjs.map → LimitsbarWidget-DaHpj-rM.cjs.map} +1 -1
  169. package/dist/{LimitscolorWidget-iSMGusqt.js → LimitscolorWidget-CBUoEYKp.js} +2 -2
  170. package/dist/{LimitscolorWidget-iSMGusqt.js.map → LimitscolorWidget-CBUoEYKp.js.map} +1 -1
  171. package/dist/{LimitscolorWidget-BUkKRrSL.cjs → LimitscolorWidget-D4nPHQlI.cjs} +2 -2
  172. package/dist/{LimitscolorWidget-BUkKRrSL.cjs.map → LimitscolorWidget-D4nPHQlI.cjs.map} +1 -1
  173. package/dist/{LimitscolumnWidget-DjxZTt_r.js → LimitscolumnWidget-hsHkmY-_.js} +2 -2
  174. package/dist/{LimitscolumnWidget-DjxZTt_r.js.map → LimitscolumnWidget-hsHkmY-_.js.map} +1 -1
  175. package/dist/{LimitscolumnWidget-COfNnb6f.cjs → LimitscolumnWidget-wIx0L9hb.cjs} +2 -2
  176. package/dist/{LimitscolumnWidget-COfNnb6f.cjs.map → LimitscolumnWidget-wIx0L9hb.cjs.map} +1 -1
  177. package/dist/{LinegraphWidget-RleSRWKa.cjs → LinegraphWidget-BRnwhfEQ.cjs} +2 -2
  178. package/dist/{LinegraphWidget-RleSRWKa.cjs.map → LinegraphWidget-BRnwhfEQ.cjs.map} +1 -1
  179. package/dist/{LinegraphWidget-BHKU6zlT.js → LinegraphWidget-CXrKtxOo.js} +4 -4
  180. package/dist/{LinegraphWidget-BHKU6zlT.js.map → LinegraphWidget-CXrKtxOo.js.map} +1 -1
  181. package/dist/{MatrixbycolumnsWidget-DWouVj7A.cjs → MatrixbycolumnsWidget-3jldaS14.cjs} +2 -2
  182. package/dist/{MatrixbycolumnsWidget-DWouVj7A.cjs.map → MatrixbycolumnsWidget-3jldaS14.cjs.map} +1 -1
  183. package/dist/{MatrixbycolumnsWidget-BKO-A2QD.js → MatrixbycolumnsWidget-CsogVU9c.js} +3 -3
  184. package/dist/{MatrixbycolumnsWidget-BKO-A2QD.js.map → MatrixbycolumnsWidget-CsogVU9c.js.map} +1 -1
  185. package/dist/{MicroservicesTab-L6qMAy4x.cjs → MicroservicesTab-3pNZZ5I0.cjs} +2 -2
  186. package/dist/{MicroservicesTab-L6qMAy4x.cjs.map → MicroservicesTab-3pNZZ5I0.cjs.map} +1 -1
  187. package/dist/{MicroservicesTab-xLup6THU.js → MicroservicesTab-DzEvbxlM.js} +3 -3
  188. package/dist/{MicroservicesTab-xLup6THU.js.map → MicroservicesTab-DzEvbxlM.js.map} +1 -1
  189. package/dist/{Openc3Screen-BHHnSEoI.cjs → Openc3Screen-CD3C_EUo.cjs} +4 -4
  190. package/dist/{Openc3Screen-BHHnSEoI.cjs.map → Openc3Screen-CD3C_EUo.cjs.map} +1 -1
  191. package/dist/{Openc3Screen-1rQ_Dbp4.js → Openc3Screen-Cqm5Xtd-.js} +3 -3
  192. package/dist/{Openc3Screen-1rQ_Dbp4.js.map → Openc3Screen-Cqm5Xtd-.js.map} +1 -1
  193. package/dist/{OutputDialog-Ut5cXGxQ.js → OutputDialog-7M4L50tA.js} +9 -9
  194. package/dist/{OutputDialog-Ut5cXGxQ.js.map → OutputDialog-7M4L50tA.js.map} +1 -1
  195. package/dist/{OutputDialog-DgM7aoa-.cjs → OutputDialog-CnDQxHTZ.cjs} +2 -2
  196. package/dist/{OutputDialog-DgM7aoa-.cjs.map → OutputDialog-CnDQxHTZ.cjs.map} +1 -1
  197. package/dist/{PackagesTab-jqsRJEcJ.cjs → PackagesTab-DPPXZvoV.cjs} +2 -2
  198. package/dist/{PackagesTab-jqsRJEcJ.cjs.map → PackagesTab-DPPXZvoV.cjs.map} +1 -1
  199. package/dist/{PackagesTab-ChJDyU3Z.js → PackagesTab-N4SD1Pxj.js} +3 -3
  200. package/dist/{PackagesTab-ChJDyU3Z.js.map → PackagesTab-N4SD1Pxj.js.map} +1 -1
  201. package/dist/{PluginsTab-CayzDij0.js → PluginsTab-C7PH2Wym.js} +4 -4
  202. package/dist/{PluginsTab-CayzDij0.js.map → PluginsTab-C7PH2Wym.js.map} +1 -1
  203. package/dist/{PluginsTab-DYEv8EPg.cjs → PluginsTab-xzPlEMYj.cjs} +4 -4
  204. package/dist/{PluginsTab-DYEv8EPg.cjs.map → PluginsTab-xzPlEMYj.cjs.map} +1 -1
  205. package/dist/{ProgressbarWidget-fbr2qu_N.js → ProgressbarWidget-CO6CEkxP.js} +2 -2
  206. package/dist/{ProgressbarWidget-fbr2qu_N.js.map → ProgressbarWidget-CO6CEkxP.js.map} +1 -1
  207. package/dist/{ProgressbarWidget-Xba7gDbW.cjs → ProgressbarWidget-CPeGR-Az.cjs} +2 -2
  208. package/dist/{ProgressbarWidget-Xba7gDbW.cjs.map → ProgressbarWidget-CPeGR-Az.cjs.map} +1 -1
  209. package/dist/{RadiobuttonWidget-DL08zcQT.js → RadiobuttonWidget-DrxUclws.js} +2 -2
  210. package/dist/{RadiobuttonWidget-DL08zcQT.js.map → RadiobuttonWidget-DrxUclws.js.map} +1 -1
  211. package/dist/{RadiobuttonWidget-CdpKw7jr.cjs → RadiobuttonWidget-DucgkAYD.cjs} +2 -2
  212. package/dist/{RadiobuttonWidget-CdpKw7jr.cjs.map → RadiobuttonWidget-DucgkAYD.cjs.map} +1 -1
  213. package/dist/{RadiogroupWidget-DSA8ENmw.cjs → RadiogroupWidget-C7oVFRf3.cjs} +2 -2
  214. package/dist/{RadiogroupWidget-DSA8ENmw.cjs.map → RadiogroupWidget-C7oVFRf3.cjs.map} +1 -1
  215. package/dist/{RadiogroupWidget-DW9Xpj3c.js → RadiogroupWidget-DN9C38cg.js} +2 -2
  216. package/dist/{RadiogroupWidget-DW9Xpj3c.js.map → RadiogroupWidget-DN9C38cg.js.map} +1 -1
  217. package/dist/{RangebarWidget-o9q55kjc.js → RangebarWidget-5uQTfLMP.js} +2 -2
  218. package/dist/{RangebarWidget-o9q55kjc.js.map → RangebarWidget-5uQTfLMP.js.map} +1 -1
  219. package/dist/{RangebarWidget-B4oRyUwG.cjs → RangebarWidget-Da9S3KMB.cjs} +2 -2
  220. package/dist/{RangebarWidget-B4oRyUwG.cjs.map → RangebarWidget-Da9S3KMB.cjs.map} +1 -1
  221. package/dist/{RedisTab-Uqcfgux1.cjs → RedisTab-BFTaPNRc.cjs} +2 -2
  222. package/dist/{RedisTab-Uqcfgux1.cjs.map → RedisTab-BFTaPNRc.cjs.map} +1 -1
  223. package/dist/{RedisTab-BGz2ZN9T.js → RedisTab-Cyrr_g9k.js} +11 -11
  224. package/dist/{RedisTab-BGz2ZN9T.js.map → RedisTab-Cyrr_g9k.js.map} +1 -1
  225. package/dist/{RollupWidget-BHnjj-DF.js → RollupWidget-B0DCULnu.js} +2 -2
  226. package/dist/{RollupWidget-BHnjj-DF.js.map → RollupWidget-B0DCULnu.js.map} +1 -1
  227. package/dist/{RollupWidget-43v3NX_Z.cjs → RollupWidget-DK0eFASs.cjs} +2 -2
  228. package/dist/{RollupWidget-43v3NX_Z.cjs.map → RollupWidget-DK0eFASs.cjs.map} +1 -1
  229. package/dist/{RoutersTab-Be53r61Y.cjs → RoutersTab-B8JIxjdI.cjs} +2 -2
  230. package/dist/{RoutersTab-Be53r61Y.cjs.map → RoutersTab-B8JIxjdI.cjs.map} +1 -1
  231. package/dist/{RoutersTab-CCEPlZ_Y.js → RoutersTab-BAfpG8k3.js} +6 -6
  232. package/dist/{RoutersTab-CCEPlZ_Y.js.map → RoutersTab-BAfpG8k3.js.map} +1 -1
  233. package/dist/ScriptChooser-ahp4Tu3O.js +573 -0
  234. package/dist/ScriptChooser-ahp4Tu3O.js.map +1 -0
  235. package/dist/ScriptChooser-ma6P0WuM.cjs +2 -0
  236. package/dist/ScriptChooser-ma6P0WuM.cjs.map +1 -0
  237. package/dist/{ScrollwindowWidget-D-QVwztC.js → ScrollwindowWidget-BOkZQgtf.js} +3 -3
  238. package/dist/{ScrollwindowWidget-D-QVwztC.js.map → ScrollwindowWidget-BOkZQgtf.js.map} +1 -1
  239. package/dist/{ScrollwindowWidget-D6ZHZr3o.cjs → ScrollwindowWidget-xM_R_Arq.cjs} +2 -2
  240. package/dist/{ScrollwindowWidget-D6ZHZr3o.cjs.map → ScrollwindowWidget-xM_R_Arq.cjs.map} +1 -1
  241. package/dist/{SecretsTab-vVy356vr.js → SecretsTab-D5RxHYVp.js} +7 -7
  242. package/dist/{SecretsTab-vVy356vr.js.map → SecretsTab-D5RxHYVp.js.map} +1 -1
  243. package/dist/{SecretsTab-DDZ1VoUf.cjs → SecretsTab-DoHYppoO.cjs} +2 -2
  244. package/dist/{SecretsTab-DDZ1VoUf.cjs.map → SecretsTab-DoHYppoO.cjs.map} +1 -1
  245. package/dist/{SettingsTab-CbWrf7U9.js → SettingsTab-CKGQEwd_.js} +137 -121
  246. package/dist/SettingsTab-CKGQEwd_.js.map +1 -0
  247. package/dist/{SettingsTab-DsIVE5UL.cjs → SettingsTab-Dvnzqzdp.cjs} +3 -3
  248. package/dist/SettingsTab-Dvnzqzdp.cjs.map +1 -0
  249. package/dist/{SignalWidget-CysAE9ZG.cjs → SignalWidget-BWKgNMdV.cjs} +2 -2
  250. package/dist/{SignalWidget-CysAE9ZG.cjs.map → SignalWidget-BWKgNMdV.cjs.map} +1 -1
  251. package/dist/{SignalWidget-CsWuufdx.js → SignalWidget-Cis0Xkea.js} +2 -2
  252. package/dist/{SignalWidget-CsWuufdx.js.map → SignalWidget-Cis0Xkea.js.map} +1 -1
  253. package/dist/{SimpleTextDialog-CU6G5CBY.cjs → SimpleTextDialog-BCNn5FZh.cjs} +2 -2
  254. package/dist/{SimpleTextDialog-CU6G5CBY.cjs.map → SimpleTextDialog-BCNn5FZh.cjs.map} +1 -1
  255. package/dist/{SimpleTextDialog-ChV5vRcV.js → SimpleTextDialog-D2mEDvGY.js} +2 -2
  256. package/dist/{SimpleTextDialog-ChV5vRcV.js.map → SimpleTextDialog-D2mEDvGY.js.map} +1 -1
  257. package/dist/{SpacerWidget-Di9-qunj.js → SpacerWidget-CLcqC2Qk.js} +2 -2
  258. package/dist/{SpacerWidget-Di9-qunj.js.map → SpacerWidget-CLcqC2Qk.js.map} +1 -1
  259. package/dist/{SpacerWidget-ChNk5TFU.cjs → SpacerWidget-_daU5QnM.cjs} +2 -2
  260. package/dist/{SpacerWidget-ChNk5TFU.cjs.map → SpacerWidget-_daU5QnM.cjs.map} +1 -1
  261. package/dist/{SparklineWidget-B6-zhdPW.js → SparklineWidget-CTp83eZ-.js} +4 -4
  262. package/dist/{SparklineWidget-B6-zhdPW.js.map → SparklineWidget-CTp83eZ-.js.map} +1 -1
  263. package/dist/{SparklineWidget-D1tVqSRL.cjs → SparklineWidget-qRnlPzJ_.cjs} +2 -2
  264. package/dist/{SparklineWidget-D1tVqSRL.cjs.map → SparklineWidget-qRnlPzJ_.cjs.map} +1 -1
  265. package/dist/{TabbookWidget-Btg-Axid.cjs → TabbookWidget-C0Fvv-o5.cjs} +2 -2
  266. package/dist/{TabbookWidget-Btg-Axid.cjs.map → TabbookWidget-C0Fvv-o5.cjs.map} +1 -1
  267. package/dist/{TabbookWidget-B1E1_mzA.js → TabbookWidget-uucd-zsX.js} +2 -2
  268. package/dist/{TabbookWidget-B1E1_mzA.js.map → TabbookWidget-uucd-zsX.js.map} +1 -1
  269. package/dist/TargetPacketItemChooser-CAl-fNql.cjs +2 -0
  270. package/dist/TargetPacketItemChooser-CAl-fNql.cjs.map +1 -0
  271. package/dist/TargetPacketItemChooser-CXpSx-eA.js +572 -0
  272. package/dist/TargetPacketItemChooser-CXpSx-eA.js.map +1 -0
  273. package/dist/{TargetsTab-DbbQcBuK.js → TargetsTab-CM4ABe5y.js} +6 -6
  274. package/dist/{TargetsTab-DbbQcBuK.js.map → TargetsTab-CM4ABe5y.js.map} +1 -1
  275. package/dist/{TargetsTab-pbmAAkOA.cjs → TargetsTab-Ixql3xzm.cjs} +2 -2
  276. package/dist/{TargetsTab-pbmAAkOA.cjs.map → TargetsTab-Ixql3xzm.cjs.map} +1 -1
  277. package/dist/{TextboxWidget-CBVEXPw_.js → TextboxWidget-C2n38ti5.js} +4 -4
  278. package/dist/{TextboxWidget-CBVEXPw_.js.map → TextboxWidget-C2n38ti5.js.map} +1 -1
  279. package/dist/{TextboxWidget-CHXcR8lA.cjs → TextboxWidget-DrdMC0EB.cjs} +2 -2
  280. package/dist/{TextboxWidget-CHXcR8lA.cjs.map → TextboxWidget-DrdMC0EB.cjs.map} +1 -1
  281. package/dist/{TextfieldWidget-DZMHrtQa.js → TextfieldWidget--HTv9ddk.js} +2 -2
  282. package/dist/{TextfieldWidget-DZMHrtQa.js.map → TextfieldWidget--HTv9ddk.js.map} +1 -1
  283. package/dist/{TextfieldWidget-vSJ9CtKs.cjs → TextfieldWidget-VeOem1w3.cjs} +2 -2
  284. package/dist/{TextfieldWidget-vSJ9CtKs.cjs.map → TextfieldWidget-VeOem1w3.cjs.map} +1 -1
  285. package/dist/{TimeWidget-ClkxS_oo.cjs → TimeWidget-C9ltUWFh.cjs} +2 -2
  286. package/dist/{TimeWidget-ClkxS_oo.cjs.map → TimeWidget-C9ltUWFh.cjs.map} +1 -1
  287. package/dist/{TimeWidget-K4MNmJ7J.js → TimeWidget-CPNVZaUM.js} +2 -2
  288. package/dist/{TimeWidget-K4MNmJ7J.js.map → TimeWidget-CPNVZaUM.js.map} +1 -1
  289. package/dist/{TitleWidget-8IcwweFE.js → TitleWidget-Cp0cb6V8.js} +2 -2
  290. package/dist/{TitleWidget-8IcwweFE.js.map → TitleWidget-Cp0cb6V8.js.map} +1 -1
  291. package/dist/{TitleWidget-DJJ17ATm.cjs → TitleWidget-IuUVZkLh.cjs} +2 -2
  292. package/dist/{TitleWidget-DJJ17ATm.cjs.map → TitleWidget-IuUVZkLh.cjs.map} +1 -1
  293. package/dist/ToolsTab-Bgrj0eGr.cjs +7 -0
  294. package/dist/ToolsTab-Bgrj0eGr.cjs.map +1 -0
  295. package/dist/{ToolsTab-tkganPCk.js → ToolsTab-DGjyBWkp.js} +5 -5
  296. package/dist/ToolsTab-DGjyBWkp.js.map +1 -0
  297. package/dist/{TopBar-BoI8SRaF.js → TopBar-B48yYbtR.js} +79 -65
  298. package/dist/{TopBar-BoI8SRaF.js.map → TopBar-B48yYbtR.js.map} +1 -1
  299. package/dist/TopBar-DLz-U85G.cjs +2 -0
  300. package/dist/{TopBar-zJvwq8pr.cjs.map → TopBar-DLz-U85G.cjs.map} +1 -1
  301. package/dist/{UpgradeToEnterpriseDialog-BYz9YoyY.js → UpgradeToEnterpriseDialog-C2Ggr_Xd.js} +2 -2
  302. package/dist/{UpgradeToEnterpriseDialog-BYz9YoyY.js.map → UpgradeToEnterpriseDialog-C2Ggr_Xd.js.map} +1 -1
  303. package/dist/{UpgradeToEnterpriseDialog-BxHUptQB.cjs → UpgradeToEnterpriseDialog-DtckZO3_.cjs} +2 -2
  304. package/dist/{UpgradeToEnterpriseDialog-BxHUptQB.cjs.map → UpgradeToEnterpriseDialog-DtckZO3_.cjs.map} +1 -1
  305. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B1Hzjyj0.cjs +1498 -0
  306. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B1Hzjyj0.cjs.map +1 -0
  307. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-JEZNdnan.js} +7305 -7207
  308. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-JEZNdnan.js.map +1 -0
  309. package/dist/{VWidget-3ziiUuPM.cjs → VWidget-Cf9MXbCl.cjs} +2 -2
  310. package/dist/{VWidget-3ziiUuPM.cjs.map → VWidget-Cf9MXbCl.cjs.map} +1 -1
  311. package/dist/{VWidget-CoIgX3hM.js → VWidget-DQGJRgAk.js} +3 -3
  312. package/dist/{VWidget-CoIgX3hM.js.map → VWidget-DQGJRgAk.js.map} +1 -1
  313. package/dist/{ValueWidget-BvT1ASar.js → ValueWidget-Bk1RFjks.js} +4 -4
  314. package/dist/{ValueWidget-BvT1ASar.js.map → ValueWidget-Bk1RFjks.js.map} +1 -1
  315. package/dist/{ValueWidget-RU-vFOh9.cjs → ValueWidget-BmXm9dYt.cjs} +2 -2
  316. package/dist/{ValueWidget-RU-vFOh9.cjs.map → ValueWidget-BmXm9dYt.cjs.map} +1 -1
  317. package/dist/{ValuelimitsbarWidget-C5lBnUmB.js → ValuelimitsbarWidget-C0HIBYh2.js} +4 -4
  318. package/dist/{ValuelimitsbarWidget-C5lBnUmB.js.map → ValuelimitsbarWidget-C0HIBYh2.js.map} +1 -1
  319. package/dist/{ValuelimitsbarWidget-B5UtwjJW.cjs → ValuelimitsbarWidget-PjCpjhsr.cjs} +2 -2
  320. package/dist/{ValuelimitsbarWidget-B5UtwjJW.cjs.map → ValuelimitsbarWidget-PjCpjhsr.cjs.map} +1 -1
  321. package/dist/{ValuelimitscolumnWidget-BruOZb26.cjs → ValuelimitscolumnWidget-BGiDDUI_.cjs} +2 -2
  322. package/dist/{ValuelimitscolumnWidget-BruOZb26.cjs.map → ValuelimitscolumnWidget-BGiDDUI_.cjs.map} +1 -1
  323. package/dist/{ValuelimitscolumnWidget-DHYI0WBL.js → ValuelimitscolumnWidget-BTT90uyX.js} +4 -4
  324. package/dist/{ValuelimitscolumnWidget-DHYI0WBL.js.map → ValuelimitscolumnWidget-BTT90uyX.js.map} +1 -1
  325. package/dist/{ValuerangebarWidget-BSszZhlE.js → ValuerangebarWidget-CcQw_XK9.js} +4 -4
  326. package/dist/{ValuerangebarWidget-BSszZhlE.js.map → ValuerangebarWidget-CcQw_XK9.js.map} +1 -1
  327. package/dist/{ValuerangebarWidget-BhQVRHhm.cjs → ValuerangebarWidget-ClmX-qH_.cjs} +2 -2
  328. package/dist/{ValuerangebarWidget-BhQVRHhm.cjs.map → ValuerangebarWidget-ClmX-qH_.cjs.map} +1 -1
  329. package/dist/{VerticalWidget-XZrIw9zV.cjs → VerticalWidget-BeDWsvP6.cjs} +2 -2
  330. package/dist/{VerticalWidget-XZrIw9zV.cjs.map → VerticalWidget-BeDWsvP6.cjs.map} +1 -1
  331. package/dist/{VerticalWidget-1GhgYrC3.js → VerticalWidget-CNtFQv3R.js} +2 -2
  332. package/dist/{VerticalWidget-1GhgYrC3.js.map → VerticalWidget-CNtFQv3R.js.map} +1 -1
  333. package/dist/{VerticalboxWidget-BV-onQ8m.cjs → VerticalboxWidget-DlokKDBD.cjs} +2 -2
  334. package/dist/{VerticalboxWidget-BV-onQ8m.cjs.map → VerticalboxWidget-DlokKDBD.cjs.map} +1 -1
  335. package/dist/{VerticalboxWidget-DYHJqEzd.js → VerticalboxWidget-Yxmz1SnU.js} +5 -5
  336. package/dist/{VerticalboxWidget-DYHJqEzd.js.map → VerticalboxWidget-Yxmz1SnU.js.map} +1 -1
  337. package/dist/{Widget-Blq-k5SB.cjs → Widget-HC1_yuQg.cjs} +2 -2
  338. package/dist/{Widget-Blq-k5SB.cjs.map → Widget-HC1_yuQg.cjs.map} +1 -1
  339. package/dist/{Widget-B8t93Oid.js → Widget-LsyjS7ZS.js} +2 -2
  340. package/dist/{Widget-B8t93Oid.js.map → Widget-LsyjS7ZS.js.map} +1 -1
  341. package/dist/addMonths-BtG7uZLJ.js.map +1 -1
  342. package/dist/addMonths-n1tnl3ab.cjs.map +1 -1
  343. package/dist/components.cjs +3 -3
  344. package/dist/components.cjs.map +1 -1
  345. package/dist/components.js +229 -622
  346. package/dist/components.js.map +1 -1
  347. package/dist/format-B22VpiOS.cjs.map +1 -1
  348. package/dist/format-CVeawcIv.js.map +1 -1
  349. package/dist/getDefaultOptions-Batab9o8.cjs.map +1 -1
  350. package/dist/getDefaultOptions-BhSDk-Jo.js.map +1 -1
  351. package/dist/index-DS1ACWVr.js +1755 -0
  352. package/dist/index-DS1ACWVr.js.map +1 -0
  353. package/dist/index-Nd4O4kac.cjs +7 -0
  354. package/dist/index-Nd4O4kac.cjs.map +1 -0
  355. package/dist/parse-DnkEsW-3.js.map +1 -1
  356. package/dist/parse-DwfgQboe.cjs.map +1 -1
  357. package/dist/plugins.cjs +2 -2
  358. package/dist/plugins.cjs.map +1 -1
  359. package/dist/plugins.js +87 -83
  360. package/dist/plugins.js.map +1 -1
  361. package/dist/purify.es-GHnZTJ9O.cjs +3 -0
  362. package/dist/purify.es-GHnZTJ9O.cjs.map +1 -0
  363. package/dist/purify.es-eYFoHPwR.js +529 -0
  364. package/dist/purify.es-eYFoHPwR.js.map +1 -0
  365. package/dist/{settings-UZsgbUSr.js → settings-DCxXjkio.js} +2 -2
  366. package/dist/{settings-UZsgbUSr.js.map → settings-DCxXjkio.js.map} +1 -1
  367. package/dist/{settings-DyvFSj59.cjs → settings-zRw8EylV.cjs} +2 -2
  368. package/dist/{settings-DyvFSj59.cjs.map → settings-zRw8EylV.cjs.map} +1 -1
  369. package/dist/timeFilters-BKnCM4rv.js.map +1 -1
  370. package/dist/timeFilters-CJFxfjqN.cjs.map +1 -1
  371. package/dist/tools/admin.cjs +1 -1
  372. package/dist/tools/admin.cjs.map +1 -1
  373. package/dist/tools/admin.js +13 -13
  374. package/dist/tools/admin.js.map +1 -1
  375. package/dist/tools/base.cjs +1 -1
  376. package/dist/tools/base.cjs.map +1 -1
  377. package/dist/tools/base.js +324 -320
  378. package/dist/tools/base.js.map +1 -1
  379. package/dist/tools/calendar.cjs +1 -1
  380. package/dist/tools/calendar.js +1 -1
  381. package/dist/tools/scriptrunner.cjs +8 -7
  382. package/dist/tools/scriptrunner.cjs.map +1 -1
  383. package/dist/tools/scriptrunner.js +1468 -1259
  384. package/dist/tools/scriptrunner.js.map +1 -1
  385. package/dist/vue-common.css +1 -1
  386. package/dist/widgets.cjs +1 -1
  387. package/dist/widgets.js +63 -63
  388. package/package.json +6 -3
  389. package/dist/EventListDialog-BvSMSn7J.js.map +0 -1
  390. package/dist/EventListDialog-Em1RcH7I.cjs +0 -2
  391. package/dist/EventListDialog-Em1RcH7I.cjs.map +0 -1
  392. package/dist/Graph-BJqtVAaV.cjs +0 -2
  393. package/dist/Graph-BJqtVAaV.cjs.map +0 -1
  394. package/dist/Graph-CWcrowaT.js.map +0 -1
  395. package/dist/GraphWidget-BroqS0SO.cjs.map +0 -1
  396. package/dist/GraphWidget-CvzxZYVx.js.map +0 -1
  397. package/dist/IframeWidget-BgJCgues.js.map +0 -1
  398. package/dist/IframeWidget-DOZ1YyS2.cjs.map +0 -1
  399. package/dist/Layout-CSbYbZWA.cjs +0 -2
  400. package/dist/ScriptChooser-B6TGFTBN.cjs +0 -2
  401. package/dist/ScriptChooser-B6TGFTBN.cjs.map +0 -1
  402. package/dist/ScriptChooser-CXjcm3bN.js +0 -176
  403. package/dist/ScriptChooser-CXjcm3bN.js.map +0 -1
  404. package/dist/SettingsTab-CbWrf7U9.js.map +0 -1
  405. package/dist/SettingsTab-DsIVE5UL.cjs.map +0 -1
  406. package/dist/ToolsTab-BkabqeR_.cjs +0 -7
  407. package/dist/ToolsTab-BkabqeR_.cjs.map +0 -1
  408. package/dist/ToolsTab-tkganPCk.js.map +0 -1
  409. package/dist/TopBar-zJvwq8pr.cjs +0 -2
  410. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs +0 -1498
  411. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs.map +0 -1
  412. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js.map +0 -1
  413. package/dist/index-DDjz5VQq.js +0 -1721
  414. package/dist/index-DDjz5VQq.js.map +0 -1
  415. package/dist/index-DZh4NjG5.cjs +0 -7
  416. package/dist/index-DZh4NjG5.cjs.map +0 -1
@@ -1,10 +1,10 @@
1
- import { e as i, d as b } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js";
2
- import { resolveComponent as r, createBlock as M, openBlock as y, withCtx as l, createVNode as s, createElementVNode as p, toDisplayString as k, createTextVNode as x } from "vue";
1
+ import { b as i, g as w } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-JEZNdnan.js";
2
+ import { resolveComponent as d, createBlock as M, openBlock as y, withCtx as l, createVNode as s, createElementVNode as p, toDisplayString as k, createTextVNode as x } from "vue";
3
3
  import { _ as v } from "./CustomIcon-h5X7369N.js";
4
4
  const q = {
5
5
  methods: {
6
6
  buildLanguageMode(t, e) {
7
- let o = i.require("ace/lib/oop"), c = Object.getOwnPropertyNames(b.prototype).filter((d) => d !== "constructor").filter((d) => d !== "exec").concat([
7
+ let o = i.require("ace/lib/oop"), c = Object.getOwnPropertyNames(w.prototype).filter((r) => r !== "constructor").filter((r) => r !== "exec").concat([
8
8
  "check",
9
9
  "check_raw",
10
10
  "check_formatted",
@@ -27,8 +27,8 @@ const q = {
27
27
  "get_max_output"
28
28
  ]), u = new RegExp(`(\\b${c.join("\\b|\\b")}\\b)`), n = function() {
29
29
  t.call(this);
30
- for (let d in this.$rules)
31
- this.$rules[d].unshift({
30
+ for (let r in this.$rules)
31
+ this.$rules[r].unshift({
32
32
  regex: u,
33
33
  token: "support.function"
34
34
  });
@@ -166,8 +166,8 @@ const q = {
166
166
  class: "editor"
167
167
  };
168
168
  function V(t, e, o, c, u, n) {
169
- const a = r("v-spacer"), h = r("v-btn"), _ = r("v-toolbar"), d = r("v-card-text"), g = r("v-card-actions"), f = r("v-card"), w = r("v-dialog");
170
- return y(), M(w, {
169
+ const a = d("v-spacer"), h = d("v-btn"), _ = d("v-toolbar"), r = d("v-card-text"), g = d("v-card-actions"), f = d("v-card"), b = d("v-dialog");
170
+ return y(), M(b, {
171
171
  modelValue: n.show,
172
172
  "onUpdate:modelValue": e[1] || (e[1] = (m) => n.show = m),
173
173
  width: "85vw"
@@ -194,7 +194,7 @@ function V(t, e, o, c, u, n) {
194
194
  ]),
195
195
  _: 1
196
196
  }),
197
- s(d, null, {
197
+ s(r, null, {
198
198
  default: l(() => [
199
199
  p("pre", O, null, 512)
200
200
  ]),
@@ -227,4 +227,4 @@ export {
227
227
  q as A,
228
228
  E as O
229
229
  };
230
- //# sourceMappingURL=OutputDialog-Ut5cXGxQ.js.map
230
+ //# sourceMappingURL=OutputDialog-7M4L50tA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutputDialog-Ut5cXGxQ.js","sources":["../src/components/ace/AceEditorModes.js","../src/components/OutputDialog.vue"],"sourcesContent":["/*\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-python'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/mode-markdown'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n methods: {\n buildLanguageMode(HighlightRules, FoldMode) {\n let oop = ace.require('ace/lib/oop')\n let apis = Object.getOwnPropertyNames(OpenC3Api.prototype)\n .filter((a) => a !== 'constructor')\n .filter((a) => a !== 'exec')\n // Add the Public apis in api_shared but not in OpenC3Api\n .concat([\n 'check',\n 'check_raw',\n 'check_formatted',\n 'check_with_units',\n 'check_exception',\n 'check_tolerance',\n 'check_expression',\n 'wait',\n 'wait_tolerance',\n 'wait_expression',\n 'wait_check',\n 'wait_check_tolerance',\n 'wait_check_expression',\n 'wait_packet',\n 'wait_check_packet',\n 'disable_instrumentation',\n 'set_line_delay',\n 'get_line_delay',\n 'set_max_output',\n 'get_max_output',\n ])\n let regex = new RegExp(`(\\\\b${apis.join('\\\\b|\\\\b')}\\\\b)`)\n let OpenC3HighlightRules = function () {\n HighlightRules.call(this)\n // add openc3 rules to the rules\n for (let rule in this.$rules) {\n this.$rules[rule].unshift({\n regex: regex,\n token: 'support.function',\n })\n }\n }\n oop.inherits(OpenC3HighlightRules, HighlightRules)\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let Mode = function () {\n this.HighlightRules = OpenC3HighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n return [oop, Mode]\n },\n buildRubyMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/ruby_highlight_rules').RubyHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildPythonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/python_highlight_rules').PythonHighlightRules,\n ace.require('ace/mode/folding/pythonic').FoldMode,\n )\n let PythonMode = ace.require('ace/mode/python').Mode\n oop.inherits(Mode, PythonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildJsonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/json_highlight_rules').JsonHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let JsonMode = ace.require('ace/mode/json').Mode\n oop.inherits(Mode, JsonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildMarkdownMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/markdown_highlight_rules').MarkdownHighlightRules,\n ace.require('ace/mode/folding/markdown').FoldMode,\n )\n let MarkdownMode = ace.require('ace/mode/markdown').Mode\n oop.inherits(Mode, MarkdownMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\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 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 <v-dialog v-model=\"show\" width=\"85vw\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <div class=\"mx-2\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"downloadIcon\"\n @click=\"download\"\n />\n </div>\n </v-toolbar>\n <v-card-text>\n <pre ref=\"editor\" class=\"editor\"></pre>\n </v-card-text>\n <v-card-actions class=\"pr-6 pb-4 pt-0\">\n <v-spacer />\n <v-btn variant=\"flat\" @click=\"show = !show\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { AceEditorModes } from './ace'\n\nexport default {\n mixins: [AceEditorModes],\n props: {\n content: {\n type: String,\n required: true,\n },\n type: String,\n name: String,\n modelValue: Boolean,\n filename: {\n type: String,\n required: false,\n },\n },\n data() {\n return {\n editor: null,\n mode: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n title: function () {\n return `${this.type}: ${this.name}`\n },\n },\n mounted() {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n let languageMode = null\n const fileExtension = this.filename ? this.filename.split('.').pop() : 'txt'\n switch (fileExtension) {\n case 'json':\n const JsonMode = this.buildJsonMode()\n languageMode = new JsonMode()\n this.editor.setOptions({\n useWorker: false,\n })\n break\n case 'py':\n case 'pyi':\n const PythonMode = this.buildPythonMode()\n languageMode = new PythonMode()\n break\n case 'md':\n const MarkdownMode = this.buildMarkdownMode()\n languageMode = new MarkdownMode()\n break\n default:\n // Most of the COSMOS text files are best display in Ruby\n // This includes Rakefiles, Gemfiles, etc.\n const RubyMode = this.buildRubyMode()\n languageMode = new RubyMode()\n break\n }\n this.editor.session.setMode(languageMode)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.content)\n this.editor.clearSelection()\n this.editor.focus()\n this.editor.setReadOnly(true)\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n },\n methods: {\n close: function () {\n this.show = !this.show\n },\n download: function () {\n const blob = new Blob([this.editor.getValue()], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n let filename = `${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`\n if (this.filename) {\n filename = this.filename\n }\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', filename)\n link.click()\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 75vh;\n position: relative;\n font-size: 16px;\n}\n\n.v-textarea :deep(textarea) {\n padding: 5px;\n}\n</style>\n"],"names":["AceEditorModes","HighlightRules","FoldMode","oop","ace.require","apis","OpenC3Api","a","regex","OpenC3HighlightRules","rule","MatchingBraceOutdent","CstyleBehaviour","Mode","RubyMode","PythonMode","JsonMode","MarkdownMode","_sfc_main","value","languageMode","blob","filename","link","_hoisted_2","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_toDisplayString","_component_v_btn","_component_v_card_text","_hoisted_3","_component_v_card_actions","_cache"],"mappings":"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"}
1
+ {"version":3,"file":"OutputDialog-7M4L50tA.js","sources":["../src/components/ace/AceEditorModes.js","../src/components/OutputDialog.vue"],"sourcesContent":["/*\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-python'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/mode-markdown'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n methods: {\n buildLanguageMode(HighlightRules, FoldMode) {\n let oop = ace.require('ace/lib/oop')\n let apis = Object.getOwnPropertyNames(OpenC3Api.prototype)\n .filter((a) => a !== 'constructor')\n .filter((a) => a !== 'exec')\n // Add the Public apis in api_shared but not in OpenC3Api\n .concat([\n 'check',\n 'check_raw',\n 'check_formatted',\n 'check_with_units',\n 'check_exception',\n 'check_tolerance',\n 'check_expression',\n 'wait',\n 'wait_tolerance',\n 'wait_expression',\n 'wait_check',\n 'wait_check_tolerance',\n 'wait_check_expression',\n 'wait_packet',\n 'wait_check_packet',\n 'disable_instrumentation',\n 'set_line_delay',\n 'get_line_delay',\n 'set_max_output',\n 'get_max_output',\n ])\n let regex = new RegExp(`(\\\\b${apis.join('\\\\b|\\\\b')}\\\\b)`)\n let OpenC3HighlightRules = function () {\n HighlightRules.call(this)\n // add openc3 rules to the rules\n for (let rule in this.$rules) {\n this.$rules[rule].unshift({\n regex: regex,\n token: 'support.function',\n })\n }\n }\n oop.inherits(OpenC3HighlightRules, HighlightRules)\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let Mode = function () {\n this.HighlightRules = OpenC3HighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n return [oop, Mode]\n },\n buildRubyMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/ruby_highlight_rules').RubyHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildPythonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/python_highlight_rules').PythonHighlightRules,\n ace.require('ace/mode/folding/pythonic').FoldMode,\n )\n let PythonMode = ace.require('ace/mode/python').Mode\n oop.inherits(Mode, PythonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildJsonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/json_highlight_rules').JsonHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let JsonMode = ace.require('ace/mode/json').Mode\n oop.inherits(Mode, JsonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildMarkdownMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/markdown_highlight_rules').MarkdownHighlightRules,\n ace.require('ace/mode/folding/markdown').FoldMode,\n )\n let MarkdownMode = ace.require('ace/mode/markdown').Mode\n oop.inherits(Mode, MarkdownMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\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 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 <v-dialog v-model=\"show\" width=\"85vw\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <div class=\"mx-2\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"downloadIcon\"\n @click=\"download\"\n />\n </div>\n </v-toolbar>\n <v-card-text>\n <pre ref=\"editor\" class=\"editor\"></pre>\n </v-card-text>\n <v-card-actions class=\"pr-6 pb-4 pt-0\">\n <v-spacer />\n <v-btn variant=\"flat\" @click=\"show = !show\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { AceEditorModes } from './ace'\n\nexport default {\n mixins: [AceEditorModes],\n props: {\n content: {\n type: String,\n required: true,\n },\n type: String,\n name: String,\n modelValue: Boolean,\n filename: {\n type: String,\n required: false,\n },\n },\n data() {\n return {\n editor: null,\n mode: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n title: function () {\n return `${this.type}: ${this.name}`\n },\n },\n mounted() {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n let languageMode = null\n const fileExtension = this.filename ? this.filename.split('.').pop() : 'txt'\n switch (fileExtension) {\n case 'json':\n const JsonMode = this.buildJsonMode()\n languageMode = new JsonMode()\n this.editor.setOptions({\n useWorker: false,\n })\n break\n case 'py':\n case 'pyi':\n const PythonMode = this.buildPythonMode()\n languageMode = new PythonMode()\n break\n case 'md':\n const MarkdownMode = this.buildMarkdownMode()\n languageMode = new MarkdownMode()\n break\n default:\n // Most of the COSMOS text files are best display in Ruby\n // This includes Rakefiles, Gemfiles, etc.\n const RubyMode = this.buildRubyMode()\n languageMode = new RubyMode()\n break\n }\n this.editor.session.setMode(languageMode)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.content)\n this.editor.clearSelection()\n this.editor.focus()\n this.editor.setReadOnly(true)\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n },\n methods: {\n close: function () {\n this.show = !this.show\n },\n download: function () {\n const blob = new Blob([this.editor.getValue()], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n let filename = `${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`\n if (this.filename) {\n filename = this.filename\n }\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', filename)\n link.click()\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 75vh;\n position: relative;\n font-size: 16px;\n}\n\n.v-textarea :deep(textarea) {\n padding: 5px;\n}\n</style>\n"],"names":["AceEditorModes","HighlightRules","FoldMode","oop","ace.require","apis","OpenC3Api","a","regex","OpenC3HighlightRules","rule","MatchingBraceOutdent","CstyleBehaviour","Mode","RubyMode","PythonMode","JsonMode","MarkdownMode","_sfc_main","value","languageMode","blob","filename","link","_hoisted_2","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_toDisplayString","_component_v_btn","_component_v_card_text","_hoisted_3","_component_v_card_actions","_cache"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs"),e=require("vue"),w=require("./CustomIcon-Bop2mEnu.cjs"),p={methods:{buildLanguageMode(o,t){let i=n.aceExports.require("ace/lib/oop"),a=Object.getOwnPropertyNames(n.di.prototype).filter(s=>s!=="constructor").filter(s=>s!=="exec").concat(["check","check_raw","check_formatted","check_with_units","check_exception","check_tolerance","check_expression","wait","wait_tolerance","wait_expression","wait_check","wait_check_tolerance","wait_check_expression","wait_packet","wait_check_packet","disable_instrumentation","set_line_delay","get_line_delay","set_max_output","get_max_output"]),c=new RegExp(`(\\b${a.join("\\b|\\b")}\\b)`),r=function(){o.call(this);for(let s in this.$rules)this.$rules[s].unshift({regex:c,token:"support.function"})};i.inherits(r,o);let d=n.aceExports.require("ace/mode/matching_brace_outdent").MatchingBraceOutdent,l=n.aceExports.require("ace/mode/behaviour/cstyle").CstyleBehaviour;return[i,function(){this.HighlightRules=r,this.$outdent=new d,this.$behaviour=new l,this.foldingRules=new t,this.indentKeywords=this.foldingRules.indentKeywords}]},buildRubyMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/ruby_highlight_rules").RubyHighlightRules,n.aceExports.require("ace/mode/folding/ruby").FoldMode);let i=n.aceExports.require("ace/mode/ruby").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t},buildPythonMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/python_highlight_rules").PythonHighlightRules,n.aceExports.require("ace/mode/folding/pythonic").FoldMode);let i=n.aceExports.require("ace/mode/python").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t},buildJsonMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/json_highlight_rules").JsonHighlightRules,n.aceExports.require("ace/mode/folding/ruby").FoldMode);let i=n.aceExports.require("ace/mode/json").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t},buildMarkdownMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/markdown_highlight_rules").MarkdownHighlightRules,n.aceExports.require("ace/mode/folding/markdown").FoldMode);let i=n.aceExports.require("ace/mode/markdown").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t}}},f={mixins:[p],props:{content:{type:String,required:!0},type:String,name:String,modelValue:Boolean,filename:{type:String,required:!1}},data(){return{editor:null,mode:null}},computed:{show:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}},title:function(){return`${this.type}: ${this.name}`}},mounted(){this.editor=ace.edit(this.$refs.editor),this.editor.setTheme("ace/theme/twilight");let o=null;switch(this.filename?this.filename.split(".").pop():"txt"){case"json":const i=this.buildJsonMode();o=new i,this.editor.setOptions({useWorker:!1});break;case"py":case"pyi":const a=this.buildPythonMode();o=new a;break;case"md":const c=this.buildMarkdownMode();o=new c;break;default:const r=this.buildRubyMode();o=new r;break}this.editor.session.setMode(o),this.editor.session.setUseWrapMode(!0),this.editor.$blockScrolling=1/0,this.editor.setHighlightActiveLine(!1),this.editor.setValue(this.content),this.editor.clearSelection(),this.editor.focus(),this.editor.setReadOnly(!0)},beforeUnmount(){this.editor&&this.editor.destroy()},methods:{close:function(){this.show=!this.show},download:function(){const o=new Blob([this.editor.getValue()],{type:"text/plain"});let t=`${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`;this.filename&&(t=this.filename);const i=document.createElement("a");i.href=URL.createObjectURL(o),i.setAttribute("download",t),i.click()}}},b=["textContent"],M={class:"mx-2"},x={ref:"editor",class:"editor"};function y(o,t,i,a,c,r){const d=e.resolveComponent("v-spacer"),l=e.resolveComponent("v-btn"),u=e.resolveComponent("v-toolbar"),s=e.resolveComponent("v-card-text"),_=e.resolveComponent("v-card-actions"),m=e.resolveComponent("v-card"),g=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(g,{modelValue:r.show,"onUpdate:modelValue":t[1]||(t[1]=h=>r.show=h),width:"85vw"},{default:e.withCtx(()=>[e.createVNode(m,null,{default:e.withCtx(()=>[e.createVNode(u,{height:"24"},{default:e.withCtx(()=>[e.createVNode(d),e.createElementVNode("span",{textContent:e.toDisplayString(r.title)},null,8,b),e.createVNode(d),e.createElementVNode("div",M,[e.createVNode(l,{icon:"mdi-download",variant:"text",density:"compact","data-test":"downloadIcon",onClick:r.download},null,8,["onClick"])])]),_:1}),e.createVNode(s,null,{default:e.withCtx(()=>[e.createElementVNode("pre",x,null,512)]),_:1}),e.createVNode(_,{class:"pr-6 pb-4 pt-0"},{default:e.withCtx(()=>[e.createVNode(d),e.createVNode(l,{variant:"flat",onClick:t[0]||(t[0]=h=>r.show=!r.show)},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode(" Ok ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const k=w._export_sfc(f,[["render",y],["__scopeId","data-v-69e71dd8"]]);exports.AceEditorModes=p;exports.OutputDialog=k;
2
- //# sourceMappingURL=OutputDialog-DgM7aoa-.cjs.map
1
+ "use strict";const n=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B1Hzjyj0.cjs"),e=require("vue"),w=require("./CustomIcon-Bop2mEnu.cjs"),p={methods:{buildLanguageMode(o,t){let i=n.aceExports.require("ace/lib/oop"),a=Object.getOwnPropertyNames(n.gi.prototype).filter(s=>s!=="constructor").filter(s=>s!=="exec").concat(["check","check_raw","check_formatted","check_with_units","check_exception","check_tolerance","check_expression","wait","wait_tolerance","wait_expression","wait_check","wait_check_tolerance","wait_check_expression","wait_packet","wait_check_packet","disable_instrumentation","set_line_delay","get_line_delay","set_max_output","get_max_output"]),c=new RegExp(`(\\b${a.join("\\b|\\b")}\\b)`),r=function(){o.call(this);for(let s in this.$rules)this.$rules[s].unshift({regex:c,token:"support.function"})};i.inherits(r,o);let d=n.aceExports.require("ace/mode/matching_brace_outdent").MatchingBraceOutdent,l=n.aceExports.require("ace/mode/behaviour/cstyle").CstyleBehaviour;return[i,function(){this.HighlightRules=r,this.$outdent=new d,this.$behaviour=new l,this.foldingRules=new t,this.indentKeywords=this.foldingRules.indentKeywords}]},buildRubyMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/ruby_highlight_rules").RubyHighlightRules,n.aceExports.require("ace/mode/folding/ruby").FoldMode);let i=n.aceExports.require("ace/mode/ruby").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t},buildPythonMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/python_highlight_rules").PythonHighlightRules,n.aceExports.require("ace/mode/folding/pythonic").FoldMode);let i=n.aceExports.require("ace/mode/python").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t},buildJsonMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/json_highlight_rules").JsonHighlightRules,n.aceExports.require("ace/mode/folding/ruby").FoldMode);let i=n.aceExports.require("ace/mode/json").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t},buildMarkdownMode(){const[o,t]=this.buildLanguageMode(n.aceExports.require("ace/mode/markdown_highlight_rules").MarkdownHighlightRules,n.aceExports.require("ace/mode/folding/markdown").FoldMode);let i=n.aceExports.require("ace/mode/markdown").Mode;return o.inherits(t,i),(function(){this.$id="ace/mode/openc3"}).call(t.prototype),t}}},f={mixins:[p],props:{content:{type:String,required:!0},type:String,name:String,modelValue:Boolean,filename:{type:String,required:!1}},data(){return{editor:null,mode:null}},computed:{show:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}},title:function(){return`${this.type}: ${this.name}`}},mounted(){this.editor=ace.edit(this.$refs.editor),this.editor.setTheme("ace/theme/twilight");let o=null;switch(this.filename?this.filename.split(".").pop():"txt"){case"json":const i=this.buildJsonMode();o=new i,this.editor.setOptions({useWorker:!1});break;case"py":case"pyi":const a=this.buildPythonMode();o=new a;break;case"md":const c=this.buildMarkdownMode();o=new c;break;default:const r=this.buildRubyMode();o=new r;break}this.editor.session.setMode(o),this.editor.session.setUseWrapMode(!0),this.editor.$blockScrolling=1/0,this.editor.setHighlightActiveLine(!1),this.editor.setValue(this.content),this.editor.clearSelection(),this.editor.focus(),this.editor.setReadOnly(!0)},beforeUnmount(){this.editor&&this.editor.destroy()},methods:{close:function(){this.show=!this.show},download:function(){const o=new Blob([this.editor.getValue()],{type:"text/plain"});let t=`${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`;this.filename&&(t=this.filename);const i=document.createElement("a");i.href=URL.createObjectURL(o),i.setAttribute("download",t),i.click()}}},b=["textContent"],M={class:"mx-2"},x={ref:"editor",class:"editor"};function y(o,t,i,a,c,r){const d=e.resolveComponent("v-spacer"),l=e.resolveComponent("v-btn"),u=e.resolveComponent("v-toolbar"),s=e.resolveComponent("v-card-text"),_=e.resolveComponent("v-card-actions"),m=e.resolveComponent("v-card"),g=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(g,{modelValue:r.show,"onUpdate:modelValue":t[1]||(t[1]=h=>r.show=h),width:"85vw"},{default:e.withCtx(()=>[e.createVNode(m,null,{default:e.withCtx(()=>[e.createVNode(u,{height:"24"},{default:e.withCtx(()=>[e.createVNode(d),e.createElementVNode("span",{textContent:e.toDisplayString(r.title)},null,8,b),e.createVNode(d),e.createElementVNode("div",M,[e.createVNode(l,{icon:"mdi-download",variant:"text",density:"compact","data-test":"downloadIcon",onClick:r.download},null,8,["onClick"])])]),_:1}),e.createVNode(s,null,{default:e.withCtx(()=>[e.createElementVNode("pre",x,null,512)]),_:1}),e.createVNode(_,{class:"pr-6 pb-4 pt-0"},{default:e.withCtx(()=>[e.createVNode(d),e.createVNode(l,{variant:"flat",onClick:t[0]||(t[0]=h=>r.show=!r.show)},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode(" Ok ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const k=w._export_sfc(f,[["render",y],["__scopeId","data-v-69e71dd8"]]);exports.AceEditorModes=p;exports.OutputDialog=k;
2
+ //# sourceMappingURL=OutputDialog-CnDQxHTZ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutputDialog-DgM7aoa-.cjs","sources":["../src/components/ace/AceEditorModes.js","../src/components/OutputDialog.vue"],"sourcesContent":["/*\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-python'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/mode-markdown'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n methods: {\n buildLanguageMode(HighlightRules, FoldMode) {\n let oop = ace.require('ace/lib/oop')\n let apis = Object.getOwnPropertyNames(OpenC3Api.prototype)\n .filter((a) => a !== 'constructor')\n .filter((a) => a !== 'exec')\n // Add the Public apis in api_shared but not in OpenC3Api\n .concat([\n 'check',\n 'check_raw',\n 'check_formatted',\n 'check_with_units',\n 'check_exception',\n 'check_tolerance',\n 'check_expression',\n 'wait',\n 'wait_tolerance',\n 'wait_expression',\n 'wait_check',\n 'wait_check_tolerance',\n 'wait_check_expression',\n 'wait_packet',\n 'wait_check_packet',\n 'disable_instrumentation',\n 'set_line_delay',\n 'get_line_delay',\n 'set_max_output',\n 'get_max_output',\n ])\n let regex = new RegExp(`(\\\\b${apis.join('\\\\b|\\\\b')}\\\\b)`)\n let OpenC3HighlightRules = function () {\n HighlightRules.call(this)\n // add openc3 rules to the rules\n for (let rule in this.$rules) {\n this.$rules[rule].unshift({\n regex: regex,\n token: 'support.function',\n })\n }\n }\n oop.inherits(OpenC3HighlightRules, HighlightRules)\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let Mode = function () {\n this.HighlightRules = OpenC3HighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n return [oop, Mode]\n },\n buildRubyMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/ruby_highlight_rules').RubyHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildPythonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/python_highlight_rules').PythonHighlightRules,\n ace.require('ace/mode/folding/pythonic').FoldMode,\n )\n let PythonMode = ace.require('ace/mode/python').Mode\n oop.inherits(Mode, PythonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildJsonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/json_highlight_rules').JsonHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let JsonMode = ace.require('ace/mode/json').Mode\n oop.inherits(Mode, JsonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildMarkdownMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/markdown_highlight_rules').MarkdownHighlightRules,\n ace.require('ace/mode/folding/markdown').FoldMode,\n )\n let MarkdownMode = ace.require('ace/mode/markdown').Mode\n oop.inherits(Mode, MarkdownMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\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 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 <v-dialog v-model=\"show\" width=\"85vw\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <div class=\"mx-2\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"downloadIcon\"\n @click=\"download\"\n />\n </div>\n </v-toolbar>\n <v-card-text>\n <pre ref=\"editor\" class=\"editor\"></pre>\n </v-card-text>\n <v-card-actions class=\"pr-6 pb-4 pt-0\">\n <v-spacer />\n <v-btn variant=\"flat\" @click=\"show = !show\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { AceEditorModes } from './ace'\n\nexport default {\n mixins: [AceEditorModes],\n props: {\n content: {\n type: String,\n required: true,\n },\n type: String,\n name: String,\n modelValue: Boolean,\n filename: {\n type: String,\n required: false,\n },\n },\n data() {\n return {\n editor: null,\n mode: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n title: function () {\n return `${this.type}: ${this.name}`\n },\n },\n mounted() {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n let languageMode = null\n const fileExtension = this.filename ? this.filename.split('.').pop() : 'txt'\n switch (fileExtension) {\n case 'json':\n const JsonMode = this.buildJsonMode()\n languageMode = new JsonMode()\n this.editor.setOptions({\n useWorker: false,\n })\n break\n case 'py':\n case 'pyi':\n const PythonMode = this.buildPythonMode()\n languageMode = new PythonMode()\n break\n case 'md':\n const MarkdownMode = this.buildMarkdownMode()\n languageMode = new MarkdownMode()\n break\n default:\n // Most of the COSMOS text files are best display in Ruby\n // This includes Rakefiles, Gemfiles, etc.\n const RubyMode = this.buildRubyMode()\n languageMode = new RubyMode()\n break\n }\n this.editor.session.setMode(languageMode)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.content)\n this.editor.clearSelection()\n this.editor.focus()\n this.editor.setReadOnly(true)\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n },\n methods: {\n close: function () {\n this.show = !this.show\n },\n download: function () {\n const blob = new Blob([this.editor.getValue()], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n let filename = `${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`\n if (this.filename) {\n filename = this.filename\n }\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', filename)\n link.click()\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 75vh;\n position: relative;\n font-size: 16px;\n}\n\n.v-textarea :deep(textarea) {\n padding: 5px;\n}\n</style>\n"],"names":["AceEditorModes","HighlightRules","FoldMode","oop","ace.require","apis","OpenC3Api","a","regex","OpenC3HighlightRules","rule","MatchingBraceOutdent","CstyleBehaviour","Mode","RubyMode","PythonMode","JsonMode","MarkdownMode","_sfc_main","value","languageMode","blob","filename","link","_hoisted_2","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_toDisplayString","_component_v_btn","_component_v_card_text","_hoisted_3","_component_v_card_actions","_cache"],"mappings":"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"}
1
+ {"version":3,"file":"OutputDialog-CnDQxHTZ.cjs","sources":["../src/components/ace/AceEditorModes.js","../src/components/OutputDialog.vue"],"sourcesContent":["/*\n# Copyright 2024 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-python'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/mode-markdown'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n methods: {\n buildLanguageMode(HighlightRules, FoldMode) {\n let oop = ace.require('ace/lib/oop')\n let apis = Object.getOwnPropertyNames(OpenC3Api.prototype)\n .filter((a) => a !== 'constructor')\n .filter((a) => a !== 'exec')\n // Add the Public apis in api_shared but not in OpenC3Api\n .concat([\n 'check',\n 'check_raw',\n 'check_formatted',\n 'check_with_units',\n 'check_exception',\n 'check_tolerance',\n 'check_expression',\n 'wait',\n 'wait_tolerance',\n 'wait_expression',\n 'wait_check',\n 'wait_check_tolerance',\n 'wait_check_expression',\n 'wait_packet',\n 'wait_check_packet',\n 'disable_instrumentation',\n 'set_line_delay',\n 'get_line_delay',\n 'set_max_output',\n 'get_max_output',\n ])\n let regex = new RegExp(`(\\\\b${apis.join('\\\\b|\\\\b')}\\\\b)`)\n let OpenC3HighlightRules = function () {\n HighlightRules.call(this)\n // add openc3 rules to the rules\n for (let rule in this.$rules) {\n this.$rules[rule].unshift({\n regex: regex,\n token: 'support.function',\n })\n }\n }\n oop.inherits(OpenC3HighlightRules, HighlightRules)\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let Mode = function () {\n this.HighlightRules = OpenC3HighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n return [oop, Mode]\n },\n buildRubyMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/ruby_highlight_rules').RubyHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildPythonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/python_highlight_rules').PythonHighlightRules,\n ace.require('ace/mode/folding/pythonic').FoldMode,\n )\n let PythonMode = ace.require('ace/mode/python').Mode\n oop.inherits(Mode, PythonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildJsonMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/json_highlight_rules').JsonHighlightRules,\n ace.require('ace/mode/folding/ruby').FoldMode,\n )\n let JsonMode = ace.require('ace/mode/json').Mode\n oop.inherits(Mode, JsonMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n buildMarkdownMode() {\n const [oop, Mode] = this.buildLanguageMode(\n ace.require('ace/mode/markdown_highlight_rules').MarkdownHighlightRules,\n ace.require('ace/mode/folding/markdown').FoldMode,\n )\n let MarkdownMode = ace.require('ace/mode/markdown').Mode\n oop.inherits(Mode, MarkdownMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\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 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 <v-dialog v-model=\"show\" width=\"85vw\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <div class=\"mx-2\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"downloadIcon\"\n @click=\"download\"\n />\n </div>\n </v-toolbar>\n <v-card-text>\n <pre ref=\"editor\" class=\"editor\"></pre>\n </v-card-text>\n <v-card-actions class=\"pr-6 pb-4 pt-0\">\n <v-spacer />\n <v-btn variant=\"flat\" @click=\"show = !show\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { AceEditorModes } from './ace'\n\nexport default {\n mixins: [AceEditorModes],\n props: {\n content: {\n type: String,\n required: true,\n },\n type: String,\n name: String,\n modelValue: Boolean,\n filename: {\n type: String,\n required: false,\n },\n },\n data() {\n return {\n editor: null,\n mode: null,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n title: function () {\n return `${this.type}: ${this.name}`\n },\n },\n mounted() {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n let languageMode = null\n const fileExtension = this.filename ? this.filename.split('.').pop() : 'txt'\n switch (fileExtension) {\n case 'json':\n const JsonMode = this.buildJsonMode()\n languageMode = new JsonMode()\n this.editor.setOptions({\n useWorker: false,\n })\n break\n case 'py':\n case 'pyi':\n const PythonMode = this.buildPythonMode()\n languageMode = new PythonMode()\n break\n case 'md':\n const MarkdownMode = this.buildMarkdownMode()\n languageMode = new MarkdownMode()\n break\n default:\n // Most of the COSMOS text files are best display in Ruby\n // This includes Rakefiles, Gemfiles, etc.\n const RubyMode = this.buildRubyMode()\n languageMode = new RubyMode()\n break\n }\n this.editor.session.setMode(languageMode)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.content)\n this.editor.clearSelection()\n this.editor.focus()\n this.editor.setReadOnly(true)\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n },\n methods: {\n close: function () {\n this.show = !this.show\n },\n download: function () {\n const blob = new Blob([this.editor.getValue()], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n let filename = `${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`\n if (this.filename) {\n filename = this.filename\n }\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute('download', filename)\n link.click()\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 75vh;\n position: relative;\n font-size: 16px;\n}\n\n.v-textarea :deep(textarea) {\n padding: 5px;\n}\n</style>\n"],"names":["AceEditorModes","HighlightRules","FoldMode","oop","ace.require","apis","OpenC3Api","a","regex","OpenC3HighlightRules","rule","MatchingBraceOutdent","CstyleBehaviour","Mode","RubyMode","PythonMode","JsonMode","MarkdownMode","_sfc_main","value","languageMode","blob","filename","link","_hoisted_2","_createBlock","_component_v_dialog","$options","$event","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_toDisplayString","_component_v_btn","_component_v_card_text","_hoisted_3","_component_v_card_actions","_cache"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BflJrsRh.cjs"),e=require("vue"),y=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const N=require("./SimpleTextDialog-CU6G5CBY.cjs"),P=require("./tools/admin.cjs"),C=require("./format-B22VpiOS.cjs"),D={components:{DownloadDialog:P.DownloadDialog,SimpleTextDialog:N.SimpleTextDialog},data(){return{showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",files:[],loadingPackage:!1,progress:0,gems:[],python:[],processes:{}}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(n){this.processOutput=n.output,this.showProcessOutput=!0},update(){d.ci.get("/openc3-api/packages").then(n=>{this.gems=n.data.ruby,this.python=n.data.python})},updateProcesses:function(){d.ci.get("/openc3-api/process_status/package_?substr=true").then(n=>{this.processes=n.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},2500)})},formatDate(n){return C.format(C.toDate(parseInt(n)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},selectFile(){this.progress=0,this.$refs.fileInput.click()},fileChange(n){const t=n.target.files;if(t.length>0){this.loadingPackage=!0;let g=this;const h=[...t].map(l=>{const a=new FormData;return a.append("package",l,l.name),d.ci.post("/openc3-api/packages",{data:a,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(r){let s=Math.round(r.loaded*100/r.total);g.progress=s}})});Promise.all(h).then(l=>{this.$notify.normal({body:`Uploaded ${l.length} package${l.length>1?"s":""}`}),this.loadingPackage=!1,this.files=[],setTimeout(()=>{this.updateProcesses()},2500)}).catch(l=>{this.loadingPackage=!1})}},deletePackage(n){this.$dialog.confirm(`Are you sure you want to remove: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>d.ci.delete(`/openc3-api/packages/${n}`)).then(t=>{this.$notify.normal({body:`Removed package ${n}`}),setTimeout(()=>{this.updateProcesses()},2500)}).catch(t=>{this.$notify.serious({body:`Failed to remove package ${n}`})})}}},b=["textContent"],T=["textContent"];function B(n,t,g,h,l,a){const r=e.resolveComponent("v-btn"),s=e.resolveComponent("v-col"),x=e.resolveComponent("rux-progress"),c=e.resolveComponent("v-row"),u=e.resolveComponent("v-list-item-title"),v=e.resolveComponent("v-list-item-subtitle"),k=e.resolveComponent("v-tooltip"),p=e.resolveComponent("v-list-item"),m=e.resolveComponent("v-divider"),_=e.resolveComponent("v-list"),w=e.resolveComponent("download-dialog"),V=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(c,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(s,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(r,{onClick:a.selectFile},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Install Package",-1)])]),_:1},8,["onClick"]),e.createElementVNode("input",{ref:"fileInput",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...o)=>a.fileChange&&a.fileChange(...o))},null,544)]),_:1}),e.createVNode(s,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(x,{value:l.progress},null,8,["value"])]),_:1})]),_:1}),Object.keys(l.processes).length>0?(e.openBlock(),e.createBlock(_,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(c,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Process List",-1)])]),_:1}),e.createVNode(s,{align:"right"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])]),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.processes,o=>(e.openBlock(),e.createElementBlock("div",{key:o.name},[e.createVNode(p,null,e.createSlots({default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(o.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${o.process_type}: ${o.detail} - ${o.state}`)},null,10,b)]),_:2},1024),e.createVNode(v,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+a.formatDate(o.updated_at))},null,8,T)]),_:2},1024)]),_:2},[o.state!=="Running"?{name:"append",fn:e.withCtx(()=>[e.createVNode(k,{"open-delay":600,location:"top"},{activator:e.withCtx(({props:i})=>[e.createVNode(r,e.mergeProps({ref_for:!0},i,{icon:"mdi-eye",variant:"text","aria-label":"Show Output",onClick:f=>a.showOutput(o)}),null,16,["onClick"])]),default:e.withCtx(()=>[t[6]||(t[6]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024)]),key:"0"}:void 0]),1024),e.createVNode(m)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(_,{class:"list","data-test":"packageList"},{default:e.withCtx(()=>[e.createVNode(c,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Ruby Gems",-1)])]),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.gems,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(p,null,{append:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete",variant:"text","aria-label":"Delete Ruby Gem",onClick:f=>a.deletePackage(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(m)]))),128)),e.createVNode(c,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Python Packages",-1)])]),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.python,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(p,null,{append:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete",variant:"text","aria-label":"Delete Python Package",onClick:f=>a.deletePackage(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(m)]))),128))]),_:1}),e.createVNode(w,{modelValue:l.showDownloadDialog,"onUpdate:modelValue":t[1]||(t[1]=o=>l.showDownloadDialog=o)},null,8,["modelValue"]),e.createVNode(V,{modelValue:l.showProcessOutput,"onUpdate:modelValue":t[2]||(t[2]=o=>l.showProcessOutput=o),title:"Process Output",text:l.processOutput},null,8,["modelValue","text"])])}const S=y._export_sfc(D,[["render",B],["__scopeId","data-v-e97741ba"]]);exports.default=S;
2
- //# sourceMappingURL=PackagesTab-jqsRJEcJ.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B1Hzjyj0.cjs"),e=require("vue"),y=require("./CustomIcon-Bop2mEnu.cjs");require("single-spa");const N=require("./SimpleTextDialog-BCNn5FZh.cjs"),P=require("./tools/admin.cjs"),C=require("./format-B22VpiOS.cjs"),D={components:{DownloadDialog:P.DownloadDialog,SimpleTextDialog:N.SimpleTextDialog},data(){return{showDownloadDialog:!1,showProcessOutput:!1,processOutput:"",files:[],loadingPackage:!1,progress:0,gems:[],python:[],processes:{}}},mounted(){this.update(),this.updateProcesses()},methods:{showOutput:function(n){this.processOutput=n.output,this.showProcessOutput=!0},update(){d.hi.get("/openc3-api/packages").then(n=>{this.gems=n.data.ruby,this.python=n.data.python})},updateProcesses:function(){d.hi.get("/openc3-api/process_status/package_?substr=true").then(n=>{this.processes=n.data,Object.keys(this.processes).length>0&&setTimeout(()=>{this.updateProcesses(),this.update()},2500)})},formatDate(n){return C.format(C.toDate(parseInt(n)/1e6),"yyyy-MM-dd HH:mm:ss.SSS")},selectFile(){this.progress=0,this.$refs.fileInput.click()},fileChange(n){const t=n.target.files;if(t.length>0){this.loadingPackage=!0;let h=this;const g=[...t].map(l=>{const a=new FormData;return a.append("package",l,l.name),d.hi.post("/openc3-api/packages",{data:a,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(r){let s=Math.round(r.loaded*100/r.total);h.progress=s}})});Promise.all(g).then(l=>{this.$notify.normal({body:`Uploaded ${l.length} package${l.length>1?"s":""}`}),this.loadingPackage=!1,this.files=[],setTimeout(()=>{this.updateProcesses()},2500)}).catch(l=>{this.loadingPackage=!1})}},deletePackage(n){this.$dialog.confirm(`Are you sure you want to remove: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then(t=>d.hi.delete(`/openc3-api/packages/${n}`)).then(t=>{this.$notify.normal({body:`Removed package ${n}`}),setTimeout(()=>{this.updateProcesses()},2500)}).catch(t=>{this.$notify.serious({body:`Failed to remove package ${n}`})})}}},b=["textContent"],T=["textContent"];function B(n,t,h,g,l,a){const r=e.resolveComponent("v-btn"),s=e.resolveComponent("v-col"),x=e.resolveComponent("rux-progress"),c=e.resolveComponent("v-row"),u=e.resolveComponent("v-list-item-title"),v=e.resolveComponent("v-list-item-subtitle"),k=e.resolveComponent("v-tooltip"),p=e.resolveComponent("v-list-item"),m=e.resolveComponent("v-divider"),_=e.resolveComponent("v-list"),w=e.resolveComponent("download-dialog"),V=e.resolveComponent("simple-text-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(c,{"no-gutters":"",align:"center",class:"px-2"},{default:e.withCtx(()=>[e.createVNode(s,{class:"pa-2 mt-2"},{default:e.withCtx(()=>[e.createVNode(r,{onClick:a.selectFile},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Install Package",-1)])]),_:1},8,["onClick"]),e.createElementVNode("input",{ref:"fileInput",style:{display:"none"},type:"file",onChange:t[0]||(t[0]=(...o)=>a.fileChange&&a.fileChange(...o))},null,544)]),_:1}),e.createVNode(s,{class:"ml-4 mr-2",cols:"4"},{default:e.withCtx(()=>[e.createVNode(x,{value:l.progress},null,8,["value"])]),_:1})]),_:1}),Object.keys(l.processes).length>0?(e.openBlock(),e.createBlock(_,{key:0,class:"list","data-test":"process-list"},{default:e.withCtx(()=>[e.createVNode(c,{"no-gutters":"",class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Process List",-1)])]),_:1}),e.createVNode(s,{align:"right"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createElementVNode("div",null,"Showing last 10 min of activity",-1)])]),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.processes,o=>(e.openBlock(),e.createElementBlock("div",{key:o.name},[e.createVNode(p,null,e.createSlots({default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(o.state.toLowerCase()),textContent:e.toDisplayString(`Processing ${o.process_type}: ${o.detail} - ${o.state}`)},null,10,b)]),_:2},1024),e.createVNode(v,null,{default:e.withCtx(()=>[e.createElementVNode("span",{textContent:e.toDisplayString(" Updated At: "+a.formatDate(o.updated_at))},null,8,T)]),_:2},1024)]),_:2},[o.state!=="Running"?{name:"append",fn:e.withCtx(()=>[e.createVNode(k,{"open-delay":600,location:"top"},{activator:e.withCtx(({props:i})=>[e.createVNode(r,e.mergeProps({ref_for:!0},i,{icon:"mdi-eye",variant:"text","aria-label":"Show Output",onClick:f=>a.showOutput(o)}),null,16,["onClick"])]),default:e.withCtx(()=>[t[6]||(t[6]=e.createElementVNode("span",null,"Show Output",-1))]),_:2},1024)]),key:"0"}:void 0]),1024),e.createVNode(m)]))),128))]),_:1})):e.createCommentVNode("",!0),e.createVNode(_,{class:"list","data-test":"packageList"},{default:e.withCtx(()=>[e.createVNode(c,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Ruby Gems",-1)])]),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.gems,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(p,null,{append:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete",variant:"text","aria-label":"Delete Ruby Gem",onClick:f=>a.deletePackage(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(m)]))),128)),e.createVNode(c,{class:"px-4"},{default:e.withCtx(()=>[e.createVNode(s,{class:"text-h6"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Python Packages",-1)])]),_:1})]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.python,(o,i)=>(e.openBlock(),e.createElementBlock("div",{key:i},[e.createVNode(p,null,{append:e.withCtx(()=>[e.createVNode(r,{icon:"mdi-delete",variant:"text","aria-label":"Delete Python Package",onClick:f=>a.deletePackage(o)},null,8,["onClick"])]),default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o),1)]),_:2},1024)]),_:2},1024),e.createVNode(m)]))),128))]),_:1}),e.createVNode(w,{modelValue:l.showDownloadDialog,"onUpdate:modelValue":t[1]||(t[1]=o=>l.showDownloadDialog=o)},null,8,["modelValue"]),e.createVNode(V,{modelValue:l.showProcessOutput,"onUpdate:modelValue":t[2]||(t[2]=o=>l.showProcessOutput=o),title:"Process Output",text:l.processOutput},null,8,["modelValue","text"])])}const S=y._export_sfc(D,[["render",B],["__scopeId","data-v-e97741ba"]]);exports.default=S;
2
+ //# sourceMappingURL=PackagesTab-DPPXZvoV.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PackagesTab-jqsRJEcJ.cjs","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-if=\"process.state !== 'Running'\" #append>\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Ruby Gem\"\n @click=\"deletePackage(gem)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Python Package\"\n @click=\"deletePackage(pkg)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n // process_manager.rb script operates on a 5 second cycle\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 2500)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.$notify.normal({\n body: `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`,\n })\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage(pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.$notify.normal({\n body: `Removed package ${pkg}`,\n })\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n // Error will probably never happen because we spawn the package removal\n // and then wait for the response which happens in the background\n .catch((error) => {\n this.$notify.serious({\n body: `Failed to remove package ${pkg}`,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_btn","$options","_cache","_createElementVNode","args","_component_rux_progress","$data","_createBlock","_component_v_list","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_toDisplayString","_component_v_list_item_subtitle","_component_v_tooltip","_withCtx","props","_mergeProps","$event","_component_v_divider","_openBlock","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
1
+ {"version":3,"file":"PackagesTab-DPPXZvoV.cjs","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-if=\"process.state !== 'Running'\" #append>\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Ruby Gem\"\n @click=\"deletePackage(gem)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Python Package\"\n @click=\"deletePackage(pkg)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n // process_manager.rb script operates on a 5 second cycle\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 2500)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.$notify.normal({\n body: `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`,\n })\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage(pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.$notify.normal({\n body: `Removed package ${pkg}`,\n })\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n // Error will probably never happen because we spawn the package removal\n // and then wait for the response which happens in the background\n .catch((error) => {\n this.$notify.serious({\n body: `Failed to remove package ${pkg}`,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_btn","$options","_cache","_createElementVNode","args","_component_rux_progress","$data","_createBlock","_component_v_list","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_toDisplayString","_component_v_list_item_subtitle","_component_v_tooltip","_withCtx","props","_mergeProps","$event","_component_v_divider","_openBlock","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"+XAmIKA,EAAU,CACb,WAAY,CACV,eAAAC,EAAAA,eACA,iBAAAC,EAAAA,kBAEF,MAAO,CACL,MAAO,CACL,mBAAoB,GACpB,kBAAmB,GACnB,cAAe,GACf,MAAO,CAAA,EACP,eAAgB,GAChB,SAAU,EACV,KAAM,CAAA,EACN,OAAQ,CAAA,EACR,UAAW,CAAA,CACb,CACF,EACA,SAAU,CACR,KAAK,OAAM,EACX,KAAK,gBAAe,CACtB,EACA,QAAS,CACP,WAAY,SAAUC,EAAS,CAC7B,KAAK,cAAgBA,EAAQ,OAC7B,KAAK,kBAAoB,EAC3B,EACA,QAAS,CACPC,EAAAA,GAAI,IAAI,sBAAsB,EAAE,KAAMC,GAAa,CACjD,KAAK,KAAOA,EAAS,KAAK,KAC1B,KAAK,OAASA,EAAS,KAAK,MAC9B,CAAC,CACH,EACA,gBAAiB,UAAY,CAC3BD,KAAI,IAAI,iDAAiD,EAAE,KACxDC,GAAa,CACZ,KAAK,UAAYA,EAAS,KACtB,OAAO,KAAK,KAAK,SAAS,EAAE,OAAS,GAEvC,WAAW,IAAM,CACf,KAAK,gBAAe,EACpB,KAAK,OAAM,CACb,EAAG,IAAI,CAEX,CACF,CACF,EACA,WAAWC,EAAU,CACnB,OAAOC,EAAAA,OACLC,EAAAA,OAAO,SAASF,CAAQ,EAAI,GAAO,EACnC,yBACF,CACF,EACA,YAAa,CACX,KAAK,SAAW,EAChB,KAAK,MAAM,UAAU,MAAK,CAC5B,EACA,WAAWG,EAAO,CAChB,MAAMC,EAAQD,EAAM,OAAO,MAC3B,GAAIC,EAAM,OAAS,EAAG,CACpB,KAAK,eAAiB,GACtB,IAAIC,EAAO,KACX,MAAMC,EAAW,CAAC,GAAGF,CAAK,EAAE,IAAKG,GAAS,CACxC,MAAMC,EAAW,IAAI,SACrB,OAAAA,EAAS,OAAO,UAAWD,EAAMA,EAAK,IAAI,EACnCT,EAAAA,GAAI,KAAK,uBAAwB,CACtC,KAAMU,EACN,QAAS,CAAE,eAAgB,uBAC3B,iBAAkB,SAAUC,EAAe,CACzC,IAAIC,EAAmB,KAAK,MACzBD,EAAc,OAAS,IAAOA,EAAc,KAC/C,EACAJ,EAAK,SAAWK,CAClB,EACD,CACH,CAAC,EACD,QAAQ,IAAIJ,CAAQ,EACjB,KAAMK,GAAc,CACnB,KAAK,QAAQ,OAAO,CAClB,KAAM,YAAYA,EAAU,MAAM,WAChCA,EAAU,OAAS,EAAI,IAAM,EAC/B,GACD,EACD,KAAK,eAAiB,GACtB,KAAK,MAAQ,CAAA,EACb,WAAW,IAAM,CACf,KAAK,gBAAe,CACtB,EAAG,IAAI,CACT,CAAC,EACA,MAAOC,GAAU,CAChB,KAAK,eAAiB,EACxB,CAAC,CACL,CACF,EACA,cAAcC,EAAK,CACjB,KAAK,QACF,QAAQ,oCAAoCA,CAAG,GAAI,CAClD,OAAQ,SACR,WAAY,SACb,EACA,KAAMC,GACEhB,EAAAA,GAAI,OAAO,wBAAwBe,CAAG,EAAE,CAChD,EACA,KAAMd,GAAa,CAClB,KAAK,QAAQ,OAAO,CAClB,KAAM,mBAAmBc,CAAG,GAC7B,EACD,WAAW,IAAM,CACf,KAAK,gBAAe,CACtB,EAAG,IAAI,CACT,CAAC,EAGA,MAAOD,GAAU,CAChB,KAAK,QAAQ,QAAQ,CACnB,KAAM,4BAA4BC,CAAG,GACtC,CACH,CAAC,CACL,EAEJ,ygBApOEE,qBAmGM,MAAA,KAAA,CAlGJC,EAAAA,YAaQC,EAAA,CAbD,aAAA,GAAW,MAAM,SAAS,MAAM,2BACrC,IAQQ,CARRD,EAAAA,YAQQE,EAAA,CARD,MAAM,WAAW,EAAA,mBACtB,IAAkD,CAAlDF,EAAAA,YAAkDG,EAAA,CAA1C,QAAOC,EAAA,UAAU,EAAA,mBAAE,IAAe,CAAA,GAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,mBAAf,kBAAe,EAAA,0BAC1CC,EAAAA,mBAKE,QAAA,CAJA,IAAI,YACJ,MAAA,CAAA,QAAA,MAAA,EACA,KAAK,OACJ,6BAAQF,EAAA,YAAAA,EAAA,WAAA,GAAAG,CAAA,sBAGbP,EAAAA,YAEQE,EAAA,CAFD,MAAM,YAAY,KAAK,wBAC5B,IAA+C,CAA/CF,cAA+CQ,EAAA,CAAhC,MAAOC,EAAA,QAAQ,EAAA,KAAA,EAAA,CAAA,OAAA,CAAA,kBAI1B,OAAO,KAAKA,EAAA,SAAS,EAAE,OAAM,iBADrCC,EAAAA,YA2CSC,EAAA,OAzCP,MAAM,OACN,YAAU,mCAEV,IAMQ,CANRX,EAAAA,YAMQC,EAAA,CAND,aAAA,GAAW,MAAM,2BACtB,IAA2C,CAA3CD,EAAAA,YAA2CE,EAAA,CAApC,MAAM,SAAS,EAAA,mBAAC,IAAY,CAAA,GAAAG,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,mBAAZ,eAAY,EAAA,YACnCL,EAAAA,YAGQE,EAAA,CAHD,MAAM,OAAO,EAAA,mBAElB,IAA0C,CAAA,GAAAG,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CAA1CC,EAAAA,mBAA0C,WAArC,kCAA+B,EAAA,qCAGxCP,EAAAA,mBA8BMa,EAAAA,SAAA,KAAAC,EAAAA,WA9BiBJ,EAAA,UAAX5B,kBAAZkB,EAAAA,mBA8BM,MAAA,CA9B6B,IAAKlB,EAAQ,OAC9CmB,cA2Bcc,EAAA,KAAAC,cAAA,mBA1BZ,IAOoB,CAPpBf,EAAAA,YAOoBgB,EAAA,KAAA,mBANlB,IAKE,CALFV,EAAAA,mBAKE,OAAA,CAJC,MAAKW,EAAAA,eAAEpC,EAAQ,MAAM,YAAW,CAAA,cACjCqC,EAAAA,8BAAuCrC,EAAQ,YAAY,KAAKA,EAAQ,MAAM,MAAMA,EAAQ,KAAK,6BAKrGmB,EAAAA,YAEuBmB,EAAA,KAAA,mBADrB,IAAkE,CAAlEb,EAAAA,mBAAkE,OAAA,CAA5D,YAAAY,EAAAA,gBAAyD,gBAA/Bd,EAAA,WAAWvB,EAAQ,UAAU,CAAA,kCAG/CA,EAAQ,QAAK,gBAAiB,sBAC5C,IAWY,CAXZmB,EAAAA,YAWYoB,EAAA,CAXA,aAAY,IAAK,SAAS,QACzB,UAASC,EAAAA,QAClB,CAME,CAPoB,MAAAC,KAAK,CAC3BtB,EAAAA,YAMEG,EANFoB,EAAAA,WAME,CAAA,QAAA,EAAA,EALQD,EAAK,CACb,KAAK,UACL,QAAQ,OACR,aAAW,cACV,QAAKE,GAAEpB,EAAA,WAAWvB,CAAO,6CAG9B,IAAwB,CAAxBwB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,EAAAA,mBAAwB,YAAlB,cAAW,EAAA,0CAIvBN,EAAAA,YAAayB,CAAA,iDAGjBzB,EAAAA,YAiCSW,EAAA,CAjCD,MAAM,OAAO,YAAU,kCAC7B,IAAoE,CAApEX,EAAAA,YAAoEC,EAAA,CAA7D,MAAM,MAAM,EAAA,mBAAC,IAAwC,CAAxCD,EAAAA,YAAwCE,EAAA,CAAjC,MAAM,SAAS,EAAA,mBAAC,IAAS,CAAA,GAAAG,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,mBAAT,YAAS,EAAA,qBACpDqB,EAAAA,UAAA,EAAA,EAAA3B,EAAAA,mBAcMa,WAAA,KAAAC,EAAAA,WAdsBJ,EAAA,KAAI,CAAnBkB,EAAKC,mBAAlB7B,EAAAA,mBAcM,MAAA,CAd6B,IAAK6B,GAAK,CAC3C5B,EAAAA,YAWcc,EAAA,KAAA,CARD,iBACT,IAKE,CALFd,EAAAA,YAKEG,EAAA,CAJA,KAAK,aACL,QAAQ,OACR,aAAW,kBACV,QAAKqB,GAAEpB,EAAA,cAAcuB,CAAG,2CAP7B,IAAgD,CAAhD3B,EAAAA,YAAgDgB,EAAA,KAAA,mBAA7B,IAAS,qCAANW,CAAG,EAAA,CAAA,4BAW3B3B,EAAAA,YAAayB,CAAA,YAEfzB,EAAAA,YAA0EC,EAAA,CAAnE,MAAM,MAAM,EAAA,mBAAC,IAA8C,CAA9CD,EAAAA,YAA8CE,EAAA,CAAvC,MAAM,SAAS,EAAA,mBAAC,IAAe,CAAA,GAAAG,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,mBAAf,kBAAe,EAAA,qBAC1DqB,EAAAA,UAAA,EAAA,EAAA3B,EAAAA,mBAcMa,WAAA,KAAAC,EAAAA,WAdsBJ,EAAA,OAAM,CAArBZ,EAAK+B,mBAAlB7B,EAAAA,mBAcM,MAAA,CAd+B,IAAK6B,GAAK,CAC7C5B,EAAAA,YAWcc,EAAA,KAAA,CARD,iBACT,IAKE,CALFd,EAAAA,YAKEG,EAAA,CAJA,KAAK,aACL,QAAQ,OACR,aAAW,wBACV,QAAKqB,GAAEpB,EAAA,cAAcP,CAAG,2CAP7B,IAAgD,CAAhDG,EAAAA,YAAgDgB,EAAA,KAAA,mBAA7B,IAAS,qCAANnB,CAAG,EAAA,CAAA,4BAW3BG,EAAAA,YAAayB,CAAA,oBAGjBzB,EAAAA,YAAgD6B,EAAA,YAAtBpB,EAAA,wDAAAA,EAAA,mBAAkBe,2BAC5CxB,EAAAA,YAIE8B,EAAA,YAHSrB,EAAA,uDAAAA,EAAA,kBAAiBe,GAC1B,MAAM,iBACL,KAAMf,EAAA"}
@@ -1,8 +1,8 @@
1
- import { c as g } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js";
1
+ import { h as g } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-JEZNdnan.js";
2
2
  import { resolveComponent as n, createElementBlock as p, openBlock as u, createVNode as e, createBlock as I, createCommentVNode as U, withCtx as t, createElementVNode as f, createTextVNode as c, Fragment as x, renderList as P, createSlots as L, toDisplayString as h, normalizeClass as N, mergeProps as R } from "vue";
3
3
  import { _ as $ } from "./CustomIcon-h5X7369N.js";
4
4
  import "single-spa";
5
- import { S as B } from "./SimpleTextDialog-ChV5vRcV.js";
5
+ import { S as B } from "./SimpleTextDialog-D2mEDvGY.js";
6
6
  import { DownloadDialog as M } from "./tools/admin.js";
7
7
  import { f as j, t as A } from "./format-CVeawcIv.js";
8
8
  const G = {
@@ -310,4 +310,4 @@ const Z = /* @__PURE__ */ $(G, [["render", E], ["__scopeId", "data-v-e97741ba"]]
310
310
  export {
311
311
  Z as default
312
312
  };
313
- //# sourceMappingURL=PackagesTab-ChJDyU3Z.js.map
313
+ //# sourceMappingURL=PackagesTab-N4SD1Pxj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PackagesTab-ChJDyU3Z.js","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-if=\"process.state !== 'Running'\" #append>\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Ruby Gem\"\n @click=\"deletePackage(gem)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Python Package\"\n @click=\"deletePackage(pkg)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n // process_manager.rb script operates on a 5 second cycle\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 2500)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.$notify.normal({\n body: `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`,\n })\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage(pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.$notify.normal({\n body: `Removed package ${pkg}`,\n })\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n // Error will probably never happen because we spawn the package removal\n // and then wait for the response which happens in the background\n .catch((error) => {\n this.$notify.serious({\n body: `Failed to remove package ${pkg}`,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_btn","$options","_cache","_createElementVNode","args","_component_rux_progress","$data","_createBlock","_component_v_list","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_toDisplayString","_component_v_list_item_subtitle","_component_v_tooltip","_withCtx","props","_mergeProps","$event","_component_v_divider","_openBlock","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
1
+ {"version":3,"file":"PackagesTab-N4SD1Pxj.js","sources":["../src/tools/admin/tabs/PackagesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-row no-gutters align=\"center\" class=\"px-2\">\n <v-col class=\"pa-2 mt-2\">\n <v-btn @click=\"selectFile\">Install Package</v-btn>\n <input\n ref=\"fileInput\"\n style=\"display: none\"\n type=\"file\"\n @change=\"fileChange\"\n />\n </v-col>\n <v-col class=\"ml-4 mr-2\" cols=\"4\">\n <rux-progress :value=\"progress\"></rux-progress>\n </v-col>\n </v-row>\n <v-list\n v-if=\"Object.keys(processes).length > 0\"\n class=\"list\"\n data-test=\"process-list\"\n >\n <v-row no-gutters class=\"px-4\">\n <v-col class=\"text-h6\">Process List</v-col>\n <v-col align=\"right\">\n <!-- See openc3/lib/openc3/utilities/process_manager.rb CLEANUP_CYCLE_SECONDS -->\n <div>Showing last 10 min of activity</div>\n </v-col>\n </v-row>\n <div v-for=\"process in processes\" :key=\"process.name\">\n <v-list-item>\n <v-list-item-title>\n <span\n :class=\"process.state.toLowerCase()\"\n v-text=\"\n `Processing ${process.process_type}: ${process.detail} - ${process.state}`\n \"\n />\n </v-list-item-title>\n <v-list-item-subtitle>\n <span v-text=\"' Updated At: ' + formatDate(process.updated_at)\" />\n </v-list-item-subtitle>\n\n <template v-if=\"process.state !== 'Running'\" #append>\n <v-tooltip :open-delay=\"600\" location=\"top\">\n <template #activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n icon=\"mdi-eye\"\n variant=\"text\"\n aria-label=\"Show Output\"\n @click=\"showOutput(process)\"\n />\n </template>\n <span>Show Output</span>\n </v-tooltip>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <v-list class=\"list\" data-test=\"packageList\">\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Ruby Gems</v-col></v-row>\n <div v-for=\"(gem, index) in gems\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ gem }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Ruby Gem\"\n @click=\"deletePackage(gem)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n <v-row class=\"px-4\"><v-col class=\"text-h6\">Python Packages</v-col></v-row>\n <div v-for=\"(pkg, index) in python\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ pkg }}</v-list-item-title>\n\n <template #append>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Delete Python Package\"\n @click=\"deletePackage(pkg)\"\n />\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <download-dialog v-model=\"showDownloadDialog\" />\n <simple-text-dialog\n v-model=\"showProcessOutput\"\n title=\"Process Output\"\n :text=\"processOutput\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { SimpleTextDialog } from '@/components'\nimport { DownloadDialog } from '@/tools/admin'\n\nexport default {\n components: {\n DownloadDialog,\n SimpleTextDialog,\n },\n data() {\n return {\n showDownloadDialog: false,\n showProcessOutput: false,\n processOutput: '',\n files: [],\n loadingPackage: false,\n progress: 0,\n gems: [],\n python: [],\n processes: {},\n }\n },\n mounted() {\n this.update()\n this.updateProcesses()\n },\n methods: {\n showOutput: function (process) {\n this.processOutput = process.output\n this.showProcessOutput = true\n },\n update() {\n Api.get('/openc3-api/packages').then((response) => {\n this.gems = response.data.ruby\n this.python = response.data.python\n })\n },\n updateProcesses: function () {\n Api.get('/openc3-api/process_status/package_?substr=true').then(\n (response) => {\n this.processes = response.data\n if (Object.keys(this.processes).length > 0) {\n // process_manager.rb script operates on a 5 second cycle\n setTimeout(() => {\n this.updateProcesses()\n this.update()\n }, 2500)\n }\n },\n )\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n selectFile() {\n this.progress = 0\n this.$refs.fileInput.click()\n },\n fileChange(event) {\n const files = event.target.files\n if (files.length > 0) {\n this.loadingPackage = true\n let self = this\n const promises = [...files].map((file) => {\n const formData = new FormData()\n formData.append('package', file, file.name)\n return Api.post('/openc3-api/packages', {\n data: formData,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: function (progressEvent) {\n let percentCompleted = Math.round(\n (progressEvent.loaded * 100) / progressEvent.total,\n )\n self.progress = percentCompleted\n },\n })\n })\n Promise.all(promises)\n .then((responses) => {\n this.$notify.normal({\n body: `Uploaded ${responses.length} package${\n responses.length > 1 ? 's' : ''\n }`,\n })\n this.loadingPackage = false\n this.files = []\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n .catch((error) => {\n this.loadingPackage = false\n })\n }\n },\n deletePackage(pkg) {\n this.$dialog\n .confirm(`Are you sure you want to remove: ${pkg}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(`/openc3-api/packages/${pkg}`)\n })\n .then((response) => {\n this.$notify.normal({\n body: `Removed package ${pkg}`,\n })\n setTimeout(() => {\n this.updateProcesses()\n }, 2500)\n })\n // Error will probably never happen because we spawn the package removal\n // and then wait for the response which happens in the background\n .catch((error) => {\n this.$notify.serious({\n body: `Failed to remove package ${pkg}`,\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n font-size: 1rem;\n}\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","DownloadDialog","SimpleTextDialog","process","Api","response","nanoSecs","format","toDate","event","files","self","promises","file","formData","progressEvent","percentCompleted","responses","error","pkg","dialog","_createElementBlock","_createVNode","_component_v_row","_component_v_col","_component_v_btn","$options","_cache","_createElementVNode","args","_component_rux_progress","$data","_createBlock","_component_v_list","_Fragment","_renderList","_component_v_list_item","_createSlots","_component_v_list_item_title","_normalizeClass","_toDisplayString","_component_v_list_item_subtitle","_component_v_tooltip","_withCtx","props","_mergeProps","$event","_component_v_divider","_openBlock","gem","index","_component_download_dialog","_component_simple_text_dialog"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { d as A, c as T } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-quWsUlLr.js";
1
+ import { g as A, h as T } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-JEZNdnan.js";
2
2
  import { resolveComponent as l, createElementBlock as x, openBlock as p, Fragment as O, renderSlot as Z, createVNode as n, withCtx as s, createElementVNode as u, toDisplayString as v, normalizeProps as R, guardReactiveProps as B, createCommentVNode as V, createTextVNode as y, createBlock as _, mergeProps as U, normalizeClass as L, withModifiers as F, renderList as j } from "vue";
3
3
  import { _ as N } from "./CustomIcon-h5X7369N.js";
4
4
  import "single-spa";
5
- import { S as $ } from "./SimpleTextDialog-ChV5vRcV.js";
5
+ import { S as $ } from "./SimpleTextDialog-D2mEDvGY.js";
6
6
  import { ModifiedPluginDialog as tt, PluginDialog as et } from "./tools/admin.js";
7
- import { S as nt } from "./settings-UZsgbUSr.js";
7
+ import { S as nt } from "./settings-DCxXjkio.js";
8
8
  import { f as lt, t as it } from "./format-CVeawcIv.js";
9
9
  const ot = "store_url", M = {
10
10
  props: {
@@ -1337,4 +1337,4 @@ const Wt = /* @__PURE__ */ N(Lt, [["render", zt], ["__scopeId", "data-v-f1927f60
1337
1337
  export {
1338
1338
  Wt as default
1339
1339
  };
1340
- //# sourceMappingURL=PluginsTab-CayzDij0.js.map
1340
+ //# sourceMappingURL=PluginsTab-C7PH2Wym.js.map