@backstage/plugin-scaffolder 1.35.5-next.2 → 1.36.1

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 (42) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +61 -53
  3. package/dist/alpha/components/EditorSubPage.esm.js +71 -0
  4. package/dist/alpha/components/EditorSubPage.esm.js.map +1 -0
  5. package/dist/alpha/components/TasksSubPage.esm.js +21 -0
  6. package/dist/alpha/components/TasksSubPage.esm.js.map +1 -0
  7. package/dist/alpha/components/TemplateWizardPage/TemplateWizardPage.esm.js +54 -4
  8. package/dist/alpha/components/TemplateWizardPage/TemplateWizardPage.esm.js.map +1 -1
  9. package/dist/alpha/components/TemplatesSubPage.esm.js +128 -0
  10. package/dist/alpha/components/TemplatesSubPage.esm.js.map +1 -0
  11. package/dist/alpha/extensions.esm.js +55 -14
  12. package/dist/alpha/extensions.esm.js.map +1 -1
  13. package/dist/alpha/formFieldsApi.esm.js +25 -8
  14. package/dist/alpha/formFieldsApi.esm.js.map +1 -1
  15. package/dist/alpha/plugin.esm.js +7 -2
  16. package/dist/alpha/plugin.esm.js.map +1 -1
  17. package/dist/alpha.d.ts +316 -185
  18. package/dist/alpha.esm.js +5 -1
  19. package/dist/alpha.esm.js.map +1 -1
  20. package/dist/components/ActionsPage/index.esm.js +2 -0
  21. package/dist/components/ActionsPage/index.esm.js.map +1 -0
  22. package/dist/components/ListTasksPage/ListTasksPage.esm.js +1 -1
  23. package/dist/components/ListTasksPage/ListTasksPage.esm.js.map +1 -1
  24. package/dist/components/OngoingTask/OngoingTask.esm.js +283 -101
  25. package/dist/components/OngoingTask/OngoingTask.esm.js.map +1 -1
  26. package/dist/components/OngoingTask/OngoingTaskContextMenu.esm.js +97 -0
  27. package/dist/components/OngoingTask/OngoingTaskContextMenu.esm.js.map +1 -0
  28. package/dist/components/TemplatingExtensionsPage/index.esm.js +2 -0
  29. package/dist/components/TemplatingExtensionsPage/index.esm.js.map +1 -0
  30. package/dist/components/fields/EntityPicker/schema.esm.js.map +1 -1
  31. package/dist/components/fields/MultiEntityPicker/schema.esm.js +1 -1
  32. package/dist/components/fields/MultiEntityPicker/schema.esm.js.map +1 -1
  33. package/dist/components/fields/utils.esm.js.map +1 -1
  34. package/dist/index.d.ts +189 -3
  35. package/dist/index.esm.js +1 -1
  36. package/dist/packages/scaffolder-internal/src/wiring/InternalFormDecorator.esm.js.map +1 -1
  37. package/dist/packages/scaffolder-internal/src/wiring/InternalFormField.esm.js.map +1 -1
  38. package/dist/plugins/scaffolder/package.json.esm.js +4 -2
  39. package/dist/plugins/scaffolder/package.json.esm.js.map +1 -1
  40. package/dist/translation.esm.js +1 -0
  41. package/dist/translation.esm.js.map +1 -1
  42. package/package.json +28 -26
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { PageBlueprint, createExtensionInput, NavItemBlueprint, ApiBlueprint, identityApiRef, fetchApiRef, discoveryApiRef } from '@backstage/frontend-plugin-api';
2
+ import { PageBlueprint, createExtensionInput, SubPageBlueprint, NavItemBlueprint, ApiBlueprint, identityApiRef, fetchApiRef, discoveryApiRef } from '@backstage/frontend-plugin-api';
3
3
  import { rootRouteRef } from '../routes.esm.js';
4
4
  import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
