@backstage-community/plugin-tekton 3.39.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/components/Icons/CriticalRiskIcon.esm.js +5 -1
  3. package/dist/components/Icons/CriticalRiskIcon.esm.js.map +1 -1
  4. package/dist/components/Icons/EqualsIcon.esm.js +5 -1
  5. package/dist/components/Icons/EqualsIcon.esm.js.map +1 -1
  6. package/dist/components/Icons/LinkToSbomIcon.esm.js +5 -16
  7. package/dist/components/Icons/LinkToSbomIcon.esm.js.map +1 -1
  8. package/dist/components/Icons/OutputIcon.esm.js +5 -16
  9. package/dist/components/Icons/OutputIcon.esm.js.map +1 -1
  10. package/dist/components/Icons/ViewLogsIcon.esm.js +5 -16
  11. package/dist/components/Icons/ViewLogsIcon.esm.js.map +1 -1
  12. package/dist/components/PipelineRunList/PipelineRunList.esm.js +64 -60
  13. package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
  14. package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js +7 -11
  15. package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js.map +1 -1
  16. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js +27 -7
  17. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -1
  18. package/dist/components/PipelineRunList/PipelineRunRow.esm.js +123 -58
  19. package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -1
  20. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +1 -1
  21. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
  22. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js +216 -146
  23. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -1
  24. package/dist/components/PipelineRunList/PipelineTableHeader.esm.js +10 -16
  25. package/dist/components/PipelineRunList/PipelineTableHeader.esm.js.map +1 -1
  26. package/dist/components/PipelineRunList/ResourceBadge.css.esm.js +1 -1
  27. package/dist/components/PipelineRunList/pipelineRunTableColumns.esm.js +58 -0
  28. package/dist/components/PipelineRunList/pipelineRunTableColumns.esm.js.map +1 -0
  29. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js +18 -19
  30. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
  31. package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js +3 -3
  32. package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js.map +1 -1
  33. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +2 -2
  34. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -1
  35. package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js +1 -1
  36. package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js.map +1 -1
  37. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +43 -63
  38. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -1
  39. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js +33 -20
  40. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
  41. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js +1 -1
  42. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js.map +1 -1
  43. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js +1 -1
  44. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js.map +1 -1
  45. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js +18 -19
  46. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map +1 -1
  47. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js +1 -1
  48. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js.map +1 -1
  49. package/dist/components/Tekton/TektonCIComponent.esm.js +2 -1
  50. package/dist/components/Tekton/TektonCIComponent.esm.js.map +1 -1
  51. package/dist/components/Tekton/TektonStylesProvider.esm.js +8 -0
  52. package/dist/components/Tekton/TektonStylesProvider.esm.js.map +1 -0
  53. package/dist/components/common/ClusterSelector.esm.js +8 -11
  54. package/dist/components/common/ClusterSelector.esm.js.map +1 -1
  55. package/dist/components/common/ErrorPanel.esm.js +1 -1
  56. package/dist/components/common/ErrorPanel.esm.js.map +1 -1
  57. package/dist/components/common/PermissionAlert.esm.js +2 -1
  58. package/dist/components/common/PermissionAlert.esm.js.map +1 -1
  59. package/dist/components/common/Status.esm.js +77 -58
  60. package/dist/components/common/Status.esm.js.map +1 -1
  61. package/dist/components/common/StatusIconAndText.esm.js +17 -23
  62. package/dist/components/common/StatusIconAndText.esm.js.map +1 -1
  63. package/dist/components/common/StatusSelector.esm.js +8 -11
  64. package/dist/components/common/StatusSelector.esm.js.map +1 -1
  65. package/dist/components/common/TableExpandCollapse.esm.js +8 -16
  66. package/dist/components/common/TableExpandCollapse.esm.js.map +1 -1
  67. package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
  68. package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js +1 -1
  69. package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js +1 -1
  70. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js +100 -3
  71. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js.map +1 -1
  72. package/dist/components/pipeline-topology/TaskGroupEdge.esm.js.map +1 -1
  73. package/dist/hooks/useDarkTheme.esm.js +4 -4
  74. package/dist/hooks/useDarkTheme.esm.js.map +1 -1
  75. package/dist/styles/tektonEmotionCache.esm.js +9 -0
  76. package/dist/styles/tektonEmotionCache.esm.js.map +1 -0
  77. package/package.json +18 -17
@@ -1,7 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { memo, useState, useEffect } from 'react';
3
3
  import { ErrorBoundary } from '@backstage/core-components';
4
- import { Dialog, DialogTitle, Box, IconButton, DialogContent, makeStyles, createStyles } from '@material-ui/core';
4
+ import Box from '@mui/material/Box';
5
+ import Dialog from '@mui/material/Dialog';
6
+ import DialogContent from '@mui/material/DialogContent';
7
+ import DialogTitle from '@mui/material/DialogTitle';
8
+ import IconButton from '@mui/material/IconButton';
5
9
  import CloseIcon from '@mui/icons-material/Close';
6
10
  import { tektonGroupColor } from '../../types/types.esm.js';
7
11
  import ResourceBadge from '../PipelineRunList/ResourceBadge.esm.js';
@@ -11,21 +15,17 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
15
  import '../../translations/index.esm.js';
12
16
  import { tektonTranslationRef } from '../../translations/ref.esm.js';
13
17
 
