@backstage-community/plugin-github-actions 0.9.2 → 0.11.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.
@@ -1,3 +1,4 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import Accordion from '@material-ui/core/Accordion';
2
3
  import AccordionDetails from '@material-ui/core/AccordionDetails';
3
4
  import AccordionSummary from '@material-ui/core/AccordionSummary';
@@ -16,7 +17,6 @@ import { makeStyles } from '@material-ui/core/styles';
16
17
  import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
17
18
  import ExternalLinkIcon from '@material-ui/icons/Launch';
18
19
  import { DateTime } from 'luxon';
19
- import React from 'react';
20
20
  import { getProjectNameFromEntity } from '../getProjectNameFromEntity.esm.js';
21
21
  import { WorkflowRunStatus } from '../WorkflowRunStatus/WorkflowRunStatus.esm.js';
22
22
  import { useWorkflowRunJobs } from './useWorkflowRunJobs.esm.js';
@@ -60,19 +60,22 @@ const getElapsedTime = (start, end) => {
60
60
  return timeElapsed;
61
61
  };
62
62
  const StepView = ({ step }) => {
63
- return /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(
64
- ListItemText,
65
- {
66
- primary: step.name,
67
- secondary: getElapsedTime(step.started_at, step.completed_at)
68
- }
69
- )), /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(
70
- WorkflowRunStatus,
71
- {
72
- status: step.status.toLocaleUpperCase("en-US"),
73
- conclusion: step.conclusion?.toLocaleUpperCase("en-US")
74
- }
75
- )));
63
+ return /* @__PURE__ */ jsxs(TableRow, { children: [
64
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(
65
+ ListItemText,
66
+ {
67
+ primary: step.name,
68
+ secondary: getElapsedTime(step.started_at, step.completed_at)
69
+ }
70
+ ) }),
71
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(
72
+ WorkflowRunStatus,
73
+ {
74
+ status: step.status.toLocaleUpperCase("en-US"),
75
+ conclusion: step.conclusion?.toLocaleUpperCase("en-US")
76
+ }
77
+ ) })
78
+ ] });
76
79
  };
77
80
  const JobListItem = ({
78
81
  job,
@@ -80,28 +83,37 @@ const JobListItem = ({
80
83
  entity
81
84
  }) => {
82
85
  const classes = useStyles();
83
- return /* @__PURE__ */ React.createElement(Accordion, { TransitionProps: { unmountOnExit: true }, className }, /* @__PURE__ */ React.createElement(
84
- AccordionSummary,
85
- {
86
- expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, null),
87
- IconButtonProps: {
88
- className: classes.button
86
+ return /* @__PURE__ */ jsxs(Accordion, { TransitionProps: { unmountOnExit: true }, className, children: [
87
+ /* @__PURE__ */ jsx(
88
+ AccordionSummary,
89
+ {
90
+ expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
91
+ IconButtonProps: {
92
+ className: classes.button
93
+ },
94
+ children: /* @__PURE__ */ jsxs(Typography, { variant: "button", children: [
95
+ job.name,
96
+ " (",
97
+ getElapsedTime(job.started_at, job.completed_at),
98
+ ")"
99
+ ] })
89
100
  }
90
- },
91
- /* @__PURE__ */ React.createElement(Typography, { variant: "button" }, job.name, " (", getElapsedTime(job.started_at, job.completed_at), ")")
92
- ), /* @__PURE__ */ React.createElement(AccordionDetails, { className: classes.accordionDetails }, /* @__PURE__ */ React.createElement(TableContainer, null, /* @__PURE__ */ React.createElement(Table, null, job.steps?.map((step) => /* @__PURE__ */ React.createElement(StepView, { key: step.number, step }))))), job.status === "queued" || job.status === "in_progress" ? /* @__PURE__ */ React.createElement(WorkflowRunLogs, { runId: job.id, inProgress: true, entity }) : /* @__PURE__ */ React.createElement(WorkflowRunLogs, { runId: job.id, inProgress: false, entity }));
101
+ ),
102
+ /* @__PURE__ */ jsx(AccordionDetails, { className: classes.accordionDetails, children: /* @__PURE__ */ jsx(TableContainer, { children: /* @__PURE__ */ jsx(Table, { children: job.steps?.map((step) => /* @__PURE__ */ jsx(StepView, { step }, step.number)) }) }) }),
103
+ job.status === "queued" || job.status === "in_progress" ? /* @__PURE__ */ jsx(WorkflowRunLogs, { runId: job.id, inProgress: true, entity }) : /* @__PURE__ */ jsx(WorkflowRunLogs, { runId: job.id, inProgress: false, entity })
104
+ ] });
93
105
  };
94
106
  const JobsList = ({ jobs, entity }) => {
95
107
  const classes = useStyles();
96
- return /* @__PURE__ */ React.createElement(Box, null, jobs && jobs.total_count > 0 && jobs.jobs.map((job) => /* @__PURE__ */ React.createElement(
108
+ return /* @__PURE__ */ jsx(Box, { children: jobs && jobs.total_count > 0 && jobs.jobs.map((job) => /* @__PURE__ */ jsx(
97
109
  JobListItem,
98
110
  {
99
- key: job.id,
100
111
  job,
101
112
  className: job.status !== "success" ? classes.failed : classes.success,
102
113
  entity
103
- }
104
- )));
114
+ },
115
+ job.id
116
+ )) });
105
117
  };
106
118
  const WorkflowRunDetails = ({ entity }) => {
107
119
  const projectName = getProjectNameFromEntity(entity);
@@ -111,17 +123,63 @@ const WorkflowRunDetails = ({ entity }) => {
111
123
  const jobs = useWorkflowRunJobs({ hostname, owner, repo });
112
124
  const classes = useStyles();
113
125
  if (details.error && details.error.message) {
114
- return /* @__PURE__ */ React.createElement(Typography, { variant: "h6", color: "error" }, "Failed to load build, ", details.error.message);
126
+ return /* @__PURE__ */ jsxs(Typography, { variant: "h6", color: "error", children: [
127
+ "Failed to load build, ",
128
+ details.error.message
129
+ ] });
115
130
  } else if (details.loading) {
116
- return /* @__PURE__ */ React.createElement(LinearProgress, null);
131
+ return /* @__PURE__ */ jsx(LinearProgress, {});
117
132
  }
118
- return /* @__PURE__ */ React.createElement("div", { className: classes.root }, /* @__PURE__ */ React.createElement(Box, { mb: 3 }, /* @__PURE__ */ React.createElement(Breadcrumbs, { "aria-label": "breadcrumb" }, /* @__PURE__ */ React.createElement(Link, { to: ".." }, "Workflow runs"), /* @__PURE__ */ React.createElement(Typography, null, "Workflow run details"))), /* @__PURE__ */ React.createElement(TableContainer, { component: Paper, className: classes.table }, /* @__PURE__ */ React.createElement(Table, null, /* @__PURE__ */ React.createElement(TableBody, null, /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Branch")), /* @__PURE__ */ React.createElement(TableCell, null, details.value?.head_branch)), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Message")), /* @__PURE__ */ React.createElement(TableCell, null, details.value?.head_commit?.message)), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Commit ID")), /* @__PURE__ */ React.createElement(TableCell, null, details.value?.head_commit?.id)), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Workflow")), /* @__PURE__ */ React.createElement(TableCell, null, details.value?.name)), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Status")), /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(
119
- WorkflowRunStatus,
120
- {
121
- status: details.value?.status || void 0,
122
- conclusion: details.value?.conclusion || void 0
123
- }
124
- ))), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Author")), /* @__PURE__ */ React.createElement(TableCell, null, `${details.value?.head_commit?.author?.name} (${details.value?.head_commit?.author?.email})`)), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Links")), /* @__PURE__ */ React.createElement(TableCell, null, details.value?.html_url && /* @__PURE__ */ React.createElement(Link, { to: details.value.html_url }, "Workflow runs on GitHub", " ", /* @__PURE__ */ React.createElement(ExternalLinkIcon, { className: classes.externalLinkIcon })))), /* @__PURE__ */ React.createElement(TableRow, null, /* @__PURE__ */ React.createElement(TableCell, { colSpan: 2 }, /* @__PURE__ */ React.createElement(Typography, { noWrap: true }, "Jobs"), jobs.loading ? /* @__PURE__ */ React.createElement(CircularProgress, null) : /* @__PURE__ */ React.createElement(JobsList, { jobs: jobs.value, entity })))))));
133
+ return /* @__PURE__ */ jsxs("div", { className: classes.root, children: [
134
+ /* @__PURE__ */ jsx(Box, { mb: 3, children: /* @__PURE__ */ jsxs(Breadcrumbs, { "aria-label": "breadcrumb", children: [
135
+ /* @__PURE__ */ jsx(Link, { to: "..", children: "Workflow runs" }),
136
+ /* @__PURE__ */ jsx(Typography, { children: "Workflow run details" })
137
+ ] }) }),
138
+ /* @__PURE__ */ jsx(TableContainer, { component: Paper, className: classes.table, children: /* @__PURE__ */ jsx(Table, { children: /* @__PURE__ */ jsxs(TableBody, { children: [
139
+ /* @__PURE__ */ jsxs(TableRow, { children: [
140
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Branch" }) }),
141
+ /* @__PURE__ */ jsx(TableCell, { children: details.value?.head_branch })
142
+ ] }),
143
+ /* @__PURE__ */ jsxs(TableRow, { children: [
144
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Message" }) }),
145
+ /* @__PURE__ */ jsx(TableCell, { children: details.value?.head_commit?.message })
146
+ ] }),
147
+ /* @__PURE__ */ jsxs(TableRow, { children: [
148
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Commit ID" }) }),
149
+ /* @__PURE__ */ jsx(TableCell, { children: details.value?.head_commit?.id })
150
+ ] }),
151
+ /* @__PURE__ */ jsxs(TableRow, { children: [
152
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Workflow" }) }),
153
+ /* @__PURE__ */ jsx(TableCell, { children: details.value?.name })
154
+ ] }),
155
+ /* @__PURE__ */ jsxs(TableRow, { children: [
156
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Status" }) }),
157
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(
158
+ WorkflowRunStatus,
159
+ {
160
+ status: details.value?.status || void 0,
161
+ conclusion: details.value?.conclusion || void 0
162
+ }
163
+ ) })
164
+ ] }),
165
+ /* @__PURE__ */ jsxs(TableRow, { children: [
166
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Author" }) }),
167
+ /* @__PURE__ */ jsx(TableCell, { children: `${details.value?.head_commit?.author?.name} (${details.value?.head_commit?.author?.email})` })
168
+ ] }),
169
+ /* @__PURE__ */ jsxs(TableRow, { children: [
170
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Links" }) }),
171
+ /* @__PURE__ */ jsx(TableCell, { children: details.value?.html_url && /* @__PURE__ */ jsxs(Link, { to: details.value.html_url, children: [
172
+ "Workflow runs on GitHub",
173
+ " ",
174
+ /* @__PURE__ */ jsx(ExternalLinkIcon, { className: classes.externalLinkIcon })
175
+ ] }) })
176
+ ] }),
177
+ /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsxs(TableCell, { colSpan: 2, children: [
178
+ /* @__PURE__ */ jsx(Typography, { noWrap: true, children: "Jobs" }),
179
+ jobs.loading ? /* @__PURE__ */ jsx(CircularProgress, {}) : /* @__PURE__ */ jsx(JobsList, { jobs: jobs.value, entity })
180
+ ] }) })
181
+ ] }) }) })
182
+ ] });
125
183
  };
