@perses-dev/alert-manager-plugin 0.1.0-rc.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 (384) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +41 -0
  3. package/__mf/css/async/430.85c2cbf6.css +1 -0
  4. package/__mf/font/inter-cyrillic-300-normal.432f2b21.woff +0 -0
  5. package/__mf/font/inter-cyrillic-300-normal.9da91009.woff2 +0 -0
  6. package/__mf/font/inter-cyrillic-400-normal.372704ff.woff2 +0 -0
  7. package/__mf/font/inter-cyrillic-400-normal.a6b6ef6f.woff +0 -0
  8. package/__mf/font/inter-cyrillic-500-normal.7c15bba8.woff2 +0 -0
  9. package/__mf/font/inter-cyrillic-500-normal.b9f8c929.woff +0 -0
  10. package/__mf/font/inter-cyrillic-600-normal.2f42892a.woff2 +0 -0
  11. package/__mf/font/inter-cyrillic-600-normal.c3987adc.woff +0 -0
  12. package/__mf/font/inter-cyrillic-700-normal.93eba3c3.woff +0 -0
  13. package/__mf/font/inter-cyrillic-700-normal.e9e5b2dc.woff2 +0 -0
  14. package/__mf/font/inter-cyrillic-900-normal.f285bd7a.woff2 +0 -0
  15. package/__mf/font/inter-cyrillic-900-normal.ffbd8a3a.woff +0 -0
  16. package/__mf/font/inter-cyrillic-ext-300-normal.95bb9038.woff2 +0 -0
  17. package/__mf/font/inter-cyrillic-ext-300-normal.cfc143a9.woff +0 -0
  18. package/__mf/font/inter-cyrillic-ext-400-normal.2a31c04b.woff +0 -0
  19. package/__mf/font/inter-cyrillic-ext-400-normal.f572b170.woff2 +0 -0
  20. package/__mf/font/inter-cyrillic-ext-500-normal.5a6bb1da.woff +0 -0
  21. package/__mf/font/inter-cyrillic-ext-500-normal.fe0d9b14.woff2 +0 -0
  22. package/__mf/font/inter-cyrillic-ext-600-normal.ecbdecad.woff +0 -0
  23. package/__mf/font/inter-cyrillic-ext-600-normal.f7b3c15b.woff2 +0 -0
  24. package/__mf/font/inter-cyrillic-ext-700-normal.4b4022a6.woff +0 -0
  25. package/__mf/font/inter-cyrillic-ext-700-normal.74b516d2.woff2 +0 -0
  26. package/__mf/font/inter-cyrillic-ext-900-normal.9970ddb5.woff +0 -0
  27. package/__mf/font/inter-cyrillic-ext-900-normal.a0d59adc.woff2 +0 -0
  28. package/__mf/font/inter-greek-300-normal.0d7be683.woff2 +0 -0
  29. package/__mf/font/inter-greek-300-normal.8f0b988e.woff +0 -0
  30. package/__mf/font/inter-greek-400-normal.cc58c11b.woff +0 -0
  31. package/__mf/font/inter-greek-400-normal.d7020e3c.woff2 +0 -0
  32. package/__mf/font/inter-greek-500-normal.d9a33207.woff +0 -0
  33. package/__mf/font/inter-greek-500-normal.f41f43db.woff2 +0 -0
  34. package/__mf/font/inter-greek-600-normal.4ec0c1c1.woff +0 -0
  35. package/__mf/font/inter-greek-600-normal.cc532937.woff2 +0 -0
  36. package/__mf/font/inter-greek-700-normal.5ec6c758.woff +0 -0
  37. package/__mf/font/inter-greek-700-normal.97f0eeeb.woff2 +0 -0
  38. package/__mf/font/inter-greek-900-normal.46b66369.woff2 +0 -0
  39. package/__mf/font/inter-greek-900-normal.9ae3a3c5.woff +0 -0
  40. package/__mf/font/inter-greek-ext-300-normal.10247a66.woff2 +0 -0
  41. package/__mf/font/inter-greek-ext-300-normal.4668e5cb.woff +0 -0
  42. package/__mf/font/inter-greek-ext-400-normal.4ce1df5d.woff2 +0 -0
  43. package/__mf/font/inter-greek-ext-400-normal.88ede1ea.woff +0 -0
  44. package/__mf/font/inter-greek-ext-500-normal.7a4aa726.woff +0 -0
  45. package/__mf/font/inter-greek-ext-500-normal.cbd51e2d.woff2 +0 -0
  46. package/__mf/font/inter-greek-ext-600-normal.089a95ee.woff +0 -0
  47. package/__mf/font/inter-greek-ext-600-normal.1f33d317.woff2 +0 -0
  48. package/__mf/font/inter-greek-ext-700-normal.31f1075d.woff +0 -0
  49. package/__mf/font/inter-greek-ext-700-normal.827cd618.woff2 +0 -0
  50. package/__mf/font/inter-greek-ext-900-normal.531bcee7.woff +0 -0
  51. package/__mf/font/inter-greek-ext-900-normal.8a9b36b9.woff2 +0 -0
  52. package/__mf/font/inter-latin-300-normal.15fb600d.woff2 +0 -0
  53. package/__mf/font/inter-latin-300-normal.6f95f590.woff +0 -0
  54. package/__mf/font/inter-latin-400-normal.2c7a775c.woff +0 -0
  55. package/__mf/font/inter-latin-400-normal.ef6d3f52.woff2 +0 -0
  56. package/__mf/font/inter-latin-500-normal.b7b43ace.woff2 +0 -0
  57. package/__mf/font/inter-latin-500-normal.cb4c8ceb.woff +0 -0
  58. package/__mf/font/inter-latin-600-normal.8fb1a964.woff2 +0 -0
  59. package/__mf/font/inter-latin-600-normal.ce0f5f43.woff +0 -0
  60. package/__mf/font/inter-latin-700-normal.953b7aa5.woff2 +0 -0
  61. package/__mf/font/inter-latin-700-normal.9c21d4dc.woff +0 -0
  62. package/__mf/font/inter-latin-900-normal.2a8028ec.woff2 +0 -0
  63. package/__mf/font/inter-latin-900-normal.fa252135.woff +0 -0
  64. package/__mf/font/inter-latin-ext-300-normal.167cc8c9.woff2 +0 -0
  65. package/__mf/font/inter-latin-ext-300-normal.f695be66.woff +0 -0
  66. package/__mf/font/inter-latin-ext-400-normal.32a25442.woff2 +0 -0
  67. package/__mf/font/inter-latin-ext-400-normal.4edcaace.woff +0 -0
  68. package/__mf/font/inter-latin-ext-500-normal.a19a84a6.woff +0 -0
  69. package/__mf/font/inter-latin-ext-500-normal.d9b491de.woff2 +0 -0
  70. package/__mf/font/inter-latin-ext-600-normal.38b075d8.woff2 +0 -0
  71. package/__mf/font/inter-latin-ext-600-normal.49faa47a.woff +0 -0
  72. package/__mf/font/inter-latin-ext-700-normal.93534b50.woff +0 -0
  73. package/__mf/font/inter-latin-ext-700-normal.b63daa1a.woff2 +0 -0
  74. package/__mf/font/inter-latin-ext-900-normal.0efdb307.woff +0 -0
  75. package/__mf/font/inter-latin-ext-900-normal.9c0fc2c7.woff2 +0 -0
  76. package/__mf/font/inter-vietnamese-300-normal.aad496d8.woff +0 -0
  77. package/__mf/font/inter-vietnamese-300-normal.ad9ef503.woff2 +0 -0
  78. package/__mf/font/inter-vietnamese-400-normal.a9dd2faf.woff +0 -0
  79. package/__mf/font/inter-vietnamese-400-normal.de4fc44f.woff2 +0 -0
  80. package/__mf/font/inter-vietnamese-500-normal.7c0a695f.woff2 +0 -0
  81. package/__mf/font/inter-vietnamese-500-normal.a3a73b95.woff +0 -0
  82. package/__mf/font/inter-vietnamese-600-normal.9d518599.woff2 +0 -0
  83. package/__mf/font/inter-vietnamese-600-normal.c5ce3fcb.woff +0 -0
  84. package/__mf/font/inter-vietnamese-700-normal.bc68b199.woff +0 -0
  85. package/__mf/font/inter-vietnamese-700-normal.faf12809.woff2 +0 -0
  86. package/__mf/font/inter-vietnamese-900-normal.2b782045.woff +0 -0
  87. package/__mf/font/inter-vietnamese-900-normal.e639b65a.woff2 +0 -0
  88. package/__mf/js/AlertManager.3d597fc0.js +7 -0
  89. package/__mf/js/async/1616.24f00c9d.js +1 -0
  90. package/__mf/js/async/1728.a509c63a.js +1 -0
  91. package/__mf/js/async/1871.23ff54b3.js +1 -0
  92. package/__mf/js/async/1969.a83b1b48.js +1 -0
  93. package/__mf/js/async/2218.7829c9d9.js +2 -0
  94. package/__mf/js/async/2218.7829c9d9.js.LICENSE.txt +9 -0
  95. package/__mf/js/async/2377.f8875a4e.js +1 -0
  96. package/__mf/js/async/2657.fe8dd44f.js +1 -0
  97. package/__mf/js/async/2842.7f15ae1d.js +1 -0
  98. package/__mf/js/async/3468.1679f87f.js +1 -0
  99. package/__mf/js/async/3540.96681482.js +2 -0
  100. package/__mf/js/async/3540.96681482.js.LICENSE.txt +37 -0
  101. package/__mf/js/async/392.7e11dd69.js +2 -0
  102. package/__mf/js/async/392.7e11dd69.js.LICENSE.txt +8 -0
  103. package/__mf/js/async/3963.fb6246d2.js +1 -0
  104. package/__mf/js/async/4121.ec666be2.js +2 -0
  105. package/__mf/js/async/4121.ec666be2.js.LICENSE.txt +9 -0
  106. package/__mf/js/async/4133.e94df4f8.js +28 -0
  107. package/__mf/js/async/4213.a0c4f2eb.js +1 -0
  108. package/__mf/js/async/430.74d85c4b.js +7 -0
  109. package/__mf/js/async/430.74d85c4b.js.LICENSE.txt +64 -0
  110. package/__mf/js/async/4466.a8145edd.js +74 -0
  111. package/__mf/js/async/4788.49ffeac3.js +1 -0
  112. package/__mf/js/async/5038.269393e3.js +2 -0
  113. package/__mf/js/async/5038.269393e3.js.LICENSE.txt +9 -0
  114. package/__mf/js/async/5481.cf6703fd.js +2 -0
  115. package/__mf/js/async/5481.cf6703fd.js.LICENSE.txt +9 -0
  116. package/__mf/js/async/5570.d4dd47e0.js +1 -0
  117. package/__mf/js/async/573.ce8ce2ef.js +2 -0
  118. package/__mf/js/async/6274.8c77cb1a.js +2 -0
  119. package/__mf/js/async/6274.8c77cb1a.js.LICENSE.txt +8 -0
  120. package/__mf/js/async/6390.3f6f279d.js +2 -0
  121. package/__mf/js/async/6390.3f6f279d.js.LICENSE.txt +9 -0
  122. package/__mf/js/async/6401.1a59dbad.js +1 -0
  123. package/__mf/js/async/6594.b02adfd9.js +2 -0
  124. package/__mf/js/async/6594.b02adfd9.js.LICENSE.txt +9 -0
  125. package/__mf/js/async/663.5445c7e0.js +1 -0
  126. package/__mf/js/async/6854.1d628838.js +1 -0
  127. package/__mf/js/async/7177.27c86137.js +1 -0
  128. package/__mf/js/async/7192.ede9860b.js +1 -0
  129. package/__mf/js/async/7283.8c1cb6ee.js +2 -0
  130. package/__mf/js/async/7283.8c1cb6ee.js.LICENSE.txt +9 -0
  131. package/__mf/js/async/7984.1f786d95.js +22 -0
  132. package/__mf/js/async/7984.1f786d95.js.LICENSE.txt +19 -0
  133. package/__mf/js/async/804.23da0d30.js +37 -0
  134. package/__mf/js/async/8470.2df0db71.js +2 -0
  135. package/__mf/js/async/8470.2df0db71.js.LICENSE.txt +19 -0
  136. package/__mf/js/async/8697.c13c6603.js +1 -0
  137. package/__mf/js/async/8711.c7dc09b8.js +2 -0
  138. package/__mf/js/async/8711.c7dc09b8.js.LICENSE.txt +9 -0
  139. package/__mf/js/async/8907.9e3edf43.js +1 -0
  140. package/__mf/js/async/9040.94717f28.js +10 -0
  141. package/__mf/js/async/9040.94717f28.js.LICENSE.txt +17 -0
  142. package/__mf/js/async/9184.27a439a4.js +1 -0
  143. package/__mf/js/async/9235.00f9412f.js +1 -0
  144. package/__mf/js/async/941.d3bc6208.js +2 -0
  145. package/__mf/js/async/941.d3bc6208.js.LICENSE.txt +9 -0
  146. package/__mf/js/async/9537.36ff6f15.js +1 -0
  147. package/__mf/js/async/9634.3a366799.js +1 -0
  148. package/__mf/js/async/9741.199e8033.js +4 -0
  149. package/__mf/js/async/9741.199e8033.js.LICENSE.txt +24 -0
  150. package/__mf/js/async/983.77219d7b.js +1 -0
  151. package/__mf/js/async/9836.cc839227.js +1 -0
  152. package/__mf/js/async/__federation_expose_AlertManagerAlertsExplorer.a0623742.js +2 -0
  153. package/__mf/js/async/__federation_expose_AlertManagerAlertsExplorer.a0623742.js.LICENSE.txt +9 -0
  154. package/__mf/js/async/__federation_expose_AlertManagerAlertsQuery.aa08447d.js +1 -0
  155. package/__mf/js/async/__federation_expose_AlertManagerDatasource.fe5b34fb.js +2 -0
  156. package/__mf/js/async/__federation_expose_AlertManagerDatasource.fe5b34fb.js.LICENSE.txt +9 -0
  157. package/__mf/js/async/__federation_expose_AlertManagerSilencesExplorer.ff9617f8.js +2 -0
  158. package/__mf/js/async/__federation_expose_AlertManagerSilencesExplorer.ff9617f8.js.LICENSE.txt +9 -0
  159. package/__mf/js/async/__federation_expose_AlertManagerSilencesQuery.c9a49171.js +2 -0
  160. package/__mf/js/async/__federation_expose_AlertManagerSilencesQuery.c9a49171.js.LICENSE.txt +9 -0
  161. package/__mf/js/async/__federation_expose_AlertTable.cac7598a.js +1 -0
  162. package/__mf/js/async/__federation_expose_SilenceTable.50ee1f33.js +2 -0
  163. package/__mf/js/async/__federation_expose_SilenceTable.50ee1f33.js.LICENSE.txt +9 -0
  164. package/__mf/js/async/lib-router.19f64904.js +2 -0
  165. package/__mf/js/async/lib-router.19f64904.js.LICENSE.txt +32 -0
  166. package/__mf/js/main.1ce74432.js +7 -0
  167. package/lib/bootstrap.d.ts +2 -0
  168. package/lib/bootstrap.d.ts.map +1 -0
  169. package/lib/bootstrap.js +19 -0
  170. package/lib/bootstrap.js.map +1 -0
  171. package/lib/cjs/bootstrap.js +26 -0
  172. package/lib/cjs/components/ColumnsEditor.js +271 -0
  173. package/lib/cjs/components/LazyTextField.js +50 -0
  174. package/lib/cjs/components/MatcherEditor.js +153 -0
  175. package/lib/cjs/components/MatchersList.js +46 -0
  176. package/lib/cjs/components/SilenceForm.js +205 -0
  177. package/lib/cjs/components/StatusBadge.js +71 -0
  178. package/lib/cjs/components/index.js +44 -0
  179. package/lib/cjs/explore/AlertManagerAlertsExplorer.js +79 -0
  180. package/lib/cjs/explore/AlertManagerSilencesExplorer.js +153 -0
  181. package/lib/cjs/getPluginModule.js +39 -0
  182. package/lib/cjs/index-federation.js +55 -0
  183. package/lib/cjs/index.js +39 -0
  184. package/lib/cjs/model/alertmanager-client.js +128 -0
  185. package/lib/cjs/model/alertmanager-selectors.js +66 -0
  186. package/lib/cjs/model/api-types.js +22 -0
  187. package/lib/cjs/model/index.js +32 -0
  188. package/lib/cjs/plugins/AlertManagerDatasourceEditor.js +71 -0
  189. package/lib/cjs/plugins/alert-table/AlertTable.js +56 -0
  190. package/lib/cjs/plugins/alert-table/AlertTableColumnsEditor.js +110 -0
  191. package/lib/cjs/plugins/alert-table/AlertTableDeduplicationEditor.js +138 -0
  192. package/lib/cjs/plugins/alert-table/AlertTableLabelsEditor.js +277 -0
  193. package/lib/cjs/plugins/alert-table/AlertTableOptionsEditor.js +128 -0
  194. package/lib/cjs/plugins/alert-table/AlertTablePanel.js +773 -0
  195. package/lib/cjs/plugins/alert-table/alert-table-model.js +142 -0
  196. package/lib/cjs/plugins/alert-table/alert-table-sorting.js +205 -0
  197. package/lib/cjs/plugins/alert-table/label-colors.js +170 -0
  198. package/lib/cjs/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js +51 -0
  199. package/lib/cjs/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js +138 -0
  200. package/lib/cjs/plugins/alertmanager-alerts-query/get-alerts-data.js +124 -0
  201. package/lib/cjs/plugins/alertmanager-datasource.js +69 -0
  202. package/lib/cjs/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js +45 -0
  203. package/lib/cjs/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js +78 -0
  204. package/lib/cjs/plugins/alertmanager-silences-query/get-silences-data.js +64 -0
  205. package/lib/cjs/plugins/index.js +74 -0
  206. package/lib/cjs/plugins/silence-table/SilenceTable.js +42 -0
  207. package/lib/cjs/plugins/silence-table/SilenceTableColumnsEditor.js +137 -0
  208. package/lib/cjs/plugins/silence-table/SilenceTableOptionsEditor.js +63 -0
  209. package/lib/cjs/plugins/silence-table/SilenceTablePanel.js +345 -0
  210. package/lib/cjs/plugins/silence-table/silence-table-model.js +116 -0
  211. package/lib/cjs/plugins/silence-table/silence-table-sorting.js +68 -0
  212. package/lib/cjs/plugins/types.js +16 -0
  213. package/lib/cjs/setup-tests.js +18 -0
  214. package/lib/components/ColumnsEditor.d.ts +25 -0
  215. package/lib/components/ColumnsEditor.d.ts.map +1 -0
  216. package/lib/components/ColumnsEditor.js +258 -0
  217. package/lib/components/ColumnsEditor.js.map +1 -0
  218. package/lib/components/LazyTextField.d.ts +12 -0
  219. package/lib/components/LazyTextField.d.ts.map +1 -0
  220. package/lib/components/LazyTextField.js +42 -0
  221. package/lib/components/LazyTextField.js.map +1 -0
  222. package/lib/components/MatcherEditor.d.ts +17 -0
  223. package/lib/components/MatcherEditor.d.ts.map +1 -0
  224. package/lib/components/MatcherEditor.js +142 -0
  225. package/lib/components/MatcherEditor.js.map +1 -0
  226. package/lib/components/MatchersList.d.ts +10 -0
  227. package/lib/components/MatchersList.d.ts.map +1 -0
  228. package/lib/components/MatchersList.js +40 -0
  229. package/lib/components/MatchersList.js.map +1 -0
  230. package/lib/components/SilenceForm.d.ts +13 -0
  231. package/lib/components/SilenceForm.d.ts.map +1 -0
  232. package/lib/components/SilenceForm.js +194 -0
  233. package/lib/components/SilenceForm.js.map +1 -0
  234. package/lib/components/StatusBadge.d.ts +10 -0
  235. package/lib/components/StatusBadge.d.ts.map +1 -0
  236. package/lib/components/StatusBadge.js +65 -0
  237. package/lib/components/StatusBadge.js.map +1 -0
  238. package/lib/components/index.d.ts +11 -0
  239. package/lib/components/index.d.ts.map +1 -0
  240. package/lib/components/index.js +19 -0
  241. package/lib/components/index.js.map +1 -0
  242. package/lib/explore/AlertManagerAlertsExplorer.d.ts +3 -0
  243. package/lib/explore/AlertManagerAlertsExplorer.d.ts.map +1 -0
  244. package/lib/explore/AlertManagerAlertsExplorer.js +71 -0
  245. package/lib/explore/AlertManagerAlertsExplorer.js.map +1 -0
  246. package/lib/explore/AlertManagerSilencesExplorer.d.ts +3 -0
  247. package/lib/explore/AlertManagerSilencesExplorer.d.ts.map +1 -0
  248. package/lib/explore/AlertManagerSilencesExplorer.js +140 -0
  249. package/lib/explore/AlertManagerSilencesExplorer.js.map +1 -0
  250. package/lib/getPluginModule.d.ts +3 -0
  251. package/lib/getPluginModule.d.ts.map +1 -0
  252. package/lib/getPluginModule.js +26 -0
  253. package/lib/getPluginModule.js.map +1 -0
  254. package/lib/index-federation.d.ts +1 -0
  255. package/lib/index-federation.d.ts.map +1 -0
  256. package/lib/index-federation.js +15 -0
  257. package/lib/index-federation.js.map +1 -0
  258. package/lib/index.d.ts +5 -0
  259. package/lib/index.d.ts.map +1 -0
  260. package/lib/index.js +18 -0
  261. package/lib/index.js.map +1 -0
  262. package/lib/model/alertmanager-client.d.ts +27 -0
  263. package/lib/model/alertmanager-client.d.ts.map +1 -0
  264. package/lib/model/alertmanager-client.js +100 -0
  265. package/lib/model/alertmanager-client.js.map +1 -0
  266. package/lib/model/alertmanager-selectors.d.ts +13 -0
  267. package/lib/model/alertmanager-selectors.d.ts.map +1 -0
  268. package/lib/model/alertmanager-selectors.js +41 -0
  269. package/lib/model/alertmanager-selectors.js.map +1 -0
  270. package/lib/model/api-types.d.ts +120 -0
  271. package/lib/model/api-types.d.ts.map +1 -0
  272. package/lib/model/api-types.js +23 -0
  273. package/lib/model/api-types.js.map +1 -0
  274. package/lib/model/index.d.ts +4 -0
  275. package/lib/model/index.d.ts.map +1 -0
  276. package/lib/model/index.js +17 -0
  277. package/lib/model/index.js.map +1 -0
  278. package/lib/plugins/AlertManagerDatasourceEditor.d.ts +9 -0
  279. package/lib/plugins/AlertManagerDatasourceEditor.d.ts.map +1 -0
  280. package/lib/plugins/AlertManagerDatasourceEditor.js +63 -0
  281. package/lib/plugins/AlertManagerDatasourceEditor.js.map +1 -0
  282. package/lib/plugins/alert-table/AlertTable.d.ts +8 -0
  283. package/lib/plugins/alert-table/AlertTable.d.ts.map +1 -0
  284. package/lib/plugins/alert-table/AlertTable.js +50 -0
  285. package/lib/plugins/alert-table/AlertTable.js.map +1 -0
  286. package/lib/plugins/alert-table/AlertTableColumnsEditor.d.ts +5 -0
  287. package/lib/plugins/alert-table/AlertTableColumnsEditor.d.ts.map +1 -0
  288. package/lib/plugins/alert-table/AlertTableColumnsEditor.js +102 -0
  289. package/lib/plugins/alert-table/AlertTableColumnsEditor.js.map +1 -0
  290. package/lib/plugins/alert-table/AlertTableDeduplicationEditor.d.ts +5 -0
  291. package/lib/plugins/alert-table/AlertTableDeduplicationEditor.d.ts.map +1 -0
  292. package/lib/plugins/alert-table/AlertTableDeduplicationEditor.js +130 -0
  293. package/lib/plugins/alert-table/AlertTableDeduplicationEditor.js.map +1 -0
  294. package/lib/plugins/alert-table/AlertTableLabelsEditor.d.ts +5 -0
  295. package/lib/plugins/alert-table/AlertTableLabelsEditor.d.ts.map +1 -0
  296. package/lib/plugins/alert-table/AlertTableLabelsEditor.js +264 -0
  297. package/lib/plugins/alert-table/AlertTableLabelsEditor.js.map +1 -0
  298. package/lib/plugins/alert-table/AlertTableOptionsEditor.d.ts +5 -0
  299. package/lib/plugins/alert-table/AlertTableOptionsEditor.d.ts.map +1 -0
  300. package/lib/plugins/alert-table/AlertTableOptionsEditor.js +120 -0
  301. package/lib/plugins/alert-table/AlertTableOptionsEditor.js.map +1 -0
  302. package/lib/plugins/alert-table/AlertTablePanel.d.ts +11 -0
  303. package/lib/plugins/alert-table/AlertTablePanel.d.ts.map +1 -0
  304. package/lib/plugins/alert-table/AlertTablePanel.js +763 -0
  305. package/lib/plugins/alert-table/AlertTablePanel.js.map +1 -0
  306. package/lib/plugins/alert-table/alert-table-model.d.ts +73 -0
  307. package/lib/plugins/alert-table/alert-table-model.d.ts.map +1 -0
  308. package/lib/plugins/alert-table/alert-table-model.js +127 -0
  309. package/lib/plugins/alert-table/alert-table-model.js.map +1 -0
  310. package/lib/plugins/alert-table/alert-table-sorting.d.ts +13 -0
  311. package/lib/plugins/alert-table/alert-table-sorting.d.ts.map +1 -0
  312. package/lib/plugins/alert-table/alert-table-sorting.js +180 -0
  313. package/lib/plugins/alert-table/alert-table-sorting.js.map +1 -0
  314. package/lib/plugins/alert-table/label-colors.d.ts +6 -0
  315. package/lib/plugins/alert-table/label-colors.d.ts.map +1 -0
  316. package/lib/plugins/alert-table/label-colors.js +148 -0
  317. package/lib/plugins/alert-table/label-colors.js.map +1 -0
  318. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.d.ts +4 -0
  319. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.d.ts.map +1 -0
  320. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js +43 -0
  321. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js.map +1 -0
  322. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.d.ts +9 -0
  323. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.d.ts.map +1 -0
  324. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js +130 -0
  325. package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js.map +1 -0
  326. package/lib/plugins/alertmanager-alerts-query/get-alerts-data.d.ts +8 -0
  327. package/lib/plugins/alertmanager-alerts-query/get-alerts-data.d.ts.map +1 -0
  328. package/lib/plugins/alertmanager-alerts-query/get-alerts-data.js +118 -0
  329. package/lib/plugins/alertmanager-alerts-query/get-alerts-data.js.map +1 -0
  330. package/lib/plugins/alertmanager-datasource.d.ts +5 -0
  331. package/lib/plugins/alertmanager-datasource.d.ts.map +1 -0
  332. package/lib/plugins/alertmanager-datasource.js +61 -0
  333. package/lib/plugins/alertmanager-datasource.js.map +1 -0
  334. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.d.ts +4 -0
  335. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.d.ts.map +1 -0
  336. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js +37 -0
  337. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js.map +1 -0
  338. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.d.ts +9 -0
  339. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.d.ts.map +1 -0
  340. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js +70 -0
  341. package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js.map +1 -0
  342. package/lib/plugins/alertmanager-silences-query/get-silences-data.d.ts +8 -0
  343. package/lib/plugins/alertmanager-silences-query/get-silences-data.d.ts.map +1 -0
  344. package/lib/plugins/alertmanager-silences-query/get-silences-data.js +58 -0
  345. package/lib/plugins/alertmanager-silences-query/get-silences-data.js.map +1 -0
  346. package/lib/plugins/index.d.ts +19 -0
  347. package/lib/plugins/index.d.ts.map +1 -0
  348. package/lib/plugins/index.js +30 -0
  349. package/lib/plugins/index.js.map +1 -0
  350. package/lib/plugins/silence-table/SilenceTable.d.ts +7 -0
  351. package/lib/plugins/silence-table/SilenceTable.d.ts.map +1 -0
  352. package/lib/plugins/silence-table/SilenceTable.js +36 -0
  353. package/lib/plugins/silence-table/SilenceTable.js.map +1 -0
  354. package/lib/plugins/silence-table/SilenceTableColumnsEditor.d.ts +5 -0
  355. package/lib/plugins/silence-table/SilenceTableColumnsEditor.d.ts.map +1 -0
  356. package/lib/plugins/silence-table/SilenceTableColumnsEditor.js +129 -0
  357. package/lib/plugins/silence-table/SilenceTableColumnsEditor.js.map +1 -0
  358. package/lib/plugins/silence-table/SilenceTableOptionsEditor.d.ts +5 -0
  359. package/lib/plugins/silence-table/SilenceTableOptionsEditor.d.ts.map +1 -0
  360. package/lib/plugins/silence-table/SilenceTableOptionsEditor.js +55 -0
  361. package/lib/plugins/silence-table/SilenceTableOptionsEditor.js.map +1 -0
  362. package/lib/plugins/silence-table/SilenceTablePanel.d.ts +11 -0
  363. package/lib/plugins/silence-table/SilenceTablePanel.d.ts.map +1 -0
  364. package/lib/plugins/silence-table/SilenceTablePanel.js +335 -0
  365. package/lib/plugins/silence-table/SilenceTablePanel.js.map +1 -0
  366. package/lib/plugins/silence-table/silence-table-model.d.ts +29 -0
  367. package/lib/plugins/silence-table/silence-table-model.d.ts.map +1 -0
  368. package/lib/plugins/silence-table/silence-table-model.js +90 -0
  369. package/lib/plugins/silence-table/silence-table-model.js.map +1 -0
  370. package/lib/plugins/silence-table/silence-table-sorting.d.ts +9 -0
  371. package/lib/plugins/silence-table/silence-table-sorting.d.ts.map +1 -0
  372. package/lib/plugins/silence-table/silence-table-sorting.js +60 -0
  373. package/lib/plugins/silence-table/silence-table-sorting.js.map +1 -0
  374. package/lib/plugins/types.d.ts +30 -0
  375. package/lib/plugins/types.d.ts.map +1 -0
  376. package/lib/plugins/types.js +17 -0
  377. package/lib/plugins/types.js.map +1 -0
  378. package/lib/setup-tests.d.ts +2 -0
  379. package/lib/setup-tests.d.ts.map +1 -0
  380. package/lib/setup-tests.js +16 -0
  381. package/lib/setup-tests.js.map +1 -0
  382. package/mf-manifest.json +663 -0
  383. package/mf-stats.json +784 -0
  384. package/package.json +116 -0
