@openc3/vue-common 6.2.1 → 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 (489) hide show
  1. package/dist/{ArrayWidget-BxEO5hEG.js → ArrayWidget-BbsN1dzF.js} +5 -5
  2. package/dist/{ArrayWidget-BxEO5hEG.js.map → ArrayWidget-BbsN1dzF.js.map} +1 -1
  3. package/dist/{ArrayWidget-BIQi_bWC.cjs → ArrayWidget-DkjHrXsu.cjs} +3 -3
  4. package/dist/{ArrayWidget-BIQi_bWC.cjs.map → ArrayWidget-DkjHrXsu.cjs.map} +1 -1
  5. package/dist/{ArrayplotWidget-B_VPoV4v.js → ArrayplotWidget-CCKEyYIx.js} +4 -4
  6. package/dist/{ArrayplotWidget-B_VPoV4v.js.map → ArrayplotWidget-CCKEyYIx.js.map} +1 -1
  7. package/dist/ArrayplotWidget-COeaK_Lz.cjs +2 -0
  8. package/dist/{ArrayplotWidget-Donxhd8_.cjs.map → ArrayplotWidget-COeaK_Lz.cjs.map} +1 -1
  9. package/dist/{BarColumn-C9dkpg2O.js → BarColumn-C6p07yWK.js} +3 -3
  10. package/dist/{BarColumn-C9dkpg2O.js.map → BarColumn-C6p07yWK.js.map} +1 -1
  11. package/dist/BarColumn-CJLW1nXy.cjs +2 -0
  12. package/dist/{BarColumn-CyRSZHMh.cjs.map → BarColumn-CJLW1nXy.cjs.map} +1 -1
  13. package/dist/BlockWidget-BFVYgbd_.cjs +3 -0
  14. package/dist/{BlockWidget-DPLN1jgj.cjs.map → BlockWidget-BFVYgbd_.cjs.map} +1 -1
  15. package/dist/{BlockWidget-CuefOin6.js → BlockWidget-DlCHbqZX.js} +5 -5
  16. package/dist/{BlockWidget-CuefOin6.js.map → BlockWidget-DlCHbqZX.js.map} +1 -1
  17. package/dist/{ButtonWidget-B6HM0Doo.js → ButtonWidget-CtfJzCBR.js} +15 -15
  18. package/dist/{ButtonWidget-B6HM0Doo.js.map → ButtonWidget-CtfJzCBR.js.map} +1 -1
  19. package/dist/ButtonWidget-HN8UHsme.cjs +3 -0
  20. package/dist/{ButtonWidget-DccYzIY3.cjs.map → ButtonWidget-HN8UHsme.cjs.map} +1 -1
  21. package/dist/CanvasWidget-CHmkxxMO.cjs +2 -0
  22. package/dist/{CanvasWidget-BzTU9rc9.cjs.map → CanvasWidget-CHmkxxMO.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-DZQGG-yQ.js → CanvasWidget-CqRlXc4r.js} +3 -3
  24. package/dist/{CanvasWidget-DZQGG-yQ.js.map → CanvasWidget-CqRlXc4r.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-6wuCSnw_.js → CanvasdotWidget--Xr_KsZs.js} +3 -3
  26. package/dist/{CanvasdotWidget-6wuCSnw_.js.map → CanvasdotWidget--Xr_KsZs.js.map} +1 -1
  27. package/dist/CanvasdotWidget-B4bUcKRc.cjs +2 -0
  28. package/dist/{CanvasdotWidget-B7VTS1QI.cjs.map → CanvasdotWidget-B4bUcKRc.cjs.map} +1 -1
  29. package/dist/CanvasimageWidget-B5YozXoI.cjs +2 -0
  30. package/dist/{CanvasimageWidget-BwYpfmDE.cjs.map → CanvasimageWidget-B5YozXoI.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-mhcPpAuN.js → CanvasimageWidget-BPlj5QYK.js} +4 -4
  32. package/dist/{CanvasimageWidget-mhcPpAuN.js.map → CanvasimageWidget-BPlj5QYK.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-Cx-dH8Gc.js → CanvasimagevalueWidget-DVFGLt8f.js} +4 -4
  34. package/dist/{CanvasimagevalueWidget-Cx-dH8Gc.js.map → CanvasimagevalueWidget-DVFGLt8f.js.map} +1 -1
  35. package/dist/CanvasimagevalueWidget-Dx1HnbEw.cjs +2 -0
  36. package/dist/{CanvasimagevalueWidget-E_NsZ82T.cjs.map → CanvasimagevalueWidget-Dx1HnbEw.cjs.map} +1 -1
  37. package/dist/{CanvaslabelWidget-CQZCeohU.js → CanvaslabelWidget-CYNqmyP0.js} +3 -3
  38. package/dist/{CanvaslabelWidget-CQZCeohU.js.map → CanvaslabelWidget-CYNqmyP0.js.map} +1 -1
  39. package/dist/CanvaslabelWidget-DgadQD-D.cjs +2 -0
  40. package/dist/{CanvaslabelWidget-BBDuXWfU.cjs.map → CanvaslabelWidget-DgadQD-D.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-CwmYDCjr.js → CanvaslabelvalueWidget-B7yIDmsn.js} +3 -3
  42. package/dist/{CanvaslabelvalueWidget-CwmYDCjr.js.map → CanvaslabelvalueWidget-B7yIDmsn.js.map} +1 -1
  43. package/dist/CanvaslabelvalueWidget-C3k5gx5c.cjs +2 -0
  44. package/dist/{CanvaslabelvalueWidget-DAdu7ujn.cjs.map → CanvaslabelvalueWidget-C3k5gx5c.cjs.map} +1 -1
  45. package/dist/{CanvaslineWidget-nTP3fJB4.js → CanvaslineWidget-BICdxX0Q.js} +3 -3
  46. package/dist/{CanvaslineWidget-nTP3fJB4.js.map → CanvaslineWidget-BICdxX0Q.js.map} +1 -1
  47. package/dist/CanvaslineWidget-CYHkes0a.cjs +2 -0
  48. package/dist/{CanvaslineWidget-Bv5da1Vy.cjs.map → CanvaslineWidget-CYHkes0a.cjs.map} +1 -1
  49. package/dist/CanvaslinevalueWidget-5DzhZ22p.cjs +2 -0
  50. package/dist/{CanvaslinevalueWidget-BVfUB96K.cjs.map → CanvaslinevalueWidget-5DzhZ22p.cjs.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-C3sJnjLQ.js → CanvaslinevalueWidget-Cq-Ddh0P.js} +3 -3
  52. package/dist/{CanvaslinevalueWidget-C3sJnjLQ.js.map → CanvaslinevalueWidget-Cq-Ddh0P.js.map} +1 -1
  53. package/dist/{CheckbuttonWidget-5-8YDsQL.js → CheckbuttonWidget-B74AWeaW.js} +3 -3
  54. package/dist/{CheckbuttonWidget-5-8YDsQL.js.map → CheckbuttonWidget-B74AWeaW.js.map} +1 -1
  55. package/dist/CheckbuttonWidget-BCzsXnIF.cjs +2 -0
  56. package/dist/{CheckbuttonWidget-BGqD-BGc.cjs.map → CheckbuttonWidget-BCzsXnIF.cjs.map} +1 -1
  57. package/dist/{ComboboxWidget-DzBL8h9f.js → ComboboxWidget-CtyKbEWb.js} +3 -3
  58. package/dist/{ComboboxWidget-DzBL8h9f.js.map → ComboboxWidget-CtyKbEWb.js.map} +1 -1
  59. package/dist/ComboboxWidget-DQgDyDAC.cjs +2 -0
  60. package/dist/{ComboboxWidget-DoHMlSAr.cjs.map → ComboboxWidget-DQgDyDAC.cjs.map} +1 -1
  61. package/dist/CriticalCmdDialog-BnxZlt7W.cjs +2 -0
  62. package/dist/{CriticalCmdDialog-DoLBrU2k.cjs.map → CriticalCmdDialog-BnxZlt7W.cjs.map} +1 -1
  63. package/dist/{CriticalCmdDialog-DLEasFsx.js → CriticalCmdDialog-DPIZOBeP.js} +4 -4
  64. package/dist/{CriticalCmdDialog-DLEasFsx.js.map → CriticalCmdDialog-DPIZOBeP.js.map} +1 -1
  65. package/dist/CustomIcon-Bop2mEnu.cjs +2 -0
  66. package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -0
  67. package/dist/CustomIcon-h5X7369N.js +50 -0
  68. package/dist/CustomIcon-h5X7369N.js.map +1 -0
  69. package/dist/DateWidget-BB4cIuUS.cjs +2 -0
  70. package/dist/{DateWidget-DKZz1J9J.cjs.map → DateWidget-BB4cIuUS.cjs.map} +1 -1
  71. package/dist/{DateWidget-CW7Od7lB.js → DateWidget-BEVSczU8.js} +3 -3
  72. package/dist/{DateWidget-CW7Od7lB.js.map → DateWidget-BEVSczU8.js.map} +1 -1
  73. package/dist/{DetailsDialog-BvbziA7Y.js → DetailsDialog-DmEC5BTs.js} +6 -6
  74. package/dist/{DetailsDialog-BvbziA7Y.js.map → DetailsDialog-DmEC5BTs.js.map} +1 -1
  75. package/dist/DetailsDialog-mvxMFmgV.cjs +2 -0
  76. package/dist/{DetailsDialog-CiuQYvJK.cjs.map → DetailsDialog-mvxMFmgV.cjs.map} +1 -1
  77. package/dist/DynamicWidget-BWEVCUfd.cjs +2 -0
  78. package/dist/{DynamicWidget-3wHr6Ng-.cjs.map → DynamicWidget-BWEVCUfd.cjs.map} +1 -1
  79. package/dist/{DynamicWidget-gFSYxzvT.js → DynamicWidget-CfMtj7H8.js} +2 -2
  80. package/dist/{DynamicWidget-gFSYxzvT.js.map → DynamicWidget-CfMtj7H8.js.map} +1 -1
  81. package/dist/EventListDialog-BHZLl28V.cjs +2 -0
  82. package/dist/EventListDialog-BHZLl28V.cjs.map +1 -0
  83. package/dist/EventListDialog-CSMSmCIT.js +1586 -0
  84. package/dist/EventListDialog-CSMSmCIT.js.map +1 -0
  85. package/dist/FormatvalueWidget-CdjCEAI7.cjs +2 -0
  86. package/dist/{FormatvalueWidget-DFrbeKb9.cjs.map → FormatvalueWidget-CdjCEAI7.cjs.map} +1 -1
  87. package/dist/{FormatvalueWidget-CGpnTqVH.js → FormatvalueWidget-DN12xymS.js} +4 -4
  88. package/dist/{FormatvalueWidget-CGpnTqVH.js.map → FormatvalueWidget-DN12xymS.js.map} +1 -1
  89. package/dist/{Graph-3rkhFP3G.js → Graph-Bgo0cjl3.js} +214 -209
  90. package/dist/Graph-Bgo0cjl3.js.map +1 -0
  91. package/dist/Graph-Ujd2yaeI.cjs +2 -0
  92. package/dist/Graph-Ujd2yaeI.cjs.map +1 -0
  93. package/dist/{GraphWidget-Dycey-mj.js → GraphWidget-DurWDmpg.js} +2 -2
  94. package/dist/{GraphWidget-Dycey-mj.js.map → GraphWidget-DurWDmpg.js.map} +1 -1
  95. package/dist/{GraphWidget-22NxFa9k.cjs → GraphWidget-sid4Ws9H.cjs} +2 -2
  96. package/dist/{GraphWidget-22NxFa9k.cjs.map → GraphWidget-sid4Ws9H.cjs.map} +1 -1
  97. package/dist/{HorizontalWidget-D31NRWy5.js → HorizontalWidget-Cd_wl1b3.js} +3 -3
  98. package/dist/{HorizontalWidget-D31NRWy5.js.map → HorizontalWidget-Cd_wl1b3.js.map} +1 -1
  99. package/dist/HorizontalWidget-_6IR0cR8.cjs +2 -0
  100. package/dist/{HorizontalWidget-BBeB0eBI.cjs.map → HorizontalWidget-_6IR0cR8.cjs.map} +1 -1
  101. package/dist/HorizontalboxWidget-BcMTFBU-.js +47 -0
  102. package/dist/HorizontalboxWidget-BcMTFBU-.js.map +1 -0
  103. package/dist/HorizontalboxWidget-zmnurtv1.cjs +2 -0
  104. package/dist/HorizontalboxWidget-zmnurtv1.cjs.map +1 -0
  105. package/dist/HorizontallineWidget-CM-6WqCj.cjs +2 -0
  106. package/dist/{HorizontallineWidget-BCKOQase.cjs.map → HorizontallineWidget-CM-6WqCj.cjs.map} +1 -1
  107. package/dist/HorizontallineWidget-CXFqHclf.js +16 -0
  108. package/dist/{HorizontallineWidget-CbxREBYI.js.map → HorizontallineWidget-CXFqHclf.js.map} +1 -1
  109. package/dist/{IframeWidget-Ctj8OIcG.js → IframeWidget-BPerHCCa.js} +3 -3
  110. package/dist/{IframeWidget-Ctj8OIcG.js.map → IframeWidget-BPerHCCa.js.map} +1 -1
  111. package/dist/IframeWidget-EhncMob0.cjs +2 -0
  112. package/dist/{IframeWidget-CZwsTgvX.cjs.map → IframeWidget-EhncMob0.cjs.map} +1 -1
  113. package/dist/{ImageLoader-BrNrCBvi.js → ImageLoader-4N-7Gj61.js} +2 -2
  114. package/dist/{ImageLoader-BrNrCBvi.js.map → ImageLoader-4N-7Gj61.js.map} +1 -1
  115. package/dist/ImageLoader-cRmBcpU9.cjs +2 -0
  116. package/dist/{ImageLoader-D_Gq-KxR.cjs.map → ImageLoader-cRmBcpU9.cjs.map} +1 -1
  117. package/dist/ImageviewerWidget-Bv3CreXd.cjs +2 -0
  118. package/dist/{ImageviewerWidget-DwRPFSLR.cjs.map → ImageviewerWidget-Bv3CreXd.cjs.map} +1 -1
  119. package/dist/{ImageviewerWidget-XrsqxmLo.js → ImageviewerWidget-Cw_H_HmZ.js} +3 -3
  120. package/dist/{ImageviewerWidget-XrsqxmLo.js.map → ImageviewerWidget-Cw_H_HmZ.js.map} +1 -1
  121. package/dist/{InterfacesTab-DAeNlGlB.js → InterfacesTab-B4glsR9Z.js} +4 -4
  122. package/dist/{InterfacesTab-DAeNlGlB.js.map → InterfacesTab-B4glsR9Z.js.map} +1 -1
  123. package/dist/InterfacesTab-Co1Kd6Fa.cjs +2 -0
  124. package/dist/{InterfacesTab-CLaicsHA.cjs.map → InterfacesTab-Co1Kd6Fa.cjs.map} +1 -1
  125. package/dist/LabelWidget-mMcf5S8K.cjs +2 -0
  126. package/dist/LabelWidget-mMcf5S8K.cjs.map +1 -0
  127. package/dist/{LabelWidget-t7I87dp7.js → LabelWidget-xrmcVeq8.js} +5 -5
  128. package/dist/LabelWidget-xrmcVeq8.js.map +1 -0
  129. package/dist/LabelledWidget-BoYCuDaH.cjs +2 -0
  130. package/dist/{LabelledWidget-DUpHxc9z.cjs.map → LabelledWidget-BoYCuDaH.cjs.map} +1 -1
  131. package/dist/{LabelledWidget-C7TDf92M.js → LabelledWidget-D48QoyMk.js} +5 -5
  132. package/dist/{LabelledWidget-C7TDf92M.js.map → LabelledWidget-D48QoyMk.js.map} +1 -1
  133. package/dist/{LabelprogressbarWidget-wwLURt1u.js → LabelprogressbarWidget-C_950t6g.js} +5 -5
  134. package/dist/{LabelprogressbarWidget-wwLURt1u.js.map → LabelprogressbarWidget-C_950t6g.js.map} +1 -1
  135. package/dist/LabelprogressbarWidget-DiucKsT2.cjs +2 -0
  136. package/dist/{LabelprogressbarWidget-D6cpayCR.cjs.map → LabelprogressbarWidget-DiucKsT2.cjs.map} +1 -1
  137. package/dist/{LabelsparklineWidget-B3awLUyP.js → LabelsparklineWidget-0KXQyPoU.js} +5 -5
  138. package/dist/{LabelsparklineWidget-B3awLUyP.js.map → LabelsparklineWidget-0KXQyPoU.js.map} +1 -1
  139. package/dist/LabelsparklineWidget-A3MTEhQc.cjs +2 -0
  140. package/dist/{LabelsparklineWidget-CJRnLETe.cjs.map → LabelsparklineWidget-A3MTEhQc.cjs.map} +1 -1
  141. package/dist/{LabelvalueWidget-Zx_yHCtl.js → LabelvalueWidget-CQ06wWDK.js} +5 -5
  142. package/dist/{LabelvalueWidget-Zx_yHCtl.js.map → LabelvalueWidget-CQ06wWDK.js.map} +1 -1
  143. package/dist/LabelvalueWidget-DnKoz0-N.cjs +2 -0
  144. package/dist/{LabelvalueWidget-owiMSCYl.cjs.map → LabelvalueWidget-DnKoz0-N.cjs.map} +1 -1
  145. package/dist/{LabelvaluedescWidget-BBSBh4vI.js → LabelvaluedescWidget-Bo8zT01X.js} +6 -6
  146. package/dist/{LabelvaluedescWidget-BBSBh4vI.js.map → LabelvaluedescWidget-Bo8zT01X.js.map} +1 -1
  147. package/dist/LabelvaluedescWidget-I6ljK--Y.cjs +2 -0
  148. package/dist/{LabelvaluedescWidget-MRmZBUc0.cjs.map → LabelvaluedescWidget-I6ljK--Y.cjs.map} +1 -1
  149. package/dist/{LabelvaluelimitsbarWidget-CZueHYWG.js → LabelvaluelimitsbarWidget-BucTw8Yk.js} +5 -5
  150. package/dist/{LabelvaluelimitsbarWidget-CZueHYWG.js.map → LabelvaluelimitsbarWidget-BucTw8Yk.js.map} +1 -1
  151. package/dist/LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs +2 -0
  152. package/dist/{LabelvaluelimitsbarWidget-BQ2XYPNE.cjs.map → LabelvaluelimitsbarWidget-Cb6i_Ixc.cjs.map} +1 -1
  153. package/dist/LabelvaluelimitscolumnWidget-ClY5OxUC.cjs +2 -0
  154. package/dist/{LabelvaluelimitscolumnWidget-DNmVpU8J.cjs.map → LabelvaluelimitscolumnWidget-ClY5OxUC.cjs.map} +1 -1
  155. package/dist/{LabelvaluelimitscolumnWidget-BTvzyQMq.js → LabelvaluelimitscolumnWidget-Dflb1hNd.js} +6 -6
  156. package/dist/{LabelvaluelimitscolumnWidget-BTvzyQMq.js.map → LabelvaluelimitscolumnWidget-Dflb1hNd.js.map} +1 -1
  157. package/dist/LabelvaluerangebarWidget-9S5rVZaS.cjs +2 -0
  158. package/dist/{LabelvaluerangebarWidget-DL0U8cbw.cjs.map → LabelvaluerangebarWidget-9S5rVZaS.cjs.map} +1 -1
  159. package/dist/{LabelvaluerangebarWidget-BhYTBgDq.js → LabelvaluerangebarWidget-D8cbfXFM.js} +5 -5
  160. package/dist/{LabelvaluerangebarWidget-BhYTBgDq.js.map → LabelvaluerangebarWidget-D8cbfXFM.js.map} +1 -1
  161. package/dist/Layout-DuCYyOw4.cjs +2 -0
  162. package/dist/{Layout-DRL0EeSA.cjs.map → Layout-DuCYyOw4.cjs.map} +1 -1
  163. package/dist/{Layout-Bh7VzCZd.js → Layout-Tf--nruw.js} +2 -2
  164. package/dist/{Layout-Bh7VzCZd.js.map → Layout-Tf--nruw.js.map} +1 -1
  165. package/dist/LedWidget-B2BcwiYF.cjs +2 -0
  166. package/dist/LedWidget-B2BcwiYF.cjs.map +1 -0
  167. package/dist/LedWidget-qH_FthkK.js +145 -0
  168. package/dist/LedWidget-qH_FthkK.js.map +1 -0
  169. package/dist/{LimitsbarWidget-Djui0IpK.js → LimitsbarWidget-B9lAB2RD.js} +3 -3
  170. package/dist/{LimitsbarWidget-Djui0IpK.js.map → LimitsbarWidget-B9lAB2RD.js.map} +1 -1
  171. package/dist/LimitsbarWidget-CVCLFIhG.cjs +2 -0
  172. package/dist/{LimitsbarWidget-CYIH8fdp.cjs.map → LimitsbarWidget-CVCLFIhG.cjs.map} +1 -1
  173. package/dist/LimitscolorWidget-DORhDxRo.cjs +2 -0
  174. package/dist/{LimitscolorWidget-CS0wpX9A.cjs.map → LimitscolorWidget-DORhDxRo.cjs.map} +1 -1
  175. package/dist/{LimitscolorWidget-DdmvKzmx.js → LimitscolorWidget-c6Qa6su7.js} +3 -3
  176. package/dist/{LimitscolorWidget-DdmvKzmx.js.map → LimitscolorWidget-c6Qa6su7.js.map} +1 -1
  177. package/dist/LimitscolumnWidget-C9Uyg7Fh.cjs +2 -0
  178. package/dist/{LimitscolumnWidget-C_UW6xKq.cjs.map → LimitscolumnWidget-C9Uyg7Fh.cjs.map} +1 -1
  179. package/dist/{LimitscolumnWidget-Cc19IEjq.js → LimitscolumnWidget-CcLs_443.js} +3 -3
  180. package/dist/{LimitscolumnWidget-Cc19IEjq.js.map → LimitscolumnWidget-CcLs_443.js.map} +1 -1
  181. package/dist/{LinegraphWidget-BtieJxeL.js → LinegraphWidget-BSVYLFo1.js} +5 -5
  182. package/dist/{LinegraphWidget-BtieJxeL.js.map → LinegraphWidget-BSVYLFo1.js.map} +1 -1
  183. package/dist/LinegraphWidget-Bf8DIwEn.cjs +2 -0
  184. package/dist/{LinegraphWidget-8td_PqgU.cjs.map → LinegraphWidget-Bf8DIwEn.cjs.map} +1 -1
  185. package/dist/{MatrixbycolumnsWidget-DnExVRF8.js → MatrixbycolumnsWidget-DXFpZTre.js} +4 -4
  186. package/dist/{MatrixbycolumnsWidget-DnExVRF8.js.map → MatrixbycolumnsWidget-DXFpZTre.js.map} +1 -1
  187. package/dist/MatrixbycolumnsWidget-DpdFzNeP.cjs +2 -0
  188. package/dist/{MatrixbycolumnsWidget-CGOeCNW2.cjs.map → MatrixbycolumnsWidget-DpdFzNeP.cjs.map} +1 -1
  189. package/dist/MicroservicesTab-B5n-mN8G.cjs +2 -0
  190. package/dist/MicroservicesTab-B5n-mN8G.cjs.map +1 -0
  191. package/dist/{MicroservicesTab-IbTmbPxO.js → MicroservicesTab-mCdS0v39.js} +17 -21
  192. package/dist/MicroservicesTab-mCdS0v39.js.map +1 -0
  193. package/dist/Openc3Screen-BYhHaH_I.cjs +5 -0
  194. package/dist/Openc3Screen-BYhHaH_I.cjs.map +1 -0
  195. package/dist/Openc3Screen-Cud0OCFu.js +1789 -0
  196. package/dist/Openc3Screen-Cud0OCFu.js.map +1 -0
  197. package/dist/{OutputDialog-B4Q0QMJ1.cjs → OutputDialog-DXoL9VPw.cjs} +2 -2
  198. package/dist/OutputDialog-DXoL9VPw.cjs.map +1 -0
  199. package/dist/{OutputDialog-Ci5OT_fH.js → OutputDialog-zVPZiZay.js} +3 -6
  200. package/dist/OutputDialog-zVPZiZay.js.map +1 -0
  201. package/dist/PackagesTab-CvT2JyMA.cjs +2 -0
  202. package/dist/{PackagesTab-eYbk2vw7.cjs.map → PackagesTab-CvT2JyMA.cjs.map} +1 -1
  203. package/dist/{PackagesTab-BX8YP3H1.js → PackagesTab-SWcXumpK.js} +4 -4
  204. package/dist/{PackagesTab-BX8YP3H1.js.map → PackagesTab-SWcXumpK.js.map} +1 -1
  205. package/dist/{PluginsTab-Ds3jk64b.js → PluginsTab-B64OvayB.js} +4 -4
  206. package/dist/{PluginsTab-Ds3jk64b.js.map → PluginsTab-B64OvayB.js.map} +1 -1
  207. package/dist/{PluginsTab-Ck3DvEGm.cjs → PluginsTab-CfpwWsqv.cjs} +4 -4
  208. package/dist/{PluginsTab-Ck3DvEGm.cjs.map → PluginsTab-CfpwWsqv.cjs.map} +1 -1
  209. package/dist/ProgressbarWidget-fGWa6ipm.cjs +2 -0
  210. package/dist/{ProgressbarWidget-CUIAYySg.cjs.map → ProgressbarWidget-fGWa6ipm.cjs.map} +1 -1
  211. package/dist/{ProgressbarWidget-DIfqhHRE.js → ProgressbarWidget-iYGw8-Dc.js} +3 -3
  212. package/dist/{ProgressbarWidget-DIfqhHRE.js.map → ProgressbarWidget-iYGw8-Dc.js.map} +1 -1
  213. package/dist/RadiobuttonWidget-ZEPJbOp_.cjs +2 -0
  214. package/dist/{RadiobuttonWidget-Cjk1JAP_.cjs.map → RadiobuttonWidget-ZEPJbOp_.cjs.map} +1 -1
  215. package/dist/{RadiobuttonWidget-QzIkNP7m.js → RadiobuttonWidget-ytmoVZ3u.js} +3 -3
  216. package/dist/{RadiobuttonWidget-QzIkNP7m.js.map → RadiobuttonWidget-ytmoVZ3u.js.map} +1 -1
  217. package/dist/{RadiogroupWidget-Ci9sCX39.js → RadiogroupWidget-CusMBhKH.js} +3 -3
  218. package/dist/{RadiogroupWidget-Ci9sCX39.js.map → RadiogroupWidget-CusMBhKH.js.map} +1 -1
  219. package/dist/RadiogroupWidget-EK4rEGUC.cjs +2 -0
  220. package/dist/{RadiogroupWidget-B4lkYWaC.cjs.map → RadiogroupWidget-EK4rEGUC.cjs.map} +1 -1
  221. package/dist/{RangebarWidget-CN0YuHqy.js → RangebarWidget-D_zGTtCa.js} +3 -3
  222. package/dist/{RangebarWidget-CN0YuHqy.js.map → RangebarWidget-D_zGTtCa.js.map} +1 -1
  223. package/dist/RangebarWidget-DwIs-L5k.cjs +2 -0
  224. package/dist/{RangebarWidget-nl0rzj93.cjs.map → RangebarWidget-DwIs-L5k.cjs.map} +1 -1
  225. package/dist/RedisTab-67UcKoPf.cjs +2 -0
  226. package/dist/{RedisTab-DhS4GHDj.cjs.map → RedisTab-67UcKoPf.cjs.map} +1 -1
  227. package/dist/{RedisTab-CVimDkIE.js → RedisTab-CyPo6ADN.js} +14 -14
  228. package/dist/{RedisTab-CVimDkIE.js.map → RedisTab-CyPo6ADN.js.map} +1 -1
  229. package/dist/RollupWidget-DC3OIP6G.cjs +2 -0
  230. package/dist/{RollupWidget-Bgudi_bt.cjs.map → RollupWidget-DC3OIP6G.cjs.map} +1 -1
  231. package/dist/{RollupWidget-y4jBtJB2.js → RollupWidget-Dolsixyt.js} +3 -3
  232. package/dist/{RollupWidget-y4jBtJB2.js.map → RollupWidget-Dolsixyt.js.map} +1 -1
  233. package/dist/RoutersTab-BBPlFi_z.cjs +2 -0
  234. package/dist/{RoutersTab-CzO10cVP.cjs.map → RoutersTab-BBPlFi_z.cjs.map} +1 -1
  235. package/dist/{RoutersTab-Dki_66av.js → RoutersTab-Cs2dFVNA.js} +4 -4
  236. package/dist/{RoutersTab-Dki_66av.js.map → RoutersTab-Cs2dFVNA.js.map} +1 -1
  237. package/dist/{ScriptChooser-l5i8c8KP.js → ScriptChooser-EV65rbWx.js} +3 -3
  238. package/dist/{ScriptChooser-l5i8c8KP.js.map → ScriptChooser-EV65rbWx.js.map} +1 -1
  239. package/dist/ScriptChooser-vyZwngrz.cjs +2 -0
  240. package/dist/{ScriptChooser-BNm_zXxX.cjs.map → ScriptChooser-vyZwngrz.cjs.map} +1 -1
  241. package/dist/ScrollwindowWidget-BWeqSUPc.cjs +2 -0
  242. package/dist/{ScrollwindowWidget-BIiV7xwi.cjs.map → ScrollwindowWidget-BWeqSUPc.cjs.map} +1 -1
  243. package/dist/{ScrollwindowWidget-CBzYk4Y3.js → ScrollwindowWidget-DV2nZuNi.js} +4 -4
  244. package/dist/{ScrollwindowWidget-CBzYk4Y3.js.map → ScrollwindowWidget-DV2nZuNi.js.map} +1 -1
  245. package/dist/SecretsTab-0IFqUxNJ.cjs +2 -0
  246. package/dist/{SecretsTab-BSzFZ81X.cjs.map → SecretsTab-0IFqUxNJ.cjs.map} +1 -1
  247. package/dist/{SecretsTab-BjviaTxh.js → SecretsTab-DVyyyGlG.js} +3 -3
  248. package/dist/{SecretsTab-BjviaTxh.js.map → SecretsTab-DVyyyGlG.js.map} +1 -1
  249. package/dist/SettingsTab-B1LvOLG2.cjs +3 -0
  250. package/dist/SettingsTab-B1LvOLG2.cjs.map +1 -0
  251. package/dist/{SettingsTab-Bo_dYXgb.js → SettingsTab-g29K6FyC.js} +198 -135
  252. package/dist/SettingsTab-g29K6FyC.js.map +1 -0
  253. package/dist/SignalWidget-RvRwpE8T.cjs +2 -0
  254. package/dist/{SignalWidget-CvZkvejy.cjs.map → SignalWidget-RvRwpE8T.cjs.map} +1 -1
  255. package/dist/{SignalWidget-DQ5Uc2uV.js → SignalWidget-d9-6h85k.js} +3 -3
  256. package/dist/{SignalWidget-DQ5Uc2uV.js.map → SignalWidget-d9-6h85k.js.map} +1 -1
  257. package/dist/SimpleTextDialog-Cpbt7Q-8.cjs +2 -0
  258. package/dist/{SimpleTextDialog-DmeNMMCR.cjs.map → SimpleTextDialog-Cpbt7Q-8.cjs.map} +1 -1
  259. package/dist/{SimpleTextDialog-CheuP_ls.js → SimpleTextDialog-pwN8oRy1.js} +9 -10
  260. package/dist/{SimpleTextDialog-CheuP_ls.js.map → SimpleTextDialog-pwN8oRy1.js.map} +1 -1
  261. package/dist/SpacerWidget-7_8bpLCb.cjs +2 -0
  262. package/dist/{SpacerWidget-BBJR6HBQ.cjs.map → SpacerWidget-7_8bpLCb.cjs.map} +1 -1
  263. package/dist/{SpacerWidget-6rsc_dSM.js → SpacerWidget-BH0p2OLi.js} +3 -3
  264. package/dist/{SpacerWidget-6rsc_dSM.js.map → SpacerWidget-BH0p2OLi.js.map} +1 -1
  265. package/dist/SparklineWidget-60jVlbHA.cjs +2 -0
  266. package/dist/{SparklineWidget-BxBLnjAO.cjs.map → SparklineWidget-60jVlbHA.cjs.map} +1 -1
  267. package/dist/{SparklineWidget-CZtvu2ss.js → SparklineWidget-coxi9r2g.js} +5 -5
  268. package/dist/{SparklineWidget-CZtvu2ss.js.map → SparklineWidget-coxi9r2g.js.map} +1 -1
  269. package/dist/{TabbookWidget-DNALU0jl.js → TabbookWidget-B1XKplGH.js} +3 -3
  270. package/dist/{TabbookWidget-DNALU0jl.js.map → TabbookWidget-B1XKplGH.js.map} +1 -1
  271. package/dist/TabbookWidget-D1CVT9IK.cjs +2 -0
  272. package/dist/{TabbookWidget-DyFQnA10.cjs.map → TabbookWidget-D1CVT9IK.cjs.map} +1 -1
  273. package/dist/{TargetsTab-Cd8U1aN_.js → TargetsTab-BkBkXn9A.js} +12 -12
  274. package/dist/{TargetsTab-Cd8U1aN_.js.map → TargetsTab-BkBkXn9A.js.map} +1 -1
  275. package/dist/TargetsTab-C-m26Eqq.cjs +2 -0
  276. package/dist/{TargetsTab-DMiOliqg.cjs.map → TargetsTab-C-m26Eqq.cjs.map} +1 -1
  277. package/dist/{TextBoxDialog-fHkDTtzI.js → TextBoxDialog-DOJ5d2RM.js} +2 -2
  278. package/dist/{TextBoxDialog-fHkDTtzI.js.map → TextBoxDialog-DOJ5d2RM.js.map} +1 -1
  279. package/dist/TextBoxDialog-DfMXg_5C.cjs +2 -0
  280. package/dist/{TextBoxDialog-DvUf3Cak.cjs.map → TextBoxDialog-DfMXg_5C.cjs.map} +1 -1
  281. package/dist/TextboxWidget-BDG4NxRw.cjs +2 -0
  282. package/dist/{TextboxWidget-D6lW_dsU.cjs.map → TextboxWidget-BDG4NxRw.cjs.map} +1 -1
  283. package/dist/{TextboxWidget-5hqPj74D.js → TextboxWidget-C-_M2M4l.js} +5 -5
  284. package/dist/{TextboxWidget-5hqPj74D.js.map → TextboxWidget-C-_M2M4l.js.map} +1 -1
  285. package/dist/TextfieldWidget-BGJv9Lox.cjs +2 -0
  286. package/dist/{TextfieldWidget-iHN7-fyF.cjs.map → TextfieldWidget-BGJv9Lox.cjs.map} +1 -1
  287. package/dist/{TextfieldWidget-Df0ANSiU.js → TextfieldWidget-C08N4JE8.js} +3 -3
  288. package/dist/{TextfieldWidget-Df0ANSiU.js.map → TextfieldWidget-C08N4JE8.js.map} +1 -1
  289. package/dist/TimeWidget-CGCOIouj.cjs +2 -0
  290. package/dist/{TimeWidget-C3NZqTEG.cjs.map → TimeWidget-CGCOIouj.cjs.map} +1 -1
  291. package/dist/{TimeWidget-C6XQMUG2.js → TimeWidget-DtwdEcFg.js} +3 -3
  292. package/dist/{TimeWidget-C6XQMUG2.js.map → TimeWidget-DtwdEcFg.js.map} +1 -1
  293. package/dist/TitleWidget-BljFH9RB.cjs +2 -0
  294. package/dist/{TitleWidget-CWZs33c4.cjs.map → TitleWidget-BljFH9RB.cjs.map} +1 -1
  295. package/dist/{TitleWidget-B9SPUlbW.js → TitleWidget-CT-aLcNb.js} +3 -3
  296. package/dist/{TitleWidget-B9SPUlbW.js.map → TitleWidget-CT-aLcNb.js.map} +1 -1
  297. package/dist/{ToolsTab-Cgpb2nAW.js → ToolsTab-NveeVXz2.js} +4 -4
  298. package/dist/{ToolsTab-Cgpb2nAW.js.map → ToolsTab-NveeVXz2.js.map} +1 -1
  299. package/dist/{ToolsTab-CUpUmkZL.cjs → ToolsTab-RMTst_Sy.cjs} +3 -3
  300. package/dist/{ToolsTab-CUpUmkZL.cjs.map → ToolsTab-RMTst_Sy.cjs.map} +1 -1
  301. package/dist/{TopBar-F1jHuFan.js → TopBar-CnJNNJlV.js} +104 -74
  302. package/dist/TopBar-CnJNNJlV.js.map +1 -0
  303. package/dist/TopBar-Cnmb6DyC.cjs +2 -0
  304. package/dist/TopBar-Cnmb6DyC.cjs.map +1 -0
  305. package/dist/{UpgradeToEnterpriseDialog-DVcAH30Y.js → UpgradeToEnterpriseDialog-BvfgoNB1.js} +9 -10
  306. package/dist/{UpgradeToEnterpriseDialog-DVcAH30Y.js.map → UpgradeToEnterpriseDialog-BvfgoNB1.js.map} +1 -1
  307. package/dist/UpgradeToEnterpriseDialog-sUipOVpB.cjs +2 -0
  308. package/dist/{UpgradeToEnterpriseDialog-DfIKahNK.cjs.map → UpgradeToEnterpriseDialog-sUipOVpB.cjs.map} +1 -1
  309. package/dist/{VWidget-C2x_zSC2.cjs → VWidget-2N2cOosI.cjs} +2 -2
  310. package/dist/{VWidget-C2x_zSC2.cjs.map → VWidget-2N2cOosI.cjs.map} +1 -1
  311. package/dist/{VWidget-C4spAawK.js → VWidget-DQqb7NVW.js} +2 -2
  312. package/dist/{VWidget-C4spAawK.js.map → VWidget-DQqb7NVW.js.map} +1 -1
  313. package/dist/{ValueWidget-D4RrYVEK.js → ValueWidget-C6RanBj3.js} +5 -5
  314. package/dist/{ValueWidget-D4RrYVEK.js.map → ValueWidget-C6RanBj3.js.map} +1 -1
  315. package/dist/ValueWidget-Cu7hgKja.cjs +2 -0
  316. package/dist/{ValueWidget-Do3Yn47P.cjs.map → ValueWidget-Cu7hgKja.cjs.map} +1 -1
  317. package/dist/{ValuelimitsbarWidget-Bc9_Vj_f.js → ValuelimitsbarWidget-B3bvjfxc.js} +5 -5
  318. package/dist/{ValuelimitsbarWidget-Bc9_Vj_f.js.map → ValuelimitsbarWidget-B3bvjfxc.js.map} +1 -1
  319. package/dist/ValuelimitsbarWidget-C0HROxrb.cjs +2 -0
  320. package/dist/{ValuelimitsbarWidget-DJuh7FOs.cjs.map → ValuelimitsbarWidget-C0HROxrb.cjs.map} +1 -1
  321. package/dist/ValuelimitscolumnWidget-CWvLfg8u.cjs +2 -0
  322. package/dist/{ValuelimitscolumnWidget-BFpG-H7v.cjs.map → ValuelimitscolumnWidget-CWvLfg8u.cjs.map} +1 -1
  323. package/dist/{ValuelimitscolumnWidget-DHKIL7sf.js → ValuelimitscolumnWidget-QvhI6EcE.js} +5 -5
  324. package/dist/{ValuelimitscolumnWidget-DHKIL7sf.js.map → ValuelimitscolumnWidget-QvhI6EcE.js.map} +1 -1
  325. package/dist/{ValuerangebarWidget-CecQRIok.js → ValuerangebarWidget-Dt3K9BnC.js} +5 -5
  326. package/dist/{ValuerangebarWidget-CecQRIok.js.map → ValuerangebarWidget-Dt3K9BnC.js.map} +1 -1
  327. package/dist/ValuerangebarWidget-DyN78cQl.cjs +2 -0
  328. package/dist/{ValuerangebarWidget-BlZSaiXo.cjs.map → ValuerangebarWidget-DyN78cQl.cjs.map} +1 -1
  329. package/dist/{VerticalWidget-D8jUFxjS.js → VerticalWidget-BIIViZgI.js} +3 -3
  330. package/dist/{VerticalWidget-D8jUFxjS.js.map → VerticalWidget-BIIViZgI.js.map} +1 -1
  331. package/dist/VerticalWidget-CFTOu4H8.cjs +2 -0
  332. package/dist/{VerticalWidget--8UErB4q.cjs.map → VerticalWidget-CFTOu4H8.cjs.map} +1 -1
  333. package/dist/VerticalboxWidget-DY72fLHW.js +46 -0
  334. package/dist/VerticalboxWidget-DY72fLHW.js.map +1 -0
  335. package/dist/VerticalboxWidget-Z8-DWI8t.cjs +2 -0
  336. package/dist/VerticalboxWidget-Z8-DWI8t.cjs.map +1 -0
  337. package/dist/Widget-ChoIB2dd.cjs +2 -0
  338. package/dist/{Widget-DNf52jRQ.cjs.map → Widget-ChoIB2dd.cjs.map} +1 -1
  339. package/dist/{Widget-fRCERxGf.js → Widget-oyqWpFXJ.js} +18 -18
  340. package/dist/{Widget-fRCERxGf.js.map → Widget-oyqWpFXJ.js.map} +1 -1
  341. package/dist/WidgetComponents-C1lSLZ0I.js +30205 -0
  342. package/dist/WidgetComponents-C1lSLZ0I.js.map +1 -0
  343. package/dist/WidgetComponents-utpQ592X.cjs +1493 -0
  344. package/dist/WidgetComponents-utpQ592X.cjs.map +1 -0
  345. package/dist/components.cjs +3 -6
  346. package/dist/components.cjs.map +1 -1
  347. package/dist/components.js +372 -1966
  348. package/dist/components.js.map +1 -1
  349. package/dist/icons.cjs +1 -1
  350. package/dist/icons.cjs.map +1 -1
  351. package/dist/icons.js +59 -52
  352. package/dist/icons.js.map +1 -1
  353. package/dist/index-BX05anye.cjs +7 -0
  354. package/dist/index-BX05anye.cjs.map +1 -0
  355. package/dist/{index-CFQnWdPA.js → index-DwP8ryNM.js} +385 -396
  356. package/dist/index-DwP8ryNM.js.map +1 -0
  357. package/dist/plugins.cjs +4 -4
  358. package/dist/plugins.cjs.map +1 -1
  359. package/dist/plugins.js +71 -67
  360. package/dist/plugins.js.map +1 -1
  361. package/dist/tools/admin.cjs +7 -7
  362. package/dist/tools/admin.cjs.map +1 -1
  363. package/dist/tools/admin.js +824 -744
  364. package/dist/tools/admin.js.map +1 -1
  365. package/dist/tools/base.cjs +1 -1
  366. package/dist/tools/base.cjs.map +1 -1
  367. package/dist/tools/base.js +10 -16
  368. package/dist/tools/base.js.map +1 -1
  369. package/dist/tools/calendar.cjs +1 -1
  370. package/dist/tools/calendar.cjs.map +1 -1
  371. package/dist/tools/calendar.js +9 -1583
  372. package/dist/tools/calendar.js.map +1 -1
  373. package/dist/tools/scriptrunner.cjs +86 -0
  374. package/dist/tools/scriptrunner.cjs.map +1 -0
  375. package/dist/tools/scriptrunner.js +4564 -0
  376. package/dist/tools/scriptrunner.js.map +1 -0
  377. package/dist/vue-common.css +1 -1
  378. package/dist/widgets.cjs +1 -1
  379. package/dist/widgets.js +64 -64
  380. package/package.json +20 -15
  381. package/dist/ArrayplotWidget-Donxhd8_.cjs +0 -2
  382. package/dist/BarColumn-CyRSZHMh.cjs +0 -2
  383. package/dist/BlockWidget-DPLN1jgj.cjs +0 -3
  384. package/dist/ButtonWidget-DccYzIY3.cjs +0 -3
  385. package/dist/CanvasWidget-BzTU9rc9.cjs +0 -2
  386. package/dist/CanvasdotWidget-B7VTS1QI.cjs +0 -2
  387. package/dist/CanvasimageWidget-BwYpfmDE.cjs +0 -2
  388. package/dist/CanvasimagevalueWidget-E_NsZ82T.cjs +0 -2
  389. package/dist/CanvaslabelWidget-BBDuXWfU.cjs +0 -2
  390. package/dist/CanvaslabelvalueWidget-DAdu7ujn.cjs +0 -2
  391. package/dist/CanvaslineWidget-Bv5da1Vy.cjs +0 -2
  392. package/dist/CanvaslinevalueWidget-BVfUB96K.cjs +0 -2
  393. package/dist/CheckbuttonWidget-BGqD-BGc.cjs +0 -2
  394. package/dist/ComboboxWidget-DoHMlSAr.cjs +0 -2
  395. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs +0 -2
  396. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs.map +0 -1
  397. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js +0 -10
  398. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js.map +0 -1
  399. package/dist/CriticalCmdDialog-DoLBrU2k.cjs +0 -2
  400. package/dist/DateWidget-DKZz1J9J.cjs +0 -2
  401. package/dist/DetailsDialog-CiuQYvJK.cjs +0 -2
  402. package/dist/DynamicWidget-3wHr6Ng-.cjs +0 -2
  403. package/dist/FormatvalueWidget-DFrbeKb9.cjs +0 -2
  404. package/dist/Graph-3rkhFP3G.js.map +0 -1
  405. package/dist/Graph-C3vGMcos.cjs +0 -2
  406. package/dist/Graph-C3vGMcos.cjs.map +0 -1
  407. package/dist/HorizontalWidget-BBeB0eBI.cjs +0 -2
  408. package/dist/HorizontalboxWidget-Br8dSVHD.js +0 -38
  409. package/dist/HorizontalboxWidget-Br8dSVHD.js.map +0 -1
  410. package/dist/HorizontalboxWidget-DsdzrCJx.cjs +0 -2
  411. package/dist/HorizontalboxWidget-DsdzrCJx.cjs.map +0 -1
  412. package/dist/HorizontallineWidget-BCKOQase.cjs +0 -2
  413. package/dist/HorizontallineWidget-CbxREBYI.js +0 -11
  414. package/dist/IframeWidget-CZwsTgvX.cjs +0 -2
  415. package/dist/ImageLoader-D_Gq-KxR.cjs +0 -2
  416. package/dist/ImageviewerWidget-DwRPFSLR.cjs +0 -2
  417. package/dist/InterfacesTab-CLaicsHA.cjs +0 -2
  418. package/dist/LabelWidget-C-s8OVmA.cjs +0 -2
  419. package/dist/LabelWidget-C-s8OVmA.cjs.map +0 -1
  420. package/dist/LabelWidget-t7I87dp7.js.map +0 -1
  421. package/dist/LabelledWidget-DUpHxc9z.cjs +0 -2
  422. package/dist/LabelprogressbarWidget-D6cpayCR.cjs +0 -2
  423. package/dist/LabelsparklineWidget-CJRnLETe.cjs +0 -2
  424. package/dist/LabelvalueWidget-owiMSCYl.cjs +0 -2
  425. package/dist/LabelvaluedescWidget-MRmZBUc0.cjs +0 -2
  426. package/dist/LabelvaluelimitsbarWidget-BQ2XYPNE.cjs +0 -2
  427. package/dist/LabelvaluelimitscolumnWidget-DNmVpU8J.cjs +0 -2
  428. package/dist/LabelvaluerangebarWidget-DL0U8cbw.cjs +0 -2
  429. package/dist/Layout-DRL0EeSA.cjs +0 -2
  430. package/dist/LedWidget-B8rjFe1b.cjs +0 -2
  431. package/dist/LedWidget-B8rjFe1b.cjs.map +0 -1
  432. package/dist/LedWidget-CxJjJBBS.js +0 -71
  433. package/dist/LedWidget-CxJjJBBS.js.map +0 -1
  434. package/dist/LimitsbarWidget-CYIH8fdp.cjs +0 -2
  435. package/dist/LimitscolorWidget-CS0wpX9A.cjs +0 -2
  436. package/dist/LimitscolumnWidget-C_UW6xKq.cjs +0 -2
  437. package/dist/LinegraphWidget-8td_PqgU.cjs +0 -2
  438. package/dist/MatrixbycolumnsWidget-CGOeCNW2.cjs +0 -2
  439. package/dist/MicroservicesTab-IbTmbPxO.js.map +0 -1
  440. package/dist/MicroservicesTab-uMC8NebS.cjs +0 -2
  441. package/dist/MicroservicesTab-uMC8NebS.cjs.map +0 -1
  442. package/dist/OutputDialog-B4Q0QMJ1.cjs.map +0 -1
  443. package/dist/OutputDialog-Ci5OT_fH.js.map +0 -1
  444. package/dist/PackagesTab-eYbk2vw7.cjs +0 -2
  445. package/dist/ProgressbarWidget-CUIAYySg.cjs +0 -2
  446. package/dist/RadiobuttonWidget-Cjk1JAP_.cjs +0 -2
  447. package/dist/RadiogroupWidget-B4lkYWaC.cjs +0 -2
  448. package/dist/RangebarWidget-nl0rzj93.cjs +0 -2
  449. package/dist/RedisTab-DhS4GHDj.cjs +0 -2
  450. package/dist/RollupWidget-Bgudi_bt.cjs +0 -2
  451. package/dist/RoutersTab-CzO10cVP.cjs +0 -2
  452. package/dist/ScriptChooser-BNm_zXxX.cjs +0 -2
  453. package/dist/ScrollwindowWidget-BIiV7xwi.cjs +0 -2
  454. package/dist/SecretsTab-BSzFZ81X.cjs +0 -2
  455. package/dist/SettingsTab-Bo_dYXgb.js.map +0 -1
  456. package/dist/SettingsTab-DH8LAAoG.cjs +0 -3
  457. package/dist/SettingsTab-DH8LAAoG.cjs.map +0 -1
  458. package/dist/SignalWidget-CvZkvejy.cjs +0 -2
  459. package/dist/SimpleTextDialog-DmeNMMCR.cjs +0 -2
  460. package/dist/SpacerWidget-BBJR6HBQ.cjs +0 -2
  461. package/dist/SparklineWidget-BxBLnjAO.cjs +0 -2
  462. package/dist/TabbookWidget-DyFQnA10.cjs +0 -2
  463. package/dist/TargetsTab-DMiOliqg.cjs +0 -2
  464. package/dist/TextBoxDialog-DvUf3Cak.cjs +0 -2
  465. package/dist/TextboxWidget-D6lW_dsU.cjs +0 -2
  466. package/dist/TextfieldWidget-iHN7-fyF.cjs +0 -2
  467. package/dist/TimeWidget-C3NZqTEG.cjs +0 -2
  468. package/dist/TitleWidget-CWZs33c4.cjs +0 -2
  469. package/dist/TopBar-DuXL27iD.cjs +0 -2
  470. package/dist/TopBar-DuXL27iD.cjs.map +0 -1
  471. package/dist/TopBar-F1jHuFan.js.map +0 -1
  472. package/dist/UpgradeToEnterpriseDialog-DfIKahNK.cjs +0 -2
  473. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs +0 -1417
  474. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs.map +0 -1
  475. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js +0 -26941
  476. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js.map +0 -1
  477. package/dist/ValueWidget-Do3Yn47P.cjs +0 -2
  478. package/dist/ValuelimitsbarWidget-DJuh7FOs.cjs +0 -2
  479. package/dist/ValuelimitscolumnWidget-BFpG-H7v.cjs +0 -2
  480. package/dist/ValuerangebarWidget-BlZSaiXo.cjs +0 -2
  481. package/dist/VerticalWidget--8UErB4q.cjs +0 -2
  482. package/dist/VerticalboxWidget-B4eGUSYH.js +0 -37
  483. package/dist/VerticalboxWidget-B4eGUSYH.js.map +0 -1
  484. package/dist/VerticalboxWidget-cxHq1WKQ.cjs +0 -2
  485. package/dist/VerticalboxWidget-cxHq1WKQ.cjs.map +0 -1
  486. package/dist/Widget-DNf52jRQ.cjs +0 -2
  487. package/dist/index-Bz_jHTkl.cjs +0 -7
  488. package/dist/index-Bz_jHTkl.cjs.map +0 -1
  489. package/dist/index-CFQnWdPA.js.map +0 -1
