@gen-epix/ui-client-casedb 4.1.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/_chunks/AddCasesToEventDialog.js +98 -98
  2. package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
  3. package/dist/_chunks/CaseContentForm.js +10 -10
  4. package/dist/_chunks/CaseInfoDialog.js +242 -241
  5. package/dist/_chunks/CaseInfoDialog.js.map +1 -1
  6. package/dist/_chunks/CaseSetInfoDialog.js +224 -224
  7. package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
  8. package/dist/_chunks/Dashboard.js +549 -550
  9. package/dist/_chunks/Dashboard.js.map +1 -1
  10. package/dist/_chunks/FindSimilarCasesDialog.js +76 -76
  11. package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
  12. package/dist/_chunks/LegendaItem.js.map +1 -1
  13. package/dist/_chunks/LineListWidget.js +138 -136
  14. package/dist/_chunks/LineListWidget.js.map +1 -1
  15. package/dist/_chunks/PanelSeparator.js +3 -3
  16. package/dist/_chunks/PanelSeparator.js.map +1 -1
  17. package/dist/_chunks/Upload.js +318 -318
  18. package/dist/_chunks/Upload.js.map +1 -1
  19. package/dist/_chunks/{chunk-BV7QT456.js → chunk-OB3PAWPO.js} +3 -3
  20. package/dist/_chunks/chunk-OB3PAWPO.js.map +1 -0
  21. package/dist/_chunks/cloneDeep.js +1 -1
  22. package/dist/_chunks/cloneDeep.js.map +1 -1
  23. package/dist/_chunks/esm.js +3 -3
  24. package/dist/_chunks/esm.js.map +1 -1
  25. package/dist/_chunks/index.module.js +1 -1
  26. package/dist/_chunks/index.module.js.map +1 -1
  27. package/dist/_chunks/react.js +1 -1
  28. package/dist/_chunks/react.js.map +1 -1
  29. package/dist/_chunks/shallow.js +2 -2
  30. package/dist/_chunks/shallow.js.map +1 -1
  31. package/dist/_chunks/vanilla.js +1 -1
  32. package/dist/_chunks/vanilla.js.map +1 -1
  33. package/dist/_chunks/yup.js +24 -24
  34. package/dist/_chunks/yup.js.map +1 -1
  35. package/dist/components/form/fields/ArrangementEditor/index.js +30 -30
  36. package/dist/components/ui/CreateEventDialog/index.js +40 -40
  37. package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
  38. package/dist/components/ui/HistogramWidget/index.js +161 -162
  39. package/dist/components/ui/HistogramWidget/index.js.map +1 -1
  40. package/dist/components/ui/SequenceDownloadDialog/index.js +22 -22
  41. package/dist/locale/en.json +6 -0
  42. package/dist/locale/nl.json +7 -1
  43. package/dist/pages/CasesDetailPage/index.js +1 -1
  44. package/dist/pages/ColsAdminPage/index.js +1 -1
  45. package/dist/pages/ConceptsAdminPage/index.js +1 -1
  46. package/dist/pages/DimsAdminPage/index.js +1 -1
  47. package/dist/pages/EventsDetailPage/index.js +1 -1
  48. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js +120 -86
  49. package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js.map +1 -1
  50. package/dist/pages/RefColsAdminPage/index.js +1 -1
  51. package/dist/pages/RegionSetShapesAdminPage/index.js +1 -1
  52. package/dist/pages/RegionsAdminPage/index.js +1 -1
  53. package/dist/pages/UserEffectiveRightsAdminPage/index.js +1 -1
  54. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +59 -59
  55. package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
  56. package/dist/routes/index.js +93 -91
  57. package/dist/routes/index.js.map +1 -1
  58. package/dist/setup/setup.js +2 -3
  59. package/dist/setup/setup.js.map +1 -1
  60. package/package.json +73 -72
  61. package/dist/_chunks/chunk-BV7QT456.js.map +0 -1
  62. package/dist/_chunks/index.esm.js +0 -1465
  63. package/dist/_chunks/index.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/OrganizationAccessCasePoliciesAdminPage/OrganizationAccessCasePoliciesAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n boolean,\n object,\n string,\n} from 'yup';\nimport type {\n CaseDbApiPermission,\n CaseDbOrganizationAccessCasePolicy,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbAbacApi,\n CaseDbCommandName,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { useOrganizationOptionsQuery } from '@gen-epix/ui-client-common/dataHooks/useOrganizationsQuery';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\n\nimport { useColSetOptionsQuery } from '../../dataHooks/useColSetsQuery';\nimport { useCaseTypeSetOptionsQuery } from '../../dataHooks/useCaseTypeSetsQuery';\nimport { useDataCollectionOptionsQuery } from '../../dataHooks/useDataCollectionsQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { useOrganizationCasePolicyNameFactory } from '../../hooks/useOrganizationCasePolicyNameFactory';\n\ntype FormFields = OmitWithMetaData<CaseDbOrganizationAccessCasePolicy, 'case_type_set' | 'data_collection' | 'organization' | 'read_col_set' | 'write_col_set'>;\n\nexport const OrganizationAccessCasePoliciesAdminPage = () => {\n const { t } = useTranslation();\n const organizationOptionsQuery = useOrganizationOptionsQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const colSetOptionsQuery = useColSetOptionsQuery();\n const caseTypeSetOptionsQuery = useCaseTypeSetOptionsQuery();\n\n const nameFactory = useOrganizationCasePolicyNameFactory();\n\n const loadables = useArray([nameFactory, organizationOptionsQuery, dataCollectionOptionsQuery, colSetOptionsQuery, caseTypeSetOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbOrganizationAccessCasePolicy) => {\n return await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbOrganizationAccessCasePolicy) => {\n return (await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbOrganizationAccessCasePolicy) => {\n return nameFactory.getName(item);\n }, [nameFactory]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n add_case: boolean().required(),\n add_case_set: boolean().required(),\n case_type_set_id: string().uuid4().required().max(100),\n data_collection_id: string().uuid4().required().max(100),\n is_active: boolean().required(),\n is_private: boolean().required(),\n organization_id: string().uuid4().required().max(100),\n read_case_set: boolean().required(),\n read_col_set_id: string().uuid4().required().max(100),\n remove_case: boolean().required(),\n remove_case_set: boolean().required(),\n write_case_set: boolean().required(),\n write_col_set_id: string().uuid4().nullable().notRequired().max(100),\n });\n }, []);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Organization`,\n loading: organizationOptionsQuery.isLoading,\n name: 'organization_id',\n options: organizationOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Data collection`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'data_collection_id',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Case type set`,\n loading: caseTypeSetOptionsQuery.isLoading,\n name: 'case_type_set_id',\n options: caseTypeSetOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Read column set`,\n loading: colSetOptionsQuery.isLoading,\n name: 'read_col_set_id',\n options: colSetOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Write column set`,\n loading: colSetOptionsQuery.isLoading,\n name: 'write_col_set_id',\n options: colSetOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Add case`,\n name: 'add_case',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Remove case`,\n name: 'remove_case',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Add case set`,\n name: 'add_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Remove case set`,\n name: 'remove_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Read case set`,\n name: 'read_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Write case set`,\n name: 'write_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Is private`,\n name: 'is_private',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Is active`,\n name: 'is_active',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [colSetOptionsQuery.isLoading, colSetOptionsQuery.options, caseTypeSetOptionsQuery.isLoading, caseTypeSetOptionsQuery.options, dataCollectionOptionsQuery.isLoading, dataCollectionOptionsQuery.options, organizationOptionsQuery.isLoading, organizationOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbOrganizationAccessCasePolicy>[] => {\n return [\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'organization_id', name: t`Organization`, options: organizationOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'data_collection_id', name: t`Data collection`, options: dataCollectionOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'case_type_set_id', name: t`Case type set`, options: caseTypeSetOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'read_col_set_id', name: t`Read column set`, options: colSetOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'write_col_set_id', name: t`Write column set`, options: colSetOptionsQuery.options }),\n\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'add_case', name: t`Add case` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'remove_case', name: t`Remove case` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'add_case_set', name: t`Add case set` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'remove_case_set', name: t`Remove case set` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'read_case_set', name: t`Read case set` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'write_case_set', name: t`Write case set` }),\n\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'is_private', name: t`Private` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'is_active', name: t`Active` }),\n ];\n }, [colSetOptionsQuery.options, caseTypeSetOptionsQuery.options, dataCollectionOptionsQuery.options, organizationOptionsQuery.options, t]);\n\n return (\n <CrudPage<FormFields, CaseDbOrganizationAccessCasePolicy, CaseDbOrganizationAccessCasePolicy, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new organization access case policy`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.OrganizationAccessCasePolicyCrudCommand}\n defaultSortByField={'organization_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Organization access case policy`}\n loadables={loadables}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.ORGANIZATION_ACCESS_CASE_POLICIES}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('OrganizationAccessCasePoliciesAdminPage')}\n title={t`Organization access case policies`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/OrganizationAccessCasePoliciesAdminPage/OrganizationAccessCasePoliciesAdminPage.tsx"],"sourcesContent":["import {\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n boolean,\n object,\n string,\n} from 'yup';\nimport type {\n CaseDbApiPermission,\n CaseDbOrganizationAccessCasePolicy,\n} from '@gen-epix/api-casedb';\nimport {\n CaseDbAbacApi,\n CaseDbCommandName,\n} from '@gen-epix/api-casedb';\nimport type { OmitWithMetaData } from '@gen-epix/ui-client-common/models/data';\nimport type { TableColumn } from '@gen-epix/ui-client-common/models/table';\nimport { CrudPage } from '@gen-epix/ui-client-common/pages/CrudPage';\nimport { TableUtil } from '@gen-epix/ui-client-common/utils/TableUtil';\nimport { useOrganizationOptionsQuery } from '@gen-epix/ui-client-common/dataHooks/useOrganizationsQuery';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport { useColSetOptionsQuery } from '../../dataHooks/useColSetsQuery';\nimport { useCaseTypeSetOptionsQuery } from '../../dataHooks/useCaseTypeSetsQuery';\nimport { useDataCollectionOptionsQuery } from '../../dataHooks/useDataCollectionsQuery';\nimport { CASEDB_QUERY_KEY } from '../../constants/query';\nimport { useOrganizationCasePolicyNameFactory } from '../../hooks/useOrganizationCasePolicyNameFactory';\n\ntype FormFields = OmitWithMetaData<CaseDbOrganizationAccessCasePolicy, 'case_type_set' | 'data_collection' | 'organization' | 'read_col_set' | 'write_col_set'>;\n\nexport const OrganizationAccessCasePoliciesAdminPage = () => {\n const { t } = useTranslation();\n const organizationOptionsQuery = useOrganizationOptionsQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const colSetOptionsQuery = useColSetOptionsQuery();\n const caseTypeSetOptionsQuery = useCaseTypeSetOptionsQuery();\n\n const nameFactory = useOrganizationCasePolicyNameFactory();\n\n const loadables = useArray([nameFactory, organizationOptionsQuery, dataCollectionOptionsQuery, colSetOptionsQuery, caseTypeSetOptionsQuery]);\n\n const fetchAll = useCallback(async (signal: AbortSignal) => {\n return (await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesGetAll(null, null, { signal }))?.data;\n }, []);\n\n const deleteOne = useCallback(async (item: CaseDbOrganizationAccessCasePolicy) => {\n return await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesDeleteOne(item.id);\n }, []);\n\n const updateOne = useCallback(async (variables: FormFields, item: CaseDbOrganizationAccessCasePolicy) => {\n return (await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesPutOne(item.id, { id: item.id, ...variables })).data;\n }, []);\n\n const createOne = useCallback(async (variables: FormFields) => {\n return (await CaseDbAbacApi.getInstance().organizationAccessCasePoliciesPostOne(variables)).data;\n }, []);\n\n const getName = useCallback((item: CaseDbOrganizationAccessCasePolicy) => {\n return nameFactory.getName(item);\n }, [nameFactory]);\n\n const schema = useMemo(() => {\n return object<FormFields>().shape({\n add_case: boolean().when('is_private', {\n is: true,\n otherwise: () => boolean().required(),\n then: () => boolean().required().oneOf([true], t`Add case must be enabled for private policies`),\n }),\n add_case_set: boolean().when('is_private', {\n is: true,\n otherwise: () => boolean().required(),\n then: () => boolean().required().oneOf([true], t`Add case set must be enabled for private policies`),\n }),\n case_type_set_id: string().uuid4().required().max(100),\n data_collection_id: string().uuid4().required().max(100),\n is_active: boolean().required(),\n is_private: boolean().required(),\n organization_id: string().uuid4().required().max(100),\n read_case_set: boolean().required(),\n read_col_set_id: string().when('is_private', {\n is: true,\n otherwise: () => string().nullable().notRequired().max(100),\n then: () => string().uuid4().required(t`Read column set is required for private policies`).max(100),\n }),\n remove_case: boolean().when('is_private', {\n is: true,\n otherwise: () => boolean().required(),\n then: () => boolean().required().oneOf([true], t`Remove case must be enabled for private policies`),\n }),\n remove_case_set: boolean().when('is_private', {\n is: true,\n otherwise: () => boolean().required(),\n then: () => boolean().required().oneOf([true], t`Remove case set must be enabled for private policies`),\n }),\n write_case_set: boolean().required(),\n write_col_set_id: string().when('is_private', {\n is: true,\n otherwise: () => string().nullable().notRequired().max(100),\n then: () => string().uuid4().required(t`Write column set is required for private policies`).max(100),\n }),\n });\n }, [t]);\n\n const onFormChange = useCallback((_item: CaseDbOrganizationAccessCasePolicy, values: FormFields, formMethods: UseFormReturn<FormFields>) => {\n if (values?.is_private === true && values?.add_case !== true) {\n formMethods.setValue('add_case', true);\n }\n if (values?.is_private === true && values?.add_case_set !== true) {\n formMethods.setValue('add_case_set', true);\n }\n if (values?.is_private === true && values?.remove_case !== true) {\n formMethods.setValue('remove_case', true);\n }\n if (values?.is_private === true && values?.remove_case_set !== true) {\n formMethods.setValue('remove_case_set', true);\n }\n }, []);\n\n const formFieldDefinitions = useCallback((item: CaseDbOrganizationAccessCasePolicy, values: FormFields): FormFieldDefinition<FormFields>[] => {\n const isPrivate = values?.is_private ?? item?.is_private ?? false;\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Organization`,\n loading: organizationOptionsQuery.isLoading,\n name: 'organization_id',\n options: organizationOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Data collection`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'data_collection_id',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Case type set`,\n loading: caseTypeSetOptionsQuery.isLoading,\n name: 'case_type_set_id',\n options: caseTypeSetOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Read column set`,\n loading: colSetOptionsQuery.isLoading,\n name: 'read_col_set_id',\n options: colSetOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Write column set`,\n loading: colSetOptionsQuery.isLoading,\n name: 'write_col_set_id',\n options: colSetOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: isPrivate,\n label: t`Add case`,\n name: 'add_case',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: isPrivate,\n label: t`Remove case`,\n name: 'remove_case',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: isPrivate,\n label: t`Add case set`,\n name: 'add_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n disabled: isPrivate,\n label: t`Remove case set`,\n name: 'remove_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Read case set`,\n name: 'read_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Write case set`,\n name: 'write_case_set',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Is private`,\n name: 'is_private',\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN,\n label: t`Is active`,\n name: 'is_active',\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [colSetOptionsQuery.isLoading, colSetOptionsQuery.options, caseTypeSetOptionsQuery.isLoading, caseTypeSetOptionsQuery.options, dataCollectionOptionsQuery.isLoading, dataCollectionOptionsQuery.options, organizationOptionsQuery.isLoading, organizationOptionsQuery.options, t]);\n\n const tableColumns = useMemo((): TableColumn<CaseDbOrganizationAccessCasePolicy>[] => {\n return [\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'organization_id', name: t`Organization`, options: organizationOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'data_collection_id', name: t`Data collection`, options: dataCollectionOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'case_type_set_id', name: t`Case type set`, options: caseTypeSetOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'read_col_set_id', name: t`Read column set`, options: colSetOptionsQuery.options }),\n TableUtil.createOptionsColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'write_col_set_id', name: t`Write column set`, options: colSetOptionsQuery.options }),\n\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'add_case', name: t`Add case` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'remove_case', name: t`Remove case` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'add_case_set', name: t`Add case set` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'remove_case_set', name: t`Remove case set` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'read_case_set', name: t`Read case set` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'write_case_set', name: t`Write case set` }),\n\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'is_private', name: t`Private` }),\n TableUtil.createBooleanColumn<CaseDbOrganizationAccessCasePolicy>({ id: 'is_active', name: t`Active` }),\n ];\n }, [colSetOptionsQuery.options, caseTypeSetOptionsQuery.options, dataCollectionOptionsQuery.options, organizationOptionsQuery.options, t]);\n\n return (\n <CrudPage<FormFields, CaseDbOrganizationAccessCasePolicy, CaseDbOrganizationAccessCasePolicy, CASEDB_QUERY_KEY, CaseDbApiPermission>\n createItemDialogTitle={t`Create new organization access case policy`}\n createOne={createOne}\n crudCommandType={CaseDbCommandName.OrganizationAccessCasePolicyCrudCommand}\n defaultSortByField={'organization_id'}\n defaultSortDirection={'asc'}\n deleteOne={deleteOne}\n fetchAll={fetchAll}\n formFieldDefinitions={formFieldDefinitions}\n getName={getName}\n itemName={t`Organization access case policy`}\n loadables={loadables}\n onFormChange={onFormChange}\n resourceQueryKeyBase={CASEDB_QUERY_KEY.ORGANIZATION_ACCESS_CASE_POLICIES}\n schema={schema}\n tableColumns={tableColumns}\n testIdAttributes={TestIdUtil.createAttributes('OrganizationAccessCasePoliciesAdminPage')}\n title={t`Organization access case policies`}\n updateOne={updateOne}\n />\n );\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { CASEDB_QUERY_KEY as e } from "../../constants/query.js";
2
2
  import { CaseDbDataUtil as t } from "../../utils/CaseDbDataUtil/index.js";
3
- import { t as n } from "../../_chunks/chunk-BV7QT456.js";
3
+ import { t as n } from "../../_chunks/chunk-OB3PAWPO.js";
4
4
  import { useRefColsValidationRulesQuery as r } from "../../dataHooks/useRefColsValidationRulesQuery/index.js";
5
5
  import { useRefDimMapQuery as i, useRefDimOptionsQuery as a } from "../../dataHooks/useRefDimsQuery/index.js";
6
6
  import { useConceptSetMapQuery as o, useConceptSetOptionsQuery as s } from "../../dataHooks/useConceptSetsQuery/index.js";
@@ -1,5 +1,5 @@
1
1
  import { CASEDB_QUERY_KEY as e } from "../../constants/query.js";
2
- import { t } from "../../_chunks/chunk-BV7QT456.js";
2
+ import { t } from "../../_chunks/chunk-OB3PAWPO.js";
3
3
  import { useRegionSetsMapQuery as n } from "../../dataHooks/useRegionSetsQuery/index.js";
4
4
  import { number as r, object as i, string as a } from "yup";
5
5
  import { CaseDbCommandName as o, CaseDbGeoApi as s } from "@gen-epix/api-casedb";
@@ -1,5 +1,5 @@
1
1
  import { CASEDB_QUERY_KEY as e } from "../../constants/query.js";
2
- import { t } from "../../_chunks/chunk-BV7QT456.js";
2
+ import { t } from "../../_chunks/chunk-OB3PAWPO.js";
3
3
  import { object as n } from "yup";
4
4
  import { CaseDbCommandName as r, CaseDbGeoApi as i } from "@gen-epix/api-casedb";
5
5
  import { FORM_FIELD_DEFINITION_TYPE as a } from "@gen-epix/ui-core-form/models/form";
@@ -1,7 +1,7 @@
1
1
  import { EffectiveRightsUtil as e } from "../../utils/EffectiveRightsUtil/index.js";
2
2
  import { useDataCollectionOptionsQuery as t, useDataCollectionsMapQuery as n } from "../../dataHooks/useDataCollectionsQuery/index.js";
3
3
  import { useCaseTypeSetMembersQuery as r } from "../../dataHooks/useCaseTypeSetMembersQuery/index.js";
4
- import { t as i } from "../../_chunks/chunk-BV7QT456.js";
4
+ import { t as i } from "../../_chunks/chunk-OB3PAWPO.js";
5
5
  import { useColSetMembersQuery as a } from "../../dataHooks/useColSetMembersQuery/index.js";
6
6
  import { useOrganizationAccessCasePoliciesQuery as o } from "../../dataHooks/useOrganizationAccessCasePoliciesQuery/index.js";
7
7
  import { useOrganizationShareCasePoliciesQuery as s } from "../../dataHooks/useOrganizationShareCasePoliciesQuery/index.js";
@@ -1,39 +1,39 @@
1
1
  import { h as e } from "../../_chunks/_MapCache.js";
2
2
  import { t } from "../../_chunks/noop.js";
3
3
  import { EffectiveRightsUtil as n } from "../../utils/EffectiveRightsUtil/index.js";
4
- import { c as r, o as i } from "../../_chunks/index.esm.js";
5
- import { t as a } from "../../_chunks/yup.js";
6
- import { useCaseTypeOptionsQuery as o } from "../../dataHooks/useCaseTypesQuery/index.js";
7
- import { useDataCollectionOptionsQuery as s } from "../../dataHooks/useDataCollectionsQuery/index.js";
8
- import { useCaseTypeSetMembersQuery as c } from "../../dataHooks/useCaseTypeSetMembersQuery/index.js";
9
- import { t as l } from "../../_chunks/chunk-BV7QT456.js";
10
- import { useColSetMembersQuery as u } from "../../dataHooks/useColSetMembersQuery/index.js";
11
- import { useOrganizationAccessCasePoliciesQuery as d } from "../../dataHooks/useOrganizationAccessCasePoliciesQuery/index.js";
12
- import { useOrganizationShareCasePoliciesQuery as f } from "../../dataHooks/useOrganizationShareCasePoliciesQuery/index.js";
13
- import { useUserAccessCasePoliciesQuery as p } from "../../dataHooks/useUserAccessCasePoliciesQuery/index.js";
14
- import { useUserShareCasePoliciesQuery as m } from "../../dataHooks/useUserShareCasePoliciesQuery/index.js";
15
- import { object as h, string as g } from "yup";
16
- import { CaseDbOrganizationApi as _ } from "@gen-epix/api-casedb";
17
- import { FORM_FIELD_DEFINITION_TYPE as v } from "@gen-epix/ui-core-form/models/form";
18
- import { COMMON_QUERY_KEY as y } from "@gen-epix/ui-client-common/constants/query";
19
- import { Box as b, Container as ee, Typography as x } from "@mui/material";
20
- import { useId as S, useMemo as C } from "react";
21
- import { useTranslation as w } from "react-i18next";
22
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
23
- import { ResponseHandler as D } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
24
- import { useItemQuery as O } from "@gen-epix/ui-client-common/hooks/useItemQuery";
25
- import { useArray as k } from "@gen-epix/ui-core/hooks/useArray";
4
+ import { t as r } from "../../_chunks/yup.js";
5
+ import { useCaseTypeOptionsQuery as i } from "../../dataHooks/useCaseTypesQuery/index.js";
6
+ import { useDataCollectionOptionsQuery as a } from "../../dataHooks/useDataCollectionsQuery/index.js";
7
+ import { useCaseTypeSetMembersQuery as o } from "../../dataHooks/useCaseTypeSetMembersQuery/index.js";
8
+ import { t as s } from "../../_chunks/chunk-OB3PAWPO.js";
9
+ import { useColSetMembersQuery as c } from "../../dataHooks/useColSetMembersQuery/index.js";
10
+ import { useOrganizationAccessCasePoliciesQuery as l } from "../../dataHooks/useOrganizationAccessCasePoliciesQuery/index.js";
11
+ import { useOrganizationShareCasePoliciesQuery as u } from "../../dataHooks/useOrganizationShareCasePoliciesQuery/index.js";
12
+ import { useUserAccessCasePoliciesQuery as d } from "../../dataHooks/useUserAccessCasePoliciesQuery/index.js";
13
+ import { useUserShareCasePoliciesQuery as f } from "../../dataHooks/useUserShareCasePoliciesQuery/index.js";
14
+ import { object as p, string as m } from "yup";
15
+ import { CaseDbOrganizationApi as h } from "@gen-epix/api-casedb";
16
+ import { FORM_FIELD_DEFINITION_TYPE as g } from "@gen-epix/ui-core-form/models/form";
17
+ import { COMMON_QUERY_KEY as _ } from "@gen-epix/ui-client-common/constants/query";
18
+ import { Box as v, Container as y, Typography as b } from "@mui/material";
19
+ import { useId as ee, useMemo as x } from "react";
20
+ import { useTranslation as S } from "react-i18next";
21
+ import { jsx as C, jsxs as w } from "react/jsx-runtime";
22
+ import { ResponseHandler as T } from "@gen-epix/ui-client-common/components/ui/ResponseHandler";
23
+ import { useItemQuery as E } from "@gen-epix/ui-client-common/hooks/useItemQuery";
24
+ import { useArray as D } from "@gen-epix/ui-core/hooks/useArray";
25
+ import { useForm as O, useWatch as k } from "react-hook-form";
26
26
  import { GenericForm as A } from "@gen-epix/ui-core-form/components/helpers/GenericForm";
27
27
  import { TestIdUtil as j } from "@gen-epix/ui-core/utils/TestIdUtil";
28
28
  import { PageContainer as M } from "@gen-epix/ui-client-common/components/ui/PageContainer";
29
29
  import { useOrganizationMapQuery as N } from "@gen-epix/ui-client-common/dataHooks/useOrganizationsQuery";
30
30
  //#region src/pages/UserEffectiveRightsTesterAdminPage/UserEffectiveRightsTesterAdminPage.tsx
31
31
  var P = /* @__PURE__ */ e(t(), 1), F = () => {
32
- let { t: e } = w(), t = S(), { userId: F } = l(), I = O({
33
- baseQueryKey: y.USERS,
32
+ let { t: e } = S(), t = ee(), { userId: F } = s(), I = E({
33
+ baseQueryKey: _.USERS,
34
34
  itemId: F,
35
- useQueryOptions: { queryFn: async ({ signal: e }) => (await _.getInstance().usersGetOne(F, { signal: e })).data }
36
- }), L = u(), R = o(), z = N(), B = c(), V = s(), H = d((e) => e.filter((e) => e.is_active && e.organization_id === I.data?.organization_id)), U = f((e) => e.filter((e) => e.is_active && e.organization_id === I.data?.organization_id)), W = p((e) => e.filter((e) => e.is_active && e.user_id === I.data?.id)), G = m((e) => e.filter((e) => e.is_active && e.user_id === I.data?.id)), K = k([
35
+ useQueryOptions: { queryFn: async ({ signal: e }) => (await h.getInstance().usersGetOne(F, { signal: e })).data }
36
+ }), L = c(), R = i(), z = N(), B = o(), V = a(), H = l((e) => e.filter((e) => e.is_active && e.organization_id === I.data?.organization_id)), U = u((e) => e.filter((e) => e.is_active && e.organization_id === I.data?.organization_id)), W = d((e) => e.filter((e) => e.is_active && e.user_id === I.data?.id)), G = f((e) => e.filter((e) => e.is_active && e.user_id === I.data?.id)), K = D([
37
37
  I,
38
38
  L,
39
39
  R,
@@ -44,7 +44,7 @@ var P = /* @__PURE__ */ e(t(), 1), F = () => {
44
44
  W,
45
45
  G,
46
46
  z
47
- ]), q = C(() => {
47
+ ]), q = x(() => {
48
48
  let { data: e } = H, { data: t } = U, { data: r } = W, { data: i } = G, { data: a } = B, { data: o } = L;
49
49
  return n.assembleUserEffectiveRights({
50
50
  caseTypeSetMembers: a,
@@ -63,18 +63,18 @@ var P = /* @__PURE__ */ e(t(), 1), F = () => {
63
63
  W,
64
64
  I.data,
65
65
  G
66
- ]), J = C(() => h().shape({
67
- caseTypeId: g().uuid4().required(),
68
- dataCollectionId: g().uuid4().required(),
69
- fromDataCollectionId: g().uuid4().nullable().notRequired()
70
- }), []), Y = i({
71
- resolver: a(J),
66
+ ]), J = x(() => p().shape({
67
+ caseTypeId: m().uuid4().required(),
68
+ dataCollectionId: m().uuid4().required(),
69
+ fromDataCollectionId: m().uuid4().nullable().notRequired()
70
+ }), []), Y = O({
71
+ resolver: r(J),
72
72
  values: {
73
73
  caseTypeId: null,
74
74
  dataCollectionId: null,
75
75
  fromDataCollectionId: null
76
76
  }
77
- }), { control: X, handleSubmit: Z } = Y, Q = r({ control: X }), $ = C(() => {
77
+ }), { control: X, handleSubmit: Z } = Y, Q = k({ control: X }), $ = x(() => {
78
78
  if (!Q.caseTypeId || !Q.dataCollectionId) return null;
79
79
  let e = q.find((e) => e.data_collection_id === Q.dataCollectionId && e.categorized_case_type_ids.some((e) => e === Q.caseTypeId)), t = Q.fromDataCollectionId && e?.effective_share_case_rights?.find((e) => e.categorized_case_type_ids.some((e) => e === Q.caseTypeId) && e.from_data_collection_id === Q.fromDataCollectionId);
80
80
  return {
@@ -93,23 +93,23 @@ var P = /* @__PURE__ */ e(t(), 1), F = () => {
93
93
  Q.caseTypeId,
94
94
  Q.dataCollectionId,
95
95
  Q.fromDataCollectionId
96
- ]), te = C(() => [
96
+ ]), te = x(() => [
97
97
  {
98
- definition: v.AUTOCOMPLETE,
98
+ definition: g.AUTOCOMPLETE,
99
99
  label: e`Case type`,
100
100
  loading: R.isLoading,
101
101
  name: "caseTypeId",
102
102
  options: R.options
103
103
  },
104
104
  {
105
- definition: v.AUTOCOMPLETE,
105
+ definition: g.AUTOCOMPLETE,
106
106
  label: e`Data collection`,
107
107
  loading: V.isLoading,
108
108
  name: "dataCollectionId",
109
109
  options: V.options
110
110
  },
111
111
  {
112
- definition: v.AUTOCOMPLETE,
112
+ definition: g.AUTOCOMPLETE,
113
113
  disabled: !$?.has_share_case_rights,
114
114
  label: e`From data collection`,
115
115
  loading: V.isLoading,
@@ -124,63 +124,63 @@ var P = /* @__PURE__ */ e(t(), 1), F = () => {
124
124
  $?.has_share_case_rights,
125
125
  e
126
126
  ]);
127
- return /* @__PURE__ */ T(M, {
127
+ return /* @__PURE__ */ C(M, {
128
128
  fullWidth: !0,
129
129
  showBreadcrumbs: !0,
130
130
  testIdAttributes: j.createAttributes("UserEffectiveRightsTesterAdminPage"),
131
131
  title: e`Users effective rights`,
132
- children: /* @__PURE__ */ T(b, {
132
+ children: /* @__PURE__ */ C(v, {
133
133
  sx: {
134
134
  height: "100%",
135
135
  position: "relative"
136
136
  },
137
- children: /* @__PURE__ */ T(D, {
137
+ children: /* @__PURE__ */ C(T, {
138
138
  inlineSpinner: !0,
139
139
  loadables: K,
140
- children: /* @__PURE__ */ E(ee, {
140
+ children: /* @__PURE__ */ w(y, {
141
141
  maxWidth: "md",
142
142
  children: [
143
- /* @__PURE__ */ E(b, {
143
+ /* @__PURE__ */ w(v, {
144
144
  sx: { marginY: 2 },
145
145
  children: [
146
- /* @__PURE__ */ T(x, {
146
+ /* @__PURE__ */ C(b, {
147
147
  component: "h2",
148
148
  variant: "h4",
149
149
  children: e("Testing effective rights for user: {{userEmail}}", { userEmail: I.data?.email })
150
150
  }),
151
- /* @__PURE__ */ T(x, { children: e("Organization: {{organizationName}}", { organizationName: z.map.get(I.data?.organization_id)?.name }) }),
152
- /* @__PURE__ */ T(x, { children: e("Roles: {{roles}}", { roles: I.data?.roles.join(", ") }) })
151
+ /* @__PURE__ */ C(b, { children: e("Organization: {{organizationName}}", { organizationName: z.map.get(I.data?.organization_id)?.name }) }),
152
+ /* @__PURE__ */ C(b, { children: e("Roles: {{roles}}", { roles: I.data?.roles.join(", ") }) })
153
153
  ]
154
154
  }),
155
- /* @__PURE__ */ T(A, {
155
+ /* @__PURE__ */ C(A, {
156
156
  formFieldDefinitions: te,
157
157
  formId: t,
158
158
  formMethods: Y,
159
159
  onSubmit: Z(P.default),
160
160
  schema: J
161
161
  }),
162
- typeof $ == "object" && !!$ && /* @__PURE__ */ E(b, {
162
+ typeof $ == "object" && !!$ && /* @__PURE__ */ w(v, {
163
163
  sx: { marginY: 2 },
164
164
  children: [
165
- /* @__PURE__ */ T(x, {
165
+ /* @__PURE__ */ C(b, {
166
166
  variant: "h6",
167
167
  children: e("Effective rights result:")
168
168
  }),
169
- !Q.fromDataCollectionId && $.has_share_case_rights && /* @__PURE__ */ T(b, {
169
+ !Q.fromDataCollectionId && $.has_share_case_rights && /* @__PURE__ */ C(v, {
170
170
  sx: { marginY: 2 },
171
- children: /* @__PURE__ */ T(x, {
171
+ children: /* @__PURE__ */ C(b, {
172
172
  sx: { fontStyle: "italic" },
173
173
  children: e`Note: The user has share case rights that may affect the result when a 'From data collection' is selected.`
174
174
  })
175
175
  }),
176
- /* @__PURE__ */ T(x, { children: e("Add case: {{addCase}}", { addCase: $?.add_case ? e`Yes` : e`No` }) }),
177
- /* @__PURE__ */ T(x, { children: e("Remove case: {{removeCase}}", { removeCase: $?.remove_case ? e`Yes` : e`No` }) }),
178
- /* @__PURE__ */ T(x, { children: e("Add case set: {{addCaseSet}}", { addCaseSet: $?.add_case_set ? e`Yes` : e`No` }) }),
179
- /* @__PURE__ */ T(x, { children: e("Remove case set: {{removeCaseSet}}", { removeCaseSet: $?.remove_case_set ? e`Yes` : e`No` }) }),
180
- /* @__PURE__ */ T(x, { children: e("Read case set: {{readCaseSet}}", { readCaseSet: $?.read_case_set ? e`Yes` : e`No` }) }),
181
- /* @__PURE__ */ T(x, { children: e("Write case set: {{writeCaseSet}}", { writeCaseSet: $?.write_case_set ? e`Yes` : e`No` }) }),
182
- /* @__PURE__ */ T(x, { children: e("Read case properties: {{readSomeProperties}}", { readSomeProperties: $?.read_col_ids?.length > 0 ? e`Yes` : e`No` }) }),
183
- /* @__PURE__ */ T(x, { children: e("Write case properties: {{writeSomeProperties}}", { writeSomeProperties: $?.write_col_ids?.length > 0 ? e`Yes` : e`No` }) })
176
+ /* @__PURE__ */ C(b, { children: e("Add case: {{addCase}}", { addCase: $?.add_case ? e`Yes` : e`No` }) }),
177
+ /* @__PURE__ */ C(b, { children: e("Remove case: {{removeCase}}", { removeCase: $?.remove_case ? e`Yes` : e`No` }) }),
178
+ /* @__PURE__ */ C(b, { children: e("Add case set: {{addCaseSet}}", { addCaseSet: $?.add_case_set ? e`Yes` : e`No` }) }),
179
+ /* @__PURE__ */ C(b, { children: e("Remove case set: {{removeCaseSet}}", { removeCaseSet: $?.remove_case_set ? e`Yes` : e`No` }) }),
180
+ /* @__PURE__ */ C(b, { children: e("Read case set: {{readCaseSet}}", { readCaseSet: $?.read_case_set ? e`Yes` : e`No` }) }),
181
+ /* @__PURE__ */ C(b, { children: e("Write case set: {{writeCaseSet}}", { writeCaseSet: $?.write_case_set ? e`Yes` : e`No` }) }),
182
+ /* @__PURE__ */ C(b, { children: e("Read case properties: {{readSomeProperties}}", { readSomeProperties: $?.read_col_ids?.length > 0 ? e`Yes` : e`No` }) }),
183
+ /* @__PURE__ */ C(b, { children: e("Write case properties: {{writeSomeProperties}}", { writeSomeProperties: $?.write_col_ids?.length > 0 ? e`Yes` : e`No` }) })
184
184
  ]
185
185
  })
186
186
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/UserEffectiveRightsTesterAdminPage/UserEffectiveRightsTesterAdminPage.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport {\n Box,\n Container,\n Typography,\n} from '@mui/material';\nimport {\n useId,\n useMemo,\n} from 'react';\nimport { useParams } from 'react-router-dom';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport {\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport {\n object,\n string,\n} from 'yup';\nimport noop from 'lodash/noop';\nimport type { CaseDbUser } from '@gen-epix/api-casedb';\nimport { CaseDbOrganizationApi } from '@gen-epix/api-casedb';\nimport { COMMON_QUERY_KEY } from '@gen-epix/ui-client-common/constants/query';\nimport { PageContainer } from '@gen-epix/ui-client-common/components/ui/PageContainer';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\nimport { useOrganizationMapQuery } from '@gen-epix/ui-client-common/dataHooks/useOrganizationsQuery';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\n\nimport { useColSetMembersQuery } from '../../dataHooks/useColSetMembersQuery';\nimport { useCaseTypeSetMembersQuery } from '../../dataHooks/useCaseTypeSetMembersQuery';\nimport { useDataCollectionOptionsQuery } from '../../dataHooks/useDataCollectionsQuery';\nimport { useOrganizationAccessCasePoliciesQuery } from '../../dataHooks/useOrganizationAccessCasePoliciesQuery';\nimport { useOrganizationShareCasePoliciesQuery } from '../../dataHooks/useOrganizationShareCasePoliciesQuery';\nimport { useUserAccessCasePoliciesQuery } from '../../dataHooks/useUserAccessCasePoliciesQuery';\nimport { useUserShareCasePoliciesQuery } from '../../dataHooks/useUserShareCasePoliciesQuery';\nimport { useCaseTypeOptionsQuery } from '../../dataHooks/useCaseTypesQuery';\nimport type { UserEffectiveRight } from '../../models/caseAccess';\nimport { EffectiveRightsUtil } from '../../utils/EffectiveRightsUtil';\n\n\ntype FormFields = {\n caseTypeId: string;\n dataCollectionId: string;\n fromDataCollectionId: string;\n};\n\ntype Result = {\n add_case: boolean;\n add_case_set: boolean;\n has_share_case_rights?: boolean;\n read_case_set: boolean;\n read_col_ids: string[];\n remove_case: boolean;\n remove_case_set: boolean;\n write_case_set: boolean;\n write_col_ids: string[];\n};\n\nexport const UserEffectiveRightsTesterAdminPage = () => {\n const { t } = useTranslation();\n const formId = useId();\n\n const { userId } = useParams();\n\n const userQuery = useItemQuery<CaseDbUser>({\n baseQueryKey: COMMON_QUERY_KEY.USERS,\n itemId: userId,\n useQueryOptions: {\n queryFn: async ({ signal }) => {\n const response = await CaseDbOrganizationApi.getInstance().usersGetOne(userId, { signal });\n return response.data;\n },\n },\n });\n\n const colSetMembersQuery = useColSetMembersQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const organizationMapQuery = useOrganizationMapQuery();\n const caseTypeSetMembersQuery = useCaseTypeSetMembersQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const organizationAccessCasePoliciesQuery = useOrganizationAccessCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.organization_id === userQuery.data?.organization_id));\n const organizationShareCasePoliciesQuery = useOrganizationShareCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.organization_id === userQuery.data?.organization_id));\n const userAccessCasePoliciesQuery = useUserAccessCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.user_id === userQuery.data?.id));\n const userShareCasePoliciesQuery = useUserShareCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.user_id === userQuery.data?.id));\n\n const loadables = useArray([\n userQuery,\n colSetMembersQuery,\n caseTypeOptionsQuery,\n caseTypeSetMembersQuery,\n dataCollectionOptionsQuery,\n organizationAccessCasePoliciesQuery,\n organizationShareCasePoliciesQuery,\n userAccessCasePoliciesQuery,\n userShareCasePoliciesQuery,\n organizationMapQuery,\n ]);\n\n\n const effectiveRights = useMemo<UserEffectiveRight[]>(() => {\n const { data: organizationAccessCasePolicies } = organizationAccessCasePoliciesQuery;\n const { data: organizationShareCasePolicies } = organizationShareCasePoliciesQuery;\n const { data: userAccessCasePolicies } = userAccessCasePoliciesQuery;\n const { data: userShareCasePolicies } = userShareCasePoliciesQuery;\n const { data: caseTypeSetMembers } = caseTypeSetMembersQuery;\n const { data: colSetMembers } = colSetMembersQuery;\n\n return EffectiveRightsUtil.assembleUserEffectiveRights({\n caseTypeSetMembers,\n colSetMembers,\n organizationAccessCasePolicies,\n organizationShareCasePolicies,\n user: userQuery.data,\n userAccessCasePolicies,\n userShareCasePolicies,\n });\n\n }, [colSetMembersQuery, caseTypeSetMembersQuery, organizationAccessCasePoliciesQuery, organizationShareCasePoliciesQuery, userAccessCasePoliciesQuery, userQuery.data, userShareCasePoliciesQuery]);\n\n const schema = useMemo(() => object<FormFields>().shape({\n caseTypeId: string().uuid4().required(),\n dataCollectionId: string().uuid4().required(),\n fromDataCollectionId: string().uuid4().nullable().notRequired(),\n }), []);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as unknown as Resolver<FormFields>,\n values: {\n caseTypeId: null,\n dataCollectionId: null,\n fromDataCollectionId: null,\n },\n });\n const { control, handleSubmit } = formMethods;\n const formValues = useWatch({ control });\n\n const result = useMemo<Result>(() => {\n if (!formValues.caseTypeId || !formValues.dataCollectionId) {\n return null;\n }\n const effectiveRight = effectiveRights.find(right => {\n return right.data_collection_id === formValues.dataCollectionId && right.categorized_case_type_ids.some(x => x === formValues.caseTypeId);\n });\n\n const shareCaseRight = formValues.fromDataCollectionId && effectiveRight?.effective_share_case_rights?.find(shareRight => {\n return shareRight.categorized_case_type_ids.some(x => x === formValues.caseTypeId) && shareRight.from_data_collection_id === formValues.fromDataCollectionId;\n });\n\n return {\n add_case: effectiveRight?.add_case || shareCaseRight?.add_case,\n add_case_set: effectiveRight?.add_case_set || shareCaseRight?.add_case_set,\n has_share_case_rights: effectiveRight?.effective_share_case_rights.length > 0,\n read_case_set: effectiveRight?.read_case_set,\n read_col_ids: effectiveRight?.categorized_read_col_ids,\n remove_case: effectiveRight?.remove_case || shareCaseRight?.remove_case,\n remove_case_set: effectiveRight?.remove_case_set || shareCaseRight?.remove_case_set,\n write_case_set: effectiveRight?.write_case_set,\n write_col_ids: effectiveRight?.categorized_write_col_ids,\n } satisfies Result;\n }, [effectiveRights, formValues.caseTypeId, formValues.dataCollectionId, formValues.fromDataCollectionId]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'caseTypeId',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Data collection`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'dataCollectionId',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !result?.has_share_case_rights,\n label: t`From data collection`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'fromDataCollectionId',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, dataCollectionOptionsQuery.isLoading, dataCollectionOptionsQuery.options, result?.has_share_case_rights, t]);\n\n\n return (\n <PageContainer\n fullWidth\n showBreadcrumbs\n testIdAttributes={TestIdUtil.createAttributes('UserEffectiveRightsTesterAdminPage')}\n title={t`Users effective rights`}\n >\n <Box\n sx={{\n height: '100%',\n position: 'relative',\n }}\n >\n <ResponseHandler\n inlineSpinner\n loadables={loadables}\n >\n <Container maxWidth={'md'}>\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Typography\n component={'h2'}\n variant={'h4'}\n >\n {t('Testing effective rights for user: {{userEmail}}', { userEmail: userQuery.data?.email })}\n </Typography>\n <Typography>\n {t('Organization: {{organizationName}}', { organizationName: organizationMapQuery.map.get(userQuery.data?.organization_id)?.name })}\n </Typography>\n <Typography>\n {t('Roles: {{roles}}', { roles: userQuery.data?.roles.join(', ') })}\n </Typography>\n </Box>\n <GenericForm<FormFields>\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(noop)}\n schema={schema}\n />\n {result !== null && typeof result === 'object' && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Typography variant={'h6'}>\n {t('Effective rights result:')}\n </Typography>\n {!formValues.fromDataCollectionId && result.has_share_case_rights && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Typography\n sx={{\n fontStyle: 'italic',\n }}\n >\n {t`Note: The user has share case rights that may affect the result when a 'From data collection' is selected.`}\n </Typography>\n </Box>\n )}\n <Typography>\n {t('Add case: {{addCase}}', { addCase: result?.add_case ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Remove case: {{removeCase}}', { removeCase: result?.remove_case ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Add case set: {{addCaseSet}}', { addCaseSet: result?.add_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Remove case set: {{removeCaseSet}}', { removeCaseSet: result?.remove_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Read case set: {{readCaseSet}}', { readCaseSet: result?.read_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Write case set: {{writeCaseSet}}', { writeCaseSet: result?.write_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Read case properties: {{readSomeProperties}}', { readSomeProperties: result?.read_col_ids?.length > 0 ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Write case properties: {{writeSomeProperties}}', { writeSomeProperties: result?.write_col_ids?.length > 0 ? t`Yes` : t`No` })}\n </Typography>\n\n </Box>\n )}\n </Container>\n </ResponseHandler>\n </Box>\n </PageContainer>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/pages/UserEffectiveRightsTesterAdminPage/UserEffectiveRightsTesterAdminPage.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport {\n Box,\n Container,\n Typography,\n} from '@mui/material';\nimport {\n useId,\n useMemo,\n} from 'react';\nimport { useParams } from 'react-router-dom';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport type { Resolver } from 'react-hook-form';\nimport {\n useForm,\n useWatch,\n} from 'react-hook-form';\nimport {\n object,\n string,\n} from 'yup';\nimport noop from 'lodash/noop';\nimport type { CaseDbUser } from '@gen-epix/api-casedb';\nimport { CaseDbOrganizationApi } from '@gen-epix/api-casedb';\nimport { COMMON_QUERY_KEY } from '@gen-epix/ui-client-common/constants/query';\nimport { PageContainer } from '@gen-epix/ui-client-common/components/ui/PageContainer';\nimport { ResponseHandler } from '@gen-epix/ui-client-common/components/ui/ResponseHandler';\nimport { useItemQuery } from '@gen-epix/ui-client-common/hooks/useItemQuery';\nimport { useOrganizationMapQuery } from '@gen-epix/ui-client-common/dataHooks/useOrganizationsQuery';\nimport { TestIdUtil } from '@gen-epix/ui-core/utils/TestIdUtil';\nimport { useArray } from '@gen-epix/ui-core/hooks/useArray';\nimport { GenericForm } from '@gen-epix/ui-core-form/components/helpers/GenericForm';\nimport type { FormFieldDefinition } from '@gen-epix/ui-core-form/models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '@gen-epix/ui-core-form/models/form';\n\nimport { useColSetMembersQuery } from '../../dataHooks/useColSetMembersQuery';\nimport { useCaseTypeSetMembersQuery } from '../../dataHooks/useCaseTypeSetMembersQuery';\nimport { useDataCollectionOptionsQuery } from '../../dataHooks/useDataCollectionsQuery';\nimport { useOrganizationAccessCasePoliciesQuery } from '../../dataHooks/useOrganizationAccessCasePoliciesQuery';\nimport { useOrganizationShareCasePoliciesQuery } from '../../dataHooks/useOrganizationShareCasePoliciesQuery';\nimport { useUserAccessCasePoliciesQuery } from '../../dataHooks/useUserAccessCasePoliciesQuery';\nimport { useUserShareCasePoliciesQuery } from '../../dataHooks/useUserShareCasePoliciesQuery';\nimport { useCaseTypeOptionsQuery } from '../../dataHooks/useCaseTypesQuery';\nimport type { UserEffectiveRight } from '../../models/caseAccess';\nimport { EffectiveRightsUtil } from '../../utils/EffectiveRightsUtil';\n\n\ntype FormFields = {\n caseTypeId: string;\n dataCollectionId: string;\n fromDataCollectionId: string;\n};\n\ntype Result = {\n add_case: boolean;\n add_case_set: boolean;\n has_share_case_rights?: boolean;\n read_case_set: boolean;\n read_col_ids: string[];\n remove_case: boolean;\n remove_case_set: boolean;\n write_case_set: boolean;\n write_col_ids: string[];\n};\n\nexport const UserEffectiveRightsTesterAdminPage = () => {\n const { t } = useTranslation();\n const formId = useId();\n\n const { userId } = useParams();\n\n const userQuery = useItemQuery<CaseDbUser>({\n baseQueryKey: COMMON_QUERY_KEY.USERS,\n itemId: userId,\n useQueryOptions: {\n queryFn: async ({ signal }) => {\n const response = await CaseDbOrganizationApi.getInstance().usersGetOne(userId, { signal });\n return response.data;\n },\n },\n });\n\n const colSetMembersQuery = useColSetMembersQuery();\n const caseTypeOptionsQuery = useCaseTypeOptionsQuery();\n const organizationMapQuery = useOrganizationMapQuery();\n const caseTypeSetMembersQuery = useCaseTypeSetMembersQuery();\n const dataCollectionOptionsQuery = useDataCollectionOptionsQuery();\n const organizationAccessCasePoliciesQuery = useOrganizationAccessCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.organization_id === userQuery.data?.organization_id));\n const organizationShareCasePoliciesQuery = useOrganizationShareCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.organization_id === userQuery.data?.organization_id));\n const userAccessCasePoliciesQuery = useUserAccessCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.user_id === userQuery.data?.id));\n const userShareCasePoliciesQuery = useUserShareCasePoliciesQuery(policies => policies.filter(policy => policy.is_active && policy.user_id === userQuery.data?.id));\n\n const loadables = useArray([\n userQuery,\n colSetMembersQuery,\n caseTypeOptionsQuery,\n caseTypeSetMembersQuery,\n dataCollectionOptionsQuery,\n organizationAccessCasePoliciesQuery,\n organizationShareCasePoliciesQuery,\n userAccessCasePoliciesQuery,\n userShareCasePoliciesQuery,\n organizationMapQuery,\n ]);\n\n\n const effectiveRights = useMemo<UserEffectiveRight[]>(() => {\n const { data: organizationAccessCasePolicies } = organizationAccessCasePoliciesQuery;\n const { data: organizationShareCasePolicies } = organizationShareCasePoliciesQuery;\n const { data: userAccessCasePolicies } = userAccessCasePoliciesQuery;\n const { data: userShareCasePolicies } = userShareCasePoliciesQuery;\n const { data: caseTypeSetMembers } = caseTypeSetMembersQuery;\n const { data: colSetMembers } = colSetMembersQuery;\n\n return EffectiveRightsUtil.assembleUserEffectiveRights({\n caseTypeSetMembers,\n colSetMembers,\n organizationAccessCasePolicies,\n organizationShareCasePolicies,\n user: userQuery.data,\n userAccessCasePolicies,\n userShareCasePolicies,\n });\n\n }, [colSetMembersQuery, caseTypeSetMembersQuery, organizationAccessCasePoliciesQuery, organizationShareCasePoliciesQuery, userAccessCasePoliciesQuery, userQuery.data, userShareCasePoliciesQuery]);\n\n const schema = useMemo(() => object<FormFields>().shape({\n caseTypeId: string().uuid4().required(),\n dataCollectionId: string().uuid4().required(),\n fromDataCollectionId: string().uuid4().nullable().notRequired(),\n }), []);\n\n const formMethods = useForm<FormFields>({\n resolver: yupResolver(schema) as unknown as Resolver<FormFields>,\n values: {\n caseTypeId: null,\n dataCollectionId: null,\n fromDataCollectionId: null,\n },\n });\n const { control, handleSubmit } = formMethods;\n const formValues = useWatch({ control });\n\n const result = useMemo<Result>(() => {\n if (!formValues.caseTypeId || !formValues.dataCollectionId) {\n return null;\n }\n const effectiveRight = effectiveRights.find(right => {\n return right.data_collection_id === formValues.dataCollectionId && right.categorized_case_type_ids.some(x => x === formValues.caseTypeId);\n });\n\n const shareCaseRight = formValues.fromDataCollectionId && effectiveRight?.effective_share_case_rights?.find(shareRight => {\n return shareRight.categorized_case_type_ids.some(x => x === formValues.caseTypeId) && shareRight.from_data_collection_id === formValues.fromDataCollectionId;\n });\n\n return {\n add_case: effectiveRight?.add_case || shareCaseRight?.add_case,\n add_case_set: effectiveRight?.add_case_set || shareCaseRight?.add_case_set,\n has_share_case_rights: effectiveRight?.effective_share_case_rights.length > 0,\n read_case_set: effectiveRight?.read_case_set,\n read_col_ids: effectiveRight?.categorized_read_col_ids,\n remove_case: effectiveRight?.remove_case || shareCaseRight?.remove_case,\n remove_case_set: effectiveRight?.remove_case_set || shareCaseRight?.remove_case_set,\n write_case_set: effectiveRight?.write_case_set,\n write_col_ids: effectiveRight?.categorized_write_col_ids,\n } satisfies Result;\n }, [effectiveRights, formValues.caseTypeId, formValues.dataCollectionId, formValues.fromDataCollectionId]);\n\n const formFieldDefinitions = useMemo<FormFieldDefinition<FormFields>[]>(() => {\n return [\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Case type`,\n loading: caseTypeOptionsQuery.isLoading,\n name: 'caseTypeId',\n options: caseTypeOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n label: t`Data collection`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'dataCollectionId',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n {\n definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE,\n disabled: !result?.has_share_case_rights,\n label: t`From data collection`,\n loading: dataCollectionOptionsQuery.isLoading,\n name: 'fromDataCollectionId',\n options: dataCollectionOptionsQuery.options,\n } as const satisfies FormFieldDefinition<FormFields>,\n ] as const;\n }, [caseTypeOptionsQuery.isLoading, caseTypeOptionsQuery.options, dataCollectionOptionsQuery.isLoading, dataCollectionOptionsQuery.options, result?.has_share_case_rights, t]);\n\n\n return (\n <PageContainer\n fullWidth\n showBreadcrumbs\n testIdAttributes={TestIdUtil.createAttributes('UserEffectiveRightsTesterAdminPage')}\n title={t`Users effective rights`}\n >\n <Box\n sx={{\n height: '100%',\n position: 'relative',\n }}\n >\n <ResponseHandler\n inlineSpinner\n loadables={loadables}\n >\n <Container maxWidth={'md'}>\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Typography\n component={'h2'}\n variant={'h4'}\n >\n {t('Testing effective rights for user: {{userEmail}}', { userEmail: userQuery.data?.email })}\n </Typography>\n <Typography>\n {t('Organization: {{organizationName}}', { organizationName: organizationMapQuery.map.get(userQuery.data?.organization_id)?.name })}\n </Typography>\n <Typography>\n {t('Roles: {{roles}}', { roles: userQuery.data?.roles.join(', ') })}\n </Typography>\n </Box>\n <GenericForm<FormFields>\n formFieldDefinitions={formFieldDefinitions}\n formId={formId}\n formMethods={formMethods}\n onSubmit={handleSubmit(noop)}\n schema={schema}\n />\n {result !== null && typeof result === 'object' && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Typography variant={'h6'}>\n {t('Effective rights result:')}\n </Typography>\n {!formValues.fromDataCollectionId && result.has_share_case_rights && (\n <Box\n sx={{\n marginY: 2,\n }}\n >\n <Typography\n sx={{\n fontStyle: 'italic',\n }}\n >\n {t`Note: The user has share case rights that may affect the result when a 'From data collection' is selected.`}\n </Typography>\n </Box>\n )}\n <Typography>\n {t('Add case: {{addCase}}', { addCase: result?.add_case ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Remove case: {{removeCase}}', { removeCase: result?.remove_case ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Add case set: {{addCaseSet}}', { addCaseSet: result?.add_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Remove case set: {{removeCaseSet}}', { removeCaseSet: result?.remove_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Read case set: {{readCaseSet}}', { readCaseSet: result?.read_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Write case set: {{writeCaseSet}}', { writeCaseSet: result?.write_case_set ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Read case properties: {{readSomeProperties}}', { readSomeProperties: result?.read_col_ids?.length > 0 ? t`Yes` : t`No` })}\n </Typography>\n <Typography>\n {t('Write case properties: {{writeSomeProperties}}', { writeSomeProperties: result?.write_col_ids?.length > 0 ? t`Yes` : t`No` })}\n </Typography>\n\n </Box>\n )}\n </Container>\n </ResponseHandler>\n </Box>\n </PageContainer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAiEa,UAA2C;CACtD,IAAM,EAAE,SAAM,EAAe,GACvB,IAAS,GAAM,GAEf,EAAE,cAAW,EAAU,GAEvB,IAAY,EAAyB;EACzC,cAAc,EAAiB;EAC/B,QAAQ;EACR,iBAAiB,EACf,SAAS,OAAO,EAAE,iBAET,MADgB,EAAsB,YAAY,CAAC,CAAC,YAAY,GAAQ,EAAE,UAAO,CAAC,EAAA,CACzE,KAEpB;CACF,CAAC,GAEK,IAAqB,EAAsB,GAC3C,IAAuB,EAAwB,GAC/C,IAAuB,EAAwB,GAC/C,IAA0B,EAA2B,GACrD,IAA6B,EAA8B,GAC3D,IAAsC,GAAuC,MAAY,EAAS,QAAO,MAAU,EAAO,aAAa,EAAO,oBAAoB,EAAU,MAAM,eAAe,CAAC,GAClM,IAAqC,GAAsC,MAAY,EAAS,QAAO,MAAU,EAAO,aAAa,EAAO,oBAAoB,EAAU,MAAM,eAAe,CAAC,GAChM,IAA8B,GAA+B,MAAY,EAAS,QAAO,MAAU,EAAO,aAAa,EAAO,YAAY,EAAU,MAAM,EAAE,CAAC,GAC7J,IAA6B,GAA8B,MAAY,EAAS,QAAO,MAAU,EAAO,aAAa,EAAO,YAAY,EAAU,MAAM,EAAE,CAAC,GAE3J,IAAY,EAAS;EACzB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,GAGK,IAAkB,QAAoC;EAC1D,IAAM,EAAE,MAAM,MAAmC,GAC3C,EAAE,MAAM,MAAkC,GAC1C,EAAE,MAAM,MAA2B,GACnC,EAAE,MAAM,MAA0B,GAClC,EAAE,MAAM,MAAuB,GAC/B,EAAE,MAAM,MAAkB;EAEhC,OAAO,EAAoB,4BAA4B;GACrD;GACA;GACA;GACA;GACA,MAAM,EAAU;GAChB;GACA;EACF,CAAC;CAEH,GAAG;EAAC;EAAoB;EAAyB;EAAqC;EAAoC;EAA6B,EAAU;EAAM;CAA0B,CAAC,GAE5L,IAAS,QAAc,EAAmB,CAAC,CAAC,MAAM;EACtD,YAAY,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;EACtC,kBAAkB,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;EAC5C,sBAAsB,EAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY;CAChE,CAAC,GAAG,CAAC,CAAC,GAEA,IAAc,EAAoB;EACtC,UAAU,EAAY,CAAM;EAC5B,QAAQ;GACN,YAAY;GACZ,kBAAkB;GAClB,sBAAsB;EACxB;CACF,CAAC,GACK,EAAE,YAAS,oBAAiB,GAC5B,IAAa,EAAS,EAAE,WAAQ,CAAC,GAEjC,IAAS,QAAsB;EACnC,IAAI,CAAC,EAAW,cAAc,CAAC,EAAW,kBACxC,OAAO;EAET,IAAM,IAAiB,EAAgB,MAAK,MACnC,EAAM,uBAAuB,EAAW,oBAAoB,EAAM,0BAA0B,MAAK,MAAK,MAAM,EAAW,UAAU,CACzI,GAEK,IAAiB,EAAW,wBAAwB,GAAgB,6BAA6B,MAAK,MACnG,EAAW,0BAA0B,MAAK,MAAK,MAAM,EAAW,UAAU,KAAK,EAAW,4BAA4B,EAAW,oBACzI;EAED,OAAO;GACL,UAAU,GAAgB,YAAY,GAAgB;GACtD,cAAc,GAAgB,gBAAgB,GAAgB;GAC9D,uBAAuB,GAAgB,4BAA4B,SAAS;GAC5E,eAAe,GAAgB;GAC/B,cAAc,GAAgB;GAC9B,aAAa,GAAgB,eAAe,GAAgB;GAC5D,iBAAiB,GAAgB,mBAAmB,GAAgB;GACpE,gBAAgB,GAAgB;GAChC,eAAe,GAAgB;EACjC;CACF,GAAG;EAAC;EAAiB,EAAW;EAAY,EAAW;EAAkB,EAAW;CAAoB,CAAC,GAEnG,KAAuB,QACpB;EACL;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAAqB;GAC9B,MAAM;GACN,SAAS,EAAqB;EAChC;EACA;GACE,YAAY,EAA2B;GACvC,OAAO,CAAC;GACR,SAAS,EAA2B;GACpC,MAAM;GACN,SAAS,EAA2B;EACtC;EACA;GACE,YAAY,EAA2B;GACvC,UAAU,CAAC,GAAQ;GACnB,OAAO,CAAC;GACR,SAAS,EAA2B;GACpC,MAAM;GACN,SAAS,EAA2B;EACtC;CACF,GACC;EAAC,EAAqB;EAAW,EAAqB;EAAS,EAA2B;EAAW,EAA2B;EAAS,GAAQ;EAAuB;CAAC,CAAC;CAG7K,OACE,kBAAC,GAAD;EACE,WAAA;EACA,iBAAA;EACA,kBAAkB,EAAW,iBAAiB,oCAAoC;EAClF,OAAO,CAAC;EAER,UAAA,kBAAC,GAAD;GACE,IAAI;IACF,QAAQ;IACR,UAAU;GACZ;GAEA,UAAA,kBAAC,GAAD;IACE,eAAA;IACW;IAEX,UAAA,kBAAC,GAAD;KAAW,UAAU;KAArB,UAAA;MACE,kBAAC,GAAD;OACE,IAAI,EACF,SAAS,EACX;OAHF,UAAA;QAKE,kBAAC,GAAD;SACE,WAAW;SACX,SAAS;SAER,UAAA,EAAE,oDAAoD,EAAE,WAAW,EAAU,MAAM,MAAM,CAAC;QACjF,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,sCAAsC,EAAE,kBAAkB,EAAqB,IAAI,IAAI,EAAU,MAAM,eAAe,CAAC,EAAE,KAAK,CAAC,EACxH,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,oBAAoB,EAAE,OAAO,EAAU,MAAM,MAAM,KAAK,IAAI,EAAE,CAAC,EACxD,CAAA;OACT;;MACL,kBAAC,GAAD;OACwB;OACd;OACK;OACb,UAAU,EAAa,EAAA,OAAI;OACnB;MACT,CAAA;MACmB,OAAO,KAAW,cAArC,KACC,kBAAC,GAAD;OACE,IAAI,EACF,SAAS,EACX;OAHF,UAAA;QAKE,kBAAC,GAAD;SAAY,SAAS;SAClB,UAAA,EAAE,0BAA0B;QACnB,CAAA;QACX,CAAC,EAAW,wBAAwB,EAAO,yBAC1C,kBAAC,GAAD;SACE,IAAI,EACF,SAAS,EACX;SAEA,UAAA,kBAAC,GAAD;UACE,IAAI,EACF,WAAW,SACb;UAEC,UAAA,CAAC;SACQ,CAAA;QACT,CAAA;QAEP,kBAAC,GAAD,EAAA,UACG,EAAE,yBAAyB,EAAE,SAAS,GAAQ,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAChE,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,+BAA+B,EAAE,YAAY,GAAQ,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC5E,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,gCAAgC,EAAE,YAAY,GAAQ,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC9E,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,sCAAsC,EAAE,eAAe,GAAQ,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC1F,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,kCAAkC,EAAE,aAAa,GAAQ,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClF,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,oCAAoC,EAAE,cAAc,GAAQ,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,EACtF,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,gDAAgD,EAAE,oBAAoB,GAAQ,cAAc,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClH,CAAA;QACZ,kBAAC,GAAD,EAAA,UACG,EAAE,kDAAkD,EAAE,qBAAqB,GAAQ,eAAe,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACtH,CAAA;OAET;;KAEE;;GACI,CAAA;EACd,CAAA;CACQ,CAAA;AAEnB"}