126
184
 
127
185
  export { WorkflowRunDetails };
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRunDetails.esm.js","sources":["../../../src/components/WorkflowRunDetails/WorkflowRunDetails.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { Entity } from '@backstage/catalog-model';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Box from '@material-ui/core/Box';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Paper from '@material-ui/core/Paper';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableRow from '@material-ui/core/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExternalLinkIcon from '@material-ui/icons/Launch';\nimport { DateTime } from 'luxon';\nimport React from 'react';\nimport { Job, Jobs, Step } from '../../api';\nimport { getProjectNameFromEntity } from '../getProjectNameFromEntity';\nimport { WorkflowRunStatus } from '../WorkflowRunStatus';\nimport { useWorkflowRunJobs } from './useWorkflowRunJobs';\nimport { useWorkflowRunsDetails } from './useWorkflowRunsDetails';\nimport { WorkflowRunLogs } from '../WorkflowRunLogs';\nimport { Breadcrumbs, Link } from '@backstage/core-components';\nimport { getHostnameFromEntity } from '../getHostnameFromEntity';\n\nconst useStyles = makeStyles<Theme>(theme => ({\n root: {\n maxWidth: 720,\n margin: theme.spacing(2),\n },\n title: {\n padding: theme.spacing(1, 0, 2, 0),\n },\n table: {\n padding: theme.spacing(1),\n },\n accordionDetails: {\n padding: 0,\n },\n button: {\n order: -1,\n marginRight: 0,\n marginLeft: '-20px',\n },\n externalLinkIcon: {\n fontSize: 'inherit',\n verticalAlign: 'bottom',\n },\n}));\n\nconst getElapsedTime = (start: string | undefined, end: string | undefined) => {\n if (!start || !end) {\n return '';\n }\n const startDate = DateTime.fromISO(start);\n const endDate = end ? DateTime.fromISO(end) : DateTime.now();\n const diff = endDate.diff(startDate);\n const timeElapsed = diff.toFormat(`m 'minutes' s 'seconds'`);\n return timeElapsed;\n};\n\nconst StepView = ({ step }: { step: Step }) => {\n return (\n <TableRow>\n <TableCell>\n <ListItemText\n primary={step.name}\n secondary={getElapsedTime(step.started_at, step.completed_at)}\n />\n </TableCell>\n <TableCell>\n <WorkflowRunStatus\n status={step.status.toLocaleUpperCase('en-US')}\n conclusion={step.conclusion?.toLocaleUpperCase('en-US')}\n />\n </TableCell>\n </TableRow>\n );\n};\n\nconst JobListItem = ({\n job,\n className,\n entity,\n}: {\n job: Job;\n className: string;\n entity: Entity;\n}) => {\n const classes = useStyles();\n return (\n <Accordion TransitionProps={{ unmountOnExit: true }} className={className}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n IconButtonProps={{\n className: classes.button,\n }}\n >\n <Typography variant=\"button\">\n {job.name} ({getElapsedTime(job.started_at, job.completed_at)})\n </Typography>\n </AccordionSummary>\n <AccordionDetails className={classes.accordionDetails}>\n <TableContainer>\n <Table>\n {job.steps?.map(step => (\n <StepView key={step.number} step={step} />\n ))}\n </Table>\n </TableContainer>\n </AccordionDetails>\n {job.status === 'queued' || job.status === 'in_progress' ? (\n <WorkflowRunLogs runId={job.id} inProgress entity={entity} />\n ) : (\n <WorkflowRunLogs runId={job.id} inProgress={false} entity={entity} />\n )}\n </Accordion>\n );\n};\n\nconst JobsList = ({ jobs, entity }: { jobs?: Jobs; entity: Entity }) => {\n const classes = useStyles();\n return (\n <Box>\n {jobs &&\n jobs.total_count > 0 &&\n jobs.jobs.map(job => (\n <JobListItem\n key={job.id}\n job={job}\n className={\n job.status !== 'success' ? classes.failed : classes.success\n }\n entity={entity}\n />\n ))}\n </Box>\n );\n};\n\nexport const WorkflowRunDetails = ({ entity }: { entity: Entity }) => {\n const projectName = getProjectNameFromEntity(entity);\n\n const hostname = getHostnameFromEntity(entity);\n const [owner, repo] = (projectName && projectName.split('/')) || [];\n const details = useWorkflowRunsDetails({ hostname, owner, repo });\n const jobs = useWorkflowRunJobs({ hostname, owner, repo });\n\n const classes = useStyles();\n\n if (details.error && details.error.message) {\n return (\n <Typography variant=\"h6\" color=\"error\">\n Failed to load build, {details.error.message}\n </Typography>\n );\n } else if (details.loading) {\n return <LinearProgress />;\n }\n return (\n <div className={classes.root}>\n <Box mb={3}>\n <Breadcrumbs aria-label=\"breadcrumb\">\n <Link to=\"..\">Workflow runs</Link>\n <Typography>Workflow run details</Typography>\n </Breadcrumbs>\n </Box>\n <TableContainer component={Paper} className={classes.table}>\n <Table>\n <TableBody>\n <TableRow>\n <TableCell>\n <Typography noWrap>Branch</Typography>\n </TableCell>\n <TableCell>{details.value?.head_branch}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Message</Typography>\n </TableCell>\n <TableCell>{details.value?.head_commit?.message}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Commit ID</Typography>\n </TableCell>\n <TableCell>{details.value?.head_commit?.id}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Workflow</Typography>\n </TableCell>\n <TableCell>{details.value?.name}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Status</Typography>\n </TableCell>\n <TableCell>\n <WorkflowRunStatus\n status={details.value?.status || undefined}\n conclusion={details.value?.conclusion || undefined}\n />\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Author</Typography>\n </TableCell>\n <TableCell>{`${details.value?.head_commit?.author?.name} (${details.value?.head_commit?.author?.email})`}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Links</Typography>\n </TableCell>\n <TableCell>\n {details.value?.html_url && (\n <Link to={details.value.html_url}>\n Workflow runs on GitHub{' '}\n <ExternalLinkIcon className={classes.externalLinkIcon} />\n </Link>\n )}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell colSpan={2}>\n <Typography noWrap>Jobs</Typography>\n {jobs.loading ? (\n <CircularProgress />\n ) : (\n <JobsList jobs={jobs.value} entity={entity} />\n )}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowRunDetails.esm.js","sources":["../../../src/components/WorkflowRunDetails/WorkflowRunDetails.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { Entity } from '@backstage/catalog-model';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Box from '@material-ui/core/Box';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Paper from '@material-ui/core/Paper';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableRow from '@material-ui/core/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExternalLinkIcon from '@material-ui/icons/Launch';\nimport { DateTime } from 'luxon';\nimport { Job, Jobs, Step } from '../../api';\nimport { getProjectNameFromEntity } from '../getProjectNameFromEntity';\nimport { WorkflowRunStatus } from '../WorkflowRunStatus';\nimport { useWorkflowRunJobs } from './useWorkflowRunJobs';\nimport { useWorkflowRunsDetails } from './useWorkflowRunsDetails';\nimport { WorkflowRunLogs } from '../WorkflowRunLogs';\nimport { Breadcrumbs, Link } from '@backstage/core-components';\nimport { getHostnameFromEntity } from '../getHostnameFromEntity';\n\nconst useStyles = makeStyles<Theme>(theme => ({\n root: {\n maxWidth: 720,\n margin: theme.spacing(2),\n },\n title: {\n padding: theme.spacing(1, 0, 2, 0),\n },\n table: {\n padding: theme.spacing(1),\n },\n accordionDetails: {\n padding: 0,\n },\n button: {\n order: -1,\n marginRight: 0,\n marginLeft: '-20px',\n },\n externalLinkIcon: {\n fontSize: 'inherit',\n verticalAlign: 'bottom',\n },\n}));\n\nconst getElapsedTime = (start: string | undefined, end: string | undefined) => {\n if (!start || !end) {\n return '';\n }\n const startDate = DateTime.fromISO(start);\n const endDate = end ? DateTime.fromISO(end) : DateTime.now();\n const diff = endDate.diff(startDate);\n const timeElapsed = diff.toFormat(`m 'minutes' s 'seconds'`);\n return timeElapsed;\n};\n\nconst StepView = ({ step }: { step: Step }) => {\n return (\n <TableRow>\n <TableCell>\n <ListItemText\n primary={step.name}\n secondary={getElapsedTime(step.started_at, step.completed_at)}\n />\n </TableCell>\n <TableCell>\n <WorkflowRunStatus\n status={step.status.toLocaleUpperCase('en-US')}\n conclusion={step.conclusion?.toLocaleUpperCase('en-US')}\n />\n </TableCell>\n </TableRow>\n );\n};\n\nconst JobListItem = ({\n job,\n className,\n entity,\n}: {\n job: Job;\n className: string;\n entity: Entity;\n}) => {\n const classes = useStyles();\n return (\n <Accordion TransitionProps={{ unmountOnExit: true }} className={className}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n IconButtonProps={{\n className: classes.button,\n }}\n >\n <Typography variant=\"button\">\n {job.name} ({getElapsedTime(job.started_at, job.completed_at)})\n </Typography>\n </AccordionSummary>\n <AccordionDetails className={classes.accordionDetails}>\n <TableContainer>\n <Table>\n {job.steps?.map(step => (\n <StepView key={step.number} step={step} />\n ))}\n </Table>\n </TableContainer>\n </AccordionDetails>\n {job.status === 'queued' || job.status === 'in_progress' ? (\n <WorkflowRunLogs runId={job.id} inProgress entity={entity} />\n ) : (\n <WorkflowRunLogs runId={job.id} inProgress={false} entity={entity} />\n )}\n </Accordion>\n );\n};\n\nconst JobsList = ({ jobs, entity }: { jobs?: Jobs; entity: Entity }) => {\n const classes = useStyles();\n return (\n <Box>\n {jobs &&\n jobs.total_count > 0 &&\n jobs.jobs.map(job => (\n <JobListItem\n key={job.id}\n job={job}\n className={\n job.status !== 'success' ? classes.failed : classes.success\n }\n entity={entity}\n />\n ))}\n </Box>\n );\n};\n\nexport const WorkflowRunDetails = ({ entity }: { entity: Entity }) => {\n const projectName = getProjectNameFromEntity(entity);\n\n const hostname = getHostnameFromEntity(entity);\n const [owner, repo] = (projectName && projectName.split('/')) || [];\n const details = useWorkflowRunsDetails({ hostname, owner, repo });\n const jobs = useWorkflowRunJobs({ hostname, owner, repo });\n\n const classes = useStyles();\n\n if (details.error && details.error.message) {\n return (\n <Typography variant=\"h6\" color=\"error\">\n Failed to load build, {details.error.message}\n </Typography>\n );\n } else if (details.loading) {\n return <LinearProgress />;\n }\n return (\n <div className={classes.root}>\n <Box mb={3}>\n <Breadcrumbs aria-label=\"breadcrumb\">\n <Link to=\"..\">Workflow runs</Link>\n <Typography>Workflow run details</Typography>\n </Breadcrumbs>\n </Box>\n <TableContainer component={Paper} className={classes.table}>\n <Table>\n <TableBody>\n <TableRow>\n <TableCell>\n <Typography noWrap>Branch</Typography>\n </TableCell>\n <TableCell>{details.value?.head_branch}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Message</Typography>\n </TableCell>\n <TableCell>{details.value?.head_commit?.message}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Commit ID</Typography>\n </TableCell>\n <TableCell>{details.value?.head_commit?.id}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Workflow</Typography>\n </TableCell>\n <TableCell>{details.value?.name}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Status</Typography>\n </TableCell>\n <TableCell>\n <WorkflowRunStatus\n status={details.value?.status || undefined}\n conclusion={details.value?.conclusion || undefined}\n />\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Author</Typography>\n </TableCell>\n <TableCell>{`${details.value?.head_commit?.author?.name} (${details.value?.head_commit?.author?.email})`}</TableCell>\n </TableRow>\n <TableRow>\n <TableCell>\n <Typography noWrap>Links</Typography>\n </TableCell>\n <TableCell>\n {details.value?.html_url && (\n <Link to={details.value.html_url}>\n Workflow runs on GitHub{' '}\n <ExternalLinkIcon className={classes.externalLinkIcon} />\n </Link>\n )}\n </TableCell>\n </TableRow>\n <TableRow>\n <TableCell colSpan={2}>\n <Typography noWrap>Jobs</Typography>\n {jobs.loading ? (\n <CircularProgress />\n ) : (\n <JobsList jobs={jobs.value} entity={entity} />\n )}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import { LogViewer } from '@backstage/core-components';
2
3
  import Accordion from '@material-ui/core/Accordion';
3
4
  import AccordionSummary from '@material-ui/core/AccordionSummary';
@@ -10,7 +11,7 @@ import Zoom from '@material-ui/core/Zoom';
10
11
  import { makeStyles } from '@material-ui/core/styles';
11
12
  import DescriptionIcon from '@material-ui/icons/Description';
12
13
  import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
13
- import React from 'react';
14
+ import { useState } from 'react';
14
15
  import { getProjectNameFromEntity } from '../getProjectNameFromEntity.esm.js';
15
16
  import { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs.esm.js';
16
17
  import { getHostnameFromEntity } from '../getHostnameFromEntity.esm.js';
@@ -57,49 +58,54 @@ const WorkflowRunLogs = ({
57
58
  id: runId
58
59
  });
59
60
  const logText = jobLogs.value ? String(jobLogs.value) : void 0;
60
- const [open, setOpen] = React.useState(false);
61
+ const [open, setOpen] = useState(false);
61
62
  const handleOpen = () => {
62
63
  setOpen(true);
63
64
  };
64
65
  const handleClose = () => {
65
66
  setOpen(false);
66
67
  };
67
- return /* @__PURE__ */ React.createElement(Accordion, { TransitionProps: { unmountOnExit: true }, disabled: inProgress }, /* @__PURE__ */ React.createElement(
68
- AccordionSummary,
69
- {
70
- expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, null),
71
- IconButtonProps: {
72
- className: classes.button
73
- }
74
- },
75
- /* @__PURE__ */ React.createElement(Typography, { variant: "button" }, jobLogs.loading ? /* @__PURE__ */ React.createElement(CircularProgress, null) : "Job Log"),
76
- /* @__PURE__ */ React.createElement(Tooltip, { title: "Open Log", TransitionComponent: Zoom, arrow: true }, /* @__PURE__ */ React.createElement(
77
- DescriptionIcon,
68
+ return /* @__PURE__ */ jsxs(Accordion, { TransitionProps: { unmountOnExit: true }, disabled: inProgress, children: [
69
+ /* @__PURE__ */ jsxs(
70
+ AccordionSummary,
78
71
  {
79
- onClick: (event) => {
80
- event.stopPropagation();
81
- handleOpen();
72
+ expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
73
+ IconButtonProps: {
74
+ className: classes.button
82
75
  },
83
- style: { marginLeft: "auto" }
76
+ children: [
77
+ /* @__PURE__ */ jsx(Typography, { variant: "button", children: jobLogs.loading ? /* @__PURE__ */ jsx(CircularProgress, {}) : "Job Log" }),
78
+ /* @__PURE__ */ jsx(Tooltip, { title: "Open Log", TransitionComponent: Zoom, arrow: true, children: /* @__PURE__ */ jsx(
79
+ DescriptionIcon,
80
+ {
81
+ onClick: (event) => {
82
+ event.stopPropagation();
83
+ handleOpen();
84
+ },
85
+ style: { marginLeft: "auto" }
86
+ }
87
+ ) }),
88
+ /* @__PURE__ */ jsx(
89
+ Modal,
90
+ {
91
+ className: classes.modal,
92
+ onClick: (event) => event.stopPropagation(),
93
+ open,
94
+ onClose: handleClose,
95
+ children: /* @__PURE__ */ jsx(Fade, { in: open, children: /* @__PURE__ */ jsx("div", { className: classes.modalLogContainer, children: /* @__PURE__ */ jsx(
96
+ LogViewer,
97
+ {
98
+ text: logText ?? "No Values Found",
99
+ classes: { root: classes.log }
100
+ }
101
+ ) }) })
102
+ }
103
+ )
104
+ ]
84
105
  }
85
- )),
86
- /* @__PURE__ */ React.createElement(
87
- Modal,
88
- {
89
- className: classes.modal,
90
- onClick: (event) => event.stopPropagation(),
91
- open,
92
- onClose: handleClose
93
- },
94
- /* @__PURE__ */ React.createElement(Fade, { in: open }, /* @__PURE__ */ React.createElement("div", { className: classes.modalLogContainer }, /* @__PURE__ */ React.createElement(
95
- LogViewer,
96
- {
97
- text: logText ?? "No Values Found",
98
- classes: { root: classes.log }
99
- }
100
- )))
101
- )
102
- ), logText && /* @__PURE__ */ React.createElement("div", { className: classes.normalLogContainer }, /* @__PURE__ */ React.createElement(LogViewer, { text: logText, classes: { root: classes.log } })));
106
+ ),
107
+ logText && /* @__PURE__ */ jsx("div", { className: classes.normalLogContainer, children: /* @__PURE__ */ jsx(LogViewer, { text: logText, classes: { root: classes.log } }) })
108
+ ] });
103
109
  };
104
110
 
105
111
  export { WorkflowRunLogs };
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRunLogs.esm.js","sources":["../../../src/components/WorkflowRunLogs/WorkflowRunLogs.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { Entity } from '@backstage/catalog-model';\nimport { LogViewer } from '@backstage/core-components';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Fade from '@material-ui/core/Fade';\nimport Modal from '@material-ui/core/Modal';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport Zoom from '@material-ui/core/Zoom';\nimport { makeStyles } from '@material-ui/core/styles';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport React from 'react';\nimport { getProjectNameFromEntity } from '../getProjectNameFromEntity';\nimport { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs';\nimport { getHostnameFromEntity } from '../getHostnameFromEntity';\n\nconst useStyles = makeStyles(theme => ({\n button: {\n order: -1,\n marginRight: 0,\n marginLeft: '-20px',\n },\n modal: {\n display: 'flex',\n alignItems: 'center',\n width: '85%',\n height: '85%',\n justifyContent: 'center',\n margin: 'auto',\n },\n normalLogContainer: {\n height: '75vh',\n width: '100%',\n },\n modalLogContainer: {\n height: '100%',\n width: '100%',\n },\n log: {\n background: theme.palette.background.default,\n },\n}));\n\n/**\n * A component for Run Logs visualization.\n */\nexport const WorkflowRunLogs = ({\n entity,\n runId,\n inProgress,\n}: {\n entity: Entity;\n runId: number;\n inProgress: boolean;\n}) => {\n const classes = useStyles();\n const projectName = getProjectNameFromEntity(entity);\n\n const hostname = getHostnameFromEntity(entity);\n const [owner, repo] = (projectName && projectName.split('/')) || [];\n const jobLogs = useDownloadWorkflowRunLogs({\n hostname,\n owner,\n repo,\n id: runId,\n });\n const logText = jobLogs.value ? String(jobLogs.value) : undefined;\n const [open, setOpen] = React.useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n <Accordion TransitionProps={{ unmountOnExit: true }} disabled={inProgress}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n IconButtonProps={{\n className: classes.button,\n }}\n >\n <Typography variant=\"button\">\n {jobLogs.loading ? <CircularProgress /> : 'Job Log'}\n </Typography>\n <Tooltip title=\"Open Log\" TransitionComponent={Zoom} arrow>\n <DescriptionIcon\n onClick={event => {\n event.stopPropagation();\n handleOpen();\n }}\n style={{ marginLeft: 'auto' }}\n />\n </Tooltip>\n <Modal\n className={classes.modal}\n onClick={event => event.stopPropagation()}\n open={open}\n onClose={handleClose}\n >\n <Fade in={open}>\n <div className={classes.modalLogContainer}>\n <LogViewer\n text={logText ?? 'No Values Found'}\n classes={{ root: classes.log }}\n />\n </div>\n </Fade>\n </Modal>\n </AccordionSummary>\n {logText && (\n <div className={classes.normalLogContainer}>\n <LogViewer text={logText} classes={{ root: classes.log }} />\n </div>\n )}\n </Accordion>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkCA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,CAAA,CAAA;AAAA,IACP,WAAa,EAAA,CAAA;AAAA,IACb,UAAY,EAAA;AAAA,GACd;AAAA,EACA,KAAO,EAAA;AAAA,IACL,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,KAAO,EAAA,KAAA;AAAA,IACP,MAAQ,EAAA,KAAA;AAAA,IACR,cAAgB,EAAA,QAAA;AAAA,IAChB,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,MAAQ,EAAA,MAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,MAAQ,EAAA,MAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAAA,EACA,GAAK,EAAA;AAAA,IACH,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA;AAAA;AAEzC,CAAE,CAAA,CAAA;AAKK,MAAM,kBAAkB,CAAC;AAAA,EAC9B,MAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAIM,KAAA;AACJ,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAM,MAAA,WAAA,GAAc,yBAAyB,MAAM,CAAA;AAEnD,EAAM,MAAA,QAAA,GAAW,sBAAsB,MAAM,CAAA;AAC7C,EAAM,MAAA,CAAC,OAAO,IAAI,CAAA,GAAK,eAAe,WAAY,CAAA,KAAA,CAAM,GAAG,CAAA,IAAM,EAAC;AAClE,EAAA,MAAM,UAAU,0BAA2B,CAAA;AAAA,IACzC,QAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,EAAI,EAAA;AAAA,GACL,CAAA;AACD,EAAA,MAAM,UAAU,OAAQ,CAAA,KAAA,GAAQ,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,KAAA,CAAA;AACxD,EAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,GACf;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,aAAU,eAAiB,EAAA,EAAE,eAAe,IAAK,EAAA,EAAG,UAAU,UAC7D,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,UAAA,sCAAa,cAAe,EAAA,IAAA,CAAA;AAAA,MAC5B,eAAiB,EAAA;AAAA,QACf,WAAW,OAAQ,CAAA;AAAA;AACrB,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,QAAA,EAAA,EACjB,QAAQ,OAAU,mBAAA,KAAA,CAAA,aAAA,CAAC,gBAAiB,EAAA,IAAA,CAAA,GAAK,SAC5C,CAAA;AAAA,wCACC,OAAQ,EAAA,EAAA,KAAA,EAAM,YAAW,mBAAqB,EAAA,IAAA,EAAM,OAAK,IACxD,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,SAAS,CAAS,KAAA,KAAA;AAChB,UAAA,KAAA,CAAM,eAAgB,EAAA;AACtB,UAAW,UAAA,EAAA;AAAA,SACb;AAAA,QACA,KAAA,EAAO,EAAE,UAAA,EAAY,MAAO;AAAA;AAAA,KAEhC,CAAA;AAAA,oBACA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAQ,CAAA,KAAA;AAAA,QACnB,OAAA,EAAS,CAAS,KAAA,KAAA,KAAA,CAAM,eAAgB,EAAA;AAAA,QACxC,IAAA;AAAA,QACA,OAAS,EAAA;AAAA,OAAA;AAAA,sBAET,KAAA,CAAA,aAAA,CAAC,QAAK,EAAI,EAAA,IAAA,EAAA,sCACP,KAAI,EAAA,EAAA,SAAA,EAAW,QAAQ,iBACtB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,MAAM,OAAW,IAAA,iBAAA;AAAA,UACjB,OAAS,EAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,GAAI;AAAA;AAAA,OAEjC,CACF;AAAA;AACF,KAED,OACC,oBAAA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAW,EAAA,OAAA,CAAQ,sCACrB,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,IAAM,EAAA,OAAA,EAAS,SAAS,EAAE,IAAA,EAAM,QAAQ,GAAI,EAAA,EAAG,CAC5D,CAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"WorkflowRunLogs.esm.js","sources":["../../../src/components/WorkflowRunLogs/WorkflowRunLogs.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { Entity } from '@backstage/catalog-model';\nimport { LogViewer } from '@backstage/core-components';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Fade from '@material-ui/core/Fade';\nimport Modal from '@material-ui/core/Modal';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport Zoom from '@material-ui/core/Zoom';\nimport { makeStyles } from '@material-ui/core/styles';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { useState } from 'react';\nimport { getProjectNameFromEntity } from '../getProjectNameFromEntity';\nimport { useDownloadWorkflowRunLogs } from './useDownloadWorkflowRunLogs';\nimport { getHostnameFromEntity } from '../getHostnameFromEntity';\n\nconst useStyles = makeStyles(theme => ({\n button: {\n order: -1,\n marginRight: 0,\n marginLeft: '-20px',\n },\n modal: {\n display: 'flex',\n alignItems: 'center',\n width: '85%',\n height: '85%',\n justifyContent: 'center',\n margin: 'auto',\n },\n normalLogContainer: {\n height: '75vh',\n width: '100%',\n },\n modalLogContainer: {\n height: '100%',\n width: '100%',\n },\n log: {\n background: theme.palette.background.default,\n },\n}));\n\n/**\n * A component for Run Logs visualization.\n */\nexport const WorkflowRunLogs = ({\n entity,\n runId,\n inProgress,\n}: {\n entity: Entity;\n runId: number;\n inProgress: boolean;\n}) => {\n const classes = useStyles();\n const projectName = getProjectNameFromEntity(entity);\n\n const hostname = getHostnameFromEntity(entity);\n const [owner, repo] = (projectName && projectName.split('/')) || [];\n const jobLogs = useDownloadWorkflowRunLogs({\n hostname,\n owner,\n repo,\n id: runId,\n });\n const logText = jobLogs.value ? String(jobLogs.value) : undefined;\n const [open, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n <Accordion TransitionProps={{ unmountOnExit: true }} disabled={inProgress}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n IconButtonProps={{\n className: classes.button,\n }}\n >\n <Typography variant=\"button\">\n {jobLogs.loading ? <CircularProgress /> : 'Job Log'}\n </Typography>\n <Tooltip title=\"Open Log\" TransitionComponent={Zoom} arrow>\n <DescriptionIcon\n onClick={event => {\n event.stopPropagation();\n handleOpen();\n }}\n style={{ marginLeft: 'auto' }}\n />\n </Tooltip>\n <Modal\n className={classes.modal}\n onClick={event => event.stopPropagation()}\n open={open}\n onClose={handleClose}\n >\n <Fade in={open}>\n <div className={classes.modalLogContainer}>\n <LogViewer\n text={logText ?? 'No Values Found'}\n classes={{ root: classes.log }}\n />\n </div>\n </Fade>\n </Modal>\n </AccordionSummary>\n {logText && (\n <div className={classes.normalLogContainer}>\n <LogViewer text={logText} classes={{ root: classes.log }} />\n </div>\n )}\n </Accordion>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,CAAA,CAAA;AAAA,IACP,WAAa,EAAA,CAAA;AAAA,IACb,UAAY,EAAA;AAAA,GACd;AAAA,EACA,KAAO,EAAA;AAAA,IACL,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,KAAO,EAAA,KAAA;AAAA,IACP,MAAQ,EAAA,KAAA;AAAA,IACR,cAAgB,EAAA,QAAA;AAAA,IAChB,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,MAAQ,EAAA,MAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAAA,EACA,iBAAmB,EAAA;AAAA,IACjB,MAAQ,EAAA,MAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAAA,EACA,GAAK,EAAA;AAAA,IACH,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA;AAAA;AAEzC,CAAE,CAAA,CAAA;AAKK,MAAM,kBAAkB,CAAC;AAAA,EAC9B,MAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAIM,KAAA;AACJ,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAM,MAAA,WAAA,GAAc,yBAAyB,MAAM,CAAA;AAEnD,EAAM,MAAA,QAAA,GAAW,sBAAsB,MAAM,CAAA;AAC7C,EAAM,MAAA,CAAC,OAAO,IAAI,CAAA,GAAK,eAAe,WAAY,CAAA,KAAA,CAAM,GAAG,CAAA,IAAM,EAAC;AAClE,EAAA,MAAM,UAAU,0BAA2B,CAAA;AAAA,IACzC,QAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,EAAI,EAAA;AAAA,GACL,CAAA;AACD,EAAA,MAAM,UAAU,OAAQ,CAAA,KAAA,GAAQ,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,KAAA,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,GACd;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,GACf;AAEA,EACE,uBAAA,IAAA,CAAC,aAAU,eAAiB,EAAA,EAAE,eAAe,IAAK,EAAA,EAAG,UAAU,UAC7D,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,UAAA,sBAAa,cAAe,EAAA,EAAA,CAAA;AAAA,QAC5B,eAAiB,EAAA;AAAA,UACf,WAAW,OAAQ,CAAA;AAAA,SACrB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,UAAA,EAAA,EAAW,SAAQ,QACjB,EAAA,QAAA,EAAA,OAAA,CAAQ,0BAAW,GAAA,CAAA,gBAAA,EAAA,EAAiB,IAAK,SAC5C,EAAA,CAAA;AAAA,8BACC,OAAQ,EAAA,EAAA,KAAA,EAAM,YAAW,mBAAqB,EAAA,IAAA,EAAM,OAAK,IACxD,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,SAAS,CAAS,KAAA,KAAA;AAChB,gBAAA,KAAA,CAAM,eAAgB,EAAA;AACtB,gBAAW,UAAA,EAAA;AAAA,eACb;AAAA,cACA,KAAA,EAAO,EAAE,UAAA,EAAY,MAAO;AAAA;AAAA,WAEhC,EAAA,CAAA;AAAA,0BACA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,OAAQ,CAAA,KAAA;AAAA,cACnB,OAAA,EAAS,CAAS,KAAA,KAAA,KAAA,CAAM,eAAgB,EAAA;AAAA,cACxC,IAAA;AAAA,cACA,OAAS,EAAA,WAAA;AAAA,cAET,QAAA,kBAAA,GAAA,CAAC,QAAK,EAAI,EAAA,IAAA,EACR,8BAAC,KAAI,EAAA,EAAA,SAAA,EAAW,QAAQ,iBACtB,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBACC,MAAM,OAAW,IAAA,iBAAA;AAAA,kBACjB,OAAS,EAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,GAAI;AAAA;AAAA,iBAEjC,CACF,EAAA;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,IACC,2BACE,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,OAAA,CAAQ,oBACtB,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA,EAAU,IAAM,EAAA,OAAA,EAAS,SAAS,EAAE,IAAA,EAAM,OAAQ,CAAA,GAAA,IAAO,CAC5D,EAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { StatusPending, StatusOK, StatusError, StatusWarning, StatusAborted, StatusRunning } from '@backstage/core-components';
3
3
  import Box from '@material-ui/core/Box';
4
4
  import Typography from '@material-ui/core/Typography';
@@ -13,7 +13,10 @@ const useStyles = makeStyles(() => ({
13
13
  }));
14
14
  const WorkflowRunStatus = (props) => {
15
15
  const classes = useStyles();
16
- return /* @__PURE__ */ React.createElement(Box, { display: "flex", justifyContent: "center", alignItems: "center" }, /* @__PURE__ */ React.createElement(Box, { className: classes.statusIcon }, /* @__PURE__ */ React.createElement(WorkflowIcon, { ...props })), /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, getStatusDescription(props)));
16
+ return /* @__PURE__ */ jsxs(Box, { display: "flex", justifyContent: "center", alignItems: "center", children: [
17
+ /* @__PURE__ */ jsx(Box, { className: classes.statusIcon, children: /* @__PURE__ */ jsx(WorkflowIcon, { ...props }) }),
18
+ /* @__PURE__ */ jsx(Typography, { variant: "body2", children: getStatusDescription(props) })
19
+ ] });
17
20
  };
18
21
  function WorkflowIcon({
19
22
  status,
@@ -22,23 +25,23 @@ function WorkflowIcon({
22
25
  if (status === void 0) return null;
23
26
  switch (status.toLocaleLowerCase("en-US")) {
24
27
  case "queued":
25
- return /* @__PURE__ */ React.createElement(StatusPending, null);
28
+ return /* @__PURE__ */ jsx(StatusPending, {});
26
29
  case "in_progress":
27
- return /* @__PURE__ */ React.createElement(StatusRunning, null);
30
+ return /* @__PURE__ */ jsx(StatusRunning, {});
28
31
  case "completed":
29
32
  switch (conclusion?.toLocaleLowerCase("en-US")) {
30
33
  case "skipped":
31
34
  case "cancelled":
32
- return /* @__PURE__ */ React.createElement(StatusAborted, null);
35
+ return /* @__PURE__ */ jsx(StatusAborted, {});
33
36
  case "timed_out":
34
- return /* @__PURE__ */ React.createElement(StatusWarning, null);
37
+ return /* @__PURE__ */ jsx(StatusWarning, {});
35
38
  case "failure":
36
- return /* @__PURE__ */ React.createElement(StatusError, null);
39
+ return /* @__PURE__ */ jsx(StatusError, {});
37
40
  default:
38
- return /* @__PURE__ */ React.createElement(StatusOK, null);
41
+ return /* @__PURE__ */ jsx(StatusOK, {});
39
42
  }
40
43
  default:
41
- return /* @__PURE__ */ React.createElement(StatusPending, null);
44
+ return /* @__PURE__ */ jsx(StatusPending, {});
42
45
  }
43
46
  }
44
47
  function getStatusDescription({
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRunStatus.esm.js","sources":["../../../src/components/WorkflowRunStatus/WorkflowRunStatus.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 React from 'react';\nimport {\n StatusPending,\n StatusRunning,\n StatusOK,\n StatusWarning,\n StatusAborted,\n StatusError,\n} from '@backstage/core-components';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n statusIcon: {\n '& svg': {\n position: 'static',\n },\n },\n}));\n\nexport const WorkflowRunStatus = (props: {\n status?: string;\n conclusion?: string;\n}) => {\n const classes = useStyles();\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Box className={classes.statusIcon}>\n <WorkflowIcon {...props} />\n </Box>\n <Typography variant=\"body2\">{getStatusDescription(props)}</Typography>\n </Box>\n );\n};\n\nexport function WorkflowIcon({\n status,\n conclusion,\n}: {\n status?: string;\n conclusion?: string;\n}) {\n if (status === undefined) return null;\n switch (status.toLocaleLowerCase('en-US')) {\n case 'queued':\n return <StatusPending />;\n\n case 'in_progress':\n return <StatusRunning />;\n case 'completed':\n switch (conclusion?.toLocaleLowerCase('en-US')) {\n case 'skipped':\n case 'cancelled':\n return <StatusAborted />;\n\n case 'timed_out':\n return <StatusWarning />;\n case 'failure':\n return <StatusError />;\n default:\n return <StatusOK />;\n }\n default:\n return <StatusPending />;\n }\n}\n\nexport function getStatusDescription({\n status,\n conclusion,\n}: {\n status?: string;\n conclusion?: string;\n}) {\n if (status === undefined) return '';\n switch (status.toLocaleLowerCase('en-US')) {\n case 'queued':\n return 'Queued';\n case 'in_progress':\n return 'In progress';\n case 'completed':\n switch (conclusion?.toLocaleLowerCase('en-US')) {\n case 'skipped':\n case 'cancelled':\n return 'Aborted';\n case 'timed_out':\n return 'Timed out';\n case 'failure':\n return 'Error';\n default:\n return 'Completed';\n }\n default:\n return 'Pending';\n }\n}\n"],"names":[],"mappings":";;;;;;AA6BA,MAAM,SAAA,GAAY,WAAW,OAAO;AAAA,EAClC,UAAY,EAAA;AAAA,IACV,OAAS,EAAA;AAAA,MACP,QAAU,EAAA;AAAA;AACZ;AAEJ,CAAE,CAAA,CAAA;AAEW,MAAA,iBAAA,GAAoB,CAAC,KAG5B,KAAA;AACJ,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,OAAA,EAAQ,MAAO,EAAA,cAAA,EAAe,QAAS,EAAA,UAAA,EAAW,QACrD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,UAAA,EAAA,sCACrB,YAAc,EAAA,EAAA,GAAG,KAAO,EAAA,CAC3B,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAS,EAAA,EAAA,oBAAA,CAAqB,KAAK,CAAE,CAC3D,CAAA;AAEJ;AAEO,SAAS,YAAa,CAAA;AAAA,EAC3B,MAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAI,IAAA,MAAA,KAAW,QAAkB,OAAA,IAAA;AACjC,EAAQ,QAAA,MAAA,CAAO,iBAAkB,CAAA,OAAO,CAAG;AAAA,IACzC,KAAK,QAAA;AACH,MAAA,2CAAQ,aAAc,EAAA,IAAA,CAAA;AAAA,IAExB,KAAK,aAAA;AACH,MAAA,2CAAQ,aAAc,EAAA,IAAA,CAAA;AAAA,IACxB,KAAK,WAAA;AACH,MAAQ,QAAA,UAAA,EAAY,iBAAkB,CAAA,OAAO,CAAG;AAAA,QAC9C,KAAK,SAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAA,2CAAQ,aAAc,EAAA,IAAA,CAAA;AAAA,QAExB,KAAK,WAAA;AACH,UAAA,2CAAQ,aAAc,EAAA,IAAA,CAAA;AAAA,QACxB,KAAK,SAAA;AACH,UAAA,2CAAQ,WAAY,EAAA,IAAA,CAAA;AAAA,QACtB;AACE,UAAA,2CAAQ,QAAS,EAAA,IAAA,CAAA;AAAA;AACrB,IACF;AACE,MAAA,2CAAQ,aAAc,EAAA,IAAA,CAAA;AAAA;AAE5B;AAEO,SAAS,oBAAqB,CAAA;AAAA,EACnC,MAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAI,IAAA,MAAA,KAAW,QAAkB,OAAA,EAAA;AACjC,EAAQ,QAAA,MAAA,CAAO,iBAAkB,CAAA,OAAO,CAAG;AAAA,IACzC,KAAK,QAAA;AACH,MAAO,OAAA,QAAA;AAAA,IACT,KAAK,aAAA;AACH,MAAO,OAAA,aAAA;AAAA,IACT,KAAK,WAAA;AACH,MAAQ,QAAA,UAAA,EAAY,iBAAkB,CAAA,OAAO,CAAG;AAAA,QAC9C,KAAK,SAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAO,OAAA,SAAA;AAAA,QACT,KAAK,WAAA;AACH,UAAO,OAAA,WAAA;AAAA,QACT,KAAK,SAAA;AACH,UAAO,OAAA,OAAA;AAAA,QACT;AACE,UAAO,OAAA,WAAA;AAAA;AACX,IACF;AACE,MAAO,OAAA,SAAA;AAAA;AAEb;;;;"}
1
+ {"version":3,"file":"WorkflowRunStatus.esm.js","sources":["../../../src/components/WorkflowRunStatus/WorkflowRunStatus.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 {\n StatusPending,\n StatusRunning,\n StatusOK,\n StatusWarning,\n StatusAborted,\n StatusError,\n} from '@backstage/core-components';\nimport Box from '@material-ui/core/Box';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n statusIcon: {\n '& svg': {\n position: 'static',\n },\n },\n}));\n\nexport const WorkflowRunStatus = (props: {\n status?: string;\n conclusion?: string;\n}) => {\n const classes = useStyles();\n return (\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\n <Box className={classes.statusIcon}>\n <WorkflowIcon {...props} />\n </Box>\n <Typography variant=\"body2\">{getStatusDescription(props)}</Typography>\n </Box>\n );\n};\n\nexport function WorkflowIcon({\n status,\n conclusion,\n}: {\n status?: string;\n conclusion?: string;\n}) {\n if (status === undefined) return null;\n switch (status.toLocaleLowerCase('en-US')) {\n case 'queued':\n return <StatusPending />;\n\n case 'in_progress':\n return <StatusRunning />;\n case 'completed':\n switch (conclusion?.toLocaleLowerCase('en-US')) {\n case 'skipped':\n case 'cancelled':\n return <StatusAborted />;\n\n case 'timed_out':\n return <StatusWarning />;\n case 'failure':\n return <StatusError />;\n default:\n return <StatusOK />;\n }\n default:\n return <StatusPending />;\n }\n}\n\nexport function getStatusDescription({\n status,\n conclusion,\n}: {\n status?: string;\n conclusion?: string;\n}) {\n if (status === undefined) return '';\n switch (status.toLocaleLowerCase('en-US')) {\n case 'queued':\n return 'Queued';\n case 'in_progress':\n return 'In progress';\n case 'completed':\n switch (conclusion?.toLocaleLowerCase('en-US')) {\n case 'skipped':\n case 'cancelled':\n return 'Aborted';\n case 'timed_out':\n return 'Timed out';\n case 'failure':\n return 'Error';\n default:\n return 'Completed';\n }\n default:\n return 'Pending';\n }\n}\n"],"names":[],"mappings":";;;;;;AA4BA,MAAM,SAAA,GAAY,WAAW,OAAO;AAAA,EAClC,UAAY,EAAA;AAAA,IACV,OAAS,EAAA;AAAA,MACP,QAAU,EAAA;AAAA;AACZ;AAEJ,CAAE,CAAA,CAAA;AAEW,MAAA,iBAAA,GAAoB,CAAC,KAG5B,KAAA;AACJ,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,4BACG,GAAI,EAAA,EAAA,OAAA,EAAQ,QAAO,cAAe,EAAA,QAAA,EAAS,YAAW,QACrD,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,GAAA,EAAA,EAAI,WAAW,OAAQ,CAAA,UAAA,EACtB,8BAAC,YAAc,EAAA,EAAA,GAAG,OAAO,CAC3B,EAAA,CAAA;AAAA,wBACC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAS,EAAA,QAAA,EAAA,oBAAA,CAAqB,KAAK,CAAE,EAAA;AAAA,GAC3D,EAAA,CAAA;AAEJ;AAEO,SAAS,YAAa,CAAA;AAAA,EAC3B,MAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAI,IAAA,MAAA,KAAW,QAAkB,OAAA,IAAA;AACjC,EAAQ,QAAA,MAAA,CAAO,iBAAkB,CAAA,OAAO,CAAG;AAAA,IACzC,KAAK,QAAA;AACH,MAAA,2BAAQ,aAAc,EAAA,EAAA,CAAA;AAAA,IAExB,KAAK,aAAA;AACH,MAAA,2BAAQ,aAAc,EAAA,EAAA,CAAA;AAAA,IACxB,KAAK,WAAA;AACH,MAAQ,QAAA,UAAA,EAAY,iBAAkB,CAAA,OAAO,CAAG;AAAA,QAC9C,KAAK,SAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAA,2BAAQ,aAAc,EAAA,EAAA,CAAA;AAAA,QAExB,KAAK,WAAA;AACH,UAAA,2BAAQ,aAAc,EAAA,EAAA,CAAA;AAAA,QACxB,KAAK,SAAA;AACH,UAAA,2BAAQ,WAAY,EAAA,EAAA,CAAA;AAAA,QACtB;AACE,UAAA,2BAAQ,QAAS,EAAA,EAAA,CAAA;AAAA;AACrB,IACF;AACE,MAAA,2BAAQ,aAAc,EAAA,EAAA,CAAA;AAAA;AAE5B;AAEO,SAAS,oBAAqB,CAAA;AAAA,EACnC,MAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAI,IAAA,MAAA,KAAW,QAAkB,OAAA,EAAA;AACjC,EAAQ,QAAA,MAAA,CAAO,iBAAkB,CAAA,OAAO,CAAG;AAAA,IACzC,KAAK,QAAA;AACH,MAAO,OAAA,QAAA;AAAA,IACT,KAAK,aAAA;AACH,MAAO,OAAA,aAAA;AAAA,IACT,KAAK,WAAA;AACH,MAAQ,QAAA,UAAA,EAAY,iBAAkB,CAAA,OAAO,CAAG;AAAA,QAC9C,KAAK,SAAA;AAAA,QACL,KAAK,WAAA;AACH,UAAO,OAAA,SAAA;AAAA,QACT,KAAK,WAAA;AACH,UAAO,OAAA,WAAA;AAAA,QACT,KAAK,SAAA;AACH,UAAO,OAAA,OAAA;AAAA,QACT;AACE,UAAO,OAAA,WAAA;AAAA;AACX,IACF;AACE,MAAO,OAAA,SAAA;AAAA;AAEb;;;;"}