5
- import { formFieldsApiRef, FormFieldBlueprint } from '@backstage/plugin-scaffolder-react/alpha';
5
+ import { FormFieldBlueprint, formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
6
6
  import { scmIntegrationsApiRef } from '@backstage/integration-react';
7
7
  import { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';
8
8
  import { ScaffolderClient } from '../api.esm.js';
@@ -13,25 +13,66 @@ const scaffolderPage = PageBlueprint.makeWithOverrides({
13
13
  FormFieldBlueprint.dataRefs.formFieldLoader
14
14
  ])
15
15
  },
16
- factory(originalFactory, { apis, inputs }) {
17
- const formFieldsApi = apis.get(formFieldsApiRef);
16
+ factory(originalFactory) {
18
17
  return originalFactory({
19
18
  routeRef: rootRouteRef,
20
19
  path: "/create",
20
+ title: "Create"
21
+ });
22
+ }
23
+ });
24
+ const scaffolderTemplatesSubPage = SubPageBlueprint.makeWithOverrides({
25
+ name: "templates",
26
+ factory(originalFactory, { apis }) {
27
+ const formFieldsApi = apis.get(formFieldsApiRef);
28
+ return originalFactory({
29
+ path: "templates",
30
+ title: "Templates",
21
31
  loader: async () => {
22
- const apiFormFields = await formFieldsApi?.loadFormFields() ?? [];
23
- const formFieldLoaders = inputs.formFields.map(
24
- (output) => output.get(FormFieldBlueprint.dataRefs.formFieldLoader)
25
- );
26
- const loadedFormFields = await Promise.all(
27
- formFieldLoaders.map((loader) => loader())
28
- );
29
- const formFields = [...apiFormFields, ...loadedFormFields];
30
- return import('../components/Router/Router.esm.js').then((m) => /* @__PURE__ */ jsx(m.InternalRouter, { formFields }));
32
+ const formFields = await formFieldsApi?.loadFormFields() ?? [];
33
+ return import('./components/TemplatesSubPage.esm.js').then((m) => /* @__PURE__ */ jsx(m.TemplatesSubPage, { formFields }));
31
34
  }
32
35
  });
33
36
  }
34
37
  });
