@openc3/vue-common 6.4.2 → 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 (353) hide show
  1. package/dist/{ArrayWidget-D0fKsdTb.js → ArrayWidget-CC3iwyQc.js} +4 -4
  2. package/dist/{ArrayWidget-D0fKsdTb.js.map → ArrayWidget-CC3iwyQc.js.map} +1 -1
  3. package/dist/{ArrayWidget-F8xL9dRA.cjs → ArrayWidget-DaQV8y9D.cjs} +2 -2
  4. package/dist/{ArrayWidget-F8xL9dRA.cjs.map → ArrayWidget-DaQV8y9D.cjs.map} +1 -1
  5. package/dist/{ArrayplotWidget-BmRSuGhA.js → ArrayplotWidget-CiQdsmVy.js} +3 -3
  6. package/dist/{ArrayplotWidget-BmRSuGhA.js.map → ArrayplotWidget-CiQdsmVy.js.map} +1 -1
  7. package/dist/{ArrayplotWidget-D6_PhmMa.cjs → ArrayplotWidget-CkiRBYrb.cjs} +2 -2
  8. package/dist/{ArrayplotWidget-D6_PhmMa.cjs.map → ArrayplotWidget-CkiRBYrb.cjs.map} +1 -1
  9. package/dist/{BarColumn-DtYw6Gmq.js → BarColumn-BhjcS87D.js} +3 -3
  10. package/dist/{BarColumn-DtYw6Gmq.js.map → BarColumn-BhjcS87D.js.map} +1 -1
  11. package/dist/{BarColumn-DO5zpCu2.cjs → BarColumn-Ci9fqSL1.cjs} +2 -2
  12. package/dist/{BarColumn-DO5zpCu2.cjs.map → BarColumn-Ci9fqSL1.cjs.map} +1 -1
  13. package/dist/{BlockWidget-Dpxbw455.js → BlockWidget-LLPHBYVU.js} +4 -4
  14. package/dist/{BlockWidget-Dpxbw455.js.map → BlockWidget-LLPHBYVU.js.map} +1 -1
  15. package/dist/{BlockWidget-CbuJPszc.cjs → BlockWidget-yNjXB1gO.cjs} +2 -2
  16. package/dist/{BlockWidget-CbuJPszc.cjs.map → BlockWidget-yNjXB1gO.cjs.map} +1 -1
  17. package/dist/{ButtonWidget-DB464bRo.cjs → ButtonWidget-C_R8sVl5.cjs} +2 -2
  18. package/dist/{ButtonWidget-DB464bRo.cjs.map → ButtonWidget-C_R8sVl5.cjs.map} +1 -1
  19. package/dist/{ButtonWidget-8iOpXmpp.js → ButtonWidget-Co0KMkIG.js} +4 -4
  20. package/dist/{ButtonWidget-8iOpXmpp.js.map → ButtonWidget-Co0KMkIG.js.map} +1 -1
  21. package/dist/{CanvasWidget-D4iIs915.cjs → CanvasWidget-CMVhjpJc.cjs} +2 -2
  22. package/dist/{CanvasWidget-D4iIs915.cjs.map → CanvasWidget-CMVhjpJc.cjs.map} +1 -1
  23. package/dist/{CanvasWidget-B0iU38rA.js → CanvasWidget-DPrxnI7M.js} +2 -2
  24. package/dist/{CanvasWidget-B0iU38rA.js.map → CanvasWidget-DPrxnI7M.js.map} +1 -1
  25. package/dist/{CanvasdotWidget-DG6qDFlh.cjs → CanvasdotWidget-DskyFyIC.cjs} +2 -2
  26. package/dist/{CanvasdotWidget-DG6qDFlh.cjs.map → CanvasdotWidget-DskyFyIC.cjs.map} +1 -1
  27. package/dist/{CanvasdotWidget-C9viSVBs.js → CanvasdotWidget-s1ALDR4k.js} +2 -2
  28. package/dist/{CanvasdotWidget-C9viSVBs.js.map → CanvasdotWidget-s1ALDR4k.js.map} +1 -1
  29. package/dist/{CanvasimageWidget-BJhOpZ3q.cjs → CanvasimageWidget-BngTI0bl.cjs} +2 -2
  30. package/dist/{CanvasimageWidget-BJhOpZ3q.cjs.map → CanvasimageWidget-BngTI0bl.cjs.map} +1 -1
  31. package/dist/{CanvasimageWidget-CFiCpITu.js → CanvasimageWidget-Cs-KjdqK.js} +3 -3
  32. package/dist/{CanvasimageWidget-CFiCpITu.js.map → CanvasimageWidget-Cs-KjdqK.js.map} +1 -1
  33. package/dist/{CanvasimagevalueWidget-D-4P_8Gh.cjs → CanvasimagevalueWidget-0qTn6Gb5.cjs} +2 -2
  34. package/dist/{CanvasimagevalueWidget-D-4P_8Gh.cjs.map → CanvasimagevalueWidget-0qTn6Gb5.cjs.map} +1 -1
  35. package/dist/{CanvasimagevalueWidget-fu6vbAY0.js → CanvasimagevalueWidget-B-wBQisl.js} +3 -3
  36. package/dist/{CanvasimagevalueWidget-fu6vbAY0.js.map → CanvasimagevalueWidget-B-wBQisl.js.map} +1 -1
  37. package/dist/{CanvaslabelWidget-BVqHq3Vp.js → CanvaslabelWidget-CLBK52pP.js} +2 -2
  38. package/dist/{CanvaslabelWidget-BVqHq3Vp.js.map → CanvaslabelWidget-CLBK52pP.js.map} +1 -1
  39. package/dist/{CanvaslabelWidget-1OS-a3F4.cjs → CanvaslabelWidget-b2yvqZBZ.cjs} +2 -2
  40. package/dist/{CanvaslabelWidget-1OS-a3F4.cjs.map → CanvaslabelWidget-b2yvqZBZ.cjs.map} +1 -1
  41. package/dist/{CanvaslabelvalueWidget-C3vVvK2b.cjs → CanvaslabelvalueWidget-CA03ncx0.cjs} +2 -2
  42. package/dist/{CanvaslabelvalueWidget-C3vVvK2b.cjs.map → CanvaslabelvalueWidget-CA03ncx0.cjs.map} +1 -1
  43. package/dist/{CanvaslabelvalueWidget-BOFa8-NU.js → CanvaslabelvalueWidget-CAa70y_o.js} +2 -2
  44. package/dist/{CanvaslabelvalueWidget-BOFa8-NU.js.map → CanvaslabelvalueWidget-CAa70y_o.js.map} +1 -1
  45. package/dist/{CanvaslineWidget-Cr8MsDUl.cjs → CanvaslineWidget-B-yhgIlR.cjs} +2 -2
  46. package/dist/{CanvaslineWidget-Cr8MsDUl.cjs.map → CanvaslineWidget-B-yhgIlR.cjs.map} +1 -1
  47. package/dist/{CanvaslineWidget-l3ko0QXk.js → CanvaslineWidget-PdwVJOQ5.js} +2 -2
  48. package/dist/{CanvaslineWidget-l3ko0QXk.js.map → CanvaslineWidget-PdwVJOQ5.js.map} +1 -1
  49. package/dist/{CanvaslinevalueWidget-BCZoO-Z6.js → CanvaslinevalueWidget-CKrp1f3Z.js} +2 -2
  50. package/dist/{CanvaslinevalueWidget-BCZoO-Z6.js.map → CanvaslinevalueWidget-CKrp1f3Z.js.map} +1 -1
  51. package/dist/{CanvaslinevalueWidget-DRowns-E.cjs → CanvaslinevalueWidget-PVW-_nOk.cjs} +2 -2
  52. package/dist/{CanvaslinevalueWidget-DRowns-E.cjs.map → CanvaslinevalueWidget-PVW-_nOk.cjs.map} +1 -1
  53. package/dist/{CheckbuttonWidget-Cy9VUV7t.cjs → CheckbuttonWidget-BItae9qq.cjs} +2 -2
  54. package/dist/{CheckbuttonWidget-Cy9VUV7t.cjs.map → CheckbuttonWidget-BItae9qq.cjs.map} +1 -1
  55. package/dist/{CheckbuttonWidget-BN7e1d5b.js → CheckbuttonWidget-CTSfH4NN.js} +2 -2
  56. package/dist/{CheckbuttonWidget-BN7e1d5b.js.map → CheckbuttonWidget-CTSfH4NN.js.map} +1 -1
  57. package/dist/{ComboboxWidget-DbQwLEJY.cjs → ComboboxWidget-BFKz1kva.cjs} +2 -2
  58. package/dist/{ComboboxWidget-DbQwLEJY.cjs.map → ComboboxWidget-BFKz1kva.cjs.map} +1 -1
  59. package/dist/{ComboboxWidget-Bb5RGXDB.js → ComboboxWidget-BQzv9zk5.js} +2 -2
  60. package/dist/{ComboboxWidget-Bb5RGXDB.js.map → ComboboxWidget-BQzv9zk5.js.map} +1 -1
  61. package/dist/{CriticalCmdDialog-p0ZMNHpv.cjs → CriticalCmdDialog-CfUGhKPh.cjs} +2 -2
  62. package/dist/{CriticalCmdDialog-p0ZMNHpv.cjs.map → CriticalCmdDialog-CfUGhKPh.cjs.map} +1 -1
  63. package/dist/{CriticalCmdDialog-BUHsxfpO.js → CriticalCmdDialog-D5m3w1fr.js} +2 -2
  64. package/dist/{CriticalCmdDialog-BUHsxfpO.js.map → CriticalCmdDialog-D5m3w1fr.js.map} +1 -1
  65. package/dist/{DateWidget-Cv3Uzbyr.cjs → DateWidget-CuUySNFb.cjs} +2 -2
  66. package/dist/{DateWidget-Cv3Uzbyr.cjs.map → DateWidget-CuUySNFb.cjs.map} +1 -1
  67. package/dist/{DateWidget-Dggqab-F.js → DateWidget-DKXxXT1g.js} +2 -2
  68. package/dist/{DateWidget-Dggqab-F.js.map → DateWidget-DKXxXT1g.js.map} +1 -1
  69. package/dist/{DetailsDialog-BhSAQDSK.js → DetailsDialog-DEjAO6yp.js} +2 -2
  70. package/dist/{DetailsDialog-BhSAQDSK.js.map → DetailsDialog-DEjAO6yp.js.map} +1 -1
  71. package/dist/{DetailsDialog-CSUO0ibv.cjs → DetailsDialog-DlUuDdFa.cjs} +2 -2
  72. package/dist/{DetailsDialog-CSUO0ibv.cjs.map → DetailsDialog-DlUuDdFa.cjs.map} +1 -1
  73. package/dist/{EventListDialog-C7RuZnvD.cjs → EventListDialog-CPYg1a2g.cjs} +2 -2
  74. package/dist/{EventListDialog-C7RuZnvD.cjs.map → EventListDialog-CPYg1a2g.cjs.map} +1 -1
  75. package/dist/{EventListDialog-CSxz4nmr.js → EventListDialog-CabnKWVX.js} +3 -3
  76. package/dist/{EventListDialog-CSxz4nmr.js.map → EventListDialog-CabnKWVX.js.map} +1 -1
  77. package/dist/{FormatvalueWidget-B9_PbzY2.js → FormatvalueWidget-7Yp9jfgX.js} +3 -3
  78. package/dist/{FormatvalueWidget-B9_PbzY2.js.map → FormatvalueWidget-7Yp9jfgX.js.map} +1 -1
  79. package/dist/{FormatvalueWidget-VYVvrtya.cjs → FormatvalueWidget-LNNT9pLh.cjs} +2 -2
  80. package/dist/{FormatvalueWidget-VYVvrtya.cjs.map → FormatvalueWidget-LNNT9pLh.cjs.map} +1 -1
  81. package/dist/{Graph-B2Ir-2Ot.cjs → Graph-ZGEBRGOA.cjs} +2 -2
  82. package/dist/{Graph-B2Ir-2Ot.cjs.map → Graph-ZGEBRGOA.cjs.map} +1 -1
  83. package/dist/{Graph-B29y4d5A.js → Graph-hzxapkW-.js} +2 -2
  84. package/dist/{Graph-B29y4d5A.js.map → Graph-hzxapkW-.js.map} +1 -1
  85. package/dist/{GraphWidget-oBxPa3EB.js → GraphWidget-Dn0ZaxHo.js} +2 -2
  86. package/dist/{GraphWidget-oBxPa3EB.js.map → GraphWidget-Dn0ZaxHo.js.map} +1 -1
  87. package/dist/{GraphWidget-BsiCtRsJ.cjs → GraphWidget-caScsshg.cjs} +2 -2
  88. package/dist/{GraphWidget-BsiCtRsJ.cjs.map → GraphWidget-caScsshg.cjs.map} +1 -1
  89. package/dist/{HorizontalWidget-BWgZL_Oz.js → HorizontalWidget-BFzi3rMl.js} +2 -2
  90. package/dist/{HorizontalWidget-BWgZL_Oz.js.map → HorizontalWidget-BFzi3rMl.js.map} +1 -1
  91. package/dist/{HorizontalWidget-wn07kYWX.cjs → HorizontalWidget-Bt7N0bIN.cjs} +2 -2
  92. package/dist/{HorizontalWidget-wn07kYWX.cjs.map → HorizontalWidget-Bt7N0bIN.cjs.map} +1 -1
  93. package/dist/{HorizontalboxWidget-yMYUnNB8.js → HorizontalboxWidget-DIagyace.js} +5 -5
  94. package/dist/{HorizontalboxWidget-yMYUnNB8.js.map → HorizontalboxWidget-DIagyace.js.map} +1 -1
  95. package/dist/{HorizontalboxWidget-BQLGULQ-.cjs → HorizontalboxWidget-Dv6NWovB.cjs} +2 -2
  96. package/dist/{HorizontalboxWidget-BQLGULQ-.cjs.map → HorizontalboxWidget-Dv6NWovB.cjs.map} +1 -1
  97. package/dist/{HorizontallineWidget-C4zMx7z2.js → HorizontallineWidget-BOZNWM3a.js} +2 -2
  98. package/dist/{HorizontallineWidget-C4zMx7z2.js.map → HorizontallineWidget-BOZNWM3a.js.map} +1 -1
  99. package/dist/{HorizontallineWidget-CfrV_K28.cjs → HorizontallineWidget-CFsWevmI.cjs} +2 -2
  100. package/dist/{HorizontallineWidget-CfrV_K28.cjs.map → HorizontallineWidget-CFsWevmI.cjs.map} +1 -1
  101. package/dist/{IframeWidget-DA4P_mJT.js → IframeWidget-BU24bhc2.js} +2 -2
  102. package/dist/{IframeWidget-DA4P_mJT.js.map → IframeWidget-BU24bhc2.js.map} +1 -1
  103. package/dist/{IframeWidget-DeNDRzqB.cjs → IframeWidget-J6g6EhHh.cjs} +2 -2
  104. package/dist/{IframeWidget-DeNDRzqB.cjs.map → IframeWidget-J6g6EhHh.cjs.map} +1 -1
  105. package/dist/{ImageLoader-mxOVUyj1.cjs → ImageLoader-BVVI9FSl.cjs} +2 -2
  106. package/dist/{ImageLoader-mxOVUyj1.cjs.map → ImageLoader-BVVI9FSl.cjs.map} +1 -1
  107. package/dist/{ImageLoader-rvd9t-mk.js → ImageLoader-xxDrxPAX.js} +2 -2
  108. package/dist/{ImageLoader-rvd9t-mk.js.map → ImageLoader-xxDrxPAX.js.map} +1 -1
  109. package/dist/{ImageviewerWidget-CV76ouHz.cjs → ImageviewerWidget-BSTS4nPw.cjs} +2 -2
  110. package/dist/{ImageviewerWidget-CV76ouHz.cjs.map → ImageviewerWidget-BSTS4nPw.cjs.map} +1 -1
  111. package/dist/{ImageviewerWidget-B1wK0hK4.js → ImageviewerWidget-YMA4CVsl.js} +2 -2
  112. package/dist/{ImageviewerWidget-B1wK0hK4.js.map → ImageviewerWidget-YMA4CVsl.js.map} +1 -1
  113. package/dist/{InterfacesTab-CVvIDSTG.js → InterfacesTab-Cv50gOTl.js} +3 -3
  114. package/dist/{InterfacesTab-CVvIDSTG.js.map → InterfacesTab-Cv50gOTl.js.map} +1 -1
  115. package/dist/{InterfacesTab-DHoYHLxF.cjs → InterfacesTab-DOjyTYVC.cjs} +2 -2
  116. package/dist/{InterfacesTab-DHoYHLxF.cjs.map → InterfacesTab-DOjyTYVC.cjs.map} +1 -1
  117. package/dist/{LabelWidget-CY0saBoK.js → LabelWidget-2402SA18.js} +2 -2
  118. package/dist/{LabelWidget-CY0saBoK.js.map → LabelWidget-2402SA18.js.map} +1 -1
  119. package/dist/{LabelWidget-BobQDS5m.cjs → LabelWidget-t-nltZ16.cjs} +2 -2
  120. package/dist/{LabelWidget-BobQDS5m.cjs.map → LabelWidget-t-nltZ16.cjs.map} +1 -1
  121. package/dist/{LabelledWidget-B3ZOYaGy.js → LabelledWidget-Cbubzj_g.js} +4 -4
  122. package/dist/{LabelledWidget-B3ZOYaGy.js.map → LabelledWidget-Cbubzj_g.js.map} +1 -1
  123. package/dist/{LabelledWidget-Dp4fjHpu.cjs → LabelledWidget-tWrIx1sj.cjs} +2 -2
  124. package/dist/{LabelledWidget-Dp4fjHpu.cjs.map → LabelledWidget-tWrIx1sj.cjs.map} +1 -1
  125. package/dist/{LabelprogressbarWidget-1BF_rNsT.cjs → LabelprogressbarWidget-1k8njgQG.cjs} +2 -2
  126. package/dist/{LabelprogressbarWidget-1BF_rNsT.cjs.map → LabelprogressbarWidget-1k8njgQG.cjs.map} +1 -1
  127. package/dist/{LabelprogressbarWidget-CmXcESTg.js → LabelprogressbarWidget-s8V7w6LJ.js} +4 -4
  128. package/dist/{LabelprogressbarWidget-CmXcESTg.js.map → LabelprogressbarWidget-s8V7w6LJ.js.map} +1 -1
  129. package/dist/{LabelsparklineWidget-DgzZAWfI.cjs → LabelsparklineWidget-4yoeI7gJ.cjs} +2 -2
  130. package/dist/{LabelsparklineWidget-DgzZAWfI.cjs.map → LabelsparklineWidget-4yoeI7gJ.cjs.map} +1 -1
  131. package/dist/{LabelsparklineWidget-D_yrQrn6.js → LabelsparklineWidget-qbM_OXLh.js} +4 -4
  132. package/dist/{LabelsparklineWidget-D_yrQrn6.js.map → LabelsparklineWidget-qbM_OXLh.js.map} +1 -1
  133. package/dist/{LabelvalueWidget-dNaNfsBE.js → LabelvalueWidget-B5Ihc2yP.js} +4 -4
  134. package/dist/{LabelvalueWidget-dNaNfsBE.js.map → LabelvalueWidget-B5Ihc2yP.js.map} +1 -1
  135. package/dist/{LabelvalueWidget-T6FC3w0l.cjs → LabelvalueWidget-CEua41bt.cjs} +2 -2
  136. package/dist/{LabelvalueWidget-T6FC3w0l.cjs.map → LabelvalueWidget-CEua41bt.cjs.map} +1 -1
  137. package/dist/{LabelvaluedescWidget-Cb7UqEa-.cjs → LabelvaluedescWidget-7jth-OmG.cjs} +2 -2
  138. package/dist/{LabelvaluedescWidget-Cb7UqEa-.cjs.map → LabelvaluedescWidget-7jth-OmG.cjs.map} +1 -1
  139. package/dist/{LabelvaluedescWidget-3vNoH6Mc.js → LabelvaluedescWidget-Cl3JHPGR.js} +5 -5
  140. package/dist/{LabelvaluedescWidget-3vNoH6Mc.js.map → LabelvaluedescWidget-Cl3JHPGR.js.map} +1 -1
  141. package/dist/{LabelvaluelimitsbarWidget-Bi43GWx7.cjs → LabelvaluelimitsbarWidget-BDhDe4-V.cjs} +2 -2
  142. package/dist/{LabelvaluelimitsbarWidget-Bi43GWx7.cjs.map → LabelvaluelimitsbarWidget-BDhDe4-V.cjs.map} +1 -1
  143. package/dist/{LabelvaluelimitsbarWidget-7VppYVIN.js → LabelvaluelimitsbarWidget-DnpfRyHl.js} +4 -4
  144. package/dist/{LabelvaluelimitsbarWidget-7VppYVIN.js.map → LabelvaluelimitsbarWidget-DnpfRyHl.js.map} +1 -1
  145. package/dist/{LabelvaluelimitscolumnWidget-BZ6nwifg.js → LabelvaluelimitscolumnWidget-D4L9L5oa.js} +5 -5
  146. package/dist/{LabelvaluelimitscolumnWidget-BZ6nwifg.js.map → LabelvaluelimitscolumnWidget-D4L9L5oa.js.map} +1 -1
  147. package/dist/{LabelvaluelimitscolumnWidget-CtTEiWPR.cjs → LabelvaluelimitscolumnWidget-d1puBx2r.cjs} +2 -2
  148. package/dist/{LabelvaluelimitscolumnWidget-CtTEiWPR.cjs.map → LabelvaluelimitscolumnWidget-d1puBx2r.cjs.map} +1 -1
  149. package/dist/{LabelvaluerangebarWidget-C5w7sRFw.cjs → LabelvaluerangebarWidget-BczxhVFU.cjs} +2 -2
  150. package/dist/{LabelvaluerangebarWidget-C5w7sRFw.cjs.map → LabelvaluerangebarWidget-BczxhVFU.cjs.map} +1 -1
  151. package/dist/{LabelvaluerangebarWidget-IyuXLNsw.js → LabelvaluerangebarWidget-BivnHCbE.js} +4 -4
  152. package/dist/{LabelvaluerangebarWidget-IyuXLNsw.js.map → LabelvaluerangebarWidget-BivnHCbE.js.map} +1 -1
  153. package/dist/{Layout-BqMhhhws.js → Layout-B7KU2jmu.js} +2 -2
  154. package/dist/{Layout-BqMhhhws.js.map → Layout-B7KU2jmu.js.map} +1 -1
  155. package/dist/Layout-DoI_Bpyu.cjs +2 -0
  156. package/dist/{Layout-DUWX7PWw.cjs.map → Layout-DoI_Bpyu.cjs.map} +1 -1
  157. package/dist/{LedWidget-ByRkD33m.cjs → LedWidget-BSZWv-hh.cjs} +2 -2
  158. package/dist/{LedWidget-ByRkD33m.cjs.map → LedWidget-BSZWv-hh.cjs.map} +1 -1
  159. package/dist/{LedWidget-DSxpmIOK.js → LedWidget-DpdthKEd.js} +4 -4
  160. package/dist/{LedWidget-DSxpmIOK.js.map → LedWidget-DpdthKEd.js.map} +1 -1
  161. package/dist/{LimitsbarWidget-BoPTdVV5.js → LimitsbarWidget-CLyj3Kb-.js} +2 -2
  162. package/dist/{LimitsbarWidget-BoPTdVV5.js.map → LimitsbarWidget-CLyj3Kb-.js.map} +1 -1
  163. package/dist/{LimitsbarWidget-DAZA6YDH.cjs → LimitsbarWidget-CaBnnZR-.cjs} +2 -2
  164. package/dist/{LimitsbarWidget-DAZA6YDH.cjs.map → LimitsbarWidget-CaBnnZR-.cjs.map} +1 -1
  165. package/dist/{LimitscolorWidget-Bt3qOvrv.js → LimitscolorWidget-ChvzYoug.js} +2 -2
  166. package/dist/{LimitscolorWidget-Bt3qOvrv.js.map → LimitscolorWidget-ChvzYoug.js.map} +1 -1
  167. package/dist/{LimitscolorWidget-ECUDD3Yg.cjs → LimitscolorWidget-DilOPB_Q.cjs} +2 -2
  168. package/dist/{LimitscolorWidget-ECUDD3Yg.cjs.map → LimitscolorWidget-DilOPB_Q.cjs.map} +1 -1
  169. package/dist/{LimitscolumnWidget-DrsRK8l_.cjs → LimitscolumnWidget-C8m6Sqp8.cjs} +2 -2
  170. package/dist/{LimitscolumnWidget-DrsRK8l_.cjs.map → LimitscolumnWidget-C8m6Sqp8.cjs.map} +1 -1
  171. package/dist/{LimitscolumnWidget-Ce6YnUBz.js → LimitscolumnWidget-IOhsLFZ1.js} +2 -2
  172. package/dist/{LimitscolumnWidget-Ce6YnUBz.js.map → LimitscolumnWidget-IOhsLFZ1.js.map} +1 -1
  173. package/dist/{LinegraphWidget-BK03y7ev.cjs → LinegraphWidget-DOPBUi0Y.cjs} +2 -2
  174. package/dist/{LinegraphWidget-BK03y7ev.cjs.map → LinegraphWidget-DOPBUi0Y.cjs.map} +1 -1
  175. package/dist/{LinegraphWidget-XAbg0jj2.js → LinegraphWidget-DZdqMqjw.js} +4 -4
  176. package/dist/{LinegraphWidget-XAbg0jj2.js.map → LinegraphWidget-DZdqMqjw.js.map} +1 -1
  177. package/dist/{MatrixbycolumnsWidget-Cl1-0jWU.cjs → MatrixbycolumnsWidget-BrynJcbR.cjs} +2 -2
  178. package/dist/{MatrixbycolumnsWidget-Cl1-0jWU.cjs.map → MatrixbycolumnsWidget-BrynJcbR.cjs.map} +1 -1
  179. package/dist/{MatrixbycolumnsWidget-5MgJFZtz.js → MatrixbycolumnsWidget-BzGYMhJ2.js} +3 -3
  180. package/dist/{MatrixbycolumnsWidget-5MgJFZtz.js.map → MatrixbycolumnsWidget-BzGYMhJ2.js.map} +1 -1
  181. package/dist/{MicroservicesTab-DlnZ9h0y.js → MicroservicesTab-DrqUNTBZ.js} +3 -3
  182. package/dist/{MicroservicesTab-DlnZ9h0y.js.map → MicroservicesTab-DrqUNTBZ.js.map} +1 -1
  183. package/dist/{MicroservicesTab-DLAy8cBq.cjs → MicroservicesTab-pL6PYFy5.cjs} +2 -2
  184. package/dist/{MicroservicesTab-DLAy8cBq.cjs.map → MicroservicesTab-pL6PYFy5.cjs.map} +1 -1
  185. package/dist/{Openc3Screen-1vPogvfj.js → Openc3Screen-CPknMmN8.js} +3 -3
  186. package/dist/{Openc3Screen-1vPogvfj.js.map → Openc3Screen-CPknMmN8.js.map} +1 -1
  187. package/dist/{Openc3Screen-DERmiz3g.cjs → Openc3Screen-CQkUFNEH.cjs} +2 -2
  188. package/dist/{Openc3Screen-DERmiz3g.cjs.map → Openc3Screen-CQkUFNEH.cjs.map} +1 -1
  189. package/dist/{OutputDialog-aZe2HT6j.js → OutputDialog-B6i5yvkr.js} +2 -2
  190. package/dist/{OutputDialog-aZe2HT6j.js.map → OutputDialog-B6i5yvkr.js.map} +1 -1
  191. package/dist/{OutputDialog-BUc85qgI.cjs → OutputDialog-BwBPgVHK.cjs} +2 -2
  192. package/dist/{OutputDialog-BUc85qgI.cjs.map → OutputDialog-BwBPgVHK.cjs.map} +1 -1
  193. package/dist/{PackagesTab-D5hNxd_X.js → PackagesTab-CjcBp95A.js} +3 -3
  194. package/dist/{PackagesTab-D5hNxd_X.js.map → PackagesTab-CjcBp95A.js.map} +1 -1
  195. package/dist/{PackagesTab-D9h8f-Rc.cjs → PackagesTab-DYoGxaWx.cjs} +2 -2
  196. package/dist/{PackagesTab-D9h8f-Rc.cjs.map → PackagesTab-DYoGxaWx.cjs.map} +1 -1
  197. package/dist/{PluginsTab-BP8DYqd-.js → PluginsTab-Diu6vzUR.js} +3 -3
  198. package/dist/{PluginsTab-BP8DYqd-.js.map → PluginsTab-Diu6vzUR.js.map} +1 -1
  199. package/dist/{PluginsTab-swaGuthJ.cjs → PluginsTab-UcluFu7J.cjs} +2 -2
  200. package/dist/{PluginsTab-swaGuthJ.cjs.map → PluginsTab-UcluFu7J.cjs.map} +1 -1
  201. package/dist/{ProgressbarWidget-CDwDOFIy.js → ProgressbarWidget-Bre-0zcS.js} +2 -2
  202. package/dist/{ProgressbarWidget-CDwDOFIy.js.map → ProgressbarWidget-Bre-0zcS.js.map} +1 -1
  203. package/dist/{ProgressbarWidget-giMKlGsU.cjs → ProgressbarWidget-BwnZ2_h4.cjs} +2 -2
  204. package/dist/{ProgressbarWidget-giMKlGsU.cjs.map → ProgressbarWidget-BwnZ2_h4.cjs.map} +1 -1
  205. package/dist/{RadiobuttonWidget-CDPV19UM.cjs → RadiobuttonWidget-BzO43-f0.cjs} +2 -2
  206. package/dist/{RadiobuttonWidget-CDPV19UM.cjs.map → RadiobuttonWidget-BzO43-f0.cjs.map} +1 -1
  207. package/dist/{RadiobuttonWidget-cQ8V8LaD.js → RadiobuttonWidget-CLbfhrkc.js} +2 -2
  208. package/dist/{RadiobuttonWidget-cQ8V8LaD.js.map → RadiobuttonWidget-CLbfhrkc.js.map} +1 -1
  209. package/dist/{RadiogroupWidget-DPYowBpl.cjs → RadiogroupWidget-CCHJJuvX.cjs} +2 -2
  210. package/dist/{RadiogroupWidget-DPYowBpl.cjs.map → RadiogroupWidget-CCHJJuvX.cjs.map} +1 -1
  211. package/dist/{RadiogroupWidget-BvRnuGA2.js → RadiogroupWidget-DvRc70_Q.js} +2 -2
  212. package/dist/{RadiogroupWidget-BvRnuGA2.js.map → RadiogroupWidget-DvRc70_Q.js.map} +1 -1
  213. package/dist/{RangebarWidget-aHmgV0qs.js → RangebarWidget-BvzVWcfZ.js} +2 -2
  214. package/dist/{RangebarWidget-aHmgV0qs.js.map → RangebarWidget-BvzVWcfZ.js.map} +1 -1
  215. package/dist/{RangebarWidget-DtjrqC3F.cjs → RangebarWidget-DbmeAM6e.cjs} +2 -2
  216. package/dist/{RangebarWidget-DtjrqC3F.cjs.map → RangebarWidget-DbmeAM6e.cjs.map} +1 -1
  217. package/dist/{RedisTab-D1-HQK-m.js → RedisTab-BWYQfcqX.js} +2 -2
  218. package/dist/{RedisTab-D1-HQK-m.js.map → RedisTab-BWYQfcqX.js.map} +1 -1
  219. package/dist/{RedisTab-DcFz87gW.cjs → RedisTab-Dq_xGlhh.cjs} +2 -2
  220. package/dist/{RedisTab-DcFz87gW.cjs.map → RedisTab-Dq_xGlhh.cjs.map} +1 -1
  221. package/dist/{RollupWidget-Dw2GIsBR.cjs → RollupWidget-BnhD1fw1.cjs} +2 -2
  222. package/dist/{RollupWidget-Dw2GIsBR.cjs.map → RollupWidget-BnhD1fw1.cjs.map} +1 -1
  223. package/dist/{RollupWidget-D1jUPrUQ.js → RollupWidget-KT243Ed8.js} +2 -2
  224. package/dist/{RollupWidget-D1jUPrUQ.js.map → RollupWidget-KT243Ed8.js.map} +1 -1
  225. package/dist/{RoutersTab-CF0ADapt.js → RoutersTab-CLwJ6J7T.js} +3 -3
  226. package/dist/{RoutersTab-CF0ADapt.js.map → RoutersTab-CLwJ6J7T.js.map} +1 -1
  227. package/dist/{RoutersTab-DJDjAIQf.cjs → RoutersTab-DS95AQxI.cjs} +2 -2
  228. package/dist/{RoutersTab-DJDjAIQf.cjs.map → RoutersTab-DS95AQxI.cjs.map} +1 -1
  229. package/dist/{ScriptChooser-IegS44oT.js → ScriptChooser-CA2eMEE2.js} +2 -2
  230. package/dist/{ScriptChooser-IegS44oT.js.map → ScriptChooser-CA2eMEE2.js.map} +1 -1
  231. package/dist/{ScriptChooser-CPzgZtTN.cjs → ScriptChooser-D2-VTc4T.cjs} +2 -2
  232. package/dist/{ScriptChooser-CPzgZtTN.cjs.map → ScriptChooser-D2-VTc4T.cjs.map} +1 -1
  233. package/dist/{ScrollwindowWidget-Cn0o3b4E.js → ScrollwindowWidget-DcpdXyrP.js} +3 -3
  234. package/dist/{ScrollwindowWidget-Cn0o3b4E.js.map → ScrollwindowWidget-DcpdXyrP.js.map} +1 -1
  235. package/dist/{ScrollwindowWidget-C79nSa0g.cjs → ScrollwindowWidget-vnhzeIMy.cjs} +2 -2
  236. package/dist/{ScrollwindowWidget-C79nSa0g.cjs.map → ScrollwindowWidget-vnhzeIMy.cjs.map} +1 -1
  237. package/dist/{SecretsTab-BAIHxgdM.js → SecretsTab-CQNTFJAM.js} +2 -2
  238. package/dist/{SecretsTab-BAIHxgdM.js.map → SecretsTab-CQNTFJAM.js.map} +1 -1
  239. package/dist/{SecretsTab-BVpqbRn5.cjs → SecretsTab-HP8E21SW.cjs} +2 -2
  240. package/dist/{SecretsTab-BVpqbRn5.cjs.map → SecretsTab-HP8E21SW.cjs.map} +1 -1
  241. package/dist/{SettingsTab-C2k0BDcX.js → SettingsTab-BAOaLzuc.js} +3 -3
  242. package/dist/{SettingsTab-C2k0BDcX.js.map → SettingsTab-BAOaLzuc.js.map} +1 -1
  243. package/dist/{SettingsTab-J1frSo-9.cjs → SettingsTab-CMQxLfkn.cjs} +2 -2
  244. package/dist/{SettingsTab-J1frSo-9.cjs.map → SettingsTab-CMQxLfkn.cjs.map} +1 -1
  245. package/dist/{SignalWidget-BQBzqdU-.js → SignalWidget-CoTi0Uzy.js} +2 -2
  246. package/dist/{SignalWidget-BQBzqdU-.js.map → SignalWidget-CoTi0Uzy.js.map} +1 -1
  247. package/dist/{SignalWidget-sAMVlO9e.cjs → SignalWidget-DqxDT42W.cjs} +2 -2
  248. package/dist/{SignalWidget-sAMVlO9e.cjs.map → SignalWidget-DqxDT42W.cjs.map} +1 -1
  249. package/dist/{SimpleTextDialog-sOMrzIs7.cjs → SimpleTextDialog-BdV90ARp.cjs} +2 -2
  250. package/dist/{SimpleTextDialog-sOMrzIs7.cjs.map → SimpleTextDialog-BdV90ARp.cjs.map} +1 -1
  251. package/dist/{SimpleTextDialog-3EEsXpGl.js → SimpleTextDialog-BqVdFj1n.js} +2 -2
  252. package/dist/{SimpleTextDialog-3EEsXpGl.js.map → SimpleTextDialog-BqVdFj1n.js.map} +1 -1
  253. package/dist/SpacerWidget--x9MPrff.cjs +2 -0
  254. package/dist/{SpacerWidget-C5x4sFAQ.cjs.map → SpacerWidget--x9MPrff.cjs.map} +1 -1
  255. package/dist/SpacerWidget-CTekSgNO.js +19 -0
  256. package/dist/{SpacerWidget-C0RmQY3t.js.map → SpacerWidget-CTekSgNO.js.map} +1 -1
  257. package/dist/{SparklineWidget-CfA39olv.cjs → SparklineWidget-BHdwgOeC.cjs} +2 -2
  258. package/dist/{SparklineWidget-CfA39olv.cjs.map → SparklineWidget-BHdwgOeC.cjs.map} +1 -1
  259. package/dist/{SparklineWidget-BTH9rvcX.js → SparklineWidget-BxwPKrIr.js} +4 -4
  260. package/dist/{SparklineWidget-BTH9rvcX.js.map → SparklineWidget-BxwPKrIr.js.map} +1 -1
  261. package/dist/{TabbookWidget-C-aDdEoD.js → TabbookWidget-B6Nx3Kmt.js} +2 -2
  262. package/dist/{TabbookWidget-C-aDdEoD.js.map → TabbookWidget-B6Nx3Kmt.js.map} +1 -1
  263. package/dist/{TabbookWidget-BrPTbXrU.cjs → TabbookWidget-DuszE8ho.cjs} +2 -2
  264. package/dist/{TabbookWidget-BrPTbXrU.cjs.map → TabbookWidget-DuszE8ho.cjs.map} +1 -1
  265. package/dist/{TargetsTab-BV-eELWM.cjs → TargetsTab-B8appkxl.cjs} +2 -2
  266. package/dist/{TargetsTab-BV-eELWM.cjs.map → TargetsTab-B8appkxl.cjs.map} +1 -1
  267. package/dist/{TargetsTab-DAmlfJ9Z.js → TargetsTab-u-6nY7FX.js} +3 -3
  268. package/dist/{TargetsTab-DAmlfJ9Z.js.map → TargetsTab-u-6nY7FX.js.map} +1 -1
  269. package/dist/{TextboxWidget-Lw5glGxY.cjs → TextboxWidget-CBdukKN5.cjs} +2 -2
  270. package/dist/{TextboxWidget-Lw5glGxY.cjs.map → TextboxWidget-CBdukKN5.cjs.map} +1 -1
  271. package/dist/{TextboxWidget-Dd2ccpUQ.js → TextboxWidget-DJgAfLFU.js} +4 -4
  272. package/dist/{TextboxWidget-Dd2ccpUQ.js.map → TextboxWidget-DJgAfLFU.js.map} +1 -1
  273. package/dist/{TextfieldWidget-DY3aFTnP.js → TextfieldWidget-Bc2xGs8v.js} +2 -2
  274. package/dist/{TextfieldWidget-DY3aFTnP.js.map → TextfieldWidget-Bc2xGs8v.js.map} +1 -1
  275. package/dist/{TextfieldWidget-CTsiRDIJ.cjs → TextfieldWidget-u6w1_wqO.cjs} +2 -2
  276. package/dist/{TextfieldWidget-CTsiRDIJ.cjs.map → TextfieldWidget-u6w1_wqO.cjs.map} +1 -1
  277. package/dist/{TimeWidget-CB1jqQSZ.cjs → TimeWidget-Bmzei1k_.cjs} +2 -2
  278. package/dist/{TimeWidget-CB1jqQSZ.cjs.map → TimeWidget-Bmzei1k_.cjs.map} +1 -1
  279. package/dist/{TimeWidget-C_site21.js → TimeWidget-DO6ZuMLO.js} +2 -2
  280. package/dist/{TimeWidget-C_site21.js.map → TimeWidget-DO6ZuMLO.js.map} +1 -1
  281. package/dist/{TitleWidget-E91xUafI.cjs → TitleWidget-B8f0Sa7B.cjs} +2 -2
  282. package/dist/{TitleWidget-E91xUafI.cjs.map → TitleWidget-B8f0Sa7B.cjs.map} +1 -1
  283. package/dist/{TitleWidget-Bx81VfQD.js → TitleWidget-CkZhMme1.js} +2 -2
  284. package/dist/{TitleWidget-Bx81VfQD.js.map → TitleWidget-CkZhMme1.js.map} +1 -1
  285. package/dist/{ToolsTab-CW_TQ53O.js → ToolsTab-BI6lImcw.js} +3 -3
  286. package/dist/{ToolsTab-CW_TQ53O.js.map → ToolsTab-BI6lImcw.js.map} +1 -1
  287. package/dist/{ToolsTab-Bu3XUxr9.cjs → ToolsTab-WSIi50nR.cjs} +2 -2
  288. package/dist/{ToolsTab-Bu3XUxr9.cjs.map → ToolsTab-WSIi50nR.cjs.map} +1 -1
  289. package/dist/{TopBar-CkCLoFp7.cjs → TopBar-BwdXu4vD.cjs} +2 -2
  290. package/dist/{TopBar-CkCLoFp7.cjs.map → TopBar-BwdXu4vD.cjs.map} +1 -1
  291. package/dist/{TopBar-C9ro4_7Q.js → TopBar-h_jaZ23r.js} +2 -2
  292. package/dist/{TopBar-C9ro4_7Q.js.map → TopBar-h_jaZ23r.js.map} +1 -1
  293. package/dist/{UpgradeToEnterpriseDialog-EaQZfck4.cjs → UpgradeToEnterpriseDialog-B2LIPuO6.cjs} +2 -2
  294. package/dist/{UpgradeToEnterpriseDialog-EaQZfck4.cjs.map → UpgradeToEnterpriseDialog-B2LIPuO6.cjs.map} +1 -1
  295. package/dist/{UpgradeToEnterpriseDialog-BH0WHey-.js → UpgradeToEnterpriseDialog-DE2DoA0l.js} +2 -2
  296. package/dist/{UpgradeToEnterpriseDialog-BH0WHey-.js.map → UpgradeToEnterpriseDialog-DE2DoA0l.js.map} +1 -1
  297. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CHXJm9wA.cjs → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CKn4Dnn-.cjs} +4 -4
  298. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-CHXJm9wA.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-xI8cv5P5.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-Vn0OLZcG.js} +7 -7
  300. package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-xI8cv5P5.js.map → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-Vn0OLZcG.js.map} +1 -1
  301. package/dist/{VWidget-CRqTUgEv.cjs → VWidget-DKQBzANO.cjs} +2 -2
  302. package/dist/{VWidget-CRqTUgEv.cjs.map → VWidget-DKQBzANO.cjs.map} +1 -1
  303. package/dist/{VWidget-DuUens7G.js → VWidget-DzhcRBQe.js} +2 -2
  304. package/dist/{VWidget-DuUens7G.js.map → VWidget-DzhcRBQe.js.map} +1 -1
  305. package/dist/{ValueWidget-CN-B9LDi.cjs → ValueWidget-BpS7e3Ks.cjs} +2 -2
  306. package/dist/{ValueWidget-CN-B9LDi.cjs.map → ValueWidget-BpS7e3Ks.cjs.map} +1 -1
  307. package/dist/{ValueWidget-cbjxVV3B.js → ValueWidget-tieHz2H1.js} +4 -4
  308. package/dist/{ValueWidget-cbjxVV3B.js.map → ValueWidget-tieHz2H1.js.map} +1 -1
  309. package/dist/{ValuelimitsbarWidget-BLHVD0qM.cjs → ValuelimitsbarWidget-COsc2aMd.cjs} +2 -2
  310. package/dist/{ValuelimitsbarWidget-BLHVD0qM.cjs.map → ValuelimitsbarWidget-COsc2aMd.cjs.map} +1 -1
  311. package/dist/{ValuelimitsbarWidget-cQb2o_xH.js → ValuelimitsbarWidget-oFqxZu0t.js} +4 -4
  312. package/dist/{ValuelimitsbarWidget-cQb2o_xH.js.map → ValuelimitsbarWidget-oFqxZu0t.js.map} +1 -1
  313. package/dist/{ValuelimitscolumnWidget-DqGxHe2k.cjs → ValuelimitscolumnWidget-DPmkVEuC.cjs} +2 -2
  314. package/dist/{ValuelimitscolumnWidget-DqGxHe2k.cjs.map → ValuelimitscolumnWidget-DPmkVEuC.cjs.map} +1 -1
  315. package/dist/{ValuelimitscolumnWidget-BBTuSCK9.js → ValuelimitscolumnWidget-DYBv8POg.js} +4 -4
  316. package/dist/{ValuelimitscolumnWidget-BBTuSCK9.js.map → ValuelimitscolumnWidget-DYBv8POg.js.map} +1 -1
  317. package/dist/{ValuerangebarWidget-xMsUfp1H.cjs → ValuerangebarWidget-D5zHCKXQ.cjs} +2 -2
  318. package/dist/{ValuerangebarWidget-xMsUfp1H.cjs.map → ValuerangebarWidget-D5zHCKXQ.cjs.map} +1 -1
  319. package/dist/{ValuerangebarWidget-Ct7iGtu0.js → ValuerangebarWidget-m3gFyG4v.js} +4 -4
  320. package/dist/{ValuerangebarWidget-Ct7iGtu0.js.map → ValuerangebarWidget-m3gFyG4v.js.map} +1 -1
  321. package/dist/{VerticalWidget-DJn02myf.js → VerticalWidget-CcdRZmQK.js} +2 -2
  322. package/dist/{VerticalWidget-DJn02myf.js.map → VerticalWidget-CcdRZmQK.js.map} +1 -1
  323. package/dist/{VerticalWidget-DiW_FZuh.cjs → VerticalWidget-DHWIKJUB.cjs} +2 -2
  324. package/dist/{VerticalWidget-DiW_FZuh.cjs.map → VerticalWidget-DHWIKJUB.cjs.map} +1 -1
  325. package/dist/{VerticalboxWidget-miKFocA3.cjs → VerticalboxWidget-BHNt0RrX.cjs} +2 -2
  326. package/dist/{VerticalboxWidget-miKFocA3.cjs.map → VerticalboxWidget-BHNt0RrX.cjs.map} +1 -1
  327. package/dist/{VerticalboxWidget-DHQMxtF3.js → VerticalboxWidget-DfsCYhrX.js} +5 -5
  328. package/dist/{VerticalboxWidget-DHQMxtF3.js.map → VerticalboxWidget-DfsCYhrX.js.map} +1 -1
  329. package/dist/{Widget-CP2CtyUr.js → Widget-B5HKasz2.js} +2 -2
  330. package/dist/{Widget-CP2CtyUr.js.map → Widget-B5HKasz2.js.map} +1 -1
  331. package/dist/{Widget-BMqF6Utz.cjs → Widget-CMzBJCGp.cjs} +2 -2
  332. package/dist/{Widget-BMqF6Utz.cjs.map → Widget-CMzBJCGp.cjs.map} +1 -1
  333. package/dist/components.cjs +1 -1
  334. package/dist/components.js +11 -11
  335. package/dist/tools/admin.cjs +6 -11
  336. package/dist/tools/admin.cjs.map +1 -1
  337. package/dist/tools/admin.js +1041 -1178
  338. package/dist/tools/admin.js.map +1 -1
  339. package/dist/tools/base.cjs +1 -1
  340. package/dist/tools/base.js +2 -2
  341. package/dist/tools/calendar.cjs +1 -1
  342. package/dist/tools/calendar.js +1 -1
  343. package/dist/tools/scriptrunner.cjs +6 -6
  344. package/dist/tools/scriptrunner.cjs.map +1 -1
  345. package/dist/tools/scriptrunner.js +852 -831
  346. package/dist/tools/scriptrunner.js.map +1 -1
  347. package/dist/vue-common.css +1 -1
  348. package/dist/widgets.cjs +1 -1
  349. package/dist/widgets.js +63 -63
  350. package/package.json +2 -2
  351. package/dist/Layout-DUWX7PWw.cjs +0 -2
  352. package/dist/SpacerWidget-C0RmQY3t.js +0 -19
  353. package/dist/SpacerWidget-C5x4sFAQ.cjs +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sources":["../../src/tools/admin/DownloadDialog.vue","../../src/tools/admin/EditDialog.vue","../../src/tools/admin/ModifiedPluginDialog.vue","../../src/tools/admin/tabs/index.js","../../src/tools/admin/OpenC3Admin.vue","../../../openc3-cosmos-ace-diff/dist/ace-diff.min.js","../../src/tools/admin/PluginDialog.vue"],"sourcesContent":["<!--\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\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Download Gems </span>\n <v-spacer />\n </v-toolbar>\n <v-card-text>\n <div class=\"pa-3\">\n <v-row class=\"my-2\"> Select a download option </v-row>\n <v-row>\n <v-col>\n <div class=\"px-2\">\n <v-btn\n block\n data-test=\"searchGithub\"\n color=\"primary\"\n :disabled=\"disableSearch\"\n @click=\"searchGithub\"\n >\n Github\n <v-icon end theme=\"dark\"> mdi-github </v-icon>\n </v-btn>\n </div>\n </v-col>\n </v-row>\n <!---\n <v-row>\n <v-col>\n <div class=\"px-2\">\n <v-btn\n @click=\"searchRuby\"\n block\n data-test=\"searchRuby\"\n color=\"primary\"\n :disabled=\"disableSearch\"\n >\n RubyGems\n <v-icon right dark> mdi-heart </v-icon>\n </v-btn>\n </div>\n </v-col>\n </v-row>\n --->\n <v-row class=\"mt-5\"> Community Gems </v-row>\n <div v-if=\"listData.length < 1\" class=\"mt-4\">\n <v-row class=\"mx-2\">\n <span> I’m sorry, Dave. No gems available.... </span>\n </v-row>\n </div>\n <div v-else class=\"mt-4\">\n <div v-for=\"(data, index) in listData\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ data.name }}</v-list-item-title>\n\n <v-list-item icon>\n <v-progress-circular\n v-if=\"activeDownload\"\n indeterminate\n color=\"primary\"\n />\n <v-btn\n v-else\n icon=\"mdi-cloud-download\"\n variant=\"text\"\n :disabled=\"activeDownload\"\n @click=\"downloadGem(data)\"\n />\n </v-list-item>\n </v-list-item>\n <v-divider v-if=\"index < listData.length - 1\" :key=\"index\" />\n </div>\n </div>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nexport default {\n props: {\n modelValue: Boolean,\n },\n data() {\n return {\n url: '',\n type: null,\n response: null,\n activeDownload: false,\n disableSearch: false,\n expanded: [],\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n listData: function () {\n if (!this.response) return []\n if (this.type === 'github') {\n return this.parseGithub()\n } else {\n return this.parseRuby()\n }\n },\n },\n methods: {\n parseGithub: function () {\n const gemRegEx = /\\w+.gem/\n return this.response.tree\n .filter((f) => gemRegEx.exec(f.path))\n .map((f) => {\n return {\n name: f.path,\n url: `https://raw.github.com/OpenC3/openc3-tools/main/${f.path}`,\n }\n })\n },\n getResponse: function () {\n this.disableSearch = true\n axios.get(this.url).then((response) => {\n this.response = response.data\n })\n setTimeout(() => {\n this.disableSearch = false\n }, 10000)\n },\n searchGithub: function () {\n this.type = 'github'\n this.url =\n 'https://api.github.com/repos/OpenC3/openc3-tools/git/trees/main?recursive=1'\n this.getResponse()\n },\n downloadGem: function (gem) {\n const link = document.createElement('a')\n link.href = gem.url\n link.setAttribute('download', gem.name)\n link.click()\n link.remove()\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"show\" :persistent=\"!readonly\" width=\"80vw\">\n <v-card>\n <form @submit.prevent=\"submit\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <v-btn\n class=\"mx-2\"\n icon=\"mdi-download\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"downloadIcon\"\n @click=\"download\"\n />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <div v-if=\"!readonly\">\n <v-row class=\"mt-3\"> Upload a file. </v-row>\n <v-row no-gutters align=\"center\">\n <v-col cols=\"3\">\n <v-btn\n block\n color=\"success\"\n :disabled=\"!file || loadingFile || readonly\"\n :loading=\"loadingFile\"\n data-test=\"editScreenLoadBtn\"\n @click=\"loadFile\"\n >\n Load\n <template #loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n <v-col cols=\"9\">\n <v-file-input\n v-model=\"file\"\n accept=\".json\"\n label=\"Click to select .json file.\"\n :disabled=\"readonly\"\n />\n </v-col>\n </v-row>\n </div>\n <v-row no-gutters>\n <pre\n ref=\"editor\"\n class=\"editor\"\n @contextmenu.prevent=\"showContextMenu\"\n ></pre>\n <v-menu v-model=\"contextMenu\" :target=\"[menuX, menuY]\">\n <v-list>\n <v-list-item\n title=\"Toggle Vim mode\"\n prepend-icon=\"extras:vim\"\n @click=\"toggleVimMode\"\n />\n </v-list>\n </v-menu>\n </v-row>\n <v-row class=\"my-3\">\n <span v-show=\"error\" class=\"text-red\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n class=\"mx-2\"\n data-test=\"editCancelBtn\"\n @click.prevent=\"close\"\n >\n Cancel\n </v-btn>\n <v-btn\n v-if=\"!readonly\"\n class=\"mx-2\"\n color=\"primary\"\n type=\"submit\"\n data-test=\"editSubmitBtn\"\n :disabled=\"!!error || readonly\"\n >\n Save\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport { AceEditorUtils } from '../../components/ace'\n\nexport default {\n props: {\n content: {\n type: String,\n required: true,\n },\n type: String,\n name: String,\n modelValue: Boolean,\n readonly: Boolean,\n },\n data() {\n return {\n editor: null,\n contextMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n title: function () {\n return `${this.type}: ${this.name}`\n },\n error: function () {\n if (this.editor && this.editor.getValue() === '' && !this.file) {\n return 'Input can not be blank.'\n }\n return null\n },\n },\n mounted() {\n const openPluginMode = this.buildPluginMode()\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n this.editor.session.setMode(new openPluginMode())\n this.editor.session.setTabSize(2)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.content)\n this.editor.clearSelection()\n AceEditorUtils.applyVimModeIfEnabled(this.editor)\n this.editor.focus()\n if (this.readonly) {\n this.editor.setReadOnly(true)\n }\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n },\n methods: {\n submit: function () {\n this.$emit('submit', this.editor.getValue())\n this.show = !this.show\n },\n close: function () {\n this.show = !this.show\n },\n download: function () {\n const blob = new Blob([this.editor.getValue()], {\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 `${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`,\n )\n link.click()\n },\n buildPluginMode() {\n let oop = ace.require('ace/lib/oop')\n let JsonHighlightRules = ace.require(\n 'ace/mode/json_highlight_rules',\n ).JsonHighlightRules\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let FoldMode = ace.require('ace/mode/folding/ruby').FoldMode\n let Mode = function () {\n this.HighlightRules = JsonHighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n showContextMenu: function (event) {\n this.menuX = event.pageX\n this.menuY = event.pageY\n\n let position = this.editor.getCursorPosition()\n let token = this.editor.session.getTokenAt(position.row, position.column)\n if (token) {\n let value = token.value.trim()\n if (value.includes(' ')) {\n this.docsKeyword = value.split(' ')[0]\n } else {\n this.docsKeyword = value\n }\n this.contextMenu = true\n }\n },\n toggleVimMode: function () {\n AceEditorUtils.toggleVimMode(this.editor)\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 50vh;\n width: 75vw;\n position: relative;\n font-size: 16px;\n}\n\n.v-textarea :deep(textarea) {\n padding: 5px;\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-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Modified Plugin </span>\n <v-spacer />\n </v-toolbar>\n <v-card-text class=\"pa-3\">\n <div>\n Plugin {{ plugin }} was modified. Would you like to delete the\n existing modified files?\n </div>\n <v-list-item\n v-for=\"(target, index) in modifiedTargets\"\n :key=\"index\"\n lines=\"two\"\n >\n <v-list-item-title>{{ target.name }}</v-list-item-title>\n <v-list-item-subtitle\n v-for=\"(file, itemIndex) in target.files\"\n :key=\"itemIndex\"\n >{{ file }}</v-list-item-subtitle\n >\n </v-list-item>\n <v-checkbox\n v-model=\"deleteModified\"\n label=\"DELETE MODIFIED! THIS CAN NOT BE UNDONE!!!\"\n color=\"error\"\n data-test=\"modified-plugin-delete-checkbox\"\n />\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"modified-plugin-cancel\"\n @click=\"\n () => {\n show = false\n $emit('cancel')\n }\n \"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n data-test=\"modified-plugin-submit\"\n @click=\"\n () => {\n show = false\n $emit('submit', deleteModified)\n }\n \"\n >\n Confirm\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n modelValue: Boolean,\n plugin: String,\n targets: Array,\n pluginDelete: Boolean,\n },\n data() {\n return {\n modifiedTargets: [],\n deleteModified: false,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n created() {\n for (const target of this.targets) {\n Api.get(`/openc3-api/targets/${target.name}/modified_files`).then(\n (response) => {\n if (response.data.length !== 0) {\n // Only push targets which actually have modified files\n this.modifiedTargets.push({\n name: target.name,\n files: response.data,\n })\n }\n },\n )\n }\n },\n}\n</script>\n\n<style scoped></style>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nconst TabsList = [\n {\n displayName: 'Plugins',\n name: 'PluginsTab',\n path: 'plugins',\n component: () => import('./PluginsTab.vue'),\n },\n {\n displayName: 'Targets',\n name: 'TargetsTab',\n path: 'targets',\n component: () => import('./TargetsTab.vue'),\n },\n {\n displayName: 'Interfaces',\n name: 'InterfacesTab',\n path: 'interfaces',\n component: () => import('./InterfacesTab.vue'),\n },\n {\n displayName: 'Routers',\n name: 'RoutersTab',\n path: 'routers',\n component: () => import('./RoutersTab.vue'),\n },\n {\n displayName: 'Microservices',\n name: 'MicroservicesTab',\n path: 'microservices',\n component: () => import('./MicroservicesTab.vue'),\n },\n {\n displayName: 'Packages',\n name: 'PackagesTab',\n path: 'packages',\n component: () => import('./PackagesTab.vue'),\n },\n {\n displayName: 'Tools',\n name: 'ToolsTab',\n path: 'tools',\n component: () => import('./ToolsTab.vue'),\n },\n {\n displayName: 'Redis',\n name: 'RedisTab',\n path: 'redis',\n component: () => import('./RedisTab.vue'),\n },\n {\n displayName: 'Secrets',\n name: 'SecretsTab',\n path: 'secrets',\n component: () => import('./SecretsTab.vue'),\n },\n {\n displayName: 'Settings',\n name: 'SettingsTab',\n path: 'settings',\n component: () => import('./SettingsTab.vue'),\n },\n]\n\nexport { TabsList }\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" />\n <v-card>\n <v-tabs v-model=\"curTab\" fixed-tabs>\n <v-tab v-for=\"(tab, index) in tabs\" :key=\"index\" :to=\"tab.path\">\n {{ tab.displayName }}\n </v-tab>\n </v-tabs>\n <router-view />\n </v-card>\n </div>\n</template>\n\n<script>\nimport { TopBar } from '@/components'\nimport { TabsList } from './tabs'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: 'Administrator Console',\n curTab: null,\n }\n },\n computed: {\n tabs: function () {\n return TabsList.map((tab) => {\n return {\n displayName: tab.displayName,\n path: { name: tab.name },\n }\n })\n },\n },\n}\n</script>\n","const g=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32};g.Diff=function(t,e){this[0]=t,this[1]=e};g.Diff.prototype.length=2;g.Diff.prototype.toString=function(){return this[0]+\",\"+this[1]};g.prototype.diff_main=function(t,e,n,i){typeof i>\"u\"&&(this.Diff_Timeout<=0?i=Number.MAX_VALUE:i=new Date().getTime()+this.Diff_Timeout*1e3);let l=i;if(t==null||e==null)throw new Error(\"Null input. (diff_main)\");if(t==e)return t?[new g.Diff(0,t)]:[];typeof n>\"u\"&&(n=!0);let r=n,s=this.diff_commonPrefix(t,e),o=t.substring(0,s);t=t.substring(s),e=e.substring(s),s=this.diff_commonSuffix(t,e);let h=t.substring(t.length-s);t=t.substring(0,t.length-s),e=e.substring(0,e.length-s);let a=this.diff_compute_(t,e,r,l);return o&&a.unshift(new g.Diff(0,o)),h&&a.push(new g.Diff(0,h)),this.diff_cleanupMerge(a),a};g.prototype.diff_compute_=function(t,e,n,i){let l;if(!t)return[new g.Diff(1,e)];if(!e)return[new g.Diff(-1,t)];let r=t.length>e.length?t:e,s=t.length>e.length?e:t,o=r.indexOf(s);return o!=-1?(l=[new g.Diff(1,r.substring(0,o)),new g.Diff(0,s),new g.Diff(1,r.substring(o+s.length))],t.length>e.length&&(l[0][0]=l[2][0]=-1),l):s.length==1?[new g.Diff(-1,t),new g.Diff(1,e)]:n&&t.length>100&&e.length>100?this.diff_lineMode_(t,e,i):this.diff_bisect_(t,e,i)};g.prototype.diff_lineMode_=function(t,e,n){let i=this.diff_linesToChars_(t,e);t=i.chars1,e=i.chars2;let l=i.lineArray,r=this.diff_main(t,e,!1,n);this.diff_charsToLines_(r,l),this.diff_cleanupSemantic(r),r.push(new g.Diff(0,\"\"));let s=0,o=0,h=0,a=\"\",c=\"\";for(;s<r.length;){switch(r[s][0]){case 1:h++,c+=r[s][1];break;case-1:o++,a+=r[s][1];break;case 0:if(o>=1&&h>=1){r.splice(s-o-h,o+h),s=s-o-h;let f=this.diff_main(a,c,!1,n);for(let u=f.length-1;u>=0;u--)r.splice(s,0,f[u]);s=s+f.length}h=0,o=0,a=\"\",c=\"\";break}s++}return r.pop(),r};g.prototype.diff_bisect_=function(t,e,n){let i=t.length,l=e.length,r=Math.ceil((i+l)/2),s=r,o=2*r,h=new Array(o),a=new Array(o);for(let d=0;d<o;d++)h[d]=-1,a[d]=-1;h[s+1]=0,a[s+1]=0;let c=i-l,f=c%2!=0,u=0,p=0,_=0,D=0;for(let d=0;d<r&&!(new Date().getTime()>n);d++){for(let E=-d+u;E<=d-p;E+=2){let L=s+E,m;E==-d||E!=d&&h[L-1]<h[L+1]?m=h[L+1]:m=h[L-1]+1;let F=m-E;for(;m<i&&F<l&&t.charAt(m)==e.charAt(F);)m++,F++;if(h[L]=m,m>i)p+=2;else if(F>l)u+=2;else if(f){let b=s+c-E;if(b>=0&&b<o&&a[b]!=-1){let w=i-a[b];if(m>=w)return this.diff_bisectSplit_(t,e,m,F,n)}}}for(let E=-d+_;E<=d-D;E+=2){let L=s+E,m;E==-d||E!=d&&a[L-1]<a[L+1]?m=a[L+1]:m=a[L-1]+1;let F=m-E;for(;m<i&&F<l&&t.charAt(i-m-1)==e.charAt(l-F-1);)m++,F++;if(a[L]=m,m>i)D+=2;else if(F>l)_+=2;else if(!f){let b=s+c-E;if(b>=0&&b<o&&h[b]!=-1){let w=h[b],y=s+w-b;if(m=i-m,w>=m)return this.diff_bisectSplit_(t,e,w,y,n)}}}}return[new g.Diff(-1,t),new g.Diff(1,e)]};g.prototype.diff_bisectSplit_=function(t,e,n,i,l){let r=t.substring(0,n),s=e.substring(0,i),o=t.substring(n),h=e.substring(i),a=this.diff_main(r,s,!1,l),c=this.diff_main(o,h,!1,l);return a.concat(c)};g.prototype.diff_linesToChars_=function(t,e){let n=[],i={};n[0]=\"\";function l(h){let a=\"\",c=0,f=-1,u=n.length;for(;f<h.length-1;){f=h.indexOf(`\n`,c),f==-1&&(f=h.length-1);let p=h.substring(c,f+1);(i.hasOwnProperty?i.hasOwnProperty(p):i[p]!==void 0)?a+=String.fromCharCode(i[p]):(u==r&&(p=h.substring(c),f=h.length),a+=String.fromCharCode(u),i[p]=u,n[u++]=p),c=f+1}return a}let r=4e4,s=l(t);r=65535;let o=l(e);return{chars1:s,chars2:o,lineArray:n}};g.prototype.diff_charsToLines_=function(t,e){for(let n=0;n<t.length;n++){let i=t[n][1],l=[];for(let r=0;r<i.length;r++)l[r]=e[i.charCodeAt(r)];t[n][1]=l.join(\"\")}};g.prototype.diff_commonPrefix=function(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;let n=0,i=Math.min(t.length,e.length),l=i,r=0;for(;n<l;)t.substring(r,l)==e.substring(r,l)?(n=l,r=n):i=l,l=Math.floor((i-n)/2+n);return l};g.prototype.diff_commonSuffix=function(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;let n=0,i=Math.min(t.length,e.length),l=i,r=0;for(;n<l;)t.substring(t.length-l,t.length-r)==e.substring(e.length-l,e.length-r)?(n=l,r=n):i=l,l=Math.floor((i-n)/2+n);return l};g.prototype.diff_commonOverlap_=function(t,e){let n=t.length,i=e.length;if(n==0||i==0)return 0;n>i?t=t.substring(n-i):n<i&&(e=e.substring(0,n));let l=Math.min(n,i);if(t==e)return l;let r=0,s=1;for(;;){let o=t.substring(l-s),h=e.indexOf(o);if(h==-1)return r;s+=h,(h==0||t.substring(l-s)==e.substring(0,s))&&(r=s,s++)}};g.prototype.diff_halfMatch_=function(t,e){if(this.Diff_Timeout<=0)return null;let n=t.length>e.length?t:e,i=t.length>e.length?e:t;if(n.length<4||i.length*2<n.length)return null;let l=this;function r(_,D,d){let E=_.substring(d,d+Math.floor(_.length/4)),L=-1,m=\"\",F,b,w,y;for(;(L=D.indexOf(E,L+1))!=-1;){let T=l.diff_commonPrefix(_.substring(d),D.substring(L)),C=l.diff_commonSuffix(_.substring(0,d),D.substring(0,L));m.length<C+T&&(m=D.substring(L-C,L)+D.substring(L,L+T),F=_.substring(0,d-C),b=_.substring(d+T),w=D.substring(0,L-C),y=D.substring(L+T))}return m.length*2>=_.length?[F,b,w,y,m]:null}let s=r(n,i,Math.ceil(n.length/4)),o=r(n,i,Math.ceil(n.length/2)),h;if(!s&&!o)return null;o?s?h=s[4].length>o[4].length?s:o:h=o:h=s;let a,c,f,u;t.length>e.length?(a=h[0],c=h[1],f=h[2],u=h[3]):(f=h[0],u=h[1],a=h[2],c=h[3]);let p=h[4];return[a,c,f,u,p]};g.prototype.diff_cleanupSemantic=function(t){let e=!1,n=[],i=0,l=null,r=0,s=0,o=0,h=0,a=0;for(;r<t.length;)t[r][0]==0?(n[i++]=r,s=h,o=a,h=0,a=0,l=t[r][1]):(t[r][0]==1?h+=t[r][1].length:a+=t[r][1].length,l&&l.length<=Math.max(s,o)&&l.length<=Math.max(h,a)&&(t.splice(n[i-1],0,new g.Diff(-1,l)),t[n[i-1]+1][0]=1,i--,i--,r=i>0?n[i-1]:-1,s=0,o=0,h=0,a=0,l=null,e=!0)),r++;for(e&&this.diff_cleanupMerge(t),this.diff_cleanupSemanticLossless(t),r=1;r<t.length;){if(t[r-1][0]==-1&&t[r][0]==1){let c=t[r-1][1],f=t[r][1],u=this.diff_commonOverlap_(c,f),p=this.diff_commonOverlap_(f,c);u>=p?(u>=c.length/2||u>=f.length/2)&&(t.splice(r,0,new g.Diff(0,f.substring(0,u))),t[r-1][1]=c.substring(0,c.length-u),t[r+1][1]=f.substring(u),r++):(p>=c.length/2||p>=f.length/2)&&(t.splice(r,0,new g.Diff(0,c.substring(0,p))),t[r-1][0]=1,t[r-1][1]=f.substring(0,f.length-p),t[r+1][0]=-1,t[r+1][1]=c.substring(p),r++),r++}r++}};g.prototype.diff_cleanupSemanticLossless=function(t){function e(i,l){if(!i||!l)return 6;let r=i.charAt(i.length-1),s=l.charAt(0),o=r.match(g.nonAlphaNumericRegex_),h=s.match(g.nonAlphaNumericRegex_),a=o&&r.match(g.whitespaceRegex_),c=h&&s.match(g.whitespaceRegex_),f=a&&r.match(g.linebreakRegex_),u=c&&s.match(g.linebreakRegex_),p=f&&i.match(g.blanklineEndRegex_),_=u&&l.match(g.blanklineStartRegex_);return p||_?5:f||u?4:o&&!a&&c?3:a||c?2:o||h?1:0}let n=1;for(;n<t.length-1;){if(t[n-1][0]==0&&t[n+1][0]==0){let i=t[n-1][1],l=t[n][1],r=t[n+1][1],s=this.diff_commonSuffix(i,l);if(s){i[i.length-s]===`\n`&&(s-=1);let f=l.substring(l.length-s);i=i.substring(0,i.length-s),l=f+l.substring(0,l.length-s),r=f+r}let o=i,h=l,a=r,c=e(i,l)+e(l,r);for(;l.charAt(0)===r.charAt(0);){i+=l.charAt(0),l=l.substring(1)+r.charAt(0),r=r.substring(1);let f=e(i,l)+e(l,r);f>=c&&(c=f,o=i,h=l,a=r)}t[n-1][1]!=o&&(o?t[n-1][1]=o:(t.splice(n-1,1),n--),t[n][1]=h,a?t[n+1][1]=a:(t.splice(n+1,1),n--))}n++}};g.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;g.whitespaceRegex_=/\\s/;g.linebreakRegex_=/[\\r\\n]/;g.blanklineEndRegex_=/\\n\\r?\\n$/;g.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;g.prototype.diff_cleanupEfficiency=function(t){let e=!1,n=[],i=0,l=null,r=0,s=!1,o=!1,h=!1,a=!1;for(;r<t.length;)t[r][0]==0?(t[r][1].length<this.Diff_EditCost&&(h||a)?(n[i++]=r,s=h,o=a,l=t[r][1]):(i=0,l=null),h=a=!1):(t[r][0]==-1?a=!0:h=!0,l&&(s&&o&&h&&a||l.length<this.Diff_EditCost/2&&s+o+h+a==3)&&(t.splice(n[i-1],0,new g.Diff(-1,l)),t[n[i-1]+1][0]=1,i--,l=null,s&&o?(h=a=!0,i=0):(i--,r=i>0?n[i-1]:-1,h=a=!1),e=!0)),r++;e&&this.diff_cleanupMerge(t)};g.prototype.diff_cleanupMerge=function(t){t.push(new g.Diff(0,\"\"));let e=0,n=0,i=0,l=\"\",r=\"\",s;for(;e<t.length;)switch(t[e][0]){case 1:i++,r+=t[e][1],e++;break;case-1:n++,l+=t[e][1],e++;break;case 0:n+i>1?(n!==0&&i!==0&&(s=this.diff_commonPrefix(r,l),s!==0&&(e-n-i>0&&t[e-n-i-1][0]==0?t[e-n-i-1][1]+=r.substring(0,s):(t.splice(0,0,new g.Diff(0,r.substring(0,s))),e++),r=r.substring(s),l=l.substring(s)),s=this.diff_commonSuffix(r,l),s!==0&&(t[e][1]=r.substring(r.length-s)+t[e][1],r=r.substring(0,r.length-s),l=l.substring(0,l.length-s))),e-=n+i,t.splice(e,n+i),l.length&&(t.splice(e,0,new g.Diff(-1,l)),e++),r.length&&(t.splice(e,0,new g.Diff(1,r)),e++),e++):e!==0&&t[e-1][0]==0?(t[e-1][1]+=t[e][1],t.splice(e,1)):e++,i=0,n=0,l=\"\",r=\"\";break}t[t.length-1][1]===\"\"&&t.pop();let o=!1;for(e=1;e<t.length-1;)t[e-1][0]==0&&t[e+1][0]==0&&(t[e][1].substring(t[e][1].length-t[e-1][1].length)==t[e-1][1]?(t[e][1]=t[e-1][1]+t[e][1].substring(0,t[e][1].length-t[e-1][1].length),t[e+1][1]=t[e-1][1]+t[e+1][1],t.splice(e-1,1),o=!0):t[e][1].substring(0,t[e+1][1].length)==t[e+1][1]&&(t[e-1][1]+=t[e+1][1],t[e][1]=t[e][1].substring(t[e+1][1].length)+t[e+1][1],t.splice(e+1,1),o=!0)),e++;o&&this.diff_cleanupMerge(t)};g.prototype.diff_cleanupSplitSurrogates=function(t){let e;for(let n=0;n<t.length;n++){let i=t[n],l=i[1][0],r=i[1][i[1].length-1];if(i[1].length===0){t.splice(n--,1);continue}if(r&&this.isHighSurrogate(r)&&(e=r,i[1]=i[1].slice(0,-1)),e&&l&&this.isHighSurrogate(e)&&this.isLowSurrogate(l)&&(i[1]=e+i[1]),i[1].length===0){t.splice(n--,1);continue}}return t};g.prototype.isHighSurrogate=function(t){let e=t.charCodeAt(0);return e>=55296&&e<=56319};g.prototype.isLowSurrogate=function(t){let e=t.charCodeAt(0);return e>=56320&&e<=57343};g.prototype.digit16=function(t){switch(t){case\"0\":return 0;case\"1\":return 1;case\"2\":return 2;case\"3\":return 3;case\"4\":return 4;case\"5\":return 5;case\"6\":return 6;case\"7\":return 7;case\"8\":return 8;case\"9\":return 9;case\"A\":case\"a\":return 10;case\"B\":case\"b\":return 11;case\"C\":case\"c\":return 12;case\"D\":case\"d\":return 13;case\"E\":case\"e\":return 14;case\"F\":case\"f\":return 15;default:throw new Error(\"Invalid hex-code\")}};g.prototype.decodeURI=function(t){try{return decodeURI(t)}catch{let n=0,i=\"\";for(;n<t.length;){if(t[n]!==\"%\"){i+=t[n++];continue}let l=(this.digit16(t[n+1])<<4)+this.digit16(t[n+2]);if((l&128)===0){i+=String.fromCharCode(l),n+=3;continue}if(t[n+3]!==\"%\")throw new URIError(\"URI malformed\");let r=(this.digit16(t[n+4])<<4)+this.digit16(t[n+5]);if((r&192)!==128)throw new URIError(\"URI malformed\");if(r=r&63,(l&224)===192){i+=String.fromCharCode((l&31)<<6|r),n+=6;continue}if(t[n+6]!==\"%\")throw new URIError(\"URI malformed\");let s=(this.digit16(t[n+7])<<4)+this.digit16(t[n+8]);if((s&192)!==128)throw new URIError(\"URI malformed\");if(s=s&63,(l&240)===224){i+=String.fromCharCode((l&15)<<12|r<<6|s),n+=9;continue}if(t[n+9]!==\"%\")throw new URIError(\"URI malformed\");let o=(this.digit16(t[n+10])<<4)+this.digit16(t[n+11]);if((o&192)!==128)throw new URIError(\"URI malformed\");if(o=o&63,(l&248)===240){let h=(l&7)<<18|r<<12|s<<6|o;if(h>=65536&&h<=1114111){i+=String.fromCharCode((h&65535)>>>10&1023|55296),i+=String.fromCharCode(56320|h&65535&1023),n+=12;continue}}throw new URIError(\"URI malformed\")}return i}};g.prototype.diff_xIndex=function(t,e){let n=0,i=0,l=0,r=0,s;for(s=0;s<t.length&&(t[s][0]!==1&&(n+=t[s][1].length),t[s][0]!==-1&&(i+=t[s][1].length),!(n>e));s++)l=n,r=i;return t.length!=s&&t[s][0]===-1?r:r+(e-l)};g.prototype.diff_prettyHtml=function(t){t=this.diff_cleanupSplitSurrogates(t);let e=[],n=/&/g,i=/</g,l=/>/g,r=/\\n/g;for(let s=0;s<t.length;s++){let o=t[s][0],a=t[s][1].replace(n,\"&amp;\").replace(i,\"&lt;\").replace(l,\"&gt;\").replace(r,\"&para;<br>\");switch(o){case 1:e[s]='<ins style=\"background:#e6ffe6;\">'+a+\"</ins>\";break;case-1:e[s]='<del style=\"background:#ffe6e6;\">'+a+\"</del>\";break;case 0:e[s]=\"<span>\"+a+\"</span>\";break}}return e.join(\"\")};g.prototype.diff_text1=function(t){let e=[];for(let n=0;n<t.length;n++)t[n][0]!==1&&(e[n]=t[n][1]);return e.join(\"\")};g.prototype.diff_text2=function(t){let e=[];for(let n=0;n<t.length;n++)t[n][0]!==-1&&(e[n]=t[n][1]);return e.join(\"\")};g.prototype.diff_levenshtein=function(t){let e=0,n=0,i=0;for(let l=0;l<t.length;l++){let r=t[l][0],s=t[l][1];switch(r){case 1:n+=s.length;break;case-1:i+=s.length;break;case 0:e+=Math.max(n,i),n=0,i=0;break}}return e+=Math.max(n,i),e};g.prototype.diff_toDelta=function(t){t=this.diff_cleanupSplitSurrogates(t);let e=[];for(let n=0;n<t.length;n++)switch(t[n][0]){case 1:e[n]=\"+\"+encodeURI(t[n][1]);break;case-1:e[n]=\"-\"+t[n][1].length;break;case 0:e[n]=\"=\"+t[n][1].length;break}return e.join(\"\t\").replace(/%20/g,\" \")};g.prototype.diff_fromDelta=function(t,e){let n=0,i=\"\",l=[],r=0,s=0,o=e.split(/\\t/g);for(let h=0;h<o.length;h++){let a=o[h].substring(1);switch(o[h].charAt(0)){case\"+\":try{l[r++]=new g.Diff(1,this.decodeURI(a))}catch{throw new Error(\"Illegal escape in diff_fromDelta: \"+a)}break;case\"-\":case\"=\":if(n=parseInt(a,10),isNaN(n)||n<0)throw new Error(\"Invalid number in diff_fromDelta: \"+a);i=t.substring(s,s+=n),o[h].charAt(0)==\"=\"?l[r++]=new g.Diff(0,i):l[r++]=new g.Diff(-1,i);break;default:if(o[h])throw new Error(\"Invalid diff operation in diff_fromDelta: \"+o[h])}}if(s!=t.length)throw new Error(\"Delta length (\"+s+\") does not equal source text length (\"+t.length+\").\");return l};g.prototype.match_main=function(t,e,n){if(t==null||e==null||n==null)throw new Error(\"Null input. (match_main)\");return n=Math.max(0,Math.min(n,t.length)),t==e?0:t.length?t.substring(n,n+e.length)==e?n:this.match_bitap_(t,e,n):-1};g.prototype.match_bitap_=function(t,e,n){if(e.length>this.Match_MaxBits)throw new Error(\"Pattern too long for this browser.\");let i=this.match_alphabet_(e),l=this;function r(p,_){let D=p/e.length,d=Math.abs(n-_);return l.Match_Distance?D+d/l.Match_Distance:d?1:D}let s=this.Match_Threshold,o=t.indexOf(e,n);o!=-1&&(s=Math.min(r(0,o),s),o=t.lastIndexOf(e,n+e.length),o!=-1&&(s=Math.min(r(0,o),s)));let h=1<<e.length-1;o=-1;let a,c,f=e.length+t.length,u;for(let p=0;p<e.length;p++){for(a=0,c=f;a<c;)r(p,n+c)<=s?a=c:f=c,c=Math.floor((f-a)/2+a);f=c;let _=Math.max(1,n-c+1),D=Math.min(n+c,t.length)+e.length,d=Array(D+2);d[D+1]=(1<<p)-1;for(let E=D;E>=_;E--){let L=i[t.charAt(E-1)];if(p===0?d[E]=(d[E+1]<<1|1)&L:d[E]=(d[E+1]<<1|1)&L|((u[E+1]|u[E])<<1|1)|u[E+1],d[E]&h){let m=r(p,E-1);if(m<=s)if(s=m,o=E-1,o>n)_=Math.max(1,2*n-o);else break}}if(r(p+1,n)>s)break;u=d}return o};g.prototype.match_alphabet_=function(t){let e={};for(let n=0;n<t.length;n++)e[t.charAt(n)]=0;for(let n=0;n<t.length;n++)e[t.charAt(n)]|=1<<t.length-n-1;return e};g.prototype.patch_addContext_=function(t,e){if(e.length==0)return;if(t.start2===null)throw Error(\"patch not initialized\");let n=e.substring(t.start2,t.start2+t.length1),i=0;for(;e.indexOf(n)!=e.lastIndexOf(n)&&n.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=e.substring(t.start2-i,t.start2+t.length1+i);i+=this.Patch_Margin,t.start2-i>0&&g.prototype.isLowSurrogate(e[t.start2-i])&&i++;let l=e.substring(t.start2-i,t.start2);l&&t.diffs.unshift(new g.Diff(0,l)),t.start2+t.length1+i<e.length&&g.prototype.isHighSurrogate(e[t.start2+t.length1+i])&&i++;let r=e.substring(t.start2+t.length1,t.start2+t.length1+i);r&&t.diffs.push(new g.Diff(0,r)),t.start1-=l.length,t.start2-=l.length,t.length1+=l.length+r.length,t.length2+=l.length+r.length};g.prototype.patch_make=function(t,e,n){let i,l;if(typeof t==\"string\"&&typeof e==\"string\"&&typeof n>\"u\")i=t,l=this.diff_main(i,e,!0),l.length>2&&(this.diff_cleanupSemantic(l),this.diff_cleanupEfficiency(l));else if(t&&typeof t==\"object\"&&typeof e>\"u\"&&typeof n>\"u\")l=t,i=this.diff_text1(l);else if(typeof t==\"string\"&&e&&typeof e==\"object\"&&typeof n>\"u\")i=t,l=e;else if(typeof t==\"string\"&&typeof e==\"string\"&&n&&typeof n==\"object\")i=t,l=n;else throw new Error(\"Unknown call format to patch_make.\");if(l.length===0)return[];l=this.diff_cleanupSplitSurrogates(l);let r=[],s=new g.patch_obj,o=0,h=0,a=0,c=i,f=i;for(let u=0;u<l.length;u++){let p=l[u][0],_=l[u][1];switch(!o&&p!==0&&(s.start1=h,s.start2=a),p){case 1:s.diffs[o++]=l[u],s.length2+=_.length,f=f.substring(0,a)+_+f.substring(a);break;case-1:s.length1+=_.length,s.diffs[o++]=l[u],f=f.substring(0,a)+f.substring(a+_.length);break;case 0:_.length<=2*this.Patch_Margin&&o&&l.length!=u+1?(s.diffs[o++]=l[u],s.length1+=_.length,s.length2+=_.length):_.length>=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),r.push(s),s=new g.patch_obj,o=0,c=f,h=a);break}p!==1&&(h+=_.length),p!==-1&&(a+=_.length)}return o&&(this.patch_addContext_(s,c),r.push(s)),r};g.prototype.patch_deepCopy=function(t){let e=[];for(let n=0;n<t.length;n++){let i=t[n],l=new g.patch_obj;l.diffs=[];for(let r=0;r<i.diffs.length;r++)l.diffs[r]=new g.Diff(i.diffs[r][0],i.diffs[r][1]);l.start1=i.start1,l.start2=i.start2,l.length1=i.length1,l.length2=i.length2,e[n]=l}return e};g.prototype.patch_apply=function(t,e){if(t.length==0)return[e,[]];t=this.patch_deepCopy(t);let n=this.patch_addPadding(t);e=n+e+n,this.patch_splitMax(t);let i=0,l=[];for(let r=0;r<t.length;r++){let s=t[r].start2+i,o=this.diff_text1(t[r].diffs),h,a=-1;if(o.length>this.Match_MaxBits?(h=this.match_main(e,o.substring(0,this.Match_MaxBits),s),h!=-1&&(a=this.match_main(e,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(a==-1||h>=a)&&(h=-1))):h=this.match_main(e,o,s),h==-1)l[r]=!1,i-=t[r].length2-t[r].length1;else{l[r]=!0,i=h-s;let c;if(a==-1?c=e.substring(h,h+o.length):c=e.substring(h,a+this.Match_MaxBits),o==c)e=e.substring(0,h)+this.diff_text2(t[r].diffs)+e.substring(h+o.length);else{let f=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(f)/o.length>this.Patch_DeleteThreshold)l[r]=!1;else{this.diff_cleanupSemanticLossless(f);let u=0,p;for(let _=0;_<t[r].diffs.length;_++){let D=t[r].diffs[_];D[0]!==0&&(p=this.diff_xIndex(f,u)),D[0]===1?e=e.substring(0,h+p)+D[1]+e.substring(h+p):D[0]===-1&&(e=e.substring(0,h+p)+e.substring(h+this.diff_xIndex(f,u+D[1].length))),D[0]!==-1&&(u+=D[1].length)}}}}}return e=e.substring(n.length,e.length-n.length),[e,l]};g.prototype.patch_addPadding=function(t){let e=this.Patch_Margin,n=\"\";for(let r=1;r<=e;r++)n+=String.fromCharCode(r);for(let r=0;r<t.length;r++)t[r].start1+=e,t[r].start2+=e;let i=t[0],l=i.diffs;if(l.length==0||l[0][0]!=0)l.unshift(new g.Diff(0,n)),i.start1-=e,i.start2-=e,i.length1+=e,i.length2+=e;else if(e>l[0][1].length){let r=e-l[0][1].length;l[0][1]=n.substring(l[0][1].length)+l[0][1],i.start1-=r,i.start2-=r,i.length1+=r,i.length2+=r}if(i=t[t.length-1],l=i.diffs,l.length==0||l[l.length-1][0]!=0)l.push(new g.Diff(0,n)),i.length1+=e,i.length2+=e;else if(e>l[l.length-1][1].length){let r=e-l[l.length-1][1].length;l[l.length-1][1]+=n.substring(0,r),i.length1+=r,i.length2+=r}return n};g.prototype.patch_splitMax=function(t){let e=this.Match_MaxBits;for(let n=0;n<t.length;n++){if(t[n].length1<=e)continue;let i=t[n];t.splice(n--,1);let l=i.start1,r=i.start2,s=\"\";for(;i.diffs.length!==0;){let o=new g.patch_obj,h=!0;for(o.start1=l-s.length,o.start2=r-s.length,s!==\"\"&&(o.length1=o.length2=s.length,o.diffs.push(new g.Diff(0,s)));i.diffs.length!==0&&o.length1<e-this.Patch_Margin;){let c=i.diffs[0][0],f=i.diffs[0][1];c===1?(o.length2+=f.length,r+=f.length,o.diffs.push(i.diffs.shift()),h=!1):c===-1&&o.diffs.length==1&&o.diffs[0][0]==0&&f.length>2*e?(o.length1+=f.length,l+=f.length,h=!1,o.diffs.push(new g.Diff(c,f)),i.diffs.shift()):(f=f.substring(0,e-o.length1-this.Patch_Margin),o.length1+=f.length,l+=f.length,c===0?(o.length2+=f.length,r+=f.length):h=!1,o.diffs.push(new g.Diff(c,f)),f==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(f.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);let a=this.diff_text1(i.diffs).substring(0,this.Patch_Margin);a!==\"\"&&(o.length1+=a.length,o.length2+=a.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===0?o.diffs[o.diffs.length-1][1]+=a:o.diffs.push(new g.Diff(0,a))),h||t.splice(++n,0,o)}}};g.prototype.patch_toText=function(t){let e=[];for(let n=0;n<t.length;n++)e[n]=t[n];return e.join(\"\")};g.prototype.patch_fromText=function(t){let e=[];if(!t)return e;let n=t.split(`\n`),i=0,l=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;for(;i<n.length;){let r=n[i].match(l);if(!r)throw new Error(\"Invalid patch string: \"+n[i]);let s=new g.patch_obj;for(e.push(s),s.start1=parseInt(r[1],10),r[2]===\"\"?(s.start1--,s.length1=1):r[2]==\"0\"?s.length1=0:(s.start1--,s.length1=parseInt(r[2],10)),s.start2=parseInt(r[3],10),r[4]===\"\"?(s.start2--,s.length2=1):r[4]==\"0\"?s.length2=0:(s.start2--,s.length2=parseInt(r[4],10)),i++;i<n.length;){let o=n[i].charAt(0),h=\"\";try{h=decodeURI(n[i].substring(1))}catch{throw new Error(\"Illegal escape in patch_fromText: \"+h)}if(o==\"-\")s.diffs.push(new g.Diff(-1,h));else if(o==\"+\")s.diffs.push(new g.Diff(1,h));else if(o==\" \")s.diffs.push(new g.Diff(0,h));else{if(o==\"@\")break;if(o!==\"\")throw new Error('Invalid patch mode \"'+o+'\" in: '+h)}i++}}return e};g.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};g.patch_obj.prototype.toString=function(){let t,e;this.length1===0?t=this.start1+\",0\":this.length1==1?t=this.start1+1:t=this.start1+1+\",\"+this.length1,this.length2===0?e=this.start2+\",0\":this.length2==1?e=this.start2+1:e=this.start2+1+\",\"+this.length2;let n=[\"@@ -\"+t+\" +\"+e+` @@\n`],i;g.prototype.diff_cleanupSplitSurrogates(this.diffs);for(let l=0;l<this.diffs.length;l++){switch(this.diffs[l][0]){case 1:i=\"+\";break;case-1:i=\"-\";break;case 0:i=\" \";break}n[l+1]=i+encodeURI(this.diffs[l][1])+`\n`}return n.join(\"\").replace(/%20/g,\" \")};function R(t){return t&&typeof t==\"object\"&&!Array.isArray(t)&&t!==null}function U(t,e){return R(t)&&R(e)&&Object.keys(e).forEach(n=>{n===\"__proto__\"||n===\"constructor\"||(R(e[n])?((!t[n]||!R(t[n]))&&(t[n]=e[n]),U(t[n],e[n])):Object.assign(t,{[n]:e[n]}))}),t}function N(t,e,n=!1){let i=null,l=!0;return(...r)=>{const s=n&&l,o=()=>{t.apply(this,r),i=null};s&&(l=!1,o()),i||(i=setTimeout(o,e))}}function tt(t,e){let n;return(...i)=>{const l=this;clearTimeout(n),n=setTimeout(()=>t.apply(l,i),e)}}function O(t=\"\"){return t.replace(/\\r\\n/g,`\n`)}function v(t,e,n,i){const l=n-t,r=t+l/2;return`M ${t} ${e} C ${r},${e} ${r},${i} ${n},${i}`}const I={DIFF_EQUAL:0,DIFF_DELETE:-1,DIFF_INSERT:1,EDITOR_RIGHT:\"right\",EDITOR_LEFT:\"left\",RTL:\"rtl\",LTR:\"ltr\",SVG_NS:\"http://www.w3.org/2000/svg\",DIFF_GRANULARITY_SPECIFIC:\"specific\",DIFF_GRANULARITY_BROAD:\"broad\"};function H(t,e){let{mode:n}=t.options;return e===I.EDITOR_LEFT&&t.options.left.mode!==null&&(n=t.options.left.mode),e===I.EDITOR_RIGHT&&t.options.right.mode!==null&&(n=t.options.right.mode),n}function Q(t,e){let{theme:n}=t.options;return e===I.EDITOR_LEFT&&t.options.left.theme!==null&&(n=t.options.left.theme),e===I.EDITOR_RIGHT&&t.options.right.theme!==null&&(n=t.options.right.theme),n}function Y(t,e){return t.ace.getSession().doc.getLine(e)}function et(t){return document.getElementById(t.options.left.id).offsetHeight}function x(t){const e=document.createElement(\"div\"),n={class:t.className,style:`top:${t.topOffset}px`,title:t.tooltip,\"data-diff-index\":t.diffIndex};for(const i in n)e.setAttribute(i,n[i]);return e.innerHTML=t.arrowContent,e}function M(t,e){const n=Math.random().toString(36).substr(2,5),i=`js-${e}-${n}`,l=t.querySelector(`.${e}`);if(l)return l.id=l.id||i,l.id;const r=document.createElement(\"div\");return t.appendChild(r),r.className=e,r.id=i,r.id}function $(t,e,n,i){const l=t===\"document\"?document:document.querySelector(t);l.addEventListener(e,r=>{const s=l.querySelectorAll(n),{target:o}=r;for(let h=0,a=s.length;h<a;h+=1){let c=o;const f=s[h];for(;c&&c!==l;)c===f&&i.call(f,r),c=c.parentNode}})}let A;function nt(t){if(t.Range)return t.Range;const e=t.acequire||t.require;return e?e(\"ace/range\"):!1}function k(t={}){if(!(this instanceof k))return new k(t);const e=this,n=()=>window?window.ace:void 0;e.options=U({ace:n(),mode:null,theme:null,element:null,diffGranularity:I.DIFF_GRANULARITY_BROAD,lockScrolling:!1,showDiffs:!0,showConnectors:!0,maxDiffs:5e3,left:{id:null,content:null,mode:null,theme:null,editable:!0,copyLinkEnabled:!0},right:{id:null,content:null,mode:null,theme:null,editable:!0,copyLinkEnabled:!0},classes:{gutterID:\"acediff__gutter\",diff:\"acediff__diffLine\",connector:\"acediff__connector\",newCodeConnectorLink:\"acediff__newCodeConnector\",newCodeConnectorLinkContent:\"&#8594;\",deletedCodeConnectorLink:\"acediff__deletedCodeConnector\",deletedCodeConnectorLinkContent:\"&#8592;\",copyRightContainer:\"acediff__copy--right\",copyLeftContainer:\"acediff__copy--left\"},connectorYOffset:0},t);const{ace:i}=e.options;if(!i){const l=\"No ace editor found nor supplied - `options.ace` or `window.ace` is missing\";return console.error(l),new Error(l)}if(A=nt(i),!A){const l=\"Could not require Range module for Ace. Depends on your bundling strategy, but it usually comes with Ace itself. See https://ace.c9.io/api/range.html, open an issue on GitHub ace-diff/ace-diff\";return console.error(l),new Error(l)}if(e.options.element===null){const l=\"You need to specify an element for Ace-diff - `options.element` is missing\";return console.error(l),new Error(l)}if(e.options.element instanceof HTMLElement?e.el=e.options.element:e.el=document.body.querySelector(e.options.element),!e.el){const l=`Can't find the specified element ${e.options.element}`;return console.error(l),new Error(l)}e.options.left.id=M(e.el,\"acediff__left\"),e.options.classes.gutterID=M(e.el,\"acediff__gutter\"),e.options.right.id=M(e.el,\"acediff__right\"),e.el.innerHTML=`<div class=\"acediff__wrap\">${e.el.innerHTML}</div>`,e.editors={left:{ace:i.edit(e.options.left.id),markers:[],lineLengths:[]},right:{ace:i.edit(e.options.right.id),markers:[],lineLengths:[]},editorHeight:null},e.editors.left.ace.getSession().setMode(H(e,I.EDITOR_LEFT)),e.editors.right.ace.getSession().setMode(H(e,I.EDITOR_RIGHT)),e.editors.left.ace.setReadOnly(!e.options.left.editable),e.editors.right.ace.setReadOnly(!e.options.right.editable),e.editors.left.ace.setTheme(Q(e,I.EDITOR_LEFT)),e.editors.right.ace.setTheme(Q(e,I.EDITOR_RIGHT)),e.editors.left.ace.setValue(O(e.options.left.content),-1),e.editors.right.ace.setValue(O(e.options.right.content),-1),e.editors.editorHeight=et(e),setTimeout(()=>{e.lineHeight=e.editors.left.ace.renderer.lineHeight,it(e),ot(e),K(e),e.diff()},1)}k.prototype={setOptions(t){U(this.options,t),this.diff()},getNumDiffs(){return this.diffs.length},getEditors(){return{left:this.editors.left.ace,right:this.editors.right.ace}},diff(){const t=new g,e=this.editors.left.ace.getSession().getValue(),n=this.editors.right.ace.getSession().getValue(),i=t.diff_main(n,e);t.diff_cleanupSemantic(i),this.editors.left.lineLengths=G(this.editors.left),this.editors.right.lineLengths=G(this.editors.right);const l=[],r={left:0,right:0};i.forEach(s=>{const o=s[0];let h=s[1];h.length!==0&&(o===I.DIFF_EQUAL?(r.left+=h.length,r.right+=h.length):o===I.DIFF_DELETE?(l.push(q(this,I.DIFF_DELETE,r.left,r.right,h)),r.right+=h.length):o===I.DIFF_INSERT&&(l.push(q(this,I.DIFF_INSERT,r.left,r.right,h)),r.left+=h.length))},this),this.diffs=gt(this,l),!(this.diffs.length>this.options.maxDiffs)&&(J(this),X(this))},destroy(){const t=this.editors.left.ace.getValue();this.editors.left.ace.destroy();let e=this.editors.left.ace.container,n=e.cloneNode(!1);n.textContent=t,e.parentNode.replaceChild(n,e);const i=this.editors.right.ace.getValue();this.editors.right.ace.destroy(),e=this.editors.right.ace.container,n=e.cloneNode(!1),n.textContent=i,e.parentNode.replaceChild(n,e),document.getElementById(this.options.classes.gutterID).innerHTML=\"\",Z()}};let Z=()=>{};function it(t){t.editors.left.ace.getSession().on(\"changeScrollTop\",N(()=>{B(t)},16)),t.editors.right.ace.getSession().on(\"changeScrollTop\",N(()=>{B(t)},16));const e=t.diff.bind(t);t.editors.left.ace.on(\"change\",e),t.editors.right.ace.on(\"change\",e),t.options.left.copyLinkEnabled&&$(`#${t.options.classes.gutterID}`,\"click\",`.${t.options.classes.newCodeConnectorLink}`,i=>{P(t,i,I.LTR)}),t.options.right.copyLinkEnabled&&$(`#${t.options.classes.gutterID}`,\"click\",`.${t.options.classes.deletedCodeConnectorLink}`,i=>{P(t,i,I.RTL)});const n=tt(()=>{t.editors.availableHeight=document.getElementById(t.options.left.id).offsetHeight,t.diff()},250);window.addEventListener(\"resize\",n),Z=()=>{window.removeEventListener(\"resize\",n)}}function P(t,e,n){const i=parseInt(e.target.getAttribute(\"data-diff-index\"),10),l=t.diffs[i];let r,s,o,h,a,c;n===I.LTR?(r=t.editors.left,s=t.editors.right,o=l.leftStartLine,h=l.leftEndLine,a=l.rightStartLine,c=l.rightEndLine):(r=t.editors.right,s=t.editors.left,o=l.rightStartLine,h=l.rightEndLine,a=l.leftStartLine,c=l.leftEndLine);let f=\"\";for(let p=o;p<h;p+=1)f+=Y(r,p),p===o&&f===\"\"&&a!=0&&(f+=`\n`),p<r.ace.getSession().getLength()-1&&(f+=`\n`);const u=s.ace.getSession().getScrollTop();s.ace.getSession().replace(new A(a,0,c,0),f),s.ace.getSession().setScrollTop(parseInt(u,10)),t.diff()}function G(t){const e=t.ace.getSession().doc.getAllLines(),n=[];return e.forEach(i=>{n.push(i.length+1)}),n}function j(t,e,n,i,l){const r=t.editors[e];i<n&&(i=n);const s=`${l} ${i>n?\"lines\":\"targetOnly\"}`;i>n&&(i-=1),r.markers.push(r.ace.session.addMarker(new A(n,0,i,1),s,\"fullLine\"))}function B(t){J(t),X(t),st(t)}function J(t){t.editors.left.markers.forEach(e=>{t.editors.left.ace.getSession().removeMarker(e)},t),t.editors.right.markers.forEach(e=>{t.editors.right.ace.getSession().removeMarker(e)},t)}function rt(t,e,n,i,l){const r=t.editors.left.ace.getSession().getScrollTop(),s=t.editors.right.ace.getSession().getScrollTop();t.connectorYOffset=1;const o=-1,h=e*t.lineHeight-r+.5,a=t.gutterWidth+1,c=i*t.lineHeight-s+.5,f=-1,u=n*t.lineHeight-r+t.connectorYOffset+.5,p=t.gutterWidth+1,_=l*t.lineHeight-s+t.connectorYOffset+.5,D=v(o,h,a,c),d=v(p,_,f,u),E=`L${a},${c} ${p},${_}`,L=`L${f},${u} ${o},${h}`,m=`${D} ${E} ${d} ${L}`,F=document.createElementNS(I.SVG_NS,\"path\");F.setAttribute(\"d\",m),F.setAttribute(\"class\",t.options.classes.connector),t.gutterSVG.appendChild(F)}function lt(t,e,n){if(e.leftEndLine>e.leftStartLine&&t.options.left.copyLinkEnabled){const i=x({className:t.options.classes.newCodeConnectorLink,topOffset:e.leftStartLine*t.lineHeight,tooltip:\"Copy to right\",diffIndex:n,arrowContent:t.options.classes.newCodeConnectorLinkContent});t.copyRightContainer.appendChild(i)}if(e.rightEndLine>e.rightStartLine&&t.options.right.copyLinkEnabled){const i=x({className:t.options.classes.deletedCodeConnectorLink,topOffset:e.rightStartLine*t.lineHeight,tooltip:\"Copy to left\",diffIndex:n,arrowContent:t.options.classes.deletedCodeConnectorLinkContent});t.copyLeftContainer.appendChild(i)}}function st(t){const e=t.editors.left.ace.getSession().getScrollTop(),n=t.editors.right.ace.getSession().getScrollTop();t.copyRightContainer.style.cssText=`top: ${-e}px`,t.copyLeftContainer.style.cssText=`top: ${-n}px`}function q(t,e,n,i,l){let r={};if(e===I.DIFF_INSERT){let s=V(t.editors.left,n,l),o=z(t.editors.right,i),h=S(t.editors.right,o);const a=S(t.editors.left,s.startLine);let c=o,f=s.startLine===s.endLine,u=0;(s.startChar>0||f&&l.length<a)&&h>0&&s.startChar<a&&u++,r={leftStartLine:s.startLine,leftEndLine:s.endLine+1,rightStartLine:c,rightEndLine:c+u}}else{let s=V(t.editors.right,i,l),o=z(t.editors.left,n),h=S(t.editors.left,o);const a=S(t.editors.right,s.startLine);let c=o,f=s.startLine===s.endLine,u=0;(s.startChar>0||f&&l.length<a)&&h>0&&s.startChar<a&&u++,r={leftStartLine:c,leftEndLine:c+u,rightStartLine:s.startLine,rightEndLine:s.endLine+1}}return r}function V(t,e,n){const i={startLine:0,startChar:0,endLine:0,endChar:0},l=e+n.length;let r=0,s=!1,o=!1;t.lineLengths.forEach((a,c)=>{r+=a,!s&&e<r&&(i.startLine=c,i.startChar=e-r+a,s=!0),!o&&l<=r&&(i.endLine=c,i.endChar=l-r+a,o=!0)}),i.startChar>0&&S(t,i.startLine)===i.startChar&&(i.startLine++,i.startChar=0),i.endChar===0&&i.endLine--;const h=/\\n$/.test(n);return i.startChar>0&&h&&i.endLine++,i}function S(t,e){return Y(t,e).length}function z(t,e){const n=t.ace.getSession().doc.getAllLines();let i=0,l=0;for(let r=0;r<n.length;r+=1)if(l+=n[r].length+1,e<l){i=r;break}return l>t.ace.getSession().getValue().length&&(i+=1),i}function K(t){t.gutterHeight=document.getElementById(t.options.classes.gutterID).clientHeight,t.gutterWidth=document.getElementById(t.options.classes.gutterID).clientWidth;const e=W(t,I.EDITOR_LEFT),n=W(t,I.EDITOR_RIGHT),i=Math.max(e,n,t.gutterHeight);t.gutterSVG=document.createElementNS(I.SVG_NS,\"svg\"),t.gutterSVG.setAttribute(\"width\",t.gutterWidth),t.gutterSVG.setAttribute(\"height\",i),document.getElementById(t.options.classes.gutterID).appendChild(t.gutterSVG)}function W(t,e){return(e===I.EDITOR_LEFT?t.editors.left:t.editors.right).ace.getSession().getLength()*t.lineHeight}function ot(t){t.copyRightContainer=document.createElement(\"div\"),t.copyRightContainer.setAttribute(\"class\",t.options.classes.copyRightContainer),t.copyLeftContainer=document.createElement(\"div\"),t.copyLeftContainer.setAttribute(\"class\",t.options.classes.copyLeftContainer),document.getElementById(t.options.classes.gutterID).appendChild(t.copyRightContainer),document.getElementById(t.options.classes.gutterID).appendChild(t.copyLeftContainer)}function ht(t){document.getElementById(t.options.classes.gutterID).removeChild(t.gutterSVG),K(t)}function at(t){t.copyLeftContainer.innerHTML=\"\",t.copyRightContainer.innerHTML=\"\"}function gt(t,e){const n=[];function i(r){return t.options.diffGranularity===I.DIFF_GRANULARITY_SPECIFIC?r<1:r<=1}e.forEach((r,s)=>{if(s===0){n.push(r);return}let o=!1;for(let h=0;h<n.length;h+=1)if(i(Math.abs(r.leftStartLine-n[h].leftEndLine))&&i(Math.abs(r.rightStartLine-n[h].rightEndLine))){n[h].leftStartLine=Math.min(r.leftStartLine,n[h].leftStartLine),n[h].rightStartLine=Math.min(r.rightStartLine,n[h].rightStartLine),n[h].leftEndLine=Math.max(r.leftEndLine,n[h].leftEndLine),n[h].rightEndLine=Math.max(r.rightEndLine,n[h].rightEndLine),o=!0;break}o||n.push(r)});const l=[];return n.forEach(r=>{r.leftStartLine===r.leftEndLine&&r.rightStartLine===r.rightEndLine||l.push(r)}),l}function X(t){ht(t),at(t),t.diffs.forEach((e,n)=>{t.options.showDiffs&&(j(t,I.EDITOR_LEFT,e.leftStartLine,e.leftEndLine,t.options.classes.diff),j(t,I.EDITOR_RIGHT,e.rightStartLine,e.rightEndLine,t.options.classes.diff),t.options.showConnectors&&rt(t,e.leftStartLine,e.leftEndLine,e.rightStartLine,e.rightEndLine),lt(t,e,n))},t)}export{k as default};\n//# sourceMappingURL=ace-diff.min.js.map\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"show\" persistent width=\"80vw\">\n <v-card>\n <v-card-text>\n <v-card-title>{{ pluginName }} </v-card-title>\n <v-row v-if=\"existingPluginTxt !== null\" class=\"notice d-flex flex-row\">\n <v-icon size=\"x-large\" start color=\"yellow\"> mdi-alert-box </v-icon>\n <div style=\"flex: 1\">\n The existing plugin.txt is different from the {{ pluginName }}'s\n plugin.txt. Navigate the diffs making whatever edits you want before\n installing. You may want to update {{ pluginName }}'s plugin.txt\n going forward.\n </div>\n </v-row>\n <v-row class=\"pb-3 pr-3\">\n <v-tabs v-model=\"tab\" class=\"ml-3\">\n <v-tab :key=\"0\"> Variables </v-tab>\n <v-tab :key=\"1\"> plugin.txt </v-tab>\n </v-tabs>\n </v-row>\n <form @submit.prevent=\"onSubmit\">\n <v-window v-model=\"tab\">\n <v-window-item :key=\"0\" eager=\"true\" class=\"tab\">\n <div class=\"pa-3\">\n <v-row class=\"mt-3\">\n <div v-for=\"(value, name) in localVariables\" :key=\"name\">\n <v-col style=\"width: 220px\">\n <v-text-field\n v-model=\"localVariables[name]\"\n clearable\n type=\"text\"\n :label=\"name\"\n />\n </v-col>\n </div>\n </v-row>\n </div>\n </v-window-item>\n <v-window-item\n v-if=\"existingPluginTxt === null\"\n :key=\"1 + '-new'\"\n eager=\"true\"\n class=\"tab\"\n >\n <v-row class=\"pa-3\">\n <v-col> This can be edited before installation. </v-col>\n </v-row>\n <pre\n ref=\"editor\"\n class=\"editor\"\n @contextmenu.prevent=\"showContextMenu\"\n ></pre>\n <v-menu v-model=\"contextMenu\" :target=\"[menuX, menuY]\">\n <v-list>\n <v-list-item link>\n <v-list-item-title @click=\"openDocumentation\">\n {{ docsKeyword }} documentation\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item\n title=\"Toggle Vim mode\"\n prepend-icon=\"extras:vim\"\n @click=\"toggleVimMode\"\n />\n </v-list>\n </v-menu>\n </v-window-item>\n <v-window-item\n v-else\n :key=\"1 + '-existing'\"\n eager=\"true\"\n class=\"tab\"\n >\n <v-row class=\"pa-3\">\n <v-col>\n Existing plugin.txt. This can be edited before installation.\n </v-col>\n <v-col class=\"ml-6\">\n Uneditable plugin.txt from the new plugin.\n </v-col>\n </v-row>\n <pre ref=\"editor\" class=\"editor\"></pre>\n </v-window-item>\n </v-window>\n\n <v-card-actions class=\"px-2 mt-2\">\n <div v-if=\"existingPluginTxt !== null\">\n <v-btn variant=\"text\" @click=\"nextDiff\"> Next Diff </v-btn>\n <v-btn variant=\"text\" @click=\"previousDiff\">\n Previous Diff\n </v-btn>\n </div>\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"edit-cancel\"\n @click.prevent=\"close\"\n >\n Cancel\n </v-btn>\n <v-btn variant=\"flat\" data-test=\"edit-submit\" @click=\"submit\">\n Install\n </v-btn>\n </v-card-actions>\n </form>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport AceDiff from '@openc3/ace-diff'\nimport '@openc3/ace-diff/dist/ace-diff-dark.min.css'\nimport { toRaw } from 'vue'\nimport { AceEditorUtils } from '../../components/ace'\n\nexport default {\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n variables: {\n type: Object,\n required: true,\n },\n pluginTxt: {\n type: String,\n required: true,\n },\n existingPluginTxt: {\n type: String,\n required: false,\n },\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n tab: 0,\n localVariables: [],\n localPluginTxt: '',\n localExistingPluginTxt: null,\n editor: null,\n differ: null,\n contextMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n watch: {\n value: {\n immediate: true,\n handler: function () {\n this.localVariables = JSON.parse(JSON.stringify(this.variables)) // deep copy\n this.localPluginTxt = this.pluginTxt.slice()\n if (this.existingPluginTxt !== null) {\n this.localExistingPluginTxt = this.existingPluginTxt.slice()\n }\n },\n },\n },\n mounted() {\n const pluginMode = this.buildPluginMode()\n if (this.existingPluginTxt === null) {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n this.editor.session.setMode(new pluginMode())\n this.editor.session.setTabSize(2)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.localPluginTxt)\n this.editor.clearSelection()\n AceEditorUtils.applyVimModeIfEnabled(this.editor)\n this.editor.focus()\n } else {\n this.tab = 1 // Show the diff right off the bat\n this.differ = new AceDiff({\n element: this.$refs.editor,\n mode: new pluginMode(),\n theme: 'ace/theme/twilight',\n left: {\n content: this.localExistingPluginTxt,\n copyLinkEnabled: false,\n },\n right: {\n content: this.localPluginTxt,\n editable: false,\n },\n })\n // Match our existing editors\n this.differ.getEditors().left.setFontSize(16)\n this.differ.getEditors().right.setFontSize(16)\n\n // Apply vim mode if enabled to both editor instances\n AceEditorUtils.applyVimModeIfEnabled(this.differ.getEditors().left)\n AceEditorUtils.applyVimModeIfEnabled(this.differ.getEditors().right)\n\n this.curDiff = -1 // so the first will be 0\n }\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n if (this.differ) {\n this.differ.destroy()\n }\n },\n methods: {\n previousDiff() {\n this.curDiff--\n if (this.curDiff < 0) {\n this.curDiff = this.differ.diffs.length - 1\n }\n this.scrollToCurDiff()\n },\n nextDiff() {\n this.curDiff++\n if (this.curDiff >= this.differ.diffs.length) {\n this.curDiff = 0\n }\n this.scrollToCurDiff()\n },\n scrollToCurDiff() {\n if (this.differ.diffs.length === 0) return\n let lrow = this.differ.diffs[this.curDiff].leftStartLine\n let rrow = this.differ.diffs[this.curDiff].rightStartLine\n // Give it a little breathing room\n if (lrow > 5) {\n lrow -= 5\n }\n if (rrow > 5) {\n rrow -= 5\n }\n this.differ.getEditors().left.scrollToLine(lrow)\n this.differ.getEditors().right.scrollToLine(rrow)\n },\n buildPluginMode() {\n let oop = ace.require('ace/lib/oop')\n let RubyHighlightRules = ace.require(\n 'ace/mode/ruby_highlight_rules',\n ).RubyHighlightRules\n\n // TODO: Grab from code\n let keywords = ['VARIABLE']\n let regex = new RegExp(`(\\\\b${keywords.join('\\\\b|\\\\b')}\\\\b)`)\n let PluginHighlightRules = function () {\n RubyHighlightRules.call(this)\n // add openc3 rules to the ruby rules\n for (let rule in this.$rules) {\n this.$rules[rule].unshift({\n regex: regex,\n token: 'support.function',\n })\n }\n }\n oop.inherits(PluginHighlightRules, RubyHighlightRules)\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let FoldMode = ace.require('ace/mode/folding/ruby').FoldMode\n let Mode = function () {\n this.HighlightRules = PluginHighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n submit: function () {\n if (this.existingPluginTxt === null) {\n this.emitSubmit(this.editor.getValue().split('\\n'))\n } else {\n // Existing plugin.txt with all diffs resolved\n if (this.differ.diffs.length === 0) {\n this.emitSubmit(this.differ.getEditors().left.getValue().split('\\n'))\n } else {\n // Existing plugin.txt with unresolved diffs\n this.$dialog\n .confirm(\n `Diffs still detected! Install using 'Existing plugin.txt' (left) and ignore additional changes in the new plugin.txt (right)?`,\n {\n okText: 'Install',\n cancelText: 'Cancel',\n },\n )\n .then((dialog) => {\n this.emitSubmit(\n this.differ.getEditors().left.getValue().split('\\n'),\n )\n })\n .catch((error) => {\n // Cancelled, do nothing\n })\n }\n }\n },\n emitSubmit(lines) {\n let pluginHash = {\n name: this.pluginName,\n variables: toRaw(this.localVariables),\n plugin_txt_lines: lines,\n }\n this.$emit('callback', pluginHash)\n },\n close: function () {\n this.show = !this.show\n },\n showContextMenu: function (event) {\n this.menuX = event.pageX\n this.menuY = event.pageY\n\n let position = this.editor.getCursorPosition()\n let token = this.editor.session.getTokenAt(position.row, position.column)\n if (token) {\n let value = token.value.trim()\n if (value.includes(' ')) {\n this.docsKeyword = value.split(' ')[0]\n } else {\n this.docsKeyword = value\n }\n this.contextMenu = true\n }\n },\n toggleVimMode: function () {\n if (this.editor) {\n AceEditorUtils.toggleVimMode(this.editor)\n // don't worry about this.differ since AceDiff replaces the editor anyway, and thus there's no context menu\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 50vh;\n position: relative;\n font-size: 16px;\n}\n\n.notice {\n font-size: 20px;\n margin: 10px;\n}\n.tab {\n background-color: var(--color-background-surface-default);\n}\n.v-textarea :deep(textarea) {\n padding: 5px;\n}\n</style>\n"],"names":["_sfc_main","value","gemRegEx","f","axios","response","gem","link","_hoisted_1","_hoisted_2","_createBlock","_component_v_dialog","$options","_cache","$event","_withCtx","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_component_v_card_text","_component_v_row","_createTextVNode","_component_v_col","_component_v_btn","$data","_component_v_icon","_openBlock","_createElementBlock","_hoisted_3","_hoisted_4","_Fragment","_renderList","data","index","_component_v_list_item","_component_v_list_item_title","_toDisplayString","_component_v_progress_circular","_component_v_divider","_createCommentVNode","openPluginMode","ace.edit","AceEditorUtils","blob","oop","ace.require","JsonHighlightRules","MatchingBraceOutdent","CstyleBehaviour","FoldMode","Mode","RubyMode","event","position","token","$props","_withModifiers","args","_ctx","_component_v_file_input","_component_v_menu","_component_v_list","target","Api","file","itemIndex","_component_v_list_item_subtitle","_component_v_checkbox","_component_v_card_actions","TabsList","TopBar","tab","_component_top_bar","_component_v_tabs","_component_v_tab","_component_router_view","g","t","e","i","r","o","h","a","c","u","d","p","_","D","E","L","m","F","b","w","y","T","C","n","l","s","R","U","N","tt","O","v","I","H","Q","Y","et","x","M","$","A","nt","k","it","ot","K","G","q","gt","J","X","Z","B","P","j","st","rt","lt","V","z","S","W","ht","at","pluginMode","AceDiff","lrow","rrow","RubyHighlightRules","keywords","regex","PluginHighlightRules","rule","dialog","error","lines","pluginHash","toRaw","_component_v_card_title","_component_v_window","_component_v_window_item","name","_component_v_text_field"],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sources":["../../src/tools/admin/DownloadDialog.vue","../../src/tools/admin/EditDialog.vue","../../src/tools/admin/ModifiedPluginDialog.vue","../../src/tools/admin/tabs/index.js","../../src/tools/admin/OpenC3Admin.vue","../../../../node_modules/@sanity/diff-match-patch/dist/index.js","../../../../node_modules/@openc3/ace-diff/dist/module.js","../../src/tools/admin/PluginDialog.vue"],"sourcesContent":["<!--\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\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Download Gems </span>\n <v-spacer />\n </v-toolbar>\n <v-card-text>\n <div class=\"pa-3\">\n <v-row class=\"my-2\"> Select a download option </v-row>\n <v-row>\n <v-col>\n <div class=\"px-2\">\n <v-btn\n block\n data-test=\"searchGithub\"\n color=\"primary\"\n :disabled=\"disableSearch\"\n @click=\"searchGithub\"\n >\n Github\n <v-icon end theme=\"dark\"> mdi-github </v-icon>\n </v-btn>\n </div>\n </v-col>\n </v-row>\n <!---\n <v-row>\n <v-col>\n <div class=\"px-2\">\n <v-btn\n @click=\"searchRuby\"\n block\n data-test=\"searchRuby\"\n color=\"primary\"\n :disabled=\"disableSearch\"\n >\n RubyGems\n <v-icon right dark> mdi-heart </v-icon>\n </v-btn>\n </div>\n </v-col>\n </v-row>\n --->\n <v-row class=\"mt-5\"> Community Gems </v-row>\n <div v-if=\"listData.length < 1\" class=\"mt-4\">\n <v-row class=\"mx-2\">\n <span> I’m sorry, Dave. No gems available.... </span>\n </v-row>\n </div>\n <div v-else class=\"mt-4\">\n <div v-for=\"(data, index) in listData\" :key=\"index\">\n <v-list-item>\n <v-list-item-title>{{ data.name }}</v-list-item-title>\n\n <v-list-item icon>\n <v-progress-circular\n v-if=\"activeDownload\"\n indeterminate\n color=\"primary\"\n />\n <v-btn\n v-else\n icon=\"mdi-cloud-download\"\n variant=\"text\"\n :disabled=\"activeDownload\"\n @click=\"downloadGem(data)\"\n />\n </v-list-item>\n </v-list-item>\n <v-divider v-if=\"index < listData.length - 1\" :key=\"index\" />\n </div>\n </div>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nexport default {\n props: {\n modelValue: Boolean,\n },\n data() {\n return {\n url: '',\n type: null,\n response: null,\n activeDownload: false,\n disableSearch: false,\n expanded: [],\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n listData: function () {\n if (!this.response) return []\n if (this.type === 'github') {\n return this.parseGithub()\n } else {\n return this.parseRuby()\n }\n },\n },\n methods: {\n parseGithub: function () {\n const gemRegEx = /\\w+.gem/\n return this.response.tree\n .filter((f) => gemRegEx.exec(f.path))\n .map((f) => {\n return {\n name: f.path,\n url: `https://raw.github.com/OpenC3/openc3-tools/main/${f.path}`,\n }\n })\n },\n getResponse: function () {\n this.disableSearch = true\n axios.get(this.url).then((response) => {\n this.response = response.data\n })\n setTimeout(() => {\n this.disableSearch = false\n }, 10000)\n },\n searchGithub: function () {\n this.type = 'github'\n this.url =\n 'https://api.github.com/repos/OpenC3/openc3-tools/git/trees/main?recursive=1'\n this.getResponse()\n },\n downloadGem: function (gem) {\n const link = document.createElement('a')\n link.href = gem.url\n link.setAttribute('download', gem.name)\n link.click()\n link.remove()\n },\n },\n}\n</script>\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"show\" :persistent=\"!readonly\" width=\"80vw\">\n <v-card>\n <form @submit.prevent=\"submit\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span v-text=\"title\" />\n <v-spacer />\n <v-btn\n class=\"mx-2\"\n icon=\"mdi-download\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"downloadIcon\"\n @click=\"download\"\n />\n </v-toolbar>\n\n <v-card-text>\n <div class=\"pa-3\">\n <div v-if=\"!readonly\">\n <v-row class=\"mt-3\"> Upload a file. </v-row>\n <v-row no-gutters align=\"center\">\n <v-col cols=\"3\">\n <v-btn\n block\n color=\"success\"\n :disabled=\"!file || loadingFile || readonly\"\n :loading=\"loadingFile\"\n data-test=\"editScreenLoadBtn\"\n @click=\"loadFile\"\n >\n Load\n <template #loader>\n <span>Loading...</span>\n </template>\n </v-btn>\n </v-col>\n <v-col cols=\"9\">\n <v-file-input\n v-model=\"file\"\n accept=\".json\"\n label=\"Click to select .json file.\"\n :disabled=\"readonly\"\n />\n </v-col>\n </v-row>\n </div>\n <v-row no-gutters>\n <pre\n ref=\"editor\"\n class=\"editor\"\n @contextmenu.prevent=\"showContextMenu\"\n ></pre>\n <v-menu v-model=\"contextMenu\" :target=\"[menuX, menuY]\">\n <v-list>\n <v-list-item\n title=\"Toggle Vim mode\"\n prepend-icon=\"extras:vim\"\n @click=\"toggleVimMode\"\n />\n </v-list>\n </v-menu>\n </v-row>\n <v-row class=\"my-3\">\n <span v-show=\"error\" class=\"text-red\" v-text=\"error\" />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n class=\"mx-2\"\n data-test=\"editCancelBtn\"\n @click.prevent=\"close\"\n >\n Cancel\n </v-btn>\n <v-btn\n v-if=\"!readonly\"\n class=\"mx-2\"\n color=\"primary\"\n type=\"submit\"\n data-test=\"editSubmitBtn\"\n :disabled=\"!!error || readonly\"\n >\n Save\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </form>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/mode-json'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport { AceEditorUtils } from '../../components/ace'\n\nexport default {\n props: {\n content: {\n type: String,\n required: true,\n },\n type: String,\n name: String,\n modelValue: Boolean,\n readonly: Boolean,\n },\n data() {\n return {\n editor: null,\n contextMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n title: function () {\n return `${this.type}: ${this.name}`\n },\n error: function () {\n if (this.editor && this.editor.getValue() === '' && !this.file) {\n return 'Input can not be blank.'\n }\n return null\n },\n },\n mounted() {\n const openPluginMode = this.buildPluginMode()\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n this.editor.session.setMode(new openPluginMode())\n this.editor.session.setTabSize(2)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.content)\n this.editor.clearSelection()\n AceEditorUtils.applyVimModeIfEnabled(this.editor)\n this.editor.focus()\n if (this.readonly) {\n this.editor.setReadOnly(true)\n }\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n },\n methods: {\n submit: function () {\n this.$emit('submit', this.editor.getValue())\n this.show = !this.show\n },\n close: function () {\n this.show = !this.show\n },\n download: function () {\n const blob = new Blob([this.editor.getValue()], {\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 `${this.type.toLowerCase()}_${this.name.toLowerCase()}.json`,\n )\n link.click()\n },\n buildPluginMode() {\n let oop = ace.require('ace/lib/oop')\n let JsonHighlightRules = ace.require(\n 'ace/mode/json_highlight_rules',\n ).JsonHighlightRules\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let FoldMode = ace.require('ace/mode/folding/ruby').FoldMode\n let Mode = function () {\n this.HighlightRules = JsonHighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n showContextMenu: function (event) {\n this.menuX = event.pageX\n this.menuY = event.pageY\n\n let position = this.editor.getCursorPosition()\n let token = this.editor.session.getTokenAt(position.row, position.column)\n if (token) {\n let value = token.value.trim()\n if (value.includes(' ')) {\n this.docsKeyword = value.split(' ')[0]\n } else {\n this.docsKeyword = value\n }\n this.contextMenu = true\n }\n },\n toggleVimMode: function () {\n AceEditorUtils.toggleVimMode(this.editor)\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 50vh;\n width: 75vw;\n position: relative;\n font-size: 16px;\n}\n\n.v-textarea :deep(textarea) {\n padding: 5px;\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-dialog v-model=\"show\" width=\"600\">\n <v-card>\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Modified Plugin </span>\n <v-spacer />\n </v-toolbar>\n <v-card-text class=\"pa-3\">\n <div>\n Plugin {{ plugin }} was modified. Would you like to delete the\n existing modified files?\n </div>\n <v-list-item\n v-for=\"(target, index) in modifiedTargets\"\n :key=\"index\"\n lines=\"two\"\n >\n <v-list-item-title>{{ target.name }}</v-list-item-title>\n <v-list-item-subtitle\n v-for=\"(file, itemIndex) in target.files\"\n :key=\"itemIndex\"\n >{{ file }}</v-list-item-subtitle\n >\n </v-list-item>\n <v-checkbox\n v-model=\"deleteModified\"\n label=\"DELETE MODIFIED! THIS CAN NOT BE UNDONE!!!\"\n color=\"error\"\n data-test=\"modified-plugin-delete-checkbox\"\n />\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"modified-plugin-cancel\"\n @click=\"\n () => {\n show = false\n $emit('cancel')\n }\n \"\n >\n Cancel\n </v-btn>\n <v-btn\n variant=\"flat\"\n data-test=\"modified-plugin-submit\"\n @click=\"\n () => {\n show = false\n $emit('submit', deleteModified)\n }\n \"\n >\n Confirm\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n modelValue: Boolean,\n plugin: String,\n targets: Array,\n pluginDelete: Boolean,\n },\n data() {\n return {\n modifiedTargets: [],\n deleteModified: false,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n created() {\n for (const target of this.targets) {\n Api.get(`/openc3-api/targets/${target.name}/modified_files`).then(\n (response) => {\n if (response.data.length !== 0) {\n // Only push targets which actually have modified files\n this.modifiedTargets.push({\n name: target.name,\n files: response.data,\n })\n }\n },\n )\n }\n },\n}\n</script>\n\n<style scoped></style>\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2024, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nconst TabsList = [\n {\n displayName: 'Plugins',\n name: 'PluginsTab',\n path: 'plugins',\n component: () => import('./PluginsTab.vue'),\n },\n {\n displayName: 'Targets',\n name: 'TargetsTab',\n path: 'targets',\n component: () => import('./TargetsTab.vue'),\n },\n {\n displayName: 'Interfaces',\n name: 'InterfacesTab',\n path: 'interfaces',\n component: () => import('./InterfacesTab.vue'),\n },\n {\n displayName: 'Routers',\n name: 'RoutersTab',\n path: 'routers',\n component: () => import('./RoutersTab.vue'),\n },\n {\n displayName: 'Microservices',\n name: 'MicroservicesTab',\n path: 'microservices',\n component: () => import('./MicroservicesTab.vue'),\n },\n {\n displayName: 'Packages',\n name: 'PackagesTab',\n path: 'packages',\n component: () => import('./PackagesTab.vue'),\n },\n {\n displayName: 'Tools',\n name: 'ToolsTab',\n path: 'tools',\n component: () => import('./ToolsTab.vue'),\n },\n {\n displayName: 'Redis',\n name: 'RedisTab',\n path: 'redis',\n component: () => import('./RedisTab.vue'),\n },\n {\n displayName: 'Secrets',\n name: 'SecretsTab',\n path: 'secrets',\n component: () => import('./SecretsTab.vue'),\n },\n {\n displayName: 'Settings',\n name: 'SettingsTab',\n path: 'settings',\n component: () => import('./SettingsTab.vue'),\n },\n]\n\nexport { TabsList }\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" />\n <v-card>\n <v-tabs v-model=\"curTab\" fixed-tabs>\n <v-tab v-for=\"(tab, index) in tabs\" :key=\"index\" :to=\"tab.path\">\n {{ tab.displayName }}\n </v-tab>\n </v-tabs>\n <router-view />\n </v-card>\n </div>\n</template>\n\n<script>\nimport { TopBar } from '@/components'\nimport { TabsList } from './tabs'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: 'Administrator Console',\n curTab: null,\n }\n },\n computed: {\n tabs: function () {\n return TabsList.map((tab) => {\n return {\n displayName: tab.displayName,\n path: { name: tab.name },\n }\n })\n },\n },\n}\n</script>\n","function cloneDiff(diff2) {\n const [type, patch] = diff2;\n return [type, patch];\n}\nfunction getCommonOverlap(textA, textB) {\n let text1 = textA, text2 = textB;\n const text1Length = text1.length, text2Length = text2.length;\n if (text1Length === 0 || text2Length === 0)\n return 0;\n text1Length > text2Length ? text1 = text1.substring(text1Length - text2Length) : text1Length < text2Length && (text2 = text2.substring(0, text1Length));\n const textLength = Math.min(text1Length, text2Length);\n if (text1 === text2)\n return textLength;\n let best = 0, length = 1;\n for (let found = 0; found !== -1; ) {\n const pattern = text1.substring(textLength - length);\n if (found = text2.indexOf(pattern), found === -1)\n return best;\n length += found, (found === 0 || text1.substring(textLength - length) === text2.substring(0, length)) && (best = length, length++);\n }\n return best;\n}\nfunction getCommonPrefix(text1, text2) {\n if (!text1 || !text2 || text1[0] !== text2[0])\n return 0;\n let pointerMin = 0, pointerMax = Math.min(text1.length, text2.length), pointerMid = pointerMax, pointerStart = 0;\n for (; pointerMin < pointerMid; )\n text1.substring(pointerStart, pointerMid) === text2.substring(pointerStart, pointerMid) ? (pointerMin = pointerMid, pointerStart = pointerMin) : pointerMax = pointerMid, pointerMid = Math.floor((pointerMax - pointerMin) / 2 + pointerMin);\n return pointerMid;\n}\nfunction getCommonSuffix(text1, text2) {\n if (!text1 || !text2 || text1[text1.length - 1] !== text2[text2.length - 1])\n return 0;\n let pointerMin = 0, pointerMax = Math.min(text1.length, text2.length), pointerMid = pointerMax, pointerEnd = 0;\n for (; pointerMin < pointerMid; )\n text1.substring(text1.length - pointerMid, text1.length - pointerEnd) === text2.substring(text2.length - pointerMid, text2.length - pointerEnd) ? (pointerMin = pointerMid, pointerEnd = pointerMin) : pointerMax = pointerMid, pointerMid = Math.floor((pointerMax - pointerMin) / 2 + pointerMin);\n return pointerMid;\n}\nfunction isHighSurrogate(char) {\n const charCode = char.charCodeAt(0);\n return charCode >= 55296 && charCode <= 56319;\n}\nfunction isLowSurrogate(char) {\n const charCode = char.charCodeAt(0);\n return charCode >= 56320 && charCode <= 57343;\n}\nfunction bisect(text1, text2, deadline) {\n const text1Length = text1.length, text2Length = text2.length, maxD = Math.ceil((text1Length + text2Length) / 2), vOffset = maxD, vLength = 2 * maxD, v1 = new Array(vLength), v2 = new Array(vLength);\n for (let x = 0; x < vLength; x++)\n v1[x] = -1, v2[x] = -1;\n v1[vOffset + 1] = 0, v2[vOffset + 1] = 0;\n const delta = text1Length - text2Length, front = delta % 2 !== 0;\n let k1start = 0, k1end = 0, k2start = 0, k2end = 0;\n for (let d = 0; d < maxD && !(Date.now() > deadline); d++) {\n for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n const k1Offset = vOffset + k1;\n let x1;\n k1 === -d || k1 !== d && v1[k1Offset - 1] < v1[k1Offset + 1] ? x1 = v1[k1Offset + 1] : x1 = v1[k1Offset - 1] + 1;\n let y1 = x1 - k1;\n for (; x1 < text1Length && y1 < text2Length && text1.charAt(x1) === text2.charAt(y1); )\n x1++, y1++;\n if (v1[k1Offset] = x1, x1 > text1Length)\n k1end += 2;\n else if (y1 > text2Length)\n k1start += 2;\n else if (front) {\n const k2Offset = vOffset + delta - k1;\n if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) {\n const x2 = text1Length - v2[k2Offset];\n if (x1 >= x2)\n return bisectSplit(text1, text2, x1, y1, deadline);\n }\n }\n }\n for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n const k2Offset = vOffset + k2;\n let x2;\n k2 === -d || k2 !== d && v2[k2Offset - 1] < v2[k2Offset + 1] ? x2 = v2[k2Offset + 1] : x2 = v2[k2Offset - 1] + 1;\n let y2 = x2 - k2;\n for (; x2 < text1Length && y2 < text2Length && text1.charAt(text1Length - x2 - 1) === text2.charAt(text2Length - y2 - 1); )\n x2++, y2++;\n if (v2[k2Offset] = x2, x2 > text1Length)\n k2end += 2;\n else if (y2 > text2Length)\n k2start += 2;\n else if (!front) {\n const k1Offset = vOffset + delta - k2;\n if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) {\n const x1 = v1[k1Offset], y1 = vOffset + x1 - k1Offset;\n if (x2 = text1Length - x2, x1 >= x2)\n return bisectSplit(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n return [\n [DIFF_DELETE, text1],\n [DIFF_INSERT, text2]\n ];\n}\nfunction bisectSplit(text1, text2, x, y, deadline) {\n const text1a = text1.substring(0, x), text2a = text2.substring(0, y), text1b = text1.substring(x), text2b = text2.substring(y), diffs = doDiff(text1a, text2a, { checkLines: !1, deadline }), diffsb = doDiff(text1b, text2b, { checkLines: !1, deadline });\n return diffs.concat(diffsb);\n}\nfunction findHalfMatch(text1, text2, timeout = 1) {\n if (timeout <= 0)\n return null;\n const longText = text1.length > text2.length ? text1 : text2, shortText = text1.length > text2.length ? text2 : text1;\n if (longText.length < 4 || shortText.length * 2 < longText.length)\n return null;\n const halfMatch1 = halfMatchI(longText, shortText, Math.ceil(longText.length / 4)), halfMatch2 = halfMatchI(longText, shortText, Math.ceil(longText.length / 2));\n let halfMatch;\n if (halfMatch1 && halfMatch2)\n halfMatch = halfMatch1[4].length > halfMatch2[4].length ? halfMatch1 : halfMatch2;\n else {\n if (!halfMatch1 && !halfMatch2)\n return null;\n halfMatch2 ? halfMatch1 || (halfMatch = halfMatch2) : halfMatch = halfMatch1;\n }\n if (!halfMatch)\n throw new Error(\"Unable to find a half match.\");\n let text1A, text1B, text2A, text2B;\n text1.length > text2.length ? (text1A = halfMatch[0], text1B = halfMatch[1], text2A = halfMatch[2], text2B = halfMatch[3]) : (text2A = halfMatch[0], text2B = halfMatch[1], text1A = halfMatch[2], text1B = halfMatch[3]);\n const midCommon = halfMatch[4];\n return [text1A, text1B, text2A, text2B, midCommon];\n}\nfunction halfMatchI(longText, shortText, i) {\n const seed = longText.slice(i, i + Math.floor(longText.length / 4));\n let j = -1, bestCommon = \"\", bestLongTextA, bestLongTextB, bestShortTextA, bestShortTextB;\n for (; (j = shortText.indexOf(seed, j + 1)) !== -1; ) {\n const prefixLength = getCommonPrefix(longText.slice(i), shortText.slice(j)), suffixLength = getCommonSuffix(longText.slice(0, i), shortText.slice(0, j));\n bestCommon.length < suffixLength + prefixLength && (bestCommon = shortText.slice(j - suffixLength, j) + shortText.slice(j, j + prefixLength), bestLongTextA = longText.slice(0, i - suffixLength), bestLongTextB = longText.slice(i + prefixLength), bestShortTextA = shortText.slice(0, j - suffixLength), bestShortTextB = shortText.slice(j + prefixLength));\n }\n return bestCommon.length * 2 >= longText.length ? [\n bestLongTextA || \"\",\n bestLongTextB || \"\",\n bestShortTextA || \"\",\n bestShortTextB || \"\",\n bestCommon || \"\"\n ] : null;\n}\nfunction charsToLines(diffs, lineArray) {\n for (let x = 0; x < diffs.length; x++) {\n const chars = diffs[x][1], text = [];\n for (let y = 0; y < chars.length; y++)\n text[y] = lineArray[chars.charCodeAt(y)];\n diffs[x][1] = text.join(\"\");\n }\n}\nfunction linesToChars(textA, textB) {\n const lineArray = [], lineHash = {};\n lineArray[0] = \"\";\n function diffLinesToMunge(text) {\n let chars = \"\", lineStart = 0, lineEnd = -1, lineArrayLength = lineArray.length;\n for (; lineEnd < text.length - 1; ) {\n lineEnd = text.indexOf(`\n`, lineStart), lineEnd === -1 && (lineEnd = text.length - 1);\n let line = text.slice(lineStart, lineEnd + 1);\n (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== void 0) ? chars += String.fromCharCode(lineHash[line]) : (lineArrayLength === maxLines && (line = text.slice(lineStart), lineEnd = text.length), chars += String.fromCharCode(lineArrayLength), lineHash[line] = lineArrayLength, lineArray[lineArrayLength++] = line), lineStart = lineEnd + 1;\n }\n return chars;\n }\n let maxLines = 4e4;\n const chars1 = diffLinesToMunge(textA);\n maxLines = 65535;\n const chars2 = diffLinesToMunge(textB);\n return { chars1, chars2, lineArray };\n}\nfunction doLineModeDiff(textA, textB, opts) {\n let text1 = textA, text2 = textB;\n const a = linesToChars(text1, text2);\n text1 = a.chars1, text2 = a.chars2;\n const linearray = a.lineArray;\n let diffs = doDiff(text1, text2, {\n checkLines: !1,\n deadline: opts.deadline\n });\n charsToLines(diffs, linearray), diffs = cleanupSemantic(diffs), diffs.push([DIFF_EQUAL, \"\"]);\n let pointer = 0, countDelete = 0, countInsert = 0, textDelete = \"\", textInsert = \"\";\n for (; pointer < diffs.length; ) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n countInsert++, textInsert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n countDelete++, textDelete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n if (countDelete >= 1 && countInsert >= 1) {\n diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert), pointer = pointer - countDelete - countInsert;\n const aa = doDiff(textDelete, textInsert, {\n checkLines: !1,\n deadline: opts.deadline\n });\n for (let j = aa.length - 1; j >= 0; j--)\n diffs.splice(pointer, 0, aa[j]);\n pointer += aa.length;\n }\n countInsert = 0, countDelete = 0, textDelete = \"\", textInsert = \"\";\n break;\n default:\n throw new Error(\"Unknown diff operation.\");\n }\n pointer++;\n }\n return diffs.pop(), diffs;\n}\nfunction computeDiff(text1, text2, opts) {\n let diffs;\n if (!text1)\n return [[DIFF_INSERT, text2]];\n if (!text2)\n return [[DIFF_DELETE, text1]];\n const longtext = text1.length > text2.length ? text1 : text2, shorttext = text1.length > text2.length ? text2 : text1, i = longtext.indexOf(shorttext);\n if (i !== -1)\n return diffs = [\n [DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n ], text1.length > text2.length && (diffs[0][0] = DIFF_DELETE, diffs[2][0] = DIFF_DELETE), diffs;\n if (shorttext.length === 1)\n return [\n [DIFF_DELETE, text1],\n [DIFF_INSERT, text2]\n ];\n const halfMatch = findHalfMatch(text1, text2);\n if (halfMatch) {\n const text1A = halfMatch[0], text1B = halfMatch[1], text2A = halfMatch[2], text2B = halfMatch[3], midCommon = halfMatch[4], diffsA = doDiff(text1A, text2A, opts), diffsB = doDiff(text1B, text2B, opts);\n return diffsA.concat([[DIFF_EQUAL, midCommon]], diffsB);\n }\n return opts.checkLines && text1.length > 100 && text2.length > 100 ? doLineModeDiff(text1, text2, opts) : bisect(text1, text2, opts.deadline);\n}\nvar __defProp$2 = Object.defineProperty, __getOwnPropSymbols$2 = Object.getOwnPropertySymbols, __hasOwnProp$2 = Object.prototype.hasOwnProperty, __propIsEnum$2 = Object.prototype.propertyIsEnumerable, __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues$2 = (a, b) => {\n for (var prop in b || (b = {}))\n __hasOwnProp$2.call(b, prop) && __defNormalProp$2(a, prop, b[prop]);\n if (__getOwnPropSymbols$2)\n for (var prop of __getOwnPropSymbols$2(b))\n __propIsEnum$2.call(b, prop) && __defNormalProp$2(a, prop, b[prop]);\n return a;\n};\nconst DIFF_DELETE = -1, DIFF_INSERT = 1, DIFF_EQUAL = 0;\nfunction diff(textA, textB, opts) {\n if (textA === null || textB === null)\n throw new Error(\"Null input. (diff)\");\n const diffs = doDiff(textA, textB, createInternalOpts(opts || {}));\n return adjustDiffForSurrogatePairs(diffs), diffs;\n}\nfunction doDiff(textA, textB, options) {\n let text1 = textA, text2 = textB;\n if (text1 === text2)\n return text1 ? [[DIFF_EQUAL, text1]] : [];\n let commonlength = getCommonPrefix(text1, text2);\n const commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength), text2 = text2.substring(commonlength), commonlength = getCommonSuffix(text1, text2);\n const commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength), text2 = text2.substring(0, text2.length - commonlength);\n let diffs = computeDiff(text1, text2, options);\n return commonprefix && diffs.unshift([DIFF_EQUAL, commonprefix]), commonsuffix && diffs.push([DIFF_EQUAL, commonsuffix]), diffs = cleanupMerge(diffs), diffs;\n}\nfunction createDeadLine(timeout) {\n let t = 1;\n return typeof timeout < \"u\" && (t = timeout <= 0 ? Number.MAX_VALUE : timeout), Date.now() + t * 1e3;\n}\nfunction createInternalOpts(opts) {\n return __spreadValues$2({\n checkLines: !0,\n deadline: createDeadLine(opts.timeout || 1)\n }, opts);\n}\nfunction combineChar(data, char, dir) {\n return dir === 1 ? data + char : char + data;\n}\nfunction splitChar(data, dir) {\n return dir === 1 ? [data.substring(0, data.length - 1), data[data.length - 1]] : [data.substring(1), data[0]];\n}\nfunction hasSharedChar(diffs, i, j, dir) {\n return dir === 1 ? diffs[i][1][diffs[i][1].length - 1] === diffs[j][1][diffs[j][1].length - 1] : diffs[i][1][0] === diffs[j][1][0];\n}\nfunction deisolateChar(diffs, i, dir) {\n const inv = dir === 1 ? -1 : 1;\n let insertIdx = null, deleteIdx = null, j = i + dir;\n for (; j >= 0 && j < diffs.length && (insertIdx === null || deleteIdx === null); j += dir) {\n const [op, text2] = diffs[j];\n if (text2.length !== 0) {\n if (op === DIFF_INSERT) {\n insertIdx === null && (insertIdx = j);\n continue;\n } else if (op === DIFF_DELETE) {\n deleteIdx === null && (deleteIdx = j);\n continue;\n } else if (op === DIFF_EQUAL) {\n if (insertIdx === null && deleteIdx === null) {\n const [rest, char2] = splitChar(diffs[i][1], dir);\n diffs[i][1] = rest, diffs[j][1] = combineChar(diffs[j][1], char2, inv);\n return;\n }\n break;\n }\n }\n }\n if (insertIdx !== null && deleteIdx !== null && hasSharedChar(diffs, insertIdx, deleteIdx, dir)) {\n const [insertText, insertChar] = splitChar(diffs[insertIdx][1], inv), [deleteText] = splitChar(diffs[deleteIdx][1], inv);\n diffs[insertIdx][1] = insertText, diffs[deleteIdx][1] = deleteText, diffs[i][1] = combineChar(diffs[i][1], insertChar, dir);\n return;\n }\n const [text, char] = splitChar(diffs[i][1], dir);\n diffs[i][1] = text, insertIdx === null ? (diffs.splice(j, 0, [DIFF_INSERT, char]), deleteIdx !== null && deleteIdx >= j && deleteIdx++) : diffs[insertIdx][1] = combineChar(diffs[insertIdx][1], char, inv), deleteIdx === null ? diffs.splice(j, 0, [DIFF_DELETE, char]) : diffs[deleteIdx][1] = combineChar(diffs[deleteIdx][1], char, inv);\n}\nfunction adjustDiffForSurrogatePairs(diffs) {\n for (let i = 0; i < diffs.length; i++) {\n const [diffType, diffText] = diffs[i];\n if (diffText.length === 0) continue;\n const firstChar = diffText[0], lastChar = diffText[diffText.length - 1];\n isHighSurrogate(lastChar) && diffType === DIFF_EQUAL && deisolateChar(diffs, i, 1), isLowSurrogate(firstChar) && diffType === DIFF_EQUAL && deisolateChar(diffs, i, -1);\n }\n for (let i = 0; i < diffs.length; i++)\n diffs[i][1].length === 0 && diffs.splice(i, 1);\n}\nfunction cleanupSemantic(rawDiffs) {\n let diffs = rawDiffs.map((diff2) => cloneDiff(diff2)), hasChanges = !1;\n const equalities = [];\n let equalitiesLength = 0, lastEquality = null, pointer = 0, lengthInsertions1 = 0, lengthDeletions1 = 0, lengthInsertions2 = 0, lengthDeletions2 = 0;\n for (; pointer < diffs.length; )\n diffs[pointer][0] === DIFF_EQUAL ? (equalities[equalitiesLength++] = pointer, lengthInsertions1 = lengthInsertions2, lengthDeletions1 = lengthDeletions2, lengthInsertions2 = 0, lengthDeletions2 = 0, lastEquality = diffs[pointer][1]) : (diffs[pointer][0] === DIFF_INSERT ? lengthInsertions2 += diffs[pointer][1].length : lengthDeletions2 += diffs[pointer][1].length, lastEquality && lastEquality.length <= Math.max(lengthInsertions1, lengthDeletions1) && lastEquality.length <= Math.max(lengthInsertions2, lengthDeletions2) && (diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastEquality]), diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT, equalitiesLength--, equalitiesLength--, pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1, lengthInsertions1 = 0, lengthDeletions1 = 0, lengthInsertions2 = 0, lengthDeletions2 = 0, lastEquality = null, hasChanges = !0)), pointer++;\n for (hasChanges && (diffs = cleanupMerge(diffs)), diffs = cleanupSemanticLossless(diffs), pointer = 1; pointer < diffs.length; ) {\n if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) {\n const deletion = diffs[pointer - 1][1], insertion = diffs[pointer][1], overlapLength1 = getCommonOverlap(deletion, insertion), overlapLength2 = getCommonOverlap(insertion, deletion);\n overlapLength1 >= overlapLength2 ? (overlapLength1 >= deletion.length / 2 || overlapLength1 >= insertion.length / 2) && (diffs.splice(pointer, 0, [DIFF_EQUAL, insertion.substring(0, overlapLength1)]), diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlapLength1), diffs[pointer + 1][1] = insertion.substring(overlapLength1), pointer++) : (overlapLength2 >= deletion.length / 2 || overlapLength2 >= insertion.length / 2) && (diffs.splice(pointer, 0, [DIFF_EQUAL, deletion.substring(0, overlapLength2)]), diffs[pointer - 1][0] = DIFF_INSERT, diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlapLength2), diffs[pointer + 1][0] = DIFF_DELETE, diffs[pointer + 1][1] = deletion.substring(overlapLength2), pointer++), pointer++;\n }\n pointer++;\n }\n return diffs;\n}\nconst nonAlphaNumericRegex = /[^a-zA-Z0-9]/, whitespaceRegex = /\\s/, linebreakRegex = /[\\r\\n]/, blanklineEndRegex = /\\n\\r?\\n$/, blanklineStartRegex = /^\\r?\\n\\r?\\n/;\nfunction cleanupSemanticLossless(rawDiffs) {\n const diffs = rawDiffs.map((diff2) => cloneDiff(diff2));\n function diffCleanupSemanticScore(one, two) {\n if (!one || !two)\n return 6;\n const char1 = one.charAt(one.length - 1), char2 = two.charAt(0), nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex), nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex), whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex), whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex), lineBreak1 = whitespace1 && char1.match(linebreakRegex), lineBreak2 = whitespace2 && char2.match(linebreakRegex), blankLine1 = lineBreak1 && one.match(blanklineEndRegex), blankLine2 = lineBreak2 && two.match(blanklineStartRegex);\n return blankLine1 || blankLine2 ? 5 : lineBreak1 || lineBreak2 ? 4 : nonAlphaNumeric1 && !whitespace1 && whitespace2 ? 3 : whitespace1 || whitespace2 ? 2 : nonAlphaNumeric1 || nonAlphaNumeric2 ? 1 : 0;\n }\n let pointer = 1;\n for (; pointer < diffs.length - 1; ) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n let equality1 = diffs[pointer - 1][1], edit = diffs[pointer][1], equality2 = diffs[pointer + 1][1];\n const commonOffset = getCommonSuffix(equality1, edit);\n if (commonOffset) {\n const commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset), edit = commonString + edit.substring(0, edit.length - commonOffset), equality2 = commonString + equality2;\n }\n let bestEquality1 = equality1, bestEdit = edit, bestEquality2 = equality2, bestScore = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2);\n for (; edit.charAt(0) === equality2.charAt(0); ) {\n equality1 += edit.charAt(0), edit = edit.substring(1) + equality2.charAt(0), equality2 = equality2.substring(1);\n const score = diffCleanupSemanticScore(equality1, edit) + diffCleanupSemanticScore(edit, equality2);\n score >= bestScore && (bestScore = score, bestEquality1 = equality1, bestEdit = edit, bestEquality2 = equality2);\n }\n diffs[pointer - 1][1] !== bestEquality1 && (bestEquality1 ? diffs[pointer - 1][1] = bestEquality1 : (diffs.splice(pointer - 1, 1), pointer--), diffs[pointer][1] = bestEdit, bestEquality2 ? diffs[pointer + 1][1] = bestEquality2 : (diffs.splice(pointer + 1, 1), pointer--));\n }\n pointer++;\n }\n return diffs;\n}\nfunction cleanupMerge(rawDiffs) {\n let diffs = rawDiffs.map((diff2) => cloneDiff(diff2));\n diffs.push([DIFF_EQUAL, \"\"]);\n let pointer = 0, countDelete = 0, countInsert = 0, textDelete = \"\", textInsert = \"\", commonlength;\n for (; pointer < diffs.length; )\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n countInsert++, textInsert += diffs[pointer][1], pointer++;\n break;\n case DIFF_DELETE:\n countDelete++, textDelete += diffs[pointer][1], pointer++;\n break;\n case DIFF_EQUAL:\n countDelete + countInsert > 1 ? (countDelete !== 0 && countInsert !== 0 && (commonlength = getCommonPrefix(textInsert, textDelete), commonlength !== 0 && (pointer - countDelete - countInsert > 0 && diffs[pointer - countDelete - countInsert - 1][0] === DIFF_EQUAL ? diffs[pointer - countDelete - countInsert - 1][1] += textInsert.substring(\n 0,\n commonlength\n ) : (diffs.splice(0, 0, [DIFF_EQUAL, textInsert.substring(0, commonlength)]), pointer++), textInsert = textInsert.substring(commonlength), textDelete = textDelete.substring(commonlength)), commonlength = getCommonSuffix(textInsert, textDelete), commonlength !== 0 && (diffs[pointer][1] = textInsert.substring(textInsert.length - commonlength) + diffs[pointer][1], textInsert = textInsert.substring(0, textInsert.length - commonlength), textDelete = textDelete.substring(0, textDelete.length - commonlength))), pointer -= countDelete + countInsert, diffs.splice(pointer, countDelete + countInsert), textDelete.length && (diffs.splice(pointer, 0, [DIFF_DELETE, textDelete]), pointer++), textInsert.length && (diffs.splice(pointer, 0, [DIFF_INSERT, textInsert]), pointer++), pointer++) : pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL ? (diffs[pointer - 1][1] += diffs[pointer][1], diffs.splice(pointer, 1)) : pointer++, countInsert = 0, countDelete = 0, textDelete = \"\", textInsert = \"\";\n break;\n default:\n throw new Error(\"Unknown diff operation\");\n }\n diffs[diffs.length - 1][1] === \"\" && diffs.pop();\n let hasChanges = !1;\n for (pointer = 1; pointer < diffs.length - 1; )\n diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL && (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) === diffs[pointer - 1][1] ? (diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length), diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1], diffs.splice(pointer - 1, 1), hasChanges = !0) : diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1] && (diffs[pointer - 1][1] += diffs[pointer + 1][1], diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1], diffs.splice(pointer + 1, 1), hasChanges = !0)), pointer++;\n return hasChanges && (diffs = cleanupMerge(diffs)), diffs;\n}\nfunction trueCount(...args) {\n return args.reduce((n, bool) => n + (bool ? 1 : 0), 0);\n}\nfunction cleanupEfficiency(rawDiffs, editCost = 4) {\n let diffs = rawDiffs.map((diff2) => cloneDiff(diff2)), hasChanges = !1;\n const equalities = [];\n let equalitiesLength = 0, lastEquality = null, pointer = 0, preIns = !1, preDel = !1, postIns = !1, postDel = !1;\n for (; pointer < diffs.length; )\n diffs[pointer][0] === DIFF_EQUAL ? (diffs[pointer][1].length < editCost && (postIns || postDel) ? (equalities[equalitiesLength++] = pointer, preIns = postIns, preDel = postDel, lastEquality = diffs[pointer][1]) : (equalitiesLength = 0, lastEquality = null), postIns = !1, postDel = !1) : (diffs[pointer][0] === DIFF_DELETE ? postDel = !0 : postIns = !0, lastEquality && (preIns && preDel && postIns && postDel || lastEquality.length < editCost / 2 && trueCount(preIns, preDel, postIns, postDel) === 3) && (diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastEquality]), diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT, equalitiesLength--, lastEquality = null, preIns && preDel ? (postIns = !0, postDel = !0, equalitiesLength = 0) : (equalitiesLength--, pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1, postIns = !1, postDel = !1), hasChanges = !0)), pointer++;\n return hasChanges && (diffs = cleanupMerge(diffs)), diffs;\n}\nvar __defProp$1 = Object.defineProperty, __getOwnPropSymbols$1 = Object.getOwnPropertySymbols, __hasOwnProp$1 = Object.prototype.hasOwnProperty, __propIsEnum$1 = Object.prototype.propertyIsEnumerable, __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues$1 = (a, b) => {\n for (var prop in b || (b = {}))\n __hasOwnProp$1.call(b, prop) && __defNormalProp$1(a, prop, b[prop]);\n if (__getOwnPropSymbols$1)\n for (var prop of __getOwnPropSymbols$1(b))\n __propIsEnum$1.call(b, prop) && __defNormalProp$1(a, prop, b[prop]);\n return a;\n};\nconst DEFAULT_OPTIONS = {\n /**\n * At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n */\n threshold: 0.5,\n /**\n * How far to search for a match (0 = exact location, 1000+ = broad match).\n * A match this many characters away from the expected location will add\n * 1.0 to the score (0.0 is a perfect match).\n */\n distance: 1e3\n};\nfunction applyDefaults(options) {\n return __spreadValues$1(__spreadValues$1({}, DEFAULT_OPTIONS), options);\n}\nconst MAX_BITS$1 = 32;\nfunction bitap(text, pattern, loc, opts = {}) {\n if (pattern.length > MAX_BITS$1)\n throw new Error(\"Pattern too long for this browser.\");\n const options = applyDefaults(opts), s = getAlphabetFromPattern(pattern);\n function getBitapScore(e, x) {\n const accuracy = e / pattern.length, proximity = Math.abs(loc - x);\n return options.distance ? accuracy + proximity / options.distance : proximity ? 1 : accuracy;\n }\n let scoreThreshold = options.threshold, bestLoc = text.indexOf(pattern, loc);\n bestLoc !== -1 && (scoreThreshold = Math.min(getBitapScore(0, bestLoc), scoreThreshold), bestLoc = text.lastIndexOf(pattern, loc + pattern.length), bestLoc !== -1 && (scoreThreshold = Math.min(getBitapScore(0, bestLoc), scoreThreshold)));\n const matchmask = 1 << pattern.length - 1;\n bestLoc = -1;\n let binMin, binMid, binMax = pattern.length + text.length, lastRd = [];\n for (let d = 0; d < pattern.length; d++) {\n for (binMin = 0, binMid = binMax; binMin < binMid; )\n getBitapScore(d, loc + binMid) <= scoreThreshold ? binMin = binMid : binMax = binMid, binMid = Math.floor((binMax - binMin) / 2 + binMin);\n binMax = binMid;\n let start = Math.max(1, loc - binMid + 1);\n const finish = Math.min(loc + binMid, text.length) + pattern.length, rd = new Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (let j = finish; j >= start; j--) {\n const charMatch = s[text.charAt(j - 1)];\n if (d === 0 ? rd[j] = (rd[j + 1] << 1 | 1) & charMatch : rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((lastRd[j + 1] | lastRd[j]) << 1 | 1) | lastRd[j + 1], rd[j] & matchmask) {\n const score = getBitapScore(d, j - 1);\n if (score <= scoreThreshold)\n if (scoreThreshold = score, bestLoc = j - 1, bestLoc > loc)\n start = Math.max(1, 2 * loc - bestLoc);\n else\n break;\n }\n }\n if (getBitapScore(d + 1, loc) > scoreThreshold)\n break;\n lastRd = rd;\n }\n return bestLoc;\n}\nfunction getAlphabetFromPattern(pattern) {\n const s = {};\n for (let i = 0; i < pattern.length; i++)\n s[pattern.charAt(i)] = 0;\n for (let i = 0; i < pattern.length; i++)\n s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;\n return s;\n}\nfunction match(text, pattern, searchLocation, options = {}) {\n if (text === null || pattern === null || searchLocation === null)\n throw new Error(\"Null input. (match())\");\n const loc = Math.max(0, Math.min(searchLocation, text.length));\n if (text === pattern)\n return 0;\n if (text.length) {\n if (text.substring(loc, loc + pattern.length) === pattern)\n return loc;\n } else return -1;\n return bitap(text, pattern, loc, options);\n}\nfunction diffText1(diffs) {\n const text = [];\n for (let x = 0; x < diffs.length; x++)\n diffs[x][0] !== DIFF_INSERT && (text[x] = diffs[x][1]);\n return text.join(\"\");\n}\nfunction diffText2(diffs) {\n const text = [];\n for (let x = 0; x < diffs.length; x++)\n diffs[x][0] !== DIFF_DELETE && (text[x] = diffs[x][1]);\n return text.join(\"\");\n}\nfunction levenshtein(diffs) {\n let leven = 0, insertions = 0, deletions = 0;\n for (let x = 0; x < diffs.length; x++) {\n const op = diffs[x][0], data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n leven += Math.max(insertions, deletions), insertions = 0, deletions = 0;\n break;\n default:\n throw new Error(\"Unknown diff operation.\");\n }\n }\n return leven += Math.max(insertions, deletions), leven;\n}\nfunction xIndex(diffs, location) {\n let chars1 = 0, chars2 = 0, lastChars1 = 0, lastChars2 = 0, x;\n for (x = 0; x < diffs.length && (diffs[x][0] !== DIFF_INSERT && (chars1 += diffs[x][1].length), diffs[x][0] !== DIFF_DELETE && (chars2 += diffs[x][1].length), !(chars1 > location)); x++)\n lastChars1 = chars1, lastChars2 = chars2;\n return diffs.length !== x && diffs[x][0] === DIFF_DELETE ? lastChars2 : lastChars2 + (location - lastChars1);\n}\nfunction countUtf8Bytes(str) {\n let bytes = 0;\n for (let i = 0; i < str.length; i++) {\n const codePoint = str.codePointAt(i);\n if (typeof codePoint > \"u\")\n throw new Error(\"Failed to get codepoint\");\n bytes += utf8len(codePoint);\n }\n return bytes;\n}\nfunction adjustIndiciesToUcs2(patches, base, options = {}) {\n let byteOffset = 0, idx = 0;\n function advanceTo(target) {\n for (; byteOffset < target; ) {\n const codePoint = base.codePointAt(idx);\n if (typeof codePoint > \"u\")\n return idx;\n byteOffset += utf8len(codePoint), codePoint > 65535 ? idx += 2 : idx += 1;\n }\n if (!options.allowExceedingIndices && byteOffset !== target)\n throw new Error(\"Failed to determine byte offset\");\n return idx;\n }\n const adjusted = [];\n for (const patch of patches)\n adjusted.push({\n diffs: patch.diffs.map((diff2) => cloneDiff(diff2)),\n start1: advanceTo(patch.start1),\n start2: advanceTo(patch.start2),\n utf8Start1: patch.utf8Start1,\n utf8Start2: patch.utf8Start2,\n length1: patch.length1,\n length2: patch.length2,\n utf8Length1: patch.utf8Length1,\n utf8Length2: patch.utf8Length2\n });\n return adjusted;\n}\nfunction utf8len(codePoint) {\n return codePoint <= 127 ? 1 : codePoint <= 2047 ? 2 : codePoint <= 65535 ? 3 : 4;\n}\nconst MAX_BITS = 32, DEFAULT_MARGIN = 4;\nfunction addPadding(patches, margin = DEFAULT_MARGIN) {\n const paddingLength = margin;\n let nullPadding = \"\";\n for (let x = 1; x <= paddingLength; x++)\n nullPadding += String.fromCharCode(x);\n for (const p of patches)\n p.start1 += paddingLength, p.start2 += paddingLength, p.utf8Start1 += paddingLength, p.utf8Start2 += paddingLength;\n let patch = patches[0], diffs = patch.diffs;\n if (diffs.length === 0 || diffs[0][0] !== DIFF_EQUAL)\n diffs.unshift([DIFF_EQUAL, nullPadding]), patch.start1 -= paddingLength, patch.start2 -= paddingLength, patch.utf8Start1 -= paddingLength, patch.utf8Start2 -= paddingLength, patch.length1 += paddingLength, patch.length2 += paddingLength, patch.utf8Length1 += paddingLength, patch.utf8Length2 += paddingLength;\n else if (paddingLength > diffs[0][1].length) {\n const firstDiffLength = diffs[0][1].length, extraLength = paddingLength - firstDiffLength;\n diffs[0][1] = nullPadding.substring(firstDiffLength) + diffs[0][1], patch.start1 -= extraLength, patch.start2 -= extraLength, patch.utf8Start1 -= extraLength, patch.utf8Start2 -= extraLength, patch.length1 += extraLength, patch.length2 += extraLength, patch.utf8Length1 += extraLength, patch.utf8Length2 += extraLength;\n }\n if (patch = patches[patches.length - 1], diffs = patch.diffs, diffs.length === 0 || diffs[diffs.length - 1][0] !== DIFF_EQUAL)\n diffs.push([DIFF_EQUAL, nullPadding]), patch.length1 += paddingLength, patch.length2 += paddingLength, patch.utf8Length1 += paddingLength, patch.utf8Length2 += paddingLength;\n else if (paddingLength > diffs[diffs.length - 1][1].length) {\n const extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength), patch.length1 += extraLength, patch.length2 += extraLength, patch.utf8Length1 += extraLength, patch.utf8Length2 += extraLength;\n }\n return nullPadding;\n}\nfunction createPatchObject(start1, start2) {\n return {\n diffs: [],\n start1,\n start2,\n utf8Start1: start1,\n utf8Start2: start2,\n length1: 0,\n length2: 0,\n utf8Length1: 0,\n utf8Length2: 0\n };\n}\nfunction splitMax(patches, margin = DEFAULT_MARGIN) {\n const patchSize = MAX_BITS;\n for (let x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patchSize)\n continue;\n const bigpatch = patches[x];\n patches.splice(x--, 1);\n let start1 = bigpatch.start1, start2 = bigpatch.start2, preContext = \"\";\n for (; bigpatch.diffs.length !== 0; ) {\n const patch = createPatchObject(start1 - preContext.length, start2 - preContext.length);\n let empty = !0;\n if (preContext !== \"\") {\n const precontextByteCount = countUtf8Bytes(preContext);\n patch.length1 = preContext.length, patch.utf8Length1 = precontextByteCount, patch.length2 = preContext.length, patch.utf8Length2 = precontextByteCount, patch.diffs.push([DIFF_EQUAL, preContext]);\n }\n for (; bigpatch.diffs.length !== 0 && patch.length1 < patchSize - margin; ) {\n const diffType = bigpatch.diffs[0][0];\n let diffText = bigpatch.diffs[0][1], diffTextByteCount = countUtf8Bytes(diffText);\n if (diffType === DIFF_INSERT) {\n patch.length2 += diffText.length, patch.utf8Length2 += diffTextByteCount, start2 += diffText.length;\n const diff2 = bigpatch.diffs.shift();\n diff2 && patch.diffs.push(diff2), empty = !1;\n } else diffType === DIFF_DELETE && patch.diffs.length === 1 && patch.diffs[0][0] === DIFF_EQUAL && diffText.length > 2 * patchSize ? (patch.length1 += diffText.length, patch.utf8Length1 += diffTextByteCount, start1 += diffText.length, empty = !1, patch.diffs.push([diffType, diffText]), bigpatch.diffs.shift()) : (diffText = diffText.substring(0, patchSize - patch.length1 - margin), diffTextByteCount = countUtf8Bytes(diffText), patch.length1 += diffText.length, patch.utf8Length1 += diffTextByteCount, start1 += diffText.length, diffType === DIFF_EQUAL ? (patch.length2 += diffText.length, patch.utf8Length2 += diffTextByteCount, start2 += diffText.length) : empty = !1, patch.diffs.push([diffType, diffText]), diffText === bigpatch.diffs[0][1] ? bigpatch.diffs.shift() : bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diffText.length));\n }\n preContext = diffText2(patch.diffs), preContext = preContext.substring(preContext.length - margin);\n const postContext = diffText1(bigpatch.diffs).substring(0, margin), postContextByteCount = countUtf8Bytes(postContext);\n postContext !== \"\" && (patch.length1 += postContext.length, patch.length2 += postContext.length, patch.utf8Length1 += postContextByteCount, patch.utf8Length2 += postContextByteCount, patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL ? patch.diffs[patch.diffs.length - 1][1] += postContext : patch.diffs.push([DIFF_EQUAL, postContext])), empty || patches.splice(++x, 0, patch);\n }\n }\n}\nfunction apply(patches, originalText, opts = {}) {\n if (typeof patches == \"string\")\n throw new Error(\"Patches must be an array - pass the patch to `parsePatch()` first\");\n let text = originalText;\n if (patches.length === 0)\n return [text, []];\n const parsed = adjustIndiciesToUcs2(patches, text, {\n allowExceedingIndices: opts.allowExceedingIndices\n }), margin = opts.margin || DEFAULT_MARGIN, deleteThreshold = opts.deleteThreshold || 0.4, nullPadding = addPadding(parsed, margin);\n text = nullPadding + text + nullPadding, splitMax(parsed, margin);\n let delta = 0;\n const results = [];\n for (let x = 0; x < parsed.length; x++) {\n const expectedLoc = parsed[x].start2 + delta, text1 = diffText1(parsed[x].diffs);\n let startLoc, endLoc = -1;\n if (text1.length > MAX_BITS ? (startLoc = match(text, text1.substring(0, MAX_BITS), expectedLoc), startLoc !== -1 && (endLoc = match(\n text,\n text1.substring(text1.length - MAX_BITS),\n expectedLoc + text1.length - MAX_BITS\n ), (endLoc === -1 || startLoc >= endLoc) && (startLoc = -1))) : startLoc = match(text, text1, expectedLoc), startLoc === -1)\n results[x] = !1, delta -= parsed[x].length2 - parsed[x].length1;\n else {\n results[x] = !0, delta = startLoc - expectedLoc;\n let text2;\n if (endLoc === -1 ? text2 = text.substring(startLoc, startLoc + text1.length) : text2 = text.substring(startLoc, endLoc + MAX_BITS), text1 === text2)\n text = text.substring(0, startLoc) + diffText2(parsed[x].diffs) + text.substring(startLoc + text1.length);\n else {\n let diffs = diff(text1, text2, { checkLines: !1 });\n if (text1.length > MAX_BITS && levenshtein(diffs) / text1.length > deleteThreshold)\n results[x] = !1;\n else {\n diffs = cleanupSemanticLossless(diffs);\n let index1 = 0, index2 = 0;\n for (let y = 0; y < parsed[x].diffs.length; y++) {\n const mod = parsed[x].diffs[y];\n mod[0] !== DIFF_EQUAL && (index2 = xIndex(diffs, index1)), mod[0] === DIFF_INSERT ? text = text.substring(0, startLoc + index2) + mod[1] + text.substring(startLoc + index2) : mod[0] === DIFF_DELETE && (text = text.substring(0, startLoc + index2) + text.substring(startLoc + xIndex(diffs, index1 + mod[1].length))), mod[0] !== DIFF_DELETE && (index1 += mod[1].length);\n }\n }\n }\n }\n }\n return text = text.substring(nullPadding.length, text.length - nullPadding.length), [text, results];\n}\nvar __defProp = Object.defineProperty, __getOwnPropSymbols = Object.getOwnPropertySymbols, __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable, __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b))\n __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n return a;\n};\nconst DEFAULT_OPTS = {\n margin: 4\n};\nfunction getDefaultOpts(opts = {}) {\n return __spreadValues(__spreadValues({}, DEFAULT_OPTS), opts);\n}\nfunction make(a, b, options) {\n if (typeof a == \"string\" && typeof b == \"string\") {\n let diffs = diff(a, b, { checkLines: !0 });\n return diffs.length > 2 && (diffs = cleanupSemantic(diffs), diffs = cleanupEfficiency(diffs)), _make(a, diffs, getDefaultOpts(options));\n }\n if (a && Array.isArray(a) && typeof b > \"u\")\n return _make(diffText1(a), a, getDefaultOpts(options));\n if (typeof a == \"string\" && b && Array.isArray(b))\n return _make(a, b, getDefaultOpts(options));\n throw new Error(\"Unknown call format to make()\");\n}\nfunction _make(textA, diffs, options) {\n if (diffs.length === 0)\n return [];\n const patches = [];\n let patch = createPatchObject(0, 0), patchDiffLength = 0, charCount1 = 0, charCount2 = 0, utf8Count1 = 0, utf8Count2 = 0, prepatchText = textA, postpatchText = textA;\n for (let x = 0; x < diffs.length; x++) {\n const currentDiff = diffs[x], [diffType, diffText] = currentDiff, diffTextLength = diffText.length, diffByteLength = countUtf8Bytes(diffText);\n switch (!patchDiffLength && diffType !== DIFF_EQUAL && (patch.start1 = charCount1, patch.start2 = charCount2, patch.utf8Start1 = utf8Count1, patch.utf8Start2 = utf8Count2), diffType) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = currentDiff, patch.length2 += diffTextLength, patch.utf8Length2 += diffByteLength, postpatchText = postpatchText.substring(0, charCount2) + diffText + postpatchText.substring(charCount2);\n break;\n case DIFF_DELETE:\n patch.length1 += diffTextLength, patch.utf8Length1 += diffByteLength, patch.diffs[patchDiffLength++] = currentDiff, postpatchText = postpatchText.substring(0, charCount2) + postpatchText.substring(charCount2 + diffTextLength);\n break;\n case DIFF_EQUAL:\n diffTextLength <= 2 * options.margin && patchDiffLength && diffs.length !== x + 1 ? (patch.diffs[patchDiffLength++] = currentDiff, patch.length1 += diffTextLength, patch.length2 += diffTextLength, patch.utf8Length1 += diffByteLength, patch.utf8Length2 += diffByteLength) : diffTextLength >= 2 * options.margin && patchDiffLength && (addContext(patch, prepatchText, options), patches.push(patch), patch = createPatchObject(-1, -1), patchDiffLength = 0, prepatchText = postpatchText, charCount1 = charCount2, utf8Count1 = utf8Count2);\n break;\n default:\n throw new Error(\"Unknown diff type\");\n }\n diffType !== DIFF_INSERT && (charCount1 += diffTextLength, utf8Count1 += diffByteLength), diffType !== DIFF_DELETE && (charCount2 += diffTextLength, utf8Count2 += diffByteLength);\n }\n return patchDiffLength && (addContext(patch, prepatchText, options), patches.push(patch)), patches;\n}\nfunction addContext(patch, text, opts) {\n if (text.length === 0)\n return;\n let pattern = text.substring(patch.start2, patch.start2 + patch.length1), padding = 0;\n for (; text.indexOf(pattern) !== text.lastIndexOf(pattern) && pattern.length < MAX_BITS - opts.margin - opts.margin; )\n padding += opts.margin, pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);\n padding += opts.margin;\n let prefixStart = patch.start2 - padding;\n prefixStart >= 1 && isLowSurrogate(text[prefixStart]) && prefixStart--;\n const prefix = text.substring(prefixStart, patch.start2);\n prefix && patch.diffs.unshift([DIFF_EQUAL, prefix]);\n const prefixLength = prefix.length, prefixUtf8Length = countUtf8Bytes(prefix);\n let suffixEnd = patch.start2 + patch.length1 + padding;\n suffixEnd < text.length && isLowSurrogate(text[suffixEnd]) && suffixEnd++;\n const suffix = text.substring(patch.start2 + patch.length1, suffixEnd);\n suffix && patch.diffs.push([DIFF_EQUAL, suffix]);\n const suffixLength = suffix.length, suffixUtf8Length = countUtf8Bytes(suffix);\n patch.start1 -= prefixLength, patch.start2 -= prefixLength, patch.utf8Start1 -= prefixUtf8Length, patch.utf8Start2 -= prefixUtf8Length, patch.length1 += prefixLength + suffixLength, patch.length2 += prefixLength + suffixLength, patch.utf8Length1 += prefixUtf8Length + suffixUtf8Length, patch.utf8Length2 += prefixUtf8Length + suffixUtf8Length;\n}\nconst patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\nfunction parse(textline) {\n if (!textline)\n return [];\n const patches = [], lines = textline.split(`\n`);\n let textPointer = 0;\n for (; textPointer < lines.length; ) {\n const m = lines[textPointer].match(patchHeader);\n if (!m)\n throw new Error(`Invalid patch string: ${lines[textPointer]}`);\n const patch = createPatchObject(toInt(m[1]), toInt(m[3]));\n for (patches.push(patch), m[2] === \"\" ? (patch.start1--, patch.utf8Start1--, patch.length1 = 1, patch.utf8Length1 = 1) : m[2] === \"0\" ? (patch.length1 = 0, patch.utf8Length1 = 0) : (patch.start1--, patch.utf8Start1--, patch.utf8Length1 = toInt(m[2]), patch.length1 = patch.utf8Length1), m[4] === \"\" ? (patch.start2--, patch.utf8Start2--, patch.length2 = 1, patch.utf8Length2 = 1) : m[4] === \"0\" ? (patch.length2 = 0, patch.utf8Length2 = 0) : (patch.start2--, patch.utf8Start2--, patch.utf8Length2 = toInt(m[4]), patch.length2 = patch.utf8Length2), textPointer++; textPointer < lines.length; ) {\n const currentLine = lines[textPointer], sign = currentLine.charAt(0);\n if (sign === \"@\")\n break;\n if (sign === \"\") {\n textPointer++;\n continue;\n }\n let line;\n try {\n line = decodeURI(currentLine.slice(1));\n } catch (ex) {\n throw new Error(`Illegal escape in parse: ${currentLine}`);\n }\n const utf8Diff = countUtf8Bytes(line) - line.length;\n if (sign === \"-\")\n patch.diffs.push([DIFF_DELETE, line]), patch.length1 -= utf8Diff;\n else if (sign === \"+\")\n patch.diffs.push([DIFF_INSERT, line]), patch.length2 -= utf8Diff;\n else if (sign === \" \")\n patch.diffs.push([DIFF_EQUAL, line]), patch.length1 -= utf8Diff, patch.length2 -= utf8Diff;\n else\n throw new Error(`Invalid patch mode \"${sign}\" in: ${line}`);\n textPointer++;\n }\n }\n return patches;\n}\nfunction toInt(num) {\n return parseInt(num, 10);\n}\nfunction stringify(patches) {\n return patches.map(stringifyPatch).join(\"\");\n}\nfunction stringifyPatch(patch) {\n const { utf8Length1, utf8Length2, utf8Start1, utf8Start2, diffs } = patch;\n let coords1;\n utf8Length1 === 0 ? coords1 = `${utf8Start1},0` : utf8Length1 === 1 ? coords1 = `${utf8Start1 + 1}` : coords1 = `${utf8Start1 + 1},${utf8Length1}`;\n let coords2;\n utf8Length2 === 0 ? coords2 = `${utf8Start2},0` : utf8Length2 === 1 ? coords2 = `${utf8Start2 + 1}` : coords2 = `${utf8Start2 + 1},${utf8Length2}`;\n const text = [`@@ -${coords1} +${coords2} @@\n`];\n let op;\n for (let x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n op = \"+\";\n break;\n case DIFF_DELETE:\n op = \"-\";\n break;\n case DIFF_EQUAL:\n op = \" \";\n break;\n default:\n throw new Error(\"Unknown patch operation.\");\n }\n text[x + 1] = `${op + encodeURI(diffs[x][1])}\n`;\n }\n return text.join(\"\").replace(/%20/g, \" \");\n}\nexport {\n DIFF_DELETE,\n DIFF_EQUAL,\n DIFF_INSERT,\n adjustIndiciesToUcs2,\n apply as applyPatches,\n cleanupEfficiency,\n cleanupSemantic,\n diff as makeDiff,\n make as makePatches,\n match,\n parse as parsePatch,\n stringifyPatch,\n stringify as stringifyPatches,\n xIndex\n};\n//# sourceMappingURL=index.js.map\n","import \"./module.css\";\nimport {cleanupSemantic as $haT8Y$cleanupSemantic, makeDiff as $haT8Y$makeDiff} from \"@sanity/diff-match-patch\";\n\n/* eslint-disable no-console */ /* Using local update by @dmsnell:\nhttps://github.com/dmsnell/diff-match-patch/blob/issues/69-broken-surrogate-pairs/javascript/diff_match_patch_uncompressed.js\n*/ \n/**\n * Simple is object check.\n * @param item\n * @returns {boolean}\n */ function $d0b82e0396560011$var$isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\nfunction $d0b82e0396560011$export$2e2bcd8739ae039(target, source) {\n if ($d0b82e0396560011$var$isObject(target) && $d0b82e0396560011$var$isObject(source)) Object.keys(source).forEach((key)=>{\n if (key === '__proto__' || key === 'constructor') return;\n if ($d0b82e0396560011$var$isObject(source[key])) {\n if (!target[key] || !$d0b82e0396560011$var$isObject(target[key])) target[key] = source[key];\n $d0b82e0396560011$export$2e2bcd8739ae039(target[key], source[key]);\n } else Object.assign(target, {\n [key]: source[key]\n });\n });\n return target;\n}\n\n\nfunction $a61894d52139a1b7$export$2e2bcd8739ae039(callback, wait, immediate = false) {\n let timeout = null;\n let initialCall = true;\n return (...args)=>{\n const callNow = immediate && initialCall;\n const next = ()=>{\n callback.apply(this, args);\n timeout = null;\n };\n if (callNow) {\n initialCall = false;\n next();\n }\n if (!timeout) timeout = setTimeout(next, wait);\n };\n}\n\n\nfunction $20710ff753814db4$export$2e2bcd8739ae039(callback, wait) {\n let timeout;\n return (...args)=>{\n const context = this;\n clearTimeout(timeout);\n timeout = setTimeout(()=>callback.apply(context, args), wait);\n };\n}\n\n\nfunction $f81fe5d88190aca6$export$2e2bcd8739ae039(value = '') {\n const normalized = value.replace(/\\r\\n/g, '\\n');\n return normalized;\n}\n\n\n// generates a Bezier curve in SVG format\nfunction $238bad4938ddde7c$export$2e2bcd8739ae039(startX, startY, endX, endY) {\n const w = endX - startX;\n const halfWidth = startX + w / 2;\n // now create the curve\n // position it at the initial x,y coords\n // This is of the form \"C M,N O,P Q,R\" where C is a directive for SVG (\"curveto\"),\n // M,N are the first curve control point, O,P the second control point\n // and Q,R are the final coords\n return `M ${startX} ${startY} C ${halfWidth},${startY} ${halfWidth},${endY} ${endX},${endY}`;\n}\n\n\nvar $b5c286a254b261e6$export$2e2bcd8739ae039 = {\n DIFF_EQUAL: 0,\n DIFF_DELETE: -1,\n DIFF_INSERT: 1,\n EDITOR_RIGHT: 'right',\n EDITOR_LEFT: 'left',\n RTL: 'rtl',\n LTR: 'ltr',\n SVG_NS: 'http://www.w3.org/2000/svg',\n DIFF_GRANULARITY_SPECIFIC: 'specific',\n DIFF_GRANULARITY_BROAD: 'broad'\n};\n\n\nfunction $3d931e456f0d108c$export$2e2bcd8739ae039(acediff, editor) {\n let { mode: mode } = acediff.options;\n if (editor === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT && acediff.options.left.mode !== null) mode = acediff.options.left.mode;\n if (editor === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_RIGHT && acediff.options.right.mode !== null) mode = acediff.options.right.mode;\n return mode;\n}\n\n\n\nfunction $893f0e07a87dd83c$export$2e2bcd8739ae039(acediff, editor) {\n let { theme: theme } = acediff.options;\n if (editor === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT && acediff.options.left.theme !== null) theme = acediff.options.left.theme;\n if (editor === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_RIGHT && acediff.options.right.theme !== null) theme = acediff.options.right.theme;\n return theme;\n}\n\n\nfunction $fc0df9ae77cc2f56$export$2e2bcd8739ae039(editor, line) {\n return editor.ace.getSession().doc.getLine(line);\n}\n\n\nfunction $7eb2da7d8a00890b$export$2e2bcd8739ae039(acediff) {\n // editorHeight: document.getElementById(acediff.options.left.id).clientHeight\n return document.getElementById(acediff.options.left.id).offsetHeight;\n}\n\n\nfunction $c0c16fed0f3352bb$export$2e2bcd8739ae039(info) {\n const el = document.createElement('div');\n const props = {\n class: info.className,\n style: `top:${info.topOffset}px`,\n title: info.tooltip,\n 'data-diff-index': info.diffIndex\n };\n for(const key in props)el.setAttribute(key, props[key]);\n el.innerHTML = info.arrowContent;\n return el;\n}\n\n\n/**\n * Search for element in parent and create it if it can't be found\n * @param {*HTMLElement} parent\n * @param {string} elClass Element class\n *\n * Returns ID of the element\n */ function $419710df3593df8d$export$2e2bcd8739ae039(parent, elClass) {\n const guid = Math.random().toString(36).substr(2, 5);\n const newId = `js-${elClass}-${guid}`;\n const currentEl = parent.querySelector(`.${elClass}`);\n if (currentEl) {\n currentEl.id = currentEl.id || newId;\n return currentEl.id;\n }\n const el = document.createElement('div');\n parent.appendChild(el);\n el.className = elClass;\n el.id = newId;\n return el.id;\n}\n\n\nfunction $e485cb2ed1808217$export$2e2bcd8739ae039(elSelector, eventName, selector, fn) {\n const element = elSelector === 'document' ? document : document.querySelector(elSelector);\n element.addEventListener(eventName, (event)=>{\n const possibleTargets = element.querySelectorAll(selector);\n const { target: target } = event;\n for(let i = 0, l = possibleTargets.length; i < l; i += 1){\n let el = target;\n const p = possibleTargets[i];\n while(el && el !== element){\n if (el === p) fn.call(p, event);\n el = el.parentNode;\n }\n }\n });\n}\n\n\n\n\n\n// Range module placeholder\nlet $cd537e9fa9c12db2$var$Range;\nfunction $cd537e9fa9c12db2$var$getRangeModule(ace) {\n if (ace.Range) return ace.Range;\n const requireFunc = ace.acequire || ace.require;\n if (requireFunc) return requireFunc('ace/range');\n return false;\n}\nfunction $cd537e9fa9c12db2$export$2e2bcd8739ae039(options = {}) {\n // Ensure instance is a constructor with `new`\n if (!(this instanceof $cd537e9fa9c12db2$export$2e2bcd8739ae039)) return new $cd537e9fa9c12db2$export$2e2bcd8739ae039(options);\n // Current instance we pass around to other functions\n const acediff = this;\n const getDefaultAce = ()=>window ? window.ace : undefined;\n acediff.options = (0, $d0b82e0396560011$export$2e2bcd8739ae039)({\n ace: getDefaultAce(),\n mode: null,\n theme: null,\n element: null,\n diffGranularity: (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_GRANULARITY_BROAD,\n lockScrolling: false,\n showDiffs: true,\n showConnectors: true,\n maxDiffs: 5000,\n left: {\n id: null,\n content: null,\n mode: null,\n theme: null,\n editable: true,\n copyLinkEnabled: true\n },\n right: {\n id: null,\n content: null,\n mode: null,\n theme: null,\n editable: true,\n copyLinkEnabled: true\n },\n classes: {\n gutterID: 'acediff__gutter',\n diff: 'acediff__diffLine',\n connector: 'acediff__connector',\n newCodeConnectorLink: 'acediff__newCodeConnector',\n newCodeConnectorLinkContent: '&#8594;',\n deletedCodeConnectorLink: 'acediff__deletedCodeConnector',\n deletedCodeConnectorLinkContent: '&#8592;',\n copyRightContainer: 'acediff__copy--right',\n copyLeftContainer: 'acediff__copy--left'\n },\n connectorYOffset: 0\n }, options);\n const { ace: ace } = acediff.options;\n if (!ace) {\n const errMessage = 'No ace editor found nor supplied - `options.ace` or `window.ace` is missing';\n console.error(errMessage);\n return new Error(errMessage);\n }\n $cd537e9fa9c12db2$var$Range = $cd537e9fa9c12db2$var$getRangeModule(ace);\n if (!$cd537e9fa9c12db2$var$Range) {\n const errMessage = 'Could not require Range module for Ace. Depends on your bundling strategy, but it usually comes with Ace itself. See https://ace.c9.io/api/range.html, open an issue on GitHub ace-diff/ace-diff';\n console.error(errMessage);\n return new Error(errMessage);\n }\n if (acediff.options.element === null) {\n const errMessage = 'You need to specify an element for Ace-diff - `options.element` is missing';\n console.error(errMessage);\n return new Error(errMessage);\n }\n if (acediff.options.element instanceof HTMLElement) acediff.el = acediff.options.element;\n else acediff.el = document.body.querySelector(acediff.options.element);\n if (!acediff.el) {\n const errMessage = `Can't find the specified element ${acediff.options.element}`;\n console.error(errMessage);\n return new Error(errMessage);\n }\n acediff.options.left.id = (0, $419710df3593df8d$export$2e2bcd8739ae039)(acediff.el, 'acediff__left');\n acediff.options.classes.gutterID = (0, $419710df3593df8d$export$2e2bcd8739ae039)(acediff.el, 'acediff__gutter');\n acediff.options.right.id = (0, $419710df3593df8d$export$2e2bcd8739ae039)(acediff.el, 'acediff__right');\n acediff.el.innerHTML = `<div class=\"acediff__wrap\">${acediff.el.innerHTML}</div>`;\n // instantiate the editors in an internal data structure\n // that will store a little info about the diffs and\n // editor content\n acediff.editors = {\n left: {\n ace: ace.edit(acediff.options.left.id),\n markers: [],\n lineLengths: []\n },\n right: {\n ace: ace.edit(acediff.options.right.id),\n markers: [],\n lineLengths: []\n },\n editorHeight: null\n };\n // set up the editors\n acediff.editors.left.ace.getSession().setMode((0, $3d931e456f0d108c$export$2e2bcd8739ae039)(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT));\n acediff.editors.right.ace.getSession().setMode((0, $3d931e456f0d108c$export$2e2bcd8739ae039)(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_RIGHT));\n acediff.editors.left.ace.setReadOnly(!acediff.options.left.editable);\n acediff.editors.right.ace.setReadOnly(!acediff.options.right.editable);\n acediff.editors.left.ace.setTheme((0, $893f0e07a87dd83c$export$2e2bcd8739ae039)(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT));\n acediff.editors.right.ace.setTheme((0, $893f0e07a87dd83c$export$2e2bcd8739ae039)(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_RIGHT));\n acediff.editors.left.ace.setValue((0, $f81fe5d88190aca6$export$2e2bcd8739ae039)(acediff.options.left.content), -1);\n acediff.editors.right.ace.setValue((0, $f81fe5d88190aca6$export$2e2bcd8739ae039)(acediff.options.right.content), -1);\n // store the visible height of the editors (assumed the same)\n acediff.editors.editorHeight = (0, $7eb2da7d8a00890b$export$2e2bcd8739ae039)(acediff);\n // The lineHeight is set to 0 initially and we need to wait for another tick to get it\n // Thus moving the diff() with it\n setTimeout(()=>{\n // assumption: both editors have same line heights\n acediff.lineHeight = acediff.editors.left.ace.renderer.lineHeight;\n $cd537e9fa9c12db2$var$addEventHandlers(acediff);\n $cd537e9fa9c12db2$var$createCopyContainers(acediff);\n $cd537e9fa9c12db2$var$createGutter(acediff);\n acediff.diff();\n }, 1);\n}\n// our public API\n$cd537e9fa9c12db2$export$2e2bcd8739ae039.prototype = {\n // allows on-the-fly changes to the AceDiff instance settings\n setOptions (options) {\n (0, $d0b82e0396560011$export$2e2bcd8739ae039)(this.options, options);\n this.diff();\n },\n getNumDiffs () {\n return this.diffs.length;\n },\n // exposes the Ace editors in case the dev needs it\n getEditors () {\n return {\n left: this.editors.left.ace,\n right: this.editors.right.ace\n };\n },\n // our main diffing function. I actually don't think this needs to exposed:\n // it's called automatically, but just to be safe, it's included\n diff () {\n const val1 = this.editors.left.ace.getSession().getValue();\n const val2 = this.editors.right.ace.getSession().getValue();\n // Main diff method that calculates the diffs\n const diff = (0, $haT8Y$cleanupSemantic)((0, $haT8Y$makeDiff)(val2, val1));\n this.editors.left.lineLengths = $cd537e9fa9c12db2$var$getLineLengths(this.editors.left);\n this.editors.right.lineLengths = $cd537e9fa9c12db2$var$getLineLengths(this.editors.right);\n // parse the raw diff into something a little more palatable\n const diffs = [];\n const offset = {\n left: 0,\n right: 0\n };\n diff.forEach((chunk)=>{\n const chunkType = chunk[0];\n let text = chunk[1];\n // oddly, occasionally the algorithm returns a diff with no changes made\n if (text.length === 0) return;\n if (chunkType === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_EQUAL) {\n offset.left += text.length;\n offset.right += text.length;\n } else if (chunkType === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_DELETE) {\n diffs.push($cd537e9fa9c12db2$var$computeDiff(this, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_DELETE, offset.left, offset.right, text));\n offset.right += text.length;\n } else if (chunkType === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_INSERT) {\n diffs.push($cd537e9fa9c12db2$var$computeDiff(this, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_INSERT, offset.left, offset.right, text));\n offset.left += text.length;\n }\n }, this);\n // simplify our computed diffs; this groups together multiple diffs on subsequent lines\n this.diffs = $cd537e9fa9c12db2$var$simplifyDiffs(this, diffs);\n // if we're dealing with too many diffs, fail silently\n if (this.diffs.length > this.options.maxDiffs) return;\n $cd537e9fa9c12db2$var$clearDiffs(this);\n $cd537e9fa9c12db2$var$decorate(this);\n },\n destroy () {\n // destroy the two editors\n const leftValue = this.editors.left.ace.getValue();\n this.editors.left.ace.destroy();\n let oldDiv = this.editors.left.ace.container;\n let newDiv = oldDiv.cloneNode(false);\n newDiv.textContent = leftValue;\n oldDiv.parentNode.replaceChild(newDiv, oldDiv);\n const rightValue = this.editors.right.ace.getValue();\n this.editors.right.ace.destroy();\n oldDiv = this.editors.right.ace.container;\n newDiv = oldDiv.cloneNode(false);\n newDiv.textContent = rightValue;\n oldDiv.parentNode.replaceChild(newDiv, oldDiv);\n const elementById = document.getElementById(this.options.classes.gutterID);\n if (elementById) elementById.innerHTML = '';\n this.removeEventHandlers();\n }\n};\nfunction $cd537e9fa9c12db2$var$addEventHandlers(acediff) {\n acediff.editors.left.ace.getSession().on('changeScrollTop', (0, $a61894d52139a1b7$export$2e2bcd8739ae039)(()=>{\n $cd537e9fa9c12db2$var$updateGap(acediff);\n }, 16));\n acediff.editors.right.ace.getSession().on('changeScrollTop', (0, $a61894d52139a1b7$export$2e2bcd8739ae039)(()=>{\n $cd537e9fa9c12db2$var$updateGap(acediff);\n }, 16));\n const diff = acediff.diff.bind(acediff);\n acediff.editors.left.ace.on('change', diff);\n acediff.editors.right.ace.on('change', diff);\n if (acediff.options.left.copyLinkEnabled) (0, $e485cb2ed1808217$export$2e2bcd8739ae039)(`#${acediff.options.classes.gutterID}`, 'click', `.${acediff.options.classes.newCodeConnectorLink}`, (e)=>{\n $cd537e9fa9c12db2$var$copy(acediff, e, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).LTR);\n });\n if (acediff.options.right.copyLinkEnabled) (0, $e485cb2ed1808217$export$2e2bcd8739ae039)(`#${acediff.options.classes.gutterID}`, 'click', `.${acediff.options.classes.deletedCodeConnectorLink}`, (e)=>{\n $cd537e9fa9c12db2$var$copy(acediff, e, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).RTL);\n });\n const onResize = (0, $20710ff753814db4$export$2e2bcd8739ae039)(()=>{\n acediff.editors.availableHeight = document.getElementById(acediff.options.left.id).offsetHeight;\n // TODO this should re-init gutter\n acediff.diff();\n }, 250);\n window.addEventListener('resize', onResize);\n acediff.removeEventHandlers = ()=>{\n window.removeEventListener('resize', onResize);\n };\n}\nfunction $cd537e9fa9c12db2$var$copy(acediff, e, dir) {\n const diffIndex = parseInt(e.target.getAttribute('data-diff-index'), 10);\n const diff = acediff.diffs[diffIndex];\n let sourceEditor;\n let targetEditor;\n let startLine;\n let endLine;\n let targetStartLine;\n let targetEndLine;\n if (dir === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).LTR) {\n sourceEditor = acediff.editors.left;\n targetEditor = acediff.editors.right;\n startLine = diff.leftStartLine;\n endLine = diff.leftEndLine;\n targetStartLine = diff.rightStartLine;\n targetEndLine = diff.rightEndLine;\n } else {\n sourceEditor = acediff.editors.right;\n targetEditor = acediff.editors.left;\n startLine = diff.rightStartLine;\n endLine = diff.rightEndLine;\n targetStartLine = diff.leftStartLine;\n targetEndLine = diff.leftEndLine;\n }\n let contentToInsert = '';\n for(let i = startLine; i < endLine; i += 1){\n contentToInsert += (0, $fc0df9ae77cc2f56$export$2e2bcd8739ae039)(sourceEditor, i);\n // JMT: If the first line is blank we add an extra newline\n // because when it is inserted the first one is effectively eaten\n // by the replace and merging of the lines\n // However if the targetStartLine is the very top then we don't\n // if (i === startLine && contentToInsert === '' && targetStartLine != 0) {\n // contentToInsert += '\\n'\n // }\n // Only add a trailing newline if we're not on the final line\n if (i < sourceEditor.ace.getSession().getLength() - 1) contentToInsert += '\\n';\n }\n // keep track of the scroll height\n const h = targetEditor.ace.getSession().getScrollTop();\n targetEditor.ace.getSession().replace(new $cd537e9fa9c12db2$var$Range(targetStartLine, 0, targetEndLine, 0), contentToInsert);\n targetEditor.ace.getSession().setScrollTop(parseInt(h, 10));\n acediff.diff();\n}\nfunction $cd537e9fa9c12db2$var$getLineLengths(editor) {\n // getAllLines() returns an array of strings, each string is a line in the editor\n // however the lines do not include the newline character at the end, so we need to add 1\n const lines = editor.ace.getSession().doc.getAllLines();\n const lineLengths = [];\n lines.forEach((line)=>{\n lineLengths.push(line.length + 1) // +1 for the newline char\n ;\n });\n return lineLengths;\n}\n// shows a diff in one of the two editors.\nfunction $cd537e9fa9c12db2$var$showDiff(acediff, editor, startLine, endLine, className) {\n const editorInstance = acediff.editors[editor];\n if (endLine < startLine) // can this occur? Just in case.\n endLine = startLine;\n const classNames = `${className} ${endLine > startLine ? 'lines' : 'targetOnly'}`;\n if (endLine > startLine) endLine -= 1 /* because endLine is usually + 1 */ ;\n // to get Ace to highlight the full row we just set the start and end chars to 0 and 1\n editorInstance.markers.push(editorInstance.ace.session.addMarker(new $cd537e9fa9c12db2$var$Range(startLine, 0, endLine, 1), classNames, 'fullLine'));\n}\n// called onscroll. Updates the gap to ensure the connectors are all lining up\nfunction $cd537e9fa9c12db2$var$updateGap(acediff) {\n $cd537e9fa9c12db2$var$clearDiffs(acediff);\n $cd537e9fa9c12db2$var$decorate(acediff);\n // reposition the copy containers containing all the arrows\n $cd537e9fa9c12db2$var$positionCopyContainers(acediff);\n}\nfunction $cd537e9fa9c12db2$var$clearDiffs(acediff) {\n acediff.editors.left.markers.forEach((marker)=>{\n acediff.editors.left.ace.getSession().removeMarker(marker);\n }, acediff);\n acediff.editors.right.markers.forEach((marker)=>{\n acediff.editors.right.ace.getSession().removeMarker(marker);\n }, acediff);\n}\nfunction $cd537e9fa9c12db2$var$addConnector(acediff, leftStartLine, leftEndLine, rightStartLine, rightEndLine) {\n const leftScrollTop = acediff.editors.left.ace.getSession().getScrollTop();\n const rightScrollTop = acediff.editors.right.ace.getSession().getScrollTop();\n // All connectors, regardless of ltr or rtl\n // have the same point system, even if p1 === p3 or p2 === p4\n // p1 p2\n //\n // p3 p4\n acediff.connectorYOffset = 1;\n const p1_x = -1;\n const p1_y = leftStartLine * acediff.lineHeight - leftScrollTop + 0.5;\n const p2_x = acediff.gutterWidth + 1;\n const p2_y = rightStartLine * acediff.lineHeight - rightScrollTop + 0.5;\n const p3_x = -1;\n const p3_y = leftEndLine * acediff.lineHeight - leftScrollTop + acediff.connectorYOffset + 0.5;\n const p4_x = acediff.gutterWidth + 1;\n const p4_y = rightEndLine * acediff.lineHeight - rightScrollTop + acediff.connectorYOffset + 0.5;\n const curve1 = (0, $238bad4938ddde7c$export$2e2bcd8739ae039)(p1_x, p1_y, p2_x, p2_y);\n const curve2 = (0, $238bad4938ddde7c$export$2e2bcd8739ae039)(p4_x, p4_y, p3_x, p3_y);\n const verticalLine1 = `L${p2_x},${p2_y} ${p4_x},${p4_y}`;\n const verticalLine2 = `L${p3_x},${p3_y} ${p1_x},${p1_y}`;\n const d = `${curve1} ${verticalLine1} ${curve2} ${verticalLine2}`;\n const el = document.createElementNS((0, $b5c286a254b261e6$export$2e2bcd8739ae039).SVG_NS, 'path');\n el.setAttribute('d', d);\n el.setAttribute('class', acediff.options.classes.connector);\n acediff.gutterSVG.appendChild(el);\n}\nfunction $cd537e9fa9c12db2$var$addCopyArrows(acediff, info, diffIndex) {\n if (info.leftEndLine > info.leftStartLine && acediff.options.left.copyLinkEnabled) {\n const arrow = (0, $c0c16fed0f3352bb$export$2e2bcd8739ae039)({\n className: acediff.options.classes.newCodeConnectorLink,\n topOffset: info.leftStartLine * acediff.lineHeight,\n tooltip: 'Copy to right',\n diffIndex: diffIndex,\n arrowContent: acediff.options.classes.newCodeConnectorLinkContent\n });\n acediff.copyRightContainer.appendChild(arrow);\n }\n if (info.rightEndLine > info.rightStartLine && acediff.options.right.copyLinkEnabled) {\n const arrow = (0, $c0c16fed0f3352bb$export$2e2bcd8739ae039)({\n className: acediff.options.classes.deletedCodeConnectorLink,\n topOffset: info.rightStartLine * acediff.lineHeight,\n tooltip: 'Copy to left',\n diffIndex: diffIndex,\n arrowContent: acediff.options.classes.deletedCodeConnectorLinkContent\n });\n acediff.copyLeftContainer.appendChild(arrow);\n }\n}\nfunction $cd537e9fa9c12db2$var$positionCopyContainers(acediff) {\n const leftTopOffset = acediff.editors.left.ace.getSession().getScrollTop();\n const rightTopOffset = acediff.editors.right.ace.getSession().getScrollTop();\n acediff.copyRightContainer.style.cssText = `top: ${-leftTopOffset}px`;\n acediff.copyLeftContainer.style.cssText = `top: ${-rightTopOffset}px`;\n}\n/**\n // eslint-disable-next-line max-len\n * This method takes the raw diffing info from the Google lib and returns a nice clean object of the following\n * form:\n * {\n * leftStartLine:\n * leftEndLine:\n * rightStartLine:\n * rightEndLine:\n * }\n *\n * Ultimately, that's all the info we need to highlight the appropriate lines in the left + right editor, add the\n * SVG connectors, and include the appropriate <<, >> arrows.\n *\n * Note: leftEndLine and rightEndLine are always the start of the NEXT line, so for a single line diff, there will\n * be 1 separating the startLine and endLine values. So if leftStartLine === leftEndLine or rightStartLine ===\n * rightEndLine, it means that new content from the other editor is being inserted and a single 1px line will be\n * drawn.\n */ function $cd537e9fa9c12db2$var$computeDiff(acediff, diffType, offsetLeft, offsetRight, diffText) {\n let lineInfo = {};\n if (diffType === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_INSERT) {\n // pretty confident this returns the right stuff for the left editor: start & end line & char\n let info = $cd537e9fa9c12db2$var$getSingleDiffInfo(acediff.editors.left, offsetLeft, diffText);\n // this is the ACTUAL undoctored current line in the other editor. It's always right. Doesn't mean it's\n // going to be used as the start line for the diff though.\n let currentLineOtherEditor = $cd537e9fa9c12db2$var$getLineForCharPosition(acediff.editors.right, offsetRight);\n let numCharsOnLineOtherEditor = $cd537e9fa9c12db2$var$getCharsOnLine(acediff.editors.right, currentLineOtherEditor);\n const numCharsOnLeftEditorStartLine = $cd537e9fa9c12db2$var$getCharsOnLine(acediff.editors.left, info.startLine);\n let rightStartLine = currentLineOtherEditor;\n let sameLineInsert = info.startLine === info.endLine;\n // whether or not this diff is a plain INSERT into the other editor, or overwrites a line take a little work to\n // figure out. This feels like the hardest part of the entire script.\n let numRows = 0;\n if (// dense, but this accommodates two scenarios:\n // 1. where a completely fresh new line is being inserted in left editor, we want the line on right to stay a 1px line\n // 2. where a new character is inserted at the start of a newline on the left but the line contains other stuff,\n // we DO want to make it a full line\n (info.startChar > 0 || sameLineInsert && diffText.length < numCharsOnLeftEditorStartLine) && // if the right editor line was empty, it's ALWAYS a single line insert [not an OR above?]\n numCharsOnLineOtherEditor > 0 && // if the text being inserted starts mid-line\n info.startChar < numCharsOnLeftEditorStartLine) numRows++;\n lineInfo = {\n leftStartLine: info.startLine,\n leftEndLine: info.endLine + 1,\n rightStartLine: rightStartLine,\n rightEndLine: rightStartLine + numRows\n };\n } else {\n let info = $cd537e9fa9c12db2$var$getSingleDiffInfo(acediff.editors.right, offsetRight, diffText);\n let currentLineOtherEditor = $cd537e9fa9c12db2$var$getLineForCharPosition(acediff.editors.left, offsetLeft);\n let numCharsOnLineOtherEditor = $cd537e9fa9c12db2$var$getCharsOnLine(acediff.editors.left, currentLineOtherEditor);\n const numCharsOnRightEditorStartLine = $cd537e9fa9c12db2$var$getCharsOnLine(acediff.editors.right, info.startLine);\n let leftStartLine = currentLineOtherEditor;\n let sameLineInsert = info.startLine === info.endLine;\n let numRows = 0;\n if (// dense, but this accommodates two scenarios:\n // 1. where a completely fresh new line is being inserted in left editor, we want the line on right to stay a 1px line\n // 2. where a new character is inserted at the start of a newline on the left but the line contains other stuff,\n // we DO want to make it a full line\n (info.startChar > 0 || sameLineInsert && diffText.length < numCharsOnRightEditorStartLine) && // if the right editor line was empty, it's ALWAYS a single line insert [not an OR above?]\n numCharsOnLineOtherEditor > 0 && // if the text being inserted starts mid-line\n info.startChar < numCharsOnRightEditorStartLine) numRows++;\n lineInfo = {\n leftStartLine: leftStartLine,\n leftEndLine: leftStartLine + numRows,\n rightStartLine: info.startLine,\n rightEndLine: info.endLine + 1\n };\n }\n return lineInfo;\n}\n// helper to return the startline, endline, startChar and endChar for a diff in a particular editor. Pretty\n// fussy function\nfunction $cd537e9fa9c12db2$var$getSingleDiffInfo(editor, offset, diffString) {\n const info = {\n startLine: 0,\n startChar: 0,\n endLine: 0,\n endChar: 0\n };\n const endCharNum = offset + diffString.length;\n let runningTotal = 0;\n let startLineSet = false;\n let endLineSet = false;\n editor.lineLengths.forEach((lineLength, lineIndex)=>{\n runningTotal += lineLength;\n if (!startLineSet && offset < runningTotal) {\n info.startLine = lineIndex;\n info.startChar = offset - runningTotal + lineLength;\n startLineSet = true;\n }\n if (!endLineSet && endCharNum <= runningTotal) {\n info.endLine = lineIndex;\n info.endChar = endCharNum - runningTotal + lineLength;\n endLineSet = true;\n }\n });\n // if the start char is the final char on the line, it's a newline & we ignore it\n if (info.startChar > 0 && $cd537e9fa9c12db2$var$getCharsOnLine(editor, info.startLine) === info.startChar) {\n info.startLine++;\n info.startChar = 0;\n }\n // if the end char is the first char on the line, we don't want to highlight that extra line\n if (info.endChar === 0) info.endLine--;\n const endsWithNewline = /\\n$/.test(diffString);\n if (info.startChar > 0 && endsWithNewline) info.endLine++;\n return info;\n}\n// note that this and everything else in this script uses 0-indexed row numbers\nfunction $cd537e9fa9c12db2$var$getCharsOnLine(editor, line) {\n return (0, $fc0df9ae77cc2f56$export$2e2bcd8739ae039)(editor, line).length;\n}\nfunction $cd537e9fa9c12db2$var$getLineForCharPosition(editor, offsetChars) {\n const lines = editor.ace.getSession().doc.getAllLines();\n let foundLine = 0;\n let runningTotal = 0;\n for(let i = 0; i < lines.length; i += 1){\n runningTotal += lines[i].length + 1 // +1 needed for newline char\n ;\n if (offsetChars <= runningTotal) {\n foundLine = i;\n if (offsetChars === runningTotal && i < lines.length - 1) foundLine += 1;\n break;\n }\n }\n // If we're past the end of the buffer then we need to bump the line total\n // because we're basically inserting after the last line\n if (runningTotal >= editor.ace.getSession().getValue().length) foundLine += 1;\n return foundLine;\n}\nfunction $cd537e9fa9c12db2$var$createGutter(acediff) {\n acediff.gutterHeight = document.getElementById(acediff.options.classes.gutterID).clientHeight;\n acediff.gutterWidth = document.getElementById(acediff.options.classes.gutterID).clientWidth;\n const leftHeight = $cd537e9fa9c12db2$var$getTotalHeight(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT);\n const rightHeight = $cd537e9fa9c12db2$var$getTotalHeight(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_RIGHT);\n const height = Math.max(leftHeight, rightHeight, acediff.gutterHeight);\n acediff.gutterSVG = document.createElementNS((0, $b5c286a254b261e6$export$2e2bcd8739ae039).SVG_NS, 'svg');\n acediff.gutterSVG.setAttribute('width', acediff.gutterWidth);\n acediff.gutterSVG.setAttribute('height', height);\n document.getElementById(acediff.options.classes.gutterID).appendChild(acediff.gutterSVG);\n}\n// acediff.editors.left.ace.getSession().getLength() * acediff.lineHeight\nfunction $cd537e9fa9c12db2$var$getTotalHeight(acediff, editor) {\n const ed = editor === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT ? acediff.editors.left : acediff.editors.right;\n return ed.ace.getSession().getLength() * acediff.lineHeight;\n}\n// creates two contains for positioning the copy left + copy right arrows\nfunction $cd537e9fa9c12db2$var$createCopyContainers(acediff) {\n acediff.copyRightContainer = document.createElement('div');\n acediff.copyRightContainer.setAttribute('class', acediff.options.classes.copyRightContainer);\n acediff.copyLeftContainer = document.createElement('div');\n acediff.copyLeftContainer.setAttribute('class', acediff.options.classes.copyLeftContainer);\n document.getElementById(acediff.options.classes.gutterID).appendChild(acediff.copyRightContainer);\n document.getElementById(acediff.options.classes.gutterID).appendChild(acediff.copyLeftContainer);\n}\nfunction $cd537e9fa9c12db2$var$clearGutter(acediff) {\n // gutter.innerHTML = '';\n const gutterEl = document.getElementById(acediff.options.classes.gutterID);\n gutterEl.removeChild(acediff.gutterSVG);\n $cd537e9fa9c12db2$var$createGutter(acediff);\n}\nfunction $cd537e9fa9c12db2$var$clearArrows(acediff) {\n acediff.copyLeftContainer.innerHTML = '';\n acediff.copyRightContainer.innerHTML = '';\n}\n/*\n * This combines multiple rows where, say, line 1 => line 1, line 2 => line 2, line 3-4 => line 3. That could be\n * reduced to a single connector line 1=4 => line 1-3\n */ function $cd537e9fa9c12db2$var$simplifyDiffs(acediff, diffs) {\n const groupedDiffs = [];\n function compare(val) {\n return acediff.options.diffGranularity === (0, $b5c286a254b261e6$export$2e2bcd8739ae039).DIFF_GRANULARITY_SPECIFIC ? val < 1 : val <= 1;\n }\n diffs.forEach((diff, index)=>{\n if (index === 0) {\n groupedDiffs.push(diff);\n return;\n }\n // loop through all grouped diffs. If this new diff lies between an existing one, we'll just add to it, rather\n // than create a new one\n let isGrouped = false;\n for(let i = 0; i < groupedDiffs.length; i += 1)if (compare(Math.abs(diff.leftStartLine - groupedDiffs[i].leftEndLine)) && compare(Math.abs(diff.rightStartLine - groupedDiffs[i].rightEndLine))) {\n // update the existing grouped diff to expand its horizons to include this new diff start + end lines\n groupedDiffs[i].leftStartLine = Math.min(diff.leftStartLine, groupedDiffs[i].leftStartLine);\n groupedDiffs[i].rightStartLine = Math.min(diff.rightStartLine, groupedDiffs[i].rightStartLine);\n groupedDiffs[i].leftEndLine = Math.max(diff.leftEndLine, groupedDiffs[i].leftEndLine);\n groupedDiffs[i].rightEndLine = Math.max(diff.rightEndLine, groupedDiffs[i].rightEndLine);\n isGrouped = true;\n break;\n }\n if (!isGrouped) groupedDiffs.push(diff);\n });\n // clear out any single line diffs (i.e. single line on both editors)\n const fullDiffs = [];\n groupedDiffs.forEach((diff)=>{\n if (diff.leftStartLine === diff.leftEndLine && diff.rightStartLine === diff.rightEndLine) return;\n fullDiffs.push(diff);\n });\n return fullDiffs;\n}\nfunction $cd537e9fa9c12db2$var$decorate(acediff) {\n $cd537e9fa9c12db2$var$clearGutter(acediff);\n $cd537e9fa9c12db2$var$clearArrows(acediff);\n acediff.diffs.forEach((info, diffIndex)=>{\n if (acediff.options.showDiffs) {\n $cd537e9fa9c12db2$var$showDiff(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_LEFT, info.leftStartLine, info.leftEndLine, acediff.options.classes.diff);\n $cd537e9fa9c12db2$var$showDiff(acediff, (0, $b5c286a254b261e6$export$2e2bcd8739ae039).EDITOR_RIGHT, info.rightStartLine, info.rightEndLine, acediff.options.classes.diff);\n if (acediff.options.showConnectors) $cd537e9fa9c12db2$var$addConnector(acediff, info.leftStartLine, info.leftEndLine, info.rightStartLine, info.rightEndLine);\n $cd537e9fa9c12db2$var$addCopyArrows(acediff, info, diffIndex);\n }\n }, acediff);\n}\n\n\nexport {$cd537e9fa9c12db2$export$2e2bcd8739ae039 as default};\n//# sourceMappingURL=module.js.map\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"show\" persistent width=\"80vw\">\n <v-card>\n <v-card-text>\n <v-card-title>{{ pluginName }} </v-card-title>\n <v-row v-if=\"existingPluginTxt !== null\" class=\"notice d-flex flex-row\">\n <v-icon size=\"x-large\" start color=\"yellow\"> mdi-alert-box </v-icon>\n <div style=\"flex: 1\">\n The existing plugin.txt is different from the {{ pluginName }}'s\n plugin.txt. Navigate the diffs making whatever edits you want before\n installing. You may want to update {{ pluginName }}'s plugin.txt\n going forward.\n </div>\n </v-row>\n <v-row class=\"pb-3 pr-3\">\n <v-tabs v-model=\"tab\" class=\"ml-3\">\n <v-tab :key=\"0\"> Variables </v-tab>\n <v-tab :key=\"1\"> plugin.txt </v-tab>\n </v-tabs>\n </v-row>\n <form @submit.prevent=\"onSubmit\">\n <v-window v-model=\"tab\">\n <v-window-item :key=\"0\" eager=\"true\" class=\"tab\">\n <div class=\"pa-3\">\n <v-row class=\"mt-3\">\n <div v-for=\"(value, name) in localVariables\" :key=\"name\">\n <v-col style=\"width: 220px\">\n <v-text-field\n v-model=\"localVariables[name]\"\n clearable\n type=\"text\"\n :label=\"name\"\n />\n </v-col>\n </div>\n </v-row>\n </div>\n </v-window-item>\n <v-window-item\n v-if=\"existingPluginTxt === null\"\n :key=\"1 + '-new'\"\n eager=\"true\"\n class=\"tab\"\n >\n <v-row class=\"pa-3\">\n <v-col> This can be edited before installation. </v-col>\n </v-row>\n <pre\n ref=\"editor\"\n class=\"editor\"\n @contextmenu.prevent=\"showContextMenu\"\n ></pre>\n <v-menu v-model=\"contextMenu\" :target=\"[menuX, menuY]\">\n <v-list>\n <v-list-item link>\n <v-list-item-title @click=\"openDocumentation\">\n {{ docsKeyword }} documentation\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item\n title=\"Toggle Vim mode\"\n prepend-icon=\"extras:vim\"\n @click=\"toggleVimMode\"\n />\n </v-list>\n </v-menu>\n </v-window-item>\n <v-window-item\n v-else\n :key=\"1 + '-existing'\"\n eager=\"true\"\n class=\"tab\"\n >\n <v-row class=\"pa-3\">\n <v-col>\n Existing plugin.txt. This can be edited before installation.\n </v-col>\n <v-col class=\"ml-6\">\n Uneditable plugin.txt from the new plugin.\n </v-col>\n </v-row>\n <pre ref=\"editor\" class=\"editor\"></pre>\n </v-window-item>\n </v-window>\n\n <v-card-actions class=\"px-2 mt-2\">\n <div v-if=\"existingPluginTxt !== null\">\n <v-btn variant=\"text\" @click=\"nextDiff\"> Next Diff </v-btn>\n <v-btn variant=\"text\" @click=\"previousDiff\">\n Previous Diff\n </v-btn>\n </div>\n <v-spacer />\n <v-btn\n variant=\"outlined\"\n data-test=\"edit-cancel\"\n @click.prevent=\"close\"\n >\n Cancel\n </v-btn>\n <v-btn variant=\"flat\" data-test=\"edit-submit\" @click=\"submit\">\n Install\n </v-btn>\n </v-card-actions>\n </form>\n </v-card-text>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport * as ace from 'ace-builds'\nimport 'ace-builds/src-min-noconflict/mode-ruby'\nimport 'ace-builds/src-min-noconflict/theme-twilight'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport 'ace-builds/src-min-noconflict/ext-searchbox'\nimport AceDiff from '@openc3/ace-diff'\nimport '@openc3/ace-diff/dist/ace-diff-dark.min.css'\nimport { toRaw } from 'vue'\nimport { AceEditorUtils } from '../../components/ace'\n\nexport default {\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n variables: {\n type: Object,\n required: true,\n },\n pluginTxt: {\n type: String,\n required: true,\n },\n existingPluginTxt: {\n type: String,\n required: false,\n },\n modelValue: Boolean, // modelValue is the default prop when using v-model\n },\n data() {\n return {\n tab: 0,\n localVariables: [],\n localPluginTxt: '',\n localExistingPluginTxt: null,\n editor: null,\n differ: null,\n contextMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n },\n watch: {\n value: {\n immediate: true,\n handler: function () {\n this.localVariables = JSON.parse(JSON.stringify(this.variables)) // deep copy\n this.localPluginTxt = this.pluginTxt.slice()\n if (this.existingPluginTxt !== null) {\n this.localExistingPluginTxt = this.existingPluginTxt.slice()\n }\n },\n },\n },\n mounted() {\n const pluginMode = this.buildPluginMode()\n if (this.existingPluginTxt === null) {\n this.editor = ace.edit(this.$refs.editor)\n this.editor.setTheme('ace/theme/twilight')\n this.editor.session.setMode(new pluginMode())\n this.editor.session.setTabSize(2)\n this.editor.session.setUseWrapMode(true)\n this.editor.$blockScrolling = Infinity\n this.editor.setHighlightActiveLine(false)\n this.editor.setValue(this.localPluginTxt)\n this.editor.clearSelection()\n AceEditorUtils.applyVimModeIfEnabled(this.editor)\n this.editor.focus()\n } else {\n this.tab = 1 // Show the diff right off the bat\n this.differ = new AceDiff({\n element: this.$refs.editor,\n mode: new pluginMode(),\n theme: 'ace/theme/twilight',\n left: {\n content: this.localExistingPluginTxt,\n copyLinkEnabled: false,\n },\n right: {\n content: this.localPluginTxt,\n editable: false,\n },\n })\n // Match our existing editors\n this.differ.getEditors().left.setFontSize(16)\n this.differ.getEditors().right.setFontSize(16)\n\n // Apply vim mode if enabled to both editor instances\n AceEditorUtils.applyVimModeIfEnabled(this.differ.getEditors().left)\n AceEditorUtils.applyVimModeIfEnabled(this.differ.getEditors().right)\n\n this.curDiff = -1 // so the first will be 0\n }\n },\n beforeUnmount() {\n if (this.editor) {\n this.editor.destroy()\n }\n if (this.differ) {\n this.differ.destroy()\n }\n },\n methods: {\n previousDiff() {\n this.curDiff--\n if (this.curDiff < 0) {\n this.curDiff = this.differ.diffs.length - 1\n }\n this.scrollToCurDiff()\n },\n nextDiff() {\n this.curDiff++\n if (this.curDiff >= this.differ.diffs.length) {\n this.curDiff = 0\n }\n this.scrollToCurDiff()\n },\n scrollToCurDiff() {\n if (this.differ.diffs.length === 0) return\n let lrow = this.differ.diffs[this.curDiff].leftStartLine\n let rrow = this.differ.diffs[this.curDiff].rightStartLine\n // Give it a little breathing room\n if (lrow > 5) {\n lrow -= 5\n }\n if (rrow > 5) {\n rrow -= 5\n }\n this.differ.getEditors().left.scrollToLine(lrow)\n this.differ.getEditors().right.scrollToLine(rrow)\n },\n buildPluginMode() {\n let oop = ace.require('ace/lib/oop')\n let RubyHighlightRules = ace.require(\n 'ace/mode/ruby_highlight_rules',\n ).RubyHighlightRules\n\n // TODO: Grab from code\n let keywords = ['VARIABLE']\n let regex = new RegExp(`(\\\\b${keywords.join('\\\\b|\\\\b')}\\\\b)`)\n let PluginHighlightRules = function () {\n RubyHighlightRules.call(this)\n // add openc3 rules to the ruby rules\n for (let rule in this.$rules) {\n this.$rules[rule].unshift({\n regex: regex,\n token: 'support.function',\n })\n }\n }\n oop.inherits(PluginHighlightRules, RubyHighlightRules)\n\n let MatchingBraceOutdent = ace.require(\n 'ace/mode/matching_brace_outdent',\n ).MatchingBraceOutdent\n let CstyleBehaviour = ace.require(\n 'ace/mode/behaviour/cstyle',\n ).CstyleBehaviour\n let FoldMode = ace.require('ace/mode/folding/ruby').FoldMode\n let Mode = function () {\n this.HighlightRules = PluginHighlightRules\n this.$outdent = new MatchingBraceOutdent()\n this.$behaviour = new CstyleBehaviour()\n this.foldingRules = new FoldMode()\n this.indentKeywords = this.foldingRules.indentKeywords\n }\n let RubyMode = ace.require('ace/mode/ruby').Mode\n oop.inherits(Mode, RubyMode)\n ;(function () {\n this.$id = 'ace/mode/openc3'\n }).call(Mode.prototype)\n return Mode\n },\n submit: function () {\n if (this.existingPluginTxt === null) {\n this.emitSubmit(this.editor.getValue().split('\\n'))\n } else {\n // Existing plugin.txt with all diffs resolved\n if (this.differ.diffs.length === 0) {\n this.emitSubmit(this.differ.getEditors().left.getValue().split('\\n'))\n } else {\n // Existing plugin.txt with unresolved diffs\n this.$dialog\n .confirm(\n `Diffs still detected! Install using 'Existing plugin.txt' (left) and ignore additional changes in the new plugin.txt (right)?`,\n {\n okText: 'Install',\n cancelText: 'Cancel',\n },\n )\n .then((dialog) => {\n this.emitSubmit(\n this.differ.getEditors().left.getValue().split('\\n'),\n )\n })\n .catch((error) => {\n // Cancelled, do nothing\n })\n }\n }\n },\n emitSubmit(lines) {\n let pluginHash = {\n name: this.pluginName,\n variables: toRaw(this.localVariables),\n plugin_txt_lines: lines,\n }\n this.$emit('callback', pluginHash)\n },\n close: function () {\n this.show = !this.show\n },\n showContextMenu: function (event) {\n this.menuX = event.pageX\n this.menuY = event.pageY\n\n let position = this.editor.getCursorPosition()\n let token = this.editor.session.getTokenAt(position.row, position.column)\n if (token) {\n let value = token.value.trim()\n if (value.includes(' ')) {\n this.docsKeyword = value.split(' ')[0]\n } else {\n this.docsKeyword = value\n }\n this.contextMenu = true\n }\n },\n toggleVimMode: function () {\n if (this.editor) {\n AceEditorUtils.toggleVimMode(this.editor)\n // don't worry about this.differ since AceDiff replaces the editor anyway, and thus there's no context menu\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.editor {\n height: 50vh;\n position: relative;\n font-size: 16px;\n}\n\n.notice {\n font-size: 20px;\n margin: 10px;\n}\n.tab {\n background-color: var(--color-background-surface-default);\n}\n.v-textarea :deep(textarea) {\n padding: 5px;\n}\n</style>\n"],"names":["_sfc_main","value","gemRegEx","f","axios","response","gem","link","_hoisted_1","_hoisted_2","_createBlock","_component_v_dialog","$options","_cache","$event","_withCtx","_createVNode","_component_v_card","_component_v_toolbar","_component_v_spacer","_createElementVNode","_component_v_card_text","_component_v_row","_createTextVNode","_component_v_col","_component_v_btn","$data","_component_v_icon","_openBlock","_createElementBlock","_hoisted_3","_hoisted_4","_Fragment","_renderList","data","index","_component_v_list_item","_component_v_list_item_title","_toDisplayString","_component_v_progress_circular","_component_v_divider","_createCommentVNode","openPluginMode","ace.edit","AceEditorUtils","blob","oop","ace.require","JsonHighlightRules","MatchingBraceOutdent","CstyleBehaviour","FoldMode","Mode","RubyMode","event","position","token","$props","_withModifiers","args","_ctx","_component_v_file_input","_component_v_menu","_component_v_list","target","Api","file","itemIndex","_component_v_list_item_subtitle","_component_v_checkbox","_component_v_card_actions","TabsList","TopBar","tab","_component_top_bar","_component_v_tabs","_component_v_tab","_component_router_view","cloneDiff","diff2","type","patch","getCommonOverlap","textA","textB","text1","text2","text1Length","text2Length","textLength","best","length","found","pattern","getCommonPrefix","pointerMin","pointerMax","pointerMid","pointerStart","getCommonSuffix","pointerEnd","isHighSurrogate","char","charCode","isLowSurrogate","bisect","deadline","maxD","vOffset","vLength","v1","v2","x","delta","front","k1start","k1end","k2start","k2end","d","k1","k1Offset","x1","y1","k2Offset","x2","bisectSplit","k2","y2","DIFF_DELETE","DIFF_INSERT","y","text1a","text2a","text1b","text2b","diffs","doDiff","diffsb","findHalfMatch","timeout","longText","shortText","halfMatch1","halfMatchI","halfMatch2","halfMatch","text1A","text1B","text2A","text2B","midCommon","i","seed","j","bestCommon","bestLongTextA","bestLongTextB","bestShortTextA","bestShortTextB","prefixLength","suffixLength","charsToLines","lineArray","chars","text","linesToChars","lineHash","diffLinesToMunge","lineStart","lineEnd","lineArrayLength","line","maxLines","chars1","chars2","doLineModeDiff","opts","a","linearray","cleanupSemantic","DIFF_EQUAL","pointer","countDelete","countInsert","textDelete","textInsert","aa","computeDiff","longtext","shorttext","diffsA","diffsB","__defProp$2","__getOwnPropSymbols$2","__hasOwnProp$2","__propIsEnum$2","__defNormalProp$2","obj","key","__spreadValues$2","b","prop","diff","createInternalOpts","adjustDiffForSurrogatePairs","options","commonlength","commonprefix","commonsuffix","cleanupMerge","createDeadLine","t","combineChar","dir","splitChar","hasSharedChar","deisolateChar","inv","insertIdx","deleteIdx","op","rest","char2","insertText","insertChar","deleteText","diffType","diffText","firstChar","lastChar","rawDiffs","hasChanges","equalities","equalitiesLength","lastEquality","lengthInsertions1","lengthDeletions1","lengthInsertions2","lengthDeletions2","cleanupSemanticLossless","deletion","insertion","overlapLength1","overlapLength2","nonAlphaNumericRegex","whitespaceRegex","linebreakRegex","blanklineEndRegex","blanklineStartRegex","diffCleanupSemanticScore","one","two","char1","nonAlphaNumeric1","nonAlphaNumeric2","whitespace1","whitespace2","lineBreak1","lineBreak2","blankLine1","blankLine2","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","score","$d0b82e0396560011$var$isObject","item","$d0b82e0396560011$export$2e2bcd8739ae039","source","$a61894d52139a1b7$export$2e2bcd8739ae039","callback","wait","immediate","initialCall","callNow","next","$20710ff753814db4$export$2e2bcd8739ae039","context","$f81fe5d88190aca6$export$2e2bcd8739ae039","$238bad4938ddde7c$export$2e2bcd8739ae039","startX","startY","endX","endY","w","halfWidth","$b5c286a254b261e6$export$2e2bcd8739ae039","$3d931e456f0d108c$export$2e2bcd8739ae039","acediff","editor","mode","$893f0e07a87dd83c$export$2e2bcd8739ae039","theme","$fc0df9ae77cc2f56$export$2e2bcd8739ae039","$7eb2da7d8a00890b$export$2e2bcd8739ae039","$c0c16fed0f3352bb$export$2e2bcd8739ae039","info","el","props","$419710df3593df8d$export$2e2bcd8739ae039","parent","elClass","guid","newId","currentEl","$e485cb2ed1808217$export$2e2bcd8739ae039","elSelector","eventName","selector","fn","element","possibleTargets","l","p","$cd537e9fa9c12db2$var$Range","$cd537e9fa9c12db2$var$getRangeModule","ace","requireFunc","$cd537e9fa9c12db2$export$2e2bcd8739ae039","getDefaultAce","errMessage","$cd537e9fa9c12db2$var$addEventHandlers","$cd537e9fa9c12db2$var$createCopyContainers","$cd537e9fa9c12db2$var$createGutter","val1","val2","$haT8Y$cleanupSemantic","$haT8Y$makeDiff","$cd537e9fa9c12db2$var$getLineLengths","offset","chunk","chunkType","$cd537e9fa9c12db2$var$computeDiff","$cd537e9fa9c12db2$var$simplifyDiffs","$cd537e9fa9c12db2$var$clearDiffs","$cd537e9fa9c12db2$var$decorate","leftValue","oldDiv","newDiv","rightValue","elementById","$cd537e9fa9c12db2$var$updateGap","e","$cd537e9fa9c12db2$var$copy","onResize","diffIndex","sourceEditor","targetEditor","startLine","endLine","targetStartLine","targetEndLine","contentToInsert","h","lines","lineLengths","$cd537e9fa9c12db2$var$showDiff","className","editorInstance","classNames","$cd537e9fa9c12db2$var$positionCopyContainers","marker","$cd537e9fa9c12db2$var$addConnector","leftStartLine","leftEndLine","rightStartLine","rightEndLine","leftScrollTop","rightScrollTop","p1_x","p1_y","p2_x","p2_y","p3_x","p3_y","p4_x","p4_y","curve1","curve2","verticalLine1","verticalLine2","$cd537e9fa9c12db2$var$addCopyArrows","arrow","leftTopOffset","rightTopOffset","offsetLeft","offsetRight","lineInfo","$cd537e9fa9c12db2$var$getSingleDiffInfo","currentLineOtherEditor","$cd537e9fa9c12db2$var$getLineForCharPosition","numCharsOnLineOtherEditor","$cd537e9fa9c12db2$var$getCharsOnLine","numCharsOnLeftEditorStartLine","sameLineInsert","numRows","numCharsOnRightEditorStartLine","diffString","endCharNum","runningTotal","startLineSet","endLineSet","lineLength","lineIndex","endsWithNewline","offsetChars","foundLine","leftHeight","$cd537e9fa9c12db2$var$getTotalHeight","rightHeight","height","$cd537e9fa9c12db2$var$clearGutter","$cd537e9fa9c12db2$var$clearArrows","groupedDiffs","compare","val","isGrouped","fullDiffs","pluginMode","AceDiff","lrow","rrow","RubyHighlightRules","keywords","regex","PluginHighlightRules","rule","dialog","error","pluginHash","toRaw","_component_v_card_title","_component_v_window","_component_v_window_item","name","_component_v_text_field"],"mappings":"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","x_google_ignoreList":[5,6]}