@kartverket/backstage-plugin-risk-scorecard 3.1.3 → 3.1.5

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 (89) hide show
  1. package/dist/components/common/Select.esm.js +9 -7
  2. package/dist/components/common/Select.esm.js.map +1 -1
  3. package/dist/components/riScDialog/ConfigRiscInfo.esm.js +7 -2
  4. package/dist/components/riScDialog/ConfigRiscInfo.esm.js.map +1 -1
  5. package/dist/components/riScDialog/RiScDialog.esm.js +14 -1
  6. package/dist/components/riScDialog/RiScDialog.esm.js.map +1 -1
  7. package/dist/components/riScInfo/MigrationDialog.esm.js +29 -22
  8. package/dist/components/riScInfo/MigrationDialog.esm.js.map +1 -1
  9. package/dist/components/riScInfo/PublishDialog.esm.js +4 -3
  10. package/dist/components/riScInfo/PublishDialog.esm.js.map +1 -1
  11. package/dist/components/riScInfo/migrations/RiScMigrationChanges40.esm.js +102 -0
  12. package/dist/components/riScInfo/migrations/RiScMigrationChanges40.esm.js.map +1 -0
  13. package/dist/components/riScInfo/migrations/RiScMigrationChanges41.esm.js +112 -0
  14. package/dist/components/riScInfo/migrations/RiScMigrationChanges41.esm.js.map +1 -0
  15. package/dist/components/riScInfo/migrations/components/ChangeSetBox.esm.js +16 -0
  16. package/dist/components/riScInfo/migrations/components/ChangeSetBox.esm.js.map +1 -0
  17. package/dist/components/riScInfo/migrations/components/ChangeSetBoxTitle.esm.js +10 -0
  18. package/dist/components/riScInfo/migrations/components/ChangeSetBoxTitle.esm.js.map +1 -0
  19. package/dist/components/riScInfo/migrations/components/ChangeSetChangedValue.esm.js +30 -0
  20. package/dist/components/riScInfo/migrations/components/ChangeSetChangedValue.esm.js.map +1 -0
  21. package/dist/components/riScInfo/migrations/components/ChangeSetRemovedProperty.esm.js +16 -0
  22. package/dist/components/riScInfo/migrations/components/ChangeSetRemovedProperty.esm.js.map +1 -0
  23. package/dist/components/riScInfo/migrations/components/ChangeSetTag.esm.js +16 -0
  24. package/dist/components/riScInfo/migrations/components/ChangeSetTag.esm.js.map +1 -0
  25. package/dist/components/riScInfo/migrations/components/ChangeSetTags.esm.js +10 -0
  26. package/dist/components/riScInfo/migrations/components/ChangeSetTags.esm.js.map +1 -0
  27. package/dist/components/riScInfo/migrations/components/ChangeSetText.esm.js +10 -0
  28. package/dist/components/riScInfo/migrations/components/ChangeSetText.esm.js.map +1 -0
  29. package/dist/components/riScInfo/migrations/components/ChangeSetTitle.esm.js +10 -0
  30. package/dist/components/riScInfo/migrations/components/ChangeSetTitle.esm.js.map +1 -0
  31. package/dist/components/riScInfo/migrations/components/MigrationTitle.esm.js +33 -0
  32. package/dist/components/riScInfo/migrations/components/MigrationTitle.esm.js.map +1 -0
  33. package/dist/components/riScInfo/migrations/components/changeSetStyles.esm.js +132 -0
  34. package/dist/components/riScInfo/migrations/components/changeSetStyles.esm.js.map +1 -0
  35. package/dist/components/riScInfo/riScStatus/Progress.esm.js +10 -5
  36. package/dist/components/riScInfo/riScStatus/Progress.esm.js.map +1 -1
  37. package/dist/components/riScInfo/riScStatus/RiScDifferenceDialog.esm.js +7 -7
  38. package/dist/components/riScInfo/riScStatus/RiScDifferenceDialog.esm.js.map +1 -1
  39. package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js +27 -8
  40. package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js.map +1 -1
  41. package/dist/components/riScInfo/riScStatus/utils.esm.js +3 -1
  42. package/dist/components/riScInfo/riScStatus/utils.esm.js.map +1 -1
  43. package/dist/components/riScPlugin/RiScPlugin.esm.js +29 -13
  44. package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
  45. package/dist/components/riskMatrix/AggregatedCost.esm.js +8 -8
  46. package/dist/components/riskMatrix/AggregatedCost.esm.js.map +1 -1
  47. package/dist/components/riskMatrix/EstimatedRiskInfoDialog.esm.js +55 -14
  48. package/dist/components/riskMatrix/EstimatedRiskInfoDialog.esm.js.map +1 -1
  49. package/dist/components/riskMatrix/RiskMatrix.esm.js +6 -4
  50. package/dist/components/riskMatrix/RiskMatrix.esm.js.map +1 -1
  51. package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js +10 -6
  52. package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js.map +1 -1
  53. package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js +20 -19
  54. package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js.map +1 -1
  55. package/dist/components/scenarioDrawer/components/ActionBox.esm.js +9 -5
  56. package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
  57. package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js +116 -71
  58. package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js.map +1 -1
  59. package/dist/components/scenarioDrawer/components/RiskOptionDisplay.esm.js +45 -0
  60. package/dist/components/scenarioDrawer/components/RiskOptionDisplay.esm.js.map +1 -0
  61. package/dist/components/scenarioDrawer/components/RiskSection.esm.js +18 -10
  62. package/dist/components/scenarioDrawer/components/RiskSection.esm.js.map +1 -1
  63. package/dist/components/scenarioDrawer/scenarioDrawerComponents.esm.js +4 -4
  64. package/dist/components/scenarioDrawer/scenarioDrawerComponents.esm.js.map +1 -1
  65. package/dist/components/scenarioTable/ScenarioTable.esm.js +9 -4
  66. package/dist/components/scenarioTable/ScenarioTable.esm.js.map +1 -1
  67. package/dist/components/scenarioTable/ScenarioTableProgressBar.esm.js +3 -3
  68. package/dist/components/scenarioTable/ScenarioTableProgressBar.esm.js.map +1 -1
  69. package/dist/components/scenarioTable/ScenarioTableStyles.esm.js +2 -1
  70. package/dist/components/scenarioTable/ScenarioTableStyles.esm.js.map +1 -1
  71. package/dist/contexts/RiScContext.esm.js +63 -1
  72. package/dist/contexts/RiScContext.esm.js.map +1 -1
  73. package/dist/contexts/ScenarioContext.esm.js +13 -10
  74. package/dist/contexts/ScenarioContext.esm.js.map +1 -1
  75. package/dist/urls/backend.esm.js.map +1 -1
  76. package/dist/urls/external.esm.js +0 -1
  77. package/dist/urls/external.esm.js.map +1 -1
  78. package/dist/utils/DTOs.esm.js.map +1 -1
  79. package/dist/utils/constants.esm.js +13 -4
  80. package/dist/utils/constants.esm.js.map +1 -1
  81. package/dist/utils/hooks.esm.js +19 -3
  82. package/dist/utils/hooks.esm.js.map +1 -1
  83. package/dist/utils/translations.esm.js +164 -58
  84. package/dist/utils/translations.esm.js.map +1 -1
  85. package/dist/utils/types.esm.js +6 -0
  86. package/dist/utils/types.esm.js.map +1 -1
  87. package/dist/utils/utilityfunctions.esm.js +47 -11
  88. package/dist/utils/utilityfunctions.esm.js.map +1 -1
  89. package/package.json +3 -2
@@ -1,16 +1,16 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useController } from 'react-hook-form';
3
2
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
4
- import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
5
3
  import Box from '@mui/material/Box';
4
+ import Checkbox from '@mui/material/Checkbox';
6
5
  import Chip from '@mui/material/Chip';
7
6
  import FormControl from '@mui/material/FormControl';
8
7
  import FormHelperText from '@mui/material/FormHelperText';
9
8
  import FormLabel from '@mui/material/FormLabel';
10
- import MUISelect from '@mui/material/Select';
11
- import Checkbox from '@mui/material/Checkbox';
12
- import MenuItem from '@mui/material/MenuItem';
13
9
  import ListItemText from '@mui/material/ListItemText';
10
+ import MenuItem from '@mui/material/MenuItem';
11
+ import MUISelect from '@mui/material/Select';
12
+ import { useController } from 'react-hook-form';
13
+ import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
14
14
  import { formLabel, formHelperText } from './typography.esm.js';
15
15
 
