@perses-dev/alert-manager-plugin 0.1.1 → 0.2.0-beta.2
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.
- package/__mf/js/AlertManager.42d95b33.js +7 -0
- package/__mf/js/async/1299.d5af4767.js +1 -0
- package/__mf/js/async/1522.04dc197d.js +22 -0
- package/__mf/js/async/1616.0c9baa4c.js +1 -0
- package/__mf/js/async/1871.5e21fb62.js +1 -0
- package/__mf/js/async/1969.e54f3991.js +1 -0
- package/__mf/js/async/2043.4e8f2371.js +2 -0
- package/__mf/js/async/{430.74d85c4b.js.LICENSE.txt → 2043.4e8f2371.js.LICENSE.txt} +1 -41
- package/__mf/js/async/2197.53bcb69e.js +1 -0
- package/__mf/js/async/2218.8b7e30c2.js +2 -0
- package/__mf/js/async/2317.e656eab3.js +2 -0
- package/__mf/js/async/2377.5295b064.js +1 -0
- package/__mf/js/async/2650.0b5955b5.js +3 -0
- package/__mf/js/async/2657.e6a11726.js +1 -0
- package/__mf/js/async/3222.6ad1b128.js +1 -0
- package/__mf/js/async/3514.e71d5cb9.js +2 -0
- package/__mf/js/async/3910.1bd28e15.js +1 -0
- package/__mf/js/async/392.26ae5cc4.js +2 -0
- package/__mf/js/async/3963.181d3782.js +1 -0
- package/__mf/js/async/4077.91abd1da.js +1 -0
- package/__mf/js/async/4121.f9595b70.js +2 -0
- package/__mf/js/async/4133.cc678ae9.js +28 -0
- package/__mf/js/async/4213.005a1a65.js +1 -0
- package/__mf/js/async/{4466.a8145edd.js → 4466.7cca717d.js} +3 -3
- package/__mf/js/async/4481.5bc5aa13.js +2 -0
- package/__mf/js/async/4496.3760da2f.js +1 -0
- package/__mf/js/async/4978.f1550309.js +1 -0
- package/__mf/js/async/5038.b1e9133a.js +2 -0
- package/__mf/js/async/5071.eeb1c9b1.js +1 -0
- package/__mf/js/async/5428.6922d4df.js +1 -0
- package/__mf/js/async/5759.84fc4d0b.js +7 -0
- package/__mf/js/async/{3540.96681482.js.LICENSE.txt → 5759.84fc4d0b.js.LICENSE.txt} +41 -1
- package/__mf/js/async/6274.9f68ee7d.js +2 -0
- package/__mf/js/async/6390.0fd40bd8.js +2 -0
- package/__mf/js/async/6401.7bf2c4c2.js +1 -0
- package/__mf/js/async/6594.b3a19fc1.js +2 -0
- package/__mf/js/async/6854.f05f8da0.js +1 -0
- package/__mf/js/async/6911.bc380f0c.js +37 -0
- package/__mf/js/async/7177.83345474.js +1 -0
- package/__mf/js/async/7192.715c4cb3.js +1 -0
- package/__mf/js/async/733.8bc3bc96.js +1 -0
- package/__mf/js/async/7862.10a19eef.js +2 -0
- package/__mf/js/async/7978.4ca49c3a.js +1 -0
- package/__mf/js/async/8470.7ebe8e66.js +2 -0
- package/__mf/js/async/8697.7b6d10e1.js +1 -0
- package/__mf/js/async/873.fcc6e5b7.js +1 -0
- package/__mf/js/async/8907.5d1f9505.js +1 -0
- package/__mf/js/async/{9040.94717f28.js → 9040.8de751d6.js} +4 -4
- package/__mf/js/async/9184.307e83da.js +1 -0
- package/__mf/js/async/9235.1b0d1de0.js +1 -0
- package/__mf/js/async/941.36858244.js +2 -0
- package/__mf/js/async/9588.31544c69.js +1 -0
- package/__mf/js/async/9836.e4cf02db.js +1 -0
- package/__mf/js/async/__federation_expose_AlertManagerAlertsExplorer.4fbf2fa1.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerAlertsQuery.27d99dac.js +1 -0
- package/__mf/js/async/__federation_expose_AlertManagerDatasource.c2b36e70.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerSilencesExplorer.65e1901a.js +2 -0
- package/__mf/js/async/__federation_expose_AlertManagerSilencesQuery.f619a448.js +2 -0
- package/__mf/js/async/__federation_expose_AlertTable.6c37126b.js +1 -0
- package/__mf/js/async/__federation_expose_SilenceTable.3a614a2f.js +1 -0
- package/__mf/js/async/lib-router.20ba053c.js +2 -0
- package/__mf/js/{main.259f5b24.js → main.babca431.js} +2 -2
- package/lib/bootstrap.js +2 -2
- package/lib/components/ColumnsEditor.d.ts +1 -1
- package/lib/components/ColumnsEditor.d.ts.map +1 -1
- package/lib/components/ColumnsEditor.js +7 -7
- package/lib/components/ColumnsEditor.js.map +1 -1
- package/lib/components/LazyTextField.d.ts +1 -1
- package/lib/components/LazyTextField.d.ts.map +1 -1
- package/lib/components/LazyTextField.js +2 -2
- package/lib/components/LazyTextField.js.map +1 -1
- package/lib/components/MatcherEditor.d.ts +1 -1
- package/lib/components/MatcherEditor.d.ts.map +1 -1
- package/lib/components/MatcherEditor.js +4 -4
- package/lib/components/MatcherEditor.js.map +1 -1
- package/lib/components/MatchersList.d.ts +2 -2
- package/lib/components/MatchersList.d.ts.map +1 -1
- package/lib/components/MatchersList.js +1 -1
- package/lib/components/MatchersList.js.map +1 -1
- package/lib/components/SilenceForm.d.ts +2 -2
- package/lib/components/SilenceForm.d.ts.map +1 -1
- package/lib/components/SilenceForm.js +4 -4
- package/lib/components/SilenceForm.js.map +1 -1
- package/lib/components/StatusBadge.d.ts +1 -1
- package/lib/components/StatusBadge.d.ts.map +1 -1
- package/lib/components/StatusBadge.js +1 -1
- package/lib/components/StatusBadge.js.map +1 -1
- package/lib/components/index.js +5 -5
- package/lib/components/index.js.map +1 -1
- package/lib/explore/AlertManagerAlertsExplorer.d.ts +1 -1
- package/lib/explore/AlertManagerAlertsExplorer.d.ts.map +1 -1
- package/lib/explore/AlertManagerAlertsExplorer.js +5 -5
- package/lib/explore/AlertManagerAlertsExplorer.js.map +1 -1
- package/lib/explore/AlertManagerSilencesExplorer.d.ts +1 -1
- package/lib/explore/AlertManagerSilencesExplorer.d.ts.map +1 -1
- package/lib/explore/AlertManagerSilencesExplorer.js +10 -10
- package/lib/explore/AlertManagerSilencesExplorer.js.map +1 -1
- package/lib/getPluginModule.d.ts +1 -1
- package/lib/getPluginModule.d.ts.map +1 -1
- package/lib/getPluginModule.js +3 -1
- package/lib/getPluginModule.js.map +1 -1
- package/lib/index-federation.js +1 -1
- package/lib/index.js +4 -4
- package/lib/index.js.map +1 -1
- package/lib/model/alertmanager-client.d.ts +3 -3
- package/lib/model/alertmanager-client.d.ts.map +1 -1
- package/lib/model/alertmanager-client.js +4 -2
- package/lib/model/alertmanager-client.js.map +1 -1
- package/lib/model/alertmanager-selectors.d.ts +2 -2
- package/lib/model/alertmanager-selectors.d.ts.map +1 -1
- package/lib/model/alertmanager-selectors.js +1 -1
- package/lib/model/alertmanager-selectors.js.map +1 -1
- package/lib/model/index.js +3 -3
- package/lib/model/index.js.map +1 -1
- package/lib/plugins/AlertManagerDatasourceEditor.d.ts +2 -2
- package/lib/plugins/AlertManagerDatasourceEditor.d.ts.map +1 -1
- package/lib/plugins/AlertManagerDatasourceEditor.js +1 -1
- package/lib/plugins/AlertManagerDatasourceEditor.js.map +1 -1
- package/lib/plugins/alert-table/AlertTable.d.ts +3 -3
- package/lib/plugins/alert-table/AlertTable.d.ts.map +1 -1
- package/lib/plugins/alert-table/AlertTable.js +5 -5
- package/lib/plugins/alert-table/AlertTable.js.map +1 -1
- package/lib/plugins/alert-table/AlertTableColumnsEditor.d.ts +3 -3
- package/lib/plugins/alert-table/AlertTableColumnsEditor.d.ts.map +1 -1
- package/lib/plugins/alert-table/AlertTableColumnsEditor.js +4 -4
- package/lib/plugins/alert-table/AlertTableColumnsEditor.js.map +1 -1
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.d.ts +3 -3
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.d.ts.map +1 -1
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.js +4 -4
- package/lib/plugins/alert-table/AlertTableDeduplicationEditor.js.map +1 -1
- package/lib/plugins/alert-table/AlertTableLabelsEditor.d.ts +3 -3
- package/lib/plugins/alert-table/AlertTableLabelsEditor.d.ts.map +1 -1
- package/lib/plugins/alert-table/AlertTableLabelsEditor.js +6 -6
- package/lib/plugins/alert-table/AlertTableLabelsEditor.js.map +1 -1
- package/lib/plugins/alert-table/AlertTableOptionsEditor.d.ts +3 -3
- package/lib/plugins/alert-table/AlertTableOptionsEditor.d.ts.map +1 -1
- package/lib/plugins/alert-table/AlertTableOptionsEditor.js +5 -5
- package/lib/plugins/alert-table/AlertTableOptionsEditor.js.map +1 -1
- package/lib/plugins/alert-table/AlertTablePanel.d.ts +4 -4
- package/lib/plugins/alert-table/AlertTablePanel.d.ts.map +1 -1
- package/lib/plugins/alert-table/AlertTablePanel.js +21 -21
- package/lib/plugins/alert-table/AlertTablePanel.js.map +1 -1
- package/lib/plugins/alert-table/alert-table-model.d.ts +1 -1
- package/lib/plugins/alert-table/alert-table-model.d.ts.map +1 -1
- package/lib/plugins/alert-table/alert-table-model.js +2 -2
- package/lib/plugins/alert-table/alert-table-model.js.map +1 -1
- package/lib/plugins/alert-table/alert-table-sorting.d.ts +2 -2
- package/lib/plugins/alert-table/alert-table-sorting.d.ts.map +1 -1
- package/lib/plugins/alert-table/alert-table-sorting.js +1 -1
- package/lib/plugins/alert-table/alert-table-sorting.js.map +1 -1
- package/lib/plugins/alert-table/label-colors.d.ts +1 -1
- package/lib/plugins/alert-table/label-colors.d.ts.map +1 -1
- package/lib/plugins/alert-table/label-colors.js.map +1 -1
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.d.ts +2 -2
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.d.ts.map +1 -1
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js +3 -3
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js.map +1 -1
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.d.ts +2 -2
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.d.ts.map +1 -1
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js +7 -7
- package/lib/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js.map +1 -1
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.d.ts +3 -3
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.d.ts.map +1 -1
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.js +2 -2
- package/lib/plugins/alertmanager-alerts-query/get-alerts-data.js.map +1 -1
- package/lib/plugins/alertmanager-datasource.d.ts +3 -3
- package/lib/plugins/alertmanager-datasource.d.ts.map +1 -1
- package/lib/plugins/alertmanager-datasource.js +2 -2
- package/lib/plugins/alertmanager-datasource.js.map +1 -1
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.d.ts +2 -2
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.d.ts.map +1 -1
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js +3 -3
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js.map +1 -1
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.d.ts +2 -2
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.d.ts.map +1 -1
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js +7 -7
- package/lib/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js.map +1 -1
- package/lib/plugins/alertmanager-silences-query/get-silences-data.d.ts +3 -3
- package/lib/plugins/alertmanager-silences-query/get-silences-data.d.ts.map +1 -1
- package/lib/plugins/alertmanager-silences-query/get-silences-data.js +2 -2
- package/lib/plugins/alertmanager-silences-query/get-silences-data.js.map +1 -1
- package/lib/plugins/index.js +16 -16
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/silence-table/SilenceTable.d.ts +2 -2
- package/lib/plugins/silence-table/SilenceTable.d.ts.map +1 -1
- package/lib/plugins/silence-table/SilenceTable.js +3 -3
- package/lib/plugins/silence-table/SilenceTable.js.map +1 -1
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.d.ts +3 -3
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.d.ts.map +1 -1
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.js +5 -5
- package/lib/plugins/silence-table/SilenceTableColumnsEditor.js.map +1 -1
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.d.ts +3 -3
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.d.ts.map +1 -1
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.js +5 -5
- package/lib/plugins/silence-table/SilenceTableOptionsEditor.js.map +1 -1
- package/lib/plugins/silence-table/SilenceTablePanel.d.ts +4 -4
- package/lib/plugins/silence-table/SilenceTablePanel.d.ts.map +1 -1
- package/lib/plugins/silence-table/SilenceTablePanel.js +13 -13
- package/lib/plugins/silence-table/SilenceTablePanel.js.map +1 -1
- package/lib/plugins/silence-table/silence-table-model.d.ts +1 -1
- package/lib/plugins/silence-table/silence-table-model.d.ts.map +1 -1
- package/lib/plugins/silence-table/silence-table-model.js.map +1 -1
- package/lib/plugins/silence-table/silence-table-sorting.d.ts +2 -2
- package/lib/plugins/silence-table/silence-table-sorting.d.ts.map +1 -1
- package/lib/plugins/silence-table/silence-table-sorting.js +1 -1
- package/lib/plugins/silence-table/silence-table-sorting.js.map +1 -1
- package/lib/plugins/types.d.ts +3 -3
- package/lib/plugins/types.d.ts.map +1 -1
- package/lib/plugins/types.js.map +1 -1
- package/lib/setup-tests.d.ts +1 -1
- package/lib/setup-tests.d.ts.map +1 -1
- package/lib/setup-tests.js +2 -2
- package/lib/setup-tests.js.map +1 -1
- package/mf-manifest.json +302 -308
- package/mf-stats.json +308 -314
- package/package.json +12 -12
- package/__mf/js/AlertManager.377d377b.js +0 -7
- package/__mf/js/async/1616.24f00c9d.js +0 -1
- package/__mf/js/async/1728.8a326412.js +0 -1
- package/__mf/js/async/1871.23ff54b3.js +0 -1
- package/__mf/js/async/1969.a83b1b48.js +0 -1
- package/__mf/js/async/2218.7829c9d9.js +0 -2
- package/__mf/js/async/2377.f8875a4e.js +0 -1
- package/__mf/js/async/2657.fe8dd44f.js +0 -1
- package/__mf/js/async/2842.993baf22.js +0 -1
- package/__mf/js/async/3468.1679f87f.js +0 -1
- package/__mf/js/async/3540.96681482.js +0 -2
- package/__mf/js/async/392.7e11dd69.js +0 -2
- package/__mf/js/async/3963.fb6246d2.js +0 -1
- package/__mf/js/async/3981.84d12fdc.js +0 -4
- package/__mf/js/async/3981.84d12fdc.js.LICENSE.txt +0 -24
- package/__mf/js/async/4121.ec666be2.js +0 -2
- package/__mf/js/async/4133.e94df4f8.js +0 -28
- package/__mf/js/async/4213.a0c4f2eb.js +0 -1
- package/__mf/js/async/430.74d85c4b.js +0 -7
- package/__mf/js/async/4788.49ffeac3.js +0 -1
- package/__mf/js/async/5038.269393e3.js +0 -2
- package/__mf/js/async/5481.cf6703fd.js +0 -2
- package/__mf/js/async/5570.d4dd47e0.js +0 -1
- package/__mf/js/async/573.ce8ce2ef.js +0 -2
- package/__mf/js/async/6274.8c77cb1a.js +0 -2
- package/__mf/js/async/6390.3f6f279d.js +0 -2
- package/__mf/js/async/6401.1a59dbad.js +0 -1
- package/__mf/js/async/6594.b02adfd9.js +0 -2
- package/__mf/js/async/663.5445c7e0.js +0 -1
- package/__mf/js/async/6854.1d628838.js +0 -1
- package/__mf/js/async/7177.27c86137.js +0 -1
- package/__mf/js/async/7192.ede9860b.js +0 -1
- package/__mf/js/async/7283.8c1cb6ee.js +0 -2
- package/__mf/js/async/7984.163a6ddb.js +0 -22
- package/__mf/js/async/804.23da0d30.js +0 -37
- package/__mf/js/async/8470.2df0db71.js +0 -2
- package/__mf/js/async/8697.c13c6603.js +0 -1
- package/__mf/js/async/8711.c7dc09b8.js +0 -2
- package/__mf/js/async/8907.9e3edf43.js +0 -1
- package/__mf/js/async/9184.27a439a4.js +0 -1
- package/__mf/js/async/9235.00f9412f.js +0 -1
- package/__mf/js/async/941.d3bc6208.js +0 -2
- package/__mf/js/async/9537.36ff6f15.js +0 -1
- package/__mf/js/async/9634.3a366799.js +0 -1
- package/__mf/js/async/983.36857235.js +0 -1
- package/__mf/js/async/9836.cc839227.js +0 -1
- package/__mf/js/async/__federation_expose_AlertManagerAlertsExplorer.47ee46dc.js +0 -2
- package/__mf/js/async/__federation_expose_AlertManagerAlertsQuery.22b0e5bc.js +0 -1
- package/__mf/js/async/__federation_expose_AlertManagerDatasource.7ee7440a.js +0 -2
- package/__mf/js/async/__federation_expose_AlertManagerSilencesExplorer.35860f1b.js +0 -2
- package/__mf/js/async/__federation_expose_AlertManagerSilencesQuery.52a24c9e.js +0 -2
- package/__mf/js/async/__federation_expose_AlertTable.5d005bae.js +0 -1
- package/__mf/js/async/__federation_expose_SilenceTable.3fc487a4.js +0 -2
- package/__mf/js/async/__federation_expose_SilenceTable.3fc487a4.js.LICENSE.txt +0 -9
- package/__mf/js/async/lib-router.19f64904.js +0 -2
- package/lib/cjs/bootstrap.js +0 -26
- package/lib/cjs/components/ColumnsEditor.js +0 -271
- package/lib/cjs/components/LazyTextField.js +0 -50
- package/lib/cjs/components/MatcherEditor.js +0 -153
- package/lib/cjs/components/MatchersList.js +0 -46
- package/lib/cjs/components/SilenceForm.js +0 -205
- package/lib/cjs/components/StatusBadge.js +0 -71
- package/lib/cjs/components/index.js +0 -44
- package/lib/cjs/explore/AlertManagerAlertsExplorer.js +0 -79
- package/lib/cjs/explore/AlertManagerSilencesExplorer.js +0 -153
- package/lib/cjs/getPluginModule.js +0 -39
- package/lib/cjs/index-federation.js +0 -55
- package/lib/cjs/index.js +0 -39
- package/lib/cjs/model/alertmanager-client.js +0 -128
- package/lib/cjs/model/alertmanager-selectors.js +0 -66
- package/lib/cjs/model/api-types.js +0 -22
- package/lib/cjs/model/index.js +0 -32
- package/lib/cjs/plugins/AlertManagerDatasourceEditor.js +0 -71
- package/lib/cjs/plugins/alert-table/AlertTable.js +0 -56
- package/lib/cjs/plugins/alert-table/AlertTableColumnsEditor.js +0 -110
- package/lib/cjs/plugins/alert-table/AlertTableDeduplicationEditor.js +0 -138
- package/lib/cjs/plugins/alert-table/AlertTableLabelsEditor.js +0 -277
- package/lib/cjs/plugins/alert-table/AlertTableOptionsEditor.js +0 -128
- package/lib/cjs/plugins/alert-table/AlertTablePanel.js +0 -773
- package/lib/cjs/plugins/alert-table/alert-table-model.js +0 -142
- package/lib/cjs/plugins/alert-table/alert-table-sorting.js +0 -205
- package/lib/cjs/plugins/alert-table/label-colors.js +0 -170
- package/lib/cjs/plugins/alertmanager-alerts-query/AlertManagerAlertsQuery.js +0 -51
- package/lib/cjs/plugins/alertmanager-alerts-query/AlertManagerAlertsQueryEditor.js +0 -138
- package/lib/cjs/plugins/alertmanager-alerts-query/get-alerts-data.js +0 -124
- package/lib/cjs/plugins/alertmanager-datasource.js +0 -69
- package/lib/cjs/plugins/alertmanager-silences-query/AlertManagerSilencesQuery.js +0 -45
- package/lib/cjs/plugins/alertmanager-silences-query/AlertManagerSilencesQueryEditor.js +0 -78
- package/lib/cjs/plugins/alertmanager-silences-query/get-silences-data.js +0 -64
- package/lib/cjs/plugins/index.js +0 -74
- package/lib/cjs/plugins/silence-table/SilenceTable.js +0 -42
- package/lib/cjs/plugins/silence-table/SilenceTableColumnsEditor.js +0 -137
- package/lib/cjs/plugins/silence-table/SilenceTableOptionsEditor.js +0 -63
- package/lib/cjs/plugins/silence-table/SilenceTablePanel.js +0 -345
- package/lib/cjs/plugins/silence-table/silence-table-model.js +0 -116
- package/lib/cjs/plugins/silence-table/silence-table-sorting.js +0 -68
- package/lib/cjs/plugins/types.js +0 -16
- package/lib/cjs/setup-tests.js +0 -18
- /package/__mf/css/async/{430.85c2cbf6.css → 5759.85c2cbf6.css} +0 -0
- /package/__mf/js/async/{7984.163a6ddb.js.LICENSE.txt → 1522.04dc197d.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{2218.7829c9d9.js.LICENSE.txt → 2218.8b7e30c2.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{5038.269393e3.js.LICENSE.txt → 2317.e656eab3.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{6390.3f6f279d.js.LICENSE.txt → 3514.e71d5cb9.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{392.7e11dd69.js.LICENSE.txt → 392.26ae5cc4.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{4121.ec666be2.js.LICENSE.txt → 4121.f9595b70.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{6594.b02adfd9.js.LICENSE.txt → 5038.b1e9133a.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{6274.8c77cb1a.js.LICENSE.txt → 6274.9f68ee7d.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{7283.8c1cb6ee.js.LICENSE.txt → 6390.0fd40bd8.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{8711.c7dc09b8.js.LICENSE.txt → 6594.b3a19fc1.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{5481.cf6703fd.js.LICENSE.txt → 7862.10a19eef.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{8470.2df0db71.js.LICENSE.txt → 8470.7ebe8e66.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{9040.94717f28.js.LICENSE.txt → 9040.8de751d6.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{941.d3bc6208.js.LICENSE.txt → 941.36858244.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{__federation_expose_AlertManagerAlertsExplorer.47ee46dc.js.LICENSE.txt → __federation_expose_AlertManagerAlertsExplorer.4fbf2fa1.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{__federation_expose_AlertManagerDatasource.7ee7440a.js.LICENSE.txt → __federation_expose_AlertManagerDatasource.c2b36e70.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{__federation_expose_AlertManagerSilencesExplorer.35860f1b.js.LICENSE.txt → __federation_expose_AlertManagerSilencesExplorer.65e1901a.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{__federation_expose_AlertManagerSilencesQuery.52a24c9e.js.LICENSE.txt → __federation_expose_AlertManagerSilencesQuery.f619a448.js.LICENSE.txt} +0 -0
- /package/__mf/js/async/{lib-router.19f64904.js.LICENSE.txt → lib-router.20ba053c.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/ColumnsEditor.tsx"],"names":[],"mappings":"AAiCA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"ColumnsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/ColumnsEditor.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;AAEpF,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,oBAAoB;IAChE,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IACtC,oBAAoB,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;CACzF;AAiID,wBAAgB,aAAa,CAAC,CAAC,SAAS,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,YAAY,CA2FxG"}
|
|
@@ -11,13 +11,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import { Box, Button, Checkbox, Divider, FormControl, FormControlLabel, IconButton, InputLabel, MenuItem, Select, Stack, TextField, Typography } from
|
|
15
|
-
import { OptionsEditorGroup } from
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import DeleteIcon from
|
|
19
|
-
import PlusIcon from
|
|
20
|
-
import { useCallback, useRef } from
|
|
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 ArrowDownIcon from "mdi-material-ui/ArrowDown";
|
|
17
|
+
import ArrowUpIcon from "mdi-material-ui/ArrowUp";
|
|
18
|
+
import DeleteIcon from "mdi-material-ui/Delete";
|
|
19
|
+
import PlusIcon from "mdi-material-ui/Plus";
|
|
20
|
+
import { useCallback, useRef } from "react";
|
|
21
21
|
const DEFAULT_SORT_LABELS = {
|
|
22
22
|
none: 'None',
|
|
23
23
|
asc: 'Ascending',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ColumnsEditor.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 ArrowUpIcon from 'mdi-material-ui/ArrowUp';\nimport ArrowDownIcon from 'mdi-material-ui/ArrowDown';\nimport DeleteIcon from 'mdi-material-ui/Delete';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport { ReactElement, useCallback, useRef } from 'react';\n\nexport interface BaseColumnDefinition {\n name: string;\n header?: string;\n enableSorting?: boolean;\n sort?: 'asc' | 'desc';\n sortMode?: string;\n}\n\nexport type ColumnUpdater<C> = (index: number, updater: (draft: C) => void) => void;\n\nexport interface ColumnsEditorProps<C extends BaseColumnDefinition> {\n columns: C[];\n description: string;\n sortModeLabels: Record<string, string>;\n defaultSortMode: string;\n getDisplayName: (column: C) => string;\n getHeaderPlaceholder: (column: C) => string;\n onAdd: () => void;\n onRemove: (index: number) => void;\n onUpdate: ColumnUpdater<C>;\n onMoveUp: (index: number) => void;\n onMoveDown: (index: number) => void;\n renderNameField: (column: C, index: number, onUpdate: ColumnUpdater<C>) => ReactElement;\n}\n\nconst DEFAULT_SORT_LABELS: Record<string, string> = {\n none: 'None',\n asc: 'Ascending',\n desc: 'Descending',\n};\n\nfunction ColumnEntry<C extends BaseColumnDefinition>({\n column,\n index,\n isFirst,\n isLast,\n sortModeLabels,\n defaultSortMode,\n getDisplayName,\n getHeaderPlaceholder,\n onUpdate,\n onRemove,\n onMoveUp,\n onMoveDown,\n renderNameField,\n}: {\n column: C;\n index: number;\n isFirst: boolean;\n isLast: boolean;\n sortModeLabels: Record<string, string>;\n defaultSortMode: string;\n getDisplayName: (column: C) => string;\n getHeaderPlaceholder: (column: C) => string;\n onUpdate: ColumnUpdater<C>;\n onRemove: (index: number) => void;\n onMoveUp: (index: number) => void;\n onMoveDown: (index: number) => void;\n renderNameField: (column: C, index: number, onUpdate: ColumnUpdater<C>) => ReactElement;\n}): ReactElement {\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 2 }}>\n <Stack spacing={2}>\n <Stack direction=\"row\" spacing={0.5} alignItems=\"center\" justifyContent=\"space-between\">\n <Typography variant=\"subtitle2\">{getDisplayName(column)}</Typography>\n <Stack direction=\"row\" spacing={0.5}>\n <IconButton size=\"small\" onClick={() => onMoveUp(index)} disabled={isFirst} aria-label=\"Move column up\">\n <ArrowUpIcon fontSize=\"small\" />\n </IconButton>\n <IconButton size=\"small\" onClick={() => onMoveDown(index)} disabled={isLast} aria-label=\"Move column down\">\n <ArrowDownIcon fontSize=\"small\" />\n </IconButton>\n <IconButton size=\"small\" onClick={() => onRemove(index)} aria-label=\"Remove column\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n </Stack>\n <Stack direction=\"row\" spacing={1}>\n <Box sx={{ flex: 1 }}>{renderNameField(column, index, onUpdate)}</Box>\n <TextField\n label=\"Header\"\n value={column.header ?? ''}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.header = e.target.value || undefined;\n })\n }\n size=\"small\"\n sx={{ flex: 1 }}\n placeholder={getHeaderPlaceholder(column)}\n />\n </Stack>\n <FormControlLabel\n control={\n <Checkbox\n checked={column.enableSorting !== false}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.enableSorting = e.target.checked ? undefined : false;\n })\n }\n size=\"small\"\n />\n }\n label=\"Allow header sorting\"\n />\n <Stack direction=\"row\" spacing={1}>\n <FormControl size=\"small\" sx={{ flex: 1 }}>\n <InputLabel id={`sort-mode-label-${index}`}>Sort mode</InputLabel>\n <Select\n labelId={`sort-mode-label-${index}`}\n value={column.sortMode ?? defaultSortMode}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.sortMode = e.target.value;\n })\n }\n label=\"Sort mode\"\n >\n {Object.entries(sortModeLabels).map(([mode, label]) => (\n <MenuItem key={mode} value={mode}>\n {label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <FormControl size=\"small\" sx={{ flex: 1 }}>\n <InputLabel id={`default-sort-label-${index}`}>Default sort</InputLabel>\n <Select\n labelId={`default-sort-label-${index}`}\n value={column.sort ?? 'none'}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n const val = e.target.value;\n draft.sort = val === 'none' ? undefined : (val as 'asc' | 'desc');\n })\n }\n label=\"Default sort\"\n >\n {Object.entries(DEFAULT_SORT_LABELS).map(([value, label]) => (\n <MenuItem key={value} value={value}>\n {label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n </Stack>\n </Box>\n );\n}\n\nexport function ColumnsEditor<C extends BaseColumnDefinition>(props: ColumnsEditorProps<C>): ReactElement {\n const {\n columns,\n description,\n sortModeLabels,\n defaultSortMode,\n getDisplayName,\n getHeaderPlaceholder,\n onAdd,\n onRemove,\n onUpdate,\n onMoveUp,\n onMoveDown,\n renderNameField,\n } = props;\n\n const idCounterRef = useRef(0);\n const idsRef = useRef<number[]>([]);\n\n while (idsRef.current.length < columns.length) {\n idsRef.current.push(idCounterRef.current++);\n }\n idsRef.current.length = columns.length;\n\n const handleAdd = useCallback((): void => {\n idsRef.current.push(idCounterRef.current++);\n onAdd();\n }, [onAdd]);\n\n const handleRemove = useCallback(\n (index: number): void => {\n idsRef.current.splice(index, 1);\n onRemove(index);\n },\n [onRemove]\n );\n\n const handleMoveUp = useCallback(\n (index: number): void => {\n if (index <= 0) return;\n const ids = idsRef.current;\n const id = ids.splice(index, 1)[0]!;\n ids.splice(index - 1, 0, id);\n onMoveUp(index);\n },\n [onMoveUp]\n );\n\n const handleMoveDown = useCallback(\n (index: number): void => {\n const ids = idsRef.current;\n if (index >= ids.length - 1) return;\n const id = ids.splice(index, 1)[0]!;\n ids.splice(index + 1, 0, id);\n onMoveDown(index);\n },\n [onMoveDown]\n );\n\n return (\n <OptionsEditorGroup title=\"Columns\">\n <Stack spacing={2}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {description}\n </Typography>\n {columns.map((column, index) => (\n <Box key={idsRef.current[index]}>\n {index > 0 && <Divider sx={{ mb: 2 }} />}\n <ColumnEntry\n column={column}\n index={index}\n isFirst={index === 0}\n isLast={index === columns.length - 1}\n sortModeLabels={sortModeLabels}\n defaultSortMode={defaultSortMode}\n getDisplayName={getDisplayName}\n getHeaderPlaceholder={getHeaderPlaceholder}\n onUpdate={onUpdate}\n onRemove={handleRemove}\n onMoveUp={handleMoveUp}\n onMoveDown={handleMoveDown}\n renderNameField={renderNameField}\n />\n </Box>\n ))}\n <Button variant=\"outlined\" size=\"small\" startIcon={<PlusIcon />} onClick={handleAdd}>\n Add column\n </Button>\n </Stack>\n </OptionsEditorGroup>\n );\n}\n"],"names":["Box","Button","Checkbox","Divider","FormControl","FormControlLabel","IconButton","InputLabel","MenuItem","Select","Stack","TextField","Typography","OptionsEditorGroup","ArrowUpIcon","ArrowDownIcon","DeleteIcon","PlusIcon","useCallback","useRef","DEFAULT_SORT_LABELS","none","asc","desc","ColumnEntry","column","index","isFirst","isLast","sortModeLabels","defaultSortMode","getDisplayName","getHeaderPlaceholder","onUpdate","onRemove","onMoveUp","onMoveDown","renderNameField","sx","border","borderColor","borderRadius","p","spacing","direction","alignItems","justifyContent","variant","size","onClick","disabled","aria-label","fontSize","flex","label","value","header","onChange","e","draft","target","undefined","placeholder","control","checked","enableSorting","id","labelId","sortMode","Object","entries","map","mode","sort","val","ColumnsEditor","props","columns","description","onAdd","idCounterRef","idsRef","current","length","push","handleAdd","handleRemove","splice","handleMoveUp","ids","handleMoveDown","title","color","mb","startIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ColumnsEditor.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 ArrowDownIcon from 'mdi-material-ui/ArrowDown';\nimport ArrowUpIcon from 'mdi-material-ui/ArrowUp';\nimport DeleteIcon from 'mdi-material-ui/Delete';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport type { ReactElement } from 'react';\nimport { useCallback, useRef } from 'react';\n\nexport interface BaseColumnDefinition {\n name: string;\n header?: string;\n enableSorting?: boolean;\n sort?: 'asc' | 'desc';\n sortMode?: string;\n}\n\nexport type ColumnUpdater<C> = (index: number, updater: (draft: C) => void) => void;\n\nexport interface ColumnsEditorProps<C extends BaseColumnDefinition> {\n columns: C[];\n description: string;\n sortModeLabels: Record<string, string>;\n defaultSortMode: string;\n getDisplayName: (column: C) => string;\n getHeaderPlaceholder: (column: C) => string;\n onAdd: () => void;\n onRemove: (index: number) => void;\n onUpdate: ColumnUpdater<C>;\n onMoveUp: (index: number) => void;\n onMoveDown: (index: number) => void;\n renderNameField: (column: C, index: number, onUpdate: ColumnUpdater<C>) => ReactElement;\n}\n\nconst DEFAULT_SORT_LABELS: Record<string, string> = {\n none: 'None',\n asc: 'Ascending',\n desc: 'Descending',\n};\n\nfunction ColumnEntry<C extends BaseColumnDefinition>({\n column,\n index,\n isFirst,\n isLast,\n sortModeLabels,\n defaultSortMode,\n getDisplayName,\n getHeaderPlaceholder,\n onUpdate,\n onRemove,\n onMoveUp,\n onMoveDown,\n renderNameField,\n}: {\n column: C;\n index: number;\n isFirst: boolean;\n isLast: boolean;\n sortModeLabels: Record<string, string>;\n defaultSortMode: string;\n getDisplayName: (column: C) => string;\n getHeaderPlaceholder: (column: C) => string;\n onUpdate: ColumnUpdater<C>;\n onRemove: (index: number) => void;\n onMoveUp: (index: number) => void;\n onMoveDown: (index: number) => void;\n renderNameField: (column: C, index: number, onUpdate: ColumnUpdater<C>) => ReactElement;\n}): ReactElement {\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 2 }}>\n <Stack spacing={2}>\n <Stack direction=\"row\" spacing={0.5} alignItems=\"center\" justifyContent=\"space-between\">\n <Typography variant=\"subtitle2\">{getDisplayName(column)}</Typography>\n <Stack direction=\"row\" spacing={0.5}>\n <IconButton size=\"small\" onClick={() => onMoveUp(index)} disabled={isFirst} aria-label=\"Move column up\">\n <ArrowUpIcon fontSize=\"small\" />\n </IconButton>\n <IconButton size=\"small\" onClick={() => onMoveDown(index)} disabled={isLast} aria-label=\"Move column down\">\n <ArrowDownIcon fontSize=\"small\" />\n </IconButton>\n <IconButton size=\"small\" onClick={() => onRemove(index)} aria-label=\"Remove column\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n </Stack>\n <Stack direction=\"row\" spacing={1}>\n <Box sx={{ flex: 1 }}>{renderNameField(column, index, onUpdate)}</Box>\n <TextField\n label=\"Header\"\n value={column.header ?? ''}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.header = e.target.value || undefined;\n })\n }\n size=\"small\"\n sx={{ flex: 1 }}\n placeholder={getHeaderPlaceholder(column)}\n />\n </Stack>\n <FormControlLabel\n control={\n <Checkbox\n checked={column.enableSorting !== false}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.enableSorting = e.target.checked ? undefined : false;\n })\n }\n size=\"small\"\n />\n }\n label=\"Allow header sorting\"\n />\n <Stack direction=\"row\" spacing={1}>\n <FormControl size=\"small\" sx={{ flex: 1 }}>\n <InputLabel id={`sort-mode-label-${index}`}>Sort mode</InputLabel>\n <Select\n labelId={`sort-mode-label-${index}`}\n value={column.sortMode ?? defaultSortMode}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n draft.sortMode = e.target.value;\n })\n }\n label=\"Sort mode\"\n >\n {Object.entries(sortModeLabels).map(([mode, label]) => (\n <MenuItem key={mode} value={mode}>\n {label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <FormControl size=\"small\" sx={{ flex: 1 }}>\n <InputLabel id={`default-sort-label-${index}`}>Default sort</InputLabel>\n <Select\n labelId={`default-sort-label-${index}`}\n value={column.sort ?? 'none'}\n onChange={(e) =>\n onUpdate(index, (draft) => {\n const val = e.target.value;\n draft.sort = val === 'none' ? undefined : (val as 'asc' | 'desc');\n })\n }\n label=\"Default sort\"\n >\n {Object.entries(DEFAULT_SORT_LABELS).map(([value, label]) => (\n <MenuItem key={value} value={value}>\n {label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Stack>\n </Stack>\n </Box>\n );\n}\n\nexport function ColumnsEditor<C extends BaseColumnDefinition>(props: ColumnsEditorProps<C>): ReactElement {\n const {\n columns,\n description,\n sortModeLabels,\n defaultSortMode,\n getDisplayName,\n getHeaderPlaceholder,\n onAdd,\n onRemove,\n onUpdate,\n onMoveUp,\n onMoveDown,\n renderNameField,\n } = props;\n\n const idCounterRef = useRef(0);\n const idsRef = useRef<number[]>([]);\n\n while (idsRef.current.length < columns.length) {\n idsRef.current.push(idCounterRef.current++);\n }\n idsRef.current.length = columns.length;\n\n const handleAdd = useCallback((): void => {\n idsRef.current.push(idCounterRef.current++);\n onAdd();\n }, [onAdd]);\n\n const handleRemove = useCallback(\n (index: number): void => {\n idsRef.current.splice(index, 1);\n onRemove(index);\n },\n [onRemove],\n );\n\n const handleMoveUp = useCallback(\n (index: number): void => {\n if (index <= 0) return;\n const ids = idsRef.current;\n const id = ids.splice(index, 1)[0]!;\n ids.splice(index - 1, 0, id);\n onMoveUp(index);\n },\n [onMoveUp],\n );\n\n const handleMoveDown = useCallback(\n (index: number): void => {\n const ids = idsRef.current;\n if (index >= ids.length - 1) return;\n const id = ids.splice(index, 1)[0]!;\n ids.splice(index + 1, 0, id);\n onMoveDown(index);\n },\n [onMoveDown],\n );\n\n return (\n <OptionsEditorGroup title=\"Columns\">\n <Stack spacing={2}>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {description}\n </Typography>\n {columns.map((column, index) => (\n <Box key={idsRef.current[index]}>\n {index > 0 && <Divider sx={{ mb: 2 }} />}\n <ColumnEntry\n column={column}\n index={index}\n isFirst={index === 0}\n isLast={index === columns.length - 1}\n sortModeLabels={sortModeLabels}\n defaultSortMode={defaultSortMode}\n getDisplayName={getDisplayName}\n getHeaderPlaceholder={getHeaderPlaceholder}\n onUpdate={onUpdate}\n onRemove={handleRemove}\n onMoveUp={handleMoveUp}\n onMoveDown={handleMoveDown}\n renderNameField={renderNameField}\n />\n </Box>\n ))}\n <Button variant=\"outlined\" size=\"small\" startIcon={<PlusIcon />} onClick={handleAdd}>\n Add column\n </Button>\n </Stack>\n </OptionsEditorGroup>\n );\n}\n"],"names":["Box","Button","Checkbox","Divider","FormControl","FormControlLabel","IconButton","InputLabel","MenuItem","Select","Stack","TextField","Typography","OptionsEditorGroup","ArrowDownIcon","ArrowUpIcon","DeleteIcon","PlusIcon","useCallback","useRef","DEFAULT_SORT_LABELS","none","asc","desc","ColumnEntry","column","index","isFirst","isLast","sortModeLabels","defaultSortMode","getDisplayName","getHeaderPlaceholder","onUpdate","onRemove","onMoveUp","onMoveDown","renderNameField","sx","border","borderColor","borderRadius","p","spacing","direction","alignItems","justifyContent","variant","size","onClick","disabled","aria-label","fontSize","flex","label","value","header","onChange","e","draft","target","undefined","placeholder","control","checked","enableSorting","id","labelId","sortMode","Object","entries","map","mode","sort","val","ColumnsEditor","props","columns","description","onAdd","idCounterRef","idsRef","current","length","push","handleAdd","handleRemove","splice","handleMoveUp","ids","handleMoveDown","title","color","mb","startIcon"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyTextField.d.ts","sourceRoot":"","sources":["../../../src/components/LazyTextField.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAe,YAAY,
|
|
1
|
+
{"version":3,"file":"LazyTextField.d.ts","sourceRoot":"","sources":["../../../src/components/LazyTextField.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAiBrE"}
|
|
@@ -11,8 +11,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import { TextField } from
|
|
15
|
-
import { useCallback, useEffect, useState } from
|
|
14
|
+
import { TextField } from "@mui/material";
|
|
15
|
+
import { useCallback, useEffect, useState } from "react";
|
|
16
16
|
export function LazyTextField(props) {
|
|
17
17
|
const { value, onCommit, ...textFieldProps } = props;
|
|
18
18
|
const [draftValue, setDraftValue] = useState(value ?? '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/LazyTextField.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 { TextField } from '@mui/material';\nimport { ChangeEvent, ReactElement
|
|
1
|
+
{"version":3,"sources":["../../../src/components/LazyTextField.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 { TextField } from '@mui/material';\nimport type { ChangeEvent, ReactElement } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface LazyTextFieldProps {\n label: string;\n value?: string;\n onCommit: (nextValue: string) => void;\n placeholder?: string;\n helperText?: string;\n multiline?: boolean;\n minRows?: number;\n}\n\nexport function LazyTextField(props: LazyTextFieldProps): ReactElement {\n const { value, onCommit, ...textFieldProps } = props;\n const [draftValue, setDraftValue] = useState(value ?? '');\n\n useEffect(() => {\n setDraftValue(value ?? '');\n }, [value]);\n\n const handleChange = useCallback((event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>): void => {\n setDraftValue(event.target.value);\n }, []);\n\n const handleBlur = useCallback((): void => {\n onCommit(draftValue);\n }, [draftValue, onCommit]);\n\n return <TextField {...textFieldProps} size=\"small\" value={draftValue} onChange={handleChange} onBlur={handleBlur} />;\n}\n"],"names":["TextField","useCallback","useEffect","useState","LazyTextField","props","value","onCommit","textFieldProps","draftValue","setDraftValue","handleChange","event","target","handleBlur","size","onChange","onBlur"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,SAAS,QAAQ,gBAAgB;AAE1C,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAYzD,OAAO,SAASC,cAAcC,KAAyB;IACrD,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGC,gBAAgB,GAAGH;IAC/C,MAAM,CAACI,YAAYC,cAAc,GAAGP,SAASG,SAAS;IAEtDJ,UAAU;QACRQ,cAAcJ,SAAS;IACzB,GAAG;QAACA;KAAM;IAEV,MAAMK,eAAeV,YAAY,CAACW;QAChCF,cAAcE,MAAMC,MAAM,CAACP,KAAK;IAClC,GAAG,EAAE;IAEL,MAAMQ,aAAab,YAAY;QAC7BM,SAASE;IACX,GAAG;QAACA;QAAYF;KAAS;IAEzB,qBAAO,KAACP;QAAW,GAAGQ,cAAc;QAAEO,MAAK;QAAQT,OAAOG;QAAYO,UAAUL;QAAcM,QAAQH;;AACxG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatcherEditor.d.ts","sourceRoot":"","sources":["../../../src/components/MatcherEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MatcherEditor.d.ts","sourceRoot":"","sources":["../../../src/components/MatcherEditor.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAwBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,kBAAkB,GAAG,YAAY,CAwC/F"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
1
|
// Copyright The Perses Authors
|
|
3
2
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
3
|
// you may not use this file except in compliance with the License.
|
|
@@ -11,9 +10,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
10
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
11
|
// See the License for the specific language governing permissions and
|
|
13
12
|
// limitations under the License.
|
|
14
|
-
import {
|
|
15
|
-
import { IconButton, MenuItem, Stack, TextField, Select, FormControl, InputLabel } from
|
|
16
|
-
import DeleteIcon from
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { IconButton, MenuItem, Stack, TextField, Select, FormControl, InputLabel } from "@mui/material";
|
|
15
|
+
import DeleteIcon from "mdi-material-ui/Delete";
|
|
16
|
+
import { useId } from "react";
|
|
17
17
|
function getMatchType(matcher) {
|
|
18
18
|
if (matcher.isRegex) {
|
|
19
19
|
return matcher.isEqual ? '=~' : '!~';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/MatcherEditor.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 {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/MatcherEditor.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 type { SelectChangeEvent } from '@mui/material';\nimport { IconButton, MenuItem, Stack, TextField, Select, FormControl, InputLabel } from '@mui/material';\nimport DeleteIcon from 'mdi-material-ui/Delete';\nimport type { ReactElement } from 'react';\nimport { useId } from 'react';\n\nexport interface MatcherValue {\n name: string;\n value: string;\n isEqual: boolean;\n isRegex: boolean;\n}\n\nexport interface MatcherEditorProps {\n matcher: MatcherValue;\n onChange: (matcher: MatcherValue) => void;\n onRemove: () => void;\n}\n\ntype MatchType = '=' | '!=' | '=~' | '!~';\n\nfunction getMatchType(matcher: MatcherValue): MatchType {\n if (matcher.isRegex) {\n return matcher.isEqual ? '=~' : '!~';\n }\n return matcher.isEqual ? '=' : '!=';\n}\n\nfunction parseMatchType(matchType: MatchType): { isEqual: boolean; isRegex: boolean } {\n switch (matchType) {\n case '=':\n return { isEqual: true, isRegex: false };\n case '!=':\n return { isEqual: false, isRegex: false };\n case '=~':\n return { isEqual: true, isRegex: true };\n case '!~':\n return { isEqual: false, isRegex: true };\n }\n}\n\n/**\n * A form for editing a single matcher with fields for name, value, and match type.\n */\nexport function MatcherEditor({ matcher, onChange, onRemove }: MatcherEditorProps): ReactElement {\n const matchTypeLabelId = useId();\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n onChange({ ...matcher, name: e.target.value });\n };\n\n const handleValueChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n onChange({ ...matcher, value: e.target.value });\n };\n\n const handleMatchTypeChange = (e: SelectChangeEvent): void => {\n const { isEqual, isRegex } = parseMatchType(e.target.value as MatchType);\n onChange({ ...matcher, isEqual, isRegex });\n };\n\n return (\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <TextField\n label=\"Label name\"\n value={matcher.name}\n onChange={handleNameChange}\n size=\"small\"\n sx={{ minWidth: 150 }}\n />\n <FormControl size=\"small\" sx={{ minWidth: 80 }}>\n <InputLabel id={matchTypeLabelId}>Match</InputLabel>\n <Select labelId={matchTypeLabelId} value={getMatchType(matcher)} onChange={handleMatchTypeChange} label=\"Match\">\n <MenuItem value=\"=\">=</MenuItem>\n <MenuItem value=\"!=\">!=</MenuItem>\n <MenuItem value=\"=~\">=~</MenuItem>\n <MenuItem value=\"!~\">!~</MenuItem>\n </Select>\n </FormControl>\n <TextField label=\"Value\" value={matcher.value} onChange={handleValueChange} size=\"small\" sx={{ minWidth: 200 }} />\n <IconButton onClick={onRemove} size=\"small\" aria-label=\"Remove matcher\">\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n );\n}\n"],"names":["IconButton","MenuItem","Stack","TextField","Select","FormControl","InputLabel","DeleteIcon","useId","getMatchType","matcher","isRegex","isEqual","parseMatchType","matchType","MatcherEditor","onChange","onRemove","matchTypeLabelId","handleNameChange","e","name","target","value","handleValueChange","handleMatchTypeChange","direction","spacing","alignItems","label","size","sx","minWidth","id","labelId","onClick","aria-label","fontSize"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAGjC,SAASA,UAAU,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,SAAS,EAAEC,MAAM,EAAEC,WAAW,EAAEC,UAAU,QAAQ,gBAAgB;AACxG,OAAOC,gBAAgB,yBAAyB;AAEhD,SAASC,KAAK,QAAQ,QAAQ;AAiB9B,SAASC,aAAaC,OAAqB;IACzC,IAAIA,QAAQC,OAAO,EAAE;QACnB,OAAOD,QAAQE,OAAO,GAAG,OAAO;IAClC;IACA,OAAOF,QAAQE,OAAO,GAAG,MAAM;AACjC;AAEA,SAASC,eAAeC,SAAoB;IAC1C,OAAQA;QACN,KAAK;YACH,OAAO;gBAAEF,SAAS;gBAAMD,SAAS;YAAM;QACzC,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAOD,SAAS;YAAM;QAC1C,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAMD,SAAS;YAAK;QACxC,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAOD,SAAS;YAAK;IAC3C;AACF;AAEA;;CAEC,GACD,OAAO,SAASI,cAAc,EAAEL,OAAO,EAAEM,QAAQ,EAAEC,QAAQ,EAAsB;IAC/E,MAAMC,mBAAmBV;IAEzB,MAAMW,mBAAmB,CAACC;QACxBJ,SAAS;YAAE,GAAGN,OAAO;YAAEW,MAAMD,EAAEE,MAAM,CAACC,KAAK;QAAC;IAC9C;IAEA,MAAMC,oBAAoB,CAACJ;QACzBJ,SAAS;YAAE,GAAGN,OAAO;YAAEa,OAAOH,EAAEE,MAAM,CAACC,KAAK;QAAC;IAC/C;IAEA,MAAME,wBAAwB,CAACL;QAC7B,MAAM,EAAER,OAAO,EAAED,OAAO,EAAE,GAAGE,eAAeO,EAAEE,MAAM,CAACC,KAAK;QAC1DP,SAAS;YAAE,GAAGN,OAAO;YAAEE;YAASD;QAAQ;IAC1C;IAEA,qBACE,MAACT;QAAMwB,WAAU;QAAMC,SAAS;QAAGC,YAAW;;0BAC5C,KAACzB;gBACC0B,OAAM;gBACNN,OAAOb,QAAQW,IAAI;gBACnBL,UAAUG;gBACVW,MAAK;gBACLC,IAAI;oBAAEC,UAAU;gBAAI;;0BAEtB,MAAC3B;gBAAYyB,MAAK;gBAAQC,IAAI;oBAAEC,UAAU;gBAAG;;kCAC3C,KAAC1B;wBAAW2B,IAAIf;kCAAkB;;kCAClC,MAACd;wBAAO8B,SAAShB;wBAAkBK,OAAOd,aAAaC;wBAAUM,UAAUS;wBAAuBI,OAAM;;0CACtG,KAAC5B;gCAASsB,OAAM;0CAAI;;0CACpB,KAACtB;gCAASsB,OAAM;0CAAK;;0CACrB,KAACtB;gCAASsB,OAAM;0CAAK;;0CACrB,KAACtB;gCAASsB,OAAM;0CAAK;;;;;;0BAGzB,KAACpB;gBAAU0B,OAAM;gBAAQN,OAAOb,QAAQa,KAAK;gBAAEP,UAAUQ;gBAAmBM,MAAK;gBAAQC,IAAI;oBAAEC,UAAU;gBAAI;;0BAC7G,KAAChC;gBAAWmC,SAASlB;gBAAUa,MAAK;gBAAQM,cAAW;0BACrD,cAAA,KAAC7B;oBAAW8B,UAAS;;;;;AAI7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatchersList.d.ts","sourceRoot":"","sources":["../../../src/components/MatchersList.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MatchersList.d.ts","sourceRoot":"","sources":["../../../src/components/MatchersList.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAYD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,GAAG,YAAY,CAQ1E"}
|
|
@@ -11,7 +11,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import { Chip, Stack } from
|
|
14
|
+
import { Chip, Stack } from "@mui/material";
|
|
15
15
|
function formatMatcher(matcher) {
|
|
16
16
|
let operator;
|
|
17
17
|
if (matcher.isRegex) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/MatchersList.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 { Chip, Stack } from '@mui/material';\nimport { SilenceMatcher } from '@perses-dev/spec';\nimport { ReactElement } from 'react';\n\nexport interface MatchersListProps {\n matchers: SilenceMatcher[];\n}\n\nfunction formatMatcher(matcher: SilenceMatcher): string {\n let operator: string;\n if (matcher.isRegex) {\n operator = (matcher.isEqual ?? true) ? '=~' : '!~';\n } else {\n operator = (matcher.isEqual ?? true) ? '=' : '!=';\n }\n return `${matcher.name}${operator}\"${matcher.value}\"`;\n}\n\n/**\n * Renders a list of matchers as MUI Chips.\n */\nexport function MatchersList({ matchers }: MatchersListProps): ReactElement {\n return (\n <Stack direction=\"row\" spacing={0.5} flexWrap=\"wrap\" useFlexGap>\n {matchers.map((matcher, index) => (\n <Chip key={index} label={formatMatcher(matcher)} size=\"small\" variant=\"outlined\" />\n ))}\n </Stack>\n );\n}\n"],"names":["Chip","Stack","formatMatcher","matcher","operator","isRegex","isEqual","name","value","MatchersList","matchers","direction","spacing","flexWrap","useFlexGap","map","index","label","size","variant"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,IAAI,EAAEC,KAAK,QAAQ,gBAAgB;AAQ5C,SAASC,cAAcC,OAAuB;IAC5C,IAAIC;IACJ,IAAID,QAAQE,OAAO,EAAE;QACnBD,WAAW,AAACD,QAAQG,OAAO,IAAI,OAAQ,OAAO;IAChD,OAAO;QACLF,WAAW,AAACD,QAAQG,OAAO,IAAI,OAAQ,MAAM;IAC/C;IACA,OAAO,GAAGH,QAAQI,IAAI,GAAGH,SAAS,CAAC,EAAED,QAAQK,KAAK,CAAC,CAAC,CAAC;AACvD;AAEA;;CAEC,GACD,OAAO,SAASC,aAAa,EAAEC,QAAQ,EAAqB;IAC1D,qBACE,KAACT;QAAMU,WAAU;QAAMC,SAAS;QAAKC,UAAS;QAAOC,UAAU;kBAC5DJ,SAASK,GAAG,CAAC,CAACZ,SAASa,sBACtB,KAAChB;gBAAiBiB,OAAOf,cAAcC;gBAAUe,MAAK;gBAAQC,SAAQ;eAA3DH;;AAInB"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/MatchersList.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 { Chip, Stack } from '@mui/material';\nimport type { SilenceMatcher } from '@perses-dev/spec';\nimport type { ReactElement } from 'react';\n\nexport interface MatchersListProps {\n matchers: SilenceMatcher[];\n}\n\nfunction formatMatcher(matcher: SilenceMatcher): string {\n let operator: string;\n if (matcher.isRegex) {\n operator = (matcher.isEqual ?? true) ? '=~' : '!~';\n } else {\n operator = (matcher.isEqual ?? true) ? '=' : '!=';\n }\n return `${matcher.name}${operator}\"${matcher.value}\"`;\n}\n\n/**\n * Renders a list of matchers as MUI Chips.\n */\nexport function MatchersList({ matchers }: MatchersListProps): ReactElement {\n return (\n <Stack direction=\"row\" spacing={0.5} flexWrap=\"wrap\" useFlexGap>\n {matchers.map((matcher, index) => (\n <Chip key={index} label={formatMatcher(matcher)} size=\"small\" variant=\"outlined\" />\n ))}\n </Stack>\n );\n}\n"],"names":["Chip","Stack","formatMatcher","matcher","operator","isRegex","isEqual","name","value","MatchersList","matchers","direction","spacing","flexWrap","useFlexGap","map","index","label","size","variant"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,IAAI,EAAEC,KAAK,QAAQ,gBAAgB;AAQ5C,SAASC,cAAcC,OAAuB;IAC5C,IAAIC;IACJ,IAAID,QAAQE,OAAO,EAAE;QACnBD,WAAW,AAACD,QAAQG,OAAO,IAAI,OAAQ,OAAO;IAChD,OAAO;QACLF,WAAW,AAACD,QAAQG,OAAO,IAAI,OAAQ,MAAM;IAC/C;IACA,OAAO,GAAGH,QAAQI,IAAI,GAAGH,SAAS,CAAC,EAAED,QAAQK,KAAK,CAAC,CAAC,CAAC;AACvD;AAEA;;CAEC,GACD,OAAO,SAASC,aAAa,EAAEC,QAAQ,EAAqB;IAC1D,qBACE,KAACT;QAAMU,WAAU;QAAMC,SAAS;QAAKC,UAAS;QAAOC,UAAU;kBAC5DJ,SAASK,GAAG,CAAC,CAACZ,SAASa,sBACtB,KAAChB;gBAAiBiB,OAAOf,cAAcC;gBAAUe,MAAK;gBAAQC,SAAQ;eAA3DH;;AAInB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactElement } from 'react';
|
|
2
|
-
import { PostableSilence } from '../model/api-types';
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { PostableSilence } from '../model/api-types';
|
|
3
3
|
export interface SilenceFormProps {
|
|
4
4
|
open: boolean;
|
|
5
5
|
onClose: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilenceForm.d.ts","sourceRoot":"","sources":["../../../src/components/SilenceForm.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"SilenceForm.d.ts","sourceRoot":"","sources":["../../../src/components/SilenceForm.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC3C;AAwBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,gBAAgB,GAAG,YAAY,CA0HvG"}
|
|
@@ -11,10 +11,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField, Typography } from
|
|
15
|
-
import AddIcon from
|
|
16
|
-
import { useState } from
|
|
17
|
-
import { MatcherEditor } from
|
|
14
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField, Typography } from "@mui/material";
|
|
15
|
+
import AddIcon from "mdi-material-ui/Plus";
|
|
16
|
+
import { useState } from "react";
|
|
17
|
+
import { MatcherEditor } from "./MatcherEditor.js";
|
|
18
18
|
const DEFAULT_MATCHER = {
|
|
19
19
|
name: '',
|
|
20
20
|
value: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SilenceForm.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 { Button, Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField, Typography } from '@mui/material';\nimport AddIcon from 'mdi-material-ui/Plus';\nimport { ReactElement, useState } from 'react';\nimport { PostableSilence } from '../model/api-types';\nimport { MatcherEditor, MatcherValue } from './MatcherEditor';\n\nexport interface SilenceFormProps {\n open: boolean;\n onClose: () => void;\n onSubmit: (silence: PostableSilence) => void;\n initialSilence?: Partial<PostableSilence>;\n}\n\nconst DEFAULT_MATCHER: MatcherValue = {\n name: '',\n value: '',\n isEqual: true,\n isRegex: false,\n};\n\nfunction toLocalDatetimeString(date: Date): string {\n const pad = (n: number): string => String(n).padStart(2, '0');\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`;\n}\n\nfunction getDefaultEndTime(): string {\n const end = new Date();\n end.setMinutes(end.getMinutes() + 30);\n return toLocalDatetimeString(end);\n}\n\nfunction getNowLocalISO(): string {\n return toLocalDatetimeString(new Date());\n}\n\n/**\n * Form dialog for creating or editing silences.\n */\nexport function SilenceForm({ open, onClose, onSubmit, initialSilence }: SilenceFormProps): ReactElement {\n const [matchers, setMatchers] = useState<MatcherValue[]>(\n initialSilence?.matchers?.length\n ? initialSilence.matchers.map((m) => ({\n name: m.name,\n value: m.value,\n isEqual: m.isEqual,\n isRegex: m.isRegex,\n }))\n : [{ ...DEFAULT_MATCHER }]\n );\n const [startsAt, setStartsAt] = useState(initialSilence?.startsAt?.slice(0, 16) ?? getNowLocalISO());\n const [endsAt, setEndsAt] = useState(initialSilence?.endsAt?.slice(0, 16) ?? getDefaultEndTime());\n const [createdBy, setCreatedBy] = useState(initialSilence?.createdBy ?? '');\n const [comment, setComment] = useState(initialSilence?.comment ?? '');\n\n const handleAddMatcher = (): void => {\n setMatchers([...matchers, { ...DEFAULT_MATCHER }]);\n };\n\n const handleMatcherChange = (index: number, updated: MatcherValue): void => {\n const next = [...matchers];\n next[index] = updated;\n setMatchers(next);\n };\n\n const handleRemoveMatcher = (index: number): void => {\n setMatchers(matchers.filter((_, i) => i !== index));\n };\n\n const handleSubmit = (): void => {\n const startsAtDate = new Date(startsAt);\n const endsAtDate = new Date(endsAt);\n if (isNaN(startsAtDate.getTime()) || isNaN(endsAtDate.getTime())) return;\n\n const silence: PostableSilence = {\n id: initialSilence?.id,\n matchers: matchers.map((m) => ({\n name: m.name,\n value: m.value,\n isEqual: m.isEqual,\n isRegex: m.isRegex,\n })),\n startsAt: startsAtDate.toISOString(),\n endsAt: endsAtDate.toISOString(),\n createdBy,\n comment,\n };\n onSubmit(silence);\n };\n\n const startsAtDate = new Date(startsAt);\n const endsAtDate = new Date(endsAt);\n const isValidDates =\n !isNaN(startsAtDate.getTime()) && !isNaN(endsAtDate.getTime()) && endsAtDate.getTime() > startsAtDate.getTime();\n const isValid =\n matchers.length > 0 && matchers.every((m) => m.name.length > 0) && createdBy.length > 0 && isValidDates;\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>{initialSilence?.id ? 'Edit Silence' : 'Create Silence'}</DialogTitle>\n <DialogContent>\n <Stack spacing={2} sx={{ mt: 1 }}>\n <Typography variant=\"subtitle2\">Matchers</Typography>\n {matchers.map((matcher, index) => (\n <MatcherEditor\n key={index}\n matcher={matcher}\n onChange={(updated) => handleMatcherChange(index, updated)}\n onRemove={() => handleRemoveMatcher(index)}\n />\n ))}\n <Button startIcon={<AddIcon />} onClick={handleAddMatcher} variant=\"outlined\" size=\"small\">\n Add Matcher\n </Button>\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Start\"\n type=\"datetime-local\"\n value={startsAt}\n onChange={(e) => setStartsAt(e.target.value)}\n size=\"small\"\n InputLabelProps={{ shrink: true }}\n sx={{ flex: 1 }}\n />\n <TextField\n label=\"End\"\n type=\"datetime-local\"\n value={endsAt}\n onChange={(e) => setEndsAt(e.target.value)}\n size=\"small\"\n InputLabelProps={{ shrink: true }}\n sx={{ flex: 1 }}\n />\n </Stack>\n\n <TextField\n label=\"Creator\"\n value={createdBy}\n onChange={(e) => setCreatedBy(e.target.value)}\n size=\"small\"\n required\n />\n <TextField\n label=\"Comment\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n size=\"small\"\n multiline\n rows={2}\n />\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>Cancel</Button>\n <Button onClick={handleSubmit} variant=\"contained\" disabled={!isValid}>\n {initialSilence?.id ? 'Update' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":["Button","Dialog","DialogActions","DialogContent","DialogTitle","Stack","TextField","Typography","AddIcon","useState","MatcherEditor","DEFAULT_MATCHER","name","value","isEqual","isRegex","toLocalDatetimeString","date","pad","n","String","padStart","getFullYear","getMonth","getDate","getHours","getMinutes","getDefaultEndTime","end","Date","setMinutes","getNowLocalISO","SilenceForm","open","onClose","onSubmit","initialSilence","matchers","setMatchers","length","map","m","startsAt","setStartsAt","slice","endsAt","setEndsAt","createdBy","setCreatedBy","comment","setComment","handleAddMatcher","handleMatcherChange","index","updated","next","handleRemoveMatcher","filter","_","i","handleSubmit","startsAtDate","endsAtDate","isNaN","getTime","silence","id","toISOString","isValidDates","isValid","every","maxWidth","fullWidth","spacing","sx","mt","variant","matcher","onChange","onRemove","startIcon","onClick","size","direction","label","type","e","target","InputLabelProps","shrink","flex","required","multiline","rows","disabled"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,MAAM,EAAEC,MAAM,EAAEC,aAAa,EAAEC,aAAa,EAAEC,WAAW,EAAEC,KAAK,EAAEC,SAAS,EAAEC,UAAU,QAAQ,gBAAgB;AACxH,OAAOC,aAAa,uBAAuB;AAC3C,SAAuBC,QAAQ,QAAQ,QAAQ;AAE/C,SAASC,aAAa,QAAsB,kBAAkB;AAS9D,MAAMC,kBAAgC;IACpCC,MAAM;IACNC,OAAO;IACPC,SAAS;IACTC,SAAS;AACX;AAEA,SAASC,sBAAsBC,IAAU;IACvC,MAAMC,MAAM,CAACC,IAAsBC,OAAOD,GAAGE,QAAQ,CAAC,GAAG;IACzD,OAAO,GAAGJ,KAAKK,WAAW,GAAG,CAAC,EAAEJ,IAAID,KAAKM,QAAQ,KAAK,GAAG,CAAC,EAAEL,IAAID,KAAKO,OAAO,IAAI,CAAC,EAAEN,IAAID,KAAKQ,QAAQ,IAAI,CAAC,EAAEP,IAAID,KAAKS,UAAU,KAAK;AACrI;AAEA,SAASC;IACP,MAAMC,MAAM,IAAIC;IAChBD,IAAIE,UAAU,CAACF,IAAIF,UAAU,KAAK;IAClC,OAAOV,sBAAsBY;AAC/B;AAEA,SAASG;IACP,OAAOf,sBAAsB,IAAIa;AACnC;AAEA;;CAEC,GACD,OAAO,SAASG,YAAY,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,EAAoB;IACvF,MAAM,CAACC,UAAUC,YAAY,GAAG7B,SAC9B2B,gBAAgBC,UAAUE,SACtBH,eAAeC,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAO,CAAA;YAClC7B,MAAM6B,EAAE7B,IAAI;YACZC,OAAO4B,EAAE5B,KAAK;YACdC,SAAS2B,EAAE3B,OAAO;YAClBC,SAAS0B,EAAE1B,OAAO;QACpB,CAAA,KACA;QAAC;YAAE,GAAGJ,eAAe;QAAC;KAAE;IAE9B,MAAM,CAAC+B,UAAUC,YAAY,GAAGlC,SAAS2B,gBAAgBM,UAAUE,MAAM,GAAG,OAAOb;IACnF,MAAM,CAACc,QAAQC,UAAU,GAAGrC,SAAS2B,gBAAgBS,QAAQD,MAAM,GAAG,OAAOjB;IAC7E,MAAM,CAACoB,WAAWC,aAAa,GAAGvC,SAAS2B,gBAAgBW,aAAa;IACxE,MAAM,CAACE,SAASC,WAAW,GAAGzC,SAAS2B,gBAAgBa,WAAW;IAElE,MAAME,mBAAmB;QACvBb,YAAY;eAAID;YAAU;gBAAE,GAAG1B,eAAe;YAAC;SAAE;IACnD;IAEA,MAAMyC,sBAAsB,CAACC,OAAeC;QAC1C,MAAMC,OAAO;eAAIlB;SAAS;QAC1BkB,IAAI,CAACF,MAAM,GAAGC;QACdhB,YAAYiB;IACd;IAEA,MAAMC,sBAAsB,CAACH;QAC3Bf,YAAYD,SAASoB,MAAM,CAAC,CAACC,GAAGC,IAAMA,MAAMN;IAC9C;IAEA,MAAMO,eAAe;QACnB,MAAMC,eAAe,IAAIhC,KAAKa;QAC9B,MAAMoB,aAAa,IAAIjC,KAAKgB;QAC5B,IAAIkB,MAAMF,aAAaG,OAAO,OAAOD,MAAMD,WAAWE,OAAO,KAAK;QAElE,MAAMC,UAA2B;YAC/BC,IAAI9B,gBAAgB8B;YACpB7B,UAAUA,SAASG,GAAG,CAAC,CAACC,IAAO,CAAA;oBAC7B7B,MAAM6B,EAAE7B,IAAI;oBACZC,OAAO4B,EAAE5B,KAAK;oBACdC,SAAS2B,EAAE3B,OAAO;oBAClBC,SAAS0B,EAAE1B,OAAO;gBACpB,CAAA;YACA2B,UAAUmB,aAAaM,WAAW;YAClCtB,QAAQiB,WAAWK,WAAW;YAC9BpB;YACAE;QACF;QACAd,SAAS8B;IACX;IAEA,MAAMJ,eAAe,IAAIhC,KAAKa;IAC9B,MAAMoB,aAAa,IAAIjC,KAAKgB;IAC5B,MAAMuB,eACJ,CAACL,MAAMF,aAAaG,OAAO,OAAO,CAACD,MAAMD,WAAWE,OAAO,OAAOF,WAAWE,OAAO,KAAKH,aAAaG,OAAO;IAC/G,MAAMK,UACJhC,SAASE,MAAM,GAAG,KAAKF,SAASiC,KAAK,CAAC,CAAC7B,IAAMA,EAAE7B,IAAI,CAAC2B,MAAM,GAAG,MAAMQ,UAAUR,MAAM,GAAG,KAAK6B;IAE7F,qBACE,MAACnE;QAAOgC,MAAMA;QAAMC,SAASA;QAASqC,UAAS;QAAKC,SAAS;;0BAC3D,KAACpE;0BAAagC,gBAAgB8B,KAAK,iBAAiB;;0BACpD,KAAC/D;0BACC,cAAA,MAACE;oBAAMoE,SAAS;oBAAGC,IAAI;wBAAEC,IAAI;oBAAE;;sCAC7B,KAACpE;4BAAWqE,SAAQ;sCAAY;;wBAC/BvC,SAASG,GAAG,CAAC,CAACqC,SAASxB,sBACtB,KAAC3C;gCAECmE,SAASA;gCACTC,UAAU,CAACxB,UAAYF,oBAAoBC,OAAOC;gCAClDyB,UAAU,IAAMvB,oBAAoBH;+BAH/BA;sCAMT,KAACrD;4BAAOgF,yBAAW,KAACxE;4BAAYyE,SAAS9B;4BAAkByB,SAAQ;4BAAWM,MAAK;sCAAQ;;sCAI3F,MAAC7E;4BAAM8E,WAAU;4BAAMV,SAAS;;8CAC9B,KAACnE;oCACC8E,OAAM;oCACNC,MAAK;oCACLxE,OAAO6B;oCACPoC,UAAU,CAACQ,IAAM3C,YAAY2C,EAAEC,MAAM,CAAC1E,KAAK;oCAC3CqE,MAAK;oCACLM,iBAAiB;wCAAEC,QAAQ;oCAAK;oCAChCf,IAAI;wCAAEgB,MAAM;oCAAE;;8CAEhB,KAACpF;oCACC8E,OAAM;oCACNC,MAAK;oCACLxE,OAAOgC;oCACPiC,UAAU,CAACQ,IAAMxC,UAAUwC,EAAEC,MAAM,CAAC1E,KAAK;oCACzCqE,MAAK;oCACLM,iBAAiB;wCAAEC,QAAQ;oCAAK;oCAChCf,IAAI;wCAAEgB,MAAM;oCAAE;;;;sCAIlB,KAACpF;4BACC8E,OAAM;4BACNvE,OAAOkC;4BACP+B,UAAU,CAACQ,IAAMtC,aAAasC,EAAEC,MAAM,CAAC1E,KAAK;4BAC5CqE,MAAK;4BACLS,QAAQ;;sCAEV,KAACrF;4BACC8E,OAAM;4BACNvE,OAAOoC;4BACP6B,UAAU,CAACQ,IAAMpC,WAAWoC,EAAEC,MAAM,CAAC1E,KAAK;4BAC1CqE,MAAK;4BACLU,SAAS;4BACTC,MAAM;;;;;0BAIZ,MAAC3F;;kCACC,KAACF;wBAAOiF,SAAS/C;kCAAS;;kCAC1B,KAAClC;wBAAOiF,SAASrB;wBAAcgB,SAAQ;wBAAYkB,UAAU,CAACzB;kCAC3DjC,gBAAgB8B,KAAK,WAAW;;;;;;AAK3C"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SilenceForm.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 { Button, Dialog, DialogActions, DialogContent, DialogTitle, Stack, TextField, Typography } from '@mui/material';\nimport AddIcon from 'mdi-material-ui/Plus';\nimport type { ReactElement } from 'react';\nimport { useState } from 'react';\n\nimport type { PostableSilence } from '../model/api-types';\nimport type { MatcherValue } from './MatcherEditor';\nimport { MatcherEditor } from './MatcherEditor';\n\nexport interface SilenceFormProps {\n open: boolean;\n onClose: () => void;\n onSubmit: (silence: PostableSilence) => void;\n initialSilence?: Partial<PostableSilence>;\n}\n\nconst DEFAULT_MATCHER: MatcherValue = {\n name: '',\n value: '',\n isEqual: true,\n isRegex: false,\n};\n\nfunction toLocalDatetimeString(date: Date): string {\n const pad = (n: number): string => String(n).padStart(2, '0');\n return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`;\n}\n\nfunction getDefaultEndTime(): string {\n const end = new Date();\n end.setMinutes(end.getMinutes() + 30);\n return toLocalDatetimeString(end);\n}\n\nfunction getNowLocalISO(): string {\n return toLocalDatetimeString(new Date());\n}\n\n/**\n * Form dialog for creating or editing silences.\n */\nexport function SilenceForm({ open, onClose, onSubmit, initialSilence }: SilenceFormProps): ReactElement {\n const [matchers, setMatchers] = useState<MatcherValue[]>(\n initialSilence?.matchers?.length\n ? initialSilence.matchers.map((m) => ({\n name: m.name,\n value: m.value,\n isEqual: m.isEqual,\n isRegex: m.isRegex,\n }))\n : [{ ...DEFAULT_MATCHER }],\n );\n const [startsAt, setStartsAt] = useState(initialSilence?.startsAt?.slice(0, 16) ?? getNowLocalISO());\n const [endsAt, setEndsAt] = useState(initialSilence?.endsAt?.slice(0, 16) ?? getDefaultEndTime());\n const [createdBy, setCreatedBy] = useState(initialSilence?.createdBy ?? '');\n const [comment, setComment] = useState(initialSilence?.comment ?? '');\n\n const handleAddMatcher = (): void => {\n setMatchers([...matchers, { ...DEFAULT_MATCHER }]);\n };\n\n const handleMatcherChange = (index: number, updated: MatcherValue): void => {\n const next = [...matchers];\n next[index] = updated;\n setMatchers(next);\n };\n\n const handleRemoveMatcher = (index: number): void => {\n setMatchers(matchers.filter((_, i) => i !== index));\n };\n\n const handleSubmit = (): void => {\n const startsAtDate = new Date(startsAt);\n const endsAtDate = new Date(endsAt);\n if (isNaN(startsAtDate.getTime()) || isNaN(endsAtDate.getTime())) return;\n\n const silence: PostableSilence = {\n id: initialSilence?.id,\n matchers: matchers.map((m) => ({\n name: m.name,\n value: m.value,\n isEqual: m.isEqual,\n isRegex: m.isRegex,\n })),\n startsAt: startsAtDate.toISOString(),\n endsAt: endsAtDate.toISOString(),\n createdBy,\n comment,\n };\n onSubmit(silence);\n };\n\n const startsAtDate = new Date(startsAt);\n const endsAtDate = new Date(endsAt);\n const isValidDates =\n !isNaN(startsAtDate.getTime()) && !isNaN(endsAtDate.getTime()) && endsAtDate.getTime() > startsAtDate.getTime();\n const isValid =\n matchers.length > 0 && matchers.every((m) => m.name.length > 0) && createdBy.length > 0 && isValidDates;\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>{initialSilence?.id ? 'Edit Silence' : 'Create Silence'}</DialogTitle>\n <DialogContent>\n <Stack spacing={2} sx={{ mt: 1 }}>\n <Typography variant=\"subtitle2\">Matchers</Typography>\n {matchers.map((matcher, index) => (\n <MatcherEditor\n key={index}\n matcher={matcher}\n onChange={(updated) => handleMatcherChange(index, updated)}\n onRemove={() => handleRemoveMatcher(index)}\n />\n ))}\n <Button startIcon={<AddIcon />} onClick={handleAddMatcher} variant=\"outlined\" size=\"small\">\n Add Matcher\n </Button>\n\n <Stack direction=\"row\" spacing={2}>\n <TextField\n label=\"Start\"\n type=\"datetime-local\"\n value={startsAt}\n onChange={(e) => setStartsAt(e.target.value)}\n size=\"small\"\n InputLabelProps={{ shrink: true }}\n sx={{ flex: 1 }}\n />\n <TextField\n label=\"End\"\n type=\"datetime-local\"\n value={endsAt}\n onChange={(e) => setEndsAt(e.target.value)}\n size=\"small\"\n InputLabelProps={{ shrink: true }}\n sx={{ flex: 1 }}\n />\n </Stack>\n\n <TextField\n label=\"Creator\"\n value={createdBy}\n onChange={(e) => setCreatedBy(e.target.value)}\n size=\"small\"\n required\n />\n <TextField\n label=\"Comment\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n size=\"small\"\n multiline\n rows={2}\n />\n </Stack>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>Cancel</Button>\n <Button onClick={handleSubmit} variant=\"contained\" disabled={!isValid}>\n {initialSilence?.id ? 'Update' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":["Button","Dialog","DialogActions","DialogContent","DialogTitle","Stack","TextField","Typography","AddIcon","useState","MatcherEditor","DEFAULT_MATCHER","name","value","isEqual","isRegex","toLocalDatetimeString","date","pad","n","String","padStart","getFullYear","getMonth","getDate","getHours","getMinutes","getDefaultEndTime","end","Date","setMinutes","getNowLocalISO","SilenceForm","open","onClose","onSubmit","initialSilence","matchers","setMatchers","length","map","m","startsAt","setStartsAt","slice","endsAt","setEndsAt","createdBy","setCreatedBy","comment","setComment","handleAddMatcher","handleMatcherChange","index","updated","next","handleRemoveMatcher","filter","_","i","handleSubmit","startsAtDate","endsAtDate","isNaN","getTime","silence","id","toISOString","isValidDates","isValid","every","maxWidth","fullWidth","spacing","sx","mt","variant","matcher","onChange","onRemove","startIcon","onClick","size","direction","label","type","e","target","InputLabelProps","shrink","flex","required","multiline","rows","disabled"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/StatusBadge.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/StatusBadge.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAqBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAiB,EAAE,EAAE,gBAAgB,GAAG,YAAY,CAQzF"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
-
import { Chip } from
|
|
14
|
+
import { Chip } from "@mui/material";
|
|
15
15
|
const ALERT_STATUS_MAP = {
|
|
16
16
|
firing: {
|
|
17
17
|
label: 'Firing',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/StatusBadge.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 {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/StatusBadge.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 type { ChipProps } from '@mui/material';\nimport { Chip } from '@mui/material';\nimport type { ReactElement } from 'react';\n\nexport interface StatusBadgeProps {\n status: string;\n variant?: 'alert' | 'silence';\n}\n\ninterface StatusConfig {\n label: string;\n color: ChipProps['color'];\n}\n\nconst ALERT_STATUS_MAP: Record<string, StatusConfig> = {\n firing: { label: 'Firing', color: 'error' },\n suppressed: { label: 'Silenced', color: 'warning' },\n pending: { label: 'Pending', color: 'default' },\n resolved: { label: 'Resolved', color: 'success' },\n inactive: { label: 'Inactive', color: 'default' },\n};\n\nconst SILENCE_STATUS_MAP: Record<string, StatusConfig> = {\n active: { label: 'Active', color: 'success' },\n expired: { label: 'Expired', color: 'default' },\n pending: { label: 'Pending', color: 'warning' },\n};\n\n/**\n * Renders a colored badge/chip based on alert or silence status.\n */\nexport function StatusBadge({ status, variant = 'alert' }: StatusBadgeProps): ReactElement {\n const statusMap = variant === 'silence' ? SILENCE_STATUS_MAP : ALERT_STATUS_MAP;\n const config = statusMap[status];\n\n const label = config?.label ?? status;\n const color = config?.color ?? 'default';\n\n return <Chip label={label} color={color} size=\"small\" />;\n}\n"],"names":["Chip","ALERT_STATUS_MAP","firing","label","color","suppressed","pending","resolved","inactive","SILENCE_STATUS_MAP","active","expired","StatusBadge","status","variant","statusMap","config","size"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAGjC,SAASA,IAAI,QAAQ,gBAAgB;AAarC,MAAMC,mBAAiD;IACrDC,QAAQ;QAAEC,OAAO;QAAUC,OAAO;IAAQ;IAC1CC,YAAY;QAAEF,OAAO;QAAYC,OAAO;IAAU;IAClDE,SAAS;QAAEH,OAAO;QAAWC,OAAO;IAAU;IAC9CG,UAAU;QAAEJ,OAAO;QAAYC,OAAO;IAAU;IAChDI,UAAU;QAAEL,OAAO;QAAYC,OAAO;IAAU;AAClD;AAEA,MAAMK,qBAAmD;IACvDC,QAAQ;QAAEP,OAAO;QAAUC,OAAO;IAAU;IAC5CO,SAAS;QAAER,OAAO;QAAWC,OAAO;IAAU;IAC9CE,SAAS;QAAEH,OAAO;QAAWC,OAAO;IAAU;AAChD;AAEA;;CAEC,GACD,OAAO,SAASQ,YAAY,EAAEC,MAAM,EAAEC,UAAU,OAAO,EAAoB;IACzE,MAAMC,YAAYD,YAAY,YAAYL,qBAAqBR;IAC/D,MAAMe,SAASD,SAAS,CAACF,OAAO;IAEhC,MAAMV,QAAQa,QAAQb,SAASU;IAC/B,MAAMT,QAAQY,QAAQZ,SAAS;IAE/B,qBAAO,KAACJ;QAAKG,OAAOA;QAAOC,OAAOA;QAAOa,MAAK;;AAChD"}
|
package/lib/components/index.js
CHANGED
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
|
-
export { StatusBadge } from
|
|
14
|
-
export { MatchersList } from
|
|
15
|
-
export { MatcherEditor } from
|
|
16
|
-
export { SilenceForm } from
|
|
17
|
-
export { LazyTextField } from
|
|
13
|
+
export { StatusBadge } from "./StatusBadge.js";
|
|
14
|
+
export { MatchersList } from "./MatchersList.js";
|
|
15
|
+
export { MatcherEditor } from "./MatcherEditor.js";
|
|
16
|
+
export { SilenceForm } from "./SilenceForm.js";
|
|
17
|
+
export { LazyTextField } from "./LazyTextField.js";
|
|
18
18
|
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/index.ts"],"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\nexport { StatusBadge } from './StatusBadge';\nexport type { StatusBadgeProps } from './StatusBadge';\n\nexport { MatchersList } from './MatchersList';\nexport type { MatchersListProps } from './MatchersList';\n\nexport { MatcherEditor } from './MatcherEditor';\nexport type { MatcherEditorProps, MatcherValue } from './MatcherEditor';\n\nexport { SilenceForm } from './SilenceForm';\nexport type { SilenceFormProps } from './SilenceForm';\n\nexport { LazyTextField } from './LazyTextField';\nexport type { LazyTextFieldProps } from './LazyTextField';\n"],"names":["StatusBadge","MatchersList","MatcherEditor","SilenceForm","LazyTextField"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,WAAW,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/index.ts"],"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\nexport { StatusBadge } from './StatusBadge';\nexport type { StatusBadgeProps } from './StatusBadge';\n\nexport { MatchersList } from './MatchersList';\nexport type { MatchersListProps } from './MatchersList';\n\nexport { MatcherEditor } from './MatcherEditor';\nexport type { MatcherEditorProps, MatcherValue } from './MatcherEditor';\n\nexport { SilenceForm } from './SilenceForm';\nexport type { SilenceFormProps } from './SilenceForm';\n\nexport { LazyTextField } from './LazyTextField';\nexport type { LazyTextFieldProps } from './LazyTextField';\n"],"names":["StatusBadge","MatchersList","MatcherEditor","SilenceForm","LazyTextField"],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,WAAW,QAAQ,mBAAgB;AAG5C,SAASC,YAAY,QAAQ,oBAAiB;AAG9C,SAASC,aAAa,QAAQ,qBAAkB;AAGhD,SAASC,WAAW,QAAQ,mBAAgB;AAG5C,SAASC,aAAa,QAAQ,qBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertManagerAlertsExplorer.d.ts","sourceRoot":"","sources":["../../../src/explore/AlertManagerAlertsExplorer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AlertManagerAlertsExplorer.d.ts","sourceRoot":"","sources":["../../../src/explore/AlertManagerAlertsExplorer.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS1C,wBAAgB,0BAA0B,IAAI,YAAY,CAiCzD"}
|
|
@@ -11,11 +11,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
14
|
+
import { Box, Stack } from "@mui/material";
|
|
15
|
+
import { Panel } from "@perses-dev/dashboards";
|
|
16
|
+
import { useExplorerManagerContext } from "@perses-dev/explore";
|
|
17
|
+
import { DataQueriesProvider, MultiQueryEditor } from "@perses-dev/plugin-system";
|
|
18
|
+
import { useState } from "react";
|
|
19
19
|
const PANEL_PREVIEW_HEIGHT = 600;
|
|
20
20
|
export function AlertManagerAlertsExplorer() {
|
|
21
21
|
const { data: { queries = [] }, setData } = useExplorerManagerContext();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/explore/AlertManagerAlertsExplorer.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 {
|
|
1
|
+
{"version":3,"sources":["../../../src/explore/AlertManagerAlertsExplorer.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 { Box, Stack } from '@mui/material';\nimport { Panel } from '@perses-dev/dashboards';\nimport { useExplorerManagerContext } from '@perses-dev/explore';\nimport { DataQueriesProvider, MultiQueryEditor } from '@perses-dev/plugin-system';\nimport type { QueryDefinition } from '@perses-dev/spec';\nimport type { ReactElement } from 'react';\nimport { useState } from 'react';\n\ninterface AlertsExplorerQueryParams {\n queries?: QueryDefinition[];\n}\n\nconst PANEL_PREVIEW_HEIGHT = 600;\n\nexport function AlertManagerAlertsExplorer(): ReactElement {\n const {\n data: { queries = [] },\n setData,\n } = useExplorerManagerContext<AlertsExplorerQueryParams>();\n\n const [queryDefinitions, setQueryDefinitions] = useState<QueryDefinition[]>(queries);\n\n return (\n <Stack gap={2} sx={{ width: '100%' }}>\n <MultiQueryEditor\n queryTypes={['AlertsQuery']}\n onChange={(state) => setQueryDefinitions(state)}\n queries={queryDefinitions}\n onQueryRun={() => setData({ queries: queryDefinitions })}\n />\n <DataQueriesProvider definitions={queries}>\n <Box height={PANEL_PREVIEW_HEIGHT}>\n <Panel\n panelOptions={{ hideHeader: true }}\n definition={{\n kind: 'Panel',\n spec: {\n queries,\n display: { name: '' },\n plugin: { kind: 'AlertTable', spec: { defaultGroupBy: ['alertname'] } },\n },\n }}\n />\n </Box>\n </DataQueriesProvider>\n </Stack>\n );\n}\n"],"names":["Box","Stack","Panel","useExplorerManagerContext","DataQueriesProvider","MultiQueryEditor","useState","PANEL_PREVIEW_HEIGHT","AlertManagerAlertsExplorer","data","queries","setData","queryDefinitions","setQueryDefinitions","gap","sx","width","queryTypes","onChange","state","onQueryRun","definitions","height","panelOptions","hideHeader","definition","kind","spec","display","name","plugin","defaultGroupBy"],"mappings":";AAAA,+BAA+B;AAC/B,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,GAAG,EAAEC,KAAK,QAAQ,gBAAgB;AAC3C,SAASC,KAAK,QAAQ,yBAAyB;AAC/C,SAASC,yBAAyB,QAAQ,sBAAsB;AAChE,SAASC,mBAAmB,EAAEC,gBAAgB,QAAQ,4BAA4B;AAGlF,SAASC,QAAQ,QAAQ,QAAQ;AAMjC,MAAMC,uBAAuB;AAE7B,OAAO,SAASC;IACd,MAAM,EACJC,MAAM,EAAEC,UAAU,EAAE,EAAE,EACtBC,OAAO,EACR,GAAGR;IAEJ,MAAM,CAACS,kBAAkBC,oBAAoB,GAAGP,SAA4BI;IAE5E,qBACE,MAACT;QAAMa,KAAK;QAAGC,IAAI;YAAEC,OAAO;QAAO;;0BACjC,KAACX;gBACCY,YAAY;oBAAC;iBAAc;gBAC3BC,UAAU,CAACC,QAAUN,oBAAoBM;gBACzCT,SAASE;gBACTQ,YAAY,IAAMT,QAAQ;wBAAED,SAASE;oBAAiB;;0BAExD,KAACR;gBAAoBiB,aAAaX;0BAChC,cAAA,KAACV;oBAAIsB,QAAQf;8BACX,cAAA,KAACL;wBACCqB,cAAc;4BAAEC,YAAY;wBAAK;wBACjCC,YAAY;4BACVC,MAAM;4BACNC,MAAM;gCACJjB;gCACAkB,SAAS;oCAAEC,MAAM;gCAAG;gCACpBC,QAAQ;oCAAEJ,MAAM;oCAAcC,MAAM;wCAAEI,gBAAgB;4CAAC;yCAAY;oCAAC;gCAAE;4BACxE;wBACF;;;;;;AAMZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertManagerSilencesExplorer.d.ts","sourceRoot":"","sources":["../../../src/explore/AlertManagerSilencesExplorer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AlertManagerSilencesExplorer.d.ts","sourceRoot":"","sources":["../../../src/explore/AlertManagerSilencesExplorer.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AA+D1C,wBAAgB,4BAA4B,IAAI,YAAY,CAoC3D"}
|
|
@@ -11,16 +11,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import
|
|
21
|
-
import {
|
|
22
|
-
import { SilenceForm } from
|
|
23
|
-
import { DEFAULT_ALERTMANAGER } from
|
|
14
|
+
import { Box, Button, Stack } from "@mui/material";
|
|
15
|
+
import { useSnackbar } from "@perses-dev/components";
|
|
16
|
+
import { Panel } from "@perses-dev/dashboards";
|
|
17
|
+
import { useExplorerManagerContext } from "@perses-dev/explore";
|
|
18
|
+
import { DataQueriesProvider, MultiQueryEditor, useDatasourceClient } from "@perses-dev/plugin-system";
|
|
19
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
20
|
+
import BellOffIcon from "mdi-material-ui/BellOff";
|
|
21
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
22
|
+
import { SilenceForm } from "../components/SilenceForm.js";
|
|
23
|
+
import { DEFAULT_ALERTMANAGER } from "../model/index.js";
|
|
24
24
|
const PANEL_PREVIEW_HEIGHT = 600;
|
|
25
25
|
function extractSelectorFromQueries(queries) {
|
|
26
26
|
const spec = queries[0]?.spec?.plugin?.spec;
|