@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.
- package/dist/_chunks/AddCasesToEventDialog.js +98 -98
- package/dist/_chunks/AddCasesToEventDialog.js.map +1 -1
- package/dist/_chunks/CaseContentForm.js +10 -10
- package/dist/_chunks/CaseInfoDialog.js +242 -241
- package/dist/_chunks/CaseInfoDialog.js.map +1 -1
- package/dist/_chunks/CaseSetInfoDialog.js +224 -224
- package/dist/_chunks/CaseSetInfoDialog.js.map +1 -1
- package/dist/_chunks/Dashboard.js +549 -550
- package/dist/_chunks/Dashboard.js.map +1 -1
- package/dist/_chunks/FindSimilarCasesDialog.js +76 -76
- package/dist/_chunks/FindSimilarCasesDialog.js.map +1 -1
- package/dist/_chunks/LegendaItem.js.map +1 -1
- package/dist/_chunks/LineListWidget.js +138 -136
- package/dist/_chunks/LineListWidget.js.map +1 -1
- package/dist/_chunks/PanelSeparator.js +3 -3
- package/dist/_chunks/PanelSeparator.js.map +1 -1
- package/dist/_chunks/Upload.js +318 -318
- package/dist/_chunks/Upload.js.map +1 -1
- package/dist/_chunks/{chunk-BV7QT456.js → chunk-OB3PAWPO.js} +3 -3
- package/dist/_chunks/chunk-OB3PAWPO.js.map +1 -0
- package/dist/_chunks/cloneDeep.js +1 -1
- package/dist/_chunks/cloneDeep.js.map +1 -1
- package/dist/_chunks/esm.js +3 -3
- package/dist/_chunks/esm.js.map +1 -1
- package/dist/_chunks/index.module.js +1 -1
- package/dist/_chunks/index.module.js.map +1 -1
- package/dist/_chunks/react.js +1 -1
- package/dist/_chunks/react.js.map +1 -1
- package/dist/_chunks/shallow.js +2 -2
- package/dist/_chunks/shallow.js.map +1 -1
- package/dist/_chunks/vanilla.js +1 -1
- package/dist/_chunks/vanilla.js.map +1 -1
- package/dist/_chunks/yup.js +24 -24
- package/dist/_chunks/yup.js.map +1 -1
- package/dist/components/form/fields/ArrangementEditor/index.js +30 -30
- package/dist/components/ui/CreateEventDialog/index.js +40 -40
- package/dist/components/ui/CreateEventDialog/index.js.map +1 -1
- package/dist/components/ui/HistogramWidget/index.js +161 -162
- package/dist/components/ui/HistogramWidget/index.js.map +1 -1
- package/dist/components/ui/SequenceDownloadDialog/index.js +22 -22
- package/dist/locale/en.json +6 -0
- package/dist/locale/nl.json +7 -1
- package/dist/pages/CasesDetailPage/index.js +1 -1
- package/dist/pages/ColsAdminPage/index.js +1 -1
- package/dist/pages/ConceptsAdminPage/index.js +1 -1
- package/dist/pages/DimsAdminPage/index.js +1 -1
- package/dist/pages/EventsDetailPage/index.js +1 -1
- package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js +120 -86
- package/dist/pages/OrganizationAccessCasePoliciesAdminPage/index.js.map +1 -1
- package/dist/pages/RefColsAdminPage/index.js +1 -1
- package/dist/pages/RegionSetShapesAdminPage/index.js +1 -1
- package/dist/pages/RegionsAdminPage/index.js +1 -1
- package/dist/pages/UserEffectiveRightsAdminPage/index.js +1 -1
- package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js +59 -59
- package/dist/pages/UserEffectiveRightsTesterAdminPage/index.js.map +1 -1
- package/dist/routes/index.js +93 -91
- package/dist/routes/index.js.map +1 -1
- package/dist/setup/setup.js +2 -3
- package/dist/setup/setup.js.map +1 -1
- package/package.json +73 -72
- package/dist/_chunks/chunk-BV7QT456.js.map +0 -1
- package/dist/_chunks/index.esm.js +0 -1465
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
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 } =
|
|
33
|
-
baseQueryKey:
|
|
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
|
|
36
|
-
}), L =
|
|
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 =
|
|
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 =
|
|
67
|
-
caseTypeId:
|
|
68
|
-
dataCollectionId:
|
|
69
|
-
fromDataCollectionId:
|
|
70
|
-
}), []), Y =
|
|
71
|
-
resolver:
|
|
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 =
|
|
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 =
|
|
96
|
+
]), te = x(() => [
|
|
97
97
|
{
|
|
98
|
-
definition:
|
|
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:
|
|
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:
|
|
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__ */
|
|
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__ */
|
|
132
|
+
children: /* @__PURE__ */ C(v, {
|
|
133
133
|
sx: {
|
|
134
134
|
height: "100%",
|
|
135
135
|
position: "relative"
|
|
136
136
|
},
|
|
137
|
-
children: /* @__PURE__ */ T
|
|
137
|
+
children: /* @__PURE__ */ C(T, {
|
|
138
138
|
inlineSpinner: !0,
|
|
139
139
|
loadables: K,
|
|
140
|
-
children: /* @__PURE__ */
|
|
140
|
+
children: /* @__PURE__ */ w(y, {
|
|
141
141
|
maxWidth: "md",
|
|
142
142
|
children: [
|
|
143
|
-
/* @__PURE__ */
|
|
143
|
+
/* @__PURE__ */ w(v, {
|
|
144
144
|
sx: { marginY: 2 },
|
|
145
145
|
children: [
|
|
146
|
-
/* @__PURE__ */
|
|
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__ */
|
|
152
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
162
|
+
typeof $ == "object" && !!$ && /* @__PURE__ */ w(v, {
|
|
163
163
|
sx: { marginY: 2 },
|
|
164
164
|
children: [
|
|
165
|
-
/* @__PURE__ */
|
|
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__ */
|
|
169
|
+
!Q.fromDataCollectionId && $.has_share_case_rights && /* @__PURE__ */ C(v, {
|
|
170
170
|
sx: { marginY: 2 },
|
|
171
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
177
|
-
/* @__PURE__ */
|
|
178
|
-
/* @__PURE__ */
|
|
179
|
-
/* @__PURE__ */
|
|
180
|
-
/* @__PURE__ */
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
-
/* @__PURE__ */
|
|
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":"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"}
|