14
- const useStyles = makeStyles(
15
- (theme) => createStyles({
16
- titleContainer: {
17
- display: "flex",
18
- alignItems: "center",
19
- gap: theme.spacing(1)
20
- },
21
- closeButton: {
22
- position: "absolute",
23
- right: theme.spacing(1),
24
- top: theme.spacing(1),
25
- color: theme.palette.grey[500]
26
- }
27
- })
28
- );
18
+ const titleContainerSx = {
19
+ display: "flex",
20
+ alignItems: "center",
21
+ gap: 1
22
+ };
23
+ const closeButtonSx = {
24
+ position: "absolute",
25
+ right: (theme) => theme.spacing(1),
26
+ top: (theme) => theme.spacing(1),
27
+ color: (theme) => theme.palette.grey[500]
28
+ };
29
29
  const PipelineRunLogDialog$1 = ({
30
30
  open,
31
31
  closeDialog,
@@ -35,7 +35,6 @@ const PipelineRunLogDialog$1 = ({
35
35
  activeTask,
36
36
  forSBOM
37
37
  }) => {
38
- const classes = useStyles();
39
38
  const [task, setTask] = useState(activeTask);
40
39
  const { t } = useTranslationRef(tektonTranslationRef);
41
40
  useEffect(() => {
@@ -52,7 +51,7 @@ const PipelineRunLogDialog$1 = ({
52
51
  open,
53
52
  onClose: closeDialog,
54
53
  children: [
55
- /* @__PURE__ */ jsx(DialogTitle, { id: "pipelinerun-logs", title: t("pipelineRunLogs.title"), children: /* @__PURE__ */ jsxs(Box, { className: classes.titleContainer, children: [
54
+ /* @__PURE__ */ jsx(DialogTitle, { id: "pipelinerun-logs", title: t("pipelineRunLogs.title"), children: /* @__PURE__ */ jsxs(Box, { sx: titleContainerSx, children: [
56
55
  /* @__PURE__ */ jsx(
57
56
  ResourceBadge,
58
57
  {
@@ -65,7 +64,7 @@ const PipelineRunLogDialog$1 = ({
65
64
  IconButton,
66
65
  {
67
66
  "aria-label": "close",
68
- className: classes.closeButton,
67
+ sx: closeButtonSx,
69
68
  onClick: closeDialog,
70
69
  children: /* @__PURE__ */ jsx(CloseIcon, {})
71
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunLogDialog.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogDialog.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 { useState, useEffect, memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport {\n Box,\n createStyles,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport PipelineRunLogDownloader from './PipelineRunLogDownloader';\nimport PipelineRunLogs from './PipelineRunLogs';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n }),\n);\n\ntype PipelineRunLogDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n forSBOM?: boolean;\n};\nconst PipelineRunLogDialog = ({\n open,\n closeDialog,\n pipelineRun,\n pods,\n taskRuns,\n activeTask,\n forSBOM,\n}: PipelineRunLogDialogProps) => {\n const classes = useStyles();\n\n const [task, setTask] = useState(activeTask);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n // If we trigger this dialog for the SBOM task, update the current active task.\n if (forSBOM && activeTask) {\n setTask(activeTask);\n }\n }, [forSBOM, activeTask]);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-logs-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-logs\" title={t('pipelineRunLogs.title')}>\n <Box className={classes.titleContainer}>\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={pipelineRun?.metadata?.name ?? ''}\n />\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <ErrorBoundary>\n <PipelineRunLogDownloader\n pods={pods}\n activeTask={task}\n pipelineRun={pipelineRun}\n />\n <PipelineRunLogs\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n pods={pods}\n activeTask={task}\n setActiveTask={setTask}\n />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunLogDialog);\n"],"names":["PipelineRunLogDialog"],"mappings":";;;;;;;;;;;;;AA4CA,MAAM,SAAA,GAAY,UAAA;AAAA,EAAW,CAAC,UAC5B,YAAA,CAAa;AAAA,IACX,cAAA,EAAgB;AAAA,MACd,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KACtB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACtB,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACpB,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA;AAC/B,GACD;AACH,CAAA;AAWA,MAAMA,yBAAuB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAiC;AAC/B,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,UAAU,CAAA;AAC3C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAExB,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,yBAAA;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,EAAA,EAAG,kBAAA,EAAmB,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EACjE,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtB,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,WAAW,OAAA,CAAQ,WAAA;AAAA,cACnB,OAAA,EAAS,WAAA;AAAA,cAET,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA;AACb,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,wBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ;AAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,WAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ,aAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,2BAAe,KAAKA,sBAAoB,CAAA;;;;"}
1
+ {"version":3,"file":"PipelineRunLogDialog.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogDialog.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 { useState, useEffect, memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\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 {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport PipelineRunLogDownloader from './PipelineRunLogDownloader';\nimport PipelineRunLogs from './PipelineRunLogs';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\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 PipelineRunLogDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n forSBOM?: boolean;\n};\nconst PipelineRunLogDialog = ({\n open,\n closeDialog,\n pipelineRun,\n pods,\n taskRuns,\n activeTask,\n forSBOM,\n}: PipelineRunLogDialogProps) => {\n const [task, setTask] = useState(activeTask);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n // If we trigger this dialog for the SBOM task, update the current active task.\n if (forSBOM && activeTask) {\n setTask(activeTask);\n }\n }, [forSBOM, activeTask]);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-logs-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-logs\" title={t('pipelineRunLogs.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 <PipelineRunLogDownloader\n pods={pods}\n activeTask={task}\n pipelineRun={pipelineRun}\n />\n <PipelineRunLogs\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n pods={pods}\n activeTask={task}\n setActiveTask={setTask}\n />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunLogDialog);\n"],"names":["PipelineRunLogDialog"],"mappings":";;;;;;;;;;;;;;;;;AAwCA,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;AAWA,MAAMA,yBAAuB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAiC;AAC/B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,UAAU,CAAA;AAC3C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAExB,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,yBAAA;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,EAAA,EAAG,kBAAA,EAAmB,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EACjE,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,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,aAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,wBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ;AAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,WAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ,aAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,2BAAe,KAAKA,sBAAoB,CAAA;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { DismissableBanner, LogViewer } from '@backstage/core-components';
3
- import { Paper } from '@material-ui/core';
4
- import { Skeleton } from '@material-ui/lab';
3
+ import Paper from '@mui/material/Paper';
4
+ import Skeleton from '@mui/material/Skeleton';
5
5
  import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
6
6
  import { usePodLogsOfPipelineRun } from '../../hooks/usePodLogsOfPipelineRun.esm.js';
7
7
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
@@ -47,7 +47,7 @@ ${value[idx].text}`
47
47
  Skeleton,
48
48
  {
49
49
  "data-testid": "logs-skeleton",
50
- variant: "rect",
50
+ variant: "rectangular",
51
51
  width: "100%",
52
52
  height: "100%"
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunLogViewer.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogViewer.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 { DismissableBanner, LogViewer } from '@backstage/core-components';\nimport { V1Container, V1Pod } from '@kubernetes/client-node';\nimport { Paper } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { usePodLogsOfPipelineRun } from '../../hooks/usePodLogsOfPipelineRun';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunLogViewerProps = { pod: V1Pod };\n\nconst PipelineRunLogViewer = ({ pod }: PipelineRunLogViewerProps) => {\n const { value, error, loading } = usePodLogsOfPipelineRun({\n pod,\n });\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const containersList = pod?.spec?.containers || [];\n let text = '';\n\n text = containersList.reduce(\n (acc: string, container: V1Container, idx: number) => {\n if (container?.name && value?.[idx]?.text) {\n return acc\n .concat(\n `${container.name.toLocaleUpperCase('en-US')}\\n${value[idx].text}`,\n )\n .concat(idx === containersList.length - 1 ? '' : '\\n');\n }\n return acc;\n },\n '',\n );\n\n return (\n <>\n {error && (\n <DismissableBanner\n message={error?.message}\n variant=\"error\"\n fixed={false}\n id=\"pod-logs\"\n />\n )}\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n {loading && (\n <Skeleton\n data-testid=\"logs-skeleton\"\n variant=\"rect\"\n width=\"100%\"\n height=\"100%\"\n />\n )}\n {pod && !loading && (\n <LogViewer text={text || t('pipelineRunLogs.noLogs')} />\n )}\n </Paper>\n </>\n );\n};\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: 5,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nconst PipelineRunLogViewerWithQueryClient = ({\n pod,\n}: PipelineRunLogViewerProps) => {\n return (\n <QueryClientProvider client={queryClient}>\n <PipelineRunLogViewer pod={pod} />\n </QueryClientProvider>\n );\n};\n\nexport { PipelineRunLogViewerWithQueryClient as PipelineRunLogViewer };\n"],"names":[],"mappings":";;;;;;;;;;AA0BA,MAAM,oBAAA,GAAuB,CAAC,EAAE,GAAA,EAAI,KAAiC;AACnE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,OAAA,KAAY,uBAAA,CAAwB;AAAA,IACxD;AAAA,GACD,CAAA;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,cAAA,GAAiB,GAAA,EAAK,IAAA,EAAM,UAAA,IAAc,EAAC;AACjD,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,IAAA,GAAO,cAAA,CAAe,MAAA;AAAA,IACpB,CAAC,GAAA,EAAa,SAAA,EAAwB,GAAA,KAAgB;AACpD,MAAA,IAAI,SAAA,EAAW,IAAA,IAAQ,KAAA,GAAQ,GAAG,GAAG,IAAA,EAAM;AACzC,QAAA,OAAO,GAAA,CACJ,MAAA;AAAA,UACC,CAAA,EAAG,SAAA,CAAU,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAC;AAAA,EAAK,KAAA,CAAM,GAAG,CAAA,CAAE,IAAI,CAAA;AAAA,UAEjE,MAAA,CAAO,GAAA,KAAQ,eAAe,MAAA,GAAS,CAAA,GAAI,KAAK,IAAI,CAAA;AAAA,MACzD;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,KAAA,oBACC,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,EAAO,OAAA;AAAA,QAChB,OAAA,EAAQ,OAAA;AAAA,QACR,KAAA,EAAO,KAAA;AAAA,QACP,EAAA,EAAG;AAAA;AAAA,KACL;AAAA,oBAEF,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA;AAAA,QACX,OAAO,EAAE,MAAA,EAAQ,QAAQ,KAAA,EAAO,MAAA,EAAQ,WAAW,OAAA,EAAQ;AAAA,QAE1D,QAAA,EAAA;AAAA,UAAA,OAAA,oBACC,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,eAAA;AAAA,cACZ,OAAA,EAAQ,MAAA;AAAA,cACR,KAAA,EAAM,MAAA;AAAA,cACN,MAAA,EAAO;AAAA;AAAA,WACT;AAAA,UAED,GAAA,IAAO,CAAC,OAAA,oBACP,GAAA,CAAC,aAAU,IAAA,EAAM,IAAA,IAAQ,CAAA,CAAE,wBAAwB,CAAA,EAAG;AAAA;AAAA;AAAA;AAE1D,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY;AAAA,EAClC,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,MACP,KAAA,EAAO,CAAA;AAAA,MACP,oBAAA,EAAsB;AAAA;AACxB;AAEJ,CAAC,CAAA;AAED,MAAM,sCAAsC,CAAC;AAAA,EAC3C;AACF,CAAA,KAAiC;AAC/B,EAAA,2BACG,mBAAA,EAAA,EAAoB,MAAA,EAAQ,aAC3B,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAU,CAAA,EAClC,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineRunLogViewer.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogViewer.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 { DismissableBanner, LogViewer } from '@backstage/core-components';\nimport { V1Container, V1Pod } from '@kubernetes/client-node';\nimport Paper from '@mui/material/Paper';\nimport Skeleton from '@mui/material/Skeleton';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { usePodLogsOfPipelineRun } from '../../hooks/usePodLogsOfPipelineRun';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunLogViewerProps = { pod: V1Pod };\n\nconst PipelineRunLogViewer = ({ pod }: PipelineRunLogViewerProps) => {\n const { value, error, loading } = usePodLogsOfPipelineRun({\n pod,\n });\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const containersList = pod?.spec?.containers || [];\n let text = '';\n\n text = containersList.reduce(\n (acc: string, container: V1Container, idx: number) => {\n if (container?.name && value?.[idx]?.text) {\n return acc\n .concat(\n `${container.name.toLocaleUpperCase('en-US')}\\n${value[idx].text}`,\n )\n .concat(idx === containersList.length - 1 ? '' : '\\n');\n }\n return acc;\n },\n '',\n );\n\n return (\n <>\n {error && (\n <DismissableBanner\n message={error?.message}\n variant=\"error\"\n fixed={false}\n id=\"pod-logs\"\n />\n )}\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n {loading && (\n <Skeleton\n data-testid=\"logs-skeleton\"\n variant=\"rectangular\"\n width=\"100%\"\n height=\"100%\"\n />\n )}\n {pod && !loading && (\n <LogViewer text={text || t('pipelineRunLogs.noLogs')} />\n )}\n </Paper>\n </>\n );\n};\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: 5,\n refetchOnWindowFocus: false,\n },\n },\n});\n\nconst PipelineRunLogViewerWithQueryClient = ({\n pod,\n}: PipelineRunLogViewerProps) => {\n return (\n <QueryClientProvider client={queryClient}>\n <PipelineRunLogViewer pod={pod} />\n </QueryClientProvider>\n );\n};\n\nexport { PipelineRunLogViewerWithQueryClient as PipelineRunLogViewer };\n"],"names":[],"mappings":";;;;;;;;;;AA0BA,MAAM,oBAAA,GAAuB,CAAC,EAAE,GAAA,EAAI,KAAiC;AACnE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,OAAA,KAAY,uBAAA,CAAwB;AAAA,IACxD;AAAA,GACD,CAAA;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,cAAA,GAAiB,GAAA,EAAK,IAAA,EAAM,UAAA,IAAc,EAAC;AACjD,EAAA,IAAI,IAAA,GAAO,EAAA;AAEX,EAAA,IAAA,GAAO,cAAA,CAAe,MAAA;AAAA,IACpB,CAAC,GAAA,EAAa,SAAA,EAAwB,GAAA,KAAgB;AACpD,MAAA,IAAI,SAAA,EAAW,IAAA,IAAQ,KAAA,GAAQ,GAAG,GAAG,IAAA,EAAM;AACzC,QAAA,OAAO,GAAA,CACJ,MAAA;AAAA,UACC,CAAA,EAAG,SAAA,CAAU,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAC;AAAA,EAAK,KAAA,CAAM,GAAG,CAAA,CAAE,IAAI,CAAA;AAAA,UAEjE,MAAA,CAAO,GAAA,KAAQ,eAAe,MAAA,GAAS,CAAA,GAAI,KAAK,IAAI,CAAA;AAAA,MACzD;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,KAAA,oBACC,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,SAAS,KAAA,EAAO,OAAA;AAAA,QAChB,OAAA,EAAQ,OAAA;AAAA,QACR,KAAA,EAAO,KAAA;AAAA,QACP,EAAA,EAAG;AAAA;AAAA,KACL;AAAA,oBAEF,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA;AAAA,QACX,OAAO,EAAE,MAAA,EAAQ,QAAQ,KAAA,EAAO,MAAA,EAAQ,WAAW,OAAA,EAAQ;AAAA,QAE1D,QAAA,EAAA;AAAA,UAAA,OAAA,oBACC,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,eAAA;AAAA,cACZ,OAAA,EAAQ,aAAA;AAAA,cACR,KAAA,EAAM,MAAA;AAAA,cACN,MAAA,EAAO;AAAA;AAAA,WACT;AAAA,UAED,GAAA,IAAO,CAAC,OAAA,oBACP,GAAA,CAAC,aAAU,IAAA,EAAM,IAAA,IAAQ,CAAA,CAAE,wBAAwB,CAAA,EAAG;AAAA;AAAA;AAAA;AAE1D,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY;AAAA,EAClC,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS;AAAA,MACP,KAAA,EAAO,CAAA;AAAA,MACP,oBAAA,EAAsB;AAAA;AACxB;AAEJ,CAAC,CAAA;AAED,MAAM,sCAAsC,CAAC;AAAA,EAC3C;AACF,CAAA,KAAiC;AAC/B,EAAA,2BACG,mBAAA,EAAA,EAAoB,MAAA,EAAQ,aAC3B,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAU,CAAA,EAClC,CAAA;AAEJ;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect, useMemo } from 'react';
3
3
  import { Progress, LogViewer } from '@backstage/core-components';
4
- import { Paper } from '@material-ui/core';
5
- import Grid from '@material-ui/core/Grid';
4
+ import Grid from '@mui/material/Grid';
5
+ import Paper from '@mui/material/Paper';
6
6
  import { getTaskRunsForPipelineRun, pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
7
7
  import { getSortedTaskRuns, getActiveTaskRun } from '../../utils/taskRun-utils.esm.js';
8
8
  import { PipelineRunLogViewer as PipelineRunLogViewerWithQueryClient } from './PipelineRunLogViewer.esm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunLogs.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogs.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 { useState, useEffect, useMemo } from 'react';\n\nimport { LogViewer, Progress } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport { Paper } from '@material-ui/core';\nimport Grid from '@material-ui/core/Grid';\n\nimport {\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { getActiveTaskRun, getSortedTaskRuns } from '../../utils/taskRun-utils';\nimport { PipelineRunLogViewer } from './PipelineRunLogViewer';\nimport { TaskStatusStepper } from './TaskStatusStepper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunLogsProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n setActiveTask: (t: string) => void;\n};\nexport const PipelineRunLogs = ({\n pipelineRun,\n taskRuns,\n pods,\n activeTask,\n setActiveTask,\n}: PipelineRunLogsProps) => {\n const PLRTaskRuns = getTaskRunsForPipelineRun(pipelineRun, taskRuns);\n const sortedTaskRuns = getSortedTaskRuns(PLRTaskRuns);\n const taskRunFromYaml = PLRTaskRuns?.reduce(\n (acc: { [value: string]: TaskRunKind }, value) => {\n if (value?.metadata?.name) {\n acc[value.metadata.name] = value;\n }\n return acc;\n },\n {},\n );\n\n const completed = pipelineRunFilterReducer(pipelineRun);\n const [lastActiveStepId, setLastActiveStepId] = useState<string>('');\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n const mostRecentFailedOrActiveStep = sortedTaskRuns.find(tr =>\n ['Failed', 'Running'].includes(tr.status),\n );\n\n if (completed && !mostRecentFailedOrActiveStep && !activeTask) {\n setLastActiveStepId(sortedTaskRuns[sortedTaskRuns.length - 1]?.id);\n return;\n }\n\n setLastActiveStepId(\n !activeTask ? (mostRecentFailedOrActiveStep?.id as string) : '',\n );\n }, [sortedTaskRuns, completed, activeTask]);\n\n const currentStepId = activeTask || lastActiveStepId;\n const activeItem = getActiveTaskRun(sortedTaskRuns, currentStepId);\n const podName =\n activeItem && taskRunFromYaml?.[currentStepId]?.status?.podName;\n const podData = useMemo(\n () =>\n pods.find(pod => {\n return pod?.metadata?.name === podName;\n }),\n [pods, podName],\n );\n\n return (\n <Grid container>\n <Grid item xs={3}>\n <Paper>\n <TaskStatusStepper\n steps={sortedTaskRuns}\n currentStepId={currentStepId}\n onUserStepChange={setActiveTask}\n />\n </Paper>\n </Grid>\n <Grid item xs={9}>\n {!currentStepId && <Progress />}\n <div style={{ height: '80vh' }}>\n {!podData ? (\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n <LogViewer text={t('pipelineRunLogs.noLogs')} />\n </Paper>\n ) : (\n <PipelineRunLogViewer pod={podData} />\n )}\n </div>\n </Grid>\n </Grid>\n );\n};\n\nexport default PipelineRunLogs;\n"],"names":["PipelineRunLogViewer"],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunLogs.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogs.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 { useState, useEffect, useMemo } from 'react';\n\nimport { LogViewer, Progress } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport Grid from '@mui/material/Grid';\nimport Paper from '@mui/material/Paper';\n\nimport {\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { getActiveTaskRun, getSortedTaskRuns } from '../../utils/taskRun-utils';\nimport { PipelineRunLogViewer } from './PipelineRunLogViewer';\nimport { TaskStatusStepper } from './TaskStatusStepper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunLogsProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n setActiveTask: (t: string) => void;\n};\nexport const PipelineRunLogs = ({\n pipelineRun,\n taskRuns,\n pods,\n activeTask,\n setActiveTask,\n}: PipelineRunLogsProps) => {\n const PLRTaskRuns = getTaskRunsForPipelineRun(pipelineRun, taskRuns);\n const sortedTaskRuns = getSortedTaskRuns(PLRTaskRuns);\n const taskRunFromYaml = PLRTaskRuns?.reduce(\n (acc: { [value: string]: TaskRunKind }, value) => {\n if (value?.metadata?.name) {\n acc[value.metadata.name] = value;\n }\n return acc;\n },\n {},\n );\n\n const completed = pipelineRunFilterReducer(pipelineRun);\n const [lastActiveStepId, setLastActiveStepId] = useState<string>('');\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n const mostRecentFailedOrActiveStep = sortedTaskRuns.find(tr =>\n ['Failed', 'Running'].includes(tr.status),\n );\n\n if (completed && !mostRecentFailedOrActiveStep && !activeTask) {\n setLastActiveStepId(sortedTaskRuns[sortedTaskRuns.length - 1]?.id);\n return;\n }\n\n setLastActiveStepId(\n !activeTask ? (mostRecentFailedOrActiveStep?.id as string) : '',\n );\n }, [sortedTaskRuns, completed, activeTask]);\n\n const currentStepId = activeTask || lastActiveStepId;\n const activeItem = getActiveTaskRun(sortedTaskRuns, currentStepId);\n const podName =\n activeItem && taskRunFromYaml?.[currentStepId]?.status?.podName;\n const podData = useMemo(\n () =>\n pods.find(pod => {\n return pod?.metadata?.name === podName;\n }),\n [pods, podName],\n );\n\n return (\n <Grid container>\n <Grid item xs={3}>\n <Paper>\n <TaskStatusStepper\n steps={sortedTaskRuns}\n currentStepId={currentStepId}\n onUserStepChange={setActiveTask}\n />\n </Paper>\n </Grid>\n <Grid item xs={9}>\n {!currentStepId && <Progress />}\n <div style={{ height: '80vh' }}>\n {!podData ? (\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n <LogViewer text={t('pipelineRunLogs.noLogs')} />\n </Paper>\n ) : (\n <PipelineRunLogViewer pod={podData} />\n )}\n </div>\n </Grid>\n </Grid>\n );\n};\n\nexport default PipelineRunLogs;\n"],"names":["PipelineRunLogViewer"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useContext } from 'react';
3
3
  import { useApi } from '@backstage/core-plugin-api';
4
4
  import { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';
5
- import { Button } from '@material-ui/core';
5
+ import Button from '@mui/material/Button';
6
6
  import DownloadIcon from '@mui/icons-material/FileDownloadOutlined';
7
7
  import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
8
8
  import { getPodLogs } from '../../utils/log-downloader-utils.esm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PodLogsDownloadLink.esm.js","sources":["../../../src/components/PipelineRunLogs/PodLogsDownloadLink.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 { FC, ReactElement } from 'react';\n\nimport { useState, useContext } from 'react';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport { Button } from '@material-ui/core';\nimport DownloadIcon from '@mui/icons-material/FileDownloadOutlined';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { ContainerScope } from '../../hooks/usePodLogsOfPipelineRun';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { getPodLogs } from '../../utils/log-downloader-utils';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { downloadLogFile } from '../../utils/download-log-file-utils';\n\nconst PodLogsDownloadLink: FC<{\n pods: V1Pod[];\n fileName: string;\n downloadTitle: string;\n}> = ({ pods, fileName, downloadTitle, ...props }): ReactElement => {\n const [downloading, setDownloading] = useState<boolean>(false);\n const kubernetesProxyApi = useApi(kubernetesProxyApiRef);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const { clusters, selectedCluster = 0 } =\n useContext<TektonResourcesContextData>(TektonResourcesContext);\n const currCluster = clusters.length > 0 ? clusters[selectedCluster] : '';\n\n const getLogs = (podScope: ContainerScope): Promise<{ text: string }> => {\n const { podName, podNamespace, containerName, clusterName } = podScope;\n return kubernetesProxyApi.getPodLogs({\n podName: podName,\n namespace: podNamespace,\n containerName: containerName,\n clusterName: clusterName,\n });\n };\n\n return (\n <Button\n disabled={downloading}\n title={\n downloading\n ? t('pipelineRunLogs.podLogsDownloadLink.downloading')\n : downloadTitle\n }\n onClick={() => {\n setDownloading(true);\n getPodLogs(pods, getLogs, currCluster)\n .then((logs: string) => {\n setDownloading(false);\n downloadLogFile(logs || '', fileName);\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.warn('Download failed', err);\n setDownloading(false);\n });\n }}\n {...props}\n >\n <DownloadIcon style={{ verticalAlign: '-0.180em' }} />\n {downloadTitle || t('pipelineRunLogs.podLogsDownloadLink.title')}\n </Button>\n );\n};\nexport default PodLogsDownloadLink;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAkCA,MAAM,mBAAA,GAID,CAAC,EAAE,IAAA,EAAM,UAAU,aAAA,EAAe,GAAG,OAAM,KAAoB;AAClE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC7D,EAAA,MAAM,kBAAA,GAAqB,OAAO,qBAAqB,CAAA;AACvD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,GAAkB,CAAA,EAAE,GACpC,WAAuC,sBAAsB,CAAA;AAC/D,EAAA,MAAM,cAAc,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,QAAA,CAAS,eAAe,CAAA,GAAI,EAAA;AAEtE,EAAA,MAAM,OAAA,GAAU,CAAC,QAAA,KAAwD;AACvE,IAAA,MAAM,EAAE,OAAA,EAAS,YAAA,EAAc,aAAA,EAAe,aAAY,GAAI,QAAA;AAC9D,IAAA,OAAO,mBAAmB,UAAA,CAAW;AAAA,MACnC,OAAA;AAAA,MACA,SAAA,EAAW,YAAA;AAAA,MACX,aAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,WAAA;AAAA,MACV,KAAA,EACE,WAAA,GACI,CAAA,CAAE,iDAAiD,CAAA,GACnD,aAAA;AAAA,MAEN,SAAS,MAAM;AACb,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA,UAAA,CAAW,MAAM,OAAA,EAAS,WAAW,CAAA,CAClC,IAAA,CAAK,CAAC,IAAA,KAAiB;AACtB,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,eAAA,CAAgB,IAAA,IAAQ,IAAI,QAAQ,CAAA;AAAA,QACtC,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,GAAA,KAAO;AAEZ,UAAA,OAAA,CAAQ,IAAA,CAAK,mBAAmB,GAAG,CAAA;AACnC,UAAA,cAAA,CAAe,KAAK,CAAA;AAAA,QACtB,CAAC,CAAA;AAAA,MACL,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,EAAE,aAAA,EAAe,YAAW,EAAG,CAAA;AAAA,QACnD,aAAA,IAAiB,EAAE,2CAA2C;AAAA;AAAA;AAAA,GACjE;AAEJ;;;;"}
1
+ {"version":3,"file":"PodLogsDownloadLink.esm.js","sources":["../../../src/components/PipelineRunLogs/PodLogsDownloadLink.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 { FC, ReactElement } from 'react';\n\nimport { useState, useContext } from 'react';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport Button from '@mui/material/Button';\nimport DownloadIcon from '@mui/icons-material/FileDownloadOutlined';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { ContainerScope } from '../../hooks/usePodLogsOfPipelineRun';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { getPodLogs } from '../../utils/log-downloader-utils';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { downloadLogFile } from '../../utils/download-log-file-utils';\n\nconst PodLogsDownloadLink: FC<{\n pods: V1Pod[];\n fileName: string;\n downloadTitle: string;\n}> = ({ pods, fileName, downloadTitle, ...props }): ReactElement => {\n const [downloading, setDownloading] = useState<boolean>(false);\n const kubernetesProxyApi = useApi(kubernetesProxyApiRef);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const { clusters, selectedCluster = 0 } =\n useContext<TektonResourcesContextData>(TektonResourcesContext);\n const currCluster = clusters.length > 0 ? clusters[selectedCluster] : '';\n\n const getLogs = (podScope: ContainerScope): Promise<{ text: string }> => {\n const { podName, podNamespace, containerName, clusterName } = podScope;\n return kubernetesProxyApi.getPodLogs({\n podName: podName,\n namespace: podNamespace,\n containerName: containerName,\n clusterName: clusterName,\n });\n };\n\n return (\n <Button\n disabled={downloading}\n title={\n downloading\n ? t('pipelineRunLogs.podLogsDownloadLink.downloading')\n : downloadTitle\n }\n onClick={() => {\n setDownloading(true);\n getPodLogs(pods, getLogs, currCluster)\n .then((logs: string) => {\n setDownloading(false);\n downloadLogFile(logs || '', fileName);\n })\n .catch(err => {\n // eslint-disable-next-line no-console\n console.warn('Download failed', err);\n setDownloading(false);\n });\n }}\n {...props}\n >\n <DownloadIcon style={{ verticalAlign: '-0.180em' }} />\n {downloadTitle || t('pipelineRunLogs.podLogsDownloadLink.title')}\n </Button>\n );\n};\nexport default PodLogsDownloadLink;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAkCA,MAAM,mBAAA,GAID,CAAC,EAAE,IAAA,EAAM,UAAU,aAAA,EAAe,GAAG,OAAM,KAAoB;AAClE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC7D,EAAA,MAAM,kBAAA,GAAqB,OAAO,qBAAqB,CAAA;AACvD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,GAAkB,CAAA,EAAE,GACpC,WAAuC,sBAAsB,CAAA;AAC/D,EAAA,MAAM,cAAc,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,QAAA,CAAS,eAAe,CAAA,GAAI,EAAA;AAEtE,EAAA,MAAM,OAAA,GAAU,CAAC,QAAA,KAAwD;AACvE,IAAA,MAAM,EAAE,OAAA,EAAS,YAAA,EAAc,aAAA,EAAe,aAAY,GAAI,QAAA;AAC9D,IAAA,OAAO,mBAAmB,UAAA,CAAW;AAAA,MACnC,OAAA;AAAA,MACA,SAAA,EAAW,YAAA;AAAA,MACX,aAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,WAAA;AAAA,MACV,KAAA,EACE,WAAA,GACI,CAAA,CAAE,iDAAiD,CAAA,GACnD,aAAA;AAAA,MAEN,SAAS,MAAM;AACb,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA,UAAA,CAAW,MAAM,OAAA,EAAS,WAAW,CAAA,CAClC,IAAA,CAAK,CAAC,IAAA,KAAiB;AACtB,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,eAAA,CAAgB,IAAA,IAAQ,IAAI,QAAQ,CAAA;AAAA,QACtC,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,GAAA,KAAO;AAEZ,UAAA,OAAA,CAAQ,IAAA,CAAK,mBAAmB,GAAG,CAAA;AACnC,UAAA,cAAA,CAAe,KAAK,CAAA;AAAA,QACtB,CAAC,CAAA;AAAA,MACL,CAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,EAAE,aAAA,EAAe,YAAW,EAAG,CAAA;AAAA,QACnD,aAAA,IAAiB,EAAE,2CAA2C;AAAA;AAAA;AAAA,GACjE;AAEJ;;;;"}
@@ -1,14 +1,16 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { memo, useState } from 'react';
3
3
  import useInterval from 'react-use/lib/useInterval';
4
- import { StepButton, makeStyles, createStyles, CircularProgress } from '@material-ui/core';
5
- import Step from '@material-ui/core/Step';
6
- import StepLabel from '@material-ui/core/StepLabel';
7
- import Stepper from '@material-ui/core/Stepper';
8
- import Typography from '@material-ui/core/Typography';
9
- import Cancel from '@material-ui/icons/Cancel';
10
- import Check from '@material-ui/icons/Check';
11
- import FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';
4
+ import Box from '@mui/material/Box';
5
+ import CircularProgress from '@mui/material/CircularProgress';
6
+ import Step from '@mui/material/Step';
7
+ import StepButton from '@mui/material/StepButton';
8
+ import StepLabel from '@mui/material/StepLabel';
9
+ import Stepper from '@mui/material/Stepper';
10
+ import Typography from '@mui/material/Typography';
11
+ import Cancel from '@mui/icons-material/Cancel';
12
+ import Check from '@mui/icons-material/Check';
13
+ import FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';
12
14
  import classNames from 'classnames';
13
15
  import { ComputedStatus } from '@backstage-community/plugin-tekton-react';
14
16
  import { calculateDuration } from '../../utils/tekton-utils.esm.js';
@@ -16,33 +18,6 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
16
18
  import '../../translations/index.esm.js';
17
19
  import { tektonTranslationRef } from '../../translations/ref.esm.js';
18
20
 
19
- const useStyles = makeStyles(
20
- (theme) => createStyles({
21
- root: {
22
- width: "100%"
23
- },
24
- titleContainer: {
25
- display: "flex",
26
- alignItems: "center",
27
- gap: theme.spacing(1)
28
- },
29
- closeButton: {
30
- position: "absolute",
31
- right: theme.spacing(1),
32
- top: theme.spacing(1),
33
- color: theme.palette.grey[500]
34
- },
35
- labelWrapper: {
36
- display: "flex",
37
- flex: 1,
38
- flexDirection: "row",
39
- justifyContent: "space-between"
40
- },
41
- stepWrapper: {
42
- width: "100%"
43
- }
44
- })
45
- );
46
21
  const StepTimeTicker = ({ step }) => {
47
22
  const [time, setTime] = useState("");
48
23
  const { t } = useTranslationRef(tektonTranslationRef);
@@ -55,24 +30,7 @@ const StepTimeTicker = ({ step }) => {
55
30
  }, 1e3);
56
31
  return /* @__PURE__ */ jsx(Typography, { variant: "caption", children: time });
57
32
  };
58
- const useStepIconStyles = makeStyles(
59
- (theme) => createStyles({
60
- root: {
61
- color: theme.palette.text.disabled,
62
- display: "flex",
63
- height: 22,
64
- alignItems: "center"
65
- },
66
- completed: {
67
- color: theme.palette.status.ok
68
- },
69
- error: {
70
- color: theme.palette.status.error
71
- }
72
- })
73
- );
74
33
  const TaskStepIconComponent = ({ active, completed, error }) => {
75
- const classes = useStepIconStyles();
76
34
  const getMiddle = () => {
77
35
  if (active) {
78
36
  return /* @__PURE__ */ jsx(CircularProgress, { size: "24px" });
@@ -86,11 +44,23 @@ const TaskStepIconComponent = ({ active, completed, error }) => {
86
44
  return /* @__PURE__ */ jsx(FiberManualRecordIcon, {});
87
45
  };
88
46
  return /* @__PURE__ */ jsx(
89
- "div",
47
+ Box,
90
48
  {
91
- className: classNames(classes.root, {
92
- [classes.completed]: completed,
93
- [classes.error]: error
49
+ sx: {
50
+ color: (theme) => theme.palette.text.disabled,
51
+ display: "flex",
52
+ height: 22,
53
+ alignItems: "center",
54
+ ...completed && {
55
+ color: (theme) => theme.palette.status.ok
56
+ },
57
+ ...error && {
58
+ color: (theme) => theme.palette.status.error
59
+ }
60
+ },
61
+ className: classNames({
62
+ completed,
63
+ error
94
64
  }),
95
65
  children: getMiddle()
96
66
  }
@@ -98,9 +68,8 @@ const TaskStepIconComponent = ({ active, completed, error }) => {
98
68
  };
99
69
  const TaskStatusStepper = memo((props) => {
100
70
  const { steps, currentStepId, onUserStepChange } = props;
101
- const classes = useStyles(props);
102
71
  const { t } = useTranslationRef(tektonTranslationRef);
103
- return /* @__PURE__ */ jsx("div", { className: classes.root, children: /* @__PURE__ */ jsx(
72
+ return /* @__PURE__ */ jsx(Box, { className: props.classes?.root, sx: { width: "100%" }, children: /* @__PURE__ */ jsx(
104
73
  Stepper,
105
74
  {
106
75
  activeStep: steps.findIndex((s) => s.id === currentStepId),
@@ -121,11 +90,22 @@ const TaskStatusStepper = memo((props) => {
121
90
  active: isActive
122
91
  },
123
92
  StepIconComponent: TaskStepIconComponent,
124
- className: classes.stepWrapper,
125
- children: /* @__PURE__ */ jsxs("div", { className: classes.labelWrapper, children: [
126
- /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: step.name }),
127
- isSkipped ? /* @__PURE__ */ jsx(Typography, { variant: "caption", children: t("pipelineRunLogs.taskStatusStepper.skipped") }) : /* @__PURE__ */ jsx(StepTimeTicker, { step })
128
- ] })
93
+ sx: { width: "100%" },
94
+ children: /* @__PURE__ */ jsxs(
95
+ Box,
96
+ {
97
+ sx: {
98
+ display: "flex",
99
+ flex: 1,
100
+ flexDirection: "row",
101
+ justifyContent: "space-between"
102
+ },
103
+ children: [
104
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: step.name }),
105
+ isSkipped ? /* @__PURE__ */ jsx(Typography, { variant: "caption", children: t("pipelineRunLogs.taskStatusStepper.skipped") }) : /* @__PURE__ */ jsx(StepTimeTicker, { step })
106
+ ]
107
+ }
108
+ )
129
109
  }
130
110
  ) }) }, step.id);
131
111
  })
@@ -1 +1 @@
1
- {"version":3,"file":"TaskStatusStepper.esm.js","sources":["../../../src/components/PipelineRunLogs/TaskStatusStepper.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 { useState, memo } from 'react';\nimport useInterval from 'react-use/lib/useInterval';\n\nimport {\n CircularProgress,\n createStyles,\n makeStyles,\n StepButton,\n StepIconProps,\n Theme,\n} from '@material-ui/core';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport Stepper from '@material-ui/core/Stepper';\nimport Typography from '@material-ui/core/Typography';\nimport Cancel from '@material-ui/icons/Cancel';\nimport Check from '@material-ui/icons/Check';\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\nimport classNames from 'classnames';\n\nimport { ComputedStatus } from '@backstage-community/plugin-tekton-react';\n\nimport { TaskStep } from '../../utils/taskRun-utils';\nimport { calculateDuration } from '../../utils/tekton-utils';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: '100%',\n },\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n labelWrapper: {\n display: 'flex',\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n stepWrapper: {\n width: '100%',\n },\n }),\n);\n\nconst StepTimeTicker = ({ step }: { step: TaskStep }) => {\n const [time, setTime] = useState('');\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useInterval(() => {\n if (!step.startedAt) {\n setTime('');\n return;\n }\n\n setTime(calculateDuration(t, step.startedAt, step.endedAt));\n }, 1000);\n\n return <Typography variant=\"caption\">{time}</Typography>;\n};\n\nconst useStepIconStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n color: theme.palette.text.disabled,\n display: 'flex',\n height: 22,\n alignItems: 'center',\n },\n completed: {\n color: theme.palette.status.ok,\n },\n error: {\n color: theme.palette.status.error,\n },\n }),\n);\n\nconst TaskStepIconComponent = ({ active, completed, error }: StepIconProps) => {\n const classes = useStepIconStyles();\n\n const getMiddle = () => {\n if (active) {\n return <CircularProgress size=\"24px\" />;\n }\n if (completed) {\n return <Check />;\n }\n if (error) {\n return <Cancel />;\n }\n return <FiberManualRecordIcon />;\n };\n\n return (\n <div\n className={classNames(classes.root, {\n [classes.completed]: completed,\n [classes.error]: error,\n })}\n >\n {getMiddle()}\n </div>\n );\n};\n\ntype TaskStatusStepperProps = {\n steps: TaskStep[];\n currentStepId: string | undefined;\n onUserStepChange: (id: string) => void;\n classes?: {\n root?: string;\n };\n};\n\nexport const TaskStatusStepper = memo((props: TaskStatusStepperProps) => {\n const { steps, currentStepId, onUserStepChange } = props;\n const classes = useStyles(props);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <div className={classes.root}>\n <Stepper\n activeStep={steps.findIndex(s => s.id === currentStepId)}\n orientation=\"vertical\"\n nonLinear\n >\n {steps.map((step, _) => {\n const isCancelled = step.status === ComputedStatus.Cancelled;\n const isActive = step.status === ComputedStatus.Running;\n const isCompleted = step.status === ComputedStatus.Succeeded;\n const isFailed = step.status === ComputedStatus.Failed;\n const isSkipped = step.status === ComputedStatus.Skipped;\n\n return (\n <Step key={step.id} expanded>\n <StepButton onClick={() => onUserStepChange(step.id)}>\n <StepLabel\n StepIconProps={{\n completed: isCompleted,\n error: isFailed || isCancelled,\n active: isActive,\n }}\n StepIconComponent={TaskStepIconComponent}\n className={classes.stepWrapper}\n >\n <div className={classes.labelWrapper}>\n <Typography variant=\"subtitle2\">{step.name}</Typography>\n {isSkipped ? (\n <Typography variant=\"caption\">\n {t('pipelineRunLogs.taskStatusStepper.skipped')}\n </Typography>\n ) : (\n <StepTimeTicker step={step} />\n )}\n </div>\n </StepLabel>\n </StepButton>\n </Step>\n );\n })}\n </Stepper>\n </div>\n );\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskStatusStepper.esm.js","sources":["../../../src/components/PipelineRunLogs/TaskStatusStepper.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 { useState, memo } from 'react';\nimport useInterval from 'react-use/lib/useInterval';\n\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Step from '@mui/material/Step';\nimport StepButton from '@mui/material/StepButton';\nimport StepLabel from '@mui/material/StepLabel';\nimport type { StepIconProps } from '@mui/material/StepIcon';\nimport Stepper from '@mui/material/Stepper';\nimport Typography from '@mui/material/Typography';\nimport Cancel from '@mui/icons-material/Cancel';\nimport Check from '@mui/icons-material/Check';\nimport FiberManualRecordIcon from '@mui/icons-material/FiberManualRecord';\nimport classNames from 'classnames';\n\nimport { ComputedStatus } from '@backstage-community/plugin-tekton-react';\n\nimport { TaskStep } from '../../utils/taskRun-utils';\nimport { calculateDuration } from '../../utils/tekton-utils';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst StepTimeTicker = ({ step }: { step: TaskStep }) => {\n const [time, setTime] = useState('');\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useInterval(() => {\n if (!step.startedAt) {\n setTime('');\n return;\n }\n\n setTime(calculateDuration(t, step.startedAt, step.endedAt));\n }, 1000);\n\n return <Typography variant=\"caption\">{time}</Typography>;\n};\n\nconst TaskStepIconComponent = ({ active, completed, error }: StepIconProps) => {\n const getMiddle = () => {\n if (active) {\n return <CircularProgress size=\"24px\" />;\n }\n if (completed) {\n return <Check />;\n }\n if (error) {\n return <Cancel />;\n }\n return <FiberManualRecordIcon />;\n };\n\n return (\n <Box\n sx={{\n color: theme => theme.palette.text.disabled,\n display: 'flex',\n height: 22,\n alignItems: 'center',\n ...(completed && {\n color: theme => theme.palette.status.ok,\n }),\n ...(error && {\n color: theme => theme.palette.status.error,\n }),\n }}\n className={classNames({\n completed,\n error,\n })}\n >\n {getMiddle()}\n </Box>\n );\n};\n\ntype TaskStatusStepperProps = {\n steps: TaskStep[];\n currentStepId: string | undefined;\n onUserStepChange: (id: string) => void;\n classes?: {\n root?: string;\n };\n};\n\nexport const TaskStatusStepper = memo((props: TaskStatusStepperProps) => {\n const { steps, currentStepId, onUserStepChange } = props;\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Box className={props.classes?.root} sx={{ width: '100%' }}>\n <Stepper\n activeStep={steps.findIndex(s => s.id === currentStepId)}\n orientation=\"vertical\"\n nonLinear\n >\n {steps.map((step, _) => {\n const isCancelled = step.status === ComputedStatus.Cancelled;\n const isActive = step.status === ComputedStatus.Running;\n const isCompleted = step.status === ComputedStatus.Succeeded;\n const isFailed = step.status === ComputedStatus.Failed;\n const isSkipped = step.status === ComputedStatus.Skipped;\n\n return (\n <Step key={step.id} expanded>\n <StepButton onClick={() => onUserStepChange(step.id)}>\n <StepLabel\n StepIconProps={{\n completed: isCompleted,\n error: isFailed || isCancelled,\n active: isActive,\n }}\n StepIconComponent={TaskStepIconComponent}\n sx={{ width: '100%' }}\n >\n <Box\n sx={{\n display: 'flex',\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n }}\n >\n <Typography variant=\"subtitle2\">{step.name}</Typography>\n {isSkipped ? (\n <Typography variant=\"caption\">\n {t('pipelineRunLogs.taskStatusStepper.skipped')}\n </Typography>\n ) : (\n <StepTimeTicker step={step} />\n )}\n </Box>\n </StepLabel>\n </StepButton>\n </Step>\n );\n })}\n </Stepper>\n </Box>\n );\n});\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { memo } from 'react';
3
3
  import { ErrorBoundary } from '@backstage/core-components';
4
- import { Dialog, DialogTitle, Box, IconButton, DialogContent, makeStyles, createStyles } from '@material-ui/core';
4
+ import Box from '@mui/material/Box';
5
+ import Dialog from '@mui/material/Dialog';
6
+ import DialogContent from '@mui/material/DialogContent';
7
+ import DialogTitle from '@mui/material/DialogTitle';
8
+ import IconButton from '@mui/material/IconButton';
5
9
  import CloseIcon from '@mui/icons-material/Close';
6
10
  import { tektonGroupColor } from '../../types/types.esm.js';
7
11
  import PipelineRunOutput from '../PipelineRunList/PipelineRunOutput.esm.js';
@@ -10,28 +14,36 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
10
14
  import '../../translations/index.esm.js';
11
15
  import { tektonTranslationRef } from '../../translations/ref.esm.js';
12
16
 
13
- const useStyles = makeStyles(
14
- (theme) => createStyles({
15
- titleContainer: {
16
- display: "flex",
17
- alignItems: "center",
18
- gap: theme.spacing(1)
19
- },
20
- closeButton: {
21
- position: "absolute",
22
- right: theme.spacing(1),
23
- top: theme.spacing(1),
24
- color: theme.palette.grey[500]
25
- }
26
- })
27
- );
17
+ const titleContainerSx = {
18
+ display: "flex",
19
+ alignItems: "center",
20
+ gap: 1
21
+ };
22
+ const closeButtonSx = {
23
+ position: "absolute",
24
+ right: (theme) => theme.spacing(1),
25
+ top: (theme) => theme.spacing(1),
26
+ color: (theme) => theme.palette.grey[500]
27
+ };
28
+ const dialogPaperSx = {
29
+ display: "flex",
30
+ flexDirection: "column",
31
+ height: "90vh",
32
+ maxHeight: "90vh"
33
+ };
34
+ const dialogContentSx = {
35
+ display: "flex",
36
+ flexDirection: "column",
37
+ flex: 1,
38
+ minHeight: 0,
39
+ overflow: "hidden"
40
+ };
28
41
  const PipelineRunOutputDialog$1 = ({
29
42
  open,
30
43
  closeDialog,
31
44
  pipelineRun,
32
45
  taskRuns
33
46
  }) => {
34
- const classes = useStyles();
35
47
  const { t } = useTranslationRef(tektonTranslationRef);
36
48
  return /* @__PURE__ */ jsxs(
37
49
  Dialog,
@@ -41,8 +53,9 @@ const PipelineRunOutputDialog$1 = ({
41
53
  fullWidth: true,
42
54
  open,
43
55
  onClose: closeDialog,
56
+ PaperProps: { sx: dialogPaperSx },
44
57
  children: [
45
- /* @__PURE__ */ jsx(DialogTitle, { id: "pipelinerun-output", title: t("pipelineRunOutput.title"), children: /* @__PURE__ */ jsxs(Box, { className: classes.titleContainer, children: [
58
+ /* @__PURE__ */ jsx(DialogTitle, { id: "pipelinerun-output", title: t("pipelineRunOutput.title"), children: /* @__PURE__ */ jsxs(Box, { sx: titleContainerSx, children: [
46
59
  /* @__PURE__ */ jsx(
47
60
  ResourceBadge,
48
61
  {
@@ -56,13 +69,13 @@ const PipelineRunOutputDialog$1 = ({
56
69
  IconButton,
57
70
  {
58
71
  "aria-label": "close",
59
- className: classes.closeButton,
72
+ sx: closeButtonSx,
60
73
  onClick: closeDialog,
61
74
  children: /* @__PURE__ */ jsx(CloseIcon, {})
62
75
  }
63
76
  )
64
77
  ] }) }),
65
- /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(PipelineRunOutput, { pipelineRun, taskRuns }) }) })
78
+ /* @__PURE__ */ jsx(DialogContent, { sx: dialogContentSx, children: /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(PipelineRunOutput, { pipelineRun, taskRuns }) }) })
66
79
  ]
67
80
  }
68
81
  );
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunOutputDialog.esm.js","sources":["../../../src/components/PipelineRunOutput/PipelineRunOutputDialog.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 { memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\nimport {\n Box,\n createStyles,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport PipelineRunOutput from '../PipelineRunList/PipelineRunOutput';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n }),\n);\n\ntype PipelineRunOutputDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\nconst PipelineRunOutputDialog = ({\n open,\n closeDialog,\n pipelineRun,\n taskRuns,\n}: PipelineRunOutputDialogProps) => {\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-output-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-output\" title={t('pipelineRunOutput.title')}>\n <Box className={classes.titleContainer}>\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={pipelineRun?.metadata?.name ?? ''}\n />{' '}\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <ErrorBoundary>\n <PipelineRunOutput pipelineRun={pipelineRun} taskRuns={taskRuns} />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunOutputDialog);\n"],"names":["PipelineRunOutputDialog"],"mappings":";;;;;;;;;;;;AA0CA,MAAM,SAAA,GAAY,UAAA;AAAA,EAAW,CAAC,UAC5B,YAAA,CAAa;AAAA,IACX,cAAA,EAAgB;AAAA,MACd,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KACtB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACtB,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACpB,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA;AAC/B,GACD;AACH,CAAA;AAQA,MAAMA,4BAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAoC;AAClC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,2BAAA;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,EAAA,EAAG,oBAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EACrE,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtB,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,UAAG,GAAA;AAAA,0BACH,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,OAAA;AAAA,cACX,WAAW,OAAA,CAAQ,WAAA;AAAA,cACnB,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,iBAAA,EAAA,EAAkB,WAAA,EAA0B,QAAA,EAAoB,CAAA,EACnE,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,8BAAe,KAAKA,yBAAuB,CAAA;;;;"}
1
+ {"version":3,"file":"PipelineRunOutputDialog.esm.js","sources":["../../../src/components/PipelineRunOutput/PipelineRunOutputDialog.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 { memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\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 {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport PipelineRunOutput from '../PipelineRunList/PipelineRunOutput';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\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\nconst dialogPaperSx: SxProps<Theme> = {\n display: 'flex',\n flexDirection: 'column',\n height: '90vh',\n maxHeight: '90vh',\n};\n\nconst dialogContentSx: SxProps<Theme> = {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n};\n\ntype PipelineRunOutputDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\nconst PipelineRunOutputDialog = ({\n open,\n closeDialog,\n pipelineRun,\n taskRuns,\n}: PipelineRunOutputDialogProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-output-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n PaperProps={{ sx: dialogPaperSx }}\n >\n <DialogTitle id=\"pipelinerun-output\" title={t('pipelineRunOutput.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 sx={dialogContentSx}>\n <ErrorBoundary>\n <PipelineRunOutput pipelineRun={pipelineRun} taskRuns={taskRuns} />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunOutputDialog);\n"],"names":["PipelineRunOutputDialog"],"mappings":";;;;;;;;;;;;;;;;AAsCA,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;AAEA,MAAM,aAAA,GAAgC;AAAA,EACpC,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,MAAA,EAAQ,MAAA;AAAA,EACR,SAAA,EAAW;AACb,CAAA;AAEA,MAAM,eAAA,GAAkC;AAAA,EACtC,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,IAAA,EAAM,CAAA;AAAA,EACN,SAAA,EAAW,CAAA;AAAA,EACX,QAAA,EAAU;AACZ,CAAA;AAQA,MAAMA,4BAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAoC;AAClC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,2BAAA;AAAA,MACZ,QAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAS,IAAA;AAAA,MACT,IAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,UAAA,EAAY,EAAE,EAAA,EAAI,aAAA,EAAc;AAAA,MAEhC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,EAAA,EAAG,oBAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EACrE,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,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,UAAG,GAAA;AAAA,0BACH,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,aAAA,EAAA,EAAc,EAAA,EAAI,eAAA,EACjB,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,WAAA,EAA0B,QAAA,EAAoB,CAAA,EACnE,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,8BAAe,KAAKA,yBAAuB,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
3
- import { Typography } from '@material-ui/core';
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":"PipelineRunParams.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunParams.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 '@material-ui/core';\nimport { tektonTranslationRef } from '../../translations';\nimport { Output } from './Output';\n\ntype PipelineRunParamsProps = {\n pipelineRun: PipelineRunKind;\n};\n\nexport const PipelineRunParams = ({ pipelineRun }: PipelineRunParamsProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n const noDataAvailable =\n pipelineRun.spec?.params === undefined ||\n pipelineRun.spec?.params.length === 0;\n\n if (noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunParamsAndResults.noParams')}\n </Typography>\n );\n }\n\n return <Output results={pipelineRun?.spec.params ?? []} />;\n};\n"],"names":[],"mappings":";;;;;;;AA0BO,MAAM,iBAAA,GAAoB,CAAC,EAAE,WAAA,EAAY,KAA8B;AAC5E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,eAAA,GACJ,YAAY,IAAA,EAAM,MAAA,KAAW,UAC7B,WAAA,CAAY,IAAA,EAAM,OAAO,MAAA,KAAW,CAAA;AAEtC,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,uBACE,GAAA,CAAC,cAAW,KAAA,EAAM,QAAA,EAAS,SAAQ,OAAA,EAChC,QAAA,EAAA,CAAA,CAAE,sCAAsC,CAAA,EAC3C,CAAA;AAAA,EAEJ;AAEA,EAAA,2BAAQ,MAAA,EAAA,EAAO,OAAA,EAAS,aAAa,IAAA,CAAK,MAAA,IAAU,EAAC,EAAG,CAAA;AAC1D;;;;"}
1
+ {"version":3,"file":"PipelineRunParams.esm.js","sources":["../../../src/components/PipelineRunParamsAndResults/PipelineRunParams.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 PipelineRunParamsProps = {\n pipelineRun: PipelineRunKind;\n};\n\nexport const PipelineRunParams = ({ pipelineRun }: PipelineRunParamsProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n const noDataAvailable =\n pipelineRun.spec?.params === undefined ||\n pipelineRun.spec?.params.length === 0;\n\n if (noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunParamsAndResults.noParams')}\n </Typography>\n );\n }\n\n return <Output results={pipelineRun?.spec.params ?? []} />;\n};\n"],"names":[],"mappings":";;;;;;;AA0BO,MAAM,iBAAA,GAAoB,CAAC,EAAE,WAAA,EAAY,KAA8B;AAC5E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,eAAA,GACJ,YAAY,IAAA,EAAM,MAAA,KAAW,UAC7B,WAAA,CAAY,IAAA,EAAM,OAAO,MAAA,KAAW,CAAA;AAEtC,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,uBACE,GAAA,CAAC,cAAW,KAAA,EAAM,QAAA,EAAS,SAAQ,OAAA,EAChC,QAAA,EAAA,CAAA,CAAE,sCAAsC,CAAA,EAC3C,CAAA;AAAA,EAEJ;AAEA,EAAA,2BAAQ,MAAA,EAAA,EAAO,OAAA,EAAS,aAAa,IAAA,CAAK,MAAA,IAAU,EAAC,EAAG,CAAA;AAC1D;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
3
3
  import '../../translations/index.esm.js';
4
- import { Typography } from '@material-ui/core';
4
+ import Typography from '@mui/material/Typography';
5
5
  import { PipelineRunParams } from './PipelineRunParams.esm.js';
6
6
  import { PipelineRunResults } from './PipelineRunResults.esm.js';
7
7
  import { tektonTranslationRef } from '../../translations/ref.esm.js';