@openc3/vue-common 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/ArrayWidget-BbsN1dzF.js +106 -0
  2. package/dist/ArrayWidget-BbsN1dzF.js.map +1 -0
  3. package/dist/ArrayWidget-DkjHrXsu.cjs +3 -0
  4. package/dist/ArrayWidget-DkjHrXsu.cjs.map +1 -0
  5. package/dist/ArrayplotWidget-CCKEyYIx.js +199 -0
  6. package/dist/ArrayplotWidget-CCKEyYIx.js.map +1 -0
  7. package/dist/ArrayplotWidget-COeaK_Lz.cjs +2 -0
  8. package/dist/ArrayplotWidget-COeaK_Lz.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-C6p07yWK.js +108 -0
  14. package/dist/BarColumn-C6p07yWK.js.map +1 -0
  15. package/dist/BarColumn-CJLW1nXy.cjs +2 -0
  16. package/dist/BarColumn-CJLW1nXy.cjs.map +1 -0
  17. package/dist/BlockWidget-BFVYgbd_.cjs +3 -0
  18. package/dist/BlockWidget-BFVYgbd_.cjs.map +1 -0
  19. package/dist/BlockWidget-DlCHbqZX.js +112 -0
  20. package/dist/BlockWidget-DlCHbqZX.js.map +1 -0
  21. package/dist/ButtonWidget-CtfJzCBR.js +166 -0
  22. package/dist/ButtonWidget-CtfJzCBR.js.map +1 -0
  23. package/dist/ButtonWidget-HN8UHsme.cjs +3 -0
  24. package/dist/ButtonWidget-HN8UHsme.cjs.map +1 -0
  25. package/dist/CanvasWidget-CHmkxxMO.cjs +2 -0
  26. package/dist/CanvasWidget-CHmkxxMO.cjs.map +1 -0
  27. package/dist/CanvasWidget-CqRlXc4r.js +39 -0
  28. package/dist/CanvasWidget-CqRlXc4r.js.map +1 -0
  29. package/dist/CanvasdotWidget--Xr_KsZs.js +19 -0
  30. package/dist/CanvasdotWidget--Xr_KsZs.js.map +1 -0
  31. package/dist/CanvasdotWidget-B4bUcKRc.cjs +2 -0
  32. package/dist/CanvasdotWidget-B4bUcKRc.cjs.map +1 -0
  33. package/dist/CanvasimageWidget-B5YozXoI.cjs +2 -0
  34. package/dist/CanvasimageWidget-B5YozXoI.cjs.map +1 -0
  35. package/dist/CanvasimageWidget-BPlj5QYK.js +58 -0
  36. package/dist/CanvasimageWidget-BPlj5QYK.js.map +1 -0
  37. package/dist/CanvasimagevalueWidget-DVFGLt8f.js +107 -0
  38. package/dist/CanvasimagevalueWidget-DVFGLt8f.js.map +1 -0
  39. package/dist/CanvasimagevalueWidget-Dx1HnbEw.cjs +2 -0
  40. package/dist/CanvasimagevalueWidget-Dx1HnbEw.cjs.map +1 -0
  41. package/dist/CanvaslabelWidget-CYNqmyP0.js +23 -0
  42. package/dist/CanvaslabelWidget-CYNqmyP0.js.map +1 -0
  43. package/dist/CanvaslabelWidget-DgadQD-D.cjs +2 -0
  44. package/dist/CanvaslabelWidget-DgadQD-D.cjs.map +1 -0
  45. package/dist/CanvaslabelvalueWidget-B7yIDmsn.js +42 -0
  46. package/dist/CanvaslabelvalueWidget-B7yIDmsn.js.map +1 -0
  47. package/dist/CanvaslabelvalueWidget-C3k5gx5c.cjs +2 -0
  48. package/dist/CanvaslabelvalueWidget-C3k5gx5c.cjs.map +1 -0
  49. package/dist/CanvaslineWidget-BICdxX0Q.js +28 -0
  50. package/dist/CanvaslineWidget-BICdxX0Q.js.map +1 -0
  51. package/dist/CanvaslineWidget-CYHkes0a.cjs +2 -0
  52. package/dist/CanvaslineWidget-CYHkes0a.cjs.map +1 -0
  53. package/dist/CanvaslinevalueWidget-5DzhZ22p.cjs +2 -0
  54. package/dist/CanvaslinevalueWidget-5DzhZ22p.cjs.map +1 -0
  55. package/dist/CanvaslinevalueWidget-Cq-Ddh0P.js +44 -0
  56. package/dist/CanvaslinevalueWidget-Cq-Ddh0P.js.map +1 -0
  57. package/dist/CheckbuttonWidget-B74AWeaW.js +37 -0
  58. package/dist/CheckbuttonWidget-B74AWeaW.js.map +1 -0
  59. package/dist/CheckbuttonWidget-BCzsXnIF.cjs +2 -0
  60. package/dist/CheckbuttonWidget-BCzsXnIF.cjs.map +1 -0
  61. package/dist/ComboboxWidget-CtyKbEWb.js +37 -0
  62. package/dist/ComboboxWidget-CtyKbEWb.js.map +1 -0
  63. package/dist/ComboboxWidget-DQgDyDAC.cjs +2 -0
  64. package/dist/ComboboxWidget-DQgDyDAC.cjs.map +1 -0
  65. package/dist/CriticalCmdDialog-BnxZlt7W.cjs +2 -0
  66. package/dist/CriticalCmdDialog-BnxZlt7W.cjs.map +1 -0
  67. package/dist/CriticalCmdDialog-DPIZOBeP.js +270 -0
  68. package/dist/CriticalCmdDialog-DPIZOBeP.js.map +1 -0
  69. package/dist/CustomIcon-Bop2mEnu.cjs +2 -0
  70. package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -0
  71. package/dist/CustomIcon-h5X7369N.js +50 -0
  72. package/dist/CustomIcon-h5X7369N.js.map +1 -0
  73. package/dist/DateWidget-BB4cIuUS.cjs +2 -0
  74. package/dist/DateWidget-BB4cIuUS.cjs.map +1 -0
  75. package/dist/DateWidget-BEVSczU8.js +40 -0
  76. package/dist/DateWidget-BEVSczU8.js.map +1 -0
  77. package/dist/DetailsDialog-DmEC5BTs.js +767 -0
  78. package/dist/DetailsDialog-DmEC5BTs.js.map +1 -0
  79. package/dist/DetailsDialog-mvxMFmgV.cjs +2 -0
  80. package/dist/DetailsDialog-mvxMFmgV.cjs.map +1 -0
  81. package/dist/DynamicWidget-BWEVCUfd.cjs +2 -0
  82. package/dist/DynamicWidget-BWEVCUfd.cjs.map +1 -0
  83. package/dist/DynamicWidget-CfMtj7H8.js +35 -0
  84. package/dist/DynamicWidget-CfMtj7H8.js.map +1 -0
  85. package/dist/EventListDialog-BHZLl28V.cjs +2 -0
  86. package/dist/EventListDialog-BHZLl28V.cjs.map +1 -0
  87. package/dist/EventListDialog-CSMSmCIT.js +1586 -0
  88. package/dist/EventListDialog-CSMSmCIT.js.map +1 -0
  89. package/dist/FormatvalueWidget-CdjCEAI7.cjs +2 -0
  90. package/dist/FormatvalueWidget-CdjCEAI7.cjs.map +1 -0
  91. package/dist/FormatvalueWidget-DN12xymS.js +44 -0
  92. package/dist/FormatvalueWidget-DN12xymS.js.map +1 -0
  93. package/dist/Graph-Bgo0cjl3.js +1988 -0
  94. package/dist/Graph-Bgo0cjl3.js.map +1 -0
  95. package/dist/Graph-Ujd2yaeI.cjs +2 -0
  96. package/dist/Graph-Ujd2yaeI.cjs.map +1 -0
  97. package/dist/GraphWidget-DurWDmpg.js +130 -0
  98. package/dist/GraphWidget-DurWDmpg.js.map +1 -0
  99. package/dist/GraphWidget-sid4Ws9H.cjs +2 -0
  100. package/dist/GraphWidget-sid4Ws9H.cjs.map +1 -0
  101. package/dist/HorizontalWidget-Cd_wl1b3.js +41 -0
  102. package/dist/HorizontalWidget-Cd_wl1b3.js.map +1 -0
  103. package/dist/HorizontalWidget-_6IR0cR8.cjs +2 -0
  104. package/dist/HorizontalWidget-_6IR0cR8.cjs.map +1 -0
  105. package/dist/HorizontalboxWidget-BcMTFBU-.js +47 -0
  106. package/dist/HorizontalboxWidget-BcMTFBU-.js.map +1 -0
  107. package/dist/HorizontalboxWidget-zmnurtv1.cjs +2 -0
  108. package/dist/HorizontalboxWidget-zmnurtv1.cjs.map +1 -0
  109. package/dist/HorizontallineWidget-CM-6WqCj.cjs +2 -0
  110. package/dist/HorizontallineWidget-CM-6WqCj.cjs.map +1 -0
  111. package/dist/HorizontallineWidget-CXFqHclf.js +16 -0
  112. package/dist/HorizontallineWidget-CXFqHclf.js.map +1 -0
  113. package/dist/IframeWidget-BPerHCCa.js +90 -0
  114. package/dist/IframeWidget-BPerHCCa.js.map +1 -0
  115. package/dist/IframeWidget-EhncMob0.cjs +2 -0
  116. package/dist/IframeWidget-EhncMob0.cjs.map +1 -0
  117. package/dist/ImageLoader-4N-7Gj61.js +36 -0
  118. package/dist/ImageLoader-4N-7Gj61.js.map +1 -0
  119. package/dist/ImageLoader-cRmBcpU9.cjs +2 -0
  120. package/dist/ImageLoader-cRmBcpU9.cjs.map +1 -0
  121. package/dist/ImageviewerWidget-Bv3CreXd.cjs +2 -0
  122. package/dist/ImageviewerWidget-Bv3CreXd.cjs.map +1 -0
  123. package/dist/ImageviewerWidget-Cw_H_HmZ.js +37 -0
  124. package/dist/ImageviewerWidget-Cw_H_HmZ.js.map +1 -0
  125. package/dist/InterfacesTab-B4glsR9Z.js +93 -0
  126. package/dist/InterfacesTab-B4glsR9Z.js.map +1 -0
  127. package/dist/InterfacesTab-Co1Kd6Fa.cjs +2 -0
  128. package/dist/InterfacesTab-Co1Kd6Fa.cjs.map +1 -0
  129. package/dist/LabelWidget-mMcf5S8K.cjs +2 -0
  130. package/dist/LabelWidget-mMcf5S8K.cjs.map +1 -0
  131. package/dist/LabelWidget-xrmcVeq8.js +48 -0
  132. package/dist/LabelWidget-xrmcVeq8.js.map +1 -0
  133. package/dist/LabelledWidget-BoYCuDaH.cjs +2 -0
  134. package/dist/LabelledWidget-BoYCuDaH.cjs.map +1 -0
  135. package/dist/LabelledWidget-D48QoyMk.js +42 -0
  136. package/dist/LabelledWidget-D48QoyMk.js.map +1 -0
  137. package/dist/LabelprogressbarWidget-C_950t6g.js +43 -0
  138. package/dist/LabelprogressbarWidget-C_950t6g.js.map +1 -0
  139. package/dist/LabelprogressbarWidget-DiucKsT2.cjs +2 -0
  140. package/dist/LabelprogressbarWidget-DiucKsT2.cjs.map +1 -0
  141. package/dist/LabelsparklineWidget-0KXQyPoU.js +44 -0
  142. package/dist/LabelsparklineWidget-0KXQyPoU.js.map +1 -0
  143. package/dist/LabelsparklineWidget-A3MTEhQc.cjs +2 -0
  144. package/dist/LabelsparklineWidget-A3MTEhQc.cjs.map +1 -0
  145. package/dist/LabelvalueWidget-CQ06wWDK.js +58 -0
  146. package/dist/LabelvalueWidget-CQ06wWDK.js.map +1 -0
  147. package/dist/LabelvalueWidget-DnKoz0-N.cjs +2 -0
  148. package/dist/LabelvalueWidget-DnKoz0-N.cjs.map +1 -0
  149. package/dist/LabelvaluedescWidget-Bo8zT01X.js +59 -0
  150. package/dist/LabelvaluedescWidget-Bo8zT01X.js.map +1 -0
  151. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs +2 -0
  152. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs.map +1 -0
  153. package/dist/LabelvaluelimitsbarWidget-BucTw8Yk.js +57 -0
  154. package/dist/LabelvaluelimitsbarWidget-BucTw8Yk.js.map +1 -0
  155. package/dist/LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs +2 -0
  156. package/dist/LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs.map +1 -0
  157. package/dist/LabelvaluelimitscolumnWidget-ClY5OxUC.cjs +2 -0
  158. package/dist/LabelvaluelimitscolumnWidget-ClY5OxUC.cjs.map +1 -0
  159. package/dist/LabelvaluelimitscolumnWidget-Dflb1hNd.js +47 -0
  160. package/dist/LabelvaluelimitscolumnWidget-Dflb1hNd.js.map +1 -0
  161. package/dist/LabelvaluerangebarWidget-9S5rVZaS.cjs +2 -0
  162. package/dist/LabelvaluerangebarWidget-9S5rVZaS.cjs.map +1 -0
  163. package/dist/LabelvaluerangebarWidget-D8cbfXFM.js +79 -0
  164. package/dist/LabelvaluerangebarWidget-D8cbfXFM.js.map +1 -0
  165. package/dist/Layout-DuCYyOw4.cjs +2 -0
  166. package/dist/Layout-DuCYyOw4.cjs.map +1 -0
  167. package/dist/Layout-Tf--nruw.js +14 -0
  168. package/dist/Layout-Tf--nruw.js.map +1 -0
  169. package/dist/LedWidget-B2BcwiYF.cjs +2 -0
  170. package/dist/LedWidget-B2BcwiYF.cjs.map +1 -0
  171. package/dist/LedWidget-qH_FthkK.js +145 -0
  172. package/dist/LedWidget-qH_FthkK.js.map +1 -0
  173. package/dist/LimitsbarWidget-B9lAB2RD.js +69 -0
  174. package/dist/LimitsbarWidget-B9lAB2RD.js.map +1 -0
  175. package/dist/LimitsbarWidget-CVCLFIhG.cjs +2 -0
  176. package/dist/LimitsbarWidget-CVCLFIhG.cjs.map +1 -0
  177. package/dist/LimitscolorWidget-DORhDxRo.cjs +2 -0
  178. package/dist/LimitscolorWidget-DORhDxRo.cjs.map +1 -0
  179. package/dist/LimitscolorWidget-c6Qa6su7.js +63 -0
  180. package/dist/LimitscolorWidget-c6Qa6su7.js.map +1 -0
  181. package/dist/LimitscolumnWidget-C9Uyg7Fh.cjs +2 -0
  182. package/dist/LimitscolumnWidget-C9Uyg7Fh.cjs.map +1 -0
  183. package/dist/LimitscolumnWidget-CcLs_443.js +66 -0
  184. package/dist/LimitscolumnWidget-CcLs_443.js.map +1 -0
  185. package/dist/LinegraphWidget-BSVYLFo1.js +39 -0
  186. package/dist/LinegraphWidget-BSVYLFo1.js.map +1 -0
  187. package/dist/LinegraphWidget-Bf8DIwEn.cjs +2 -0
  188. package/dist/LinegraphWidget-Bf8DIwEn.cjs.map +1 -0
  189. package/dist/MatrixbycolumnsWidget-DXFpZTre.js +56 -0
  190. package/dist/MatrixbycolumnsWidget-DXFpZTre.js.map +1 -0
  191. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs +2 -0
  192. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs.map +1 -0
  193. package/dist/MicroservicesTab-B5n-mN8G.cjs +2 -0
  194. package/dist/MicroservicesTab-B5n-mN8G.cjs.map +1 -0
  195. package/dist/MicroservicesTab-mCdS0v39.js +264 -0
  196. package/dist/MicroservicesTab-mCdS0v39.js.map +1 -0
  197. package/dist/Openc3Screen-BYhHaH_I.cjs +5 -0
  198. package/dist/Openc3Screen-BYhHaH_I.cjs.map +1 -0
  199. package/dist/Openc3Screen-Cud0OCFu.js +1789 -0
  200. package/dist/Openc3Screen-Cud0OCFu.js.map +1 -0
  201. package/dist/OutputDialog-DXoL9VPw.cjs +2 -0
  202. package/dist/OutputDialog-DXoL9VPw.cjs.map +1 -0
  203. package/dist/OutputDialog-zVPZiZay.js +242 -0
  204. package/dist/OutputDialog-zVPZiZay.js.map +1 -0
  205. package/dist/PackagesTab-CvT2JyMA.cjs +2 -0
  206. package/dist/PackagesTab-CvT2JyMA.cjs.map +1 -0
  207. package/dist/PackagesTab-SWcXumpK.js +332 -0
  208. package/dist/PackagesTab-SWcXumpK.js.map +1 -0
  209. package/dist/PluginsTab-B64OvayB.js +599 -0
  210. package/dist/PluginsTab-B64OvayB.js.map +1 -0
  211. package/dist/PluginsTab-CfpwWsqv.cjs +6 -0
  212. package/dist/PluginsTab-CfpwWsqv.cjs.map +1 -0
  213. package/dist/ProgressbarWidget-fGWa6ipm.cjs +2 -0
  214. package/dist/ProgressbarWidget-fGWa6ipm.cjs.map +1 -0
  215. package/dist/ProgressbarWidget-iYGw8-Dc.js +46 -0
  216. package/dist/ProgressbarWidget-iYGw8-Dc.js.map +1 -0
  217. package/dist/RadiobuttonWidget-ZEPJbOp_.cjs +2 -0
  218. package/dist/RadiobuttonWidget-ZEPJbOp_.cjs.map +1 -0
  219. package/dist/RadiobuttonWidget-ytmoVZ3u.js +34 -0
  220. package/dist/RadiobuttonWidget-ytmoVZ3u.js.map +1 -0
  221. package/dist/RadiogroupWidget-CusMBhKH.js +48 -0
  222. package/dist/RadiogroupWidget-CusMBhKH.js.map +1 -0
  223. package/dist/RadiogroupWidget-EK4rEGUC.cjs +2 -0
  224. package/dist/RadiogroupWidget-EK4rEGUC.cjs.map +1 -0
  225. package/dist/RangebarWidget-D_zGTtCa.js +67 -0
  226. package/dist/RangebarWidget-D_zGTtCa.js.map +1 -0
  227. package/dist/RangebarWidget-DwIs-L5k.cjs +2 -0
  228. package/dist/RangebarWidget-DwIs-L5k.cjs.map +1 -0
  229. package/dist/RedisTab-67UcKoPf.cjs +2 -0
  230. package/dist/RedisTab-67UcKoPf.cjs.map +1 -0
  231. package/dist/RedisTab-CyPo6ADN.js +135 -0
  232. package/dist/RedisTab-CyPo6ADN.js.map +1 -0
  233. package/dist/RollupWidget-DC3OIP6G.cjs +2 -0
  234. package/dist/RollupWidget-DC3OIP6G.cjs.map +1 -0
  235. package/dist/RollupWidget-Dolsixyt.js +83 -0
  236. package/dist/RollupWidget-Dolsixyt.js.map +1 -0
  237. package/dist/RoutersTab-BBPlFi_z.cjs +2 -0
  238. package/dist/RoutersTab-BBPlFi_z.cjs.map +1 -0
  239. package/dist/RoutersTab-Cs2dFVNA.js +95 -0
  240. package/dist/RoutersTab-Cs2dFVNA.js.map +1 -0
  241. package/dist/ScriptChooser-EV65rbWx.js +199 -0
  242. package/dist/ScriptChooser-EV65rbWx.js.map +1 -0
  243. package/dist/ScriptChooser-vyZwngrz.cjs +2 -0
  244. package/dist/ScriptChooser-vyZwngrz.cjs.map +1 -0
  245. package/dist/ScrollwindowWidget-BWeqSUPc.cjs +2 -0
  246. package/dist/ScrollwindowWidget-BWeqSUPc.cjs.map +1 -0
  247. package/dist/ScrollwindowWidget-DV2nZuNi.js +45 -0
  248. package/dist/ScrollwindowWidget-DV2nZuNi.js.map +1 -0
  249. package/dist/SecretsTab-0IFqUxNJ.cjs +2 -0
  250. package/dist/SecretsTab-0IFqUxNJ.cjs.map +1 -0
  251. package/dist/SecretsTab-DVyyyGlG.js +202 -0
  252. package/dist/SecretsTab-DVyyyGlG.js.map +1 -0
  253. package/dist/SettingsTab-B1LvOLG2.cjs +3 -0
  254. package/dist/SettingsTab-B1LvOLG2.cjs.map +1 -0
  255. package/dist/SettingsTab-g29K6FyC.js +1445 -0
  256. package/dist/SettingsTab-g29K6FyC.js.map +1 -0
  257. package/dist/SignalWidget-RvRwpE8T.cjs +2 -0
  258. package/dist/SignalWidget-RvRwpE8T.cjs.map +1 -0
  259. package/dist/SignalWidget-d9-6h85k.js +66 -0
  260. package/dist/SignalWidget-d9-6h85k.js.map +1 -0
  261. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs +2 -0
  262. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs.map +1 -0
  263. package/dist/SimpleTextDialog-pwN8oRy1.js +107 -0
  264. package/dist/SimpleTextDialog-pwN8oRy1.js.map +1 -0
  265. package/dist/SpacerWidget-7_8bpLCb.cjs +2 -0
  266. package/dist/SpacerWidget-7_8bpLCb.cjs.map +1 -0
  267. package/dist/SpacerWidget-BH0p2OLi.js +19 -0
  268. package/dist/SpacerWidget-BH0p2OLi.js.map +1 -0
  269. package/dist/SparklineWidget-60jVlbHA.cjs +2 -0
  270. package/dist/SparklineWidget-60jVlbHA.cjs.map +1 -0
  271. package/dist/SparklineWidget-coxi9r2g.js +48 -0
  272. package/dist/SparklineWidget-coxi9r2g.js.map +1 -0
  273. package/dist/TabbookWidget-B1XKplGH.js +66 -0
  274. package/dist/TabbookWidget-B1XKplGH.js.map +1 -0
  275. package/dist/TabbookWidget-D1CVT9IK.cjs +2 -0
  276. package/dist/TabbookWidget-D1CVT9IK.cjs.map +1 -0
  277. package/dist/TargetsTab-BkBkXn9A.js +129 -0
  278. package/dist/TargetsTab-BkBkXn9A.js.map +1 -0
  279. package/dist/TargetsTab-C-m26Eqq.cjs +2 -0
  280. package/dist/TargetsTab-C-m26Eqq.cjs.map +1 -0
  281. package/dist/TextBoxDialog-DOJ5d2RM.js +110 -0
  282. package/dist/TextBoxDialog-DOJ5d2RM.js.map +1 -0
  283. package/dist/TextBoxDialog-DfMXg_5C.cjs +2 -0
  284. package/dist/TextBoxDialog-DfMXg_5C.cjs.map +1 -0
  285. package/dist/TextboxWidget-BDG4NxRw.cjs +2 -0
  286. package/dist/TextboxWidget-BDG4NxRw.cjs.map +1 -0
  287. package/dist/TextboxWidget-C-_M2M4l.js +93 -0
  288. package/dist/TextboxWidget-C-_M2M4l.js.map +1 -0
  289. package/dist/TextfieldWidget-BGJv9Lox.cjs +2 -0
  290. package/dist/TextfieldWidget-BGJv9Lox.cjs.map +1 -0
  291. package/dist/TextfieldWidget-C08N4JE8.js +37 -0
  292. package/dist/TextfieldWidget-C08N4JE8.js.map +1 -0
  293. package/dist/TimeWidget-CGCOIouj.cjs +2 -0
  294. package/dist/TimeWidget-CGCOIouj.cjs.map +1 -0
  295. package/dist/TimeWidget-DtwdEcFg.js +40 -0
  296. package/dist/TimeWidget-DtwdEcFg.js.map +1 -0
  297. package/dist/TitleWidget-BljFH9RB.cjs +2 -0
  298. package/dist/TitleWidget-BljFH9RB.cjs.map +1 -0
  299. package/dist/TitleWidget-CT-aLcNb.js +26 -0
  300. package/dist/TitleWidget-CT-aLcNb.js.map +1 -0
  301. package/dist/ToolsTab-NveeVXz2.js +1521 -0
  302. package/dist/ToolsTab-NveeVXz2.js.map +1 -0
  303. package/dist/ToolsTab-RMTst_Sy.cjs +7 -0
  304. package/dist/ToolsTab-RMTst_Sy.cjs.map +1 -0
  305. package/dist/TopBar-CnJNNJlV.js +278 -0
  306. package/dist/TopBar-CnJNNJlV.js.map +1 -0
  307. package/dist/TopBar-Cnmb6DyC.cjs +2 -0
  308. package/dist/TopBar-Cnmb6DyC.cjs.map +1 -0
  309. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js +94 -0
  310. package/dist/UpgradeToEnterpriseDialog-BvfgoNB1.js.map +1 -0
  311. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs +2 -0
  312. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs.map +1 -0
  313. package/dist/VWidget-2N2cOosI.cjs +2 -0
  314. package/dist/VWidget-2N2cOosI.cjs.map +1 -0
  315. package/dist/VWidget-DQqb7NVW.js +323 -0
  316. package/dist/VWidget-DQqb7NVW.js.map +1 -0
  317. package/dist/ValueWidget-C6RanBj3.js +116 -0
  318. package/dist/ValueWidget-C6RanBj3.js.map +1 -0
  319. package/dist/ValueWidget-Cu7hgKja.cjs +2 -0
  320. package/dist/ValueWidget-Cu7hgKja.cjs.map +1 -0
  321. package/dist/ValuelimitsbarWidget-B3bvjfxc.js +41 -0
  322. package/dist/ValuelimitsbarWidget-B3bvjfxc.js.map +1 -0
  323. package/dist/ValuelimitsbarWidget-C0HROxrb.cjs +2 -0
  324. package/dist/ValuelimitsbarWidget-C0HROxrb.cjs.map +1 -0
  325. package/dist/ValuelimitscolumnWidget-CWvLfg8u.cjs +2 -0
  326. package/dist/ValuelimitscolumnWidget-CWvLfg8u.cjs.map +1 -0
  327. package/dist/ValuelimitscolumnWidget-QvhI6EcE.js +40 -0
  328. package/dist/ValuelimitscolumnWidget-QvhI6EcE.js.map +1 -0
  329. package/dist/ValuerangebarWidget-Dt3K9BnC.js +65 -0
  330. package/dist/ValuerangebarWidget-Dt3K9BnC.js.map +1 -0
  331. package/dist/ValuerangebarWidget-DyN78cQl.cjs +2 -0
  332. package/dist/ValuerangebarWidget-DyN78cQl.cjs.map +1 -0
  333. package/dist/VerticalWidget-BIIViZgI.js +40 -0
  334. package/dist/VerticalWidget-BIIViZgI.js.map +1 -0
  335. package/dist/VerticalWidget-CFTOu4H8.cjs +2 -0
  336. package/dist/VerticalWidget-CFTOu4H8.cjs.map +1 -0
  337. package/dist/VerticalboxWidget-DY72fLHW.js +46 -0
  338. package/dist/VerticalboxWidget-DY72fLHW.js.map +1 -0
  339. package/dist/VerticalboxWidget-Z8-DWI8t.cjs +2 -0
  340. package/dist/VerticalboxWidget-Z8-DWI8t.cjs.map +1 -0
  341. package/dist/Widget-ChoIB2dd.cjs +2 -0
  342. package/dist/Widget-ChoIB2dd.cjs.map +1 -0
  343. package/dist/Widget-oyqWpFXJ.js +197 -0
  344. package/dist/Widget-oyqWpFXJ.js.map +1 -0
  345. package/dist/WidgetComponents-C1lSLZ0I.js +30205 -0
  346. package/dist/WidgetComponents-C1lSLZ0I.js.map +1 -0
  347. package/dist/WidgetComponents-utpQ592X.cjs +1493 -0
  348. package/dist/WidgetComponents-utpQ592X.cjs.map +1 -0
  349. package/dist/addMonths-BtG7uZLJ.js +19 -0
  350. package/dist/addMonths-BtG7uZLJ.js.map +1 -0
  351. package/dist/addMonths-n1tnl3ab.cjs +2 -0
  352. package/dist/addMonths-n1tnl3ab.cjs.map +1 -0
  353. package/dist/components.cjs +4 -0
  354. package/dist/components.cjs.map +1 -0
  355. package/dist/components.js +1379 -0
  356. package/dist/components.js.map +1 -0
  357. package/dist/fileIcon-BduOQcTc.cjs +2 -0
  358. package/dist/fileIcon-BduOQcTc.cjs.map +1 -0
  359. package/dist/fileIcon-DqRHb1_Z.js +22 -0
  360. package/dist/fileIcon-DqRHb1_Z.js.map +1 -0
  361. package/dist/format-B22VpiOS.cjs +2 -0
  362. package/dist/format-B22VpiOS.cjs.map +1 -0
  363. package/dist/format-CVeawcIv.js +1295 -0
  364. package/dist/format-CVeawcIv.js.map +1 -0
  365. package/dist/getDefaultOptions-Batab9o8.cjs +2 -0
  366. package/dist/getDefaultOptions-Batab9o8.cjs.map +1 -0
  367. package/dist/getDefaultOptions-BhSDk-Jo.js +8 -0
  368. package/dist/getDefaultOptions-BhSDk-Jo.js.map +1 -0
  369. package/dist/icons/status-dark.png +0 -0
  370. package/dist/icons/status-dark.xcf +0 -0
  371. package/dist/icons/status-light.png +0 -0
  372. package/dist/icons.cjs +2 -0
  373. package/dist/icons.cjs.map +1 -0
  374. package/dist/icons.js +164 -0
  375. package/dist/icons.js.map +1 -0
  376. package/dist/index-BX05anye.cjs +7 -0
  377. package/dist/index-BX05anye.cjs.map +1 -0
  378. package/dist/index-DwP8ryNM.js +1694 -0
  379. package/dist/index-DwP8ryNM.js.map +1 -0
  380. package/dist/parse-DnkEsW-3.js +1603 -0
  381. package/dist/parse-DnkEsW-3.js.map +1 -0
  382. package/dist/parse-DwfgQboe.cjs +2 -0
  383. package/dist/parse-DwfgQboe.cjs.map +1 -0
  384. package/dist/plugins.cjs +9 -0
  385. package/dist/plugins.cjs.map +1 -0
  386. package/dist/plugins.js +776 -0
  387. package/dist/plugins.js.map +1 -0
  388. package/dist/timeFilters-8SaYvcH0.cjs +2 -0
  389. package/dist/timeFilters-8SaYvcH0.cjs.map +1 -0
  390. package/dist/timeFilters-CRYpYDdf.js +622 -0
  391. package/dist/timeFilters-CRYpYDdf.js.map +1 -0
  392. package/dist/tools/admin.cjs +13 -0
  393. package/dist/tools/admin.cjs.map +1 -0
  394. package/dist/tools/admin.js +2024 -0
  395. package/dist/tools/admin.js.map +1 -0
  396. package/dist/tools/base.cjs +2 -0
  397. package/dist/tools/base.cjs.map +1 -0
  398. package/dist/tools/base.js +1677 -0
  399. package/dist/tools/base.js.map +1 -0
  400. package/dist/tools/calendar.cjs +2 -0
  401. package/dist/tools/calendar.cjs.map +1 -0
  402. package/dist/tools/calendar.js +12 -0
  403. package/dist/tools/calendar.js.map +1 -0
  404. package/dist/tools/scriptrunner.cjs +86 -0
  405. package/dist/tools/scriptrunner.cjs.map +1 -0
  406. package/dist/tools/scriptrunner.js +4564 -0
  407. package/dist/tools/scriptrunner.js.map +1 -0
  408. package/dist/util.cjs +2 -0
  409. package/dist/util.cjs.map +1 -0
  410. package/dist/util.js +9 -0
  411. package/dist/util.js.map +1 -0
  412. package/dist/vue-common.css +1 -0
  413. package/dist/widgets.cjs +2 -0
  414. package/dist/widgets.cjs.map +1 -0
  415. package/dist/widgets.js +132 -0
  416. package/dist/widgets.js.map +1 -0
  417. package/package.json +20 -15
