@openc3/vue-common 7.0.0-rc2 → 7.0.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 (454) hide show
  1. package/dist/{ArrayWidget-D0_mEwbG.cjs → ArrayWidget-BsAUsmBz.cjs} +2 -2
  2. package/dist/{ArrayWidget-D0_mEwbG.cjs.map → ArrayWidget-BsAUsmBz.cjs.map} +1 -1
  3. package/dist/{ArrayWidget-BfXFA16h.js → ArrayWidget-D2UrA5Db.js} +4 -4
  4. package/dist/{ArrayWidget-BfXFA16h.js.map → ArrayWidget-D2UrA5Db.js.map} +1 -1
  5. package/dist/{ArrayplotWidget-CrkUt8nf.js → ArrayplotWidget-CDNRxI2F.js} +3 -3
  6. package/dist/{ArrayplotWidget-CrkUt8nf.js.map → ArrayplotWidget-CDNRxI2F.js.map} +1 -1
  7. package/dist/{ArrayplotWidget-ixbndTIr.cjs → ArrayplotWidget-ChHMy5_L.cjs} +2 -2
  8. package/dist/{ArrayplotWidget-ixbndTIr.cjs.map → ArrayplotWidget-ChHMy5_L.cjs.map} +1 -1
  9. package/dist/{BarColumn-D5XXk4Pw.cjs → BarColumn-e-sSkSvE.cjs} +2 -2
  10. package/dist/BarColumn-e-sSkSvE.cjs.map +1 -0
  11. package/dist/{BarColumn-CB-tgZUT.js → BarColumn-nSFR2LZF.js} +6 -6
  12. package/dist/BarColumn-nSFR2LZF.js.map +1 -0
  13. package/dist/{BlockWidget-76H_uaBo.js → BlockWidget-C-WB0Q2m.js} +4 -4
  14. package/dist/{BlockWidget-76H_uaBo.js.map → BlockWidget-C-WB0Q2m.js.map} +1 -1
  15. package/dist/{BlockWidget-w3lmbO_0.cjs → BlockWidget-DJpyQiec.cjs} +2 -2
  16. package/dist/{BlockWidget-w3lmbO_0.cjs.map → BlockWidget-DJpyQiec.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-CL09OQq_.js → ButtonWidget-rS7sVb7m.js} +14 -14
  18. package/dist/{ButtonWidget-CL09OQq_.js.map → ButtonWidget-rS7sVb7m.js.map} +1 -1
  19. package/dist/{ButtonWidget-MeyUohLj.cjs → ButtonWidget-rkOE5b8G.cjs} +3 -3
  20. package/dist/{ButtonWidget-MeyUohLj.cjs.map → ButtonWidget-rkOE5b8G.cjs.map} +1 -1
  21. package/dist/{CanvasWidget-DN04dkIP.js → CanvasWidget-DuWolVCW.js} +2 -2
  22. package/dist/{CanvasWidget-DN04dkIP.js.map → CanvasWidget-DuWolVCW.js.map} +1 -1
  23. package/dist/{CanvasWidget-DFwpzAHp.cjs → CanvasWidget-Dv7_QUJY.cjs} +2 -2
  24. package/dist/{CanvasWidget-DFwpzAHp.cjs.map → CanvasWidget-Dv7_QUJY.cjs.map} +1 -1
  25. package/dist/{CanvasdotWidget-DD5jlEoi.js → CanvasdotWidget-B42YizA1.js} +2 -2
  26. package/dist/{CanvasdotWidget-DD5jlEoi.js.map → CanvasdotWidget-B42YizA1.js.map} +1 -1
  27. package/dist/{CanvasdotWidget-BC_P3TrQ.cjs → CanvasdotWidget-E1OgFBVZ.cjs} +2 -2
  28. package/dist/{CanvasdotWidget-BC_P3TrQ.cjs.map → CanvasdotWidget-E1OgFBVZ.cjs.map} +1 -1
  29. package/dist/{CanvasimageWidget-BGC5DEyb.js → CanvasimageWidget-DMHdDTSs.js} +3 -3
  30. package/dist/{CanvasimageWidget-BGC5DEyb.js.map → CanvasimageWidget-DMHdDTSs.js.map} +1 -1
  31. package/dist/{CanvasimageWidget-Ba8CzBeA.cjs → CanvasimageWidget-ysw78z4C.cjs} +2 -2
  32. package/dist/{CanvasimageWidget-Ba8CzBeA.cjs.map → CanvasimageWidget-ysw78z4C.cjs.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-C4V30F-k.cjs → CanvasimagevalueWidget-Bc-VYXe7.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-C4V30F-k.cjs.map → CanvasimagevalueWidget-Bc-VYXe7.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-BP7cAs0Z.js → CanvasimagevalueWidget-ns-5S1HA.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-BP7cAs0Z.js.map → CanvasimagevalueWidget-ns-5S1HA.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-7kIhAM0A.cjs → CanvaslabelWidget-6h59qJY8.cjs} +2 -2
  38. package/dist/{CanvaslabelWidget-7kIhAM0A.cjs.map → CanvaslabelWidget-6h59qJY8.cjs.map} +1 -1
  39. package/dist/{CanvaslabelWidget-Cl--mh6r.js → CanvaslabelWidget-DElES3gU.js} +2 -2
  40. package/dist/{CanvaslabelWidget-Cl--mh6r.js.map → CanvaslabelWidget-DElES3gU.js.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-CgYr_qcI.js → CanvaslabelvalueWidget-B2B5KlUm.js} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-CgYr_qcI.js.map → CanvaslabelvalueWidget-B2B5KlUm.js.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-SbtBYdGj.cjs → CanvaslabelvalueWidget-BLIgF8xi.cjs} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-SbtBYdGj.cjs.map → CanvaslabelvalueWidget-BLIgF8xi.cjs.map} +1 -1
  45. package/dist/{CanvaslineWidget-CKBFMLKb.cjs → CanvaslineWidget-CxZGCwVF.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-CKBFMLKb.cjs.map → CanvaslineWidget-CxZGCwVF.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-BygI_uzn.js → CanvaslineWidget-DaHxgGyM.js} +2 -2
  48. package/dist/{CanvaslineWidget-BygI_uzn.js.map → CanvaslineWidget-DaHxgGyM.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-Bsg-kroQ.cjs → CanvaslinevalueWidget-BljeuN4S.cjs} +2 -2
  50. package/dist/{CanvaslinevalueWidget-Bsg-kroQ.cjs.map → CanvaslinevalueWidget-BljeuN4S.cjs.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-ChL9-ZOz.js → CanvaslinevalueWidget-CrtDsSOP.js} +2 -2
  52. package/dist/{CanvaslinevalueWidget-ChL9-ZOz.js.map → CanvaslinevalueWidget-CrtDsSOP.js.map} +1 -1
  53. package/dist/{CheckbuttonWidget-Cxj4agsS.js → CheckbuttonWidget-BK4SgIu7.js} +2 -2
  54. package/dist/{CheckbuttonWidget-Cxj4agsS.js.map → CheckbuttonWidget-BK4SgIu7.js.map} +1 -1
  55. package/dist/{CheckbuttonWidget-xjIBJ8JT.cjs → CheckbuttonWidget-By46VH2e.cjs} +2 -2
  56. package/dist/{CheckbuttonWidget-xjIBJ8JT.cjs.map → CheckbuttonWidget-By46VH2e.cjs.map} +1 -1
  57. package/dist/{ClassificationBanners-Ag0cW8Wi.cjs → ClassificationBanners-CHQX3t7t.cjs} +2 -2
  58. package/dist/{ClassificationBanners-Ag0cW8Wi.cjs.map → ClassificationBanners-CHQX3t7t.cjs.map} +1 -1
  59. package/dist/{ClassificationBanners-BEBrvuzq.js → ClassificationBanners-DGl2HUKd.js} +2 -2
  60. package/dist/{ClassificationBanners-BEBrvuzq.js.map → ClassificationBanners-DGl2HUKd.js.map} +1 -1
  61. package/dist/{ComboboxWidget-CLVDTsRT.cjs → ComboboxWidget-CHFTOmhZ.cjs} +2 -2
  62. package/dist/{ComboboxWidget-CLVDTsRT.cjs.map → ComboboxWidget-CHFTOmhZ.cjs.map} +1 -1
  63. package/dist/{ComboboxWidget-DXlOmRS6.js → ComboboxWidget-CciRWuKq.js} +2 -2
  64. package/dist/{ComboboxWidget-DXlOmRS6.js.map → ComboboxWidget-CciRWuKq.js.map} +1 -1
  65. package/dist/{CriticalCmdDialog-De7KJBQR.cjs → CriticalCmdDialog-BWrwpTNK.cjs} +2 -2
  66. package/dist/{CriticalCmdDialog-De7KJBQR.cjs.map → CriticalCmdDialog-BWrwpTNK.cjs.map} +1 -1
  67. package/dist/{CriticalCmdDialog-DTok3HnF.js → CriticalCmdDialog-C5EZDRSZ.js} +3 -3
  68. package/dist/{CriticalCmdDialog-DTok3HnF.js.map → CriticalCmdDialog-C5EZDRSZ.js.map} +1 -1
  69. package/dist/{DateWidget-DCebkHzD.cjs → DateWidget-Bb6juAYs.cjs} +2 -2
  70. package/dist/{DateWidget-DCebkHzD.cjs.map → DateWidget-Bb6juAYs.cjs.map} +1 -1
  71. package/dist/{DateWidget-CYPRbvuk.js → DateWidget-DwgQ3Jik.js} +2 -2
  72. package/dist/{DateWidget-CYPRbvuk.js.map → DateWidget-DwgQ3Jik.js.map} +1 -1
  73. package/dist/{DetailsDialog-BI3oNhTn.js → DetailsDialog-CspQjoR5.js} +160 -141
  74. package/dist/DetailsDialog-CspQjoR5.js.map +1 -0
  75. package/dist/DetailsDialog-D_my0nhs.cjs +2 -0
  76. package/dist/DetailsDialog-D_my0nhs.cjs.map +1 -0
  77. package/dist/{EventListDialog-BMw8Gl-0.js → EventListDialog-DL2HHNQG.js} +19 -16
  78. package/dist/EventListDialog-DL2HHNQG.js.map +1 -0
  79. package/dist/EventListDialog-DO32zY2U.cjs +2 -0
  80. package/dist/EventListDialog-DO32zY2U.cjs.map +1 -0
  81. package/dist/{FilechecksumWidget-C6duPUFo.js → FilechecksumWidget-BS281Q0h.js} +19 -19
  82. package/dist/{FilechecksumWidget-C6duPUFo.js.map → FilechecksumWidget-BS281Q0h.js.map} +1 -1
  83. package/dist/{FilechecksumWidget-ccksLFy0.cjs → FilechecksumWidget-DMpuLZJ5.cjs} +2 -2
  84. package/dist/{FilechecksumWidget-ccksLFy0.cjs.map → FilechecksumWidget-DMpuLZJ5.cjs.map} +1 -1
  85. package/dist/{FiledisplayWidget-Cu1sQoZu.cjs → FiledisplayWidget-BoD7LuLP.cjs} +2 -2
  86. package/dist/{FiledisplayWidget-Cu1sQoZu.cjs.map → FiledisplayWidget-BoD7LuLP.cjs.map} +1 -1
  87. package/dist/{FiledisplayWidget-Cu2tLm6D.js → FiledisplayWidget-C9YdXDdv.js} +4 -4
  88. package/dist/{FiledisplayWidget-Cu2tLm6D.js.map → FiledisplayWidget-C9YdXDdv.js.map} +1 -1
  89. package/dist/FormatvalueWidget-DfvTVSs-.cjs +2 -0
  90. package/dist/{FormatvalueWidget-npk9X-15.cjs.map → FormatvalueWidget-DfvTVSs-.cjs.map} +1 -1
  91. package/dist/{FormatvalueWidget-I_0Qa6C6.js → FormatvalueWidget-dfmQfrNA.js} +13 -11
  92. package/dist/{FormatvalueWidget-I_0Qa6C6.js.map → FormatvalueWidget-dfmQfrNA.js.map} +1 -1
  93. package/dist/{Graph-BdLZrFnQ.js → Graph-BTtGIbYG.js} +389 -335
  94. package/dist/Graph-BTtGIbYG.js.map +1 -0
  95. package/dist/Graph-Cy2LrwoK.cjs +2 -0
  96. package/dist/Graph-Cy2LrwoK.cjs.map +1 -0
  97. package/dist/{GraphWidget-BvEeKc4C.js → GraphWidget-CWJ4Yb26.js} +2 -2
  98. package/dist/{GraphWidget-BvEeKc4C.js.map → GraphWidget-CWJ4Yb26.js.map} +1 -1
  99. package/dist/{GraphWidget-D3bjqKwr.cjs → GraphWidget-XjxjI3og.cjs} +2 -2
  100. package/dist/{GraphWidget-D3bjqKwr.cjs.map → GraphWidget-XjxjI3og.cjs.map} +1 -1
  101. package/dist/{HorizontalWidget-D83EJ_-6.cjs → HorizontalWidget-BeW4b13V.cjs} +2 -2
  102. package/dist/{HorizontalWidget-D83EJ_-6.cjs.map → HorizontalWidget-BeW4b13V.cjs.map} +1 -1
  103. package/dist/{HorizontalWidget-BtdfnZMK.js → HorizontalWidget-DFAqF95S.js} +2 -2
  104. package/dist/{HorizontalWidget-BtdfnZMK.js.map → HorizontalWidget-DFAqF95S.js.map} +1 -1
  105. package/dist/{HorizontalboxWidget-BsXYMyz7.js → HorizontalboxWidget-CL1xEhDj.js} +5 -5
  106. package/dist/{HorizontalboxWidget-BsXYMyz7.js.map → HorizontalboxWidget-CL1xEhDj.js.map} +1 -1
  107. package/dist/{HorizontalboxWidget-CEIySQlg.cjs → HorizontalboxWidget-DdPv_6qb.cjs} +2 -2
  108. package/dist/{HorizontalboxWidget-CEIySQlg.cjs.map → HorizontalboxWidget-DdPv_6qb.cjs.map} +1 -1
  109. package/dist/{HorizontallineWidget-B-SvqwyU.cjs → HorizontallineWidget-BdWOnioI.cjs} +2 -2
  110. package/dist/{HorizontallineWidget-B-SvqwyU.cjs.map → HorizontallineWidget-BdWOnioI.cjs.map} +1 -1
  111. package/dist/{HorizontallineWidget-DCfxLDB6.js → HorizontallineWidget-DPiADCAy.js} +2 -2
  112. package/dist/{HorizontallineWidget-DCfxLDB6.js.map → HorizontallineWidget-DPiADCAy.js.map} +1 -1
  113. package/dist/{IframeWidget-xzoq2o7Z.js → IframeWidget-BsDu4b17.js} +2 -2
  114. package/dist/{IframeWidget-xzoq2o7Z.js.map → IframeWidget-BsDu4b17.js.map} +1 -1
  115. package/dist/{IframeWidget-c-9N6GGF.cjs → IframeWidget-Z12pG6JT.cjs} +2 -2
  116. package/dist/{IframeWidget-c-9N6GGF.cjs.map → IframeWidget-Z12pG6JT.cjs.map} +1 -1
  117. package/dist/{ImageLoader-Cj6nNt7z.js → ImageLoader-CT4rnwWn.js} +2 -2
  118. package/dist/{ImageLoader-Cj6nNt7z.js.map → ImageLoader-CT4rnwWn.js.map} +1 -1
  119. package/dist/{ImageLoader-DfFljBse.cjs → ImageLoader-CZ0Wx_Ua.cjs} +2 -2
  120. package/dist/{ImageLoader-DfFljBse.cjs.map → ImageLoader-CZ0Wx_Ua.cjs.map} +1 -1
  121. package/dist/{ImageviewerWidget-Cajx4RLs.js → ImageviewerWidget-BQbrz2WL.js} +2 -2
  122. package/dist/{ImageviewerWidget-Cajx4RLs.js.map → ImageviewerWidget-BQbrz2WL.js.map} +1 -1
  123. package/dist/{ImageviewerWidget-ClWuV9To.cjs → ImageviewerWidget-CtJzQn0e.cjs} +2 -2
  124. package/dist/{ImageviewerWidget-ClWuV9To.cjs.map → ImageviewerWidget-CtJzQn0e.cjs.map} +1 -1
  125. package/dist/{InterfacesTab-wj7bhYZ0.cjs → InterfacesTab-A0g0y1n1.cjs} +2 -2
  126. package/dist/{InterfacesTab-wj7bhYZ0.cjs.map → InterfacesTab-A0g0y1n1.cjs.map} +1 -1
  127. package/dist/{InterfacesTab-CWxzXFzp.js → InterfacesTab-COKNyeUu.js} +5 -5
  128. package/dist/{InterfacesTab-CWxzXFzp.js.map → InterfacesTab-COKNyeUu.js.map} +1 -1
  129. package/dist/{LabelWidget-BADrtfQr.js → LabelWidget-D5-IFUYW.js} +2 -2
  130. package/dist/{LabelWidget-BADrtfQr.js.map → LabelWidget-D5-IFUYW.js.map} +1 -1
  131. package/dist/{LabelWidget-Ce37S_Fm.cjs → LabelWidget-rH3SsItK.cjs} +2 -2
  132. package/dist/{LabelWidget-Ce37S_Fm.cjs.map → LabelWidget-rH3SsItK.cjs.map} +1 -1
  133. package/dist/{LabelledWidget-spC_mMaz.cjs → LabelledWidget-Bca_qNSP.cjs} +2 -2
  134. package/dist/{LabelledWidget-spC_mMaz.cjs.map → LabelledWidget-Bca_qNSP.cjs.map} +1 -1
  135. package/dist/{LabelledWidget-DJfuld1A.js → LabelledWidget-Dt9miRtB.js} +4 -4
  136. package/dist/{LabelledWidget-DJfuld1A.js.map → LabelledWidget-Dt9miRtB.js.map} +1 -1
  137. package/dist/{LabelprogressbarWidget-Dua-yQPl.js → LabelprogressbarWidget-BNFgTq4D.js} +4 -4
  138. package/dist/{LabelprogressbarWidget-Dua-yQPl.js.map → LabelprogressbarWidget-BNFgTq4D.js.map} +1 -1
  139. package/dist/{LabelprogressbarWidget-CKPuMKh0.cjs → LabelprogressbarWidget-hyK9Vqsl.cjs} +2 -2
  140. package/dist/{LabelprogressbarWidget-CKPuMKh0.cjs.map → LabelprogressbarWidget-hyK9Vqsl.cjs.map} +1 -1
  141. package/dist/{LabelsparklineWidget-eKiHy9w4.js → LabelsparklineWidget-BByxev6X.js} +4 -4
  142. package/dist/{LabelsparklineWidget-eKiHy9w4.js.map → LabelsparklineWidget-BByxev6X.js.map} +1 -1
  143. package/dist/{LabelsparklineWidget-Cx3t3YKW.cjs → LabelsparklineWidget-BxkxEVwQ.cjs} +2 -2
  144. package/dist/{LabelsparklineWidget-Cx3t3YKW.cjs.map → LabelsparklineWidget-BxkxEVwQ.cjs.map} +1 -1
  145. package/dist/{LabelvalueWidget-BUB3KJDX.js → LabelvalueWidget-BM6L9bVw.js} +4 -4
  146. package/dist/{LabelvalueWidget-BUB3KJDX.js.map → LabelvalueWidget-BM6L9bVw.js.map} +1 -1
  147. package/dist/{LabelvalueWidget-DoOlcQVx.cjs → LabelvalueWidget-DEGmbKMG.cjs} +2 -2
  148. package/dist/{LabelvalueWidget-DoOlcQVx.cjs.map → LabelvalueWidget-DEGmbKMG.cjs.map} +1 -1
  149. package/dist/{LabelvaluedescWidget-cE1Vk7vq.cjs → LabelvaluedescWidget-B7bGqqeO.cjs} +2 -2
  150. package/dist/{LabelvaluedescWidget-cE1Vk7vq.cjs.map → LabelvaluedescWidget-B7bGqqeO.cjs.map} +1 -1
  151. package/dist/{LabelvaluedescWidget-CjvG_UpY.js → LabelvaluedescWidget-DeBRjYXs.js} +5 -5
  152. package/dist/{LabelvaluedescWidget-CjvG_UpY.js.map → LabelvaluedescWidget-DeBRjYXs.js.map} +1 -1
  153. package/dist/{LabelvaluelimitsbarWidget-CtMQd5KQ.js → LabelvaluelimitsbarWidget-CqV0-c3G.js} +4 -4
  154. package/dist/{LabelvaluelimitsbarWidget-CtMQd5KQ.js.map → LabelvaluelimitsbarWidget-CqV0-c3G.js.map} +1 -1
  155. package/dist/{LabelvaluelimitsbarWidget-DpneFMil.cjs → LabelvaluelimitsbarWidget-DzEc9ZZr.cjs} +2 -2
  156. package/dist/{LabelvaluelimitsbarWidget-DpneFMil.cjs.map → LabelvaluelimitsbarWidget-DzEc9ZZr.cjs.map} +1 -1
  157. package/dist/{LabelvaluelimitscolumnWidget-DPeXqlfx.js → LabelvaluelimitscolumnWidget-Bz0PKTIV.js} +5 -5
  158. package/dist/{LabelvaluelimitscolumnWidget-DPeXqlfx.js.map → LabelvaluelimitscolumnWidget-Bz0PKTIV.js.map} +1 -1
  159. package/dist/{LabelvaluelimitscolumnWidget-B1nC50lt.cjs → LabelvaluelimitscolumnWidget-C0-v0q7a.cjs} +2 -2
  160. package/dist/{LabelvaluelimitscolumnWidget-B1nC50lt.cjs.map → LabelvaluelimitscolumnWidget-C0-v0q7a.cjs.map} +1 -1
  161. package/dist/{LabelvaluerangebarWidget-uglFf01b.cjs → LabelvaluerangebarWidget-CWhsb5gm.cjs} +2 -2
  162. package/dist/{LabelvaluerangebarWidget-uglFf01b.cjs.map → LabelvaluerangebarWidget-CWhsb5gm.cjs.map} +1 -1
  163. package/dist/{LabelvaluerangebarWidget-Bsndqu5o.js → LabelvaluerangebarWidget-DKuAJHLm.js} +4 -4
  164. package/dist/{LabelvaluerangebarWidget-Bsndqu5o.js.map → LabelvaluerangebarWidget-DKuAJHLm.js.map} +1 -1
  165. package/dist/{Layout-CpqPTtxp.js → Layout-LSeXBY_W.js} +2 -2
  166. package/dist/{Layout-CpqPTtxp.js.map → Layout-LSeXBY_W.js.map} +1 -1
  167. package/dist/{Layout-BJWisBf5.cjs → Layout-QcVHlWPp.cjs} +2 -2
  168. package/dist/{Layout-BJWisBf5.cjs.map → Layout-QcVHlWPp.cjs.map} +1 -1
  169. package/dist/{LedWidget-Cps5RaQ9.js → LedWidget-CH4Il9R7.js} +4 -4
  170. package/dist/{LedWidget-Cps5RaQ9.js.map → LedWidget-CH4Il9R7.js.map} +1 -1
  171. package/dist/{LedWidget-DjLL2qYw.cjs → LedWidget-CJwBssHl.cjs} +2 -2
  172. package/dist/{LedWidget-DjLL2qYw.cjs.map → LedWidget-CJwBssHl.cjs.map} +1 -1
  173. package/dist/{LimitsBar-CxTRY26H.cjs → LimitsBar-B0O6RMrG.cjs} +2 -2
  174. package/dist/{LimitsBar-CxTRY26H.cjs.map → LimitsBar-B0O6RMrG.cjs.map} +1 -1
  175. package/dist/{LimitsBar-CmUsJfsd.js → LimitsBar-BelAQFD0.js} +2 -2
  176. package/dist/{LimitsBar-CmUsJfsd.js.map → LimitsBar-BelAQFD0.js.map} +1 -1
  177. package/dist/LimitsColor-5sx13hYN.cjs +2 -0
  178. package/dist/LimitsColor-5sx13hYN.cjs.map +1 -0
  179. package/dist/LimitsColor-CBcpB-la.js +43 -0
  180. package/dist/LimitsColor-CBcpB-la.js.map +1 -0
  181. package/dist/{LimitsbarWidget-BGmYIhDO.cjs → LimitsbarWidget--AwjBbtb.cjs} +2 -2
  182. package/dist/{LimitsbarWidget-BGmYIhDO.cjs.map → LimitsbarWidget--AwjBbtb.cjs.map} +1 -1
  183. package/dist/{LimitsbarWidget-DU8L1muK.js → LimitsbarWidget-PkPqlyxL.js} +3 -3
  184. package/dist/{LimitsbarWidget-DU8L1muK.js.map → LimitsbarWidget-PkPqlyxL.js.map} +1 -1
  185. package/dist/LimitscolorWidget-1D2myv8a.cjs +2 -0
  186. package/dist/LimitscolorWidget-1D2myv8a.cjs.map +1 -0
  187. package/dist/LimitscolorWidget-BlA15g4A.js +179 -0
  188. package/dist/LimitscolorWidget-BlA15g4A.js.map +1 -0
  189. package/dist/{LimitscolumnWidget-DlMHRwh3.js → LimitscolumnWidget-PT917BA0.js} +2 -2
  190. package/dist/{LimitscolumnWidget-DlMHRwh3.js.map → LimitscolumnWidget-PT917BA0.js.map} +1 -1
  191. package/dist/{LimitscolumnWidget-D4XsdyiO.cjs → LimitscolumnWidget-_QPf3cUQ.cjs} +2 -2
  192. package/dist/{LimitscolumnWidget-D4XsdyiO.cjs.map → LimitscolumnWidget-_QPf3cUQ.cjs.map} +1 -1
  193. package/dist/{LinegraphWidget-C5o9B_PX.js → LinegraphWidget-BW7kS_6G.js} +4 -4
  194. package/dist/{LinegraphWidget-C5o9B_PX.js.map → LinegraphWidget-BW7kS_6G.js.map} +1 -1
  195. package/dist/{LinegraphWidget-DNLFkuva.cjs → LinegraphWidget-DfXd3959.cjs} +2 -2
  196. package/dist/{LinegraphWidget-DNLFkuva.cjs.map → LinegraphWidget-DfXd3959.cjs.map} +1 -1
  197. package/dist/{MatrixbycolumnsWidget-sXRvVukg.js → MatrixbycolumnsWidget-BGNsZvjv.js} +3 -3
  198. package/dist/{MatrixbycolumnsWidget-sXRvVukg.js.map → MatrixbycolumnsWidget-BGNsZvjv.js.map} +1 -1
  199. package/dist/{MatrixbycolumnsWidget-BX001JXC.cjs → MatrixbycolumnsWidget-oRYGFSEt.cjs} +2 -2
  200. package/dist/{MatrixbycolumnsWidget-BX001JXC.cjs.map → MatrixbycolumnsWidget-oRYGFSEt.cjs.map} +1 -1
  201. package/dist/{MicroservicesTab-h-myrNWR.js → MicroservicesTab-CiEGGavF.js} +3 -3
  202. package/dist/{MicroservicesTab-h-myrNWR.js.map → MicroservicesTab-CiEGGavF.js.map} +1 -1
  203. package/dist/{MicroservicesTab-a-glK9U3.cjs → MicroservicesTab-DvDK2hPW.cjs} +3 -3
  204. package/dist/{MicroservicesTab-a-glK9U3.cjs.map → MicroservicesTab-DvDK2hPW.cjs.map} +1 -1
  205. package/dist/{OpenC3TimePicker-DJFOQgY_.js → OpenC3TimePicker-CkaALgy9.js} +2 -2
  206. package/dist/{OpenC3TimePicker-DJFOQgY_.js.map → OpenC3TimePicker-CkaALgy9.js.map} +1 -1
  207. package/dist/{OpenC3TimePicker-D8a4_nHu.cjs → OpenC3TimePicker-bbdbKTv_.cjs} +2 -2
  208. package/dist/{OpenC3TimePicker-D8a4_nHu.cjs.map → OpenC3TimePicker-bbdbKTv_.cjs.map} +1 -1
  209. package/dist/{Openc3Screen-B2IwESpD.js → Openc3Screen-BnM1bNOB.js} +71 -72
  210. package/dist/{Openc3Screen-B2IwESpD.js.map → Openc3Screen-BnM1bNOB.js.map} +1 -1
  211. package/dist/{Openc3Screen-ERXOSMh1.cjs → Openc3Screen-DoOAFAlJ.cjs} +5 -5
  212. package/dist/{Openc3Screen-ERXOSMh1.cjs.map → Openc3Screen-DoOAFAlJ.cjs.map} +1 -1
  213. package/dist/{OutputDialog-JHy7LBTb.js → OutputDialog-BY-TZNRl.js} +4 -4
  214. package/dist/{OutputDialog-JHy7LBTb.js.map → OutputDialog-BY-TZNRl.js.map} +1 -1
  215. package/dist/{OutputDialog-CP7FRxxv.cjs → OutputDialog-R3Xj3_yw.cjs} +2 -2
  216. package/dist/{OutputDialog-CP7FRxxv.cjs.map → OutputDialog-R3Xj3_yw.cjs.map} +1 -1
  217. package/dist/PackagesTab-2Mu7yvxU.cjs +2 -0
  218. package/dist/{PackagesTab-ONxpjnC_.cjs.map → PackagesTab-2Mu7yvxU.cjs.map} +1 -1
  219. package/dist/{PackagesTab-CfCLRhzT.js → PackagesTab-DGrqIo_Z.js} +10 -10
  220. package/dist/{PackagesTab-CfCLRhzT.js.map → PackagesTab-DGrqIo_Z.js.map} +1 -1
  221. package/dist/PluginsTab-BXjVe_81.js +1740 -0
  222. package/dist/PluginsTab-BXjVe_81.js.map +1 -0
  223. package/dist/PluginsTab-R6i60Pih.cjs +6 -0
  224. package/dist/PluginsTab-R6i60Pih.cjs.map +1 -0
  225. package/dist/{ProgressbarWidget-C1Q4Gt5Q.js → ProgressbarWidget-Cy_ad8mb.js} +2 -2
  226. package/dist/{ProgressbarWidget-C1Q4Gt5Q.js.map → ProgressbarWidget-Cy_ad8mb.js.map} +1 -1
  227. package/dist/{ProgressbarWidget-C0tMl_LR.cjs → ProgressbarWidget-XAy4iHgC.cjs} +2 -2
  228. package/dist/{ProgressbarWidget-C0tMl_LR.cjs.map → ProgressbarWidget-XAy4iHgC.cjs.map} +1 -1
  229. package/dist/{RadiobuttonWidget-Dhcet_r5.js → RadiobuttonWidget-aJBIz45y.js} +2 -2
  230. package/dist/{RadiobuttonWidget-Dhcet_r5.js.map → RadiobuttonWidget-aJBIz45y.js.map} +1 -1
  231. package/dist/{RadiobuttonWidget-SqDhREzf.cjs → RadiobuttonWidget-fAqkUUTb.cjs} +2 -2
  232. package/dist/{RadiobuttonWidget-SqDhREzf.cjs.map → RadiobuttonWidget-fAqkUUTb.cjs.map} +1 -1
  233. package/dist/{RadiogroupWidget-DI1D1BRJ.cjs → RadiogroupWidget-BuYMyBQd.cjs} +2 -2
  234. package/dist/{RadiogroupWidget-DI1D1BRJ.cjs.map → RadiogroupWidget-BuYMyBQd.cjs.map} +1 -1
  235. package/dist/{RadiogroupWidget-CjrXZjdl.js → RadiogroupWidget-DNRlJnPE.js} +2 -2
  236. package/dist/{RadiogroupWidget-CjrXZjdl.js.map → RadiogroupWidget-DNRlJnPE.js.map} +1 -1
  237. package/dist/{RangebarWidget-14uZ2825.cjs → RangebarWidget-gcukfXnM.cjs} +2 -2
  238. package/dist/RangebarWidget-gcukfXnM.cjs.map +1 -0
  239. package/dist/{RangebarWidget-C461bAvq.js → RangebarWidget-h4YItqPF.js} +8 -8
  240. package/dist/RangebarWidget-h4YItqPF.js.map +1 -0
  241. package/dist/{RedisTab-IeIY08Nw.cjs → RedisTab-0V8f-hs1.cjs} +2 -2
  242. package/dist/{RedisTab-IeIY08Nw.cjs.map → RedisTab-0V8f-hs1.cjs.map} +1 -1
  243. package/dist/{RedisTab-BiflYEPO.js → RedisTab-BmZWA0OG.js} +15 -15
  244. package/dist/{RedisTab-BiflYEPO.js.map → RedisTab-BmZWA0OG.js.map} +1 -1
  245. package/dist/{RollupWidget-kmBW8757.js → RollupWidget-CnxDQRQ0.js} +2 -2
  246. package/dist/{RollupWidget-kmBW8757.js.map → RollupWidget-CnxDQRQ0.js.map} +1 -1
  247. package/dist/{RollupWidget-CI3lSfnk.cjs → RollupWidget-ZerASRD3.cjs} +2 -2
  248. package/dist/{RollupWidget-CI3lSfnk.cjs.map → RollupWidget-ZerASRD3.cjs.map} +1 -1
  249. package/dist/{RoutersTab-CZB-Jj_D.cjs → RoutersTab-CY-SmZd4.cjs} +2 -2
  250. package/dist/{RoutersTab-CZB-Jj_D.cjs.map → RoutersTab-CY-SmZd4.cjs.map} +1 -1
  251. package/dist/{RoutersTab-Dpg6xwE9.js → RoutersTab-Db28gKLP.js} +3 -3
  252. package/dist/{RoutersTab-Dpg6xwE9.js.map → RoutersTab-Db28gKLP.js.map} +1 -1
  253. package/dist/{ScriptChooser-BLsPk7_c.js → ScriptChooser-Bl0wisob.js} +182 -128
  254. package/dist/ScriptChooser-Bl0wisob.js.map +1 -0
  255. package/dist/ScriptChooser-CI4lAYZ1.cjs +2 -0
  256. package/dist/ScriptChooser-CI4lAYZ1.cjs.map +1 -0
  257. package/dist/{ScrollwindowWidget-B-ogJ1hO.cjs → ScrollwindowWidget-BJkQ5uX_.cjs} +2 -2
  258. package/dist/{ScrollwindowWidget-B-ogJ1hO.cjs.map → ScrollwindowWidget-BJkQ5uX_.cjs.map} +1 -1
  259. package/dist/{ScrollwindowWidget-DqexVHaY.js → ScrollwindowWidget-DFkTJ2Ue.js} +2 -2
  260. package/dist/{ScrollwindowWidget-DqexVHaY.js.map → ScrollwindowWidget-DFkTJ2Ue.js.map} +1 -1
  261. package/dist/{SecretsTab-LyEVxDfM.cjs → SecretsTab-B8YTrfQ2.cjs} +2 -2
  262. package/dist/{SecretsTab-LyEVxDfM.cjs.map → SecretsTab-B8YTrfQ2.cjs.map} +1 -1
  263. package/dist/{SecretsTab-CqloYezi.js → SecretsTab-DTdVLi0I.js} +4 -4
  264. package/dist/{SecretsTab-CqloYezi.js.map → SecretsTab-DTdVLi0I.js.map} +1 -1
  265. package/dist/{SettingsTab-DN8wG7j8.js → SettingsTab-CnybxvVj.js} +152 -139
  266. package/dist/SettingsTab-CnybxvVj.js.map +1 -0
  267. package/dist/SettingsTab-_SJLhuk0.cjs +3 -0
  268. package/dist/SettingsTab-_SJLhuk0.cjs.map +1 -0
  269. package/dist/{SignalWidget-CBpKkkdh.cjs → SignalWidget-DC7-NIOj.cjs} +2 -2
  270. package/dist/{SignalWidget-CBpKkkdh.cjs.map → SignalWidget-DC7-NIOj.cjs.map} +1 -1
  271. package/dist/{SignalWidget-DHGdWn0D.js → SignalWidget-jYpXSIfD.js} +2 -2
  272. package/dist/{SignalWidget-DHGdWn0D.js.map → SignalWidget-jYpXSIfD.js.map} +1 -1
  273. package/dist/{SimpleTextDialog-CK4Tl4hP.cjs → SimpleTextDialog-DLdHGmmb.cjs} +2 -2
  274. package/dist/{SimpleTextDialog-CK4Tl4hP.cjs.map → SimpleTextDialog-DLdHGmmb.cjs.map} +1 -1
  275. package/dist/{SimpleTextDialog-CP0v1gSj.js → SimpleTextDialog-Dd3BoNG-.js} +2 -2
  276. package/dist/{SimpleTextDialog-CP0v1gSj.js.map → SimpleTextDialog-Dd3BoNG-.js.map} +1 -1
  277. package/dist/{SpacerWidget-DjPk3E9O.cjs → SpacerWidget-BwwxG8k3.cjs} +2 -2
  278. package/dist/{SpacerWidget-DjPk3E9O.cjs.map → SpacerWidget-BwwxG8k3.cjs.map} +1 -1
  279. package/dist/{SpacerWidget-DzUeDtYi.js → SpacerWidget-CUqvml6o.js} +2 -2
  280. package/dist/{SpacerWidget-DzUeDtYi.js.map → SpacerWidget-CUqvml6o.js.map} +1 -1
  281. package/dist/{SparklineWidget-rqphJPpw.cjs → SparklineWidget-05TlKC-x.cjs} +2 -2
  282. package/dist/{SparklineWidget-rqphJPpw.cjs.map → SparklineWidget-05TlKC-x.cjs.map} +1 -1
  283. package/dist/{SparklineWidget-BfUk2lrY.js → SparklineWidget-CVf1TtjV.js} +4 -4
  284. package/dist/{SparklineWidget-BfUk2lrY.js.map → SparklineWidget-CVf1TtjV.js.map} +1 -1
  285. package/dist/{TabbookWidget-CJqXi4kG.js → TabbookWidget-CTUEpDnn.js} +2 -2
  286. package/dist/{TabbookWidget-CJqXi4kG.js.map → TabbookWidget-CTUEpDnn.js.map} +1 -1
  287. package/dist/{TabbookWidget-DMtbO8Lj.cjs → TabbookWidget-oZre4A6Y.cjs} +2 -2
  288. package/dist/{TabbookWidget-DMtbO8Lj.cjs.map → TabbookWidget-oZre4A6Y.cjs.map} +1 -1
  289. package/dist/TargetPacketItemChooser-BvXBVNLj.cjs +2 -0
  290. package/dist/TargetPacketItemChooser-BvXBVNLj.cjs.map +1 -0
  291. package/dist/{TargetPacketItemChooser-DUODHxax.js → TargetPacketItemChooser-CS2Vvi2U.js} +22 -22
  292. package/dist/TargetPacketItemChooser-CS2Vvi2U.js.map +1 -0
  293. package/dist/{TargetsTab-BxVAyeCA.cjs → TargetsTab-Bc7-iav6.cjs} +2 -2
  294. package/dist/{TargetsTab-BxVAyeCA.cjs.map → TargetsTab-Bc7-iav6.cjs.map} +1 -1
  295. package/dist/{TargetsTab-CG8KNOmE.js → TargetsTab-CGv0GwAF.js} +12 -12
  296. package/dist/{TargetsTab-CG8KNOmE.js.map → TargetsTab-CGv0GwAF.js.map} +1 -1
  297. package/dist/{TextboxWidget-BEgAKlC8.js → TextboxWidget-B0Y1W7GP.js} +4 -4
  298. package/dist/{TextboxWidget-BEgAKlC8.js.map → TextboxWidget-B0Y1W7GP.js.map} +1 -1
  299. package/dist/{TextboxWidget-DVg3_YDk.cjs → TextboxWidget-qSbx4xxD.cjs} +2 -2
  300. package/dist/{TextboxWidget-DVg3_YDk.cjs.map → TextboxWidget-qSbx4xxD.cjs.map} +1 -1
  301. package/dist/{TextfieldWidget-C84uT4WC.js → TextfieldWidget-B8TAf9oU.js} +2 -2
  302. package/dist/{TextfieldWidget-C84uT4WC.js.map → TextfieldWidget-B8TAf9oU.js.map} +1 -1
  303. package/dist/{TextfieldWidget-BJpj8zB4.cjs → TextfieldWidget-cCG7BQ25.cjs} +2 -2
  304. package/dist/{TextfieldWidget-BJpj8zB4.cjs.map → TextfieldWidget-cCG7BQ25.cjs.map} +1 -1
  305. package/dist/{TimeWidget-f5fOoYyh.cjs → TimeWidget-DNkhFoZO.cjs} +2 -2
  306. package/dist/{TimeWidget-f5fOoYyh.cjs.map → TimeWidget-DNkhFoZO.cjs.map} +1 -1
  307. package/dist/{TimeWidget-B1C7VXsk.js → TimeWidget-DewVXks0.js} +3 -3
  308. package/dist/{TimeWidget-B1C7VXsk.js.map → TimeWidget-DewVXks0.js.map} +1 -1
  309. package/dist/{TitleWidget-NPq7zAwI.js → TitleWidget-BAq2LGJF.js} +2 -2
  310. package/dist/{TitleWidget-NPq7zAwI.js.map → TitleWidget-BAq2LGJF.js.map} +1 -1
  311. package/dist/{TitleWidget-nTDE0RIC.cjs → TitleWidget-ChGb6BJW.cjs} +2 -2
  312. package/dist/{TitleWidget-nTDE0RIC.cjs.map → TitleWidget-ChGb6BJW.cjs.map} +1 -1
  313. package/dist/ToolsTab-CB_6hFQF.cjs +2 -0
  314. package/dist/ToolsTab-CB_6hFQF.cjs.map +1 -0
  315. package/dist/{ToolsTab-jE3-AcI0.js → ToolsTab-USmbUvDq.js} +247 -231
  316. package/dist/ToolsTab-USmbUvDq.js.map +1 -0
  317. package/dist/{TopBar-knn2yGed.js → TopBar-B4RDkLs-.js} +2 -2
  318. package/dist/{TopBar-knn2yGed.js.map → TopBar-B4RDkLs-.js.map} +1 -1
  319. package/dist/{TopBar-CnMJSCD4.cjs → TopBar-DzL3L4ih.cjs} +2 -2
  320. package/dist/{TopBar-CnMJSCD4.cjs.map → TopBar-DzL3L4ih.cjs.map} +1 -1
  321. package/dist/TsdbTab-0aYlysh5.js +125 -0
  322. package/dist/TsdbTab-0aYlysh5.js.map +1 -0
  323. package/dist/TsdbTab-H64XGfOO.cjs +2 -0
  324. package/dist/TsdbTab-H64XGfOO.cjs.map +1 -0
  325. package/dist/{UpgradeToEnterpriseDialog-Cs663G4x.cjs → UpgradeToEnterpriseDialog-BBRXrLrL.cjs} +2 -2
  326. package/dist/{UpgradeToEnterpriseDialog-Cs663G4x.cjs.map → UpgradeToEnterpriseDialog-BBRXrLrL.cjs.map} +1 -1
  327. package/dist/{UpgradeToEnterpriseDialog-BwWDur-C.js → UpgradeToEnterpriseDialog-DTmnp8xy.js} +2 -2
  328. package/dist/{UpgradeToEnterpriseDialog-BwWDur-C.js.map → UpgradeToEnterpriseDialog-DTmnp8xy.js.map} +1 -1
  329. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-B75KLE6R.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js} +3790 -3699
  330. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js.map +1 -0
  331. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BBqfsHYh.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs} +29 -29
  332. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BBqfsHYh.cjs.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs.map} +1 -1
  333. package/dist/VWidget-0KwtSssI.js +191 -0
  334. package/dist/VWidget-0KwtSssI.js.map +1 -0
  335. package/dist/VWidget-SWmlQP30.cjs +2 -0
  336. package/dist/VWidget-SWmlQP30.cjs.map +1 -0
  337. package/dist/{ValueWidget-CpygRYKj.js → ValueWidget-BGNqaaRs.js} +4 -4
  338. package/dist/{ValueWidget-CpygRYKj.js.map → ValueWidget-BGNqaaRs.js.map} +1 -1
  339. package/dist/{ValueWidget-Bzds4cWd.cjs → ValueWidget-BfxZq1LD.cjs} +2 -2
  340. package/dist/{ValueWidget-Bzds4cWd.cjs.map → ValueWidget-BfxZq1LD.cjs.map} +1 -1
  341. package/dist/{ValuelimitsbarWidget-CROYfqTR.js → ValuelimitsbarWidget-B6mH4PdF.js} +4 -4
  342. package/dist/{ValuelimitsbarWidget-CROYfqTR.js.map → ValuelimitsbarWidget-B6mH4PdF.js.map} +1 -1
  343. package/dist/{ValuelimitsbarWidget-CeA4_9vz.cjs → ValuelimitsbarWidget-m5fBewLy.cjs} +2 -2
  344. package/dist/{ValuelimitsbarWidget-CeA4_9vz.cjs.map → ValuelimitsbarWidget-m5fBewLy.cjs.map} +1 -1
  345. package/dist/{ValuelimitscolumnWidget-Vn80PsIX.cjs → ValuelimitscolumnWidget-D_5XZhiD.cjs} +2 -2
  346. package/dist/{ValuelimitscolumnWidget-Vn80PsIX.cjs.map → ValuelimitscolumnWidget-D_5XZhiD.cjs.map} +1 -1
  347. package/dist/{ValuelimitscolumnWidget-PCaulvxr.js → ValuelimitscolumnWidget-DlX90_-6.js} +4 -4
  348. package/dist/{ValuelimitscolumnWidget-PCaulvxr.js.map → ValuelimitscolumnWidget-DlX90_-6.js.map} +1 -1
  349. package/dist/{ValuerangebarWidget-DjFTQ2yf.cjs → ValuerangebarWidget-C3XFFRhf.cjs} +2 -2
  350. package/dist/{ValuerangebarWidget-DjFTQ2yf.cjs.map → ValuerangebarWidget-C3XFFRhf.cjs.map} +1 -1
  351. package/dist/{ValuerangebarWidget-Bn9vuPz4.js → ValuerangebarWidget-C9xyLOJO.js} +4 -4
  352. package/dist/{ValuerangebarWidget-Bn9vuPz4.js.map → ValuerangebarWidget-C9xyLOJO.js.map} +1 -1
  353. package/dist/{VerticalWidget-CW7HqXPz.js → VerticalWidget-0UbbE2g3.js} +2 -2
  354. package/dist/{VerticalWidget-CW7HqXPz.js.map → VerticalWidget-0UbbE2g3.js.map} +1 -1
  355. package/dist/{VerticalWidget-Cw5zklAW.cjs → VerticalWidget-D-U8cue6.cjs} +2 -2
  356. package/dist/{VerticalWidget-Cw5zklAW.cjs.map → VerticalWidget-D-U8cue6.cjs.map} +1 -1
  357. package/dist/{VerticalboxWidget-CLuqkhUX.cjs → VerticalboxWidget-C4nkJhEd.cjs} +2 -2
  358. package/dist/{VerticalboxWidget-CLuqkhUX.cjs.map → VerticalboxWidget-C4nkJhEd.cjs.map} +1 -1
  359. package/dist/{VerticalboxWidget-D12SNEH1.js → VerticalboxWidget-efbeOAKE.js} +5 -5
  360. package/dist/{VerticalboxWidget-D12SNEH1.js.map → VerticalboxWidget-efbeOAKE.js.map} +1 -1
  361. package/dist/{Widget-Cj7mgG8B.js → Widget-CGePksBA.js} +2 -2
  362. package/dist/{Widget-Cj7mgG8B.js.map → Widget-CGePksBA.js.map} +1 -1
  363. package/dist/{Widget-C5yVe7V0.cjs → Widget-D0drYWOT.cjs} +2 -2
  364. package/dist/{Widget-C5yVe7V0.cjs.map → Widget-D0drYWOT.cjs.map} +1 -1
  365. package/dist/components.cjs +2 -2
  366. package/dist/components.cjs.map +1 -1
  367. package/dist/components.js +23 -23
  368. package/dist/components.js.map +1 -1
  369. package/dist/index-BJrYCoCB.js +2550 -0
  370. package/dist/index-BJrYCoCB.js.map +1 -0
  371. package/dist/index-C7Uj4U87.js +1883 -0
  372. package/dist/index-C7Uj4U87.js.map +1 -0
  373. package/dist/index-Cmp6oZpm.cjs +7 -0
  374. package/dist/index-Cmp6oZpm.cjs.map +1 -0
  375. package/dist/index-DqKiZufS.cjs +7 -0
  376. package/dist/index-DqKiZufS.cjs.map +1 -0
  377. package/dist/plugins.cjs +2 -2
  378. package/dist/plugins.cjs.map +1 -1
  379. package/dist/plugins.js +27 -27
  380. package/dist/plugins.js.map +1 -1
  381. package/dist/purify.es-4pyphLiB.cjs +3 -0
  382. package/dist/purify.es-4pyphLiB.cjs.map +1 -0
  383. package/dist/{purify.es-DcWaZU6I.js → purify.es-BPDBzHtc.js} +115 -115
  384. package/dist/purify.es-BPDBzHtc.js.map +1 -0
  385. package/dist/{settings-DRbrVc8H.js → settings-CjmDHCpE.js} +2 -2
  386. package/dist/{settings-DRbrVc8H.js.map → settings-CjmDHCpE.js.map} +1 -1
  387. package/dist/{settings-BAxfkWAJ.cjs → settings-l1j_GGzu.cjs} +2 -2
  388. package/dist/{settings-BAxfkWAJ.cjs.map → settings-l1j_GGzu.cjs.map} +1 -1
  389. package/dist/tools/admin.cjs +1 -6
  390. package/dist/tools/admin.cjs.map +1 -1
  391. package/dist/tools/admin.js +6 -2788
  392. package/dist/tools/admin.js.map +1 -1
  393. package/dist/tools/base.cjs +1 -1
  394. package/dist/tools/base.cjs.map +1 -1
  395. package/dist/tools/base.js +110 -89
  396. package/dist/tools/base.js.map +1 -1
  397. package/dist/tools/calendar.cjs +1 -1
  398. package/dist/tools/calendar.js +1 -1
  399. package/dist/tools/scriptrunner.cjs +8 -8
  400. package/dist/tools/scriptrunner.cjs.map +1 -1
  401. package/dist/tools/scriptrunner.js +1478 -1070
  402. package/dist/tools/scriptrunner.js.map +1 -1
  403. package/dist/vue-common.css +1 -1
  404. package/dist/widgets.cjs +1 -1
  405. package/dist/widgets.js +73 -70
  406. package/dist/widgets.js.map +1 -1
  407. package/package.json +12 -12
  408. package/dist/BarColumn-CB-tgZUT.js.map +0 -1
  409. package/dist/BarColumn-D5XXk4Pw.cjs.map +0 -1
  410. package/dist/DetailsDialog-BI3oNhTn.js.map +0 -1
  411. package/dist/DetailsDialog-fCmZJxvS.cjs +0 -2
  412. package/dist/DetailsDialog-fCmZJxvS.cjs.map +0 -1
  413. package/dist/EventListDialog-BMw8Gl-0.js.map +0 -1
  414. package/dist/EventListDialog-Dn5Kb-n3.cjs +0 -2
  415. package/dist/EventListDialog-Dn5Kb-n3.cjs.map +0 -1
  416. package/dist/FormatvalueWidget-npk9X-15.cjs +0 -2
  417. package/dist/Graph-B2Riixiv.cjs +0 -2
  418. package/dist/Graph-B2Riixiv.cjs.map +0 -1
  419. package/dist/Graph-BdLZrFnQ.js.map +0 -1
  420. package/dist/LimitscolorWidget-CdXYGMdR.cjs +0 -2
  421. package/dist/LimitscolorWidget-CdXYGMdR.cjs.map +0 -1
  422. package/dist/LimitscolorWidget-DRUPC2IF.js +0 -159
  423. package/dist/LimitscolorWidget-DRUPC2IF.js.map +0 -1
  424. package/dist/PackagesTab-ONxpjnC_.cjs +0 -2
  425. package/dist/PluginsTab-BQ0LCHQp.js +0 -1561
  426. package/dist/PluginsTab-BQ0LCHQp.js.map +0 -1
  427. package/dist/PluginsTab-crv4-PWb.cjs +0 -6
  428. package/dist/PluginsTab-crv4-PWb.cjs.map +0 -1
  429. package/dist/RangebarWidget-14uZ2825.cjs.map +0 -1
  430. package/dist/RangebarWidget-C461bAvq.js.map +0 -1
  431. package/dist/ScriptChooser-B6bc-chN.cjs +0 -2
  432. package/dist/ScriptChooser-B6bc-chN.cjs.map +0 -1
  433. package/dist/ScriptChooser-BLsPk7_c.js.map +0 -1
  434. package/dist/SettingsTab-CfJUZWp0.cjs +0 -3
  435. package/dist/SettingsTab-CfJUZWp0.cjs.map +0 -1
  436. package/dist/SettingsTab-DN8wG7j8.js.map +0 -1
  437. package/dist/TargetPacketItemChooser-B8TPlfAu.cjs +0 -2
  438. package/dist/TargetPacketItemChooser-B8TPlfAu.cjs.map +0 -1
  439. package/dist/TargetPacketItemChooser-DUODHxax.js.map +0 -1
  440. package/dist/ToolsTab-DXN-84u5.cjs +0 -2
  441. package/dist/ToolsTab-DXN-84u5.cjs.map +0 -1
  442. package/dist/ToolsTab-jE3-AcI0.js.map +0 -1
  443. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-B75KLE6R.js.map +0 -1
  444. package/dist/VWidget-BU-OM9DB.js +0 -190
  445. package/dist/VWidget-BU-OM9DB.js.map +0 -1
  446. package/dist/VWidget-HIRYll0F.cjs +0 -2
  447. package/dist/VWidget-HIRYll0F.cjs.map +0 -1
  448. package/dist/index-Cq7Gm1QU.cjs +0 -7
  449. package/dist/index-Cq7Gm1QU.cjs.map +0 -1
  450. package/dist/index-D3xlpZgv.js +0 -1794
  451. package/dist/index-D3xlpZgv.js.map +0 -1
  452. package/dist/purify.es-B336bjAn.cjs +0 -3
  453. package/dist/purify.es-B336bjAn.cjs.map +0 -1
  454. package/dist/purify.es-DcWaZU6I.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";const N=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs"),D=require("./timeFilters-CRNRsUsb.cjs"),e=require("vue"),k=require("./CustomIcon-8F08upeg.cjs"),T=require("./ScriptChooser-CI4lAYZ1.cjs"),b=require("./OpenC3TimePicker-bbdbKTv_.cjs");require("./store-CiS35N-w.cjs");require("single-spa");const B=require("./parse-DgZTYocC.cjs"),K=require("./addMonths-BhOW2mOW.cjs"),x=require("./format-DOZQNf-X.cjs");function R(a,t,i){const{years:d=0,months:o=0,weeks:n=0,days:l=0,hours:s=0,minutes:y=0,seconds:m=0}=t,u=x.toDate(a,i?.in),h=o||d?K.addMonths(u,o+d*12):u,f=l||n?B.addDays(h,l+n*7):h,C=y+s*60,V=(m+C*60)*1e3;return x.constructFrom(a,+f+V)}const E={props:{date:{type:String},time:{type:String},timeZone:{type:String}},data(){return{startDate:"",startTime:"",endDate:"",endTime:""}},methods:{calcStartDateTime:function(){this.date?(this.startDate=this.date,this.endDate=this.date):(this.startDate=x.format(new Date,"yyyy-MM-dd"),this.endDate=x.format(new Date,"yyyy-MM-dd"));let a=1e3*60*30,t=null;this.time?(t=B.parse(this.time,"HH:mm:ss",new Date),t=new Date(Math.floor(t.getTime()/a)*a)):t=new Date(Math.ceil(new Date().getTime()/a)*a),this.startTime=x.format(t,"HH:mm:ss"),this.endTime=x.format(R(t,{minutes:30}),"HH:mm:ss")}}},z={components:{EnvironmentChooser:T.EnvironmentChooser,ScriptChooser:T.ScriptChooser,CommandEditor:T.CommandEditor,OpenC3TimePicker:b.OpenC3TimePicker},mixins:[E,D.TimeFilters],props:{modelValue:Boolean,timelines:{type:Array,required:!0},activity:{type:Object,default:null}},emits:["update:modelValue","update"],data(){return{timeline:null,dialogStep:1,kind:"",types:["COMMAND","SCRIPT","RESERVE"],activityData:"",activityEnvironment:[],customTitle:"",notes:"",rules:{required:a=>!!a||"Required"},recurring:!1,recurringEndDate:null,recurringEndTime:null,frequency:90,timeSpan:"minutes",timeSpans:["minutes","hours","days"],showCommandDialog:!1,dialogTitle:"Add Command",dialogError:"",dialogCmdString:null}},computed:{timeError:function(){const a=new Date,t=Date.parse(`${this.startDate}T${this.startTime}`),i=Date.parse(`${this.endDate}T${this.endTime}`);return t===i?"Invalid start, end time. Activity must have different start and end times.":a>t?"Invalid start time. Activity must be in the future.":t>i?"Invalid start time. Activity start before end.":null},typeError:function(){return this.timeline?this.kind!=="RESERVE"&&!this.activityData?"No data is selected or inputted":null:"Activity must have a timeline selected."},timelineNames:function(){return this.timelines.map(a=>a.name)},show:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}},validationError:function(){return!!this.timeError||!this.timeline}},mounted:function(){this.updateValues()},methods:{changeKind:function(a){a!==this.kind&&(this.kind=a,this.activityData="")},fileHandler:function(a){this.activityData=a},updateValues:function(){if(this.dialogStep=1,this.activity){this.timeline=this.activity.name;const a=new Date(this.activity.start*1e3),t=new Date(this.activity.stop*1e3);if(this.startDate=this.formatDate(a,this.timeZone),this.startTime=this.formatTimeHMS(a,this.timeZone),this.endDate=this.formatDate(t,this.timeZone),this.endTime=this.formatTimeHMS(t,this.timeZone),this.kind=this.activity.kind.toUpperCase(),this.activityData=this.activity.data[this.activity.kind],this.activityEnvironment=this.activity.data.environment,this.customTitle=this.activity.data.customTitle||"",this.notes=this.activity.data.notes||"",this.activity.recurring?.uuid){this.recurring=!0;const i=new Date(this.activity.recurring.end*1e3);this.recurringEndDate=this.formatDate(i,this.timeZone),this.recurringEndTime=this.formatTimeHMS(i,this.timeZone),this.frequency=this.activity.recurring.frequency,this.timeSpan=this.activity.recurring.span}}else this.calcStartDateTime(),this.recurringEndDate=this.startDate,this.recurringEndTime=this.startTime,this.kind="",this.activityData="",this.activityEnvironment=[],this.customTitle="",this.notes="",this.timeline=this.timelineNames[0]},clearHandler:function(){this.show=!this.show},submitHandler(){let a=null,t=null,i=null;this.timeZone==="local"?(a=new Date(this.startDate+" "+this.startTime).toISOString(),t=new Date(this.endDate+" "+this.endTime).toISOString(),this.recurring&&(i=new Date(this.recurringEndDate+" "+this.recurringEndTime).toISOString())):(a=new Date(this.startDate+" "+this.startTime+"Z").toISOString(),t=new Date(this.endDate+" "+this.endTime+"Z").toISOString(),this.recurring&&(i=new Date(this.recurringEndDate+" "+this.recurringEndTime+"Z").toISOString()));const d=this.kind.toLowerCase();let o={environment:this.activityEnvironment,customTitle:this.customTitle,notes:this.notes};o[d]=this.activityData;let n={};this.recurring&&(n={frequency:this.frequency,span:this.timeSpan,end:i}),this.activity?N.Fr.put(`/openc3-api/timeline/${this.activity.name}/activity/${this.activity.start}`,{data:{start:a,stop:t,kind:d,data:o,recurring:n}}).then(l=>{const s=this.formatSeconds(new Date(l.data.start*1e3));this.$notify.normal({title:"Updated Activity",body:`${s} (${l.data.start}) on timeline: ${l.data.name}`}),this.$emit("update",l.data),this.show=!this.show}).catch(l=>{this.show=!this.show}):N.Fr.post(`/openc3-api/timeline/${this.timeline}/activities`,{data:{start:a,stop:t,kind:d,data:o,recurring:n}}).then(l=>{const s=this.formatSeconds(new Date(l.data.start*1e3));this.$notify.normal({title:"Created Activity",body:`${s} (${l.data.start}) on timeline: ${l.data.name}`}),this.$emit("update",l.data),this.show=!this.show}).catch(l=>{this.show=!this.show}),this.clearHandler()},editItem:function(){this.dialogTitle="Edit Command",this.dialogCmdString=this.activityData,this.showCommandDialog=!0},closeCommandDialog:function(){this.showCommandDialog=!1,this.dialogCmdString=null,this.dialogError=""},clearDialogError:function(){this.dialogError=""},updateCommand:function(){let a="";try{a=this.$refs.commandEditor.getCmdString()}catch(t){this.dialogError=t.message||"Please fix command parameters";return}this.activityData=a,this.showCommandDialog=!1}}},j={key:0},L={key:1},W={class:"pr-2"},G=["textContent"],J={class:"pr-2"},Q={key:0},X={key:1,class:"ma-3"},Y={key:2},$=["textContent"],ee={key:0,class:"error-message"},te={class:"flex-grow-1"};function ae(a,t,i,d,o,n){const l=e.resolveComponent("v-spacer"),s=e.resolveComponent("v-btn"),y=e.resolveComponent("v-toolbar"),m=e.resolveComponent("v-row"),u=e.resolveComponent("v-select"),h=e.resolveComponent("v-text-field"),f=e.resolveComponent("v-textarea"),C=e.resolveComponent("OpenC3TimePicker"),_=e.resolveComponent("v-checkbox"),V=e.resolveComponent("v-col"),w=e.resolveComponent("v-card-text"),p=e.resolveComponent("script-chooser"),v=e.resolveComponent("environment-chooser"),c=e.resolveComponent("v-stepper"),g=e.resolveComponent("v-card"),U=e.resolveComponent("v-dialog"),O=e.resolveComponent("v-card-title"),Z=e.resolveComponent("v-icon"),F=e.resolveComponent("command-editor"),P=e.resolveComponent("v-card-actions");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(U,{modelValue:n.show,"onUpdate:modelValue":t[19]||(t[19]=r=>n.show=r),persistent:"",width:"600",onKeydown:e.withKeys(n.clearHandler,["esc"])},{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.activity?(e.openBlock(),e.createElementBlock("span",j,"Edit Activity")):(e.openBlock(),e.createElementBlock("span",L,"Create Activity")),e.createVNode(l),e.createVNode(s,{icon:"mdi-close-box",variant:"text",density:"compact","data-test":"close-note-icon",onClick:n.clearHandler},null,8,["onClick"])]),_:1}),e.createVNode(c,{modelValue:o.dialogStep,"onUpdate:modelValue":t[18]||(t[18]=r=>o.dialogStep=r),items:["Activity Times","Activity Type"]},e.createSlots({"item.1":e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createElementVNode("div",W,[e.createVNode(u,{modelValue:o.timeline,"onUpdate:modelValue":t[2]||(t[2]=r=>o.timeline=r),density:"compact","hide-details":"",variant:"outlined",items:n.timelineNames,label:"Timeline","data-test":"activity-select-timeline",class:"pb-2"},null,8,["modelValue","items"]),e.createVNode(h,{modelValue:o.customTitle,"onUpdate:modelValue":t[3]||(t[3]=r=>o.customTitle=r),type:"text",label:"Custom Title",class:"pb-2","data-test":"activity-custom-title","hide-details":"",variant:"outlined",density:"compact"},null,8,["modelValue"]),e.createVNode(f,{modelValue:o.notes,"onUpdate:modelValue":t[4]||(t[4]=r=>o.notes=r),label:"Notes",class:"py-2 mb-2","data-test":"activity-notes","hide-details":"",variant:"outlined",density:"compact",rows:"3"},null,8,["modelValue"]),e.createVNode(m,{dense:""},{default:e.withCtx(()=>[e.createVNode(h,{modelValue:a.startDate,"onUpdate:modelValue":t[5]||(t[5]=r=>a.startDate=r),type:"date",label:"Start Date",class:"mx-1",rules:[o.rules.required],"data-test":"activity-start-date"},null,8,["modelValue","rules"]),e.createVNode(C,{modelValue:a.startTime,"onUpdate:modelValue":t[6]||(t[6]=r=>a.startTime=r),label:"Start Time","text-field-class":"mx-1",rules:[o.rules.required],"data-test":"activity-start-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(m,{dense:""},{default:e.withCtx(()=>[e.createVNode(h,{modelValue:a.endDate,"onUpdate:modelValue":t[7]||(t[7]=r=>a.endDate=r),type:"date",label:"End Date",class:"mx-1",rules:[o.rules.required],"data-test":"activity-end-date"},null,8,["modelValue","rules"]),e.createVNode(C,{modelValue:a.endTime,"onUpdate:modelValue":t[8]||(t[8]=r=>a.endTime=r),label:"End Time","text-field-class":"mx-1",rules:[o.rules.required],"data-test":"activity-end-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(m,{class:"pl-3"},{default:e.withCtx(()=>[e.createVNode(_,{modelValue:o.recurring,"onUpdate:modelValue":t[9]||(t[9]=r=>o.recurring=r),disabled:!!i.activity,label:"Recurring","hide-details":"","data-test":"recurring"},null,8,["modelValue","disabled"])]),_:1}),o.recurring?(e.openBlock(),e.createBlock(m,{key:0},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createElementVNode("div",{class:"repeat"},"Repeat every",-1)])]),_:1}),e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(h,{modelValue:o.frequency,"onUpdate:modelValue":t[10]||(t[10]=r=>o.frequency=r),disabled:!!i.activity,density:"compact",variant:"outlined","single-line":"","hide-details":"","data-test":"recurring-frequency"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(u,{modelValue:o.timeSpan,"onUpdate:modelValue":t[11]||(t[11]=r=>o.timeSpan=r),disabled:!!i.activity,items:o.timeSpans,style:{},"hide-details":"",density:"compact",variant:"outlined","data-test":"recurring-span"},null,8,["modelValue","disabled","items"])]),_:1})]),_:1})):e.createCommentVNode("",!0),o.recurring?(e.openBlock(),e.createBlock(m,{key:1,style:{"padding-bottom":"10px"}},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[...t[28]||(t[28]=[e.createElementVNode("div",{class:"repeat"},"Ending",-1)])]),_:1}),e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(h,{modelValue:o.recurringEndDate,"onUpdate:modelValue":t[12]||(t[12]=r=>o.recurringEndDate=r),type:"date",label:"End Date",class:"mx-1",rules:[o.rules.required],disabled:!!i.activity,"data-test":"recurring-end-date"},null,8,["modelValue","rules","disabled"])]),_:1}),e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(C,{modelValue:o.recurringEndTime,"onUpdate:modelValue":t[13]||(t[13]=r=>o.recurringEndTime=r),label:"End Time","text-field-class":"mx-1",rules:[o.rules.required],disabled:!!i.activity,"data-test":"recurring-end-time"},null,8,["modelValue","rules","disabled"])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(m,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.timeError)},null,8,G),[[e.vShow,n.timeError]])]),_:1})])]),_:1})]),"item.2":e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createElementVNode("div",J,[e.createVNode(u,{modelValue:o.kind,"onUpdate:modelValue":t[14]||(t[14]=r=>o.kind=r),density:"compact","hide-details":"",variant:"outlined",items:o.types,label:"Activity Type","data-test":"activity-select-type",class:"pb-2"},null,8,["modelValue","items"]),o.kind==="COMMAND"?(e.openBlock(),e.createElementBlock("div",Q,[e.createVNode(f,{modelValue:o.activityData,"onUpdate:modelValue":t[15]||(t[15]=r=>o.activityData=r),label:"Command Input",rows:"1",readonly:"","auto-grow":"","data-test":"activity-cmd","onClick:control":t[16]||(t[16]=r=>n.editItem())},null,8,["modelValue"])])):o.kind==="SCRIPT"?(e.openBlock(),e.createElementBlock("div",X,[e.createVNode(p,{"model-value":o.activityData,onFile:n.fileHandler},null,8,["model-value","onFile"]),e.createVNode(v,{modelValue:o.activityEnvironment,"onUpdate:modelValue":t[17]||(t[17]=r=>o.activityEnvironment=r)},null,8,["modelValue"])])):(e.openBlock(),e.createElementBlock("div",Y,[...t[29]||(t[29]=[e.createElementVNode("span",{class:"ma-2"}," No required input ",-1)])])),e.withDirectives(e.createVNode(m,{class:"mt-2"},{default:e.withCtx(()=>[e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.typeError)},null,8,$)]),_:1},512),[[e.vShow,n.typeError]])])]),_:1})]),_:2},[o.dialogStep===1?{name:"actions",fn:e.withCtx(()=>[e.createVNode(m,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(l),e.createVNode(s,{color:"primary",disabled:n.validationError,onClick:t[0]||(t[0]=r=>o.dialogStep=2)},{default:e.withCtx(()=>[...t[23]||(t[23]=[e.createTextVNode(" Next ",-1)])]),_:1},8,["disabled"])]),_:1})]),key:"0"}:void 0,o.dialogStep===2?{name:"actions",fn:e.withCtx(()=>[e.createVNode(m,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(s,{variant:"text",onClick:t[1]||(t[1]=()=>o.dialogStep-=1)},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode(" Previous ",-1)])]),_:1}),e.createVNode(l),e.createVNode(s,{variant:"outlined",class:"mr-4",onClick:n.clearHandler},{default:e.withCtx(()=>[...t[25]||(t[25]=[e.createTextVNode(" Cancel ",-1)])]),_:1},8,["onClick"]),e.createVNode(s,{type:"submit",color:"primary",disabled:!!a.error,onClick:e.withModifiers(n.submitHandler,["prevent"])},{default:e.withCtx(()=>[...t[26]||(t[26]=[e.createTextVNode(" Ok ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),key:"1"}:void 0]),1032,["modelValue"])]),_:1})]),_:1},8,["modelValue","onKeydown"]),e.createVNode(U,{modelValue:o.showCommandDialog,"onUpdate:modelValue":t[22]||(t[22]=r=>o.showCommandDialog=r),"max-width":"1200",persistent:"",scrollable:"",onKeydown:e.withKeys(n.closeCommandDialog,["esc"])},{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(O,{class:"d-flex align-center"},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(o.dialogTitle),1),e.createVNode(l),e.createVNode(s,{icon:"mdi-close",variant:"text",onClick:n.closeCommandDialog},null,8,["onClick"])]),_:1}),e.createVNode(w,{class:"pa-0"},{default:e.withCtx(()=>[o.dialogError?(e.openBlock(),e.createElementBlock("div",ee,[e.createVNode(Z,{class:"mr-2",color:"error"},{default:e.withCtx(()=>[...t[30]||(t[30]=[e.createTextVNode("mdi-alert-circle",-1)])]),_:1}),e.createElementVNode("span",te,e.toDisplayString(o.dialogError),1),e.createVNode(s,{icon:"mdi-close",size:"small",variant:"text",color:"error",class:"ml-2",onClick:n.clearDialogError},null,8,["onClick"])])):e.createCommentVNode("",!0),e.createVNode(F,{ref:"commandEditor","send-disabled":!1,"states-in-hex":a.statesInHex,"show-ignored-params":a.showIgnoredParams,"cmd-raw":a.cmdRaw,"cmd-string":o.dialogCmdString,"show-command-button":!1,onBuildCmd:t[20]||(t[20]=r=>n.updateCommand(r))},null,8,["states-in-hex","show-ignored-params","cmd-raw","cmd-string"])]),_:1}),e.createVNode(P,null,{default:e.withCtx(()=>[e.createVNode(l),e.createVNode(s,{variant:"outlined",onClick:n.closeCommandDialog},{default:e.withCtx(()=>[...t[31]||(t[31]=[e.createTextVNode(" Cancel ",-1)])]),_:1},8,["onClick"]),e.createVNode(s,{color:"primary",variant:"flat",onClick:t[21]||(t[21]=r=>n.updateCommand())},{default:e.withCtx(()=>[...t[32]||(t[32]=[e.createTextVNode(" Update Command ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","onKeydown"])])}const M=k._export_sfc(z,[["render",ae],["__scopeId","data-v-09a72d16"]]),oe={components:{},props:{modelValue:{type:String,required:!0}},emits:["update:modelValue"],computed:{color:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}},swatches:function(){return["#005a8f","#003784","#8F3400","#df1368","#ff5252","#df323b","#9f0010","#2d9437","#004700","#db7200","#802700","#0f2941"]}},methods:{}};function ne(a,t,i,d,o,n){const l=e.resolveComponent("v-icon"),s=e.resolveComponent("v-list-item"),y=e.resolveComponent("v-select");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(y,{modelValue:n.color,"onUpdate:modelValue":t[0]||(t[0]=m=>n.color=m),label:"Color",items:n.swatches},{"prepend-inner":e.withCtx(()=>[e.createVNode(l,{color:n.color},{default:e.withCtx(()=>[...t[1]||(t[1]=[e.createTextVNode(" mdi-square ",-1)])]),_:1},8,["color"])]),item:e.withCtx(({props:m,item:u})=>[e.createVNode(s,e.mergeProps(m,{value:u.raw}),{prepend:e.withCtx(()=>[e.createVNode(l,{color:u.raw},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode(" mdi-square ",-1)])]),_:1},8,["color"])]),_:2},1040,["value"])]),_:1},8,["modelValue","items"])])}const S=k._export_sfc(oe,[["render",ne]]),q={methods:{deleteItem(a){let t=null,i="";switch(a.type.toLowerCase()){case"activity":i="activity",t=a.activity.start;break;case"metadata":i="metadata",t=a.metadata.start;break;case"note":i="notes",t=a.note.start;break}this.$dialog.confirm(`Are you sure you want to remove ${a.typeStr} at ${a.startStr}`,{okText:"Delete",cancelText:"Cancel"}).then(()=>N.Fr.delete(`/openc3-api/${i}/${t}`)).then(()=>{this.$emit("delete",a),this.$notify.normal({title:`Deleted ${a.typeStr}`,body:`Deleted ${a.typeStr} at ${a.startStr}`})}).catch(()=>{})}}},ie={components:{},props:{modelValue:{type:Array,required:!0}},emits:["update:modelValue"],data(){return{}},computed:{metadata:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}}},methods:{newMetadata:function(){this.metadata.push({key:"",value:""})},rm:function(a){this.metadata.splice(a,1)}}},le={scope:"col",class:"text-right",width:"52px"};function re(a,t,i,d,o,n){const l=e.resolveComponent("v-btn"),s=e.resolveComponent("v-text-field"),y=e.resolveComponent("v-table");return e.openBlock(),e.createElementBlock("div",null,[t[2]||(t[2]=e.createElementVNode("span",null," Add metadata key value(s)",-1)),e.createVNode(y,{density:"compact"},{default:e.withCtx(()=>[e.createElementVNode("tbody",null,[e.createElementVNode("tr",null,[t[0]||(t[0]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Key",-1)),t[1]||(t[1]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Value",-1)),e.createElementVNode("th",le,[e.createVNode(l,{icon:"mdi-plus",variant:"text","data-test":"new-metadata-icon",onClick:n.newMetadata},null,8,["onClick"])])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.metadata,(m,u)=>(e.openBlock(),e.createElementBlock("tr",{key:`tr-${u}`},[e.createElementVNode("td",null,[e.createVNode(s,{modelValue:m.key,"onUpdate:modelValue":h=>m.key=h,density:"compact",type:"text","hide-details":"","data-test":`key-${u}`},null,8,["modelValue","onUpdate:modelValue","data-test"])]),e.createElementVNode("td",null,[e.createVNode(s,{modelValue:m.value,"onUpdate:modelValue":h=>m.value=h,density:"compact",type:"text","hide-details":"","data-test":`value-${u}`},null,8,["modelValue","onUpdate:modelValue","data-test"])]),e.createElementVNode("td",null,[e.createVNode(l,{icon:"mdi-delete",variant:"text","data-test":`delete-metadata-icon-${u}`,onClick:h=>n.rm(u)},null,8,["data-test","onClick"])])]))),128))])]),_:1})])}const A=k._export_sfc(ie,[["render",re]]),se={components:{ColorSelectForm:S,MetadataInputForm:A,OpenC3TimePicker:b.OpenC3TimePicker},mixins:[E,D.TimeFilters],props:{modelValue:Boolean,metadata:{type:Object,default:null}},emits:["update:modelValue","update"],data(){return{dialogStep:1,color:"#003784",metadataVals:[],rules:{required:a=>!!a||"Required"}}},computed:{typeError:function(){return this.color?this.metadataVals.length<1?"Please enter a value in the metadata table.":this.metadataVals.find(t=>t.key===""||t.value==="")?"Missing or empty key, value in the metadata table.":null:"A color is required."},show:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}}},mounted:function(){this.updateValues()},methods:{updateValues:function(){if(this.dialogStep=1,this.metadata){const a=new Date(this.metadata.start*1e3);this.startDate=this.formatDate(a,this.timeZone),this.startTime=this.formatTimeHMS(a,this.timeZone),this.color=this.metadata.color,this.metadataVals=Object.keys(this.metadata.metadata).map(t=>({key:t,value:this.metadata.metadata[t]}))}else this.calcStartDateTime(),this.color="#003784",this.metadataVals=[]},clearHandler:function(){this.show=!this.show},submitHandler(){const a=this.color,t=this.metadataVals.reduce((d,o)=>(d[o.key]=o.value,d),{}),i={color:a,metadata:t};this.timeZone==="local"?i.start=new Date(this.startDate+" "+this.startTime).toISOString():i.start=new Date(this.startDate+" "+this.startTime+"Z").toISOString(),this.metadata?N.Fr.put(`/openc3-api/metadata/${this.metadata.start}`,{data:i}).then(d=>{this.$notify.normal({title:"Updated Metadata",body:`Metadata updated: (${d.data.start})`}),this.$emit("update",d.data),this.show=!this.show}):N.Fr.post("/openc3-api/metadata",{data:i}).then(d=>{this.$notify.normal({title:"Created new Metadata",body:`Metadata: (${d.data.start})`}),this.$emit("update",d.data),this.show=!this.show})}}},de={key:0},me={key:1},ce={class:"pa-2"},ue={class:"pa-2"},pe={style:{"min-height":"200px"}},he=["textContent"];function ve(a,t,i,d,o,n){const l=e.resolveComponent("v-spacer"),s=e.resolveComponent("v-btn"),y=e.resolveComponent("v-toolbar"),m=e.resolveComponent("v-row"),u=e.resolveComponent("color-select-form"),h=e.resolveComponent("v-text-field"),f=e.resolveComponent("OpenC3TimePicker"),C=e.resolveComponent("v-card-text"),_=e.resolveComponent("metadata-input-form"),V=e.resolveComponent("v-stepper"),w=e.resolveComponent("v-card"),p=e.resolveComponent("v-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(p,{modelValue:n.show,"onUpdate:modelValue":t[6]||(t[6]=v=>n.show=v),persistent:"",width:"600",onKeydown:e.withKeys(n.clearHandler,["esc"])},{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.metadata?(e.openBlock(),e.createElementBlock("span",de,"Update Metadata")):(e.openBlock(),e.createElementBlock("span",me,"Create Metadata")),e.createVNode(l),e.createVNode(s,{icon:"mdi-close-box",variant:"text",density:"compact","data-test":"close-metadata-icon",onClick:n.clearHandler},null,8,["onClick"])]),_:1}),e.createVNode(V,{modelValue:o.dialogStep,"onUpdate:modelValue":t[5]||(t[5]=v=>o.dialogStep=v),editable:"",items:["Metadata Times","Metadata Input"]},e.createSlots({"item.1":e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[e.createElementVNode("div",ce,[e.createVNode(u,{modelValue:o.color,"onUpdate:modelValue":t[1]||(t[1]=v=>o.color=v)},null,8,["modelValue"]),e.createVNode(m,{dense:""},{default:e.withCtx(()=>[e.createVNode(h,{modelValue:a.startDate,"onUpdate:modelValue":t[2]||(t[2]=v=>a.startDate=v),type:"date",label:"Start Date",class:"mx-1",rules:[o.rules.required],"data-test":"metadata-start-date"},null,8,["modelValue","rules"]),e.createVNode(f,{modelValue:a.startTime,"onUpdate:modelValue":t[3]||(t[3]=v=>a.startTime=v),label:"Start Time","text-field-class":"mx-1",rules:[o.rules.required],"data-test":"metadata-start-time"},null,8,["modelValue","rules"])]),_:1})])]),_:1})]),"item.2":e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[e.createElementVNode("div",ue,[e.createElementVNode("div",pe,[e.createVNode(_,{modelValue:o.metadataVals,"onUpdate:modelValue":t[4]||(t[4]=v=>o.metadataVals=v)},null,8,["modelValue"])]),e.withDirectives(e.createVNode(m,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.typeError)},null,8,he)]),_:1},512),[[e.vShow,n.typeError]])])]),_:1})]),_:2},[o.dialogStep===2?{name:"actions",fn:e.withCtx(()=>[e.createVNode(m,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(s,{variant:"text",onClick:t[0]||(t[0]=()=>o.dialogStep-=1)},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Previous ",-1)])]),_:1}),e.createVNode(l),e.createVNode(s,{variant:"outlined",class:"mr-4",onClick:n.clearHandler},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Cancel ",-1)])]),_:1},8,["onClick"]),e.createVNode(s,{type:"submit",color:"primary",disabled:!!a.error,onClick:e.withModifiers(n.submitHandler,["prevent"])},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" Ok ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),key:"0"}:void 0]),1032,["modelValue"])]),_:1})]),_:1},8,["modelValue","onKeydown"])])}const I=k._export_sfc(se,[["render",ve],["__scopeId","data-v-04a1002f"]]),Ve={components:{ColorSelectForm:S,OpenC3TimePicker:b.OpenC3TimePicker},mixins:[E,D.TimeFilters],props:{modelValue:Boolean,note:{type:Object,default:null}},emits:["update:modelValue","update"],data(){return{dialogStep:1,description:"",color:"#8F3400",rules:{required:a=>!!a||"Required"}}},computed:{timeError:function(){let a,t;return this.timeZone==="local"?(a=new Date(this.startDate+" "+this.startTime),t=new Date(this.endDate+" "+this.endTime)):(a=new Date(this.startDate+" "+this.startTime+"Z"),t=new Date(this.endDate+" "+this.endTime+"Z")),a===t?"Invalid start, end time. Notes must have different start and end times.":a>t?"Invalid start time. Notes start before end.":null},typeError:function(){return this.color?this.description?null:"A description is required for a valid note.":"A color is required."},show:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}}},mounted:function(){this.updateValues()},methods:{updateValues:function(){if(this.dialogStep=1,this.note){const a=new Date(this.note.start*1e3);this.startDate=this.formatDate(a,this.timeZone),this.startTime=this.formatTimeHMS(a,this.timeZone);const t=new Date(this.note.stop*1e3);this.endDate=this.formatDate(t,this.timeZone),this.endTime=this.formatTimeHMS(t,this.timeZone),this.color=this.note.color,this.description=this.note.description}else this.calcStartDateTime(),this.color="#8F3400",this.description=""},clearHandler:function(){this.show=!this.show},submitHandler(){let a,t;this.timeZone==="local"?(a=new Date(this.startDate+" "+this.startTime).toISOString(),t=new Date(this.endDate+" "+this.endTime).toISOString()):(a=new Date(this.startDate+" "+this.startTime+"Z").toISOString(),t=new Date(this.endDate+" "+this.endTime+"Z").toISOString());const i=this.color,d=this.description;this.note?N.Fr.put(`/openc3-api/notes/${this.note.start}`,{data:{start:a,stop:t,color:i,description:d}}).then(o=>{const n=o.data.description.length>16?`${o.data.description.substring(0,16)}...`:o.data.description;this.$notify.normal({title:"Updated Note",body:`Note updated: (${o.data.start}): "${n}"`}),this.$emit("update",o.data),this.show=!this.show}):N.Fr.post("/openc3-api/notes",{data:{start:a,stop:t,color:i,description:d}}).then(o=>{const n=o.data.description.length>16?`${o.data.description.substring(0,16)}...`:o.data.description;this.$notify.normal({title:"Created new Note",body:`Note: (${o.data.start}) created: "${n}"`}),this.$emit("update",o.data),this.show=!this.show})}}},ye={key:0},Ce={key:1},fe={class:"pa-2"},we=["textContent"],_e={class:"pa-2"},Ne=["textContent"];function xe(a,t,i,d,o,n){const l=e.resolveComponent("v-spacer"),s=e.resolveComponent("v-btn"),y=e.resolveComponent("v-toolbar"),m=e.resolveComponent("v-row"),u=e.resolveComponent("v-text-field"),h=e.resolveComponent("OpenC3TimePicker"),f=e.resolveComponent("v-card-text"),C=e.resolveComponent("color-select-form"),_=e.resolveComponent("v-stepper"),V=e.resolveComponent("v-card"),w=e.resolveComponent("v-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(w,{modelValue:n.show,"onUpdate:modelValue":t[8]||(t[8]=p=>n.show=p),persistent:"",width:"600",onKeydown:e.withKeys(n.clearHandler,["esc"])},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.note?(e.openBlock(),e.createElementBlock("span",ye,"Update Note")):(e.openBlock(),e.createElementBlock("span",Ce,"Create Note")),e.createVNode(l),e.createVNode(s,{icon:"mdi-close-box",variant:"text",density:"compact","data-test":"close-note-icon",onClick:n.clearHandler},null,8,["onClick"])]),_:1}),e.createVNode(_,{modelValue:o.dialogStep,"onUpdate:modelValue":t[7]||(t[7]=p=>o.dialogStep=p),editable:"",items:["Note Times","Note Input"]},e.createSlots({"item.1":e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",fe,[e.createVNode(m,{dense:""},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:a.startDate,"onUpdate:modelValue":t[1]||(t[1]=p=>a.startDate=p),type:"date",label:"Start Date",class:"mx-1",rules:[o.rules.required],"data-test":"note-start-date"},null,8,["modelValue","rules"]),e.createVNode(h,{modelValue:a.startTime,"onUpdate:modelValue":t[2]||(t[2]=p=>a.startTime=p),label:"Start Time","text-field-class":"mx-1",rules:[o.rules.required],"data-test":"note-start-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(m,{dense:""},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:a.endDate,"onUpdate:modelValue":t[3]||(t[3]=p=>a.endDate=p),type:"date",label:"End Date",class:"mx-1",rules:[o.rules.required],"data-test":"note-end-date"},null,8,["modelValue","rules"]),e.createVNode(h,{modelValue:a.endTime,"onUpdate:modelValue":t[4]||(t[4]=p=>a.endTime=p),label:"End Time","text-field-class":"mx-1",rules:[o.rules.required],"data-test":"note-end-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(m,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.timeError)},null,8,we),[[e.vShow,n.timeError]])]),_:1})])]),_:1})]),"item.2":e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",_e,[e.createElementVNode("div",null,[e.createVNode(C,{modelValue:o.color,"onUpdate:modelValue":t[5]||(t[5]=p=>o.color=p)},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(u,{modelValue:o.description,"onUpdate:modelValue":t[6]||(t[6]=p=>o.description=p),type:"text",label:"Note Description","data-test":"note-description"},null,8,["modelValue"])]),e.withDirectives(e.createVNode(m,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.typeError)},null,8,Ne)]),_:1},512),[[e.vShow,n.typeError]])])]),_:1})]),_:2},[o.dialogStep===2?{name:"actions",fn:e.withCtx(()=>[e.createVNode(m,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(s,{variant:"text",onClick:t[0]||(t[0]=()=>o.dialogStep-=1)},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" Previous ",-1)])]),_:1}),e.createVNode(l),e.createVNode(s,{variant:"outlined",class:"mr-4",onClick:n.clearHandler},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode(" Cancel ",-1)])]),_:1},8,["onClick"]),e.createVNode(s,{type:"submit",color:"primary",disabled:!!a.error,onClick:e.withModifiers(n.submitHandler,["prevent"])},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode(" Ok ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),key:"0"}:void 0]),1032,["modelValue"])]),_:1})]),_:1},8,["modelValue","onKeydown"])])}const H=k._export_sfc(Ve,[["render",xe],["__scopeId","data-v-403c743b"]]),ke={components:{ActivityCreateDialog:M,MetadataCreateDialog:I,NoteCreateDialog:H},mixins:[D.TimeFilters,q],props:{events:{type:Array,required:!0},modelValue:{type:Boolean,required:!0},timeZone:{type:String,required:!0},types:{type:Array,default:null},newMetadata:{type:Boolean,default:!1}},emits:["update:modelValue","close","update"],data(){return{search:"",localEvents:[...this.events],eventHeaders:[{title:"Start",key:"start",width:215},{title:"Stop",key:"end",width:215},{title:"Type",key:"type"},{title:"Data",key:"data"},{title:"Actions",key:"actions",sortable:!1}],editActivity:{start:new Date,end:new Date},editMetadata:{start:new Date,end:new Date},editNote:{start:new Date,end:new Date},editIndex:0,showActivityUpdate:!1,showMetadataUpdate:!1,showNoteUpdate:!1,showMetadataCreate:!1}},computed:{show:{get(){return this.modelValue},set(a){this.$emit("update:modelValue",a)}}},created:function(){},methods:{close(){this.$emit("close"),this.show=!1},dataFormat(a){let t=a.name;switch(a.type){case"note":t=a.note.description;break;case"metadata":let i=[];Object.entries(a.metadata.metadata).forEach(([d,o])=>i.push(`${d}: ${o}`)),t=i.join(", ");break}return t},editAction(a){switch(this.editIndex=this.localEvents.findIndex(t=>t.type===a.type&&t.start===a.start),a.type){case"activity":this.editActivity=a.activity,this.showActivityUpdate=!0;break;case"metadata":this.editMetadata=a.metadata,this.showMetadataUpdate=!0;break;case"note":this.editNote=a.note,this.showNoteUpdate=!0;break}},deleteAction(a){let t=this.localEvents.findIndex(n=>n.type===a.type&&n.start===a.start),i=null,d=null,o=null;switch(a.type){case"activity":i=`timeline/${a.activity.name}/activity`,d=a.activity.start,o=a.activity.uuid;break;case"metadata":i="metadata",d=a.metadata.start;break;case"note":i="notes",d=a.note.start;break}this.$dialog.confirm(`Are you sure you want to remove ${a.type} at ${a.start}`,{okText:"Delete",cancelText:"Cancel"}).then(n=>{this.localEvents.splice(t,1);let l=`/openc3-api/${i}/${d}`;return o&&(l+=`/${o}`),N.Fr.delete(l)}).then(n=>{this.$emit("update"),this.$notify.normal({title:`Deleted ${a.type}`,body:`Deleted ${a.type} at ${d}`})}).catch(n=>{})},updateActivity(a){this.$emit("update"),this.localEvents[this.editIndex].activity=a},updateMetadata(a){this.$emit("update"),this.localEvents[this.editIndex].metadata=a},updateNote(a){this.$emit("update"),this.localEvents[this.editIndex].note=a},addMetadata(a){let t={name:"Metadata",start:new Date(a.start*1e3),end:new Date(a.start*1e3),color:a.color,type:a.type,timed:!0,metadata:a};this.localEvents.push(t)}}},ge={key:0},De={key:1},Ee={key:0},Te={key:1};function be(a,t,i,d,o,n){const l=e.resolveComponent("v-spacer"),s=e.resolveComponent("v-btn"),y=e.resolveComponent("v-toolbar"),m=e.resolveComponent("v-text-field"),u=e.resolveComponent("v-row"),h=e.resolveComponent("v-card-title"),f=e.resolveComponent("v-data-table"),C=e.resolveComponent("v-card-actions"),_=e.resolveComponent("v-card"),V=e.resolveComponent("v-dialog"),w=e.resolveComponent("activity-create-dialog"),p=e.resolveComponent("metadata-create-dialog"),v=e.resolveComponent("note-create-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(V,{modelValue:n.show,"onUpdate:modelValue":t[2]||(t[2]=c=>n.show=c),persistent:"",width:"80vw",onKeydown:e.withKeys(n.close,["esc"])},{default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.newMetadata?(e.openBlock(),e.createElementBlock("span",ge,"Metadata")):(e.openBlock(),e.createElementBlock("span",De,"Events")),e.createVNode(l),e.createVNode(s,{icon:"mdi-close-box",variant:"text",density:"compact","data-test":"close-metadata-icon","aria-label":"Close Dialog",onClick:n.close},null,8,["onClick"])]),_:1}),e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(u,{class:"pa-3"},{default:e.withCtx(()=>[i.newMetadata?(e.openBlock(),e.createElementBlock("span",Ee,"Metadata")):(e.openBlock(),e.createElementBlock("span",Te,"Events")),e.createVNode(l),e.createVNode(m,{modelValue:o.search,"onUpdate:modelValue":t[0]||(t[0]=c=>o.search=c),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":""},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(f,{headers:o.eventHeaders,items:o.localEvents,search:o.search},{"no-data":e.withCtx(()=>[...t[7]||(t[7]=[e.createElementVNode("span",null," No events ",-1)])]),"item.start":e.withCtx(({item:c})=>[e.createTextVNode(e.toDisplayString(a.formatDateTime(c.start,i.timeZone)),1)]),"item.end":e.withCtx(({item:c})=>[e.createTextVNode(e.toDisplayString(a.formatDateTime(c.end,i.timeZone)),1)]),"item.type":e.withCtx(({item:c})=>[e.createTextVNode(e.toDisplayString(c.type.charAt(0).toUpperCase()+c.type.slice(1)),1)]),"item.data":e.withCtx(({item:c})=>[e.createTextVNode(e.toDisplayString(n.dataFormat(c)),1)]),"item.actions":e.withCtx(({item:c})=>[e.createVNode(s,{icon:"mdi-pencil",variant:"text",size:"small",class:"mr-2","data-test":"edit-event","aria-label":"Edit Event",onClick:g=>n.editAction(c)},null,8,["onClick"]),e.createVNode(s,{icon:"mdi-delete",variant:"text",size:"small","data-test":"delete-event","aria-label":"Delete Event",onClick:g=>n.deleteAction(c)},null,8,["onClick"])]),_:1},8,["headers","items","search"]),e.createVNode(C,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(l),e.createVNode(s,{variant:"outlined","data-test":"close-event-list",onClick:n.close},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Close ",-1)])]),_:1},8,["onClick"]),i.newMetadata?(e.openBlock(),e.createBlock(s,{key:0,variant:"flat","data-test":"new-event",onClick:t[1]||(t[1]=c=>o.showMetadataCreate=!0)},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" New Metadata ",-1)])]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue","onKeydown"]),o.showActivityUpdate?(e.openBlock(),e.createBlock(w,{key:0,modelValue:o.showActivityUpdate,"onUpdate:modelValue":t[3]||(t[3]=c=>o.showActivityUpdate=c),activity:o.editActivity,"time-zone":i.timeZone,onUpdate:n.updateActivity},null,8,["modelValue","activity","time-zone","onUpdate"])):e.createCommentVNode("",!0),o.showMetadataUpdate?(e.openBlock(),e.createBlock(p,{key:1,modelValue:o.showMetadataUpdate,"onUpdate:modelValue":t[4]||(t[4]=c=>o.showMetadataUpdate=c),metadata:o.editMetadata,"time-zone":i.timeZone,onUpdate:n.updateMetadata},null,8,["modelValue","metadata","time-zone","onUpdate"])):e.createCommentVNode("",!0),o.showNoteUpdate?(e.openBlock(),e.createBlock(v,{key:2,modelValue:o.showNoteUpdate,"onUpdate:modelValue":t[5]||(t[5]=c=>o.showNoteUpdate=c),note:o.editNote,"time-zone":i.timeZone,onUpdate:n.updateNote},null,8,["modelValue","note","time-zone","onUpdate"])):e.createCommentVNode("",!0),o.showMetadataCreate?(e.openBlock(),e.createBlock(p,{key:3,modelValue:o.showMetadataCreate,"onUpdate:modelValue":t[6]||(t[6]=c=>o.showMetadataCreate=c),"time-zone":i.timeZone,onUpdate:n.addMetadata},null,8,["modelValue","time-zone","onUpdate"])):e.createCommentVNode("",!0)])}const Se=k._export_sfc(ke,[["render",be]]);exports.ActivityCreateDialog=M;exports.ColorSelectForm=S;exports.CreateDialog=E;exports.DeleteItem=q;exports.EventListDialog=Se;exports.MetadataCreateDialog=I;exports.MetadataInputForm=A;exports.NoteCreateDialog=H;
2
+ //# sourceMappingURL=EventListDialog-DO32zY2U.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventListDialog-DO32zY2U.cjs","sources":["../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/add.js","../src/tools/calendar/CreateDialog.js","../src/tools/calendar/ActivityCreateDialog.vue","../src/tools/calendar/ColorSelectForm.vue","../src/tools/calendar/DeleteItem.js","../src/tools/calendar/MetadataInputForm.vue","../src/tools/calendar/MetadataCreateDialog.vue","../src/tools/calendar/NoteCreateDialog.vue","../src/tools/calendar/EventListDialog.vue"],"sourcesContent":["import { addDays } from \"./addDays.js\";\nimport { addMonths } from \"./addMonths.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link add} function options.\n */\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @typeParam DateType - The `Date` type the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes, and seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport function add(date, duration, options) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Add years and months\n const _date = toDate(date, options?.in);\n const dateWithMonths =\n months || years ? addMonths(_date, months + years * 12) : _date;\n\n // Add weeks and days\n const dateWithDays =\n days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes, and seconds\n const minutesToAdd = minutes + hours * 60;\n const secondsToAdd = seconds + minutesToAdd * 60;\n const msToAdd = secondsToAdd * 1000;\n\n return constructFrom(options?.in || date, +dateWithDays + msToAdd);\n}\n\n// Fallback for modularized imports:\nexport default add;\n","/*\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { add, format, parse } from 'date-fns'\n\nexport default {\n props: {\n date: {\n type: String,\n },\n time: {\n type: String,\n },\n timeZone: {\n type: String,\n },\n },\n data() {\n return {\n startDate: '',\n startTime: '',\n endDate: '',\n endTime: '',\n }\n },\n methods: {\n calcStartDateTime: function () {\n if (this.date) {\n this.startDate = this.date\n this.endDate = this.date\n } else {\n this.startDate = format(new Date(), 'yyyy-MM-dd')\n this.endDate = format(new Date(), 'yyyy-MM-dd')\n }\n let ms = 1000 * 60 * 30 // 30 min\n let start = null\n if (this.time) {\n start = parse(this.time, 'HH:mm:ss', new Date())\n // Round down so the start is the beginning of the time box where they clicked\n start = new Date(Math.floor(start.getTime() / ms) * ms)\n } else {\n // Round up so the start is in the future\n start = new Date(Math.ceil(new Date().getTime() / ms) * ms)\n }\n this.startTime = format(start, 'HH:mm:ss')\n this.endTime = format(add(start, { minutes: 30 }), 'HH:mm:ss')\n },\n },\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-dialog v-model=\"show\" persistent width=\"600\" @keydown.esc=\"clearHandler\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"activity\">Edit Activity</span>\n <span v-else>Create Activity</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-note-icon\"\n @click=\"clearHandler\"\n />\n </v-toolbar>\n <v-stepper\n v-model=\"dialogStep\"\n :items=\"['Activity Times', 'Activity Type']\"\n >\n <template v-if=\"dialogStep === 1\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-spacer />\n <v-btn\n color=\"primary\"\n :disabled=\"validationError\"\n @click=\"dialogStep = 2\"\n >\n Next\n </v-btn>\n </v-row>\n </template>\n\n <!-- eslint-disable-next-line vue/valid-v-slot -->\n <template v-if=\"dialogStep === 2\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-btn variant=\"text\" @click=\"() => (dialogStep -= 1)\">\n Previous\n </v-btn>\n <v-spacer />\n <v-btn variant=\"outlined\" class=\"mr-4\" @click=\"clearHandler\">\n Cancel\n </v-btn>\n <v-btn\n type=\"submit\"\n color=\"primary\"\n :disabled=\"!!error\"\n @click.prevent=\"submitHandler\"\n >\n Ok\n </v-btn>\n </v-row>\n </template>\n\n <template #item.1>\n <v-card-text>\n <div class=\"pr-2\">\n <v-select\n v-model=\"timeline\"\n density=\"compact\"\n hide-details\n variant=\"outlined\"\n :items=\"timelineNames\"\n label=\"Timeline\"\n data-test=\"activity-select-timeline\"\n class=\"pb-2\"\n >\n </v-select>\n <v-text-field\n v-model=\"customTitle\"\n type=\"text\"\n label=\"Custom Title\"\n class=\"pb-2\"\n data-test=\"activity-custom-title\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n />\n <v-textarea\n v-model=\"notes\"\n label=\"Notes\"\n class=\"py-2 mb-2\"\n data-test=\"activity-notes\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n rows=\"3\"\n />\n <v-row dense>\n <v-text-field\n v-model=\"startDate\"\n type=\"date\"\n label=\"Start Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-start-date\"\n />\n <OpenC3TimePicker\n v-model=\"startTime\"\n label=\"Start Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-start-time\"\n />\n </v-row>\n <v-row dense>\n <v-text-field\n v-model=\"endDate\"\n type=\"date\"\n label=\"End Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-end-date\"\n />\n <OpenC3TimePicker\n v-model=\"endTime\"\n label=\"End Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"activity-end-time\"\n />\n </v-row>\n <v-row class=\"pl-3\">\n <v-checkbox\n v-model=\"recurring\"\n :disabled=\"!!activity\"\n label=\"Recurring\"\n hide-details\n data-test=\"recurring\"\n >\n </v-checkbox>\n </v-row>\n <v-row v-if=\"recurring\">\n <v-col>\n <div class=\"repeat\">Repeat every</div>\n </v-col>\n <v-col>\n <v-text-field\n v-model=\"frequency\"\n :disabled=\"!!activity\"\n density=\"compact\"\n variant=\"outlined\"\n single-line\n hide-details\n data-test=\"recurring-frequency\"\n /></v-col>\n <v-col>\n <v-select\n v-model=\"timeSpan\"\n :disabled=\"!!activity\"\n :items=\"timeSpans\"\n style=\"primary\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n data-test=\"recurring-span\"\n />\n </v-col>\n </v-row>\n <v-row v-if=\"recurring\" style=\"padding-bottom: 10px\">\n <v-col>\n <div class=\"repeat\">Ending</div>\n </v-col>\n <v-col>\n <v-text-field\n v-model=\"recurringEndDate\"\n type=\"date\"\n label=\"End Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n :disabled=\"!!activity\"\n data-test=\"recurring-end-date\"\n /></v-col>\n <v-col>\n <OpenC3TimePicker\n v-model=\"recurringEndTime\"\n label=\"End Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n :disabled=\"!!activity\"\n data-test=\"recurring-end-time\"\n /></v-col>\n </v-row>\n <v-row>\n <span\n v-show=\"timeError\"\n class=\"ma-2 text-red\"\n v-text=\"timeError\"\n />\n </v-row>\n </div>\n </v-card-text>\n </template>\n\n <template #item.2>\n <v-card-text>\n <div class=\"pr-2\">\n <v-select\n v-model=\"kind\"\n density=\"compact\"\n hide-details\n variant=\"outlined\"\n :items=\"types\"\n label=\"Activity Type\"\n data-test=\"activity-select-type\"\n class=\"pb-2\"\n >\n </v-select>\n <div v-if=\"kind === 'COMMAND'\">\n <v-textarea\n v-model=\"activityData\"\n label=\"Command Input\"\n rows=\"1\"\n readonly\n auto-grow\n data-test=\"activity-cmd\"\n @click:control=\"editItem()\"\n />\n </div>\n <div v-else-if=\"kind === 'SCRIPT'\" class=\"ma-3\">\n <script-chooser\n :model-value=\"activityData\"\n @file=\"fileHandler\"\n />\n <environment-chooser v-model=\"activityEnvironment\" />\n </div>\n <div v-else>\n <span class=\"ma-2\"> No required input </span>\n </div>\n <v-row v-show=\"typeError\" class=\"mt-2\">\n <span class=\"ma-2 text-red\" v-text=\"typeError\" />\n </v-row>\n </div>\n </v-card-text>\n </template>\n </v-stepper>\n </v-card>\n </v-dialog>\n\n <!-- Command Editor Dialog -->\n <v-dialog\n v-model=\"showCommandDialog\"\n max-width=\"1200\"\n persistent\n scrollable\n @keydown.esc=\"closeCommandDialog\"\n >\n <v-card>\n <v-card-title class=\"d-flex align-center\">\n <span>{{ dialogTitle }}</span>\n <v-spacer />\n <v-btn icon=\"mdi-close\" variant=\"text\" @click=\"closeCommandDialog\" />\n </v-card-title>\n <v-card-text class=\"pa-0\">\n <div v-if=\"dialogError\" class=\"error-message\">\n <v-icon class=\"mr-2\" color=\"error\">mdi-alert-circle</v-icon>\n <span class=\"flex-grow-1\">{{ dialogError }}</span>\n <v-btn\n icon=\"mdi-close\"\n size=\"small\"\n variant=\"text\"\n color=\"error\"\n class=\"ml-2\"\n @click=\"clearDialogError\"\n />\n </div>\n <command-editor\n ref=\"commandEditor\"\n :send-disabled=\"false\"\n :states-in-hex=\"statesInHex\"\n :show-ignored-params=\"showIgnoredParams\"\n :cmd-raw=\"cmdRaw\"\n :cmd-string=\"dialogCmdString\"\n :show-command-button=\"false\"\n @build-cmd=\"updateCommand($event)\"\n />\n </v-card-text>\n <v-card-actions>\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"closeCommandDialog\"> Cancel </v-btn>\n <v-btn color=\"primary\" variant=\"flat\" @click=\"updateCommand()\">\n Update Command\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport {\n EnvironmentChooser,\n ScriptChooser,\n CommandEditor,\n OpenC3TimePicker,\n} from '@/components'\nimport { TimeFilters } from '@/util'\nimport CreateDialog from './CreateDialog'\n\nexport default {\n components: {\n EnvironmentChooser,\n ScriptChooser,\n CommandEditor,\n OpenC3TimePicker,\n },\n mixins: [CreateDialog, TimeFilters],\n props: {\n modelValue: Boolean,\n timelines: {\n type: Array,\n required: true,\n },\n activity: {\n type: Object,\n default: null,\n },\n },\n emits: ['update:modelValue', 'update'],\n data() {\n return {\n timeline: null,\n dialogStep: 1,\n kind: '',\n types: ['COMMAND', 'SCRIPT', 'RESERVE'],\n activityData: '',\n activityEnvironment: [],\n customTitle: '',\n notes: '',\n rules: {\n required: (value) => !!value || 'Required',\n },\n recurring: false,\n recurringEndDate: null,\n recurringEndTime: null,\n frequency: 90,\n timeSpan: 'minutes',\n timeSpans: ['minutes', 'hours', 'days'],\n showCommandDialog: false,\n dialogTitle: 'Add Command',\n dialogError: '',\n dialogCmdString: null,\n }\n },\n computed: {\n timeError: function () {\n const now = new Date()\n const start = Date.parse(`${this.startDate}T${this.startTime}`)\n const end = Date.parse(`${this.endDate}T${this.endTime}`)\n if (start === end) {\n return 'Invalid start, end time. Activity must have different start and end times.'\n }\n if (now > start) {\n return 'Invalid start time. Activity must be in the future.'\n }\n if (start > end) {\n return 'Invalid start time. Activity start before end.'\n }\n return null\n },\n typeError: function () {\n if (!this.timeline) {\n return 'Activity must have a timeline selected.'\n }\n if (this.kind !== 'RESERVE' && !this.activityData) {\n return 'No data is selected or inputted'\n }\n return null\n },\n timelineNames: function () {\n return this.timelines.map((timeline) => {\n return timeline.name\n })\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n validationError: function () {\n return !!this.timeError || !this.timeline\n },\n },\n mounted: function () {\n this.updateValues()\n },\n methods: {\n changeKind: function (inputKind) {\n if (inputKind === this.kind) {\n return\n }\n this.kind = inputKind\n this.activityData = ''\n },\n fileHandler: function (event) {\n this.activityData = event\n },\n updateValues: function () {\n this.dialogStep = 1\n if (this.activity) {\n this.timeline = this.activity.name\n const sDate = new Date(this.activity.start * 1000)\n const eDate = new Date(this.activity.stop * 1000)\n this.startDate = this.formatDate(sDate, this.timeZone)\n this.startTime = this.formatTimeHMS(sDate, this.timeZone)\n this.endDate = this.formatDate(eDate, this.timeZone)\n this.endTime = this.formatTimeHMS(eDate, this.timeZone)\n this.kind = this.activity.kind.toUpperCase()\n this.activityData = this.activity.data[this.activity.kind]\n this.activityEnvironment = this.activity.data.environment\n this.customTitle = this.activity.data.customTitle || ''\n this.notes = this.activity.data.notes || ''\n if (this.activity.recurring?.uuid) {\n this.recurring = true\n const rDate = new Date(this.activity.recurring.end * 1000)\n this.recurringEndDate = this.formatDate(rDate, this.timeZone)\n this.recurringEndTime = this.formatTimeHMS(rDate, this.timeZone)\n this.frequency = this.activity.recurring.frequency\n this.timeSpan = this.activity.recurring.span\n }\n } else {\n this.calcStartDateTime()\n this.recurringEndDate = this.startDate\n this.recurringEndTime = this.startTime\n this.kind = ''\n this.activityData = ''\n this.activityEnvironment = []\n this.customTitle = ''\n this.notes = ''\n this.timeline = this.timelineNames[0]\n }\n },\n clearHandler: function () {\n this.show = !this.show\n },\n submitHandler() {\n // Call the api to create a new activity to add to the activities array\n let start = null\n let stop = null // API takes stop instead of end\n let recurringEnd = null\n if (this.timeZone === 'local') {\n start = new Date(this.startDate + ' ' + this.startTime).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime).toISOString()\n if (this.recurring) {\n recurringEnd = new Date(\n this.recurringEndDate + ' ' + this.recurringEndTime,\n ).toISOString()\n }\n } else {\n start = new Date(\n this.startDate + ' ' + this.startTime + 'Z',\n ).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime + 'Z').toISOString()\n if (this.recurring) {\n recurringEnd = new Date(\n this.recurringEndDate + ' ' + this.recurringEndTime + 'Z',\n ).toISOString()\n }\n }\n const kind = this.kind.toLowerCase()\n let data = {\n environment: this.activityEnvironment,\n customTitle: this.customTitle,\n notes: this.notes,\n }\n data[kind] = this.activityData\n let recurring = {}\n if (this.recurring) {\n recurring = {\n frequency: this.frequency,\n span: this.timeSpan,\n end: recurringEnd,\n }\n }\n if (this.activity) {\n Api.put(\n `/openc3-api/timeline/${this.activity.name}/activity/${this.activity.start}`,\n {\n data: { start, stop, kind, data, recurring },\n },\n )\n .then((response) => {\n const activityTime = this.formatSeconds(\n new Date(response.data.start * 1000),\n )\n this.$notify.normal({\n title: 'Updated Activity',\n body: `${activityTime} (${response.data.start}) on timeline: ${response.data.name}`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n .catch((error) => {\n this.show = !this.show\n })\n } else {\n Api.post(`/openc3-api/timeline/${this.timeline}/activities`, {\n data: { start, stop, kind, data, recurring },\n })\n .then((response) => {\n const activityTime = this.formatSeconds(\n new Date(response.data.start * 1000),\n )\n this.$notify.normal({\n title: 'Created Activity',\n body: `${activityTime} (${response.data.start}) on timeline: ${response.data.name}`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n .catch((error) => {\n this.show = !this.show\n })\n }\n // We don't do the $emit or set show here because it has to be in the callback\n this.clearHandler()\n },\n editItem: function () {\n // Set up dialog for editing\n this.dialogTitle = 'Edit Command'\n this.dialogCmdString = this.activityData\n this.showCommandDialog = true\n },\n closeCommandDialog: function () {\n this.showCommandDialog = false\n this.dialogCmdString = null\n this.dialogError = ''\n },\n clearDialogError: function () {\n this.dialogError = ''\n },\n updateCommand: function () {\n let commandString = ''\n try {\n commandString = this.$refs.commandEditor.getCmdString()\n } catch (error) {\n this.dialogError = error.message || 'Please fix command parameters'\n return\n }\n this.activityData = commandString\n this.showCommandDialog = false\n },\n },\n}\n</script>\n\n<style scoped>\n.repeat {\n padding-top: 10px;\n text-align: right;\n}\n\n.v-stepper--vertical .v-stepper__content {\n width: auto;\n margin: 0px 0px 0px 36px;\n padding: 0px;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-select v-model=\"color\" label=\"Color\" :items=\"swatches\">\n <template #prepend-inner>\n <v-icon :color=\"color\"> mdi-square </v-icon>\n </template>\n <template #item=\"{ props, item }\">\n <v-list-item v-bind=\"props\" :value=\"item.raw\">\n <template #prepend>\n <v-icon :color=\"item.raw\"> mdi-square </v-icon>\n </template>\n </v-list-item>\n </template>\n </v-select>\n </div>\n</template>\n\n<script>\nexport default {\n components: {},\n props: {\n modelValue: {\n type: String,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n computed: {\n color: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n swatches: function () {\n return [\n '#005a8f',\n '#003784',\n '#8F3400',\n '#df1368',\n '#ff5252',\n '#df323b',\n '#9f0010',\n '#2d9437',\n '#004700',\n '#db7200',\n '#802700',\n '#0f2941',\n ]\n },\n },\n methods: {},\n}\n</script>\n","/*\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n methods: {\n deleteItem(item) {\n let start = null\n let api = ''\n switch (item.type.toLowerCase()) {\n case 'activity':\n api = 'activity'\n start = item.activity.start\n break\n case 'metadata':\n api = 'metadata'\n start = item.metadata.start\n break\n case 'note':\n api = 'notes'\n start = item.note.start\n break\n }\n this.$dialog\n .confirm(\n `Are you sure you want to remove ${item.typeStr} at ${item.startStr}`,\n {\n okText: 'Delete',\n cancelText: 'Cancel',\n },\n )\n .then(() => {\n return Api.delete(`/openc3-api/${api}/${start}`)\n })\n .then(() => {\n this.$emit('delete', item)\n this.$notify.normal({\n title: `Deleted ${item.typeStr}`,\n body: `Deleted ${item.typeStr} at ${item.startStr}`,\n })\n })\n .catch(() => {})\n },\n },\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span> Add metadata key value(s)</span>\n <v-table density=\"compact\">\n <tbody>\n <tr>\n <th scope=\"col\" class=\"text-left\">Key</th>\n <th scope=\"col\" class=\"text-left\">Value</th>\n <th scope=\"col\" class=\"text-right\" width=\"52px\">\n <v-btn\n icon=\"mdi-plus\"\n variant=\"text\"\n data-test=\"new-metadata-icon\"\n @click=\"newMetadata\"\n />\n </th>\n </tr>\n <tr v-for=\"(meta, i) in metadata\" :key=\"`tr-${i}`\">\n <td>\n <v-text-field\n v-model=\"meta.key\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :data-test=\"`key-${i}`\"\n />\n </td>\n <td>\n <v-text-field\n v-model=\"meta.value\"\n density=\"compact\"\n type=\"text\"\n hide-details\n :data-test=\"`value-${i}`\"\n />\n </td>\n <td>\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n :data-test=\"`delete-metadata-icon-${i}`\"\n @click=\"rm(i)\"\n />\n </td>\n </tr>\n </tbody>\n </v-table>\n </div>\n</template>\n\n<script>\nexport default {\n components: {},\n props: {\n modelValue: {\n type: Array,\n required: true,\n },\n },\n emits: ['update:modelValue'],\n data() {\n return {}\n },\n computed: {\n metadata: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n methods: {\n newMetadata: function () {\n this.metadata.push({\n key: '',\n value: '',\n })\n },\n rm: function (index) {\n this.metadata.splice(index, 1)\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-dialog v-model=\"show\" persistent width=\"600\" @keydown.esc=\"clearHandler\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"metadata\">Update Metadata</span>\n <span v-else>Create Metadata</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-metadata-icon\"\n @click=\"clearHandler\"\n />\n </v-toolbar>\n <v-stepper\n v-model=\"dialogStep\"\n editable\n :items=\"['Metadata Times', 'Metadata Input']\"\n >\n <template v-if=\"dialogStep === 2\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-btn variant=\"text\" @click=\"() => (dialogStep -= 1)\">\n Previous\n </v-btn>\n <v-spacer />\n <v-btn variant=\"outlined\" class=\"mr-4\" @click=\"clearHandler\">\n Cancel\n </v-btn>\n <v-btn\n type=\"submit\"\n color=\"primary\"\n :disabled=\"!!error\"\n @click.prevent=\"submitHandler\"\n >\n Ok\n </v-btn>\n </v-row>\n </template>\n\n <template #item.1>\n <v-card-text>\n <div class=\"pa-2\">\n <color-select-form v-model=\"color\" />\n <v-row dense>\n <v-text-field\n v-model=\"startDate\"\n type=\"date\"\n label=\"Start Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"metadata-start-date\"\n />\n <OpenC3TimePicker\n v-model=\"startTime\"\n label=\"Start Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"metadata-start-time\"\n />\n </v-row>\n </div>\n </v-card-text>\n </template>\n\n <template #item.2>\n <v-card-text>\n <div class=\"pa-2\">\n <div style=\"min-height: 200px\">\n <metadata-input-form v-model=\"metadataVals\" />\n </div>\n <v-row v-show=\"typeError\">\n <span class=\"ma-2 text-red\" v-text=\"typeError\" />\n </v-row>\n </div>\n </v-card-text>\n </template>\n </v-stepper>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport OpenC3TimePicker from '@/components/OpenC3TimePicker.vue'\nimport ColorSelectForm from './ColorSelectForm.vue'\nimport CreateDialog from './CreateDialog'\nimport MetadataInputForm from './MetadataInputForm.vue'\n\nexport default {\n components: {\n ColorSelectForm,\n MetadataInputForm,\n OpenC3TimePicker,\n },\n mixins: [CreateDialog, TimeFilters],\n props: {\n modelValue: Boolean,\n metadata: {\n type: Object,\n default: null,\n },\n },\n emits: ['update:modelValue', 'update'],\n data() {\n return {\n dialogStep: 1,\n color: '#003784',\n metadataVals: [],\n rules: {\n required: (value) => !!value || 'Required',\n },\n }\n },\n computed: {\n typeError: function () {\n if (!this.color) {\n return 'A color is required.'\n }\n if (this.metadataVals.length < 1) {\n return 'Please enter a value in the metadata table.'\n }\n const emptyKeyValue = this.metadataVals.find(\n (meta) => meta.key === '' || meta.value === '',\n )\n if (emptyKeyValue) {\n return 'Missing or empty key, value in the metadata table.'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n mounted: function () {\n this.updateValues()\n },\n methods: {\n updateValues: function () {\n this.dialogStep = 1\n if (this.metadata) {\n const sDate = new Date(this.metadata.start * 1000)\n this.startDate = this.formatDate(sDate, this.timeZone)\n this.startTime = this.formatTimeHMS(sDate, this.timeZone)\n this.color = this.metadata.color\n this.metadataVals = Object.keys(this.metadata.metadata).map((k) => {\n return { key: k, value: this.metadata.metadata[k] }\n })\n } else {\n this.calcStartDateTime()\n this.color = '#003784'\n this.metadataVals = []\n }\n },\n clearHandler: function () {\n this.show = !this.show\n },\n submitHandler() {\n const color = this.color\n const metadata = this.metadataVals.reduce((result, element) => {\n result[element.key] = element.value\n return result\n }, {})\n const data = { color, metadata }\n if (this.timeZone === 'local') {\n data.start = new Date(\n this.startDate + ' ' + this.startTime,\n ).toISOString()\n } else {\n data.start = new Date(\n this.startDate + ' ' + this.startTime + 'Z',\n ).toISOString()\n }\n if (this.metadata) {\n Api.put(`/openc3-api/metadata/${this.metadata.start}`, {\n data,\n }).then((response) => {\n this.$notify.normal({\n title: 'Updated Metadata',\n body: `Metadata updated: (${response.data.start})`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n } else {\n Api.post('/openc3-api/metadata', {\n data,\n }).then((response) => {\n this.$notify.normal({\n title: 'Created new Metadata',\n body: `Metadata: (${response.data.start})`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n }\n // We don't do the $emit or set show here because it has to be in the callback\n },\n },\n}\n</script>\n\n<style scoped>\n.v-stepper--vertical .v-stepper__content {\n width: auto;\n margin: 0px 0px 0px 36px;\n padding: 0px;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2026, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-dialog v-model=\"show\" persistent width=\"600\" @keydown.esc=\"clearHandler\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"note\">Update Note</span>\n <span v-else>Create Note</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-note-icon\"\n @click=\"clearHandler\"\n />\n </v-toolbar>\n <v-stepper\n v-model=\"dialogStep\"\n editable\n :items=\"['Note Times', 'Note Input']\"\n >\n <template v-if=\"dialogStep === 2\" #actions>\n <v-row class=\"ma-0 px-6 pb-4\">\n <v-btn variant=\"text\" @click=\"() => (dialogStep -= 1)\">\n Previous\n </v-btn>\n <v-spacer />\n <v-btn variant=\"outlined\" class=\"mr-4\" @click=\"clearHandler\">\n Cancel\n </v-btn>\n <v-btn\n type=\"submit\"\n color=\"primary\"\n :disabled=\"!!error\"\n @click.prevent=\"submitHandler\"\n >\n Ok\n </v-btn>\n </v-row>\n </template>\n\n <template #item.1>\n <v-card-text>\n <div class=\"pa-2\">\n <v-row dense>\n <v-text-field\n v-model=\"startDate\"\n type=\"date\"\n label=\"Start Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-start-date\"\n />\n <OpenC3TimePicker\n v-model=\"startTime\"\n label=\"Start Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-start-time\"\n />\n </v-row>\n <v-row dense>\n <v-text-field\n v-model=\"endDate\"\n type=\"date\"\n label=\"End Date\"\n class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-end-date\"\n />\n <OpenC3TimePicker\n v-model=\"endTime\"\n label=\"End Time\"\n text-field-class=\"mx-1\"\n :rules=\"[rules.required]\"\n data-test=\"note-end-time\"\n />\n </v-row>\n <v-row>\n <span\n v-show=\"timeError\"\n class=\"ma-2 text-red\"\n v-text=\"timeError\"\n />\n </v-row>\n </div>\n </v-card-text>\n </template>\n\n <template #item.2>\n <v-card-text>\n <div class=\"pa-2\">\n <div>\n <color-select-form v-model=\"color\" />\n </div>\n <div>\n <v-text-field\n v-model=\"description\"\n type=\"text\"\n label=\"Note Description\"\n data-test=\"note-description\"\n />\n </div>\n <v-row v-show=\"typeError\">\n <span class=\"ma-2 text-red\" v-text=\"typeError\" />\n </v-row>\n </div>\n </v-card-text>\n </template>\n </v-stepper>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport OpenC3TimePicker from '@/components/OpenC3TimePicker.vue'\nimport ColorSelectForm from './ColorSelectForm.vue'\nimport CreateDialog from './CreateDialog'\n\nexport default {\n components: {\n ColorSelectForm,\n OpenC3TimePicker,\n },\n mixins: [CreateDialog, TimeFilters],\n props: {\n modelValue: Boolean,\n note: {\n type: Object,\n default: null,\n },\n },\n emits: ['update:modelValue', 'update'],\n data() {\n return {\n dialogStep: 1,\n description: '',\n color: '#8F3400',\n rules: {\n required: (value) => !!value || 'Required',\n },\n }\n },\n computed: {\n timeError: function () {\n let start\n let end\n if (this.timeZone === 'local') {\n start = new Date(this.startDate + ' ' + this.startTime)\n end = new Date(this.endDate + ' ' + this.endTime)\n } else {\n start = new Date(this.startDate + ' ' + this.startTime + 'Z')\n end = new Date(this.endDate + ' ' + this.endTime + 'Z')\n }\n if (start === end) {\n return 'Invalid start, end time. Notes must have different start and end times.'\n }\n if (start > end) {\n return 'Invalid start time. Notes start before end.'\n }\n return null\n },\n typeError: function () {\n if (!this.color) {\n return 'A color is required.'\n }\n if (!this.description) {\n return 'A description is required for a valid note.'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n mounted: function () {\n this.updateValues()\n },\n methods: {\n updateValues: function () {\n this.dialogStep = 1\n if (this.note) {\n const sDate = new Date(this.note.start * 1000)\n this.startDate = this.formatDate(sDate, this.timeZone)\n this.startTime = this.formatTimeHMS(sDate, this.timeZone)\n const eDate = new Date(this.note.stop * 1000)\n this.endDate = this.formatDate(eDate, this.timeZone)\n this.endTime = this.formatTimeHMS(eDate, this.timeZone)\n this.color = this.note.color\n this.description = this.note.description\n } else {\n this.calcStartDateTime()\n this.color = '#8F3400'\n this.description = ''\n }\n },\n clearHandler: function () {\n this.show = !this.show\n },\n submitHandler() {\n let start\n let stop // API takes stop rather than end\n if (this.timeZone === 'local') {\n start = new Date(this.startDate + ' ' + this.startTime).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime).toISOString()\n } else {\n start = new Date(\n this.startDate + ' ' + this.startTime + 'Z',\n ).toISOString()\n stop = new Date(this.endDate + ' ' + this.endTime + 'Z').toISOString()\n }\n const color = this.color\n const description = this.description\n if (this.note) {\n Api.put(`/openc3-api/notes/${this.note.start}`, {\n data: { start, stop, color, description },\n }).then((response) => {\n const desc =\n response.data.description.length > 16\n ? `${response.data.description.substring(0, 16)}...`\n : response.data.description\n this.$notify.normal({\n title: 'Updated Note',\n body: `Note updated: (${response.data.start}): \"${desc}\"`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n } else {\n Api.post('/openc3-api/notes', {\n data: { start, stop, color, description },\n }).then((response) => {\n const desc =\n response.data.description.length > 16\n ? `${response.data.description.substring(0, 16)}...`\n : response.data.description\n this.$notify.normal({\n title: 'Created new Note',\n body: `Note: (${response.data.start}) created: \"${desc}\"`,\n })\n this.$emit('update', response.data)\n this.show = !this.show\n })\n }\n // We don't do the $emit or set show here because it has to be in the callback\n },\n },\n}\n</script>\n\n<style scoped>\n.v-stepper--vertical .v-stepper__content {\n width: auto;\n margin: 0px 0px 0px 36px;\n padding: 0px;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-dialog v-model=\"show\" persistent width=\"80vw\" @keydown.esc=\"close\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-if=\"newMetadata\">Metadata</span><span v-else>Events</span>\n <v-spacer />\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-metadata-icon\"\n aria-label=\"Close Dialog\"\n @click=\"close\"\n />\n </v-toolbar>\n <v-card-title>\n <v-row class=\"pa-3\">\n <span v-if=\"newMetadata\">Metadata</span><span v-else>Events</span>\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n />\n </v-row>\n </v-card-title>\n <v-data-table\n :headers=\"eventHeaders\"\n :items=\"localEvents\"\n :search=\"search\"\n >\n <template #no-data>\n <span> No events </span>\n </template>\n <template #item.start=\"{ item }\">\n {{ formatDateTime(item.start, timeZone) }}\n </template>\n <template #item.end=\"{ item }\">\n {{ formatDateTime(item.end, timeZone) }}\n </template>\n <template #item.type=\"{ item }\">\n {{ item.type.charAt(0).toUpperCase() + item.type.slice(1) }}\n </template>\n <template #item.data=\"{ item }\">\n {{ dataFormat(item) }}\n </template>\n <template #item.actions=\"{ item }\">\n <v-btn\n icon=\"mdi-pencil\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"edit-event\"\n aria-label=\"Edit Event\"\n @click=\"editAction(item)\"\n />\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n size=\"small\"\n data-test=\"delete-event\"\n aria-label=\"Delete Event\"\n @click=\"deleteAction(item)\"\n />\n </template>\n </v-data-table>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" data-test=\"close-event-list\" @click=\"close\">\n Close\n </v-btn>\n <v-btn\n v-if=\"newMetadata\"\n variant=\"flat\"\n data-test=\"new-event\"\n @click=\"showMetadataCreate = true\"\n >\n New Metadata\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n <!-- Edit existing events -->\n <activity-create-dialog\n v-if=\"showActivityUpdate\"\n v-model=\"showActivityUpdate\"\n :activity=\"editActivity\"\n :time-zone=\"timeZone\"\n @update=\"updateActivity\"\n />\n <metadata-create-dialog\n v-if=\"showMetadataUpdate\"\n v-model=\"showMetadataUpdate\"\n :metadata=\"editMetadata\"\n :time-zone=\"timeZone\"\n @update=\"updateMetadata\"\n />\n <note-create-dialog\n v-if=\"showNoteUpdate\"\n v-model=\"showNoteUpdate\"\n :note=\"editNote\"\n :time-zone=\"timeZone\"\n @update=\"updateNote\"\n />\n <!-- Create new metadata -->\n <metadata-create-dialog\n v-if=\"showMetadataCreate\"\n v-model=\"showMetadataCreate\"\n :time-zone=\"timeZone\"\n @update=\"addMetadata\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport ActivityCreateDialog from './ActivityCreateDialog.vue'\nimport DeleteItem from './DeleteItem'\nimport MetadataCreateDialog from './MetadataCreateDialog.vue'\nimport NoteCreateDialog from './NoteCreateDialog.vue'\n\nexport default {\n components: {\n ActivityCreateDialog,\n MetadataCreateDialog,\n NoteCreateDialog,\n },\n mixins: [TimeFilters, DeleteItem],\n props: {\n events: {\n type: Array,\n required: true,\n },\n modelValue: {\n type: Boolean,\n required: true,\n },\n timeZone: {\n type: String,\n required: true,\n },\n types: {\n type: Array,\n default: null,\n },\n newMetadata: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['update:modelValue', 'close', 'update'],\n data() {\n return {\n search: '',\n localEvents: [...this.events],\n eventHeaders: [\n { title: 'Start', key: 'start', width: 215 },\n { title: 'Stop', key: 'end', width: 215 },\n { title: 'Type', key: 'type' },\n { title: 'Data', key: 'data' },\n { title: 'Actions', key: 'actions', sortable: false },\n ],\n editActivity: { start: new Date(), end: new Date() },\n editMetadata: { start: new Date(), end: new Date() },\n editNote: { start: new Date(), end: new Date() },\n editIndex: 0,\n showActivityUpdate: false,\n showMetadataUpdate: false,\n showNoteUpdate: false,\n showMetadataCreate: false,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n created: function () {\n // TODO: Switch to vue3 syntax\n // this.$on('delete', (item) => {\n // let index = this.localEvents.findIndex((element) => {\n // return element.type === item.type && element.start === item.start\n // })\n // this.localEvents.splice(index, 1)\n // })\n },\n methods: {\n close() {\n this.$emit('close')\n this.show = false\n },\n dataFormat(event) {\n let data = event.name\n switch (event.type) {\n case 'note':\n data = event.note.description\n break\n case 'metadata':\n let rows = []\n Object.entries(event.metadata.metadata).forEach(([key, value]) =>\n rows.push(`${key}: ${value}`),\n )\n data = rows.join(', ')\n break\n }\n return data\n },\n editAction(item) {\n this.editIndex = this.localEvents.findIndex((element) => {\n return element.type === item.type && element.start === item.start\n })\n switch (item.type) {\n case 'activity':\n this.editActivity = item.activity\n this.showActivityUpdate = true\n break\n case 'metadata':\n this.editMetadata = item.metadata\n this.showMetadataUpdate = true\n break\n case 'note':\n this.editNote = item.note\n this.showNoteUpdate = true\n break\n }\n },\n deleteAction(item) {\n let deleteIndex = this.localEvents.findIndex((element) => {\n return element.type === item.type && element.start === item.start\n })\n let api = null\n let start = null\n let uuid = null\n switch (item.type) {\n case 'activity':\n api = `timeline/${item.activity.name}/activity`\n start = item.activity.start\n uuid = item.activity.uuid\n break\n case 'metadata':\n api = 'metadata'\n start = item.metadata.start\n break\n case 'note':\n api = 'notes'\n start = item.note.start\n break\n }\n\n this.$dialog\n .confirm(\n `Are you sure you want to remove ${item.type} at ${item.start}`,\n {\n okText: 'Delete',\n cancelText: 'Cancel',\n },\n )\n .then((dialog) => {\n this.localEvents.splice(deleteIndex, 1)\n let url = `/openc3-api/${api}/${start}`\n if (uuid) {\n url += `/${uuid}`\n }\n return Api.delete(url)\n })\n .then((response) => {\n this.$emit('update')\n this.$notify.normal({\n title: `Deleted ${item.type}`,\n body: `Deleted ${item.type} at ${start}`,\n })\n })\n .catch((error) => {\n // TODO: It returns true on cancel?\n })\n },\n updateActivity(item) {\n this.$emit('update')\n this.localEvents[this.editIndex].activity = item\n },\n updateMetadata(item) {\n this.$emit('update')\n this.localEvents[this.editIndex].metadata = item\n },\n updateNote(item) {\n this.$emit('update')\n this.localEvents[this.editIndex].note = item\n },\n addMetadata(item) {\n // TODO: This is how Calendar creates new metadata items via makeMetadataEvent\n let metadata = {\n name: 'Metadata',\n start: new Date(item.start * 1000),\n end: new Date(item.start * 1000),\n color: item.color,\n type: item.type,\n timed: true,\n metadata: item,\n }\n this.localEvents.push(metadata)\n },\n },\n}\n</script>\n"],"names":["add","date","duration","options","years","months","weeks","days","hours","minutes","seconds","_date","toDate","dateWithMonths","addMonths","dateWithDays","addDays","minutesToAdd","msToAdd","constructFrom","CreateDialog","format","ms","start","parse","_sfc_main","EnvironmentChooser","ScriptChooser","CommandEditor","OpenC3TimePicker","TimeFilters","value","now","end","timeline","inputKind","event","sDate","eDate","rDate","stop","recurringEnd","kind","data","recurring","Api","response","activityTime","error","commandString","_hoisted_3","_hoisted_5","_hoisted_11","_createElementBlock","_createVNode","_component_v_dialog","$options","$event","_component_v_card","_component_v_toolbar","_component_v_spacer","$props","_openBlock","_component_v_btn","_component_v_stepper","$data","_component_v_card_text","_createElementVNode","_component_v_select","_component_v_text_field","_component_v_textarea","_component_v_row","_ctx","_component_OpenC3TimePicker","_component_v_checkbox","_createBlock","_component_v_col","_cache","_toDisplayString","_hoisted_6","_hoisted_7","_component_script_chooser","_component_environment_chooser","_hoisted_8","_component_v_card_title","_hoisted_10","_component_v_icon","_component_command_editor","_component_v_card_actions","_withCtx","props","item","_component_v_list_item","_mergeProps","DeleteItem","api","index","_component_v_table","_hoisted_1","_Fragment","_renderList","meta","i","ColorSelectForm","MetadataInputForm","k","color","metadata","result","element","_hoisted_4","_component_color_select_form","_component_metadata_input_form","description","desc","ActivityCreateDialog","MetadataCreateDialog","NoteCreateDialog","rows","key","deleteIndex","uuid","dialog","url","_component_v_data_table","_createTextVNode","_component_activity_create_dialog","_component_metadata_create_dialog","_component_note_create_dialog"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,9 +1,9 @@
1
- import { l as k } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-B75KLE6R.js";
2
- import { W as F } from "./Widget-Cj7mgG8B.js";
1
+ import { F as k } from "./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-CDTSzdb-.js";
2
+ import { W as E } from "./Widget-CGePksBA.js";
3
3
  import { resolveComponent as n, createBlock as S, openBlock as h, normalizeStyle as N, withCtx as l, createVNode as o, createElementVNode as d, toDisplayString as m, createElementBlock as u, createCommentVNode as T, Fragment as p, renderList as A, createTextVNode as y, normalizeClass as B } from "vue";
4
4
  import { _ as I } from "./CustomIcon-Cg3jCA_l.js";
5
5
  const U = {
6
- mixins: [F],
6
+ mixins: [E],
7
7
  data() {
8
8
  return {
9
9
  files: [],
@@ -40,23 +40,23 @@ const U = {
40
40
  return e.error ? `Error: ${e.error}` : e.checksum ? e.checksum : this.loading ? "Loading..." : "Not loaded";
41
41
  },
42
42
  async computeChecksum(e) {
43
- const s = new TextEncoder().encode(e), c = await crypto.subtle.digest("SHA-256", s);
44
- return Array.from(new Uint8Array(c)).map((r) => r.toString(16).padStart(2, "0")).join("");
43
+ const s = new TextEncoder().encode(e), r = await crypto.subtle.digest("SHA-256", s);
44
+ return Array.from(new Uint8Array(r)).map((c) => c.toString(16).padStart(2, "0")).join("");
45
45
  },
46
46
  async fetchFile(e) {
47
47
  const t = window.openc3Scope || "DEFAULT";
48
- let s = `${t}/targets_modified/${e}`, c = await k.get(
48
+ let s = `${t}/targets_modified/${e}`, r = await k.get(
49
49
  `/openc3-api/storage/download_file/${encodeURIComponent(s)}`,
50
50
  {
51
51
  params: { bucket: "OPENC3_CONFIG_BUCKET" },
52
52
  headers: { "Ignore-Errors": "404,500" }
53
53
  }
54
54
  ).catch(() => null);
55
- if ((!c || c.status === 404) && (s = `${t}/targets/${e}`, c = await k.get(
55
+ if ((!r || r.status === 404) && (s = `${t}/targets/${e}`, r = await k.get(
56
56
  `/openc3-api/storage/download_file/${encodeURIComponent(s)}`,
57
57
  { params: { bucket: "OPENC3_CONFIG_BUCKET" } }
58
- )), c?.data?.contents)
59
- return atob(c.data.contents);
58
+ )), r?.data?.contents)
59
+ return atob(r.data.contents);
60
60
  throw new Error("File not found");
61
61
  },
62
62
  async copyChecksum(e) {
@@ -80,9 +80,9 @@ const U = {
80
80
  }
81
81
  }
82
82
  }, $ = { class: "text-caption text-medium-emphasis font-weight-regular" }, z = { class: "text-caption text-medium-emphasis mb-2" }, D = { class: "ml-1 text-high-emphasis" }, O = { class: "flex-grow-1 overflow-wrap-anywhere" };
83
- function V(e, t, s, c, i, r) {
84
- const C = n("v-spacer"), f = n("v-btn"), v = n("v-card-title"), _ = n("v-divider"), x = n("v-sheet"), w = n("v-chip"), b = n("v-card-text"), E = n("v-card");
85
- return h(), S(E, {
83
+ function V(e, t, s, r, i, c) {
84
+ const C = n("v-spacer"), f = n("v-btn"), v = n("v-card-title"), _ = n("v-divider"), x = n("v-sheet"), w = n("v-chip"), b = n("v-card-text"), F = n("v-card");
85
+ return h(), S(F, {
86
86
  style: N(e.computedStyle),
87
87
  "min-width": "400"
88
88
  }, {
@@ -96,7 +96,7 @@ function V(e, t, s, c, i, r) {
96
96
  icon: "mdi-refresh",
97
97
  variant: "text",
98
98
  loading: i.loading,
99
- onClick: r.fetchChecksums
99
+ onClick: c.fetchChecksums
100
100
  }, null, 8, ["loading", "onClick"])
101
101
  ]),
102
102
  _: 1
@@ -114,7 +114,7 @@ function V(e, t, s, c, i, r) {
114
114
  style: { "background-color": "rgba(128, 128, 128, 0.2)" }
115
115
  }, {
116
116
  default: l(() => [
117
- d("span", O, m(r.getDisplayText(a)), 1),
117
+ d("span", O, m(c.getDisplayText(a)), 1),
118
118
  o(f, {
119
119
  icon: a.copied ? "$success" : "mdi-content-copy",
120
120
  color: a.copied ? "success" : void 0,
@@ -122,7 +122,7 @@ function V(e, t, s, c, i, r) {
122
122
  size: "x-small",
123
123
  variant: "plain",
124
124
  density: "compact",
125
- onClick: (L) => r.copyChecksum(a)
125
+ onClick: (L) => c.copyChecksum(a)
126
126
  }, null, 8, ["icon", "color", "disabled", "onClick"])
127
127
  ]),
128
128
  _: 2
@@ -131,14 +131,14 @@ function V(e, t, s, c, i, r) {
131
131
  i.files.length > 1 ? (h(), u(p, { key: 0 }, [
132
132
  o(_, { class: "mb-3" }),
133
133
  o(w, {
134
- color: r.matchStatus.color,
134
+ color: c.matchStatus.color,
135
135
  size: "small",
136
136
  variant: "tonal",
137
137
  label: "",
138
- "prepend-icon": r.matchStatus.icon
138
+ "prepend-icon": c.matchStatus.icon
139
139
  }, {
140
140
  default: l(() => [
141
- y(m(r.matchStatus.text), 1)
141
+ y(m(c.matchStatus.text), 1)
142
142
  ]),
143
143
  _: 1
144
144
  }, 8, ["color", "prepend-icon"])
@@ -154,4 +154,4 @@ const K = /* @__PURE__ */ I(U, [["render", V], ["__scopeId", "data-v-5728d932"]]
154
154
  export {
155
155
  K as default
156
156
  };
157
- //# sourceMappingURL=FilechecksumWidget-C6duPUFo.js.map
157
+ //# sourceMappingURL=FilechecksumWidget-BS281Q0h.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilechecksumWidget-C6duPUFo.js","sources":["../src/widgets/FilechecksumWidget.vue"],"sourcesContent":["<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card :style=\"computedStyle\" min-width=\"400\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ files.length === 1 ? 'File Checksum' : 'File Checksum Comparison' }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchChecksums\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-3\">\n <template v-for=\"(file, index) in files\" :key=\"index\">\n <div class=\"text-caption text-medium-emphasis mb-2\">\n {{ files.length === 1 ? 'File:' : `File ${index + 1}:` }}\n <span class=\"ml-1 text-high-emphasis\">{{ file.path }}</span>\n </div>\n <v-sheet\n :class=\"file.error ? 'text-error' : ''\"\n class=\"d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption\"\n style=\"background-color: rgba(128, 128, 128, 0.2)\"\n >\n <span class=\"flex-grow-1 overflow-wrap-anywhere\">\n {{ getDisplayText(file) }}\n </span>\n <v-btn\n :icon=\"file.copied ? '$success' : 'mdi-content-copy'\"\n :color=\"file.copied ? 'success' : undefined\"\n :disabled=\"!file.checksum\"\n size=\"x-small\"\n variant=\"plain\"\n density=\"compact\"\n @click=\"copyChecksum(file)\"\n />\n </v-sheet>\n </template>\n\n <template v-if=\"files.length > 1\">\n <v-divider class=\"mb-3\" />\n <v-chip\n :color=\"matchStatus.color\"\n size=\"small\"\n variant=\"tonal\"\n label\n :prepend-icon=\"matchStatus.icon\"\n >\n {{ matchStatus.text }}\n </v-chip>\n </template>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n files: [],\n loading: false,\n }\n },\n computed: {\n match() {\n if (this.files.some((f) => f.error)) return false\n if (this.files.some((f) => !f.checksum)) return null\n const first = this.files[0].checksum\n return this.files.every((f) => f.checksum === first)\n },\n matchStatus() {\n const states = {\n null: { icon: '$info', color: 'grey', text: 'Comparing...' },\n true: { icon: '$success', color: 'success', text: 'Checksums Match' },\n false: {\n icon: '$error',\n color: 'error',\n text: this.files.some((f) => f.error)\n ? 'Error loading file(s)'\n : 'Checksums Do Not Match',\n },\n }\n return states[this.match]\n },\n },\n created() {\n this.files = this.parameters\n .filter((p) => p)\n .map((path) => ({ path, checksum: null, error: null, copied: false }))\n },\n mounted() {\n if (this.files.length) {\n this.fetchChecksums()\n }\n },\n methods: {\n getDisplayText(file) {\n if (file.error) return `Error: ${file.error}`\n if (file.checksum) return file.checksum\n if (this.loading) return 'Loading...'\n return 'Not loaded'\n },\n async computeChecksum(content) {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n },\n async fetchFile(filePath) {\n const scope = window.openc3Scope || 'DEFAULT'\n let objectPath = `${scope}/targets_modified/${filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n return atob(response.data.contents)\n }\n throw new Error('File not found')\n },\n async copyChecksum(file) {\n if (!file.checksum) return\n try {\n await navigator.clipboard.writeText(file.checksum)\n file.copied = true\n setTimeout(() => (file.copied = false), 2000)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy checksum:', err)\n }\n },\n async fetchChecksums() {\n this.loading = true\n this.files.forEach((f) => {\n f.checksum = null\n f.error = null\n })\n\n const results = await Promise.all(\n this.files.map((file) =>\n this.fetchFile(file.path)\n .then((content) => this.computeChecksum(content))\n .catch((err) => ({ error: err.message || 'File not found' })),\n ),\n )\n\n results.forEach((result, i) => {\n if (result?.error) {\n this.files[i].error = result.error\n } else {\n this.files[i].checksum = result\n }\n })\n\n this.loading = false\n },\n },\n}\n</script>\n\n<style scoped>\n.overflow-wrap-anywhere {\n overflow-wrap: anywhere;\n}\n</style>\n"],"names":["_sfc_main","Widget","f","first","p","path","file","content","data","hashBuffer","b","filePath","scope","objectPath","response","Api","err","result","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text","_openBlock","_createElementBlock","_Fragment","_renderList","index","_createTextVNode","_component_v_sheet","_normalizeClass","$event","_component_v_chip"],"mappings":"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"}
1
+ {"version":3,"file":"FilechecksumWidget-BS281Q0h.js","sources":["../src/widgets/FilechecksumWidget.vue"],"sourcesContent":["<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card :style=\"computedStyle\" min-width=\"400\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ files.length === 1 ? 'File Checksum' : 'File Checksum Comparison' }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchChecksums\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-3\">\n <template v-for=\"(file, index) in files\" :key=\"index\">\n <div class=\"text-caption text-medium-emphasis mb-2\">\n {{ files.length === 1 ? 'File:' : `File ${index + 1}:` }}\n <span class=\"ml-1 text-high-emphasis\">{{ file.path }}</span>\n </div>\n <v-sheet\n :class=\"file.error ? 'text-error' : ''\"\n class=\"d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption\"\n style=\"background-color: rgba(128, 128, 128, 0.2)\"\n >\n <span class=\"flex-grow-1 overflow-wrap-anywhere\">\n {{ getDisplayText(file) }}\n </span>\n <v-btn\n :icon=\"file.copied ? '$success' : 'mdi-content-copy'\"\n :color=\"file.copied ? 'success' : undefined\"\n :disabled=\"!file.checksum\"\n size=\"x-small\"\n variant=\"plain\"\n density=\"compact\"\n @click=\"copyChecksum(file)\"\n />\n </v-sheet>\n </template>\n\n <template v-if=\"files.length > 1\">\n <v-divider class=\"mb-3\" />\n <v-chip\n :color=\"matchStatus.color\"\n size=\"small\"\n variant=\"tonal\"\n label\n :prepend-icon=\"matchStatus.icon\"\n >\n {{ matchStatus.text }}\n </v-chip>\n </template>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n files: [],\n loading: false,\n }\n },\n computed: {\n match() {\n if (this.files.some((f) => f.error)) return false\n if (this.files.some((f) => !f.checksum)) return null\n const first = this.files[0].checksum\n return this.files.every((f) => f.checksum === first)\n },\n matchStatus() {\n const states = {\n null: { icon: '$info', color: 'grey', text: 'Comparing...' },\n true: { icon: '$success', color: 'success', text: 'Checksums Match' },\n false: {\n icon: '$error',\n color: 'error',\n text: this.files.some((f) => f.error)\n ? 'Error loading file(s)'\n : 'Checksums Do Not Match',\n },\n }\n return states[this.match]\n },\n },\n created() {\n this.files = this.parameters\n .filter((p) => p)\n .map((path) => ({ path, checksum: null, error: null, copied: false }))\n },\n mounted() {\n if (this.files.length) {\n this.fetchChecksums()\n }\n },\n methods: {\n getDisplayText(file) {\n if (file.error) return `Error: ${file.error}`\n if (file.checksum) return file.checksum\n if (this.loading) return 'Loading...'\n return 'Not loaded'\n },\n async computeChecksum(content) {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n },\n async fetchFile(filePath) {\n const scope = window.openc3Scope || 'DEFAULT'\n let objectPath = `${scope}/targets_modified/${filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n return atob(response.data.contents)\n }\n throw new Error('File not found')\n },\n async copyChecksum(file) {\n if (!file.checksum) return\n try {\n await navigator.clipboard.writeText(file.checksum)\n file.copied = true\n setTimeout(() => (file.copied = false), 2000)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy checksum:', err)\n }\n },\n async fetchChecksums() {\n this.loading = true\n this.files.forEach((f) => {\n f.checksum = null\n f.error = null\n })\n\n const results = await Promise.all(\n this.files.map((file) =>\n this.fetchFile(file.path)\n .then((content) => this.computeChecksum(content))\n .catch((err) => ({ error: err.message || 'File not found' })),\n ),\n )\n\n results.forEach((result, i) => {\n if (result?.error) {\n this.files[i].error = result.error\n } else {\n this.files[i].checksum = result\n }\n })\n\n this.loading = false\n },\n },\n}\n</script>\n\n<style scoped>\n.overflow-wrap-anywhere {\n overflow-wrap: anywhere;\n}\n</style>\n"],"names":["_sfc_main","Widget","f","first","p","path","file","content","data","hashBuffer","b","filePath","scope","objectPath","response","Api","err","result","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text","_openBlock","_createElementBlock","_Fragment","_renderList","index","_createTextVNode","_component_v_sheet","_normalizeClass","$event","_component_v_chip"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-BBqfsHYh.cjs"),k=require("./Widget-C5yVe7V0.cjs"),e=require("vue"),C=require("./CustomIcon-8F08upeg.cjs"),v={mixins:[k.Widget],data(){return{files:[],loading:!1}},computed:{match(){if(this.files.some(o=>o.error))return!1;if(this.files.some(o=>!o.checksum))return null;const t=this.files[0].checksum;return this.files.every(o=>o.checksum===t)},matchStatus(){return{null:{icon:"$info",color:"grey",text:"Comparing..."},true:{icon:"$success",color:"success",text:"Checksums Match"},false:{icon:"$error",color:"error",text:this.files.some(o=>o.error)?"Error loading file(s)":"Checksums Do Not Match"}}[this.match]}},created(){this.files=this.parameters.filter(t=>t).map(t=>({path:t,checksum:null,error:null,copied:!1}))},mounted(){this.files.length&&this.fetchChecksums()},methods:{getDisplayText(t){return t.error?`Error: ${t.error}`:t.checksum?t.checksum:this.loading?"Loading...":"Not loaded"},async computeChecksum(t){const r=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).map(c=>c.toString(16).padStart(2,"0")).join("")},async fetchFile(t){const o=window.openc3Scope||"DEFAULT";let r=`${o}/targets_modified/${t}`,s=await m.li.get(`/openc3-api/storage/download_file/${encodeURIComponent(r)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"},headers:{"Ignore-Errors":"404,500"}}).catch(()=>null);if((!s||s.status===404)&&(r=`${o}/targets/${t}`,s=await m.li.get(`/openc3-api/storage/download_file/${encodeURIComponent(r)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"}})),s?.data?.contents)return atob(s.data.contents);throw new Error("File not found")},async copyChecksum(t){if(t.checksum)try{await navigator.clipboard.writeText(t.checksum),t.copied=!0,setTimeout(()=>t.copied=!1,2e3)}catch(o){console.error("Failed to copy checksum:",o)}},async fetchChecksums(){this.loading=!0,this.files.forEach(o=>{o.checksum=null,o.error=null}),(await Promise.all(this.files.map(o=>this.fetchFile(o.path).then(r=>this.computeChecksum(r)).catch(r=>({error:r.message||"File not found"}))))).forEach((o,r)=>{o?.error?this.files[r].error=o.error:this.files[r].checksum=o}),this.loading=!1}}},y={class:"text-caption text-medium-emphasis font-weight-regular"},x={class:"text-caption text-medium-emphasis mb-2"},w={class:"ml-1 text-high-emphasis"},N={class:"flex-grow-1 overflow-wrap-anywhere"};function E(t,o,r,s,a,c){const h=e.resolveComponent("v-spacer"),i=e.resolveComponent("v-btn"),u=e.resolveComponent("v-card-title"),l=e.resolveComponent("v-divider"),p=e.resolveComponent("v-sheet"),_=e.resolveComponent("v-chip"),f=e.resolveComponent("v-card-text"),g=e.resolveComponent("v-card");return e.openBlock(),e.createBlock(g,{style:e.normalizeStyle(t.computedStyle),"min-width":"400"},{default:e.withCtx(()=>[e.createVNode(u,{class:"d-flex align-center pa-2"},{default:e.withCtx(()=>[e.createElementVNode("span",y,e.toDisplayString(a.files.length===1?"File Checksum":"File Checksum Comparison"),1),e.createVNode(h),e.createVNode(i,{size:"x-small",icon:"mdi-refresh",variant:"text",loading:a.loading,onClick:c.fetchChecksums},null,8,["loading","onClick"])]),_:1}),e.createVNode(l),e.createVNode(f,{class:"pa-3"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.files,(n,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[e.createElementVNode("div",x,[e.createTextVNode(e.toDisplayString(a.files.length===1?"File:":`File ${d+1}:`)+" ",1),e.createElementVNode("span",w,e.toDisplayString(n.path),1)]),e.createVNode(p,{class:e.normalizeClass([n.error?"text-error":"","d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption"]),style:{"background-color":"rgba(128, 128, 128, 0.2)"}},{default:e.withCtx(()=>[e.createElementVNode("span",N,e.toDisplayString(c.getDisplayText(n)),1),e.createVNode(i,{icon:n.copied?"$success":"mdi-content-copy",color:n.copied?"success":void 0,disabled:!n.checksum,size:"x-small",variant:"plain",density:"compact",onClick:S=>c.copyChecksum(n)},null,8,["icon","color","disabled","onClick"])]),_:2},1032,["class"])],64))),128)),a.files.length>1?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(l,{class:"mb-3"}),e.createVNode(_,{color:c.matchStatus.color,size:"small",variant:"tonal",label:"","prepend-icon":c.matchStatus.icon},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.matchStatus.text),1)]),_:1},8,["color","prepend-icon"])],64)):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["style"])}const b=C._export_sfc(v,[["render",E],["__scopeId","data-v-5728d932"]]);exports.default=b;
2
- //# sourceMappingURL=FilechecksumWidget-ccksLFy0.cjs.map
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_c790a82f_lang-MfH160rD.cjs"),k=require("./Widget-D0drYWOT.cjs"),e=require("vue"),C=require("./CustomIcon-8F08upeg.cjs"),v={mixins:[k.Widget],data(){return{files:[],loading:!1}},computed:{match(){if(this.files.some(o=>o.error))return!1;if(this.files.some(o=>!o.checksum))return null;const t=this.files[0].checksum;return this.files.every(o=>o.checksum===t)},matchStatus(){return{null:{icon:"$info",color:"grey",text:"Comparing..."},true:{icon:"$success",color:"success",text:"Checksums Match"},false:{icon:"$error",color:"error",text:this.files.some(o=>o.error)?"Error loading file(s)":"Checksums Do Not Match"}}[this.match]}},created(){this.files=this.parameters.filter(t=>t).map(t=>({path:t,checksum:null,error:null,copied:!1}))},mounted(){this.files.length&&this.fetchChecksums()},methods:{getDisplayText(t){return t.error?`Error: ${t.error}`:t.checksum?t.checksum:this.loading?"Loading...":"Not loaded"},async computeChecksum(t){const r=new TextEncoder().encode(t),s=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).map(c=>c.toString(16).padStart(2,"0")).join("")},async fetchFile(t){const o=window.openc3Scope||"DEFAULT";let r=`${o}/targets_modified/${t}`,s=await m.Fr.get(`/openc3-api/storage/download_file/${encodeURIComponent(r)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"},headers:{"Ignore-Errors":"404,500"}}).catch(()=>null);if((!s||s.status===404)&&(r=`${o}/targets/${t}`,s=await m.Fr.get(`/openc3-api/storage/download_file/${encodeURIComponent(r)}`,{params:{bucket:"OPENC3_CONFIG_BUCKET"}})),s?.data?.contents)return atob(s.data.contents);throw new Error("File not found")},async copyChecksum(t){if(t.checksum)try{await navigator.clipboard.writeText(t.checksum),t.copied=!0,setTimeout(()=>t.copied=!1,2e3)}catch(o){console.error("Failed to copy checksum:",o)}},async fetchChecksums(){this.loading=!0,this.files.forEach(o=>{o.checksum=null,o.error=null}),(await Promise.all(this.files.map(o=>this.fetchFile(o.path).then(r=>this.computeChecksum(r)).catch(r=>({error:r.message||"File not found"}))))).forEach((o,r)=>{o?.error?this.files[r].error=o.error:this.files[r].checksum=o}),this.loading=!1}}},y={class:"text-caption text-medium-emphasis font-weight-regular"},x={class:"text-caption text-medium-emphasis mb-2"},w={class:"ml-1 text-high-emphasis"},N={class:"flex-grow-1 overflow-wrap-anywhere"};function E(t,o,r,s,a,c){const h=e.resolveComponent("v-spacer"),i=e.resolveComponent("v-btn"),u=e.resolveComponent("v-card-title"),l=e.resolveComponent("v-divider"),p=e.resolveComponent("v-sheet"),_=e.resolveComponent("v-chip"),f=e.resolveComponent("v-card-text"),g=e.resolveComponent("v-card");return e.openBlock(),e.createBlock(g,{style:e.normalizeStyle(t.computedStyle),"min-width":"400"},{default:e.withCtx(()=>[e.createVNode(u,{class:"d-flex align-center pa-2"},{default:e.withCtx(()=>[e.createElementVNode("span",y,e.toDisplayString(a.files.length===1?"File Checksum":"File Checksum Comparison"),1),e.createVNode(h),e.createVNode(i,{size:"x-small",icon:"mdi-refresh",variant:"text",loading:a.loading,onClick:c.fetchChecksums},null,8,["loading","onClick"])]),_:1}),e.createVNode(l),e.createVNode(f,{class:"pa-3"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.files,(n,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d},[e.createElementVNode("div",x,[e.createTextVNode(e.toDisplayString(a.files.length===1?"File:":`File ${d+1}:`)+" ",1),e.createElementVNode("span",w,e.toDisplayString(n.path),1)]),e.createVNode(p,{class:e.normalizeClass([n.error?"text-error":"","d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption"]),style:{"background-color":"rgba(128, 128, 128, 0.2)"}},{default:e.withCtx(()=>[e.createElementVNode("span",N,e.toDisplayString(c.getDisplayText(n)),1),e.createVNode(i,{icon:n.copied?"$success":"mdi-content-copy",color:n.copied?"success":void 0,disabled:!n.checksum,size:"x-small",variant:"plain",density:"compact",onClick:F=>c.copyChecksum(n)},null,8,["icon","color","disabled","onClick"])]),_:2},1032,["class"])],64))),128)),a.files.length>1?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(l,{class:"mb-3"}),e.createVNode(_,{color:c.matchStatus.color,size:"small",variant:"tonal",label:"","prepend-icon":c.matchStatus.icon},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.matchStatus.text),1)]),_:1},8,["color","prepend-icon"])],64)):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["style"])}const b=C._export_sfc(v,[["render",E],["__scopeId","data-v-5728d932"]]);exports.default=b;
2
+ //# sourceMappingURL=FilechecksumWidget-DMpuLZJ5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilechecksumWidget-ccksLFy0.cjs","sources":["../src/widgets/FilechecksumWidget.vue"],"sourcesContent":["<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card :style=\"computedStyle\" min-width=\"400\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ files.length === 1 ? 'File Checksum' : 'File Checksum Comparison' }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchChecksums\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-3\">\n <template v-for=\"(file, index) in files\" :key=\"index\">\n <div class=\"text-caption text-medium-emphasis mb-2\">\n {{ files.length === 1 ? 'File:' : `File ${index + 1}:` }}\n <span class=\"ml-1 text-high-emphasis\">{{ file.path }}</span>\n </div>\n <v-sheet\n :class=\"file.error ? 'text-error' : ''\"\n class=\"d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption\"\n style=\"background-color: rgba(128, 128, 128, 0.2)\"\n >\n <span class=\"flex-grow-1 overflow-wrap-anywhere\">\n {{ getDisplayText(file) }}\n </span>\n <v-btn\n :icon=\"file.copied ? '$success' : 'mdi-content-copy'\"\n :color=\"file.copied ? 'success' : undefined\"\n :disabled=\"!file.checksum\"\n size=\"x-small\"\n variant=\"plain\"\n density=\"compact\"\n @click=\"copyChecksum(file)\"\n />\n </v-sheet>\n </template>\n\n <template v-if=\"files.length > 1\">\n <v-divider class=\"mb-3\" />\n <v-chip\n :color=\"matchStatus.color\"\n size=\"small\"\n variant=\"tonal\"\n label\n :prepend-icon=\"matchStatus.icon\"\n >\n {{ matchStatus.text }}\n </v-chip>\n </template>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n files: [],\n loading: false,\n }\n },\n computed: {\n match() {\n if (this.files.some((f) => f.error)) return false\n if (this.files.some((f) => !f.checksum)) return null\n const first = this.files[0].checksum\n return this.files.every((f) => f.checksum === first)\n },\n matchStatus() {\n const states = {\n null: { icon: '$info', color: 'grey', text: 'Comparing...' },\n true: { icon: '$success', color: 'success', text: 'Checksums Match' },\n false: {\n icon: '$error',\n color: 'error',\n text: this.files.some((f) => f.error)\n ? 'Error loading file(s)'\n : 'Checksums Do Not Match',\n },\n }\n return states[this.match]\n },\n },\n created() {\n this.files = this.parameters\n .filter((p) => p)\n .map((path) => ({ path, checksum: null, error: null, copied: false }))\n },\n mounted() {\n if (this.files.length) {\n this.fetchChecksums()\n }\n },\n methods: {\n getDisplayText(file) {\n if (file.error) return `Error: ${file.error}`\n if (file.checksum) return file.checksum\n if (this.loading) return 'Loading...'\n return 'Not loaded'\n },\n async computeChecksum(content) {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n },\n async fetchFile(filePath) {\n const scope = window.openc3Scope || 'DEFAULT'\n let objectPath = `${scope}/targets_modified/${filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n return atob(response.data.contents)\n }\n throw new Error('File not found')\n },\n async copyChecksum(file) {\n if (!file.checksum) return\n try {\n await navigator.clipboard.writeText(file.checksum)\n file.copied = true\n setTimeout(() => (file.copied = false), 2000)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy checksum:', err)\n }\n },\n async fetchChecksums() {\n this.loading = true\n this.files.forEach((f) => {\n f.checksum = null\n f.error = null\n })\n\n const results = await Promise.all(\n this.files.map((file) =>\n this.fetchFile(file.path)\n .then((content) => this.computeChecksum(content))\n .catch((err) => ({ error: err.message || 'File not found' })),\n ),\n )\n\n results.forEach((result, i) => {\n if (result?.error) {\n this.files[i].error = result.error\n } else {\n this.files[i].checksum = result\n }\n })\n\n this.loading = false\n },\n },\n}\n</script>\n\n<style scoped>\n.overflow-wrap-anywhere {\n overflow-wrap: anywhere;\n}\n</style>\n"],"names":["_sfc_main","Widget","f","first","p","path","file","content","data","hashBuffer","b","filePath","scope","objectPath","response","Api","err","result","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text","_openBlock","_createElementBlock","_Fragment","_renderList","index","_createTextVNode","_component_v_sheet","_normalizeClass","$event","_component_v_chip"],"mappings":"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"}
1
+ {"version":3,"file":"FilechecksumWidget-DMpuLZJ5.cjs","sources":["../src/widgets/FilechecksumWidget.vue"],"sourcesContent":["<!--\n# Copyright 2025 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n# See LICENSE.md for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-card :style=\"computedStyle\" min-width=\"400\">\n <v-card-title class=\"d-flex align-center pa-2\">\n <span class=\"text-caption text-medium-emphasis font-weight-regular\">\n {{ files.length === 1 ? 'File Checksum' : 'File Checksum Comparison' }}\n </span>\n <v-spacer />\n <v-btn\n size=\"x-small\"\n icon=\"mdi-refresh\"\n variant=\"text\"\n :loading=\"loading\"\n @click=\"fetchChecksums\"\n />\n </v-card-title>\n <v-divider />\n <v-card-text class=\"pa-3\">\n <template v-for=\"(file, index) in files\" :key=\"index\">\n <div class=\"text-caption text-medium-emphasis mb-2\">\n {{ files.length === 1 ? 'File:' : `File ${index + 1}:` }}\n <span class=\"ml-1 text-high-emphasis\">{{ file.path }}</span>\n </div>\n <v-sheet\n :class=\"file.error ? 'text-error' : ''\"\n class=\"d-flex align-center ga-2 px-2 py-1 mb-3 rounded text-caption\"\n style=\"background-color: rgba(128, 128, 128, 0.2)\"\n >\n <span class=\"flex-grow-1 overflow-wrap-anywhere\">\n {{ getDisplayText(file) }}\n </span>\n <v-btn\n :icon=\"file.copied ? '$success' : 'mdi-content-copy'\"\n :color=\"file.copied ? 'success' : undefined\"\n :disabled=\"!file.checksum\"\n size=\"x-small\"\n variant=\"plain\"\n density=\"compact\"\n @click=\"copyChecksum(file)\"\n />\n </v-sheet>\n </template>\n\n <template v-if=\"files.length > 1\">\n <v-divider class=\"mb-3\" />\n <v-chip\n :color=\"matchStatus.color\"\n size=\"small\"\n variant=\"tonal\"\n label\n :prepend-icon=\"matchStatus.icon\"\n >\n {{ matchStatus.text }}\n </v-chip>\n </template>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport Widget from './Widget'\n\nexport default {\n mixins: [Widget],\n data() {\n return {\n files: [],\n loading: false,\n }\n },\n computed: {\n match() {\n if (this.files.some((f) => f.error)) return false\n if (this.files.some((f) => !f.checksum)) return null\n const first = this.files[0].checksum\n return this.files.every((f) => f.checksum === first)\n },\n matchStatus() {\n const states = {\n null: { icon: '$info', color: 'grey', text: 'Comparing...' },\n true: { icon: '$success', color: 'success', text: 'Checksums Match' },\n false: {\n icon: '$error',\n color: 'error',\n text: this.files.some((f) => f.error)\n ? 'Error loading file(s)'\n : 'Checksums Do Not Match',\n },\n }\n return states[this.match]\n },\n },\n created() {\n this.files = this.parameters\n .filter((p) => p)\n .map((path) => ({ path, checksum: null, error: null, copied: false }))\n },\n mounted() {\n if (this.files.length) {\n this.fetchChecksums()\n }\n },\n methods: {\n getDisplayText(file) {\n if (file.error) return `Error: ${file.error}`\n if (file.checksum) return file.checksum\n if (this.loading) return 'Loading...'\n return 'Not loaded'\n },\n async computeChecksum(content) {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('')\n },\n async fetchFile(filePath) {\n const scope = window.openc3Scope || 'DEFAULT'\n let objectPath = `${scope}/targets_modified/${filePath}`\n let response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n {\n params: { bucket: 'OPENC3_CONFIG_BUCKET' },\n headers: { 'Ignore-Errors': '404,500' },\n },\n ).catch(() => null)\n\n if (!response || response.status === 404) {\n objectPath = `${scope}/targets/${filePath}`\n response = await Api.get(\n `/openc3-api/storage/download_file/${encodeURIComponent(objectPath)}`,\n { params: { bucket: 'OPENC3_CONFIG_BUCKET' } },\n )\n }\n\n if (response?.data?.contents) {\n return atob(response.data.contents)\n }\n throw new Error('File not found')\n },\n async copyChecksum(file) {\n if (!file.checksum) return\n try {\n await navigator.clipboard.writeText(file.checksum)\n file.copied = true\n setTimeout(() => (file.copied = false), 2000)\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy checksum:', err)\n }\n },\n async fetchChecksums() {\n this.loading = true\n this.files.forEach((f) => {\n f.checksum = null\n f.error = null\n })\n\n const results = await Promise.all(\n this.files.map((file) =>\n this.fetchFile(file.path)\n .then((content) => this.computeChecksum(content))\n .catch((err) => ({ error: err.message || 'File not found' })),\n ),\n )\n\n results.forEach((result, i) => {\n if (result?.error) {\n this.files[i].error = result.error\n } else {\n this.files[i].checksum = result\n }\n })\n\n this.loading = false\n },\n },\n}\n</script>\n\n<style scoped>\n.overflow-wrap-anywhere {\n overflow-wrap: anywhere;\n}\n</style>\n"],"names":["_sfc_main","Widget","f","first","p","path","file","content","data","hashBuffer","b","filePath","scope","objectPath","response","Api","err","result","i","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createBlock","_component_v_card","_ctx","_createVNode","_component_v_card_title","_createElementVNode","_toDisplayString","$data","_component_v_spacer","_component_v_btn","$options","_component_v_divider","_component_v_card_text","_openBlock","_createElementBlock","_Fragment","_renderList","index","_createTextVNode","_component_v_sheet","_normalizeClass","$event","_component_v_chip"],"mappings":"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"}