@backstage/plugin-scaffolder-react 1.15.0-next.0 → 1.15.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/alpha.d.ts +22 -21
  3. package/dist/hooks/useCustomFieldExtensions.esm.js +2 -1
  4. package/dist/hooks/useCustomFieldExtensions.esm.js.map +1 -1
  5. package/dist/index.d.ts +4 -3
  6. package/dist/layouts/createScaffolderLayout.esm.js.map +1 -1
  7. package/dist/next/components/Form/DescriptionFieldTemplate.esm.js +3 -3
  8. package/dist/next/components/Form/DescriptionFieldTemplate.esm.js.map +1 -1
  9. package/dist/next/components/Form/FieldTemplate.esm.js +18 -18
  10. package/dist/next/components/Form/FieldTemplate.esm.js.map +1 -1
  11. package/dist/next/components/Form/Form.esm.js +6 -5
  12. package/dist/next/components/Form/Form.esm.js.map +1 -1
  13. package/dist/next/components/PasswordWidget/PasswordWidget.esm.js +17 -14
  14. package/dist/next/components/PasswordWidget/PasswordWidget.esm.js.map +1 -1
  15. package/dist/next/components/ReviewState/ReviewState.esm.js +2 -2
  16. package/dist/next/components/ReviewState/ReviewState.esm.js.map +1 -1
  17. package/dist/next/components/ScaffolderField/ScaffolderField.esm.js +17 -15
  18. package/dist/next/components/ScaffolderField/ScaffolderField.esm.js.map +1 -1
  19. package/dist/next/components/ScaffolderPageContextMenu/ScaffolderPageContextMenu.esm.js +65 -44
  20. package/dist/next/components/ScaffolderPageContextMenu/ScaffolderPageContextMenu.esm.js.map +1 -1
  21. package/dist/next/components/SecretWidget/SecretWidget.esm.js +3 -2
  22. package/dist/next/components/SecretWidget/SecretWidget.esm.js.map +1 -1
  23. package/dist/next/components/Stepper/ErrorListTemplate/errorListTemplate.esm.js +11 -8
  24. package/dist/next/components/Stepper/ErrorListTemplate/errorListTemplate.esm.js.map +1 -1
  25. package/dist/next/components/Stepper/FieldOverrides/DescriptionField.esm.js +2 -2
  26. package/dist/next/components/Stepper/FieldOverrides/DescriptionField.esm.js.map +1 -1
  27. package/dist/next/components/Stepper/Stepper.esm.js +106 -90
  28. package/dist/next/components/Stepper/Stepper.esm.js.map +1 -1
  29. package/dist/next/components/TaskLogStream/TaskLogStream.esm.js +3 -3
  30. package/dist/next/components/TaskLogStream/TaskLogStream.esm.js.map +1 -1
  31. package/dist/next/components/TaskSteps/StepIcon.esm.js +10 -10
  32. package/dist/next/components/TaskSteps/StepIcon.esm.js.map +1 -1
  33. package/dist/next/components/TaskSteps/StepTime.esm.js +3 -2
  34. package/dist/next/components/TaskSteps/StepTime.esm.js.map +1 -1
  35. package/dist/next/components/TaskSteps/TaskBorder.esm.js +3 -3
  36. package/dist/next/components/TaskSteps/TaskBorder.esm.js.map +1 -1
  37. package/dist/next/components/TaskSteps/TaskSteps.esm.js +43 -38
  38. package/dist/next/components/TaskSteps/TaskSteps.esm.js.map +1 -1
  39. package/dist/next/components/TemplateCard/CardHeader.esm.js +15 -9
  40. package/dist/next/components/TemplateCard/CardHeader.esm.js.map +1 -1
  41. package/dist/next/components/TemplateCard/CardLink.esm.js +5 -2
  42. package/dist/next/components/TemplateCard/CardLink.esm.js.map +1 -1
  43. package/dist/next/components/TemplateCard/TemplateCard.esm.js +29 -19
  44. package/dist/next/components/TemplateCard/TemplateCard.esm.js.map +1 -1
  45. package/dist/next/components/TemplateCard/TemplateCardActions.esm.js +31 -25
  46. package/dist/next/components/TemplateCard/TemplateCardActions.esm.js.map +1 -1
  47. package/dist/next/components/TemplateCard/TemplateCardContent.esm.js +3 -3
  48. package/dist/next/components/TemplateCard/TemplateCardContent.esm.js.map +1 -1
  49. package/dist/next/components/TemplateCard/TemplateCardLinks.esm.js +35 -29
  50. package/dist/next/components/TemplateCard/TemplateCardLinks.esm.js.map +1 -1
  51. package/dist/next/components/TemplateCard/TemplateCardTags.esm.js +21 -18
  52. package/dist/next/components/TemplateCard/TemplateCardTags.esm.js.map +1 -1
  53. package/dist/next/components/TemplateCard/TemplateDetailButton.esm.js +13 -13
  54. package/dist/next/components/TemplateCard/TemplateDetailButton.esm.js.map +1 -1
  55. package/dist/next/components/TemplateCategoryPicker/TemplateCategoryPicker.esm.js +44 -41
  56. package/dist/next/components/TemplateCategoryPicker/TemplateCategoryPicker.esm.js.map +1 -1
  57. package/dist/next/components/TemplateGroup/TemplateGroup.esm.js +14 -11
  58. package/dist/next/components/TemplateGroup/TemplateGroup.esm.js.map +1 -1
  59. package/dist/next/components/TemplateGroups/TemplateGroups.esm.js +14 -8
  60. package/dist/next/components/TemplateGroups/TemplateGroups.esm.js.map +1 -1
  61. package/dist/next/components/TemplateOutputs/DefaultTemplateOutputs.esm.js +33 -27
  62. package/dist/next/components/TemplateOutputs/DefaultTemplateOutputs.esm.js.map +1 -1
  63. package/dist/next/components/TemplateOutputs/LinkOutputs.esm.js +4 -4
  64. package/dist/next/components/TemplateOutputs/LinkOutputs.esm.js.map +1 -1
  65. package/dist/next/components/TemplateOutputs/TextOutputs.esm.js +8 -8
  66. package/dist/next/components/TemplateOutputs/TextOutputs.esm.js.map +1 -1
  67. package/dist/next/components/Workflow/Workflow.esm.js +27 -23
  68. package/dist/next/components/Workflow/Workflow.esm.js.map +1 -1
  69. package/dist/secrets/SecretsContext.esm.js +6 -5
  70. package/dist/secrets/SecretsContext.esm.js.map +1 -1
  71. package/package.json +14 -14
@@ -1,9 +1,10 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
2
  import { Progress, Link } from '@backstage/core-components';
2
3
  import { useApi, errorApiRef } from '@backstage/core-plugin-api';
3
4
  import { useEntityList } from '@backstage/plugin-catalog-react';
