@openc3/vue-common 6.1.0 → 6.2.0-fix0

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 (405) hide show
  1. package/dist/ArrayWidget-BIQi_bWC.cjs +3 -0
  2. package/dist/ArrayWidget-BIQi_bWC.cjs.map +1 -0
  3. package/dist/ArrayWidget-BxEO5hEG.js +106 -0
  4. package/dist/ArrayWidget-BxEO5hEG.js.map +1 -0
  5. package/dist/ArrayplotWidget-B_VPoV4v.js +199 -0
  6. package/dist/ArrayplotWidget-B_VPoV4v.js.map +1 -0
  7. package/dist/ArrayplotWidget-Donxhd8_.cjs +2 -0
  8. package/dist/ArrayplotWidget-Donxhd8_.cjs.map +1 -0
  9. package/dist/AstroStatus-CILMWL6F.cjs +2 -0
  10. package/dist/AstroStatus-CILMWL6F.cjs.map +1 -0
  11. package/dist/AstroStatus-CY9VkeTN.js +40 -0
  12. package/dist/AstroStatus-CY9VkeTN.js.map +1 -0
  13. package/dist/BarColumn-C9dkpg2O.js +108 -0
  14. package/dist/BarColumn-C9dkpg2O.js.map +1 -0
  15. package/dist/BarColumn-CyRSZHMh.cjs +2 -0
  16. package/dist/BarColumn-CyRSZHMh.cjs.map +1 -0
  17. package/dist/BlockWidget-CuefOin6.js +112 -0
  18. package/dist/BlockWidget-CuefOin6.js.map +1 -0
  19. package/dist/BlockWidget-DPLN1jgj.cjs +3 -0
  20. package/dist/BlockWidget-DPLN1jgj.cjs.map +1 -0
  21. package/dist/ButtonWidget-B6HM0Doo.js +166 -0
  22. package/dist/ButtonWidget-B6HM0Doo.js.map +1 -0
  23. package/dist/ButtonWidget-DccYzIY3.cjs +3 -0
  24. package/dist/ButtonWidget-DccYzIY3.cjs.map +1 -0
  25. package/dist/CanvasWidget-BzTU9rc9.cjs +2 -0
  26. package/dist/CanvasWidget-BzTU9rc9.cjs.map +1 -0
  27. package/dist/CanvasWidget-DZQGG-yQ.js +39 -0
  28. package/dist/CanvasWidget-DZQGG-yQ.js.map +1 -0
  29. package/dist/CanvasdotWidget-6wuCSnw_.js +19 -0
  30. package/dist/CanvasdotWidget-6wuCSnw_.js.map +1 -0
  31. package/dist/CanvasdotWidget-B7VTS1QI.cjs +2 -0
  32. package/dist/CanvasdotWidget-B7VTS1QI.cjs.map +1 -0
  33. package/dist/CanvasimageWidget-BwYpfmDE.cjs +2 -0
  34. package/dist/CanvasimageWidget-BwYpfmDE.cjs.map +1 -0
  35. package/dist/CanvasimageWidget-mhcPpAuN.js +58 -0
  36. package/dist/CanvasimageWidget-mhcPpAuN.js.map +1 -0
  37. package/dist/CanvasimagevalueWidget-Cx-dH8Gc.js +107 -0
  38. package/dist/CanvasimagevalueWidget-Cx-dH8Gc.js.map +1 -0
  39. package/dist/CanvasimagevalueWidget-E_NsZ82T.cjs +2 -0
  40. package/dist/CanvasimagevalueWidget-E_NsZ82T.cjs.map +1 -0
  41. package/dist/CanvaslabelWidget-BBDuXWfU.cjs +2 -0
  42. package/dist/CanvaslabelWidget-BBDuXWfU.cjs.map +1 -0
  43. package/dist/CanvaslabelWidget-CQZCeohU.js +23 -0
  44. package/dist/CanvaslabelWidget-CQZCeohU.js.map +1 -0
  45. package/dist/CanvaslabelvalueWidget-CwmYDCjr.js +42 -0
  46. package/dist/CanvaslabelvalueWidget-CwmYDCjr.js.map +1 -0
  47. package/dist/CanvaslabelvalueWidget-DAdu7ujn.cjs +2 -0
  48. package/dist/CanvaslabelvalueWidget-DAdu7ujn.cjs.map +1 -0
  49. package/dist/CanvaslineWidget-Bv5da1Vy.cjs +2 -0
  50. package/dist/CanvaslineWidget-Bv5da1Vy.cjs.map +1 -0
  51. package/dist/CanvaslineWidget-nTP3fJB4.js +28 -0
  52. package/dist/CanvaslineWidget-nTP3fJB4.js.map +1 -0
  53. package/dist/CanvaslinevalueWidget-BVfUB96K.cjs +2 -0
  54. package/dist/CanvaslinevalueWidget-BVfUB96K.cjs.map +1 -0
  55. package/dist/CanvaslinevalueWidget-C3sJnjLQ.js +44 -0
  56. package/dist/CanvaslinevalueWidget-C3sJnjLQ.js.map +1 -0
  57. package/dist/CheckbuttonWidget-5-8YDsQL.js +37 -0
  58. package/dist/CheckbuttonWidget-5-8YDsQL.js.map +1 -0
  59. package/dist/CheckbuttonWidget-BGqD-BGc.cjs +2 -0
  60. package/dist/CheckbuttonWidget-BGqD-BGc.cjs.map +1 -0
  61. package/dist/ComboboxWidget-DoHMlSAr.cjs +2 -0
  62. package/dist/ComboboxWidget-DoHMlSAr.cjs.map +1 -0
  63. package/dist/ComboboxWidget-DzBL8h9f.js +37 -0
  64. package/dist/ComboboxWidget-DzBL8h9f.js.map +1 -0
  65. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs +2 -0
  66. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs.map +1 -0
  67. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js +10 -0
  68. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js.map +1 -0
  69. package/dist/CriticalCmdDialog-DLEasFsx.js +270 -0
  70. package/dist/CriticalCmdDialog-DLEasFsx.js.map +1 -0
  71. package/dist/CriticalCmdDialog-DoLBrU2k.cjs +2 -0
  72. package/dist/CriticalCmdDialog-DoLBrU2k.cjs.map +1 -0
  73. package/dist/DateWidget-CW7Od7lB.js +40 -0
  74. package/dist/DateWidget-CW7Od7lB.js.map +1 -0
  75. package/dist/DateWidget-DKZz1J9J.cjs +2 -0
  76. package/dist/DateWidget-DKZz1J9J.cjs.map +1 -0
  77. package/dist/DetailsDialog-BvbziA7Y.js +767 -0
  78. package/dist/DetailsDialog-BvbziA7Y.js.map +1 -0
  79. package/dist/DetailsDialog-CiuQYvJK.cjs +2 -0
  80. package/dist/DetailsDialog-CiuQYvJK.cjs.map +1 -0
  81. package/dist/DynamicWidget-3wHr6Ng-.cjs +2 -0
  82. package/dist/DynamicWidget-3wHr6Ng-.cjs.map +1 -0
  83. package/dist/DynamicWidget-gFSYxzvT.js +35 -0
  84. package/dist/DynamicWidget-gFSYxzvT.js.map +1 -0
  85. package/dist/FormatvalueWidget-CGpnTqVH.js +44 -0
  86. package/dist/FormatvalueWidget-CGpnTqVH.js.map +1 -0
  87. package/dist/FormatvalueWidget-DFrbeKb9.cjs +2 -0
  88. package/dist/FormatvalueWidget-DFrbeKb9.cjs.map +1 -0
  89. package/dist/Graph-3rkhFP3G.js +1983 -0
  90. package/dist/Graph-3rkhFP3G.js.map +1 -0
  91. package/dist/Graph-C3vGMcos.cjs +2 -0
  92. package/dist/Graph-C3vGMcos.cjs.map +1 -0
  93. package/dist/GraphWidget-22NxFa9k.cjs +2 -0
  94. package/dist/GraphWidget-22NxFa9k.cjs.map +1 -0
  95. package/dist/GraphWidget-Dycey-mj.js +130 -0
  96. package/dist/GraphWidget-Dycey-mj.js.map +1 -0
  97. package/dist/HorizontalWidget-BBeB0eBI.cjs +2 -0
  98. package/dist/HorizontalWidget-BBeB0eBI.cjs.map +1 -0
  99. package/dist/HorizontalWidget-D31NRWy5.js +41 -0
  100. package/dist/HorizontalWidget-D31NRWy5.js.map +1 -0
  101. package/dist/HorizontalboxWidget-Br8dSVHD.js +38 -0
  102. package/dist/HorizontalboxWidget-Br8dSVHD.js.map +1 -0
  103. package/dist/HorizontalboxWidget-DsdzrCJx.cjs +2 -0
  104. package/dist/HorizontalboxWidget-DsdzrCJx.cjs.map +1 -0
  105. package/dist/HorizontallineWidget-BCKOQase.cjs +2 -0
  106. package/dist/HorizontallineWidget-BCKOQase.cjs.map +1 -0
  107. package/dist/HorizontallineWidget-CbxREBYI.js +11 -0
  108. package/dist/HorizontallineWidget-CbxREBYI.js.map +1 -0
  109. package/dist/IframeWidget-CZwsTgvX.cjs +2 -0
  110. package/dist/IframeWidget-CZwsTgvX.cjs.map +1 -0
  111. package/dist/IframeWidget-Ctj8OIcG.js +90 -0
  112. package/dist/IframeWidget-Ctj8OIcG.js.map +1 -0
  113. package/dist/ImageLoader-BrNrCBvi.js +36 -0
  114. package/dist/ImageLoader-BrNrCBvi.js.map +1 -0
  115. package/dist/ImageLoader-D_Gq-KxR.cjs +2 -0
  116. package/dist/ImageLoader-D_Gq-KxR.cjs.map +1 -0
  117. package/dist/ImageviewerWidget-DwRPFSLR.cjs +2 -0
  118. package/dist/ImageviewerWidget-DwRPFSLR.cjs.map +1 -0
  119. package/dist/ImageviewerWidget-XrsqxmLo.js +37 -0
  120. package/dist/ImageviewerWidget-XrsqxmLo.js.map +1 -0
  121. package/dist/InterfacesTab-CLaicsHA.cjs +2 -0
  122. package/dist/InterfacesTab-CLaicsHA.cjs.map +1 -0
  123. package/dist/InterfacesTab-DAeNlGlB.js +93 -0
  124. package/dist/InterfacesTab-DAeNlGlB.js.map +1 -0
  125. package/dist/LabelWidget-C-s8OVmA.cjs +2 -0
  126. package/dist/LabelWidget-C-s8OVmA.cjs.map +1 -0
  127. package/dist/LabelWidget-t7I87dp7.js +48 -0
  128. package/dist/LabelWidget-t7I87dp7.js.map +1 -0
  129. package/dist/LabelledWidget-C7TDf92M.js +42 -0
  130. package/dist/LabelledWidget-C7TDf92M.js.map +1 -0
  131. package/dist/LabelledWidget-DUpHxc9z.cjs +2 -0
  132. package/dist/LabelledWidget-DUpHxc9z.cjs.map +1 -0
  133. package/dist/LabelprogressbarWidget-D6cpayCR.cjs +2 -0
  134. package/dist/LabelprogressbarWidget-D6cpayCR.cjs.map +1 -0
  135. package/dist/LabelprogressbarWidget-wwLURt1u.js +43 -0
  136. package/dist/LabelprogressbarWidget-wwLURt1u.js.map +1 -0
  137. package/dist/LabelsparklineWidget-B3awLUyP.js +44 -0
  138. package/dist/LabelsparklineWidget-B3awLUyP.js.map +1 -0
  139. package/dist/LabelsparklineWidget-CJRnLETe.cjs +2 -0
  140. package/dist/LabelsparklineWidget-CJRnLETe.cjs.map +1 -0
  141. package/dist/LabelvalueWidget-Zx_yHCtl.js +58 -0
  142. package/dist/LabelvalueWidget-Zx_yHCtl.js.map +1 -0
  143. package/dist/LabelvalueWidget-owiMSCYl.cjs +2 -0
  144. package/dist/LabelvalueWidget-owiMSCYl.cjs.map +1 -0
  145. package/dist/LabelvaluedescWidget-BBSBh4vI.js +59 -0
  146. package/dist/LabelvaluedescWidget-BBSBh4vI.js.map +1 -0
  147. package/dist/LabelvaluedescWidget-MRmZBUc0.cjs +2 -0
  148. package/dist/LabelvaluedescWidget-MRmZBUc0.cjs.map +1 -0
  149. package/dist/LabelvaluelimitsbarWidget-BQ2XYPNE.cjs +2 -0
  150. package/dist/LabelvaluelimitsbarWidget-BQ2XYPNE.cjs.map +1 -0
  151. package/dist/LabelvaluelimitsbarWidget-CZueHYWG.js +57 -0
  152. package/dist/LabelvaluelimitsbarWidget-CZueHYWG.js.map +1 -0
  153. package/dist/LabelvaluelimitscolumnWidget-BTvzyQMq.js +47 -0
  154. package/dist/LabelvaluelimitscolumnWidget-BTvzyQMq.js.map +1 -0
  155. package/dist/LabelvaluelimitscolumnWidget-DNmVpU8J.cjs +2 -0
  156. package/dist/LabelvaluelimitscolumnWidget-DNmVpU8J.cjs.map +1 -0
  157. package/dist/LabelvaluerangebarWidget-BhYTBgDq.js +79 -0
  158. package/dist/LabelvaluerangebarWidget-BhYTBgDq.js.map +1 -0
  159. package/dist/LabelvaluerangebarWidget-DL0U8cbw.cjs +2 -0
  160. package/dist/LabelvaluerangebarWidget-DL0U8cbw.cjs.map +1 -0
  161. package/dist/Layout-Bh7VzCZd.js +14 -0
  162. package/dist/Layout-Bh7VzCZd.js.map +1 -0
  163. package/dist/Layout-DRL0EeSA.cjs +2 -0
  164. package/dist/Layout-DRL0EeSA.cjs.map +1 -0
  165. package/dist/LedWidget-B8rjFe1b.cjs +2 -0
  166. package/dist/LedWidget-B8rjFe1b.cjs.map +1 -0
  167. package/dist/LedWidget-CxJjJBBS.js +71 -0
  168. package/dist/LedWidget-CxJjJBBS.js.map +1 -0
  169. package/dist/LimitsbarWidget-CYIH8fdp.cjs +2 -0
  170. package/dist/LimitsbarWidget-CYIH8fdp.cjs.map +1 -0
  171. package/dist/LimitsbarWidget-Djui0IpK.js +69 -0
  172. package/dist/LimitsbarWidget-Djui0IpK.js.map +1 -0
  173. package/dist/LimitscolorWidget-CS0wpX9A.cjs +2 -0
  174. package/dist/LimitscolorWidget-CS0wpX9A.cjs.map +1 -0
  175. package/dist/LimitscolorWidget-DdmvKzmx.js +63 -0
  176. package/dist/LimitscolorWidget-DdmvKzmx.js.map +1 -0
  177. package/dist/LimitscolumnWidget-C_UW6xKq.cjs +2 -0
  178. package/dist/LimitscolumnWidget-C_UW6xKq.cjs.map +1 -0
  179. package/dist/LimitscolumnWidget-Cc19IEjq.js +66 -0
  180. package/dist/LimitscolumnWidget-Cc19IEjq.js.map +1 -0
  181. package/dist/LinegraphWidget-8td_PqgU.cjs +2 -0
  182. package/dist/LinegraphWidget-8td_PqgU.cjs.map +1 -0
  183. package/dist/LinegraphWidget-BtieJxeL.js +39 -0
  184. package/dist/LinegraphWidget-BtieJxeL.js.map +1 -0
  185. package/dist/MatrixbycolumnsWidget-CGOeCNW2.cjs +2 -0
  186. package/dist/MatrixbycolumnsWidget-CGOeCNW2.cjs.map +1 -0
  187. package/dist/MatrixbycolumnsWidget-DnExVRF8.js +56 -0
  188. package/dist/MatrixbycolumnsWidget-DnExVRF8.js.map +1 -0
  189. package/dist/MicroservicesTab-IbTmbPxO.js +268 -0
  190. package/dist/MicroservicesTab-IbTmbPxO.js.map +1 -0
  191. package/dist/MicroservicesTab-uMC8NebS.cjs +2 -0
  192. package/dist/MicroservicesTab-uMC8NebS.cjs.map +1 -0
  193. package/dist/OutputDialog-B4Q0QMJ1.cjs +2 -0
  194. package/dist/OutputDialog-B4Q0QMJ1.cjs.map +1 -0
  195. package/dist/OutputDialog-Ci5OT_fH.js +245 -0
  196. package/dist/OutputDialog-Ci5OT_fH.js.map +1 -0
  197. package/dist/PackagesTab-BX8YP3H1.js +332 -0
  198. package/dist/PackagesTab-BX8YP3H1.js.map +1 -0
  199. package/dist/PackagesTab-eYbk2vw7.cjs +2 -0
  200. package/dist/PackagesTab-eYbk2vw7.cjs.map +1 -0
  201. package/dist/PluginsTab-Ck3DvEGm.cjs +6 -0
  202. package/dist/PluginsTab-Ck3DvEGm.cjs.map +1 -0
  203. package/dist/PluginsTab-Ds3jk64b.js +599 -0
  204. package/dist/PluginsTab-Ds3jk64b.js.map +1 -0
  205. package/dist/ProgressbarWidget-CUIAYySg.cjs +2 -0
  206. package/dist/ProgressbarWidget-CUIAYySg.cjs.map +1 -0
  207. package/dist/ProgressbarWidget-DIfqhHRE.js +46 -0
  208. package/dist/ProgressbarWidget-DIfqhHRE.js.map +1 -0
  209. package/dist/RadiobuttonWidget-Cjk1JAP_.cjs +2 -0
  210. package/dist/RadiobuttonWidget-Cjk1JAP_.cjs.map +1 -0
  211. package/dist/RadiobuttonWidget-QzIkNP7m.js +34 -0
  212. package/dist/RadiobuttonWidget-QzIkNP7m.js.map +1 -0
  213. package/dist/RadiogroupWidget-B4lkYWaC.cjs +2 -0
  214. package/dist/RadiogroupWidget-B4lkYWaC.cjs.map +1 -0
  215. package/dist/RadiogroupWidget-Ci9sCX39.js +48 -0
  216. package/dist/RadiogroupWidget-Ci9sCX39.js.map +1 -0
  217. package/dist/RangebarWidget-CN0YuHqy.js +67 -0
  218. package/dist/RangebarWidget-CN0YuHqy.js.map +1 -0
  219. package/dist/RangebarWidget-nl0rzj93.cjs +2 -0
  220. package/dist/RangebarWidget-nl0rzj93.cjs.map +1 -0
  221. package/dist/RedisTab-CVimDkIE.js +135 -0
  222. package/dist/RedisTab-CVimDkIE.js.map +1 -0
  223. package/dist/RedisTab-DhS4GHDj.cjs +2 -0
  224. package/dist/RedisTab-DhS4GHDj.cjs.map +1 -0
  225. package/dist/RollupWidget-Bgudi_bt.cjs +2 -0
  226. package/dist/RollupWidget-Bgudi_bt.cjs.map +1 -0
  227. package/dist/RollupWidget-y4jBtJB2.js +83 -0
  228. package/dist/RollupWidget-y4jBtJB2.js.map +1 -0
  229. package/dist/RoutersTab-CzO10cVP.cjs +2 -0
  230. package/dist/RoutersTab-CzO10cVP.cjs.map +1 -0
  231. package/dist/RoutersTab-Dki_66av.js +95 -0
  232. package/dist/RoutersTab-Dki_66av.js.map +1 -0
  233. package/dist/ScriptChooser-BNm_zXxX.cjs +2 -0
  234. package/dist/ScriptChooser-BNm_zXxX.cjs.map +1 -0
  235. package/dist/ScriptChooser-l5i8c8KP.js +199 -0
  236. package/dist/ScriptChooser-l5i8c8KP.js.map +1 -0
  237. package/dist/ScrollwindowWidget-BIiV7xwi.cjs +2 -0
  238. package/dist/ScrollwindowWidget-BIiV7xwi.cjs.map +1 -0
  239. package/dist/ScrollwindowWidget-CBzYk4Y3.js +45 -0
  240. package/dist/ScrollwindowWidget-CBzYk4Y3.js.map +1 -0
  241. package/dist/SecretsTab-BSzFZ81X.cjs +2 -0
  242. package/dist/SecretsTab-BSzFZ81X.cjs.map +1 -0
  243. package/dist/SecretsTab-BjviaTxh.js +202 -0
  244. package/dist/SecretsTab-BjviaTxh.js.map +1 -0
  245. package/dist/SettingsTab-Bo_dYXgb.js +1382 -0
  246. package/dist/SettingsTab-Bo_dYXgb.js.map +1 -0
  247. package/dist/SettingsTab-DH8LAAoG.cjs +3 -0
  248. package/dist/SettingsTab-DH8LAAoG.cjs.map +1 -0
  249. package/dist/SignalWidget-CvZkvejy.cjs +2 -0
  250. package/dist/SignalWidget-CvZkvejy.cjs.map +1 -0
  251. package/dist/SignalWidget-DQ5Uc2uV.js +66 -0
  252. package/dist/SignalWidget-DQ5Uc2uV.js.map +1 -0
  253. package/dist/SimpleTextDialog-CheuP_ls.js +108 -0
  254. package/dist/SimpleTextDialog-CheuP_ls.js.map +1 -0
  255. package/dist/SimpleTextDialog-DmeNMMCR.cjs +2 -0
  256. package/dist/SimpleTextDialog-DmeNMMCR.cjs.map +1 -0
  257. package/dist/SpacerWidget-6rsc_dSM.js +19 -0
  258. package/dist/SpacerWidget-6rsc_dSM.js.map +1 -0
  259. package/dist/SpacerWidget-BBJR6HBQ.cjs +2 -0
  260. package/dist/SpacerWidget-BBJR6HBQ.cjs.map +1 -0
  261. package/dist/SparklineWidget-BxBLnjAO.cjs +2 -0
  262. package/dist/SparklineWidget-BxBLnjAO.cjs.map +1 -0
  263. package/dist/SparklineWidget-CZtvu2ss.js +48 -0
  264. package/dist/SparklineWidget-CZtvu2ss.js.map +1 -0
  265. package/dist/TabbookWidget-DNALU0jl.js +66 -0
  266. package/dist/TabbookWidget-DNALU0jl.js.map +1 -0
  267. package/dist/TabbookWidget-DyFQnA10.cjs +2 -0
  268. package/dist/TabbookWidget-DyFQnA10.cjs.map +1 -0
  269. package/dist/TargetsTab-Cd8U1aN_.js +129 -0
  270. package/dist/TargetsTab-Cd8U1aN_.js.map +1 -0
  271. package/dist/TargetsTab-DMiOliqg.cjs +2 -0
  272. package/dist/TargetsTab-DMiOliqg.cjs.map +1 -0
  273. package/dist/TextBoxDialog-DvUf3Cak.cjs +2 -0
  274. package/dist/TextBoxDialog-DvUf3Cak.cjs.map +1 -0
  275. package/dist/TextBoxDialog-fHkDTtzI.js +110 -0
  276. package/dist/TextBoxDialog-fHkDTtzI.js.map +1 -0
  277. package/dist/TextboxWidget-5hqPj74D.js +93 -0
  278. package/dist/TextboxWidget-5hqPj74D.js.map +1 -0
  279. package/dist/TextboxWidget-D6lW_dsU.cjs +2 -0
  280. package/dist/TextboxWidget-D6lW_dsU.cjs.map +1 -0
  281. package/dist/TextfieldWidget-Df0ANSiU.js +37 -0
  282. package/dist/TextfieldWidget-Df0ANSiU.js.map +1 -0
  283. package/dist/TextfieldWidget-iHN7-fyF.cjs +2 -0
  284. package/dist/TextfieldWidget-iHN7-fyF.cjs.map +1 -0
  285. package/dist/TimeWidget-C3NZqTEG.cjs +2 -0
  286. package/dist/TimeWidget-C3NZqTEG.cjs.map +1 -0
  287. package/dist/TimeWidget-C6XQMUG2.js +40 -0
  288. package/dist/TimeWidget-C6XQMUG2.js.map +1 -0
  289. package/dist/TitleWidget-B9SPUlbW.js +26 -0
  290. package/dist/TitleWidget-B9SPUlbW.js.map +1 -0
  291. package/dist/TitleWidget-CWZs33c4.cjs +2 -0
  292. package/dist/TitleWidget-CWZs33c4.cjs.map +1 -0
  293. package/dist/ToolsTab-CUpUmkZL.cjs +7 -0
  294. package/dist/ToolsTab-CUpUmkZL.cjs.map +1 -0
  295. package/dist/ToolsTab-Cgpb2nAW.js +1521 -0
  296. package/dist/ToolsTab-Cgpb2nAW.js.map +1 -0
  297. package/dist/TopBar-DuXL27iD.cjs +2 -0
  298. package/dist/TopBar-DuXL27iD.cjs.map +1 -0
  299. package/dist/TopBar-F1jHuFan.js +248 -0
  300. package/dist/TopBar-F1jHuFan.js.map +1 -0
  301. package/dist/UpgradeToEnterpriseDialog-DVcAH30Y.js +95 -0
  302. package/dist/UpgradeToEnterpriseDialog-DVcAH30Y.js.map +1 -0
  303. package/dist/UpgradeToEnterpriseDialog-DfIKahNK.cjs +2 -0
  304. package/dist/UpgradeToEnterpriseDialog-DfIKahNK.cjs.map +1 -0
  305. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs +1417 -0
  306. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs.map +1 -0
  307. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js +26941 -0
  308. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js.map +1 -0
  309. package/dist/VWidget-C2x_zSC2.cjs +2 -0
  310. package/dist/VWidget-C2x_zSC2.cjs.map +1 -0
  311. package/dist/VWidget-C4spAawK.js +323 -0
  312. package/dist/VWidget-C4spAawK.js.map +1 -0
  313. package/dist/ValueWidget-D4RrYVEK.js +116 -0
  314. package/dist/ValueWidget-D4RrYVEK.js.map +1 -0
  315. package/dist/ValueWidget-Do3Yn47P.cjs +2 -0
  316. package/dist/ValueWidget-Do3Yn47P.cjs.map +1 -0
  317. package/dist/ValuelimitsbarWidget-Bc9_Vj_f.js +41 -0
  318. package/dist/ValuelimitsbarWidget-Bc9_Vj_f.js.map +1 -0
  319. package/dist/ValuelimitsbarWidget-DJuh7FOs.cjs +2 -0
  320. package/dist/ValuelimitsbarWidget-DJuh7FOs.cjs.map +1 -0
  321. package/dist/ValuelimitscolumnWidget-BFpG-H7v.cjs +2 -0
  322. package/dist/ValuelimitscolumnWidget-BFpG-H7v.cjs.map +1 -0
  323. package/dist/ValuelimitscolumnWidget-DHKIL7sf.js +40 -0
  324. package/dist/ValuelimitscolumnWidget-DHKIL7sf.js.map +1 -0
  325. package/dist/ValuerangebarWidget-BlZSaiXo.cjs +2 -0
  326. package/dist/ValuerangebarWidget-BlZSaiXo.cjs.map +1 -0
  327. package/dist/ValuerangebarWidget-CecQRIok.js +65 -0
  328. package/dist/ValuerangebarWidget-CecQRIok.js.map +1 -0
  329. package/dist/VerticalWidget--8UErB4q.cjs +2 -0
  330. package/dist/VerticalWidget--8UErB4q.cjs.map +1 -0
  331. package/dist/VerticalWidget-D8jUFxjS.js +40 -0
  332. package/dist/VerticalWidget-D8jUFxjS.js.map +1 -0
  333. package/dist/VerticalboxWidget-B4eGUSYH.js +37 -0
  334. package/dist/VerticalboxWidget-B4eGUSYH.js.map +1 -0
  335. package/dist/VerticalboxWidget-cxHq1WKQ.cjs +2 -0
  336. package/dist/VerticalboxWidget-cxHq1WKQ.cjs.map +1 -0
  337. package/dist/Widget-DNf52jRQ.cjs +2 -0
  338. package/dist/Widget-DNf52jRQ.cjs.map +1 -0
  339. package/dist/Widget-fRCERxGf.js +197 -0
  340. package/dist/Widget-fRCERxGf.js.map +1 -0
  341. package/dist/addMonths-BtG7uZLJ.js +19 -0
  342. package/dist/addMonths-BtG7uZLJ.js.map +1 -0
  343. package/dist/addMonths-n1tnl3ab.cjs +2 -0
  344. package/dist/addMonths-n1tnl3ab.cjs.map +1 -0
  345. package/dist/components.cjs +7 -0
  346. package/dist/components.cjs.map +1 -0
  347. package/dist/components.js +2971 -0
  348. package/dist/components.js.map +1 -0
  349. package/dist/fileIcon-BduOQcTc.cjs +2 -0
  350. package/dist/fileIcon-BduOQcTc.cjs.map +1 -0
  351. package/dist/fileIcon-DqRHb1_Z.js +22 -0
  352. package/dist/fileIcon-DqRHb1_Z.js.map +1 -0
  353. package/dist/format-B22VpiOS.cjs +2 -0
  354. package/dist/format-B22VpiOS.cjs.map +1 -0
  355. package/dist/format-CVeawcIv.js +1295 -0
  356. package/dist/format-CVeawcIv.js.map +1 -0
  357. package/dist/getDefaultOptions-Batab9o8.cjs +2 -0
  358. package/dist/getDefaultOptions-Batab9o8.cjs.map +1 -0
  359. package/dist/getDefaultOptions-BhSDk-Jo.js +8 -0
  360. package/dist/getDefaultOptions-BhSDk-Jo.js.map +1 -0
  361. package/dist/icons/status-dark.png +0 -0
  362. package/dist/icons/status-dark.xcf +0 -0
  363. package/dist/icons/status-light.png +0 -0
  364. package/dist/icons.cjs +2 -0
  365. package/dist/icons.cjs.map +1 -0
  366. package/dist/icons.js +157 -0
  367. package/dist/icons.js.map +1 -0
  368. package/dist/index-Bz_jHTkl.cjs +7 -0
  369. package/dist/index-Bz_jHTkl.cjs.map +1 -0
  370. package/dist/index-CFQnWdPA.js +1705 -0
  371. package/dist/index-CFQnWdPA.js.map +1 -0
  372. package/dist/parse-DnkEsW-3.js +1603 -0
  373. package/dist/parse-DnkEsW-3.js.map +1 -0
  374. package/dist/parse-DwfgQboe.cjs +2 -0
  375. package/dist/parse-DwfgQboe.cjs.map +1 -0
  376. package/dist/plugins.cjs +9 -0
  377. package/dist/plugins.cjs.map +1 -0
  378. package/dist/plugins.js +772 -0
  379. package/dist/plugins.js.map +1 -0
  380. package/dist/timeFilters-8SaYvcH0.cjs +2 -0
  381. package/dist/timeFilters-8SaYvcH0.cjs.map +1 -0
  382. package/dist/timeFilters-CRYpYDdf.js +622 -0
  383. package/dist/timeFilters-CRYpYDdf.js.map +1 -0
  384. package/dist/tools/admin.cjs +13 -0
  385. package/dist/tools/admin.cjs.map +1 -0
  386. package/dist/tools/admin.js +1944 -0
  387. package/dist/tools/admin.js.map +1 -0
  388. package/dist/tools/base.cjs +2 -0
  389. package/dist/tools/base.cjs.map +1 -0
  390. package/dist/tools/base.js +1683 -0
  391. package/dist/tools/base.js.map +1 -0
  392. package/dist/tools/calendar.cjs +2 -0
  393. package/dist/tools/calendar.cjs.map +1 -0
  394. package/dist/tools/calendar.js +1586 -0
  395. package/dist/tools/calendar.js.map +1 -0
  396. package/dist/util.cjs +2 -0
  397. package/dist/util.cjs.map +1 -0
  398. package/dist/util.js +9 -0
  399. package/dist/util.js.map +1 -0
  400. package/dist/vue-common.css +1 -0
  401. package/dist/widgets.cjs +2 -0
  402. package/dist/widgets.cjs.map +1 -0
  403. package/dist/widgets.js +132 -0
  404. package/dist/widgets.js.map +1 -0
  405. package/package.json +7 -7