@@ -0,0 +1,1789 @@
1
+ import { o as I, h as q, b as L, W as Y, e as H, f as j } from "./WidgetComponents-C1lSLZ0I.js";
2
+ import { resolveComponent as d, createBlock as x, openBlock as m, withCtx as i, createVNode as s, createElementVNode as u, normalizeProps as D, guardReactiveProps as A, createTextVNode as g, toDisplayString as w, withModifiers as M, createElementBlock as V, Fragment as U, renderList as B, ref as $, computed as J, watch as W, createCommentVNode as T, withKeys as Z, withDirectives as F, vShow as O, normalizeStyle as Q } from "vue";
3
+ import { _ as N } from "./CustomIcon-h5X7369N.js";
4
+ import { f as ee } from "./fileIcon-DqRHb1_Z.js";
5
+ import { A as P } from "./TopBar-CnJNNJlV.js";
6
+ class te {
7
+ constructor() {
8
+ I.get("/openc3-api/autocomplete/data/screen").then((e) => {
9
+ this.autocompleteData = e.data;
10
+ }), this.api = new q();
11
+ }
12
+ async getCompletions(e, n, r, l, o) {
13
+ let f = n.getLine(r.row).slice(0, r.column).trimStart().split(/ (?![^<]*>)/), p = this.autocompleteData;
14
+ f.length > 1 && (p = p.find((_) => _.caption === f[0]));
15
+ let h = {}, c = !0;
16
+ if (p && p.params) {
17
+ p.params.length == f.length - 1 && (c = !1);
18
+ let _ = p.params[f.length - 2];
19
+ if (_["Target name"])
20
+ p = (await this.api.get_target_names()).reduce(
21
+ (k, S) => (k[S] = 1, k),
22
+ {}
23
+ );
24
+ else if (_["Packet name"]) {
25
+ let b = f[f.length - 2];
26
+ p = (await this.api.get_all_tlm(b)).reduce(
27
+ (S, E) => (S[E.packet_name] = E.description, S),
28
+ {}
29
+ );
30
+ } else if (_["Item name"]) {
31
+ let b = f[f.length - 3], k = f[f.length - 2];
32
+ p = (await this.api.get_tlm(b, k)).items.reduce(
33
+ (E, a) => (E[a.name] = a.description, E),
34
+ {}
35
+ );
36
+ } else
37
+ p = _;
38
+ h = Object.keys(p || {}).map((b) => {
39
+ let k = {
40
+ value: b + (c ? " " : ""),
41
+ // We want the autoComplete to continue right up
42
+ // to the last parameter
43
+ command: c && "startAutocomplete"
44
+ };
45
+ return typeof p[b] == "string" && (k.meta = p[b]), k;
46
+ });
47
+ } else
48
+ h = p;
49
+ o(null, h);
50
+ }
51
+ }
52
+ const ne = {
53
+ props: {
54
+ modelValue: Boolean,
55
+ target: {
56
+ type: String,
57
+ default: ""
58
+ },
59
+ screen: {
60
+ type: String,
61
+ default: ""
62
+ },
63
+ definition: {
64
+ type: String,
65
+ default: ""
66
+ },
67
+ keywords: {
68
+ type: Array,
69
+ default: () => []
70
+ },
71
+ errors: {
72
+ type: Array,
73
+ default: () => []
74
+ }
75
+ },
76
+ data() {
77
+ return {
78
+ file: null,
79
+ docsKeyword: "",
80
+ contextMenu: !1,
81
+ menuX: 0,
82
+ menuY: 0
83
+ };
84
+ },
85
+ computed: {
86
+ editErrors: function() {
87
+ if (this.definition === "" && !this.file)
88
+ return ["Input can not be blank."];
89
+ if (this.errors.length !== 0) {
90
+ let t = /* @__PURE__ */ new Set(), e = [];
91
+ const n = this.errors.toSorted(
92
+ (r, l) => r.lineNumber - l.lineNumber
93
+ );
94
+ for (const r of n) {
95
+ let l = `At ${r.lineNumber}: (${r.line}) ${r.message}.`;
96
+ r.usage && (l += ` Usage: ${r.usage}`), e.push(l), t.add(r.message);
97
+ }
98
+ return e;
99
+ }
100
+ return [];
101
+ },
102
+ show: {
103
+ get() {
104
+ return this.modelValue;
105
+ },
106
+ set(t) {
107
+ this.$emit("update:modelValue", t);
108
+ }
109
+ }
110
+ },
111
+ mounted: function() {
112
+ this.editor = L.edit(this.$refs.editor), this.editor.setTheme("ace/theme/twilight");
113
+ const t = this.buildScreenMode();
114
+ 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 te()], this.editor.setHighlightActiveLine(!1), this.editor.setValue(this.definition), this.editor.clearSelection(), P.applyVimModeIfEnabled(this.editor), this.editor.focus();
115
+ },
116
+ beforeUnmount() {
117
+ this.editor.destroy(), this.editor.container.remove();
118
+ },
119
+ methods: {
120
+ toggleVimMode: function() {
121
+ P.toggleVimMode(this.editor);
122
+ },
123
+ showContextMenu: function(t) {
124
+ this.menuX = t.pageX, this.menuY = t.pageY;
125
+ let e = this.editor.getCursorPosition(), n = this.editor.session.getTokenAt(e.row, e.column);
126
+ if (n) {
127
+ let r = n.value.trim();
128
+ r.includes(" ") ? this.docsKeyword = r.split(" ")[0] : this.docsKeyword = r, this.contextMenu = !0;
129
+ }
130
+ },
131
+ openDocumentation() {
132
+ window.open(
133
+ `${window.location.origin}/tools/staticdocs/docs/configuration/telemetry-screens#${this.docsKeyword.toLowerCase()}`,
134
+ "_blank"
135
+ );
136
+ },
137
+ buildScreenMode() {
138
+ let t = L.require("ace/lib/oop"), e = L.require(
139
+ "ace/mode/text_highlight_rules"
140
+ ).TextHighlightRules, n = this.keywords.join("|"), r = function() {
141
+ this.$rules = {
142
+ start: [
143
+ {
144
+ token: "comment",
145
+ regex: "#.*$"
146
+ },
147
+ {
148
+ token: "string",
149
+ regex: '".*?"'
150
+ },
151
+ {
152
+ token: "string",
153
+ regex: "'.*?'"
154
+ },
155
+ {
156
+ token: "constant.numeric",
157
+ regex: "\\b\\d+(?:\\.\\d+)?\\b"
158
+ },
159
+ {
160
+ token: "keyword",
161
+ regex: new RegExp(`^\\s*(${n})\\b`)
162
+ }
163
+ ]
164
+ }, this.normalizeRules();
165
+ };
166
+ t.inherits(r, e);
167
+ let l = function() {
168
+ this.HighlightRules = r;
169
+ }, o = L.require("ace/mode/text").Mode;
170
+ return t.inherits(l, o), (function() {
171
+ this.$id = "ace/mode/openc3";
172
+ }).call(l.prototype), l;
173
+ },
174
+ downloadScreen: function() {
175
+ const t = new Blob([this.editor.getValue()], {
176
+ type: "text/plain"
177
+ }), e = document.createElement("a");
178
+ e.href = URL.createObjectURL(t), e.setAttribute("download", `${this.screen.toLowerCase()}.txt`), e.click();
179
+ },
180
+ loadFile: function() {
181
+ const t = new FileReader();
182
+ t.readAsText(this.file);
183
+ const e = this;
184
+ t.onload = function() {
185
+ e.editor.setValue(t.result), e.file = null;
186
+ };
187
+ },
188
+ deleteScreen: function() {
189
+ this.$dialog.confirm("Are you sure you want to delete this screen?!", {
190
+ okText: "Delete",
191
+ cancelText: "Cancel"
192
+ }).then((t) => {
193
+ this.$emit("delete");
194
+ });
195
+ }
196
+ }
197
+ }, ie = { class: "mx-2" }, se = { class: "mx-2" }, le = ["textContent"];
198
+ function oe(t, e, n, r, l, o) {
199
+ const v = d("v-icon"), y = d("v-tooltip"), f = d("v-spacer"), p = d("v-toolbar"), h = d("v-row"), c = d("v-btn"), _ = d("v-file-input"), b = d("v-list-item-title"), k = d("v-list-item"), S = d("v-divider"), E = d("v-list"), a = d("v-menu"), R = d("v-card-text"), K = d("v-card"), G = d("v-dialog");
200
+ return m(), x(G, {
201
+ persistent: "",
202
+ modelValue: o.show,
203
+ "onUpdate:modelValue": e[5] || (e[5] = (C) => o.show = C),
204
+ width: "75vw"
205
+ }, {
206
+ default: i(() => [
207
+ s(K, null, {
208
+ default: i(() => [
209
+ s(p, { height: "24" }, {
210
+ default: i(() => [
211
+ u("div", ie, [
212
+ s(y, { location: "top" }, {
213
+ activator: i(({ props: C }) => [
214
+ u("div", D(A(C)), [
215
+ s(v, {
216
+ "data-test": "delete-screen-icon",
217
+ onClick: o.deleteScreen
218
+ }, {
219
+ default: i(() => e[6] || (e[6] = [
220
+ g(" mdi-delete ")
221
+ ])),
222
+ _: 1
223
+ }, 8, ["onClick"])
224
+ ], 16)
225
+ ]),
226
+ default: i(() => [
227
+ e[7] || (e[7] = u("span", null, " Delete Screen ", -1))
228
+ ]),
229
+ _: 1
230
+ })
231
+ ]),
232
+ s(f),
233
+ u("span", null, " Edit Screen: " + w(n.target) + " " + w(n.screen), 1),
234
+ s(f),
235
+ u("div", se, [
236
+ s(y, { location: "top" }, {
237
+ activator: i(({ props: C }) => [
238
+ u("div", D(A(C)), [
239
+ s(v, {
240
+ "data-test": "download-screen-icon",
241
+ onClick: o.downloadScreen
242
+ }, {
243
+ default: i(() => e[8] || (e[8] = [
244
+ g(" mdi-download ")
245
+ ])),
246
+ _: 1
247
+ }, 8, ["onClick"])
248
+ ], 16)
249
+ ]),
250
+ default: i(() => [
251
+ e[9] || (e[9] = u("span", null, " Download Screen ", -1))
252
+ ]),
253
+ _: 1
254
+ })
255
+ ])
256
+ ]),
257
+ _: 1
258
+ }),
259
+ s(R, { style: { "max-height": "90vh" } }, {
260
+ default: i(() => [
261
+ s(h, { class: "mt-3" }, {
262
+ default: i(() => e[10] || (e[10] = [
263
+ g(" Upload a screen file. ")
264
+ ])),
265
+ _: 1
266
+ }),
267
+ s(h, {
268
+ "no-gutters": "",
269
+ align: "center"
270
+ }, {
271
+ default: i(() => [
272
+ s(c, {
273
+ onClick: o.loadFile,
274
+ disabled: !l.file,
275
+ color: "primary",
276
+ class: "mr-3",
277
+ "data-test": "edit-screen-load"
278
+ }, {
279
+ default: i(() => e[11] || (e[11] = [
280
+ g(" Load ")
281
+ ])),
282
+ _: 1
283
+ }, 8, ["onClick", "disabled"]),
284
+ s(_, {
285
+ modelValue: l.file,
286
+ "onUpdate:modelValue": e[0] || (e[0] = (C) => l.file = C),
287
+ "truncate-length": "15",
288
+ accept: ".txt",
289
+ label: "Click to select .txt screen file."
290
+ }, null, 8, ["modelValue"])
291
+ ]),
292
+ _: 1
293
+ }),
294
+ s(h, { class: "mb-2" }, {
295
+ default: i(() => e[12] || (e[12] = [
296
+ g(" Edit the screen definition. ")
297
+ ])),
298
+ _: 1
299
+ }),
300
+ s(h, { class: "mb-2" }, {
301
+ default: i(() => [
302
+ u("pre", {
303
+ ref: "editor",
304
+ class: "editor",
305
+ onContextmenu: e[1] || (e[1] = M((...C) => o.showContextMenu && o.showContextMenu(...C), ["prevent"]))
306
+ }, null, 544),
307
+ s(a, {
308
+ modelValue: l.contextMenu,
309
+ "onUpdate:modelValue": e[2] || (e[2] = (C) => l.contextMenu = C),
310
+ target: [l.menuX, l.menuY]
311
+ }, {
312
+ default: i(() => [
313
+ s(E, null, {
314
+ default: i(() => [
315
+ s(k, { link: "" }, {
316
+ default: i(() => [
317
+ s(b, { onClick: o.openDocumentation }, {
318
+ default: i(() => [
319
+ g(w(l.docsKeyword) + " documentation ", 1)
320
+ ]),
321
+ _: 1
322
+ }, 8, ["onClick"])
323
+ ]),
324
+ _: 1
325
+ }),
326
+ s(S),
327
+ s(k, {
328
+ title: "Toggle Vim mode",
329
+ "prepend-icon": "extras:vim",
330
+ onClick: o.toggleVimMode
331
+ }, null, 8, ["onClick"])
332
+ ]),
333
+ _: 1
334
+ })
335
+ ]),
336
+ _: 1
337
+ }, 8, ["modelValue", "target"])
338
+ ]),
339
+ _: 1
340
+ }),
341
+ s(h, { style: { "max-height": "120px", "overflow-y": "auto" } }, {
342
+ default: i(() => [
343
+ (m(!0), V(U, null, B(o.editErrors, (C, X) => (m(), V("div", { key: X }, [
344
+ u("span", {
345
+ class: "text-red",
346
+ textContent: w(C)
347
+ }, null, 8, le)
348
+ ]))), 128))
349
+ ]),
350
+ _: 1
351
+ }),
352
+ s(h, { class: "mt-5" }, {
353
+ default: i(() => [
354
+ e[15] || (e[15] = u("span", null, "Ctrl-space brings up autocomplete. Right click keywords for documentation.", -1)),
355
+ s(f),
356
+ s(c, {
357
+ onClick: e[3] || (e[3] = (C) => t.$emit("cancel")),
358
+ class: "mx-2",
359
+ variant: "outlined",
360
+ "data-test": "edit-screen-cancel"
361
+ }, {
362
+ default: i(() => e[13] || (e[13] = [
363
+ g(" Cancel ")
364
+ ])),
365
+ _: 1
366
+ }),
367
+ s(c, {
368
+ onClick: e[4] || (e[4] = (C) => t.$emit("save", t.editor.getValue())),
369
+ class: "mx-2",
370
+ color: "primary",
371
+ "data-test": "edit-screen-save"
372
+ }, {
373
+ default: i(() => e[14] || (e[14] = [
374
+ g(" Save ")
375
+ ])),
376
+ _: 1
377
+ })
378
+ ]),
379
+ _: 1
380
+ })
381
+ ]),
382
+ _: 1
383
+ })
384
+ ]),
385
+ _: 1
386
+ })
387
+ ]),
388
+ _: 1
389
+ }, 8, ["modelValue"]);
390
+ }
391
+ const re = /* @__PURE__ */ N(ne, [["render", oe], ["__scopeId", "data-v-40531a57"]]), ae = {
392
+ props: {
393
+ modelValue: Boolean
394
+ },
395
+ data() {
396
+ return {
397
+ alert: "",
398
+ alertType: "success",
399
+ showAlert: !1,
400
+ search: "",
401
+ key: "",
402
+ keyValue: "",
403
+ environment: [],
404
+ headers: [
405
+ {
406
+ text: "Key",
407
+ value: "key"
408
+ },
409
+ {
410
+ text: "Value",
411
+ value: "value"
412
+ },
413
+ {
414
+ text: "Actions",
415
+ value: "actions",
416
+ align: "end",
417
+ sortable: !1
418
+ }
419
+ ]
420
+ };
421
+ },
422
+ computed: {
423
+ show: {
424
+ get() {
425
+ return this.modelValue;
426
+ },
427
+ set(t) {
428
+ this.$emit("update:modelValue", t);
429
+ }
430
+ }
431
+ },
432
+ mounted() {
433
+ this.update();
434
+ },
435
+ methods: {
436
+ alertHandler: function(t) {
437
+ this.alert = t.text, this.alertType = t.type, this.showAlert = !0;
438
+ },
439
+ update: function() {
440
+ I.get("/openc3-api/environment").then((t) => {
441
+ this.environment = t.data;
442
+ }).catch((t) => {
443
+ });
444
+ },
445
+ addEnvironment: function() {
446
+ I.post("/openc3-api/environment", {
447
+ data: {
448
+ key: this.key.toUpperCase(),
449
+ value: this.keyValue
450
+ }
451
+ }).then((t) => {
452
+ `${t.data.name}`, this.update();
453
+ }).catch((t) => {
454
+ const e = {
455
+ text: `Failed to add environment variable: ${t}`,
456
+ type: "error"
457
+ };
458
+ this.alertHandler(e);
459
+ }), this.key = "", this.keyValue = "";
460
+ },
461
+ deleteEnvironment: function(t) {
462
+ this.$dialog.confirm(`Are you sure you want to delete: ${t.key}=${t.value}`, {
463
+ okText: "Delete",
464
+ cancelText: "Cancel"
465
+ }).then((e) => I.delete(`/openc3-api/environment/${t.name}`)).then((e) => {
466
+ const n = {
467
+ text: `Removed environment variable: ${t.name}`,
468
+ type: "success"
469
+ };
470
+ this.alertHandler(n), this.update();
471
+ }).catch((e) => {
472
+ const n = {
473
+ text: `Failed to delete environment: ${e}`,
474
+ type: "error"
475
+ };
476
+ this.alertHandler(n);
477
+ });
478
+ }
479
+ }
480
+ }, de = { class: "pa-3" };
481
+ function ue(t, e, n, r, l, o) {
482
+ const v = d("v-spacer"), y = d("v-toolbar"), f = d("v-text-field"), p = d("v-row"), h = d("v-icon"), c = d("v-btn"), _ = d("v-data-table"), b = d("v-col"), k = d("v-card-text"), S = d("v-card"), E = d("v-dialog");
483
+ return m(), x(E, {
484
+ modelValue: o.show,
485
+ "onUpdate:modelValue": e[4] || (e[4] = (a) => o.show = a),
486
+ width: "600"
487
+ }, {
488
+ default: i(() => [
489
+ s(S, null, {
490
+ default: i(() => [
491
+ u("form", {
492
+ onSubmit: e[3] || (e[3] = M((...a) => o.addEnvironment && o.addEnvironment(...a), ["prevent"]))
493
+ }, [
494
+ s(y, { height: "24" }, {
495
+ default: i(() => [
496
+ s(v),
497
+ e[5] || (e[5] = u("span", null, "Global Environment Variables", -1)),
498
+ s(v)
499
+ ]),
500
+ _: 1
501
+ }),
502
+ s(k, null, {
503
+ default: i(() => [
504
+ u("div", de, [
505
+ s(p, {
506
+ dense: "",
507
+ class: "mb-2"
508
+ }, {
509
+ default: i(() => [
510
+ s(f, {
511
+ modelValue: l.search,
512
+ "onUpdate:modelValue": e[0] || (e[0] = (a) => l.search = a),
513
+ label: "search",
514
+ type: "text",
515
+ "data-test": "search",
516
+ "prepend-inner-icon": "mdi-magnify",
517
+ clearable: "",
518
+ variant: "outlined",
519
+ density: "compact",
520
+ "clear-icon": "mdi-close-circle-outline",
521
+ autofocus: "",
522
+ "single-line": "",
523
+ "hide-details": ""
524
+ }, null, 8, ["modelValue"])
525
+ ]),
526
+ _: 1
527
+ }),
528
+ s(_, {
529
+ "item-key": "name",
530
+ "hide-default-header": "",
531
+ "data-test": "env-table",
532
+ search: l.search,
533
+ headers: l.headers,
534
+ items: l.environment,
535
+ "items-per-page": 5,
536
+ "items-per-page-options": [5]
537
+ }, {
538
+ "item.actions": i(({ item: a }) => [
539
+ s(c, {
540
+ onClick: (R) => o.deleteEnvironment(a),
541
+ icon: "",
542
+ class: "mt-1",
543
+ "data-test": "item-delete"
544
+ }, {
545
+ default: i(() => [
546
+ s(h, null, {
547
+ default: i(() => e[6] || (e[6] = [
548
+ g("mdi-delete")
549
+ ])),
550
+ _: 1
551
+ })
552
+ ]),
553
+ _: 2
554
+ }, 1032, ["onClick"])
555
+ ]),
556
+ _: 1
557
+ }, 8, ["search", "headers", "items"]),
558
+ s(p, { dense: "" }, {
559
+ default: i(() => [
560
+ s(b, null, {
561
+ default: i(() => [
562
+ s(f, {
563
+ modelValue: l.key,
564
+ "onUpdate:modelValue": e[1] || (e[1] = (a) => l.key = a),
565
+ label: "Key",
566
+ "data-test": "env-key"
567
+ }, null, 8, ["modelValue"])
568
+ ]),
569
+ _: 1
570
+ }),
571
+ s(b, null, {
572
+ default: i(() => [
573
+ s(f, {
574
+ modelValue: l.keyValue,
575
+ "onUpdate:modelValue": e[2] || (e[2] = (a) => l.keyValue = a),
576
+ label: "Value",
577
+ "data-test": "env-value"
578
+ }, null, 8, ["modelValue"])
579
+ ]),
580
+ _: 1
581
+ })
582
+ ]),
583
+ _: 1
584
+ }),
585
+ s(p, { dense: "" }, {
586
+ default: i(() => [
587
+ s(c, {
588
+ onClick: M(o.addEnvironment, ["prevent"]),
589
+ block: "",
590
+ type: "submit",
591
+ color: "primary",
592
+ "data-test": "add-env",
593
+ disabled: !l.key || !l.keyValue
594
+ }, {
595
+ default: i(() => e[7] || (e[7] = [
596
+ g(" Add ")
597
+ ])),
598
+ _: 1
599
+ }, 8, ["onClick", "disabled"])
600
+ ]),
601
+ _: 1
602
+ })
603
+ ])
604
+ ]),
605
+ _: 1
606
+ })
607
+ ], 32)
608
+ ]),
609
+ _: 1
610
+ })
611
+ ]),
612
+ _: 1
613
+ }, 8, ["modelValue"]);
614
+ }
615
+ const Ae = /* @__PURE__ */ N(ae, [["render", ue]]), ce = { class: "tree-node" }, he = { class: "content-wrapper" }, me = ["tabindex"], fe = { key: 1 }, pe = {
616
+ key: 2,
617
+ class: "children"
618
+ }, ge = {
619
+ __name: "TreeNode",
620
+ props: {
621
+ node: {
622
+ type: Object,
623
+ required: !0
624
+ },
625
+ search: {
626
+ type: String,
627
+ default: ""
628
+ },
629
+ type: {
630
+ type: String,
631
+ default: "open"
632
+ }
633
+ },
634
+ emits: ["nodeToggled", "request"],
635
+ setup(t, { emit: e }) {
636
+ const n = t, r = $(n.node.isOpen || !1), l = J(() => {
637
+ const h = (c) => {
638
+ var _;
639
+ return !n.search || c.path.toLowerCase().includes(n.search.toLowerCase()) ? !0 : !!((_ = c.children) != null && _.some(h));
640
+ };
641
+ return h(n.node);
642
+ });
643
+ W(
644
+ () => n.node.isOpen,
645
+ (h) => {
646
+ r.path = h;
647
+ }
648
+ ), W(
649
+ () => n.search,
650
+ (h) => {
651
+ h ? n.node.isOpen || y() : n.node.isOpen && y();
652
+ }
653
+ );
654
+ const o = e, v = (h) => {
655
+ h.children ? (y(), n.type === "save" && o("request", h)) : o("request", h);
656
+ }, y = () => {
657
+ n.node.children && (r.path = !r.path, n.node.isOpen = r.path, o("nodeToggled", n.node.id, r.path));
658
+ }, f = (h, c) => {
659
+ o("nodeToggled", h, c);
660
+ }, p = (h) => {
661
+ o("request", h);
662
+ };
663
+ return (h, c) => {
664
+ const _ = d("v-icon"), b = d("v-btn"), k = d("tree-node", !0);
665
+ return m(), V("div", ce, [
666
+ l.value ? (m(), V("div", {
667
+ key: 0,
668
+ onClick: c[2] || (c[2] = (S) => v(t.node)),
669
+ class: "node-content"
670
+ }, [
671
+ u("div", he, [
672
+ t.node.children ? (m(), x(_, {
673
+ key: 0,
674
+ class: "toggle-icon",
675
+ style: { "padding-right": "10px" }
676
+ }, {
677
+ default: i(() => [
678
+ g(w(t.node.isOpen ? "mdi-menu-down" : "mdi-menu-right"), 1)
679
+ ]),
680
+ _: 1
681
+ })) : T("", !0),
682
+ t.node.children ? (m(), x(_, {
683
+ key: 1,
684
+ size: "small",
685
+ style: { "padding-right": "10px" }
686
+ }, {
687
+ default: i(() => c[3] || (c[3] = [
688
+ g(w("mdi-folder"))
689
+ ])),
690
+ _: 1
691
+ })) : t.node.title.includes(".rb") ? (m(), x(_, {
692
+ key: 2,
693
+ size: "small",
694
+ style: { "padding-right": "10px" }
695
+ }, {
696
+ default: i(() => c[4] || (c[4] = [
697
+ g(w("mdi-language-ruby"))
698
+ ])),
699
+ _: 1
700
+ })) : t.node.title.includes(".py") ? (m(), x(_, {
701
+ key: 3,
702
+ size: "small",
703
+ style: { "padding-right": "10px" }
704
+ }, {
705
+ default: i(() => c[5] || (c[5] = [
706
+ g(w("mdi-language-python"))
707
+ ])),
708
+ _: 1
709
+ })) : (m(), x(_, {
710
+ key: 4,
711
+ size: "small",
712
+ style: { "padding-right": "10px" }
713
+ }, {
714
+ default: i(() => c[6] || (c[6] = [
715
+ g(w("mdi-file-document"))
716
+ ])),
717
+ _: 1
718
+ })),
719
+ u("span", {
720
+ class: "title",
721
+ tabindex: t.node.children ? -1 : 0,
722
+ onKeyup: c[0] || (c[0] = Z((S) => v(t.node), ["enter"]))
723
+ }, w(t.node.title), 41, me),
724
+ t.node.title === "__TEMP__" ? (m(), x(b, {
725
+ key: 5,
726
+ icon: "",
727
+ onClick: c[1] || (c[1] = (S) => o("delete")),
728
+ style: { "margin-left": "auto" }
729
+ }, {
730
+ default: i(() => [
731
+ s(_, null, {
732
+ default: i(() => c[7] || (c[7] = [
733
+ g(" mdi-delete ")
734
+ ])),
735
+ _: 1
736
+ })
737
+ ]),
738
+ _: 1
739
+ })) : T("", !0)
740
+ ])
741
+ ])) : (m(), V("div", fe)),
742
+ t.node.children && t.node.isOpen ? (m(), V("div", pe, [
743
+ (m(!0), V(U, null, B(t.node.children, (S) => (m(), x(k, {
744
+ key: S.id,
745
+ node: S,
746
+ search: t.search,
747
+ type: t.type,
748
+ onNodeToggled: f,
749
+ onRequest: p
750
+ }, null, 8, ["node", "search", "type"]))), 128))
751
+ ])) : T("", !0)
752
+ ]);
753
+ };
754
+ }
755
+ }, ve = /* @__PURE__ */ N(ge, [["__scopeId", "data-v-20be9af4"]]), ye = {
756
+ components: {
757
+ TreeNode: ve
758
+ },
759
+ props: {
760
+ type: {
761
+ type: String,
762
+ required: !0,
763
+ validator: function(t) {
764
+ return ["open", "save"].indexOf(t) !== -1;
765
+ }
766
+ },
767
+ apiUrl: String,
768
+ // Base API URL for use with scripts or cmd-tlm
769
+ requireTargetParentDir: Boolean,
770
+ // Require that the save filename be nested in a directory with the name of a target
771
+ inputFilename: String,
772
+ // passed if this is a 'save' dialog
773
+ modelValue: Boolean
774
+ },
775
+ data() {
776
+ return {
777
+ tree: [],
778
+ items: [],
779
+ search: null,
780
+ selectedFile: null,
781
+ disableButtons: !1,
782
+ targets: [],
783
+ targetsRetrieved: [],
784
+ loading: !0
785
+ };
786
+ },
787
+ computed: {
788
+ show: {
789
+ get() {
790
+ return this.modelValue;
791
+ },
792
+ set(t) {
793
+ this.$emit("update:modelValue", t);
794
+ }
795
+ },
796
+ title: function() {
797
+ return this.type === "open" ? "File Open" : "File Save As...";
798
+ },
799
+ submit: function() {
800
+ return this.type === "open" ? "OPEN" : "SAVE";
801
+ },
802
+ helpText: function() {
803
+ 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. You can also Tab to the files and Enter to select." : "Click on the folder to save into. Then complete the filename path with the desired name. Use the search box to filter the results.";
804
+ },
805
+ error: function() {
806
+ if (this.selectedFile === "" || this.selectedFile === null)
807
+ return "No file selected must select a file";
808
+ if (!this.selectedFile.match(this.validFilenameRegex) || this.selectedFile.match(/\.\.|\/\/|\.\/|\/\./)) {
809
+ let t = `${this.selectedFile} is not a valid filename. Must `;
810
+ return this.requireTargetParentDir && (t += "be in a target directory and "), t += `only contain alphanumeric characters (including !-_.*) and a valid extension.
811
+
812
+ For example: TGT1/procedures/test.py or TGT2/lib/inst.rb`, t;
813
+ }
814
+ return this.type === "save" && this.selectedFile.match(/\*$/) ? `${this.selectedFile} is not a valid filename. Must not end in '*'.` : null;
815
+ },
816
+ validFilenameRegex: function() {
817
+ const t = "0-9a-zA-Z";
818
+ let n = `[${`${t}\\/\\!\\-\\_\\.\\*\\'\\(\\)`}]+\\.[${t}]+`;
819
+ return this.requireTargetParentDir && (n = `\\/?${`(${this.targets.join("|")})`}\\/${n}`), new RegExp(n);
820
+ }
821
+ },
822
+ created() {
823
+ I.get("/openc3-api/targets").then((t) => {
824
+ this.targets = t.data, this.targets.push("__TEMP__"), this.targets.forEach((e) => {
825
+ this.items.push({
826
+ id: e,
827
+ disabled: !0,
828
+ title: e,
829
+ children: [],
830
+ path: e
831
+ }), this.loadFiles(e);
832
+ }), this.loading = !1;
833
+ });
834
+ },
835
+ methods: {
836
+ calcIcon: function(t) {
837
+ return ee(t);
838
+ },
839
+ loadFiles: function(t) {
840
+ I.get(this.apiUrl, { params: { target: t } }).then((e) => {
841
+ if (e.data.length === 0) {
842
+ this.items = this.items.filter((r) => r.id !== t);
843
+ return;
844
+ }
845
+ for (let r of e.data.sort())
846
+ this.filepath = r, this.insertFile(this.items, 2, r);
847
+ this.inputFilename && (this.selectedFile = this.inputFilename);
848
+ const n = this.items.findIndex((r) => r.id === t);
849
+ n !== -1 && (this.items[n].disabled = !1);
850
+ }).catch((e) => {
851
+ this.$emit("error", `Failed to connect to OpenC3. ${e}`);
852
+ });
853
+ },
854
+ clear: function() {
855
+ this.show = !1, this.overwrite = !1, this.disableButtons = !1;
856
+ },
857
+ activeFile: function(t) {
858
+ t.length === 0 ? this.selectedFile = null : (this.selectedFile = this.findItem(this.items, t.id), setTimeout(() => {
859
+ this.$refs.submitBtn.$el.focus();
860
+ }, 100));
861
+ },
862
+ findItem: function(t, e) {
863
+ for (let n of t) {
864
+ if (n.id === e)
865
+ return n.path;
866
+ if (n.children) {
867
+ const r = this.findItem(n.children, e);
868
+ if (r)
869
+ return r;
870
+ }
871
+ }
872
+ return null;
873
+ },
874
+ exists: function(t, e) {
875
+ let n = !1;
876
+ for (let r of t) {
877
+ if (r.path === e || r.path.length > 1 && r.path[r.path.length - 1] === "*" && r.path.slice(0, r.path.length - 1) === e)
878
+ return !0;
879
+ r.children && (n = n || this.exists(r.children, e));
880
+ }
881
+ return n;
882
+ },
883
+ success: function() {
884
+ this.selectedFile !== null && this.error === null && (this.type === "open" ? this.openSuccess() : this.saveSuccess());
885
+ },
886
+ deleteTemp: function() {
887
+ this.$dialog.confirm("Are you sure you want to delete all the temporary files?", {
888
+ okText: "Delete",
889
+ cancelText: "Cancel"
890
+ }).then((t) => I.delete("/script-api/scripts/temp_files")).then((t) => {
891
+ this.$emit("clear-temp"), this.loadFiles("__TEMP__");
892
+ }).catch((t) => {
893
+ this.$notify.serious({
894
+ title: "Error",
895
+ body: `Failed to remove script temporary files due to ${t}`
896
+ });
897
+ });
898
+ },
899
+ openSuccess: function() {
900
+ this.disableButtons = !0, I.get(`${this.apiUrl}/${this.selectedFile}`).then((t) => {
901
+ const e = {
902
+ name: this.selectedFile,
903
+ contents: t.data.contents
904
+ };
905
+ 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);
906
+ const n = t.data.locked, r = t.data.breakpoints;
907
+ this.$emit("file", { file: e, locked: n, breakpoints: r }), this.clear();
908
+ }).catch((t) => {
909
+ this.$emit("error", `Failed to open ${this.selectedFile}. ${t}`), this.clear();
910
+ });
911
+ },
912
+ saveSuccess: function() {
913
+ this.exists(this.items, this.selectedFile) ? this.$dialog.confirm(`Are you sure you want to overwrite: ${this.selectedFile}`, {
914
+ okText: "Overwrite",
915
+ cancelText: "Cancel"
916
+ }).then((e) => {
917
+ this.$emit("filename", this.selectedFile), this.clear();
918
+ }).catch((e) => {
919
+ }) : (this.$emit("filename", this.selectedFile), this.clear());
920
+ },
921
+ insertFile: function(t, e, n) {
922
+ let r = n.split("/");
923
+ if (r.length === 1) {
924
+ t.push({
925
+ id: this.filepath,
926
+ title: r[0],
927
+ file: "ruby",
928
+ path: this.filepath
929
+ });
930
+ return;
931
+ }
932
+ const l = t.findIndex((o) => o.title === r[0]);
933
+ l === -1 ? (t.push({
934
+ id: this.filepath.split("/").slice(0, e - 1).join("/"),
935
+ title: r[0],
936
+ children: [],
937
+ path: this.filepath.split("/").slice(0, e - 1).join("/")
938
+ }), this.insertFile(
939
+ t[t.length - 1].children,
940
+ // Start from the node we just added
941
+ e + 1,
942
+ r.slice(1).join("/")
943
+ // Strip the first part of the path
944
+ )) : this.insertFile(
945
+ t[l].children,
946
+ e + 1,
947
+ r.slice(1).join("/")
948
+ );
949
+ }
950
+ }
951
+ }, _e = { class: "pa-3" }, be = { class: "overflow-y-auto tree-container" };
952
+ function xe(t, e, n, r, l, o) {
953
+ const v = d("v-progress-circular"), y = d("v-overlay"), f = d("v-spacer"), p = d("v-toolbar"), h = d("v-row"), c = d("v-text-field"), _ = d("tree-node"), b = d("v-btn"), k = d("v-card-text"), S = d("v-card"), E = d("v-dialog");
954
+ return m(), x(E, {
955
+ modelValue: o.show,
956
+ "onUpdate:modelValue": e[4] || (e[4] = (a) => o.show = a),
957
+ width: "600",
958
+ onKeydown: e[5] || (e[5] = Z((a) => o.success(), ["enter"]))
959
+ }, {
960
+ default: i(() => [
961
+ s(S, null, {
962
+ default: i(() => [
963
+ s(y, { "model-value": l.loading }, {
964
+ default: i(() => [
965
+ s(v, {
966
+ indeterminate: "",
967
+ absolute: "",
968
+ size: "64"
969
+ })
970
+ ]),
971
+ _: 1
972
+ }, 8, ["model-value"]),
973
+ u("form", {
974
+ onSubmit: e[3] || (e[3] = M((...a) => o.success && o.success(...a), ["prevent"]))
975
+ }, [
976
+ s(p, { height: "24" }, {
977
+ default: i(() => [
978
+ s(f),
979
+ u("span", null, w(o.title), 1),
980
+ s(f)
981
+ ]),
982
+ _: 1
983
+ }),
984
+ s(k, null, {
985
+ default: i(() => [
986
+ u("div", _e, [
987
+ s(h, null, {
988
+ default: i(() => [
989
+ g(w(o.helpText), 1)
990
+ ]),
991
+ _: 1
992
+ }),
993
+ s(h, {
994
+ dense: "",
995
+ class: "mt-5"
996
+ }, {
997
+ default: i(() => [
998
+ s(c, {
999
+ modelValue: l.search,
1000
+ "onUpdate:modelValue": e[0] || (e[0] = (a) => l.search = a),
1001
+ flat: "",
1002
+ autofocus: "",
1003
+ "hide-details": "",
1004
+ clearable: "",
1005
+ label: "Search",
1006
+ "prepend-inner-icon": "mdi-magnify",
1007
+ density: "compact",
1008
+ "data-test": "file-open-save-search"
1009
+ }, null, 8, ["modelValue"])
1010
+ ]),
1011
+ _: 1
1012
+ }),
1013
+ u("div", be, [
1014
+ (m(!0), V(U, null, B(l.items, (a) => (m(), x(_, {
1015
+ key: `${a.id}`,
1016
+ node: a,
1017
+ search: l.search,
1018
+ type: n.type,
1019
+ onRequest: o.activeFile,
1020
+ onDelete: o.deleteTemp
1021
+ }, null, 8, ["node", "search", "type", "onRequest", "onDelete"]))), 128))
1022
+ ]),
1023
+ s(h, { class: "my-2" }, {
1024
+ default: i(() => [
1025
+ s(c, {
1026
+ modelValue: l.selectedFile,
1027
+ "onUpdate:modelValue": e[1] || (e[1] = (a) => l.selectedFile = a),
1028
+ "hide-details": "",
1029
+ label: "Filename",
1030
+ "data-test": "file-open-save-filename",
1031
+ disabled: n.type === "open"
1032
+ }, null, 8, ["modelValue", "disabled"])
1033
+ ]),
1034
+ _: 1
1035
+ }),
1036
+ s(h, { dense: "" }, {
1037
+ default: i(() => [
1038
+ F(u("div", {
1039
+ class: "my-2 text-red",
1040
+ style: { "white-space": "pre-line" }
1041
+ }, w(o.error), 513), [
1042
+ [O, o.error]
1043
+ ])
1044
+ ]),
1045
+ _: 1
1046
+ }),
1047
+ s(h, { class: "mt-2" }, {
1048
+ default: i(() => [
1049
+ s(f),
1050
+ s(b, {
1051
+ onClick: e[2] || (e[2] = (a) => o.show = !1),
1052
+ variant: "outlined",
1053
+ class: "mx-2",
1054
+ "data-test": "file-open-save-cancel-btn",
1055
+ disabled: l.disableButtons
1056
+ }, {
1057
+ default: i(() => e[6] || (e[6] = [
1058
+ g(" Cancel ")
1059
+ ])),
1060
+ _: 1
1061
+ }, 8, ["disabled"]),
1062
+ s(b, {
1063
+ onClick: M(o.success, ["prevent"]),
1064
+ ref: "submitBtn",
1065
+ type: "submit",
1066
+ color: "primary",
1067
+ class: "mx-2",
1068
+ "data-test": "file-open-save-submit-btn",
1069
+ disabled: l.disableButtons || !!o.error
1070
+ }, {
1071
+ default: i(() => [
1072
+ g(w(o.submit), 1)
1073
+ ]),
1074
+ _: 1
1075
+ }, 8, ["onClick", "disabled"])
1076
+ ]),
1077
+ _: 1
1078
+ })
1079
+ ])
1080
+ ]),
1081
+ _: 1
1082
+ })
1083
+ ], 32)
1084
+ ]),
1085
+ _: 1
1086
+ })
1087
+ ]),
1088
+ _: 1
1089
+ }, 8, ["modelValue"]);
1090
+ }
1091
+ const Fe = /* @__PURE__ */ N(ye, [["render", xe]]), z = 20, we = {
1092
+ mixins: [Y],
1093
+ components: {
1094
+ EditScreenDialog: re
1095
+ },
1096
+ props: {
1097
+ target: {
1098
+ type: String,
1099
+ default: ""
1100
+ },
1101
+ screen: {
1102
+ type: String,
1103
+ default: ""
1104
+ },
1105
+ definition: {
1106
+ type: String,
1107
+ default: ""
1108
+ },
1109
+ keywords: {
1110
+ type: Array,
1111
+ default: () => []
1112
+ },
1113
+ initialFloated: {
1114
+ type: Boolean,
1115
+ default: !1
1116
+ },
1117
+ initialTop: {
1118
+ type: Number,
1119
+ default: 0
1120
+ },
1121
+ initialLeft: {
1122
+ type: Number,
1123
+ default: 0
1124
+ },
1125
+ initialZ: {
1126
+ type: Number,
1127
+ default: 0
1128
+ },
1129
+ minZ: {
1130
+ type: Number,
1131
+ default: 0
1132
+ },
1133
+ fixFloated: {
1134
+ type: Boolean,
1135
+ default: !1
1136
+ },
1137
+ count: {
1138
+ type: Number,
1139
+ default: 0
1140
+ },
1141
+ showClose: {
1142
+ type: Boolean,
1143
+ default: !0
1144
+ },
1145
+ timeZone: {
1146
+ type: String,
1147
+ default: "local"
1148
+ },
1149
+ inline: {
1150
+ type: Boolean,
1151
+ default: !1
1152
+ }
1153
+ },
1154
+ data() {
1155
+ return {
1156
+ api: null,
1157
+ backup: "",
1158
+ currentDefinition: this.definition,
1159
+ editDialog: !1,
1160
+ expand: !0,
1161
+ configParser: null,
1162
+ configError: !1,
1163
+ currentLayout: null,
1164
+ layoutStack: [],
1165
+ namedWidgets: {},
1166
+ dynamicWidgets: [],
1167
+ width: null,
1168
+ height: null,
1169
+ staleTime: 30,
1170
+ cacheTimeout: 0.1,
1171
+ globalSettings: [],
1172
+ substitute: !1,
1173
+ original_target_name: null,
1174
+ force_substitute: !1,
1175
+ pollingPeriod: 1,
1176
+ errors: [],
1177
+ errorDialog: !1,
1178
+ screenKey: null,
1179
+ dragX: 0,
1180
+ dragY: 0,
1181
+ floated: this.initialFloated,
1182
+ top: this.initialTop,
1183
+ left: this.initialLeft,
1184
+ zIndex: this.initialZ,
1185
+ changeCounter: 0,
1186
+ screenItems: [],
1187
+ screenValues: {},
1188
+ updateCounter: 0,
1189
+ screenId: j.uniqueId("openc3-screen_")
1190
+ };
1191
+ },
1192
+ watch: {
1193
+ count: {
1194
+ handler(t, e) {
1195
+ this.currentDefinition = this.definition, this.rerender();
1196
+ }
1197
+ }
1198
+ },
1199
+ computed: {
1200
+ error: function() {
1201
+ if (this.errorDialog && this.errors.length > 0) {
1202
+ let t = /* @__PURE__ */ new Set(), e = "";
1203
+ for (const n of this.errors) {
1204
+ if (t.has(n.message))
1205
+ continue;
1206
+ let r = `${n.time}: (${n.type}) ${n.message}
1207
+ `;
1208
+ e += r, t.add(n.message);
1209
+ }
1210
+ return e;
1211
+ }
1212
+ return null;
1213
+ },
1214
+ computedStyle() {
1215
+ var n;
1216
+ let t = {};
1217
+ const e = this.width || ((n = this.$refs.bar) == null ? void 0 : n.clientWidth);
1218
+ return this.floated && (t.position = "absolute", t.top = this.top + "px", t.left = this.left + "px", t.width = e + "px"), t;
1219
+ }
1220
+ },
1221
+ // Called when an error from any descendent component is captured
1222
+ // We need this because an error can occur from any of the children
1223
+ // in the widget stack and are typically thrown on create()
1224
+ errorCaptured(t, e, n) {
1225
+ return console.log({ err: t, vm: e, info: n }), this.errors.length < z && (console.log({ errors: this.errors }), t.usage ? this.errors.push({
1226
+ type: "usage",
1227
+ message: t.message,
1228
+ usage: t.usage,
1229
+ line: t.line,
1230
+ lineNumber: t.lineNumber,
1231
+ time: (/* @__PURE__ */ new Date()).getTime()
1232
+ }) : this.errors.push({
1233
+ type: "error",
1234
+ message: t,
1235
+ time: (/* @__PURE__ */ new Date()).getTime()
1236
+ }), this.configError = !0), !1;
1237
+ },
1238
+ created() {
1239
+ this.api = new q(), this.configParser = new H(), this.parseDefinition(), this.screenKey = Math.floor(Math.random() * 1e6);
1240
+ },
1241
+ mounted() {
1242
+ this.updateRefreshInterval(), this.floated && (this.$refs.bar.onmousedown = this.dragMouseDown, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex);
1243
+ },
1244
+ unmounted() {
1245
+ this.updater != null && (clearInterval(this.updater), this.updater = null);
1246
+ },
1247
+ methods: {
1248
+ // These are API methods that ButtonWidget uses to open and close screens
1249
+ open(t, e) {
1250
+ this.$parent.showScreen(t, e);
1251
+ },
1252
+ close(t, e) {
1253
+ this.$parent.closeScreenByName(t, e);
1254
+ },
1255
+ closeAll() {
1256
+ this.$parent.closeAll();
1257
+ },
1258
+ clearErrors: function() {
1259
+ this.errors = [], this.configError = !1;
1260
+ },
1261
+ updateRefreshInterval: function() {
1262
+ let t = this.pollingPeriod * 1e3;
1263
+ this.updater && clearInterval(this.updater), this.updater = setInterval(() => {
1264
+ this.update();
1265
+ }, t);
1266
+ },
1267
+ parseDefinition: function() {
1268
+ if (this.clearErrors(), this.namedWidgets = {}, this.layoutStack = [], this.dynamicWidgets = [], this.layoutStack.push({
1269
+ type: "VerticalWidget",
1270
+ parameters: [],
1271
+ widgets: []
1272
+ }), this.currentLayout = this.layoutStack[this.layoutStack.length - 1], this.configParser.parse_string(
1273
+ this.currentDefinition,
1274
+ "",
1275
+ !1,
1276
+ !0,
1277
+ (t, e, n, r) => {
1278
+ if (t)
1279
+ switch (t) {
1280
+ case "SCREEN":
1281
+ this.configParser.verify_num_parameters(
1282
+ 3,
1283
+ 4,
1284
+ `${t} <Width or AUTO> <Height or AUTO> <Polling Period>`
1285
+ ), this.width = parseInt(e[0]), this.height = parseInt(e[1]), this.pollingPeriod = parseFloat(e[2]);
1286
+ break;
1287
+ case "END":
1288
+ this.configParser.verify_num_parameters(0, 0, `${t}`), this.layoutStack.pop(), this.currentLayout = this.layoutStack[this.layoutStack.length - 1];
1289
+ break;
1290
+ case "STALE_TIME":
1291
+ this.configParser.verify_num_parameters(
1292
+ 1,
1293
+ 1,
1294
+ `${t} <Time (s)>`
1295
+ ), this.staleTime = parseInt(e[0]);
1296
+ break;
1297
+ case "SETTING":
1298
+ case "SUBSETTING":
1299
+ (this.currentLayout.widgets[this.currentLayout.widgets.length - 1] ?? this.currentLayout).settings.push(e);
1300
+ break;
1301
+ case "GLOBAL_SETTING":
1302
+ case "GLOBAL_SUBSETTING":
1303
+ this.globalSettings.push(e);
1304
+ break;
1305
+ default:
1306
+ this.processWidget(t, e, n, r);
1307
+ break;
1308
+ }
1309
+ }
1310
+ ), typeof this.layoutStack[0] > "u") {
1311
+ let t = [], e = [];
1312
+ for (const n of this.dynamicWidgets)
1313
+ t.push(n.name), e.push(n.lineNumber);
1314
+ this.errors.length < z && (this.errors.push({
1315
+ type: "usage",
1316
+ message: `Unknown widget! Are these widgets: ${t.join(",")}?`,
1317
+ lineNumber: e.join(","),
1318
+ time: (/* @__PURE__ */ new Date()).getTime()
1319
+ }), this.configError = !0), this.layoutStack[0] = {
1320
+ type: "VerticalWidget",
1321
+ parameters: [],
1322
+ widgets: []
1323
+ };
1324
+ } else
1325
+ this.applyGlobalSettings(this.layoutStack[0].widgets);
1326
+ },
1327
+ openEdit: function() {
1328
+ this.backup = this.currentDefinition.repeat(1), this.editDialog = !0;
1329
+ },
1330
+ upScreen: function() {
1331
+ this.zIndex += 1, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex, this.$emit("drag-screen", [
1332
+ this.floated,
1333
+ this.top,
1334
+ this.left,
1335
+ this.zIndex
1336
+ ]);
1337
+ },
1338
+ downScreen: function() {
1339
+ this.zIndex > this.minZ && (this.zIndex -= 1, this.$refs.bar.parentElement.parentElement.style = "z-index: " + this.zIndex, this.$emit("drag-screen", [
1340
+ this.floated,
1341
+ this.top,
1342
+ this.left,
1343
+ this.zIndex
1344
+ ]));
1345
+ },
1346
+ floatScreen: function() {
1347
+ if (this.floated)
1348
+ this.$refs.bar.onmousedown = null, this.$refs.bar.parentElement.parentElement.style = "z-index: 0", this.floated = !1, this.$emit("unfloat-screen", [
1349
+ this.floated,
1350
+ this.top,
1351
+ this.left,
1352
+ this.zIndex
1353
+ ]);
1354
+ else {
1355
+ let t = this.$refs.bar.parentElement.parentElement.parentElement.getBoundingClientRect(), e = this.$refs.bar.getBoundingClientRect();
1356
+ 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", [
1357
+ this.floated,
1358
+ this.top,
1359
+ this.left,
1360
+ this.zIndex
1361
+ ]);
1362
+ }
1363
+ },
1364
+ dragMouseDown: function(t) {
1365
+ t = t || window.event, t.preventDefault(), this.dragX = t.clientX, this.dragY = t.clientY, document.onmouseup = this.closeDragElement, document.onmousemove = this.elementDrag;
1366
+ },
1367
+ elementDrag: function(t) {
1368
+ t = t || window.event, t.preventDefault();
1369
+ let e = this.dragX - t.clientX, n = this.dragY - t.clientY;
1370
+ this.dragX = t.clientX, this.dragY = t.clientY, this.top = this.$refs.bar.offsetTop - n, this.left = this.$refs.bar.offsetLeft - e, this.$emit("drag-screen", [
1371
+ this.floated,
1372
+ this.top,
1373
+ this.left,
1374
+ this.zIndex
1375
+ ]);
1376
+ },
1377
+ closeDragElement: function() {
1378
+ document.onmouseup = null, document.onmousemove = null;
1379
+ },
1380
+ rerender: function() {
1381
+ this.parseDefinition(), this.updateRefreshInterval(), this.screenKey = Math.floor(Math.random() * 1e6), this.$nextTick(function() {
1382
+ this.clearErrors(), this.$emit("edit-screen");
1383
+ });
1384
+ },
1385
+ cancelEdit: function() {
1386
+ this.file = null, this.editDialog = !1, this.currentDefinition = this.backup, this.rerender();
1387
+ },
1388
+ saveEdit: function(t) {
1389
+ this.editDialog = !1, this.currentDefinition = t, this.rerender(), this.$nextTick(function() {
1390
+ I.post(
1391
+ "/openc3-api/screen/",
1392
+ {
1393
+ data: {
1394
+ scope: window.openc3Scope,
1395
+ target: this.target,
1396
+ screen: this.screen,
1397
+ text: this.currentDefinition
1398
+ }
1399
+ },
1400
+ 0
1401
+ );
1402
+ });
1403
+ },
1404
+ deleteScreen: function() {
1405
+ this.editDialog = !1, I.delete(`/openc3-api/screen/${this.target}/${this.screen}`).then(
1406
+ (t) => {
1407
+ this.$emit("delete-screen");
1408
+ }
1409
+ );
1410
+ },
1411
+ minMaxTransition: function() {
1412
+ this.expand = !this.expand, this.$emit("min-max-screen");
1413
+ },
1414
+ processWidget: function(t, e, n, r) {
1415
+ let l = null;
1416
+ t === "NAMED_WIDGET" && (this.configParser.verify_num_parameters(
1417
+ 2,
1418
+ null,
1419
+ `${t} <Widget Name> <Widget Type> <Widget Settings... (optional)>`
1420
+ ), l = e[0].toUpperCase(), t = e[1].toUpperCase(), e = e.slice(2, e.length));
1421
+ const o = t.charAt(0).toUpperCase() + t.slice(1).toLowerCase() + "Widget";
1422
+ let v = [];
1423
+ if (v.push(["__SCREEN_ID__", this.screenId]), l !== null && v.push(["NAMED_WIDGET", l]), t === "VERTICAL" || t === "VERTICALBOX" || t === "HORIZONTAL" || t === "HORIZONTALBOX" || t === "MATRIXBYCOLUMNS" || t === "TABBOOK" || t === "TABITEM" || t === "CANVAS" || t === "RADIOGROUP" || t === "SCROLLWINDOW") {
1424
+ const y = {
1425
+ type: o,
1426
+ parameters: e,
1427
+ settings: v,
1428
+ screenValues: this.screenValues,
1429
+ screenTimeZone: this.timeZone,
1430
+ widgets: []
1431
+ };
1432
+ this.layoutStack.push(y), this.currentLayout.widgets.push(y), this.currentLayout = y;
1433
+ } else if (this.$options.components[o])
1434
+ this.currentLayout.widgets.push({
1435
+ type: o,
1436
+ target: this.target,
1437
+ parameters: e,
1438
+ settings: v,
1439
+ screenValues: this.screenValues,
1440
+ screenTimeZone: this.timeZone,
1441
+ line: n,
1442
+ lineNumber: r
1443
+ });
1444
+ else {
1445
+ let y = {
1446
+ type: "DynamicWidget",
1447
+ target: this.target,
1448
+ parameters: e,
1449
+ settings: v,
1450
+ screenValues: this.screenValues,
1451
+ screenTimeZone: this.timeZone,
1452
+ name: o,
1453
+ line: n,
1454
+ lineNumber: r
1455
+ };
1456
+ this.currentLayout.widgets.push(y), this.dynamicWidgets.push(y);
1457
+ }
1458
+ },
1459
+ applyGlobalSettings: function(t) {
1460
+ t.forEach((e) => {
1461
+ this.globalSettings.forEach((n) => {
1462
+ e.type.toLowerCase() === n[0].toLowerCase() + "widget" && e.settings.push(n.slice(1));
1463
+ }), e.widgets && this.applyGlobalSettings(e.widgets);
1464
+ });
1465
+ },
1466
+ update: function() {
1467
+ this.screenItems.length !== 0 && this.configError === !1 && this.api.get_tlm_values(this.screenItems, this.staleTime, this.cacheTimeout).then((t) => {
1468
+ this.clearErrors(), this.updateValues(t);
1469
+ }).catch((t) => {
1470
+ let e = JSON.stringify(t, null, 2);
1471
+ e.includes("no response received") || (this.configError = !0), this.errors.find((n) => n.message === e) || this.errors.length < z && this.errors.push({
1472
+ type: "error",
1473
+ message: e,
1474
+ time: (/* @__PURE__ */ new Date()).getTime()
1475
+ });
1476
+ });
1477
+ },
1478
+ updateValues: function(t) {
1479
+ this.updateCounter += 1;
1480
+ for (let e = 0; e < t.length; e++)
1481
+ t[e].push(this.updateCounter), this.screenValues[this.screenItems[e]] = t[e];
1482
+ },
1483
+ addItem: function(t) {
1484
+ this.screenItems.push(t), this.screenValues[t] = [null, null, 0];
1485
+ },
1486
+ deleteItem: function(t) {
1487
+ let e = this.screenItems.indexOf(t);
1488
+ this.screenItems.splice(e, 1);
1489
+ }
1490
+ }
1491
+ }, ke = {
1492
+ class: "pa-1",
1493
+ style: { position: "relative" },
1494
+ ref: "screen"
1495
+ }, Se = {
1496
+ key: 1,
1497
+ class: "pa-1",
1498
+ style: { position: "relative" }
1499
+ };
1500
+ function Ce(t, e, n, r, l, o) {
1501
+ const v = d("v-icon"), y = d("v-tooltip"), f = d("v-spacer"), p = d("v-toolbar"), h = d("v-overlay"), c = d("vertical-widget"), _ = d("v-expand-transition"), b = d("v-card"), k = d("edit-screen-dialog"), S = d("v-textarea"), E = d("v-dialog");
1502
+ return m(), V("div", {
1503
+ style: Q(o.computedStyle),
1504
+ ref: "bar"
1505
+ }, [
1506
+ n.inline ? T("", !0) : (m(), x(b, {
1507
+ key: 0,
1508
+ "min-height": l.height,
1509
+ "min-width": l.width,
1510
+ style: { cursor: "default" }
1511
+ }, {
1512
+ default: i(() => [
1513
+ s(p, { height: "24" }, {
1514
+ default: i(() => [
1515
+ F(u("div", null, [
1516
+ s(y, { location: "top" }, {
1517
+ activator: i(({ props: a }) => [
1518
+ u("div", D(A(a)), [
1519
+ s(v, {
1520
+ "data-test": "error-graph-icon",
1521
+ onClick: e[0] || (e[0] = (R) => l.errorDialog = !0)
1522
+ }, {
1523
+ default: i(() => e[7] || (e[7] = [
1524
+ g(" mdi-alert ")
1525
+ ])),
1526
+ _: 1
1527
+ })
1528
+ ], 16)
1529
+ ]),
1530
+ default: i(() => [
1531
+ e[8] || (e[8] = u("span", null, " Errors ", -1))
1532
+ ]),
1533
+ _: 1
1534
+ })
1535
+ ], 512), [
1536
+ [O, l.errors.length !== 0]
1537
+ ]),
1538
+ s(y, { location: "top" }, {
1539
+ activator: i(({ props: a }) => [
1540
+ u("div", D(A(a)), [
1541
+ s(v, {
1542
+ "data-test": "edit-screen-icon",
1543
+ onClick: o.openEdit
1544
+ }, {
1545
+ default: i(() => e[9] || (e[9] = [
1546
+ g(" mdi-pencil ")
1547
+ ])),
1548
+ _: 1
1549
+ }, 8, ["onClick"])
1550
+ ], 16)
1551
+ ]),
1552
+ default: i(() => [
1553
+ e[10] || (e[10] = u("span", null, " Edit Screen ", -1))
1554
+ ]),
1555
+ _: 1
1556
+ }),
1557
+ n.fixFloated ? T("", !0) : (m(), x(y, {
1558
+ key: 0,
1559
+ location: "top"
1560
+ }, {
1561
+ activator: i(({ props: a }) => [
1562
+ u("div", D(A(a)), [
1563
+ s(v, {
1564
+ "data-test": "float-screen-icon",
1565
+ onClick: o.floatScreen
1566
+ }, {
1567
+ default: i(() => [
1568
+ g(w(l.floated ? "mdi-balloon" : "mdi-view-grid-outline"), 1)
1569
+ ]),
1570
+ _: 1
1571
+ }, 8, ["onClick"])
1572
+ ], 16)
1573
+ ]),
1574
+ default: i(() => [
1575
+ u("span", null, w(l.floated ? "Unfloat Screen" : "Float Screen"), 1)
1576
+ ]),
1577
+ _: 1
1578
+ })),
1579
+ l.floated ? (m(), x(y, {
1580
+ key: 1,
1581
+ location: "top"
1582
+ }, {
1583
+ activator: i(({ props: a }) => [
1584
+ u("div", D(A(a)), [
1585
+ s(v, {
1586
+ "data-test": "up-screen-icon",
1587
+ onClick: o.upScreen
1588
+ }, {
1589
+ default: i(() => e[11] || (e[11] = [
1590
+ g(" mdi-arrow-up ")
1591
+ ])),
1592
+ _: 1
1593
+ }, 8, ["onClick"])
1594
+ ], 16)
1595
+ ]),
1596
+ default: i(() => [
1597
+ e[12] || (e[12] = u("span", null, " Move Screen Up ", -1))
1598
+ ]),
1599
+ _: 1
1600
+ })) : T("", !0),
1601
+ l.floated && l.zIndex > n.minZ ? (m(), x(y, {
1602
+ key: 2,
1603
+ location: "top"
1604
+ }, {
1605
+ activator: i(({ props: a }) => [
1606
+ u("div", D(A(a)), [
1607
+ s(v, {
1608
+ "data-test": "down-screen-icon",
1609
+ onClick: o.downScreen
1610
+ }, {
1611
+ default: i(() => e[13] || (e[13] = [
1612
+ g(" mdi-arrow-down ")
1613
+ ])),
1614
+ _: 1
1615
+ }, 8, ["onClick"])
1616
+ ], 16)
1617
+ ]),
1618
+ default: i(() => [
1619
+ e[14] || (e[14] = u("span", null, " Move Screen Down ", -1))
1620
+ ]),
1621
+ _: 1
1622
+ })) : T("", !0),
1623
+ s(f),
1624
+ u("span", null, w(n.target) + " " + w(n.screen), 1),
1625
+ s(f),
1626
+ s(y, { location: "top" }, {
1627
+ activator: i(({ props: a }) => [
1628
+ u("div", D(A(a)), [
1629
+ F(s(v, {
1630
+ "data-test": "minimize-screen-icon",
1631
+ onClick: o.minMaxTransition
1632
+ }, {
1633
+ default: i(() => e[15] || (e[15] = [
1634
+ g(" mdi-window-minimize ")
1635
+ ])),
1636
+ _: 1
1637
+ }, 8, ["onClick"]), [
1638
+ [O, l.expand]
1639
+ ]),
1640
+ F(s(v, {
1641
+ "data-test": "maximize-screen-icon",
1642
+ onClick: o.minMaxTransition
1643
+ }, {
1644
+ default: i(() => e[16] || (e[16] = [
1645
+ g(" mdi-window-maximize ")
1646
+ ])),
1647
+ _: 1
1648
+ }, 8, ["onClick"]), [
1649
+ [O, !l.expand]
1650
+ ])
1651
+ ], 16)
1652
+ ]),
1653
+ default: i(() => [
1654
+ F(u("span", null, " Minimize Screen ", 512), [
1655
+ [O, l.expand]
1656
+ ]),
1657
+ F(u("span", null, " Maximize Screen ", 512), [
1658
+ [O, !l.expand]
1659
+ ])
1660
+ ]),
1661
+ _: 1
1662
+ }),
1663
+ n.showClose ? (m(), x(y, {
1664
+ key: 3,
1665
+ location: "top"
1666
+ }, {
1667
+ activator: i(({ props: a }) => [
1668
+ u("div", D(A(a)), [
1669
+ s(v, {
1670
+ "data-test": "close-screen-icon",
1671
+ onClick: e[1] || (e[1] = (R) => t.$emit("close-screen"))
1672
+ }, {
1673
+ default: i(() => e[17] || (e[17] = [
1674
+ g(" mdi-close-box ")
1675
+ ])),
1676
+ _: 1
1677
+ })
1678
+ ], 16)
1679
+ ]),
1680
+ default: i(() => [
1681
+ e[18] || (e[18] = u("span", null, " Close Screen ", -1))
1682
+ ]),
1683
+ _: 1
1684
+ })) : T("", !0)
1685
+ ]),
1686
+ _: 1
1687
+ }),
1688
+ l.editDialog ? T("", !0) : (m(), x(_, { key: 0 }, {
1689
+ default: i(() => [
1690
+ F(u("div", ke, [
1691
+ s(h, {
1692
+ style: { "pointer-events": "none" },
1693
+ "model-value": l.errors.length !== 0,
1694
+ opacity: "0.8",
1695
+ absolute: "",
1696
+ attach: ""
1697
+ }, null, 8, ["model-value"]),
1698
+ (m(), x(c, {
1699
+ key: l.screenKey,
1700
+ widgets: l.layoutStack[0].widgets,
1701
+ "screen-values": l.screenValues,
1702
+ "screen-time-zone": n.timeZone,
1703
+ onAddItem: o.addItem,
1704
+ onDeleteItem: o.deleteItem,
1705
+ onOpen: o.open,
1706
+ onClose: o.close,
1707
+ onCloseAll: o.closeAll
1708
+ }, null, 8, ["widgets", "screen-values", "screen-time-zone", "onAddItem", "onDeleteItem", "onOpen", "onClose", "onCloseAll"]))
1709
+ ], 512), [
1710
+ [O, l.expand]
1711
+ ])
1712
+ ]),
1713
+ _: 1
1714
+ }))
1715
+ ]),
1716
+ _: 1
1717
+ }, 8, ["min-height", "min-width"])),
1718
+ n.inline ? (m(), V("div", Se, [
1719
+ s(h, {
1720
+ style: { "pointer-events": "none" },
1721
+ "model-value": l.errors.length !== 0,
1722
+ opacity: "0.8",
1723
+ absolute: "",
1724
+ attach: ""
1725
+ }, null, 8, ["model-value"]),
1726
+ (m(), x(c, {
1727
+ key: l.screenKey,
1728
+ widgets: l.layoutStack[0].widgets,
1729
+ "screen-values": l.screenValues,
1730
+ "screen-time-zone": n.timeZone,
1731
+ onAddItem: o.addItem,
1732
+ onDeleteItem: o.deleteItem,
1733
+ onOpen: o.open,
1734
+ onClose: o.close,
1735
+ onCloseAll: o.closeAll
1736
+ }, null, 8, ["widgets", "screen-values", "screen-time-zone", "onAddItem", "onDeleteItem", "onOpen", "onClose", "onCloseAll"]))
1737
+ ])) : T("", !0),
1738
+ l.editDialog ? (m(), x(k, {
1739
+ key: 2,
1740
+ modelValue: l.editDialog,
1741
+ "onUpdate:modelValue": e[2] || (e[2] = (a) => l.editDialog = a),
1742
+ target: n.target,
1743
+ screen: n.screen,
1744
+ definition: l.currentDefinition,
1745
+ keywords: n.keywords,
1746
+ errors: l.errors,
1747
+ onSave: e[3] || (e[3] = (a) => o.saveEdit(a)),
1748
+ onCancel: e[4] || (e[4] = (a) => o.cancelEdit()),
1749
+ onDelete: e[5] || (e[5] = (a) => o.deleteScreen())
1750
+ }, null, 8, ["modelValue", "target", "screen", "definition", "keywords", "errors"])) : T("", !0),
1751
+ s(E, {
1752
+ modelValue: l.errorDialog,
1753
+ "onUpdate:modelValue": e[6] || (e[6] = (a) => l.errorDialog = a),
1754
+ width: "60vw"
1755
+ }, {
1756
+ default: i(() => [
1757
+ s(p, { height: "24" }, {
1758
+ default: i(() => [
1759
+ s(f),
1760
+ u("span", null, " Screen: " + w(n.target) + " " + w(n.screen) + " Errors ", 1),
1761
+ s(f)
1762
+ ]),
1763
+ _: 1
1764
+ }),
1765
+ s(b, null, {
1766
+ default: i(() => [
1767
+ s(S, {
1768
+ class: "errors",
1769
+ readonly: "",
1770
+ rows: "13",
1771
+ "model-value": o.error
1772
+ }, null, 8, ["model-value"])
1773
+ ]),
1774
+ _: 1
1775
+ })
1776
+ ]),
1777
+ _: 1
1778
+ }, 8, ["modelValue"])
1779
+ ], 4);
1780
+ }
1781
+ const Oe = /* @__PURE__ */ N(we, [["render", Ce], ["__scopeId", "data-v-2bc7c71d"]]);
1782
+ export {
1783
+ re as E,
1784
+ Fe as F,
1785
+ Oe as O,
1786
+ te as S,
1787
+ Ae as a
1788
+ };
1789
+ //# sourceMappingURL=Openc3Screen-Cud0OCFu.js.map