@openc3/vue-common 6.4.1 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/dist/{ArrayWidget-CeyoPOhk.js → ArrayWidget-CC3iwyQc.js} +4 -4
  2. package/dist/{ArrayWidget-CeyoPOhk.js.map → ArrayWidget-CC3iwyQc.js.map} +1 -1
  3. package/dist/{ArrayWidget-C7qsXQC9.cjs → ArrayWidget-DaQV8y9D.cjs} +2 -2
  4. package/dist/{ArrayWidget-C7qsXQC9.cjs.map → ArrayWidget-DaQV8y9D.cjs.map} +1 -1
  5. package/dist/{ArrayplotWidget-BEw4fJPY.js → ArrayplotWidget-CiQdsmVy.js} +3 -3
  6. package/dist/{ArrayplotWidget-BEw4fJPY.js.map → ArrayplotWidget-CiQdsmVy.js.map} +1 -1
  7. package/dist/{ArrayplotWidget-S4tyM6zU.cjs → ArrayplotWidget-CkiRBYrb.cjs} +2 -2
  8. package/dist/{ArrayplotWidget-S4tyM6zU.cjs.map → ArrayplotWidget-CkiRBYrb.cjs.map} +1 -1
  9. package/dist/{BarColumn-CIWppEH6.js → BarColumn-BhjcS87D.js} +3 -3
  10. package/dist/{BarColumn-CIWppEH6.js.map → BarColumn-BhjcS87D.js.map} +1 -1
  11. package/dist/{BarColumn-B2FQVNoP.cjs → BarColumn-Ci9fqSL1.cjs} +2 -2
  12. package/dist/{BarColumn-B2FQVNoP.cjs.map → BarColumn-Ci9fqSL1.cjs.map} +1 -1
  13. package/dist/{BlockWidget-DRtBkPat.js → BlockWidget-LLPHBYVU.js} +4 -4
  14. package/dist/{BlockWidget-DRtBkPat.js.map → BlockWidget-LLPHBYVU.js.map} +1 -1
  15. package/dist/{BlockWidget-EZBTae9s.cjs → BlockWidget-yNjXB1gO.cjs} +2 -2
  16. package/dist/{BlockWidget-EZBTae9s.cjs.map → BlockWidget-yNjXB1gO.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-C0UM4M51.cjs → ButtonWidget-C_R8sVl5.cjs} +2 -2
  18. package/dist/{ButtonWidget-C0UM4M51.cjs.map → ButtonWidget-C_R8sVl5.cjs.map} +1 -1
  19. package/dist/{ButtonWidget-4GORf9BG.js → ButtonWidget-Co0KMkIG.js} +4 -4
  20. package/dist/{ButtonWidget-4GORf9BG.js.map → ButtonWidget-Co0KMkIG.js.map} +1 -1
  21. package/dist/{CanvasWidget-77u4rg8R.cjs → CanvasWidget-CMVhjpJc.cjs} +2 -2
  22. package/dist/{CanvasWidget-77u4rg8R.cjs.map → CanvasWidget-CMVhjpJc.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-VW1uHIU0.js → CanvasWidget-DPrxnI7M.js} +2 -2
  24. package/dist/{CanvasWidget-VW1uHIU0.js.map → CanvasWidget-DPrxnI7M.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-B4olJsKr.cjs → CanvasdotWidget-DskyFyIC.cjs} +2 -2
  26. package/dist/{CanvasdotWidget-B4olJsKr.cjs.map → CanvasdotWidget-DskyFyIC.cjs.map} +1 -1
  27. package/dist/{CanvasdotWidget-unc83V9l.js → CanvasdotWidget-s1ALDR4k.js} +2 -2
  28. package/dist/{CanvasdotWidget-unc83V9l.js.map → CanvasdotWidget-s1ALDR4k.js.map} +1 -1
  29. package/dist/{CanvasimageWidget-BPk3GdGV.cjs → CanvasimageWidget-BngTI0bl.cjs} +2 -2
  30. package/dist/{CanvasimageWidget-BPk3GdGV.cjs.map → CanvasimageWidget-BngTI0bl.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-CNPV5Ale.js → CanvasimageWidget-Cs-KjdqK.js} +3 -3
  32. package/dist/{CanvasimageWidget-CNPV5Ale.js.map → CanvasimageWidget-Cs-KjdqK.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-DpPDDitX.cjs → CanvasimagevalueWidget-0qTn6Gb5.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-DpPDDitX.cjs.map → CanvasimagevalueWidget-0qTn6Gb5.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-DsQbSZt_.js → CanvasimagevalueWidget-B-wBQisl.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-DsQbSZt_.js.map → CanvasimagevalueWidget-B-wBQisl.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-B-5KAkZr.js → CanvaslabelWidget-CLBK52pP.js} +2 -2
  38. package/dist/{CanvaslabelWidget-B-5KAkZr.js.map → CanvaslabelWidget-CLBK52pP.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-CjKvr47x.cjs → CanvaslabelWidget-b2yvqZBZ.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-CjKvr47x.cjs.map → CanvaslabelWidget-b2yvqZBZ.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-C0jdjHxr.cjs → CanvaslabelvalueWidget-CA03ncx0.cjs} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-C0jdjHxr.cjs.map → CanvaslabelvalueWidget-CA03ncx0.cjs.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-DX-b_55r.js → CanvaslabelvalueWidget-CAa70y_o.js} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-DX-b_55r.js.map → CanvaslabelvalueWidget-CAa70y_o.js.map} +1 -1
  45. package/dist/{CanvaslineWidget-C-4EjDkj.cjs → CanvaslineWidget-B-yhgIlR.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-C-4EjDkj.cjs.map → CanvaslineWidget-B-yhgIlR.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-DiNWzbpu.js → CanvaslineWidget-PdwVJOQ5.js} +2 -2
  48. package/dist/{CanvaslineWidget-DiNWzbpu.js.map → CanvaslineWidget-PdwVJOQ5.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-Du9pwAN7.js → CanvaslinevalueWidget-CKrp1f3Z.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-Du9pwAN7.js.map → CanvaslinevalueWidget-CKrp1f3Z.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-x81dANpk.cjs → CanvaslinevalueWidget-PVW-_nOk.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-x81dANpk.cjs.map → CanvaslinevalueWidget-PVW-_nOk.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-LWSGbUuH.cjs → CheckbuttonWidget-BItae9qq.cjs} +2 -2
  54. package/dist/{CheckbuttonWidget-LWSGbUuH.cjs.map → CheckbuttonWidget-BItae9qq.cjs.map} +1 -1
  55. package/dist/{CheckbuttonWidget--QM-segm.js → CheckbuttonWidget-CTSfH4NN.js} +2 -2
  56. package/dist/{CheckbuttonWidget--QM-segm.js.map → CheckbuttonWidget-CTSfH4NN.js.map} +1 -1
  57. package/dist/{ComboboxWidget-DR8EmM6T.cjs → ComboboxWidget-BFKz1kva.cjs} +2 -2
  58. package/dist/{ComboboxWidget-DR8EmM6T.cjs.map → ComboboxWidget-BFKz1kva.cjs.map} +1 -1
  59. package/dist/{ComboboxWidget-BDpHIcCo.js → ComboboxWidget-BQzv9zk5.js} +2 -2
  60. package/dist/{ComboboxWidget-BDpHIcCo.js.map → ComboboxWidget-BQzv9zk5.js.map} +1 -1
  61. package/dist/{CriticalCmdDialog-Ct5WeIW_.cjs → CriticalCmdDialog-CfUGhKPh.cjs} +2 -2
  62. package/dist/{CriticalCmdDialog-Ct5WeIW_.cjs.map → CriticalCmdDialog-CfUGhKPh.cjs.map} +1 -1
  63. package/dist/{CriticalCmdDialog-D4-eoA3P.js → CriticalCmdDialog-D5m3w1fr.js} +2 -2
  64. package/dist/{CriticalCmdDialog-D4-eoA3P.js.map → CriticalCmdDialog-D5m3w1fr.js.map} +1 -1
  65. package/dist/{DateWidget-CBzHYk5i.cjs → DateWidget-CuUySNFb.cjs} +2 -2
  66. package/dist/{DateWidget-CBzHYk5i.cjs.map → DateWidget-CuUySNFb.cjs.map} +1 -1
  67. package/dist/{DateWidget-BCmQNavZ.js → DateWidget-DKXxXT1g.js} +2 -2
  68. package/dist/{DateWidget-BCmQNavZ.js.map → DateWidget-DKXxXT1g.js.map} +1 -1
  69. package/dist/{DetailsDialog-OMd7LWdZ.js → DetailsDialog-DEjAO6yp.js} +2 -2
  70. package/dist/{DetailsDialog-OMd7LWdZ.js.map → DetailsDialog-DEjAO6yp.js.map} +1 -1
  71. package/dist/{DetailsDialog-T9G076-B.cjs → DetailsDialog-DlUuDdFa.cjs} +2 -2
  72. package/dist/{DetailsDialog-T9G076-B.cjs.map → DetailsDialog-DlUuDdFa.cjs.map} +1 -1
  73. package/dist/{EventListDialog-COOwwkxk.cjs → EventListDialog-CPYg1a2g.cjs} +2 -2
  74. package/dist/{EventListDialog-COOwwkxk.cjs.map → EventListDialog-CPYg1a2g.cjs.map} +1 -1
  75. package/dist/{EventListDialog-ankpCg-n.js → EventListDialog-CabnKWVX.js} +3 -3
  76. package/dist/{EventListDialog-ankpCg-n.js.map → EventListDialog-CabnKWVX.js.map} +1 -1
  77. package/dist/{FormatvalueWidget-CPn5mDHY.js → FormatvalueWidget-7Yp9jfgX.js} +3 -3
  78. package/dist/{FormatvalueWidget-CPn5mDHY.js.map → FormatvalueWidget-7Yp9jfgX.js.map} +1 -1
  79. package/dist/{FormatvalueWidget-wjsl4ty0.cjs → FormatvalueWidget-LNNT9pLh.cjs} +2 -2
  80. package/dist/{FormatvalueWidget-wjsl4ty0.cjs.map → FormatvalueWidget-LNNT9pLh.cjs.map} +1 -1
  81. package/dist/{Graph-hTOB_jv2.cjs → Graph-ZGEBRGOA.cjs} +2 -2
  82. package/dist/{Graph-hTOB_jv2.cjs.map → Graph-ZGEBRGOA.cjs.map} +1 -1
  83. package/dist/{Graph-vUcIyyTp.js → Graph-hzxapkW-.js} +2 -2
  84. package/dist/{Graph-vUcIyyTp.js.map → Graph-hzxapkW-.js.map} +1 -1
  85. package/dist/{GraphWidget-Cl97QQYm.js → GraphWidget-Dn0ZaxHo.js} +2 -2
  86. package/dist/{GraphWidget-Cl97QQYm.js.map → GraphWidget-Dn0ZaxHo.js.map} +1 -1
  87. package/dist/{GraphWidget-D3rDXvA8.cjs → GraphWidget-caScsshg.cjs} +2 -2
  88. package/dist/{GraphWidget-D3rDXvA8.cjs.map → GraphWidget-caScsshg.cjs.map} +1 -1
  89. package/dist/{HorizontalWidget-CtTkQHl-.js → HorizontalWidget-BFzi3rMl.js} +2 -2
  90. package/dist/{HorizontalWidget-CtTkQHl-.js.map → HorizontalWidget-BFzi3rMl.js.map} +1 -1
  91. package/dist/{HorizontalWidget-72nrDrwn.cjs → HorizontalWidget-Bt7N0bIN.cjs} +2 -2
  92. package/dist/{HorizontalWidget-72nrDrwn.cjs.map → HorizontalWidget-Bt7N0bIN.cjs.map} +1 -1
  93. package/dist/{HorizontalboxWidget-Dn9zVn4r.js → HorizontalboxWidget-DIagyace.js} +5 -5
  94. package/dist/{HorizontalboxWidget-Dn9zVn4r.js.map → HorizontalboxWidget-DIagyace.js.map} +1 -1
  95. package/dist/{HorizontalboxWidget-C8kuEm-u.cjs → HorizontalboxWidget-Dv6NWovB.cjs} +2 -2
  96. package/dist/{HorizontalboxWidget-C8kuEm-u.cjs.map → HorizontalboxWidget-Dv6NWovB.cjs.map} +1 -1
  97. package/dist/{HorizontallineWidget-BBvYWaP7.js → HorizontallineWidget-BOZNWM3a.js} +2 -2
  98. package/dist/{HorizontallineWidget-BBvYWaP7.js.map → HorizontallineWidget-BOZNWM3a.js.map} +1 -1
  99. package/dist/{HorizontallineWidget-Bs_p5rzY.cjs → HorizontallineWidget-CFsWevmI.cjs} +2 -2
  100. package/dist/{HorizontallineWidget-Bs_p5rzY.cjs.map → HorizontallineWidget-CFsWevmI.cjs.map} +1 -1
  101. package/dist/{IframeWidget-BmZOip3U.js → IframeWidget-BU24bhc2.js} +2 -2
  102. package/dist/{IframeWidget-BmZOip3U.js.map → IframeWidget-BU24bhc2.js.map} +1 -1
  103. package/dist/{IframeWidget-Bhl0G51c.cjs → IframeWidget-J6g6EhHh.cjs} +2 -2
  104. package/dist/{IframeWidget-Bhl0G51c.cjs.map → IframeWidget-J6g6EhHh.cjs.map} +1 -1
  105. package/dist/{ImageLoader-CXV42ZAx.cjs → ImageLoader-BVVI9FSl.cjs} +2 -2
  106. package/dist/{ImageLoader-CXV42ZAx.cjs.map → ImageLoader-BVVI9FSl.cjs.map} +1 -1
  107. package/dist/{ImageLoader-wYNaGuuz.js → ImageLoader-xxDrxPAX.js} +2 -2
  108. package/dist/{ImageLoader-wYNaGuuz.js.map → ImageLoader-xxDrxPAX.js.map} +1 -1
  109. package/dist/{ImageviewerWidget-BAK_GlYK.cjs → ImageviewerWidget-BSTS4nPw.cjs} +2 -2
  110. package/dist/{ImageviewerWidget-BAK_GlYK.cjs.map → ImageviewerWidget-BSTS4nPw.cjs.map} +1 -1
  111. package/dist/{ImageviewerWidget-ByuTqBHq.js → ImageviewerWidget-YMA4CVsl.js} +2 -2
  112. package/dist/{ImageviewerWidget-ByuTqBHq.js.map → ImageviewerWidget-YMA4CVsl.js.map} +1 -1
  113. package/dist/{InterfacesTab-BbsiYwEX.js → InterfacesTab-Cv50gOTl.js} +3 -3
  114. package/dist/{InterfacesTab-BbsiYwEX.js.map → InterfacesTab-Cv50gOTl.js.map} +1 -1
  115. package/dist/{InterfacesTab-CnQLkjoz.cjs → InterfacesTab-DOjyTYVC.cjs} +2 -2
  116. package/dist/{InterfacesTab-CnQLkjoz.cjs.map → InterfacesTab-DOjyTYVC.cjs.map} +1 -1
  117. package/dist/{LabelWidget-Dmb5F5j-.js → LabelWidget-2402SA18.js} +2 -2
  118. package/dist/{LabelWidget-Dmb5F5j-.js.map → LabelWidget-2402SA18.js.map} +1 -1
  119. package/dist/{LabelWidget-BP72ze-R.cjs → LabelWidget-t-nltZ16.cjs} +2 -2
  120. package/dist/{LabelWidget-BP72ze-R.cjs.map → LabelWidget-t-nltZ16.cjs.map} +1 -1
  121. package/dist/{LabelledWidget-DV1IbbPS.js → LabelledWidget-Cbubzj_g.js} +4 -4
  122. package/dist/{LabelledWidget-DV1IbbPS.js.map → LabelledWidget-Cbubzj_g.js.map} +1 -1
  123. package/dist/{LabelledWidget-DIflzlDv.cjs → LabelledWidget-tWrIx1sj.cjs} +2 -2
  124. package/dist/{LabelledWidget-DIflzlDv.cjs.map → LabelledWidget-tWrIx1sj.cjs.map} +1 -1
  125. package/dist/{LabelprogressbarWidget-B18EaMhU.cjs → LabelprogressbarWidget-1k8njgQG.cjs} +2 -2
  126. package/dist/{LabelprogressbarWidget-B18EaMhU.cjs.map → LabelprogressbarWidget-1k8njgQG.cjs.map} +1 -1
  127. package/dist/{LabelprogressbarWidget-BHBDYVZp.js → LabelprogressbarWidget-s8V7w6LJ.js} +4 -4
  128. package/dist/{LabelprogressbarWidget-BHBDYVZp.js.map → LabelprogressbarWidget-s8V7w6LJ.js.map} +1 -1
  129. package/dist/{LabelsparklineWidget-Bdft2p6Y.cjs → LabelsparklineWidget-4yoeI7gJ.cjs} +2 -2
  130. package/dist/{LabelsparklineWidget-Bdft2p6Y.cjs.map → LabelsparklineWidget-4yoeI7gJ.cjs.map} +1 -1
  131. package/dist/{LabelsparklineWidget-BaoIdd7s.js → LabelsparklineWidget-qbM_OXLh.js} +4 -4
  132. package/dist/{LabelsparklineWidget-BaoIdd7s.js.map → LabelsparklineWidget-qbM_OXLh.js.map} +1 -1
  133. package/dist/{LabelvalueWidget-wuW55zQP.js → LabelvalueWidget-B5Ihc2yP.js} +4 -4
  134. package/dist/{LabelvalueWidget-wuW55zQP.js.map → LabelvalueWidget-B5Ihc2yP.js.map} +1 -1
  135. package/dist/{LabelvalueWidget-DiqMgePn.cjs → LabelvalueWidget-CEua41bt.cjs} +2 -2
  136. package/dist/{LabelvalueWidget-DiqMgePn.cjs.map → LabelvalueWidget-CEua41bt.cjs.map} +1 -1
  137. package/dist/{LabelvaluedescWidget-fN9XLm-N.cjs → LabelvaluedescWidget-7jth-OmG.cjs} +2 -2
  138. package/dist/{LabelvaluedescWidget-fN9XLm-N.cjs.map → LabelvaluedescWidget-7jth-OmG.cjs.map} +1 -1
  139. package/dist/{LabelvaluedescWidget-BBHwqvj4.js → LabelvaluedescWidget-Cl3JHPGR.js} +5 -5
  140. package/dist/{LabelvaluedescWidget-BBHwqvj4.js.map → LabelvaluedescWidget-Cl3JHPGR.js.map} +1 -1
  141. package/dist/{LabelvaluelimitsbarWidget-Dp5qsue9.cjs → LabelvaluelimitsbarWidget-BDhDe4-V.cjs} +2 -2
  142. package/dist/{LabelvaluelimitsbarWidget-Dp5qsue9.cjs.map → LabelvaluelimitsbarWidget-BDhDe4-V.cjs.map} +1 -1
  143. package/dist/{LabelvaluelimitsbarWidget-77Rc3lCf.js → LabelvaluelimitsbarWidget-DnpfRyHl.js} +4 -4
  144. package/dist/{LabelvaluelimitsbarWidget-77Rc3lCf.js.map → LabelvaluelimitsbarWidget-DnpfRyHl.js.map} +1 -1
  145. package/dist/{LabelvaluelimitscolumnWidget-nounrACl.js → LabelvaluelimitscolumnWidget-D4L9L5oa.js} +5 -5
  146. package/dist/{LabelvaluelimitscolumnWidget-nounrACl.js.map → LabelvaluelimitscolumnWidget-D4L9L5oa.js.map} +1 -1
  147. package/dist/{LabelvaluelimitscolumnWidget-uR4QE_cm.cjs → LabelvaluelimitscolumnWidget-d1puBx2r.cjs} +2 -2
  148. package/dist/{LabelvaluelimitscolumnWidget-uR4QE_cm.cjs.map → LabelvaluelimitscolumnWidget-d1puBx2r.cjs.map} +1 -1
  149. package/dist/{LabelvaluerangebarWidget-MVkSnTVH.cjs → LabelvaluerangebarWidget-BczxhVFU.cjs} +2 -2
  150. package/dist/{LabelvaluerangebarWidget-MVkSnTVH.cjs.map → LabelvaluerangebarWidget-BczxhVFU.cjs.map} +1 -1
  151. package/dist/{LabelvaluerangebarWidget-B83Jj5Q1.js → LabelvaluerangebarWidget-BivnHCbE.js} +4 -4
  152. package/dist/{LabelvaluerangebarWidget-B83Jj5Q1.js.map → LabelvaluerangebarWidget-BivnHCbE.js.map} +1 -1
  153. package/dist/{Layout-ByQC7nQ3.js → Layout-B7KU2jmu.js} +2 -2
  154. package/dist/{Layout-ByQC7nQ3.js.map → Layout-B7KU2jmu.js.map} +1 -1
  155. package/dist/Layout-DoI_Bpyu.cjs +2 -0
  156. package/dist/{Layout-CFJMHNqy.cjs.map → Layout-DoI_Bpyu.cjs.map} +1 -1
  157. package/dist/{LedWidget-ghzR6jZJ.cjs → LedWidget-BSZWv-hh.cjs} +2 -2
  158. package/dist/{LedWidget-ghzR6jZJ.cjs.map → LedWidget-BSZWv-hh.cjs.map} +1 -1
  159. package/dist/{LedWidget-Cccb8YTk.js → LedWidget-DpdthKEd.js} +4 -4
  160. package/dist/{LedWidget-Cccb8YTk.js.map → LedWidget-DpdthKEd.js.map} +1 -1
  161. package/dist/{LimitsbarWidget-D1EBBwX1.js → LimitsbarWidget-CLyj3Kb-.js} +2 -2
  162. package/dist/{LimitsbarWidget-D1EBBwX1.js.map → LimitsbarWidget-CLyj3Kb-.js.map} +1 -1
  163. package/dist/{LimitsbarWidget-Dg2_T5OY.cjs → LimitsbarWidget-CaBnnZR-.cjs} +2 -2
  164. package/dist/{LimitsbarWidget-Dg2_T5OY.cjs.map → LimitsbarWidget-CaBnnZR-.cjs.map} +1 -1
  165. package/dist/{LimitscolorWidget--1aPSNVB.js → LimitscolorWidget-ChvzYoug.js} +2 -2
  166. package/dist/{LimitscolorWidget--1aPSNVB.js.map → LimitscolorWidget-ChvzYoug.js.map} +1 -1
  167. package/dist/{LimitscolorWidget-D9mHLFOs.cjs → LimitscolorWidget-DilOPB_Q.cjs} +2 -2
  168. package/dist/{LimitscolorWidget-D9mHLFOs.cjs.map → LimitscolorWidget-DilOPB_Q.cjs.map} +1 -1
  169. package/dist/{LimitscolumnWidget-D18x3aW-.cjs → LimitscolumnWidget-C8m6Sqp8.cjs} +2 -2
  170. package/dist/{LimitscolumnWidget-D18x3aW-.cjs.map → LimitscolumnWidget-C8m6Sqp8.cjs.map} +1 -1
  171. package/dist/{LimitscolumnWidget-swnMNApm.js → LimitscolumnWidget-IOhsLFZ1.js} +2 -2
  172. package/dist/{LimitscolumnWidget-swnMNApm.js.map → LimitscolumnWidget-IOhsLFZ1.js.map} +1 -1
  173. package/dist/{LinegraphWidget-BdCc6zps.cjs → LinegraphWidget-DOPBUi0Y.cjs} +2 -2
  174. package/dist/{LinegraphWidget-BdCc6zps.cjs.map → LinegraphWidget-DOPBUi0Y.cjs.map} +1 -1
  175. package/dist/{LinegraphWidget-BbI-wOnq.js → LinegraphWidget-DZdqMqjw.js} +4 -4
  176. package/dist/{LinegraphWidget-BbI-wOnq.js.map → LinegraphWidget-DZdqMqjw.js.map} +1 -1
  177. package/dist/{MatrixbycolumnsWidget-CuhTHsdb.cjs → MatrixbycolumnsWidget-BrynJcbR.cjs} +2 -2
  178. package/dist/{MatrixbycolumnsWidget-CuhTHsdb.cjs.map → MatrixbycolumnsWidget-BrynJcbR.cjs.map} +1 -1
  179. package/dist/{MatrixbycolumnsWidget-Bx2qMr8P.js → MatrixbycolumnsWidget-BzGYMhJ2.js} +3 -3
  180. package/dist/{MatrixbycolumnsWidget-Bx2qMr8P.js.map → MatrixbycolumnsWidget-BzGYMhJ2.js.map} +1 -1
  181. package/dist/{MicroservicesTab-CtI7BEt0.js → MicroservicesTab-DrqUNTBZ.js} +3 -3
  182. package/dist/{MicroservicesTab-CtI7BEt0.js.map → MicroservicesTab-DrqUNTBZ.js.map} +1 -1
  183. package/dist/{MicroservicesTab-7mVRcHEj.cjs → MicroservicesTab-pL6PYFy5.cjs} +2 -2
  184. package/dist/{MicroservicesTab-7mVRcHEj.cjs.map → MicroservicesTab-pL6PYFy5.cjs.map} +1 -1
  185. package/dist/{Openc3Screen-DFYYhHt7.js → Openc3Screen-CPknMmN8.js} +125 -115
  186. package/dist/Openc3Screen-CPknMmN8.js.map +1 -0
  187. package/dist/Openc3Screen-CQkUFNEH.cjs +5 -0
  188. package/dist/Openc3Screen-CQkUFNEH.cjs.map +1 -0
  189. package/dist/{OutputDialog-CqD5uI0m.js → OutputDialog-B6i5yvkr.js} +2 -2
  190. package/dist/{OutputDialog-CqD5uI0m.js.map → OutputDialog-B6i5yvkr.js.map} +1 -1
  191. package/dist/{OutputDialog-Dft9Xm4R.cjs → OutputDialog-BwBPgVHK.cjs} +2 -2
  192. package/dist/{OutputDialog-Dft9Xm4R.cjs.map → OutputDialog-BwBPgVHK.cjs.map} +1 -1
  193. package/dist/{PackagesTab-DhMk-fi5.js → PackagesTab-CjcBp95A.js} +3 -3
  194. package/dist/{PackagesTab-DhMk-fi5.js.map → PackagesTab-CjcBp95A.js.map} +1 -1
  195. package/dist/{PackagesTab-BxP1kiSR.cjs → PackagesTab-DYoGxaWx.cjs} +2 -2
  196. package/dist/{PackagesTab-BxP1kiSR.cjs.map → PackagesTab-DYoGxaWx.cjs.map} +1 -1
  197. package/dist/{PluginsTab-DxxEqPCA.js → PluginsTab-Diu6vzUR.js} +3 -3
  198. package/dist/{PluginsTab-DxxEqPCA.js.map → PluginsTab-Diu6vzUR.js.map} +1 -1
  199. package/dist/{PluginsTab-BKJo5vK-.cjs → PluginsTab-UcluFu7J.cjs} +2 -2
  200. package/dist/{PluginsTab-BKJo5vK-.cjs.map → PluginsTab-UcluFu7J.cjs.map} +1 -1
  201. package/dist/{ProgressbarWidget-7rJeuX6H.js → ProgressbarWidget-Bre-0zcS.js} +2 -2
  202. package/dist/{ProgressbarWidget-7rJeuX6H.js.map → ProgressbarWidget-Bre-0zcS.js.map} +1 -1
  203. package/dist/{ProgressbarWidget-DLvbQ0g-.cjs → ProgressbarWidget-BwnZ2_h4.cjs} +2 -2
  204. package/dist/{ProgressbarWidget-DLvbQ0g-.cjs.map → ProgressbarWidget-BwnZ2_h4.cjs.map} +1 -1
  205. package/dist/{RadiobuttonWidget-C15SchQH.cjs → RadiobuttonWidget-BzO43-f0.cjs} +2 -2
  206. package/dist/{RadiobuttonWidget-C15SchQH.cjs.map → RadiobuttonWidget-BzO43-f0.cjs.map} +1 -1
  207. package/dist/{RadiobuttonWidget-DsEw3JiU.js → RadiobuttonWidget-CLbfhrkc.js} +2 -2
  208. package/dist/{RadiobuttonWidget-DsEw3JiU.js.map → RadiobuttonWidget-CLbfhrkc.js.map} +1 -1
  209. package/dist/{RadiogroupWidget-BZS_MkSP.cjs → RadiogroupWidget-CCHJJuvX.cjs} +2 -2
  210. package/dist/{RadiogroupWidget-BZS_MkSP.cjs.map → RadiogroupWidget-CCHJJuvX.cjs.map} +1 -1
  211. package/dist/{RadiogroupWidget-DhfbTvQ8.js → RadiogroupWidget-DvRc70_Q.js} +2 -2
  212. package/dist/{RadiogroupWidget-DhfbTvQ8.js.map → RadiogroupWidget-DvRc70_Q.js.map} +1 -1
  213. package/dist/{RangebarWidget-BEGvSL_K.js → RangebarWidget-BvzVWcfZ.js} +2 -2
  214. package/dist/{RangebarWidget-BEGvSL_K.js.map → RangebarWidget-BvzVWcfZ.js.map} +1 -1
  215. package/dist/{RangebarWidget-bBSBfvHk.cjs → RangebarWidget-DbmeAM6e.cjs} +2 -2
  216. package/dist/{RangebarWidget-bBSBfvHk.cjs.map → RangebarWidget-DbmeAM6e.cjs.map} +1 -1
  217. package/dist/{RedisTab-Bq8Frctp.js → RedisTab-BWYQfcqX.js} +2 -2
  218. package/dist/{RedisTab-Bq8Frctp.js.map → RedisTab-BWYQfcqX.js.map} +1 -1
  219. package/dist/{RedisTab-CWYntIvy.cjs → RedisTab-Dq_xGlhh.cjs} +2 -2
  220. package/dist/{RedisTab-CWYntIvy.cjs.map → RedisTab-Dq_xGlhh.cjs.map} +1 -1
  221. package/dist/{RollupWidget-BueYskqE.cjs → RollupWidget-BnhD1fw1.cjs} +2 -2
  222. package/dist/{RollupWidget-BueYskqE.cjs.map → RollupWidget-BnhD1fw1.cjs.map} +1 -1
  223. package/dist/{RollupWidget-BZhspgWd.js → RollupWidget-KT243Ed8.js} +2 -2
  224. package/dist/{RollupWidget-BZhspgWd.js.map → RollupWidget-KT243Ed8.js.map} +1 -1
  225. package/dist/{RoutersTab-Bg6dpAXr.js → RoutersTab-CLwJ6J7T.js} +3 -3
  226. package/dist/{RoutersTab-Bg6dpAXr.js.map → RoutersTab-CLwJ6J7T.js.map} +1 -1
  227. package/dist/{RoutersTab-DOseaOsv.cjs → RoutersTab-DS95AQxI.cjs} +2 -2
  228. package/dist/{RoutersTab-DOseaOsv.cjs.map → RoutersTab-DS95AQxI.cjs.map} +1 -1
  229. package/dist/{ScriptChooser-DBkFAc6E.js → ScriptChooser-CA2eMEE2.js} +2 -2
  230. package/dist/{ScriptChooser-DBkFAc6E.js.map → ScriptChooser-CA2eMEE2.js.map} +1 -1
  231. package/dist/{ScriptChooser-CHkObjcT.cjs → ScriptChooser-D2-VTc4T.cjs} +2 -2
  232. package/dist/{ScriptChooser-CHkObjcT.cjs.map → ScriptChooser-D2-VTc4T.cjs.map} +1 -1
  233. package/dist/{ScrollwindowWidget-qZ3nhhVU.js → ScrollwindowWidget-DcpdXyrP.js} +3 -3
  234. package/dist/{ScrollwindowWidget-qZ3nhhVU.js.map → ScrollwindowWidget-DcpdXyrP.js.map} +1 -1
  235. package/dist/{ScrollwindowWidget-CJmuGHai.cjs → ScrollwindowWidget-vnhzeIMy.cjs} +2 -2
  236. package/dist/{ScrollwindowWidget-CJmuGHai.cjs.map → ScrollwindowWidget-vnhzeIMy.cjs.map} +1 -1
  237. package/dist/{SecretsTab-vdm8oj9_.js → SecretsTab-CQNTFJAM.js} +2 -2
  238. package/dist/{SecretsTab-vdm8oj9_.js.map → SecretsTab-CQNTFJAM.js.map} +1 -1
  239. package/dist/{SecretsTab-B49h9PhL.cjs → SecretsTab-HP8E21SW.cjs} +2 -2
  240. package/dist/{SecretsTab-B49h9PhL.cjs.map → SecretsTab-HP8E21SW.cjs.map} +1 -1
  241. package/dist/{SettingsTab-C05e6-Xm.js → SettingsTab-BAOaLzuc.js} +3 -3
  242. package/dist/{SettingsTab-C05e6-Xm.js.map → SettingsTab-BAOaLzuc.js.map} +1 -1
  243. package/dist/{SettingsTab-fmHVuOps.cjs → SettingsTab-CMQxLfkn.cjs} +2 -2
  244. package/dist/{SettingsTab-fmHVuOps.cjs.map → SettingsTab-CMQxLfkn.cjs.map} +1 -1
  245. package/dist/{SignalWidget-Bh14Zrch.js → SignalWidget-CoTi0Uzy.js} +2 -2
  246. package/dist/{SignalWidget-Bh14Zrch.js.map → SignalWidget-CoTi0Uzy.js.map} +1 -1
  247. package/dist/{SignalWidget-J3LFoUd-.cjs → SignalWidget-DqxDT42W.cjs} +2 -2
  248. package/dist/{SignalWidget-J3LFoUd-.cjs.map → SignalWidget-DqxDT42W.cjs.map} +1 -1
  249. package/dist/{SimpleTextDialog-CSsm9IoB.cjs → SimpleTextDialog-BdV90ARp.cjs} +2 -2
  250. package/dist/{SimpleTextDialog-CSsm9IoB.cjs.map → SimpleTextDialog-BdV90ARp.cjs.map} +1 -1
  251. package/dist/{SimpleTextDialog-plHG7LGh.js → SimpleTextDialog-BqVdFj1n.js} +2 -2
  252. package/dist/{SimpleTextDialog-plHG7LGh.js.map → SimpleTextDialog-BqVdFj1n.js.map} +1 -1
  253. package/dist/SpacerWidget--x9MPrff.cjs +2 -0
  254. package/dist/{SpacerWidget-CzqLoBdY.cjs.map → SpacerWidget--x9MPrff.cjs.map} +1 -1
  255. package/dist/SpacerWidget-CTekSgNO.js +19 -0
  256. package/dist/{SpacerWidget-D_NE46jZ.js.map → SpacerWidget-CTekSgNO.js.map} +1 -1
  257. package/dist/{SparklineWidget-DDRhatn7.cjs → SparklineWidget-BHdwgOeC.cjs} +2 -2
  258. package/dist/{SparklineWidget-DDRhatn7.cjs.map → SparklineWidget-BHdwgOeC.cjs.map} +1 -1
  259. package/dist/{SparklineWidget-CJEEJdZ-.js → SparklineWidget-BxwPKrIr.js} +4 -4
  260. package/dist/{SparklineWidget-CJEEJdZ-.js.map → SparklineWidget-BxwPKrIr.js.map} +1 -1
  261. package/dist/{TabbookWidget-C-SU65IF.js → TabbookWidget-B6Nx3Kmt.js} +2 -2
  262. package/dist/{TabbookWidget-C-SU65IF.js.map → TabbookWidget-B6Nx3Kmt.js.map} +1 -1
  263. package/dist/{TabbookWidget-C8k2kKLX.cjs → TabbookWidget-DuszE8ho.cjs} +2 -2
  264. package/dist/{TabbookWidget-C8k2kKLX.cjs.map → TabbookWidget-DuszE8ho.cjs.map} +1 -1
  265. package/dist/{TargetsTab-pU_wu9d-.cjs → TargetsTab-B8appkxl.cjs} +2 -2
  266. package/dist/{TargetsTab-pU_wu9d-.cjs.map → TargetsTab-B8appkxl.cjs.map} +1 -1
  267. package/dist/{TargetsTab-DyfyM9sC.js → TargetsTab-u-6nY7FX.js} +3 -3
  268. package/dist/{TargetsTab-DyfyM9sC.js.map → TargetsTab-u-6nY7FX.js.map} +1 -1
  269. package/dist/{TextboxWidget-CRDu77NK.cjs → TextboxWidget-CBdukKN5.cjs} +2 -2
  270. package/dist/{TextboxWidget-CRDu77NK.cjs.map → TextboxWidget-CBdukKN5.cjs.map} +1 -1
  271. package/dist/{TextboxWidget-Dn1Ds-b0.js → TextboxWidget-DJgAfLFU.js} +4 -4
  272. package/dist/{TextboxWidget-Dn1Ds-b0.js.map → TextboxWidget-DJgAfLFU.js.map} +1 -1
  273. package/dist/{TextfieldWidget-C0C7NL53.js → TextfieldWidget-Bc2xGs8v.js} +2 -2
  274. package/dist/{TextfieldWidget-C0C7NL53.js.map → TextfieldWidget-Bc2xGs8v.js.map} +1 -1
  275. package/dist/{TextfieldWidget-DGdD6b_-.cjs → TextfieldWidget-u6w1_wqO.cjs} +2 -2
  276. package/dist/{TextfieldWidget-DGdD6b_-.cjs.map → TextfieldWidget-u6w1_wqO.cjs.map} +1 -1
  277. package/dist/{TimeWidget-BlZoS24B.cjs → TimeWidget-Bmzei1k_.cjs} +2 -2
  278. package/dist/{TimeWidget-BlZoS24B.cjs.map → TimeWidget-Bmzei1k_.cjs.map} +1 -1
  279. package/dist/{TimeWidget-AFOTVB4w.js → TimeWidget-DO6ZuMLO.js} +2 -2
  280. package/dist/{TimeWidget-AFOTVB4w.js.map → TimeWidget-DO6ZuMLO.js.map} +1 -1
  281. package/dist/{TitleWidget-DDEnHVPP.cjs → TitleWidget-B8f0Sa7B.cjs} +2 -2
  282. package/dist/{TitleWidget-DDEnHVPP.cjs.map → TitleWidget-B8f0Sa7B.cjs.map} +1 -1
  283. package/dist/{TitleWidget-CbS_wrQw.js → TitleWidget-CkZhMme1.js} +2 -2
  284. package/dist/{TitleWidget-CbS_wrQw.js.map → TitleWidget-CkZhMme1.js.map} +1 -1
  285. package/dist/{ToolsTab-BvpoO0wt.js → ToolsTab-BI6lImcw.js} +3 -3
  286. package/dist/{ToolsTab-BvpoO0wt.js.map → ToolsTab-BI6lImcw.js.map} +1 -1
  287. package/dist/{ToolsTab-DCRNrlhT.cjs → ToolsTab-WSIi50nR.cjs} +2 -2
  288. package/dist/{ToolsTab-DCRNrlhT.cjs.map → ToolsTab-WSIi50nR.cjs.map} +1 -1
  289. package/dist/{TopBar-vznpQjGN.cjs → TopBar-BwdXu4vD.cjs} +2 -2
  290. package/dist/{TopBar-vznpQjGN.cjs.map → TopBar-BwdXu4vD.cjs.map} +1 -1
  291. package/dist/{TopBar-AjYGyx8W.js → TopBar-h_jaZ23r.js} +2 -2
  292. package/dist/{TopBar-AjYGyx8W.js.map → TopBar-h_jaZ23r.js.map} +1 -1
  293. package/dist/{UpgradeToEnterpriseDialog-1fVtqbze.cjs → UpgradeToEnterpriseDialog-B2LIPuO6.cjs} +2 -2
  294. package/dist/{UpgradeToEnterpriseDialog-1fVtqbze.cjs.map → UpgradeToEnterpriseDialog-B2LIPuO6.cjs.map} +1 -1
  295. package/dist/{UpgradeToEnterpriseDialog-CMVEjihv.js → UpgradeToEnterpriseDialog-DE2DoA0l.js} +2 -2
  296. package/dist/{UpgradeToEnterpriseDialog-CMVEjihv.js.map → UpgradeToEnterpriseDialog-DE2DoA0l.js.map} +1 -1
  297. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CKn4Dnn-.cjs} +6 -6
  298. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-B98GsSQS.cjs.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CKn4Dnn-.cjs.map} +1 -1
  299. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-Vn0OLZcG.js} +14 -9
  300. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-BOiUmW4q.js.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-Vn0OLZcG.js.map} +1 -1
  301. package/dist/{VWidget-CMKh-tv6.cjs → VWidget-DKQBzANO.cjs} +2 -2
  302. package/dist/{VWidget-CMKh-tv6.cjs.map → VWidget-DKQBzANO.cjs.map} +1 -1
  303. package/dist/{VWidget-BlF_o-7Z.js → VWidget-DzhcRBQe.js} +2 -2
  304. package/dist/{VWidget-BlF_o-7Z.js.map → VWidget-DzhcRBQe.js.map} +1 -1
  305. package/dist/{ValueWidget-K7SCPEB6.cjs → ValueWidget-BpS7e3Ks.cjs} +2 -2
  306. package/dist/{ValueWidget-K7SCPEB6.cjs.map → ValueWidget-BpS7e3Ks.cjs.map} +1 -1
  307. package/dist/{ValueWidget-DFUfM5tw.js → ValueWidget-tieHz2H1.js} +4 -4
  308. package/dist/{ValueWidget-DFUfM5tw.js.map → ValueWidget-tieHz2H1.js.map} +1 -1
  309. package/dist/{ValuelimitsbarWidget-DcY2NV9X.cjs → ValuelimitsbarWidget-COsc2aMd.cjs} +2 -2
  310. package/dist/{ValuelimitsbarWidget-DcY2NV9X.cjs.map → ValuelimitsbarWidget-COsc2aMd.cjs.map} +1 -1
  311. package/dist/{ValuelimitsbarWidget-CALgABsT.js → ValuelimitsbarWidget-oFqxZu0t.js} +4 -4
  312. package/dist/{ValuelimitsbarWidget-CALgABsT.js.map → ValuelimitsbarWidget-oFqxZu0t.js.map} +1 -1
  313. package/dist/{ValuelimitscolumnWidget-DQKvlGap.cjs → ValuelimitscolumnWidget-DPmkVEuC.cjs} +2 -2
  314. package/dist/{ValuelimitscolumnWidget-DQKvlGap.cjs.map → ValuelimitscolumnWidget-DPmkVEuC.cjs.map} +1 -1
  315. package/dist/{ValuelimitscolumnWidget-Bs91VFLz.js → ValuelimitscolumnWidget-DYBv8POg.js} +4 -4
  316. package/dist/{ValuelimitscolumnWidget-Bs91VFLz.js.map → ValuelimitscolumnWidget-DYBv8POg.js.map} +1 -1
  317. package/dist/{ValuerangebarWidget-DnWuvusw.cjs → ValuerangebarWidget-D5zHCKXQ.cjs} +2 -2
  318. package/dist/{ValuerangebarWidget-DnWuvusw.cjs.map → ValuerangebarWidget-D5zHCKXQ.cjs.map} +1 -1
  319. package/dist/{ValuerangebarWidget-C7WHyR2h.js → ValuerangebarWidget-m3gFyG4v.js} +4 -4
  320. package/dist/{ValuerangebarWidget-C7WHyR2h.js.map → ValuerangebarWidget-m3gFyG4v.js.map} +1 -1
  321. package/dist/{VerticalWidget-COP5oVCK.js → VerticalWidget-CcdRZmQK.js} +2 -2
  322. package/dist/{VerticalWidget-COP5oVCK.js.map → VerticalWidget-CcdRZmQK.js.map} +1 -1
  323. package/dist/{VerticalWidget-eMN4dvxL.cjs → VerticalWidget-DHWIKJUB.cjs} +2 -2
  324. package/dist/{VerticalWidget-eMN4dvxL.cjs.map → VerticalWidget-DHWIKJUB.cjs.map} +1 -1
  325. package/dist/{VerticalboxWidget-UIBpyEz_.cjs → VerticalboxWidget-BHNt0RrX.cjs} +2 -2
  326. package/dist/{VerticalboxWidget-UIBpyEz_.cjs.map → VerticalboxWidget-BHNt0RrX.cjs.map} +1 -1
  327. package/dist/{VerticalboxWidget-CDPoOx4C.js → VerticalboxWidget-DfsCYhrX.js} +5 -5
  328. package/dist/{VerticalboxWidget-CDPoOx4C.js.map → VerticalboxWidget-DfsCYhrX.js.map} +1 -1
  329. package/dist/{Widget-cmJ76_g1.js → Widget-B5HKasz2.js} +2 -2
  330. package/dist/{Widget-cmJ76_g1.js.map → Widget-B5HKasz2.js.map} +1 -1
  331. package/dist/{Widget-Cg0pAxSF.cjs → Widget-CMzBJCGp.cjs} +2 -2
  332. package/dist/{Widget-Cg0pAxSF.cjs.map → Widget-CMzBJCGp.cjs.map} +1 -1
  333. package/dist/components.cjs +2 -2
  334. package/dist/components.cjs.map +1 -1
  335. package/dist/components.js +84 -76
  336. package/dist/components.js.map +1 -1
  337. package/dist/plugins.cjs +2 -2
  338. package/dist/plugins.cjs.map +1 -1
  339. package/dist/plugins.js +116 -110
  340. package/dist/plugins.js.map +1 -1
  341. package/dist/tools/admin.cjs +6 -11
  342. package/dist/tools/admin.cjs.map +1 -1
  343. package/dist/tools/admin.js +1041 -1178
  344. package/dist/tools/admin.js.map +1 -1
  345. package/dist/tools/base.cjs +1 -1
  346. package/dist/tools/base.js +2 -2
  347. package/dist/tools/calendar.cjs +1 -1
  348. package/dist/tools/calendar.js +1 -1
  349. package/dist/tools/scriptrunner.cjs +6 -6
  350. package/dist/tools/scriptrunner.cjs.map +1 -1
  351. package/dist/tools/scriptrunner.js +852 -831
  352. package/dist/tools/scriptrunner.js.map +1 -1
  353. package/dist/vue-common.css +1 -1
  354. package/dist/widgets.cjs +1 -1
  355. package/dist/widgets.js +63 -63
  356. package/package.json +2 -2
  357. package/dist/Layout-CFJMHNqy.cjs +0 -2
  358. package/dist/Openc3Screen-B4X70CVP.cjs +0 -5
  359. package/dist/Openc3Screen-B4X70CVP.cjs.map +0 -1
  360. package/dist/Openc3Screen-DFYYhHt7.js.map +0 -1
  361. package/dist/SpacerWidget-CzqLoBdY.cjs +0 -2
  362. package/dist/SpacerWidget-D_NE46jZ.js +0 -19
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../src/components/config/Config.js","../src/components/config/OpenConfigDialog.vue","../src/components/config/SaveConfigDialog.vue","../src/components/LogMessages.vue","../src/components/NotFound.vue","../src/components/TargetPacketItemChooser.vue"],"sourcesContent":["/*\n# Copyright 2023 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: {\n configKey: '',\n // Applications can set to avoid persisting default config\n // Useful when loading and setting existing config\n dontSaveDefaultConfig: false,\n },\n methods: {\n loadDefaultConfig: function () {\n if (localStorage[`${this.configKey}__default`]) {\n return JSON.parse(localStorage[`${this.configKey}__default`])\n } else {\n return {}\n }\n },\n saveDefaultConfig: function (config) {\n if (this.dontSaveDefaultConfig === true) {\n return\n }\n localStorage[`${this.configKey}__default`] = JSON.stringify(config)\n },\n openConfigBase: function (name, routed = false, callback = null) {\n new OpenC3Api()\n .load_config(this.configKey, name)\n .then((response) => {\n if (response) {\n this.$notify.normal({\n title: 'Loading configuration',\n body: name,\n })\n if (callback) callback(JSON.parse(response))\n if (!routed) {\n if (!this.$route.fullPath.includes(name)) {\n this.$router.push({\n query: {\n config: name,\n },\n })\n }\n }\n } else {\n this.$notify.caution({\n title: 'Unknown configuration',\n body: name,\n })\n }\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error opening configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n saveConfigBase: function (name, config) {\n new OpenC3Api()\n .save_config(this.configKey, name, JSON.stringify(config))\n .then(() => {\n this.$notify.normal({\n title: 'Saved configuration',\n body: name,\n })\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error saving configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n resetConfigBase: function () {\n localStorage.removeItem(`${this.configKey}__default`)\n\n const query = { ...this.$route.query }\n delete query.config\n this.$router.replace({ query })\n },\n },\n}\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=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n autofocus\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"open-config-cancel-btn\"\n @click=\"cancel\"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n if (!this.selectedItem) return\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\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=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (!this.configName) {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n watch: {\n selectedItem: function (val) {\n if (val) {\n this.configName = val.config\n }\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\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 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 class=\"d-flex align-center justify-content-space-between\">\n <div class=\"d-flex align-baseline\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"download-log\"\n @click=\"downloadLog\"\n />\n <span> Log Messages </span>\n <v-btn\n :icon=\"buttonIcon\"\n variant=\"text\"\n data-test=\"pause\"\n @click=\"pause\"\n />\n </div>\n <v-spacer />\n <v-select\n v-model=\"logLevel\"\n label=\"Filter by log level\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n :items=\"logLevels\"\n class=\"mr-2\"\n style=\"max-width: 150px\"\n data-test=\"log-messages-level\"\n />\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n style=\"max-width: 300px\"\n class=\"search\"\n data-test=\"search-log-messages\"\n />\n <v-btn\n icon=\"mdi-delete-sweep\"\n variant=\"text\"\n class=\"ml-2\"\n data-test=\"clear-log\"\n @click=\"clearLog\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"shownData\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n sticky\n hover\n data-test=\"log-messages\"\n >\n <template #item.timestamp=\"{ item }\">\n <time :title=\"item.timestamp\" :datetime=\"item.timestamp\">\n {{ item.timestamp }}\n </time>\n </template>\n <template #item.level=\"{ item }\">\n <span :style=\"'display: inline-flex; color:' + getColor(item.level)\">\n <rux-status class=\"mr-1\" :status=\"getStatus(item.level)\"></rux-status>\n {{ item.level }}</span\n >\n </template>\n <template #item.message=\"{ item }\">\n <div style=\"white-space: pre-wrap\">{{ item.message }}</div>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { format } from 'date-fns'\nimport { Cable } from '@openc3/js-common/services'\nimport { AstroStatusColors, UnknownToAstroStatus } from '@/icons'\nimport { TimeFilters } from '@/util'\n\nexport default {\n mixins: [TimeFilters],\n props: {\n historyCount: {\n type: Number,\n default: 200,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n AstroStatusColors,\n data: [],\n shownData: [],\n logLevels: ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],\n logLevel: 'INFO',\n search: '',\n headers: [\n { title: 'Time', value: 'timestamp', nowrap: true },\n { title: 'Level', value: 'level' },\n { title: 'Source', value: 'microservice_name' },\n { title: 'Message', value: 'message' },\n ],\n cable: new Cable(),\n subscription: null,\n paused: false,\n }\n },\n computed: {\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n },\n watch: {\n logLevel: function (newVal, oldVal) {\n this.createSubscription()\n },\n },\n created() {\n this.createSubscription()\n },\n unmounted() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n pause: function () {\n this.paused = !this.paused\n },\n createSubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.data = []\n this.shownData = this.data\n }\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (messages) => {\n this.cable.recordPing()\n if (messages.length > this.historyCount) {\n messages.splice(0, messages.length - this.historyCount)\n }\n // Filter messages before they're added to the table\n // This prevents a bunch of invisible 'INFO' messages from pushing\n // off the 'WARN' or 'ERROR' messages if we filter inside the data-table\n messages = messages.filter((message) => {\n switch (this.logLevel) {\n case 'DEBUG':\n return true\n case 'INFO':\n if (message.level !== 'DEBUG') {\n return true\n }\n break\n case 'WARN':\n if (message.level !== 'DEBUG' && message.level !== 'INFO') {\n return true\n }\n break\n case 'ERROR':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN'\n ) {\n return true\n }\n break\n case 'FATAL':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN' &&\n message.level !== 'ERROR'\n ) {\n return true\n }\n break\n }\n return false\n })\n messages.map((message) => {\n message.timestamp = this.formatTimestamp(\n message['@timestamp'],\n this.timeZone,\n )\n if (\n message.message.raw &&\n message.message.json_class === 'String'\n ) {\n // This is binary data, display in hex.\n let result = '0x'\n for (let i = 0; i < message.message.raw.length; i++) {\n let nibble = message.message.raw[i]\n .toString(16)\n .toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n result += nibble\n }\n message.message = result\n } else {\n message.message = message.message.replaceAll('\\\\n', '\\n')\n }\n })\n this.data = messages.reverse().concat(this.data)\n if (this.data.length > this.historyCount) {\n this.data.length = this.historyCount\n }\n if (!this.paused) {\n this.shownData = this.data\n }\n },\n },\n {\n // Channel parameter is history_count with underscore\n history_count: this.historyCount,\n types: ['log', 'notification', 'alert'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n getColor(level) {\n return AstroStatusColors[UnknownToAstroStatus[level]]\n },\n getStatus(level) {\n return UnknownToAstroStatus[level]\n },\n downloadLog() {\n const output = this.shownData\n .map(\n (entry) =>\n // Other fields are available like container_name, msg_id ... probably not useful\n `${entry.timestamp} | ${entry.level} | ${entry.microservice_name} | ${entry.message}`,\n )\n .join('\\n')\n const blob = new Blob([output], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute(\n 'download',\n format(Date.now(), 'yyyy_MM_dd_HH_mm_ss') + '_message_log.txt',\n )\n link.click()\n },\n clearLog: function () {\n this.$dialog\n .confirm('Are you sure you want to clear the log?', {\n okText: 'Clear',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n this.data = []\n this.shownData = []\n })\n .catch(function (err) {\n // Canceling the dialog forces catch and sets err to true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n /* take up any remaining vertical space\n (e.g. whatever is left after the tabs in cmdtlmserver)\n */\n flex-grow: 1;\n\n /* flex so the table can grow without making the card itself scroll */\n display: flex;\n flex-direction: column;\n}\n.v-data-table {\n height: 25vh; /* give it at least a bit of height to start with */\n flex-grow: 1; /* and then grow to fill all the space it can */\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\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# 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 v-if=\"show\">\n <v-card-title> 404 Not Found </v-card-title>\n <v-card-text class=\"d-flex align-center mt-3\">\n The requested URL\n <code class=\"mx-1\"> {{ $route.fullPath }} </code>\n was not routable.\n <span class=\"text-h3 mx-1\"> 🦄 </span>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { getMountedApps } from 'single-spa'\n\nconst SINGLE_SPA_APP_CHANGE_EVENT = 'single-spa:app-change'\n\n// This component is actually always loaded for every route other than /login\n// because of the catch-all path in tool-base's router, so we need logic to\n// hide it when a tool is loaded.\nexport default {\n data() {\n return {\n show: false,\n }\n },\n created() {\n window.addEventListener(SINGLE_SPA_APP_CHANGE_EVENT, this.handleAppChange)\n },\n mounted() {\n // Give single-spa some time to get an app mounted to avoid flashing this\n setTimeout(() => {\n this.show = getMountedApps().length === 0\n }, 150)\n },\n unmounted() {\n window.removeEventListener(\n SINGLE_SPA_APP_CHANGE_EVENT,\n this.handleAppChange,\n )\n },\n methods: {\n handleAppChange: function (event) {\n this.show = !event.detail.appsByNewStatus.MOUNTED\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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n label=\"Select Target\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n @update:model-value=\"targetNameChanged\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n v-model=\"selectedTargetName\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n label=\"Select Packet\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n @update:model-value=\"packetNameChanged\"\n :disabled=\"packetsDisabled || autocompleteDisabled\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n v-model=\"selectedPacketName\"\n >\n <template v-if=\"includeLatestPacketInDropdown\" v-slot:prepend-item>\n <v-list-item title=\"LATEST\" @click=\"packetNameChanged('LATEST')\" />\n <v-divider />\n </template>\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n label=\"Select Item\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n @update:model-value=\"itemNameChanged($event)\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n v-model=\"selectedItemName\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray()\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n label=\"Index\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n @update:model-value=\"indexChanged($event)\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes()\"\n item-title=\"label\"\n item-value=\"value\"\n v-model=\"selectedArrayIndex\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row no-gutters v-if=\"selectTypes\" class=\"pt-6\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n label=\"Value Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n v-model=\"selectedValueType\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n label=\"Reduced\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n v-model=\"selectedReduced\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n label=\"Reduced Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n v-model=\"selectedReducedType\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pa-3\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': hazardous }\">\n Description: {{ description }}\n <template v-if=\"hazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray() &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n this.selectedPacketName = this.packetNames[0].value\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.itemIsArray()\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n this.internalDisabled = false\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1) {\n this.selectedArrayIndex = null\n return false\n }\n if (isNaN(this.itemNames[i].array)) {\n this.selectedArrayIndex = null\n return false\n } else {\n if (this.selectedArrayIndex === null) {\n this.selectedArrayIndex = 0\n }\n return true\n }\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.itemIsArray()\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 300px;\n}\n</style>\n"],"names":["Config","config","name","routed","callback","OpenC3Api","response","error","query","_sfc_main","value","configId","row","item","dialog","_a","_hoisted_1","_hoisted_2","_createBlock","_component_v_dialog","$options","_cache","$event","_withKeys","_withCtx","_createVNode","_component_v_card","_createElementVNode","_withModifiers","args","_component_v_toolbar","_component_v_spacer","_component_v_card_text","_component_v_row","_component_v_text_field","$data","_component_v_data_table","_component_v_btn","_toDisplayString","_component_v_card_actions","_createTextVNode","val","TimeFilters","AstroStatusColors","Cable","newVal","oldVal","messages","message","result","i","nibble","subscription","level","UnknownToAstroStatus","output","entry","blob","link","format","err","_hoisted_3","_component_v_card_title","_component_v_select","_normalizeStyle","_component_rux_status","SINGLE_SPA_APP_CHANGE_EVENT","getMountedApps","event","_openBlock","_ctx","_createCommentVNode","propValue","_b","_c","target","cmd","names","packet","items","label","a","b","indexes","packetName","_createElementBlock","$props","_component_v_col","_component_v_autocomplete","_createSlots","_component_v_list_item","_component_v_divider","_component_v_combobox","_normalizeClass","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sources":["../src/components/config/Config.js","../src/components/config/OpenConfigDialog.vue","../src/components/config/SaveConfigDialog.vue","../src/components/LogMessages.vue","../src/components/NotFound.vue","../src/components/TargetPacketItemChooser.vue"],"sourcesContent":["/*\n# Copyright 2023 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n data: {\n configKey: '',\n // Applications can set to avoid persisting default config\n // Useful when loading and setting existing config\n dontSaveDefaultConfig: false,\n },\n methods: {\n loadDefaultConfig: function () {\n if (localStorage[`${this.configKey}__default`]) {\n return JSON.parse(localStorage[`${this.configKey}__default`])\n } else {\n return {}\n }\n },\n saveDefaultConfig: function (config) {\n if (this.dontSaveDefaultConfig === true) {\n return\n }\n localStorage[`${this.configKey}__default`] = JSON.stringify(config)\n },\n openConfigBase: function (name, routed = false, callback = null) {\n new OpenC3Api()\n .load_config(this.configKey, name)\n .then((response) => {\n if (response) {\n this.$notify.normal({\n title: 'Loading configuration',\n body: name,\n })\n if (callback) callback(JSON.parse(response))\n if (!routed) {\n if (!this.$route.fullPath.includes(name)) {\n this.$router.push({\n query: {\n config: name,\n },\n })\n }\n }\n } else {\n this.$notify.caution({\n title: 'Unknown configuration',\n body: name,\n })\n }\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error opening configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n saveConfigBase: function (name, config) {\n new OpenC3Api()\n .save_config(this.configKey, name, JSON.stringify(config))\n .then(() => {\n this.$notify.normal({\n title: 'Saved configuration',\n body: name,\n })\n })\n .catch((error) => {\n if (error) {\n this.$notify.serious({\n title: `Error saving configuration: ${name}`,\n body: error,\n })\n }\n })\n },\n resetConfigBase: function () {\n localStorage.removeItem(`${this.configKey}__default`)\n\n const query = { ...this.$route.query }\n delete query.config\n this.$router.replace({ query })\n },\n },\n}\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=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Open Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n autofocus\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"open-config-cancel-btn\"\n @click=\"cancel\"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"open-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (this.selectedItem === '' || this.selectedItem === null) {\n return 'Must select a config'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n if (!this.selectedItem) return\n this.$emit('success', this.selectedItem.config)\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\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=\"show\" width=\"600\" @keydown.esc=\"cancel\">\n <v-card>\n <form @submit.prevent=\"success\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span>Save Configuration</span>\n <v-spacer />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"mt-4 pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"search\"\n label=\"search\"\n type=\"text\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n clear-icon=\"mdi-close-circle-outline\"\n single-line\n hide-details\n data-test=\"search\"\n />\n </v-row>\n <v-data-table\n v-model=\"selectedRows\"\n show-select\n select-strategy=\"single\"\n item-value=\"configId\"\n :search=\"search\"\n :headers=\"headers\"\n :items=\"configs\"\n :items-per-page=\"5\"\n :items-per-page-options=\"[5]\"\n @click:row=\"($event, row) => selectRow(row)\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n class=\"mt-1\"\n icon=\"mdi-delete\"\n variant=\"text\"\n data-test=\"item-delete\"\n @click=\"deleteConfig(item)\"\n />\n </template>\n </v-data-table>\n <v-row dense>\n <v-text-field\n v-model=\"configName\"\n hide-details\n autofocus\n :disabled=\"!!selectedItem\"\n label=\"Configuration Name\"\n data-test=\"name-input-save-config-dialog\"\n />\n </v-row>\n <v-row dense>\n <span v-show=\"error\" class=\"ma-2 text-red\" v-text=\"error\" />\n </v-row>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"cancel\"> Cancel </v-btn>\n <v-btn\n variant=\"flat\"\n type=\"submit\"\n data-test=\"save-config-submit-btn\"\n :disabled=\"!!error\"\n @click.prevent=\"success\"\n >\n Ok\n </v-btn>\n </v-card-actions>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n configKey: String,\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n configName: '',\n configs: [],\n headers: [\n {\n title: 'Configuration',\n value: 'config',\n },\n {\n title: 'Actions',\n value: 'actions',\n align: 'end',\n sortable: false,\n },\n ],\n search: null,\n selectedRows: [],\n }\n },\n computed: {\n selectedItem: function () {\n if (this.selectedRows.length) {\n return this.configs.find(\n (config) => config.configId === this.selectedRows[0],\n )\n }\n return null\n },\n error: function () {\n if (!this.configName) {\n return 'Config must have a name'\n }\n return null\n },\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n },\n watch: {\n selectedItem: function (val) {\n if (val) {\n this.configName = val.config\n }\n },\n },\n mounted() {\n let configId = -1\n new OpenC3Api()\n .list_configs(this.configKey)\n .then((response) => {\n this.configs = response.map((config) => {\n configId += 1\n return { configId, config }\n })\n })\n .catch((error) => {\n this.$emit('warning', `Failed to connect to OpenC3. ${error}`)\n })\n },\n methods: {\n selectRow: function (row) {\n this.selectedRows = [row.item.configId]\n },\n success: function () {\n this.$emit('success', this.configName)\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n cancel: function () {\n this.show = false\n this.search = null\n this.selectedRows = []\n this.configName = ''\n },\n deleteConfig: function (item) {\n this.$dialog\n .confirm(`Are you sure you want to delete: ${item.config}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n if (this.selectedItem?.config === item.config) {\n this.selectedRows = []\n this.configName = ''\n }\n this.configs.splice(this.configs.indexOf(item), 1)\n new OpenC3Api().delete_config(this.configKey, item.config)\n })\n .catch((error) => {\n if (error !== true) {\n this.$emit(\n 'warning',\n `Failed to delete config ${item.config} Error: ${error}`,\n )\n }\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 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 class=\"d-flex align-center justify-content-space-between\">\n <div class=\"d-flex align-baseline\">\n <v-btn\n icon=\"mdi-download\"\n variant=\"text\"\n size=\"small\"\n class=\"mr-2\"\n data-test=\"download-log\"\n @click=\"downloadLog\"\n />\n <span> Log Messages </span>\n <v-btn\n :icon=\"buttonIcon\"\n variant=\"text\"\n data-test=\"pause\"\n @click=\"pause\"\n />\n </div>\n <v-spacer />\n <v-select\n v-model=\"logLevel\"\n label=\"Filter by log level\"\n hide-details\n variant=\"outlined\"\n density=\"compact\"\n :items=\"logLevels\"\n class=\"mr-2\"\n style=\"max-width: 150px\"\n data-test=\"log-messages-level\"\n />\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n variant=\"outlined\"\n density=\"compact\"\n single-line\n hide-details\n style=\"max-width: 300px\"\n class=\"search\"\n data-test=\"search-log-messages\"\n />\n <v-btn\n icon=\"mdi-delete-sweep\"\n variant=\"text\"\n class=\"ml-2\"\n data-test=\"clear-log\"\n @click=\"clearLog\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"shownData\"\n :search=\"search\"\n :items-per-page=\"-1\"\n hide-default-footer\n multi-sort\n density=\"compact\"\n sticky\n hover\n data-test=\"log-messages\"\n >\n <template #item.timestamp=\"{ item }\">\n <time :title=\"item.timestamp\" :datetime=\"item.timestamp\">\n {{ item.timestamp }}\n </time>\n </template>\n <template #item.level=\"{ item }\">\n <span :style=\"'display: inline-flex; color:' + getColor(item.level)\">\n <rux-status class=\"mr-1\" :status=\"getStatus(item.level)\"></rux-status>\n {{ item.level }}</span\n >\n </template>\n <template #item.message=\"{ item }\">\n <div style=\"white-space: pre-wrap\">{{ item.message }}</div>\n </template>\n </v-data-table>\n </v-card>\n</template>\n\n<script>\nimport { format } from 'date-fns'\nimport { Cable } from '@openc3/js-common/services'\nimport { AstroStatusColors, UnknownToAstroStatus } from '@/icons'\nimport { TimeFilters } from '@/util'\n\nexport default {\n mixins: [TimeFilters],\n props: {\n historyCount: {\n type: Number,\n default: 200,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n data() {\n return {\n AstroStatusColors,\n data: [],\n shownData: [],\n logLevels: ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'],\n logLevel: 'INFO',\n search: '',\n headers: [\n { title: 'Time', value: 'timestamp', nowrap: true },\n { title: 'Level', value: 'level' },\n { title: 'Source', value: 'microservice_name' },\n { title: 'Message', value: 'message' },\n ],\n cable: new Cable(),\n subscription: null,\n paused: false,\n }\n },\n computed: {\n buttonIcon: function () {\n if (this.paused) {\n return 'mdi-play'\n } else {\n return 'mdi-pause'\n }\n },\n },\n watch: {\n logLevel: function (newVal, oldVal) {\n this.createSubscription()\n },\n },\n created() {\n this.createSubscription()\n },\n unmounted() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n pause: function () {\n this.paused = !this.paused\n },\n createSubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.data = []\n this.shownData = this.data\n }\n this.cable\n .createSubscription(\n 'MessagesChannel',\n window.openc3Scope,\n {\n received: (messages) => {\n this.cable.recordPing()\n if (messages.length > this.historyCount) {\n messages.splice(0, messages.length - this.historyCount)\n }\n // Filter messages before they're added to the table\n // This prevents a bunch of invisible 'INFO' messages from pushing\n // off the 'WARN' or 'ERROR' messages if we filter inside the data-table\n messages = messages.filter((message) => {\n switch (this.logLevel) {\n case 'DEBUG':\n return true\n case 'INFO':\n if (message.level !== 'DEBUG') {\n return true\n }\n break\n case 'WARN':\n if (message.level !== 'DEBUG' && message.level !== 'INFO') {\n return true\n }\n break\n case 'ERROR':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN'\n ) {\n return true\n }\n break\n case 'FATAL':\n if (\n message.level !== 'DEBUG' &&\n message.level !== 'INFO' &&\n message.level !== 'WARN' &&\n message.level !== 'ERROR'\n ) {\n return true\n }\n break\n }\n return false\n })\n messages.map((message) => {\n message.timestamp = this.formatTimestamp(\n message['@timestamp'],\n this.timeZone,\n )\n if (\n message.message.raw &&\n message.message.json_class === 'String'\n ) {\n // This is binary data, display in hex.\n let result = '0x'\n for (let i = 0; i < message.message.raw.length; i++) {\n let nibble = message.message.raw[i]\n .toString(16)\n .toUpperCase()\n if (nibble.length < 2) {\n nibble = '0' + nibble\n }\n result += nibble\n }\n message.message = result\n } else {\n message.message = message.message.replaceAll('\\\\n', '\\n')\n }\n })\n this.data = messages.reverse().concat(this.data)\n if (this.data.length > this.historyCount) {\n this.data.length = this.historyCount\n }\n if (!this.paused) {\n this.shownData = this.data\n }\n },\n },\n {\n // Channel parameter is history_count with underscore\n history_count: this.historyCount,\n types: ['log', 'notification', 'alert'],\n },\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n getColor(level) {\n return AstroStatusColors[UnknownToAstroStatus[level]]\n },\n getStatus(level) {\n return UnknownToAstroStatus[level]\n },\n downloadLog() {\n const output = this.shownData\n .map(\n (entry) =>\n // Other fields are available like container_name, msg_id ... probably not useful\n `${entry.timestamp} | ${entry.level} | ${entry.microservice_name} | ${entry.message}`,\n )\n .join('\\n')\n const blob = new Blob([output], {\n type: 'text/plain',\n })\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = URL.createObjectURL(blob)\n link.setAttribute(\n 'download',\n format(Date.now(), 'yyyy_MM_dd_HH_mm_ss') + '_message_log.txt',\n )\n link.click()\n },\n clearLog: function () {\n this.$dialog\n .confirm('Are you sure you want to clear the log?', {\n okText: 'Clear',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n this.data = []\n this.shownData = []\n })\n .catch(function (err) {\n // Canceling the dialog forces catch and sets err to true\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-card {\n /* take up any remaining vertical space\n (e.g. whatever is left after the tabs in cmdtlmserver)\n */\n flex-grow: 1;\n\n /* flex so the table can grow without making the card itself scroll */\n display: flex;\n flex-direction: column;\n}\n.v-data-table {\n height: 25vh; /* give it at least a bit of height to start with */\n flex-grow: 1; /* and then grow to fill all the space it can */\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\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# 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 v-if=\"show\">\n <v-card-title> 404 Not Found </v-card-title>\n <v-card-text class=\"d-flex align-center mt-3\">\n The requested URL\n <code class=\"mx-1\"> {{ $route.fullPath }} </code>\n was not routable.\n <span class=\"text-h3 mx-1\"> 🦄 </span>\n </v-card-text>\n </v-card>\n</template>\n\n<script>\nimport { getMountedApps } from 'single-spa'\n\nconst SINGLE_SPA_APP_CHANGE_EVENT = 'single-spa:app-change'\n\n// This component is actually always loaded for every route other than /login\n// because of the catch-all path in tool-base's router, so we need logic to\n// hide it when a tool is loaded.\nexport default {\n data() {\n return {\n show: false,\n }\n },\n created() {\n window.addEventListener(SINGLE_SPA_APP_CHANGE_EVENT, this.handleAppChange)\n },\n mounted() {\n // Give single-spa some time to get an app mounted to avoid flashing this\n setTimeout(() => {\n this.show = getMountedApps().length === 0\n }, 150)\n },\n unmounted() {\n window.removeEventListener(\n SINGLE_SPA_APP_CHANGE_EVENT,\n this.handleAppChange,\n )\n },\n methods: {\n handleAppChange: function (event) {\n this.show = !event.detail.appsByNewStatus.MOUNTED\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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n >\n <template v-if=\"includeLatestPacketInDropdown\" #prepend-item>\n <v-list-item title=\"LATEST\" @click=\"packetNameChanged('LATEST')\" />\n <v-divider />\n </template>\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"itemNameChanged($event)\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"indexChanged($event)\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row v-if=\"selectTypes\" class=\"pt-6\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pa-3\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': hazardous }\">\n Description: {{ description }}\n <template v-if=\"hazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n allowAllArrayIndex: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll || this.allowAllArrayIndex) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1 || isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n itemIsArray: function (val) {\n if (val) {\n this.selectedArrayIndex ||= 0\n } else {\n this.selectedArrayIndex = null\n }\n },\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n this.selectedPacketName = this.packetNames[0].value\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n this.internalDisabled = false\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 300px;\n}\n</style>\n"],"names":["Config","config","name","routed","callback","OpenC3Api","response","error","query","_sfc_main","value","configId","row","item","dialog","_a","_hoisted_1","_hoisted_2","_createBlock","_component_v_dialog","$options","_cache","$event","_withKeys","_withCtx","_createVNode","_component_v_card","_createElementVNode","_withModifiers","args","_component_v_toolbar","_component_v_spacer","_component_v_card_text","_component_v_row","_component_v_text_field","$data","_component_v_data_table","_component_v_btn","_toDisplayString","_component_v_card_actions","_createTextVNode","val","TimeFilters","AstroStatusColors","Cable","newVal","oldVal","messages","message","result","i","nibble","subscription","level","UnknownToAstroStatus","output","entry","blob","link","format","err","_hoisted_3","_component_v_card_title","_component_v_select","_normalizeStyle","_component_rux_status","SINGLE_SPA_APP_CHANGE_EVENT","getMountedApps","event","_openBlock","_ctx","_createCommentVNode","propValue","_b","_c","indexes","target","cmd","names","packet","items","label","a","b","packetName","_createElementBlock","$props","_component_v_col","_component_v_autocomplete","_createSlots","_component_v_list_item","_component_v_divider","_component_v_combobox","_normalizeClass","_Fragment"],"mappings":"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"}
package/dist/plugins.cjs CHANGED
@@ -1,9 +1,9 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),V=require("./CustomIcon-Bop2mEnu.cjs"),B=require("vuex"),I=require("vuetify"),C=require("./icons.cjs"),b={dark:!0,colors:{primary:"#005A8F",secondary:"#4DACFF",tertiary:"#BBC1C9","openc3-green":"#56f000","openc3-yellow":"#fce83a","openc3-red":"#ff3838","openc3-blue":"#2dccff","openc3-purple":"#c800c8","openc3-black":"#ffffff","openc3-white":"#ffffff"}},P={data:function(){return{show:!1,params:{title:"Title",text:"The text that is displayed",okText:"Ok",okClass:"primary",validateText:"CONFIRM",cancelText:"Cancel",html:!1},resolve:null,reject:null,validationText:null,rules:{required:e=>!!e||"Required.",match:e=>e===this.params.validateText||"Value mismatch."}}},computed:{dataTestOk:function(){return`confirm-dialog-${this.params.okText.toLowerCase()}`},dataTestCancel:function(){return`confirm-dialog-${this.params.cancelText.toLowerCase()}`}},methods:{dialog:function(e,o,n){this.params=e,this.show=!0,this.resolve=o,this.reject=n},ok:function(){(!this.params.validateText||this.params.validateText===this.validationText)&&(this.show=!1,this.resolve(!0),this.refresh())},cancel:function(){this.show=!1,this.reject(!0),this.refresh()},refresh:function(){this.validationText=""}}},E=["innerHTML"],j={key:2},F={key:3,class:"validate mt-4"};function H(e,o,n,a,s,i){const r=t.resolveComponent("v-spacer"),c=t.resolveComponent("v-toolbar"),l=t.resolveComponent("v-icon"),u=t.resolveComponent("v-text-field"),d=t.resolveComponent("v-card-text"),m=t.resolveComponent("v-btn"),h=t.resolveComponent("v-card-actions"),y=t.resolveComponent("v-card"),v=t.resolveComponent("v-dialog"),g=t.resolveComponent("v-app");return t.openBlock(),t.createBlock(g,null,{default:t.withCtx(()=>[t.createVNode(v,{modelValue:e.show,"onUpdate:modelValue":o[1]||(o[1]=f=>e.show=f),width:"600"},{default:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[t.createVNode(c,{height:"24"},{default:t.withCtx(()=>[t.createVNode(r),t.createElementVNode("span",null,t.toDisplayString(e.params.title),1),t.createVNode(r)]),_:1}),t.createVNode(d,{class:"mt-4 pa-3"},{default:t.withCtx(()=>[e.params.validateText?(t.openBlock(),t.createBlock(l,{key:0,class:"mr-2"},{default:t.withCtx(()=>o[2]||(o[2]=[t.createTextVNode(" mdi-alert ")])),_:1})):t.createCommentVNode("",!0),e.params.html?(t.openBlock(),t.createElementBlock("span",{key:1,innerHTML:e.params.text},null,8,E)):(t.openBlock(),t.createElementBlock("span",j,t.toDisplayString(e.params.text),1)),e.params.validateText?(t.openBlock(),t.createElementBlock("div",F,[t.createTextVNode(" Enter "+t.toDisplayString(e.params.validateText)+" to confirm! ",1),t.createVNode(u,{modelValue:e.validationText,"onUpdate:modelValue":o[0]||(o[0]=f=>e.validationText=f),variant:"solo",density:"compact","single-line":"",rules:[e.rules.required,e.rules.match],"data-test":"confirm-dialog-validate"},null,8,["modelValue","rules"])])):t.createCommentVNode("",!0)]),_:1}),t.createVNode(h,{class:"px-2"},{default:t.withCtx(()=>[t.createVNode(r),e.params.cancelText?(t.openBlock(),t.createBlock(m,{key:0,variant:"outlined","data-test":i.dataTestCancel,onClick:i.cancel},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.params.cancelText),1)]),_:1},8,["data-test","onClick"])):t.createCommentVNode("",!0),t.createVNode(m,{variant:"flat",color:e.params.okClass,"data-test":i.dataTestOk,onClick:i.ok},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.params.okText),1)]),_:1},8,["color","data-test","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const q=V._export_sfc(P,[["render",H],["__scopeId","data-v-de532a0f"]]);class R{constructor(){this.mounted=!1,this.$root=null}mount(){if(this.mounted)return;const o=window.Vue.createApp(q);o.use(x);const n=document.createElement("div");document.querySelector("#openc3-app-toolbar > div").appendChild(n),this.$root=o.mount(n),this.mounted=!0}open({title:o,text:n,okText:a,okClass:s,validateText:i,cancelText:r,html:c}){return this.mount(),new Promise((l,u)=>{this.$root.dialog({title:o,text:n,okText:a,okClass:s,validateText:i,cancelText:r,html:c},l,u)})}confirm(o,{okText:n="Ok",cancelText:a="Cancel",okClass:s="primary"}){return this.open({title:"Confirm",text:o,okText:n,okClass:s,validateText:null,cancelText:a,html:!1})}alert(o,{okText:n="Ok",html:a=!1,okClass:s="primary"}){return this.open({title:"Alert",text:o,okText:n,okClass:s,validateText:null,cancelText:null,html:a})}validate(o,{okText:n="Ok",validateText:a="CONFIRM",cancelText:s="Cancel",okClass:i="primary"}){return this.open({title:"Confirm",text:o,okText:n,okClass:i,validateText:a,cancelText:s,html:!1})}}const W={install(e,o){const n=new R;e.provide("dialog",n),e.config.globalProperties.hasOwnProperty("$dialog")||(e.config.globalProperties.$dialog=n)}},L={data:function(){return{showToast:!1,expanded:!1,toastNotification:{title:"Title here",body:"This is the notification body",message:"Overall message here"},timeout:null,noToastPaths:["/login"]}},computed:{toastNotificationIcon:function(){switch(this.toastNotification.type){case"notification":return"mdi-bell";case"alert":default:return"mdi-alert-box"}},toastStyle:function(){return`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),V=require("./CustomIcon-Bop2mEnu.cjs"),B=require("vuex"),I=require("vuetify"),C=require("./icons.cjs"),b={dark:!0,colors:{primary:"#005A8F",secondary:"#4DACFF",tertiary:"#BBC1C9","openc3-green":"#56f000","openc3-yellow":"#fce83a","openc3-red":"#ff3838","openc3-blue":"#2dccff","openc3-purple":"#c800c8","openc3-black":"#ffffff","openc3-white":"#ffffff"}},E={data:function(){return{show:!1,params:{title:"Title",text:"The text that is displayed",okText:"Ok",okClass:"primary",validateText:"CONFIRM",cancelText:"Cancel",html:!1},resolve:null,reject:null,validationText:null,rules:{required:e=>!!e||"Required.",match:e=>e===this.params.validateText||"Value mismatch."}}},computed:{dataTestOk:function(){return`confirm-dialog-${this.params.okText.toLowerCase()}`},dataTestCancel:function(){return`confirm-dialog-${this.params.cancelText.toLowerCase()}`}},methods:{dialog:function(e,o,n){this.params=e,this.show=!0,this.resolve=o,this.reject=n},ok:function(){(!this.params.validateText||this.params.validateText===this.validationText)&&(this.show=!1,this.resolve(!0),this.refresh())},cancel:function(){this.show=!1,this.reject(!0),this.refresh()},refresh:function(){this.validationText=""}}},P=["innerHTML"],F={key:2},j={key:3,class:"validate mt-4"};function H(e,o,n,a,s,i){const r=t.resolveComponent("v-spacer"),c=t.resolveComponent("v-toolbar"),l=t.resolveComponent("v-icon"),u=t.resolveComponent("v-text-field"),d=t.resolveComponent("v-card-text"),m=t.resolveComponent("v-btn"),h=t.resolveComponent("v-card-actions"),y=t.resolveComponent("v-card"),g=t.resolveComponent("v-dialog"),v=t.resolveComponent("v-app");return t.openBlock(),t.createBlock(v,null,{default:t.withCtx(()=>[t.createVNode(g,{modelValue:e.show,"onUpdate:modelValue":o[1]||(o[1]=f=>e.show=f),width:"600"},{default:t.withCtx(()=>[t.createVNode(y,null,{default:t.withCtx(()=>[t.createVNode(c,{height:"24"},{default:t.withCtx(()=>[t.createVNode(r),t.createElementVNode("span",null,t.toDisplayString(e.params.title),1),t.createVNode(r)]),_:1}),t.createVNode(d,{class:"mt-4 pa-3"},{default:t.withCtx(()=>[e.params.validateText?(t.openBlock(),t.createBlock(l,{key:0,class:"mr-2"},{default:t.withCtx(()=>o[2]||(o[2]=[t.createTextVNode(" mdi-alert ")])),_:1})):t.createCommentVNode("",!0),e.params.html?(t.openBlock(),t.createElementBlock("span",{key:1,innerHTML:e.params.text},null,8,P)):(t.openBlock(),t.createElementBlock("span",F,t.toDisplayString(e.params.text),1)),e.params.validateText?(t.openBlock(),t.createElementBlock("div",j,[t.createTextVNode(" Enter "+t.toDisplayString(e.params.validateText)+" to confirm! ",1),t.createVNode(u,{modelValue:e.validationText,"onUpdate:modelValue":o[0]||(o[0]=f=>e.validationText=f),variant:"solo",density:"compact","single-line":"",rules:[e.rules.required,e.rules.match],"data-test":"confirm-dialog-validate"},null,8,["modelValue","rules"])])):t.createCommentVNode("",!0)]),_:1}),t.createVNode(h,{class:"px-2"},{default:t.withCtx(()=>[t.createVNode(r),e.params.cancelText?(t.openBlock(),t.createBlock(m,{key:0,variant:"outlined","data-test":i.dataTestCancel,onClick:i.cancel},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.params.cancelText),1)]),_:1},8,["data-test","onClick"])):t.createCommentVNode("",!0),t.createVNode(m,{variant:"flat",color:e.params.okClass,"data-test":i.dataTestOk,onClick:i.ok},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.params.okText),1)]),_:1},8,["color","data-test","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const q=V._export_sfc(E,[["render",H],["__scopeId","data-v-de532a0f"]]);class R{constructor(){this.mounted=!1,this.$root=null}mount(){if(this.mounted)return;const o=window.Vue.createApp(q);o.use(N);const n=document.createElement("div");document.querySelector("#openc3-app-toolbar > div").appendChild(n),this.$root=o.mount(n),this.mounted=!0}open({title:o,text:n,okText:a,okClass:s,validateText:i,cancelText:r,html:c}){return this.mount(),new Promise((l,u)=>{this.$root.dialog({title:o,text:n,okText:a,okClass:s,validateText:i,cancelText:r,html:c},l,u)})}confirm(o,{okText:n="Ok",cancelText:a="Cancel",okClass:s="primary"}){return this.open({title:"Confirm",text:o,okText:n,okClass:s,validateText:null,cancelText:a,html:!1})}alert(o,{okText:n="Ok",html:a=!1,okClass:s="primary"}){return this.open({title:"Alert",text:o,okText:n,okClass:s,validateText:null,cancelText:null,html:a})}validate(o,{okText:n="Ok",validateText:a="CONFIRM",cancelText:s="Cancel",okClass:i="primary"}){return this.open({title:"Confirm",text:o,okText:n,okClass:i,validateText:a,cancelText:s,html:!1})}}const W={install(e,o){const n=new R;e.provide("dialog",n),e.config.globalProperties.hasOwnProperty("$dialog")||(e.config.globalProperties.$dialog=n)}},L={data:function(){return{showToast:!1,expanded:!1,toastNotification:{title:"Title here",body:"This is the notification body",message:"Overall message here"},timeout:null,noToastPaths:["/login"]}},computed:{toastNotificationIcon:function(){switch(this.toastNotification.type){case"notification":return"mdi-bell";case"alert":default:return"mdi-alert-box"}},toastStyle:function(){return`
2
2
  --toast-bg-color:${C.AstroStatusColors[this.toastNotification.level]};
3
3
  --toast-fg-color:${C.getStatusColorContrast(this.toastNotification.level)};
4
4
  `},contentStyle:function(){return`
5
5
  white-space: ${this.expanded?"normal":"nowrap"};
6
6
  overflow-x: ${this.expanded?"visible":"hidden"};
7
7
  text-overflow: ${this.expanded?"unset":"ellipsis"};
8
- `}},methods:{toast:function(e,o){this.noToastPaths.includes(window.location.pathname)||(o===void 0&&(o=5e3),this.toastNotification=e,this.showToast=!0,this.cancelAutohide(),o&&(this.timeout=setTimeout(()=>{this.hide()},o)))},hide:function(){this.cancelAutohide(),this.showToast=!1},cancelAutohide:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},expand:function(){this.cancelAutohide(),this.expanded=!0}}},M={key:0,class:"text-subtitle-1 mr-1 notification-text"},U={key:1,class:"text-body-2 notification-text"},z={key:2,class:"text-body-2 notification-text"};function G(e,o,n,a,s,i){const r=t.resolveComponent("v-icon"),c=t.resolveComponent("v-spacer"),l=t.resolveComponent("v-btn"),u=t.resolveComponent("v-sheet"),d=t.resolveComponent("v-slide-y-transition");return t.openBlock(),t.createBlock(d,null,{default:t.withCtx(()=>[t.withDirectives(t.createVNode(u,{style:t.normalizeStyle(i.toastStyle),class:"toast-notification",onClick:i.expand},{default:t.withCtx(()=>[t.createVNode(r,{class:"mr-1 notification-text"},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(i.toastNotificationIcon),1)]),_:1}),t.createElementVNode("div",{class:"toast-content",style:t.normalizeStyle(i.contentStyle)},[e.toastNotification.title?(t.openBlock(),t.createElementBlock("span",M,t.toDisplayString(e.toastNotification.title)+": ",1)):t.createCommentVNode("",!0),e.toastNotification.body?(t.openBlock(),t.createElementBlock("span",U,t.toDisplayString(e.toastNotification.body),1)):t.createCommentVNode("",!0),e.toastNotification.message?(t.openBlock(),t.createElementBlock("span",z,t.toDisplayString(e.toastNotification.message),1)):t.createCommentVNode("",!0)],4),t.createVNode(c),t.createVNode(l,{variant:"text",onClick:t.withModifiers(i.hide,["stop"]),class:"notification-text"},{default:t.withCtx(()=>o[0]||(o[0]=[t.createTextVNode(" Dismiss ")])),_:1},8,["onClick"])]),_:1},8,["style","onClick"]),[[t.vShow,e.showToast]])]),_:1})}const K=V._export_sfc(L,[["render",G],["__scopeId","data-v-b0459ba8"]]);class Y{constructor(o={}){var n;this.$store=o.store,this.mounted=!1,this.$root=null,(n=window.$cosmosNotify)!=null&&n.$root?(this.mounted=!0,this.$root=window.$cosmosNotify.$root):window.$cosmosNotify=this}mount(){if(this.mounted)return;const o=t.createApp(K);o.use(x);const n=document.createElement("div");document.querySelector("#openc3-app-toolbar > div").appendChild(n),this.$root=o.mount(n),this.mounted=!0}open({method:o,title:n,body:a,message:s,level:i,duration:r,type:c="alert",logToConsole:l=!1,saveToHistory:u=!0}){this.mount(),l&&console.log(s?`${i.toUpperCase()} - ${s}`:`${i.toUpperCase()} - ${n}: ${a}`),u&&this.$store.commit("notifyAddHistory",{title:n,body:a,message:s,level:i}),this[o]({title:n,body:a,message:s,level:i,duration:r,type:c})}toast({title:o,body:n,message:a,level:s,duration:i,type:r}){this.$root.toast({title:o,body:n,message:a,level:s,type:r},i)}critical({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"critical",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}FATAL(o){this.critical(o)}ERROR(o){this.critical(o)}serious({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"serious",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}caution({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"caution",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}WARN(o){this.caution(o)}normal({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"normal",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}INFO(o){this.normal(o)}DEBUG(o){this.normal(o)}standby({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"standby",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}off({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"off",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}}const X={install(e,o){const n=new Y(o);e.provide("notify",n),e.config.globalProperties.hasOwnProperty("$notify")||(e.config.globalProperties.$notify=n)}},N=100,Z=B.createStore({state:{notifyHistory:[],namedWidgets:{}},getters:{namedWidget:e=>o=>e.namedWidgets[o]},mutations:{notifyAddHistory:(e,o)=>{e.notifyHistory.length>=N&&(e.notifyHistory.length=N-1),e.notifyHistory.unshift(o)},notifyClearHistory:e=>{e.notifyHistory=[]},setNamedWidget:(e,o)=>{Object.assign(e.namedWidgets,o)},clearNamedWidget:(e,o)=>{delete e.namedWidgets[o]}},modules:{}});function T(e){let o;return e!==null&&typeof e=="object"&&((o=Object.getPrototypeOf(e))===Object.prototype||o===null)}function J(e,o){const n={};for(const a of o)Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n}function $(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const a={};for(const s in e)a[s]=e[s];for(const s in o){const i=e[s],r=o[s];if(T(i)&&T(r)){a[s]=$(i,r,n);continue}if(n&&Array.isArray(i)&&Array.isArray(r)){a[s]=n(i,r);continue}a[s]=r}return a}function p(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(p.cache.has(e))return p.cache.get(e);const o=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return p.cache.set(e,o),o}p.cache=new Map;function Q(e){t.warn(`Vuetify: ${e}`)}function S(e,o){return n=>Object.keys(e).reduce((a,s)=>{const r=typeof e[s]=="object"&&e[s]!=null&&!Array.isArray(e[s])?e[s]:{type:e[s]};return n&&s in n?a[s]={...r,default:n[s]}:a[s]=r,o&&!a[s].source&&(a[s].source=o),a},{})}function D(e,o){const n=t.getCurrentInstance();if(!n)throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);return n}function ee(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:D("injectSelf");const{provides:n}=o;if(n&&e in n)return n[e]}const k=Symbol.for("vuetify:defaults");function O(){const e=t.inject(k);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function te(e,o){return e.props&&(typeof e.props[o]<"u"||typeof e.props[p(o)]<"u")}function oe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:O();const a=D("useDefaults");if(o=o??a.type.name??a.type.__name,!o)throw new Error("[Vuetify] Could not determine component name");const s=t.computed(()=>{var l;return(l=n.value)==null?void 0:l[e._as??o]}),i=new Proxy(e,{get(l,u){var y,v,g,f;const d=Reflect.get(l,u);if(u==="class"||u==="style")return[(y=s.value)==null?void 0:y[u],d].filter(A=>A!=null);if(te(a.vnode,u))return d;const m=(v=s.value)==null?void 0:v[u];if(m!==void 0)return m;const h=(f=(g=n.value)==null?void 0:g.global)==null?void 0:f[u];return h!==void 0?h:d}}),r=t.shallowRef();t.watchEffect(()=>{if(s.value){const l=Object.entries(s.value).filter(u=>{let[d]=u;return d.startsWith(d[0].toUpperCase())});r.value=l.length?Object.fromEntries(l):void 0}else r.value=void 0});function c(){const l=ee(k,a);t.provide(k,t.computed(()=>r.value?$((l==null?void 0:l.value)??{},r.value):l==null?void 0:l.value))}return{props:i,provideSubDefaults:c}}function _(e){if(e._setup=e._setup??e.setup,!e.name)return Q("The component is missing an explicit name, unable to generate default prop value"),e;if(e._setup){e.props=S(e.props??{},e.name)();const o=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(a){return J(a,o)},e.props._as=String,e.setup=function(a,s){const i=O();if(!i.value)return e._setup(a,s);const{props:r,provideSubDefaults:c}=oe(a,a._as??e.name,i),l=e._setup(r,s);return c(),l}}return e}function ne(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return o=>(e?_:t.defineComponent)(o)}const ae=[String,Function,Object,Array],w=S({icon:{type:ae},tag:{type:[String,Object,Function],required:!0}},"icon");ne()({name:"VComponentIcon",props:w(),setup(e,o){let{slots:n}=o;return()=>{const a=e.icon;return t.createVNode(e.tag,null,{default:()=>{var s;return[e.icon?t.createVNode(a,null,null):(s=n.default)==null?void 0:s.call(n)]}})}}});_({name:"VSvgIcon",inheritAttrs:!1,props:w(),setup(e,o){let{attrs:n}=o;return()=>t.createVNode(e.tag,t.mergeProps(n,{style:null}),{default:()=>[t.createVNode("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(a=>Array.isArray(a)?t.createVNode("path",{d:a[0],"fill-opacity":a[1]},null):t.createVNode("path",{d:a},null)):t.createVNode("path",{d:e.icon},null)])]})}});_({name:"VLigatureIcon",props:w(),setup(e){return()=>t.createVNode(e.tag,null,{default:()=>[e.icon]})}});const se=_({name:"VClassIcon",props:w(),setup(e){return()=>t.createVNode(e.tag,{class:e.icon},null)}}),ie={component:e=>t.h(se,{...e,class:"mdi"})},x=I.createVuetify({theme:{defaultTheme:"cosmosDark",themes:{cosmosDark:b}},icons:{defaultSet:"mdi",sets:{mdi:ie,...C.AstroIconVuetifySets,...C.CustomIconSet}}});exports.Dialog=W;exports.Notify=X;exports.cosmosThemeDark=b;exports.store=Z;exports.vuetify=x;
8
+ `}},methods:{toast:function(e,o){this.noToastPaths.includes(window.location.pathname)||(o===void 0&&(o=5e3),this.toastNotification=e,this.showToast=!0,this.cancelAutohide(),o&&(this.timeout=setTimeout(()=>{this.hide()},o)))},hide:function(){this.cancelAutohide(),this.showToast=!1},cancelAutohide:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},expand:function(){this.cancelAutohide(),this.expanded=!0}}},M={key:0,class:"text-subtitle-1 mr-1 notification-text"},U={key:1,class:"text-body-2 notification-text"},z={key:2,class:"text-body-2 notification-text"};function G(e,o,n,a,s,i){const r=t.resolveComponent("v-icon"),c=t.resolveComponent("v-spacer"),l=t.resolveComponent("v-btn"),u=t.resolveComponent("v-sheet"),d=t.resolveComponent("v-slide-y-transition");return t.openBlock(),t.createBlock(d,null,{default:t.withCtx(()=>[t.withDirectives(t.createVNode(u,{style:t.normalizeStyle(i.toastStyle),class:"toast-notification",onClick:i.expand},{default:t.withCtx(()=>[t.createVNode(r,{class:"mr-1 notification-text"},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(i.toastNotificationIcon),1)]),_:1}),t.createElementVNode("div",{class:"toast-content",style:t.normalizeStyle(i.contentStyle)},[e.toastNotification.title?(t.openBlock(),t.createElementBlock("span",M,[e.toastNotification.body||e.toastNotification.message?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[t.createTextVNode(t.toDisplayString(e.toastNotification.title)+": ",1)],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createTextVNode(t.toDisplayString(e.toastNotification.title),1)],64))])):t.createCommentVNode("",!0),e.toastNotification.body?(t.openBlock(),t.createElementBlock("span",U,t.toDisplayString(e.toastNotification.body),1)):t.createCommentVNode("",!0),e.toastNotification.message?(t.openBlock(),t.createElementBlock("span",z,t.toDisplayString(e.toastNotification.message),1)):t.createCommentVNode("",!0)],4),t.createVNode(c),t.createVNode(l,{variant:"text",class:"notification-text",onClick:t.withModifiers(i.hide,["stop"])},{default:t.withCtx(()=>o[0]||(o[0]=[t.createTextVNode(" Dismiss ")])),_:1},8,["onClick"])]),_:1},8,["style","onClick"]),[[t.vShow,e.showToast]])]),_:1})}const K=V._export_sfc(L,[["render",G],["__scopeId","data-v-84833581"]]);class Y{constructor(o={}){var n;this.$store=o.store,this.mounted=!1,this.$root=null,(n=window.$cosmosNotify)!=null&&n.$root?(this.mounted=!0,this.$root=window.$cosmosNotify.$root):window.$cosmosNotify=this}mount(){if(this.mounted)return;const o=t.createApp(K);o.use(N);const n=document.createElement("div");document.querySelector("#openc3-app-toolbar > div").appendChild(n),this.$root=o.mount(n),this.mounted=!0}open({method:o,title:n,body:a,message:s,level:i,duration:r,type:c="alert",logToConsole:l=!1,saveToHistory:u=!0}){this.mount(),l&&console.log(s?`${i.toUpperCase()} - ${s}`:`${i.toUpperCase()} - ${n}: ${a}`),u&&this.$store.commit("notifyAddHistory",{title:n,body:a,message:s,level:i}),this[o]({title:n,body:a,message:s,level:i,duration:r,type:c})}toast({title:o,body:n,message:a,level:s,duration:i,type:r}){this.$root.toast({title:o,body:n,message:a,level:s,type:r},i)}critical({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"critical",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}FATAL(o){this.critical(o)}ERROR(o){this.critical(o)}serious({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"serious",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}caution({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"caution",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}WARN(o){this.caution(o)}normal({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"normal",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}INFO(o){this.normal(o)}DEBUG(o){this.normal(o)}standby({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"standby",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}off({title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c}){this.open({method:"toast",level:"off",title:o,body:n,message:a,type:s,duration:i,logToConsole:r,saveToHistory:c})}}const X={install(e,o){const n=new Y(o);e.provide("notify",n),e.config.globalProperties.hasOwnProperty("$notify")||(e.config.globalProperties.$notify=n)}},x=100,Z=B.createStore({state:{notifyHistory:[],namedWidgets:{}},getters:{namedWidget:e=>o=>e.namedWidgets[o]},mutations:{notifyAddHistory:(e,o)=>{e.notifyHistory.length>=x&&(e.notifyHistory.length=x-1),e.notifyHistory.unshift(o)},notifyClearHistory:e=>{e.notifyHistory=[]},setNamedWidget:(e,o)=>{Object.assign(e.namedWidgets,o)},clearNamedWidget:(e,o)=>{delete e.namedWidgets[o]}},modules:{}});function T(e){let o;return e!==null&&typeof e=="object"&&((o=Object.getPrototypeOf(e))===Object.prototype||o===null)}function J(e,o){const n={};for(const a of o)Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n}function $(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const a={};for(const s in e)a[s]=e[s];for(const s in o){const i=e[s],r=o[s];if(T(i)&&T(r)){a[s]=$(i,r,n);continue}if(n&&Array.isArray(i)&&Array.isArray(r)){a[s]=n(i,r);continue}a[s]=r}return a}function p(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(p.cache.has(e))return p.cache.get(e);const o=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return p.cache.set(e,o),o}p.cache=new Map;function Q(e){t.warn(`Vuetify: ${e}`)}function S(e,o){return n=>Object.keys(e).reduce((a,s)=>{const r=typeof e[s]=="object"&&e[s]!=null&&!Array.isArray(e[s])?e[s]:{type:e[s]};return n&&s in n?a[s]={...r,default:n[s]}:a[s]=r,o&&!a[s].source&&(a[s].source=o),a},{})}function D(e,o){const n=t.getCurrentInstance();if(!n)throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);return n}function ee(e){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:D("injectSelf");const{provides:n}=o;if(n&&e in n)return n[e]}const w=Symbol.for("vuetify:defaults");function O(){const e=t.inject(w);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function te(e,o){return e.props&&(typeof e.props[o]<"u"||typeof e.props[p(o)]<"u")}function oe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},o=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:O();const a=D("useDefaults");if(o=o??a.type.name??a.type.__name,!o)throw new Error("[Vuetify] Could not determine component name");const s=t.computed(()=>{var l;return(l=n.value)==null?void 0:l[e._as??o]}),i=new Proxy(e,{get(l,u){var y,g,v,f;const d=Reflect.get(l,u);if(u==="class"||u==="style")return[(y=s.value)==null?void 0:y[u],d].filter(A=>A!=null);if(te(a.vnode,u))return d;const m=(g=s.value)==null?void 0:g[u];if(m!==void 0)return m;const h=(f=(v=n.value)==null?void 0:v.global)==null?void 0:f[u];return h!==void 0?h:d}}),r=t.shallowRef();t.watchEffect(()=>{if(s.value){const l=Object.entries(s.value).filter(u=>{let[d]=u;return d.startsWith(d[0].toUpperCase())});r.value=l.length?Object.fromEntries(l):void 0}else r.value=void 0});function c(){const l=ee(w,a);t.provide(w,t.computed(()=>r.value?$((l==null?void 0:l.value)??{},r.value):l==null?void 0:l.value))}return{props:i,provideSubDefaults:c}}function _(e){if(e._setup=e._setup??e.setup,!e.name)return Q("The component is missing an explicit name, unable to generate default prop value"),e;if(e._setup){e.props=S(e.props??{},e.name)();const o=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(a){return J(a,o)},e.props._as=String,e.setup=function(a,s){const i=O();if(!i.value)return e._setup(a,s);const{props:r,provideSubDefaults:c}=oe(a,a._as??e.name,i),l=e._setup(r,s);return c(),l}}return e}function ne(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return o=>(e?_:t.defineComponent)(o)}const ae=[String,Function,Object,Array],k=S({icon:{type:ae},tag:{type:[String,Object,Function],required:!0}},"icon");ne()({name:"VComponentIcon",props:k(),setup(e,o){let{slots:n}=o;return()=>{const a=e.icon;return t.createVNode(e.tag,null,{default:()=>{var s;return[e.icon?t.createVNode(a,null,null):(s=n.default)==null?void 0:s.call(n)]}})}}});_({name:"VSvgIcon",inheritAttrs:!1,props:k(),setup(e,o){let{attrs:n}=o;return()=>t.createVNode(e.tag,t.mergeProps(n,{style:null}),{default:()=>[t.createVNode("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(a=>Array.isArray(a)?t.createVNode("path",{d:a[0],"fill-opacity":a[1]},null):t.createVNode("path",{d:a},null)):t.createVNode("path",{d:e.icon},null)])]})}});_({name:"VLigatureIcon",props:k(),setup(e){return()=>t.createVNode(e.tag,null,{default:()=>[e.icon]})}});const se=_({name:"VClassIcon",props:k(),setup(e){return()=>t.createVNode(e.tag,{class:e.icon},null)}}),ie={component:e=>t.h(se,{...e,class:"mdi"})},N=I.createVuetify({theme:{defaultTheme:"cosmosDark",themes:{cosmosDark:b}},icons:{defaultSet:"mdi",sets:{mdi:ie,...C.AstroIconVuetifySets,...C.CustomIconSet}}});exports.Dialog=W;exports.Notify=X;exports.cosmosThemeDark=b;exports.store=Z;exports.vuetify=N;
9
9
  //# sourceMappingURL=plugins.cjs.map