38
+ const scaffolderTasksSubPage = SubPageBlueprint.make({
39
+ name: "tasks",
40
+ params: {
41
+ path: "tasks",
42
+ title: "Tasks",
43
+ loader: () => import('./components/TasksSubPage.esm.js').then((m) => /* @__PURE__ */ jsx(m.TasksSubPage, {}))
44
+ }
45
+ });
46
+ const scaffolderActionsSubPage = SubPageBlueprint.make({
47
+ name: "actions",
48
+ params: {
49
+ path: "actions",
50
+ title: "Actions",
51
+ loader: () => Promise.all([
52
+ import('../components/ActionsPage/index.esm.js'),
53
+ import('@backstage/core-components')
54
+ ]).then(([m, { Content }]) => /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(m.ActionPageContent, {}) }))
55
+ }
56
+ });
57
+ const scaffolderEditorSubPage = SubPageBlueprint.make({
58
+ name: "editor",
59
+ params: {
60
+ path: "edit",
61
+ title: "Template Editor",
62
+ loader: () => import('./components/EditorSubPage.esm.js').then((m) => /* @__PURE__ */ jsx(m.EditorSubPage, {}))
63
+ }
64
+ });
65
+ const scaffolderTemplatingExtensionsSubPage = SubPageBlueprint.make({
66
+ name: "templating-extensions",
67
+ params: {
68
+ path: "templating-extensions",
69
+ title: "Templating Extensions",
70
+ loader: () => Promise.all([
71
+ import('../components/TemplatingExtensionsPage/index.esm.js'),
72
+ import('@backstage/core-components')
73
+ ]).then(([m, { Content }]) => /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(m.TemplatingExtensionsPageContent, { linkLocal: true }) }))
74
+ }
75
+ });
35
76
  const scaffolderNavItem = NavItemBlueprint.make({
36
77
  params: {
37
78
  routeRef: rootRouteRef,
@@ -117,5 +158,5 @@ const scaffolderApi = ApiBlueprint.make({
117
158
  })
118
159
  });
119
160
 
120
- export { entityNamePickerFormField, entityPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, ownerPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField, repoUrlPickerFormField, scaffolderApi, scaffolderNavItem, scaffolderPage };
161
+ export { entityNamePickerFormField, entityPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, ownerPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField, repoUrlPickerFormField, scaffolderActionsSubPage, scaffolderApi, scaffolderEditorSubPage, scaffolderNavItem, scaffolderPage, scaffolderTasksSubPage, scaffolderTemplatesSubPage, scaffolderTemplatingExtensionsSubPage };
121
162
  //# sourceMappingURL=extensions.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.esm.js","sources":["../../src/alpha/extensions.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 */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n NavItemBlueprint,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { rootRouteRef } from '../routes';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport {\n FormFieldBlueprint,\n formFieldsApiRef,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport { ScaffolderClient } from '../api';\n\nexport const scaffolderPage = PageBlueprint.makeWithOverrides({\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory, { apis, inputs }) {\n const formFieldsApi = apis.get(formFieldsApiRef);\n\n return originalFactory({\n routeRef: rootRouteRef,\n path: '/create',\n loader: async () => {\n // Merge form fields from the API with old-style direct attachments\n const apiFormFields = (await formFieldsApi?.loadFormFields()) ?? [];\n const formFieldLoaders = inputs.formFields.map(output =>\n output.get(FormFieldBlueprint.dataRefs.formFieldLoader),\n );\n\n // Resolve direct attachments and combine with API form fields\n const loadedFormFields = await Promise.all(\n formFieldLoaders.map(loader => loader()),\n );\n const formFields = [...apiFormFields, ...loadedFormFields];\n\n return import('../components/Router/Router').then(m => (\n <m.InternalRouter formFields={formFields} />\n ));\n },\n });\n },\n});\n\nexport const scaffolderNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Create...',\n icon: CreateComponentIcon,\n },\n});\n\nexport const repoUrlPickerFormField = FormFieldBlueprint.make({\n name: 'repo-url-picker',\n params: {\n field: () => import('./fields/RepoUrlPicker').then(m => m.RepoUrlPicker),\n },\n});\n\nexport const entityNamePickerFormField = FormFieldBlueprint.make({\n name: 'entity-name-picker',\n params: {\n field: () =>\n import('./fields/EntityNamePicker').then(m => m.EntityNamePicker),\n },\n});\n\nexport const entityPickerFormField = FormFieldBlueprint.make({\n name: 'entity-picker',\n params: {\n field: () => import('./fields/EntityPicker').then(m => m.EntityPicker),\n },\n});\n\nexport const ownerPickerFormField = FormFieldBlueprint.make({\n name: 'owner-picker',\n params: {\n field: () => import('./fields/OwnerPicker').then(m => m.OwnerPicker),\n },\n});\n\nexport const entityTagsPickerFormField = FormFieldBlueprint.make({\n name: 'entity-tags-picker',\n params: {\n field: () =>\n import('./fields/EntityTagsPicker').then(m => m.EntityTagsPicker),\n },\n});\n\nexport const multiEntityPickerFormField = FormFieldBlueprint.make({\n name: 'multi-entity-picker',\n params: {\n field: () =>\n import('./fields/MultiEntityPicker').then(m => m.MultiEntityPicker),\n },\n});\n\nexport const myGroupsPickerFormField = FormFieldBlueprint.make({\n name: 'my-groups-picker',\n params: {\n field: () => import('./fields/MyGroupsPicker').then(m => m.MyGroupsPicker),\n },\n});\n\nexport const ownedEntityPickerFormField = FormFieldBlueprint.make({\n name: 'owned-entity-picker',\n params: {\n field: () =>\n import('./fields/OwnedEntityPicker').then(m => m.OwnedEntityPicker),\n },\n});\n\nexport const repoBranchPickerFormField = FormFieldBlueprint.make({\n name: 'repo-branch-picker',\n params: {\n field: () =>\n import('./fields/RepoBranchPicker').then(m => m.RepoBranchPicker),\n },\n});\n\nexport const repoOwnerPickerFormField = FormFieldBlueprint.make({\n name: 'repo-owner-picker',\n params: {\n field: () =>\n import('./fields/RepoOwnerPicker').then(m => m.RepoOwnerPicker),\n },\n});\n\nexport const scaffolderApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: scaffolderApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n fetchApi: fetchApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, scmIntegrationsApi, fetchApi, identityApi }) =>\n new ScaffolderClient({\n discoveryApi,\n scmIntegrationsApi,\n fetchApi,\n identityApi,\n }),\n }),\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.esm.js","sources":["../../src/alpha/extensions.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 */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n discoveryApiRef,\n fetchApiRef,\n identityApiRef,\n NavItemBlueprint,\n PageBlueprint,\n SubPageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport { rootRouteRef } from '../routes';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport {\n FormFieldBlueprint,\n formFieldsApiRef,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport { ScaffolderClient } from '../api';\n\nexport const scaffolderPage = PageBlueprint.makeWithOverrides({\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory) {\n return originalFactory({\n routeRef: rootRouteRef,\n path: '/create',\n title: 'Create',\n });\n },\n});\n\nexport const scaffolderTemplatesSubPage = SubPageBlueprint.makeWithOverrides({\n name: 'templates',\n factory(originalFactory, { apis }) {\n const formFieldsApi = apis.get(formFieldsApiRef);\n\n return originalFactory({\n path: 'templates',\n title: 'Templates',\n loader: async () => {\n const formFields = (await formFieldsApi?.loadFormFields()) ?? [];\n\n return import('./components/TemplatesSubPage').then(m => (\n <m.TemplatesSubPage formFields={formFields} />\n ));\n },\n });\n },\n});\n\nexport const scaffolderTasksSubPage = SubPageBlueprint.make({\n name: 'tasks',\n params: {\n path: 'tasks',\n title: 'Tasks',\n loader: () =>\n import('./components/TasksSubPage').then(m => <m.TasksSubPage />),\n },\n});\n\nexport const scaffolderActionsSubPage = SubPageBlueprint.make({\n name: 'actions',\n params: {\n path: 'actions',\n title: 'Actions',\n loader: () =>\n Promise.all([\n import('../components/ActionsPage'),\n import('@backstage/core-components'),\n ]).then(([m, { Content }]) => (\n <Content>\n <m.ActionPageContent />\n </Content>\n )),\n },\n});\n\nexport const scaffolderEditorSubPage = SubPageBlueprint.make({\n name: 'editor',\n params: {\n path: 'edit',\n title: 'Template Editor',\n loader: () =>\n import('./components/EditorSubPage').then(m => <m.EditorSubPage />),\n },\n});\n\nexport const scaffolderTemplatingExtensionsSubPage = SubPageBlueprint.make({\n name: 'templating-extensions',\n params: {\n path: 'templating-extensions',\n title: 'Templating Extensions',\n loader: () =>\n Promise.all([\n import('../components/TemplatingExtensionsPage'),\n import('@backstage/core-components'),\n ]).then(([m, { Content }]) => (\n <Content>\n <m.TemplatingExtensionsPageContent linkLocal />\n </Content>\n )),\n },\n});\n\nexport const scaffolderNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Create...',\n icon: CreateComponentIcon,\n },\n});\n\nexport const repoUrlPickerFormField = FormFieldBlueprint.make({\n name: 'repo-url-picker',\n params: {\n field: () => import('./fields/RepoUrlPicker').then(m => m.RepoUrlPicker),\n },\n});\n\nexport const entityNamePickerFormField = FormFieldBlueprint.make({\n name: 'entity-name-picker',\n params: {\n field: () =>\n import('./fields/EntityNamePicker').then(m => m.EntityNamePicker),\n },\n});\n\nexport const entityPickerFormField = FormFieldBlueprint.make({\n name: 'entity-picker',\n params: {\n field: () => import('./fields/EntityPicker').then(m => m.EntityPicker),\n },\n});\n\nexport const ownerPickerFormField = FormFieldBlueprint.make({\n name: 'owner-picker',\n params: {\n field: () => import('./fields/OwnerPicker').then(m => m.OwnerPicker),\n },\n});\n\nexport const entityTagsPickerFormField = FormFieldBlueprint.make({\n name: 'entity-tags-picker',\n params: {\n field: () =>\n import('./fields/EntityTagsPicker').then(m => m.EntityTagsPicker),\n },\n});\n\nexport const multiEntityPickerFormField = FormFieldBlueprint.make({\n name: 'multi-entity-picker',\n params: {\n field: () =>\n import('./fields/MultiEntityPicker').then(m => m.MultiEntityPicker),\n },\n});\n\nexport const myGroupsPickerFormField = FormFieldBlueprint.make({\n name: 'my-groups-picker',\n params: {\n field: () => import('./fields/MyGroupsPicker').then(m => m.MyGroupsPicker),\n },\n});\n\nexport const ownedEntityPickerFormField = FormFieldBlueprint.make({\n name: 'owned-entity-picker',\n params: {\n field: () =>\n import('./fields/OwnedEntityPicker').then(m => m.OwnedEntityPicker),\n },\n});\n\nexport const repoBranchPickerFormField = FormFieldBlueprint.make({\n name: 'repo-branch-picker',\n params: {\n field: () =>\n import('./fields/RepoBranchPicker').then(m => m.RepoBranchPicker),\n },\n});\n\nexport const repoOwnerPickerFormField = FormFieldBlueprint.make({\n name: 'repo-owner-picker',\n params: {\n field: () =>\n import('./fields/RepoOwnerPicker').then(m => m.RepoOwnerPicker),\n },\n});\n\nexport const scaffolderApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: scaffolderApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n fetchApi: fetchApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, scmIntegrationsApi, fetchApi, identityApi }) =>\n new ScaffolderClient({\n discoveryApi,\n scmIntegrationsApi,\n fetchApi,\n identityApi,\n }),\n }),\n});\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ApiBlueprint, createExtensionInput } from '@backstage/frontend-plugin-api';
1
+ import { ApiBlueprint, createExtensionInput, appTreeApiRef } from '@backstage/frontend-plugin-api';
2
2
  import { FormFieldBlueprint, formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
3
3
  export { formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha';
4
4
  import { OpaqueFormField } from '../packages/scaffolder-internal/src/wiring/InternalFormField.esm.js';
@@ -18,22 +18,39 @@ const formFieldsApi = ApiBlueprint.makeWithOverrides({
18
18
  return originalFactory(
19
19
  (defineParams) => defineParams({
20
20
  api: formFieldsApiRef,
21
- deps: {},
22
- factory: () => ({
21
+ deps: { appTreeApi: appTreeApiRef },
22
+ factory: ({ appTreeApi }) => ({
23
23
  async loadFormFields() {
24
+ const pageFormFieldLoaders = getPageFormFieldLoaders(appTreeApi);
24
25
  const formFields = await Promise.all(
25
- formFieldLoaders.map((loader) => loader())
26
+ [...formFieldLoaders, ...pageFormFieldLoaders].map(
27
+ (loader) => loader()
28
+ )
26
29
  );
27
- const internalFormFields = formFields.map(
28
- OpaqueFormField.toInternal
29
- );
30
- return internalFormFields;
30
+ return formFields.map(OpaqueFormField.toInternal);
31
31
  }
32
32
  })
33
33
  })
34
34
  );
35
35
  }
36
36
  });
37
+ function getPageFormFieldLoaders(appTreeApi) {
38
+ const { tree } = appTreeApi.getTree();
39
+ const pageNode = tree.nodes.get("page:scaffolder");
40
+ if (!pageNode?.instance) {
41
+ return [];
42
+ }
43
+ const formFieldNodes = pageNode.edges.attachments.get("formFields") ?? [];
44
+ return formFieldNodes.flatMap((node) => {
45
+ if (!node.instance) {
46
+ return [];
47
+ }
48
+ const loader = node.instance.getData(
49
+ FormFieldBlueprint.dataRefs.formFieldLoader
50
+ );
51
+ return loader ? [loader] : [];
52
+ });
53
+ }
37
54
 
38
55
  export { formFieldsApi };
39
56
  //# sourceMappingURL=formFieldsApi.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formFieldsApi.esm.js","sources":["../../src/alpha/formFieldsApi.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport {\n FormFieldBlueprint,\n formFieldsApiRef,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { OpaqueFormField } from '@internal/scaffolder';\n\nexport const formFieldsApi = ApiBlueprint.makeWithOverrides({\n name: 'form-fields',\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory, { inputs }) {\n const formFieldLoaders = inputs.formFields.map(e =>\n e.get(FormFieldBlueprint.dataRefs.formFieldLoader),\n );\n\n return originalFactory(defineParams =>\n defineParams({\n api: formFieldsApiRef,\n deps: {},\n factory: () => ({\n async loadFormFields() {\n const formFields = await Promise.all(\n formFieldLoaders.map(loader => loader()),\n );\n\n const internalFormFields = formFields.map(\n OpaqueFormField.toInternal,\n );\n\n return internalFormFields;\n },\n }),\n }),\n );\n },\n});\n\nexport {\n formFieldsApiRef,\n type ScaffolderFormFieldsApi,\n} from '@backstage/plugin-scaffolder-react/alpha';\n"],"names":[],"mappings":";;;;;;AA0BO,MAAM,aAAA,GAAgB,aAAa,iBAAA,CAAkB;AAAA,EAC1D,IAAA,EAAM,aAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,YAAY,oBAAA,CAAqB;AAAA,MAC/B,mBAAmB,QAAA,CAAS;AAAA,KAC7B;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,gBAAA,GAAmB,OAAO,UAAA,CAAW,GAAA;AAAA,MAAI,CAAA,CAAA,KAC7C,CAAA,CAAE,GAAA,CAAI,kBAAA,CAAmB,SAAS,eAAe;AAAA,KACnD;AAEA,IAAA,OAAO,eAAA;AAAA,MAAgB,kBACrB,YAAA,CAAa;AAAA,QACX,GAAA,EAAK,gBAAA;AAAA,QACL,MAAM,EAAC;AAAA,QACP,SAAS,OAAO;AAAA,UACd,MAAM,cAAA,GAAiB;AACrB,YAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,cAC/B,gBAAA,CAAiB,GAAA,CAAI,CAAA,MAAA,KAAU,MAAA,EAAQ;AAAA,aACzC;AAEA,YAAA,MAAM,qBAAqB,UAAA,CAAW,GAAA;AAAA,cACpC,eAAA,CAAgB;AAAA,aAClB;AAEA,YAAA,OAAO,kBAAA;AAAA,UACT;AAAA,SACF;AAAA,OACD;AAAA,KACH;AAAA,EACF;AACF,CAAC;;;;"}
1
+ {"version":3,"file":"formFieldsApi.esm.js","sources":["../../src/alpha/formFieldsApi.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n appTreeApiRef,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport {\n FormFieldBlueprint,\n formFieldsApiRef,\n} from '@backstage/plugin-scaffolder-react/alpha';\nimport { OpaqueFormField } from '@internal/scaffolder';\n\nexport const formFieldsApi = ApiBlueprint.makeWithOverrides({\n name: 'form-fields',\n inputs: {\n formFields: createExtensionInput([\n FormFieldBlueprint.dataRefs.formFieldLoader,\n ]),\n },\n factory(originalFactory, { inputs }) {\n const formFieldLoaders = inputs.formFields.map(e =>\n e.get(FormFieldBlueprint.dataRefs.formFieldLoader),\n );\n\n return originalFactory(defineParams =>\n defineParams({\n api: formFieldsApiRef,\n deps: { appTreeApi: appTreeApiRef },\n factory: ({ appTreeApi }) => ({\n async loadFormFields() {\n const pageFormFieldLoaders = getPageFormFieldLoaders(appTreeApi);\n\n const formFields = await Promise.all(\n [...formFieldLoaders, ...pageFormFieldLoaders].map(loader =>\n loader(),\n ),\n );\n\n return formFields.map(OpaqueFormField.toInternal);\n },\n }),\n }),\n );\n },\n});\n\nfunction getPageFormFieldLoaders(appTreeApi: typeof appTreeApiRef.T) {\n const { tree } = appTreeApi.getTree();\n const pageNode = tree.nodes.get('page:scaffolder');\n if (!pageNode?.instance) {\n return [];\n }\n const formFieldNodes = pageNode.edges.attachments.get('formFields') ?? [];\n return formFieldNodes.flatMap(node => {\n if (!node.instance) {\n return [];\n }\n const loader = node.instance.getData(\n FormFieldBlueprint.dataRefs.formFieldLoader,\n );\n return loader ? [loader] : [];\n });\n}\n\nexport {\n formFieldsApiRef,\n type ScaffolderFormFieldsApi,\n} from '@backstage/plugin-scaffolder-react/alpha';\n"],"names":[],"mappings":";;;;;;AA2BO,MAAM,aAAA,GAAgB,aAAa,iBAAA,CAAkB;AAAA,EAC1D,IAAA,EAAM,aAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,YAAY,oBAAA,CAAqB;AAAA,MAC/B,mBAAmB,QAAA,CAAS;AAAA,KAC7B;AAAA,GACH;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,gBAAA,GAAmB,OAAO,UAAA,CAAW,GAAA;AAAA,MAAI,CAAA,CAAA,KAC7C,CAAA,CAAE,GAAA,CAAI,kBAAA,CAAmB,SAAS,eAAe;AAAA,KACnD;AAEA,IAAA,OAAO,eAAA;AAAA,MAAgB,kBACrB,YAAA,CAAa;AAAA,QACX,GAAA,EAAK,gBAAA;AAAA,QACL,IAAA,EAAM,EAAE,UAAA,EAAY,aAAA,EAAc;AAAA,QAClC,OAAA,EAAS,CAAC,EAAE,UAAA,EAAW,MAAO;AAAA,UAC5B,MAAM,cAAA,GAAiB;AACrB,YAAA,MAAM,oBAAA,GAAuB,wBAAwB,UAAU,CAAA;AAE/D,YAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,cAC/B,CAAC,GAAG,gBAAA,EAAkB,GAAG,oBAAoB,CAAA,CAAE,GAAA;AAAA,gBAAI,YACjD,MAAA;AAAO;AACT,aACF;AAEA,YAAA,OAAO,UAAA,CAAW,GAAA,CAAI,eAAA,CAAgB,UAAU,CAAA;AAAA,UAClD;AAAA,SACF;AAAA,OACD;AAAA,KACH;AAAA,EACF;AACF,CAAC;AAED,SAAS,wBAAwB,UAAA,EAAoC;AACnE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,UAAA,CAAW,OAAA,EAAQ;AACpC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,iBAAiB,CAAA;AACjD,EAAA,IAAI,CAAC,UAAU,QAAA,EAAU;AACvB,IAAA,OAAO,EAAC;AAAA,EACV;AACA,EAAA,MAAM,iBAAiB,QAAA,CAAS,KAAA,CAAM,YAAY,GAAA,CAAI,YAAY,KAAK,EAAC;AACxE,EAAA,OAAO,cAAA,CAAe,QAAQ,CAAA,IAAA,KAAQ;AACpC,IAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAClB,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,MAAM,MAAA,GAAS,KAAK,QAAA,CAAS,OAAA;AAAA,MAC3B,mBAAmB,QAAA,CAAS;AAAA,KAC9B;AACA,IAAA,OAAO,MAAA,GAAS,CAAC,MAAM,CAAA,GAAI,EAAC;AAAA,EAC9B,CAAC,CAAA;AACH;;;;"}
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
3
  import CreateComponentIcon from '@material-ui/icons/AddCircleOutline';
4
4
  import { viewTechDocRouteRef, registerComponentRouteRef, templatingExtensionsRouteRef, editRouteRef, scaffolderListTaskRouteRef, actionsRouteRef, scaffolderTaskRouteRef, selectedTemplateRouteRef, rootRouteRef } from '../routes.esm.js';
5
- import { scaffolderApi, scaffolderPage, scaffolderNavItem, repoUrlPickerFormField, entityNamePickerFormField, entityPickerFormField, ownerPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField } from './extensions.esm.js';
5
+ import { scaffolderApi, scaffolderPage, scaffolderTemplatesSubPage, scaffolderTasksSubPage, scaffolderActionsSubPage, scaffolderEditorSubPage, scaffolderTemplatingExtensionsSubPage, scaffolderNavItem, repoUrlPickerFormField, entityNamePickerFormField, entityPickerFormField, ownerPickerFormField, entityTagsPickerFormField, multiEntityPickerFormField, myGroupsPickerFormField, ownedEntityPickerFormField, repoBranchPickerFormField, repoOwnerPickerFormField } from './extensions.esm.js';
6
6
  import { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
7
7
  import { formFieldsApi } from './formFieldsApi.esm.js';
8
8
  import './api/ref.esm.js';
@@ -20,7 +20,7 @@ const scaffolderEntityIconLink = EntityIconLinkBlueprint.make({
20
20
  var plugin = createFrontendPlugin({
21
21
  pluginId: "scaffolder",
22
22
  title: "Create",
23
- icon: /* @__PURE__ */ jsx(CreateComponentIcon, {}),
23
+ icon: /* @__PURE__ */ jsx(CreateComponentIcon, { fontSize: "inherit" }),
24
24
  info: { packageJson: () => import('../plugins/scaffolder/package.json.esm.js') },
25
25
  routes: {
26
26
  root: rootRouteRef,
@@ -38,6 +38,11 @@ var plugin = createFrontendPlugin({
38
38
  extensions: [
39
39
  scaffolderApi,
40
40
  scaffolderPage,
41
+ scaffolderTemplatesSubPage,
42
+ scaffolderTasksSubPage,
43
+ scaffolderActionsSubPage,
44
+ scaffolderEditorSubPage,
45
+ scaffolderTemplatingExtensionsSubPage,
41
46
  scaffolderNavItem,
42
47
  scaffolderEntityIconLink,
43
48
  formDecoratorsApi,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport {\n actionsRouteRef,\n editRouteRef,\n registerComponentRouteRef,\n rootRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templatingExtensionsRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\nimport {\n entityNamePickerFormField,\n entityPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n ownerPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n repoUrlPickerFormField,\n scaffolderApi,\n scaffolderNavItem,\n scaffolderPage,\n} from './extensions';\nimport { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { formFieldsApi } from './formFieldsApi';\nimport { formDecoratorsApi } from './api';\nimport { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { useScaffolderTemplateIconLinkProps } from './hooks/useScaffolderTemplateIconLinkProps';\n\n/** @alpha */\nconst scaffolderEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'launch-template',\n params: {\n filter: isTemplateEntityV1beta3,\n useProps: useScaffolderTemplateIconLinkProps,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'scaffolder',\n title: 'Create',\n icon: <CreateComponentIcon />,\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n },\n externalRoutes: {\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n },\n extensions: [\n scaffolderApi,\n scaffolderPage,\n scaffolderNavItem,\n scaffolderEntityIconLink,\n formDecoratorsApi,\n formFieldsApi,\n repoUrlPickerFormField,\n entityNamePickerFormField,\n entityPickerFormField,\n ownerPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAmDA,MAAM,wBAAA,GAA2B,wBAAwB,IAAA,CAAK;AAAA,EAC5D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,uBAAA;AAAA,IACR,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,sBAAO,mBAAA,EAAA,EAAoB,CAAA;AAAA,EAC3B,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,2CAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,gBAAA,EAAkB,wBAAA;AAAA,IAClB,WAAA,EAAa,sBAAA;AAAA,IACb,OAAA,EAAS,eAAA;AAAA,IACT,SAAA,EAAW,0BAAA;AAAA,IACX,IAAA,EAAM,YAAA;AAAA,IACN,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,iBAAA,EAAmB,yBAAA;AAAA,IACnB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,yBAAA;AAAA,IACA,qBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,0BAAA;AAAA,IACA,uBAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport CreateComponentIcon from '@material-ui/icons/AddCircleOutline';\nimport {\n actionsRouteRef,\n editRouteRef,\n registerComponentRouteRef,\n rootRouteRef,\n scaffolderListTaskRouteRef,\n scaffolderTaskRouteRef,\n selectedTemplateRouteRef,\n templatingExtensionsRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\nimport {\n entityNamePickerFormField,\n entityPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n ownerPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n repoUrlPickerFormField,\n scaffolderApi,\n scaffolderNavItem,\n scaffolderPage,\n scaffolderTemplatesSubPage,\n scaffolderTasksSubPage,\n scaffolderActionsSubPage,\n scaffolderEditorSubPage,\n scaffolderTemplatingExtensionsSubPage,\n} from './extensions';\nimport { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { formFieldsApi } from './formFieldsApi';\nimport { formDecoratorsApi } from './api';\nimport { EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { useScaffolderTemplateIconLinkProps } from './hooks/useScaffolderTemplateIconLinkProps';\n\n/** @alpha */\nconst scaffolderEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'launch-template',\n params: {\n filter: isTemplateEntityV1beta3,\n useProps: useScaffolderTemplateIconLinkProps,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'scaffolder',\n title: 'Create',\n icon: <CreateComponentIcon fontSize=\"inherit\" />,\n info: { packageJson: () => import('../../package.json') },\n routes: {\n root: rootRouteRef,\n selectedTemplate: selectedTemplateRouteRef,\n ongoingTask: scaffolderTaskRouteRef,\n actions: actionsRouteRef,\n listTasks: scaffolderListTaskRouteRef,\n edit: editRouteRef,\n templatingExtensions: templatingExtensionsRouteRef,\n },\n externalRoutes: {\n registerComponent: registerComponentRouteRef,\n viewTechDoc: viewTechDocRouteRef,\n },\n extensions: [\n scaffolderApi,\n scaffolderPage,\n scaffolderTemplatesSubPage,\n scaffolderTasksSubPage,\n scaffolderActionsSubPage,\n scaffolderEditorSubPage,\n scaffolderTemplatingExtensionsSubPage,\n scaffolderNavItem,\n scaffolderEntityIconLink,\n formDecoratorsApi,\n formFieldsApi,\n repoUrlPickerFormField,\n entityNamePickerFormField,\n entityPickerFormField,\n ownerPickerFormField,\n entityTagsPickerFormField,\n multiEntityPickerFormField,\n myGroupsPickerFormField,\n ownedEntityPickerFormField,\n repoBranchPickerFormField,\n repoOwnerPickerFormField,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAwDA,MAAM,wBAAA,GAA2B,wBAAwB,IAAA,CAAK;AAAA,EAC5D,IAAA,EAAM,iBAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,uBAAA;AAAA,IACR,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAGD,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,kBAAM,GAAA,CAAC,mBAAA,EAAA,EAAoB,QAAA,EAAS,SAAA,EAAU,CAAA;AAAA,EAC9C,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,2CAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,YAAA;AAAA,IACN,gBAAA,EAAkB,wBAAA;AAAA,IAClB,WAAA,EAAa,sBAAA;AAAA,IACb,OAAA,EAAS,eAAA;AAAA,IACT,SAAA,EAAW,0BAAA;AAAA,IACX,IAAA,EAAM,YAAA;AAAA,IACN,oBAAA,EAAsB;AAAA,GACxB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,iBAAA,EAAmB,yBAAA;AAAA,IACnB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,sBAAA;AAAA,IACA,wBAAA;AAAA,IACA,uBAAA;AAAA,IACA,qCAAA;AAAA,IACA,iBAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,yBAAA;AAAA,IACA,qBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,0BAAA;AAAA,IACA,uBAAA;AAAA,IACA,0BAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}