@backstage-community/plugin-tekton 3.38.0 → 3.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/components/Icons/CriticalRiskIcon.esm.js +5 -1
- package/dist/components/Icons/CriticalRiskIcon.esm.js.map +1 -1
- package/dist/components/Icons/EqualsIcon.esm.js +5 -1
- package/dist/components/Icons/EqualsIcon.esm.js.map +1 -1
- package/dist/components/Icons/LinkToSbomIcon.esm.js +5 -16
- package/dist/components/Icons/LinkToSbomIcon.esm.js.map +1 -1
- package/dist/components/Icons/OutputIcon.esm.js +5 -16
- package/dist/components/Icons/OutputIcon.esm.js.map +1 -1
- package/dist/components/Icons/ViewLogsIcon.esm.js +5 -16
- package/dist/components/Icons/ViewLogsIcon.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunList.esm.js +64 -60
- package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js +7 -11
- package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunOutput.esm.js +27 -7
- package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunRow.esm.js +123 -58
- package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +1 -1
- package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js +216 -146
- package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineTableHeader.esm.js +10 -16
- package/dist/components/PipelineRunList/PipelineTableHeader.esm.js.map +1 -1
- package/dist/components/PipelineRunList/ResourceBadge.css.esm.js +1 -1
- package/dist/components/PipelineRunList/pipelineRunTableColumns.esm.js +58 -0
- package/dist/components/PipelineRunList/pipelineRunTableColumns.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js +18 -19
- package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
- package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js +3 -3
- package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js.map +1 -1
- package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +2 -2
- package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -1
- package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js +1 -1
- package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js.map +1 -1
- package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +43 -63
- package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -1
- package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js +33 -20
- package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js.map +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js.map +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js +18 -19
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js.map +1 -1
- package/dist/components/Tekton/TektonCIComponent.esm.js +2 -1
- package/dist/components/Tekton/TektonCIComponent.esm.js.map +1 -1
- package/dist/components/Tekton/TektonStylesProvider.esm.js +8 -0
- package/dist/components/Tekton/TektonStylesProvider.esm.js.map +1 -0
- package/dist/components/common/ClusterSelector.esm.js +8 -11
- package/dist/components/common/ClusterSelector.esm.js.map +1 -1
- package/dist/components/common/ErrorPanel.esm.js +1 -1
- package/dist/components/common/ErrorPanel.esm.js.map +1 -1
- package/dist/components/common/PermissionAlert.esm.js +2 -1
- package/dist/components/common/PermissionAlert.esm.js.map +1 -1
- package/dist/components/common/Status.esm.js +77 -58
- package/dist/components/common/Status.esm.js.map +1 -1
- package/dist/components/common/StatusIconAndText.esm.js +17 -23
- package/dist/components/common/StatusIconAndText.esm.js.map +1 -1
- package/dist/components/common/StatusSelector.esm.js +8 -11
- package/dist/components/common/StatusSelector.esm.js.map +1 -1
- package/dist/components/common/TableExpandCollapse.esm.js +8 -16
- package/dist/components/common/TableExpandCollapse.esm.js.map +1 -1
- package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
- package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js +1 -1
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js +1 -1
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js +100 -3
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js.map +1 -1
- package/dist/components/pipeline-topology/TaskGroupEdge.esm.js.map +1 -1
- package/dist/hooks/useDarkTheme.esm.js +4 -4
- package/dist/hooks/useDarkTheme.esm.js.map +1 -1
- package/dist/styles/tektonEmotionCache.esm.js +9 -0
- package/dist/styles/tektonEmotionCache.esm.js.map +1 -0
- package/package.json +20 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineRunParamsAndResults.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations';\nimport
|
|
1
|
+
{"version":3,"file":"PipelineRunParamsAndResults.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations';\nimport Typography from '@mui/material/Typography';\nimport { PipelineRunParams } from './PipelineRunParams';\nimport { PipelineRunResults } from './PipelineRunResults';\n\ntype PipelineRunParamsAndResultsProps = {\n pipelineRun: PipelineRunKind;\n};\nexport const PipelineRunParamsAndResults = ({\n pipelineRun,\n}: PipelineRunParamsAndResultsProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <div style={{ height: '80vh' }}>\n <div>\n <Typography variant=\"h6\" align=\"left\" gutterBottom>\n {t('pipelineRunParamsAndResults.params')}\n </Typography>\n <PipelineRunParams pipelineRun={pipelineRun} />\n </div>\n <div style={{ marginTop: '20px' }}>\n <Typography variant=\"h6\" align=\"left\" gutterBottom>\n {t('pipelineRunParamsAndResults.results')}\n </Typography>\n <PipelineRunResults pipelineRun={pipelineRun} />\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AA0BO,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AACF,CAAA,KAAwC;AACtC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,4BACG,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAO,EAC3B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,IAAA,EAAK,KAAA,EAAM,QAAO,YAAA,EAAY,IAAA,EAC/C,QAAA,EAAA,CAAA,CAAE,oCAAoC,CAAA,EACzC,CAAA;AAAA,sBACA,GAAA,CAAC,qBAAkB,WAAA,EAA0B;AAAA,KAAA,EAC/C,CAAA;AAAA,yBACC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,QAAO,EAC9B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,IAAA,EAAK,KAAA,EAAM,QAAO,YAAA,EAAY,IAAA,EAC/C,QAAA,EAAA,CAAA,CAAE,qCAAqC,CAAA,EAC1C,CAAA;AAAA,sBACA,GAAA,CAAC,sBAAmB,WAAA,EAA0B;AAAA,KAAA,EAChD;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { ErrorBoundary } from '@backstage/core-components';
|
|
3
|
-
import
|
|
3
|
+
import Box from '@mui/material/Box';
|
|
4
|
+
import Dialog from '@mui/material/Dialog';
|
|
5
|
+
import DialogContent from '@mui/material/DialogContent';
|
|
6
|
+
import DialogTitle from '@mui/material/DialogTitle';
|
|
7
|
+
import IconButton from '@mui/material/IconButton';
|
|
4
8
|
import CloseIcon from '@mui/icons-material/Close';
|
|
5
9
|
import { tektonGroupColor } from '../../types/types.esm.js';
|
|
6
10
|
import ResourceBadge from '../PipelineRunList/ResourceBadge.esm.js';
|
|
@@ -9,27 +13,22 @@ import '../../translations/index.esm.js';
|
|
|
9
13
|
import { PipelineRunParamsAndResults } from './PipelineRunParamsAndResults.esm.js';
|
|
10
14
|
import { tektonTranslationRef } from '../../translations/ref.esm.js';
|
|
11
15
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
color: theme.palette.grey[500]
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
);
|
|
16
|
+
const titleContainerSx = {
|
|
17
|
+
display: "flex",
|
|
18
|
+
alignItems: "center",
|
|
19
|
+
gap: 1
|
|
20
|
+
};
|
|
21
|
+
const closeButtonSx = {
|
|
22
|
+
position: "absolute",
|
|
23
|
+
right: (theme) => theme.spacing(1),
|
|
24
|
+
top: (theme) => theme.spacing(1),
|
|
25
|
+
color: (theme) => theme.palette.grey[500]
|
|
26
|
+
};
|
|
27
27
|
const PipelineRunParamsAndResultsDialog = ({
|
|
28
28
|
open,
|
|
29
29
|
closeDialog,
|
|
30
30
|
pipelineRun
|
|
31
31
|
}) => {
|
|
32
|
-
const classes = useStyles();
|
|
33
32
|
const { t } = useTranslationRef(tektonTranslationRef);
|
|
34
33
|
return /* @__PURE__ */ jsxs(
|
|
35
34
|
Dialog,
|
|
@@ -40,7 +39,7 @@ const PipelineRunParamsAndResultsDialog = ({
|
|
|
40
39
|
open,
|
|
41
40
|
onClose: closeDialog,
|
|
42
41
|
children: [
|
|
43
|
-
/* @__PURE__ */ jsx(DialogTitle, { title: t("pipelineRunParamsAndResults.title"), children: /* @__PURE__ */ jsxs(Box, {
|
|
42
|
+
/* @__PURE__ */ jsx(DialogTitle, { title: t("pipelineRunParamsAndResults.title"), children: /* @__PURE__ */ jsxs(Box, { sx: titleContainerSx, children: [
|
|
44
43
|
/* @__PURE__ */ jsx(
|
|
45
44
|
ResourceBadge,
|
|
46
45
|
{
|
|
@@ -53,7 +52,7 @@ const PipelineRunParamsAndResultsDialog = ({
|
|
|
53
52
|
IconButton,
|
|
54
53
|
{
|
|
55
54
|
"aria-label": "close",
|
|
56
|
-
|
|
55
|
+
sx: closeButtonSx,
|
|
57
56
|
onClick: closeDialog,
|
|
58
57
|
children: /* @__PURE__ */ jsx(CloseIcon, {})
|
|
59
58
|
}
|
package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineRunParamsAndResultsDialog.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { ErrorBoundary } from '@backstage/core-components';\nimport
|
|
1
|
+
{"version":3,"file":"PipelineRunParamsAndResultsDialog.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { ErrorBoundary } from '@backstage/core-components';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations';\nimport { PipelineRunParamsAndResults } from './PipelineRunParamsAndResults';\n\nconst titleContainerSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n};\n\nconst closeButtonSx: SxProps<Theme> = {\n position: 'absolute',\n right: (theme: Theme) => theme.spacing(1),\n top: (theme: Theme) => theme.spacing(1),\n color: (theme: Theme) => theme.palette.grey[500],\n};\n\ntype PipelineRunParamsAndResultsDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n};\nexport const PipelineRunParamsAndResultsDialog = ({\n open,\n closeDialog,\n pipelineRun,\n}: PipelineRunParamsAndResultsDialogProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-params-and-results-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle title={t('pipelineRunParamsAndResults.title')}>\n <Box sx={titleContainerSx}>\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={pipelineRun?.metadata?.name ?? ''}\n />\n <IconButton\n aria-label=\"close\"\n sx={closeButtonSx}\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <ErrorBoundary>\n <PipelineRunParamsAndResults pipelineRun={pipelineRun} />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAiCA,MAAM,gBAAA,GAAmB;AAAA,EACvB,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,GAAA,EAAK;AACP,CAAA;AAEA,MAAM,aAAA,GAAgC;AAAA,EACpC,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,EACxC,GAAA,EAAK,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,EACtC,OAAO,CAAC,KAAA,KAAiB,KAAA,CAAM,OAAA,CAAQ,KAAK,GAAG;AACjD,CAAA;AAOO,MAAM,oCAAoC,CAAC;AAAA,EAChD,IAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAA8C;AAC5C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,uCAAA;AAAA,MACZ,QAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAS,IAAA;AAAA,MACT,IAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,OAAO,CAAA,CAAE,mCAAmC,GACvD,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,IAAI,gBAAA,EACP,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,gBAAA;AAAA,cACP,IAAA,EAAK,KAAA;AAAA,cACL,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,IAAA,IAAQ;AAAA;AAAA,WACvC;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,OAAA;AAAA,cACX,EAAA,EAAI,aAAA;AAAA,cACJ,OAAA,EAAS,WAAA;AAAA,cAET,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA;AACb,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,iBACC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EACC,8BAAC,2BAAA,EAAA,EAA4B,WAAA,EAA0B,GACzD,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
3
|
-
import
|
|
3
|
+
import Typography from '@mui/material/Typography';
|
|
4
4
|
import '../../translations/index.esm.js';
|
|
5
5
|
import { Output } from './Output.esm.js';
|
|
6
6
|
import { tektonTranslationRef } from '../../translations/ref.esm.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineRunResults.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunResults.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\nimport
|
|
1
|
+
{"version":3,"file":"PipelineRunResults.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunResults.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\nimport Typography from '@mui/material/Typography';\nimport { tektonTranslationRef } from '../../translations';\nimport { Output } from './Output';\n\ntype PipelineRunResultsProps = {\n pipelineRun: PipelineRunKind;\n};\n\nexport const PipelineRunResults = ({\n pipelineRun,\n}: PipelineRunResultsProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n const noDataAvailable =\n pipelineRun.status?.results === undefined ||\n pipelineRun.status?.results.length === 0;\n\n if (noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunParamsAndResults.noResults')}\n </Typography>\n );\n }\n\n return <Output results={pipelineRun?.status?.results ?? []} />;\n};\n"],"names":[],"mappings":";;;;;;;AA0BO,MAAM,qBAAqB,CAAC;AAAA,EACjC;AACF,CAAA,KAA+B;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,eAAA,GACJ,YAAY,MAAA,EAAQ,OAAA,KAAY,UAChC,WAAA,CAAY,MAAA,EAAQ,QAAQ,MAAA,KAAW,CAAA;AAEzC,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,uBACE,GAAA,CAAC,cAAW,KAAA,EAAM,QAAA,EAAS,SAAQ,OAAA,EAChC,QAAA,EAAA,CAAA,CAAE,uCAAuC,CAAA,EAC5C,CAAA;AAAA,EAEJ;AAEA,EAAA,2BAAQ,MAAA,EAAA,EAAO,OAAA,EAAS,aAAa,MAAA,EAAQ,OAAA,IAAW,EAAC,EAAG,CAAA;AAC9D;;;;"}
|
|
@@ -7,6 +7,7 @@ import { useTektonViewPermission } from '../../hooks/useTektonViewPermission.esm
|
|
|
7
7
|
import { ModelsPlural } from '../../models.esm.js';
|
|
8
8
|
import PermissionAlert from '../common/PermissionAlert.esm.js';
|
|
9
9
|
import PipelineRunList from '../PipelineRunList/PipelineRunList.esm.js';
|
|
10
|
+
import { TektonStylesProvider } from './TektonStylesProvider.esm.js';
|
|
10
11
|
import '@patternfly/react-core/dist/styles/base-no-reset.css';
|
|
11
12
|
import '@patternfly/patternfly/utilities/Accessibility/accessibility.css';
|
|
12
13
|
import { Progress } from '@backstage/core-components';
|
|
@@ -49,7 +50,7 @@ const TektonCIComponent = () => {
|
|
|
49
50
|
if (!viewPermissionData.allowed) {
|
|
50
51
|
return /* @__PURE__ */ jsx(PermissionAlert, {});
|
|
51
52
|
}
|
|
52
|
-
return /* @__PURE__ */ jsx(TektonResourcesContext.Provider, { value: tektonResourcesContextData, children: /* @__PURE__ */ jsx(PipelineRunList, {}) });
|
|
53
|
+
return /* @__PURE__ */ jsx(TektonStylesProvider, { children: /* @__PURE__ */ jsx(TektonResourcesContext.Provider, { value: tektonResourcesContextData, children: /* @__PURE__ */ jsx(PipelineRunList, {}) }) });
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
export { TektonCIComponent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TektonCIComponent.esm.js","sources":["../../../src/components/Tekton/TektonCIComponent.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { useLayoutEffect } from 'react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { useDarkTheme } from '../../hooks/useDarkTheme';\nimport { useTektonObjectsResponse } from '../../hooks/useTektonObjectsResponse';\nimport { useTektonViewPermission } from '../../hooks/useTektonViewPermission';\nimport { ModelsPlural } from '../../models';\nimport PermissionAlert from '../common/PermissionAlert';\nimport PipelineRunList from '../PipelineRunList/PipelineRunList';\n\nimport '@patternfly/react-core/dist/styles/base-no-reset.css';\nimport '@patternfly/patternfly/utilities/Accessibility/accessibility.css';\nimport { Progress } from '@backstage/core-components';\n\nconst savedStylesheets = new Set<HTMLLinkElement>();\n\nexport const TektonCIComponent = () => {\n useDarkTheme();\n\n useLayoutEffect(() => {\n const scalprumStyles = Array.from(\n document.querySelectorAll('link[rel=\"stylesheet\"]'),\n ).filter(link =>\n link.attributes\n .getNamedItem('href')\n ?.value?.includes('backstage-plugin-tekton'),\n );\n\n scalprumStyles.forEach(link =>\n savedStylesheets.add(link as HTMLLinkElement),\n );\n\n savedStylesheets.forEach(link => {\n if (!document.head.contains(link)) {\n document.head.appendChild(link);\n }\n });\n return () => {\n savedStylesheets.forEach(link => {\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n });\n };\n }, []);\n\n const watchedResources = [\n ModelsPlural.pipelineruns,\n ModelsPlural.taskruns,\n ModelsPlural.pods,\n ];\n const tektonResourcesContextData = useTektonObjectsResponse(watchedResources);\n const viewPermissionData = useTektonViewPermission();\n\n if (viewPermissionData.loading) {\n return (\n <div data-testid=\"tekton-permission-progress\">\n <Progress />\n </div>\n );\n }\n if (!viewPermissionData.allowed) {\n return <PermissionAlert />;\n }\n return (\n <TektonResourcesContext.Provider value={tektonResourcesContextData}>\n
|
|
1
|
+
{"version":3,"file":"TektonCIComponent.esm.js","sources":["../../../src/components/Tekton/TektonCIComponent.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { useLayoutEffect } from 'react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { useDarkTheme } from '../../hooks/useDarkTheme';\nimport { useTektonObjectsResponse } from '../../hooks/useTektonObjectsResponse';\nimport { useTektonViewPermission } from '../../hooks/useTektonViewPermission';\nimport { ModelsPlural } from '../../models';\nimport PermissionAlert from '../common/PermissionAlert';\nimport PipelineRunList from '../PipelineRunList/PipelineRunList';\nimport { TektonStylesProvider } from './TektonStylesProvider';\n\nimport '@patternfly/react-core/dist/styles/base-no-reset.css';\nimport '@patternfly/patternfly/utilities/Accessibility/accessibility.css';\nimport { Progress } from '@backstage/core-components';\n\nconst savedStylesheets = new Set<HTMLLinkElement>();\n\nexport const TektonCIComponent = () => {\n useDarkTheme();\n\n useLayoutEffect(() => {\n const scalprumStyles = Array.from(\n document.querySelectorAll('link[rel=\"stylesheet\"]'),\n ).filter(link =>\n link.attributes\n .getNamedItem('href')\n ?.value?.includes('backstage-plugin-tekton'),\n );\n\n scalprumStyles.forEach(link =>\n savedStylesheets.add(link as HTMLLinkElement),\n );\n\n savedStylesheets.forEach(link => {\n if (!document.head.contains(link)) {\n document.head.appendChild(link);\n }\n });\n return () => {\n savedStylesheets.forEach(link => {\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n });\n };\n }, []);\n\n const watchedResources = [\n ModelsPlural.pipelineruns,\n ModelsPlural.taskruns,\n ModelsPlural.pods,\n ];\n const tektonResourcesContextData = useTektonObjectsResponse(watchedResources);\n const viewPermissionData = useTektonViewPermission();\n\n if (viewPermissionData.loading) {\n return (\n <div data-testid=\"tekton-permission-progress\">\n <Progress />\n </div>\n );\n }\n if (!viewPermissionData.allowed) {\n return <PermissionAlert />;\n }\n return (\n <TektonStylesProvider>\n <TektonResourcesContext.Provider value={tektonResourcesContextData}>\n <PipelineRunList />\n </TektonResourcesContext.Provider>\n </TektonStylesProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA8BA,MAAM,gBAAA,uBAAuB,GAAA,EAAqB;AAE3C,MAAM,oBAAoB,MAAM;AACrC,EAAA,YAAA,EAAa;AAEb,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,iBAAiB,KAAA,CAAM,IAAA;AAAA,MAC3B,QAAA,CAAS,iBAAiB,wBAAwB;AAAA,KACpD,CAAE,MAAA;AAAA,MAAO,CAAA,IAAA,KACP,KAAK,UAAA,CACF,YAAA,CAAa,MAAM,CAAA,EAClB,KAAA,EAAO,SAAS,yBAAyB;AAAA,KAC/C;AAEA,IAAA,cAAA,CAAe,OAAA;AAAA,MAAQ,CAAA,IAAA,KACrB,gBAAA,CAAiB,GAAA,CAAI,IAAuB;AAAA,KAC9C;AAEA,IAAA,gBAAA,CAAiB,QAAQ,CAAA,IAAA,KAAQ;AAC/B,MAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,EAAG;AACjC,QAAA,QAAA,CAAS,IAAA,CAAK,YAAY,IAAI,CAAA;AAAA,MAChC;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,gBAAA,CAAiB,QAAQ,CAAA,IAAA,KAAQ;AAC/B,QAAA,IAAI,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,EAAG;AAChC,UAAA,QAAA,CAAS,IAAA,CAAK,YAAY,IAAI,CAAA;AAAA,QAChC;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,YAAA,CAAa,YAAA;AAAA,IACb,YAAA,CAAa,QAAA;AAAA,IACb,YAAA,CAAa;AAAA,GACf;AACA,EAAA,MAAM,0BAAA,GAA6B,yBAAyB,gBAAgB,CAAA;AAC5E,EAAA,MAAM,qBAAqB,uBAAA,EAAwB;AAEnD,EAAA,IAAI,mBAAmB,OAAA,EAAS;AAC9B,IAAA,2BACG,KAAA,EAAA,EAAI,aAAA,EAAY,4BAAA,EACf,QAAA,kBAAA,GAAA,CAAC,YAAS,CAAA,EACZ,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,CAAC,mBAAmB,OAAA,EAAS;AAC/B,IAAA,2BAAQ,eAAA,EAAA,EAAgB,CAAA;AAAA,EAC1B;AACA,EAAA,uBACE,GAAA,CAAC,oBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,sBAAA,CAAuB,QAAA,EAAvB,EAAgC,KAAA,EAAO,0BAAA,EACtC,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,CAAA,EACnB,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { CacheProvider } from '@emotion/react';
|
|
3
|
+
import { tektonEmotionCache } from '../../styles/tektonEmotionCache.esm.js';
|
|
4
|
+
|
|
5
|
+
const TektonStylesProvider = ({ children }) => /* @__PURE__ */ jsx(CacheProvider, { value: tektonEmotionCache, children });
|
|
6
|
+
|
|
7
|
+
export { TektonStylesProvider };
|
|
8
|
+
//# sourceMappingURL=TektonStylesProvider.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TektonStylesProvider.esm.js","sources":["../../../src/components/Tekton/TektonStylesProvider.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { PropsWithChildren } from 'react';\n\nimport { CacheProvider } from '@emotion/react';\n\nimport { tektonEmotionCache } from '../../styles/tektonEmotionCache';\n\nexport const TektonStylesProvider = ({ children }: PropsWithChildren) => (\n <CacheProvider value={tektonEmotionCache}>{children}</CacheProvider>\n);\n"],"names":[],"mappings":";;;;AAqBO,MAAM,oBAAA,GAAuB,CAAC,EAAE,QAAA,uBACrC,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,kBAAA,EAAqB,QAAA,EAAS;;;;"}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useContext, useState } from 'react';
|
|
3
3
|
import { Select } from '@backstage/core-components';
|
|
4
|
-
import
|
|
4
|
+
import Typography from '@mui/material/Typography';
|
|
5
5
|
import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
|
|
6
6
|
import './ClusterSelector.css.esm.js';
|
|
7
7
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
8
8
|
import '../../translations/index.esm.js';
|
|
9
9
|
import { tektonTranslationRef } from '../../translations/ref.esm.js';
|
|
10
10
|
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
}));
|
|
11
|
+
const labelSx = {
|
|
12
|
+
color: "text.primary",
|
|
13
|
+
fontSize: "1rem",
|
|
14
|
+
paddingRight: "10px",
|
|
15
|
+
fontWeight: "bold"
|
|
16
|
+
};
|
|
19
17
|
const ClusterSelector = () => {
|
|
20
|
-
const classes = useStyles();
|
|
21
18
|
const {
|
|
22
19
|
clusters: k8sClusters,
|
|
23
20
|
selectedCluster,
|
|
@@ -36,7 +33,7 @@ const ClusterSelector = () => {
|
|
|
36
33
|
setClusterSelected(arg);
|
|
37
34
|
};
|
|
38
35
|
return /* @__PURE__ */ jsxs("div", { className: "bs-tkn-cluster-selector", children: [
|
|
39
|
-
/* @__PURE__ */ jsx(Typography, {
|
|
36
|
+
/* @__PURE__ */ jsx(Typography, { sx: labelSx, children: t("clusterSelector.label") }),
|
|
40
37
|
/* @__PURE__ */ jsx(
|
|
41
38
|
Select,
|
|
42
39
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterSelector.esm.js","sources":["../../../src/components/common/ClusterSelector.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { useContext, useState } from 'react';\n\nimport { Select, SelectedItems } from '@backstage/core-components';\n\nimport
|
|
1
|
+
{"version":3,"file":"ClusterSelector.esm.js","sources":["../../../src/components/common/ClusterSelector.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { useContext, useState } from 'react';\n\nimport { Select, SelectedItems } from '@backstage/core-components';\n\nimport Typography from '@mui/material/Typography';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\n\nimport './ClusterSelector.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations';\n\nconst labelSx = {\n color: 'text.primary',\n fontSize: '1rem',\n paddingRight: '10px',\n fontWeight: 'bold',\n};\n\nexport const ClusterSelector = () => {\n const {\n clusters: k8sClusters,\n selectedCluster,\n setSelectedCluster: setClusterContext,\n } = useContext(TektonResourcesContext);\n const { t } = useTranslationRef(tektonTranslationRef);\n const clusterOptions = k8sClusters.map(cluster => ({\n value: cluster,\n label: cluster,\n }));\n\n const curCluster =\n selectedCluster && k8sClusters?.length > 0\n ? k8sClusters[selectedCluster]\n : k8sClusters?.[0];\n\n const [clusterSelected, setClusterSelected] =\n useState<SelectedItems>(curCluster);\n\n const onClusterChange = (arg: SelectedItems) => {\n const index = k8sClusters.findIndex(cluster => cluster === arg);\n setClusterContext(index);\n setClusterSelected(arg);\n };\n return (\n <div className=\"bs-tkn-cluster-selector\">\n <Typography sx={labelSx}>{t('clusterSelector.label')}</Typography>\n <Select\n onChange={onClusterChange}\n label=\"\"\n items={clusterOptions}\n selected={clusterSelected}\n margin=\"dense\"\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AA2BA,MAAM,OAAA,GAAU;AAAA,EACd,KAAA,EAAO,cAAA;AAAA,EACP,QAAA,EAAU,MAAA;AAAA,EACV,YAAA,EAAc,MAAA;AAAA,EACd,UAAA,EAAY;AACd,CAAA;AAEO,MAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM;AAAA,IACJ,QAAA,EAAU,WAAA;AAAA,IACV,eAAA;AAAA,IACA,kBAAA,EAAoB;AAAA,GACtB,GAAI,WAAW,sBAAsB,CAAA;AACrC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,GAAA,CAAI,CAAA,OAAA,MAAY;AAAA,IACjD,KAAA,EAAO,OAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT,CAAE,CAAA;AAEF,EAAA,MAAM,UAAA,GACJ,mBAAmB,WAAA,EAAa,MAAA,GAAS,IACrC,WAAA,CAAY,eAAe,CAAA,GAC3B,WAAA,GAAc,CAAC,CAAA;AAErB,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GACxC,SAAwB,UAAU,CAAA;AAEpC,EAAA,MAAM,eAAA,GAAkB,CAAC,GAAA,KAAuB;AAC9C,IAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,SAAA,CAAU,CAAA,OAAA,KAAW,YAAY,GAAG,CAAA;AAC9D,IAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,IAAA,kBAAA,CAAmB,GAAG,CAAA;AAAA,EACxB,CAAA;AACA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,EAAA,EAAI,OAAA,EAAU,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAAA,EAAE,CAAA;AAAA,oBACrD,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,eAAA;AAAA,QACV,KAAA,EAAM,EAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,QAAA,EAAU,eAAA;AAAA,QACV,MAAA,EAAO;AAAA;AAAA;AACT,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { WarningPanel } from '@backstage/core-components';
|
|
3
3
|
import { useEntity } from '@backstage/plugin-catalog-react';
|
|
4
|
-
import
|
|
4
|
+
import Typography from '@mui/material/Typography';
|
|
5
5
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
6
6
|
import '../../translations/index.esm.js';
|
|
7
7
|
import { tektonTranslationRef } from '../../translations/ref.esm.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorPanel.esm.js","sources":["../../../src/components/common/ErrorPanel.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { WarningPanel } from '@backstage/core-components';\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport
|
|
1
|
+
{"version":3,"file":"ErrorPanel.esm.js","sources":["../../../src/components/common/ErrorPanel.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 { WarningPanel } from '@backstage/core-components';\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport Typography from '@mui/material/Typography';\n\nimport { ClusterError, ClusterErrors } from '../../types/types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype ErrorPanelProps = { allErrors: ClusterErrors };\n\nexport const ErrorPanel = ({ allErrors }: ErrorPanelProps) => {\n const {\n entity: {\n metadata: { name: entityName },\n },\n } = useEntity();\n const { t } = useTranslationRef(tektonTranslationRef);\n return (\n <div className=\"warning-panel\" style={{ marginBottom: '16px' }}>\n <WarningPanel\n title={t('errorPanel.title')}\n message={t('errorPanel.description', {\n entityName,\n })}\n >\n <div>\n Errors:\n {allErrors.map((err: ClusterError, _index) => {\n const errMessage = err.message\n ? `${err.message}`\n : `Error fetching Kubernetes resource: '${err.resourcePath}', error: ${err.errorType}, status code: ${err.statusCode}`;\n return (\n <Typography\n variant=\"body2\"\n key={`${err.resourcePath}-${err.statusCode}`}\n >\n {err.errorType === 'FETCH_ERROR'\n ? `Error communicating with Kubernetes: ${err.errorType}, message: ${err.message}`\n : errMessage}\n </Typography>\n );\n })}\n </div>\n </WarningPanel>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AA0BO,MAAM,UAAA,GAAa,CAAC,EAAE,SAAA,EAAU,KAAuB;AAC5D,EAAA,MAAM;AAAA,IACJ,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU,EAAE,IAAA,EAAM,UAAA;AAAW;AAC/B,MACE,SAAA,EAAU;AACd,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAU,eAAA,EAAgB,OAAO,EAAE,YAAA,EAAc,QAAO,EAC3D,QAAA,kBAAA,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,MAC3B,OAAA,EAAS,EAAE,wBAAA,EAA0B;AAAA,QACnC;AAAA,OACD,CAAA;AAAA,MAED,+BAAC,KAAA,EAAA,EAAI,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAEF,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,EAAmB,MAAA,KAAW;AAC5C,UAAA,MAAM,UAAA,GAAa,GAAA,CAAI,OAAA,GACnB,CAAA,EAAG,IAAI,OAAO,CAAA,CAAA,GACd,CAAA,qCAAA,EAAwC,GAAA,CAAI,YAAY,CAAA,UAAA,EAAa,GAAA,CAAI,SAAS,CAAA,eAAA,EAAkB,IAAI,UAAU,CAAA,CAAA;AACtH,UAAA,uBACE,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cAGP,QAAA,EAAA,GAAA,CAAI,cAAc,aAAA,GACf,CAAA,qCAAA,EAAwC,IAAI,SAAS,CAAA,WAAA,EAAc,GAAA,CAAI,OAAO,CAAA,CAAA,GAC9E;AAAA,aAAA;AAAA,YAJC,CAAA,EAAG,GAAA,CAAI,YAAY,CAAA,CAAA,EAAI,IAAI,UAAU,CAAA;AAAA,WAK5C;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import Alert from '@mui/material/Alert';
|
|
3
|
+
import AlertTitle from '@mui/material/AlertTitle';
|
|
3
4
|
import { kubernetesClustersReadPermission, kubernetesResourcesReadPermission } from '@backstage/plugin-kubernetes-common';
|
|
4
5
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
6
|
import '../../translations/index.esm.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionAlert.esm.js","sources":["../../../src/components/common/PermissionAlert.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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,"file":"PermissionAlert.esm.js","sources":["../../../src/components/common/PermissionAlert.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\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 Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport {\n kubernetesClustersReadPermission,\n kubernetesResourcesReadPermission,\n} from '@backstage/plugin-kubernetes-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst permissions = [\n kubernetesClustersReadPermission,\n kubernetesResourcesReadPermission,\n]\n .map(p => p.name)\n .join(', ');\n\nconst PermissionAlert = () => {\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Alert severity=\"warning\" data-testid=\"no-permission-alert\">\n <AlertTitle>{t('permissionAlert.title')}</AlertTitle>\n {t('permissionAlert.description', { permissions })}\n </Alert>\n );\n};\nexport default PermissionAlert;\n"],"names":[],"mappings":";;;;;;;;AAwBA,MAAM,WAAA,GAAc;AAAA,EAClB,gCAAA;AAAA,EACA;AACF,CAAA,CACG,IAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA,CACf,KAAK,IAAI,CAAA;AAEZ,MAAM,kBAAkB,MAAM;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,SAAA,EAAU,eAAY,qBAAA,EACpC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAY,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAAA,EAAE,CAAA;AAAA,IACvC,CAAA,CAAE,6BAAA,EAA+B,EAAE,WAAA,EAAa;AAAA,GAAA,EACnD,CAAA;AAEJ;;;;"}
|
|
@@ -1,85 +1,111 @@
|
|
|
1
|
-
import { jsx, Fragment
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { StatusError, StatusWarning, StatusRunning, StatusPending, StatusOK } from '@backstage/core-components';
|
|
3
|
-
import
|
|
3
|
+
import Box from '@mui/material/Box';
|
|
4
4
|
import OffIcon from '@mui/icons-material/DoNotDisturbOnOutlined';
|
|
5
5
|
import UnknownIcon from '@mui/icons-material/HelpOutline';
|
|
6
|
-
import
|
|
7
|
-
import
|
|
6
|
+
import KeyboardDoubleArrowRight from '@mui/icons-material/KeyboardDoubleArrowRight';
|
|
7
|
+
import NotInterestedOutlined from '@mui/icons-material/NotInterestedOutlined';
|
|
8
8
|
import PauseIcon from '@mui/icons-material/PauseCircleOutlineOutlined';
|
|
9
|
-
import classNames from 'classnames';
|
|
10
9
|
import { StatusIconAndText } from './StatusIconAndText.esm.js';
|
|
11
10
|
|
|
12
|
-
const useStyles = makeStyles(
|
|
13
|
-
(theme) => createStyles({
|
|
14
|
-
iconStyles: {
|
|
15
|
-
height: "0.8em",
|
|
16
|
-
width: "0.8em",
|
|
17
|
-
top: "0.125em",
|
|
18
|
-
position: "relative",
|
|
19
|
-
flexShrink: 0,
|
|
20
|
-
marginRight: theme.spacing(0.6)
|
|
21
|
-
}
|
|
22
|
-
})
|
|
23
|
-
);
|
|
24
11
|
const DASH = "-";
|
|
25
|
-
const
|
|
26
|
-
|
|
12
|
+
const iconSx = {
|
|
13
|
+
height: "0.8em",
|
|
14
|
+
width: "0.8em",
|
|
15
|
+
top: "0.125em",
|
|
16
|
+
position: "relative",
|
|
17
|
+
flexShrink: 0,
|
|
18
|
+
marginRight: 0.6
|
|
19
|
+
};
|
|
20
|
+
const statusIconSx = {
|
|
21
|
+
ok: {
|
|
27
22
|
"& svg": {
|
|
28
|
-
fill: theme.palette.status.ok
|
|
23
|
+
fill: (theme) => theme.palette.status.ok
|
|
29
24
|
}
|
|
30
25
|
},
|
|
31
26
|
running: {
|
|
32
27
|
"& svg": {
|
|
33
|
-
fill: theme.palette.status.running
|
|
28
|
+
fill: (theme) => theme.palette.status.running
|
|
34
29
|
}
|
|
35
30
|
},
|
|
36
31
|
pending: {
|
|
37
32
|
"& svg": {
|
|
38
|
-
fill: theme.palette.status.pending
|
|
33
|
+
fill: (theme) => theme.palette.status.pending
|
|
39
34
|
}
|
|
40
35
|
},
|
|
41
36
|
warning: {
|
|
42
37
|
"& svg": {
|
|
43
|
-
fill: theme.palette.status.warning
|
|
38
|
+
fill: (theme) => theme.palette.status.warning
|
|
44
39
|
}
|
|
45
40
|
},
|
|
46
41
|
error: {
|
|
47
42
|
"& svg": {
|
|
48
|
-
fill: theme.palette.status.error
|
|
43
|
+
fill: (theme) => theme.palette.status.error
|
|
49
44
|
}
|
|
50
45
|
}
|
|
51
|
-
}
|
|
46
|
+
};
|
|
47
|
+
const statusIconWrapperSx = {
|
|
48
|
+
display: "inline-flex",
|
|
49
|
+
alignItems: "center",
|
|
50
|
+
justifyContent: "center",
|
|
51
|
+
lineHeight: 0
|
|
52
|
+
};
|
|
53
|
+
const getStatusIconSx = (statusKey) => [statusIconWrapperSx, statusIconSx[statusKey] ?? {}];
|
|
52
54
|
const StatusIcon = ({
|
|
53
55
|
statusKey,
|
|
54
56
|
className
|
|
55
57
|
}) => {
|
|
56
|
-
const statusStyles = useStatusStyles();
|
|
57
58
|
switch (statusKey) {
|
|
58
59
|
case "ok":
|
|
59
|
-
return /* @__PURE__ */
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
return /* @__PURE__ */ jsx(
|
|
61
|
+
Box,
|
|
62
|
+
{
|
|
63
|
+
component: "span",
|
|
64
|
+
sx: getStatusIconSx(statusKey),
|
|
65
|
+
className,
|
|
66
|
+
children: /* @__PURE__ */ jsx(StatusOK, {})
|
|
67
|
+
}
|
|
68
|
+
);
|
|
63
69
|
case "pending":
|
|
64
|
-
return /* @__PURE__ */
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
Box,
|
|
72
|
+
{
|
|
73
|
+
component: "span",
|
|
74
|
+
sx: getStatusIconSx(statusKey),
|
|
75
|
+
className,
|
|
76
|
+
children: /* @__PURE__ */ jsx(StatusPending, {})
|
|
77
|
+
}
|
|
78
|
+
);
|
|
68
79
|
case "running":
|
|
69
|
-
return /* @__PURE__ */
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
80
|
+
return /* @__PURE__ */ jsx(
|
|
81
|
+
Box,
|
|
82
|
+
{
|
|
83
|
+
component: "span",
|
|
84
|
+
sx: getStatusIconSx(statusKey),
|
|
85
|
+
className,
|
|
86
|
+
children: /* @__PURE__ */ jsx(StatusRunning, {})
|
|
87
|
+
}
|
|
88
|
+
);
|
|
73
89
|
case "warning":
|
|
74
|
-
return /* @__PURE__ */
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
90
|
+
return /* @__PURE__ */ jsx(
|
|
91
|
+
Box,
|
|
92
|
+
{
|
|
93
|
+
component: "span",
|
|
94
|
+
sx: getStatusIconSx(statusKey),
|
|
95
|
+
className,
|
|
96
|
+
children: /* @__PURE__ */ jsx(StatusWarning, {})
|
|
97
|
+
}
|
|
98
|
+
);
|
|
78
99
|
case "error":
|
|
79
|
-
return /* @__PURE__ */
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
100
|
+
return /* @__PURE__ */ jsx(
|
|
101
|
+
Box,
|
|
102
|
+
{
|
|
103
|
+
component: "span",
|
|
104
|
+
sx: getStatusIconSx(statusKey),
|
|
105
|
+
className,
|
|
106
|
+
children: /* @__PURE__ */ jsx(StatusError, {})
|
|
107
|
+
}
|
|
108
|
+
);
|
|
83
109
|
default:
|
|
84
110
|
return null;
|
|
85
111
|
}
|
|
@@ -93,7 +119,6 @@ const Status = ({
|
|
|
93
119
|
iconStyles,
|
|
94
120
|
iconClassName
|
|
95
121
|
}) => {
|
|
96
|
-
const classes = useStyles();
|
|
97
122
|
const statusProps = {
|
|
98
123
|
title: displayStatusText || status || "",
|
|
99
124
|
iconOnly,
|
|
@@ -141,7 +166,7 @@ const Status = ({
|
|
|
141
166
|
StatusIconAndText,
|
|
142
167
|
{
|
|
143
168
|
...statusProps,
|
|
144
|
-
icon: /* @__PURE__ */ jsx(
|
|
169
|
+
icon: /* @__PURE__ */ jsx(NotInterestedOutlined, { sx: iconSx, style: iconStyles })
|
|
145
170
|
}
|
|
146
171
|
);
|
|
147
172
|
case "Warning":
|
|
@@ -181,13 +206,7 @@ const Status = ({
|
|
|
181
206
|
StatusIconAndText,
|
|
182
207
|
{
|
|
183
208
|
...statusProps,
|
|
184
|
-
icon: /* @__PURE__ */ jsx(
|
|
185
|
-
AngleDoubleRightIcon,
|
|
186
|
-
{
|
|
187
|
-
className: classes.iconStyles,
|
|
188
|
-
style: iconStyles
|
|
189
|
-
}
|
|
190
|
-
)
|
|
209
|
+
icon: /* @__PURE__ */ jsx(KeyboardDoubleArrowRight, { sx: iconSx, style: iconStyles })
|
|
191
210
|
}
|
|
192
211
|
);
|
|
193
212
|
case "Paused":
|
|
@@ -195,7 +214,7 @@ const Status = ({
|
|
|
195
214
|
StatusIconAndText,
|
|
196
215
|
{
|
|
197
216
|
...statusProps,
|
|
198
|
-
icon: /* @__PURE__ */ jsx(PauseIcon, {
|
|
217
|
+
icon: /* @__PURE__ */ jsx(PauseIcon, { sx: iconSx, style: iconStyles })
|
|
199
218
|
}
|
|
200
219
|
);
|
|
201
220
|
case "Stopped":
|
|
@@ -203,7 +222,7 @@ const Status = ({
|
|
|
203
222
|
StatusIconAndText,
|
|
204
223
|
{
|
|
205
224
|
...statusProps,
|
|
206
|
-
icon: /* @__PURE__ */ jsx(OffIcon, {
|
|
225
|
+
icon: /* @__PURE__ */ jsx(OffIcon, { sx: iconSx, style: iconStyles })
|
|
207
226
|
}
|
|
208
227
|
);
|
|
209
228
|
case "Unknown":
|
|
@@ -211,7 +230,7 @@ const Status = ({
|
|
|
211
230
|
StatusIconAndText,
|
|
212
231
|
{
|
|
213
232
|
...statusProps,
|
|
214
|
-
icon: /* @__PURE__ */ jsx(UnknownIcon, {
|
|
233
|
+
icon: /* @__PURE__ */ jsx(UnknownIcon, { sx: iconSx, style: iconStyles })
|
|
215
234
|
}
|
|
216
235
|
);
|
|
217
236
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Status.esm.js","sources":["../../../src/components/common/Status.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { ReactElement, CSSProperties } from 'react';\nimport {\n StatusClassKey,\n StatusError,\n StatusOK,\n StatusPending,\n StatusRunning,\n StatusWarning,\n} from '@backstage/core-components';\n\nimport { createStyles, makeStyles, Theme } from '@material-ui/core';\nimport OffIcon from '@mui/icons-material/DoNotDisturbOnOutlined';\nimport UnknownIcon from '@mui/icons-material/HelpOutline';\nimport AngleDoubleRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nimport BanIcon from '@mui/icons-material/NotInterestedOutlined';\nimport PauseIcon from '@mui/icons-material/PauseCircleOutlineOutlined';\nimport cx from 'classnames';\n\nimport { StatusIconAndText } from './StatusIconAndText';\n\nconst useStyles = makeStyles<Theme>(theme =>\n createStyles({\n iconStyles: {\n height: '0.8em',\n width: '0.8em',\n top: '0.125em',\n position: 'relative',\n flexShrink: 0,\n marginRight: theme.spacing(0.6),\n },\n }),\n);\n\nconst DASH = '-';\n\nconst useStatusStyles = makeStyles(theme => ({\n success: {\n '& svg': {\n fill: theme.palette.status.ok,\n },\n },\n running: {\n '& svg': {\n fill: theme.palette.status.running,\n },\n },\n pending: {\n '& svg': {\n fill: theme.palette.status.pending,\n },\n },\n warning: {\n '& svg': {\n fill: theme.palette.status.warning,\n },\n },\n error: {\n '& svg': {\n fill: theme.palette.status.error,\n },\n },\n}));\n\nconst StatusIcon = ({\n statusKey,\n className,\n}: {\n statusKey: StatusClassKey;\n className?: string;\n}) => {\n const statusStyles = useStatusStyles();\n\n switch (statusKey) {\n case 'ok':\n return (\n <g className={cx(statusStyles.success, className)}>\n <StatusOK />{' '}\n </g>\n );\n case 'pending':\n return (\n <g className={cx(statusStyles.pending, className)}>\n <StatusPending />{' '}\n </g>\n );\n case 'running':\n return (\n <g className={cx(statusStyles.running, className)}>\n <StatusRunning />{' '}\n </g>\n );\n case 'warning':\n return (\n <g className={cx(statusStyles.warning, className)}>\n <StatusWarning />{' '}\n </g>\n );\n case 'error':\n return (\n <g className={cx(statusStyles.error, className)}>\n <StatusError />{' '}\n </g>\n );\n default:\n return null;\n }\n};\n\n/**\n * Component for displaying a status message\n * @param {string} status - type of status to be displayed\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [displayStatusText] - (optional) use a different text to display the status\n\n * @example\n * ```tsx\n * <Status status='Warning' />\n * ```\n */\nexport const Status = ({\n status,\n iconOnly,\n className,\n displayStatusText,\n dataTestId,\n iconStyles,\n iconClassName,\n}: {\n status: string | null;\n displayStatusText?: string;\n iconOnly?: boolean;\n className?: string;\n dataTestId?: string;\n iconStyles?: CSSProperties;\n iconClassName?: string;\n}): ReactElement => {\n const classes = useStyles();\n const statusProps = {\n title: displayStatusText || status || '',\n iconOnly,\n className,\n dataTestId,\n };\n\n switch (status) {\n case 'New':\n case 'Idle':\n case 'Pending':\n case 'PipelineNotStarted':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"pending\" className={iconClassName} />}\n />\n );\n\n case 'In Progress':\n case 'Progress':\n case 'Progressing':\n case 'Installing':\n case 'InstallReady':\n case 'Replacing':\n case 'Running':\n case 'Updating':\n case 'Upgrading':\n case 'PendingInstall':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"running\" className={iconClassName} />}\n />\n );\n\n case 'Cancelled':\n case 'Deleting':\n case 'Expired':\n case 'Not Ready':\n case 'Cancelling':\n case 'Terminating':\n case 'Superseded':\n case 'Uninstalling':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<BanIcon className={classes.iconStyles} style={iconStyles} />}\n />\n );\n\n case 'Warning':\n case 'RequiresApproval':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"warning\" className={iconClassName} />}\n />\n );\n\n case 'ImagePullBackOff':\n case 'Error':\n case 'Failed':\n case 'Failure':\n case 'CrashLoopBackOff':\n case 'ErrImagePull':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"error\" className={iconClassName} />}\n />\n );\n\n case 'Completed':\n case 'Succeeded':\n case 'Synced':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"ok\" className={iconClassName} />}\n />\n );\n\n case 'Skipped':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={\n <AngleDoubleRightIcon\n className={classes.iconStyles}\n style={iconStyles}\n />\n }\n />\n );\n case 'Paused':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<PauseIcon className={classes.iconStyles} style={iconStyles} />}\n />\n );\n case 'Stopped':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<OffIcon className={classes.iconStyles} style={iconStyles} />}\n />\n );\n\n case 'Unknown':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={\n <UnknownIcon className={classes.iconStyles} style={iconStyles} />\n }\n />\n );\n\n default:\n return <>{status || DASH}</>;\n }\n};\n"],"names":["cx"],"mappings":";;;;;;;;;;;AAoCA,MAAM,SAAA,GAAY,UAAA;AAAA,EAAkB,WAClC,YAAA,CAAa;AAAA,IACX,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ,OAAA;AAAA,MACR,KAAA,EAAO,OAAA;AAAA,MACP,GAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAU,UAAA;AAAA,MACV,UAAA,EAAY,CAAA;AAAA,MACZ,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA;AAChC,GACD;AACH,CAAA;AAEA,MAAM,IAAA,GAAO,GAAA;AAEb,MAAM,eAAA,GAAkB,WAAW,CAAA,KAAA,MAAU;AAAA,EAC3C,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AAC7B,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AAC7B,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AAC7B,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AAC7B,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO;AAAA;AAC7B;AAEJ,CAAA,CAAE,CAAA;AAEF,MAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA;AACF,CAAA,KAGM;AACJ,EAAA,MAAM,eAAe,eAAA,EAAgB;AAErC,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,IAAA;AACH,MAAA,4BACG,GAAA,EAAA,EAAE,SAAA,EAAWA,WAAG,YAAA,CAAa,OAAA,EAAS,SAAS,CAAA,EAC9C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,CAAA;AAAA,QAAG;AAAA,OAAA,EACf,CAAA;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,4BACG,GAAA,EAAA,EAAE,SAAA,EAAWA,WAAG,YAAA,CAAa,OAAA,EAAS,SAAS,CAAA,EAC9C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,QAAG;AAAA,OAAA,EACpB,CAAA;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,4BACG,GAAA,EAAA,EAAE,SAAA,EAAWA,WAAG,YAAA,CAAa,OAAA,EAAS,SAAS,CAAA,EAC9C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,QAAG;AAAA,OAAA,EACpB,CAAA;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,4BACG,GAAA,EAAA,EAAE,SAAA,EAAWA,WAAG,YAAA,CAAa,OAAA,EAAS,SAAS,CAAA,EAC9C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,QAAG;AAAA,OAAA,EACpB,CAAA;AAAA,IAEJ,KAAK,OAAA;AACH,MAAA,4BACG,GAAA,EAAA,EAAE,SAAA,EAAWA,WAAG,YAAA,CAAa,KAAA,EAAO,SAAS,CAAA,EAC5C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA,QAAG;AAAA,OAAA,EAClB,CAAA;AAAA,IAEJ;AACE,MAAA,OAAO,IAAA;AAAA;AAEb,CAAA;AAcO,MAAM,SAAS,CAAC;AAAA,EACrB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAQoB;AAClB,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,KAAA,EAAO,qBAAqB,MAAA,IAAU,EAAA;AAAA,IACtC,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,oBAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,WAAW,aAAA,EAAe;AAAA;AAAA,OAClE;AAAA,IAGJ,KAAK,aAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,aAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,cAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,gBAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,WAAW,aAAA,EAAe;AAAA;AAAA,OAClE;AAAA,IAGJ,KAAK,WAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,aAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,OAAA,EAAA,EAAQ,WAAW,OAAA,CAAQ,UAAA,EAAY,OAAO,UAAA,EAAY;AAAA;AAAA,OACnE;AAAA,IAGJ,KAAK,SAAA;AAAA,IACL,KAAK,kBAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,WAAW,aAAA,EAAe;AAAA;AAAA,OAClE;AAAA,IAGJ,KAAK,kBAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,kBAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,OAAA,EAAQ,WAAW,aAAA,EAAe;AAAA;AAAA,OAChE;AAAA,IAGJ,KAAK,WAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,IAAA,EAAK,WAAW,aAAA,EAAe;AAAA;AAAA,OAC7D;AAAA,IAGJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,IAAA,kBACE,GAAA;AAAA,YAAC,oBAAA;AAAA,YAAA;AAAA,cACC,WAAW,OAAA,CAAQ,UAAA;AAAA,cACnB,KAAA,EAAO;AAAA;AAAA;AACT;AAAA,OAEJ;AAAA,IAEJ,KAAK,QAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,SAAA,EAAA,EAAU,WAAW,OAAA,CAAQ,UAAA,EAAY,OAAO,UAAA,EAAY;AAAA;AAAA,OACrE;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,OAAA,EAAA,EAAQ,WAAW,OAAA,CAAQ,UAAA,EAAY,OAAO,UAAA,EAAY;AAAA;AAAA,OACnE;AAAA,IAGJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBACE,GAAA,CAAC,WAAA,EAAA,EAAY,WAAW,OAAA,CAAQ,UAAA,EAAY,OAAO,UAAA,EAAY;AAAA;AAAA,OAEnE;AAAA,IAGJ;AACE,MAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,oBAAU,IAAA,EAAK,CAAA;AAAA;AAE/B;;;;"}
|
|
1
|
+
{"version":3,"file":"Status.esm.js","sources":["../../../src/components/common/Status.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\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 */\n\nimport { ReactElement, CSSProperties } from 'react';\nimport {\n StatusClassKey,\n StatusError,\n StatusOK,\n StatusPending,\n StatusRunning,\n StatusWarning,\n} from '@backstage/core-components';\n\nimport Box from '@mui/material/Box';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport OffIcon from '@mui/icons-material/DoNotDisturbOnOutlined';\nimport UnknownIcon from '@mui/icons-material/HelpOutline';\nimport AngleDoubleRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nimport BanIcon from '@mui/icons-material/NotInterestedOutlined';\nimport PauseIcon from '@mui/icons-material/PauseCircleOutlineOutlined';\n\nimport { StatusIconAndText } from './StatusIconAndText';\n\nconst DASH = '-';\n\nconst iconSx = {\n height: '0.8em',\n width: '0.8em',\n top: '0.125em',\n position: 'relative',\n flexShrink: 0,\n marginRight: 0.6,\n};\n\nconst statusIconSx: Partial<Record<StatusClassKey, SxProps<Theme>>> = {\n ok: {\n '& svg': {\n fill: (theme: Theme) => theme.palette.status.ok,\n },\n },\n running: {\n '& svg': {\n fill: (theme: Theme) => theme.palette.status.running,\n },\n },\n pending: {\n '& svg': {\n fill: (theme: Theme) => theme.palette.status.pending,\n },\n },\n warning: {\n '& svg': {\n fill: (theme: Theme) => theme.palette.status.warning,\n },\n },\n error: {\n '& svg': {\n fill: (theme: Theme) => theme.palette.status.error,\n },\n },\n};\n\nconst statusIconWrapperSx: SxProps<Theme> = {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n lineHeight: 0,\n};\n\nconst getStatusIconSx = (statusKey: StatusClassKey): SxProps<Theme> =>\n [statusIconWrapperSx, statusIconSx[statusKey] ?? {}] as SxProps<Theme>;\n\nconst StatusIcon = ({\n statusKey,\n className,\n}: {\n statusKey: StatusClassKey;\n className?: string;\n}) => {\n switch (statusKey) {\n case 'ok':\n return (\n <Box\n component=\"span\"\n sx={getStatusIconSx(statusKey)}\n className={className}\n >\n <StatusOK />\n </Box>\n );\n case 'pending':\n return (\n <Box\n component=\"span\"\n sx={getStatusIconSx(statusKey)}\n className={className}\n >\n <StatusPending />\n </Box>\n );\n case 'running':\n return (\n <Box\n component=\"span\"\n sx={getStatusIconSx(statusKey)}\n className={className}\n >\n <StatusRunning />\n </Box>\n );\n case 'warning':\n return (\n <Box\n component=\"span\"\n sx={getStatusIconSx(statusKey)}\n className={className}\n >\n <StatusWarning />\n </Box>\n );\n case 'error':\n return (\n <Box\n component=\"span\"\n sx={getStatusIconSx(statusKey)}\n className={className}\n >\n <StatusError />\n </Box>\n );\n default:\n return null;\n }\n};\n\n/**\n * Component for displaying a status message\n * @param {string} status - type of status to be displayed\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [displayStatusText] - (optional) use a different text to display the status\n\n * @example\n * ```tsx\n * <Status status='Warning' />\n * ```\n */\nexport const Status = ({\n status,\n iconOnly,\n className,\n displayStatusText,\n dataTestId,\n iconStyles,\n iconClassName,\n}: {\n status: string | null;\n displayStatusText?: string;\n iconOnly?: boolean;\n className?: string;\n dataTestId?: string;\n iconStyles?: CSSProperties;\n iconClassName?: string;\n}): ReactElement => {\n const statusProps = {\n title: displayStatusText || status || '',\n iconOnly,\n className,\n dataTestId,\n };\n\n switch (status) {\n case 'New':\n case 'Idle':\n case 'Pending':\n case 'PipelineNotStarted':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"pending\" className={iconClassName} />}\n />\n );\n\n case 'In Progress':\n case 'Progress':\n case 'Progressing':\n case 'Installing':\n case 'InstallReady':\n case 'Replacing':\n case 'Running':\n case 'Updating':\n case 'Upgrading':\n case 'PendingInstall':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"running\" className={iconClassName} />}\n />\n );\n\n case 'Cancelled':\n case 'Deleting':\n case 'Expired':\n case 'Not Ready':\n case 'Cancelling':\n case 'Terminating':\n case 'Superseded':\n case 'Uninstalling':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<BanIcon sx={iconSx} style={iconStyles} />}\n />\n );\n\n case 'Warning':\n case 'RequiresApproval':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"warning\" className={iconClassName} />}\n />\n );\n\n case 'ImagePullBackOff':\n case 'Error':\n case 'Failed':\n case 'Failure':\n case 'CrashLoopBackOff':\n case 'ErrImagePull':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"error\" className={iconClassName} />}\n />\n );\n\n case 'Completed':\n case 'Succeeded':\n case 'Synced':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"ok\" className={iconClassName} />}\n />\n );\n\n case 'Skipped':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<AngleDoubleRightIcon sx={iconSx} style={iconStyles} />}\n />\n );\n case 'Paused':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<PauseIcon sx={iconSx} style={iconStyles} />}\n />\n );\n case 'Stopped':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<OffIcon sx={iconSx} style={iconStyles} />}\n />\n );\n\n case 'Unknown':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<UnknownIcon sx={iconSx} style={iconStyles} />}\n />\n );\n\n default:\n return <>{status || DASH}</>;\n }\n};\n"],"names":["BanIcon","AngleDoubleRightIcon"],"mappings":";;;;;;;;;;AAoCA,MAAM,IAAA,GAAO,GAAA;AAEb,MAAM,MAAA,GAAS;AAAA,EACb,MAAA,EAAQ,OAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,GAAA,EAAK,SAAA;AAAA,EACL,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY,CAAA;AAAA,EACZ,WAAA,EAAa;AACf,CAAA;AAEA,MAAM,YAAA,GAAgE;AAAA,EACpE,EAAA,EAAI;AAAA,IACF,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,MAAA,CAAO;AAAA;AAC/C,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,MAAA,CAAO;AAAA;AAC/C,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,MAAA,CAAO;AAAA;AAC/C,GACF;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,MAAA,CAAO;AAAA;AAC/C,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,CAAC,KAAA,KAAiB,KAAA,CAAM,QAAQ,MAAA,CAAO;AAAA;AAC/C;AAEJ,CAAA;AAEA,MAAM,mBAAA,GAAsC;AAAA,EAC1C,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,QAAA;AAAA,EAChB,UAAA,EAAY;AACd,CAAA;AAEA,MAAM,eAAA,GAAkB,CAAC,SAAA,KACvB,CAAC,qBAAqB,YAAA,CAAa,SAAS,CAAA,IAAK,EAAE,CAAA;AAErD,MAAM,aAAa,CAAC;AAAA,EAClB,SAAA;AAAA,EACA;AACF,CAAA,KAGM;AACJ,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,IAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,MAAA;AAAA,UACV,EAAA,EAAI,gBAAgB,SAAS,CAAA;AAAA,UAC7B,SAAA;AAAA,UAEA,8BAAC,QAAA,EAAA,EAAS;AAAA;AAAA,OACZ;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,MAAA;AAAA,UACV,EAAA,EAAI,gBAAgB,SAAS,CAAA;AAAA,UAC7B,SAAA;AAAA,UAEA,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA,OACjB;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,MAAA;AAAA,UACV,EAAA,EAAI,gBAAgB,SAAS,CAAA;AAAA,UAC7B,SAAA;AAAA,UAEA,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA,OACjB;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,MAAA;AAAA,UACV,EAAA,EAAI,gBAAgB,SAAS,CAAA;AAAA,UAC7B,SAAA;AAAA,UAEA,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA,OACjB;AAAA,IAEJ,KAAK,OAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,MAAA;AAAA,UACV,EAAA,EAAI,gBAAgB,SAAS,CAAA;AAAA,UAC7B,SAAA;AAAA,UAEA,8BAAC,WAAA,EAAA,EAAY;AAAA;AAAA,OACf;AAAA,IAEJ;AACE,MAAA,OAAO,IAAA;AAAA;AAEb,CAAA;AAcO,MAAM,SAAS,CAAC;AAAA,EACrB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAQoB;AAClB,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,KAAA,EAAO,qBAAqB,MAAA,IAAU,EAAA;AAAA,IACtC,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,KAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,oBAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,WAAW,aAAA,EAAe;AAAA;AAAA,OAClE;AAAA,IAGJ,KAAK,aAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,aAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,cAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,gBAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,WAAW,aAAA,EAAe;AAAA;AAAA,OAClE;AAAA,IAGJ,KAAK,WAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,aAAA;AAAA,IACL,KAAK,YAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAACA,qBAAA,EAAA,EAAQ,EAAA,EAAI,MAAA,EAAQ,OAAO,UAAA,EAAY;AAAA;AAAA,OAChD;AAAA,IAGJ,KAAK,SAAA;AAAA,IACL,KAAK,kBAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,WAAW,aAAA,EAAe;AAAA;AAAA,OAClE;AAAA,IAGJ,KAAK,kBAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,kBAAA;AAAA,IACL,KAAK,cAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,OAAA,EAAQ,WAAW,aAAA,EAAe;AAAA;AAAA,OAChE;AAAA,IAGJ,KAAK,WAAA;AAAA,IACL,KAAK,WAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,IAAA,EAAK,WAAW,aAAA,EAAe;AAAA;AAAA,OAC7D;AAAA,IAGJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAACC,wBAAA,EAAA,EAAqB,EAAA,EAAI,MAAA,EAAQ,OAAO,UAAA,EAAY;AAAA;AAAA,OAC7D;AAAA,IAEJ,KAAK,QAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,SAAA,EAAA,EAAU,EAAA,EAAI,MAAA,EAAQ,OAAO,UAAA,EAAY;AAAA;AAAA,OAClD;AAAA,IAEJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAI,MAAA,EAAQ,OAAO,UAAA,EAAY;AAAA;AAAA,OAChD;AAAA,IAGJ,KAAK,SAAA;AACH,MAAA,uBACE,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACE,GAAG,WAAA;AAAA,UACJ,sBAAM,GAAA,CAAC,WAAA,EAAA,EAAY,EAAA,EAAI,MAAA,EAAQ,OAAO,UAAA,EAAY;AAAA;AAAA,OACpD;AAAA,IAGJ;AACE,MAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,oBAAU,IAAA,EAAK,CAAA;AAAA;AAE/B;;;;"}
|