@@ -0,0 +1,264 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright The Perses Authors
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { Box, Button, Checkbox, Divider, FormControl, FormControlLabel, IconButton, InputLabel, MenuItem, Select, Stack, TextField, Typography } from '@mui/material';
15
+ import { OptionsEditorGroup } from '@perses-dev/components';
16
+ import { produce } from 'immer';
17
+ import DeleteIcon from 'mdi-material-ui/Delete';
18
+ import PlusIcon from 'mdi-material-ui/Plus';
19
+ import { useCallback } from 'react';
20
+ const MODE_LABELS = {
21
+ auto: 'Auto (hash-derived colors)',
22
+ severity: 'Severity (built-in defaults)',
23
+ manual: 'Manual (overrides only)'
24
+ };
25
+ function LabelMappingEntry({ mapping, index, onUpdate, onRemove }) {
26
+ const handleAddOverride = useCallback(()=>{
27
+ onUpdate(index, (draft)=>{
28
+ if (!draft.overrides) draft.overrides = [];
29
+ draft.overrides.push({
30
+ value: '',
31
+ isRegex: false,
32
+ color: '#1976d2'
33
+ });
34
+ });
35
+ }, [
36
+ index,
37
+ onUpdate
38
+ ]);
39
+ const handleRemoveOverride = useCallback((overrideIndex)=>{
40
+ onUpdate(index, (draft)=>{
41
+ draft.overrides?.splice(overrideIndex, 1);
42
+ });
43
+ }, [
44
+ index,
45
+ onUpdate
46
+ ]);
47
+ const handleUpdateOverride = useCallback((overrideIndex, field, fieldValue)=>{
48
+ onUpdate(index, (draft)=>{
49
+ const override = draft.overrides?.[overrideIndex];
50
+ if (override) {
51
+ if (field === 'isRegex') {
52
+ override.isRegex = fieldValue;
53
+ } else {
54
+ override[field] = fieldValue;
55
+ }
56
+ }
57
+ });
58
+ }, [
59
+ index,
60
+ onUpdate
61
+ ]);
62
+ return /*#__PURE__*/ _jsx(Box, {
63
+ sx: {
64
+ border: 1,
65
+ borderColor: 'divider',
66
+ borderRadius: 1,
67
+ p: 2
68
+ },
69
+ children: /*#__PURE__*/ _jsxs(Stack, {
70
+ spacing: 2,
71
+ children: [
72
+ /*#__PURE__*/ _jsxs(Stack, {
73
+ direction: "row",
74
+ spacing: 1,
75
+ alignItems: "center",
76
+ justifyContent: "space-between",
77
+ children: [
78
+ /*#__PURE__*/ _jsx(Typography, {
79
+ variant: "subtitle2",
80
+ children: mapping.labelKey || 'New label'
81
+ }),
82
+ /*#__PURE__*/ _jsx(IconButton, {
83
+ size: "small",
84
+ onClick: ()=>onRemove(index),
85
+ "aria-label": "Remove label mapping",
86
+ children: /*#__PURE__*/ _jsx(DeleteIcon, {
87
+ fontSize: "small"
88
+ })
89
+ })
90
+ ]
91
+ }),
92
+ /*#__PURE__*/ _jsx(TextField, {
93
+ label: "Label key",
94
+ value: mapping.labelKey,
95
+ onChange: (e)=>onUpdate(index, (draft)=>{
96
+ draft.labelKey = e.target.value;
97
+ }),
98
+ size: "small",
99
+ fullWidth: true
100
+ }),
101
+ /*#__PURE__*/ _jsxs(FormControl, {
102
+ size: "small",
103
+ fullWidth: true,
104
+ children: [
105
+ /*#__PURE__*/ _jsx(InputLabel, {
106
+ id: `color-mode-label-${index}`,
107
+ children: "Mode"
108
+ }),
109
+ /*#__PURE__*/ _jsx(Select, {
110
+ labelId: `color-mode-label-${index}`,
111
+ value: mapping.mode,
112
+ onChange: (e)=>onUpdate(index, (draft)=>{
113
+ draft.mode = e.target.value;
114
+ }),
115
+ label: "Mode",
116
+ children: Object.keys(MODE_LABELS).map((mode)=>/*#__PURE__*/ _jsx(MenuItem, {
117
+ value: mode,
118
+ children: MODE_LABELS[mode]
119
+ }, mode))
120
+ })
121
+ ]
122
+ }),
123
+ /*#__PURE__*/ _jsxs(Box, {
124
+ children: [
125
+ /*#__PURE__*/ _jsx(Typography, {
126
+ variant: "body2",
127
+ color: "text.secondary",
128
+ sx: {
129
+ mb: 1
130
+ },
131
+ children: "Overrides"
132
+ }),
133
+ /*#__PURE__*/ _jsxs(Stack, {
134
+ spacing: 1,
135
+ children: [
136
+ (mapping.overrides ?? []).map((override, overrideIndex)=>/*#__PURE__*/ _jsxs(Stack, {
137
+ direction: "row",
138
+ spacing: 1,
139
+ alignItems: "center",
140
+ children: [
141
+ /*#__PURE__*/ _jsx(TextField, {
142
+ label: "Value / Pattern",
143
+ value: override.value,
144
+ onChange: (e)=>handleUpdateOverride(overrideIndex, 'value', e.target.value),
145
+ size: "small",
146
+ sx: {
147
+ flex: 1
148
+ }
149
+ }),
150
+ /*#__PURE__*/ _jsx(FormControlLabel, {
151
+ control: /*#__PURE__*/ _jsx(Checkbox, {
152
+ checked: override.isRegex,
153
+ onChange: (e)=>handleUpdateOverride(overrideIndex, 'isRegex', e.target.checked),
154
+ size: "small"
155
+ }),
156
+ label: "Regex"
157
+ }),
158
+ /*#__PURE__*/ _jsx("input", {
159
+ type: "color",
160
+ value: override.color,
161
+ onChange: (e)=>handleUpdateOverride(overrideIndex, 'color', e.target.value),
162
+ style: {
163
+ width: 36,
164
+ height: 28,
165
+ border: 'none',
166
+ cursor: 'pointer'
167
+ }
168
+ }),
169
+ /*#__PURE__*/ _jsx(IconButton, {
170
+ size: "small",
171
+ onClick: ()=>handleRemoveOverride(overrideIndex),
172
+ "aria-label": "Remove override",
173
+ children: /*#__PURE__*/ _jsx(DeleteIcon, {
174
+ fontSize: "small"
175
+ })
176
+ })
177
+ ]
178
+ }, overrideIndex)),
179
+ /*#__PURE__*/ _jsx(Button, {
180
+ size: "small",
181
+ startIcon: /*#__PURE__*/ _jsx(PlusIcon, {}),
182
+ onClick: handleAddOverride,
183
+ children: "Add override"
184
+ })
185
+ ]
186
+ })
187
+ ]
188
+ })
189
+ ]
190
+ })
191
+ });
192
+ }
193
+ export function AlertTableLabelsEditor(props) {
194
+ const { value, onChange } = props;
195
+ const mappings = value.labelColorMappings ?? [];
196
+ const handleAddMapping = useCallback(()=>{
197
+ onChange(produce(value, (draft)=>{
198
+ if (!draft.labelColorMappings) draft.labelColorMappings = [];
199
+ draft.labelColorMappings.push({
200
+ labelKey: '',
201
+ mode: 'auto'
202
+ });
203
+ }));
204
+ }, [
205
+ value,
206
+ onChange
207
+ ]);
208
+ const handleRemoveMapping = useCallback((index)=>{
209
+ onChange(produce(value, (draft)=>{
210
+ draft.labelColorMappings?.splice(index, 1);
211
+ }));
212
+ }, [
213
+ value,
214
+ onChange
215
+ ]);
216
+ const handleUpdateMapping = useCallback((index, updater)=>{
217
+ onChange(produce(value, (draft)=>{
218
+ const mapping = draft.labelColorMappings?.[index];
219
+ if (mapping) {
220
+ updater(mapping);
221
+ }
222
+ }));
223
+ }, [
224
+ value,
225
+ onChange
226
+ ]);
227
+ return /*#__PURE__*/ _jsx(OptionsEditorGroup, {
228
+ title: "Label Color Mappings",
229
+ children: /*#__PURE__*/ _jsxs(Stack, {
230
+ spacing: 2,
231
+ children: [
232
+ mappings.length === 0 && /*#__PURE__*/ _jsx(Typography, {
233
+ variant: "body2",
234
+ color: "text.secondary",
235
+ children: "No label color mappings configured. Add one to color label values in the table."
236
+ }),
237
+ mappings.map((mapping, index)=>/*#__PURE__*/ _jsxs(Box, {
238
+ children: [
239
+ index > 0 && /*#__PURE__*/ _jsx(Divider, {
240
+ sx: {
241
+ mb: 2
242
+ }
243
+ }),
244
+ /*#__PURE__*/ _jsx(LabelMappingEntry, {
245
+ mapping: mapping,
246
+ index: index,
247
+ onUpdate: handleUpdateMapping,
248
+ onRemove: handleRemoveMapping
249
+ })
250
+ ]
251
+ }, index)),
252
+ /*#__PURE__*/ _jsx(Button, {
253
+ variant: "outlined",
254
+ size: "small",
255
+ startIcon: /*#__PURE__*/ _jsx(PlusIcon, {}),
256
+ onClick: handleAddMapping,
257
+ children: "Add label mapping"
258
+ })
259
+ ]
260
+ })
261
+ });
262
+ }
263
+
264
+ //# sourceMappingURL=AlertTableLabelsEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/plugins/alert-table/AlertTableLabelsEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n Box,\n Button,\n Checkbox,\n Divider,\n FormControl,\n FormControlLabel,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n TextField,\n Typography,\n} from '@mui/material';\nimport { OptionsEditorGroup } from '@perses-dev/components';\nimport { OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { produce } from 'immer';\nimport DeleteIcon from 'mdi-material-ui/Delete';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport { ReactElement, useCallback } from 'react';\nimport { AlertTableOptions, LabelColorMapping, LabelColorOverride } from './alert-table-model';\n\nconst MODE_LABELS: Record<LabelColorMapping['mode'], string> = {\n auto: 'Auto (hash-derived colors)',\n severity: 'Severity (built-in defaults)',\n manual: 'Manual (overrides only)',\n};\n\nfunction LabelMappingEntry({\n mapping,\n index,\n onUpdate,\n onRemove,\n}: {\n mapping: LabelColorMapping;\n index: number;\n onUpdate: (index: number, updater: (draft: LabelColorMapping) => void) => void;\n onRemove: (index: number) => void;\n}): ReactElement {\n const handleAddOverride = useCallback((): void => {\n onUpdate(index, (draft) => {\n if (!draft.overrides) draft.overrides = [];\n draft.overrides.push({ value: '', isRegex: false, color: '#1976d2' });\n });\n }, [index, onUpdate]);\n\n const handleRemoveOverride = useCallback(\n (overrideIndex: number): void => {\n onUpdate(index, (draft) => {\n draft.overrides?.splice(overrideIndex, 1);\n });\n },\n [index, onUpdate]\n );\n\n const handleUpdateOverride = useCallback(\n (overrideIndex: number, field: keyof LabelColorOverride, fieldValue: string | boolean): void => {\n onUpdate(index, (draft) => {\n const override = draft.overrides?.[overrideIndex];\n if (override) {\n if (field === 'isRegex') {\n override.isRegex = fieldValue as boolean;\n } else {\n override[field] = fieldValue as string;\n }\n }\n });\n },\n [index, onUpdate]\n );\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 2 }}>\n <Stack spacing={2}>\n <Stack direction=\"row\" spacing={1} alignItems=\"center\" justifyContent=\"space-between\">\n <Typography variant=\"subtitle2\">{mapping.labelKey || 'New label'}</Typography>\n <IconButton size=\"small\" onClick={() => onRemove(index)} aria-label=\"Remove label mapping\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n <TextField\n label=\"Label key\"\n value={mapping.labelKey}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.labelKey = e.target.value;\n })\n }\n size=\"small\"\n fullWidth\n />\n <FormControl size=\"small\" fullWidth>\n <InputLabel id={`color-mode-label-${index}`}>Mode</InputLabel>\n <Select\n labelId={`color-mode-label-${index}`}\n value={mapping.mode}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.mode = e.target.value as LabelColorMapping['mode'];\n })\n }\n label=\"Mode\"\n >\n {(Object.keys(MODE_LABELS) as Array<LabelColorMapping['mode']>).map((mode) => (\n <MenuItem key={mode} value={mode}>\n {MODE_LABELS[mode]}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Overrides\n </Typography>\n <Stack spacing={1}>\n {(mapping.overrides ?? []).map((override, overrideIndex) => (\n <Stack key={overrideIndex} direction=\"row\" spacing={1} alignItems=\"center\">\n <TextField\n label=\"Value / Pattern\"\n value={override.value}\n onChange={(e) => handleUpdateOverride(overrideIndex, 'value', e.target.value)}\n size=\"small\"\n sx={{ flex: 1 }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={override.isRegex}\n onChange={(e) => handleUpdateOverride(overrideIndex, 'isRegex', e.target.checked)}\n size=\"small\"\n />\n }\n label=\"Regex\"\n />\n <input\n type=\"color\"\n value={override.color}\n onChange={(e) => handleUpdateOverride(overrideIndex, 'color', e.target.value)}\n style={{ width: 36, height: 28, border: 'none', cursor: 'pointer' }}\n />\n <IconButton\n size=\"small\"\n onClick={() => handleRemoveOverride(overrideIndex)}\n aria-label=\"Remove override\"\n >\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n ))}\n <Button size=\"small\" startIcon={<PlusIcon />} onClick={handleAddOverride}>\n Add override\n </Button>\n </Stack>\n </Box>\n </Stack>\n </Box>\n );\n}\n\nexport function AlertTableLabelsEditor(props: OptionsEditorProps<AlertTableOptions>): ReactElement {\n const { value, onChange } = props;\n const mappings = value.labelColorMappings ?? [];\n\n const handleAddMapping = useCallback((): void => {\n onChange(\n produce(value, (draft) => {\n if (!draft.labelColorMappings) draft.labelColorMappings = [];\n draft.labelColorMappings.push({ labelKey: '', mode: 'auto' });\n })\n );\n }, [value, onChange]);\n\n const handleRemoveMapping = useCallback(\n (index: number): void => {\n onChange(\n produce(value, (draft) => {\n draft.labelColorMappings?.splice(index, 1);\n })\n );\n },\n [value, onChange]\n );\n\n const handleUpdateMapping = useCallback(\n (index: number, updater: (draft: LabelColorMapping) => void): void => {\n onChange(\n produce(value, (draft) => {\n const mapping = draft.labelColorMappings?.[index];\n if (mapping) {\n updater(mapping);\n }\n })\n );\n },\n [value, onChange]\n );\n\n return (\n <OptionsEditorGroup title=\"Label Color Mappings\">\n <Stack spacing={2}>\n {mappings.length === 0 && (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No label color mappings configured. Add one to color label values in the table.\n </Typography>\n )}\n {mappings.map((mapping, index) => (\n <Box key={index}>\n {index > 0 && <Divider sx={{ mb: 2 }} />}\n <LabelMappingEntry\n mapping={mapping}\n index={index}\n onUpdate={handleUpdateMapping}\n onRemove={handleRemoveMapping}\n />\n </Box>\n ))}\n <Button variant=\"outlined\" size=\"small\" startIcon={<PlusIcon />} onClick={handleAddMapping}>\n Add label mapping\n </Button>\n </Stack>\n </OptionsEditorGroup>\n );\n}\n"],"names":["Box","Button","Checkbox","Divider","FormControl","FormControlLabel","IconButton","InputLabel","MenuItem","Select","Stack","TextField","Typography","OptionsEditorGroup","produce","DeleteIcon","PlusIcon","useCallback","MODE_LABELS","auto","severity","manual","LabelMappingEntry","mapping","index","onUpdate","onRemove","handleAddOverride","draft","overrides","push","value","isRegex","color","handleRemoveOverride","overrideIndex","splice","handleUpdateOverride","field","fieldValue","override","sx","border","borderColor","borderRadius","p","spacing","direction","alignItems","justifyContent","variant","labelKey","size","onClick","aria-label","fontSize","label","onChange","e","target","fullWidth","id","labelId","mode","Object","keys","map","mb","flex","control","checked","input","type","style","width","height","cursor","startIcon","AlertTableLabelsEditor","props","mappings","labelColorMappings","handleAddMapping","handleRemoveMapping","handleUpdateMapping","updater","title","length"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { OptionsEditorProps } from '@perses-dev/plugin-system';
2
+ import { ReactElement } from 'react';
3
+ import { AlertTableOptions } from './alert-table-model';
4
+ export declare function AlertTableOptionsEditor(props: OptionsEditorProps<AlertTableOptions>): ReactElement;
5
+ //# sourceMappingURL=AlertTableOptionsEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertTableOptionsEditor.d.ts","sourceRoot":"","sources":["../../../../src/plugins/alert-table/AlertTableOptionsEditor.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAe,YAAY,EAA+B,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAe,iBAAiB,EAAqB,MAAM,qBAAqB,CAAC;AAOxF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,YAAY,CA4GlG"}
@@ -0,0 +1,120 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // Copyright The Perses Authors
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { Autocomplete, Checkbox, Chip, FormControlLabel, TextField } from '@mui/material';
15
+ import { OptionsEditorGroup } from '@perses-dev/components';
16
+ import { produce } from 'immer';
17
+ import { useCallback } from 'react';
18
+ import { ALL_ALERT_ACTIONS } from './alert-table-model';
19
+ const ACTION_LABELS = {
20
+ silence: 'Silence alert',
21
+ runbook: 'View runbook'
22
+ };
23
+ export function AlertTableOptionsEditor(props) {
24
+ const { value, onChange } = props;
25
+ const effectiveActions = value.allowedActions ?? ALL_ALERT_ACTIONS;
26
+ const groupBy = value.defaultGroupBy ?? [
27
+ 'alertname'
28
+ ];
29
+ const handleGroupByChange = useCallback((_event, newValue)=>{
30
+ onChange(produce(value, (draft)=>{
31
+ draft.defaultGroupBy = newValue.length > 0 ? newValue : undefined;
32
+ }));
33
+ }, [
34
+ value,
35
+ onChange
36
+ ]);
37
+ const handleRunbookKeyChange = useCallback((e)=>{
38
+ onChange(produce(value, (draft)=>{
39
+ const trimmed = e.target.value.trim();
40
+ draft.runbookAnnotationKey = trimmed || undefined;
41
+ }));
42
+ }, [
43
+ value,
44
+ onChange
45
+ ]);
46
+ const handleToggle = useCallback((action, checked)=>{
47
+ onChange(produce(value, (draft)=>{
48
+ const current = draft.allowedActions ?? [
49
+ ...ALL_ALERT_ACTIONS
50
+ ];
51
+ if (checked) {
52
+ if (!current.includes(action)) current.push(action);
53
+ } else {
54
+ const idx = current.indexOf(action);
55
+ if (idx >= 0) current.splice(idx, 1);
56
+ }
57
+ draft.allowedActions = current;
58
+ }));
59
+ }, [
60
+ value,
61
+ onChange
62
+ ]);
63
+ return /*#__PURE__*/ _jsxs(_Fragment, {
64
+ children: [
65
+ /*#__PURE__*/ _jsx(OptionsEditorGroup, {
66
+ title: "Group By",
67
+ children: /*#__PURE__*/ _jsx(Autocomplete, {
68
+ multiple: true,
69
+ freeSolo: true,
70
+ options: [],
71
+ value: groupBy,
72
+ onChange: handleGroupByChange,
73
+ renderTags: (tagValues, getTagProps)=>tagValues.map((option, index)=>{
74
+ const { key, ...rest } = getTagProps({
75
+ index
76
+ });
77
+ const isVariable = option.includes('$');
78
+ return /*#__PURE__*/ _jsx(Chip, {
79
+ label: option,
80
+ size: "small",
81
+ variant: isVariable ? 'filled' : 'outlined',
82
+ color: isVariable ? 'primary' : 'default',
83
+ ...rest
84
+ }, key);
85
+ }),
86
+ renderInput: (params)=>/*#__PURE__*/ _jsx(TextField, {
87
+ ...params,
88
+ size: "small",
89
+ placeholder: "Type a label key or $variable and press Enter",
90
+ helperText: "Label keys to group alerts by. Supports $variable interpolation."
91
+ })
92
+ })
93
+ }),
94
+ /*#__PURE__*/ _jsx(OptionsEditorGroup, {
95
+ title: "Actions",
96
+ children: ALL_ALERT_ACTIONS.map((action)=>/*#__PURE__*/ _jsx(FormControlLabel, {
97
+ control: /*#__PURE__*/ _jsx(Checkbox, {
98
+ checked: effectiveActions.includes(action),
99
+ onChange: (e)=>handleToggle(action, e.target.checked),
100
+ size: "small"
101
+ }),
102
+ label: ACTION_LABELS[action]
103
+ }, action))
104
+ }),
105
+ /*#__PURE__*/ _jsx(OptionsEditorGroup, {
106
+ title: "Runbook",
107
+ children: /*#__PURE__*/ _jsx(TextField, {
108
+ size: "small",
109
+ fullWidth: true,
110
+ value: value.runbookAnnotationKey ?? '',
111
+ onChange: handleRunbookKeyChange,
112
+ placeholder: "runbook_url",
113
+ helperText: "Annotation key used to extract the runbook URL. Defaults to runbook_url."
114
+ })
115
+ })
116
+ ]
117
+ });
118
+ }
119
+
120
+ //# sourceMappingURL=AlertTableOptionsEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/plugins/alert-table/AlertTableOptionsEditor.tsx"],"sourcesContent":["// Copyright The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Autocomplete, Checkbox, Chip, FormControlLabel, TextField } from '@mui/material';\nimport { OptionsEditorGroup } from '@perses-dev/components';\nimport { OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { produce } from 'immer';\nimport { ChangeEvent, ReactElement, SyntheticEvent, useCallback } from 'react';\nimport { AlertAction, AlertTableOptions, ALL_ALERT_ACTIONS } from './alert-table-model';\n\nconst ACTION_LABELS: Record<AlertAction, string> = {\n silence: 'Silence alert',\n runbook: 'View runbook',\n};\n\nexport function AlertTableOptionsEditor(props: OptionsEditorProps<AlertTableOptions>): ReactElement {\n const { value, onChange } = props;\n const effectiveActions = value.allowedActions ?? ALL_ALERT_ACTIONS;\n const groupBy = value.defaultGroupBy ?? ['alertname'];\n\n const handleGroupByChange = useCallback(\n (_event: SyntheticEvent, newValue: string[]): void => {\n onChange(\n produce(value, (draft) => {\n draft.defaultGroupBy = newValue.length > 0 ? newValue : undefined;\n })\n );\n },\n [value, onChange]\n );\n\n const handleRunbookKeyChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>): void => {\n onChange(\n produce(value, (draft) => {\n const trimmed = e.target.value.trim();\n draft.runbookAnnotationKey = trimmed || undefined;\n })\n );\n },\n [value, onChange]\n );\n\n const handleToggle = useCallback(\n (action: AlertAction, checked: boolean) => {\n onChange(\n produce(value, (draft) => {\n const current = draft.allowedActions ?? [...ALL_ALERT_ACTIONS];\n if (checked) {\n if (!current.includes(action)) current.push(action);\n } else {\n const idx = current.indexOf(action);\n if (idx >= 0) current.splice(idx, 1);\n }\n draft.allowedActions = current;\n })\n );\n },\n [value, onChange]\n );\n\n return (\n <>\n <OptionsEditorGroup title=\"Group By\">\n <Autocomplete<string, true, false, true>\n multiple\n freeSolo\n options={[] as string[]}\n value={groupBy}\n onChange={handleGroupByChange}\n renderTags={(tagValues, getTagProps): ReactElement[] =>\n tagValues.map((option, index) => {\n const { key, ...rest } = getTagProps({ index });\n const isVariable = option.includes('$');\n return (\n <Chip\n key={key}\n label={option}\n size=\"small\"\n variant={isVariable ? 'filled' : 'outlined'}\n color={isVariable ? 'primary' : 'default'}\n {...rest}\n />\n );\n })\n }\n renderInput={(params) => (\n <TextField\n {...params}\n size=\"small\"\n placeholder=\"Type a label key or $variable and press Enter\"\n helperText=\"Label keys to group alerts by. Supports $variable interpolation.\"\n />\n )}\n />\n </OptionsEditorGroup>\n <OptionsEditorGroup title=\"Actions\">\n {ALL_ALERT_ACTIONS.map((action) => (\n <FormControlLabel\n key={action}\n control={\n <Checkbox\n checked={effectiveActions.includes(action)}\n onChange={(e) => handleToggle(action, e.target.checked)}\n size=\"small\"\n />\n }\n label={ACTION_LABELS[action]}\n />\n ))}\n </OptionsEditorGroup>\n <OptionsEditorGroup title=\"Runbook\">\n <TextField\n size=\"small\"\n fullWidth\n value={value.runbookAnnotationKey ?? ''}\n onChange={handleRunbookKeyChange}\n placeholder=\"runbook_url\"\n helperText=\"Annotation key used to extract the runbook URL. Defaults to runbook_url.\"\n />\n </OptionsEditorGroup>\n </>\n );\n}\n"],"names":["Autocomplete","Checkbox","Chip","FormControlLabel","TextField","OptionsEditorGroup","produce","useCallback","ALL_ALERT_ACTIONS","ACTION_LABELS","silence","runbook","AlertTableOptionsEditor","props","value","onChange","effectiveActions","allowedActions","groupBy","defaultGroupBy","handleGroupByChange","_event","newValue","draft","length","undefined","handleRunbookKeyChange","e","trimmed","target","trim","runbookAnnotationKey","handleToggle","action","checked","current","includes","push","idx","indexOf","splice","title","multiple","freeSolo","options","renderTags","tagValues","getTagProps","map","option","index","key","rest","isVariable","label","size","variant","color","renderInput","params","placeholder","helperText","control","fullWidth"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { PanelProps } from '@perses-dev/plugin-system';
2
+ import { AlertsData } from '@perses-dev/spec';
3
+ import { ReactElement } from 'react';
4
+ import { AlertTableOptions } from './alert-table-model';
5
+ export type AlertTablePanelProps = PanelProps<AlertTableOptions, AlertsData>;
6
+ /**
7
+ * Alert hierarchical table panel component.
8
+ * Displays alerts grouped by configurable labels with deduplication.
9
+ */
10
+ export declare function AlertTablePanel({ spec, queryResults, contentDimensions }: AlertTablePanelProps): ReactElement;
11
+ //# sourceMappingURL=AlertTablePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertTablePanel.d.ts","sourceRoot":"","sources":["../../../../src/plugins/alert-table/AlertTablePanel.tsx"],"names":[],"mappings":"AAoCA,OAAO,EACL,UAAU,EAKX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASrD,OAAO,EAAE,YAAY,EAAqD,MAAM,OAAO,CAAC;AAKxF,OAAO,EAEL,iBAAiB,EAUlB,MAAM,qBAAqB,CAAC;AAU7B,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;AA6P7E;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,EAAE,EAAE,oBAAoB,GAAG,YAAY,CAgX7G"}