@openc3/vue-common 6.2.0 → 6.2.1

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