16
16
  function Select({
@@ -24,13 +24,14 @@ function Select({
24
24
  multiple,
25
25
  labelTranslationKey,
26
26
  options,
27
+ rules,
27
28
  ...props
28
29
  }) {
29
30
  const { t } = useTranslationRef(pluginRiScTranslationRef);
30
31
  const { field } = useController({
31
32
  name,
32
33
  control,
33
- rules: { required }
34
+ rules: { ...rules, required }
34
35
  });
35
36
  function renderValue(values) {
36
37
  if (!multiple) {
@@ -64,7 +65,7 @@ function Select({
64
65
  }
65
66
  return fieldValue === optionValue;
66
67
  }
67
- return /* @__PURE__ */ jsxs(FormControl, { sx: { width: "100%", gap: "4px" }, children: [
68
+ return /* @__PURE__ */ jsxs(FormControl, { error, sx: { width: "100%", gap: "4px" }, children: [
68
69
  label && /* @__PURE__ */ jsx(FormLabel, { sx: formLabel, required, children: label }),
69
70
  sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
70
71
  /* @__PURE__ */ jsx(
@@ -73,6 +74,7 @@ function Select({
73
74
  MenuProps: {
74
75
  disablePortal: true
75
76
  },
77
+ error,
76
78
  variant: "outlined",
77
79
  renderValue,
78
80
  multiple,
@@ -1 +1 @@
1
- {"version":3,"file":"Select.esm.js","sources":["../../../src/components/common/Select.tsx"],"sourcesContent":["import {\n Control,\n FieldValues,\n Path,\n useController,\n type UseControllerReturn,\n} from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MUISelect, { SelectProps } from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props<T extends FieldValues> = SelectProps & {\n sublabel?: string;\n helperText?: string;\n control?: Control<T, any>;\n name: Path<T>;\n labelTranslationKey?: string;\n options: { value: string | number; renderedValue: string | number }[];\n};\n\nexport function Select<T extends FieldValues>({\n label,\n sublabel,\n error,\n helperText,\n required,\n control,\n name,\n multiple,\n labelTranslationKey,\n options,\n ...props\n}: Props<T>) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { field } = useController({\n name,\n control,\n rules: { required },\n });\n\n // values er strengt tatt unknown, men da må vi bruke mye ts-ignore for å komme i mål\n function renderValue(values: any) {\n if (!multiple) {\n return options.find(option => option.value === values)?.renderedValue;\n }\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: 0,\n paddingBottom: 0,\n }}\n >\n {values.map((value: string) => (\n <Chip\n key={value}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value\n }\n />\n ))}\n </Box>\n );\n }\n\n function handleChecked(\n fieldValue: UseControllerReturn['field']['value'],\n optionValue: Props<T>['options'][number]['value'],\n ) {\n if (Array.isArray(fieldValue)) {\n return fieldValue.includes(optionValue);\n }\n return fieldValue === optionValue;\n }\n\n return (\n <FormControl sx={{ width: '100%', gap: '4px' }}>\n {label && (\n <FormLabel sx={formLabel} required={required}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n\n <MUISelect\n MenuProps={{\n disablePortal: true,\n }}\n variant=\"outlined\"\n renderValue={renderValue}\n multiple={multiple}\n SelectDisplayProps={\n multiple\n ? {\n style: {\n paddingBottom: 8,\n paddingTop: 16,\n minHeight: 40,\n },\n }\n : {}\n }\n inputRef={field.ref}\n {...field}\n {...props}\n >\n {options.map(option => (\n <MenuItem key={option.value} value={option.value}>\n {multiple && (\n <Checkbox checked={handleChecked(field.value, option.value)} />\n )}\n <ListItemText primary={option.renderedValue} />\n </MenuItem>\n ))}\n </MUISelect>\n {error && <FormHelperText error>{helperText}</FormHelperText>}\n </FormControl>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.esm.js","sources":["../../../src/components/common/Select.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport Chip from '@mui/material/Chip';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport ListItemText from '@mui/material/ListItemText';\nimport MenuItem from '@mui/material/MenuItem';\nimport MUISelect, { SelectProps } from '@mui/material/Select';\nimport {\n Control,\n FieldValues,\n Path,\n RegisterOptions,\n useController,\n type UseControllerReturn,\n} from 'react-hook-form';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props<T extends FieldValues> = SelectProps & {\n sublabel?: string;\n helperText?: string;\n control?: Control<T, any>;\n name: Path<T>;\n labelTranslationKey?: string;\n options: {\n value: string | number;\n renderedValue: React.ReactNode | string | number;\n }[];\n rules?: Omit<\n RegisterOptions<T, string & Path<T>>,\n 'disabled' | 'valueAsNumber' | 'valueAsDate' | 'setValueAs'\n >;\n};\n\nexport function Select<T extends FieldValues>({\n label,\n sublabel,\n error,\n helperText,\n required,\n control,\n name,\n multiple,\n labelTranslationKey,\n options,\n rules,\n ...props\n}: Props<T>) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { field } = useController({\n name,\n control,\n rules: { ...rules, required },\n });\n\n // values er strengt tatt unknown, men da må vi bruke mye ts-ignore for å komme i mål\n function renderValue(values: any) {\n if (!multiple) {\n return options.find(option => option.value === values)?.renderedValue;\n }\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: 0,\n paddingBottom: 0,\n }}\n >\n {values.map((value: string) => (\n <Chip\n key={value}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value\n }\n />\n ))}\n </Box>\n );\n }\n\n function handleChecked(\n fieldValue: UseControllerReturn['field']['value'],\n optionValue: Props<T>['options'][number]['value'],\n ) {\n if (Array.isArray(fieldValue)) {\n return fieldValue.includes(optionValue);\n }\n return fieldValue === optionValue;\n }\n\n return (\n <FormControl error={error} sx={{ width: '100%', gap: '4px' }}>\n {label && (\n <FormLabel sx={formLabel} required={required}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n\n <MUISelect\n MenuProps={{\n disablePortal: true,\n }}\n error={error}\n variant=\"outlined\"\n renderValue={renderValue}\n multiple={multiple}\n SelectDisplayProps={\n multiple\n ? {\n style: {\n paddingBottom: 8,\n paddingTop: 16,\n minHeight: 40,\n },\n }\n : {}\n }\n inputRef={field.ref}\n {...field}\n {...props}\n >\n {options.map(option => (\n <MenuItem key={option.value} value={option.value}>\n {multiple && (\n <Checkbox checked={handleChecked(field.value, option.value)} />\n )}\n <ListItemText primary={option.renderedValue} />\n </MenuItem>\n ))}\n </MUISelect>\n {error && <FormHelperText error>{helperText}</FormHelperText>}\n </FormControl>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -29,7 +29,6 @@ function ConfigRiscInfo({
29
29
  ...register("content.title", { required: true }),
30
30
  error: errors?.content?.title !== void 0,
31
31
  label: t("dictionary.title"),
32
- minRows: 4,
33
32
  helperText: errors?.content?.title && t("rosDialog.titleError")
34
33
  }
35
34
  ),
@@ -69,7 +68,13 @@ function ConfigRiscInfo({
69
68
  /* @__PURE__ */ jsx(
70
69
  FormControlLabel,
71
70
  {
72
- control: /* @__PURE__ */ jsx(Switch, { onChange: handleChangeCreateRiScFrom }),
71
+ control: /* @__PURE__ */ jsx(
72
+ Switch,
73
+ {
74
+ checked: createRiScFrom === CreateRiScFrom.Default,
75
+ onChange: handleChangeCreateRiScFrom
76
+ }
77
+ ),
73
78
  label: createRiScFrom === CreateRiScFrom.Scratch ? t("dictionary.no") : t("dictionary.yes")
74
79
  }
75
80
  )
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigRiscInfo.esm.js","sources":["../../../src/components/riScDialog/ConfigRiscInfo.tsx"],"sourcesContent":["import { MarkdownInput } from '../common/MarkdownInput';\nimport { Input } from '../common/Input';\nimport {\n UseFormRegister,\n UseFormSetValue,\n UseFormWatch,\n} from 'react-hook-form/dist/types/form';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { CreateRiScFrom, RiScDialogStates } from './RiScDialog';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport Typography from '@mui/material/Typography';\nimport { DialogContentText } from '@mui/material';\nimport { FieldErrors } from 'react-hook-form/dist/types/errors';\n\ninterface ConfigRiscInfoProps {\n dialogState: RiScDialogStates;\n createRiScFrom: CreateRiScFrom;\n handleChangeCreateRiScFrom: () => void;\n register: UseFormRegister<RiScWithMetadata>;\n errors: FieldErrors<RiScWithMetadata>;\n setValue: UseFormSetValue<RiScWithMetadata>;\n watch: UseFormWatch<RiScWithMetadata>;\n}\n\nfunction ConfigRiscInfo({\n dialogState,\n createRiScFrom,\n handleChangeCreateRiScFrom,\n register,\n errors,\n setValue,\n watch,\n}: ConfigRiscInfoProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const currentScope = watch('content.scope');\n\n return (\n <>\n <Input\n required\n {...register('content.title', { required: true })}\n error={errors?.content?.title !== undefined}\n label={t('dictionary.title')}\n minRows={4}\n helperText={errors?.content?.title && t('rosDialog.titleError')}\n />\n <MarkdownInput\n {...register('content.scope')}\n value={currentScope}\n label={t('dictionary.scope')}\n sublabel={t('rosDialog.scopeDescription')}\n error={errors?.content?.scope !== undefined}\n minRows={8}\n onMarkdownChange={value => setValue('content.scope', value)}\n />\n\n {dialogState === RiScDialogStates.Create && (\n <div>\n <DialogContentText>\n {t('rosDialog.generateInitialDescription')}\n </DialogContentText>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n }}\n >\n <Typography\n sx={{\n fontWeight: 'bold',\n }}\n >\n {t('rosDialog.generateInitialToggleDescription')}\n </Typography>\n <FormControlLabel\n control={<Switch onChange={handleChangeCreateRiScFrom} />}\n label={\n createRiScFrom === CreateRiScFrom.Scratch\n ? t('dictionary.no')\n : t('dictionary.yes')\n }\n />\n </Box>\n </div>\n )}\n </>\n );\n}\n\nexport default ConfigRiscInfo;\n"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,SAAS,cAAe,CAAA;AAAA,EACtB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,0BAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAwB,EAAA;AACtB,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAM,MAAA,YAAA,GAAe,MAAM,eAAe,CAAA;AAE1C,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,QAAQ,EAAA,IAAA;AAAA,QACP,GAAG,QAAS,CAAA,eAAA,EAAiB,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,QAChD,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,KAAU,KAAA,MAAA;AAAA,QAClC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,OAAS,EAAA,CAAA;AAAA,QACT,UAAY,EAAA,MAAA,EAAQ,OAAS,EAAA,KAAA,IAAS,EAAE,sBAAsB;AAAA;AAAA,KAChE;AAAA,oBACA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAS,eAAe,CAAA;AAAA,QAC5B,KAAO,EAAA,YAAA;AAAA,QACP,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,QAAA,EAAU,EAAE,4BAA4B,CAAA;AAAA,QACxC,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,KAAU,KAAA,MAAA;AAAA,QAClC,OAAS,EAAA,CAAA;AAAA,QACT,gBAAkB,EAAA,CAAA,KAAA,KAAS,QAAS,CAAA,eAAA,EAAiB,KAAK;AAAA;AAAA,KAC5D;AAAA,IAEC,WAAgB,KAAA,gBAAA,CAAiB,MAChC,oBAAA,IAAA,CAAC,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,iBAAA,EAAA,EACE,QAAE,EAAA,CAAA,CAAA,sCAAsC,CAC3C,EAAA,CAAA;AAAA,sBACA,IAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA;AAAA,YACF,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,UAAY,EAAA,QAAA;AAAA,YACZ,GAAK,EAAA;AAAA,WACP;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,EAAI,EAAA;AAAA,kBACF,UAAY,EAAA;AAAA,iBACd;AAAA,gBAEC,YAAE,4CAA4C;AAAA;AAAA,aACjD;AAAA,4BACA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,OAAS,kBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,QAAA,EAAU,0BAA4B,EAAA,CAAA;AAAA,gBACvD,KAAA,EACE,mBAAmB,cAAe,CAAA,OAAA,GAC9B,EAAE,eAAe,CAAA,GACjB,EAAE,gBAAgB;AAAA;AAAA;AAE1B;AAAA;AAAA;AACF,KACF,EAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ConfigRiscInfo.esm.js","sources":["../../../src/components/riScDialog/ConfigRiscInfo.tsx"],"sourcesContent":["import { MarkdownInput } from '../common/MarkdownInput';\nimport { Input } from '../common/Input';\nimport {\n UseFormRegister,\n UseFormSetValue,\n UseFormWatch,\n} from 'react-hook-form/dist/types/form';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { CreateRiScFrom, RiScDialogStates } from './RiScDialog';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport Typography from '@mui/material/Typography';\nimport { DialogContentText } from '@mui/material';\nimport { FieldErrors } from 'react-hook-form/dist/types/errors';\n\ninterface ConfigRiscInfoProps {\n dialogState: RiScDialogStates;\n createRiScFrom: CreateRiScFrom;\n handleChangeCreateRiScFrom: () => void;\n register: UseFormRegister<RiScWithMetadata>;\n errors: FieldErrors<RiScWithMetadata>;\n setValue: UseFormSetValue<RiScWithMetadata>;\n watch: UseFormWatch<RiScWithMetadata>;\n}\n\nfunction ConfigRiscInfo({\n dialogState,\n createRiScFrom,\n handleChangeCreateRiScFrom,\n register,\n errors,\n setValue,\n watch,\n}: ConfigRiscInfoProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const currentScope = watch('content.scope');\n\n return (\n <>\n <Input\n required\n {...register('content.title', { required: true })}\n error={errors?.content?.title !== undefined}\n label={t('dictionary.title')}\n helperText={errors?.content?.title && t('rosDialog.titleError')}\n />\n <MarkdownInput\n {...register('content.scope')}\n value={currentScope}\n label={t('dictionary.scope')}\n sublabel={t('rosDialog.scopeDescription')}\n error={errors?.content?.scope !== undefined}\n minRows={8}\n onMarkdownChange={value => setValue('content.scope', value)}\n />\n\n {dialogState === RiScDialogStates.Create && (\n <div>\n <DialogContentText>\n {t('rosDialog.generateInitialDescription')}\n </DialogContentText>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n }}\n >\n <Typography\n sx={{\n fontWeight: 'bold',\n }}\n >\n {t('rosDialog.generateInitialToggleDescription')}\n </Typography>\n <FormControlLabel\n control={\n <Switch\n checked={createRiScFrom === CreateRiScFrom.Default}\n onChange={handleChangeCreateRiScFrom}\n />\n }\n label={\n createRiScFrom === CreateRiScFrom.Scratch\n ? t('dictionary.no')\n : t('dictionary.yes')\n }\n />\n </Box>\n </div>\n )}\n </>\n );\n}\n\nexport default ConfigRiscInfo;\n"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,SAAS,cAAe,CAAA;AAAA,EACtB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,0BAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAwB,EAAA;AACtB,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAM,MAAA,YAAA,GAAe,MAAM,eAAe,CAAA;AAE1C,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,QAAQ,EAAA,IAAA;AAAA,QACP,GAAG,QAAS,CAAA,eAAA,EAAiB,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,QAChD,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,KAAU,KAAA,MAAA;AAAA,QAClC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,UAAY,EAAA,MAAA,EAAQ,OAAS,EAAA,KAAA,IAAS,EAAE,sBAAsB;AAAA;AAAA,KAChE;AAAA,oBACA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAS,eAAe,CAAA;AAAA,QAC5B,KAAO,EAAA,YAAA;AAAA,QACP,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,QAAA,EAAU,EAAE,4BAA4B,CAAA;AAAA,QACxC,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,KAAU,KAAA,MAAA;AAAA,QAClC,OAAS,EAAA,CAAA;AAAA,QACT,gBAAkB,EAAA,CAAA,KAAA,KAAS,QAAS,CAAA,eAAA,EAAiB,KAAK;AAAA;AAAA,KAC5D;AAAA,IAEC,WAAgB,KAAA,gBAAA,CAAiB,MAChC,oBAAA,IAAA,CAAC,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,iBAAA,EAAA,EACE,QAAE,EAAA,CAAA,CAAA,sCAAsC,CAC3C,EAAA,CAAA;AAAA,sBACA,IAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA;AAAA,YACF,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,UAAY,EAAA,QAAA;AAAA,YACZ,GAAK,EAAA;AAAA,WACP;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,EAAI,EAAA;AAAA,kBACF,UAAY,EAAA;AAAA,iBACd;AAAA,gBAEC,YAAE,4CAA4C;AAAA;AAAA,aACjD;AAAA,4BACA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,OACE,kBAAA,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAS,mBAAmB,cAAe,CAAA,OAAA;AAAA,oBAC3C,QAAU,EAAA;AAAA;AAAA,iBACZ;AAAA,gBAEF,KAAA,EACE,mBAAmB,cAAe,CAAA,OAAA,GAC9B,EAAE,eAAe,CAAA,GACjB,EAAE,gBAAgB;AAAA;AAAA;AAE1B;AAAA;AAAA;AACF,KACF,EAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;;;;"}
@@ -21,6 +21,7 @@ var RiScDialogStates = /* @__PURE__ */ ((RiScDialogStates2) => {
21
21
  RiScDialogStates2[RiScDialogStates2["Create"] = 1] = "Create";
22
22
  RiScDialogStates2[RiScDialogStates2["EditRiscInfo"] = 2] = "EditRiscInfo";
23
23
  RiScDialogStates2[RiScDialogStates2["EditEncryption"] = 3] = "EditEncryption";
24
+ RiScDialogStates2[RiScDialogStates2["Delete"] = 4] = "Delete";
24
25
  return RiScDialogStates2;
25
26
  })(RiScDialogStates || {});
26
27
  var CreateRiScFrom = /* @__PURE__ */ ((CreateRiScFrom2) => {
@@ -41,7 +42,7 @@ function RiScStepper({
41
42
  }
42
43
  function RiScDialog({ onClose, dialogState }) {
43
44
  const { t } = useTranslationRef(pluginRiScTranslationRef);
44
- const { selectedRiSc, createNewRiSc, updateRiSc, gcpCryptoKeys } = useRiScs();
45
+ const { selectedRiSc, createNewRiSc, deleteRiSc, updateRiSc, gcpCryptoKeys } = useRiScs();
45
46
  const {
46
47
  register,
47
48
  handleSubmit,
@@ -89,6 +90,8 @@ function RiScDialog({ onClose, dialogState }) {
89
90
  const handleFinish = handleSubmit((data) => {
90
91
  if (dialogState === 1 /* Create */) {
91
92
  createNewRiSc(data, createRiScFrom === 1 /* Default */);
93
+ } else if (dialogState === 4 /* Delete */) {
94
+ deleteRiSc();
92
95
  } else {
93
96
  const areAgeKeysEqual = isDeeplyEqual(
94
97
  data.sopsConfig.age?.map((age) => age.recipient).sort(),
@@ -154,6 +157,16 @@ function RiScDialog({ onClose, dialogState }) {
154
157
  ] })
155
158
  ] });
156
159
  }
160
+ if (dialogState === 4 /* Delete */) {
161
+ return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, children: [
162
+ /* @__PURE__ */ jsx(DialogTitle, { children: t("deleteDialog.title") }),
163
+ /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(DialogContent, { children: t("deleteDialog.confirmationMessage") }) }),
164
+ /* @__PURE__ */ jsxs(DialogActions, { children: [
165
+ /* @__PURE__ */ jsx(Button, { variant: "outlined", onClick: onClose, children: t("dictionary.cancel") }),
166
+ /* @__PURE__ */ jsx(Button, { variant: "contained", onClick: handleFinish, children: t("dictionary.delete") })
167
+ ] })
168
+ ] });
169
+ }
157
170
  if (dialogState === 2 /* EditRiscInfo */) {
158
171
  return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, children: [
159
172
  /* @__PURE__ */ jsx(DialogTitle, { children: t("rosDialog.titleEdit") }),
@@ -1 +1 @@
1
- {"version":3,"file":"RiScDialog.esm.js","sources":["../../../src/components/riScDialog/RiScDialog.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { emptyRiSc, isDeeplyEqual } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { useForm } from 'react-hook-form';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../common/mixins';\nimport Box from '@mui/material/Box';\nimport { Step, StepLabel, Stepper } from '@mui/material';\nimport ConfigEncryptionDialog from './ConfigEncryptionDialog';\nimport ConfigRiscInfo from './ConfigRiscInfo';\n\nexport enum RiScDialogStates {\n Closed = 0,\n Create = 1,\n EditRiscInfo = 2,\n EditEncryption = 3,\n}\n\ninterface RiScDialogProps {\n onClose: () => void;\n dialogState: RiScDialogStates;\n}\n\nexport enum CreateRiScFrom {\n Scratch = 0,\n Default = 1,\n}\n\nfunction RiScStepper({\n children,\n activeStep,\n}: {\n children: React.ReactNode;\n activeStep: number;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const steps = [t('rosDialog.stepRiscDetails'), t('rosDialog.stepEncryption')];\n return (\n <Box sx={{ width: '100%', p: 2 }}>\n <Stepper activeStep={activeStep}>\n {steps.map(label => (\n <Step key={label}>\n <StepLabel>{label}</StepLabel>\n </Step>\n ))}\n </Stepper>\n {children}\n </Box>\n );\n}\n\nexport function RiScDialog({ onClose, dialogState }: RiScDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { selectedRiSc, createNewRiSc, updateRiSc, gcpCryptoKeys } = useRiScs();\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n setValue,\n } = useForm<RiScWithMetadata>({\n defaultValues:\n dialogState === RiScDialogStates.EditRiscInfo ||\n dialogState === RiScDialogStates.EditEncryption\n ? selectedRiSc!\n : {\n content: emptyRiSc(),\n sopsConfig: {\n shamir_threshold: 2,\n },\n },\n mode: 'onBlur',\n });\n\n const [activeStep, setActiveStep] = useState(0);\n\n const [createRiScFrom, setCreateRiScFrom] = useState<CreateRiScFrom>(\n CreateRiScFrom.Scratch,\n );\n const handleChangeCreateRiScFrom = () => {\n if (createRiScFrom === CreateRiScFrom.Scratch) {\n setCreateRiScFrom(CreateRiScFrom.Default);\n } else {\n setCreateRiScFrom(CreateRiScFrom.Scratch);\n }\n };\n\n const handleNext = handleSubmit(\n () => {\n if (activeStep === 0) {\n setActiveStep(1);\n }\n },\n // Continue to step 1 even if there are errors, as long as there are no errors in step 0 (the content)\n validationErrors => {\n if (activeStep === 0 && validationErrors.content === undefined) {\n setActiveStep(1);\n }\n },\n );\n\n function handleBack() {\n if (activeStep === 1) {\n setActiveStep(0);\n }\n }\n\n const handleFinish = handleSubmit((data: RiScWithMetadata) => {\n if (dialogState === RiScDialogStates.Create) {\n createNewRiSc(data, createRiScFrom === CreateRiScFrom.Default);\n } else {\n // Do manual comparison of contents, as the sopsConfig field contains many values from the backend that are not\n // used or set by the frontend.\n // Check if the additional Age keys are equal, using the single important field, `recipient`\n const areAgeKeysEqual = isDeeplyEqual(\n data.sopsConfig.age?.map(age => age.recipient).sort(),\n selectedRiSc?.sopsConfig.age?.map(age => age.recipient).sort(),\n );\n\n // Check if the GCP keys are equal, using the two important fields, `resource_id` and `created_at`.\n // Comparison uses dictionaries, where resource ids are keys and created at dates are values\n const areGCPKeysEqual = isDeeplyEqual(\n Object.fromEntries(\n data.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n Object.fromEntries(\n selectedRiSc?.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n );\n\n // Only update the risc if it has changed\n if (\n !isDeeplyEqual(data, selectedRiSc, ['sopsConfig']) ||\n !areGCPKeysEqual ||\n !areAgeKeysEqual\n ) {\n updateRiSc(data);\n }\n }\n onClose();\n });\n\n if (dialogState === RiScDialogStates.Create) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.titleNew')}</DialogTitle>\n <RiScStepper activeStep={activeStep}>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n {activeStep === 0 && (\n <ConfigRiscInfo\n dialogState={dialogState}\n createRiScFrom={createRiScFrom}\n handleChangeCreateRiScFrom={handleChangeCreateRiScFrom}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n )}\n {activeStep === 1 && (\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n )}\n </DialogContent>\n </RiScStepper>\n <DialogActions sx={dialogActions}>\n {activeStep > 0 && (\n <Button variant=\"outlined\" onClick={handleBack}>\n {t('dictionary.previous')}\n </Button>\n )}\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n {activeStep < 1 ? (\n <Button variant=\"contained\" onClick={handleNext}>\n {t('dictionary.next')}\n </Button>\n ) : (\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n )}\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditRiscInfo) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.titleEdit')}</DialogTitle>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <ConfigRiscInfo\n dialogState={dialogState}\n createRiScFrom={createRiScFrom}\n handleChangeCreateRiScFrom={handleChangeCreateRiScFrom}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditEncryption) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.editEncryption')}</DialogTitle>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n sopsData={selectedRiSc?.sopsConfig}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n return null;\n}\n"],"names":["RiScDialogStates","CreateRiScFrom"],"mappings":"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"}
1
+ {"version":3,"file":"RiScDialog.esm.js","sources":["../../../src/components/riScDialog/RiScDialog.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { emptyRiSc, isDeeplyEqual } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { useForm } from 'react-hook-form';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../common/mixins';\nimport Box from '@mui/material/Box';\nimport { Step, StepLabel, Stepper } from '@mui/material';\nimport ConfigEncryptionDialog from './ConfigEncryptionDialog';\nimport ConfigRiscInfo from './ConfigRiscInfo';\n\nexport enum RiScDialogStates {\n Closed = 0,\n Create = 1,\n EditRiscInfo = 2,\n EditEncryption = 3,\n Delete = 4,\n}\n\ninterface RiScDialogProps {\n onClose: () => void;\n dialogState: RiScDialogStates;\n}\n\nexport enum CreateRiScFrom {\n Scratch = 0,\n Default = 1,\n}\n\nfunction RiScStepper({\n children,\n activeStep,\n}: {\n children: React.ReactNode;\n activeStep: number;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const steps = [t('rosDialog.stepRiscDetails'), t('rosDialog.stepEncryption')];\n return (\n <Box sx={{ width: '100%', p: 2 }}>\n <Stepper activeStep={activeStep}>\n {steps.map(label => (\n <Step key={label}>\n <StepLabel>{label}</StepLabel>\n </Step>\n ))}\n </Stepper>\n {children}\n </Box>\n );\n}\n\nexport function RiScDialog({ onClose, dialogState }: RiScDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { selectedRiSc, createNewRiSc, deleteRiSc, updateRiSc, gcpCryptoKeys } =\n useRiScs();\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n setValue,\n } = useForm<RiScWithMetadata>({\n defaultValues:\n dialogState === RiScDialogStates.EditRiscInfo ||\n dialogState === RiScDialogStates.EditEncryption\n ? selectedRiSc!\n : {\n content: emptyRiSc(),\n sopsConfig: {\n shamir_threshold: 2,\n },\n },\n mode: 'onBlur',\n });\n\n const [activeStep, setActiveStep] = useState(0);\n\n const [createRiScFrom, setCreateRiScFrom] = useState<CreateRiScFrom>(\n CreateRiScFrom.Scratch,\n );\n const handleChangeCreateRiScFrom = () => {\n if (createRiScFrom === CreateRiScFrom.Scratch) {\n setCreateRiScFrom(CreateRiScFrom.Default);\n } else {\n setCreateRiScFrom(CreateRiScFrom.Scratch);\n }\n };\n\n const handleNext = handleSubmit(\n () => {\n if (activeStep === 0) {\n setActiveStep(1);\n }\n },\n // Continue to step 1 even if there are errors, as long as there are no errors in step 0 (the content)\n validationErrors => {\n if (activeStep === 0 && validationErrors.content === undefined) {\n setActiveStep(1);\n }\n },\n );\n\n function handleBack() {\n if (activeStep === 1) {\n setActiveStep(0);\n }\n }\n\n const handleFinish = handleSubmit((data: RiScWithMetadata) => {\n if (dialogState === RiScDialogStates.Create) {\n createNewRiSc(data, createRiScFrom === CreateRiScFrom.Default);\n } else if (dialogState === RiScDialogStates.Delete) {\n deleteRiSc();\n } else {\n // Do manual comparison of contents, as the sopsConfig field contains many values from the backend that are not\n // used or set by the frontend.\n // Check if the additional Age keys are equal, using the single important field, `recipient`\n const areAgeKeysEqual = isDeeplyEqual(\n data.sopsConfig.age?.map(age => age.recipient).sort(),\n selectedRiSc?.sopsConfig.age?.map(age => age.recipient).sort(),\n );\n\n // Check if the GCP keys are equal, using the two important fields, `resource_id` and `created_at`.\n // Comparison uses dictionaries, where resource ids are keys and created at dates are values\n const areGCPKeysEqual = isDeeplyEqual(\n Object.fromEntries(\n data.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n Object.fromEntries(\n selectedRiSc?.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n );\n\n // Only update the risc if it has changed\n if (\n !isDeeplyEqual(data, selectedRiSc, ['sopsConfig']) ||\n !areGCPKeysEqual ||\n !areAgeKeysEqual\n ) {\n updateRiSc(data);\n }\n }\n onClose();\n });\n\n if (dialogState === RiScDialogStates.Create) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.titleNew')}</DialogTitle>\n <RiScStepper activeStep={activeStep}>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n {activeStep === 0 && (\n <ConfigRiscInfo\n dialogState={dialogState}\n createRiScFrom={createRiScFrom}\n handleChangeCreateRiScFrom={handleChangeCreateRiScFrom}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n )}\n {activeStep === 1 && (\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n )}\n </DialogContent>\n </RiScStepper>\n <DialogActions sx={dialogActions}>\n {activeStep > 0 && (\n <Button variant=\"outlined\" onClick={handleBack}>\n {t('dictionary.previous')}\n </Button>\n )}\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n {activeStep < 1 ? (\n <Button variant=\"contained\" onClick={handleNext}>\n {t('dictionary.next')}\n </Button>\n ) : (\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n )}\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.Delete) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('deleteDialog.title')}</DialogTitle>\n <DialogContent>\n <DialogContent>{t('deleteDialog.confirmationMessage')}</DialogContent>\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.delete')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditRiscInfo) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.titleEdit')}</DialogTitle>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <ConfigRiscInfo\n dialogState={dialogState}\n createRiScFrom={createRiScFrom}\n handleChangeCreateRiScFrom={handleChangeCreateRiScFrom}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditEncryption) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.editEncryption')}</DialogTitle>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n sopsData={selectedRiSc?.sopsConfig}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button variant=\"contained\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n return null;\n}\n"],"names":["RiScDialogStates","CreateRiScFrom"],"mappings":"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"}
@@ -6,7 +6,6 @@ import Dialog from '@mui/material/Dialog';
6
6
  import DialogContent from '@mui/material/DialogContent';
7
7
  import DialogTitle from '@mui/material/DialogTitle';
8
8
  import DialogActions from '@mui/material/DialogActions';
9
- import Link from '@mui/material/Link';
10
9
  import Typography from '@mui/material/Typography';
11
10
  import Checkbox from '@mui/material/Checkbox';
12
11
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
@@ -14,42 +13,50 @@ import FormControlLabel from '@mui/material/FormControlLabel';
14
13
  import Box from '@mui/material/Box';
15
14
  import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
16
15
  import { dialogActions } from '../common/mixins.esm.js';
17
- import { URLS } from '../../urls/index.esm.js';
16
+ import { RiScMigrationChanges41 } from './migrations/RiScMigrationChanges41.esm.js';
17
+ import { ChangeSetBox } from './migrations/components/ChangeSetBox.esm.js';
18
+ import { ChangeSetTitle } from './migrations/components/ChangeSetTitle.esm.js';
19
+ import { ChangeSetChangedValue } from './migrations/components/ChangeSetChangedValue.esm.js';
20
+ import { RiScMigrationChanges40 } from './migrations/RiScMigrationChanges40.esm.js';
18
21
 
19
22
  const RiScMigrationDialog = ({
20
23
  openDialog,
21
24
  handleCancel,
22
25
  handleUpdate,
23
- migrationVersions
26
+ migrationStatus
24
27
  }) => {
25
28
  const { t } = useTranslationRef(pluginRiScTranslationRef);
26
29
  const [saveMigration, setSaveMigration] = useState(false);
27
30
  function handleCheckboxInput(event) {
28
31
  setSaveMigration(event.target.checked);
29
32
  }
30
- return /* @__PURE__ */ jsxs(Dialog, { open: openDialog, children: [
33
+ return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: openDialog, children: [
31
34
  /* @__PURE__ */ jsx(DialogTitle, { children: t("migrationDialog.title") }),
32
35
  /* @__PURE__ */ jsxs(DialogContent, { children: [
33
- /* @__PURE__ */ jsx(Box, { sx: { marginBottom: "16px" }, children: /* @__PURE__ */ jsxs(Typography, { children: [
34
- t("migrationDialog.description"),
35
- migrationVersions?.toVersion,
36
- " ",
37
- t("migrationDialog.description2"),
38
- " ",
39
- migrationVersions?.fromVersion,
40
- t("migrationDialog.description3"),
41
- /* @__PURE__ */ jsx(
42
- Link,
36
+ /* @__PURE__ */ jsx(Box, { sx: { marginBottom: "16px" }, children: /* @__PURE__ */ jsx(Typography, { children: t("migrationDialog.description") }) }),
37
+ /* @__PURE__ */ jsxs("div", { children: [
38
+ /* @__PURE__ */ jsx(ChangeSetTitle, { text: t("migrationDialog.schemaVersion") }),
39
+ /* @__PURE__ */ jsx(ChangeSetBox, { type: "primary", children: /* @__PURE__ */ jsx(
40
+ ChangeSetChangedValue,
43
41
  {
44
- underline: "always",
45
- target: "_blank",
46
- href: URLS.external.github_com__kartverket_changelog,
47
- children: t("migrationDialog.changelog")
42
+ propertyName: t("migrationDialog.schemaVersion"),
43
+ oldValue: migrationStatus.migrationVersions?.fromVersion || "",
44
+ newValue: migrationStatus.migrationVersions?.toVersion || ""
45
+ }
46
+ ) }),
47
+ migrationStatus.migrationChanges40 && /* @__PURE__ */ jsx(
48
+ RiScMigrationChanges40,
49
+ {
50
+ changes: migrationStatus.migrationChanges40
48
51
  }
49
52
  ),
50
- " ",
51
- t("migrationDialog.description4")
52
- ] }) }),
53
+ migrationStatus.migrationChanges41 && /* @__PURE__ */ jsx(
54
+ RiScMigrationChanges41,
55
+ {
56
+ changes: migrationStatus.migrationChanges41
57
+ }
58
+ )
59
+ ] }),
53
60
  /* @__PURE__ */ jsx(Alert, { severity: "info", icon: false, children: /* @__PURE__ */ jsx(
54
61
  FormControlLabel,
55
62
  {
@@ -64,7 +71,7 @@ const RiScMigrationDialog = ({
64
71
  }
65
72
  ) })
66
73
  ] }),
67
- /* @__PURE__ */ jsxs(DialogActions, { sx: dialogActions, children: [
74
+ /* @__PURE__ */ jsxs(DialogActions, { sx: dialogActions, style: { paddingTop: "16px" }, children: [
68
75
  /* @__PURE__ */ jsx(Button, { variant: "outlined", color: "primary", onClick: handleCancel, children: t("dictionary.cancel") }),
69
76
  /* @__PURE__ */ jsx(
70
77
  Button,
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationDialog.esm.js","sources":["../../../src/components/riScInfo/MigrationDialog.tsx"],"sourcesContent":["import { ReactComponentElement, useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Box from '@mui/material/Box';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { MigrationVersions } from '../../utils/types';\nimport { dialogActions } from '../common/mixins';\nimport { URLS } from '../../urls';\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n migrationVersions?: MigrationVersions;\n}\n\nexport const RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n migrationVersions,\n}: RiScMigrationDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setSaveMigration(event.target.checked);\n }\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Box sx={{ marginBottom: '16px' }}>\n <Typography>\n {t('migrationDialog.description')}\n {migrationVersions?.toVersion} {t('migrationDialog.description2')}{' '}\n {migrationVersions?.fromVersion}\n {t('migrationDialog.description3')}\n <Link\n underline=\"always\"\n target=\"_blank\"\n href={URLS.external.github_com__kartverket_changelog}\n >\n {t('migrationDialog.changelog')}\n </Link>{' '}\n {t('migrationDialog.description4')}\n </Typography>\n </Box>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBO,MAAM,sBAAsB,CAAC;AAAA,EAClC,UAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAA4D,KAAA;AAC1D,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEjE,EAAA,SAAS,oBAAoB,KAA4C,EAAA;AACvE,IAAiB,gBAAA,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA;AAGvC,EACE,uBAAA,IAAA,CAAC,MAAO,EAAA,EAAA,IAAA,EAAM,UACZ,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,WAAA,EAAA,EAAa,QAAE,EAAA,CAAA,CAAA,uBAAuB,CAAE,EAAA,CAAA;AAAA,yBACxC,aACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAI,EAAI,EAAA,EAAE,cAAc,MAAO,EAAA,EAC9B,+BAAC,UACE,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,6BAA6B,CAAA;AAAA,QAC/B,iBAAmB,EAAA,SAAA;AAAA,QAAU,GAAA;AAAA,QAAE,EAAE,8BAA8B,CAAA;AAAA,QAAG,GAAA;AAAA,QAClE,iBAAmB,EAAA,WAAA;AAAA,QACnB,EAAE,8BAA8B,CAAA;AAAA,wBACjC,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,QAAA;AAAA,YACV,MAAO,EAAA,QAAA;AAAA,YACP,IAAA,EAAM,KAAK,QAAS,CAAA,gCAAA;AAAA,YAEnB,YAAE,2BAA2B;AAAA;AAAA,SAChC;AAAA,QAAQ,GAAA;AAAA,QACP,EAAE,8BAA8B;AAAA,OAAA,EACnC,CACF,EAAA,CAAA;AAAA,sBACC,GAAA,CAAA,KAAA,EAAA,EAAM,QAAS,EAAA,MAAA,EAAO,MAAM,KAC3B,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OACE,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAS,EAAA,aAAA;AAAA,cACT,QAAU,EAAA;AAAA;AAAA,WACZ;AAAA,UAEF,KAAA,EAAO,EAAE,+BAA+B;AAAA;AAAA,OAE5C,EAAA;AAAA,KACF,EAAA,CAAA;AAAA,oBACA,IAAA,CAAC,aAAc,EAAA,EAAA,EAAA,EAAI,aACjB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,MAAA,EAAA,EAAO,SAAQ,UAAW,EAAA,KAAA,EAAM,WAAU,OAAS,EAAA,YAAA,EACjD,QAAE,EAAA,CAAA,CAAA,mBAAmB,CACxB,EAAA,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,WAAA;AAAA,UACR,OAAS,EAAA,YAAA;AAAA,UACT,UAAU,CAAC,aAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"MigrationDialog.esm.js","sources":["../../../src/components/riScInfo/MigrationDialog.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Typography from '@mui/material/Typography';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Box from '@mui/material/Box';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { MigrationStatus } from '../../utils/types';\nimport { dialogActions } from '../common/mixins';\nimport { RiScMigrationChanges41 } from './migrations/RiScMigrationChanges41.tsx';\nimport { ChangeSetBox } from './migrations/components/ChangeSetBox.tsx';\nimport { ChangeSetTitle } from './migrations/components/ChangeSetTitle.tsx';\nimport { ChangeSetChangedValue } from './migrations/components/ChangeSetChangedValue.tsx';\nimport { RiScMigrationChanges40 } from './migrations/RiScMigrationChanges40.tsx';\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n migrationStatus: MigrationStatus;\n}\n\nexport const RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n migrationStatus,\n}: RiScMigrationDialogProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setSaveMigration(event.target.checked);\n }\n\n return (\n <Dialog maxWidth=\"md\" open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Box sx={{ marginBottom: '16px' }}>\n <Typography>{t('migrationDialog.description')}</Typography>\n </Box>\n <div>\n <ChangeSetTitle text={t('migrationDialog.schemaVersion')} />\n <ChangeSetBox type=\"primary\">\n <ChangeSetChangedValue\n propertyName={t('migrationDialog.schemaVersion')}\n oldValue={migrationStatus.migrationVersions?.fromVersion || ''}\n newValue={migrationStatus.migrationVersions?.toVersion || ''}\n />\n </ChangeSetBox>\n {migrationStatus.migrationChanges40 && (\n <RiScMigrationChanges40\n changes={migrationStatus.migrationChanges40}\n />\n )}\n {migrationStatus.migrationChanges41 && (\n <RiScMigrationChanges41\n changes={migrationStatus.migrationChanges41}\n />\n )}\n </div>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions} style={{ paddingTop: '16px' }}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ import { dialogActions } from '../common/mixins.esm.js';
15
15
 
16
16
  const RiScPublishDialog = ({
17
17
  openDialog,
18
+ isDeletion,
18
19
  handleCancel,
19
20
  handlePublish,
20
21
  differenceFetchState
@@ -25,9 +26,9 @@ const RiScPublishDialog = ({
25
26
  setRiskOwnerApproves(event.target.checked);
26
27
  }
27
28
  return /* @__PURE__ */ jsxs(Dialog, { open: openDialog, children: [
28
- /* @__PURE__ */ jsx(DialogTitle, { children: t("publishDialog.title") }),
29
+ /* @__PURE__ */ jsx(DialogTitle, { children: isDeletion ? t("publishDialog.titleDelete") : t("publishDialog.titleUpdate") }),
29
30
  /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsxs(Fragment, { children: [
30
- /* @__PURE__ */ jsx(RiScDifferenceDialog, { differenceFetchState }),
31
+ !isDeletion && /* @__PURE__ */ jsx(RiScDifferenceDialog, { differenceFetchState }),
31
32
  /* @__PURE__ */ jsx(Alert, { severity: "info", icon: false, children: /* @__PURE__ */ jsx(
32
33
  FormControlLabel,
33
34
  {
@@ -39,7 +40,7 @@ const RiScPublishDialog = ({
39
40
  onChange: handleCheckboxInput
40
41
  }
41
42
  ),
42
- label: t("publishDialog.checkboxLabel")
43
+ label: isDeletion ? t("publishDialog.checkboxLabelDelete") : t("publishDialog.checkboxLabelUpdate")
43
44
  }
44
45
  ) })
45
46
  ] }) }),
@@ -1 +1 @@
1
- {"version":3,"file":"PublishDialog.esm.js","sources":["../../../src/components/riScInfo/PublishDialog.tsx"],"sourcesContent":["import { ReactComponentElement, useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { DifferenceFetchState } from '../../utils/types';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDifferenceDialog } from './riScStatus/RiScDifferenceDialog';\nimport { dialogActions } from '../common/mixins';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n differenceFetchState: DifferenceFetchState;\n}\n\nexport const RiScPublishDialog = ({\n openDialog,\n handleCancel,\n handlePublish,\n differenceFetchState,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setRiskOwnerApproves(event.target.checked);\n }\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('publishDialog.title')}</DialogTitle>\n <DialogContent>\n <>\n <RiScDifferenceDialog differenceFetchState={differenceFetchState} />\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={t('publishDialog.checkboxLabel')}\n />\n </Alert>\n </>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsBO,MAAM,oBAAoB,CAAC;AAAA,EAChC,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAA0D,KAAA;AACxD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEzE,EAAA,SAAS,oBAAoB,KAA4C,EAAA;AACvE,IAAqB,oBAAA,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA;AAG3C,EACE,uBAAA,IAAA,CAAC,MAAO,EAAA,EAAA,IAAA,EAAM,UACZ,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,WAAA,EAAA,EAAa,QAAE,EAAA,CAAA,CAAA,qBAAqB,CAAE,EAAA,CAAA;AAAA,oBACvC,GAAA,CAAC,iBACC,QACE,kBAAA,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,wBAAqB,oBAA4C,EAAA,CAAA;AAAA,sBACjE,GAAA,CAAA,KAAA,EAAA,EAAM,QAAS,EAAA,MAAA,EAAO,MAAM,KAC3B,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OACE,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAM,EAAA,SAAA;AAAA,cACN,OAAS,EAAA,iBAAA;AAAA,cACT,QAAU,EAAA;AAAA;AAAA,WACZ;AAAA,UAEF,KAAA,EAAO,EAAE,6BAA6B;AAAA;AAAA,OAE1C,EAAA;AAAA,KAAA,EACF,CACF,EAAA,CAAA;AAAA,oBACA,IAAA,CAAC,aAAc,EAAA,EAAA,EAAA,EAAI,aACjB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,MAAA,EAAA,EAAO,SAAQ,UAAW,EAAA,KAAA,EAAM,WAAU,OAAS,EAAA,YAAA,EACjD,QAAE,EAAA,CAAA,CAAA,mBAAmB,CACxB,EAAA,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,WAAA;AAAA,UACR,KAAM,EAAA,SAAA;AAAA,UACN,OAAS,EAAA,aAAA;AAAA,UACT,UAAU,CAAC,iBAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PublishDialog.esm.js","sources":["../../../src/components/riScInfo/PublishDialog.tsx"],"sourcesContent":["import { ReactComponentElement, useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { DifferenceFetchState } from '../../utils/types';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDifferenceDialog } from './riScStatus/RiScDifferenceDialog';\nimport { dialogActions } from '../common/mixins';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n isDeletion: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n differenceFetchState: DifferenceFetchState;\n}\n\nexport const RiScPublishDialog = ({\n openDialog,\n isDeletion,\n handleCancel,\n handlePublish,\n differenceFetchState,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setRiskOwnerApproves(event.target.checked);\n }\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>\n {isDeletion\n ? t('publishDialog.titleDelete')\n : t('publishDialog.titleUpdate')}\n </DialogTitle>\n <DialogContent>\n <>\n {!isDeletion && (\n <RiScDifferenceDialog differenceFetchState={differenceFetchState} />\n )}\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={\n isDeletion\n ? t('publishDialog.checkboxLabelDelete')\n : t('publishDialog.checkboxLabelUpdate')\n }\n />\n </Alert>\n </>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAuBO,MAAM,oBAAoB,CAAC;AAAA,EAChC,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAA0D,KAAA;AACxD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEzE,EAAA,SAAS,oBAAoB,KAA4C,EAAA;AACvE,IAAqB,oBAAA,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA;AAG3C,EACE,uBAAA,IAAA,CAAC,MAAO,EAAA,EAAA,IAAA,EAAM,UACZ,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eACE,QACG,EAAA,UAAA,GAAA,CAAA,CAAE,2BAA2B,CAC7B,GAAA,CAAA,CAAE,2BAA2B,CACnC,EAAA,CAAA;AAAA,oBACA,GAAA,CAAC,iBACC,QACG,kBAAA,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,MAAC,CAAA,UAAA,oBACC,GAAA,CAAA,oBAAA,EAAA,EAAqB,oBAA4C,EAAA,CAAA;AAAA,sBAEnE,GAAA,CAAA,KAAA,EAAA,EAAM,QAAS,EAAA,MAAA,EAAO,MAAM,KAC3B,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OACE,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAM,EAAA,SAAA;AAAA,cACN,OAAS,EAAA,iBAAA;AAAA,cACT,QAAU,EAAA;AAAA;AAAA,WACZ;AAAA,UAEF,OACE,UACI,GAAA,CAAA,CAAE,mCAAmC,CAAA,GACrC,EAAE,mCAAmC;AAAA;AAAA,OAG/C,EAAA;AAAA,KAAA,EACF,CACF,EAAA,CAAA;AAAA,oBACA,IAAA,CAAC,aAAc,EAAA,EAAA,EAAA,EAAI,aACjB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,MAAA,EAAA,EAAO,SAAQ,UAAW,EAAA,KAAA,EAAM,WAAU,OAAS,EAAA,YAAA,EACjD,QAAE,EAAA,CAAA,CAAA,mBAAmB,CACxB,EAAA,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,WAAA;AAAA,UACR,KAAM,EAAA,SAAA;AAAA,UACN,OAAS,EAAA,aAAA;AAAA,UACT,UAAU,CAAC,iBAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,102 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { MigrationTitle } from './components/MigrationTitle.esm.js';
3
+ import { ChangeSetBox } from './components/ChangeSetBox.esm.js';
4
+ import { ChangeSetTag } from './components/ChangeSetTag.esm.js';
5
+ import { ChangeSetChangedValue } from './components/ChangeSetChangedValue.esm.js';
6
+ import { ChangeSetBoxTitle } from './components/ChangeSetBoxTitle.esm.js';
7
+ import { ChangeSetTags } from './components/ChangeSetTags.esm.js';
8
+ import { ChangeSetText } from './components/ChangeSetText.esm.js';
9
+ import { ChangeSetRemovedProperty } from './components/ChangeSetRemovedProperty.esm.js';
10
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
+ import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
12
+
13
+ function RiScMigrationChanges40({
14
+ changes
15
+ }) {
16
+ const { t } = useTranslationRef(pluginRiScTranslationRef);
17
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
18
+ /* @__PURE__ */ jsx(
19
+ MigrationTitle,
20
+ {
21
+ from: "3.3",
22
+ to: "4.0",
23
+ migrationExplanation: t(
24
+ "migrationDialog.migration41.changeExplanation"
25
+ ),
26
+ changelogUrl: "https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md#40"
27
+ }
28
+ ),
29
+ changes.scenarios.map((scenario) => /* @__PURE__ */ jsxs(ChangeSetBox, { type: "primary", children: [
30
+ /* @__PURE__ */ jsx(ChangeSetTags, { children: /* @__PURE__ */ jsx(
31
+ ChangeSetTag,
32
+ {
33
+ type: "primary",
34
+ text: t("migrationDialog.tagScenario")
35
+ }
36
+ ) }),
37
+ /* @__PURE__ */ jsx(ChangeSetBoxTitle, { title: scenario.title }),
38
+ scenario.changedVulnerabilities.length > 0 && /* @__PURE__ */ jsxs(ChangeSetBox, { type: "secondary", children: [
39
+ /* @__PURE__ */ jsx(
40
+ ChangeSetBoxTitle,
41
+ {
42
+ title: t("migrationDialog.migration40.vulnerabilitiesTitle")
43
+ }
44
+ ),
45
+ scenario.changedVulnerabilities.map((change) => /* @__PURE__ */ jsx(
46
+ ChangeSetChangedValue,
47
+ {
48
+ oldValue: t(
49
+ `migrationDialog.migration40.vulnerabilities.${change.oldValue}`
50
+ ),
51
+ newValue: t(
52
+ `migrationDialog.migration40.vulnerabilities.${change.newValue}`
53
+ )
54
+ }
55
+ ))
56
+ ] }),
57
+ scenario.removedExistingActions && /* @__PURE__ */ jsxs(ChangeSetBox, { type: "secondary", children: [
58
+ /* @__PURE__ */ jsx(ChangeSetTags, { children: /* @__PURE__ */ jsx(
59
+ ChangeSetTag,
60
+ {
61
+ type: "delete",
62
+ text: t("migrationDialog.tagRemoved")
63
+ }
64
+ ) }),
65
+ /* @__PURE__ */ jsx(
66
+ ChangeSetBoxTitle,
67
+ {
68
+ title: t("migrationDialog.migration40.existingActions")
69
+ }
70
+ ),
71
+ /* @__PURE__ */ jsx(ChangeSetText, { text: scenario.removedExistingActions })
72
+ ] }),
73
+ scenario.changedActions.map((action) => /* @__PURE__ */ jsxs(ChangeSetBox, { type: "secondary", children: [
74
+ /* @__PURE__ */ jsx(ChangeSetTags, { children: /* @__PURE__ */ jsx(
75
+ ChangeSetTag,
76
+ {
77
+ type: "primary",
78
+ text: t("migrationDialog.tagAction")
79
+ }
80
+ ) }),
81
+ /* @__PURE__ */ jsx(ChangeSetBoxTitle, { title: action.title }),
82
+ action.removedOwner && /* @__PURE__ */ jsx(
83
+ ChangeSetRemovedProperty,
84
+ {
85
+ propertyName: t("migrationDialog.migration40.owner"),
86
+ value: action.removedOwner
87
+ }
88
+ ),
89
+ action.removedDeadline && /* @__PURE__ */ jsx(
90
+ ChangeSetRemovedProperty,
91
+ {
92
+ propertyName: t("migrationDialog.migration40.deadline"),
93
+ value: action.removedDeadline
94
+ }
95
+ )
96
+ ] }))
97
+ ] }))
98
+ ] });
99
+ }
100
+
101
+ export { RiScMigrationChanges40 };
102
+ //# sourceMappingURL=RiScMigrationChanges40.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiScMigrationChanges40.esm.js","sources":["../../../../src/components/riScInfo/migrations/RiScMigrationChanges40.tsx"],"sourcesContent":["import { MigrationChanges40 } from '../../../utils/types.ts';\nimport { MigrationTitle } from './components/MigrationTitle.tsx';\nimport { ChangeSetBox } from './components/ChangeSetBox.tsx';\nimport { ChangeSetTag } from './components/ChangeSetTag.tsx';\nimport { ChangeSetChangedValue } from './components/ChangeSetChangedValue.tsx';\nimport { ChangeSetBoxTitle } from './components/ChangeSetBoxTitle.tsx';\nimport { ChangeSetTags } from './components/ChangeSetTags.tsx';\nimport { ChangeSetText } from './components/ChangeSetText.tsx';\nimport { ChangeSetRemovedProperty } from './components/ChangeSetRemovedProperty.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\n\ninterface RiScMigrationChanges40Props {\n changes: MigrationChanges40;\n}\n\nexport function RiScMigrationChanges40({\n changes,\n}: RiScMigrationChanges40Props) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <>\n <MigrationTitle\n from=\"3.3\"\n to=\"4.0\"\n migrationExplanation={t(\n 'migrationDialog.migration41.changeExplanation',\n )}\n changelogUrl=\"https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md#40\"\n />\n {changes.scenarios.map(scenario => (\n <ChangeSetBox type=\"primary\">\n <ChangeSetTags>\n <ChangeSetTag\n type=\"primary\"\n text={t('migrationDialog.tagScenario')}\n />\n </ChangeSetTags>\n <ChangeSetBoxTitle title={scenario.title} />\n {scenario.changedVulnerabilities.length > 0 && (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetBoxTitle\n title={t('migrationDialog.migration40.vulnerabilitiesTitle')}\n />\n {scenario.changedVulnerabilities.map(change => (\n <ChangeSetChangedValue\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n oldValue={t(\n `migrationDialog.migration40.vulnerabilities.${change.oldValue}`,\n )}\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n newValue={t(\n `migrationDialog.migration40.vulnerabilities.${change.newValue}`,\n )}\n />\n ))}\n </ChangeSetBox>\n )}\n {scenario.removedExistingActions && (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n <ChangeSetTag\n type=\"delete\"\n text={t('migrationDialog.tagRemoved')}\n />\n </ChangeSetTags>\n <ChangeSetBoxTitle\n title={t('migrationDialog.migration40.existingActions')}\n />\n <ChangeSetText text={scenario.removedExistingActions} />\n </ChangeSetBox>\n )}\n {scenario.changedActions.map(action => (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n <ChangeSetTag\n type=\"primary\"\n text={t('migrationDialog.tagAction')}\n />\n </ChangeSetTags>\n <ChangeSetBoxTitle title={action.title} />\n {action.removedOwner && (\n <ChangeSetRemovedProperty\n propertyName={t('migrationDialog.migration40.owner')}\n value={action.removedOwner}\n />\n )}\n {action.removedDeadline && (\n <ChangeSetRemovedProperty\n propertyName={t('migrationDialog.migration40.deadline')}\n value={action.removedDeadline}\n />\n )}\n </ChangeSetBox>\n ))}\n </ChangeSetBox>\n ))}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAgBO,SAAS,sBAAuB,CAAA;AAAA,EACrC;AACF,CAAgC,EAAA;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,KAAA;AAAA,QACL,EAAG,EAAA,KAAA;AAAA,QACH,oBAAsB,EAAA,CAAA;AAAA,UACpB;AAAA,SACF;AAAA,QACA,YAAa,EAAA;AAAA;AAAA,KACf;AAAA,IACC,QAAQ,SAAU,CAAA,GAAA,CAAI,8BACpB,IAAA,CAAA,YAAA,EAAA,EAAa,MAAK,SACjB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,aACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,SAAA;AAAA,UACL,IAAA,EAAM,EAAE,6BAA6B;AAAA;AAAA,OAEzC,EAAA,CAAA;AAAA,sBACC,GAAA,CAAA,iBAAA,EAAA,EAAkB,KAAO,EAAA,QAAA,CAAS,KAAO,EAAA,CAAA;AAAA,MACzC,SAAS,sBAAuB,CAAA,MAAA,GAAS,qBACvC,IAAA,CAAA,YAAA,EAAA,EAAa,MAAK,WACjB,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,kDAAkD;AAAA;AAAA,SAC7D;AAAA,QACC,QAAA,CAAS,sBAAuB,CAAA,GAAA,CAAI,CACnC,MAAA,qBAAA,GAAA;AAAA,UAAC,qBAAA;AAAA,UAAA;AAAA,YAEC,QAAU,EAAA,CAAA;AAAA,cACR,CAAA,4CAAA,EAA+C,OAAO,QAAQ,CAAA;AAAA,aAChE;AAAA,YAEA,QAAU,EAAA,CAAA;AAAA,cACR,CAAA,4CAAA,EAA+C,OAAO,QAAQ,CAAA;AAAA;AAChE;AAAA,SAEH;AAAA,OACH,EAAA,CAAA;AAAA,MAED,QAAS,CAAA,sBAAA,oBACP,IAAA,CAAA,YAAA,EAAA,EAAa,MAAK,WACjB,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,QAAA;AAAA,YACL,IAAA,EAAM,EAAE,4BAA4B;AAAA;AAAA,SAExC,EAAA,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,6CAA6C;AAAA;AAAA,SACxD;AAAA,wBACC,GAAA,CAAA,aAAA,EAAA,EAAc,IAAM,EAAA,QAAA,CAAS,sBAAwB,EAAA;AAAA,OACxD,EAAA,CAAA;AAAA,MAED,SAAS,cAAe,CAAA,GAAA,CAAI,4BAC1B,IAAA,CAAA,YAAA,EAAA,EAAa,MAAK,WACjB,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,SAAA;AAAA,YACL,IAAA,EAAM,EAAE,2BAA2B;AAAA;AAAA,SAEvC,EAAA,CAAA;AAAA,wBACC,GAAA,CAAA,iBAAA,EAAA,EAAkB,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,CAAA;AAAA,QACvC,OAAO,YACN,oBAAA,GAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,EAAE,mCAAmC,CAAA;AAAA,YACnD,OAAO,MAAO,CAAA;AAAA;AAAA,SAChB;AAAA,QAED,OAAO,eACN,oBAAA,GAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,EAAE,sCAAsC,CAAA;AAAA,YACtD,OAAO,MAAO,CAAA;AAAA;AAAA;AAChB,OAAA,EAEJ,CACD;AAAA,KAAA,EACH,CACD;AAAA,GACH,EAAA,CAAA;AAEJ;;;;"}