4
5
  import { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
5
6
  import Typography from '@material-ui/core/Typography';
6
- import React, { useCallback } from 'react';
7
+ import { useCallback } from 'react';
7
8
  import { TemplateGroup } from '../TemplateGroup/TemplateGroup.esm.js';
8
9
 
9
10
  const TemplateGroups = (props) => {
@@ -17,16 +18,21 @@ const TemplateGroups = (props) => {
17
18
  [onTemplateSelected]
18
19
  );
19
20
  if (loading) {
20
- return /* @__PURE__ */ React.createElement(Progress, null);
21
+ return /* @__PURE__ */ jsx(Progress, {});
21
22
  }
22
23
  if (error) {
23
24
  errorApi.post(error);
24
25
  return null;
25
26
  }
26
27
  if (!entities || !entities.length) {
27
- return /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, "No templates found that match your filter. Learn more about", " ", /* @__PURE__ */ React.createElement(Link, { to: "https://backstage.io/docs/features/software-templates/adding-templates" }, "adding templates"), ".");
28
+ return /* @__PURE__ */ jsxs(Typography, { variant: "body2", children: [
29
+ "No templates found that match your filter. Learn more about",
30
+ " ",
31
+ /* @__PURE__ */ jsx(Link, { to: "https://backstage.io/docs/features/software-templates/adding-templates", children: "adding templates" }),
32
+ "."
33
+ ] });
28
34
  }
29
- return /* @__PURE__ */ React.createElement(React.Fragment, null, groups.map(({ title, filter }, index) => {
35
+ return /* @__PURE__ */ jsx(Fragment, { children: groups.map(({ title, filter }, index) => {
30
36
  const templates = entities.filter(isTemplateEntityV1beta3).filter((e) => templateFilter ? templateFilter(e) : true).filter(filter).map((template) => {
31
37
  const additionalLinks = props.additionalLinksForEntity?.(template) ?? [];
32
38
  return {
@@ -34,17 +40,17 @@ const TemplateGroups = (props) => {
34
40
  additionalLinks
35
41
  };
36
42
  });
37
- return /* @__PURE__ */ React.createElement(
43
+ return /* @__PURE__ */ jsx(
38
44
  TemplateGroup,
39
45
  {
40
- key: index,
41
46
  templates,
42
47
  title,
43
48
  components: { CardComponent: TemplateCardComponent },
44
49
  onSelected
45
- }
50
+ },
51
+ index
46
52
  );
47
- }));
53
+ }) });
48
54
  };
49
55
 
50
56
  export { TemplateGroups };
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateGroups.esm.js","sources":["../../../../src/next/components/TemplateGroups/TemplateGroups.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { Link, Progress } from '@backstage/core-components';\nimport { errorApiRef, IconComponent, useApi } from '@backstage/core-plugin-api';\nimport { useEntityList } from '@backstage/plugin-catalog-react';\nimport {\n isTemplateEntityV1beta3,\n TemplateEntityV1beta3,\n} from '@backstage/plugin-scaffolder-common';\nimport { TemplateGroupFilter } from '@backstage/plugin-scaffolder-react';\nimport Typography from '@material-ui/core/Typography';\nimport React, { useCallback } from 'react';\n\nimport { TemplateGroup } from '../TemplateGroup/TemplateGroup';\n\n/**\n * @alpha\n */\nexport interface TemplateGroupsProps {\n groups: TemplateGroupFilter[];\n templateFilter?: (entity: TemplateEntityV1beta3) => boolean;\n TemplateCardComponent?: React.ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n onTemplateSelected?: (template: TemplateEntityV1beta3) => void;\n additionalLinksForEntity?: (template: TemplateEntityV1beta3) => {\n icon: IconComponent;\n text: string;\n url: string;\n }[];\n}\n\n/**\n * @alpha\n */\nexport const TemplateGroups = (props: TemplateGroupsProps) => {\n const { loading, error, entities } = useEntityList();\n const { groups, templateFilter, TemplateCardComponent, onTemplateSelected } =\n props;\n const errorApi = useApi(errorApiRef);\n const onSelected = useCallback(\n (template: TemplateEntityV1beta3) => {\n onTemplateSelected?.(template);\n },\n [onTemplateSelected],\n );\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n errorApi.post(error);\n return null;\n }\n\n if (!entities || !entities.length) {\n return (\n <Typography variant=\"body2\">\n No templates found that match your filter. Learn more about{' '}\n <Link to=\"https://backstage.io/docs/features/software-templates/adding-templates\">\n adding templates\n </Link>\n .\n </Typography>\n );\n }\n\n return (\n <>\n {groups.map(({ title, filter }, index) => {\n const templates = entities\n .filter(isTemplateEntityV1beta3)\n .filter(e => (templateFilter ? templateFilter(e) : true))\n .filter(filter)\n .map(template => {\n const additionalLinks =\n props.additionalLinksForEntity?.(template) ?? [];\n\n return {\n template,\n additionalLinks,\n };\n });\n\n return (\n <TemplateGroup\n key={index}\n templates={templates}\n title={title}\n components={{ CardComponent: TemplateCardComponent }}\n onSelected={onSelected}\n />\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAgDa,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAC5D,EAAA,MAAM,EAAE,OAAA,EAAS,KAAO,EAAA,QAAA,KAAa,aAAc,EAAA;AACnD,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAgB,EAAA,qBAAA,EAAuB,oBACrD,GAAA,KAAA;AACF,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,UAAa,GAAA,WAAA;AAAA,IACjB,CAAC,QAAoC,KAAA;AACnC,MAAA,kBAAA,GAAqB,QAAQ,CAAA;AAAA,KAC/B;AAAA,IACA,CAAC,kBAAkB;AAAA,GACrB;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,2CAAQ,QAAS,EAAA,IAAA,CAAA;AAAA;AAGnB,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,MAAQ,EAAA;AACjC,IAAA,uBACG,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAA,EAAQ,6DACkC,EAAA,GAAA,kBAC3D,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,EAAG,EAAA,wEAAA,EAAA,EAAyE,kBAElF,CAAA,EAAO,GAET,CAAA;AAAA;AAIJ,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,OAAO,GAAI,CAAA,CAAC,EAAE,KAAO,EAAA,MAAA,IAAU,KAAU,KAAA;AACxC,IAAA,MAAM,YAAY,QACf,CAAA,MAAA,CAAO,uBAAuB,CAAA,CAC9B,OAAO,CAAM,CAAA,KAAA,cAAA,GAAiB,cAAe,CAAA,CAAC,IAAI,IAAK,CAAA,CACvD,OAAO,MAAM,CAAA,CACb,IAAI,CAAY,QAAA,KAAA;AACf,MAAA,MAAM,eACJ,GAAA,KAAA,CAAM,wBAA2B,GAAA,QAAQ,KAAK,EAAC;AAEjD,MAAO,OAAA;AAAA,QACL,QAAA;AAAA,QACA;AAAA,OACF;AAAA,KACD,CAAA;AAEH,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,KAAA;AAAA,QACL,SAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA,EAAY,EAAE,aAAA,EAAe,qBAAsB,EAAA;AAAA,QACnD;AAAA;AAAA,KACF;AAAA,GAEH,CACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"TemplateGroups.esm.js","sources":["../../../../src/next/components/TemplateGroups/TemplateGroups.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { Link, Progress } from '@backstage/core-components';\nimport { errorApiRef, IconComponent, useApi } from '@backstage/core-plugin-api';\nimport { useEntityList } from '@backstage/plugin-catalog-react';\nimport {\n isTemplateEntityV1beta3,\n TemplateEntityV1beta3,\n} from '@backstage/plugin-scaffolder-common';\nimport { TemplateGroupFilter } from '@backstage/plugin-scaffolder-react';\nimport Typography from '@material-ui/core/Typography';\nimport { ComponentType, useCallback } from 'react';\n\nimport { TemplateGroup } from '../TemplateGroup/TemplateGroup';\n\n/**\n * @alpha\n */\nexport interface TemplateGroupsProps {\n groups: TemplateGroupFilter[];\n templateFilter?: (entity: TemplateEntityV1beta3) => boolean;\n TemplateCardComponent?: ComponentType<{\n template: TemplateEntityV1beta3;\n }>;\n onTemplateSelected?: (template: TemplateEntityV1beta3) => void;\n additionalLinksForEntity?: (template: TemplateEntityV1beta3) => {\n icon: IconComponent;\n text: string;\n url: string;\n }[];\n}\n\n/**\n * @alpha\n */\nexport const TemplateGroups = (props: TemplateGroupsProps) => {\n const { loading, error, entities } = useEntityList();\n const { groups, templateFilter, TemplateCardComponent, onTemplateSelected } =\n props;\n const errorApi = useApi(errorApiRef);\n const onSelected = useCallback(\n (template: TemplateEntityV1beta3) => {\n onTemplateSelected?.(template);\n },\n [onTemplateSelected],\n );\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n errorApi.post(error);\n return null;\n }\n\n if (!entities || !entities.length) {\n return (\n <Typography variant=\"body2\">\n No templates found that match your filter. Learn more about{' '}\n <Link to=\"https://backstage.io/docs/features/software-templates/adding-templates\">\n adding templates\n </Link>\n .\n </Typography>\n );\n }\n\n return (\n <>\n {groups.map(({ title, filter }, index) => {\n const templates = entities\n .filter(isTemplateEntityV1beta3)\n .filter(e => (templateFilter ? templateFilter(e) : true))\n .filter(filter)\n .map(template => {\n const additionalLinks =\n props.additionalLinksForEntity?.(template) ?? [];\n\n return {\n template,\n additionalLinks,\n };\n });\n\n return (\n <TemplateGroup\n key={index}\n templates={templates}\n title={title}\n components={{ CardComponent: TemplateCardComponent }}\n onSelected={onSelected}\n />\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAgDa,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAC5D,EAAA,MAAM,EAAE,OAAA,EAAS,KAAO,EAAA,QAAA,KAAa,aAAc,EAAA;AACnD,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAgB,EAAA,qBAAA,EAAuB,oBACrD,GAAA,KAAA;AACF,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,UAAa,GAAA,WAAA;AAAA,IACjB,CAAC,QAAoC,KAAA;AACnC,MAAA,kBAAA,GAAqB,QAAQ,CAAA;AAAA,KAC/B;AAAA,IACA,CAAC,kBAAkB;AAAA,GACrB;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,2BAAQ,QAAS,EAAA,EAAA,CAAA;AAAA;AAGnB,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,MAAQ,EAAA;AACjC,IACE,uBAAA,IAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,QAAA,EAAA;AAAA,MAAA,6DAAA;AAAA,MACkC,GAAA;AAAA,sBAC3D,GAAA,CAAA,IAAA,EAAA,EAAK,EAAG,EAAA,wEAAA,EAAyE,QAElF,EAAA,kBAAA,EAAA,CAAA;AAAA,MAAO;AAAA,KAET,EAAA,CAAA;AAAA;AAIJ,EACE,uBAAA,GAAA,CAAA,QAAA,EAAA,EACG,iBAAO,GAAI,CAAA,CAAC,EAAE,KAAO,EAAA,MAAA,IAAU,KAAU,KAAA;AACxC,IAAA,MAAM,YAAY,QACf,CAAA,MAAA,CAAO,uBAAuB,CAAA,CAC9B,OAAO,CAAM,CAAA,KAAA,cAAA,GAAiB,cAAe,CAAA,CAAC,IAAI,IAAK,CAAA,CACvD,OAAO,MAAM,CAAA,CACb,IAAI,CAAY,QAAA,KAAA;AACf,MAAA,MAAM,eACJ,GAAA,KAAA,CAAM,wBAA2B,GAAA,QAAQ,KAAK,EAAC;AAEjD,MAAO,OAAA;AAAA,QACL,QAAA;AAAA,QACA;AAAA,OACF;AAAA,KACD,CAAA;AAEH,IACE,uBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QAEC,SAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA,EAAY,EAAE,aAAA,EAAe,qBAAsB,EAAA;AAAA,QACnD;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,GAEH,CACH,EAAA,CAAA;AAEJ;;;;"}
@@ -1,8 +1,9 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
2
  import { InfoCard, MarkdownContent } from '@backstage/core-components';
2
3
  import { useTranslationRef } from '@backstage/frontend-plugin-api';
3
4
  import Box from '@material-ui/core/Box';
4
5
  import Paper from '@material-ui/core/Paper';
5
- import React, { useState, useEffect, useMemo } from 'react';
6
+ import { useState, useEffect, useMemo } from 'react';
6
7
  import { scaffolderReactTranslationRef } from '../../../translation.esm.js';
7
8
  import { LinkOutputs } from './LinkOutputs.esm.js';
8
9
  import { TextOutputs } from './TextOutputs.esm.js';
@@ -30,34 +31,39 @@ const DefaultTemplateOutputs = (props) => {
30
31
  }
31
32
  const displayTextButtons = (output.text || []).length > 1;
32
33
  const emptyOutput = (output.links || []).length === 0 && !displayTextButtons;
33
- return /* @__PURE__ */ React.createElement(React.Fragment, null, !emptyOutput ? /* @__PURE__ */ React.createElement(Box, { paddingBottom: 2, "data-testid": "output-box" }, /* @__PURE__ */ React.createElement(Paper, null, /* @__PURE__ */ React.createElement(
34
- Box,
35
- {
36
- padding: 2,
37
- justifyContent: "center",
38
- display: "flex",
39
- gridGap: 16,
40
- flexWrap: "wrap"
41
- },
42
- displayTextButtons && /* @__PURE__ */ React.createElement(
43
- TextOutputs,
34
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
35
+ !emptyOutput ? /* @__PURE__ */ jsx(Box, { paddingBottom: 2, "data-testid": "output-box", children: /* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsxs(
36
+ Box,
44
37
  {
45
- "data-testid": "text-outputs",
46
- output,
47
- index: textOutputIndex,
48
- setIndex: setTextOutputIndex
38
+ padding: 2,
39
+ justifyContent: "center",
40
+ display: "flex",
41
+ gridGap: 16,
42
+ flexWrap: "wrap",
43
+ children: [
44
+ displayTextButtons && /* @__PURE__ */ jsx(
45
+ TextOutputs,
46
+ {
47
+ "data-testid": "text-outputs",
48
+ output,
49
+ index: textOutputIndex,
50
+ setIndex: setTextOutputIndex
51
+ }
52
+ ),
53
+ /* @__PURE__ */ jsx(LinkOutputs, { output })
54
+ ]
49
55
  }
50
- ),
51
- /* @__PURE__ */ React.createElement(LinkOutputs, { output })
52
- ))) : null, textOutput ? /* @__PURE__ */ React.createElement(Box, { paddingBottom: 2, "data-testid": "text-output-box" }, /* @__PURE__ */ React.createElement(
53
- InfoCard,
54
- {
55
- title: textOutput.title ?? t("templateOutputs.title"),
56
- noPadding: true,
57
- titleTypographyProps: { component: "h2" }
58
- },
59
- /* @__PURE__ */ React.createElement(Box, { padding: 2, height: "100%" }, /* @__PURE__ */ React.createElement(MarkdownContent, { content: textOutput.content ?? "" }))
60
- )) : null);
56
+ ) }) }) : null,
57
+ textOutput ? /* @__PURE__ */ jsx(Box, { paddingBottom: 2, "data-testid": "text-output-box", children: /* @__PURE__ */ jsx(
58
+ InfoCard,
59
+ {
60
+ title: textOutput.title ?? t("templateOutputs.title"),
61
+ noPadding: true,
62
+ titleTypographyProps: { component: "h2" },
63
+ children: /* @__PURE__ */ jsx(Box, { padding: 2, height: "100%", children: /* @__PURE__ */ jsx(MarkdownContent, { content: textOutput.content ?? "" }) })
64
+ }
65
+ ) }) : null
66
+ ] });
61
67
  };
