@openc3/vue-common 6.0.2 → 6.2.0-fix0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/ArrayWidget-BIQi_bWC.cjs +3 -0
  2. package/dist/ArrayWidget-BIQi_bWC.cjs.map +1 -0
  3. package/dist/ArrayWidget-BxEO5hEG.js +106 -0
  4. package/dist/ArrayWidget-BxEO5hEG.js.map +1 -0
  5. package/dist/ArrayplotWidget-B_VPoV4v.js +199 -0
  6. package/dist/ArrayplotWidget-B_VPoV4v.js.map +1 -0
  7. package/dist/ArrayplotWidget-Donxhd8_.cjs +2 -0
  8. package/dist/ArrayplotWidget-Donxhd8_.cjs.map +1 -0
  9. package/dist/AstroStatus-CILMWL6F.cjs +2 -0
  10. package/dist/AstroStatus-CILMWL6F.cjs.map +1 -0
  11. package/dist/AstroStatus-CY9VkeTN.js +40 -0
  12. package/dist/AstroStatus-CY9VkeTN.js.map +1 -0
  13. package/dist/BarColumn-C9dkpg2O.js +108 -0
  14. package/dist/BarColumn-C9dkpg2O.js.map +1 -0
  15. package/dist/BarColumn-CyRSZHMh.cjs +2 -0
  16. package/dist/BarColumn-CyRSZHMh.cjs.map +1 -0
  17. package/dist/BlockWidget-CuefOin6.js +112 -0
  18. package/dist/BlockWidget-CuefOin6.js.map +1 -0
  19. package/dist/BlockWidget-DPLN1jgj.cjs +3 -0
  20. package/dist/BlockWidget-DPLN1jgj.cjs.map +1 -0
  21. package/dist/ButtonWidget-B6HM0Doo.js +166 -0
  22. package/dist/ButtonWidget-B6HM0Doo.js.map +1 -0
  23. package/dist/ButtonWidget-DccYzIY3.cjs +3 -0
  24. package/dist/ButtonWidget-DccYzIY3.cjs.map +1 -0
  25. package/dist/CanvasWidget-BzTU9rc9.cjs +2 -0
  26. package/dist/CanvasWidget-BzTU9rc9.cjs.map +1 -0
  27. package/dist/CanvasWidget-DZQGG-yQ.js +39 -0
  28. package/dist/CanvasWidget-DZQGG-yQ.js.map +1 -0
  29. package/dist/CanvasdotWidget-6wuCSnw_.js +19 -0
  30. package/dist/CanvasdotWidget-6wuCSnw_.js.map +1 -0
  31. package/dist/CanvasdotWidget-B7VTS1QI.cjs +2 -0
  32. package/dist/CanvasdotWidget-B7VTS1QI.cjs.map +1 -0
  33. package/dist/CanvasimageWidget-BwYpfmDE.cjs +2 -0
  34. package/dist/CanvasimageWidget-BwYpfmDE.cjs.map +1 -0
  35. package/dist/CanvasimageWidget-mhcPpAuN.js +58 -0
  36. package/dist/CanvasimageWidget-mhcPpAuN.js.map +1 -0
  37. package/dist/CanvasimagevalueWidget-Cx-dH8Gc.js +107 -0
  38. package/dist/CanvasimagevalueWidget-Cx-dH8Gc.js.map +1 -0
  39. package/dist/CanvasimagevalueWidget-E_NsZ82T.cjs +2 -0
  40. package/dist/CanvasimagevalueWidget-E_NsZ82T.cjs.map +1 -0
  41. package/dist/CanvaslabelWidget-BBDuXWfU.cjs +2 -0
  42. package/dist/CanvaslabelWidget-BBDuXWfU.cjs.map +1 -0
  43. package/dist/CanvaslabelWidget-CQZCeohU.js +23 -0
  44. package/dist/CanvaslabelWidget-CQZCeohU.js.map +1 -0
  45. package/dist/CanvaslabelvalueWidget-CwmYDCjr.js +42 -0
  46. package/dist/CanvaslabelvalueWidget-CwmYDCjr.js.map +1 -0
  47. package/dist/CanvaslabelvalueWidget-DAdu7ujn.cjs +2 -0
  48. package/dist/CanvaslabelvalueWidget-DAdu7ujn.cjs.map +1 -0
  49. package/dist/CanvaslineWidget-Bv5da1Vy.cjs +2 -0
  50. package/dist/CanvaslineWidget-Bv5da1Vy.cjs.map +1 -0
  51. package/dist/CanvaslineWidget-nTP3fJB4.js +28 -0
  52. package/dist/CanvaslineWidget-nTP3fJB4.js.map +1 -0
  53. package/dist/CanvaslinevalueWidget-BVfUB96K.cjs +2 -0
  54. package/dist/CanvaslinevalueWidget-BVfUB96K.cjs.map +1 -0
  55. package/dist/CanvaslinevalueWidget-C3sJnjLQ.js +44 -0
  56. package/dist/CanvaslinevalueWidget-C3sJnjLQ.js.map +1 -0
  57. package/dist/CheckbuttonWidget-5-8YDsQL.js +37 -0
  58. package/dist/CheckbuttonWidget-5-8YDsQL.js.map +1 -0
  59. package/dist/CheckbuttonWidget-BGqD-BGc.cjs +2 -0
  60. package/dist/CheckbuttonWidget-BGqD-BGc.cjs.map +1 -0
  61. package/dist/ComboboxWidget-DoHMlSAr.cjs +2 -0
  62. package/dist/ComboboxWidget-DoHMlSAr.cjs.map +1 -0
  63. package/dist/ComboboxWidget-DzBL8h9f.js +37 -0
  64. package/dist/ComboboxWidget-DzBL8h9f.js.map +1 -0
  65. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs +2 -0
  66. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs.map +1 -0
  67. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js +10 -0
  68. package/dist/CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-CHgC5LLL.js.map +1 -0
  69. package/dist/CriticalCmdDialog-DLEasFsx.js +270 -0
  70. package/dist/CriticalCmdDialog-DLEasFsx.js.map +1 -0
  71. package/dist/CriticalCmdDialog-DoLBrU2k.cjs +2 -0
  72. package/dist/CriticalCmdDialog-DoLBrU2k.cjs.map +1 -0
  73. package/dist/DateWidget-CW7Od7lB.js +40 -0
  74. package/dist/DateWidget-CW7Od7lB.js.map +1 -0
  75. package/dist/DateWidget-DKZz1J9J.cjs +2 -0
  76. package/dist/DateWidget-DKZz1J9J.cjs.map +1 -0
  77. package/dist/DetailsDialog-BvbziA7Y.js +767 -0
  78. package/dist/DetailsDialog-BvbziA7Y.js.map +1 -0
  79. package/dist/DetailsDialog-CiuQYvJK.cjs +2 -0
  80. package/dist/DetailsDialog-CiuQYvJK.cjs.map +1 -0
  81. package/dist/DynamicWidget-3wHr6Ng-.cjs +2 -0
  82. package/dist/DynamicWidget-3wHr6Ng-.cjs.map +1 -0
  83. package/dist/DynamicWidget-gFSYxzvT.js +35 -0
  84. package/dist/DynamicWidget-gFSYxzvT.js.map +1 -0
  85. package/dist/FormatvalueWidget-CGpnTqVH.js +44 -0
  86. package/dist/FormatvalueWidget-CGpnTqVH.js.map +1 -0
  87. package/dist/FormatvalueWidget-DFrbeKb9.cjs +2 -0
  88. package/dist/FormatvalueWidget-DFrbeKb9.cjs.map +1 -0
  89. package/dist/Graph-3rkhFP3G.js +1983 -0
  90. package/dist/Graph-3rkhFP3G.js.map +1 -0
  91. package/dist/Graph-C3vGMcos.cjs +2 -0
  92. package/dist/Graph-C3vGMcos.cjs.map +1 -0
  93. package/dist/GraphWidget-22NxFa9k.cjs +2 -0
  94. package/dist/GraphWidget-22NxFa9k.cjs.map +1 -0
  95. package/dist/GraphWidget-Dycey-mj.js +130 -0
  96. package/dist/GraphWidget-Dycey-mj.js.map +1 -0
  97. package/dist/HorizontalWidget-BBeB0eBI.cjs +2 -0
  98. package/dist/HorizontalWidget-BBeB0eBI.cjs.map +1 -0
  99. package/dist/HorizontalWidget-D31NRWy5.js +41 -0
  100. package/dist/HorizontalWidget-D31NRWy5.js.map +1 -0
  101. package/dist/HorizontalboxWidget-Br8dSVHD.js +38 -0
  102. package/dist/HorizontalboxWidget-Br8dSVHD.js.map +1 -0
  103. package/dist/HorizontalboxWidget-DsdzrCJx.cjs +2 -0
  104. package/dist/HorizontalboxWidget-DsdzrCJx.cjs.map +1 -0
  105. package/dist/HorizontallineWidget-BCKOQase.cjs +2 -0
  106. package/dist/HorizontallineWidget-BCKOQase.cjs.map +1 -0
  107. package/dist/HorizontallineWidget-CbxREBYI.js +11 -0
  108. package/dist/HorizontallineWidget-CbxREBYI.js.map +1 -0
  109. package/dist/IframeWidget-CZwsTgvX.cjs +2 -0
  110. package/dist/IframeWidget-CZwsTgvX.cjs.map +1 -0
  111. package/dist/IframeWidget-Ctj8OIcG.js +90 -0
  112. package/dist/IframeWidget-Ctj8OIcG.js.map +1 -0
  113. package/dist/ImageLoader-BrNrCBvi.js +36 -0
  114. package/dist/ImageLoader-BrNrCBvi.js.map +1 -0
  115. package/dist/ImageLoader-D_Gq-KxR.cjs +2 -0
  116. package/dist/ImageLoader-D_Gq-KxR.cjs.map +1 -0
  117. package/dist/ImageviewerWidget-DwRPFSLR.cjs +2 -0
  118. package/dist/ImageviewerWidget-DwRPFSLR.cjs.map +1 -0
  119. package/dist/ImageviewerWidget-XrsqxmLo.js +37 -0
  120. package/dist/ImageviewerWidget-XrsqxmLo.js.map +1 -0
  121. package/dist/InterfacesTab-CLaicsHA.cjs +2 -0
  122. package/dist/InterfacesTab-CLaicsHA.cjs.map +1 -0
  123. package/dist/InterfacesTab-DAeNlGlB.js +93 -0
  124. package/dist/InterfacesTab-DAeNlGlB.js.map +1 -0
  125. package/dist/LabelWidget-C-s8OVmA.cjs +2 -0
  126. package/dist/LabelWidget-C-s8OVmA.cjs.map +1 -0
  127. package/dist/LabelWidget-t7I87dp7.js +48 -0
  128. package/dist/LabelWidget-t7I87dp7.js.map +1 -0
  129. package/dist/LabelledWidget-C7TDf92M.js +42 -0
  130. package/dist/LabelledWidget-C7TDf92M.js.map +1 -0
  131. package/dist/LabelledWidget-DUpHxc9z.cjs +2 -0
  132. package/dist/LabelledWidget-DUpHxc9z.cjs.map +1 -0
  133. package/dist/LabelprogressbarWidget-D6cpayCR.cjs +2 -0
  134. package/dist/LabelprogressbarWidget-D6cpayCR.cjs.map +1 -0
  135. package/dist/LabelprogressbarWidget-wwLURt1u.js +43 -0
  136. package/dist/LabelprogressbarWidget-wwLURt1u.js.map +1 -0
  137. package/dist/LabelsparklineWidget-B3awLUyP.js +44 -0
  138. package/dist/LabelsparklineWidget-B3awLUyP.js.map +1 -0
  139. package/dist/LabelsparklineWidget-CJRnLETe.cjs +2 -0
  140. package/dist/LabelsparklineWidget-CJRnLETe.cjs.map +1 -0
  141. package/dist/LabelvalueWidget-Zx_yHCtl.js +58 -0
  142. package/dist/LabelvalueWidget-Zx_yHCtl.js.map +1 -0
  143. package/dist/LabelvalueWidget-owiMSCYl.cjs +2 -0
  144. package/dist/LabelvalueWidget-owiMSCYl.cjs.map +1 -0
  145. package/dist/LabelvaluedescWidget-BBSBh4vI.js +59 -0
  146. package/dist/LabelvaluedescWidget-BBSBh4vI.js.map +1 -0
  147. package/dist/LabelvaluedescWidget-MRmZBUc0.cjs +2 -0
  148. package/dist/LabelvaluedescWidget-MRmZBUc0.cjs.map +1 -0
  149. package/dist/LabelvaluelimitsbarWidget-BQ2XYPNE.cjs +2 -0
  150. package/dist/LabelvaluelimitsbarWidget-BQ2XYPNE.cjs.map +1 -0
  151. package/dist/LabelvaluelimitsbarWidget-CZueHYWG.js +57 -0
  152. package/dist/LabelvaluelimitsbarWidget-CZueHYWG.js.map +1 -0
  153. package/dist/LabelvaluelimitscolumnWidget-BTvzyQMq.js +47 -0
  154. package/dist/LabelvaluelimitscolumnWidget-BTvzyQMq.js.map +1 -0
  155. package/dist/LabelvaluelimitscolumnWidget-DNmVpU8J.cjs +2 -0
  156. package/dist/LabelvaluelimitscolumnWidget-DNmVpU8J.cjs.map +1 -0
  157. package/dist/LabelvaluerangebarWidget-BhYTBgDq.js +79 -0
  158. package/dist/LabelvaluerangebarWidget-BhYTBgDq.js.map +1 -0
  159. package/dist/LabelvaluerangebarWidget-DL0U8cbw.cjs +2 -0
  160. package/dist/LabelvaluerangebarWidget-DL0U8cbw.cjs.map +1 -0
  161. package/dist/Layout-Bh7VzCZd.js +14 -0
  162. package/dist/Layout-Bh7VzCZd.js.map +1 -0
  163. package/dist/Layout-DRL0EeSA.cjs +2 -0
  164. package/dist/Layout-DRL0EeSA.cjs.map +1 -0
  165. package/dist/LedWidget-B8rjFe1b.cjs +2 -0
  166. package/dist/LedWidget-B8rjFe1b.cjs.map +1 -0
  167. package/dist/LedWidget-CxJjJBBS.js +71 -0
  168. package/dist/LedWidget-CxJjJBBS.js.map +1 -0
  169. package/dist/LimitsbarWidget-CYIH8fdp.cjs +2 -0
  170. package/dist/LimitsbarWidget-CYIH8fdp.cjs.map +1 -0
  171. package/dist/LimitsbarWidget-Djui0IpK.js +69 -0
  172. package/dist/LimitsbarWidget-Djui0IpK.js.map +1 -0
  173. package/dist/LimitscolorWidget-CS0wpX9A.cjs +2 -0
  174. package/dist/LimitscolorWidget-CS0wpX9A.cjs.map +1 -0
  175. package/dist/LimitscolorWidget-DdmvKzmx.js +63 -0
  176. package/dist/LimitscolorWidget-DdmvKzmx.js.map +1 -0
  177. package/dist/LimitscolumnWidget-C_UW6xKq.cjs +2 -0
  178. package/dist/LimitscolumnWidget-C_UW6xKq.cjs.map +1 -0
  179. package/dist/LimitscolumnWidget-Cc19IEjq.js +66 -0
  180. package/dist/LimitscolumnWidget-Cc19IEjq.js.map +1 -0
  181. package/dist/LinegraphWidget-8td_PqgU.cjs +2 -0
  182. package/dist/LinegraphWidget-8td_PqgU.cjs.map +1 -0
  183. package/dist/LinegraphWidget-BtieJxeL.js +39 -0
  184. package/dist/LinegraphWidget-BtieJxeL.js.map +1 -0
  185. package/dist/MatrixbycolumnsWidget-CGOeCNW2.cjs +2 -0
  186. package/dist/MatrixbycolumnsWidget-CGOeCNW2.cjs.map +1 -0
  187. package/dist/MatrixbycolumnsWidget-DnExVRF8.js +56 -0
  188. package/dist/MatrixbycolumnsWidget-DnExVRF8.js.map +1 -0
  189. package/dist/MicroservicesTab-IbTmbPxO.js +268 -0
  190. package/dist/MicroservicesTab-IbTmbPxO.js.map +1 -0
  191. package/dist/MicroservicesTab-uMC8NebS.cjs +2 -0
  192. package/dist/MicroservicesTab-uMC8NebS.cjs.map +1 -0
  193. package/dist/OutputDialog-B4Q0QMJ1.cjs +2 -0
  194. package/dist/OutputDialog-B4Q0QMJ1.cjs.map +1 -0
  195. package/dist/OutputDialog-Ci5OT_fH.js +245 -0
  196. package/dist/OutputDialog-Ci5OT_fH.js.map +1 -0
  197. package/dist/PackagesTab-BX8YP3H1.js +332 -0
  198. package/dist/PackagesTab-BX8YP3H1.js.map +1 -0
  199. package/dist/PackagesTab-eYbk2vw7.cjs +2 -0
  200. package/dist/PackagesTab-eYbk2vw7.cjs.map +1 -0
  201. package/dist/PluginsTab-Ck3DvEGm.cjs +6 -0
  202. package/dist/PluginsTab-Ck3DvEGm.cjs.map +1 -0
  203. package/dist/PluginsTab-Ds3jk64b.js +599 -0
  204. package/dist/PluginsTab-Ds3jk64b.js.map +1 -0
  205. package/dist/ProgressbarWidget-CUIAYySg.cjs +2 -0
  206. package/dist/ProgressbarWidget-CUIAYySg.cjs.map +1 -0
  207. package/dist/ProgressbarWidget-DIfqhHRE.js +46 -0
  208. package/dist/ProgressbarWidget-DIfqhHRE.js.map +1 -0
  209. package/dist/RadiobuttonWidget-Cjk1JAP_.cjs +2 -0
  210. package/dist/RadiobuttonWidget-Cjk1JAP_.cjs.map +1 -0
  211. package/dist/RadiobuttonWidget-QzIkNP7m.js +34 -0
  212. package/dist/RadiobuttonWidget-QzIkNP7m.js.map +1 -0
  213. package/dist/RadiogroupWidget-B4lkYWaC.cjs +2 -0
  214. package/dist/RadiogroupWidget-B4lkYWaC.cjs.map +1 -0
  215. package/dist/RadiogroupWidget-Ci9sCX39.js +48 -0
  216. package/dist/RadiogroupWidget-Ci9sCX39.js.map +1 -0
  217. package/dist/RangebarWidget-CN0YuHqy.js +67 -0
  218. package/dist/RangebarWidget-CN0YuHqy.js.map +1 -0
  219. package/dist/RangebarWidget-nl0rzj93.cjs +2 -0
  220. package/dist/RangebarWidget-nl0rzj93.cjs.map +1 -0
  221. package/dist/RedisTab-CVimDkIE.js +135 -0
  222. package/dist/RedisTab-CVimDkIE.js.map +1 -0
  223. package/dist/RedisTab-DhS4GHDj.cjs +2 -0
  224. package/dist/RedisTab-DhS4GHDj.cjs.map +1 -0
  225. package/dist/RollupWidget-Bgudi_bt.cjs +2 -0
  226. package/dist/RollupWidget-Bgudi_bt.cjs.map +1 -0
  227. package/dist/RollupWidget-y4jBtJB2.js +83 -0
  228. package/dist/RollupWidget-y4jBtJB2.js.map +1 -0
  229. package/dist/RoutersTab-CzO10cVP.cjs +2 -0
  230. package/dist/RoutersTab-CzO10cVP.cjs.map +1 -0
  231. package/dist/RoutersTab-Dki_66av.js +95 -0
  232. package/dist/RoutersTab-Dki_66av.js.map +1 -0
  233. package/dist/ScriptChooser-BNm_zXxX.cjs +2 -0
  234. package/dist/ScriptChooser-BNm_zXxX.cjs.map +1 -0
  235. package/dist/ScriptChooser-l5i8c8KP.js +199 -0
  236. package/dist/ScriptChooser-l5i8c8KP.js.map +1 -0
  237. package/dist/ScrollwindowWidget-BIiV7xwi.cjs +2 -0
  238. package/dist/ScrollwindowWidget-BIiV7xwi.cjs.map +1 -0
  239. package/dist/ScrollwindowWidget-CBzYk4Y3.js +45 -0
  240. package/dist/ScrollwindowWidget-CBzYk4Y3.js.map +1 -0
  241. package/dist/SecretsTab-BSzFZ81X.cjs +2 -0
  242. package/dist/SecretsTab-BSzFZ81X.cjs.map +1 -0
  243. package/dist/SecretsTab-BjviaTxh.js +202 -0
  244. package/dist/SecretsTab-BjviaTxh.js.map +1 -0
  245. package/dist/SettingsTab-Bo_dYXgb.js +1382 -0
  246. package/dist/SettingsTab-Bo_dYXgb.js.map +1 -0
  247. package/dist/SettingsTab-DH8LAAoG.cjs +3 -0
  248. package/dist/SettingsTab-DH8LAAoG.cjs.map +1 -0
  249. package/dist/SignalWidget-CvZkvejy.cjs +2 -0
  250. package/dist/SignalWidget-CvZkvejy.cjs.map +1 -0
  251. package/dist/SignalWidget-DQ5Uc2uV.js +66 -0
  252. package/dist/SignalWidget-DQ5Uc2uV.js.map +1 -0
  253. package/dist/SimpleTextDialog-CheuP_ls.js +108 -0
  254. package/dist/SimpleTextDialog-CheuP_ls.js.map +1 -0
  255. package/dist/SimpleTextDialog-DmeNMMCR.cjs +2 -0
  256. package/dist/SimpleTextDialog-DmeNMMCR.cjs.map +1 -0
  257. package/dist/SpacerWidget-6rsc_dSM.js +19 -0
  258. package/dist/SpacerWidget-6rsc_dSM.js.map +1 -0
  259. package/dist/SpacerWidget-BBJR6HBQ.cjs +2 -0
  260. package/dist/SpacerWidget-BBJR6HBQ.cjs.map +1 -0
  261. package/dist/SparklineWidget-BxBLnjAO.cjs +2 -0
  262. package/dist/SparklineWidget-BxBLnjAO.cjs.map +1 -0
  263. package/dist/SparklineWidget-CZtvu2ss.js +48 -0
  264. package/dist/SparklineWidget-CZtvu2ss.js.map +1 -0
  265. package/dist/TabbookWidget-DNALU0jl.js +66 -0
  266. package/dist/TabbookWidget-DNALU0jl.js.map +1 -0
  267. package/dist/TabbookWidget-DyFQnA10.cjs +2 -0
  268. package/dist/TabbookWidget-DyFQnA10.cjs.map +1 -0
  269. package/dist/TargetsTab-Cd8U1aN_.js +129 -0
  270. package/dist/TargetsTab-Cd8U1aN_.js.map +1 -0
  271. package/dist/TargetsTab-DMiOliqg.cjs +2 -0
  272. package/dist/TargetsTab-DMiOliqg.cjs.map +1 -0
  273. package/dist/TextBoxDialog-DvUf3Cak.cjs +2 -0
  274. package/dist/TextBoxDialog-DvUf3Cak.cjs.map +1 -0
  275. package/dist/TextBoxDialog-fHkDTtzI.js +110 -0
  276. package/dist/TextBoxDialog-fHkDTtzI.js.map +1 -0
  277. package/dist/TextboxWidget-5hqPj74D.js +93 -0
  278. package/dist/TextboxWidget-5hqPj74D.js.map +1 -0
  279. package/dist/TextboxWidget-D6lW_dsU.cjs +2 -0
  280. package/dist/TextboxWidget-D6lW_dsU.cjs.map +1 -0
  281. package/dist/TextfieldWidget-Df0ANSiU.js +37 -0
  282. package/dist/TextfieldWidget-Df0ANSiU.js.map +1 -0
  283. package/dist/TextfieldWidget-iHN7-fyF.cjs +2 -0
  284. package/dist/TextfieldWidget-iHN7-fyF.cjs.map +1 -0
  285. package/dist/TimeWidget-C3NZqTEG.cjs +2 -0
  286. package/dist/TimeWidget-C3NZqTEG.cjs.map +1 -0
  287. package/dist/TimeWidget-C6XQMUG2.js +40 -0
  288. package/dist/TimeWidget-C6XQMUG2.js.map +1 -0
  289. package/dist/TitleWidget-B9SPUlbW.js +26 -0
  290. package/dist/TitleWidget-B9SPUlbW.js.map +1 -0
  291. package/dist/TitleWidget-CWZs33c4.cjs +2 -0
  292. package/dist/TitleWidget-CWZs33c4.cjs.map +1 -0
  293. package/dist/ToolsTab-CUpUmkZL.cjs +7 -0
  294. package/dist/ToolsTab-CUpUmkZL.cjs.map +1 -0
  295. package/dist/ToolsTab-Cgpb2nAW.js +1521 -0
  296. package/dist/ToolsTab-Cgpb2nAW.js.map +1 -0
  297. package/dist/TopBar-DuXL27iD.cjs +2 -0
  298. package/dist/TopBar-DuXL27iD.cjs.map +1 -0
  299. package/dist/TopBar-F1jHuFan.js +248 -0
  300. package/dist/TopBar-F1jHuFan.js.map +1 -0
  301. package/dist/UpgradeToEnterpriseDialog-DVcAH30Y.js +95 -0
  302. package/dist/UpgradeToEnterpriseDialog-DVcAH30Y.js.map +1 -0
  303. package/dist/UpgradeToEnterpriseDialog-DfIKahNK.cjs +2 -0
  304. package/dist/UpgradeToEnterpriseDialog-DfIKahNK.cjs.map +1 -0
  305. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs +1417 -0
  306. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs.map +1 -0
  307. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js +26941 -0
  308. package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-iq-jp8dD.js.map +1 -0
  309. package/dist/VWidget-C2x_zSC2.cjs +2 -0
  310. package/dist/VWidget-C2x_zSC2.cjs.map +1 -0
  311. package/dist/VWidget-C4spAawK.js +323 -0
  312. package/dist/VWidget-C4spAawK.js.map +1 -0
  313. package/dist/ValueWidget-D4RrYVEK.js +116 -0
  314. package/dist/ValueWidget-D4RrYVEK.js.map +1 -0
  315. package/dist/ValueWidget-Do3Yn47P.cjs +2 -0
  316. package/dist/ValueWidget-Do3Yn47P.cjs.map +1 -0
  317. package/dist/ValuelimitsbarWidget-Bc9_Vj_f.js +41 -0
  318. package/dist/ValuelimitsbarWidget-Bc9_Vj_f.js.map +1 -0
  319. package/dist/ValuelimitsbarWidget-DJuh7FOs.cjs +2 -0
  320. package/dist/ValuelimitsbarWidget-DJuh7FOs.cjs.map +1 -0
  321. package/dist/ValuelimitscolumnWidget-BFpG-H7v.cjs +2 -0
  322. package/dist/ValuelimitscolumnWidget-BFpG-H7v.cjs.map +1 -0
  323. package/dist/ValuelimitscolumnWidget-DHKIL7sf.js +40 -0
  324. package/dist/ValuelimitscolumnWidget-DHKIL7sf.js.map +1 -0
  325. package/dist/ValuerangebarWidget-BlZSaiXo.cjs +2 -0
  326. package/dist/ValuerangebarWidget-BlZSaiXo.cjs.map +1 -0
  327. package/dist/ValuerangebarWidget-CecQRIok.js +65 -0
  328. package/dist/ValuerangebarWidget-CecQRIok.js.map +1 -0
  329. package/dist/VerticalWidget--8UErB4q.cjs +2 -0
  330. package/dist/VerticalWidget--8UErB4q.cjs.map +1 -0
  331. package/dist/VerticalWidget-D8jUFxjS.js +40 -0
  332. package/dist/VerticalWidget-D8jUFxjS.js.map +1 -0
  333. package/dist/VerticalboxWidget-B4eGUSYH.js +37 -0
  334. package/dist/VerticalboxWidget-B4eGUSYH.js.map +1 -0
  335. package/dist/VerticalboxWidget-cxHq1WKQ.cjs +2 -0
  336. package/dist/VerticalboxWidget-cxHq1WKQ.cjs.map +1 -0
  337. package/dist/Widget-DNf52jRQ.cjs +2 -0
  338. package/dist/Widget-DNf52jRQ.cjs.map +1 -0
  339. package/dist/Widget-fRCERxGf.js +197 -0
  340. package/dist/Widget-fRCERxGf.js.map +1 -0
  341. package/dist/addMonths-BtG7uZLJ.js +19 -0
  342. package/dist/addMonths-BtG7uZLJ.js.map +1 -0
  343. package/dist/addMonths-n1tnl3ab.cjs +2 -0
  344. package/dist/addMonths-n1tnl3ab.cjs.map +1 -0
  345. package/dist/components.cjs +7 -0
  346. package/dist/components.cjs.map +1 -0
  347. package/dist/components.js +2971 -0
  348. package/dist/components.js.map +1 -0
  349. package/dist/fileIcon-BduOQcTc.cjs +2 -0
  350. package/dist/fileIcon-BduOQcTc.cjs.map +1 -0
  351. package/dist/fileIcon-DqRHb1_Z.js +22 -0
  352. package/dist/fileIcon-DqRHb1_Z.js.map +1 -0
  353. package/dist/format-B22VpiOS.cjs +2 -0
  354. package/dist/format-B22VpiOS.cjs.map +1 -0
  355. package/dist/format-CVeawcIv.js +1295 -0
  356. package/dist/format-CVeawcIv.js.map +1 -0
  357. package/dist/getDefaultOptions-Batab9o8.cjs +2 -0
  358. package/dist/getDefaultOptions-Batab9o8.cjs.map +1 -0
  359. package/dist/getDefaultOptions-BhSDk-Jo.js +8 -0
  360. package/dist/getDefaultOptions-BhSDk-Jo.js.map +1 -0
  361. package/dist/icons/status-dark.png +0 -0
  362. package/dist/icons/status-dark.xcf +0 -0
  363. package/dist/icons/status-light.png +0 -0
  364. package/dist/icons.cjs +2 -0
  365. package/dist/icons.cjs.map +1 -0
  366. package/dist/icons.js +157 -0
  367. package/dist/icons.js.map +1 -0
  368. package/dist/index-Bz_jHTkl.cjs +7 -0
  369. package/dist/index-Bz_jHTkl.cjs.map +1 -0
  370. package/dist/index-CFQnWdPA.js +1705 -0
  371. package/dist/index-CFQnWdPA.js.map +1 -0
  372. package/dist/parse-DnkEsW-3.js +1603 -0
  373. package/dist/parse-DnkEsW-3.js.map +1 -0
  374. package/dist/parse-DwfgQboe.cjs +2 -0
  375. package/dist/parse-DwfgQboe.cjs.map +1 -0
  376. package/dist/plugins.cjs +9 -0
  377. package/dist/plugins.cjs.map +1 -0
  378. package/dist/plugins.js +772 -0
  379. package/dist/plugins.js.map +1 -0
  380. package/dist/timeFilters-8SaYvcH0.cjs +2 -0
  381. package/dist/timeFilters-8SaYvcH0.cjs.map +1 -0
  382. package/dist/timeFilters-CRYpYDdf.js +622 -0
  383. package/dist/timeFilters-CRYpYDdf.js.map +1 -0
  384. package/dist/tools/admin.cjs +13 -0
  385. package/dist/tools/admin.cjs.map +1 -0
  386. package/dist/tools/admin.js +1944 -0
  387. package/dist/tools/admin.js.map +1 -0
  388. package/dist/tools/base.cjs +2 -0
  389. package/dist/tools/base.cjs.map +1 -0
  390. package/dist/tools/base.js +1683 -0
  391. package/dist/tools/base.js.map +1 -0
  392. package/dist/tools/calendar.cjs +2 -0
  393. package/dist/tools/calendar.cjs.map +1 -0
  394. package/dist/tools/calendar.js +1586 -0
  395. package/dist/tools/calendar.js.map +1 -0
  396. package/dist/util.cjs +2 -0
  397. package/dist/util.cjs.map +1 -0
  398. package/dist/util.js +9 -0
  399. package/dist/util.js.map +1 -0
  400. package/dist/vue-common.css +1 -0
  401. package/dist/widgets.cjs +2 -0
  402. package/dist/widgets.cjs.map +1 -0
  403. package/dist/widgets.js +132 -0
  404. package/dist/widgets.js.map +1 -0
  405. package/package.json +10 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sources":["../../../../node_modules/date-fns/compareAsc.js","../../../../node_modules/date-fns/constructNow.js","../../../../node_modules/date-fns/differenceInCalendarMonths.js","../../../../node_modules/date-fns/_lib/getRoundingMethod.js","../../../../node_modules/date-fns/differenceInMilliseconds.js","../../../../node_modules/date-fns/endOfDay.js","../../../../node_modules/date-fns/endOfMonth.js","../../../../node_modules/date-fns/isLastDayOfMonth.js","../../../../node_modules/date-fns/differenceInMonths.js","../../../../node_modules/date-fns/differenceInSeconds.js","../../../../node_modules/date-fns/formatDistance.js","../../../../node_modules/date-fns/formatDistanceToNow.js","../../src/tools/base/ClockFooter.vue","../../src/tools/base/AppFooter.vue","../../src/tools/base/Notifications.vue","../../src/tools/base/ScopeSelector.vue","../../src/tools/base/UserMenu.vue","../../src/tools/base/AppNav.vue","../../src/tools/base/ClassificationBanners.vue","../../src/tools/base/Login.vue","../../src/tools/base/TimeCheck.vue"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name constructNow\n * @category Generic Helpers\n * @summary Constructs a new current date using the passed value constructor.\n * @pure false\n *\n * @description\n * The function constructs a new current date using the constructor from\n * the reference date. It helps to build generic functions that accept date\n * extensions and use the current date.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @param date - The reference date to take constructor from\n *\n * @returns Current date initialized using the given date constructor\n *\n * @example\n * import { constructNow, isSameDay } from 'date-fns'\n *\n * function isToday<DateType extends Date>(\n * date: DateArg<DateType>,\n * ): boolean {\n * // If we were to use `new Date()` directly, the function would behave\n * // differently in different timezones and return false for the same date.\n * return isSameDay(date, constructNow(date));\n * }\n */\nexport function constructNow(date) {\n return constructFrom(date, Date.now());\n}\n\n// Fallback for modularized imports:\nexport default constructNow;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use 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 original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use 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 original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { minutesInDay, minutesInMonth } from \"./constants.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\nimport { differenceInSeconds } from \"./differenceInSeconds.js\";\n\n/**\n * The {@link formatDistance} function options.\n */\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param laterDate - The date\n * @param earlierDate - The date to compare with\n * @param options - An object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistance(laterDate, earlierDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const minutesInAlmostTwoDays = 2520;\n\n const comparison = compareAsc(laterDate, earlierDate);\n\n if (isNaN(comparison)) throw new RangeError(\"Invalid time value\");\n\n const localizeOptions = Object.assign({}, options, {\n addSuffix: options?.addSuffix,\n comparison: comparison,\n });\n\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n ...(comparison > 0 ? [earlierDate, laterDate] : [laterDate, earlierDate]),\n );\n\n const seconds = differenceInSeconds(earlierDate_, laterDate_);\n const offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(earlierDate_) -\n getTimezoneOffsetInMilliseconds(laterDate_)) /\n 1000;\n const minutes = Math.round((seconds - offsetInSeconds) / 60);\n let months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options?.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance(\"lessThanXSeconds\", 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance(\"lessThanXSeconds\", 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance(\"lessThanXSeconds\", 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance(\"halfAMinute\", 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance(\"lessThanXMinutes\", 1, localizeOptions);\n } else {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance(\"xMinutes\", minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance(\"aboutXHours\", 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < minutesInDay) {\n const hours = Math.round(minutes / 60);\n return locale.formatDistance(\"aboutXHours\", hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < minutesInAlmostTwoDays) {\n return locale.formatDistance(\"xDays\", 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < minutesInMonth) {\n const days = Math.round(minutes / minutesInDay);\n return locale.formatDistance(\"xDays\", days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < minutesInMonth * 2) {\n months = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"aboutXMonths\", months, localizeOptions);\n }\n\n months = differenceInMonths(earlierDate_, laterDate_);\n\n // 2 months up to 12 months\n if (months < 12) {\n const nearestMonth = Math.round(minutes / minutesInMonth);\n return locale.formatDistance(\"xMonths\", nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n const monthsSinceStartOfYear = months % 12;\n const years = Math.trunc(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance(\"aboutXYears\", years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance(\"overXYears\", years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance(\"almostXYears\", years + 1, localizeOptions);\n }\n }\n}\n\n// Fallback for modularized imports:\nexport default formatDistance;\n","import { constructNow } from \"./constructNow.js\";\n\nimport { formatDistance } from \"./formatDistance.js\";\n\n/**\n * The {@link formatDistanceToNow} function options.\n */\n\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param date - The given date\n * @param options - The object with options\n *\n * @returns The distance in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport function formatDistanceToNow(date, options) {\n return formatDistance(date, constructNow(date), options);\n}\n\n// Fallback for modularized imports:\nexport default formatDistanceToNow;\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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 <span\n style=\"cursor: context-menu\"\n class=\"font-weight-bold\"\n @contextmenu=\"openMenu\"\n >\n {{ formatDate(displayLocal ? localDate : utcDate, formatString) }}\n ({{ displayLocal ? 'local' : 'UTC' }})\n </span>\n <v-menu v-model=\"showMenu\" :target=\"[menuX, menuY]\">\n <v-list>\n <v-list-item>\n <v-list-item-title\n style=\"cursor: pointer\"\n @click=\"toggleDisplayLocal\"\n >\n Display {{ displayLocal ? 'UTC' : 'local time' }}\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item>\n <v-list-item-title style=\"cursor: pointer\" @click=\"toggleDisplay24h\">\n Display {{ display24h ? 12 : 24 }} hour clock\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item v-if=\"dateMode !== 'monthFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setMonthFirst\">\n Display mm/dd/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'dayFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setDayFirst\">\n Display dd/mm/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'number'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setNumber\">\n Display day of year\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nexport default {\n data: function () {\n return {\n localDate: new Date(),\n displayLocal: localStorage.clock_zone === 'local',\n display24h: !localStorage.clock_12h,\n dateMode: localStorage.clock_dateMode || 'monthFirst',\n intervalCount: 0,\n showMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n utcDate: function () {\n return new Date(\n this.localDate.getTime() + this.localDate.getTimezoneOffset() * 60000,\n )\n },\n formatString: function () {\n let dateFormat\n switch (this.dateMode) {\n case 'monthFirst':\n dateFormat = 'LL/dd/yyy'\n break\n case 'dayFirst':\n dateFormat = 'dd/LL/yyy'\n break\n case 'number':\n dateFormat = 'D'\n break\n }\n\n let timeFormat\n if (this.display24h) {\n timeFormat = 'HH:mm:ss'\n } else {\n timeFormat = 'hh:mm:ss a'\n }\n\n return `${dateFormat} ${timeFormat}`\n },\n },\n watch: {\n displayLocal: function (val) {\n localStorage.clock_zone = val ? 'local' : 'utc'\n },\n display24h: function (val) {\n // store opposite because it makes default value (true) easier\n if (val) {\n delete localStorage.clock_12h\n } else {\n localStorage.clock_12h = true\n }\n },\n dateMode: function (val) {\n if (val.match(/^monthFirst$|^dayFirst$|^number$/)) {\n localStorage.clock_dateMode = val\n }\n },\n },\n created: function () {\n setInterval(\n () => {\n this.intervalCount++\n this.localDate = new Date()\n },\n this.intervalCount < 10 ? 100 : 1000, // get the seconds to about 100ms accuracy\n )\n },\n methods: {\n openMenu: function (event) {\n event.preventDefault()\n this.showMenu = false\n this.menuX = event.clientX\n this.menuY = event.clientY\n this.$nextTick(() => {\n this.showMenu = true\n })\n },\n toggleDisplayLocal: function () {\n this.displayLocal = !this.displayLocal\n },\n toggleDisplay24h: function () {\n this.display24h = !this.display24h\n },\n setMonthFirst: function () {\n this.dateMode = 'monthFirst'\n },\n setDayFirst: function () {\n this.dateMode = 'dayFirst'\n },\n setNumber: function () {\n this.dateMode = 'number'\n },\n formatDate: function (val, formatString) {\n return format(val, formatString, { useAdditionalDayOfYearTokens: true })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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 <v-footer id=\"footer\" app v-if=\"!chromeless\" height=\"33\">\n <img :src=\"icon\" alt=\"OpenC3\" />\n <span :class=\"footerClass\" @click=\"upgrade\">\n OpenC3 {{ edition }} {{ version }} &copy; 2024 - License:\n {{ license }}\n </span>\n <v-spacer />\n <a :href=\"sourceUrl\" class=\"text-white text-decoration-underline\">\n Source\n </a>\n <v-spacer />\n <div class=\"justify-right\"><clock-footer /></div>\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n reason=\"Enterprise is Commercially Licensed\"\n />\n </v-footer>\n</template>\n\n<script>\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\nimport { UpgradeToEnterpriseDialog } from '@/components'\nimport ClockFooter from './ClockFooter.vue'\n\nexport default {\n components: {\n ClockFooter,\n UpgradeToEnterpriseDialog,\n },\n data() {\n return {\n icon: '/img/icon.png',\n edition: '',\n enterprise: false,\n license: '',\n sourceUrl: '',\n version: '',\n showUpgradeToEnterpriseDialog: false,\n chromeless: this.$route.query.chromeless,\n }\n },\n created: function () {\n this.getSourceUrl()\n Api.get('/openc3-api/info').then((response) => {\n if (response.data.enterprise) {\n this.edition = 'COSMOS Enterprise'\n } else {\n this.edition = 'COSMOS Open Source'\n }\n this.enterprise = response.data.enterprise\n this.license = response.data.license\n this.version = response.data.version\n })\n },\n computed: {\n footerClass() {\n if (this.enterprise) {\n return 'enterprise'\n } else {\n return 'base'\n }\n },\n },\n methods: {\n getSourceUrl: function () {\n new OpenC3Api().get_settings(['source_url']).then((response) => {\n this.sourceUrl = response[0]\n })\n },\n upgrade: function () {\n if (!this.enterprise) {\n this.showUpgradeToEnterpriseDialog = true\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.base {\n margin-left: 5px;\n cursor: pointer;\n}\n.enterprise {\n margin-left: 5px;\n}\n#footer {\n z-index: 1000; /* On TOP! */\n background-color: var(--gsb-color-background) !important;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, 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-overlay :model-value=\"showNotificationPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showNotificationPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :offset=\"[12, 102]\"\n >\n <template v-slot:activator=\"{ props }\">\n <rux-monitoring-icon\n v-bind=\"props\"\n class=\"rux-icon\"\n :icon=\"notificationVsAlert\"\n label=\"Notifications\"\n :sublabel=\"activeScripts\"\n :status=\"iconStatus\"\n :notifications=\"unreadNotifications.length\"\n ></rux-monitoring-icon>\n </template>\n\n <!-- Notifications list -->\n <v-card>\n <v-card-title class=\"d-flex align-center justify-content-space-between\">\n <span> Notifications </span>\n <v-spacer />\n <v-tooltip location=\"top\" open-delay=\"350\">\n <template v-slot:activator=\"{ props }\">\n <v-btn\n v-bind=\"props\"\n class=\"ml-1\"\n icon=\"mdi-close-box-multiple \"\n variant=\"text\"\n @click=\"clearNotifications\"\n data-test=\"clear-notifications\"\n />\n </template>\n <span> Clear all </span>\n </v-tooltip>\n <v-btn\n icon=\"astro:settings\"\n variant=\"text\"\n @click=\"toggleSettingsDialog\"\n class=\"ml-1\"\n data-test=\"notification-settings\"\n />\n </v-card-title>\n <v-card-text v-if=\"notifications.length === 0\">\n No notifications\n </v-card-text>\n <v-list\n v-else\n lines=\"two\"\n width=\"420\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n data-test=\"notification-list\"\n >\n <template v-for=\"(notification, index) in notificationList\">\n <template v-if=\"notification.header\">\n <v-divider v-if=\"index !== 0\" :key=\"index\" class=\"mb-2\" />\n <v-list-subheader :key=\"notification.header\">\n {{ notification.header }}\n </v-list-subheader>\n </template>\n\n <v-list-item\n v-else\n :key=\"`notification-${index}`\"\n @click=\"openDialog(notification)\"\n class=\"pl-2\"\n >\n <template v-slot:prepend>\n <rux-status\n class=\"px-2\"\n :status=\"getStatus(notification.level)\"\n />\n </template>\n <v-list-item-title\n :class=\"{\n 'text--secondary': notification.read,\n 'text-wrap': true,\n }\"\n >\n {{ notification.message }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ formatShortDateTime(notification.time) }}\n </v-list-item-subtitle>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full notification -->\n <v-dialog v-model=\"notificationDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedNotification.message }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedNotification.level || 'INFO'\"\n />\n </v-card-title>\n <v-card-subtitle>\n {{ formatShortDateTime(selectedNotification.time) }}\n </v-card-subtitle>\n <v-divider />\n <v-card-actions>\n <v-btn\n v-if=\"selectedNotification.url\"\n color=\"primary\"\n variant=\"text\"\n @click=\"navigate(selectedNotification.url)\"\n >\n Open\n <v-icon end> mdi-open-in-new </v-icon>\n </v-btn>\n <v-btn\n color=\"primary\"\n variant=\"text\"\n @click=\"notificationDialog = false\"\n >\n Close\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Dialog for changing notification settings -->\n <v-dialog v-model=\"settingsDialog\" width=\"600\">\n <v-card>\n <v-card-title> Notification settings </v-card-title>\n <v-card-text>\n <v-switch v-model=\"showToast\" label=\"Show toasts\" color=\"primary\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" variant=\"text\" @click=\"toggleSettingsDialog\">\n Close\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { formatDistanceToNow } from 'date-fns'\nimport { Api, Cable } from '@openc3/js-common/services'\nimport {\n AstroStatusColors,\n AstroStatusIndicator,\n UnknownToAstroStatus,\n} from '@/icons'\nimport { AstroStatus } from '@/util'\n\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 1000\nconst { highestLevel, orderByLevel, groupByLevel } = AstroStatus\n\nexport default {\n components: {\n AstroStatusIndicator,\n },\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n alerts: [],\n cable: new Cable(),\n scriptCable: new Cable('/script-api/cable'),\n subscription: null,\n scriptSubscription: null,\n numScripts: 0,\n notifications: [],\n showNotificationPane: false,\n toastNotification: {},\n notificationDialog: false,\n selectedNotification: {},\n settingsDialog: false,\n showToast: true,\n }\n },\n computed: {\n activeScripts: function () {\n return `Scripts: ${this.numScripts}`\n },\n notificationVsAlert: function () {\n // TODO: Determine if this is a notification or alert\n return 'notifications'\n // return 'warning'\n },\n iconStatus: function () {\n if (this.unreadNotifications.length === 0) {\n return 'off'\n }\n const levels = this.unreadNotifications\n .map((notification) => notification.level)\n .filter((val, index, self) => {\n return self.indexOf(val) === index // Unique values\n })\n return UnknownToAstroStatus[highestLevel(levels)]\n },\n readNotifications: function () {\n return this.notifications\n .filter((notification) => notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadNotifications: function () {\n return this.notifications\n .filter((notification) => !notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadCount: function () {\n return this.unreadNotifications.length\n },\n notificationList: function () {\n const groups = groupByLevel(this.unreadNotifications)\n let result = orderByLevel(Object.keys(groups), (k) => k).flatMap(\n (level) => {\n const header = {\n header: level.charAt(0).toUpperCase() + level.slice(1),\n }\n return [header, ...groups[level]]\n },\n )\n if (this.readNotifications.length) {\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\n }\n return result\n },\n },\n watch: {\n showNotificationPane: function (val) {\n if (!val) {\n if (this.selectedNotification.message) {\n this.notificationDialog = false\n this.selectedNotification = {}\n } else {\n this.markAllAsRead()\n }\n }\n },\n showToast: function (val) {\n localStorage.notoast = !val\n },\n },\n created: function () {\n this.showToast = localStorage.notoast === 'false'\n this.subscribe()\n // TODO How does this get updated after initialization\n this.alerts = this.$store.state.notifyHistory\n // Get the initial number of running scripts\n Api.get('/script-api/running-script').then((response) => {\n this.numScripts = response.data.length\n })\n },\n unmounted: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n if (this.scriptSubscription) {\n this.scriptSubscription.unsubscribe()\n }\n this.cable.disconnect()\n this.scriptCable.disconnect()\n },\n methods: {\n getStatus: function (level) {\n return UnknownToAstroStatus[level]\n },\n markAllAsRead: function () {\n this.notifications.forEach((notification) => {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n })\n },\n clearNotifications: function () {\n this.markAllAsRead()\n this.notifications = []\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\n this.showNotificationPane = false\n },\n toggleNotificationPane: function () {\n this.showNotificationPane = !this.showNotificationPane\n },\n toggleSettingsDialog: function () {\n this.settingsDialog = !this.settingsDialog\n },\n openDialog: function (notification, clearToast = false) {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n this.selectedNotification = notification\n this.notificationDialog = true\n },\n navigate: function (url) {\n window.open(url, '_blank')\n },\n subscribe: function () {\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (data) => this.receiveMessage(data),\n },\n {\n start_offset:\n localStorage.notificationStreamOffset ||\n localStorage.lastReadNotification,\n types: ['notification', 'alert', 'ephemeral'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n this.scriptCable\n .createSubscription('AllScriptsChannel', window.openc3Scope, {\n received: (data) => this.receiveScript(data),\n })\n .then((subscription) => {\n this.scriptSubscription = subscription\n })\n },\n receiveMessage: function (parsed) {\n this.cable.recordPing()\n\n // Cut down if we're being flooded\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\n }\n\n // Filter out ephemeral\n let ephemeral = parsed.filter(\n (someobject) => someobject.type === 'ephemeral',\n )\n if (ephemeral && ephemeral.length > 0) {\n // Remove ephemeral from parsed\n parsed = parsed.filter((someobject) => someobject.type !== 'ephemeral')\n // Emit the ephemeral\n ephemeral.forEach((notification) => {\n this.$emit('ephemeral', notification)\n })\n }\n\n let foundToast = false\n parsed.forEach((notification) => {\n notification.read =\n notification.msg_id <= localStorage.lastReadNotification\n notification.level = notification.level || 'INFO'\n if (\n !notification.read && // Don't toast read notifications\n ['FATAL', 'ERROR', 'WARN'].includes(notification.level) // Toast for these statuses\n ) {\n foundToast = true\n this.toastNotification = notification\n }\n })\n\n if (this.showToast && foundToast) {\n let duration = 5000\n if (['FATAL', 'ERROR'].includes(this.toastNotification.level)) {\n duration = null\n }\n\n // Notify takes a minute to be ready on app load\n if (this.$notify) {\n this.$notify[this.toastNotification.level]({\n ...this.toastNotification,\n type: 'notification',\n duration: duration,\n saveToHistory: false,\n })\n }\n }\n\n if (\n this.notifications.length + parsed.length >\n NOTIFICATION_HISTORY_MAX_LENGTH\n ) {\n this.notifications.splice(\n 0,\n this.notifications.length +\n parsed.length -\n NOTIFICATION_HISTORY_MAX_LENGTH,\n )\n }\n this.notifications = this.notifications.concat(parsed)\n },\n receiveScript: function (data) {\n this.cable.recordPing()\n this.numScripts = data['active_scripts']\n },\n formatShortDateTime: function (nsec) {\n if (!nsec) return ''\n const date = new Date(nsec / 1000000)\n return formatDistanceToNow(date, { addSuffix: true })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n.v-badge {\n width: 100%;\n}\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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 style=\"cursor: pointer\" @click=\"showUpgradeToEnterpriseDialog = true\">\n <v-select\n v-model=\"scope\"\n :items=\"scopes\"\n :disabled=\"scopes.length <= 1\"\n label=\"Scope\"\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n style=\"max-width: 150px\"\n />\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n reason=\"Enterprise allows additional Scopes\"\n />\n </div>\n</template>\n\n<script>\nimport { UpgradeToEnterpriseDialog } from '@/components'\n\nexport default {\n components: {\n UpgradeToEnterpriseDialog,\n },\n data: function () {\n return {\n // Open Source only has one scope: 'DEFAULT'\n scopes: ['DEFAULT'],\n scope: 'DEFAULT',\n showUpgradeToEnterpriseDialog: false,\n }\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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 <v-overlay :model-value=\"showUserMenu\" class=\"overlay\" />\n <v-menu\n v-model=\"showUserMenu\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :offset=\"20\"\n >\n <template v-slot:activator=\"{ props }\">\n <rux-monitoring-icon\n v-bind=\"props\"\n class=\"rux-icon\"\n icon=\"person\"\n status=\"off\"\n :label=\"name\"\n :sublabel=\"roles()\"\n :notifications=\"unreadNews.length\"\n ></rux-monitoring-icon>\n </template>\n\n <v-card>\n <v-card-text class=\"text-center\">\n <div style=\"text-align: center; margin: 5px\">\n {{ name }}\n </div>\n <div v-if=\"name !== 'Anonymous'\">\n <div class=\"roles\">Username: {{ username }}</div>\n <div class=\"pb-3 roles\">Roles: {{ roles() }}</div>\n </div>\n <div v-if=\"authenticated\">\n <v-btn block @click=\"logout\" color=\"primary\"> Logout </v-btn>\n <div class=\"pa-3\" v-if=\"name !== 'Anonymous'\">\n <v-row class=\"pt-3 user-title\">Other Active Users:</v-row>\n <v-row\n v-for=\"(user, index) in activeUsers\"\n :key=\"index\"\n class=\"user\"\n >\n {{ user }}\n </v-row>\n </div>\n </div>\n <div v-else>\n <v-btn block @click=\"login\" color=\"primary\"> Login </v-btn>\n </div>\n <div\n v-if=\"name === 'Anonymous'\"\n @click=\"showUpgradeToEnterpriseDialog = true\"\n class=\"pt-2 link\"\n >\n Click to learn more about<br />\n COSMOS Enterprise Edition\n </div>\n </v-card-text>\n <div v-if=\"newsFeed\">\n <v-row no-gutters class=\"news-header\">\n <v-col cols=\"auto\" class=\"me-auto\">COSMOS News</v-col>\n <v-col cols=\"auto\">\n <v-btn\n @click=\"refreshNews\"\n color=\"primary\"\n density=\"compact\"\n block\n >\n Refresh\n </v-btn>\n </v-col>\n </v-row>\n <v-list\n lines=\"two\"\n width=\"420\"\n max-height=\"75vh\"\n class=\"overflow-y-auto\"\n data-test=\"news-list\"\n >\n <template v-for=\"(news, index) in news\" :key=\"`news-${index}`\">\n <hr />\n <v-list-item class=\"pl-2\">\n <v-list-item-title>\n <span class=\"news-title\">{{ news.title }}</span\n ><span class=\"news-date\">{{ formatDate(news.date) }}</span>\n </v-list-item-title>\n <div v-html=\"news.body\"></div>\n </v-list-item>\n </template>\n </v-list>\n </div>\n </v-card>\n </v-menu>\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n reason=\"Enterprise has individual users with RBAC\"\n />\n </div>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\nimport { OpenC3Api } from '@openc3/js-common/services'\nimport { UpgradeToEnterpriseDialog } from '@/components'\n\nexport default {\n components: {\n UpgradeToEnterpriseDialog,\n },\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n let user = OpenC3Auth.user()\n return {\n api: new OpenC3Api(),\n showUserMenu: false,\n authenticated: !!localStorage.openc3Token,\n name: user['name'],\n // preferred_username is returned by the token (see authorization.rb)\n username: user['preferred_username'],\n showUpgradeToEnterpriseDialog: false,\n activeUsers: ['None'],\n newsFeed: false,\n news: [],\n }\n },\n computed: {\n unreadNews: function () {\n return this.news.filter((news) => !news.read)\n },\n },\n watch: {\n // Whenever we show the user menu, read the news and refresh the list of active users\n showUserMenu: function (newValue, oldValue) {\n if (newValue === true) {\n if (this.news.length > 0) {\n this.news.forEach((news) => {\n news.read = true\n })\n localStorage.lastNewsRead = this.news[0].date\n }\n\n if (this.name !== 'Anonymous') {\n Api.get('/openc3-api/users/active').then((response) => {\n this.activeUsers = response.data.filter(\n (item) => !item.includes(this.name),\n )\n if (this.activeUsers.length === 0) {\n this.activeUsers = ['None']\n }\n })\n }\n }\n },\n },\n created: function () {\n this.api\n .get_setting('news_feed')\n .then((response) => {\n if (response) {\n this.newsFeed = response\n if (this.newsFeed) {\n this.fetchNews()\n // Every hour fetch news from the backend\n // Note: the backend updates from news.openc3.org every 12 hours\n setInterval(this.fetchNews, 60 * 60 * 1000)\n }\n }\n })\n .catch((error) => {\n // Do nothing\n })\n },\n methods: {\n refreshNews() {\n // Force the backend to update the news feed\n this.api.update_news().then(() => {\n this.fetchNews()\n })\n },\n formatDate(date) {\n // Just show the YYYY-MM-DD part of the date\n return date.split('T')[0]\n },\n fetchNews: function () {\n Api.get('/openc3-api/news').then((response) => {\n // We always get the full list of news we want to display\n // At some point we may delete old news items so we don't\n // want to persist news items in the frontend\n this.news = response.data.sort(\n (a, b) => Date.parse(b.date) - Date.parse(a.date),\n )\n // If we've previously read the news then mark anything older than that as read\n if (localStorage.lastNewsRead) {\n this.news.forEach((news) => {\n news.read =\n Date.parse(news.date) <= Date.parse(localStorage.lastNewsRead)\n })\n }\n })\n },\n logout: function () {\n OpenC3Auth.logout()\n Api.put(`/openc3-api/users/logout/${this.username}`)\n },\n login: function () {\n OpenC3Auth.login(location.href)\n },\n roles: function () {\n if (this.name === 'Anonymous') {\n return 'Admin'\n } else {\n return OpenC3Auth.userroles()\n .map((element) => this.capitalize(element))\n .sort()\n .join(', ')\n }\n },\n capitalize: function (string) {\n return string.charAt(0).toUpperCase() + string.slice(1)\n },\n },\n}\n</script>\n\n<style scoped>\n.news-header {\n padding: 10px;\n background-color: var(--color-background-base-default);\n text-align: center;\n}\n.news-title {\n font-weight: bold;\n}\n.news-date {\n font-size: 0.8rem;\n color: grey;\n float: right;\n}\n.link {\n cursor: pointer;\n}\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n.user-title {\n font-weight: bold;\n}\n.user,\n.roles {\n font-size: 0.8rem;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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-navigation-drawer\n v-if=\"!chromeless\"\n :model-value=\"drawer\"\n id=\"openc3-nav-drawer\"\n >\n <img :src=\"logo\" class=\"logo\" alt=\"OpenC3\" />\n <div class=\"cosmos\" @click=\"showUpgradeToEnterpriseDialog = true\">\n COSMOS\n </div>\n <div style=\"text-align: center; font-size: 18pt\">\n {{ subtitle }}\n </div>\n <div v-for=\"(tool, name) in adminTools\" :key=\"name\" class=\"ma-3\">\n <v-btn\n block\n size=\"small\"\n :href=\"tool.url\"\n @click.prevent=\"() => navigateToUrl(tool.url)\"\n class=\"fixcenter\"\n color=\"primary\"\n >\n Admin Console\n </v-btn>\n </div>\n <v-divider />\n <v-treeview\n :items=\"items\"\n :opened=\"initiallyOpen\"\n item-value=\"name\"\n density=\"compact\"\n open-on-click\n >\n <!-- Beginning Icon -->\n <template v-slot:prepend=\"{ item }\">\n <template v-if=\"item.icon\">\n <a\n v-if=\"item.window === 'INLINE'\"\n :href=\"item.url\"\n @click.prevent=\"() => navigateToUrl(item.url)\"\n >\n <v-icon class=\"mr-2\"> {{ item.icon }} </v-icon>\n </a>\n <a v-else :href=\"item.url\">\n <v-icon class=\"mr-2\"> {{ item.icon }} </v-icon>\n </a>\n </template>\n </template>\n\n <!-- Link Text -->\n <template v-slot:title=\"{ item }\">\n <!-- Category has no Icon -->\n <a\n v-if=\"!item.icon\"\n :href=\"item.url\"\n @click.prevent=\"() => navigateToUrl(item.url)\"\n >\n {{ item.name }}\n </a>\n <template v-else>\n <!-- Tool Link -->\n <a\n v-if=\"item.window === 'INLINE'\"\n :href=\"item.url\"\n @click.prevent=\"() => navigateToUrl(item.url)\"\n >\n {{ item.name }}\n </a>\n <a\n v-else-if=\"item.window === 'IFRAME'\"\n :href=\"\n '/tools/iframe?title=' +\n encodeURIComponent(item.name) +\n '&url=' +\n item.url\n \"\n >\n {{ item.name }}\n </a>\n <a v-else-if=\"item.window === 'SAME'\" :href=\"item.url\">\n {{ item.name }}\n </a>\n <a v-else :href=\"item.url\" target=\"_blank\">\n <!-- item.window === 'NEW' -->\n {{ item.name }}\n </a>\n </template>\n </template>\n\n <!-- New Tab Link -->\n <template v-slot:append=\"{ item }\">\n <a v-if=\"item.icon\" :href=\"newTabUrl(item)\" target=\"_blank\">\n <v-icon>mdi-open-in-new</v-icon>\n </a>\n </template>\n </v-treeview>\n </v-navigation-drawer>\n <v-app-bar v-if=\"!chromeless\" id=\"openc3-app-toolbar\">\n <v-row class=\"flex-nowrap\" justify=\"space-between\" no-gutters>\n <v-col align-self=\"start\">\n <v-row class=\"flex-nowrap\">\n <rux-icon\n class=\"ml-3 mr-2 pa-2\"\n size=\"small\"\n icon=\"apps\"\n @click=\"drawer = !drawer\"\n ></rux-icon>\n <span id=\"openc3-menu\" />\n </v-row>\n </v-col>\n <v-col>\n <v-row class=\"clock flex-nowrap mt-0\">\n <rux-clock\n v-if=\"!astro.hideClock\"\n date-in=\"\"\n :timezone=\"astroTimeZone\"\n />\n </v-row>\n </v-col>\n <v-col align-self=\"center\" class=\"mt-2\">\n <v-row class=\"flex-nowrap\">\n <v-spacer />\n <scope-selector class=\"mr-6 mt-4\" />\n <notifications class=\"mr-6\" data-test=\"notifications\" />\n <user-menu class=\"mr-6\" /> </v-row\n ></v-col>\n </v-row>\n </v-app-bar>\n <upgrade-to-enterprise-dialog\n v-model=\"showUpgradeToEnterpriseDialog\"\n reason=\"Enterprise adds Calendar and Autonomic\"\n />\n </div>\n</template>\n\n<script>\nimport { navigateToUrl, registerApplication, start } from 'single-spa'\nimport { Api, OpenC3Api } from '@openc3/js-common/services'\nimport { UpgradeToEnterpriseDialog } from '@/components'\nimport Notifications from './Notifications.vue'\nimport ScopeSelector from './ScopeSelector.vue'\nimport UserMenu from './UserMenu.vue'\n\nexport default {\n components: {\n Notifications,\n ScopeSelector,\n UserMenu,\n UpgradeToEnterpriseDialog,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n api: new OpenC3Api(),\n timeZone: 'local',\n subtitle: null,\n // Update AstroSettings.vue when changing this\n astro: {\n hideClock: false,\n },\n items: [],\n drawer: true,\n appNav: {},\n logo: '/img/logo.png',\n initiallyOpen: [],\n showUpgradeToEnterpriseDialog: false,\n chromeless: this.$route.query.chromeless,\n }\n },\n computed: {\n // a computed getter\n shownTools: function () {\n let result = {}\n for (let key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n adminTools: function () {\n let result = {}\n for (let key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n astroTimeZone: function () {\n if (this.timeZone === 'local') {\n return Intl.DateTimeFormat().resolvedOptions().timeZone\n }\n return this.timeZone\n },\n },\n created() {\n this.api\n .get_setting('astro')\n .then((response) => {\n if (response) {\n // The response is an object with settings\n this.astro = JSON.parse(response)\n }\n })\n .catch((error) => {\n // Do nothing\n })\n this.api\n .get_setting('subtitle')\n .then((response) => {\n if (response) {\n this.subtitle = response\n }\n })\n .catch((error) => {\n // Do nothing\n })\n this.api\n .get_setting('time_zone')\n .then((response) => {\n if (response) {\n this.timeZone = response\n }\n })\n .catch((error) => {\n // Do nothing\n })\n // Tools are global and are always installed into the DEFAULT scope\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\n (response) => {\n this.appNav = response.data\n\n let id = 1\n // Register apps and start single-spa\n for (let key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown) {\n if (\n this.appNav[key].category &&\n this.appNav[key].category !== 'Admin'\n ) {\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\n if (!this.initiallyOpen.includes(this.appNav[key].category)) {\n this.initiallyOpen.push(this.appNav[key].category)\n }\n const result = this.items.filter(\n (item) => item.name === this.appNav[key].category,\n )\n if (result.length === 0) {\n // Create category and first item\n this.items.push({\n id: id,\n name: this.appNav[key].category,\n children: [\n {\n id: id + 1,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n inline_url: this.appNav[key].inline_url,\n window: this.appNav[key].window,\n },\n ],\n })\n id++\n } else {\n // Add to existing category\n result[0].children.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n inline_url: this.appNav[key].inline_url,\n window: this.appNav[key].window,\n })\n }\n } else if (!this.appNav[key].category) {\n // Create category\n this.items.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n inline_url: this.appNav[key].inline_url,\n window: this.appNav[key].window,\n })\n }\n id++\n }\n if (\n this.appNav[key].inline_url &&\n this.appNav[key].window === 'INLINE'\n ) {\n if (\n this.appNav[key].folder_name &&\n this.appNav[key].folder_name !== 'base'\n ) {\n let folder_name = this.appNav[key].folder_name\n let name = '@openc3/tool-' + folder_name\n registerApplication({\n name: name,\n app: () => System.import(name),\n activeWhen: ['/tools/' + folder_name],\n })\n }\n }\n }\n start({\n urlRerouteOnly: true,\n })\n\n // Redirect some base paths to the first tool\n if (\n window.location.pathname == '/' ||\n window.location.pathname == '/tools' ||\n window.location.pathname == '/tools/'\n ) {\n // TODO: There's some sort of race condition here which makes this flaky if the user went to '/login' with\n // no `?redirect=` query param while they were already authenticated. That sends them to '/', causing\n // another redirect here that gets stepped on, so they're left at '/'. The nav bar shows, so they can click\n // on a tool, or refresh the page to make this redirect actually happen.\n for (let key of Object.keys(this.shownTools)) {\n if (this.appNav[key].shown) {\n history.replaceState(null, '', this.appNav[key].url)\n break\n }\n }\n }\n\n // Check every minute if we need to update our token\n setInterval(() => {\n OpenC3Auth.updateToken(120).then(function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n })\n }, 60000)\n },\n )\n },\n methods: {\n navigateToUrl,\n newTabUrl(tool) {\n let url = null\n try {\n if (tool.url[0] == '/' && tool.url[1] != '/') {\n url = new URL(tool.url, window.location.origin)\n } else {\n url = new URL(tool.url)\n }\n url.searchParams.set('scope', window.openc3Scope)\n } catch (error) {\n window.$cosmosNotify.serious({\n title: `Invalid URL '${tool.url}' for tool ${tool.name}`,\n message: error.message,\n })\n url.href = '/'\n }\n return url.href\n },\n },\n}\n</script>\n\n<style scoped>\n.clock {\n margin-top: 10px;\n justify-content: center;\n}\n.logo {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.cosmos {\n cursor: pointer;\n text-align: center;\n font-size: 18pt;\n}\ndiv a {\n color: white;\n display: block;\n height: 100%;\n width: 100%;\n}\na.fixcenter {\n display: flex;\n}\n#openc3-app-toolbar .top-bar-divider-full-height {\n margin: -4px 4px;\n min-height: calc(100% + 8px);\n}\n</style>\n<style>\n/* Remove the padding on root level nodes since we removed the expand icon */\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-item\n > .v-treeview-item__root\n > .v-treeview-item__level {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-item\n > .v-treeview-item__root\n > .v-treeview-item__toggle {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview-item__children\n div.v-treeview-item__level:nth-child(1) {\n width: 0px;\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: function () {\n return {\n api: null,\n classification: {\n text: '',\n fontColor: 'white',\n backgroundColor: 'red',\n topHeight: 0,\n bottomHeight: 0,\n },\n }\n },\n computed: {\n classificationStyles: function () {\n // JavaScript can't access CSS psudo-elements (::before and ::after).\n // This string sets these JS values to CSS variables, accessible to\n // the style sheet via the style attribute on #app\n return [\n `--classification-text:\"${this.classification.text}\";`,\n `--classification-font-color:${this.classification.fontColor};`,\n `--classification-background-color:${this.classification.backgroundColor};`,\n `--classification-height-top:${this.classification.topHeight}px;`,\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\n ].join('')\n },\n },\n created: function () {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting('classification_banner')\n .then((response) => {\n if (response) {\n this.classification = JSON.parse(response)\n }\n })\n .catch((error) => {\n // Do nothing\n })\n },\n },\n}\n</script>\n\n<style>\n/* push things up and down to make room for the classification banners */\n#app,\nheader,\n#openc3-nav-drawer {\n margin-top: var(--classification-height-top);\n}\n#openc3-app-toolbar {\n top: var(--classification-height-top);\n}\n#openc3-nav-drawer .v-navigation-drawer__content {\n height: calc(\n 100% - var(--classification-height-top) -\n var(--classification-height-bottom)\n );\n}\n#openc3-nav-drawer,\n#footer {\n margin-bottom: var(--classification-height-bottom);\n}\n\n/* make the classification banners */\n#app::before,\n#app::after {\n z-index: 9999;\n position: fixed;\n left: 0;\n right: 0;\n text-align: center;\n content: var(--classification-text);\n color: var(--classification-font-color);\n background-color: var(--classification-background-color);\n}\n#app::before {\n top: 0;\n font-size: calc(var(--classification-height-top) * 0.7);\n height: var(--classification-height-top);\n}\n#app::after {\n bottom: 0;\n font-size: calc(var(--classification-height-bottom) * 0.7);\n height: var(--classification-height-bottom);\n}\n</style>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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 <v-card>\n <v-card-title> Login </v-card-title>\n <v-card-subtitle>\n {{ isSet ? 'Enter the' : 'Create a' }}\n password to begin using OpenC3\n </v-card-subtitle>\n <v-card-text>\n <v-form>\n <v-text-field\n v-if=\"isSet && reset\"\n v-model=\"oldPassword\"\n type=\"password\"\n label=\"Old Password\"\n />\n <v-text-field\n v-model=\"password\"\n type=\"password\"\n :label=\"`${!isSet || reset ? 'New ' : ''}Password`\"\n data-test=\"new-password\"\n />\n <v-text-field\n v-if=\"reset\"\n v-model=\"confirmPassword\"\n :rules=\"[rules.matchPassword]\"\n type=\"password\"\n label=\"Confirm Password\"\n data-test=\"confirm-password\"\n />\n <v-btn\n v-if=\"reset\"\n type=\"submit\"\n @click.prevent=\"setPassword\"\n size=\"large\"\n :color=\"isSet ? 'warn' : 'success'\"\n :disabled=\"!formValid\"\n data-test=\"set-password\"\n >\n Set\n </v-btn>\n <v-container v-else>\n <v-row>\n <v-btn\n type=\"submit\"\n @click.prevent=\"() => verifyPassword()\"\n size=\"large\"\n color=\"success\"\n :disabled=\"!formValid\"\n >\n Login\n </v-btn>\n <v-spacer />\n <v-btn variant=\"text\" size=\"small\" @click=\"showReset\">\n Change Password\n </v-btn>\n </v-row>\n </v-container>\n </v-form>\n </v-card-text>\n <v-alert :type=\"alertType\" v-model=\"showAlert\" closable>\n {{ alert }}\n </v-alert>\n </v-card>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n data() {\n return {\n isSet: true,\n password: '',\n confirmPassword: '',\n oldPassword: '',\n reset: false, // setting a password for the first time, or changing to a new password\n alert: '',\n alertType: 'success',\n showAlert: false,\n }\n },\n computed: {\n options: function () {\n return {\n noAuth: true,\n noScope: true, // lol\n }\n },\n rules: function () {\n return {\n matchPassword: () =>\n this.password === this.confirmPassword || 'Passwords must match',\n }\n },\n formValid: function () {\n if (this.reset) {\n if (!this.isSet) {\n return !!this.password && this.password === this.confirmPassword\n } else {\n return (\n !!this.oldPassword &&\n !!this.password &&\n this.password === this.confirmPassword\n )\n }\n } else {\n return !!this.password\n }\n },\n },\n created: function () {\n Api.get('/openc3-api/auth/token-exists', this.options).then((response) => {\n this.isSet = !!response.data.result\n if (!this.isSet) {\n this.reset = true\n }\n })\n },\n mounted: function () {\n if (localStorage.openc3Token) {\n this.verifyPassword(localStorage.openc3Token, true)\n }\n },\n methods: {\n showReset: function () {\n this.reset = true\n },\n login: function (response) {\n localStorage.openc3Token = response.data\n const redirect = new URLSearchParams(window.location.search).get(\n 'redirect',\n )\n if (redirect?.startsWith('/tools/')) {\n // Valid relative redirect URL\n window.location = decodeURI(redirect)\n } else {\n window.location = '/'\n }\n },\n verifyPassword: function (token, noAlert) {\n token ||= this.password\n this.showAlert = false\n Api.post('/openc3-api/auth/verify', {\n data: {\n token,\n },\n ...this.options,\n })\n .then((response) => {\n this.login(response)\n })\n .catch((error) => {\n if (error?.status === 401) {\n this.alert = 'Incorrect password'\n } else {\n this.alert = error.message || 'Something went wrong...'\n }\n this.alertType = 'warning'\n this.showAlert = !noAlert\n })\n },\n setPassword: function () {\n this.showAlert = false\n Api.post('/openc3-api/auth/set', {\n data: {\n old_token: this.oldPassword,\n token: this.password,\n },\n ...this.options,\n })\n .then((response) => {\n this.login(response)\n })\n .catch((error) => {\n this.alert = `Invalid password: ${error.response.data.message}`\n this.alertType = 'warning'\n this.showAlert = true\n })\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\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. See the\n# GNU Affero General Public License 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 <v-dialog v-model=\"dialog\" width=\"500\">\n <v-card>\n <v-card-title> Clock out of sync </v-card-title>\n <v-card-text>\n We've detected that your clock is approximately\n {{ Math.abs(approximateDiscrepancySec) }} seconds\n {{ approximateDiscrepancySec > 0 ? 'behind' : 'ahead of' }} server time.\n This can cause issues and might have unknown side effects.\n <v-checkbox v-model=\"suppress\" label=\"Don't show this again\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" variant=\"text\" @click=\"dismiss\"> Dismiss </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nconst ALLOWABLE_DISCREPANCY_MS = 3000\n\nexport default {\n data: function () {\n return {\n dismissed: false,\n suppress: false,\n discrepancy: 0,\n }\n },\n created: function () {\n this.suppress =\n localStorage['suppresswarning__clock_out_of_sync_with_server'] === 'true'\n if (!this.suppress) {\n axios\n .get('/openc3-api/time')\n .then((response) => {\n this.discrepancy = response.data.now_nsec / 1000000 - Date.now()\n })\n .catch((error) => {\n // Silently fail\n this.dismissed = true\n })\n }\n },\n methods: {\n dismiss: function () {\n localStorage['suppresswarning__clock_out_of_sync_with_server'] =\n this.suppress\n this.dismissed = true\n },\n },\n computed: {\n approximateDiscrepancySec: function () {\n return (this.discrepancy / 1000).toFixed()\n },\n dialog: function () {\n return (\n !this.dismissed &&\n Math.abs(this.discrepancy) >= ALLOWABLE_DISCREPANCY_MS\n )\n },\n },\n}\n</script>\n"],"names":["compareAsc","dateLeft","dateRight","diff","toDate","constructNow","date","constructFrom","differenceInCalendarMonths","laterDate","earlierDate","options","laterDate_","earlierDate_","normalizeDates","yearsDiff","monthsDiff","getRoundingMethod","method","number","result","differenceInMilliseconds","endOfDay","_date","endOfMonth","month","isLastDayOfMonth","differenceInMonths","workingLaterDate","sign","difference","isLastMonthNotFull","differenceInSeconds","formatDistance","defaultOptions","getDefaultOptions","locale","defaultLocale","minutesInAlmostTwoDays","comparison","localizeOptions","seconds","offsetInSeconds","getTimezoneOffsetInMilliseconds","minutes","months","minutesInDay","hours","minutesInMonth","days","nearestMonth","monthsSinceStartOfYear","years","formatDistanceToNow","_sfc_main","dateFormat","timeFormat","val","event","formatString","format","_createElementBlock","_createElementVNode","$options","args","_toDisplayString","_ctx","_createVNode","_component_v_menu","_cache","$event","_withCtx","_component_v_list","_component_v_list_item","_component_v_list_item_title","_createTextVNode","_component_v_divider","_openBlock","_createBlock","_createCommentVNode","ClockFooter","UpgradeToEnterpriseDialog","Api","response","OpenC3Api","_hoisted_1","_hoisted_2","_hoisted_3","$data","_component_v_footer","_normalizeClass","_component_v_spacer","_component_clock_footer","_component_upgrade_to_enterprise_dialog","NOTIFICATION_HISTORY_MAX_LENGTH","highestLevel","orderByLevel","groupByLevel","AstroStatus","AstroStatusIndicator","AstroStatusColors","Cable","levels","notification","index","self","UnknownToAstroStatus","a","b","groups","k","level","clearToast","url","data","subscription","parsed","ephemeral","someobject","foundToast","duration","nsec","_component_v_overlay","props","_component_rux_monitoring_icon","_mergeProps","_component_v_card","_component_v_card_title","_component_v_tooltip","_component_v_btn","_component_v_card_text","_Fragment","_renderList","_component_v_list_subheader","_component_rux_status","_component_v_list_item_subtitle","_component_v_dialog","_component_astro_status_indicator","_component_v_card_subtitle","_component_v_card_actions","_component_v_icon","_component_v_switch","_component_v_select","user","news","newValue","oldValue","item","error","element","string","_hoisted_4","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_5","_hoisted_6","_component_v_row","_hoisted_7","_hoisted_8","_component_v_col","Notifications","ScopeSelector","UserMenu","key","id","folder_name","name","registerApplication","start","refreshed","navigateToUrl","tool","_component_v_navigation_drawer","_withModifiers","_component_v_treeview","_component_v_app_bar","_component_rux_icon","_component_rux_clock","_component_scope_selector","_component_notifications","_component_user_menu","redirect","token","noAlert","_component_v_form","_component_v_text_field","_component_v_container","_component_v_alert","ALLOWABLE_DISCREPANCY_MS","axios","_component_v_checkbox"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("../UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_6fa47877_lang-DJX55UPj.cjs"),e=require("vue"),k=require("../CosmosRuxIcon.vue_vue_type_style_index_0_scoped_9af48e85_lang-BHFhmbuH.cjs"),S=require("../ScriptChooser-BNm_zXxX.cjs"),g=require("../timeFilters-8SaYvcH0.cjs");require("single-spa");const U=require("../parse-DwfgQboe.cjs"),H=require("../addMonths-n1tnl3ab.cjs"),D=require("../format-B22VpiOS.cjs");function Z(o,t,i){const{years:r=0,months:a=0,weeks:n=0,days:l=0,hours:h=0,minutes:f=0,seconds:y=0}=t,c=D.toDate(o,i==null?void 0:i.in),d=a||r?H.addMonths(c,a+r*12):c,p=l||n?U.addDays(d,l+n*7):d,v=f+h*60,C=(y+v*60)*1e3;return D.constructFrom(o,+p+C)}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=D.format(new Date,"yyyy-MM-dd"),this.endDate=D.format(new Date,"yyyy-MM-dd"));let o=1e3*60*30,t=null;this.time?(t=U.parse(this.time,"HH:mm:ss",new Date),t=new Date(Math.floor(t.getTime()/o)*o)):t=new Date(Math.ceil(new Date().getTime()/o)*o),this.startTime=D.format(t,"HH:mm:ss"),this.endTime=D.format(Z(t,{minutes:30}),"HH:mm:ss")}}},O={components:{EnvironmentChooser:S.EnvironmentChooser,ScriptChooser:S.ScriptChooser},props:{modelValue:Boolean,timelines:{type:Array,required:!0},activity:{type:Object,default:null}},mixins:[E,g.TimeFilters],data(){return{timeline:null,dialogStep:1,kind:"",types:["COMMAND","SCRIPT","RESERVE"],activityData:"",activityEnvironment:[],rules:{required:o=>!!o||"Required"},recurring:!1,recurringEndDate:null,recurringEndTime:null,frequency:90,timeSpan:"minutes",timeSpans:["minutes","hours","days"]}},mounted:function(){this.updateValues()},computed:{timeError:function(){const o=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.":o>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(o=>o.name)},show:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}}},methods:{changeKind:function(o){o!==this.kind&&(this.kind=o,this.activityData="")},fileHandler:function(o){this.activityData=o},updateValues:function(){var o;if(this.dialogStep=1,this.activity){this.timeline=this.activity.name;const t=new Date(this.activity.start*1e3),i=new Date(this.activity.stop*1e3);if(this.startDate=this.formatDate(t,this.timeZone),this.startTime=this.formatTimeHMS(t,this.timeZone),this.endDate=this.formatDate(i,this.timeZone),this.endTime=this.formatTimeHMS(i,this.timeZone),this.kind=this.activity.kind.toUpperCase(),this.activityData=this.activity.data[this.activity.kind],this.activityEnvironment=this.activity.data.environment,(o=this.activity.recurring)!=null&&o.uuid){this.recurring=!0;const r=new Date(this.activity.recurring.end*1e3);this.recurringEndDate=this.formatDate(r,this.timeZone),this.recurringEndTime=this.formatTimeHMS(r,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.timeline=this.timelineNames[0]},clearHandler:function(){this.show=!this.show},submitHandler(){let o=null,t=null,i=null;this.timeZone==="local"?(o=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())):(o=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 r=this.kind.toLowerCase();let a={environment:this.activityEnvironment};a[r]=this.activityData;let n={};this.recurring&&(n={frequency:this.frequency,span:this.timeSpan,end:i}),this.activity?N.ui.put(`/openc3-api/timeline/${this.activity.name}/activity/${this.activity.start}`,{data:{start:o,stop:t,kind:r,data:a,recurring:n}}).then(l=>{const h=this.formatSeconds(new Date(l.data.start*1e3));this.$notify.normal({title:"Updated Activity",body:`${h} (${l.data.start}) on timeline: ${l.data.name}`}),this.$emit("update",l.data),this.show=!this.show}).catch(l=>{this.show=!this.show}):N.ui.post(`/openc3-api/timeline/${this.timeline}/activities`,{data:{start:o,stop:t,kind:r,data:a,recurring:n}}).then(l=>{const h=this.formatSeconds(new Date(l.data.start*1e3));this.$notify.normal({title:"Created Activity",body:`${h} (${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()}}},P={key:0},F={key:1},R={class:"pr-2"},z=["textContent"],j={class:"pr-2"},L={key:0},K={key:1,class:"ma-3"},W={key:2},Y=["textContent"];function G(o,t,i,r,a,n){const l=e.resolveComponent("v-spacer"),h=e.resolveComponent("v-icon"),f=e.resolveComponent("v-tooltip"),y=e.resolveComponent("v-toolbar"),c=e.resolveComponent("v-btn"),d=e.resolveComponent("v-row"),p=e.resolveComponent("v-select"),v=e.resolveComponent("v-text-field"),w=e.resolveComponent("v-checkbox"),C=e.resolveComponent("v-col"),_=e.resolveComponent("v-card-text"),x=e.resolveComponent("script-chooser"),u=e.resolveComponent("environment-chooser"),V=e.resolveComponent("v-stepper"),T=e.resolveComponent("v-card"),m=e.resolveComponent("v-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(m,{persistent:"",modelValue:n.show,"onUpdate:modelValue":t[15]||(t[15]=s=>n.show=s),width:"600"},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.activity?(e.openBlock(),e.createElementBlock("span",P,"Edit Activity")):(e.openBlock(),e.createElementBlock("span",F,"Create Activity")),e.createVNode(l),e.createVNode(f,{location:"top"},{activator:e.withCtx(({props:s})=>[e.createElementVNode("div",e.normalizeProps(e.guardReactiveProps(s)),[e.createVNode(h,{"data-test":"close-note-icon",onClick:n.clearHandler},{default:e.withCtx(()=>t[16]||(t[16]=[e.createTextVNode(" mdi-close-box ")])),_:1},8,["onClick"])],16)]),default:e.withCtx(()=>[t[17]||(t[17]=e.createElementVNode("span",null," Close ",-1))]),_:1})]),_:1}),e.createVNode(V,{modelValue:a.dialogStep,"onUpdate:modelValue":t[14]||(t[14]=s=>a.dialogStep=s),editable:"",items:["Activity Times","Activity Type"]},e.createSlots({"item.1":e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createElementVNode("div",R,[e.createVNode(p,{density:"compact","hide-details":"",variant:"outlined",modelValue:a.timeline,"onUpdate:modelValue":t[1]||(t[1]=s=>a.timeline=s),items:n.timelineNames,label:"Timeline","data-test":"activity-select-timeline",class:"pb-2"},null,8,["modelValue","items"]),e.createVNode(d,{dense:""},{default:e.withCtx(()=>[e.createVNode(v,{modelValue:o.startDate,"onUpdate:modelValue":t[2]||(t[2]=s=>o.startDate=s),type:"date",label:"Start Date",class:"mx-1",rules:[a.rules.required],"data-test":"activity-start-date"},null,8,["modelValue","rules"]),e.createVNode(v,{modelValue:o.startTime,"onUpdate:modelValue":t[3]||(t[3]=s=>o.startTime=s),type:"time",step:"1",label:"Start Time",class:"mx-1",rules:[a.rules.required],"data-test":"activity-start-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(d,{dense:""},{default:e.withCtx(()=>[e.createVNode(v,{modelValue:o.endDate,"onUpdate:modelValue":t[4]||(t[4]=s=>o.endDate=s),type:"date",label:"End Date",class:"mx-1",rules:[a.rules.required],"data-test":"activity-end-date"},null,8,["modelValue","rules"]),e.createVNode(v,{modelValue:o.endTime,"onUpdate:modelValue":t[5]||(t[5]=s=>o.endTime=s),type:"time",step:"1",label:"End Time",class:"mx-1",rules:[a.rules.required],"data-test":"activity-end-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(d,{class:"pl-3"},{default:e.withCtx(()=>[e.createVNode(w,{modelValue:a.recurring,"onUpdate:modelValue":t[6]||(t[6]=s=>a.recurring=s),disabled:!!i.activity,label:"Recurring","hide-details":"","data-test":"recurring"},null,8,["modelValue","disabled"])]),_:1}),a.recurring?(e.openBlock(),e.createBlock(d,{key:0},{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>t[21]||(t[21]=[e.createElementVNode("div",{class:"repeat"},"Repeat every",-1)])),_:1}),e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(v,{modelValue:a.frequency,"onUpdate:modelValue":t[7]||(t[7]=s=>a.frequency=s),disabled:!!i.activity,density:"compact",variant:"outlined","single-line":"","hide-details":"","data-test":"recurring-frequency"},null,8,["modelValue","disabled"])]),_:1}),e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(p,{modelValue:a.timeSpan,"onUpdate:modelValue":t[8]||(t[8]=s=>a.timeSpan=s),disabled:!!i.activity,items:a.timeSpans,style:{},"hide-details":"",density:"compact",variant:"outlined","data-test":"recurring-span"},null,8,["modelValue","disabled","items"])]),_:1})]),_:1})):e.createCommentVNode("",!0),a.recurring?(e.openBlock(),e.createBlock(d,{key:1,style:{"padding-bottom":"10px"}},{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>t[22]||(t[22]=[e.createElementVNode("div",{class:"repeat"},"Ending",-1)])),_:1}),e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(v,{modelValue:a.recurringEndDate,"onUpdate:modelValue":t[9]||(t[9]=s=>a.recurringEndDate=s),type:"date",label:"End Date",class:"mx-1",rules:[a.rules.required],disabled:!!i.activity,"data-test":"recurring-end-date"},null,8,["modelValue","rules","disabled"])]),_:1}),e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(v,{modelValue:a.recurringEndTime,"onUpdate:modelValue":t[10]||(t[10]=s=>a.recurringEndTime=s),type:"time",step:"1",label:"End Time",class:"mx-1",rules:[a.rules.required],disabled:!!i.activity,"data-test":"recurring-end-time"},null,8,["modelValue","rules","disabled"])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(d,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.timeError)},null,8,z),[[e.vShow,n.timeError]])]),_:1})])]),_:1})]),"item.2":e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createElementVNode("div",j,[e.createVNode(p,{density:"compact","hide-details":"",variant:"outlined",modelValue:a.kind,"onUpdate:modelValue":t[11]||(t[11]=s=>a.kind=s),items:a.types,label:"Activity Type","data-test":"activity-select-type",class:"pb-2"},null,8,["modelValue","items"]),a.kind==="COMMAND"?(e.openBlock(),e.createElementBlock("div",L,[e.createVNode(v,{modelValue:a.activityData,"onUpdate:modelValue":t[12]||(t[12]=s=>a.activityData=s),type:"text",label:"Command Input",placeholder:"INST COLLECT with TYPE 0, DURATION 1, OPCODE 171, TEMP 0",prefix:"cmd('",suffix:"')",hint:"Timeline runs commands with cmd_no_hazardous_check","data-test":"activity-cmd"},null,8,["modelValue"])])):a.kind==="SCRIPT"?(e.openBlock(),e.createElementBlock("div",K,[e.createVNode(x,{onFile:n.fileHandler},null,8,["onFile"]),e.createVNode(u,{modelValue:a.activityEnvironment,"onUpdate:modelValue":t[13]||(t[13]=s=>a.activityEnvironment=s)},null,8,["modelValue"])])):(e.openBlock(),e.createElementBlock("div",W,t[23]||(t[23]=[e.createElementVNode("span",{class:"ma-2"}," No required input ",-1)]))),e.withDirectives(e.createVNode(d,{class:"mt-2"},{default:e.withCtx(()=>[e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.typeError)},null,8,Y)]),_:1},512),[[e.vShow,n.typeError]])])]),_:1})]),_:2},[a.dialogStep===2?{name:"actions",fn:e.withCtx(()=>[e.createVNode(d,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(c,{onClick:t[0]||(t[0]=()=>a.dialogStep-=1),variant:"text"},{default:e.withCtx(()=>t[18]||(t[18]=[e.createTextVNode(" Previous ")])),_:1}),e.createVNode(l),e.createVNode(c,{onClick:n.clearHandler,variant:"outlined",class:"mr-4"},{default:e.withCtx(()=>t[19]||(t[19]=[e.createTextVNode(" Cancel ")])),_:1},8,["onClick"]),e.createVNode(c,{onClick:e.withModifiers(n.submitHandler,["prevent"]),type:"submit",color:"primary",disabled:!!o.error},{default:e.withCtx(()=>t[20]||(t[20]=[e.createTextVNode(" Ok ")])),_:1},8,["onClick","disabled"])]),_:1})]),key:"0"}:void 0]),1032,["modelValue"])]),_:1})]),_:1},8,["modelValue"])])}const M=k._export_sfc(O,[["render",G],["__scopeId","data-v-9ad41f9b"]]),J={components:{},props:{modelValue:{type:String,required:!0}},computed:{color:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}},swatches:function(){return["#005a8f","#003784","#8F3400","#df1368","#ff5252","#df323b","#9f0010","#2d9437","#004700","#db7200","#802700","#0f2941"]}},methods:{}};function Q(o,t,i,r,a,n){const l=e.resolveComponent("v-icon"),h=e.resolveComponent("v-list-item"),f=e.resolveComponent("v-select");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(f,{label:"Color",items:n.swatches,modelValue:n.color,"onUpdate:modelValue":t[0]||(t[0]=y=>n.color=y)},{"prepend-inner":e.withCtx(()=>[e.createVNode(l,{color:n.color},{default:e.withCtx(()=>t[1]||(t[1]=[e.createTextVNode(" mdi-square ")])),_:1},8,["color"])]),item:e.withCtx(({props:y,item:c})=>[e.createVNode(h,e.mergeProps(y,{value:c.raw}),{prepend:e.withCtx(()=>[e.createVNode(l,{color:c.raw},{default:e.withCtx(()=>t[2]||(t[2]=[e.createTextVNode(" mdi-square ")])),_:2},1032,["color"])]),_:2},1040,["value"])]),_:1},8,["items","modelValue"])])}const b=k._export_sfc(J,[["render",Q]]),B={methods:{deleteItem(o){let t=null,i="";switch(o.type.toLowerCase()){case"activity":i="activity",t=o.activity.start;break;case"metadata":i="metadata",t=o.metadata.start;break;case"note":i="notes",t=o.note.start;break}this.$dialog.confirm(`Are you sure you want to remove ${o.typeStr} at ${o.startStr}`,{okText:"Delete",cancelText:"Cancel"}).then(()=>N.ui.delete(`/openc3-api/${i}/${t}`)).then(()=>{this.$emit("delete",o),this.$notify.normal({title:`Deleted ${o.typeStr}`,body:`Deleted ${o.typeStr} at ${o.startStr}`})}).catch(()=>{})}}},X={components:{},props:{modelValue:{type:Array,required:!0}},data(){return{}},computed:{metadata:{get(){return this.modelValue},set(o){this.$emit("update:modelValue",o)}}},methods:{newMetadata:function(){this.metadata.push({key:"",value:""})},rm:function(o){this.metadata.splice(o,1)}}},$={scope:"col",class:"text-right"};function ee(o,t,i,r,a,n){const l=e.resolveComponent("v-icon"),h=e.resolveComponent("v-tooltip"),f=e.resolveComponent("v-text-field"),y=e.resolveComponent("v-table");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(y,{dense:""},{default:e.withCtx(()=>[e.createElementVNode("tbody",null,[e.createElementVNode("tr",null,[t[2]||(t[2]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Key",-1)),t[3]||(t[3]=e.createElementVNode("th",{scope:"col",class:"text-left"},"Value",-1)),e.createElementVNode("th",$,[e.createVNode(h,{location:"top"},{activator:e.withCtx(({props:c})=>[e.createElementVNode("div",e.normalizeProps(e.guardReactiveProps(c)),[e.createVNode(l,{"data-test":"new-metadata-icon",onClick:n.newMetadata},{default:e.withCtx(()=>t[0]||(t[0]=[e.createTextVNode(" mdi-plus ")])),_:1},8,["onClick"])],16)]),default:e.withCtx(()=>[t[1]||(t[1]=e.createElementVNode("span",null," New Metadata ",-1))]),_:1})])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.metadata,(c,d)=>(e.openBlock(),e.createElementBlock("tr",{key:`tr-${d}`},[e.createElementVNode("td",null,[e.createVNode(f,{modelValue:c.key,"onUpdate:modelValue":p=>c.key=p,type:"text",density:"compact","data-test":`key-${d}`},null,8,["modelValue","onUpdate:modelValue","data-test"])]),e.createElementVNode("td",null,[e.createVNode(f,{modelValue:c.value,"onUpdate:modelValue":p=>c.value=p,type:"text",density:"compact","data-test":`value-${d}`},null,8,["modelValue","onUpdate:modelValue","data-test"])]),e.createElementVNode("td",null,[e.createVNode(h,{location:"top"},{activator:e.withCtx(({props:p})=>[e.createElementVNode("div",e.mergeProps({ref_for:!0},p),[e.createVNode(l,{"data-test":`delete-metadata-icon-${d}`,onClick:v=>n.rm(d)},{default:e.withCtx(()=>t[4]||(t[4]=[e.createTextVNode(" mdi-delete ")])),_:2},1032,["data-test","onClick"])],16)]),default:e.withCtx(()=>[t[5]||(t[5]=e.createElementVNode("span",null," Delete Metadata ",-1))]),_:2},1024)])]))),128))])]),_:1})])}const q=k._export_sfc(X,[["render",ee]]),te={components:{ColorSelectForm:b,MetadataInputForm:q},props:{modelValue:Boolean,metadata:{type:Object,default:null}},mixins:[E,g.TimeFilters],data(){return{dialogStep:1,color:"#003784",metadataVals:[],rules:{required:o=>!!o||"Required"}}},mounted:function(){this.updateValues()},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(o){this.$emit("update:modelValue",o)}}},methods:{updateValues:function(){if(this.dialogStep=1,this.metadata){const o=new Date(this.metadata.start*1e3);this.startDate=this.formatDate(o,this.timeZone),this.startTime=this.formatTimeHMS(o,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 o=this.color,t=this.metadataVals.reduce((r,a)=>(r[a.key]=a.value,r),{}),i={color:o,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.ui.put(`/openc3-api/metadata/${this.metadata.start}`,{data:i}).then(r=>{this.$notify.normal({title:"Updated Metadata",body:`Metadata updated: (${r.data.start})`}),this.$emit("update",r.data),this.show=!this.show}):N.ui.post("/openc3-api/metadata",{data:i}).then(r=>{this.$notify.normal({title:"Created new Metadata",body:`Metadata: (${r.data.start})`}),this.$emit("update",r.data),this.show=!this.show})}}},oe={key:0},ae={key:1},ne={class:"pa-2"},ie={class:"pa-2"},le={style:{"min-height":"200px"}},re=["textContent"];function se(o,t,i,r,a,n){const l=e.resolveComponent("v-spacer"),h=e.resolveComponent("v-icon"),f=e.resolveComponent("v-tooltip"),y=e.resolveComponent("v-toolbar"),c=e.resolveComponent("v-btn"),d=e.resolveComponent("v-row"),p=e.resolveComponent("color-select-form"),v=e.resolveComponent("v-text-field"),w=e.resolveComponent("v-card-text"),C=e.resolveComponent("metadata-input-form"),_=e.resolveComponent("v-stepper"),x=e.resolveComponent("v-card"),u=e.resolveComponent("v-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(u,{persistent:"",modelValue:n.show,"onUpdate:modelValue":t[6]||(t[6]=V=>n.show=V),width:"600"},{default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.metadata?(e.openBlock(),e.createElementBlock("span",oe,"Update Metadata")):(e.openBlock(),e.createElementBlock("span",ae,"Create Metadata")),e.createVNode(l),e.createVNode(f,{location:"top"},{activator:e.withCtx(({props:V})=>[e.createElementVNode("div",e.normalizeProps(e.guardReactiveProps(V)),[e.createVNode(h,{"data-test":"close-metadata-icon",onClick:n.clearHandler},{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode(" mdi-close-box ")])),_:1},8,["onClick"])],16)]),default:e.withCtx(()=>[t[8]||(t[8]=e.createElementVNode("span",null,"Close",-1))]),_:1})]),_:1}),e.createVNode(_,{modelValue:a.dialogStep,"onUpdate:modelValue":t[5]||(t[5]=V=>a.dialogStep=V),editable:"",items:["Metadata Times","Metadata Input"]},e.createSlots({"item.1":e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createElementVNode("div",ne,[e.createVNode(p,{modelValue:a.color,"onUpdate:modelValue":t[1]||(t[1]=V=>a.color=V)},null,8,["modelValue"]),e.createVNode(d,{dense:""},{default:e.withCtx(()=>[e.createVNode(v,{modelValue:o.startDate,"onUpdate:modelValue":t[2]||(t[2]=V=>o.startDate=V),type:"date",label:"Start Date",class:"mx-1",rules:[a.rules.required],"data-test":"metadata-start-date"},null,8,["modelValue","rules"]),e.createVNode(v,{modelValue:o.startTime,"onUpdate:modelValue":t[3]||(t[3]=V=>o.startTime=V),type:"time",step:"1",label:"Start Time",class:"mx-1",rules:[a.rules.required],"data-test":"metadata-start-time"},null,8,["modelValue","rules"])]),_:1})])]),_:1})]),"item.2":e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createElementVNode("div",ie,[e.createElementVNode("div",le,[e.createVNode(C,{modelValue:a.metadataVals,"onUpdate:modelValue":t[4]||(t[4]=V=>a.metadataVals=V)},null,8,["modelValue"])]),e.withDirectives(e.createVNode(d,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.typeError)},null,8,re)]),_:1},512),[[e.vShow,n.typeError]])])]),_:1})]),_:2},[a.dialogStep===2?{name:"actions",fn:e.withCtx(()=>[e.createVNode(d,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(c,{onClick:t[0]||(t[0]=()=>a.dialogStep-=1),variant:"text"},{default:e.withCtx(()=>t[9]||(t[9]=[e.createTextVNode(" Previous ")])),_:1}),e.createVNode(l),e.createVNode(c,{onClick:n.clearHandler,variant:"outlined",class:"mr-4"},{default:e.withCtx(()=>t[10]||(t[10]=[e.createTextVNode(" Cancel ")])),_:1},8,["onClick"]),e.createVNode(c,{onClick:e.withModifiers(n.submitHandler,["prevent"]),type:"submit",color:"primary",disabled:!!o.error},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode(" Ok ")])),_:1},8,["onClick","disabled"])]),_:1})]),key:"0"}:void 0]),1032,["modelValue"])]),_:1})]),_:1},8,["modelValue"])])}const A=k._export_sfc(te,[["render",se],["__scopeId","data-v-364c2ff6"]]),de={components:{ColorSelectForm:b},props:{modelValue:Boolean,note:{type:Object}},mixins:[E,g.TimeFilters],data(){return{dialogStep:1,description:"",color:"#8F3400",rules:{required:o=>!!o||"Required"}}},mounted:function(){this.updateValues()},computed:{timeError:function(){let o,t;return this.timeZone==="local"?(o=new Date(this.startDate+" "+this.startTime),t=new Date(this.endDate+" "+this.endTime)):(o=new Date(this.startDate+" "+this.startTime+"Z"),t=new Date(this.endDate+" "+this.endTime+"Z")),o===t?"Invalid start, end time. Notes must have different start and end times.":o>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(o){this.$emit("update:modelValue",o)}}},methods:{updateValues:function(){if(this.dialogStep=1,this.note){const o=new Date(this.note.start*1e3);this.startDate=this.formatDate(o,this.timeZone),this.startTime=this.formatTimeHMS(o,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 o,t;this.timeZone==="local"?(o=new Date(this.startDate+" "+this.startTime).toISOString(),t=new Date(this.endDate+" "+this.endTime).toISOString()):(o=new Date(this.startDate+" "+this.startTime+"Z").toISOString(),t=new Date(this.endDate+" "+this.endTime+"Z").toISOString());const i=this.color,r=this.description;this.note?N.ui.put(`/openc3-api/notes/${this.note.start}`,{data:{start:o,stop:t,color:i,description:r}}).then(a=>{const n=a.data.description.length>16?`${a.data.description.substring(0,16)}...`:a.data.description;this.$notify.normal({title:"Updated Note",body:`Note updated: (${a.data.start}): "${n}"`}),this.$emit("update",a.data),this.show=!this.show}):N.ui.post("/openc3-api/notes",{data:{start:o,stop:t,color:i,description:r}}).then(a=>{const n=a.data.description.length>16?`${a.data.description.substring(0,16)}...`:a.data.description;this.$notify.normal({title:"Created new Note",body:`Note: (${a.data.start}) created: "${n}"`}),this.$emit("update",a.data),this.show=!this.show})}}},me={key:0},ce={key:1},ue={class:"pa-2"},pe=["textContent"],he={class:"pa-2"},ve=["textContent"];function Ve(o,t,i,r,a,n){const l=e.resolveComponent("v-spacer"),h=e.resolveComponent("v-icon"),f=e.resolveComponent("v-tooltip"),y=e.resolveComponent("v-toolbar"),c=e.resolveComponent("v-btn"),d=e.resolveComponent("v-row"),p=e.resolveComponent("v-text-field"),v=e.resolveComponent("v-card-text"),w=e.resolveComponent("color-select-form"),C=e.resolveComponent("v-stepper"),_=e.resolveComponent("v-card"),x=e.resolveComponent("v-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(x,{persistent:"",modelValue:n.show,"onUpdate:modelValue":t[8]||(t[8]=u=>n.show=u),width:"600"},{default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createVNode(y,{height:"24"},{default:e.withCtx(()=>[e.createVNode(l),i.note?(e.openBlock(),e.createElementBlock("span",me,"Update Note")):(e.openBlock(),e.createElementBlock("span",ce,"Create Note")),e.createVNode(l),e.createVNode(f,{location:"top"},{activator:e.withCtx(({props:u})=>[e.createElementVNode("div",e.normalizeProps(e.guardReactiveProps(u)),[e.createVNode(h,{"data-test":"close-note-icon",onClick:n.clearHandler},{default:e.withCtx(()=>t[9]||(t[9]=[e.createTextVNode(" mdi-close-box ")])),_:1},8,["onClick"])],16)]),default:e.withCtx(()=>[t[10]||(t[10]=e.createElementVNode("span",null," Close ",-1))]),_:1})]),_:1}),e.createVNode(C,{modelValue:a.dialogStep,"onUpdate:modelValue":t[7]||(t[7]=u=>a.dialogStep=u),editable:"",items:["Note Times","Note Input"]},e.createSlots({"item.1":e.withCtx(()=>[e.createVNode(v,null,{default:e.withCtx(()=>[e.createElementVNode("div",ue,[e.createVNode(d,{dense:""},{default:e.withCtx(()=>[e.createVNode(p,{modelValue:o.startDate,"onUpdate:modelValue":t[1]||(t[1]=u=>o.startDate=u),type:"date",label:"Start Date",class:"mx-1",rules:[a.rules.required],"data-test":"note-start-date"},null,8,["modelValue","rules"]),e.createVNode(p,{modelValue:o.startTime,"onUpdate:modelValue":t[2]||(t[2]=u=>o.startTime=u),type:"time",step:"1",label:"Start Time",class:"mx-1",rules:[a.rules.required],"data-test":"note-start-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(d,{dense:""},{default:e.withCtx(()=>[e.createVNode(p,{modelValue:o.endDate,"onUpdate:modelValue":t[3]||(t[3]=u=>o.endDate=u),type:"date",label:"End Date",class:"mx-1",rules:[a.rules.required],"data-test":"note-end-date"},null,8,["modelValue","rules"]),e.createVNode(p,{modelValue:o.endTime,"onUpdate:modelValue":t[4]||(t[4]=u=>o.endTime=u),type:"time",step:"1",label:"End Time",class:"mx-1",rules:[a.rules.required],"data-test":"note-end-time"},null,8,["modelValue","rules"])]),_:1}),e.createVNode(d,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.timeError)},null,8,pe),[[e.vShow,n.timeError]])]),_:1})])]),_:1})]),"item.2":e.withCtx(()=>[e.createVNode(v,null,{default:e.withCtx(()=>[e.createElementVNode("div",he,[e.createElementVNode("div",null,[e.createVNode(w,{modelValue:a.color,"onUpdate:modelValue":t[5]||(t[5]=u=>a.color=u)},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(p,{modelValue:a.description,"onUpdate:modelValue":t[6]||(t[6]=u=>a.description=u),type:"text",label:"Note Description","data-test":"note-description"},null,8,["modelValue"])]),e.withDirectives(e.createVNode(d,null,{default:e.withCtx(()=>[e.createElementVNode("span",{class:"ma-2 text-red",textContent:e.toDisplayString(n.typeError)},null,8,ve)]),_:1},512),[[e.vShow,n.typeError]])])]),_:1})]),_:2},[a.dialogStep===2?{name:"actions",fn:e.withCtx(()=>[e.createVNode(d,{class:"ma-0 px-6 pb-4"},{default:e.withCtx(()=>[e.createVNode(c,{onClick:t[0]||(t[0]=()=>a.dialogStep-=1),variant:"text"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode(" Previous ")])),_:1}),e.createVNode(l),e.createVNode(c,{onClick:n.clearHandler,variant:"outlined",class:"mr-4"},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode(" Cancel ")])),_:1},8,["onClick"]),e.createVNode(c,{onClick:e.withModifiers(n.submitHandler,["prevent"]),type:"submit",color:"primary",disabled:!!o.error},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" Ok ")])),_:1},8,["onClick","disabled"])]),_:1})]),key:"0"}:void 0]),1032,["modelValue"])]),_:1})]),_:1},8,["modelValue"])])}const I=k._export_sfc(de,[["render",Ve],["__scopeId","data-v-87960c87"]]),ye={components:{ActivityCreateDialog:M,MetadataCreateDialog:A,NoteCreateDialog:I},mixins:[g.TimeFilters,B],props:{events:{type:Array,required:!0},modelValue:{type:Boolean,required:!0},timeZone:{type:String,required:!0},types:{type:Array},newMetadata:{type:Boolean,default:!1}},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(o){this.$emit("update:modelValue",o)}}},created:function(){},methods:{close(){this.$emit("close"),this.show=!1},dataFormat(o){let t=o.name;switch(o.type){case"note":t=o.note.description;break;case"metadata":let i=[];Object.entries(o.metadata.metadata).forEach(([r,a])=>i.push(`${r}: ${a}`)),t=i.join(", ");break}return t},editAction(o){switch(this.editIndex=this.localEvents.findIndex(t=>t.type===o.type&&t.start===o.start),o.type){case"activity":this.editActivity=o.activity,this.showActivityUpdate=!0;break;case"metadata":this.editMetadata=o.metadata,this.showMetadataUpdate=!0;break;case"note":this.editNote=o.note,this.showNoteUpdate=!0;break}},deleteAction(o){let t=this.localEvents.findIndex(n=>n.type===o.type&&n.start===o.start),i=null,r=null,a=null;switch(o.type){case"activity":i=`timeline/${o.activity.name}/activity`,r=o.activity.start,a=o.activity.uuid;break;case"metadata":i="metadata",r=o.metadata.start;break;case"note":i="notes",r=o.note.start;break}this.$dialog.confirm(`Are you sure you want to remove ${o.type} at ${o.start}`,{okText:"Delete",cancelText:"Cancel"}).then(n=>{this.localEvents.splice(t,1);let l=`/openc3-api/${i}/${r}`;return a&&(l+=`/${a}`),N.ui.delete(l)}).then(n=>{this.$emit("update"),this.$notify.normal({title:`Deleted ${o.type}`,body:`Deleted ${o.type} at ${r}`})}).catch(n=>{})},updateActivity(o){this.$emit("update"),this.localEvents[this.editIndex].activity=o},updateMetadata(o){this.$emit("update"),this.localEvents[this.editIndex].metadata=o},updateNote(o){this.$emit("update"),this.localEvents[this.editIndex].note=o},addMetadata(o){let t={name:"Metadata",start:new Date(o.start*1e3),end:new Date(o.start*1e3),color:o.color,type:o.type,timed:!0,metadata:o};this.localEvents.push(t)}}},fe={key:0},Ce={key:1},we={key:0},_e={key:1};function Ne(o,t,i,r,a,n){const l=e.resolveComponent("v-spacer"),h=e.resolveComponent("v-icon"),f=e.resolveComponent("v-tooltip"),y=e.resolveComponent("v-toolbar"),c=e.resolveComponent("v-text-field"),d=e.resolveComponent("v-row"),p=e.resolveComponent("v-card-title"),v=e.resolveComponent("v-data-table"),w=e.resolveComponent("v-btn"),C=e.resolveComponent("v-card-actions"),_=e.resolveComponent("v-card"),x=e.resolveComponent("v-dialog"),u=e.resolveComponent("activity-create-dialog"),V=e.resolveComponent("metadata-create-dialog"),T=e.resolveComponent("note-create-dialog");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(x,{persistent:"",modelValue:n.show,"onUpdate:modelValue":t[2]||(t[2]=m=>n.show=m),width:"80vw"},{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",fe,"Metadata")):(e.openBlock(),e.createElementBlock("span",Ce,"Events")),e.createVNode(l),e.createVNode(f,{location:"top"},{activator:e.withCtx(({props:m})=>[e.createElementVNode("div",e.normalizeProps(e.guardReactiveProps(m)),[e.createVNode(h,{"data-test":"close-metadata-icon",onClick:n.close},{default:e.withCtx(()=>t[7]||(t[7]=[e.createTextVNode(" mdi-close-box ")])),_:1},8,["onClick"])],16)]),default:e.withCtx(()=>[t[8]||(t[8]=e.createElementVNode("span",null,"Close",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createVNode(d,{class:"pa-3"},{default:e.withCtx(()=>[i.newMetadata?(e.openBlock(),e.createElementBlock("span",we,"Metadata")):(e.openBlock(),e.createElementBlock("span",_e,"Events")),e.createVNode(l),e.createVNode(c,{modelValue:a.search,"onUpdate:modelValue":t[0]||(t[0]=m=>a.search=m),label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",variant:"outlined",density:"compact","single-line":"","hide-details":""},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(v,{headers:a.eventHeaders,items:a.localEvents,search:a.search},{"no-data":e.withCtx(()=>t[9]||(t[9]=[e.createElementVNode("span",null," No events ",-1)])),"item.start":e.withCtx(({item:m})=>[e.createTextVNode(e.toDisplayString(o.formatDateTime(m.start,i.timeZone)),1)]),"item.end":e.withCtx(({item:m})=>[e.createTextVNode(e.toDisplayString(o.formatDateTime(m.end,i.timeZone)),1)]),"item.type":e.withCtx(({item:m})=>[e.createTextVNode(e.toDisplayString(m.type.charAt(0).toUpperCase()+m.type.slice(1)),1)]),"item.data":e.withCtx(({item:m})=>[e.createTextVNode(e.toDisplayString(n.dataFormat(m)),1)]),"item.actions":e.withCtx(({item:m})=>[e.createVNode(h,{size:"small",class:"mr-2",onClick:s=>n.editAction(m),"data-test":"edit-event"},{default:e.withCtx(()=>t[10]||(t[10]=[e.createTextVNode(" mdi-pencil ")])),_:2},1032,["onClick"]),e.createVNode(h,{size:"small",onClick:s=>n.deleteAction(m),"data-test":"delete-event"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode(" mdi-delete ")])),_:2},1032,["onClick"])]),_:1},8,["headers","items","search"]),e.createVNode(C,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(l),e.createVNode(w,{variant:"outlined","data-test":"close-event-list",onClick:n.close},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode(" Close ")])),_:1},8,["onClick"]),i.newMetadata?(e.openBlock(),e.createBlock(w,{key:0,variant:"flat","data-test":"new-event",onClick:t[1]||(t[1]=m=>a.showMetadataCreate=!0)},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" New Metadata ")])),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),a.showActivityUpdate?(e.openBlock(),e.createBlock(u,{key:0,modelValue:a.showActivityUpdate,"onUpdate:modelValue":t[3]||(t[3]=m=>a.showActivityUpdate=m),activity:a.editActivity,"time-zone":i.timeZone,onUpdate:n.updateActivity},null,8,["modelValue","activity","time-zone","onUpdate"])):e.createCommentVNode("",!0),a.showMetadataUpdate?(e.openBlock(),e.createBlock(V,{key:1,modelValue:a.showMetadataUpdate,"onUpdate:modelValue":t[4]||(t[4]=m=>a.showMetadataUpdate=m),metadata:a.editMetadata,"time-zone":i.timeZone,onUpdate:n.updateMetadata},null,8,["modelValue","metadata","time-zone","onUpdate"])):e.createCommentVNode("",!0),a.showNoteUpdate?(e.openBlock(),e.createBlock(T,{key:2,modelValue:a.showNoteUpdate,"onUpdate:modelValue":t[5]||(t[5]=m=>a.showNoteUpdate=m),note:a.editNote,"time-zone":i.timeZone,onUpdate:n.updateNote},null,8,["modelValue","note","time-zone","onUpdate"])):e.createCommentVNode("",!0),a.showMetadataCreate?(e.openBlock(),e.createBlock(V,{key:3,modelValue:a.showMetadataCreate,"onUpdate:modelValue":t[6]||(t[6]=m=>a.showMetadataCreate=m),"time-zone":i.timeZone,onUpdate:n.addMetadata},null,8,["modelValue","time-zone","onUpdate"])):e.createCommentVNode("",!0)])}const xe=k._export_sfc(ye,[["render",Ne]]);exports.ActivityCreateDialog=M;exports.ColorSelectForm=b;exports.CreateDialog=E;exports.DeleteItem=B;exports.EventListDialog=xe;exports.MetadataCreateDialog=A;exports.MetadataInputForm=q;exports.NoteCreateDialog=I;
2
+ //# sourceMappingURL=calendar.cjs.map