@@ -0,0 +1,2971 @@
1
+ import { A as lt, O as nt } from "./OutputDialog-Ci5OT_fH.js";
2
+ import { a as E, m as L, c as M, f as Y, W as j, p as q, l as J } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js";
3
+ import { D as ot, e as rt } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js";
4
+ import { resolveComponent as r, createBlock as x, openBlock as w, withKeys as z, withCtx as n, createVNode as i, createElementVNode as d, withModifiers as U, withDirectives as A, toDisplayString as N, vShow as R, createTextVNode as _, normalizeProps as S, guardReactiveProps as D, createElementBlock as F, Fragment as H, renderList as Q, createCommentVNode as V, normalizeStyle as Z, normalizeClass as $ } from "vue";
5
+ import { _ as O } from "./CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js";
6
+ import { C as ct } from "./CriticalCmdDialog-DLEasFsx.js";
7
+ import { D as mt } from "./DetailsDialog-BvbziA7Y.js";
8
+ import { E as ft, S as pt } from "./ScriptChooser-l5i8c8KP.js";
9
+ import { f as ee } from "./fileIcon-DqRHb1_Z.js";
10
+ import { G as vt, a as _t, b as yt } from "./Graph-3rkhFP3G.js";
11
+ import { UnknownToAstroStatus as W, AstroStatusColors as K } from "./icons.js";
12
+ import { T as te } from "./timeFilters-CRYpYDdf.js";
13
+ import { f as ie } from "./format-CVeawcIv.js";
14
+ import { getMountedApps as se } from "single-spa";
15
+ import { S as wt } from "./SimpleTextDialog-CheuP_ls.js";
16
+ import { T as xt } from "./TextBoxDialog-fHkDTtzI.js";
17
+ import { T as Ct } from "./TopBar-F1jHuFan.js";
18
+ import { U as It } from "./UpgradeToEnterpriseDialog-DVcAH30Y.js";
19
+ class le {
20
+ constructor() {
21
+ E.get("/openc3-api/autocomplete/data/screen").then((e) => {
22
+ this.autocompleteData = e.data;
23
+ }), this.api = new L();
24
+ }
25
+ async getCompletions(e, l, o, s, a) {
26
+ var u = l.getLine(o.row), m = u.slice(0, o.column), h = m.trimStart().split(/ (?![^<]*>)/), p = this.autocompleteData;
27
+ h.length > 1 && (p = p.find((c) => c.caption === h[0]));
28
+ var g = {}, f = !0;
29
+ if (p && p.params) {
30
+ p.params.length == h.length - 1 && (f = !1);
31
+ var k = p.params[h.length - 2];
32
+ if (k["Target name"]) {
33
+ var C = await this.api.get_target_names();
34
+ p = C.reduce((c, b) => (c[b] = 1, c), {});
35
+ } else if (k["Packet name"]) {
36
+ var T = h[h.length - 2], y = await this.api.get_all_tlm(T);
37
+ p = y.reduce(
38
+ (c, b) => (c[b.packet_name] = b.description, c),
39
+ {}
40
+ );
41
+ } else if (k["Item name"]) {
42
+ var T = h[h.length - 3], v = h[h.length - 2], v = await this.api.get_tlm(T, v);
43
+ p = v.items.reduce(
44
+ (b, P) => (b[P.name] = P.description, b),
45
+ {}
46
+ );
47
+ } else
48
+ p = k;
49
+ g = Object.keys(p || {}).map((c) => {
50
+ var b = {
51
+ value: c + (f ? " " : ""),
52
+ // We want the autoComplete to continue right up
53
+ // to the last parameter
54
+ command: f && "startAutocomplete"
55
+ };
56
+ return typeof p[c] == "string" && (b.meta = p[c]), b;
57
+ });
58
+ } else
59
+ g = p;
60
+ a(null, g);
61
+ }
62
+ }
63
+ const Xe = {
64
+ data: {
65
+ configKey: "",
66
+ // Applications can set to avoid persisting default config
67
+ // Useful when loading and setting existing config
68
+ dontSaveDefaultConfig: !1
69
+ },
70
+ methods: {
71
+ loadDefaultConfig: function() {
72
+ return localStorage[`${this.configKey}__default`] ? JSON.parse(localStorage[`${this.configKey}__default`]) : {};
73
+ },
74
+ saveDefaultConfig: function(t) {
75
+ this.dontSaveDefaultConfig !== !0 && (localStorage[`${this.configKey}__default`] = JSON.stringify(t));
76
+ },
77
+ openConfigBase: function(t, e = !1, l = null) {
78
+ new L().load_config(this.configKey, t).then((o) => {
79
+ o ? (this.$notify.normal({
80
+ title: "Loading configuration",
81
+ body: t
82
+ }), l && l(JSON.parse(o)), e || this.$route.fullPath.includes(t) || this.$router.push({
83
+ query: {
84
+ config: t
85
+ }
86
+ })) : this.$notify.caution({
87
+ title: "Unknown configuration",
88
+ body: t
89
+ });
90
+ }).catch((o) => {
91
+ o && this.$notify.serious({
92
+ title: `Error opening configuration: ${t}`,
93
+ body: o
94
+ });
95
+ });
96
+ },
97
+ saveConfigBase: function(t, e) {
98
+ new L().save_config(this.configKey, t, JSON.stringify(e)).then(() => {
99
+ this.$notify.normal({
100
+ title: "Saved configuration",
101
+ body: t
102
+ });
103
+ }).catch((l) => {
104
+ l && this.$notify.serious({
105
+ title: `Error saving configuration: ${t}`,
106
+ body: l
107
+ });
108
+ });
109
+ },
110
+ resetConfigBase: function() {
111
+ localStorage.removeItem(`${this.configKey}__default`);
112
+ const t = { ...this.$route.query };
113
+ delete t.config, this.$router.replace({ query: t });
114
+ }
115
+ }
116
+ }, ne = {
117
+ props: {
118
+ configKey: String,
119
+ modelValue: Boolean
120
+ // modelValue is the default prop when using v-model
121
+ },
122
+ data() {
123
+ return {
124
+ configs: [],
125
+ headers: [
126
+ {
127
+ title: "Configuration",
128
+ value: "config"
129
+ },
130
+ {
131
+ title: "Actions",
132
+ value: "actions",
133
+ align: "end",
134
+ sortable: !1
135
+ }
136
+ ],
137
+ search: null,
138
+ selectedRows: []
139
+ };
140
+ },
141
+ computed: {
142
+ selectedItem: function() {
143
+ return this.selectedRows.length ? this.configs.find(
144
+ (t) => t.configId === this.selectedRows[0]
145
+ ) : null;
146
+ },
147
+ error: function() {
148
+ return this.selectedItem === "" || this.selectedItem === null ? "Must select a config" : null;
149
+ },
150
+ show: {
151
+ get() {
152
+ return this.modelValue;
153
+ },
154
+ set(t) {
155
+ this.$emit("update:modelValue", t);
156
+ }
157
+ }
158
+ },
159
+ mounted() {
160
+ let t = -1;
161
+ new L().list_configs(this.configKey).then((e) => {
162
+ this.configs = e.map((l) => (t += 1, { configId: t, config: l }));
163
+ }).catch((e) => {
164
+ this.$emit("warning", `Failed to connect to OpenC3. ${e}`);
165
+ });
166
+ },
167
+ methods: {
168
+ selectRow: function(t) {
169
+ this.selectedRows = [t.item.configId];
170
+ },
171
+ success: function() {
172
+ this.selectedItem && (this.$emit("success", this.selectedItem.config), this.show = !1, this.search = null, this.selectedRows = []);
173
+ },
174
+ cancel: function() {
175
+ this.show = !1, this.search = null, this.selectedRows = [];
176
+ },
177
+ deleteConfig: function(t) {
178
+ this.$dialog.confirm(`Are you sure you want to delete: ${t.config}`, {
179
+ okText: "Delete",
180
+ cancelText: "Cancel"
181
+ }).then((e) => {
182
+ var l;
183
+ ((l = this.selectedItem) == null ? void 0 : l.config) === t.config && (this.selectedRows = []), this.configs.splice(this.configs.indexOf(t), 1), new L().delete_config(this.configKey, t.config);
184
+ }).catch((e) => {
185
+ e !== !0 && this.$emit(
186
+ "warning",
187
+ `Failed to delete config ${t.config} Error: ${e}`
188
+ );
189
+ });
190
+ }
191
+ }
192
+ }, ae = { class: "mt-4 pa-3" }, oe = ["textContent"];
193
+ function re(t, e, l, o, s, a) {
194
+ const u = r("v-spacer"), m = r("v-toolbar"), h = r("v-text-field"), p = r("v-row"), g = r("v-btn"), f = r("v-data-table"), k = r("v-card-text"), C = r("v-card-actions"), T = r("v-card"), y = r("v-dialog");
195
+ return w(), x(y, {
196
+ modelValue: a.show,
197
+ "onUpdate:modelValue": e[4] || (e[4] = (v) => a.show = v),
198
+ onKeydown: z(a.cancel, ["esc"]),
199
+ width: "600"
200
+ }, {
201
+ default: n(() => [
202
+ i(T, null, {
203
+ default: n(() => [
204
+ d("form", {
205
+ onSubmit: e[3] || (e[3] = U((...v) => a.success && a.success(...v), ["prevent"]))
206
+ }, [
207
+ i(m, { height: "24" }, {
208
+ default: n(() => [
209
+ i(u),
210
+ e[5] || (e[5] = d("span", null, "Open Configuration", -1)),
211
+ i(u)
212
+ ]),
213
+ _: 1
214
+ }),
215
+ i(k, null, {
216
+ default: n(() => [
217
+ d("div", ae, [
218
+ i(p, { dense: "" }, {
219
+ default: n(() => [
220
+ i(h, {
221
+ label: "search",
222
+ modelValue: s.search,
223
+ "onUpdate:modelValue": e[0] || (e[0] = (v) => s.search = v),
224
+ type: "text",
225
+ "prepend-inner-icon": "mdi-magnify",
226
+ clearable: "",
227
+ variant: "outlined",
228
+ density: "compact",
229
+ "clear-icon": "mdi-close-circle-outline",
230
+ autofocus: "",
231
+ "single-line": "",
232
+ "hide-details": "",
233
+ "data-test": "search"
234
+ }, null, 8, ["modelValue"])
235
+ ]),
236
+ _: 1
237
+ }),
238
+ i(f, {
239
+ modelValue: s.selectedRows,
240
+ "onUpdate:modelValue": e[1] || (e[1] = (v) => s.selectedRows = v),
241
+ "show-select": "",
242
+ "select-strategy": "single",
243
+ "item-value": "configId",
244
+ search: s.search,
245
+ headers: s.headers,
246
+ items: s.configs,
247
+ "items-per-page": 5,
248
+ "items-per-page-options": [5],
249
+ "onClick:row": e[2] || (e[2] = (v, c) => a.selectRow(c))
250
+ }, {
251
+ "item.actions": n(({ item: v }) => [
252
+ i(g, {
253
+ class: "mt-1",
254
+ icon: "mdi-delete",
255
+ variant: "text",
256
+ "data-test": "item-delete",
257
+ onClick: (c) => a.deleteConfig(v)
258
+ }, null, 8, ["onClick"])
259
+ ]),
260
+ _: 1
261
+ }, 8, ["modelValue", "search", "headers", "items"]),
262
+ i(p, { dense: "" }, {
263
+ default: n(() => [
264
+ A(d("span", {
265
+ class: "ma-2 text-red",
266
+ textContent: N(a.error)
267
+ }, null, 8, oe), [
268
+ [R, a.error]
269
+ ])
270
+ ]),
271
+ _: 1
272
+ })
273
+ ])
274
+ ]),
275
+ _: 1
276
+ }),
277
+ i(C, { class: "px-2" }, {
278
+ default: n(() => [
279
+ i(u),
280
+ i(g, {
281
+ variant: "outlined",
282
+ onClick: a.cancel,
283
+ "data-test": "open-config-cancel-btn"
284
+ }, {
285
+ default: n(() => e[6] || (e[6] = [
286
+ _(" Cancel ")
287
+ ])),
288
+ _: 1
289
+ }, 8, ["onClick"]),
290
+ i(g, {
291
+ variant: "flat",
292
+ onClick: U(a.success, ["prevent"]),
293
+ type: "submit",
294
+ "data-test": "open-config-submit-btn",
295
+ disabled: !!a.error
296
+ }, {
297
+ default: n(() => e[7] || (e[7] = [
298
+ _(" Ok ")
299
+ ])),
300
+ _: 1
301
+ }, 8, ["onClick", "disabled"])
302
+ ]),
303
+ _: 1
304
+ })
305
+ ], 32)
306
+ ]),
307
+ _: 1
308
+ })
309
+ ]),
310
+ _: 1
311
+ }, 8, ["modelValue", "onKeydown"]);
312
+ }
313
+ const Ye = /* @__PURE__ */ O(ne, [["render", re]]), de = {
314
+ props: {
315
+ configKey: String,
316
+ modelValue: Boolean
317
+ // modelValue is the default prop when using v-model
318
+ },
319
+ data() {
320
+ return {
321
+ configName: "",
322
+ configs: [],
323
+ headers: [
324
+ {
325
+ title: "Configuration",
326
+ value: "config"
327
+ },
328
+ {
329
+ title: "Actions",
330
+ value: "actions",
331
+ align: "end",
332
+ sortable: !1
333
+ }
334
+ ],
335
+ search: null,
336
+ selectedRows: []
337
+ };
338
+ },
339
+ computed: {
340
+ selectedItem: function() {
341
+ return this.selectedRows.length ? this.configs.find(
342
+ (t) => t.configId === this.selectedRows[0]
343
+ ) : null;
344
+ },
345
+ error: function() {
346
+ return this.configName ? null : "Config must have a name";
347
+ },
348
+ show: {
349
+ get() {
350
+ return this.modelValue;
351
+ },
352
+ set(t) {
353
+ this.$emit("update:modelValue", t);
354
+ }
355
+ }
356
+ },
357
+ mounted() {
358
+ let t = -1;
359
+ new L().list_configs(this.configKey).then((e) => {
360
+ this.configs = e.map((l) => (t += 1, { configId: t, config: l }));
361
+ }).catch((e) => {
362
+ this.$emit("warning", `Failed to connect to OpenC3. ${e}`);
363
+ });
364
+ },
365
+ methods: {
366
+ selectRow: function(t) {
367
+ this.selectedRows = [t.item.configId];
368
+ },
369
+ success: function() {
370
+ this.$emit("success", this.configName), this.show = !1, this.search = null, this.selectedRows = [], this.configName = "";
371
+ },
372
+ cancel: function() {
373
+ this.show = !1, this.search = null, this.selectedRows = [], this.configName = "";
374
+ },
375
+ deleteConfig: function(t) {
376
+ this.$dialog.confirm(`Are you sure you want to delete: ${t.config}`, {
377
+ okText: "Delete",
378
+ cancelText: "Cancel"
379
+ }).then((e) => {
380
+ var l;
381
+ ((l = this.selectedItem) == null ? void 0 : l.config) === t.config && (this.selectedRows = [], this.configName = ""), this.configs.splice(this.configs.indexOf(t), 1), new L().delete_config(this.configKey, t.config);
382
+ }).catch((e) => {
383
+ e !== !0 && this.$emit(
384
+ "warning",
385
+ `Failed to delete config ${t.config} Error: ${e}`
386
+ );
387
+ });
388
+ }
389
+ },
390
+ watch: {
391
+ selectedItem: function(t) {
392
+ t && (this.configName = t.config);
393
+ }
394
+ }
395
+ }, ce = { class: "mt-4 pa-3" }, ue = ["textContent"];
396
+ function me(t, e, l, o, s, a) {
397
+ const u = r("v-spacer"), m = r("v-toolbar"), h = r("v-text-field"), p = r("v-row"), g = r("v-btn"), f = r("v-data-table"), k = r("v-card-text"), C = r("v-card-actions"), T = r("v-card"), y = r("v-dialog");
398
+ return w(), x(y, {
399
+ modelValue: a.show,
400
+ "onUpdate:modelValue": e[5] || (e[5] = (v) => a.show = v),
401
+ onKeydown: z(a.cancel, ["esc"]),
402
+ width: "600"
403
+ }, {
404
+ default: n(() => [
405
+ i(T, null, {
406
+ default: n(() => [
407
+ d("form", {
408
+ onSubmit: e[4] || (e[4] = U((...v) => a.success && a.success(...v), ["prevent"]))
409
+ }, [
410
+ i(m, { height: "24" }, {
411
+ default: n(() => [
412
+ i(u),
413
+ e[6] || (e[6] = d("span", null, "Save Configuration", -1)),
414
+ i(u)
415
+ ]),
416
+ _: 1
417
+ }),
418
+ i(k, null, {
419
+ default: n(() => [
420
+ d("div", ce, [
421
+ i(p, { dense: "" }, {
422
+ default: n(() => [
423
+ i(h, {
424
+ label: "search",
425
+ modelValue: s.search,
426
+ "onUpdate:modelValue": e[0] || (e[0] = (v) => s.search = v),
427
+ type: "text",
428
+ "prepend-inner-icon": "mdi-magnify",
429
+ clearable: "",
430
+ variant: "outlined",
431
+ density: "compact",
432
+ "clear-icon": "mdi-close-circle-outline",
433
+ "single-line": "",
434
+ "hide-details": "",
435
+ "data-test": "search"
436
+ }, null, 8, ["modelValue"])
437
+ ]),
438
+ _: 1
439
+ }),
440
+ i(f, {
441
+ modelValue: s.selectedRows,
442
+ "onUpdate:modelValue": e[1] || (e[1] = (v) => s.selectedRows = v),
443
+ "show-select": "",
444
+ "select-strategy": "single",
445
+ "item-value": "configId",
446
+ search: s.search,
447
+ headers: s.headers,
448
+ items: s.configs,
449
+ "items-per-page": 5,
450
+ "items-per-page-options": [5],
451
+ "onClick:row": e[2] || (e[2] = (v, c) => a.selectRow(c))
452
+ }, {
453
+ "item.actions": n(({ item: v }) => [
454
+ i(g, {
455
+ class: "mt-1",
456
+ icon: "mdi-delete",
457
+ variant: "text",
458
+ "data-test": "item-delete",
459
+ onClick: (c) => a.deleteConfig(v)
460
+ }, null, 8, ["onClick"])
461
+ ]),
462
+ _: 1
463
+ }, 8, ["modelValue", "search", "headers", "items"]),
464
+ i(p, { dense: "" }, {
465
+ default: n(() => [
466
+ i(h, {
467
+ modelValue: s.configName,
468
+ "onUpdate:modelValue": e[3] || (e[3] = (v) => s.configName = v),
469
+ "hide-details": "",
470
+ autofocus: "",
471
+ disabled: !!a.selectedItem,
472
+ label: "Configuration Name",
473
+ "data-test": "name-input-save-config-dialog"
474
+ }, null, 8, ["modelValue", "disabled"])
475
+ ]),
476
+ _: 1
477
+ }),
478
+ i(p, { dense: "" }, {
479
+ default: n(() => [
480
+ A(d("span", {
481
+ class: "ma-2 text-red",
482
+ textContent: N(a.error)
483
+ }, null, 8, ue), [
484
+ [R, a.error]
485
+ ])
486
+ ]),
487
+ _: 1
488
+ })
489
+ ])
490
+ ]),
491
+ _: 1
492
+ }),
493
+ i(C, { class: "px-2" }, {
494
+ default: n(() => [
495
+ i(u),
496
+ i(g, {
497
+ variant: "outlined",
498
+ onClick: a.cancel
499
+ }, {
500
+ default: n(() => e[7] || (e[7] = [
501
+ _(" Cancel ")
502
+ ])),
503
+ _: 1
504
+ }, 8, ["onClick"]),
505
+ i(g, {
506
+ variant: "flat",
507
+ onClick: U(a.success, ["prevent"]),
508
+ type: "submit",
509
+ "data-test": "save-config-submit-btn",
510
+ disabled: !!a.error
511
+ }, {
512
+ default: n(() => e[8] || (e[8] = [
513
+ _(" Ok ")
514
+ ])),
515
+ _: 1
516
+ }, 8, ["onClick", "disabled"])
517
+ ]),
518
+ _: 1
519
+ })
520
+ ], 32)
521
+ ]),
522
+ _: 1
523
+ })
524
+ ]),
525
+ _: 1
526
+ }, 8, ["modelValue", "onKeydown"]);
527
+ }
528
+ const je = /* @__PURE__ */ O(de, [["render", me]]), he = {
529
+ props: {
530
+ modelValue: Boolean,
531
+ target: {
532
+ type: String,
533
+ default: ""
534
+ },
535
+ screen: {
536
+ type: String,
537
+ default: ""
538
+ },
539
+ definition: {
540
+ type: String,
541
+ default: ""
542
+ },
543
+ keywords: {
544
+ type: Array,
545
+ default: () => []
546
+ },
547
+ errors: {
548
+ type: Array,
549
+ default: () => []
550
+ }
551
+ },
552
+ data() {
553
+ return {
554
+ file: null,
555
+ docsKeyword: "",
556
+ contextMenu: !1,
557
+ menuX: 0,
558
+ menuY: 0
559
+ };
560
+ },
561
+ computed: {
562
+ editErrors: function() {
563
+ if (this.definition === "" && !this.file)
564
+ return ["Input can not be blank."];
565
+ if (this.errors.length !== 0) {
566
+ let t = /* @__PURE__ */ new Set(), e = [];
567
+ const l = this.errors.toSorted(
568
+ (o, s) => o.lineNumber - s.lineNumber
569
+ );
570
+ for (const o of l) {
571
+ let s = `At ${o.lineNumber}: (${o.line}) ${o.message}.`;
572
+ o.usage && (s += ` Usage: ${o.usage}`), e.push(s), t.add(o.message);
573
+ }
574
+ return e;
575
+ }
576
+ return [];
577
+ },
578
+ show: {
579
+ get() {
580
+ return this.modelValue;
581
+ },
582
+ set(t) {
583
+ this.$emit("update:modelValue", t);
584
+ }
585
+ }
586
+ },
587
+ mounted: function() {
588
+ this.editor = M.edit(this.$refs.editor), this.editor.setTheme("ace/theme/twilight");
589
+ const t = this.buildScreenMode();
590
+ this.editor.session.setMode(new t()), this.editor.session.setTabSize(2), this.editor.session.setUseWrapMode(!0), this.editor.$blockScrolling = 1 / 0, this.editor.setOption("enableBasicAutocompletion", !0), this.editor.setOption("enableLiveAutocompletion", !0), this.editor.completers = [new le()], this.editor.setHighlightActiveLine(!1), this.editor.setValue(this.definition), this.editor.clearSelection(), this.editor.focus();
591
+ },
592
+ beforeUnmount() {
593
+ this.editor.destroy(), this.editor.container.remove();
594
+ },
595
+ methods: {
596
+ showContextMenu: function(t) {
597
+ this.menuX = t.pageX, this.menuY = t.pageY;
598
+ let e = this.editor.getCursorPosition(), l = this.editor.session.getTokenAt(e.row, e.column);
599
+ if (l) {
600
+ let o = l.value.trim();
601
+ o.includes(" ") ? this.docsKeyword = o.split(" ")[0] : this.docsKeyword = o, this.contextMenu = !0;
602
+ }
603
+ },
604
+ openDocumentation() {
605
+ window.open(
606
+ `${window.location.origin}/tools/staticdocs/docs/configuration/telemetry-screens#${this.docsKeyword.toLowerCase()}`,
607
+ "_blank"
608
+ );
609
+ },
610
+ buildScreenMode() {
611
+ let t = M.require("ace/lib/oop"), e = M.require(
612
+ "ace/mode/text_highlight_rules"
613
+ ).TextHighlightRules, l = this.keywords.join("|"), o = function() {
614
+ this.$rules = {
615
+ start: [
616
+ {
617
+ token: "comment",
618
+ regex: "#.*$"
619
+ },
620
+ {
621
+ token: "string",
622
+ regex: '".*?"'
623
+ },
624
+ {
625
+ token: "string",
626
+ regex: "'.*?'"
627
+ },
628
+ {
629
+ token: "constant.numeric",
630
+ regex: "\\b\\d+(?:\\.\\d+)?\\b"
631
+ },
632
+ {
633
+ token: "keyword",
634
+ regex: new RegExp(`^\\s*(${l})\\b`)
635
+ }
636
+ ]
637
+ }, this.normalizeRules();
638
+ };
639
+ t.inherits(o, e);
640
+ let s = function() {
641
+ this.HighlightRules = o;
642
+ }, a = M.require("ace/mode/text").Mode;
643
+ return t.inherits(s, a), (function() {
644
+ this.$id = "ace/mode/openc3";
645
+ }).call(s.prototype), s;
646
+ },
647
+ downloadScreen: function() {
648
+ const t = new Blob([this.editor.getValue()], {
649
+ type: "text/plain"
650
+ }), e = document.createElement("a");
651
+ e.href = URL.createObjectURL(t), e.setAttribute("download", `${this.screen.toLowerCase()}.txt`), e.click();
652
+ },
653
+ loadFile: function() {
654
+ const t = new FileReader();
655
+ t.readAsText(this.file);
656
+ const e = this;
657
+ t.onload = function() {
658
+ e.editor.setValue(t.result), e.file = null;
659
+ };
660
+ },
661
+ deleteScreen: function() {
662
+ this.$dialog.confirm("Are you sure you want to delete this screen?!", {
663
+ okText: "Delete",
664
+ cancelText: "Cancel"
665
+ }).then((t) => {
666
+ this.$emit("delete");
667
+ });
668
+ }
669
+ }
670
+ }, fe = { class: "mx-2" }, pe = { class: "mx-2" }, ge = ["textContent"];
671
+ function ve(t, e, l, o, s, a) {
672
+ const u = r("v-icon"), m = r("v-tooltip"), h = r("v-spacer"), p = r("v-toolbar"), g = r("v-row"), f = r("v-btn"), k = r("v-file-input"), C = r("v-list-item-title"), T = r("v-list-item"), y = r("v-list"), v = r("v-menu"), c = r("v-card-text"), b = r("v-card"), P = r("v-dialog");
673
+ return w(), x(P, {
674
+ persistent: "",
675
+ modelValue: a.show,
676
+ "onUpdate:modelValue": e[5] || (e[5] = (I) => a.show = I),
677
+ width: "75vw"
678
+ }, {
679
+ default: n(() => [
680
+ i(b, null, {
681
+ default: n(() => [
682
+ i(p, { height: "24" }, {
683
+ default: n(() => [
684
+ d("div", fe, [
685
+ i(m, { location: "top" }, {
686
+ activator: n(({ props: I }) => [
687
+ d("div", S(D(I)), [
688
+ i(u, {
689
+ "data-test": "delete-screen-icon",
690
+ onClick: a.deleteScreen
691
+ }, {
692
+ default: n(() => e[6] || (e[6] = [
693
+ _(" mdi-delete ")
694
+ ])),
695
+ _: 1
696
+ }, 8, ["onClick"])
697
+ ], 16)
698
+ ]),
699
+ default: n(() => [
700
+ e[7] || (e[7] = d("span", null, " Delete Screen ", -1))
701
+ ]),
702
+ _: 1
703
+ })
704
+ ]),
705
+ i(h),
706
+ d("span", null, " Edit Screen: " + N(l.target) + " " + N(l.screen), 1),
707
+ i(h),
708
+ d("div", pe, [
709
+ i(m, { location: "top" }, {
710
+ activator: n(({ props: I }) => [
711
+ d("div", S(D(I)), [
712
+ i(u, {
713
+ "data-test": "download-screen-icon",
714
+ onClick: a.downloadScreen
715
+ }, {
716
+ default: n(() => e[8] || (e[8] = [
717
+ _(" mdi-download ")
718
+ ])),
719
+ _: 1
720
+ }, 8, ["onClick"])
721
+ ], 16)
722
+ ]),
723
+ default: n(() => [
724
+ e[9] || (e[9] = d("span", null, " Download Screen ", -1))
725
+ ]),
726
+ _: 1
727
+ })
728
+ ])
729
+ ]),
730
+ _: 1
731
+ }),
732
+ i(c, { style: { "max-height": "90vh" } }, {
733
+ default: n(() => [
734
+ i(g, { class: "mt-3" }, {
735
+ default: n(() => e[10] || (e[10] = [
736
+ _(" Upload a screen file. ")
737
+ ])),
738
+ _: 1
739
+ }),
740
+ i(g, {
741
+ "no-gutters": "",
742
+ align: "center"
743
+ }, {
744
+ default: n(() => [
745
+ i(f, {
746
+ onClick: a.loadFile,
747
+ disabled: !s.file,
748
+ color: "primary",
749
+ class: "mr-3",
750
+ "data-test": "edit-screen-load"
751
+ }, {
752
+ default: n(() => e[11] || (e[11] = [
753
+ _(" Load ")
754
+ ])),
755
+ _: 1
756
+ }, 8, ["onClick", "disabled"]),
757
+ i(k, {
758
+ modelValue: s.file,
759
+ "onUpdate:modelValue": e[0] || (e[0] = (I) => s.file = I),
760
+ "truncate-length": "15",
761
+ accept: ".txt",
762
+ label: "Click to select .txt screen file."
763
+ }, null, 8, ["modelValue"])
764
+ ]),
765
+ _: 1
766
+ }),
767
+ i(g, { class: "mb-2" }, {
768
+ default: n(() => e[12] || (e[12] = [
769
+ _(" Edit the screen definition. ")
770
+ ])),
771
+ _: 1
772
+ }),
773
+ i(g, { class: "mb-2" }, {
774
+ default: n(() => [
775
+ d("pre", {
776
+ ref: "editor",
777
+ class: "editor",
778
+ onContextmenu: e[1] || (e[1] = U((...I) => a.showContextMenu && a.showContextMenu(...I), ["prevent"]))
779
+ }, null, 544),
780
+ i(v, {
781
+ modelValue: s.contextMenu,
782
+ "onUpdate:modelValue": e[2] || (e[2] = (I) => s.contextMenu = I),
783
+ target: [s.menuX, s.menuY]
784
+ }, {
785
+ default: n(() => [
786
+ i(y, null, {
787
+ default: n(() => [
788
+ i(T, { link: "" }, {
789
+ default: n(() => [
790
+ i(C, { onClick: a.openDocumentation }, {
791
+ default: n(() => [
792
+ _(N(s.docsKeyword) + " documentation ", 1)
793
+ ]),
794
+ _: 1
795
+ }, 8, ["onClick"])
796
+ ]),
797
+ _: 1
798
+ })
799
+ ]),
800
+ _: 1
801
+ })
802
+ ]),
803
+ _: 1
804
+ }, 8, ["modelValue", "target"])
805
+ ]),
806
+ _: 1
807
+ }),
808
+ i(g, { style: { "max-height": "120px", "overflow-y": "auto" } }, {
809
+ default: n(() => [
810
+ (w(!0), F(H, null, Q(a.editErrors, (I, X) => (w(), F("div", { key: X }, [
811
+ d("span", {
812
+ class: "text-red",
813
+ textContent: N(I)
814
+ }, null, 8, ge)
815
+ ]))), 128))
816
+ ]),
817
+ _: 1
818
+ }),
819
+ i(g, { class: "mt-5" }, {
820
+ default: n(() => [
821
+ e[15] || (e[15] = d("span", null, "Ctrl-space brings up autocomplete. Right click keywords for documentation.", -1)),
822
+ i(h),
823
+ i(f, {
824
+ onClick: e[3] || (e[3] = (I) => t.$emit("cancel")),
825
+ class: "mx-2",
826
+ variant: "outlined",
827
+ "data-test": "edit-screen-cancel"
828
+ }, {
829
+ default: n(() => e[13] || (e[13] = [
830
+ _(" Cancel ")
831
+ ])),
832
+ _: 1
833
+ }),
834
+ i(f, {
835
+ onClick: e[4] || (e[4] = (I) => t.$emit("save", t.editor.getValue())),
836
+ class: "mx-2",
837
+ color: "primary",
838
+ "data-test": "edit-screen-save"
839
+ }, {
840
+ default: n(() => e[14] || (e[14] = [
841
+ _(" Save ")
842
+ ])),
843
+ _: 1
844
+ })
845
+ ]),
846
+ _: 1
847
+ })
848
+ ]),
849
+ _: 1
850
+ })
851
+ ]),
852
+ _: 1
853
+ })
854
+ ]),
855
+ _: 1
856
+ }, 8, ["modelValue"]);
857
+ }
858
+ const _e = /* @__PURE__ */ O(he, [["render", ve], ["__scopeId", "data-v-9c6e250e"]]), ye = {
859
+ props: {
860
+ modelValue: Boolean
861
+ },
862
+ data() {
863
+ return {
864
+ alert: "",
865
+ alertType: "success",
866
+ showAlert: !1,
867
+ search: "",
868
+ key: "",
869
+ keyValue: "",
870
+ environment: [],
871
+ headers: [
872
+ {
873
+ text: "Key",
874
+ value: "key"
875
+ },
876
+ {
877
+ text: "Value",
878
+ value: "value"
879
+ },
880
+ {
881
+ text: "Actions",
882
+ value: "actions",
883
+ align: "end",
884
+ sortable: !1
885
+ }
886
+ ]
887
+ };
888
+ },
889
+ computed: {
890
+ show: {
891
+ get() {
892
+ return this.modelValue;
893
+ },
894
+ set(t) {
895
+ this.$emit("update:modelValue", t);
896
+ }
897
+ }
898
+ },
899
+ mounted() {
900
+ this.update();
901
+ },
902
+ methods: {
903
+ alertHandler: function(t) {
904
+ this.alert = t.text, this.alertType = t.type, this.showAlert = !0;
905
+ },
906
+ update: function() {
907
+ E.get("/openc3-api/environment").then((t) => {
908
+ this.environment = t.data;
909
+ }).catch((t) => {
910
+ });
911
+ },
912
+ addEnvironment: function() {
913
+ E.post("/openc3-api/environment", {
914
+ data: {
915
+ key: this.key.toUpperCase(),
916
+ value: this.keyValue
917
+ }
918
+ }).then((t) => {
919
+ `${t.data.name}`, this.update();
920
+ }).catch((t) => {
921
+ const e = {
922
+ text: `Failed to add environment variable: ${t}`,
923
+ type: "error"
924
+ };
925
+ this.alertHandler(e);
926
+ }), this.key = "", this.keyValue = "";
927
+ },
928
+ deleteEnvironment: function(t) {
929
+ this.$dialog.confirm(`Are you sure you want to delete: ${t.key}=${t.value}`, {
930
+ okText: "Delete",
931
+ cancelText: "Cancel"
932
+ }).then((e) => E.delete(`/openc3-api/environment/${t.name}`)).then((e) => {
933
+ const l = {
934
+ text: `Removed environment variable: ${t.name}`,
935
+ type: "success"
936
+ };
937
+ this.alertHandler(l), this.update();
938
+ }).catch((e) => {
939
+ const l = {
940
+ text: `Failed to delete environment: ${e}`,
941
+ type: "error"
942
+ };
943
+ this.alertHandler(l);
944
+ });
945
+ }
946
+ }
947
+ }, be = { class: "pa-3" };
948
+ function we(t, e, l, o, s, a) {
949
+ const u = r("v-spacer"), m = r("v-toolbar"), h = r("v-text-field"), p = r("v-row"), g = r("v-icon"), f = r("v-btn"), k = r("v-data-table"), C = r("v-col"), T = r("v-card-text"), y = r("v-card"), v = r("v-dialog");
950
+ return w(), x(v, {
951
+ modelValue: a.show,
952
+ "onUpdate:modelValue": e[4] || (e[4] = (c) => a.show = c),
953
+ width: "600"
954
+ }, {
955
+ default: n(() => [
956
+ i(y, null, {
957
+ default: n(() => [
958
+ d("form", {
959
+ onSubmit: e[3] || (e[3] = U((...c) => a.addEnvironment && a.addEnvironment(...c), ["prevent"]))
960
+ }, [
961
+ i(m, { height: "24" }, {
962
+ default: n(() => [
963
+ i(u),
964
+ e[5] || (e[5] = d("span", null, "Global Environment Variables", -1)),
965
+ i(u)
966
+ ]),
967
+ _: 1
968
+ }),
969
+ i(T, null, {
970
+ default: n(() => [
971
+ d("div", be, [
972
+ i(p, {
973
+ dense: "",
974
+ class: "mb-2"
975
+ }, {
976
+ default: n(() => [
977
+ i(h, {
978
+ modelValue: s.search,
979
+ "onUpdate:modelValue": e[0] || (e[0] = (c) => s.search = c),
980
+ label: "search",
981
+ type: "text",
982
+ "data-test": "search",
983
+ "prepend-inner-icon": "mdi-magnify",
984
+ clearable: "",
985
+ variant: "outlined",
986
+ density: "compact",
987
+ "clear-icon": "mdi-close-circle-outline",
988
+ autofocus: "",
989
+ "single-line": "",
990
+ "hide-details": ""
991
+ }, null, 8, ["modelValue"])
992
+ ]),
993
+ _: 1
994
+ }),
995
+ i(k, {
996
+ "item-key": "name",
997
+ "hide-default-header": "",
998
+ "data-test": "env-table",
999
+ search: s.search,
1000
+ headers: s.headers,
1001
+ items: s.environment,
1002
+ "items-per-page": 5,
1003
+ "items-per-page-options": [5]
1004
+ }, {
1005
+ "item.actions": n(({ item: c }) => [
1006
+ i(f, {
1007
+ onClick: (b) => a.deleteEnvironment(c),
1008
+ icon: "",
1009
+ class: "mt-1",
1010
+ "data-test": "item-delete"
1011
+ }, {
1012
+ default: n(() => [
1013
+ i(g, null, {
1014
+ default: n(() => e[6] || (e[6] = [
1015
+ _("mdi-delete")
1016
+ ])),
1017
+ _: 1
1018
+ })
1019
+ ]),
1020
+ _: 2
1021
+ }, 1032, ["onClick"])
1022
+ ]),
1023
+ _: 1
1024
+ }, 8, ["search", "headers", "items"]),
1025
+ i(p, { dense: "" }, {
1026
+ default: n(() => [
1027
+ i(C, null, {
1028
+ default: n(() => [
1029
+ i(h, {
1030
+ modelValue: s.key,
1031
+ "onUpdate:modelValue": e[1] || (e[1] = (c) => s.key = c),
1032
+ label: "Key",
1033
+ "data-test": "env-key"
1034
+ }, null, 8, ["modelValue"])
1035
+ ]),
1036
+ _: 1
1037
+ }),
1038
+ i(C, null, {
1039
+ default: n(() => [
1040
+ i(h, {
1041
+ modelValue: s.keyValue,
1042
+ "onUpdate:modelValue": e[2] || (e[2] = (c) => s.keyValue = c),
1043
+ label: "Value",
1044
+ "data-test": "env-value"
1045
+ }, null, 8, ["modelValue"])
1046
+ ]),
1047
+ _: 1
1048
+ })
1049
+ ]),
1050
+ _: 1
1051
+ }),
1052
+ i(p, { dense: "" }, {
1053
+ default: n(() => [
1054
+ i(f, {
1055
+ onClick: U(a.addEnvironment, ["prevent"]),
1056
+ block: "",
1057
+ type: "submit",
1058
+ color: "primary",
1059
+ "data-test": "add-env",
1060
+ disabled: !s.key || !s.keyValue
1061
+ }, {
1062
+ default: n(() => e[7] || (e[7] = [
1063
+ _(" Add ")
1064
+ ])),
1065
+ _: 1
1066
+ }, 8, ["onClick", "disabled"])
1067
+ ]),
1068
+ _: 1
1069
+ })
1070
+ ])
1071
+ ]),
1072
+ _: 1
1073
+ })
1074
+ ], 32)
1075
+ ]),
1076
+ _: 1
1077
+ })
1078
+ ]),
1079
+ _: 1
1080
+ }, 8, ["modelValue"]);
1081
+ }
1082
+ const qe = /* @__PURE__ */ O(ye, [["render", we]]), Ne = {
1083
+ props: {
1084
+ type: {
1085
+ type: String,
1086
+ required: !0,
1087
+ validator: function(t) {
1088
+ return ["open", "save"].indexOf(t) !== -1;
1089
+ }
1090
+ },
1091
+ apiUrl: String,
1092
+ // Base API URL for use with scripts or cmd-tlm
1093
+ requireTargetParentDir: Boolean,
1094
+ // Require that the save filename be nested in a directory with the name of a target
1095
+ inputFilename: String,
1096
+ // passed if this is a 'save' dialog
1097
+ modelValue: Boolean
1098
+ },
1099
+ data() {
1100
+ return {
1101
+ tree: [],
1102
+ items: [],
1103
+ id: 1,
1104
+ search: null,
1105
+ selectedFile: null,
1106
+ disableButtons: !1,
1107
+ targets: [],
1108
+ loading: !0
1109
+ };
1110
+ },
1111
+ computed: {
1112
+ show: {
1113
+ get() {
1114
+ return this.modelValue;
1115
+ },
1116
+ set(t) {
1117
+ this.$emit("update:modelValue", t);
1118
+ }
1119
+ },
1120
+ title: function() {
1121
+ return this.type === "open" ? "File Open" : "File Save As...";
1122
+ },
1123
+ submit: function() {
1124
+ return this.type === "open" ? "OPEN" : "SAVE";
1125
+ },
1126
+ helpText: function() {
1127
+ return this.type === "open" ? "Click on folders to open them and then click a file to select it before clicking Open. Use the search box to filter the results." : "Click on the folder to save into. Then complete the filename path with the desired name. Use the search box to filter the results.";
1128
+ },
1129
+ error: function() {
1130
+ if (this.selectedFile === "" || this.selectedFile === null)
1131
+ return "No file selected must select a file";
1132
+ if (!this.selectedFile.match(this.validFilenameRegex) || this.selectedFile.match(/\.\.|\/\/|\.\/|\/\./)) {
1133
+ let t = `${this.selectedFile} is not a valid filename. Must `;
1134
+ return this.requireTargetParentDir && (t += "be in a target directory and "), t += `only contain alphanumeric characters (including !-_.*) and a valid extension.
1135
+
1136
+ For example: TGT1/procedures/test.py or TGT2/lib/inst.rb`, t;
1137
+ }
1138
+ return this.type === "save" && this.selectedFile.match(/\*$/) ? `${this.selectedFile} is not a valid filename. Must not end in '*'.` : null;
1139
+ },
1140
+ validFilenameRegex: function() {
1141
+ const t = "0-9a-zA-Z";
1142
+ let l = `[${`${t}\\/\\!\\-\\_\\.\\*\\'\\(\\)`}]+\\.[${t}]+`;
1143
+ return this.requireTargetParentDir && (l = `\\/?${`(${this.targets.join("|")})`}\\/${l}`), new RegExp(l);
1144
+ }
1145
+ },
1146
+ created() {
1147
+ this.loadFiles(), this.requireTargetParentDir && E.get("/openc3-api/targets").then((t) => {
1148
+ this.targets = t.data, this.targets.push("__TEMP__");
1149
+ });
1150
+ },
1151
+ methods: {
1152
+ calcIcon: function(t) {
1153
+ return ee(t);
1154
+ },
1155
+ loadFiles: function() {
1156
+ E.get(this.apiUrl).then((t) => {
1157
+ this.items = [], this.id = 1;
1158
+ for (let e of t.data)
1159
+ this.filepath = e, this.insertFile(this.items, 1, e), this.id++;
1160
+ this.inputFilename && (this.selectedFile = this.inputFilename), this.loading = !1;
1161
+ }).catch((t) => {
1162
+ this.$emit("error", `Failed to connect to OpenC3. ${t}`);
1163
+ });
1164
+ },
1165
+ clear: function() {
1166
+ this.show = !1, this.overwrite = !1, this.disableButtons = !1;
1167
+ },
1168
+ activeFile: function(t) {
1169
+ t.length === 0 ? this.selectedFile = null : (this.selectedFile = this.findItem(this.items, t[0]), setTimeout(() => {
1170
+ this.$refs.submitBtn.$el.focus();
1171
+ }, 100));
1172
+ },
1173
+ findItem: function(t, e) {
1174
+ for (let l of t) {
1175
+ if (l.id === e)
1176
+ return l.path;
1177
+ if (l.children) {
1178
+ const o = this.findItem(l.children, e);
1179
+ if (o)
1180
+ return o;
1181
+ }
1182
+ }
1183
+ return null;
1184
+ },
1185
+ exists: function(t, e) {
1186
+ let l = !1;
1187
+ for (let o of t) {
1188
+ if (o.path === e || o.path.length > 1 && o.path[o.path.length - 1] === "*" && o.path.slice(0, o.path.length - 1) === e)
1189
+ return !0;
1190
+ o.children && (l = l || this.exists(o.children, e));
1191
+ }
1192
+ return l;
1193
+ },
1194
+ success: function() {
1195
+ this.selectedFile !== null && this.error === null && (this.type === "open" ? this.openSuccess() : this.saveSuccess());
1196
+ },
1197
+ deleteTemp: function() {
1198
+ this.$dialog.confirm("Are you sure you want to delete all the temporary files?", {
1199
+ okText: "Delete",
1200
+ cancelText: "Cancel"
1201
+ }).then((t) => E.delete("/script-api/scripts/temp_files")).then((t) => {
1202
+ this.$emit("clear-temp"), this.loadFiles();
1203
+ }).catch((t) => {
1204
+ this.$notify.serious({
1205
+ title: "Error",
1206
+ body: `Failed to remove script temporary files due to ${t}`
1207
+ });
1208
+ });
1209
+ },
1210
+ openSuccess: function() {
1211
+ this.disableButtons = !0, E.get(`${this.apiUrl}/${this.selectedFile}`).then((t) => {
1212
+ const e = {
1213
+ name: this.selectedFile,
1214
+ contents: t.data.contents
1215
+ };
1216
+ t.data.suites && (e.suites = JSON.parse(t.data.suites)), t.data.error && (e.error = t.data.error), t.data.success && (e.success = t.data.success);
1217
+ const l = t.data.locked, o = t.data.breakpoints;
1218
+ this.$emit("file", { file: e, locked: l, breakpoints: o }), this.clear();
1219
+ }).catch((t) => {
1220
+ this.$emit("error", `Failed to open ${this.selectedFile}. ${t}`), this.clear();
1221
+ });
1222
+ },
1223
+ saveSuccess: function() {
1224
+ this.exists(this.items, this.selectedFile) ? this.$dialog.confirm(`Are you sure you want to overwrite: ${this.selectedFile}`, {
1225
+ okText: "Overwrite",
1226
+ cancelText: "Cancel"
1227
+ }).then((e) => {
1228
+ this.$emit("filename", this.selectedFile), this.clear();
1229
+ }).catch((e) => {
1230
+ }) : (this.$emit("filename", this.selectedFile), this.clear());
1231
+ },
1232
+ insertFile: function(t, e, l) {
1233
+ let o = l.split("/");
1234
+ if (o.length === 1) {
1235
+ t.push({
1236
+ id: this.id,
1237
+ title: o[0],
1238
+ file: "ruby",
1239
+ path: this.filepath
1240
+ }), this.id++;
1241
+ return;
1242
+ }
1243
+ const s = t.findIndex((a) => a.title === o[0]);
1244
+ s === -1 ? (t.push({
1245
+ id: this.id,
1246
+ title: o[0],
1247
+ children: [],
1248
+ path: this.filepath.split("/").slice(0, e).join("/")
1249
+ }), this.id++, this.insertFile(
1250
+ t[t.length - 1].children,
1251
+ // Start from the node we just added
1252
+ e + 1,
1253
+ o.slice(1).join("/")
1254
+ // Strip the first part of the path
1255
+ )) : this.insertFile(
1256
+ t[s].children,
1257
+ e + 1,
1258
+ o.slice(1).join("/")
1259
+ );
1260
+ }
1261
+ }
1262
+ }, xe = { class: "pa-3" };
1263
+ function ke(t, e, l, o, s, a) {
1264
+ const u = r("v-progress-circular"), m = r("v-overlay"), h = r("v-spacer"), p = r("v-toolbar"), g = r("v-row"), f = r("v-text-field"), k = r("v-icon"), C = r("v-btn"), T = r("v-treeview"), y = r("v-card-text"), v = r("v-card"), c = r("v-dialog");
1265
+ return w(), x(c, {
1266
+ modelValue: a.show,
1267
+ "onUpdate:modelValue": e[5] || (e[5] = (b) => a.show = b),
1268
+ width: "600",
1269
+ scrollable: "",
1270
+ onKeydown: e[6] || (e[6] = z((b) => a.success(), ["enter"]))
1271
+ }, {
1272
+ default: n(() => [
1273
+ i(v, null, {
1274
+ default: n(() => [
1275
+ i(m, { "model-value": s.loading }, {
1276
+ default: n(() => [
1277
+ i(u, {
1278
+ indeterminate: "",
1279
+ absolute: "",
1280
+ size: "64"
1281
+ })
1282
+ ]),
1283
+ _: 1
1284
+ }, 8, ["model-value"]),
1285
+ d("form", {
1286
+ onSubmit: e[4] || (e[4] = U((...b) => a.success && a.success(...b), ["prevent"]))
1287
+ }, [
1288
+ i(p, { height: "24" }, {
1289
+ default: n(() => [
1290
+ i(h),
1291
+ d("span", null, N(a.title), 1),
1292
+ i(h)
1293
+ ]),
1294
+ _: 1
1295
+ }),
1296
+ i(y, null, {
1297
+ default: n(() => [
1298
+ d("div", xe, [
1299
+ i(g, null, {
1300
+ default: n(() => [
1301
+ _(N(a.helpText), 1)
1302
+ ]),
1303
+ _: 1
1304
+ }),
1305
+ i(g, {
1306
+ dense: "",
1307
+ class: "mt-5"
1308
+ }, {
1309
+ default: n(() => [
1310
+ i(f, {
1311
+ modelValue: s.search,
1312
+ "onUpdate:modelValue": e[0] || (e[0] = (b) => s.search = b),
1313
+ flat: "",
1314
+ autofocus: "",
1315
+ "hide-details": "",
1316
+ clearable: "",
1317
+ label: "Search",
1318
+ "prepend-inner-icon": "mdi-magnify",
1319
+ density: "compact",
1320
+ "data-test": "file-open-save-search"
1321
+ }, null, 8, ["modelValue"])
1322
+ ]),
1323
+ _: 1
1324
+ }),
1325
+ i(g, {
1326
+ dense: "",
1327
+ class: "mt-2"
1328
+ }, {
1329
+ default: n(() => [
1330
+ i(T, {
1331
+ modelValue: s.tree,
1332
+ "onUpdate:modelValue": e[1] || (e[1] = (b) => s.tree = b),
1333
+ "onUpdate:activated": a.activeFile,
1334
+ density: "compact",
1335
+ activatable: "",
1336
+ ref: "tree",
1337
+ style: { width: "100%", "max-height": "60vh", overflow: "auto" },
1338
+ "item-value": "id",
1339
+ items: s.items,
1340
+ search: s.search,
1341
+ "open-on-click": l.type === "open",
1342
+ "open-all": !!s.search
1343
+ }, {
1344
+ prepend: n(({ item: b, open: P }) => [
1345
+ b.file ? (w(), x(k, { key: 1 }, {
1346
+ default: n(() => [
1347
+ _(N(a.calcIcon(b.title)), 1)
1348
+ ]),
1349
+ _: 2
1350
+ }, 1024)) : (w(), x(k, { key: 0 }, {
1351
+ default: n(() => [
1352
+ _(N(P ? "mdi-folder-open" : "mdi-folder"), 1)
1353
+ ]),
1354
+ _: 2
1355
+ }, 1024))
1356
+ ]),
1357
+ append: n(({ item: b }) => [
1358
+ b.title === "__TEMP__" ? (w(), x(C, {
1359
+ key: 0,
1360
+ icon: "",
1361
+ onClick: a.deleteTemp
1362
+ }, {
1363
+ default: n(() => [
1364
+ i(k, null, {
1365
+ default: n(() => e[7] || (e[7] = [
1366
+ _(" mdi-delete ")
1367
+ ])),
1368
+ _: 1
1369
+ })
1370
+ ]),
1371
+ _: 1
1372
+ }, 8, ["onClick"])) : V("", !0)
1373
+ ]),
1374
+ _: 1
1375
+ }, 8, ["modelValue", "onUpdate:activated", "items", "search", "open-on-click", "open-all"])
1376
+ ]),
1377
+ _: 1
1378
+ }),
1379
+ i(g, { class: "my-2" }, {
1380
+ default: n(() => [
1381
+ i(f, {
1382
+ modelValue: s.selectedFile,
1383
+ "onUpdate:modelValue": e[2] || (e[2] = (b) => s.selectedFile = b),
1384
+ "hide-details": "",
1385
+ label: "Filename",
1386
+ "data-test": "file-open-save-filename",
1387
+ disabled: l.type === "open"
1388
+ }, null, 8, ["modelValue", "disabled"])
1389
+ ]),
1390
+ _: 1
1391
+ }),
1392
+ i(g, { dense: "" }, {
1393
+ default: n(() => [
1394
+ A(d("div", {
1395
+ class: "my-2 text-red",
1396
+ style: { "white-space": "pre-line" }
1397
+ }, N(a.error), 513), [
1398
+ [R, a.error]
1399
+ ])
1400
+ ]),
1401
+ _: 1
1402
+ }),
1403
+ i(g, { class: "mt-2" }, {
1404
+ default: n(() => [
1405
+ i(h),
1406
+ i(C, {
1407
+ onClick: e[3] || (e[3] = (b) => a.show = !1),
1408
+ variant: "outlined",
1409
+ class: "mx-2",
1410
+ "data-test": "file-open-save-cancel-btn",
1411
+ disabled: s.disableButtons
1412
+ }, {
1413
+ default: n(() => e[8] || (e[8] = [
1414
+ _(" Cancel ")
1415
+ ])),
1416
+ _: 1
1417
+ }, 8, ["disabled"]),
1418
+ i(C, {
1419
+ onClick: U(a.success, ["prevent"]),
1420
+ ref: "submitBtn",
1421
+ type: "submit",
1422
+ color: "primary",
1423
+ class: "mx-2",
1424
+ "data-test": "file-open-save-submit-btn",
1425
+ disabled: s.disableButtons || !!a.error
1426
+ }, {
1427
+ default: n(() => [
1428
+ _(N(a.submit), 1)
1429
+ ]),
1430
+ _: 1
1431
+ }, 8, ["onClick", "disabled"])
1432
+ ]),
1433
+ _: 1
1434
+ })
1435
+ ])
1436
+ ]),
1437
+ _: 1
1438
+ })
1439
+ ], 32)
1440
+ ]),
1441
+ _: 1
1442
+ })
1443
+ ]),
1444
+ _: 1
1445
+ }, 8, ["modelValue"]);
1446
+ }
1447
+ const Je = /* @__PURE__ */ O(Ne, [["render", ke]]), Ce = {
1448
+ props: {
1449
+ historyCount: {
1450
+ type: Number,
1451
+ default: 200
1452
+ },
1453
+ timeZone: {
1454
+ type: String,
1455
+ default: "local"
1456
+ }
1457
+ },
1458
+ mixins: [te],
1459
+ data() {
1460
+ return {
1461
+ AstroStatusColors: K,
1462
+ data: [],
1463
+ shownData: [],
1464
+ logLevels: ["DEBUG", "INFO", "WARN", "ERROR", "FATAL"],
1465
+ logLevel: "INFO",
1466
+ search: "",
1467
+ headers: [
1468
+ { title: "Time", value: "timestamp", nowrap: !0 },
1469
+ { title: "Level", value: "level" },
1470
+ { title: "Source", value: "microservice_name" },
1471
+ { title: "Message", value: "message" }
1472
+ ],
1473
+ cable: new Y(),
1474
+ subscription: null,
1475
+ paused: !1
1476
+ };
1477
+ },
1478
+ computed: {
1479
+ buttonLabel: function() {
1480
+ return this.paused ? "Resume" : "Pause";
1481
+ },
1482
+ buttonIcon: function() {
1483
+ return this.paused ? "mdi-play" : "mdi-pause";
1484
+ }
1485
+ },
1486
+ watch: {
1487
+ logLevel: function(t, e) {
1488
+ this.createSubscription();
1489
+ }
1490
+ },
1491
+ created() {
1492
+ this.createSubscription();
1493
+ },
1494
+ unmounted() {
1495
+ this.subscription && this.subscription.unsubscribe(), this.cable.disconnect();
1496
+ },
1497
+ methods: {
1498
+ pause: function() {
1499
+ this.paused = !this.paused;
1500
+ },
1501
+ createSubscription() {
1502
+ this.subscription && (this.subscription.unsubscribe(), this.data = [], this.shownData = this.data), this.cable.createSubscription(
1503
+ "MessagesChannel",
1504
+ window.openc3Scope,
1505
+ {
1506
+ received: (t) => {
1507
+ this.cable.recordPing(), t.length > this.historyCount && t.splice(0, t.length - this.historyCount), t = t.filter((e) => {
1508
+ switch (this.logLevel) {
1509
+ case "DEBUG":
1510
+ return !0;
1511
+ case "INFO":
1512
+ if (e.level !== "DEBUG")
1513
+ return !0;
1514
+ break;
1515
+ case "WARN":
1516
+ if (e.level !== "DEBUG" && e.level !== "INFO")
1517
+ return !0;
1518
+ break;
1519
+ case "ERROR":
1520
+ if (e.level !== "DEBUG" && e.level !== "INFO" && e.level !== "WARN")
1521
+ return !0;
1522
+ break;
1523
+ case "FATAL":
1524
+ if (e.level !== "DEBUG" && e.level !== "INFO" && e.level !== "WARN" && e.level !== "ERROR")
1525
+ return !0;
1526
+ break;
1527
+ }
1528
+ return !1;
1529
+ }), t.map((e) => {
1530
+ if (e.timestamp = this.formatTimestamp(
1531
+ e["@timestamp"],
1532
+ this.timeZone
1533
+ ), e.message.raw && e.message.json_class === "String") {
1534
+ let l = "0x";
1535
+ for (let o = 0; o < e.message.raw.length; o++) {
1536
+ let s = e.message.raw[o].toString(16).toUpperCase();
1537
+ s.length < 2 && (s = "0" + s), l += s;
1538
+ }
1539
+ e.message = l;
1540
+ } else
1541
+ e.message = e.message.replaceAll("\\n", `
1542
+ `);
1543
+ }), this.data = t.reverse().concat(this.data), this.data.length > this.historyCount && (this.data.length = this.historyCount), this.paused || (this.shownData = this.data);
1544
+ }
1545
+ },
1546
+ {
1547
+ // Channel parameter is history_count with underscore
1548
+ history_count: this.historyCount,
1549
+ types: ["log", "notification", "alert"]
1550
+ }
1551
+ ).then((t) => {
1552
+ this.subscription = t;
1553
+ });
1554
+ },
1555
+ getColor(t) {
1556
+ return K[W[t]];
1557
+ },
1558
+ getStatus(t) {
1559
+ return W[t];
1560
+ },
1561
+ downloadLog() {
1562
+ const t = this.shownData.map(
1563
+ (o) => (
1564
+ // Other fields are available like container_name, msg_id ... probably not useful
1565
+ `${o.timestamp} | ${o.level} | ${o.microservice_name} | ${o.message}`
1566
+ )
1567
+ ).join(`
1568
+ `), e = new Blob([t], {
1569
+ type: "text/plain"
1570
+ }), l = document.createElement("a");
1571
+ l.href = URL.createObjectURL(e), l.setAttribute(
1572
+ "download",
1573
+ ie(Date.now(), "yyyy_MM_dd_HH_mm_ss") + "_message_log.txt"
1574
+ ), l.click();
1575
+ },
1576
+ clearLog: function() {
1577
+ this.$dialog.confirm("Are you sure you want to clear the log?", {
1578
+ okText: "Clear",
1579
+ cancelText: "Cancel"
1580
+ }).then((t) => {
1581
+ this.data = [], this.shownData = [];
1582
+ }).catch(function(t) {
1583
+ });
1584
+ }
1585
+ }
1586
+ }, Te = { class: "d-flex align-baseline" }, Ie = ["title", "datetime"], Ve = { style: { "white-space": "pre-wrap" } };
1587
+ function Se(t, e, l, o, s, a) {
1588
+ const u = r("v-btn"), m = r("v-tooltip"), h = r("v-spacer"), p = r("v-select"), g = r("v-text-field"), f = r("v-card-title"), k = r("rux-status"), C = r("v-data-table"), T = r("v-card");
1589
+ return w(), x(T, null, {
1590
+ default: n(() => [
1591
+ i(f, { class: "d-flex align-center justify-content-space-between" }, {
1592
+ default: n(() => [
1593
+ d("div", Te, [
1594
+ i(m, { location: "top" }, {
1595
+ activator: n(({ props: y }) => [
1596
+ d("div", S(D(y)), [
1597
+ i(u, {
1598
+ icon: "mdi-download",
1599
+ variant: "text",
1600
+ size: "small",
1601
+ class: "mr-2",
1602
+ "data-test": "download-log",
1603
+ onClick: a.downloadLog
1604
+ }, null, 8, ["onClick"])
1605
+ ], 16)
1606
+ ]),
1607
+ default: n(() => [
1608
+ e[2] || (e[2] = d("span", null, " Download Log ", -1))
1609
+ ]),
1610
+ _: 1
1611
+ }),
1612
+ e[3] || (e[3] = d("span", null, " Log Messages ", -1)),
1613
+ i(m, { location: "top" }, {
1614
+ activator: n(({ props: y }) => [
1615
+ d("div", S(D(y)), [
1616
+ i(u, {
1617
+ icon: a.buttonIcon,
1618
+ variant: "text",
1619
+ "data-test": "pause",
1620
+ onClick: a.pause
1621
+ }, null, 8, ["icon", "onClick"])
1622
+ ], 16)
1623
+ ]),
1624
+ default: n(() => [
1625
+ d("span", null, N(a.buttonLabel), 1)
1626
+ ]),
1627
+ _: 1
1628
+ })
1629
+ ]),
1630
+ i(h),
1631
+ i(p, {
1632
+ label: "Filter by log level",
1633
+ "hide-details": "",
1634
+ variant: "outlined",
1635
+ density: "compact",
1636
+ items: s.logLevels,
1637
+ modelValue: s.logLevel,
1638
+ "onUpdate:modelValue": e[0] || (e[0] = (y) => s.logLevel = y),
1639
+ class: "mr-2",
1640
+ style: { "max-width": "150px" },
1641
+ "data-test": "log-messages-level"
1642
+ }, null, 8, ["items", "modelValue"]),
1643
+ i(h),
1644
+ i(g, {
1645
+ modelValue: s.search,
1646
+ "onUpdate:modelValue": e[1] || (e[1] = (y) => s.search = y),
1647
+ label: "Search",
1648
+ "prepend-inner-icon": "mdi-magnify",
1649
+ clearable: "",
1650
+ variant: "outlined",
1651
+ density: "compact",
1652
+ "single-line": "",
1653
+ "hide-details": "",
1654
+ style: { "max-width": "300px" },
1655
+ class: "search",
1656
+ "data-test": "search-log-messages"
1657
+ }, null, 8, ["modelValue"]),
1658
+ i(m, { location: "top" }, {
1659
+ activator: n(({ props: y }) => [
1660
+ d("div", S(D(y)), [
1661
+ i(u, {
1662
+ icon: "mdi-delete",
1663
+ variant: "text",
1664
+ class: "ml-2",
1665
+ "data-test": "clear-log",
1666
+ onClick: a.clearLog
1667
+ }, null, 8, ["onClick"])
1668
+ ], 16)
1669
+ ]),
1670
+ default: n(() => [
1671
+ e[4] || (e[4] = d("span", null, " Clear Log ", -1))
1672
+ ]),
1673
+ _: 1
1674
+ })
1675
+ ]),
1676
+ _: 1
1677
+ }),
1678
+ i(C, {
1679
+ headers: s.headers,
1680
+ items: s.shownData,
1681
+ search: s.search,
1682
+ "items-per-page": -1,
1683
+ "hide-default-footer": "",
1684
+ "multi-sort": "",
1685
+ density: "compact",
1686
+ sticky: "",
1687
+ hover: "",
1688
+ "data-test": "log-messages"
1689
+ }, {
1690
+ "item.timestamp": n(({ item: y }) => [
1691
+ d("time", {
1692
+ title: y.timestamp,
1693
+ datetime: y.timestamp
1694
+ }, N(y.timestamp), 9, Ie)
1695
+ ]),
1696
+ "item.level": n(({ item: y }) => [
1697
+ d("span", {
1698
+ style: Z("display: inline-flex; color:" + a.getColor(y.level))
1699
+ }, [
1700
+ i(k, {
1701
+ class: "mr-1",
1702
+ status: a.getStatus(y.level)
1703
+ }, null, 8, ["status"]),
1704
+ _(" " + N(y.level), 1)
1705
+ ], 4)
1706
+ ]),
1707
+ "item.message": n(({ item: y }) => [
1708
+ d("div", Ve, N(y.message), 1)
1709
+ ]),
1710
+ _: 1
1711
+ }, 8, ["headers", "items", "search"])
1712
+ ]),
1713
+ _: 1
1714
+ });
1715
+ }
1716
+ const Qe = /* @__PURE__ */ O(Ce, [["render", Se], ["__scopeId", "data-v-d5f1f607"]]), G = "single-spa:app-change", De = {
1717
+ data() {
1718
+ return {
1719
+ show: !1
1720
+ };
1721
+ },
1722
+ created() {
1723
+ window.addEventListener(G, this.handleAppChange);
1724
+ },
1725
+ mounted() {
1726
+ setTimeout(() => {
1727
+ this.show = se().length === 0;
1728
+ }, 150);
1729
+ },
1730
+ unmounted() {
1731
+ window.removeEventListener(
1732
+ G,
1733
+ this.handleAppChange
1734
+ );
1735
+ },
1736
+ methods: {
1737
+ handleAppChange: function(t) {
1738
+ this.show = !t.detail.appsByNewStatus.MOUNTED;
1739
+ }
1740
+ }
1741
+ }, Ee = { class: "mx-1" };
1742
+ function Ae(t, e, l, o, s, a) {
1743
+ const u = r("v-card-title"), m = r("v-card-text"), h = r("v-card");
1744
+ return s.show ? (w(), x(h, { key: 0 }, {
1745
+ default: n(() => [
1746
+ i(u, null, {
1747
+ default: n(() => e[0] || (e[0] = [
1748
+ _(" 404 Not Found ")
1749
+ ])),
1750
+ _: 1
1751
+ }),
1752
+ i(m, { class: "d-flex align-center mt-3" }, {
1753
+ default: n(() => [
1754
+ e[1] || (e[1] = _(" The requested URL ")),
1755
+ d("code", Ee, N(t.$route.fullPath), 1),
1756
+ e[2] || (e[2] = _(" was not routable. ")),
1757
+ e[3] || (e[3] = d("span", { class: "text-h3 mx-1" }, " 🦄 ", -1))
1758
+ ]),
1759
+ _: 1
1760
+ })
1761
+ ]),
1762
+ _: 1
1763
+ })) : V("", !0);
1764
+ }
1765
+ const $e = /* @__PURE__ */ O(De, [["render", Ae]]), B = 20, Re = {
1766
+ mixins: [j],
1767
+ components: {
1768
+ EditScreenDialog: _e
1769
+ },
1770
+ props: {
1771
+ target: {
1772
+ type: String,
1773
+ default: ""
1774
+ },
1775
+ screen: {
1776
+ type: String,
1777
+ default: ""
1778
+ },
1779
+ definition: {
1780
+ type: String,
1781
+ default: ""
1782
+ },
1783
+ keywords: {
1784
+ type: Array,
1785
+ default: () => []
1786
+ },
1787
+ initialFloated: {
1788
+ type: Boolean,
1789
+ default: !1
1790
+ },
1791
+ initialTop: {
1792
+ type: Number,
1793
+ default: 0
1794
+ },
1795
+ initialLeft: {
1796
+ type: Number,
1797
+ default: 0
1798
+ },
1799
+ initialZ: {
1800
+ type: Number,
1801
+ default: 0
1802
+ },
1803
+ minZ: {
1804
+ type: Number,
1805
+ default: 0
1806
+ },
1807
+ fixFloated: {
1808
+ type: Boolean,
1809
+ default: !1
1810
+ },
1811
+ count: {
1812
+ type: Number,
1813
+ default: 0
1814
+ },
1815
+ showClose: {
1816
+ type: Boolean,
1817
+ default: !0
1818
+ },
1819
+ timeZone: {
1820
+ type: String,
1821
+ default: "local"
1822
+ }
1823
+ },
1824
+ data() {
1825
+ return {
1826
+ api: null,
1827
+ backup: "",
1828
+ currentDefinition: this.definition,
1829
+ editDialog: !1,
1830
+ expand: !0,
1831
+ configParser: null,
1832
+ configError: !1,
1833
+ currentLayout: null,
1834
+ layoutStack: [],
1835
+ namedWidgets: {},
1836
+ dynamicWidgets: [],
1837
+ width: null,
1838
+ height: null,
1839
+ staleTime: 30,
1840
+ cacheTimeout: 0.1,
1841
+ globalSettings: [],
1842
+ substitute: !1,
1843
+ original_target_name: null,
1844
+ force_substitute: !1,
1845
+ pollingPeriod: 1,
1846
+ errors: [],
1847
+ errorDialog: !1,
1848
+ screenKey: null,
1849
+ dragX: 0,
1850
+ dragY: 0,
1851
+ floated: this.initialFloated,
1852
+ top: this.initialTop,
1853
+ left: this.initialLeft,
1854
+ zIndex: this.initialZ,
1855
+ changeCounter: 0,
1856
+ screenItems: [],
1857
+ screenValues: {},
1858
+ updateCounter: 0,
1859
+ screenId: J.uniqueId("openc3-screen_")
1860
+ };
1861
+ },
1862
+ watch: {
1863
+ count: {
1864
+ handler(t, e) {
1865
+ this.currentDefinition = this.definition, this.rerender();
1866
+ }
1867
+ }
1868
+ },
1869
+ computed: {
1870
+ error: function() {
1871
+ if (this.errorDialog && this.errors.length > 0) {
1872
+ let t = /* @__PURE__ */ new Set(), e = "";
1873
+ for (const l of this.errors) {
1874
+ if (t.has(l.message))
1875
+ continue;
1876
+ let o = `${l.time}: (${l.type}) ${l.message}
1877
+ `;
1878
+ e += o, t.add(l.message);
1879
+ }
1880
+ return e;
1881
+ }
1882
+ return null;
1883
+ },
1884
+ computedStyle() {
1885
+ var l;
1886
+ let t = {};
1887
+ const e = this.width || ((l = this.$refs.bar) == null ? void 0 : l.clientWidth);
1888
+ return this.floated && (t.position = "absolute", t.top = this.top + "px", t.left = this.left + "px", t.width = e + "px"), t;
1889
+ }
1890
+ },
1891
+ // Called when an error from any descendent component is captured
1892
+ // We need this because an error can occur from any of the children
1893
+ // in the widget stack and are typically thrown on create()
1894
+ errorCaptured(t, e, l) {
1895
+ return console.log({ err: t, vm: e, info: l }), this.errors.length < B && (console.log({ errors: this.errors }), t.usage ? this.errors.push({
1896
+ type: "usage",
1897
+ message: t.message,
1898
+ usage: t.usage,
1899
+ line: t.line,
1900
+ lineNumber: t.lineNumber,
1901
+ time: (/* @__PURE__ */ new Date()).getTime()
1902
+ }) : this.errors.push({
1903
+ type: "error",
1904
+ message: t,
1905
+ time: (/* @__PURE__ */ new Date()).getTime()
1906
+ }), this.configError = !0), !1;
1907
+ },
1908
+ created() {
1909
+ this.api = new L(), this.configParser = new q(), this.parseDefinition(), this.screenKey = Math.floor(Math.random() * 1e6);
1910
+ },
1911
+ mounted() {
1912
+ this.updateRefreshInterval(), this.floated && (this.$refs.bar.onmousedown = this.dragMouseDown, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex);
1913
+ },
1914
+ unmounted() {
1915
+ this.updater != null && (clearInterval(this.updater), this.updater = null);
1916
+ },
1917
+ methods: {
1918
+ // These are API methods that ButtonWidget uses to open and close screens
1919
+ open(t, e) {
1920
+ this.$parent.showScreen(t, e);
1921
+ },
1922
+ close(t, e) {
1923
+ this.$parent.closeScreenByName(t, e);
1924
+ },
1925
+ closeAll() {
1926
+ this.$parent.closeAll();
1927
+ },
1928
+ clearErrors: function() {
1929
+ this.errors = [], this.configError = !1;
1930
+ },
1931
+ updateRefreshInterval: function() {
1932
+ let t = this.pollingPeriod * 1e3;
1933
+ this.updater && clearInterval(this.updater), this.updater = setInterval(() => {
1934
+ this.update();
1935
+ }, t);
1936
+ },
1937
+ parseDefinition: function() {
1938
+ if (this.clearErrors(), this.namedWidgets = {}, this.layoutStack = [], this.dynamicWidgets = [], this.layoutStack.push({
1939
+ type: "VerticalWidget",
1940
+ parameters: [],
1941
+ widgets: []
1942
+ }), this.currentLayout = this.layoutStack[this.layoutStack.length - 1], this.configParser.parse_string(
1943
+ this.currentDefinition,
1944
+ "",
1945
+ !1,
1946
+ !0,
1947
+ (t, e, l, o) => {
1948
+ if (t)
1949
+ switch (t) {
1950
+ case "SCREEN":
1951
+ this.configParser.verify_num_parameters(
1952
+ 3,
1953
+ 4,
1954
+ `${t} <Width or AUTO> <Height or AUTO> <Polling Period>`
1955
+ ), this.width = parseInt(e[0]), this.height = parseInt(e[1]), this.pollingPeriod = parseFloat(e[2]);
1956
+ break;
1957
+ case "END":
1958
+ this.configParser.verify_num_parameters(0, 0, `${t}`), this.layoutStack.pop(), this.currentLayout = this.layoutStack[this.layoutStack.length - 1];
1959
+ break;
1960
+ case "STALE_TIME":
1961
+ this.configParser.verify_num_parameters(
1962
+ 1,
1963
+ 1,
1964
+ `${t} <Time (s)>`
1965
+ ), this.staleTime = parseInt(e[0]);
1966
+ break;
1967
+ case "SETTING":
1968
+ case "SUBSETTING":
1969
+ (this.currentLayout.widgets[this.currentLayout.widgets.length - 1] ?? this.currentLayout).settings.push(e);
1970
+ break;
1971
+ case "GLOBAL_SETTING":
1972
+ case "GLOBAL_SUBSETTING":
1973
+ this.globalSettings.push(e);
1974
+ break;
1975
+ default:
1976
+ this.processWidget(t, e, l, o);
1977
+ break;
1978
+ }
1979
+ }
1980
+ ), typeof this.layoutStack[0] > "u") {
1981
+ let t = [], e = [];
1982
+ for (const l of this.dynamicWidgets)
1983
+ t.push(l.name), e.push(l.lineNumber);
1984
+ this.errors.length < B && (this.errors.push({
1985
+ type: "usage",
1986
+ message: `Unknown widget! Are these widgets: ${t.join(",")}?`,
1987
+ lineNumber: e.join(","),
1988
+ time: (/* @__PURE__ */ new Date()).getTime()
1989
+ }), this.configError = !0), this.layoutStack[0] = {
1990
+ type: "VerticalWidget",
1991
+ parameters: [],
1992
+ widgets: []
1993
+ };
1994
+ } else
1995
+ this.applyGlobalSettings(this.layoutStack[0].widgets);
1996
+ },
1997
+ openEdit: function() {
1998
+ this.backup = this.currentDefinition.repeat(1), this.editDialog = !0;
1999
+ },
2000
+ upScreen: function() {
2001
+ this.zIndex += 1, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex, this.$emit("drag-screen", [
2002
+ this.floated,
2003
+ this.top,
2004
+ this.left,
2005
+ this.zIndex
2006
+ ]);
2007
+ },
2008
+ downScreen: function() {
2009
+ this.zIndex > this.minZ && (this.zIndex -= 1, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex, this.$emit("drag-screen", [
2010
+ this.floated,
2011
+ this.top,
2012
+ this.left,
2013
+ this.zIndex
2014
+ ]));
2015
+ },
2016
+ floatScreen: function() {
2017
+ if (this.floated)
2018
+ this.$refs.bar.onmousedown = null, this.$refs.bar.parentElement.parentElement.style = "z-index: 0", this.floated = !1, this.$emit("unfloat-screen", [
2019
+ this.floated,
2020
+ this.top,
2021
+ this.left,
2022
+ this.zIndex
2023
+ ]);
2024
+ else {
2025
+ let t = this.$refs.bar.parentElement.parentElement.parentElement.getBoundingClientRect(), e = this.$refs.bar.getBoundingClientRect();
2026
+ this.top = e.top - t.top - 5, this.left = e.left - t.left - 5, this.$refs.bar.onmousedown = this.dragMouseDown, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex, this.floated = !0, this.$emit("float-screen", [
2027
+ this.floated,
2028
+ this.top,
2029
+ this.left,
2030
+ this.zIndex
2031
+ ]);
2032
+ }
2033
+ },
2034
+ dragMouseDown: function(t) {
2035
+ t = t || window.event, t.preventDefault(), this.dragX = t.clientX, this.dragY = t.clientY, document.onmouseup = this.closeDragElement, document.onmousemove = this.elementDrag;
2036
+ },
2037
+ elementDrag: function(t) {
2038
+ t = t || window.event, t.preventDefault();
2039
+ let e = this.dragX - t.clientX, l = this.dragY - t.clientY;
2040
+ this.dragX = t.clientX, this.dragY = t.clientY, this.top = this.$refs.bar.offsetTop - l, this.left = this.$refs.bar.offsetLeft - e, this.$emit("drag-screen", [
2041
+ this.floated,
2042
+ this.top,
2043
+ this.left,
2044
+ this.zIndex
2045
+ ]);
2046
+ },
2047
+ closeDragElement: function() {
2048
+ document.onmouseup = null, document.onmousemove = null;
2049
+ },
2050
+ rerender: function() {
2051
+ this.parseDefinition(), this.updateRefreshInterval(), this.screenKey = Math.floor(Math.random() * 1e6), this.$nextTick(function() {
2052
+ this.clearErrors(), this.$emit("edit-screen");
2053
+ });
2054
+ },
2055
+ cancelEdit: function() {
2056
+ this.file = null, this.editDialog = !1, this.currentDefinition = this.backup, this.rerender();
2057
+ },
2058
+ saveEdit: function(t) {
2059
+ this.editDialog = !1, this.currentDefinition = t, this.rerender(), this.$nextTick(function() {
2060
+ E.post(
2061
+ "/openc3-api/screen/",
2062
+ {
2063
+ data: {
2064
+ scope: window.openc3Scope,
2065
+ target: this.target,
2066
+ screen: this.screen,
2067
+ text: this.currentDefinition
2068
+ }
2069
+ },
2070
+ 0
2071
+ );
2072
+ });
2073
+ },
2074
+ deleteScreen: function() {
2075
+ this.editDialog = !1, E.delete(`/openc3-api/screen/${this.target}/${this.screen}`).then(
2076
+ (t) => {
2077
+ this.$emit("delete-screen");
2078
+ }
2079
+ );
2080
+ },
2081
+ minMaxTransition: function() {
2082
+ this.expand = !this.expand, this.$emit("min-max-screen");
2083
+ },
2084
+ processWidget: function(t, e, l, o) {
2085
+ let s = null;
2086
+ t === "NAMED_WIDGET" && (this.configParser.verify_num_parameters(
2087
+ 2,
2088
+ null,
2089
+ `${t} <Widget Name> <Widget Type> <Widget Settings... (optional)>`
2090
+ ), s = e[0].toUpperCase(), t = e[1].toUpperCase(), e = e.slice(2, e.length));
2091
+ const a = t.charAt(0).toUpperCase() + t.slice(1).toLowerCase() + "Widget";
2092
+ let u = [];
2093
+ if (u.push(["__SCREEN_ID__", this.screenId]), s !== null && u.push(["NAMED_WIDGET", s]), t === "VERTICAL" || t === "VERTICALBOX" || t === "HORIZONTAL" || t === "HORIZONTALBOX" || t === "MATRIXBYCOLUMNS" || t === "TABBOOK" || t === "TABITEM" || t === "CANVAS" || t === "RADIOGROUP" || t === "SCROLLWINDOW") {
2094
+ const m = {
2095
+ type: a,
2096
+ parameters: e,
2097
+ settings: u,
2098
+ screenValues: this.screenValues,
2099
+ screenTimeZone: this.timeZone,
2100
+ widgets: []
2101
+ };
2102
+ this.layoutStack.push(m), this.currentLayout.widgets.push(m), this.currentLayout = m;
2103
+ } else if (this.$options.components[a])
2104
+ this.currentLayout.widgets.push({
2105
+ type: a,
2106
+ target: this.target,
2107
+ parameters: e,
2108
+ settings: u,
2109
+ screenValues: this.screenValues,
2110
+ screenTimeZone: this.timeZone,
2111
+ line: l,
2112
+ lineNumber: o
2113
+ });
2114
+ else {
2115
+ let m = {
2116
+ type: "DynamicWidget",
2117
+ target: this.target,
2118
+ parameters: e,
2119
+ settings: u,
2120
+ screenValues: this.screenValues,
2121
+ screenTimeZone: this.timeZone,
2122
+ name: a,
2123
+ line: l,
2124
+ lineNumber: o
2125
+ };
2126
+ this.currentLayout.widgets.push(m), this.dynamicWidgets.push(m);
2127
+ }
2128
+ },
2129
+ applyGlobalSettings: function(t) {
2130
+ t.forEach((e) => {
2131
+ this.globalSettings.forEach((l) => {
2132
+ e.type.toLowerCase() === l[0].toLowerCase() + "widget" && e.settings.push(l.slice(1));
2133
+ }), e.widgets && this.applyGlobalSettings(e.widgets);
2134
+ });
2135
+ },
2136
+ update: function() {
2137
+ this.screenItems.length !== 0 && this.configError === !1 && this.api.get_tlm_values(this.screenItems, this.staleTime, this.cacheTimeout).then((t) => {
2138
+ this.clearErrors(), this.updateValues(t);
2139
+ }).catch((t) => {
2140
+ let e = JSON.stringify(t, null, 2);
2141
+ e.includes("no response received") || (this.configError = !0), this.errors.find((l) => l.message === e) || this.errors.length < B && this.errors.push({
2142
+ type: "error",
2143
+ message: e,
2144
+ time: (/* @__PURE__ */ new Date()).getTime()
2145
+ });
2146
+ });
2147
+ },
2148
+ updateValues: function(t) {
2149
+ this.updateCounter += 1;
2150
+ for (let e = 0; e < t.length; e++)
2151
+ t[e].push(this.updateCounter), this.screenValues[this.screenItems[e]] = t[e];
2152
+ },
2153
+ addItem: function(t) {
2154
+ this.screenItems.push(t), this.screenValues[t] = [null, null, 0];
2155
+ },
2156
+ deleteItem: function(t) {
2157
+ let e = this.screenItems.indexOf(t);
2158
+ this.screenItems.splice(e, 1);
2159
+ }
2160
+ }
2161
+ }, Le = {
2162
+ class: "pa-1",
2163
+ style: { position: "relative" },
2164
+ ref: "screen"
2165
+ };
2166
+ function Ue(t, e, l, o, s, a) {
2167
+ const u = r("v-icon"), m = r("v-tooltip"), h = r("v-spacer"), p = r("v-toolbar"), g = r("v-overlay"), f = r("vertical-widget"), k = r("v-expand-transition"), C = r("v-card"), T = r("edit-screen-dialog"), y = r("v-textarea"), v = r("v-dialog");
2168
+ return w(), F("div", {
2169
+ style: Z(a.computedStyle),
2170
+ ref: "bar"
2171
+ }, [
2172
+ i(C, {
2173
+ "min-height": s.height,
2174
+ "min-width": s.width,
2175
+ style: { cursor: "default" }
2176
+ }, {
2177
+ default: n(() => [
2178
+ i(p, { height: "24" }, {
2179
+ default: n(() => [
2180
+ A(d("div", null, [
2181
+ i(m, { location: "top" }, {
2182
+ activator: n(({ props: c }) => [
2183
+ d("div", S(D(c)), [
2184
+ i(u, {
2185
+ "data-test": "error-graph-icon",
2186
+ onClick: e[0] || (e[0] = (b) => s.errorDialog = !0)
2187
+ }, {
2188
+ default: n(() => e[7] || (e[7] = [
2189
+ _(" mdi-alert ")
2190
+ ])),
2191
+ _: 1
2192
+ })
2193
+ ], 16)
2194
+ ]),
2195
+ default: n(() => [
2196
+ e[8] || (e[8] = d("span", null, " Errors ", -1))
2197
+ ]),
2198
+ _: 1
2199
+ })
2200
+ ], 512), [
2201
+ [R, s.errors.length !== 0]
2202
+ ]),
2203
+ i(m, { location: "top" }, {
2204
+ activator: n(({ props: c }) => [
2205
+ d("div", S(D(c)), [
2206
+ i(u, {
2207
+ "data-test": "edit-screen-icon",
2208
+ onClick: a.openEdit
2209
+ }, {
2210
+ default: n(() => e[9] || (e[9] = [
2211
+ _(" mdi-pencil ")
2212
+ ])),
2213
+ _: 1
2214
+ }, 8, ["onClick"])
2215
+ ], 16)
2216
+ ]),
2217
+ default: n(() => [
2218
+ e[10] || (e[10] = d("span", null, " Edit Screen ", -1))
2219
+ ]),
2220
+ _: 1
2221
+ }),
2222
+ l.fixFloated ? V("", !0) : (w(), x(m, {
2223
+ key: 0,
2224
+ location: "top"
2225
+ }, {
2226
+ activator: n(({ props: c }) => [
2227
+ d("div", S(D(c)), [
2228
+ i(u, {
2229
+ "data-test": "float-screen-icon",
2230
+ onClick: a.floatScreen
2231
+ }, {
2232
+ default: n(() => [
2233
+ _(N(s.floated ? "mdi-balloon" : "mdi-view-grid-outline"), 1)
2234
+ ]),
2235
+ _: 1
2236
+ }, 8, ["onClick"])
2237
+ ], 16)
2238
+ ]),
2239
+ default: n(() => [
2240
+ d("span", null, N(s.floated ? "Unfloat Screen" : "Float Screen"), 1)
2241
+ ]),
2242
+ _: 1
2243
+ })),
2244
+ s.floated ? (w(), x(m, {
2245
+ key: 1,
2246
+ location: "top"
2247
+ }, {
2248
+ activator: n(({ props: c }) => [
2249
+ d("div", S(D(c)), [
2250
+ i(u, {
2251
+ "data-test": "up-screen-icon",
2252
+ onClick: a.upScreen
2253
+ }, {
2254
+ default: n(() => e[11] || (e[11] = [
2255
+ _(" mdi-arrow-up ")
2256
+ ])),
2257
+ _: 1
2258
+ }, 8, ["onClick"])
2259
+ ], 16)
2260
+ ]),
2261
+ default: n(() => [
2262
+ e[12] || (e[12] = d("span", null, " Move Screen Up ", -1))
2263
+ ]),
2264
+ _: 1
2265
+ })) : V("", !0),
2266
+ s.floated && s.zIndex > l.minZ ? (w(), x(m, {
2267
+ key: 2,
2268
+ location: "top"
2269
+ }, {
2270
+ activator: n(({ props: c }) => [
2271
+ d("div", S(D(c)), [
2272
+ i(u, {
2273
+ "data-test": "down-screen-icon",
2274
+ onClick: a.downScreen
2275
+ }, {
2276
+ default: n(() => e[13] || (e[13] = [
2277
+ _(" mdi-arrow-down ")
2278
+ ])),
2279
+ _: 1
2280
+ }, 8, ["onClick"])
2281
+ ], 16)
2282
+ ]),
2283
+ default: n(() => [
2284
+ e[14] || (e[14] = d("span", null, " Move Screen Down ", -1))
2285
+ ]),
2286
+ _: 1
2287
+ })) : V("", !0),
2288
+ i(h),
2289
+ d("span", null, N(l.target) + " " + N(l.screen), 1),
2290
+ i(h),
2291
+ i(m, { location: "top" }, {
2292
+ activator: n(({ props: c }) => [
2293
+ d("div", S(D(c)), [
2294
+ A(i(u, {
2295
+ "data-test": "minimize-screen-icon",
2296
+ onClick: a.minMaxTransition
2297
+ }, {
2298
+ default: n(() => e[15] || (e[15] = [
2299
+ _(" mdi-window-minimize ")
2300
+ ])),
2301
+ _: 1
2302
+ }, 8, ["onClick"]), [
2303
+ [R, s.expand]
2304
+ ]),
2305
+ A(i(u, {
2306
+ "data-test": "maximize-screen-icon",
2307
+ onClick: a.minMaxTransition
2308
+ }, {
2309
+ default: n(() => e[16] || (e[16] = [
2310
+ _(" mdi-window-maximize ")
2311
+ ])),
2312
+ _: 1
2313
+ }, 8, ["onClick"]), [
2314
+ [R, !s.expand]
2315
+ ])
2316
+ ], 16)
2317
+ ]),
2318
+ default: n(() => [
2319
+ A(d("span", null, " Minimize Screen ", 512), [
2320
+ [R, s.expand]
2321
+ ]),
2322
+ A(d("span", null, " Maximize Screen ", 512), [
2323
+ [R, !s.expand]
2324
+ ])
2325
+ ]),
2326
+ _: 1
2327
+ }),
2328
+ l.showClose ? (w(), x(m, {
2329
+ key: 3,
2330
+ location: "top"
2331
+ }, {
2332
+ activator: n(({ props: c }) => [
2333
+ d("div", S(D(c)), [
2334
+ i(u, {
2335
+ "data-test": "close-screen-icon",
2336
+ onClick: e[1] || (e[1] = (b) => t.$emit("close-screen"))
2337
+ }, {
2338
+ default: n(() => e[17] || (e[17] = [
2339
+ _(" mdi-close-box ")
2340
+ ])),
2341
+ _: 1
2342
+ })
2343
+ ], 16)
2344
+ ]),
2345
+ default: n(() => [
2346
+ e[18] || (e[18] = d("span", null, " Close Screen ", -1))
2347
+ ]),
2348
+ _: 1
2349
+ })) : V("", !0)
2350
+ ]),
2351
+ _: 1
2352
+ }),
2353
+ s.editDialog ? V("", !0) : (w(), x(k, { key: 0 }, {
2354
+ default: n(() => [
2355
+ A(d("div", Le, [
2356
+ i(g, {
2357
+ style: { "pointer-events": "none" },
2358
+ "model-value": s.errors.length !== 0,
2359
+ opacity: "0.8",
2360
+ absolute: "",
2361
+ attach: ""
2362
+ }, null, 8, ["model-value"]),
2363
+ (w(), x(f, {
2364
+ key: s.screenKey,
2365
+ widgets: s.layoutStack[0].widgets,
2366
+ "screen-values": s.screenValues,
2367
+ "screen-time-zone": l.timeZone,
2368
+ onAddItem: a.addItem,
2369
+ onDeleteItem: a.deleteItem,
2370
+ onOpen: a.open,
2371
+ onClose: a.close,
2372
+ onCloseAll: a.closeAll
2373
+ }, null, 8, ["widgets", "screen-values", "screen-time-zone", "onAddItem", "onDeleteItem", "onOpen", "onClose", "onCloseAll"]))
2374
+ ], 512), [
2375
+ [R, s.expand]
2376
+ ])
2377
+ ]),
2378
+ _: 1
2379
+ }))
2380
+ ]),
2381
+ _: 1
2382
+ }, 8, ["min-height", "min-width"]),
2383
+ s.editDialog ? (w(), x(T, {
2384
+ key: 0,
2385
+ modelValue: s.editDialog,
2386
+ "onUpdate:modelValue": e[2] || (e[2] = (c) => s.editDialog = c),
2387
+ target: l.target,
2388
+ screen: l.screen,
2389
+ definition: s.currentDefinition,
2390
+ keywords: l.keywords,
2391
+ errors: s.errors,
2392
+ onSave: e[3] || (e[3] = (c) => a.saveEdit(c)),
2393
+ onCancel: e[4] || (e[4] = (c) => a.cancelEdit()),
2394
+ onDelete: e[5] || (e[5] = (c) => a.deleteScreen())
2395
+ }, null, 8, ["modelValue", "target", "screen", "definition", "keywords", "errors"])) : V("", !0),
2396
+ i(v, {
2397
+ modelValue: s.errorDialog,
2398
+ "onUpdate:modelValue": e[6] || (e[6] = (c) => s.errorDialog = c),
2399
+ width: "60vw"
2400
+ }, {
2401
+ default: n(() => [
2402
+ i(p, { height: "24" }, {
2403
+ default: n(() => [
2404
+ i(h),
2405
+ d("span", null, " Screen: " + N(l.target) + " " + N(l.screen) + " Errors ", 1),
2406
+ i(h)
2407
+ ]),
2408
+ _: 1
2409
+ }),
2410
+ i(C, null, {
2411
+ default: n(() => [
2412
+ i(y, {
2413
+ class: "errors",
2414
+ readonly: "",
2415
+ rows: "13",
2416
+ "model-value": a.error
2417
+ }, null, 8, ["model-value"])
2418
+ ]),
2419
+ _: 1
2420
+ })
2421
+ ]),
2422
+ _: 1
2423
+ }, 8, ["modelValue"])
2424
+ ], 4);
2425
+ }
2426
+ const et = /* @__PURE__ */ O(Re, [["render", Ue], ["__scopeId", "data-v-8975e347"]]), Oe = {
2427
+ props: {
2428
+ allowAll: {
2429
+ type: Boolean,
2430
+ default: !1
2431
+ },
2432
+ allowAllTargets: {
2433
+ type: Boolean,
2434
+ default: !1
2435
+ },
2436
+ buttonText: {
2437
+ type: String,
2438
+ default: null
2439
+ },
2440
+ chooseItem: {
2441
+ type: Boolean,
2442
+ default: !1
2443
+ },
2444
+ disabled: {
2445
+ type: Boolean,
2446
+ default: !1
2447
+ },
2448
+ initialTargetName: {
2449
+ type: String,
2450
+ default: ""
2451
+ },
2452
+ initialPacketName: {
2453
+ type: String,
2454
+ default: ""
2455
+ },
2456
+ initialItemName: {
2457
+ type: String,
2458
+ default: ""
2459
+ },
2460
+ selectTypes: {
2461
+ type: Boolean,
2462
+ default: !1
2463
+ },
2464
+ mode: {
2465
+ type: String,
2466
+ default: "tlm",
2467
+ // TODO: add validators throughout
2468
+ validator: (t) => ["cmd", "tlm"].includes(t)
2469
+ },
2470
+ unknown: {
2471
+ type: Boolean,
2472
+ default: !1
2473
+ },
2474
+ vertical: {
2475
+ type: Boolean,
2476
+ default: !1
2477
+ },
2478
+ hidden: {
2479
+ type: Boolean,
2480
+ default: !1
2481
+ }
2482
+ },
2483
+ data() {
2484
+ var t, e, l;
2485
+ return {
2486
+ targetNames: [],
2487
+ selectedTargetName: (t = this.initialTargetName) == null ? void 0 : t.toUpperCase(),
2488
+ packetNames: [],
2489
+ selectedPacketName: (e = this.initialPacketName) == null ? void 0 : e.toUpperCase(),
2490
+ itemNames: [],
2491
+ selectedItemName: (l = this.initialItemName) == null ? void 0 : l.toUpperCase(),
2492
+ valueTypes: ["CONVERTED", "RAW"],
2493
+ selectedValueType: "CONVERTED",
2494
+ reductionModes: [
2495
+ // Map NONE to DECOM for clarity
2496
+ { title: "NONE", value: "DECOM" },
2497
+ { title: "REDUCED_MINUTE", value: "REDUCED_MINUTE" },
2498
+ { title: "REDUCED_HOUR", value: "REDUCED_HOUR" },
2499
+ { title: "REDUCED_DAY", value: "REDUCED_DAY" }
2500
+ ],
2501
+ selectedArrayIndex: null,
2502
+ selectedReduced: "DECOM",
2503
+ reducedTypes: ["MIN", "MAX", "AVG", "STDDEV"],
2504
+ selectedReducedType: "AVG",
2505
+ description: "",
2506
+ hazardous: !1,
2507
+ internalDisabled: !1,
2508
+ packetsDisabled: !1,
2509
+ itemsDisabled: !1,
2510
+ api: null,
2511
+ ALL: {
2512
+ label: "[ ALL ]",
2513
+ value: "ALL",
2514
+ description: "ALL"
2515
+ },
2516
+ // Constant to indicate all packets or items
2517
+ UNKNOWN: {
2518
+ label: "[ UNKNOWN ]",
2519
+ value: "UNKNOWN",
2520
+ description: "UNKNOWN"
2521
+ }
2522
+ };
2523
+ },
2524
+ created() {
2525
+ this.internalDisabled = !0, this.api = new L(), this.api.get_target_names().then((t) => {
2526
+ this.targetNames = t.flatMap((e) => e == "UNKNOWN" ? [] : { label: e, value: e }), this.allowAllTargets && this.targetNames.unshift(this.ALL), this.selectedTargetName ? this.updatePackets() : (this.selectedTargetName = this.targetNames[0].value, this.targetNameChanged(this.selectedTargetName)), this.unknown && this.targetNames.push(this.UNKNOWN);
2527
+ });
2528
+ },
2529
+ computed: {
2530
+ actualButtonText: function() {
2531
+ return this.selectedPacketName === "ALL" ? "Add Target" : this.selectedItemName === "ALL" ? "Add Packet" : this.buttonText;
2532
+ },
2533
+ autocompleteDisabled: function() {
2534
+ return this.disabled || this.internalDisabled;
2535
+ },
2536
+ buttonDisabled: function() {
2537
+ return this.disabled || this.internalDisabled || this.selectedTargetName === null || this.selectedPacketName === null || this.selectedItemNameWIndex === null;
2538
+ },
2539
+ colSize: function() {
2540
+ return this.vertical ? 12 : !1;
2541
+ },
2542
+ selectedItemNameWIndex: function() {
2543
+ return this.itemIsArray() && this.selectedArrayIndex !== null && this.selectedArrayIndex !== this.ALL.label ? `${this.selectedItemName}[${this.selectedArrayIndex}]` : this.selectedItemName;
2544
+ }
2545
+ },
2546
+ watch: {
2547
+ initialTargetName: function(t) {
2548
+ t && (this.selectedTargetName = t.toUpperCase());
2549
+ },
2550
+ initialPacketName: function(t) {
2551
+ t && (this.selectedPacketName = t.toUpperCase());
2552
+ },
2553
+ initialItemName: function(t) {
2554
+ t && (this.selectedItemName = t.toUpperCase());
2555
+ },
2556
+ mode: function(t, e) {
2557
+ this.selectedPacketName = null, this.selectedItemName = null, this.targetNameChanged(this.selectedTargetName);
2558
+ },
2559
+ chooseItem: function(t, e) {
2560
+ t ? this.updateItems() : this.itemNames = [];
2561
+ }
2562
+ },
2563
+ methods: {
2564
+ updatePackets: function() {
2565
+ if (this.selectedTargetName === "UNKNOWN") {
2566
+ this.packetNames = [this.UNKNOWN], this.selectedPacketName = this.packetNames[0].value, this.updatePacketDetails(this.UNKNOWN.value), this.description = "UNKNOWN";
2567
+ return;
2568
+ }
2569
+ if (this.selectedTargetName === "ALL") {
2570
+ this.packetNames = [this.ALL], this.selectedPacketName = this.packetNames[0].value, this.updatePacketDetails(this.ALL.value), this.description = "ALL";
2571
+ return;
2572
+ }
2573
+ this.internalDisabled = !0;
2574
+ const t = this.mode === "tlm" ? "get_all_tlm_names" : "get_all_cmd_names";
2575
+ this.api[t](this.selectedTargetName, this.hidden).then((e) => {
2576
+ this.packetNames = e.map((o) => ({
2577
+ label: o,
2578
+ value: o
2579
+ })), this.allowAll && this.packetNames.unshift(this.ALL), this.selectedPacketName || (this.selectedPacketName = this.packetNames[0].value), this.updatePacketDetails(this.selectedPacketName), this.packetNames.find((o) => o.value === this.selectedPacketName) && this.chooseItem && this.updateItems(), this.internalDisabled = !1;
2580
+ });
2581
+ },
2582
+ updateItems: function() {
2583
+ if (this.selectedPacketName === "ALL")
2584
+ return;
2585
+ this.internalDisabled = !0;
2586
+ const t = this.mode === "tlm" ? "get_tlm" : "get_cmd";
2587
+ this.api[t](this.selectedTargetName, this.selectedPacketName).then(
2588
+ (e) => {
2589
+ this.itemNames = e.items.map((l) => {
2590
+ let o = l.name;
2591
+ return l.data_type == "DERIVED" && (o += " *"), [
2592
+ {
2593
+ label: o,
2594
+ value: l.name,
2595
+ description: l.description,
2596
+ array: l.array_size / l.bit_size
2597
+ }
2598
+ ];
2599
+ }).reduce((l, o) => l.concat(o), []), this.itemNames.sort((l, o) => l.label > o.label ? 1 : -1), this.allowAll && this.itemNames.unshift(this.ALL), this.selectedItemName || (this.selectedItemName = this.itemNames[0].value), this.description = this.itemNames[0].description, this.itemIsArray(), this.$emit("on-set", {
2600
+ targetName: this.selectedTargetName,
2601
+ packetName: this.selectedPacketName,
2602
+ itemName: this.selectedItemNameWIndex,
2603
+ valueType: this.selectedValueType,
2604
+ reduced: this.selectedReduced,
2605
+ reducedType: this.selectedReducedType
2606
+ }), this.internalDisabled = !1;
2607
+ }
2608
+ );
2609
+ },
2610
+ itemIsArray: function() {
2611
+ let t = this.itemNames.findIndex(
2612
+ (e) => e.value === this.selectedItemName
2613
+ );
2614
+ return t === -1 ? (this.selectedArrayIndex = null, !1) : isNaN(this.itemNames[t].array) ? (this.selectedArrayIndex = null, !1) : (this.selectedArrayIndex === null && (this.selectedArrayIndex = 0), !0);
2615
+ },
2616
+ arrayIndexes: function() {
2617
+ let t = this.itemNames.findIndex(
2618
+ (l) => l.value === this.selectedItemName
2619
+ ), e = [...Array(this.itemNames[t].array).keys()];
2620
+ return this.allowAll && e.unshift(this.ALL.label), e;
2621
+ },
2622
+ targetNameChanged: function(t) {
2623
+ this.selectedTargetName = t, this.selectedPacketName = "", this.selectedItemName = "", t !== null && this.updatePackets();
2624
+ },
2625
+ packetNameChanged: function(t) {
2626
+ this.selectedItemName = "", t !== null && this.updatePacketDetails(t);
2627
+ },
2628
+ updatePacketDetails: function(t) {
2629
+ if (t === "ALL")
2630
+ this.itemsDisabled = !0, this.internalDisabled = !1;
2631
+ else {
2632
+ this.itemsDisabled = !1;
2633
+ const e = this.packetNames.find((l) => t === l.value);
2634
+ if (e) {
2635
+ this.selectedPacketName = e.value;
2636
+ const l = this.mode === "tlm" ? "get_tlm" : "get_cmd";
2637
+ this.api[l](this.selectedTargetName, this.selectedPacketName).then(
2638
+ (o) => {
2639
+ this.description = o.description, this.hazardous = o.hazardous;
2640
+ }
2641
+ );
2642
+ }
2643
+ }
2644
+ this.chooseItem ? this.updateItems() : this.$emit("on-set", {
2645
+ targetName: this.selectedTargetName,
2646
+ packetName: this.selectedPacketName,
2647
+ itemName: this.selectedItemNameWIndex,
2648
+ valueType: this.selectedValueType,
2649
+ reduced: this.selectedReduced,
2650
+ reducedType: this.selectedReducedType
2651
+ });
2652
+ },
2653
+ itemNameChanged: function(t) {
2654
+ const e = this.itemNames.find((l) => t === l.value);
2655
+ e && (this.itemIsArray(), this.selectedItemName = e.value, this.description = e.description, this.$emit("on-set", {
2656
+ targetName: this.selectedTargetName,
2657
+ packetName: this.selectedPacketName,
2658
+ itemName: this.selectedItemNameWIndex,
2659
+ valueType: this.selectedValueType,
2660
+ reduced: this.selectedReduced,
2661
+ reducedType: this.selectedReducedType
2662
+ }));
2663
+ },
2664
+ indexChanged: function(t) {
2665
+ this.$emit("on-set", {
2666
+ targetName: this.selectedTargetName,
2667
+ packetName: this.selectedPacketName,
2668
+ itemName: this.selectedItemNameWIndex,
2669
+ valueType: this.selectedValueType,
2670
+ reduced: this.selectedReduced,
2671
+ reducedType: this.selectedReducedType
2672
+ });
2673
+ },
2674
+ buttonPressed: function() {
2675
+ this.selectedPacketName === "ALL" ? this.allTargetPacketItems() : this.selectedItemName === "ALL" ? this.allPacketItems() : this.chooseItem ? this.$emit("addItem", {
2676
+ targetName: this.selectedTargetName,
2677
+ packetName: this.selectedPacketName,
2678
+ itemName: this.selectedItemNameWIndex,
2679
+ valueType: this.selectedValueType,
2680
+ reduced: this.selectedReduced,
2681
+ reducedType: this.selectedReducedType
2682
+ }) : this.$emit("addItem", {
2683
+ targetName: this.selectedTargetName,
2684
+ packetName: this.selectedPacketName,
2685
+ valueType: this.selectedValueType,
2686
+ reduced: this.selectedReduced,
2687
+ reducedType: this.selectedReducedType
2688
+ });
2689
+ },
2690
+ allTargetPacketItems: function() {
2691
+ this.packetNames.forEach((t) => {
2692
+ if (t === this.ALL) return;
2693
+ const e = this.mode === "tlm" ? "get_tlm" : "get_cmd";
2694
+ this.api[e](this.selectedTargetName, t.value).then(
2695
+ (l) => {
2696
+ l.items.forEach((o) => {
2697
+ this.$emit("addItem", {
2698
+ targetName: this.selectedTargetName,
2699
+ packetName: t.value,
2700
+ itemName: o.name,
2701
+ valueType: this.selectedValueType,
2702
+ reduced: this.selectedReduced,
2703
+ reducedType: this.selectedReducedType
2704
+ });
2705
+ });
2706
+ }
2707
+ );
2708
+ });
2709
+ },
2710
+ allPacketItems: function() {
2711
+ this.itemNames.forEach((t) => {
2712
+ t !== this.ALL && this.$emit("addItem", {
2713
+ targetName: this.selectedTargetName,
2714
+ packetName: this.selectedPacketName,
2715
+ itemName: t.value,
2716
+ valueType: this.selectedValueType,
2717
+ reduced: this.selectedReduced,
2718
+ reducedType: this.selectedReducedType
2719
+ });
2720
+ });
2721
+ }
2722
+ }
2723
+ }, Pe = { class: "pt-4 pb-4" };
2724
+ function Fe(t, e, l, o, s, a) {
2725
+ const u = r("v-autocomplete"), m = r("v-col"), h = r("v-combobox"), p = r("v-btn"), g = r("v-row");
2726
+ return w(), F("div", Pe, [
2727
+ i(g, {
2728
+ "no-gutters": !l.vertical
2729
+ }, {
2730
+ default: n(() => [
2731
+ i(m, {
2732
+ cols: a.colSize,
2733
+ class: "tpic-select pr-4",
2734
+ "data-test": "select-target"
2735
+ }, {
2736
+ default: n(() => [
2737
+ i(u, {
2738
+ label: "Select Target",
2739
+ "hide-details": "",
2740
+ density: "compact",
2741
+ variant: "outlined",
2742
+ "onUpdate:modelValue": [
2743
+ a.targetNameChanged,
2744
+ e[0] || (e[0] = (f) => s.selectedTargetName = f)
2745
+ ],
2746
+ items: s.targetNames,
2747
+ "item-title": "label",
2748
+ "item-value": "value",
2749
+ modelValue: s.selectedTargetName
2750
+ }, null, 8, ["onUpdate:modelValue", "items", "modelValue"])
2751
+ ]),
2752
+ _: 1
2753
+ }, 8, ["cols"]),
2754
+ i(m, {
2755
+ cols: a.colSize,
2756
+ class: "tpic-select pr-4",
2757
+ "data-test": "select-packet"
2758
+ }, {
2759
+ default: n(() => [
2760
+ i(u, {
2761
+ label: "Select Packet",
2762
+ "hide-details": "",
2763
+ density: "compact",
2764
+ variant: "outlined",
2765
+ "onUpdate:modelValue": [
2766
+ a.packetNameChanged,
2767
+ e[1] || (e[1] = (f) => s.selectedPacketName = f)
2768
+ ],
2769
+ disabled: s.packetsDisabled || a.autocompleteDisabled,
2770
+ items: s.packetNames,
2771
+ "item-title": "label",
2772
+ "item-value": "value",
2773
+ modelValue: s.selectedPacketName
2774
+ }, null, 8, ["onUpdate:modelValue", "disabled", "items", "modelValue"])
2775
+ ]),
2776
+ _: 1
2777
+ }, 8, ["cols"]),
2778
+ l.chooseItem ? (w(), x(m, {
2779
+ key: 0,
2780
+ cols: a.colSize,
2781
+ class: "tpic-select pr-4",
2782
+ "data-test": "select-item"
2783
+ }, {
2784
+ default: n(() => [
2785
+ i(u, {
2786
+ label: "Select Item",
2787
+ "hide-details": "",
2788
+ density: "compact",
2789
+ variant: "outlined",
2790
+ "onUpdate:modelValue": [
2791
+ e[2] || (e[2] = (f) => a.itemNameChanged(f)),
2792
+ e[3] || (e[3] = (f) => s.selectedItemName = f)
2793
+ ],
2794
+ disabled: s.itemsDisabled || a.autocompleteDisabled,
2795
+ items: s.itemNames,
2796
+ "item-title": "label",
2797
+ "item-value": "value",
2798
+ modelValue: s.selectedItemName
2799
+ }, null, 8, ["disabled", "items", "modelValue"])
2800
+ ]),
2801
+ _: 1
2802
+ }, 8, ["cols"])) : V("", !0),
2803
+ l.chooseItem && a.itemIsArray() ? (w(), x(m, {
2804
+ key: 1,
2805
+ cols: "1",
2806
+ class: "tpic-select pr-4",
2807
+ "data-test": "array-index",
2808
+ style: { "min-width": "105px" }
2809
+ }, {
2810
+ default: n(() => [
2811
+ i(h, {
2812
+ label: "Index",
2813
+ "hide-details": "",
2814
+ density: "compact",
2815
+ variant: "outlined",
2816
+ "onUpdate:modelValue": [
2817
+ e[4] || (e[4] = (f) => a.indexChanged(f)),
2818
+ e[5] || (e[5] = (f) => s.selectedArrayIndex = f)
2819
+ ],
2820
+ disabled: s.itemsDisabled || a.autocompleteDisabled,
2821
+ items: a.arrayIndexes(),
2822
+ "item-title": "label",
2823
+ "item-value": "value",
2824
+ modelValue: s.selectedArrayIndex
2825
+ }, null, 8, ["disabled", "items", "modelValue"])
2826
+ ]),
2827
+ _: 1
2828
+ })) : V("", !0),
2829
+ l.buttonText ? (w(), x(m, {
2830
+ key: 2,
2831
+ cols: a.colSize,
2832
+ style: { "max-width": "140px" }
2833
+ }, {
2834
+ default: n(() => [
2835
+ i(p, {
2836
+ disabled: a.buttonDisabled,
2837
+ color: "primary",
2838
+ "data-test": "select-send",
2839
+ onClick: a.buttonPressed
2840
+ }, {
2841
+ default: n(() => [
2842
+ _(N(a.actualButtonText), 1)
2843
+ ]),
2844
+ _: 1
2845
+ }, 8, ["disabled", "onClick"])
2846
+ ]),
2847
+ _: 1
2848
+ }, 8, ["cols"])) : V("", !0)
2849
+ ]),
2850
+ _: 1
2851
+ }, 8, ["no-gutters"]),
2852
+ l.selectTypes ? (w(), x(g, {
2853
+ key: 0,
2854
+ "no-gutters": "",
2855
+ class: "pt-6"
2856
+ }, {
2857
+ default: n(() => [
2858
+ i(m, {
2859
+ cols: a.colSize,
2860
+ class: "tpic-select pr-4",
2861
+ "data-test": "data-type"
2862
+ }, {
2863
+ default: n(() => [
2864
+ i(u, {
2865
+ label: "Value Type",
2866
+ "hide-details": "",
2867
+ density: "compact",
2868
+ variant: "outlined",
2869
+ items: s.valueTypes,
2870
+ modelValue: s.selectedValueType,
2871
+ "onUpdate:modelValue": e[6] || (e[6] = (f) => s.selectedValueType = f)
2872
+ }, null, 8, ["items", "modelValue"])
2873
+ ]),
2874
+ _: 1
2875
+ }, 8, ["cols"]),
2876
+ i(m, {
2877
+ cols: a.colSize,
2878
+ class: "tpic-select pr-4",
2879
+ "data-test": "reduced"
2880
+ }, {
2881
+ default: n(() => [
2882
+ i(u, {
2883
+ label: "Reduced",
2884
+ "hide-details": "",
2885
+ density: "compact",
2886
+ variant: "outlined",
2887
+ items: s.reductionModes,
2888
+ modelValue: s.selectedReduced,
2889
+ "onUpdate:modelValue": e[7] || (e[7] = (f) => s.selectedReduced = f)
2890
+ }, null, 8, ["items", "modelValue"])
2891
+ ]),
2892
+ _: 1
2893
+ }, 8, ["cols"]),
2894
+ i(m, {
2895
+ cols: a.colSize,
2896
+ class: "tpic-select pr-4",
2897
+ "data-test": "reduced-type"
2898
+ }, {
2899
+ default: n(() => [
2900
+ i(u, {
2901
+ label: "Reduced Type",
2902
+ "hide-details": "",
2903
+ density: "compact",
2904
+ variant: "outlined",
2905
+ disabled: s.selectedReduced === "DECOM",
2906
+ items: s.reducedTypes,
2907
+ modelValue: s.selectedReducedType,
2908
+ "onUpdate:modelValue": e[8] || (e[8] = (f) => s.selectedReducedType = f)
2909
+ }, null, 8, ["disabled", "items", "modelValue"])
2910
+ ]),
2911
+ _: 1
2912
+ }, 8, ["cols"]),
2913
+ i(m, {
2914
+ cols: a.colSize,
2915
+ style: { "max-width": "140px" }
2916
+ }, null, 8, ["cols"])
2917
+ ]),
2918
+ _: 1
2919
+ })) : V("", !0),
2920
+ i(g, {
2921
+ "no-gutters": "",
2922
+ class: "pa-3"
2923
+ }, {
2924
+ default: n(() => [
2925
+ i(m, {
2926
+ cols: a.colSize,
2927
+ class: $({ "openc3-yellow": s.hazardous })
2928
+ }, {
2929
+ default: n(() => [
2930
+ _(" Description: " + N(s.description) + " ", 1),
2931
+ s.hazardous ? (w(), F(H, { key: 0 }, [
2932
+ _(" (HAZARDOUS) ")
2933
+ ], 64)) : V("", !0)
2934
+ ]),
2935
+ _: 1
2936
+ }, 8, ["cols", "class"])
2937
+ ]),
2938
+ _: 1
2939
+ })
2940
+ ]);
2941
+ }
2942
+ const tt = /* @__PURE__ */ O(Oe, [["render", Fe], ["__scopeId", "data-v-9ec60fb0"]]);
2943
+ export {
2944
+ lt as AceEditorModes,
2945
+ Xe as Config,
2946
+ ct as CriticalCmdDialog,
2947
+ ot as DataViewerComponent,
2948
+ rt as DataViewerHistoryComponent,
2949
+ mt as DetailsDialog,
2950
+ _e as EditScreenDialog,
2951
+ ft as EnvironmentChooser,
2952
+ qe as EnvironmentDialog,
2953
+ Je as FileOpenSaveDialog,
2954
+ vt as Graph,
2955
+ _t as GraphEditDialog,
2956
+ yt as GraphEditItemDialog,
2957
+ Qe as LogMessages,
2958
+ $e as NotFound,
2959
+ Ye as OpenConfigDialog,
2960
+ et as Openc3Screen,
2961
+ nt as OutputDialog,
2962
+ je as SaveConfigDialog,
2963
+ le as ScreenCompleter,
2964
+ pt as ScriptChooser,
2965
+ wt as SimpleTextDialog,
2966
+ tt as TargetPacketItemChooser,
2967
+ xt as TextBoxDialog,
2968
+ Ct as TopBar,
2969
+ It as UpgradeToEnterpriseDialog
2970
+ };
2971
+ //# sourceMappingURL=components.js.map