62
68
 
63
69
  export { DefaultTemplateOutputs };
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultTemplateOutputs.esm.js","sources":["../../../../src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { InfoCard, MarkdownContent } from '@backstage/core-components';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport {\n ScaffolderOutputText,\n ScaffolderTaskOutput,\n} from '@backstage/plugin-scaffolder-react';\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { scaffolderReactTranslationRef } from '../../../translation';\nimport { LinkOutputs } from './LinkOutputs';\nimport { TextOutputs } from './TextOutputs';\n\n/**\n * The DefaultOutputs renderer for the scaffolder task output\n *\n * @alpha\n */\nexport const DefaultTemplateOutputs = (props: {\n output?: ScaffolderTaskOutput;\n}) => {\n const { t } = useTranslationRef(scaffolderReactTranslationRef);\n const { output } = props;\n const [textOutputIndex, setTextOutputIndex] = useState<number | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (textOutputIndex === undefined && output?.text) {\n const defaultIndex = output.text.findIndex(\n (text: ScaffolderOutputText) => text.default,\n );\n setTextOutputIndex(defaultIndex >= 0 ? defaultIndex : 0);\n }\n }, [textOutputIndex, output]);\n\n const textOutput = useMemo(\n () =>\n textOutputIndex !== undefined ? output?.text?.[textOutputIndex] : null,\n [output, textOutputIndex],\n );\n\n if (!output) {\n return null;\n }\n\n const displayTextButtons = (output.text || []).length > 1;\n const emptyOutput = (output.links || []).length === 0 && !displayTextButtons;\n\n return (\n <>\n {!emptyOutput ? (\n <Box paddingBottom={2} data-testid=\"output-box\">\n <Paper>\n <Box\n padding={2}\n justifyContent=\"center\"\n display=\"flex\"\n gridGap={16}\n flexWrap=\"wrap\"\n >\n {displayTextButtons && (\n <TextOutputs\n data-testid=\"text-outputs\"\n output={output}\n index={textOutputIndex}\n setIndex={setTextOutputIndex}\n />\n )}\n <LinkOutputs output={output} />\n </Box>\n </Paper>\n </Box>\n ) : null}\n {textOutput ? (\n <Box paddingBottom={2} data-testid=\"text-output-box\">\n <InfoCard\n title={textOutput.title ?? t('templateOutputs.title')}\n noPadding\n titleTypographyProps={{ component: 'h2' }}\n >\n <Box padding={2} height=\"100%\">\n <MarkdownContent content={textOutput.content ?? ''} />\n </Box>\n </InfoCard>\n </Box>\n ) : null}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAkCa,MAAA,sBAAA,GAAyB,CAAC,KAEjC,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,6BAA6B,CAAA;AAC7D,EAAM,MAAA,EAAE,QAAW,GAAA,KAAA;AACnB,EAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,IAC5C,KAAA;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,eAAA,KAAoB,KAAa,CAAA,IAAA,MAAA,EAAQ,IAAM,EAAA;AACjD,MAAM,MAAA,YAAA,GAAe,OAAO,IAAK,CAAA,SAAA;AAAA,QAC/B,CAAC,SAA+B,IAAK,CAAA;AAAA,OACvC;AACA,MAAmB,kBAAA,CAAA,YAAA,IAAgB,CAAI,GAAA,YAAA,GAAe,CAAC,CAAA;AAAA;AACzD,GACC,EAAA,CAAC,eAAiB,EAAA,MAAM,CAAC,CAAA;AAE5B,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MACE,eAAoB,KAAA,KAAA,CAAA,GAAY,MAAQ,EAAA,IAAA,GAAO,eAAe,CAAI,GAAA,IAAA;AAAA,IACpE,CAAC,QAAQ,eAAe;AAAA,GAC1B;AAEA,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,kBAAsB,GAAA,CAAA,MAAA,CAAO,IAAQ,IAAA,IAAI,MAAS,GAAA,CAAA;AACxD,EAAA,MAAM,eAAe,MAAO,CAAA,KAAA,IAAS,EAAI,EAAA,MAAA,KAAW,KAAK,CAAC,kBAAA;AAE1D,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,CAAC,WAAA,mBACC,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,eAAe,CAAG,EAAA,aAAA,EAAY,YACjC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,CAAA;AAAA,MACT,cAAe,EAAA,QAAA;AAAA,MACf,OAAQ,EAAA,MAAA;AAAA,MACR,OAAS,EAAA,EAAA;AAAA,MACT,QAAS,EAAA;AAAA,KAAA;AAAA,IAER,kBACC,oBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,aAAY,EAAA,cAAA;AAAA,QACZ,MAAA;AAAA,QACA,KAAO,EAAA,eAAA;AAAA,QACP,QAAU,EAAA;AAAA;AAAA,KACZ;AAAA,oBAEF,KAAA,CAAA,aAAA,CAAC,eAAY,MAAgB,EAAA;AAAA,GAEjC,CACF,CAAA,GACE,IACH,EAAA,UAAA,uCACE,GAAI,EAAA,EAAA,aAAA,EAAe,CAAG,EAAA,aAAA,EAAY,iBACjC,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,UAAA,CAAW,KAAS,IAAA,CAAA,CAAE,uBAAuB,CAAA;AAAA,MACpD,SAAS,EAAA,IAAA;AAAA,MACT,oBAAA,EAAsB,EAAE,SAAA,EAAW,IAAK;AAAA,KAAA;AAAA,oBAEvC,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,OAAS,EAAA,CAAA,EAAG,MAAO,EAAA,MAAA,EAAA,kBACrB,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,OAAS,EAAA,UAAA,CAAW,OAAW,IAAA,EAAA,EAAI,CACtD;AAAA,GAEJ,IACE,IACN,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DefaultTemplateOutputs.esm.js","sources":["../../../../src/next/components/TemplateOutputs/DefaultTemplateOutputs.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { InfoCard, MarkdownContent } from '@backstage/core-components';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport {\n ScaffolderOutputText,\n ScaffolderTaskOutput,\n} from '@backstage/plugin-scaffolder-react';\nimport Box from '@material-ui/core/Box';\nimport Paper from '@material-ui/core/Paper';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { scaffolderReactTranslationRef } from '../../../translation';\nimport { LinkOutputs } from './LinkOutputs';\nimport { TextOutputs } from './TextOutputs';\n\n/**\n * The DefaultOutputs renderer for the scaffolder task output\n *\n * @alpha\n */\nexport const DefaultTemplateOutputs = (props: {\n output?: ScaffolderTaskOutput;\n}) => {\n const { t } = useTranslationRef(scaffolderReactTranslationRef);\n const { output } = props;\n const [textOutputIndex, setTextOutputIndex] = useState<number | undefined>(\n undefined,\n );\n\n useEffect(() => {\n if (textOutputIndex === undefined && output?.text) {\n const defaultIndex = output.text.findIndex(\n (text: ScaffolderOutputText) => text.default,\n );\n setTextOutputIndex(defaultIndex >= 0 ? defaultIndex : 0);\n }\n }, [textOutputIndex, output]);\n\n const textOutput = useMemo(\n () =>\n textOutputIndex !== undefined ? output?.text?.[textOutputIndex] : null,\n [output, textOutputIndex],\n );\n\n if (!output) {\n return null;\n }\n\n const displayTextButtons = (output.text || []).length > 1;\n const emptyOutput = (output.links || []).length === 0 && !displayTextButtons;\n\n return (\n <>\n {!emptyOutput ? (\n <Box paddingBottom={2} data-testid=\"output-box\">\n <Paper>\n <Box\n padding={2}\n justifyContent=\"center\"\n display=\"flex\"\n gridGap={16}\n flexWrap=\"wrap\"\n >\n {displayTextButtons && (\n <TextOutputs\n data-testid=\"text-outputs\"\n output={output}\n index={textOutputIndex}\n setIndex={setTextOutputIndex}\n />\n )}\n <LinkOutputs output={output} />\n </Box>\n </Paper>\n </Box>\n ) : null}\n {textOutput ? (\n <Box paddingBottom={2} data-testid=\"text-output-box\">\n <InfoCard\n title={textOutput.title ?? t('templateOutputs.title')}\n noPadding\n titleTypographyProps={{ component: 'h2' }}\n >\n <Box padding={2} height=\"100%\">\n <MarkdownContent content={textOutput.content ?? ''} />\n </Box>\n </InfoCard>\n </Box>\n ) : null}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAkCa,MAAA,sBAAA,GAAyB,CAAC,KAEjC,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,6BAA6B,CAAA;AAC7D,EAAM,MAAA,EAAE,QAAW,GAAA,KAAA;AACnB,EAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,IAC5C,KAAA;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,eAAA,KAAoB,KAAa,CAAA,IAAA,MAAA,EAAQ,IAAM,EAAA;AACjD,MAAM,MAAA,YAAA,GAAe,OAAO,IAAK,CAAA,SAAA;AAAA,QAC/B,CAAC,SAA+B,IAAK,CAAA;AAAA,OACvC;AACA,MAAmB,kBAAA,CAAA,YAAA,IAAgB,CAAI,GAAA,YAAA,GAAe,CAAC,CAAA;AAAA;AACzD,GACC,EAAA,CAAC,eAAiB,EAAA,MAAM,CAAC,CAAA;AAE5B,EAAA,MAAM,UAAa,GAAA,OAAA;AAAA,IACjB,MACE,eAAoB,KAAA,KAAA,CAAA,GAAY,MAAQ,EAAA,IAAA,GAAO,eAAe,CAAI,GAAA,IAAA;AAAA,IACpE,CAAC,QAAQ,eAAe;AAAA,GAC1B;AAEA,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,MAAM,kBAAsB,GAAA,CAAA,MAAA,CAAO,IAAQ,IAAA,IAAI,MAAS,GAAA,CAAA;AACxD,EAAA,MAAM,eAAe,MAAO,CAAA,KAAA,IAAS,EAAI,EAAA,MAAA,KAAW,KAAK,CAAC,kBAAA;AAE1D,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAC,CAAA,WAAA,uBACC,GAAI,EAAA,EAAA,aAAA,EAAe,GAAG,aAAY,EAAA,YAAA,EACjC,8BAAC,KACC,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,OAAS,EAAA,CAAA;AAAA,QACT,cAAe,EAAA,QAAA;AAAA,QACf,OAAQ,EAAA,MAAA;AAAA,QACR,OAAS,EAAA,EAAA;AAAA,QACT,QAAS,EAAA,MAAA;AAAA,QAER,QAAA,EAAA;AAAA,UACC,kBAAA,oBAAA,GAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,aAAY,EAAA,cAAA;AAAA,cACZ,MAAA;AAAA,cACA,KAAO,EAAA,eAAA;AAAA,cACP,QAAU,EAAA;AAAA;AAAA,WACZ;AAAA,0BAEF,GAAA,CAAC,eAAY,MAAgB,EAAA;AAAA;AAAA;AAAA,KAC/B,EACF,GACF,CACE,GAAA,IAAA;AAAA,IACH,6BACE,GAAA,CAAA,GAAA,EAAA,EAAI,aAAe,EAAA,CAAA,EAAG,eAAY,iBACjC,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,UAAA,CAAW,KAAS,IAAA,CAAA,CAAE,uBAAuB,CAAA;AAAA,QACpD,SAAS,EAAA,IAAA;AAAA,QACT,oBAAA,EAAsB,EAAE,SAAA,EAAW,IAAK,EAAA;AAAA,QAExC,QAAC,kBAAA,GAAA,CAAA,GAAA,EAAA,EAAI,OAAS,EAAA,CAAA,EAAG,MAAO,EAAA,MAAA,EACtB,QAAC,kBAAA,GAAA,CAAA,eAAA,EAAA,EAAgB,OAAS,EAAA,UAAA,CAAW,OAAW,IAAA,EAAA,EAAI,CACtD,EAAA;AAAA;AAAA,OAEJ,CACE,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;;;;"}
@@ -1,8 +1,8 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
1
2
  import { useApp, useRouteRef } from '@backstage/core-plugin-api';
2
3
  import { entityRouteRef } from '@backstage/plugin-catalog-react';
3
4
  import Button from '@material-ui/core/Button';
4
5
  import { makeStyles } from '@material-ui/core/styles';
5
- import React from 'react';
6
6
  import LinkIcon from '@material-ui/icons/Link';
7
7
  import { parseEntityRef } from '@backstage/catalog-model';
8
8
  import { Link } from '@backstage/core-components';
@@ -20,7 +20,7 @@ const LinkOutputs = (props) => {
20
20
  const app = useApp();
21
21
  const entityRoute = useRouteRef(entityRouteRef);
22
22
  const iconResolver = (key) => app.getSystemIcon(key) ?? LinkIcon;
23
- return /* @__PURE__ */ React.createElement(React.Fragment, null, links.filter(({ url, entityRef }) => url || entityRef).map(({ url, entityRef, title, icon }) => {
23
+ return /* @__PURE__ */ jsx(Fragment, { children: links.filter(({ url, entityRef }) => url || entityRef).map(({ url, entityRef, title, icon }) => {
24
24
  if (entityRef) {
25
25
  const entityName = parseEntityRef(entityRef);
26
26
  const target = entityRoute(entityName);
@@ -29,8 +29,8 @@ const LinkOutputs = (props) => {
29
29
  return { title, icon, url };
30
30
  }).map(({ url, title, icon }, i) => {
31
31
  const Icon = iconResolver(icon);
32
- return /* @__PURE__ */ React.createElement(Link, { to: url, key: i, classes: { root: classes.root } }, /* @__PURE__ */ React.createElement(Button, { startIcon: /* @__PURE__ */ React.createElement(Icon, null), component: "div", color: "primary" }, title));
33
- }));
32
+ return /* @__PURE__ */ jsx(Link, { to: url, classes: { root: classes.root }, children: /* @__PURE__ */ jsx(Button, { startIcon: /* @__PURE__ */ jsx(Icon, {}), component: "div", color: "primary", children: title }) }, i);
33
+ }) });
34
34
  };
35
35
 
36
36
  export { LinkOutputs };
@@ -1 +1 @@
1
- {"version":3,"file":"LinkOutputs.esm.js","sources":["../../../../src/next/components/TemplateOutputs/LinkOutputs.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { IconComponent, useApp, useRouteRef } from '@backstage/core-plugin-api';\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\nimport React from 'react';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { Link } from '@backstage/core-components';\nimport { ScaffolderTaskOutput } from '../../../api';\n\nconst useStyles = makeStyles({\n root: {\n '&:hover': {\n textDecoration: 'none',\n },\n },\n});\n\nexport const LinkOutputs = (props: { output: ScaffolderTaskOutput }) => {\n const { links = [] } = props.output;\n const classes = useStyles();\n const app = useApp();\n const entityRoute = useRouteRef(entityRouteRef);\n\n const iconResolver = (key?: string): IconComponent =>\n app.getSystemIcon(key!) ?? LinkIcon;\n\n return (\n <>\n {links\n .filter(({ url, entityRef }) => url || entityRef)\n .map(({ url, entityRef, title, icon }) => {\n if (entityRef) {\n const entityName = parseEntityRef(entityRef);\n const target = entityRoute(entityName);\n return { title, icon, url: target };\n }\n return { title, icon, url: url! };\n })\n .map(({ url, title, icon }, i) => {\n const Icon = iconResolver(icon);\n return (\n <Link to={url} key={i} classes={{ root: classes.root }}>\n <Button startIcon={<Icon />} component=\"div\" color=\"primary\">\n {title}\n </Button>\n </Link>\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAyBA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,SAAW,EAAA;AAAA,MACT,cAAgB,EAAA;AAAA;AAClB;AAEJ,CAAC,CAAA;AAEY,MAAA,WAAA,GAAc,CAAC,KAA4C,KAAA;AACtE,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAC,KAAM,KAAM,CAAA,MAAA;AAC7B,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,MAAM,MAAO,EAAA;AACnB,EAAM,MAAA,WAAA,GAAc,YAAY,cAAc,CAAA;AAE9C,EAAA,MAAM,eAAe,CAAC,GAAA,KACpB,GAAI,CAAA,aAAA,CAAc,GAAI,CAAK,IAAA,QAAA;AAE7B,EAAA,iEAEK,KACE,CAAA,MAAA,CAAO,CAAC,EAAE,GAAA,EAAK,WAAgB,KAAA,GAAA,IAAO,SAAS,CAAA,CAC/C,IAAI,CAAC,EAAE,KAAK,SAAW,EAAA,KAAA,EAAO,MAAW,KAAA;AACxC,IAAA,IAAI,SAAW,EAAA;AACb,MAAM,MAAA,UAAA,GAAa,eAAe,SAAS,CAAA;AAC3C,MAAM,MAAA,MAAA,GAAS,YAAY,UAAU,CAAA;AACrC,MAAA,OAAO,EAAE,KAAA,EAAO,IAAM,EAAA,GAAA,EAAK,MAAO,EAAA;AAAA;AAEpC,IAAO,OAAA,EAAE,KAAO,EAAA,IAAA,EAAM,GAAU,EAAA;AAAA,GACjC,EACA,GAAI,CAAA,CAAC,EAAE,GAAK,EAAA,KAAA,EAAO,IAAK,EAAA,EAAG,CAAM,KAAA;AAChC,IAAM,MAAA,IAAA,GAAO,aAAa,IAAI,CAAA;AAC9B,IACE,uBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,EAAI,EAAA,GAAA,EAAK,KAAK,CAAG,EAAA,OAAA,EAAS,EAAE,IAAA,EAAM,OAAQ,CAAA,IAAA,sBAC7C,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAW,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,IAAA,CAAA,EAAI,WAAU,KAAM,EAAA,KAAA,EAAM,SAChD,EAAA,EAAA,KACH,CACF,CAAA;AAAA,GAEH,CACL,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"LinkOutputs.esm.js","sources":["../../../../src/next/components/TemplateOutputs/LinkOutputs.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { IconComponent, useApp, useRouteRef } from '@backstage/core-plugin-api';\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { Link } from '@backstage/core-components';\nimport { ScaffolderTaskOutput } from '../../../api';\n\nconst useStyles = makeStyles({\n root: {\n '&:hover': {\n textDecoration: 'none',\n },\n },\n});\n\nexport const LinkOutputs = (props: { output: ScaffolderTaskOutput }) => {\n const { links = [] } = props.output;\n const classes = useStyles();\n const app = useApp();\n const entityRoute = useRouteRef(entityRouteRef);\n\n const iconResolver = (key?: string): IconComponent =>\n app.getSystemIcon(key!) ?? LinkIcon;\n\n return (\n <>\n {links\n .filter(({ url, entityRef }) => url || entityRef)\n .map(({ url, entityRef, title, icon }) => {\n if (entityRef) {\n const entityName = parseEntityRef(entityRef);\n const target = entityRoute(entityName);\n return { title, icon, url: target };\n }\n return { title, icon, url: url! };\n })\n .map(({ url, title, icon }, i) => {\n const Icon = iconResolver(icon);\n return (\n <Link to={url} key={i} classes={{ root: classes.root }}>\n <Button startIcon={<Icon />} component=\"div\" color=\"primary\">\n {title}\n </Button>\n </Link>\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAwBA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,SAAW,EAAA;AAAA,MACT,cAAgB,EAAA;AAAA;AAClB;AAEJ,CAAC,CAAA;AAEY,MAAA,WAAA,GAAc,CAAC,KAA4C,KAAA;AACtE,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAC,KAAM,KAAM,CAAA,MAAA;AAC7B,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,MAAM,MAAO,EAAA;AACnB,EAAM,MAAA,WAAA,GAAc,YAAY,cAAc,CAAA;AAE9C,EAAA,MAAM,eAAe,CAAC,GAAA,KACpB,GAAI,CAAA,aAAA,CAAc,GAAI,CAAK,IAAA,QAAA;AAE7B,EAAA,uCAEK,QACE,EAAA,KAAA,CAAA,MAAA,CAAO,CAAC,EAAE,GAAA,EAAK,WAAgB,KAAA,GAAA,IAAO,SAAS,CAAA,CAC/C,IAAI,CAAC,EAAE,KAAK,SAAW,EAAA,KAAA,EAAO,MAAW,KAAA;AACxC,IAAA,IAAI,SAAW,EAAA;AACb,MAAM,MAAA,UAAA,GAAa,eAAe,SAAS,CAAA;AAC3C,MAAM,MAAA,MAAA,GAAS,YAAY,UAAU,CAAA;AACrC,MAAA,OAAO,EAAE,KAAA,EAAO,IAAM,EAAA,GAAA,EAAK,MAAO,EAAA;AAAA;AAEpC,IAAO,OAAA,EAAE,KAAO,EAAA,IAAA,EAAM,GAAU,EAAA;AAAA,GACjC,EACA,GAAI,CAAA,CAAC,EAAE,GAAK,EAAA,KAAA,EAAO,IAAK,EAAA,EAAG,CAAM,KAAA;AAChC,IAAM,MAAA,IAAA,GAAO,aAAa,IAAI,CAAA;AAC9B,IACE,uBAAA,GAAA,CAAC,QAAK,EAAI,EAAA,GAAA,EAAa,SAAS,EAAE,IAAA,EAAM,OAAQ,CAAA,IAAA,EAC9C,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAO,SAAW,kBAAA,GAAA,CAAC,QAAK,CAAI,EAAA,SAAA,EAAU,OAAM,KAAM,EAAA,SAAA,EAChD,QACH,EAAA,KAAA,EAAA,CAAA,EAAA,EAHkB,CAIpB,CAAA;AAAA,GAEH,CACL,EAAA,CAAA;AAEJ;;;;"}
@@ -1,7 +1,7 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
1
2
  import { useApp } from '@backstage/core-plugin-api';
2
3
  import Button from '@material-ui/core/Button';
3
4
  import DescriptionIcon from '@material-ui/icons/Description';
4
- import React from 'react';
5
5
 
6
6
  const TextOutputs = (props) => {
7
7
  const {
@@ -11,13 +11,12 @@ const TextOutputs = (props) => {
11
11
  } = props;
12
12
  const app = useApp();
13
13
  const iconResolver = (key) => app.getSystemIcon(key) ?? DescriptionIcon;
14
- return /* @__PURE__ */ React.createElement(React.Fragment, null, text.filter(({ content }) => content !== void 0).map(({ title, icon }, i) => {
14
+ return /* @__PURE__ */ jsx(Fragment, { children: text.filter(({ content }) => content !== void 0).map(({ title, icon }, i) => {
15
15
  const Icon = iconResolver(icon);
16
- return /* @__PURE__ */ React.createElement(
16
+ return /* @__PURE__ */ jsx(
17
17
  Button,
18
18
  {
19
- key: i,
20
- startIcon: /* @__PURE__ */ React.createElement(Icon, null),
19
+ startIcon: /* @__PURE__ */ jsx(Icon, {}),
21
20
  component: "div",
22
21
  color: "primary",
23
22
  onClick: () => {
@@ -25,11 +24,12 @@ const TextOutputs = (props) => {
25
24
  setIndex?.(i);
26
25
  }
27
26
  },
28
- variant: index === i ? "outlined" : void 0
27
+ variant: index === i ? "outlined" : void 0,
28
+ children: title
29
29
  },
30
- title
30
+ i
31
31
  );
32
- }));
32
+ }) });
33
33
  };
34
34
 
35
35
  export { TextOutputs };
@@ -1 +1 @@
1
- {"version":3,"file":"TextOutputs.esm.js","sources":["../../../../src/next/components/TemplateOutputs/TextOutputs.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { IconComponent, useApp } from '@backstage/core-plugin-api';\nimport Button from '@material-ui/core/Button';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport React from 'react';\nimport { ScaffolderTaskOutput } from '../../../api';\n\nexport const TextOutputs = (props: {\n output: ScaffolderTaskOutput;\n index?: number;\n setIndex?: (index: number | undefined) => void;\n}) => {\n const {\n output: { text = [] },\n index,\n setIndex,\n } = props;\n\n const app = useApp();\n\n const iconResolver = (key?: string): IconComponent =>\n app.getSystemIcon(key!) ?? DescriptionIcon;\n\n return (\n <>\n {text\n .filter(({ content }) => content !== undefined)\n .map(({ title, icon }, i) => {\n const Icon = iconResolver(icon);\n return (\n <Button\n key={i}\n startIcon={<Icon />}\n component=\"div\"\n color=\"primary\"\n onClick={() => {\n if (index !== i) {\n setIndex?.(i);\n }\n }}\n variant={index === i ? 'outlined' : undefined}\n >\n {title}\n </Button>\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAqBa,MAAA,WAAA,GAAc,CAAC,KAItB,KAAA;AACJ,EAAM,MAAA;AAAA,IACJ,MAAQ,EAAA,EAAE,IAAO,GAAA,EAAG,EAAA;AAAA,IACpB,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,MAAM,MAAO,EAAA;AAEnB,EAAA,MAAM,eAAe,CAAC,GAAA,KACpB,GAAI,CAAA,aAAA,CAAc,GAAI,CAAK,IAAA,eAAA;AAE7B,EAAA,iEAEK,IACE,CAAA,MAAA,CAAO,CAAC,EAAE,SAAc,KAAA,OAAA,KAAY,KAAS,CAAA,CAAA,CAC7C,IAAI,CAAC,EAAE,KAAO,EAAA,IAAA,IAAQ,CAAM,KAAA;AAC3B,IAAM,MAAA,IAAA,GAAO,aAAa,IAAI,CAAA;AAC9B,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,CAAA;AAAA,QACL,SAAA,sCAAY,IAAK,EAAA,IAAA,CAAA;AAAA,QACjB,SAAU,EAAA,KAAA;AAAA,QACV,KAAM,EAAA,SAAA;AAAA,QACN,SAAS,MAAM;AACb,UAAA,IAAI,UAAU,CAAG,EAAA;AACf,YAAA,QAAA,GAAW,CAAC,CAAA;AAAA;AACd,SACF;AAAA,QACA,OAAA,EAAS,KAAU,KAAA,CAAA,GAAI,UAAa,GAAA,KAAA;AAAA,OAAA;AAAA,MAEnC;AAAA,KACH;AAAA,GAEH,CACL,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"TextOutputs.esm.js","sources":["../../../../src/next/components/TemplateOutputs/TextOutputs.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { IconComponent, useApp } from '@backstage/core-plugin-api';\nimport Button from '@material-ui/core/Button';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport { ScaffolderTaskOutput } from '../../../api';\n\nexport const TextOutputs = (props: {\n output: ScaffolderTaskOutput;\n index?: number;\n setIndex?: (index: number | undefined) => void;\n}) => {\n const {\n output: { text = [] },\n index,\n setIndex,\n } = props;\n\n const app = useApp();\n\n const iconResolver = (key?: string): IconComponent =>\n app.getSystemIcon(key!) ?? DescriptionIcon;\n\n return (\n <>\n {text\n .filter(({ content }) => content !== undefined)\n .map(({ title, icon }, i) => {\n const Icon = iconResolver(icon);\n return (\n <Button\n key={i}\n startIcon={<Icon />}\n component=\"div\"\n color=\"primary\"\n onClick={() => {\n if (index !== i) {\n setIndex?.(i);\n }\n }}\n variant={index === i ? 'outlined' : undefined}\n >\n {title}\n </Button>\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAoBa,MAAA,WAAA,GAAc,CAAC,KAItB,KAAA;AACJ,EAAM,MAAA;AAAA,IACJ,MAAQ,EAAA,EAAE,IAAO,GAAA,EAAG,EAAA;AAAA,IACpB,KAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,MAAM,MAAO,EAAA;AAEnB,EAAA,MAAM,eAAe,CAAC,GAAA,KACpB,GAAI,CAAA,aAAA,CAAc,GAAI,CAAK,IAAA,eAAA;AAE7B,EAAA,uCAEK,QACE,EAAA,IAAA,CAAA,MAAA,CAAO,CAAC,EAAE,SAAc,KAAA,OAAA,KAAY,KAAS,CAAA,CAAA,CAC7C,IAAI,CAAC,EAAE,KAAO,EAAA,IAAA,IAAQ,CAAM,KAAA;AAC3B,IAAM,MAAA,IAAA,GAAO,aAAa,IAAI,CAAA;AAC9B,IACE,uBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,SAAA,sBAAY,IAAK,EAAA,EAAA,CAAA;AAAA,QACjB,SAAU,EAAA,KAAA;AAAA,QACV,KAAM,EAAA,SAAA;AAAA,QACN,SAAS,MAAM;AACb,UAAA,IAAI,UAAU,CAAG,EAAA;AACf,YAAA,QAAA,GAAW,CAAC,CAAA;AAAA;AACd,SACF;AAAA,QACA,OAAA,EAAS,KAAU,KAAA,CAAA,GAAI,UAAa,GAAA,KAAA,CAAA;AAAA,QAEnC,QAAA,EAAA;AAAA,OAAA;AAAA,MAXI;AAAA,KAYP;AAAA,GAEH,CACL,EAAA,CAAA;AAEJ;;;;"}
@@ -1,9 +1,10 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import { stringifyEntityRef } from '@backstage/catalog-model';
2
3
  import { Content, Progress, InfoCard, MarkdownContent } from '@backstage/core-components';
3
4
  import { useAnalytics, useApi, errorApiRef } from '@backstage/core-plugin-api';
4
5
  import { useTranslationRef } from '@backstage/frontend-plugin-api';
5
6
  import { makeStyles } from '@material-ui/core/styles';
6
- import React, { useCallback, useEffect } from 'react';
7
+ import { useCallback, useEffect } from 'react';
7
8
  import { SecretsContextProvider } from '../../../secrets/SecretsContext.esm.js';
8
9
  import { scaffolderReactTranslationRef } from '../../../translation.esm.js';
9
10
  import { useFilteredSchemaProperties } from '../../hooks/useFilteredSchemaProperties.esm.js';
@@ -54,32 +55,35 @@ const Workflow = (workflowProps) => {
54
55
  if (error) {
55
56
  return props.onError(error);
56
57
  }
57
- return /* @__PURE__ */ React.createElement(Content, null, loading && /* @__PURE__ */ React.createElement(Progress, null), sortedManifest && /* @__PURE__ */ React.createElement(
58
- InfoCard,
59
- {
60
- title: title ?? sortedManifest.title,
61
- subheader: /* @__PURE__ */ React.createElement(
62
- MarkdownContent,
63
- {
64
- className: styles.markdown,
65
- linkTarget: "_blank",
66
- content: description ?? sortedManifest.description ?? t("workflow.noDescription")
67
- }
68
- ),
69
- noPadding: true,
70
- titleTypographyProps: { component: "h2" }
71
- },
72
- /* @__PURE__ */ React.createElement(
73
- Stepper,
58
+ return /* @__PURE__ */ jsxs(Content, { children: [
59
+ loading && /* @__PURE__ */ jsx(Progress, {}),
60
+ sortedManifest && /* @__PURE__ */ jsx(
61
+ InfoCard,
74
62
  {
75
- manifest: sortedManifest,
76
- onCreate: workflowOnCreate,
77
- ...props
63
+ title: title ?? sortedManifest.title,
64
+ subheader: /* @__PURE__ */ jsx(
65
+ MarkdownContent,
66
+ {
67
+ className: styles.markdown,
68
+ linkTarget: "_blank",
69
+ content: description ?? sortedManifest.description ?? t("workflow.noDescription")
70
+ }
71
+ ),
72
+ noPadding: true,
73
+ titleTypographyProps: { component: "h2" },
74
+ children: /* @__PURE__ */ jsx(
75
+ Stepper,
76
+ {
77
+ manifest: sortedManifest,
78
+ onCreate: workflowOnCreate,
79
+ ...props
80
+ }
81
+ )
78
82
  }
79
83
  )
80
- ));
84
+ ] });
81
85
  };
82
- const EmbeddableWorkflow = (props) => /* @__PURE__ */ React.createElement(SecretsContextProvider, null, /* @__PURE__ */ React.createElement(Workflow, { ...props }));
86
+ const EmbeddableWorkflow = (props) => /* @__PURE__ */ jsx(SecretsContextProvider, { children: /* @__PURE__ */ jsx(Workflow, { ...props }) });
83
87
 
84
88
  export { EmbeddableWorkflow, Workflow };
85
89
  //# sourceMappingURL=Workflow.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Workflow.esm.js","sources":["../../../../src/next/components/Workflow/Workflow.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n Content,\n InfoCard,\n MarkdownContent,\n Progress,\n} from '@backstage/core-components';\nimport { errorApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport { ReviewStepProps } from '@backstage/plugin-scaffolder-react';\nimport { JsonValue } from '@backstage/types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport React, { useCallback, useEffect } from 'react';\n\nimport { SecretsContextProvider } from '../../../secrets/SecretsContext';\nimport { scaffolderReactTranslationRef } from '../../../translation';\nimport { useFilteredSchemaProperties } from '../../hooks/useFilteredSchemaProperties';\nimport { useTemplateParameterSchema } from '../../hooks/useTemplateParameterSchema';\nimport { useTemplateTimeSavedMinutes } from '../../hooks/useTemplateTimeSaved';\nimport { Stepper, type StepperProps } from '../Stepper/Stepper';\n\nconst useStyles = makeStyles({\n markdown: {\n /** to make the styles for React Markdown not leak into the description */\n '& :first-child': {\n marginTop: 0,\n },\n '& :last-child': {\n marginBottom: 0,\n },\n },\n});\n\n/**\n * @alpha\n */\nexport type WorkflowProps = {\n title?: string;\n description?: string;\n namespace: string;\n templateName: string;\n components?: {\n ReviewStepComponent?: React.ComponentType<ReviewStepProps>;\n };\n onError(error: Error | undefined): JSX.Element | null;\n} & Pick<\n StepperProps,\n | 'extensions'\n | 'formProps'\n | 'components'\n | 'onCreate'\n | 'initialState'\n | 'layouts'\n>;\n\n/**\n * @alpha\n */\nexport const Workflow = (workflowProps: WorkflowProps): JSX.Element | null => {\n const { t } = useTranslationRef(scaffolderReactTranslationRef);\n const { title, description, namespace, templateName, onCreate, ...props } =\n workflowProps;\n\n const analytics = useAnalytics();\n const styles = useStyles();\n const templateRef = stringifyEntityRef({\n kind: 'Template',\n namespace: namespace,\n name: templateName,\n });\n\n const errorApi = useApi(errorApiRef);\n\n const { loading, manifest, error } = useTemplateParameterSchema(templateRef);\n\n const sortedManifest = useFilteredSchemaProperties(manifest);\n\n const minutesSaved = useTemplateTimeSavedMinutes(templateRef);\n\n const workflowOnCreate = useCallback(\n async (formState: Record<string, JsonValue>) => {\n await onCreate(formState);\n\n const name =\n typeof formState.name === 'string' ? formState.name : undefined;\n analytics.captureEvent('create', name ?? templateName ?? 'unknown', {\n value: minutesSaved,\n });\n },\n [onCreate, analytics, templateName, minutesSaved],\n );\n\n useEffect(() => {\n if (error) {\n errorApi.post(new Error(`Failed to load template, ${error}`));\n }\n }, [error, errorApi]);\n\n if (error) {\n return props.onError(error);\n }\n\n return (\n <Content>\n {loading && <Progress />}\n {sortedManifest && (\n <InfoCard\n title={title ?? sortedManifest.title}\n subheader={\n <MarkdownContent\n className={styles.markdown}\n linkTarget=\"_blank\"\n content={\n description ??\n sortedManifest.description ??\n t('workflow.noDescription')\n }\n />\n }\n noPadding\n titleTypographyProps={{ component: 'h2' }}\n >\n <Stepper\n manifest={sortedManifest}\n onCreate={workflowOnCreate}\n {...props}\n />\n </InfoCard>\n )}\n </Content>\n );\n};\n\n/**\n * @alpha\n */\nexport const EmbeddableWorkflow = (props: WorkflowProps) => (\n <SecretsContextProvider>\n <Workflow {...props} />\n </SecretsContextProvider>\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Workflow.esm.js","sources":["../../../../src/next/components/Workflow/Workflow.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 { stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n Content,\n InfoCard,\n MarkdownContent,\n Progress,\n} from '@backstage/core-components';\nimport { errorApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/frontend-plugin-api';\nimport { ReviewStepProps } from '@backstage/plugin-scaffolder-react';\nimport { JsonValue } from '@backstage/types';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ComponentType, useCallback, useEffect } from 'react';\n\nimport { SecretsContextProvider } from '../../../secrets/SecretsContext';\nimport { scaffolderReactTranslationRef } from '../../../translation';\nimport { useFilteredSchemaProperties } from '../../hooks/useFilteredSchemaProperties';\nimport { useTemplateParameterSchema } from '../../hooks/useTemplateParameterSchema';\nimport { useTemplateTimeSavedMinutes } from '../../hooks/useTemplateTimeSaved';\nimport { Stepper, type StepperProps } from '../Stepper/Stepper';\n\nconst useStyles = makeStyles({\n markdown: {\n /** to make the styles for React Markdown not leak into the description */\n '& :first-child': {\n marginTop: 0,\n },\n '& :last-child': {\n marginBottom: 0,\n },\n },\n});\n\n/**\n * @alpha\n */\nexport type WorkflowProps = {\n title?: string;\n description?: string;\n namespace: string;\n templateName: string;\n components?: {\n ReviewStepComponent?: ComponentType<ReviewStepProps>;\n };\n onError(error: Error | undefined): JSX.Element | null;\n} & Pick<\n StepperProps,\n | 'extensions'\n | 'formProps'\n | 'components'\n | 'onCreate'\n | 'initialState'\n | 'layouts'\n>;\n\n/**\n * @alpha\n */\nexport const Workflow = (workflowProps: WorkflowProps): JSX.Element | null => {\n const { t } = useTranslationRef(scaffolderReactTranslationRef);\n const { title, description, namespace, templateName, onCreate, ...props } =\n workflowProps;\n\n const analytics = useAnalytics();\n const styles = useStyles();\n const templateRef = stringifyEntityRef({\n kind: 'Template',\n namespace: namespace,\n name: templateName,\n });\n\n const errorApi = useApi(errorApiRef);\n\n const { loading, manifest, error } = useTemplateParameterSchema(templateRef);\n\n const sortedManifest = useFilteredSchemaProperties(manifest);\n\n const minutesSaved = useTemplateTimeSavedMinutes(templateRef);\n\n const workflowOnCreate = useCallback(\n async (formState: Record<string, JsonValue>) => {\n await onCreate(formState);\n\n const name =\n typeof formState.name === 'string' ? formState.name : undefined;\n analytics.captureEvent('create', name ?? templateName ?? 'unknown', {\n value: minutesSaved,\n });\n },\n [onCreate, analytics, templateName, minutesSaved],\n );\n\n useEffect(() => {\n if (error) {\n errorApi.post(new Error(`Failed to load template, ${error}`));\n }\n }, [error, errorApi]);\n\n if (error) {\n return props.onError(error);\n }\n\n return (\n <Content>\n {loading && <Progress />}\n {sortedManifest && (\n <InfoCard\n title={title ?? sortedManifest.title}\n subheader={\n <MarkdownContent\n className={styles.markdown}\n linkTarget=\"_blank\"\n content={\n description ??\n sortedManifest.description ??\n t('workflow.noDescription')\n }\n />\n }\n noPadding\n titleTypographyProps={{ component: 'h2' }}\n >\n <Stepper\n manifest={sortedManifest}\n onCreate={workflowOnCreate}\n {...props}\n />\n </InfoCard>\n )}\n </Content>\n );\n};\n\n/**\n * @alpha\n */\nexport const EmbeddableWorkflow = (props: WorkflowProps) => (\n <SecretsContextProvider>\n <Workflow {...props} />\n </SecretsContextProvider>\n);\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { jsx } from 'react/jsx-runtime';
1
2
  import { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';
2
- import React, { useState, useContext, useCallback } from 'react';
3
+ import { useState, useContext, useCallback } from 'react';
3
4
 
4
5
  const SecretsContext = createVersionedContext("secrets-context");
5
6
  const SecretsContextProvider = (props) => {
@@ -7,12 +8,12 @@ const SecretsContextProvider = (props) => {
7
8
  const [secrets, setSecrets] = useState({
8
9
  ...initialSecrets
9
10
  });
10
- return /* @__PURE__ */ React.createElement(
11
+ return /* @__PURE__ */ jsx(
11
12
  SecretsContext.Provider,
12
13
  {
13
- value: createVersionedValueMap({ 1: { secrets, setSecrets } })
14
- },
15
- props.children
14
+ value: createVersionedValueMap({ 1: { secrets, setSecrets } }),
15
+ children: props.children
16
+ }
16
17
  );
17
18
  };
18
19
  const useTemplateSecrets = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsContext.esm.js","sources":["../../src/secrets/SecretsContext.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 {\n createVersionedContext,\n createVersionedValueMap,\n} from '@backstage/version-bridge';\nimport React, {\n useState,\n useCallback,\n useContext,\n PropsWithChildren,\n} from 'react';\n\n/**\n * The contents of the `SecretsContext`\n */\ntype SecretsContextContents = {\n secrets: Record<string, string>;\n setSecrets: React.Dispatch<React.SetStateAction<Record<string, string>>>;\n};\n\n/**\n * The context to hold the Secrets.\n */\nconst SecretsContext = createVersionedContext<{\n 1: SecretsContextContents;\n}>('secrets-context');\n\n/**\n * The Context Provider that holds the state for the secrets.\n * @public\n */\nexport const SecretsContextProvider = (\n props: PropsWithChildren<{ initialSecrets?: Record<string, string> }>,\n) => {\n const { initialSecrets = {} } = props;\n const [secrets, setSecrets] = useState<Record<string, string>>({\n ...initialSecrets,\n });\n\n return (\n <SecretsContext.Provider\n value={createVersionedValueMap({ 1: { secrets, setSecrets } })}\n >\n {props.children}\n </SecretsContext.Provider>\n );\n};\n\n/**\n * The return type from the useTemplateSecrets hook.\n * @public\n */\nexport interface ScaffolderUseTemplateSecrets {\n setSecrets: (input: Record<string, string>) => void;\n secrets: Record<string, string>;\n}\n\n/**\n * Hook to access the secrets context to be able to set secrets that are\n * passed to the Scaffolder backend.\n * @public\n */\nexport const useTemplateSecrets = (): ScaffolderUseTemplateSecrets => {\n const value = useContext(SecretsContext)?.atVersion(1);\n\n if (!value) {\n throw new Error(\n 'useTemplateSecrets must be used within a SecretsContextProvider',\n );\n }\n\n const { setSecrets: updateSecrets, secrets = {} } = value;\n\n const setSecrets = useCallback(\n (input: Record<string, string>) => {\n updateSecrets(currentSecrets => ({ ...currentSecrets, ...input }));\n },\n [updateSecrets],\n );\n\n return { setSecrets, secrets };\n};\n"],"names":[],"mappings":";;;AAqCA,MAAM,cAAA,GAAiB,uBAEpB,iBAAiB,CAAA;AAMP,MAAA,sBAAA,GAAyB,CACpC,KACG,KAAA;AACH,EAAA,MAAM,EAAE,cAAA,GAAiB,EAAC,EAAM,GAAA,KAAA;AAChC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAiC,CAAA;AAAA,IAC7D,GAAG;AAAA,GACJ,CAAA;AAED,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,cAAe,CAAA,QAAA;AAAA,IAAf;AAAA,MACC,KAAA,EAAO,wBAAwB,EAAE,CAAA,EAAG,EAAE,OAAS,EAAA,UAAA,IAAc;AAAA,KAAA;AAAA,IAE5D,KAAM,CAAA;AAAA,GACT;AAEJ;AAgBO,MAAM,qBAAqB,MAAoC;AACpE,EAAA,MAAM,KAAQ,GAAA,UAAA,CAAW,cAAc,CAAA,EAAG,UAAU,CAAC,CAAA;AAErD,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA;AAGF,EAAA,MAAM,EAAE,UAAY,EAAA,aAAA,EAAe,OAAU,GAAA,IAAO,GAAA,KAAA;AAEpD,EAAA,MAAM,UAAa,GAAA,WAAA;AAAA,IACjB,CAAC,KAAkC,KAAA;AACjC,MAAA,aAAA,CAAc,qBAAmB,EAAE,GAAG,cAAgB,EAAA,GAAG,OAAQ,CAAA,CAAA;AAAA,KACnE;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAO,OAAA,EAAE,YAAY,OAAQ,EAAA;AAC/B;;;;"}
1
+ {"version":3,"file":"SecretsContext.esm.js","sources":["../../src/secrets/SecretsContext.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 {\n createVersionedContext,\n createVersionedValueMap,\n} from '@backstage/version-bridge';\nimport {\n SetStateAction,\n Dispatch,\n useState,\n useCallback,\n useContext,\n PropsWithChildren,\n} from 'react';\n\n/**\n * The contents of the `SecretsContext`\n */\ntype SecretsContextContents = {\n secrets: Record<string, string>;\n setSecrets: Dispatch<SetStateAction<Record<string, string>>>;\n};\n\n/**\n * The context to hold the Secrets.\n */\nconst SecretsContext = createVersionedContext<{\n 1: SecretsContextContents;\n}>('secrets-context');\n\n/**\n * The Context Provider that holds the state for the secrets.\n * @public\n */\nexport const SecretsContextProvider = (\n props: PropsWithChildren<{ initialSecrets?: Record<string, string> }>,\n) => {\n const { initialSecrets = {} } = props;\n const [secrets, setSecrets] = useState<Record<string, string>>({\n ...initialSecrets,\n });\n\n return (\n <SecretsContext.Provider\n value={createVersionedValueMap({ 1: { secrets, setSecrets } })}\n >\n {props.children}\n </SecretsContext.Provider>\n );\n};\n\n/**\n * The return type from the useTemplateSecrets hook.\n * @public\n */\nexport interface ScaffolderUseTemplateSecrets {\n setSecrets: (input: Record<string, string>) => void;\n secrets: Record<string, string>;\n}\n\n/**\n * Hook to access the secrets context to be able to set secrets that are\n * passed to the Scaffolder backend.\n * @public\n */\nexport const useTemplateSecrets = (): ScaffolderUseTemplateSecrets => {\n const value = useContext(SecretsContext)?.atVersion(1);\n\n if (!value) {\n throw new Error(\n 'useTemplateSecrets must be used within a SecretsContextProvider',\n );\n }\n\n const { setSecrets: updateSecrets, secrets = {} } = value;\n\n const setSecrets = useCallback(\n (input: Record<string, string>) => {\n updateSecrets(currentSecrets => ({ ...currentSecrets, ...input }));\n },\n [updateSecrets],\n );\n\n return { setSecrets, secrets };\n};\n"],"names":[],"mappings":";;;;AAuCA,MAAM,cAAA,GAAiB,uBAEpB,iBAAiB,CAAA;AAMP,MAAA,sBAAA,GAAyB,CACpC,KACG,KAAA;AACH,EAAA,MAAM,EAAE,cAAA,GAAiB,EAAC,EAAM,GAAA,KAAA;AAChC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAiC,CAAA;AAAA,IAC7D,GAAG;AAAA,GACJ,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,cAAe,CAAA,QAAA;AAAA,IAAf;AAAA,MACC,KAAA,EAAO,wBAAwB,EAAE,CAAA,EAAG,EAAE,OAAS,EAAA,UAAA,IAAc,CAAA;AAAA,MAE5D,QAAM,EAAA,KAAA,CAAA;AAAA;AAAA,GACT;AAEJ;AAgBO,MAAM,qBAAqB,MAAoC;AACpE,EAAA,MAAM,KAAQ,GAAA,UAAA,CAAW,cAAc,CAAA,EAAG,UAAU,CAAC,CAAA;AAErD,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA;AAGF,EAAA,MAAM,EAAE,UAAY,EAAA,aAAA,EAAe,OAAU,GAAA,IAAO,GAAA,KAAA;AAEpD,EAAA,MAAM,UAAa,GAAA,WAAA;AAAA,IACjB,CAAC,KAAkC,KAAA;AACjC,MAAA,aAAA,CAAc,qBAAmB,EAAE,GAAG,cAAgB,EAAA,GAAG,OAAQ,CAAA,CAAA;AAAA,KACnE;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAO,OAAA,EAAE,YAAY,OAAQ,EAAA;AAC/B;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder-react",
3
- "version": "1.15.0-next.0",
3
+ "version": "1.15.0-next.2",
4
4
  "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder",
5
5
  "backstage": {
6
6
  "role": "web-library",
@@ -45,11 +45,11 @@
45
45
  "types": "./dist/index.d.ts",
46
46
  "typesVersions": {
47
47
  "*": {
48
- "*": [
49
- "dist/index.d.ts"
50
- ],
51
48
  "alpha": [
52
49
  "dist/alpha.d.ts"
50
+ ],
51
+ "package.json": [
52
+ "package.json"
53
53
  ]
54
54
  }
55
55
  },
@@ -68,13 +68,13 @@
68
68
  "dependencies": {
69
69
  "@backstage/catalog-client": "1.9.1",
70
70
  "@backstage/catalog-model": "1.7.3",
71
- "@backstage/core-components": "0.17.0",
72
- "@backstage/core-plugin-api": "1.10.5",
73
- "@backstage/frontend-plugin-api": "0.10.0",
74
- "@backstage/plugin-catalog-react": "1.16.1-next.0",
75
- "@backstage/plugin-permission-react": "0.4.32",
71
+ "@backstage/core-components": "0.17.1-next.1",
72
+ "@backstage/core-plugin-api": "1.10.6-next.0",
73
+ "@backstage/frontend-plugin-api": "0.10.1-next.1",
74
+ "@backstage/plugin-catalog-react": "1.17.0-next.2",
75
+ "@backstage/plugin-permission-react": "0.4.33-next.0",
76
76
  "@backstage/plugin-scaffolder-common": "1.5.10",
77
- "@backstage/theme": "0.6.4",
77
+ "@backstage/theme": "0.6.5-next.0",
78
78
  "@backstage/types": "1.2.1",
79
79
  "@backstage/version-bridge": "1.0.11",
80
80
  "@material-ui/core": "^4.12.2",
@@ -104,12 +104,12 @@
104
104
  "zod-to-json-schema": "^3.20.4"
105
105
  },
106
106
  "devDependencies": {
107
- "@backstage/cli": "0.32.0-next.0",
108
- "@backstage/core-app-api": "1.16.0",
109
- "@backstage/plugin-catalog": "1.29.0-next.0",
107
+ "@backstage/cli": "0.32.0-next.2",
108
+ "@backstage/core-app-api": "1.16.1-next.0",
109
+ "@backstage/plugin-catalog": "1.29.0-next.2",
110
110
  "@backstage/plugin-catalog-common": "1.1.3",
111
111
  "@backstage/plugin-permission-common": "0.8.4",
112
- "@backstage/test-utils": "1.7.6",
112
+ "@backstage/test-utils": "1.7.7-next.0",
113
113
  "@testing-library/dom": "^10.0.0",
114
114
  "@testing-library/jest-dom": "^6.0.0",
115
115
  "@testing-library/react": "^16.0.0",