@@ -0,0 +1,4564 @@
1
+ var Ie = Object.defineProperty;
2
+ var de = (t) => {
3
+ throw TypeError(t);
4
+ };
5
+ var Ae = (t, e, i) => e in t ? Ie(t, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : t[e] = i;
6
+ var se = (t, e, i) => Ae(t, typeof e != "symbol" ? e + "" : e, i), ce = (t, e, i) => e.has(t) || de("Cannot " + i);
7
+ var O = (t, e, i) => (ce(t, e, "read from private field"), i ? i.call(t) : e.get(t)), D = (t, e, i) => e.has(t) ? de("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, i), F = (t, e, i, r) => (ce(t, e, "write to private field"), r ? r.call(t, i) : e.set(t, i), i);
8
+ import { o as y, h as le, l as Fe } from "../WidgetComponents-C1lSLZ0I.js";
9
+ import { resolveComponent as u, createElementBlock as V, openBlock as v, createVNode as n, createBlock as C, createCommentVNode as R, withCtx as l, createElementVNode as h, createTextVNode as m, withDirectives as Be, vShow as Ne, normalizeProps as U, guardReactiveProps as I, normalizeClass as fe, toDisplayString as E, h as Le, normalizeStyle as He, renderSlot as qe, withModifiers as L, Fragment as N, renderList as X, mergeProps as B } from "vue";
10
+ import { _ as T } from "../CustomIcon-h5X7369N.js";
11
+ import "single-spa";
12
+ import { O as Ge, A as je } from "../OutputDialog-zVPZiZay.js";
13
+ import { f as q } from "../format-CVeawcIv.js";
14
+ import { a as Ke } from "../index-DwP8ryNM.js";
15
+ import { T as We, A as pe } from "../TopBar-CnJNNJlV.js";
16
+ import { C as Je } from "../CriticalCmdDialog-DPIZOBeP.js";
17
+ import { a as Ye, O as Xe, F as Ze } from "../Openc3Screen-Cud0OCFu.js";
18
+ import { f as Qe } from "../fileIcon-DqRHb1_Z.js";
19
+ import { S as $e } from "../SimpleTextDialog-pwN8oRy1.js";
20
+ import { E as et } from "../EventListDialog-CSMSmCIT.js";
21
+ import { E as tt } from "../ScriptChooser-EV65rbWx.js";
22
+ const st = {
23
+ props: {
24
+ tabId: Number,
25
+ curTab: Number,
26
+ connectInNewTab: Boolean
27
+ },
28
+ components: { OutputDialog: Ge },
29
+ data() {
30
+ return {
31
+ downloadScript: null,
32
+ runningSearch: "",
33
+ runningScripts: [],
34
+ runningHeaders: [
35
+ {
36
+ title: "Connect",
37
+ key: "connect",
38
+ sortable: !1,
39
+ filterable: !1
40
+ },
41
+ { title: "Id", key: "id" },
42
+ { title: "User", key: "user" },
43
+ { title: "Name", key: "name" },
44
+ { title: "Start Time", key: "start_time" },
45
+ {
46
+ title: "Stop",
47
+ key: "stop",
48
+ sortable: !1,
49
+ filterable: !1
50
+ },
51
+ {
52
+ title: "Force Quit",
53
+ key: "delete",
54
+ sortable: !1,
55
+ filterable: !1
56
+ }
57
+ ],
58
+ completedSearch: "",
59
+ completedScripts: [],
60
+ completedHeaders: [
61
+ { title: "Id", value: "id" },
62
+ { title: "User", value: "user" },
63
+ { title: "Name", value: "name" },
64
+ { title: "Start Time", value: "start" },
65
+ {
66
+ title: "View",
67
+ value: "view",
68
+ sortable: !1,
69
+ filterable: !1
70
+ },
71
+ {
72
+ title: "Download",
73
+ key: "download",
74
+ sortable: !1,
75
+ filterable: !1
76
+ }
77
+ ],
78
+ showDialog: !1,
79
+ dialogName: "",
80
+ dialogContent: "",
81
+ dialogFilename: ""
82
+ };
83
+ },
84
+ created() {
85
+ this.getRunningScripts(), this.getCompletedScripts();
86
+ },
87
+ methods: {
88
+ getRunningScripts: function() {
89
+ y.get("/script-api/running-script").then((t) => {
90
+ this.runningScripts = t.data;
91
+ });
92
+ },
93
+ getCompletedScripts: function() {
94
+ y.get("/script-api/completed-scripts").then((t) => {
95
+ this.completedScripts = t.data;
96
+ });
97
+ },
98
+ connectScript: function(t) {
99
+ this.$emit("disconnect");
100
+ const e = {
101
+ name: "ScriptRunner",
102
+ params: { id: t.id }
103
+ };
104
+ if (this.connectInNewTab) {
105
+ let { href: i } = this.$router.resolve(e);
106
+ window.open(i, "_blank");
107
+ } else
108
+ this.$router.push(e), this.$emit("close");
109
+ },
110
+ stopScript: function(t) {
111
+ this.$dialog.confirm(
112
+ `Are you sure you want to stop script: ${t.id} ${t.name}?`,
113
+ {
114
+ okText: "Stop",
115
+ cancelText: "Cancel"
116
+ }
117
+ ).then((e) => y.post(`/script-api/running-script/${t.id}/stop`)).then((e) => {
118
+ this.$notify.normal({
119
+ body: `Stopped script: ${t.id} ${t.name}`
120
+ }), this.getRunningScripts();
121
+ }).catch((e) => {
122
+ e !== !0 && this.$notify.caution({
123
+ body: `Failed to stop script: ${t.id} ${t.name}`
124
+ });
125
+ });
126
+ },
127
+ deleteScript: function(t) {
128
+ this.$dialog.confirm(
129
+ `Are you sure you want to force quit script: ${t.id} ${t.name}?
130
+ Did you try to stop the script first to allow the script to stop gracefully?`,
131
+ {
132
+ okText: "Force Quit",
133
+ cancelText: "Cancel"
134
+ }
135
+ ).then((e) => y.post(`/script-api/running-script/${t.id}/delete`)).then((e) => {
136
+ this.$notify.normal({
137
+ body: `Stopped script: ${t.id} ${t.name}`
138
+ }), this.getRunningScripts();
139
+ }).catch((e) => {
140
+ e !== !0 && this.$notify.caution({
141
+ body: `Failed to stop script: ${t.id} ${t.name}`
142
+ });
143
+ });
144
+ },
145
+ viewScriptLog: function(t) {
146
+ t.name.includes("(") && t.name.includes(")") ? this.dialogName = "Report" : this.dialogName = "Log", y.get(
147
+ `/openc3-api/storage/download_file/${encodeURIComponent(
148
+ t.log
149
+ )}?bucket=OPENC3_LOGS_BUCKET`
150
+ ).then((e) => {
151
+ const i = t.log.split("/");
152
+ this.dialogFilename = i[i.length - 1], this.dialogContent = window.atob(e.data.contents), this.showDialog = !0;
153
+ });
154
+ },
155
+ downloadScriptLog: function(t) {
156
+ this.downloadScript = t, y.get(
157
+ `/openc3-api/storage/download/${encodeURIComponent(
158
+ t.log
159
+ )}?bucket=OPENC3_LOGS_BUCKET`
160
+ ).then((e) => {
161
+ const i = t.log.split("/"), r = i[i.length - 1], s = document.createElement("a");
162
+ s.href = e.data.url, s.setAttribute("download", r), s.click(), this.downloadScript = null;
163
+ }).catch(() => {
164
+ this.$notify.caution({
165
+ title: `Unable to download log for ${t.name}`,
166
+ body: `You may be able to download this log manually from the 'logs' bucket at ${t.log}`
167
+ });
168
+ });
169
+ }
170
+ }
171
+ }, it = { key: 0 }, nt = { key: 1 }, ot = { key: 0 }, lt = { key: 1 };
172
+ function rt(t, e, i, r, s, o) {
173
+ const a = u("v-spacer"), p = u("v-btn"), c = u("v-text-field"), b = u("v-row"), w = u("v-card-title"), _ = u("v-icon"), g = u("v-data-table"), k = u("v-card"), x = u("output-dialog");
174
+ return v(), V("div", null, [
175
+ n(k, { flat: "" }, {
176
+ default: l(() => [
177
+ n(w, null, {
178
+ default: l(() => [
179
+ n(b, { dense: "" }, {
180
+ default: l(() => [
181
+ e[5] || (e[5] = h("span", { class: "mr-2" }, "Running Scripts", -1)),
182
+ n(a),
183
+ n(p, {
184
+ class: "mr-2",
185
+ color: "primary",
186
+ onClick: o.getRunningScripts
187
+ }, {
188
+ default: l(() => e[4] || (e[4] = [
189
+ m("Refresh")
190
+ ])),
191
+ _: 1
192
+ }, 8, ["onClick"]),
193
+ n(a),
194
+ n(c, {
195
+ modelValue: s.runningSearch,
196
+ "onUpdate:modelValue": e[0] || (e[0] = (f) => s.runningSearch = f),
197
+ class: "pt-0 search",
198
+ label: "Search",
199
+ "prepend-inner-icon": "mdi-magnify",
200
+ clearable: "",
201
+ variant: "outlined",
202
+ density: "compact",
203
+ "single-line": "",
204
+ "hide-details": "",
205
+ "data-test": "running-search"
206
+ }, null, 8, ["modelValue"])
207
+ ]),
208
+ _: 1
209
+ })
210
+ ]),
211
+ _: 1
212
+ }),
213
+ n(g, {
214
+ headers: s.runningHeaders,
215
+ items: s.runningScripts,
216
+ search: s.runningSearch,
217
+ density: "compact",
218
+ "data-test": "running-scripts",
219
+ "items-per-page-options": [3],
220
+ "max-height": "400"
221
+ }, {
222
+ "item.connect": l(({ item: f }) => [
223
+ n(p, {
224
+ color: "primary",
225
+ onClick: (S) => o.connectScript(f)
226
+ }, {
227
+ default: l(() => [
228
+ e[7] || (e[7] = h("span", null, "Connect", -1)),
229
+ Be(n(_, { end: "" }, {
230
+ default: l(() => e[6] || (e[6] = [
231
+ m(" mdi-open-in-new ")
232
+ ])),
233
+ _: 1
234
+ }, 512), [
235
+ [Ne, i.connectInNewTab]
236
+ ])
237
+ ]),
238
+ _: 2
239
+ }, 1032, ["onClick"])
240
+ ]),
241
+ "item.stop": l(({ item: f }) => [
242
+ n(p, {
243
+ color: "primary",
244
+ onClick: (S) => o.stopScript(f)
245
+ }, {
246
+ default: l(() => [
247
+ e[9] || (e[9] = h("span", null, "Stop", -1)),
248
+ n(_, { end: "" }, {
249
+ default: l(() => e[8] || (e[8] = [
250
+ m(" mdi-close-circle-outline ")
251
+ ])),
252
+ _: 1
253
+ })
254
+ ]),
255
+ _: 2
256
+ }, 1032, ["onClick"])
257
+ ]),
258
+ "item.delete": l(({ item: f }) => [
259
+ n(p, {
260
+ color: "primary",
261
+ onClick: (S) => o.deleteScript(f)
262
+ }, {
263
+ default: l(() => [
264
+ e[11] || (e[11] = h("span", null, "Delete", -1)),
265
+ n(_, { end: "" }, {
266
+ default: l(() => e[10] || (e[10] = [
267
+ m(" mdi-alert-octagon-outline ")
268
+ ])),
269
+ _: 1
270
+ })
271
+ ]),
272
+ _: 2
273
+ }, 1032, ["onClick"])
274
+ ]),
275
+ _: 1
276
+ }, 8, ["headers", "items", "search"])
277
+ ]),
278
+ _: 1
279
+ }),
280
+ n(k, { flat: "" }, {
281
+ default: l(() => [
282
+ n(w, null, {
283
+ default: l(() => [
284
+ n(b, { dense: "" }, {
285
+ default: l(() => [
286
+ e[13] || (e[13] = h("span", { class: "mr-2" }, "Completed Scripts", -1)),
287
+ n(a),
288
+ n(p, {
289
+ color: "primary",
290
+ onClick: o.getCompletedScripts
291
+ }, {
292
+ default: l(() => e[12] || (e[12] = [
293
+ m("Refresh")
294
+ ])),
295
+ _: 1
296
+ }, 8, ["onClick"]),
297
+ n(a),
298
+ n(c, {
299
+ modelValue: s.completedSearch,
300
+ "onUpdate:modelValue": e[1] || (e[1] = (f) => s.completedSearch = f),
301
+ class: "pt-0 search",
302
+ label: "Search",
303
+ "prepend-inner-icon": "mdi-magnify",
304
+ clearable: "",
305
+ variant: "outlined",
306
+ density: "compact",
307
+ "single-line": "",
308
+ "hide-details": ""
309
+ }, null, 8, ["modelValue"])
310
+ ]),
311
+ _: 1
312
+ })
313
+ ]),
314
+ _: 1
315
+ }),
316
+ n(g, {
317
+ headers: s.completedHeaders,
318
+ items: s.completedScripts,
319
+ search: s.completedSearch,
320
+ density: "compact",
321
+ "data-test": "completed-scripts",
322
+ "items-per-page-options": [5]
323
+ }, {
324
+ "item.view": l(({ item: f }) => [
325
+ n(p, {
326
+ color: "primary",
327
+ onClick: (S) => o.viewScriptLog(f)
328
+ }, {
329
+ default: l(() => [
330
+ f.name.includes("(") && f.name.includes(")") ? (v(), V("span", it, " Script Report ")) : (v(), V("span", nt, " Script Log ")),
331
+ n(_, { right: "" }, {
332
+ default: l(() => e[14] || (e[14] = [
333
+ m(" mdi-eye ")
334
+ ])),
335
+ _: 1
336
+ })
337
+ ]),
338
+ _: 2
339
+ }, 1032, ["onClick"])
340
+ ]),
341
+ "item.download": l(({ item: f }) => [
342
+ n(p, {
343
+ disabled: s.downloadScript,
344
+ loading: s.downloadScript && s.downloadScript.name === f.name,
345
+ onClick: (S) => o.downloadScriptLog(f)
346
+ }, {
347
+ loader: l(() => e[16] || (e[16] = [
348
+ h("span", null, " Loading... ", -1)
349
+ ])),
350
+ default: l(() => [
351
+ f.name.includes("(") && f.name.includes(")") ? (v(), V("span", ot, " Script Report ")) : (v(), V("span", lt, " Script Log ")),
352
+ n(_, { end: "" }, {
353
+ default: l(() => e[15] || (e[15] = [
354
+ m(" mdi-file-download-outline ")
355
+ ])),
356
+ _: 1
357
+ })
358
+ ]),
359
+ _: 2
360
+ }, 1032, ["disabled", "loading", "onClick"])
361
+ ]),
362
+ _: 1
363
+ }, 8, ["headers", "items", "search"])
364
+ ]),
365
+ _: 1
366
+ }),
367
+ s.showDialog ? (v(), C(x, {
368
+ key: 0,
369
+ content: s.dialogContent,
370
+ type: "Script",
371
+ name: s.dialogName,
372
+ filename: s.dialogFilename,
373
+ modelValue: s.showDialog,
374
+ "onUpdate:modelValue": e[2] || (e[2] = (f) => s.showDialog = f),
375
+ onSubmit: e[3] || (e[3] = (f) => s.showDialog = !1)
376
+ }, null, 8, ["content", "name", "filename", "modelValue"])) : R("", !0)
377
+ ]);
378
+ }
379
+ const at = /* @__PURE__ */ T(st, [["render", rt]]), ut = {
380
+ props: {
381
+ modelValue: {
382
+ type: Array,
383
+ required: !0
384
+ }
385
+ },
386
+ data() {
387
+ return {
388
+ search: "",
389
+ headers: [{ title: "Message", value: "message", sortable: !1 }],
390
+ messageOrderOptions: ["Newest on Top", "Newest on Bottom"],
391
+ messageOrder: "Newest on Top"
392
+ };
393
+ },
394
+ watch: {
395
+ messageOrder: function(t, e) {
396
+ this.$emit("sort", t);
397
+ }
398
+ },
399
+ computed: {
400
+ messages: {
401
+ get() {
402
+ return this.modelValue;
403
+ },
404
+ set(t) {
405
+ this.$emit("update:modelValue", t);
406
+ }
407
+ }
408
+ },
409
+ methods: {
410
+ messageClass(t) {
411
+ return t.match(/(CHECK|WAIT): .*(success|was within range.*) with value/) ? "openc3-green" : t.match(
412
+ /(CHECK|WAIT): .*(failed|failed to be within range.*) with value/
413
+ ) ? "openc3-red" : "";
414
+ },
415
+ downloadLog() {
416
+ const t = this.messages.map((r) => r.message).join(`
417
+ `), e = new Blob([t], {
418
+ type: "text/plain"
419
+ }), i = document.createElement("a");
420
+ i.href = URL.createObjectURL(e), i.setAttribute(
421
+ "download",
422
+ q(Date.now(), "yyyy_MM_dd_HH_mm_ss") + "_sr_message_log.txt"
423
+ ), i.click();
424
+ },
425
+ clearLog: function() {
426
+ this.$dialog.confirm("Are you sure you want to clear the log?", {
427
+ okText: "Clear",
428
+ cancelText: "Cancel"
429
+ }).then((t) => {
430
+ this.messages = [];
431
+ }).catch(function(t) {
432
+ });
433
+ }
434
+ }
435
+ };
436
+ function dt(t, e, i, r, s, o) {
437
+ const a = u("v-btn"), p = u("v-tooltip"), c = u("v-spacer"), b = u("v-select"), w = u("v-text-field"), _ = u("v-row"), g = u("v-card-title"), k = u("v-data-table"), x = u("v-card");
438
+ return v(), V("div", null, [
439
+ n(x, null, {
440
+ default: l(() => [
441
+ n(g, null, {
442
+ default: l(() => [
443
+ n(_, { class: "pt-2" }, {
444
+ default: l(() => [
445
+ n(p, { location: "top" }, {
446
+ activator: l(({ props: f }) => [
447
+ h("div", U(I(f)), [
448
+ n(a, {
449
+ icon: "mdi-download",
450
+ variant: "text",
451
+ class: "mx-2",
452
+ "data-test": "download-log",
453
+ onClick: o.downloadLog
454
+ }, null, 8, ["onClick"])
455
+ ], 16)
456
+ ]),
457
+ default: l(() => [
458
+ e[2] || (e[2] = h("span", null, " Download Log ", -1))
459
+ ]),
460
+ _: 1
461
+ }),
462
+ e[4] || (e[4] = m(" Script Messages ")),
463
+ n(c),
464
+ n(b, {
465
+ density: "compact",
466
+ "hide-details": "",
467
+ variant: "outlined",
468
+ items: s.messageOrderOptions,
469
+ modelValue: s.messageOrder,
470
+ "onUpdate:modelValue": e[0] || (e[0] = (f) => s.messageOrder = f),
471
+ class: "mr-2",
472
+ style: { "max-width": "200px" },
473
+ "data-test": "message-order"
474
+ }, null, 8, ["items", "modelValue"]),
475
+ n(c),
476
+ n(w, {
477
+ modelValue: s.search,
478
+ "onUpdate:modelValue": e[1] || (e[1] = (f) => s.search = f),
479
+ label: "Search",
480
+ "prepend-inner-icon": "mdi-magnify",
481
+ clearable: "",
482
+ variant: "outlined",
483
+ density: "compact",
484
+ "single-line": "",
485
+ "hide-details": "",
486
+ class: "search",
487
+ "data-test": "search-messages"
488
+ }, null, 8, ["modelValue"]),
489
+ n(p, { location: "top" }, {
490
+ activator: l(({ props: f }) => [
491
+ h("div", U(I(f)), [
492
+ n(a, {
493
+ icon: "mdi-delete",
494
+ variant: "text",
495
+ class: "mx-2",
496
+ "data-test": "clear-log",
497
+ onClick: o.clearLog
498
+ }, null, 8, ["onClick"])
499
+ ], 16)
500
+ ]),
501
+ default: l(() => [
502
+ e[3] || (e[3] = h("span", null, " Clear Log ", -1))
503
+ ]),
504
+ _: 1
505
+ })
506
+ ]),
507
+ _: 1
508
+ })
509
+ ]),
510
+ _: 1
511
+ }),
512
+ n(k, {
513
+ id: "script-log-messages",
514
+ style: { overflow: "auto" },
515
+ headers: s.headers,
516
+ items: o.messages,
517
+ search: s.search,
518
+ "items-per-page": -1,
519
+ "hide-default-footer": "",
520
+ density: "compact",
521
+ "data-test": "output-messages"
522
+ }, {
523
+ "item.message": l(({ item: f }) => [
524
+ h("div", {
525
+ class: fe(o.messageClass(f.message))
526
+ }, E(f.message), 3)
527
+ ]),
528
+ _: 1
529
+ }, 8, ["headers", "items", "search"])
530
+ ]),
531
+ _: 1
532
+ })
533
+ ]);
534
+ }
535
+ const ct = /* @__PURE__ */ T(ut, [["render", dt]]), pt = {
536
+ name: "splitpanes",
537
+ emits: ["ready", "resize", "resized", "pane-click", "pane-maximize", "pane-add", "pane-remove", "splitter-click"],
538
+ props: {
539
+ horizontal: { type: Boolean },
540
+ pushOtherPanes: { type: Boolean, default: !0 },
541
+ dblClickSplitter: { type: Boolean, default: !0 },
542
+ rtl: { type: Boolean, default: !1 },
543
+ firstSplitter: { type: Boolean }
544
+ },
545
+ provide() {
546
+ return {
547
+ requestUpdate: this.requestUpdate,
548
+ onPaneAdd: this.onPaneAdd,
549
+ onPaneRemove: this.onPaneRemove,
550
+ onPaneClick: this.onPaneClick
551
+ };
552
+ },
553
+ data: () => ({
554
+ container: null,
555
+ ready: !1,
556
+ panes: [],
557
+ touch: {
558
+ mouseDown: !1,
559
+ dragging: !1,
560
+ activeSplitter: null
561
+ },
562
+ splitterTaps: {
563
+ splitter: null,
564
+ timeoutId: null
565
+ }
566
+ }),
567
+ computed: {
568
+ panesCount() {
569
+ return this.panes.length;
570
+ },
571
+ indexedPanes() {
572
+ return this.panes.reduce((t, e) => (t[e.id] = e) && t, {});
573
+ }
574
+ },
575
+ methods: {
576
+ updatePaneComponents() {
577
+ this.panes.forEach((t) => {
578
+ t.update && t.update({
579
+ [this.horizontal ? "height" : "width"]: `${this.indexedPanes[t.id].size}%`
580
+ });
581
+ });
582
+ },
583
+ bindEvents() {
584
+ document.addEventListener("mousemove", this.onMouseMove, { passive: !1 }), document.addEventListener("mouseup", this.onMouseUp), "ontouchstart" in window && (document.addEventListener("touchmove", this.onMouseMove, { passive: !1 }), document.addEventListener("touchend", this.onMouseUp));
585
+ },
586
+ unbindEvents() {
587
+ document.removeEventListener("mousemove", this.onMouseMove, { passive: !1 }), document.removeEventListener("mouseup", this.onMouseUp), "ontouchstart" in window && (document.removeEventListener("touchmove", this.onMouseMove, { passive: !1 }), document.removeEventListener("touchend", this.onMouseUp));
588
+ },
589
+ onMouseDown(t, e) {
590
+ this.bindEvents(), this.touch.mouseDown = !0, this.touch.activeSplitter = e;
591
+ },
592
+ onMouseMove(t) {
593
+ this.touch.mouseDown && (t.preventDefault(), this.touch.dragging = !0, this.calculatePanesSize(this.getCurrentMouseDrag(t)), this.$emit("resize", this.panes.map((e) => ({ min: e.min, max: e.max, size: e.size }))));
594
+ },
595
+ onMouseUp() {
596
+ this.touch.dragging && this.$emit("resized", this.panes.map((t) => ({ min: t.min, max: t.max, size: t.size }))), this.touch.mouseDown = !1, setTimeout(() => {
597
+ this.touch.dragging = !1, this.unbindEvents();
598
+ }, 100);
599
+ },
600
+ onSplitterClick(t, e) {
601
+ "ontouchstart" in window && (t.preventDefault(), this.dblClickSplitter && (this.splitterTaps.splitter === e ? (clearTimeout(this.splitterTaps.timeoutId), this.splitterTaps.timeoutId = null, this.onSplitterDblClick(t, e), this.splitterTaps.splitter = null) : (this.splitterTaps.splitter = e, this.splitterTaps.timeoutId = setTimeout(() => {
602
+ this.splitterTaps.splitter = null;
603
+ }, 500)))), this.touch.dragging || this.$emit("splitter-click", this.panes[e]);
604
+ },
605
+ onSplitterDblClick(t, e) {
606
+ let i = 0;
607
+ this.panes = this.panes.map((r, s) => (r.size = s === e ? r.max : r.min, s !== e && (i += r.min), r)), this.panes[e].size -= i, this.$emit("pane-maximize", this.panes[e]), this.$emit("resized", this.panes.map((r) => ({ min: r.min, max: r.max, size: r.size })));
608
+ },
609
+ onPaneClick(t, e) {
610
+ this.$emit("pane-click", this.indexedPanes[e]);
611
+ },
612
+ getCurrentMouseDrag(t) {
613
+ const e = this.container.getBoundingClientRect(), { clientX: i, clientY: r } = "ontouchstart" in window && t.touches ? t.touches[0] : t;
614
+ return {
615
+ x: i - e.left,
616
+ y: r - e.top
617
+ };
618
+ },
619
+ getCurrentDragPercentage(t) {
620
+ t = t[this.horizontal ? "y" : "x"];
621
+ const e = this.container[this.horizontal ? "clientHeight" : "clientWidth"];
622
+ return this.rtl && !this.horizontal && (t = e - t), t * 100 / e;
623
+ },
624
+ calculatePanesSize(t) {
625
+ const e = this.touch.activeSplitter;
626
+ let i = {
627
+ prevPanesSize: this.sumPrevPanesSize(e),
628
+ nextPanesSize: this.sumNextPanesSize(e),
629
+ prevReachedMinPanes: 0,
630
+ nextReachedMinPanes: 0
631
+ };
632
+ const r = 0 + (this.pushOtherPanes ? 0 : i.prevPanesSize), s = 100 - (this.pushOtherPanes ? 0 : i.nextPanesSize), o = Math.max(Math.min(this.getCurrentDragPercentage(t), s), r);
633
+ let a = [e, e + 1], p = this.panes[a[0]] || null, c = this.panes[a[1]] || null;
634
+ const b = p.max < 100 && o >= p.max + i.prevPanesSize, w = c.max < 100 && o <= 100 - (c.max + this.sumNextPanesSize(e + 1));
635
+ if (b || w) {
636
+ b ? (p.size = p.max, c.size = Math.max(100 - p.max - i.prevPanesSize - i.nextPanesSize, 0)) : (p.size = Math.max(100 - c.max - i.prevPanesSize - this.sumNextPanesSize(e + 1), 0), c.size = c.max);
637
+ return;
638
+ }
639
+ if (this.pushOtherPanes) {
640
+ const _ = this.doPushOtherPanes(i, o);
641
+ if (!_)
642
+ return;
643
+ ({ sums: i, panesToResize: a } = _), p = this.panes[a[0]] || null, c = this.panes[a[1]] || null;
644
+ }
645
+ p !== null && (p.size = Math.min(Math.max(o - i.prevPanesSize - i.prevReachedMinPanes, p.min), p.max)), c !== null && (c.size = Math.min(Math.max(100 - o - i.nextPanesSize - i.nextReachedMinPanes, c.min), c.max));
646
+ },
647
+ doPushOtherPanes(t, e) {
648
+ const i = this.touch.activeSplitter, r = [i, i + 1];
649
+ return e < t.prevPanesSize + this.panes[r[0]].min && (r[0] = this.findPrevExpandedPane(i).index, t.prevReachedMinPanes = 0, r[0] < i && this.panes.forEach((s, o) => {
650
+ o > r[0] && o <= i && (s.size = s.min, t.prevReachedMinPanes += s.min);
651
+ }), t.prevPanesSize = this.sumPrevPanesSize(r[0]), r[0] === void 0) ? (t.prevReachedMinPanes = 0, this.panes[0].size = this.panes[0].min, this.panes.forEach((s, o) => {
652
+ o > 0 && o <= i && (s.size = s.min, t.prevReachedMinPanes += s.min);
653
+ }), this.panes[r[1]].size = 100 - t.prevReachedMinPanes - this.panes[0].min - t.prevPanesSize - t.nextPanesSize, null) : e > 100 - t.nextPanesSize - this.panes[r[1]].min && (r[1] = this.findNextExpandedPane(i).index, t.nextReachedMinPanes = 0, r[1] > i + 1 && this.panes.forEach((s, o) => {
654
+ o > i && o < r[1] && (s.size = s.min, t.nextReachedMinPanes += s.min);
655
+ }), t.nextPanesSize = this.sumNextPanesSize(r[1] - 1), r[1] === void 0) ? (t.nextReachedMinPanes = 0, this.panes[this.panesCount - 1].size = this.panes[this.panesCount - 1].min, this.panes.forEach((s, o) => {
656
+ o < this.panesCount - 1 && o >= i + 1 && (s.size = s.min, t.nextReachedMinPanes += s.min);
657
+ }), this.panes[r[0]].size = 100 - t.prevPanesSize - t.nextReachedMinPanes - this.panes[this.panesCount - 1].min - t.nextPanesSize, null) : { sums: t, panesToResize: r };
658
+ },
659
+ sumPrevPanesSize(t) {
660
+ return this.panes.reduce((e, i, r) => e + (r < t ? i.size : 0), 0);
661
+ },
662
+ sumNextPanesSize(t) {
663
+ return this.panes.reduce((e, i, r) => e + (r > t + 1 ? i.size : 0), 0);
664
+ },
665
+ findPrevExpandedPane(t) {
666
+ return [...this.panes].reverse().find((e) => e.index < t && e.size > e.min) || {};
667
+ },
668
+ findNextExpandedPane(t) {
669
+ return this.panes.find((e) => e.index > t + 1 && e.size > e.min) || {};
670
+ },
671
+ checkSplitpanesNodes() {
672
+ Array.from(this.container.children).forEach((t) => {
673
+ const e = t.classList.contains("splitpanes__pane"), i = t.classList.contains("splitpanes__splitter");
674
+ !e && !i && (t.parentNode.removeChild(t), console.warn("Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed."));
675
+ });
676
+ },
677
+ addSplitter(t, e, i = !1) {
678
+ const r = t - 1, s = document.createElement("div");
679
+ s.classList.add("splitpanes__splitter"), i || (s.onmousedown = (o) => this.onMouseDown(o, r), typeof window < "u" && "ontouchstart" in window && (s.ontouchstart = (o) => this.onMouseDown(o, r)), s.onclick = (o) => this.onSplitterClick(o, r + 1)), this.dblClickSplitter && (s.ondblclick = (o) => this.onSplitterDblClick(o, r + 1)), e.parentNode.insertBefore(s, e);
680
+ },
681
+ removeSplitter(t) {
682
+ t.onmousedown = void 0, t.onclick = void 0, t.ondblclick = void 0, t.parentNode.removeChild(t);
683
+ },
684
+ redoSplitters() {
685
+ const t = Array.from(this.container.children);
686
+ t.forEach((i) => {
687
+ i.className.includes("splitpanes__splitter") && this.removeSplitter(i);
688
+ });
689
+ let e = 0;
690
+ t.forEach((i) => {
691
+ i.className.includes("splitpanes__pane") && (!e && this.firstSplitter ? this.addSplitter(e, i, !0) : e && this.addSplitter(e, i), e++);
692
+ });
693
+ },
694
+ requestUpdate({ target: t, ...e }) {
695
+ const i = this.indexedPanes[t._.uid];
696
+ Object.entries(e).forEach(([r, s]) => i[r] = s);
697
+ },
698
+ onPaneAdd(t) {
699
+ let e = -1;
700
+ Array.from(t.$el.parentNode.children).some((s) => (s.className.includes("splitpanes__pane") && e++, s === t.$el));
701
+ const i = parseFloat(t.minSize), r = parseFloat(t.maxSize);
702
+ this.panes.splice(e, 0, {
703
+ id: t._.uid,
704
+ index: e,
705
+ min: isNaN(i) ? 0 : i,
706
+ max: isNaN(r) ? 100 : r,
707
+ size: t.size === null ? null : parseFloat(t.size),
708
+ givenSize: t.size,
709
+ update: t.update
710
+ }), this.panes.forEach((s, o) => s.index = o), this.ready && this.$nextTick(() => {
711
+ this.redoSplitters(), this.resetPaneSizes({ addedPane: this.panes[e] }), this.$emit("pane-add", { index: e, panes: this.panes.map((s) => ({ min: s.min, max: s.max, size: s.size })) });
712
+ });
713
+ },
714
+ onPaneRemove(t) {
715
+ const e = this.panes.findIndex((r) => r.id === t._.uid), i = this.panes.splice(e, 1)[0];
716
+ this.panes.forEach((r, s) => r.index = s), this.$nextTick(() => {
717
+ this.redoSplitters(), this.resetPaneSizes({ removedPane: { ...i, index: e } }), this.$emit("pane-remove", { removed: i, panes: this.panes.map((r) => ({ min: r.min, max: r.max, size: r.size })) });
718
+ });
719
+ },
720
+ resetPaneSizes(t = {}) {
721
+ !t.addedPane && !t.removedPane ? this.initialPanesSizing() : this.panes.some((e) => e.givenSize !== null || e.min || e.max < 100) ? this.equalizeAfterAddOrRemove(t) : this.equalize(), this.ready && this.$emit("resized", this.panes.map((e) => ({ min: e.min, max: e.max, size: e.size })));
722
+ },
723
+ equalize() {
724
+ const t = 100 / this.panesCount;
725
+ let e = 0;
726
+ const i = [], r = [];
727
+ this.panes.forEach((s) => {
728
+ s.size = Math.max(Math.min(t, s.max), s.min), e -= s.size, s.size >= s.max && i.push(s.id), s.size <= s.min && r.push(s.id);
729
+ }), e > 0.1 && this.readjustSizes(e, i, r);
730
+ },
731
+ initialPanesSizing() {
732
+ let t = 100;
733
+ const e = [], i = [];
734
+ let r = 0;
735
+ this.panes.forEach((o) => {
736
+ t -= o.size, o.size !== null && r++, o.size >= o.max && e.push(o.id), o.size <= o.min && i.push(o.id);
737
+ });
738
+ let s = 100;
739
+ t > 0.1 && (this.panes.forEach((o) => {
740
+ o.size === null && (o.size = Math.max(Math.min(t / (this.panesCount - r), o.max), o.min)), s -= o.size;
741
+ }), s > 0.1 && this.readjustSizes(t, e, i));
742
+ },
743
+ equalizeAfterAddOrRemove({ addedPane: t, removedPane: e } = {}) {
744
+ let i = 100 / this.panesCount, r = 0;
745
+ const s = [], o = [];
746
+ t && t.givenSize !== null && (i = (100 - t.givenSize) / (this.panesCount - 1)), this.panes.forEach((a) => {
747
+ r -= a.size, a.size >= a.max && s.push(a.id), a.size <= a.min && o.push(a.id);
748
+ }), !(Math.abs(r) < 0.1) && (this.panes.forEach((a) => {
749
+ t && t.givenSize !== null && t.id === a.id || (a.size = Math.max(Math.min(i, a.max), a.min)), r -= a.size, a.size >= a.max && s.push(a.id), a.size <= a.min && o.push(a.id);
750
+ }), r > 0.1 && this.readjustSizes(r, s, o));
751
+ },
752
+ readjustSizes(t, e, i) {
753
+ let r;
754
+ t > 0 ? r = t / (this.panesCount - e.length) : r = t / (this.panesCount - i.length), this.panes.forEach((s, o) => {
755
+ if (t > 0 && !e.includes(s.id)) {
756
+ const a = Math.max(Math.min(s.size + r, s.max), s.min), p = a - s.size;
757
+ t -= p, s.size = a;
758
+ } else if (!i.includes(s.id)) {
759
+ const a = Math.max(Math.min(s.size + r, s.max), s.min), p = a - s.size;
760
+ t -= p, s.size = a;
761
+ }
762
+ s.update({
763
+ [this.horizontal ? "height" : "width"]: `${this.indexedPanes[s.id].size}%`
764
+ });
765
+ }), Math.abs(t) > 0.1 && this.$nextTick(() => {
766
+ this.ready && console.warn("Splitpanes: Could not resize panes correctly due to their constraints.");
767
+ });
768
+ }
769
+ },
770
+ watch: {
771
+ panes: {
772
+ deep: !0,
773
+ immediate: !1,
774
+ handler() {
775
+ this.updatePaneComponents();
776
+ }
777
+ },
778
+ horizontal() {
779
+ this.updatePaneComponents();
780
+ },
781
+ firstSplitter() {
782
+ this.redoSplitters();
783
+ },
784
+ dblClickSplitter(t) {
785
+ [...this.container.querySelectorAll(".splitpanes__splitter")].forEach((e, i) => {
786
+ e.ondblclick = t ? (r) => this.onSplitterDblClick(r, i) : void 0;
787
+ });
788
+ }
789
+ },
790
+ beforeUnmount() {
791
+ this.ready = !1;
792
+ },
793
+ mounted() {
794
+ this.container = this.$refs.container, this.checkSplitpanesNodes(), this.redoSplitters(), this.resetPaneSizes(), this.$emit("ready"), this.ready = !0;
795
+ },
796
+ render() {
797
+ return Le(
798
+ "div",
799
+ {
800
+ ref: "container",
801
+ class: [
802
+ "splitpanes",
803
+ `splitpanes--${this.horizontal ? "horizontal" : "vertical"}`,
804
+ {
805
+ "splitpanes--dragging": this.touch.dragging
806
+ }
807
+ ]
808
+ },
809
+ this.$slots.default()
810
+ );
811
+ }
812
+ }, mt = (t, e) => {
813
+ const i = t.__vccOpts || t;
814
+ for (const [r, s] of e)
815
+ i[r] = s;
816
+ return i;
817
+ }, ht = {
818
+ name: "pane",
819
+ inject: ["requestUpdate", "onPaneAdd", "onPaneRemove", "onPaneClick"],
820
+ props: {
821
+ size: { type: [Number, String], default: null },
822
+ minSize: { type: [Number, String], default: 0 },
823
+ maxSize: { type: [Number, String], default: 100 }
824
+ },
825
+ data: () => ({
826
+ style: {}
827
+ }),
828
+ mounted() {
829
+ this.onPaneAdd(this);
830
+ },
831
+ beforeUnmount() {
832
+ this.onPaneRemove(this);
833
+ },
834
+ methods: {
835
+ update(t) {
836
+ this.style = t;
837
+ }
838
+ },
839
+ computed: {
840
+ sizeNumber() {
841
+ return this.size || this.size === 0 ? parseFloat(this.size) : null;
842
+ },
843
+ minSizeNumber() {
844
+ return parseFloat(this.minSize);
845
+ },
846
+ maxSizeNumber() {
847
+ return parseFloat(this.maxSize);
848
+ }
849
+ },
850
+ watch: {
851
+ sizeNumber(t) {
852
+ this.requestUpdate({ target: this, size: t });
853
+ },
854
+ minSizeNumber(t) {
855
+ this.requestUpdate({ target: this, min: t });
856
+ },
857
+ maxSizeNumber(t) {
858
+ this.requestUpdate({ target: this, max: t });
859
+ }
860
+ }
861
+ };
862
+ function ft(t, e, i, r, s, o) {
863
+ return v(), V("div", {
864
+ class: "splitpanes__pane",
865
+ onClick: e[0] || (e[0] = (a) => o.onPaneClick(a, t._.uid)),
866
+ style: He(t.style)
867
+ }, [
868
+ qe(t.$slots, "default")
869
+ ], 4);
870
+ }
871
+ const gt = /* @__PURE__ */ mt(ht, [["render", ft]]), vt = {
872
+ props: {
873
+ question: {
874
+ type: String,
875
+ required: !0
876
+ },
877
+ default: {
878
+ type: String,
879
+ default: null
880
+ },
881
+ password: {
882
+ type: Boolean,
883
+ default: !1
884
+ },
885
+ answerRequired: {
886
+ type: Boolean,
887
+ default: !0
888
+ },
889
+ modelValue: Boolean
890
+ },
891
+ data() {
892
+ return {
893
+ inputValue: "",
894
+ valid: !1,
895
+ rules: [(t) => !!t || "Required"]
896
+ };
897
+ },
898
+ created() {
899
+ this.default && (this.valid = !0, this.inputValue = this.default), this.answerRequired === !1 && (this.valid = !0, this.rules = [(t) => !0]);
900
+ },
901
+ computed: {
902
+ show: {
903
+ get() {
904
+ return this.modelValue;
905
+ },
906
+ set(t) {
907
+ this.$emit("update:modelValue", t);
908
+ }
909
+ }
910
+ },
911
+ methods: {
912
+ submitHandler: function() {
913
+ this.$emit("response", this.inputValue);
914
+ },
915
+ cancelHandler: function() {
916
+ this.$emit("response", "Cancel");
917
+ }
918
+ }
919
+ }, bt = { class: "pa-2" }, _t = { class: "question" };
920
+ function wt(t, e, i, r, s, o) {
921
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("v-text-field"), b = u("v-card-text"), w = u("v-btn"), _ = u("v-card-actions"), g = u("v-form"), k = u("v-card"), x = u("v-dialog");
922
+ return v(), C(x, {
923
+ persistent: "",
924
+ modelValue: o.show,
925
+ "onUpdate:modelValue": e[2] || (e[2] = (f) => o.show = f),
926
+ width: "600"
927
+ }, {
928
+ default: l(() => [
929
+ n(k, null, {
930
+ default: l(() => [
931
+ n(g, {
932
+ modelValue: s.valid,
933
+ "onUpdate:modelValue": e[1] || (e[1] = (f) => s.valid = f),
934
+ onSubmit: L(o.submitHandler, ["prevent"])
935
+ }, {
936
+ default: l(() => [
937
+ n(p, { height: "24" }, {
938
+ default: l(() => [
939
+ n(a),
940
+ e[3] || (e[3] = h("span", null, " User Input Required ", -1)),
941
+ n(a)
942
+ ]),
943
+ _: 1
944
+ }),
945
+ h("div", bt, [
946
+ n(b, null, {
947
+ default: l(() => [
948
+ h("div", _t, E(i.question), 1),
949
+ n(c, {
950
+ modelValue: s.inputValue,
951
+ "onUpdate:modelValue": e[0] || (e[0] = (f) => s.inputValue = f),
952
+ autofocus: "",
953
+ "data-test": "ask-value-input",
954
+ type: i.password ? "password" : "text",
955
+ rules: s.rules
956
+ }, null, 8, ["modelValue", "type", "rules"])
957
+ ]),
958
+ _: 1
959
+ })
960
+ ]),
961
+ n(_, { class: "px-2" }, {
962
+ default: l(() => [
963
+ n(a),
964
+ n(w, {
965
+ onClick: o.cancelHandler,
966
+ variant: "outlined",
967
+ "data-test": "ask-cancel"
968
+ }, {
969
+ default: l(() => e[4] || (e[4] = [
970
+ m(" Cancel ")
971
+ ])),
972
+ _: 1
973
+ }, 8, ["onClick"]),
974
+ n(w, {
975
+ onClick: L(o.submitHandler, ["prevent"]),
976
+ variant: "flat",
977
+ type: "submit",
978
+ "data-test": "ask-ok",
979
+ disabled: !s.valid
980
+ }, {
981
+ default: l(() => e[5] || (e[5] = [
982
+ m(" Ok ")
983
+ ])),
984
+ _: 1
985
+ }, 8, ["onClick", "disabled"])
986
+ ]),
987
+ _: 1
988
+ })
989
+ ]),
990
+ _: 1
991
+ }, 8, ["modelValue", "onSubmit"])
992
+ ]),
993
+ _: 1
994
+ })
995
+ ]),
996
+ _: 1
997
+ }, 8, ["modelValue"]);
998
+ }
999
+ const kt = /* @__PURE__ */ T(vt, [["render", wt], ["__scopeId", "data-v-8ea0ca6a"]]), yt = {
1000
+ props: {
1001
+ title: {
1002
+ type: String,
1003
+ required: !0
1004
+ },
1005
+ message: {
1006
+ type: String,
1007
+ default: null
1008
+ },
1009
+ filter: {
1010
+ type: String,
1011
+ default: "*"
1012
+ },
1013
+ multiple: {
1014
+ type: Boolean,
1015
+ default: !1
1016
+ },
1017
+ modelValue: Boolean
1018
+ },
1019
+ data() {
1020
+ return {
1021
+ inputValue: null,
1022
+ valid: null,
1023
+ rules: [
1024
+ (t) => this.multiple ? t.length != 0 || "Required" : !!t || "Required"
1025
+ ]
1026
+ };
1027
+ },
1028
+ computed: {
1029
+ show: {
1030
+ get() {
1031
+ return this.modelValue;
1032
+ },
1033
+ set(t) {
1034
+ this.$emit("update:modelValue", t);
1035
+ }
1036
+ }
1037
+ },
1038
+ methods: {
1039
+ submitHandler: function() {
1040
+ Array.isArray(this.inputValue) || (this.inputValue = [this.inputValue]), this.$emit("response", this.inputValue);
1041
+ },
1042
+ cancelHandler: function() {
1043
+ this.$emit("response", "Cancel");
1044
+ }
1045
+ }
1046
+ }, St = { class: "pa-2" }, xt = { class: "title" }, Ct = ["textContent"];
1047
+ function Vt(t, e, i, r, s, o) {
1048
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("v-row"), b = u("v-file-input"), w = u("v-card-text"), _ = u("v-btn"), g = u("v-card-actions"), k = u("v-form"), x = u("v-card"), f = u("v-dialog");
1049
+ return v(), C(f, {
1050
+ persistent: "",
1051
+ modelValue: o.show,
1052
+ "onUpdate:modelValue": e[2] || (e[2] = (S) => o.show = S),
1053
+ width: "600"
1054
+ }, {
1055
+ default: l(() => [
1056
+ n(x, null, {
1057
+ default: l(() => [
1058
+ n(k, {
1059
+ modelValue: s.valid,
1060
+ "onUpdate:modelValue": e[1] || (e[1] = (S) => s.valid = S),
1061
+ onSubmit: L(o.submitHandler, ["prevent"])
1062
+ }, {
1063
+ default: l(() => [
1064
+ n(p, { height: "24" }, {
1065
+ default: l(() => [
1066
+ n(a),
1067
+ e[3] || (e[3] = h("span", null, " File Dialog ", -1)),
1068
+ n(a)
1069
+ ]),
1070
+ _: 1
1071
+ }),
1072
+ h("div", St, [
1073
+ n(w, null, {
1074
+ default: l(() => [
1075
+ n(c, null, {
1076
+ default: l(() => [
1077
+ h("span", xt, E(i.title), 1)
1078
+ ]),
1079
+ _: 1
1080
+ }),
1081
+ i.message ? (v(), C(c, { key: 0 }, {
1082
+ default: l(() => [
1083
+ h("span", {
1084
+ class: "ma-3",
1085
+ style: { "white-space": "pre-line" },
1086
+ textContent: E(i.message)
1087
+ }, null, 8, Ct)
1088
+ ]),
1089
+ _: 1
1090
+ })) : R("", !0),
1091
+ n(c, { class: "my-1" }, {
1092
+ default: l(() => [
1093
+ n(b, {
1094
+ label: "Choose File",
1095
+ modelValue: s.inputValue,
1096
+ "onUpdate:modelValue": e[0] || (e[0] = (S) => s.inputValue = S),
1097
+ rules: s.rules,
1098
+ autofocus: "",
1099
+ "data-test": "file-input",
1100
+ accept: i.filter,
1101
+ "small-chips": "",
1102
+ multiple: i.multiple
1103
+ }, null, 8, ["modelValue", "rules", "accept", "multiple"])
1104
+ ]),
1105
+ _: 1
1106
+ })
1107
+ ]),
1108
+ _: 1
1109
+ })
1110
+ ]),
1111
+ n(g, { class: "px-2" }, {
1112
+ default: l(() => [
1113
+ n(a),
1114
+ n(_, {
1115
+ onClick: o.cancelHandler,
1116
+ variant: "outlined",
1117
+ "data-test": "file-cancel"
1118
+ }, {
1119
+ default: l(() => e[4] || (e[4] = [
1120
+ m(" Cancel ")
1121
+ ])),
1122
+ _: 1
1123
+ }, 8, ["onClick"]),
1124
+ n(_, {
1125
+ onClick: L(o.submitHandler, ["prevent"]),
1126
+ variant: "flat",
1127
+ type: "submit",
1128
+ "data-test": "file-ok",
1129
+ disabled: !s.valid
1130
+ }, {
1131
+ default: l(() => e[5] || (e[5] = [
1132
+ m(" Ok ")
1133
+ ])),
1134
+ _: 1
1135
+ }, 8, ["onClick", "disabled"])
1136
+ ]),
1137
+ _: 1
1138
+ })
1139
+ ]),
1140
+ _: 1
1141
+ }, 8, ["modelValue", "onSubmit"])
1142
+ ]),
1143
+ _: 1
1144
+ })
1145
+ ]),
1146
+ _: 1
1147
+ }, 8, ["modelValue"]);
1148
+ }
1149
+ const Rt = /* @__PURE__ */ T(yt, [["render", Vt], ["__scopeId", "data-v-dec7d712"]]), Et = {
1150
+ props: {
1151
+ modelValue: {
1152
+ type: Boolean,
1153
+ required: !0
1154
+ },
1155
+ title: {
1156
+ type: String,
1157
+ required: !0
1158
+ },
1159
+ text: {
1160
+ type: String,
1161
+ required: !0
1162
+ },
1163
+ width: {
1164
+ type: String,
1165
+ required: !0
1166
+ }
1167
+ },
1168
+ computed: {
1169
+ show: {
1170
+ get() {
1171
+ return this.modelValue;
1172
+ },
1173
+ set(t) {
1174
+ this.$emit("update:modelValue", t);
1175
+ }
1176
+ }
1177
+ },
1178
+ methods: {}
1179
+ }, Mt = ["textContent"], Ot = { class: "pa-2" }, zt = ["textContent"];
1180
+ function Tt(t, e, i, r, s, o) {
1181
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("v-row"), b = u("v-card-text"), w = u("v-btn"), _ = u("v-card-actions"), g = u("v-card"), k = u("v-dialog");
1182
+ return v(), C(k, {
1183
+ modelValue: o.show,
1184
+ "onUpdate:modelValue": e[1] || (e[1] = (x) => o.show = x),
1185
+ width: i.width
1186
+ }, {
1187
+ default: l(() => [
1188
+ n(g, null, {
1189
+ default: l(() => [
1190
+ n(p, { height: "24" }, {
1191
+ default: l(() => [
1192
+ n(a),
1193
+ h("span", {
1194
+ style: { "white-space": "pre-line" },
1195
+ textContent: E(i.title)
1196
+ }, null, 8, Mt),
1197
+ n(a)
1198
+ ]),
1199
+ _: 1
1200
+ }),
1201
+ h("div", Ot, [
1202
+ n(b, null, {
1203
+ default: l(() => [
1204
+ (v(!0), V(N, null, X(i.text, (x, f) => (v(), C(c, {
1205
+ "no-gutters": "",
1206
+ key: f
1207
+ }, {
1208
+ default: l(() => [
1209
+ h("span", {
1210
+ style: { "white-space": "pre-line" },
1211
+ textContent: E(x)
1212
+ }, null, 8, zt)
1213
+ ]),
1214
+ _: 2
1215
+ }, 1024))), 128))
1216
+ ]),
1217
+ _: 1
1218
+ })
1219
+ ]),
1220
+ n(_, { class: "px-2" }, {
1221
+ default: l(() => [
1222
+ n(a),
1223
+ n(w, {
1224
+ variant: "flat",
1225
+ onClick: e[0] || (e[0] = (x) => o.show = !o.show)
1226
+ }, {
1227
+ default: l(() => e[2] || (e[2] = [
1228
+ m(" Ok ")
1229
+ ])),
1230
+ _: 1
1231
+ })
1232
+ ]),
1233
+ _: 1
1234
+ })
1235
+ ]),
1236
+ _: 1
1237
+ })
1238
+ ]),
1239
+ _: 1
1240
+ }, 8, ["modelValue", "width"]);
1241
+ }
1242
+ const Dt = /* @__PURE__ */ T(Et, [["render", Tt]]), Pt = {
1243
+ components: {},
1244
+ props: {
1245
+ modelValue: {
1246
+ type: Boolean,
1247
+ required: !0
1248
+ }
1249
+ },
1250
+ data() {
1251
+ return {
1252
+ api: null,
1253
+ overrides: [],
1254
+ search: "",
1255
+ headers: [
1256
+ { text: "Target", value: "target_name" },
1257
+ { text: "Packet", value: "packet_name" },
1258
+ { text: "Item", value: "item_name" },
1259
+ { text: "Type", value: "value_type" },
1260
+ { text: "Value", value: "value" },
1261
+ { text: "Delete", value: "delete" }
1262
+ ]
1263
+ };
1264
+ },
1265
+ created: function() {
1266
+ this.api = new le(), this.getOverrides();
1267
+ },
1268
+ computed: {
1269
+ show: {
1270
+ get() {
1271
+ return this.modelValue;
1272
+ },
1273
+ set(t) {
1274
+ this.$emit("update:modelValue", t);
1275
+ }
1276
+ }
1277
+ },
1278
+ methods: {
1279
+ getOverrides: function() {
1280
+ this.api.get_overrides().then((t) => {
1281
+ this.overrides = t;
1282
+ });
1283
+ },
1284
+ clearOverrides: function() {
1285
+ const t = [
1286
+ ...new Map(
1287
+ this.overrides.map((e) => [
1288
+ // Create a key based on target, packet, item so we remove duplicates
1289
+ `${e.target_name}__${e.packet_name}__${e.item_name}`,
1290
+ e
1291
+ ])
1292
+ ).values()
1293
+ ];
1294
+ for (let e of t)
1295
+ this.api.normalize_tlm(
1296
+ e.target_name,
1297
+ e.packet_name,
1298
+ e.item_name,
1299
+ "ALL"
1300
+ ).then((i) => {
1301
+ this.overrides = [];
1302
+ });
1303
+ },
1304
+ deleteOverride: function(t) {
1305
+ this.api.normalize_tlm(
1306
+ t.target_name,
1307
+ t.packet_name,
1308
+ t.item_name,
1309
+ t.value_type
1310
+ ).then((e) => {
1311
+ let i = this.overrides.indexOf(t);
1312
+ this.overrides.splice(i, 1);
1313
+ });
1314
+ }
1315
+ }
1316
+ }, Ut = { class: "pa-2" };
1317
+ function It(t, e, i, r, s, o) {
1318
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("v-btn"), b = u("v-text-field"), w = u("v-row"), _ = u("v-icon"), g = u("v-tooltip"), k = u("v-data-table"), x = u("v-card-text"), f = u("v-card-actions"), S = u("v-card"), M = u("v-dialog");
1319
+ return v(), C(M, {
1320
+ modelValue: o.show,
1321
+ "onUpdate:modelValue": e[2] || (e[2] = (z) => o.show = z),
1322
+ width: "1000"
1323
+ }, {
1324
+ default: l(() => [
1325
+ n(S, null, {
1326
+ default: l(() => [
1327
+ n(p, { height: "24" }, {
1328
+ default: l(() => [
1329
+ n(a),
1330
+ e[3] || (e[3] = h("span", null, "Overrides", -1)),
1331
+ n(a)
1332
+ ]),
1333
+ _: 1
1334
+ }),
1335
+ h("div", Ut, [
1336
+ n(x, null, {
1337
+ default: l(() => [
1338
+ n(w, { class: "ma-1" }, {
1339
+ default: l(() => [
1340
+ n(c, {
1341
+ onClick: o.clearOverrides,
1342
+ color: "primary",
1343
+ "data-test": "overrides-dialog-clear-all"
1344
+ }, {
1345
+ default: l(() => e[4] || (e[4] = [
1346
+ m(" Clear All Overrides ")
1347
+ ])),
1348
+ _: 1
1349
+ }, 8, ["onClick"]),
1350
+ n(a),
1351
+ n(b, {
1352
+ modelValue: s.search,
1353
+ "onUpdate:modelValue": e[0] || (e[0] = (z) => s.search = z),
1354
+ label: "Search",
1355
+ "prepend-inner-icon": "mdi-magnify",
1356
+ clearable: "",
1357
+ variant: "outlined",
1358
+ density: "compact",
1359
+ "single-line": "",
1360
+ "hide-details": ""
1361
+ }, null, 8, ["modelValue"])
1362
+ ]),
1363
+ _: 1
1364
+ }),
1365
+ n(k, {
1366
+ headers: s.headers,
1367
+ items: s.overrides,
1368
+ search: s.search,
1369
+ "items-per-page-options": [100],
1370
+ "multi-sort": "",
1371
+ density: "compact"
1372
+ }, {
1373
+ "item.delete": l(({ item: z }) => [
1374
+ n(g, { location: "top" }, {
1375
+ activator: l(({ props: $ }) => [
1376
+ n(_, B({
1377
+ onClick: (ee) => o.deleteOverride(z)
1378
+ }, $), {
1379
+ default: l(() => e[5] || (e[5] = [
1380
+ m(" mdi-delete ")
1381
+ ])),
1382
+ _: 2
1383
+ }, 1040, ["onClick"])
1384
+ ]),
1385
+ default: l(() => [
1386
+ e[6] || (e[6] = h("span", null, "Delete Override", -1))
1387
+ ]),
1388
+ _: 2
1389
+ }, 1024)
1390
+ ]),
1391
+ _: 1
1392
+ }, 8, ["headers", "items", "search"])
1393
+ ]),
1394
+ _: 1
1395
+ })
1396
+ ]),
1397
+ n(f, { class: "px-2" }, {
1398
+ default: l(() => [
1399
+ n(a),
1400
+ n(c, {
1401
+ variant: "flat",
1402
+ onClick: e[1] || (e[1] = (z) => o.show = !o.show),
1403
+ "data-test": "overrides-dialog-ok"
1404
+ }, {
1405
+ default: l(() => e[7] || (e[7] = [
1406
+ m(" Ok ")
1407
+ ])),
1408
+ _: 1
1409
+ })
1410
+ ]),
1411
+ _: 1
1412
+ })
1413
+ ]),
1414
+ _: 1
1415
+ })
1416
+ ]),
1417
+ _: 1
1418
+ }, 8, ["modelValue"]);
1419
+ }
1420
+ const At = /* @__PURE__ */ T(Pt, [["render", It]]), Ft = {
1421
+ props: {
1422
+ title: {
1423
+ type: String,
1424
+ default: "Prompt Dialog"
1425
+ },
1426
+ subtitle: {
1427
+ type: String,
1428
+ default: ""
1429
+ },
1430
+ message: {
1431
+ type: String,
1432
+ required: !0
1433
+ },
1434
+ details: {
1435
+ type: String,
1436
+ default: ""
1437
+ },
1438
+ buttons: {
1439
+ type: Array,
1440
+ default: () => []
1441
+ },
1442
+ layout: {
1443
+ type: String,
1444
+ default: "horizontal"
1445
+ // Also 'vertical' or 'combo' when means ComboBox
1446
+ },
1447
+ multiple: {
1448
+ type: Boolean,
1449
+ default: !1,
1450
+ required: !1
1451
+ },
1452
+ modelValue: Boolean
1453
+ },
1454
+ data() {
1455
+ return {
1456
+ selectOkDisabled: !0,
1457
+ selectedItem: null
1458
+ };
1459
+ },
1460
+ computed: {
1461
+ show: {
1462
+ get() {
1463
+ return this.modelValue;
1464
+ },
1465
+ set(t) {
1466
+ this.$emit("update:modelValue", t);
1467
+ }
1468
+ },
1469
+ layoutClass() {
1470
+ let t = "px-2 d-flex align-start";
1471
+ return this.layout === "vertical" ? `${t} flex-column` : `${t} flex-row`;
1472
+ }
1473
+ },
1474
+ methods: {
1475
+ submitWrapper: function(t) {
1476
+ this.selectedItem = t, this.submitHandler();
1477
+ },
1478
+ submitHandler: function() {
1479
+ this.$emit("response", this.selectedItem);
1480
+ },
1481
+ cancelHandler: function() {
1482
+ this.$emit("response", "Cancel");
1483
+ }
1484
+ }
1485
+ }, Bt = ["textContent"], Nt = { class: "pa-2" }, Lt = ["textContent"], Ht = ["textContent"], qt = { key: 0 }, Gt = { key: 1 };
1486
+ function jt(t, e, i, r, s, o) {
1487
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("v-card-subtitle"), b = u("v-row"), w = u("v-card-text"), _ = u("v-select"), g = u("v-btn"), k = u("v-card-actions"), x = u("v-card"), f = u("v-dialog");
1488
+ return v(), C(f, {
1489
+ persistent: "",
1490
+ modelValue: o.show,
1491
+ "onUpdate:modelValue": e[2] || (e[2] = (S) => o.show = S),
1492
+ width: "600"
1493
+ }, {
1494
+ default: l(() => [
1495
+ n(x, null, {
1496
+ default: l(() => [
1497
+ n(p, { height: "24" }, {
1498
+ default: l(() => [
1499
+ n(a),
1500
+ h("span", {
1501
+ class: "text",
1502
+ textContent: E(i.title)
1503
+ }, null, 8, Bt),
1504
+ n(a)
1505
+ ]),
1506
+ _: 1
1507
+ }),
1508
+ h("div", Nt, [
1509
+ n(w, { class: "text" }, {
1510
+ default: l(() => [
1511
+ i.subtitle ? (v(), C(b, { key: 0 }, {
1512
+ default: l(() => [
1513
+ n(c, null, {
1514
+ default: l(() => [
1515
+ m(E(i.subtitle), 1)
1516
+ ]),
1517
+ _: 1
1518
+ })
1519
+ ]),
1520
+ _: 1
1521
+ })) : R("", !0),
1522
+ n(b, { class: "mt-1" }, {
1523
+ default: l(() => [
1524
+ h("span", {
1525
+ textContent: E(i.message)
1526
+ }, null, 8, Lt)
1527
+ ]),
1528
+ _: 1
1529
+ }),
1530
+ i.details ? (v(), C(b, {
1531
+ key: 1,
1532
+ class: "mt-1"
1533
+ }, {
1534
+ default: l(() => [
1535
+ h("span", {
1536
+ textContent: E(i.details)
1537
+ }, null, 8, Ht)
1538
+ ]),
1539
+ _: 1
1540
+ })) : R("", !0)
1541
+ ]),
1542
+ _: 1
1543
+ })
1544
+ ]),
1545
+ i.layout === "combo" ? (v(), V("div", qt, [
1546
+ n(b, { class: "ma-2" }, {
1547
+ default: l(() => [
1548
+ n(_, {
1549
+ "onUpdate:modelValue": [
1550
+ e[0] || (e[0] = (S) => s.selectOkDisabled = !1),
1551
+ e[1] || (e[1] = (S) => s.selectedItem = S)
1552
+ ],
1553
+ modelValue: s.selectedItem,
1554
+ label: "Select",
1555
+ color: "secondary",
1556
+ class: "ma-1",
1557
+ "data-test": "prompt-select",
1558
+ items: i.buttons,
1559
+ multiple: i.multiple === !0
1560
+ }, null, 8, ["modelValue", "items", "multiple"])
1561
+ ]),
1562
+ _: 1
1563
+ }),
1564
+ n(k, { class: "px-2" }, {
1565
+ default: l(() => [
1566
+ n(a),
1567
+ n(g, {
1568
+ onClick: o.cancelHandler,
1569
+ variant: "outlined",
1570
+ "data-test": "prompt-cancel"
1571
+ }, {
1572
+ default: l(() => e[3] || (e[3] = [
1573
+ m(" Cancel ")
1574
+ ])),
1575
+ _: 1
1576
+ }, 8, ["onClick"]),
1577
+ n(g, {
1578
+ variant: "flat",
1579
+ onClick: o.submitHandler,
1580
+ "data-test": "prompt-ok",
1581
+ disabled: s.selectOkDisabled
1582
+ }, {
1583
+ default: l(() => e[4] || (e[4] = [
1584
+ m(" Ok ")
1585
+ ])),
1586
+ _: 1
1587
+ }, 8, ["onClick", "disabled"])
1588
+ ]),
1589
+ _: 1
1590
+ })
1591
+ ])) : (v(), V("div", Gt, [
1592
+ n(k, {
1593
+ class: fe(o.layoutClass)
1594
+ }, {
1595
+ default: l(() => [
1596
+ n(a),
1597
+ n(g, {
1598
+ onClick: o.cancelHandler,
1599
+ variant: "outlined",
1600
+ "data-test": "prompt-cancel"
1601
+ }, {
1602
+ default: l(() => e[5] || (e[5] = [
1603
+ m(" Cancel ")
1604
+ ])),
1605
+ _: 1
1606
+ }, 8, ["onClick"]),
1607
+ (v(!0), V(N, null, X(i.buttons, (S, M) => (v(), V("div", { key: M }, [
1608
+ n(g, {
1609
+ variant: "flat",
1610
+ onClick: (z) => o.submitWrapper(S.value),
1611
+ "data-test": `prompt-${S.text}`
1612
+ }, {
1613
+ default: l(() => [
1614
+ m(E(S.text), 1)
1615
+ ]),
1616
+ _: 2
1617
+ }, 1032, ["onClick", "data-test"])
1618
+ ]))), 128))
1619
+ ]),
1620
+ _: 1
1621
+ }, 8, ["class"])
1622
+ ]))
1623
+ ]),
1624
+ _: 1
1625
+ })
1626
+ ]),
1627
+ _: 1
1628
+ }, 8, ["modelValue"]);
1629
+ }
1630
+ const Kt = /* @__PURE__ */ T(Ft, [["render", jt], ["__scopeId", "data-v-0500fee9"]]), Wt = {
1631
+ components: {},
1632
+ props: {
1633
+ modelValue: {
1634
+ type: Boolean,
1635
+ required: !0
1636
+ },
1637
+ text: {
1638
+ type: String,
1639
+ required: !0
1640
+ }
1641
+ },
1642
+ computed: {
1643
+ show: {
1644
+ get() {
1645
+ return this.modelValue;
1646
+ },
1647
+ set(t) {
1648
+ this.$emit("update:modelValue", t);
1649
+ }
1650
+ }
1651
+ },
1652
+ mounted() {
1653
+ setTimeout(() => {
1654
+ this.$refs.okButton.$el.focus();
1655
+ });
1656
+ },
1657
+ methods: {
1658
+ downloadResults() {
1659
+ const t = new Blob([this.text], {
1660
+ type: "text/plain"
1661
+ }), e = document.createElement("a");
1662
+ e.href = URL.createObjectURL(t), e.setAttribute(
1663
+ "download",
1664
+ q(Date.now(), "yyyy_MM_dd_HH_mm_ss") + "_suite_results.txt"
1665
+ ), e.click();
1666
+ }
1667
+ }
1668
+ }, Jt = { class: "pa-2" };
1669
+ function Yt(t, e, i, r, s, o) {
1670
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("v-textarea"), b = u("v-card-text"), w = u("v-btn"), _ = u("v-card-actions"), g = u("v-card"), k = u("v-dialog");
1671
+ return v(), C(k, {
1672
+ modelValue: o.show,
1673
+ "onUpdate:modelValue": e[1] || (e[1] = (x) => o.show = x),
1674
+ scrollable: "",
1675
+ width: "800"
1676
+ }, {
1677
+ default: l(() => [
1678
+ n(g, null, {
1679
+ default: l(() => [
1680
+ n(p, { height: "24" }, {
1681
+ default: l(() => [
1682
+ n(a),
1683
+ e[2] || (e[2] = h("span", null, " Script Results ", -1)),
1684
+ n(a)
1685
+ ]),
1686
+ _: 1
1687
+ }),
1688
+ h("div", Jt, [
1689
+ n(b, { style: { width: "100%", "max-height": "80vh", overflow: "auto" } }, {
1690
+ default: l(() => [
1691
+ n(c, {
1692
+ readonly: "",
1693
+ "hide-details": "",
1694
+ density: "compact",
1695
+ "auto-grow": "",
1696
+ "model-value": i.text
1697
+ }, null, 8, ["model-value"])
1698
+ ]),
1699
+ _: 1
1700
+ })
1701
+ ]),
1702
+ n(_, { class: "px-2" }, {
1703
+ default: l(() => [
1704
+ n(a),
1705
+ n(w, {
1706
+ variant: "outlined",
1707
+ onClick: o.downloadResults
1708
+ }, {
1709
+ default: l(() => e[3] || (e[3] = [
1710
+ m(" Download ")
1711
+ ])),
1712
+ _: 1
1713
+ }, 8, ["onClick"]),
1714
+ n(w, {
1715
+ variant: "flat",
1716
+ onClick: e[0] || (e[0] = (x) => o.show = !o.show),
1717
+ ref: "okButton"
1718
+ }, {
1719
+ default: l(() => e[4] || (e[4] = [
1720
+ m(" Ok ")
1721
+ ])),
1722
+ _: 1
1723
+ }, 512)
1724
+ ]),
1725
+ _: 1
1726
+ })
1727
+ ]),
1728
+ _: 1
1729
+ })
1730
+ ]),
1731
+ _: 1
1732
+ }, 8, ["modelValue"]);
1733
+ }
1734
+ const Xt = /* @__PURE__ */ T(Wt, [["render", Yt]]), Zt = {
1735
+ components: {
1736
+ EnvironmentChooser: tt
1737
+ },
1738
+ props: {
1739
+ modelValue: {
1740
+ type: Boolean,
1741
+ required: !0
1742
+ },
1743
+ inputEnvironment: {
1744
+ type: Array,
1745
+ required: !0
1746
+ }
1747
+ },
1748
+ data() {
1749
+ return {
1750
+ selected: []
1751
+ };
1752
+ },
1753
+ mounted: function() {
1754
+ this.loadEnvironment();
1755
+ },
1756
+ computed: {
1757
+ show: {
1758
+ get() {
1759
+ return this.modelValue;
1760
+ },
1761
+ set(t) {
1762
+ this.$emit("update:modelValue", t);
1763
+ }
1764
+ }
1765
+ },
1766
+ methods: {
1767
+ loadEnvironment: function() {
1768
+ this.selected = [...this.inputEnvironment];
1769
+ },
1770
+ updateEnvironment: function() {
1771
+ this.$emit("environment", this.selected), this.show = !this.show;
1772
+ },
1773
+ cancel: function() {
1774
+ this.show = !this.show;
1775
+ }
1776
+ }
1777
+ }, Qt = { class: "pa-2" };
1778
+ function $t(t, e, i, r, s, o) {
1779
+ const a = u("v-spacer"), p = u("v-toolbar"), c = u("environment-chooser"), b = u("v-card-text"), w = u("v-btn"), _ = u("v-card-actions"), g = u("v-card"), k = u("v-dialog");
1780
+ return v(), C(k, {
1781
+ modelValue: o.show,
1782
+ "onUpdate:modelValue": e[1] || (e[1] = (x) => o.show = x),
1783
+ width: "600"
1784
+ }, {
1785
+ default: l(() => [
1786
+ n(g, null, {
1787
+ default: l(() => [
1788
+ n(p, { height: "24" }, {
1789
+ default: l(() => [
1790
+ n(a),
1791
+ e[2] || (e[2] = h("span", null, "Script Environment Variables", -1)),
1792
+ n(a)
1793
+ ]),
1794
+ _: 1
1795
+ }),
1796
+ h("div", Qt, [
1797
+ n(b, null, {
1798
+ default: l(() => [
1799
+ n(c, {
1800
+ modelValue: s.selected,
1801
+ "onUpdate:modelValue": e[0] || (e[0] = (x) => s.selected = x)
1802
+ }, null, 8, ["modelValue"])
1803
+ ]),
1804
+ _: 1
1805
+ })
1806
+ ]),
1807
+ n(_, { class: "px-2" }, {
1808
+ default: l(() => [
1809
+ n(a),
1810
+ n(w, {
1811
+ onClick: o.cancel,
1812
+ variant: "outlined",
1813
+ "data-test": "environment-dialog-cancel"
1814
+ }, {
1815
+ default: l(() => e[3] || (e[3] = [
1816
+ m(" Cancel ")
1817
+ ])),
1818
+ _: 1
1819
+ }, 8, ["onClick"]),
1820
+ n(w, {
1821
+ onClick: o.updateEnvironment,
1822
+ variant: "flat",
1823
+ "data-test": "environment-dialog-save",
1824
+ disabled: !!t.inputError
1825
+ }, {
1826
+ default: l(() => e[4] || (e[4] = [
1827
+ m(" Save ")
1828
+ ])),
1829
+ _: 1
1830
+ }, 8, ["onClick", "disabled"])
1831
+ ]),
1832
+ _: 1
1833
+ })
1834
+ ]),
1835
+ _: 1
1836
+ })
1837
+ ]),
1838
+ _: 1
1839
+ }, 8, ["modelValue"]);
1840
+ }
1841
+ const es = /* @__PURE__ */ T(Zt, [["render", $t]]), ts = {
1842
+ props: {
1843
+ suiteMap: {
1844
+ type: Object,
1845
+ required: !0
1846
+ },
1847
+ disableButtons: {
1848
+ type: Boolean,
1849
+ required: !0
1850
+ },
1851
+ filename: {
1852
+ type: String,
1853
+ required: !0
1854
+ }
1855
+ },
1856
+ data() {
1857
+ return {
1858
+ suites: [],
1859
+ groups: [],
1860
+ scripts: [],
1861
+ suite: "",
1862
+ group: "",
1863
+ script: "",
1864
+ options: ["pauseOnError", "manual", "continueAfterError"],
1865
+ userInfo: {}
1866
+ };
1867
+ },
1868
+ computed: {
1869
+ checkedManualTooltip() {
1870
+ return this.filename.endsWith(".py") ? "Checked sets the RunningScript.manual variable to True" : "Checked sets the $manual variable to true";
1871
+ },
1872
+ uncheckedManualTooltip() {
1873
+ return this.filename.endsWith(".py") ? "Unchecked sets the RunningScript.manual variable to False" : "Unchecked sets the $manual variable to false";
1874
+ },
1875
+ setupSuiteEnabled() {
1876
+ return !!(this.suite && this.suiteMap[this.suite].setup);
1877
+ },
1878
+ teardownSuiteEnabled() {
1879
+ return !!(this.suite && this.suiteMap[this.suite].teardown);
1880
+ },
1881
+ setupGroupEnabled() {
1882
+ return !!(this.suite && this.group && this.suiteMap[this.suite].groups[this.group].setup);
1883
+ },
1884
+ teardownGroupEnabled() {
1885
+ return !!(this.suite && this.group && this.suiteMap[this.suite].groups[this.group].teardown);
1886
+ },
1887
+ scriptNames() {
1888
+ return this.scripts.map((t) => ({
1889
+ // strip script_ or test_ from the name
1890
+ title: t.replace(/^(script_|test_)/, ""),
1891
+ value: t
1892
+ }));
1893
+ }
1894
+ },
1895
+ created() {
1896
+ this.userInfo = JSON.parse(localStorage.script_runner__userinfo), this.initSuites(), this.$emit("loaded");
1897
+ },
1898
+ // Watch the suiteMap so we can recreate the suites and set the initial value
1899
+ watch: {
1900
+ suiteMap: {
1901
+ handler: function(t, e) {
1902
+ this.updateSuiteMap();
1903
+ },
1904
+ deep: !0
1905
+ // Deep watcher because suiteMap is a nested Object
1906
+ }
1907
+ },
1908
+ methods: {
1909
+ updateSuiteMap() {
1910
+ this.suites = Object.keys(this.suiteMap), this.suiteMap[this.suite] == null || this.suiteMap[this.suite].groups[this.group] == null ? this.initSuites() : (this.groups = Object.keys(this.suiteMap[this.suite].groups), this.scripts = this.suiteMap[this.suite].groups[this.group].scripts);
1911
+ },
1912
+ initSuites() {
1913
+ this.suites = Object.keys(this.suiteMap), this.suiteChanged(this.suites[0]);
1914
+ },
1915
+ suiteChanged(t) {
1916
+ this.suite = t, this.group = "", this.script = "", this.groups = Object.keys(this.suiteMap[t].groups), this.groupChanged(this.groups[0]);
1917
+ },
1918
+ groupChanged(t) {
1919
+ this.group = t, this.script = "", this.scripts = this.suiteMap[this.suite].groups[t].scripts, this.scriptChanged(this.scripts[0]);
1920
+ },
1921
+ scriptChanged(t) {
1922
+ this.script = t;
1923
+ }
1924
+ }
1925
+ }, ss = { id: "tr-container" };
1926
+ function is(t, e, i, r, s, o) {
1927
+ const a = u("v-checkbox"), p = u("v-tooltip"), c = u("v-col"), b = u("v-row"), w = u("v-select"), _ = u("v-btn");
1928
+ return v(), V("div", null, [
1929
+ h("div", ss, [
1930
+ n(b, {
1931
+ "no-gutters": "",
1932
+ align: "center"
1933
+ }, {
1934
+ default: l(() => [
1935
+ n(c, { cols: "4" }, {
1936
+ default: l(() => [
1937
+ n(b, { "no-gutters": "" }, {
1938
+ default: l(() => [
1939
+ n(c, { cols: "6" }, {
1940
+ default: l(() => [
1941
+ n(p, { location: "top" }, {
1942
+ activator: l(({ props: g }) => [
1943
+ h("div", U(I(g)), [
1944
+ n(a, {
1945
+ modelValue: s.options,
1946
+ "onUpdate:modelValue": e[0] || (e[0] = (k) => s.options = k),
1947
+ label: "Pause on Error",
1948
+ value: "pauseOnError",
1949
+ "hide-details": "",
1950
+ "data-test": "pause-on-error"
1951
+ }, null, 8, ["modelValue"])
1952
+ ], 16)
1953
+ ]),
1954
+ default: l(() => [
1955
+ e[16] || (e[16] = h("span", null, [
1956
+ m("Checked pauses the script when an error is encountered"),
1957
+ h("br"),
1958
+ m("Unchecked continues without user interaction")
1959
+ ], -1))
1960
+ ]),
1961
+ _: 1
1962
+ })
1963
+ ]),
1964
+ _: 1
1965
+ }),
1966
+ n(c, { cols: "6" }, {
1967
+ default: l(() => [
1968
+ n(p, { location: "top" }, {
1969
+ activator: l(({ props: g }) => [
1970
+ h("div", U(I(g)), [
1971
+ n(a, {
1972
+ modelValue: s.options,
1973
+ "onUpdate:modelValue": e[1] || (e[1] = (k) => s.options = k),
1974
+ label: "Manual",
1975
+ value: "manual",
1976
+ "hide-details": "",
1977
+ "data-test": "manual"
1978
+ }, null, 8, ["modelValue"])
1979
+ ], 16)
1980
+ ]),
1981
+ default: l(() => [
1982
+ h("span", null, [
1983
+ m(E(o.checkedManualTooltip), 1),
1984
+ e[17] || (e[17] = h("br", null, null, -1)),
1985
+ m(E(o.uncheckedManualTooltip), 1)
1986
+ ])
1987
+ ]),
1988
+ _: 1
1989
+ })
1990
+ ]),
1991
+ _: 1
1992
+ })
1993
+ ]),
1994
+ _: 1
1995
+ })
1996
+ ]),
1997
+ _: 1
1998
+ }),
1999
+ n(c, { cols: "8" }, {
2000
+ default: l(() => [
2001
+ n(b, {
2002
+ "no-gutters": "",
2003
+ justify: "end"
2004
+ }, {
2005
+ default: l(() => [
2006
+ n(c, { cols: "5" }, {
2007
+ default: l(() => [
2008
+ n(w, {
2009
+ label: "Suite:",
2010
+ class: "mb-2 mr-2",
2011
+ "hide-details": "",
2012
+ density: "compact",
2013
+ variant: "outlined",
2014
+ "onUpdate:modelValue": [
2015
+ o.suiteChanged,
2016
+ e[2] || (e[2] = (g) => s.suite = g)
2017
+ ],
2018
+ items: s.suites,
2019
+ modelValue: s.suite,
2020
+ "data-test": "select-suite"
2021
+ }, null, 8, ["onUpdate:modelValue", "items", "modelValue"])
2022
+ ]),
2023
+ _: 1
2024
+ }),
2025
+ n(c, { cols: "auto" }, {
2026
+ default: l(() => [
2027
+ n(_, {
2028
+ color: "primary",
2029
+ class: "mr-2",
2030
+ disabled: i.disableButtons || !s.userInfo.execute,
2031
+ onClick: e[3] || (e[3] = (g) => t.$emit("button", { method: "start", suite: s.suite, options: s.options })),
2032
+ "data-test": "start-suite"
2033
+ }, {
2034
+ default: l(() => e[18] || (e[18] = [
2035
+ m(" Start ")
2036
+ ])),
2037
+ _: 1
2038
+ }, 8, ["disabled"]),
2039
+ n(_, {
2040
+ color: "primary",
2041
+ class: "mr-2",
2042
+ onClick: e[4] || (e[4] = (g) => t.$emit("button", { method: "setup", suite: s.suite, options: s.options })),
2043
+ "data-test": "setup-suite",
2044
+ disabled: i.disableButtons || !o.setupSuiteEnabled || !s.userInfo.execute
2045
+ }, {
2046
+ default: l(() => e[19] || (e[19] = [
2047
+ m(" Setup ")
2048
+ ])),
2049
+ _: 1
2050
+ }, 8, ["disabled"]),
2051
+ n(_, {
2052
+ color: "primary",
2053
+ onClick: e[5] || (e[5] = (g) => t.$emit("button", { method: "teardown", suite: s.suite, options: s.options })),
2054
+ "data-test": "teardown-suite",
2055
+ disabled: i.disableButtons || !o.teardownSuiteEnabled || !s.userInfo.execute
2056
+ }, {
2057
+ default: l(() => e[20] || (e[20] = [
2058
+ m(" Teardown ")
2059
+ ])),
2060
+ _: 1
2061
+ }, 8, ["disabled"])
2062
+ ]),
2063
+ _: 1
2064
+ })
2065
+ ]),
2066
+ _: 1
2067
+ })
2068
+ ]),
2069
+ _: 1
2070
+ })
2071
+ ]),
2072
+ _: 1
2073
+ }),
2074
+ n(b, { "no-gutters": "" }, {
2075
+ default: l(() => [
2076
+ n(c, { cols: "4" }, {
2077
+ default: l(() => [
2078
+ n(b, { "no-gutters": "" }, {
2079
+ default: l(() => [
2080
+ n(c, { cols: "6" }, {
2081
+ default: l(() => [
2082
+ n(p, { location: "top" }, {
2083
+ activator: l(({ props: g }) => [
2084
+ h("div", U(I(g)), [
2085
+ n(a, {
2086
+ modelValue: s.options,
2087
+ "onUpdate:modelValue": e[6] || (e[6] = (k) => s.options = k),
2088
+ label: "Continue after Error",
2089
+ value: "continueAfterError",
2090
+ "hide-details": "",
2091
+ "data-test": "continue-after-error"
2092
+ }, null, 8, ["modelValue"])
2093
+ ], 16)
2094
+ ]),
2095
+ default: l(() => [
2096
+ e[21] || (e[21] = h("span", null, [
2097
+ m("Checked allows the script to continue when an error is encountered"),
2098
+ h("br"),
2099
+ m("Unchecked forces the current script to end")
2100
+ ], -1))
2101
+ ]),
2102
+ _: 1
2103
+ })
2104
+ ]),
2105
+ _: 1
2106
+ }),
2107
+ n(c, { cols: "6" }, {
2108
+ default: l(() => [
2109
+ n(p, { location: "top" }, {
2110
+ activator: l(({ props: g }) => [
2111
+ h("div", U(I(g)), [
2112
+ n(a, {
2113
+ modelValue: s.options,
2114
+ "onUpdate:modelValue": e[7] || (e[7] = (k) => s.options = k),
2115
+ label: "Loop",
2116
+ value: "loop",
2117
+ "hide-details": "",
2118
+ "data-test": "loop"
2119
+ }, null, 8, ["modelValue"])
2120
+ ], 16)
2121
+ ]),
2122
+ default: l(() => [
2123
+ e[22] || (e[22] = h("span", null, [
2124
+ m("Checked continuously executes until explicitly stopped"),
2125
+ h("br"),
2126
+ m(" Unchecked executes only the started script(s)")
2127
+ ], -1))
2128
+ ]),
2129
+ _: 1
2130
+ })
2131
+ ]),
2132
+ _: 1
2133
+ })
2134
+ ]),
2135
+ _: 1
2136
+ })
2137
+ ]),
2138
+ _: 1
2139
+ }),
2140
+ n(c, { cols: "8" }, {
2141
+ default: l(() => [
2142
+ n(b, {
2143
+ "no-gutters": "",
2144
+ justify: "end"
2145
+ }, {
2146
+ default: l(() => [
2147
+ n(c, { cols: "5" }, {
2148
+ default: l(() => [
2149
+ n(w, {
2150
+ label: "Group:",
2151
+ class: "mb-2 mr-2",
2152
+ "hide-details": "",
2153
+ density: "compact",
2154
+ variant: "outlined",
2155
+ "onUpdate:modelValue": [
2156
+ o.groupChanged,
2157
+ e[8] || (e[8] = (g) => s.group = g)
2158
+ ],
2159
+ items: s.groups,
2160
+ modelValue: s.group,
2161
+ "data-test": "select-group"
2162
+ }, null, 8, ["onUpdate:modelValue", "items", "modelValue"])
2163
+ ]),
2164
+ _: 1
2165
+ }),
2166
+ n(c, { cols: "auto" }, {
2167
+ default: l(() => [
2168
+ n(_, {
2169
+ color: "primary",
2170
+ class: "mr-2",
2171
+ disabled: i.disableButtons || !s.userInfo.execute,
2172
+ onClick: e[9] || (e[9] = (g) => t.$emit("button", { method: "start", suite: s.suite, group: s.group, options: s.options })),
2173
+ "data-test": "start-group"
2174
+ }, {
2175
+ default: l(() => e[23] || (e[23] = [
2176
+ m(" Start ")
2177
+ ])),
2178
+ _: 1
2179
+ }, 8, ["disabled"]),
2180
+ n(_, {
2181
+ color: "primary",
2182
+ class: "mr-2",
2183
+ onClick: e[10] || (e[10] = (g) => t.$emit("button", { method: "setup", suite: s.suite, group: s.group, options: s.options })),
2184
+ "data-test": "setup-group",
2185
+ disabled: i.disableButtons || !o.setupGroupEnabled || !s.userInfo.execute
2186
+ }, {
2187
+ default: l(() => e[24] || (e[24] = [
2188
+ m(" Setup ")
2189
+ ])),
2190
+ _: 1
2191
+ }, 8, ["disabled"]),
2192
+ n(_, {
2193
+ color: "primary",
2194
+ onClick: e[11] || (e[11] = (g) => t.$emit("button", { method: "teardown", suite: s.suite, group: s.group, options: s.options })),
2195
+ "data-test": "teardown-group",
2196
+ disabled: i.disableButtons || !o.teardownGroupEnabled || !s.userInfo.execute
2197
+ }, {
2198
+ default: l(() => e[25] || (e[25] = [
2199
+ m(" Teardown ")
2200
+ ])),
2201
+ _: 1
2202
+ }, 8, ["disabled"])
2203
+ ]),
2204
+ _: 1
2205
+ })
2206
+ ]),
2207
+ _: 1
2208
+ })
2209
+ ]),
2210
+ _: 1
2211
+ })
2212
+ ]),
2213
+ _: 1
2214
+ }),
2215
+ n(b, { "no-gutters": "" }, {
2216
+ default: l(() => [
2217
+ n(c, { cols: "4" }, {
2218
+ default: l(() => [
2219
+ n(b, { "no-gutters": "" }, {
2220
+ default: l(() => [
2221
+ n(c, { cols: "6" }, {
2222
+ default: l(() => [
2223
+ n(p, { location: "top" }, {
2224
+ activator: l(({ props: g }) => [
2225
+ h("div", U(I(g)), [
2226
+ n(a, {
2227
+ modelValue: s.options,
2228
+ "onUpdate:modelValue": e[12] || (e[12] = (k) => s.options = k),
2229
+ label: "Abort after Error",
2230
+ value: "abortAfterError",
2231
+ "hide-details": "",
2232
+ "data-test": "abort-after-error"
2233
+ }, null, 8, ["modelValue"])
2234
+ ], 16)
2235
+ ]),
2236
+ default: l(() => [
2237
+ e[26] || (e[26] = h("span", null, [
2238
+ m("Checked stops additional script execution when an error is encountered"),
2239
+ h("br"),
2240
+ m(" Unchecked allows additional scripts to execute")
2241
+ ], -1))
2242
+ ]),
2243
+ _: 1
2244
+ })
2245
+ ]),
2246
+ _: 1
2247
+ }),
2248
+ n(c, { cols: "6" }, {
2249
+ default: l(() => [
2250
+ n(p, { location: "top" }, {
2251
+ activator: l(({ props: g }) => [
2252
+ h("div", U(I(g)), [
2253
+ n(a, {
2254
+ disabled: !s.options.includes("loop"),
2255
+ modelValue: s.options,
2256
+ "onUpdate:modelValue": e[13] || (e[13] = (k) => s.options = k),
2257
+ label: "Break Loop on Error",
2258
+ value: "breakLoopOnError",
2259
+ "hide-details": "",
2260
+ "data-test": "break-loop-on-error"
2261
+ }, null, 8, ["disabled", "modelValue"])
2262
+ ], 16)
2263
+ ]),
2264
+ default: l(() => [
2265
+ e[27] || (e[27] = h("span", null, [
2266
+ m("Checked breaks the loop option when an error is encountered"),
2267
+ h("br"),
2268
+ m(" Unchecked allows the loop to run continuously"),
2269
+ h("br"),
2270
+ m(" Note: Abort after Error still breaks the loop")
2271
+ ], -1))
2272
+ ]),
2273
+ _: 1
2274
+ })
2275
+ ]),
2276
+ _: 1
2277
+ })
2278
+ ]),
2279
+ _: 1
2280
+ })
2281
+ ]),
2282
+ _: 1
2283
+ }),
2284
+ n(c, { cols: "8" }, {
2285
+ default: l(() => [
2286
+ n(b, {
2287
+ "no-gutters": "",
2288
+ justify: "end"
2289
+ }, {
2290
+ default: l(() => [
2291
+ n(c, { cols: "5" }, {
2292
+ default: l(() => [
2293
+ n(w, {
2294
+ label: "Script:",
2295
+ class: "mb-2 mr-2",
2296
+ "hide-details": "",
2297
+ density: "compact",
2298
+ variant: "outlined",
2299
+ "onUpdate:modelValue": [
2300
+ o.scriptChanged,
2301
+ e[14] || (e[14] = (g) => s.script = g)
2302
+ ],
2303
+ items: o.scriptNames,
2304
+ "item-title": "title",
2305
+ "item-value": "value",
2306
+ modelValue: s.script,
2307
+ "data-test": "select-script"
2308
+ }, null, 8, ["onUpdate:modelValue", "items", "modelValue"])
2309
+ ]),
2310
+ _: 1
2311
+ }),
2312
+ n(c, { cols: "auto" }, {
2313
+ default: l(() => [
2314
+ n(_, {
2315
+ color: "primary",
2316
+ class: "mr-2",
2317
+ disabled: i.disableButtons || !s.userInfo.execute,
2318
+ onClick: e[15] || (e[15] = (g) => t.$emit("button", {
2319
+ method: "start",
2320
+ suite: s.suite,
2321
+ group: s.group,
2322
+ script: s.script,
2323
+ options: s.options
2324
+ })),
2325
+ "data-test": "start-script"
2326
+ }, {
2327
+ default: l(() => e[28] || (e[28] = [
2328
+ m(" Start ")
2329
+ ])),
2330
+ _: 1
2331
+ }, 8, ["disabled"]),
2332
+ n(_, {
2333
+ color: "primary",
2334
+ class: "mr-2 invisible"
2335
+ }, {
2336
+ default: l(() => e[29] || (e[29] = [
2337
+ m(" Setup ")
2338
+ ])),
2339
+ _: 1
2340
+ }),
2341
+ n(_, {
2342
+ color: "primary",
2343
+ class: "invisible"
2344
+ }, {
2345
+ default: l(() => e[30] || (e[30] = [
2346
+ m(" Teardown ")
2347
+ ])),
2348
+ _: 1
2349
+ })
2350
+ ]),
2351
+ _: 1
2352
+ })
2353
+ ]),
2354
+ _: 1
2355
+ })
2356
+ ]),
2357
+ _: 1
2358
+ })
2359
+ ]),
2360
+ _: 1
2361
+ })
2362
+ ])
2363
+ ]);
2364
+ }
2365
+ const ns = /* @__PURE__ */ T(ts, [["render", is], ["__scopeId", "data-v-69ea3cf8"]]), oe = (t) => y.get(`/openc3-api/autocomplete/keywords/${t}`), os = (t) => y.get(`/openc3-api/autocomplete/data/${t}`), me = (t, e) => t.reduce((i, r) => {
2366
+ const s = e(r);
2367
+ return i[s] ? i[s].push(r) : i[s] = [r], i;
2368
+ }, {}), ls = (t) => {
2369
+ const e = "(^|[{\\(\\s])", i = `[\\s\\(]f?['"]`, r = "(\\S+\\s?){0,3}";
2370
+ return new RegExp(`${e}${t}${i}${r}$`);
2371
+ };
2372
+ class ge {
2373
+ constructor(e, i = () => {
2374
+ }, r = () => {
2375
+ }) {
2376
+ this.keywordExpressions = [], this.autocompleteData = [], oe(e).then((s) => {
2377
+ this.keywordExpressions = s.data.map(ls), r();
2378
+ }), os(e).then((s) => {
2379
+ this.autocompleteData = s.data, i();
2380
+ });
2381
+ }
2382
+ getCompletions(e, i, r, s, o) {
2383
+ let a = [];
2384
+ const p = i.doc.$lines[r.row].slice(
2385
+ 0,
2386
+ r.column
2387
+ );
2388
+ this.keywordExpressions.some((c) => p.match(c)) && (a = this.autocompleteData), o(null, [
2389
+ ...a
2390
+ // Uncomment to also return the built-in autocomplete words (but I found they're not very good and just get in the way when using live autocomplete)
2391
+ // ...session.$mode.$highlightRules.$keywordList.map((word) => ({
2392
+ // caption: word,
2393
+ // value: word,
2394
+ // meta: 'keyword',
2395
+ // })),
2396
+ ]);
2397
+ }
2398
+ }
2399
+ class rs extends ge {
2400
+ constructor() {
2401
+ super("cmd");
2402
+ }
2403
+ }
2404
+ class as extends ge {
2405
+ constructor() {
2406
+ super("tlm", () => {
2407
+ this.groupedPacketData = this.autocompleteData.reduce((e, i) => {
2408
+ const r = i.caption.match(/\S+\s\S+/)[0], s = i.snippet.replace(`${r} `, ""), o = {
2409
+ caption: s,
2410
+ snippet: s,
2411
+ meta: "item"
2412
+ };
2413
+ return e[r] ? e[r].push(o) : e[r] = [o], e;
2414
+ }, {}), this.packets = Object.keys(this.groupedPacketData).map((e) => ({
2415
+ caption: e,
2416
+ snippet: e,
2417
+ meta: "packet"
2418
+ }));
2419
+ });
2420
+ }
2421
+ // Override the parent's getCompletions to take advantage of the grouping by packet done in the constructor
2422
+ getCompletions(e, i, r, s, o) {
2423
+ let a = [];
2424
+ const p = i.doc.$lines[r.row].slice(
2425
+ 0,
2426
+ r.column
2427
+ );
2428
+ if (this.keywordExpressions.some((c) => p.match(c))) {
2429
+ const c = Object.keys(this.groupedPacketData).find(
2430
+ (b) => p.includes(b)
2431
+ );
2432
+ c ? a = this.groupedPacketData[c] : a = this.packets;
2433
+ }
2434
+ o(null, a);
2435
+ }
2436
+ }
2437
+ const he = (t) => {
2438
+ const e = "(^|[{\\(\\s])", i = "((\\s.+)|(\\(.+\\)))";
2439
+ return new RegExp(`${e}${t}${i}`);
2440
+ }, us = /\{/, ds = /['"],\s?['"]/;
2441
+ class cs {
2442
+ constructor() {
2443
+ this.api = new le(), this.targets = {}, this.api.get_target_names().then((e) => {
2444
+ e.forEach((i) => {
2445
+ this.targets[i] = {
2446
+ cmd: null,
2447
+ tlm: null
2448
+ };
2449
+ });
2450
+ }), this.cmdKeywordExpressions = [], oe("cmd").then((e) => {
2451
+ this.cmdKeywordExpressions = e.data.map(he);
2452
+ }), this.tlmKeywordExpressions = [], oe("tlm").then((e) => {
2453
+ this.tlmKeywordExpressions = e.data.map(he);
2454
+ });
2455
+ }
2456
+ async checkText(e) {
2457
+ const { linesToCheck: i, linesToSkip: r } = e.split(`
2458
+ `).reduce(
2459
+ (o, a, p) => {
2460
+ if (a = a.trim(), a.match(/^#/))
2461
+ return o;
2462
+ const c = this.cmdKeywordExpressions.reduce((S, M) => S || a.match(M), null), b = this.tlmKeywordExpressions.reduce((S, M) => S || a.match(M), null);
2463
+ if (!c && !b)
2464
+ return o;
2465
+ let w = c || b, _ = w.length;
2466
+ w = w[_ - 1];
2467
+ const g = w.substring(w.match(/[\(\s)]/).index + 1).replace(/\)+.*$/, "");
2468
+ if (g.match(us))
2469
+ return o.linesToSkip.push(p + 1), o;
2470
+ const k = !!g.match(ds), x = g.split(
2471
+ k ? "," : " "
2472
+ );
2473
+ if (x.length < 2)
2474
+ return o;
2475
+ const f = {
2476
+ target: x[0],
2477
+ packet: x[1]
2478
+ };
2479
+ if (b)
2480
+ f.item = x[2];
2481
+ else {
2482
+ const S = x.slice(2);
2483
+ k ? f.params = S.map(
2484
+ (M) => M.split("=>")[0]
2485
+ ) : f.params = S.filter((M, z) => z % 2);
2486
+ }
2487
+ for (const S in f)
2488
+ typeof f[S] == "string" ? f[S] = f[S].replace(/['"]/g, "").trim() : f[S] = f[S].map(
2489
+ (M) => M.replace(/['"]/g, "").trim()
2490
+ );
2491
+ return o.linesToCheck.push({
2492
+ line: a,
2493
+ mnemonic: f,
2494
+ lineNumber: p + 1
2495
+ }), o;
2496
+ },
2497
+ { linesToCheck: [], linesToSkip: [] }
2498
+ ), s = await this._checkLines(i);
2499
+ return {
2500
+ skipped: r.sort(),
2501
+ problems: s.sort((o, a) => o.lineNumber - a.lineNumber)
2502
+ };
2503
+ }
2504
+ async _checkLines(e) {
2505
+ const i = [], r = me(
2506
+ e,
2507
+ (s) => s.mnemonic.target
2508
+ );
2509
+ for (const s in r) {
2510
+ if (!this.targets[s]) {
2511
+ for (const a of r[s])
2512
+ i.push({
2513
+ ...a,
2514
+ error: `Target "${s}" does not exist.`
2515
+ });
2516
+ continue;
2517
+ }
2518
+ const o = me(
2519
+ r[s],
2520
+ (a) => a.mnemonic.packet
2521
+ );
2522
+ for (const a in o)
2523
+ for (const p of o[a]) {
2524
+ const c = p.mnemonic.item ? "tlm" : "cmd";
2525
+ if (!this.targets[s][c]) {
2526
+ const w = p.mnemonic.item ? "get_all_tlm" : "get_all_cmds", _ = await this.api[w](s);
2527
+ this.targets[s][c] = _.reduce(
2528
+ (g, k) => (g[k.packet_name] = k.items.map(
2529
+ (x) => x.name
2530
+ ), g),
2531
+ {}
2532
+ );
2533
+ }
2534
+ const b = this.targets[s][c][a];
2535
+ if (!b) {
2536
+ i.push({
2537
+ ...p,
2538
+ error: `${c === "tlm" ? "Packet" : "Command"} "${s} ${a}" does not exist.`
2539
+ });
2540
+ continue;
2541
+ }
2542
+ if (p.mnemonic.item) {
2543
+ if (!b.some((w) => w === p.mnemonic.item)) {
2544
+ i.push({
2545
+ ...p,
2546
+ error: `Item "${s} ${a} ${p.mnemonic.item}" does not exist.`
2547
+ });
2548
+ continue;
2549
+ }
2550
+ } else
2551
+ for (const w of p.mnemonic.params)
2552
+ if (!b.some((_) => _ === w)) {
2553
+ i.push({
2554
+ ...p,
2555
+ error: `Command "${s} ${a}" param "${w}" does not exist.`
2556
+ });
2557
+ continue;
2558
+ }
2559
+ }
2560
+ }
2561
+ return i;
2562
+ }
2563
+ }
2564
+ var A, G, j, K, W, Z, J, Y, Q;
2565
+ class ps {
2566
+ constructor(e, { pattern: i, text: r, type: s }) {
2567
+ // TODO: the eslint parser errors on these because of the #
2568
+ // Not sure if this naming is needed for the Ace editor or something?
2569
+ D(this, A);
2570
+ D(this, G);
2571
+ D(this, j);
2572
+ D(this, K);
2573
+ D(this, W);
2574
+ // Re-annotate the entire document
2575
+ se(this, "refresh", () => {
2576
+ const e = O(this, G).session;
2577
+ O(this, Q).call(this, e);
2578
+ const i = {
2579
+ lines: e.doc.$lines,
2580
+ action: "insert",
2581
+ start: { row: 0 },
2582
+ end: { row: e.doc.$lines.length }
2583
+ };
2584
+ this.annotate(i, e);
2585
+ });
2586
+ // Update annotations for the changed lines
2587
+ se(this, "annotate", (e, i) => {
2588
+ var r, s;
2589
+ if (e.lines.length > 1)
2590
+ switch (e.action) {
2591
+ case "insert":
2592
+ O(this, Y).call(this, i, e.start.row, e.lines.length - 1);
2593
+ break;
2594
+ case "remove":
2595
+ O(this, Y).call(this, i, e.start.row + 1, -e.lines.length + 1);
2596
+ break;
2597
+ }
2598
+ for (let o = e.start.row; o <= e.end.row; o++) {
2599
+ let a = (s = (r = i.doc.$lines[o]) == null ? void 0 : r.match(O(this, j))) == null ? void 0 : s.index;
2600
+ a !== void 0 ? (a !== 0 && (a += 1), O(this, Z).call(this, i, {
2601
+ row: o,
2602
+ column: a,
2603
+ // I don't think our editor theme shows the column for annotations, but others do
2604
+ text: O(this, K),
2605
+ type: O(this, W),
2606
+ openc3Id: O(this, A)
2607
+ })) : e.action === "remove" && O(this, J).call(this, i, o);
2608
+ }
2609
+ });
2610
+ D(this, Z, (e, i) => {
2611
+ O(this, J).call(this, e, i.row), e.setAnnotations([...e.getAnnotations(), i]);
2612
+ });
2613
+ D(this, J, (e, i) => {
2614
+ e.setAnnotations(
2615
+ e.getAnnotations().filter(
2616
+ (r) => r.openc3Id !== O(this, A) || r.row !== i
2617
+ )
2618
+ );
2619
+ });
2620
+ D(this, Y, (e, i, r) => {
2621
+ e.setAnnotations(
2622
+ e.getAnnotations().map((s) => (s.row > i && (s.row += r), s))
2623
+ );
2624
+ });
2625
+ D(this, Q, (e) => {
2626
+ e.setAnnotations(
2627
+ e.getAnnotations().filter((i) => i.openc3Id !== O(this, A))
2628
+ );
2629
+ });
2630
+ F(this, A, `regexAnnotator-${Math.floor(Math.random() * 1e7)}`), F(this, G, e), F(this, j, i), F(this, K, r), F(this, W, s);
2631
+ }
2632
+ }
2633
+ A = new WeakMap(), G = new WeakMap(), j = new WeakMap(), K = new WeakMap(), W = new WeakMap(), Z = new WeakMap(), J = new WeakMap(), Y = new WeakMap(), Q = new WeakMap();
2634
+ class ms extends ps {
2635
+ constructor(e) {
2636
+ const i = "(^|[{\\s])", r = "sleep", s = "[\\(\\s]";
2637
+ super(e, {
2638
+ pattern: new RegExp(`${i}${r}${s}`),
2639
+ text: "Use `wait` instead of `sleep` in OpenC3 scripts",
2640
+ // because we override wait to make it work better, but not sleep
2641
+ type: "warning"
2642
+ });
2643
+ }
2644
+ }
2645
+ const ie = "__TEMP__", P = "<Untitled>", ne = "Start", hs = "Go", H = "Pause", fs = "Retry", gs = {
2646
+ components: {
2647
+ FileOpenSaveDialog: Ze,
2648
+ Openc3Screen: Xe,
2649
+ EnvironmentDialog: Ye,
2650
+ Splitpanes: pt,
2651
+ Pane: gt,
2652
+ TopBar: We,
2653
+ AskDialog: kt,
2654
+ FileDialog: Rt,
2655
+ InformationDialog: Dt,
2656
+ EventListDialog: et,
2657
+ OverridesDialog: At,
2658
+ PromptDialog: Kt,
2659
+ ResultsDialog: Xt,
2660
+ ScriptEnvironmentDialog: es,
2661
+ SimpleTextDialog: $e,
2662
+ SuiteRunner: ns,
2663
+ RunningScripts: at,
2664
+ ScriptLogMessages: ct,
2665
+ CriticalCmdDialog: Je
2666
+ },
2667
+ mixins: [je],
2668
+ props: {
2669
+ inline: {
2670
+ type: Boolean,
2671
+ default: !1
2672
+ },
2673
+ body: {
2674
+ type: String,
2675
+ default: null
2676
+ }
2677
+ },
2678
+ data() {
2679
+ return {
2680
+ title: "Script Runner",
2681
+ suiteRunner: !1,
2682
+ // Whether to display the SuiteRunner GUI
2683
+ disableSuiteButtons: !1,
2684
+ suiteMap: {
2685
+ // Useful for testing the various options in the SuiteRunner GUI
2686
+ // Suite: {
2687
+ // teardown: true,
2688
+ // groups: {
2689
+ // Group: {
2690
+ // setup: true,
2691
+ // cases: ['case1', 'case2', 'really_long_test_case_name3'],
2692
+ // },
2693
+ // ReallyLongGroupName: {
2694
+ // cases: ['case1', 'case2', 'case3'],
2695
+ // },
2696
+ // },
2697
+ // },
2698
+ },
2699
+ filenameSelect: null,
2700
+ currentFilename: null,
2701
+ // This is the currently shown filename while running
2702
+ showSave: !1,
2703
+ showAlert: !1,
2704
+ alertType: null,
2705
+ alertText: "",
2706
+ state: null,
2707
+ scriptId: null,
2708
+ startOrGoButton: ne,
2709
+ startOrGoDisabled: !1,
2710
+ envDisabled: !1,
2711
+ pauseOrRetryButton: H,
2712
+ pauseOrRetryDisabled: !1,
2713
+ stopDisabled: !1,
2714
+ showEnvironment: !1,
2715
+ showDebug: !1,
2716
+ debug: "",
2717
+ debugHistory: [],
2718
+ debugHistoryIndex: 0,
2719
+ showDisconnect: !1,
2720
+ files: {},
2721
+ breakpoints: {},
2722
+ enableStackTraces: !1,
2723
+ filename: P,
2724
+ readOnlyUser: !1,
2725
+ executeUser: !0,
2726
+ saveAllowed: !0,
2727
+ tempFilename: null,
2728
+ fileModified: "",
2729
+ fileOpen: !1,
2730
+ lockedBy: null,
2731
+ showEditingToast: !1,
2732
+ showSaveAs: !1,
2733
+ areYouSure: !1,
2734
+ subscription: null,
2735
+ cable: null,
2736
+ fatal: !1,
2737
+ updateInterval: null,
2738
+ receivedEvents: [],
2739
+ messages: [],
2740
+ messagesNewestOnTop: !0,
2741
+ maxArrayLength: 200,
2742
+ Range: ace.require("ace/range").Range,
2743
+ ask: {
2744
+ show: !1,
2745
+ question: "",
2746
+ default: null,
2747
+ password: !1,
2748
+ answerRequired: !0,
2749
+ callback: () => {
2750
+ }
2751
+ },
2752
+ file: {
2753
+ show: !1,
2754
+ message: "",
2755
+ directory: null,
2756
+ filter: "*",
2757
+ multiple: !1,
2758
+ callback: () => {
2759
+ }
2760
+ },
2761
+ prompt: {
2762
+ show: !1,
2763
+ title: "",
2764
+ subtitle: "",
2765
+ message: "",
2766
+ details: "",
2767
+ buttons: null,
2768
+ layout: "horizontal",
2769
+ callback: () => {
2770
+ }
2771
+ },
2772
+ information: {
2773
+ show: !1,
2774
+ title: "",
2775
+ text: [],
2776
+ width: "600"
2777
+ },
2778
+ inputMetadata: {
2779
+ show: !1,
2780
+ events: [],
2781
+ callback: () => {
2782
+ }
2783
+ },
2784
+ results: {
2785
+ show: !1,
2786
+ text: ""
2787
+ },
2788
+ scriptEnvironment: {
2789
+ show: !1,
2790
+ env: []
2791
+ },
2792
+ showSuiteError: !1,
2793
+ suiteError: "",
2794
+ executeSelectionMenu: !1,
2795
+ menuX: 0,
2796
+ menuY: 0,
2797
+ mnemonicChecker: new cs(),
2798
+ showScripts: !1,
2799
+ showOverrides: !1,
2800
+ activePromptId: "",
2801
+ api: null,
2802
+ timeZone: "local",
2803
+ screens: [],
2804
+ screenKeywords: null,
2805
+ idCounter: 0,
2806
+ updateCounter: 0,
2807
+ recent: [],
2808
+ waitingInterval: null,
2809
+ waitingTime: 0,
2810
+ waitingStart: 0,
2811
+ criticalCmdUuid: null,
2812
+ criticalCmdString: null,
2813
+ criticalCmdUser: null,
2814
+ displayCriticalCmd: !1
2815
+ };
2816
+ },
2817
+ computed: {
2818
+ stateTimer: function() {
2819
+ return this.state === "waiting" || this.state === "paused" ? `${this.state} ${this.waitingTime}s` : this.state;
2820
+ },
2821
+ // This is the list of files shown in the select dropdown
2822
+ fileList: function() {
2823
+ const t = Object.keys(this.files);
2824
+ return t.push(this.fullFilename), [...new Set(t)];
2825
+ },
2826
+ environmentIcon: function() {
2827
+ return this.scriptEnvironment.env.length > 0 ? "mdi-bookmark" : "mdi-bookmark-outline";
2828
+ },
2829
+ environmentIconColor: function() {
2830
+ return this.scriptEnvironment.env.length > 0 ? "primary" : "";
2831
+ },
2832
+ isLocked: function() {
2833
+ return !!this.lockedBy;
2834
+ },
2835
+ // Returns the currently shown filename
2836
+ fullFilename: function() {
2837
+ return this.currentFilename ? this.currentFilename : this.filename === P ? P : `${this.filename} ${this.fileModified}`.trim();
2838
+ },
2839
+ // It's annoying for people (and tests) to clear the <Untitled>
2840
+ // when saving a new file so replace with blank
2841
+ // This makes sure that string doesn't show up in the dialog
2842
+ filenameOrBlank: function() {
2843
+ return this.filename === P ? "" : this.filename;
2844
+ },
2845
+ menus: function() {
2846
+ return [
2847
+ {
2848
+ label: "File",
2849
+ items: [
2850
+ {
2851
+ label: "New File",
2852
+ icon: "mdi-file-plus",
2853
+ disabled: this.scriptId || this.readOnlyUser,
2854
+ command: () => {
2855
+ this.newFile();
2856
+ }
2857
+ },
2858
+ {
2859
+ label: "New Suite",
2860
+ icon: "mdi-file-document-plus",
2861
+ disabled: this.scriptId || this.readOnlyUser,
2862
+ subMenu: [
2863
+ {
2864
+ label: "Ruby",
2865
+ icon: "mdi-language-ruby",
2866
+ command: () => {
2867
+ this.newRubyTestSuite();
2868
+ }
2869
+ },
2870
+ {
2871
+ label: "Python",
2872
+ icon: "mdi-language-python",
2873
+ command: () => {
2874
+ this.newPythonTestSuite();
2875
+ }
2876
+ }
2877
+ ]
2878
+ },
2879
+ {
2880
+ label: "Open File",
2881
+ icon: "mdi-folder-open",
2882
+ disabled: this.scriptId,
2883
+ command: () => {
2884
+ this.openFile();
2885
+ }
2886
+ },
2887
+ {
2888
+ label: "Open Recent",
2889
+ icon: "mdi-folder-open",
2890
+ disabled: this.scriptId,
2891
+ subMenu: this.recent
2892
+ },
2893
+ {
2894
+ divider: !0
2895
+ },
2896
+ {
2897
+ label: "Save File",
2898
+ icon: "mdi-content-save",
2899
+ disabled: this.scriptId || this.readOnlyUser,
2900
+ command: () => {
2901
+ this.saveFile();
2902
+ }
2903
+ },
2904
+ {
2905
+ label: "Save As...",
2906
+ icon: "mdi-content-save",
2907
+ disabled: this.scriptId || this.readOnlyUser,
2908
+ command: () => {
2909
+ this.saveAs();
2910
+ }
2911
+ },
2912
+ {
2913
+ divider: !0
2914
+ },
2915
+ {
2916
+ label: "Download",
2917
+ icon: "mdi-cloud-download",
2918
+ disabled: this.scriptId,
2919
+ command: () => {
2920
+ this.download();
2921
+ }
2922
+ },
2923
+ {
2924
+ divider: !0
2925
+ },
2926
+ {
2927
+ label: "Delete File",
2928
+ icon: "mdi-delete",
2929
+ disabled: this.scriptId || this.readOnlyUser,
2930
+ command: () => {
2931
+ this.delete();
2932
+ }
2933
+ }
2934
+ ]
2935
+ },
2936
+ {
2937
+ label: "Edit",
2938
+ items: [
2939
+ {
2940
+ label: "Find",
2941
+ icon: "mdi-magnify",
2942
+ command: () => {
2943
+ this.editor.execCommand("find");
2944
+ }
2945
+ },
2946
+ {
2947
+ label: "Replace",
2948
+ icon: "mdi-find-replace",
2949
+ disabled: this.scriptId,
2950
+ command: () => {
2951
+ this.editor.execCommand("replace");
2952
+ }
2953
+ },
2954
+ {
2955
+ label: "Set Line Delay",
2956
+ icon: "mdi-invoice-text-clock",
2957
+ disabled: this.scriptId,
2958
+ command: () => {
2959
+ this.$dialog.open({
2960
+ title: "Info",
2961
+ text: "You can set the line delay in seconds using the api method set_line_delay().<br/><br/>The default line delay is 0.1 seconds between lines. Adding set_line_delay(0) to the top of your script will execute the script at maximum speed. However, this can make it difficult to see and pause the script. Executing set_line_delay(1) will cause a 1 second delay between lines.",
2962
+ okText: "OK",
2963
+ okClass: "primary",
2964
+ validateText: null,
2965
+ cancelText: null,
2966
+ html: !0
2967
+ });
2968
+ }
2969
+ }
2970
+ ]
2971
+ },
2972
+ {
2973
+ label: "Script",
2974
+ items: [
2975
+ {
2976
+ label: "Execution Status",
2977
+ icon: "mdi-run",
2978
+ command: () => {
2979
+ this.showScripts = !0;
2980
+ }
2981
+ },
2982
+ {
2983
+ divider: !0
2984
+ },
2985
+ {
2986
+ label: "Global Environment",
2987
+ icon: "mdi-library",
2988
+ disabled: this.scriptId,
2989
+ command: () => {
2990
+ this.showEnvironment = !this.showEnvironment;
2991
+ }
2992
+ },
2993
+ {
2994
+ label: "Metadata",
2995
+ icon: "mdi-calendar",
2996
+ disabled: this.scriptId,
2997
+ command: () => {
2998
+ this.inputMetadata.callback = () => {
2999
+ }, this.showMetadata();
3000
+ }
3001
+ },
3002
+ {
3003
+ label: "Overrides",
3004
+ icon: "mdi-swap-horizontal",
3005
+ command: () => {
3006
+ this.showOverrides = !0;
3007
+ }
3008
+ },
3009
+ {
3010
+ divider: !0
3011
+ },
3012
+ {
3013
+ label: "Syntax Check",
3014
+ icon: "mdi-file-check",
3015
+ disabled: this.scriptId,
3016
+ command: () => {
3017
+ this.syntaxCheck();
3018
+ }
3019
+ },
3020
+ {
3021
+ label: "Mnemonic Check",
3022
+ icon: "mdi-spellcheck",
3023
+ disabled: this.scriptId,
3024
+ command: () => {
3025
+ this.checkMnemonics();
3026
+ }
3027
+ },
3028
+ {
3029
+ label: "Instrumented Script",
3030
+ icon: "mdi-code-braces-box",
3031
+ disabled: this.scriptId,
3032
+ command: () => {
3033
+ this.showInstrumented();
3034
+ }
3035
+ },
3036
+ {
3037
+ label: "Call Stack",
3038
+ icon: "mdi-format-list-numbered",
3039
+ disabled: !this.scriptId,
3040
+ command: () => {
3041
+ this.showCallStack();
3042
+ }
3043
+ },
3044
+ {
3045
+ divider: !0
3046
+ },
3047
+ {
3048
+ label: "Toggle Debug",
3049
+ icon: "mdi-bug",
3050
+ command: () => {
3051
+ this.toggleDebug();
3052
+ }
3053
+ },
3054
+ {
3055
+ label: "Toggle Disconnect",
3056
+ icon: "mdi-connection",
3057
+ disabled: this.scriptId,
3058
+ command: () => {
3059
+ this.toggleDisconnect();
3060
+ }
3061
+ },
3062
+ {
3063
+ label: "Enable Stack Traces",
3064
+ checkbox: !0,
3065
+ checked: this.enableStackTraces,
3066
+ disabled: this.scriptId,
3067
+ command: () => {
3068
+ this.enableStackTraces = !this.enableStackTraces;
3069
+ }
3070
+ },
3071
+ {
3072
+ divider: !0
3073
+ },
3074
+ {
3075
+ label: "Delete All Breakpoints",
3076
+ icon: "mdi-delete-circle-outline",
3077
+ disabled: this.scriptId,
3078
+ command: () => {
3079
+ this.deleteAllBreakpoints();
3080
+ }
3081
+ }
3082
+ ]
3083
+ }
3084
+ ];
3085
+ },
3086
+ executeSelectionMenuItems: function() {
3087
+ return [
3088
+ {
3089
+ label: "Execute selection",
3090
+ command: this.executeSelection
3091
+ },
3092
+ {
3093
+ label: "Run from here",
3094
+ command: this.runFromCursor
3095
+ },
3096
+ {
3097
+ label: "Clear local breakpoints",
3098
+ command: this.clearBreakpoints
3099
+ }
3100
+ ];
3101
+ }
3102
+ },
3103
+ watch: {
3104
+ isLocked: function(t) {
3105
+ this.showEditingToast = t, this.suiteRunner || (this.startOrGoDisabled = t), this.readOnlyUser == !1 && t == !1 ? this.editor.setReadOnly(t) : this.editor.setReadOnly(!0);
3106
+ },
3107
+ fullFilename: function(t) {
3108
+ this.filenameSelect = t, this.inline || (t === P ? localStorage.removeItem("script_runner__filename") : localStorage.script_runner__filename = t);
3109
+ }
3110
+ },
3111
+ created: async function() {
3112
+ this.api = new le(), this.api.ensure_offline_access(), this.api.get_setting("time_zone").then((i) => {
3113
+ i && (this.timeZone = i);
3114
+ }).catch((i) => {
3115
+ }), this.NEW_FILENAME = P;
3116
+ let t = OpenC3Auth.user(), e = OpenC3Auth.userroles();
3117
+ this.readOnlyUser = !0, this.executeUser = !1;
3118
+ for (let i of e)
3119
+ i != "viewer" && (i == "admin" || i == "operator" ? (this.readOnlyUser = !1, this.executeUser = !0) : i == "runner" ? this.executeUser = !0 : await y.get(`/openc3-api/roles/${i}`).then((r) => {
3120
+ r.data !== null && r.data.permissions !== void 0 && (r.data.permissions.some(
3121
+ (s) => s.permission == "script_edit"
3122
+ ) && (this.readOnlyUser = !1), r.data.permissions.some(
3123
+ (s) => s.permission == "script_run"
3124
+ ) && (this.executeUser = !0));
3125
+ }));
3126
+ if (this.inline || (localStorage.script_runner__userinfo = JSON.stringify({
3127
+ name: t.preferred_username,
3128
+ readOnly: this.readOnlyUser,
3129
+ execute: this.executeUser
3130
+ })), this.readOnlyUser == !0) {
3131
+ this.alertType = "info";
3132
+ let i = `User ${t.preferred_username} is read only`;
3133
+ this.executeUser && (i += " but can execute scripts"), this.alertText = i, this.showAlert = !0;
3134
+ }
3135
+ y.get("/openc3-api/autocomplete/keywords/screen").then((i) => {
3136
+ this.screenKeywords = i.data;
3137
+ }), this.inline && (this.readOnly = !0);
3138
+ },
3139
+ mounted: async function() {
3140
+ var r, s;
3141
+ this.editor = ace.edit(this.$refs.editor), this.editor.setTheme("ace/theme/twilight");
3142
+ const t = this.buildRubyMode(), e = this.buildPythonMode();
3143
+ this.rubyMode = new t(), this.pythonMode = new e(), this.editor.session.setMode(this.rubyMode), 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 rs(), new as()], this.editor.setHighlightActiveLine(!1), pe.applyVimModeIfEnabled(this.editor), this.editor.focus(), this.editor.on("guttermousedown", this.toggleBreakpoint), this.editor.session.on("tokenizerUpdate", this.onChange), this.readOnlyUser && (this.editor.setReadOnly(!0), this.editor.renderer.$cursorLayer.element.style.display = "none");
3144
+ const i = new ms(this.editor);
3145
+ this.editor.session.on("change", (o, a) => {
3146
+ i.annotate(o, a), this.updateBreakpoints(o, a);
3147
+ }), this.editor.container.addEventListener("resize", this.doResize), this.editor.container.addEventListener("keydown", this.keydown), window.addEventListener("resize", this.calcHeight), this.calcHeight(), this.cable = new Fe("/script-api/cable"), !this.inline && localStorage.script_runner__recent && (this.recent = JSON.parse(localStorage.script_runner__recent), this.recent = this.recent.map((o) => ({
3148
+ ...o,
3149
+ command: async (a) => {
3150
+ this.filename = a.label, await this.reloadFile();
3151
+ }
3152
+ }))), (r = this.$route.query) != null && r.file ? (this.filename = this.$route.query.file, await this.reloadFile()) : (s = this.$route.params) != null && s.id ? await this.tryLoadRunningScript(this.$route.params.id) : !this.inline && localStorage.script_runner__filename && (this.filename = localStorage.script_runner__filename, await this.reloadFile(!1)), this.updateInterval = setInterval(async () => {
3153
+ this.processReceived();
3154
+ }, 100), this.inline && this.body && (this.editor.setValue(this.body), this.editor.clearSelection());
3155
+ },
3156
+ beforeUnmount() {
3157
+ this.editor.destroy(), this.editor.container.remove();
3158
+ },
3159
+ unmounted() {
3160
+ this.unlockFile(), this.updateInterval != null && clearInterval(this.updateInterval), this.subscription && (this.subscription.unsubscribe(), this.subscription = null), this.cable.disconnect();
3161
+ },
3162
+ beforeRouteUpdate: function(t, e, i) {
3163
+ t.params.id ? this.tryLoadRunningScript(t.params.id).then(i) : i();
3164
+ },
3165
+ methods: {
3166
+ toggleVimMode() {
3167
+ pe.toggleVimMode(this.editor);
3168
+ },
3169
+ doResize() {
3170
+ this.editor.resize(), this.$nextTick(() => {
3171
+ this.calcHeight();
3172
+ });
3173
+ },
3174
+ calcHeight() {
3175
+ const t = document.getElementsByClassName("editorbox")[0], e = Math.max(
3176
+ document.documentElement.offsetHeight,
3177
+ window.innerHeight || 0
3178
+ );
3179
+ let i = 0;
3180
+ t && (i = t.offsetHeight);
3181
+ let r = 0;
3182
+ const s = document.getElementsByClassName("suite-runner")[0];
3183
+ s && (r = s.offsetHeight);
3184
+ let o = document.getElementById("script-log-messages");
3185
+ o && (o.style.height = `${e - i - r}px`);
3186
+ },
3187
+ scriptDisconnect() {
3188
+ this.subscription && (this.subscription.unsubscribe(), this.subscription = null), this.receivedEvents.length = 0;
3189
+ },
3190
+ showMetadata() {
3191
+ y.get("/openc3-api/metadata").then((t) => {
3192
+ this.inputMetadata.events = t.data.map((e) => ({
3193
+ name: "Metadata",
3194
+ start: new Date(e.start * 1e3),
3195
+ end: new Date(e.start * 1e3),
3196
+ color: e.color,
3197
+ type: e.type,
3198
+ timed: !0,
3199
+ metadata: e
3200
+ })), this.inputMetadata.show = !0;
3201
+ });
3202
+ },
3203
+ messageSortOrder(t) {
3204
+ t === "Newest on Top" && this.messagesNewestOnTop === !1 ? (this.messagesNewestOnTop = !0, this.messages.reverse()) : t === "Newest on Bottom" && this.messagesNewestOnTop === !0 && (this.messagesNewestOnTop = !1, this.messages.reverse());
3205
+ },
3206
+ // This only gets called when the user changes the filename dropdown
3207
+ // Or when a user hits Go
3208
+ fileNameChanged(t) {
3209
+ t = t.split("*")[0], this.editor.setValue(this.files[t].content), this.restoreBreakpoints(t), this.editor.clearSelection(), this.removeAllMarkers(), this.editor.session.addMarker(
3210
+ new this.Range(
3211
+ this.files[t].lineNo - 1,
3212
+ 0,
3213
+ this.files[t].lineNo - 1,
3214
+ 1
3215
+ ),
3216
+ `${this.state}Marker`,
3217
+ "fullLine"
3218
+ ), this.editor.gotoLine(this.files[t].lineNo);
3219
+ },
3220
+ tryLoadRunningScript: function(t) {
3221
+ return y.get("/script-api/running-script").then((e) => {
3222
+ const i = e.data.find(
3223
+ (r) => `${r.id}` == `${t}`
3224
+ );
3225
+ i ? (this.filename = i.name, this.tryLoadSuites(), this.initScriptStart(), this.scriptStart(i.id)) : (this.$notify.caution({
3226
+ title: `Running Script ${t} not found`,
3227
+ body: "Check the Completed Scripts below ..."
3228
+ }), this.showScripts = !0);
3229
+ });
3230
+ },
3231
+ tryLoadSuites: function() {
3232
+ y.get(`/script-api/scripts/${this.filename}`).then((t) => {
3233
+ t.data.suites && (this.startOrGoDisabled = !0, this.suiteRunner = !0, this.suiteMap = JSON.parse(t.data.suites)), t.data.error && (this.suiteError = t.data.error, this.showSuiteError = !0), this.disableSuiteButtons = t.data.success == !1, this.doResize();
3234
+ });
3235
+ },
3236
+ showExecuteSelectionMenu: function(t) {
3237
+ this.menuX = t.pageX, this.menuY = t.pageY, this.executeSelectionMenu = !0;
3238
+ },
3239
+ runFromCursor: function() {
3240
+ const t = this.editor.getCursorPosition().row, e = this.editor.session.doc.getLines(t, this.editor.session.doc.getLength()).join(`
3241
+ `), i = this.getBreakpointRows().filter((r) => r >= t).map((r) => r - t);
3242
+ this.executeText(e, i);
3243
+ },
3244
+ executeSelection: function() {
3245
+ const t = this.editor.getSelectedText(), e = this.editor.getSelectionRange(), i = this.getBreakpointRows().filter((r) => r <= e.end.row && r >= e.start.row).map((r) => r - e.start.row);
3246
+ this.executeText(t, i);
3247
+ },
3248
+ async executeText(t, e = []) {
3249
+ let i = this.fullFilename.split(".").pop();
3250
+ i.includes(" *") && (i = i.split(" *")[0]), i !== "rb" && i !== "py" && (i = "rb");
3251
+ const r = ie + "/" + q(Date.now(), "yyyy_MM_dd_HH_mm_ss_SSS") + `_temp.${i}`;
3252
+ await y.post(`/script-api/scripts/${r}`, {
3253
+ data: {
3254
+ text: t,
3255
+ breakpoints: e
3256
+ }
3257
+ }).then((s) => {
3258
+ let o = this.scriptEnvironment.env;
3259
+ return this.enableStackTraces && (o = o.concat({
3260
+ key: "OPENC3_FULL_BACKTRACE",
3261
+ value: "1"
3262
+ })), y.post(`/script-api/scripts/${r}/run`, {
3263
+ data: {
3264
+ environment: o
3265
+ }
3266
+ });
3267
+ }).then((s) => {
3268
+ window.open(`/tools/scriptrunner/${s.data}`);
3269
+ });
3270
+ },
3271
+ clearBreakpoints: function() {
3272
+ this.editor.session.clearBreakpoints();
3273
+ },
3274
+ toggleBreakpoint: function(t) {
3275
+ if (!this.scriptId) {
3276
+ const e = t.getDocumentPosition().row;
3277
+ t.editor.session.getBreakpoints(e, 0)[e] ? t.editor.session.clearBreakpoint(e) : t.editor.session.setBreakpoint(e);
3278
+ }
3279
+ },
3280
+ updateBreakpoints: function(t, e) {
3281
+ if (t.lines.length <= 1)
3282
+ return;
3283
+ const i = this.getBreakpointRows(e).filter(
3284
+ (o) => t.start.column === 0 && o === t.start.row || o > t.start.row
3285
+ );
3286
+ let r = [], s = 0;
3287
+ switch (t.action) {
3288
+ case "insert":
3289
+ s = t.lines.length - 1, i.reverse();
3290
+ break;
3291
+ case "remove":
3292
+ s = -t.lines.length + 1, r = [...Array(t.lines.length).keys()].map(
3293
+ (o) => o + t.start.row
3294
+ );
3295
+ break;
3296
+ }
3297
+ i.forEach((o) => {
3298
+ e.clearBreakpoint(o), r.includes(o) || e.setBreakpoint(o + s);
3299
+ });
3300
+ },
3301
+ getBreakpointRows: function(t = this.editor.session) {
3302
+ return t.getBreakpoints().map((e, i) => e && i).filter(Number.isInteger);
3303
+ },
3304
+ restoreBreakpoints: function(t) {
3305
+ var e;
3306
+ this.clearBreakpoints(), (e = this.breakpoints[t]) == null || e.forEach((i) => {
3307
+ this.editor.session.setBreakpoint(i);
3308
+ });
3309
+ },
3310
+ deleteAllBreakpoints: function() {
3311
+ this.$dialog.confirm("Permanently delete all breakpoints for ALL scripts?", {
3312
+ okText: "Delete",
3313
+ cancelText: "Cancel"
3314
+ }).then((t) => y.delete("/script-api/breakpoints/delete/all")).then((t) => {
3315
+ this.clearBreakpoints();
3316
+ });
3317
+ },
3318
+ suiteRunnerButton(t) {
3319
+ this.startOrGoButton === ne ? this.start(t, "suiteRunner") : this.go(t, "suiteRunner");
3320
+ },
3321
+ async keydown(t) {
3322
+ this.scriptId || this.editor.getReadOnly() === !0 || (t.metaKey || t.ctrlKey) && t.keyCode === 83 && (t.shiftKey ? (t.preventDefault(), this.saveAs()) : (t.preventDefault(), await this.saveFile()));
3323
+ },
3324
+ onChange(t) {
3325
+ this.scriptId || this.editor.getReadOnly() === !0 || (this.editor.session.getUndoManager().canUndo() ? this.fileModified = "*" : this.fileModified = "");
3326
+ },
3327
+ checkMnemonics: function() {
3328
+ this.mnemonicChecker.checkText(this.editor.getValue()).then(({ skipped: t, problems: e }) => {
3329
+ let i = "";
3330
+ if (e.length) {
3331
+ const r = e.map((s) => `${s.lineNumber}: ${s.error}`).join("<br/>");
3332
+ i += `<strong>The following lines have problems:</strong><br/>${r}<br/><br/>`;
3333
+ }
3334
+ t.length && (i += "<strong>Mnemonics with string interpolation were not checked.</strong>"), i === "" && (i = "<strong>Everything looks good!</strong>"), this.$dialog.alert(i.trim(), { html: !0 });
3335
+ });
3336
+ },
3337
+ initScriptStart() {
3338
+ this.disableSuiteButtons = !0, this.startOrGoDisabled = !0, this.envDisabled = !0, this.pauseOrRetryDisabled = !0, this.stopDisabled = !0, this.state = "Connecting...", this.startOrGoButton = hs, this.editor.setReadOnly(!0);
3339
+ },
3340
+ scriptStart(t) {
3341
+ this.scriptId = t, this.cable.createSubscription(
3342
+ "RunningScriptChannel",
3343
+ window.openc3Scope,
3344
+ {
3345
+ received: (e) => this.received(e)
3346
+ },
3347
+ {
3348
+ id: this.scriptId
3349
+ }
3350
+ ).then((e) => {
3351
+ this.subscription = e;
3352
+ });
3353
+ },
3354
+ async scriptComplete() {
3355
+ this.state = "stopped", this.fatal = !1, this.scriptId = null, this.currentFilename = null, this.files = {}, this.subscription && (await this.subscription.unsubscribe(), this.subscription = null), this.receivedEvents.length = 0, await this.reloadFile(), this.editor.session.getUndoManager().reset(), this.readOnlyUser == !1 && this.editor.setReadOnly(!1), this.disableSuiteButtons = !1, this.startOrGoButton = ne, this.pauseOrRetryButton = H, this.startOrGoDisabled = this.suiteRunner, this.envDisabled = !1, this.pauseOrRetryDisabled = !0, this.stopDisabled = !0;
3356
+ },
3357
+ environmentHandler: function(t) {
3358
+ this.scriptEnvironment.env = t;
3359
+ },
3360
+ startHandler: function() {
3361
+ this.start();
3362
+ },
3363
+ async start(t, e = null) {
3364
+ this.initScriptStart(), await this.saveFile("start"), this.saveAllowed = !1;
3365
+ let i = this.filename;
3366
+ this.filename === P && (i = this.tempFilename);
3367
+ let r = `/script-api/scripts/${i}/run`;
3368
+ this.showDisconnect && (r += "/disconnect");
3369
+ let s = this.scriptEnvironment.env;
3370
+ this.enableStackTraces && (s = s.concat({
3371
+ key: "OPENC3_FULL_BACKTRACE",
3372
+ value: "1"
3373
+ }));
3374
+ let o = {
3375
+ environment: s
3376
+ };
3377
+ e && (o.suiteRunner = t), y.post(r, { data: o }).then((a) => {
3378
+ this.scriptStart(a.data);
3379
+ }).catch((a) => {
3380
+ this.scriptComplete();
3381
+ });
3382
+ },
3383
+ go() {
3384
+ this.filenameSelect = this.currentFilename, this.fileNameChanged(this.currentFilename), y.post(`/script-api/running-script/${this.scriptId}/go`);
3385
+ },
3386
+ pauseOrRetry() {
3387
+ this.pauseOrRetryButton === H ? y.post(`/script-api/running-script/${this.scriptId}/pause`) : (this.pauseOrRetryButton = H, y.post(`/script-api/running-script/${this.scriptId}/retry`));
3388
+ },
3389
+ stop() {
3390
+ this.fatal ? (this.removeAllMarkers(), this.scriptComplete()) : y.post(`/script-api/running-script/${this.scriptId}/stop`);
3391
+ },
3392
+ step() {
3393
+ y.post(`/script-api/running-script/${this.scriptId}/step`);
3394
+ },
3395
+ // This is called by processLine no matter the current state
3396
+ handleWaiting() {
3397
+ if (this.state !== "waiting" && this.state !== "paused")
3398
+ this.clearWaiting();
3399
+ else if (this.waitingInterval !== null)
3400
+ return;
3401
+ this.waitingStart = Date.now(), this.waitingInterval = setInterval(() => {
3402
+ this.waitingTime = Math.round((Date.now() - this.waitingStart) / 1e3);
3403
+ }, 1e3);
3404
+ },
3405
+ clearWaiting() {
3406
+ this.waitingTime = 0, clearInterval(this.waitingInterval), this.waitingInterval = null;
3407
+ },
3408
+ processLine(t) {
3409
+ t.filename && t.filename !== this.currentFilename && (this.files[t.filename] ? (this.currentFilename = t.filename, this.editor.setValue(this.files[t.filename].content), this.restoreBreakpoints(t.filename), this.editor.clearSelection()) : (this.files[t.filename] = { content: "", lineNo: 0 }, y.get(`/script-api/scripts/${t.filename}`).then((i) => {
3410
+ this.files[t.filename] = {
3411
+ content: i.data.contents,
3412
+ lineNo: 0
3413
+ }, this.breakpoints[t.filename] = i.data.breakpoints, this.restoreBreakpoints(t.filename), this.currentFilename = null;
3414
+ }).catch((i) => {
3415
+ this.files[t.filename] = null;
3416
+ }))), this.state = t.state;
3417
+ const e = this.editor.session.getMarkers();
3418
+ switch (this.state) {
3419
+ case "running":
3420
+ this.handleWaiting(), this.startOrGoDisabled = !1, this.pauseOrRetryDisabled = !1, this.stopDisabled = !1, this.pauseOrRetryButton = H, this.removeAllMarkers(), this.editor.session.addMarker(
3421
+ new this.Range(t.line_no - 1, 0, t.line_no - 1, 1),
3422
+ "runningMarker",
3423
+ "fullLine"
3424
+ ), this.editor.gotoLine(t.line_no), this.files[t.filename].lineNo = t.line_no;
3425
+ break;
3426
+ case "fatal":
3427
+ this.fatal = !0;
3428
+ // Deliberate fall through (no break)
3429
+ case "error":
3430
+ this.pauseOrRetryButton = fs;
3431
+ // Deliberate fall through (no break)
3432
+ case "breakpoint":
3433
+ case "waiting":
3434
+ case "paused":
3435
+ if (this.handleWaiting(), this.state == "fatal" ? (this.startOrGoDisabled = !0, this.pauseOrRetryDisabled = !0) : (this.startOrGoDisabled = !1, this.pauseOrRetryDisabled = !1), this.stopDisabled = !1, Object.keys(e).filter(
3436
+ (r) => e[r].clazz === `${this.state}Marker`
3437
+ ).length === 0) {
3438
+ this.removeAllMarkers();
3439
+ let r = t.line_no > 0 ? t.line_no : 1;
3440
+ this.editor.session.addMarker(
3441
+ new this.Range(r - 1, 0, r - 1, 1),
3442
+ `${this.state}Marker`,
3443
+ "fullLine"
3444
+ ), this.editor.gotoLine(r), t.filename && (this.files[t.filename].lineNo = r);
3445
+ }
3446
+ break;
3447
+ }
3448
+ },
3449
+ processReceived() {
3450
+ let t = 0;
3451
+ for (let e of this.receivedEvents) {
3452
+ t += 1;
3453
+ let i = 0;
3454
+ switch (e.type) {
3455
+ case "file":
3456
+ this.files[e.filename] = { content: e.text, lineNo: 0 }, this.breakpoints[e.filename] = e.breakpoints, this.currentFilename === e.filename && this.restoreBreakpoints(e.filename);
3457
+ break;
3458
+ case "line":
3459
+ this.processLine(e);
3460
+ break;
3461
+ case "output":
3462
+ for (const a of e.line.split(`
3463
+ `))
3464
+ a && (this.messagesNewestOnTop ? this.messages.unshift({ message: a }) : this.messages.push({ message: a }));
3465
+ for (; this.messages.length > this.maxArrayLength; )
3466
+ this.messages.pop();
3467
+ break;
3468
+ case "script":
3469
+ this.handleScript(e);
3470
+ break;
3471
+ case "report":
3472
+ this.results.text = e.report, this.results.show = !0;
3473
+ break;
3474
+ case "complete":
3475
+ this.fatal || (this.removeAllMarkers(), this.scriptComplete());
3476
+ break;
3477
+ case "step":
3478
+ this.showDebug = !0;
3479
+ break;
3480
+ case "screen":
3481
+ let r = !1, s = {};
3482
+ for (screen of this.screens) {
3483
+ if (screen.target == e.target_name && screen.screen == e.screen_name) {
3484
+ s = screen, r = !0;
3485
+ break;
3486
+ }
3487
+ i += 1;
3488
+ }
3489
+ s.target = e.target_name, s.screen = e.screen_name, s.definition = e.definition, e.x ? s.left = e.x : s.left = 0, e.y ? s.top = e.y : s.top = 0, s.count = this.updateCounter++, r ? this.screens[i] = s : (s.id = this.idCounter++, this.screens[this.screens.length] = s);
3490
+ break;
3491
+ case "clearscreen":
3492
+ for (screen of this.screens) {
3493
+ if (screen.target == e.target_name && screen.screen == e.screen_name) {
3494
+ this.screens.splice(i, 1);
3495
+ break;
3496
+ }
3497
+ i += 1;
3498
+ }
3499
+ break;
3500
+ case "clearallscreens":
3501
+ this.screens = [];
3502
+ break;
3503
+ case "downloadfile":
3504
+ const o = document.createElement("a");
3505
+ o.href = window.location.origin + e.url, o.setAttribute("download", e.filename), o.click();
3506
+ break;
3507
+ }
3508
+ }
3509
+ this.receivedEvents.splice(0, t);
3510
+ },
3511
+ received(t) {
3512
+ this.cable.recordPing(), this.receivedEvents.push(t);
3513
+ },
3514
+ promptDialogCallback(t) {
3515
+ this.prompt.show = !1, y.post(`/script-api/running-script/${this.scriptId}/prompt`, {
3516
+ data: {
3517
+ method: this.prompt.method,
3518
+ answer: t,
3519
+ prompt_id: this.activePromptId,
3520
+ multiple: this.prompt.multiple
3521
+ }
3522
+ });
3523
+ },
3524
+ handleScript(t) {
3525
+ if (t.prompt_complete) {
3526
+ this.activePromptId = "", this.prompt.show = !1, this.ask.show = !1;
3527
+ return;
3528
+ }
3529
+ switch (this.activePromptId = t.prompt_id, this.prompt.method = t.method, this.prompt.layout = "horizontal", this.prompt.title = "Prompt", this.prompt.subtitle = "", this.prompt.details = "", this.prompt.buttons = [], this.prompt.multiple = null, t.method) {
3530
+ case "ask":
3531
+ case "ask_string":
3532
+ this.ask.default = null, this.ask.answerRequired = !0, this.ask.password = !1, this.ask.question = t.args[0], t.args[1] && t.args[1] !== !0 && t.args[1] !== !1 ? this.ask.default = t.args[1].toString() : t.args[1] === !0 && (this.ask.answerRequired = !1), t.args[2] === !0 && (this.ask.password = !0), this.ask.callback = (e) => {
3533
+ this.ask.show = !1, this.ask.password ? y.post(`/script-api/running-script/${this.scriptId}/prompt`, {
3534
+ data: {
3535
+ method: t.method,
3536
+ password: e,
3537
+ // Using password as a key automatically filters it from rails logs
3538
+ prompt_id: this.activePromptId
3539
+ }
3540
+ }) : y.post(`/script-api/running-script/${this.scriptId}/prompt`, {
3541
+ data: {
3542
+ method: t.method,
3543
+ answer: e,
3544
+ prompt_id: this.activePromptId
3545
+ }
3546
+ });
3547
+ }, this.ask.show = !0;
3548
+ break;
3549
+ case "prompt_for_hazardous":
3550
+ this.prompt.title = "Hazardous Command", this.prompt.message = `Warning: Command ${t.args[0]} ${t.args[1]} is Hazardous. `, t.args[2] && (this.prompt.message += t.args[2] + " "), this.prompt.message += "Send?", this.prompt.buttons = [{ text: "Send", value: "Send" }], this.prompt.callback = this.promptDialogCallback, this.prompt.show = !0;
3551
+ break;
3552
+ case "prompt_for_critical_cmd":
3553
+ this.criticalCmdUuid = t.args[0], this.criticalCmdString = t.args[5], this.criticalCmdUser = t.args[1], this.displayCriticalCmd = !0;
3554
+ break;
3555
+ case "prompt":
3556
+ t.kwargs && t.kwargs.informative && (this.prompt.subtitle = t.kwargs.informative), t.kwargs && t.kwargs.details && (this.prompt.details = t.kwargs.details), this.prompt.message = t.args[0], this.prompt.buttons = [{ text: "Ok", value: "Ok" }], this.prompt.callback = this.promptDialogCallback, this.prompt.show = !0;
3557
+ break;
3558
+ case "combo_box":
3559
+ t.kwargs && t.kwargs.informative && (this.prompt.subtitle = t.kwargs.informative), t.kwargs && t.kwargs.details && (this.prompt.details = t.kwargs.details), t.kwargs && t.kwargs.multiple && (this.prompt.multiple = !0), this.prompt.message = t.args[0], t.args.slice(1).forEach((e) => {
3560
+ this.prompt.buttons.push({ title: e, value: e });
3561
+ }), this.prompt.layout = "combo", this.prompt.callback = this.promptDialogCallback, this.prompt.show = !0;
3562
+ break;
3563
+ case "message_box":
3564
+ case "vertical_message_box":
3565
+ t.kwargs && t.kwargs.informative && (this.prompt.subtitle = t.kwargs.informative), t.kwargs && t.kwargs.details && (this.prompt.details = t.kwargs.details), this.prompt.message = t.args[0], t.args.slice(1).forEach((e) => {
3566
+ this.prompt.buttons.push({ text: e, value: e });
3567
+ }), t.method.includes("vertical") && (this.prompt.layout = "vertical"), this.prompt.callback = this.promptDialogCallback, this.prompt.show = !0;
3568
+ break;
3569
+ case "backtrace":
3570
+ this.information.title = "Call Stack", this.information.text = t.args, this.information.show = !0, this.information.width = "600";
3571
+ break;
3572
+ case "metadata_input":
3573
+ this.inputMetadata.callback = (e) => {
3574
+ this.inputMetadata.show = !1, y.post(`/script-api/running-script/${this.scriptId}/prompt`, {
3575
+ data: {
3576
+ method: t.method,
3577
+ answer: e,
3578
+ prompt_id: this.activePromptId
3579
+ }
3580
+ });
3581
+ }, this.showMetadata();
3582
+ break;
3583
+ // This is called continuously by the backend
3584
+ case "open_file_dialog":
3585
+ case "open_files_dialog":
3586
+ this.file.title = t.args[0], this.file.message = t.args[1], t.kwargs && t.kwargs.filter && (this.file.filter = t.kwargs.filter), t.method == "open_files_dialog" && (this.file.multiple = !0), this.file.show = !0;
3587
+ break;
3588
+ }
3589
+ },
3590
+ async fileDialogCallback(t) {
3591
+ let e = "Cancel", i = [];
3592
+ t != "Cancel" && (e = [], t.forEach((r) => {
3593
+ e.push(r.name), i.push(
3594
+ y.get(
3595
+ `/openc3-api/storage/upload/${encodeURIComponent(
3596
+ `${window.openc3Scope}/tmp/${r.name}`
3597
+ )}?bucket=OPENC3_CONFIG_BUCKET`
3598
+ ).then((s) => {
3599
+ i.push(
3600
+ Ke({
3601
+ ...s.data,
3602
+ data: r
3603
+ })
3604
+ );
3605
+ })
3606
+ );
3607
+ })), Promise.all(i).then((r) => {
3608
+ y.post(`/script-api/running-script/${this.scriptId}/prompt`, {
3609
+ data: {
3610
+ method: this.file.multiple ? "open_files_dialog" : "open_file_dialog",
3611
+ answer: e,
3612
+ prompt_id: this.activePromptId
3613
+ }
3614
+ }).then((s) => {
3615
+ this.file.show = !1;
3616
+ });
3617
+ });
3618
+ },
3619
+ setError(t) {
3620
+ this.alertType = "error", this.alertText = `Error: ${t}`, this.showAlert = !0;
3621
+ },
3622
+ // ScriptRunner File menu actions
3623
+ newFile() {
3624
+ this.unlockFile(), this.filename = P, this.currentFilename = null, this.tempFilename = null, this.files = {}, this.editor.session.setValue(""), this.saveAllowed = !0, this.fileModified = "", this.suiteRunner = !1, this.startOrGoDisabled = !1, this.envDisabled = !1, this.inline || (this.$router.replace({
3625
+ name: "ScriptRunner"
3626
+ }).catch((t) => {
3627
+ }), document.title = "Script Runner"), this.doResize();
3628
+ },
3629
+ async newRubyTestSuite() {
3630
+ this.newFile(), this.editor.session.setValue(`require 'openc3/script/suite.rb'
3631
+
3632
+ # Group class name should indicate what the scripts are testing
3633
+ class Power < OpenC3::Group
3634
+ # Methods beginning with script_ are added to Script dropdown
3635
+ def script_power_on
3636
+ # Using OpenC3::Group.puts adds the output to the Test Report
3637
+ # This can be useful for requirements verification, QA notes, etc
3638
+ OpenC3::Group.puts "Verifying requirement SR-1"
3639
+ configure()
3640
+ end
3641
+
3642
+ # Other methods are not added to Script dropdown
3643
+ def configure
3644
+ end
3645
+
3646
+ def setup
3647
+ # Run when Group Setup button is pressed
3648
+ # Run before all scripts when Group Start is pressed
3649
+ end
3650
+
3651
+ def teardown
3652
+ # Run when Group Teardown button is pressed
3653
+ # Run after all scripts when Group Start is pressed
3654
+ end
3655
+ end
3656
+
3657
+ class TestSuite < OpenC3::Suite
3658
+ def initialize
3659
+ add_group('Power')
3660
+ end
3661
+ def setup
3662
+ # Run when Suite Setup button is pressed
3663
+ # Run before all groups when Suite Start is pressed
3664
+ end
3665
+ def teardown
3666
+ # Run when Suite Teardown button is pressed
3667
+ # Run after all groups when Suite Start is pressed
3668
+ end
3669
+ end
3670
+ `), await this.saveFile("auto");
3671
+ },
3672
+ async newPythonTestSuite() {
3673
+ this.newFile(), this.editor.session.setValue(`from openc3.script.suite import Suite, Group
3674
+
3675
+ # Group class name should indicate what the scripts are testing
3676
+ class Power(Group):
3677
+ # Methods beginning with script_ are added to Script dropdown
3678
+ def script_power_on(self):
3679
+ # Using Group.print adds the output to the Test Report
3680
+ # This can be useful for requirements verification, QA notes, etc
3681
+ Group.print("Verifying requirement SR-1")
3682
+ self.configure()
3683
+
3684
+ # Other methods are not added to Script dropdown
3685
+ def configure(self):
3686
+ pass
3687
+
3688
+ def setup(self):
3689
+ # Run when Group Setup button is pressed
3690
+ # Run before all scripts when Group Start is pressed
3691
+ pass
3692
+
3693
+ def teardown(self):
3694
+ # Run when Group Teardown button is pressed
3695
+ # Run after all scripts when Group Start is pressed
3696
+ pass
3697
+
3698
+ class TestSuite(Suite):
3699
+ def __init__(self):
3700
+ self.add_group(Power)
3701
+
3702
+ def setup(self):
3703
+ # Run when Suite Setup button is pressed
3704
+ # Run before all groups when Suite Start is pressed
3705
+ pass
3706
+
3707
+ def teardown(self):
3708
+ # Run when Suite Teardown button is pressed
3709
+ # Run after all groups when Suite Start is pressed
3710
+ pass
3711
+ `), await this.saveFile("auto");
3712
+ },
3713
+ addToRecent(t) {
3714
+ let e = this.recent.findIndex((i) => i.label === t);
3715
+ e !== -1 && this.recent.splice(e, 1), this.recent.unshift({
3716
+ label: t,
3717
+ icon: Qe(t),
3718
+ command: async (i) => {
3719
+ this.filename = i.label, await this.reloadFile();
3720
+ }
3721
+ }), this.recent.length > 8 && this.recent.pop(), this.inline || (localStorage.script_runner__recent = JSON.stringify(this.recent));
3722
+ },
3723
+ removeFromRecent(t) {
3724
+ this.recent = this.recent.filter((e) => e.label !== t), this.inline || (localStorage.script_runner__recent = JSON.stringify(this.recent), localStorage.script_runner__filename === t && localStorage.removeItem("script_runner__filename"));
3725
+ },
3726
+ openFile() {
3727
+ this.fileOpen = !0;
3728
+ },
3729
+ async reloadFile(t = !0) {
3730
+ this.saveAllowed = !1, this.startOrGoDisabled = !0, await y.get(`/script-api/scripts/${this.filename}`, {
3731
+ headers: {
3732
+ Accept: "application/json",
3733
+ "Ignore-Errors": "404"
3734
+ }
3735
+ }).then((e) => {
3736
+ const i = {
3737
+ name: this.filename,
3738
+ contents: e.data.contents
3739
+ };
3740
+ e.data.suites && (i.suites = JSON.parse(e.data.suites)), e.data.error && (i.error = e.data.error), e.data.success && (i.success = e.data.success);
3741
+ const r = e.data.locked, s = e.data.breakpoints;
3742
+ this.setFile({ file: i, locked: r, breakpoints: s }, !0), this.saveAllowed = !0;
3743
+ }).catch((e) => {
3744
+ t === !0 && this.$notify.caution({
3745
+ title: "File Open Error",
3746
+ body: `Failed to open ${this.filename} due to ${e}`
3747
+ }), this.removeFromRecent(this.filename), this.newFile();
3748
+ });
3749
+ },
3750
+ // Called by the FileOpenDialog to set the file contents
3751
+ setFile({ file: t, locked: e, breakpoints: i }, r = !1) {
3752
+ this.files = {};
3753
+ let s = t.name.split("*")[0];
3754
+ if (r === !1 && this.filename !== s && (this.unlockFile(), this.lockedBy = e), this.filename = s, !this.inline) {
3755
+ this.$router.replace({
3756
+ name: "ScriptRunner",
3757
+ query: {
3758
+ file: this.filename
3759
+ }
3760
+ }).catch((a) => {
3761
+ });
3762
+ let o = this.filename.split("/");
3763
+ document.title = `${o.pop()} (${o.join("/")})`;
3764
+ }
3765
+ this.filename.split(".").pop() === "py" ? this.editor.session.setMode(this.pythonMode) : this.editor.session.setMode(this.rubyMode), this.currentFilename = null, this.editor.session.setValue(t.contents), this.breakpoints[this.filename] = i, this.restoreBreakpoints(this.filename), this.fileModified = "", this.envDisabled = !1, this.addToRecent(this.filename), t.suites ? (this.suiteRunner = !0, this.suiteMap = t.suites, this.startOrGoDisabled = !0) : (this.suiteRunner = !1, this.startOrGoDisabled = !1), t.error && (this.suiteError = t.error, this.showSuiteError = !0), this.disableSuiteButtons = t.success == !1, this.doResize();
3766
+ },
3767
+ clearTemp() {
3768
+ this.recent = this.recent.filter(
3769
+ (t) => !t.label.includes("__TEMP__")
3770
+ ), this.inline || (localStorage.script_runner__recent = JSON.stringify(this.recent));
3771
+ },
3772
+ detectLanguage() {
3773
+ let t = new RegExp("^\\s*(require|load|puts) "), e = new RegExp("^\\s*(import|from) "), i = new RegExp("^\\s*end\\s*$"), r = new RegExp(
3774
+ "^\\s*(if|def|while|else|elif|class).*:\\s*$"
3775
+ ), s = new RegExp('\\(f"'), a = this.editor.getValue().split(`
3776
+ `);
3777
+ for (let p of a) {
3778
+ if (p.match(t))
3779
+ return "ruby";
3780
+ if (p.match(e))
3781
+ return "python";
3782
+ if (p.match(i))
3783
+ return "ruby";
3784
+ if (p.match(r) || p.match(s))
3785
+ return "python";
3786
+ }
3787
+ return "unknown";
3788
+ },
3789
+ // saveFile takes a type to indicate if it was called by the Menu
3790
+ // or automatically by 'Start' (to ensure a consistent backend file) or autoSave
3791
+ async saveFile(t = "menu") {
3792
+ if (!this.readOnlyUser)
3793
+ if (this.saveAllowed) {
3794
+ const e = this.getBreakpointRows();
3795
+ if (this.filename === P) {
3796
+ if (t === "menu") {
3797
+ this.saveAs();
3798
+ return;
3799
+ } else if (this.tempFilename === null) {
3800
+ let i = this.detectLanguage();
3801
+ if (i === "ruby" || t !== "auto" && i == "unknown")
3802
+ this.tempFilename = ie + "/" + q(Date.now(), "yyyy_MM_dd_HH_mm_ss_SSS") + "_temp.rb";
3803
+ else if (i === "python")
3804
+ this.tempFilename = ie + "/" + q(Date.now(), "yyyy_MM_dd_HH_mm_ss_SSS") + "_temp.py";
3805
+ else
3806
+ return;
3807
+ this.filename = this.tempFilename, this.addToRecent(this.filename);
3808
+ }
3809
+ }
3810
+ this.showSave = !0, await y.post(`/script-api/scripts/${this.filename}`, {
3811
+ data: {
3812
+ text: this.editor.getValue(),
3813
+ // Pass in the raw file text
3814
+ breakpoints: e
3815
+ }
3816
+ }).then((i) => {
3817
+ i.status == 200 ? (i.data.suites ? (this.startOrGoDisabled = !0, this.suiteRunner = !0, this.suiteMap = JSON.parse(i.data.suites)) : (this.startOrGoDisabled = !1, this.suiteRunner = !1, this.suiteMap = {}), i.data.error && (this.suiteError = i.data.error, this.showSuiteError = !0), this.fileModified = "", setTimeout(() => {
3818
+ this.showSave = !1;
3819
+ }, 2e3)) : (this.showSave = !1, this.alertType = "error", this.alertText = `Error saving file. Code: ${i.status} Text: ${i.statusText}`, this.showAlert = !0), this.lockFile(), this.doResize();
3820
+ }).catch(({ response: i }) => {
3821
+ this.showSave = !1, i.status == 422 ? (this.alertType = "error", this.alertText = i.data.suites) : (this.alertType = "error", this.alertText = `Error saving file. Code: ${i.status} Text: ${i.statusText}`), this.showAlert = !0;
3822
+ });
3823
+ } else
3824
+ this.setError("Attempt to save file when not allowed");
3825
+ },
3826
+ saveAs() {
3827
+ this.showSaveAs = !0;
3828
+ },
3829
+ async saveAsFilename(t) {
3830
+ this.filename = t.split("*")[0], this.currentFilename = null, this.tempFilename && (y.post(`/script-api/scripts/${this.tempFilename}/delete`), this.tempFilename = null), await this.saveFile("menu");
3831
+ },
3832
+ delete() {
3833
+ let t = this.filename;
3834
+ this.tempFilename && (t = this.tempFilename), this.$dialog.confirm(`Permanently delete file: ${t}`, {
3835
+ okText: "Delete",
3836
+ cancelText: "Cancel"
3837
+ }).then((e) => y.post(`/script-api/scripts/${t}/delete`, {
3838
+ data: {}
3839
+ })).then((e) => {
3840
+ this.removeFromRecent(t), this.newFile();
3841
+ }).catch((e) => {
3842
+ if (e !== !0) {
3843
+ const i = {
3844
+ text: `Failed Multi-Delete. ${e}`,
3845
+ type: "error"
3846
+ };
3847
+ this.$emit("alert", i);
3848
+ }
3849
+ });
3850
+ },
3851
+ download() {
3852
+ const t = new Blob([this.editor.getValue()], {
3853
+ type: "text/plain"
3854
+ }), e = document.createElement("a");
3855
+ e.href = URL.createObjectURL(t), e.setAttribute("download", this.filename), e.click();
3856
+ },
3857
+ // ScriptRunner Script menu actions
3858
+ syntaxCheck() {
3859
+ y.post(`/script-api/scripts/${this.filename}/syntax`, {
3860
+ data: this.editor.getValue(),
3861
+ headers: {
3862
+ Accept: "application/json",
3863
+ "Content-Type": "plain/text"
3864
+ }
3865
+ }).then((t) => {
3866
+ this.information.title = t.data.title, this.information.text = JSON.parse(t.data.description), this.information.show = !0, this.information.width = "600";
3867
+ });
3868
+ },
3869
+ showInstrumented() {
3870
+ y.post(`/script-api/scripts/${this.filename}/instrumented`, {
3871
+ data: this.editor.getValue(),
3872
+ headers: {
3873
+ Accept: "application/json",
3874
+ "Content-Type": "plain/text"
3875
+ }
3876
+ }).then((t) => {
3877
+ this.information.title = t.data.title, this.information.text = JSON.parse(t.data.description), this.information.show = !0, this.information.width = "90vw";
3878
+ });
3879
+ },
3880
+ showCallStack() {
3881
+ y.post(`/script-api/running-script/${this.scriptId}/backtrace`);
3882
+ },
3883
+ toggleDebug() {
3884
+ this.showDebug = !this.showDebug, this.showDebug && this.$nextTick(() => {
3885
+ this.$refs.debug.focus();
3886
+ });
3887
+ },
3888
+ toggleDisconnect() {
3889
+ this.showDisconnect = !this.showDisconnect;
3890
+ },
3891
+ debugKeydown(t) {
3892
+ t.key === "Escape" ? (this.debug = "", this.debugHistoryIndex = this.debugHistory.length) : t.key === "Enter" ? (this.debugHistory.push(this.debug), this.debugHistoryIndex = this.debugHistory.length, y.post(`/script-api/running-script/${this.scriptId}/debug`, {
3893
+ data: {
3894
+ args: this.debug
3895
+ }
3896
+ }), this.debug = "") : t.key === "ArrowUp" ? (this.debugHistoryIndex -= 1, this.debugHistoryIndex < 0 && (this.debugHistoryIndex = this.debugHistory.length - 1), this.debug = this.debugHistory[this.debugHistoryIndex], t.preventDefault()) : t.key === "ArrowDown" && (this.debugHistoryIndex += 1, this.debugHistoryIndex >= this.debugHistory.length && (this.debugHistoryIndex = 0), this.debug = this.debugHistory[this.debugHistoryIndex]);
3897
+ },
3898
+ removeAllMarkers: function() {
3899
+ const t = this.editor.session.getMarkers();
3900
+ Object.keys(t).filter((e) => t[e].type === "fullLine").forEach((e) => this.editor.session.removeMarker(e));
3901
+ },
3902
+ confirmLocalUnlock: function() {
3903
+ this.$dialog.confirm(
3904
+ "Are you sure you want to unlock this script for editing? If another user is editing this script, your changes might conflict with each other.",
3905
+ {
3906
+ okText: "Force Unlock",
3907
+ cancelText: "Cancel"
3908
+ }
3909
+ ).then(() => (this.lockedBy = null, this.lockFile()));
3910
+ },
3911
+ lockFile: function() {
3912
+ if (!this.readOnlyUser)
3913
+ return y.post(`/script-api/scripts/${this.filename}/lock`);
3914
+ },
3915
+ unlockFile: function() {
3916
+ this.filename !== P && !this.readOnly && !this.readOnlyUser && y.post(`/script-api/scripts/${this.filename}/unlock`);
3917
+ },
3918
+ screenId(t) {
3919
+ return "scriptRunnerScreen" + t;
3920
+ },
3921
+ closeScreen(t) {
3922
+ let e = 0;
3923
+ for (screen of this.screens) {
3924
+ if (screen.id == t) {
3925
+ this.screens.splice(e, 1);
3926
+ break;
3927
+ }
3928
+ e += 1;
3929
+ }
3930
+ }
3931
+ }
3932
+ }, vs = { class: "grid" }, bs = ["id"], _s = { class: "item-content" }, ws = { id: "sr-controls" }, ks = {
3933
+ key: 2,
3934
+ style: { width: "40px", height: "40px" },
3935
+ class: "ml-2 mr-2"
3936
+ }, ys = { key: 3 }, Ss = { key: 4 }, xs = {
3937
+ key: 0,
3938
+ id: "debug",
3939
+ class: "pa-0"
3940
+ }, Cs = { key: 1 }, Vs = { key: 0 }, Rs = { key: 1 };
3941
+ function Es(t, e, i, r, s, o) {
3942
+ const a = u("top-bar"), p = u("v-icon"), c = u("v-btn"), b = u("v-snackbar"), w = u("openc3-screen"), _ = u("suite-runner"), g = u("v-tooltip"), k = u("v-select"), x = u("v-text-field"), f = u("v-progress-circular"), S = u("v-spacer"), M = u("v-row"), z = u("v-card"), $ = u("v-list-item-title"), ee = u("v-list-item"), ve = u("v-divider"), be = u("v-list"), _e = u("v-menu"), re = u("pane"), we = u("script-log-messages"), ke = u("splitpanes"), ae = u("v-col"), ue = u("file-open-save-dialog"), ye = u("environment-dialog"), Se = u("ask-dialog"), xe = u("file-dialog"), Ce = u("information-dialog"), Ve = u("event-list-dialog"), Re = u("overrides-dialog"), Ee = u("prompt-dialog"), Me = u("results-dialog"), Oe = u("script-environment-dialog"), ze = u("simple-text-dialog"), Te = u("critical-cmd-dialog"), De = u("running-scripts"), Pe = u("v-sheet"), Ue = u("v-bottom-sheet");
3943
+ return v(), V(N, null, [
3944
+ i.inline ? R("", !0) : (v(), V(N, { key: 0 }, [
3945
+ n(a, {
3946
+ menus: o.menus,
3947
+ title: s.title
3948
+ }, null, 8, ["menus", "title"]),
3949
+ n(b, {
3950
+ modelValue: s.showAlert,
3951
+ "onUpdate:modelValue": e[1] || (e[1] = (d) => s.showAlert = d),
3952
+ location: "top",
3953
+ color: s.alertType,
3954
+ timeout: 3e3
3955
+ }, {
3956
+ actions: l(({ attrs: d }) => [
3957
+ n(c, B({ variant: "text" }, d, {
3958
+ onClick: e[0] || (e[0] = (te) => s.showAlert = !1)
3959
+ }), {
3960
+ default: l(() => e[35] || (e[35] = [
3961
+ m(" Close ")
3962
+ ])),
3963
+ _: 2
3964
+ }, 1040)
3965
+ ]),
3966
+ default: l(() => [
3967
+ n(p, null, {
3968
+ default: l(() => [
3969
+ m(" mdi-" + E(s.alertType), 1)
3970
+ ]),
3971
+ _: 1
3972
+ }),
3973
+ m(" " + E(s.alertText) + " ", 1)
3974
+ ]),
3975
+ _: 1
3976
+ }, 8, ["modelValue", "color"]),
3977
+ n(b, {
3978
+ modelValue: s.showEditingToast,
3979
+ "onUpdate:modelValue": e[3] || (e[3] = (d) => s.showEditingToast = d),
3980
+ location: "top",
3981
+ timeout: -1,
3982
+ color: "orange"
3983
+ }, {
3984
+ actions: l(({ attrs: d }) => [
3985
+ n(c, B({ variant: "text" }, d, {
3986
+ color: "danger",
3987
+ onClick: o.confirmLocalUnlock,
3988
+ "data-test": "unlock-button"
3989
+ }), {
3990
+ default: l(() => e[37] || (e[37] = [
3991
+ m(" Unlock ")
3992
+ ])),
3993
+ _: 2
3994
+ }, 1040, ["onClick"]),
3995
+ n(c, B({ variant: "text" }, d, {
3996
+ onClick: e[2] || (e[2] = () => {
3997
+ s.showEditingToast = !1;
3998
+ })
3999
+ }), {
4000
+ default: l(() => e[38] || (e[38] = [
4001
+ m(" dismiss ")
4002
+ ])),
4003
+ _: 2
4004
+ }, 1040)
4005
+ ]),
4006
+ default: l(() => [
4007
+ n(p, null, {
4008
+ default: l(() => e[36] || (e[36] = [
4009
+ m(" mdi-pencil-off ")
4010
+ ])),
4011
+ _: 1
4012
+ }),
4013
+ m(" " + E(s.lockedBy) + " is editing this script. Editor is in read-only mode ", 1)
4014
+ ]),
4015
+ _: 1
4016
+ }, 8, ["modelValue"]),
4017
+ h("div", vs, [
4018
+ (v(!0), V(N, null, X(s.screens, (d) => (v(), V("div", {
4019
+ class: "item",
4020
+ key: d.id,
4021
+ id: o.screenId(d.id),
4022
+ ref_for: !0,
4023
+ ref: "gridItem"
4024
+ }, [
4025
+ h("div", _s, [
4026
+ n(w, {
4027
+ target: d.target,
4028
+ screen: d.screen,
4029
+ definition: d.definition,
4030
+ keywords: s.screenKeywords,
4031
+ initialFloated: !0,
4032
+ initialTop: d.top,
4033
+ initialLeft: d.left,
4034
+ initialZ: 3,
4035
+ minZ: 3,
4036
+ fixFloated: !0,
4037
+ count: d.count,
4038
+ onCloseScreen: (te) => o.closeScreen(d.id),
4039
+ onDeleteScreen: (te) => o.closeScreen(d.id)
4040
+ }, null, 8, ["target", "screen", "definition", "keywords", "initialTop", "initialLeft", "count", "onCloseScreen", "onDeleteScreen"])
4041
+ ])
4042
+ ], 8, bs))), 128))
4043
+ ]),
4044
+ n(z, { style: { padding: "10px" } }, {
4045
+ default: l(() => [
4046
+ s.suiteRunner ? (v(), C(_, {
4047
+ key: 0,
4048
+ class: "suite-runner",
4049
+ "suite-map": s.suiteMap,
4050
+ "disable-buttons": s.disableSuiteButtons,
4051
+ filename: o.fullFilename,
4052
+ onButton: o.suiteRunnerButton,
4053
+ onLoaded: o.doResize
4054
+ }, null, 8, ["suite-map", "disable-buttons", "filename", "onButton", "onLoaded"])) : R("", !0),
4055
+ h("div", ws, [
4056
+ n(M, {
4057
+ "no-gutters": "",
4058
+ justify: "space-between"
4059
+ }, {
4060
+ default: l(() => [
4061
+ s.showDisconnect ? (v(), C(p, {
4062
+ key: 0,
4063
+ class: "mt-2",
4064
+ color: "red"
4065
+ }, {
4066
+ default: l(() => e[39] || (e[39] = [
4067
+ m(" mdi-connection ")
4068
+ ])),
4069
+ _: 1
4070
+ })) : R("", !0),
4071
+ n(g, { location: "top" }, {
4072
+ activator: l(({ props: d }) => [
4073
+ n(c, B(d, {
4074
+ icon: "mdi-cached",
4075
+ variant: "text",
4076
+ onClick: o.reloadFile,
4077
+ disabled: s.filename === t.NEW_FILENAME
4078
+ }), null, 16, ["onClick", "disabled"])
4079
+ ]),
4080
+ default: l(() => [
4081
+ e[40] || (e[40] = h("span", null, " Reload File ", -1))
4082
+ ]),
4083
+ _: 1
4084
+ }),
4085
+ n(k, {
4086
+ modelValue: s.filenameSelect,
4087
+ "onUpdate:modelValue": [
4088
+ e[4] || (e[4] = (d) => s.filenameSelect = d),
4089
+ o.fileNameChanged
4090
+ ],
4091
+ items: o.fileList,
4092
+ disabled: o.fileList.length <= 1,
4093
+ label: "Filename",
4094
+ id: "filename",
4095
+ "data-test": "filename",
4096
+ style: { width: "300px" },
4097
+ density: "compact",
4098
+ variant: "outlined",
4099
+ "hide-details": ""
4100
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "items", "disabled"]),
4101
+ n(x, {
4102
+ modelValue: s.scriptId,
4103
+ "onUpdate:modelValue": e[5] || (e[5] = (d) => s.scriptId = d),
4104
+ label: "Script ID",
4105
+ "data-test": "id",
4106
+ class: "shrink ml-2 script-state",
4107
+ style: { "max-width": "100px" },
4108
+ density: "compact",
4109
+ variant: "outlined",
4110
+ readonly: "",
4111
+ "hide-details": ""
4112
+ }, null, 8, ["modelValue"]),
4113
+ n(x, {
4114
+ modelValue: o.stateTimer,
4115
+ "onUpdate:modelValue": e[6] || (e[6] = (d) => o.stateTimer = d),
4116
+ label: "Script State",
4117
+ "data-test": "state",
4118
+ class: "shrink ml-2 script-state",
4119
+ style: { "max-width": "120px" },
4120
+ density: "compact",
4121
+ variant: "outlined",
4122
+ readonly: "",
4123
+ "hide-details": ""
4124
+ }, null, 8, ["modelValue"]),
4125
+ s.state === "Connecting..." ? (v(), C(f, {
4126
+ key: 1,
4127
+ size: 40,
4128
+ class: "ml-2 mr-2",
4129
+ indeterminate: "",
4130
+ color: "primary"
4131
+ })) : (v(), V("div", ks)),
4132
+ n(S),
4133
+ s.startOrGoButton === "Start" ? (v(), V("div", ys, [
4134
+ n(c, {
4135
+ onClick: o.startHandler,
4136
+ class: "mx-1",
4137
+ color: "primary",
4138
+ "data-test": "start-button",
4139
+ disabled: s.startOrGoDisabled || !s.executeUser,
4140
+ hidden: s.suiteRunner
4141
+ }, {
4142
+ default: l(() => e[41] || (e[41] = [
4143
+ h("span", null, " Start ", -1)
4144
+ ])),
4145
+ _: 1
4146
+ }, 8, ["onClick", "disabled", "hidden"]),
4147
+ n(g, { location: "top" }, {
4148
+ activator: l(({ props: d }) => [
4149
+ n(c, B(d, {
4150
+ onClick: e[7] || (e[7] = (te) => s.scriptEnvironment.show = !s.scriptEnvironment.show),
4151
+ class: "mx-1",
4152
+ "data-test": "env-button",
4153
+ color: o.environmentIconColor,
4154
+ disabled: s.envDisabled
4155
+ }), {
4156
+ default: l(() => [
4157
+ n(p, null, {
4158
+ default: l(() => [
4159
+ m(E(o.environmentIcon), 1)
4160
+ ]),
4161
+ _: 1
4162
+ })
4163
+ ]),
4164
+ _: 2
4165
+ }, 1040, ["color", "disabled"])
4166
+ ]),
4167
+ default: l(() => [
4168
+ e[42] || (e[42] = h("span", null, "Script Environment", -1))
4169
+ ]),
4170
+ _: 1
4171
+ })
4172
+ ])) : (v(), V("div", Ss, [
4173
+ n(c, {
4174
+ onClick: o.go,
4175
+ color: "primary",
4176
+ class: "mr-2",
4177
+ disabled: s.startOrGoDisabled,
4178
+ "data-test": "go-button"
4179
+ }, {
4180
+ default: l(() => e[43] || (e[43] = [
4181
+ m(" Go ")
4182
+ ])),
4183
+ _: 1
4184
+ }, 8, ["onClick", "disabled"]),
4185
+ n(c, {
4186
+ color: "primary",
4187
+ onClick: o.pauseOrRetry,
4188
+ class: "mr-2",
4189
+ disabled: s.pauseOrRetryDisabled,
4190
+ "data-test": "pause-retry-button"
4191
+ }, {
4192
+ default: l(() => [
4193
+ m(E(s.pauseOrRetryButton), 1)
4194
+ ]),
4195
+ _: 1
4196
+ }, 8, ["onClick", "disabled"]),
4197
+ n(c, {
4198
+ color: "primary",
4199
+ onClick: o.stop,
4200
+ "data-test": "stop-button",
4201
+ disabled: s.stopDisabled
4202
+ }, {
4203
+ default: l(() => e[44] || (e[44] = [
4204
+ m(" Stop ")
4205
+ ])),
4206
+ _: 1
4207
+ }, 8, ["onClick", "disabled"])
4208
+ ]))
4209
+ ]),
4210
+ _: 1
4211
+ })
4212
+ ])
4213
+ ]),
4214
+ _: 1
4215
+ }),
4216
+ n(ke, {
4217
+ horizontal: "",
4218
+ onResize: o.calcHeight,
4219
+ style: { height: "100%" }
4220
+ }, {
4221
+ default: l(() => [
4222
+ n(re, {
4223
+ class: "editorbox",
4224
+ size: "50"
4225
+ }, {
4226
+ default: l(() => [
4227
+ n(b, {
4228
+ modelValue: s.showSave,
4229
+ "onUpdate:modelValue": e[8] || (e[8] = (d) => s.showSave = d),
4230
+ absolute: "",
4231
+ location: "top right",
4232
+ timeout: -1,
4233
+ class: "saving"
4234
+ }, {
4235
+ default: l(() => e[45] || (e[45] = [
4236
+ m(" Saving... ")
4237
+ ])),
4238
+ _: 1
4239
+ }, 8, ["modelValue"]),
4240
+ h("pre", {
4241
+ ref: "editor",
4242
+ class: "editor",
4243
+ onContextmenu: e[9] || (e[9] = L((...d) => o.showExecuteSelectionMenu && o.showExecuteSelectionMenu(...d), ["prevent"]))
4244
+ }, null, 544),
4245
+ n(_e, {
4246
+ modelValue: s.executeSelectionMenu,
4247
+ "onUpdate:modelValue": e[10] || (e[10] = (d) => s.executeSelectionMenu = d),
4248
+ target: [s.menuX, s.menuY]
4249
+ }, {
4250
+ default: l(() => [
4251
+ n(be, null, {
4252
+ default: l(() => [
4253
+ (v(!0), V(N, null, X(o.executeSelectionMenuItems, (d) => (v(), C(ee, {
4254
+ link: "",
4255
+ key: d.label,
4256
+ disabled: s.scriptId
4257
+ }, {
4258
+ default: l(() => [
4259
+ n($, {
4260
+ onClick: d.command
4261
+ }, {
4262
+ default: l(() => [
4263
+ m(E(d.label), 1)
4264
+ ]),
4265
+ _: 2
4266
+ }, 1032, ["onClick"])
4267
+ ]),
4268
+ _: 2
4269
+ }, 1032, ["disabled"]))), 128)),
4270
+ n(ve),
4271
+ n(ee, {
4272
+ title: "Toggle Vim mode",
4273
+ "prepend-icon": "extras:vim",
4274
+ onClick: o.toggleVimMode
4275
+ }, null, 8, ["onClick"])
4276
+ ]),
4277
+ _: 1
4278
+ })
4279
+ ]),
4280
+ _: 1
4281
+ }, 8, ["modelValue", "target"])
4282
+ ]),
4283
+ _: 1
4284
+ }),
4285
+ n(re, {
4286
+ id: "messages",
4287
+ class: "mt-2",
4288
+ ref: "messagesDiv"
4289
+ }, {
4290
+ default: l(() => [
4291
+ s.showDebug ? (v(), V("div", xs, [
4292
+ n(M, { "no-gutters": "" }, {
4293
+ default: l(() => [
4294
+ n(c, {
4295
+ color: "primary",
4296
+ onClick: o.step,
4297
+ style: { width: "100px" },
4298
+ class: "mr-4",
4299
+ disabled: !s.scriptId,
4300
+ "data-test": "step-button"
4301
+ }, {
4302
+ default: l(() => [
4303
+ e[47] || (e[47] = m(" Step ")),
4304
+ n(p, { end: "" }, {
4305
+ default: l(() => e[46] || (e[46] = [
4306
+ m(" mdi-step-forward ")
4307
+ ])),
4308
+ _: 1
4309
+ })
4310
+ ]),
4311
+ _: 1
4312
+ }, 8, ["onClick", "disabled"]),
4313
+ n(x, {
4314
+ ref: "debug",
4315
+ class: "mb-2",
4316
+ variant: "outlined",
4317
+ density: "compact",
4318
+ "hide-details": "",
4319
+ label: "Debug",
4320
+ modelValue: s.debug,
4321
+ "onUpdate:modelValue": e[11] || (e[11] = (d) => s.debug = d),
4322
+ onKeydown: o.debugKeydown,
4323
+ "data-test": "debug-text"
4324
+ }, null, 8, ["modelValue", "onKeydown"])
4325
+ ]),
4326
+ _: 1
4327
+ })
4328
+ ])) : R("", !0),
4329
+ n(we, {
4330
+ id: "log-messages",
4331
+ modelValue: s.messages,
4332
+ "onUpdate:modelValue": e[12] || (e[12] = (d) => s.messages = d),
4333
+ onSort: o.messageSortOrder
4334
+ }, null, 8, ["modelValue", "onSort"])
4335
+ ]),
4336
+ _: 1
4337
+ }, 512)
4338
+ ]),
4339
+ _: 1
4340
+ }, 8, ["onResize"])
4341
+ ], 64)),
4342
+ i.inline ? (v(), V("div", Cs, [
4343
+ n(M, null, {
4344
+ default: l(() => [
4345
+ n(ae, {
4346
+ class: "v-col-10",
4347
+ style: { margin: "0px", padding: "0px" }
4348
+ }, {
4349
+ default: l(() => [
4350
+ h("pre", {
4351
+ ref: "editor",
4352
+ class: "editor",
4353
+ style: { height: "200px" },
4354
+ onContextmenu: e[13] || (e[13] = L((...d) => o.showExecuteSelectionMenu && o.showExecuteSelectionMenu(...d), ["prevent"]))
4355
+ }, null, 544)
4356
+ ]),
4357
+ _: 1
4358
+ }),
4359
+ n(ae, {
4360
+ class: "v-col-2",
4361
+ style: { display: "flex", "justify-content": "center", "align-items": "center", "background-color": "var(--color-background-surface-default)" }
4362
+ }, {
4363
+ default: l(() => [
4364
+ s.startOrGoButton === "Start" ? (v(), V("div", Vs, [
4365
+ n(c, {
4366
+ onClick: o.startHandler,
4367
+ class: "mx-1",
4368
+ color: "primary",
4369
+ "data-test": "start-button",
4370
+ disabled: s.startOrGoDisabled || !s.executeUser,
4371
+ hidden: s.suiteRunner
4372
+ }, {
4373
+ default: l(() => e[48] || (e[48] = [
4374
+ h("span", null, " Start ", -1)
4375
+ ])),
4376
+ _: 1
4377
+ }, 8, ["onClick", "disabled", "hidden"])
4378
+ ])) : (v(), V("div", Rs, [
4379
+ n(c, {
4380
+ onClick: o.go,
4381
+ color: "primary",
4382
+ class: "ma-2",
4383
+ disabled: s.startOrGoDisabled,
4384
+ "data-test": "go-button"
4385
+ }, {
4386
+ default: l(() => e[49] || (e[49] = [
4387
+ m(" Go ")
4388
+ ])),
4389
+ _: 1
4390
+ }, 8, ["onClick", "disabled"]),
4391
+ n(c, {
4392
+ color: "primary",
4393
+ onClick: o.pauseOrRetry,
4394
+ class: "ma-2",
4395
+ disabled: s.pauseOrRetryDisabled,
4396
+ "data-test": "pause-retry-button"
4397
+ }, {
4398
+ default: l(() => [
4399
+ m(E(s.pauseOrRetryButton), 1)
4400
+ ]),
4401
+ _: 1
4402
+ }, 8, ["onClick", "disabled"]),
4403
+ n(c, {
4404
+ color: "primary",
4405
+ onClick: o.stop,
4406
+ class: "ma-2",
4407
+ "data-test": "stop-button",
4408
+ disabled: s.stopDisabled
4409
+ }, {
4410
+ default: l(() => e[50] || (e[50] = [
4411
+ m(" Stop ")
4412
+ ])),
4413
+ _: 1
4414
+ }, 8, ["onClick", "disabled"])
4415
+ ]))
4416
+ ]),
4417
+ _: 1
4418
+ })
4419
+ ]),
4420
+ _: 1
4421
+ })
4422
+ ])) : R("", !0),
4423
+ s.fileOpen ? (v(), C(ue, {
4424
+ key: 2,
4425
+ modelValue: s.fileOpen,
4426
+ "onUpdate:modelValue": e[14] || (e[14] = (d) => s.fileOpen = d),
4427
+ type: "open",
4428
+ "api-url": "/script-api/scripts",
4429
+ onFile: e[15] || (e[15] = (d) => o.setFile(d)),
4430
+ onError: e[16] || (e[16] = (d) => o.setError(d)),
4431
+ onClearTemp: e[17] || (e[17] = (d) => o.clearTemp(d))
4432
+ }, null, 8, ["modelValue"])) : R("", !0),
4433
+ s.showSaveAs ? (v(), C(ue, {
4434
+ key: 3,
4435
+ modelValue: s.showSaveAs,
4436
+ "onUpdate:modelValue": e[18] || (e[18] = (d) => s.showSaveAs = d),
4437
+ type: "save",
4438
+ "api-url": "/script-api/scripts",
4439
+ "require-target-parent-dir": "",
4440
+ "input-filename": o.filenameOrBlank,
4441
+ onFilename: e[19] || (e[19] = (d) => o.saveAsFilename(d)),
4442
+ onError: e[20] || (e[20] = (d) => o.setError(d)),
4443
+ onClearTemp: e[21] || (e[21] = (d) => o.clearTemp(d))
4444
+ }, null, 8, ["modelValue", "input-filename"])) : R("", !0),
4445
+ s.showEnvironment ? (v(), C(ye, {
4446
+ key: 4,
4447
+ modelValue: s.showEnvironment,
4448
+ "onUpdate:modelValue": e[22] || (e[22] = (d) => s.showEnvironment = d)
4449
+ }, null, 8, ["modelValue"])) : R("", !0),
4450
+ s.ask.show ? (v(), C(Se, {
4451
+ key: 5,
4452
+ modelValue: s.ask.show,
4453
+ "onUpdate:modelValue": e[23] || (e[23] = (d) => s.ask.show = d),
4454
+ question: s.ask.question,
4455
+ default: s.ask.default,
4456
+ password: s.ask.password,
4457
+ "answer-required": s.ask.answerRequired,
4458
+ onResponse: s.ask.callback
4459
+ }, null, 8, ["modelValue", "question", "default", "password", "answer-required", "onResponse"])) : R("", !0),
4460
+ s.file.show ? (v(), C(xe, {
4461
+ key: 6,
4462
+ modelValue: s.file.show,
4463
+ "onUpdate:modelValue": e[24] || (e[24] = (d) => s.file.show = d),
4464
+ title: s.file.title,
4465
+ message: s.file.message,
4466
+ multiple: s.file.multiple,
4467
+ filter: s.file.filter,
4468
+ onResponse: o.fileDialogCallback
4469
+ }, null, 8, ["modelValue", "title", "message", "multiple", "filter", "onResponse"])) : R("", !0),
4470
+ s.information.show ? (v(), C(Ce, {
4471
+ key: 7,
4472
+ modelValue: s.information.show,
4473
+ "onUpdate:modelValue": e[25] || (e[25] = (d) => s.information.show = d),
4474
+ title: s.information.title,
4475
+ text: s.information.text,
4476
+ width: s.information.width
4477
+ }, null, 8, ["modelValue", "title", "text", "width"])) : R("", !0),
4478
+ s.inputMetadata.show ? (v(), C(Ve, {
4479
+ key: 8,
4480
+ modelValue: s.inputMetadata.show,
4481
+ "onUpdate:modelValue": e[26] || (e[26] = (d) => s.inputMetadata.show = d),
4482
+ events: s.inputMetadata.events,
4483
+ "time-zone": s.timeZone,
4484
+ "new-metadata": "",
4485
+ onClose: s.inputMetadata.callback
4486
+ }, null, 8, ["modelValue", "events", "time-zone", "onClose"])) : R("", !0),
4487
+ s.showOverrides ? (v(), C(Re, {
4488
+ key: 9,
4489
+ modelValue: s.showOverrides,
4490
+ "onUpdate:modelValue": e[27] || (e[27] = (d) => s.showOverrides = d)
4491
+ }, null, 8, ["modelValue"])) : R("", !0),
4492
+ s.prompt.show ? (v(), C(Ee, {
4493
+ key: 10,
4494
+ modelValue: s.prompt.show,
4495
+ "onUpdate:modelValue": e[28] || (e[28] = (d) => s.prompt.show = d),
4496
+ title: s.prompt.title,
4497
+ subtitle: s.prompt.subtitle,
4498
+ message: s.prompt.message,
4499
+ details: s.prompt.details,
4500
+ buttons: s.prompt.buttons,
4501
+ layout: s.prompt.layout,
4502
+ multiple: s.prompt.multiple,
4503
+ onResponse: s.prompt.callback
4504
+ }, null, 8, ["modelValue", "title", "subtitle", "message", "details", "buttons", "layout", "multiple", "onResponse"])) : R("", !0),
4505
+ s.results.show ? (v(), C(Me, {
4506
+ key: 11,
4507
+ modelValue: s.results.show,
4508
+ "onUpdate:modelValue": e[29] || (e[29] = (d) => s.results.show = d),
4509
+ text: s.results.text
4510
+ }, null, 8, ["modelValue", "text"])) : R("", !0),
4511
+ s.scriptEnvironment.show ? (v(), C(Oe, {
4512
+ key: 12,
4513
+ modelValue: s.scriptEnvironment.show,
4514
+ "onUpdate:modelValue": e[30] || (e[30] = (d) => s.scriptEnvironment.show = d),
4515
+ "input-environment": s.scriptEnvironment.env,
4516
+ onEnvironment: o.environmentHandler
4517
+ }, null, 8, ["modelValue", "input-environment", "onEnvironment"])) : R("", !0),
4518
+ n(ze, {
4519
+ modelValue: s.showSuiteError,
4520
+ "onUpdate:modelValue": e[31] || (e[31] = (d) => s.showSuiteError = d),
4521
+ title: "Suite Analysis Error",
4522
+ text: s.suiteError,
4523
+ width: 1e3
4524
+ }, null, 8, ["modelValue", "text"]),
4525
+ n(Te, {
4526
+ uuid: s.criticalCmdUuid,
4527
+ cmdString: s.criticalCmdString,
4528
+ cmdUser: s.criticalCmdUser,
4529
+ persistent: !0,
4530
+ modelValue: s.displayCriticalCmd,
4531
+ "onUpdate:modelValue": e[32] || (e[32] = (d) => s.displayCriticalCmd = d),
4532
+ onStatus: o.promptDialogCallback
4533
+ }, null, 8, ["uuid", "cmdString", "cmdUser", "modelValue", "onStatus"]),
4534
+ n(Ue, {
4535
+ modelValue: s.showScripts,
4536
+ "onUpdate:modelValue": e[34] || (e[34] = (d) => s.showScripts = d)
4537
+ }, {
4538
+ default: l(() => [
4539
+ n(Pe, { class: "pb-11 pt-5 px-5" }, {
4540
+ default: l(() => [
4541
+ s.showScripts ? (v(), C(De, {
4542
+ key: 0,
4543
+ "connect-in-new-tab": !!s.fileModified,
4544
+ onDisconnect: o.scriptDisconnect,
4545
+ onClose: e[33] || (e[33] = () => {
4546
+ s.showScripts = !1;
4547
+ })
4548
+ }, null, 8, ["connect-in-new-tab", "onDisconnect"])) : R("", !0)
4549
+ ]),
4550
+ _: 1
4551
+ })
4552
+ ]),
4553
+ _: 1
4554
+ }, 8, ["modelValue"])
4555
+ ], 64);
4556
+ }
4557
+ const Gs = /* @__PURE__ */ T(gs, [["render", Es], ["__scopeId", "data-v-e003fbc4"]]);
4558
+ export {
4559
+ at as RunningScripts,
4560
+ ct as ScriptLogMessages,
4561
+ Gs as ScriptRunner,
4562
+ ns as SuiteRunner
4563
+ };
4564
+ //# sourceMappingURL=scriptrunner.js.map