synapse-react-client 4.0.34 → 4.0.36
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/SWC.index.js +1 -1
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts +24 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.d.ts.map +1 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.js +49 -0
- package/dist/aridhia-queries/AridhiaKeyFactory.js.map +1 -0
- package/dist/aridhia-queries/FairFormPayload.d.ts +45 -0
- package/dist/aridhia-queries/FairFormPayload.d.ts.map +1 -0
- package/dist/aridhia-queries/FairFormPayload.js +0 -0
- package/dist/aridhia-queries/TransferType.d.ts +10 -0
- package/dist/aridhia-queries/TransferType.d.ts.map +1 -0
- package/dist/aridhia-queries/TransferType.js +0 -0
- package/dist/aridhia-queries/aridhiaTokenExchange.js +6 -6
- package/dist/aridhia-queries/index.d.ts +12 -0
- package/dist/aridhia-queries/index.d.ts.map +1 -1
- package/dist/aridhia-queries/index.js +12 -2
- package/dist/aridhia-queries/useAridhiaQuery.d.ts +37 -0
- package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -0
- package/dist/aridhia-queries/useAridhiaQuery.js +71 -0
- package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.d.ts +6 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.js +13 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetCatalogue.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetSettings.d.ts +6 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetSettings.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetSettings.js +13 -0
- package/dist/aridhia-queries/useGetAridhiaDatasetSettings.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaDictionaries.d.ts +6 -0
- package/dist/aridhia-queries/useGetAridhiaDictionaries.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaDictionaries.js +13 -0
- package/dist/aridhia-queries/useGetAridhiaDictionaries.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaRequests.d.ts +5 -4
- package/dist/aridhia-queries/useGetAridhiaRequests.d.ts.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaRequests.js +11 -18
- package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaWorkflow.d.ts +13 -0
- package/dist/aridhia-queries/useGetAridhiaWorkflow.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkflow.js +19 -0
- package/dist/aridhia-queries/useGetAridhiaWorkflow.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.d.ts +6 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.js +13 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceLocations.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.d.ts +19 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.js +17 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaceRequestForm.js.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaces.d.ts +6 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaces.d.ts.map +1 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaces.js +19 -0
- package/dist/aridhia-queries/useGetAridhiaWorkspaces.js.map +1 -0
- package/dist/aridhia-queries/useSubmitAridhiaDar.d.ts +27 -0
- package/dist/aridhia-queries/useSubmitAridhiaDar.d.ts.map +1 -0
- package/dist/aridhia-queries/useSubmitAridhiaDar.js +38 -0
- package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -0
- package/dist/assets/icons/curie-head.svg +21 -0
- package/dist/components/AccessRequirement/EntityActionsRequired.d.ts +0 -1
- package/dist/components/AccessRequirement/EntityActionsRequired.d.ts.map +1 -1
- package/dist/components/AccessRequirement/EntityActionsRequired.js +3 -6
- package/dist/components/AccessRequirement/EntityActionsRequired.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts +24 -2
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +69 -66
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +67 -56
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts +6 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js +55 -54
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/SignatureStatusStep/SignatureStatusStep.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +3 -3
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/CardContainer/CardConfiguration.d.ts +8 -0
- package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.d.ts.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.js +58 -23
- package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.d.ts.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +13 -3
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CreateTableViewWizard/TableNameForm.d.ts.map +1 -1
- package/dist/components/CreateTableViewWizard/TableNameForm.js +11 -14
- package/dist/components/CreateTableViewWizard/TableNameForm.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +55 -61
- package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -1
- package/dist/components/DataGrid/components/contextMenu.d.ts.map +1 -1
- package/dist/components/DataGrid/components/contextMenu.js +15 -15
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.d.ts +1 -5
- package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js +21 -28
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts +35 -0
- package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts.map +1 -0
- package/dist/components/DatasetHosting/DatasetDownloadButton.js +132 -0
- package/dist/components/DatasetHosting/DatasetDownloadButton.js.map +1 -0
- package/dist/components/DatasetHosting/DatasetHosting.d.ts +91 -0
- package/dist/components/DatasetHosting/DatasetHosting.d.ts.map +1 -0
- package/dist/components/DatasetHosting/DatasetHosting.js +58 -0
- package/dist/components/DatasetHosting/DatasetHosting.js.map +1 -0
- package/dist/components/DatasetHosting/index.d.ts +5 -0
- package/dist/components/DatasetHosting/index.d.ts.map +1 -0
- package/dist/components/DatasetHosting/index.js +3 -0
- package/dist/components/DownloadCart/ActionRequiredListItem.d.ts +0 -2
- package/dist/components/DownloadCart/ActionRequiredListItem.d.ts.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredListItem.js +2 -3
- package/dist/components/DownloadCart/ActionRequiredListItem.js.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.d.ts +1 -2
- package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +49 -49
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListActionsRequired.d.ts +1 -5
- package/dist/components/DownloadCart/DownloadListActionsRequired.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadListActionsRequired.js +5 -6
- package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.d.ts +0 -2
- package/dist/components/DownloadCart/RequestDownloadCard.d.ts.map +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js +28 -32
- package/dist/components/DownloadCart/RequestDownloadCard.js.map +1 -1
- package/dist/components/DownloadCart/TableQueryActionsRequired.d.ts +0 -2
- package/dist/components/DownloadCart/TableQueryActionsRequired.d.ts.map +1 -1
- package/dist/components/DownloadCart/TableQueryActionsRequired.js +7 -8
- package/dist/components/DownloadCart/TableQueryActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/index.d.ts +1 -2
- package/dist/components/DownloadCart/index.d.ts.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.d.ts +2 -1
- package/dist/components/DraggableDialog/DraggableDialog.d.ts.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js +42 -33
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.d.ts.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js +12 -6
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js +2 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/GenericCard/CardActionButtonStyleContext.d.ts +10 -0
- package/dist/components/GenericCard/CardActionButtonStyleContext.d.ts.map +1 -0
- package/dist/components/GenericCard/CardActionButtonStyleContext.js +10 -0
- package/dist/components/GenericCard/CardActionButtonStyleContext.js.map +1 -0
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +41 -41
- package/dist/components/GenericCard/GenericCardActionButton.d.ts +5 -0
- package/dist/components/GenericCard/GenericCardActionButton.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCardActionButton.js +28 -11
- package/dist/components/GenericCard/GenericCardActionButton.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +24 -0
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +205 -190
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditor.d.ts.map +1 -1
- package/dist/components/JSONArrayEditor/JSONArrayEditor.js +42 -42
- package/dist/components/JSONArrayEditor/JSONArrayEditor.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -0
- package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js +13 -12
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +5 -0
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -0
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +109 -0
- package/dist/components/QueryBuilder/QueryBuilderTypes.d.ts +39 -0
- package/dist/components/QueryBuilder/QueryBuilderTypes.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderTypes.js +11 -0
- package/dist/components/QueryBuilder/QueryBuilderTypes.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +48 -0
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +256 -0
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -0
- package/dist/components/QueryContext/QueryContext.d.ts +0 -1
- package/dist/components/QueryContext/QueryContext.d.ts.map +1 -1
- package/dist/components/QueryContext/QueryContext.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.d.ts +0 -1
- package/dist/components/QueryWrapper/QueryWrapper.d.ts.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.js +52 -53
- package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js +4 -11
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +0 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +123 -123
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +64 -55
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js +0 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- package/dist/components/ShareThisPage/ShareThisPage.js +30 -29
- package/dist/components/ShareThisPage/ShareThisPage.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.d.ts.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +15 -10
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js +29 -31
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts +2 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +118 -74
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts +3 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js +21 -21
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts +1 -0
- package/dist/components/SynapseChat/SynapseChatMessage.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js +9 -8
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +2 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js +2 -1
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.d.ts.map +1 -1
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +29 -30
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.d.ts +7 -0
- package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js +68 -48
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.d.ts.map +1 -1
- package/dist/components/TanStackTable/TanStackTableUtils.js +6 -6
- package/dist/components/TanStackTable/TanStackTableUtils.js.map +1 -1
- package/dist/components/TanStackTable/useSyncedTopScrollbar.d.ts +13 -0
- package/dist/components/TanStackTable/useSyncedTopScrollbar.d.ts.map +1 -0
- package/dist/components/TanStackTable/useSyncedTopScrollbar.js +32 -0
- package/dist/components/TanStackTable/useSyncedTopScrollbar.js.map +1 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +12 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +86 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +20 -18
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.d.ts.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +10 -13
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.d.ts.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js +43 -61
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/createdByModifiedByTooltips.d.ts +7 -0
- package/dist/components/entity/page/createdByModifiedByTooltips.d.ts.map +1 -0
- package/dist/components/entity/page/createdByModifiedByTooltips.js +36 -0
- package/dist/components/entity/page/createdByModifiedByTooltips.js.map +1 -0
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +130 -65
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +143 -140
- package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/menu/DropdownMenu.js +6 -6
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/widgets/Range.js +8 -2
- package/dist/components/widgets/Range.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +2 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js +19 -19
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +5 -5
- package/dist/index.js +161 -159
- package/dist/index.js.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +30 -26
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js +22 -22
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.d.ts +1 -0
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js +7 -1
- package/dist/mocks/msw/handlers/resetTwoFactorAuthHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js +40 -36
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/user/mock_user_profile.d.ts +1 -0
- package/dist/mocks/user/mock_user_profile.d.ts.map +1 -1
- package/dist/mocks/user/mock_user_profile.js +45 -45
- package/dist/mocks/user/mock_user_profile.js.map +1 -1
- package/dist/style/components/_all.scss +0 -1
- package/dist/style/components/_cards.scss +4 -2
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +2 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +6 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +4 -4
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts +20 -1
- package/dist/synapse-queries/dataaccess/useEDuc.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +75 -49
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/index.js +190 -188
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +2 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js +20 -19
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -4
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.d.ts +17 -0
- package/dist/utils/functions/RegularExpressions.d.ts.map +1 -1
- package/dist/utils/functions/RegularExpressions.js +11 -4
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +19 -3
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/hooks/useIsHydrated.d.ts +9 -0
- package/dist/utils/hooks/useIsHydrated.d.ts.map +1 -0
- package/dist/utils/hooks/useIsHydrated.js +10 -0
- package/dist/utils/hooks/useIsHydrated.js.map +1 -0
- package/dist/utils/index.js +16 -16
- package/dist/utils/types/IsType.d.ts +4 -1
- package/dist/utils/types/IsType.d.ts.map +1 -1
- package/dist/utils/types/IsType.js +4 -4
- package/dist/utils/types/IsType.js.map +1 -1
- package/dist/utils/types/index.js +2 -2
- package/package.json +7 -7
- package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +0 -12
- package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +0 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js +0 -25
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +0 -1
- package/dist/style/components/_annotations.scss +0 -110
|
@@ -9,22 +9,15 @@ import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
|
9
9
|
import { ErrorBoundary as u } from "react-error-boundary";
|
|
10
10
|
//#region src/components/QueryWrapperErrorBoundary.tsx
|
|
11
11
|
function d({ children: d }) {
|
|
12
|
-
let { getCurrentQueryRequest: f
|
|
12
|
+
let { getCurrentQueryRequest: f } = r(), { entityId: p } = s(() => f(), [f]), { isAuthenticated: m } = t();
|
|
13
13
|
return /* @__PURE__ */ c(u, {
|
|
14
|
-
FallbackComponent: o((t) => t.error instanceof n && t.error.status === 403 &&
|
|
14
|
+
FallbackComponent: o((t) => t.error instanceof n && t.error.status === 403 && m ? /* @__PURE__ */ c("div", {
|
|
15
15
|
className: "ErrorBannerWrapper",
|
|
16
|
-
children: /* @__PURE__ */ c(i, {
|
|
17
|
-
entityId: m,
|
|
18
|
-
onViewSharingSettingsClicked: p
|
|
19
|
-
})
|
|
16
|
+
children: /* @__PURE__ */ c(i, { entityId: p })
|
|
20
17
|
}) : /* @__PURE__ */ l("div", {
|
|
21
18
|
className: "ErrorBannerWrapper",
|
|
22
19
|
children: [/* @__PURE__ */ c(a, { resetErrorBoundary: t.resetErrorBoundary }), /* @__PURE__ */ c(e, { ...t })]
|
|
23
|
-
}), [
|
|
24
|
-
m,
|
|
25
|
-
h,
|
|
26
|
-
p
|
|
27
|
-
]),
|
|
20
|
+
}), [p, m]),
|
|
28
21
|
children: d
|
|
29
22
|
});
|
|
30
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryWrapperErrorBoundary.js","names":[],"sources":["../../src/components/QueryWrapperErrorBoundary.tsx"],"sourcesContent":["import { SynapseClientError, useSynapseContext } from '@/utils'\nimport { PropsWithChildren, useCallback, useMemo } from 'react'\nimport {\n ErrorBoundary,\n ErrorBoundaryPropsWithComponent,\n} from 'react-error-boundary'\nimport { EntityActionsRequired } from './AccessRequirement/EntityActionsRequired'\nimport { ErrorBanner } from './error/ErrorBanner'\nimport { useQueryContext } from './QueryContext/QueryContext'\nimport SqlEditor from './SynapseTable/SqlEditor'\n\n/**\n * Error boundary that automatically pulls the error from QueryContext. If 403, shows entity actions required\n */\nexport function QueryWrapperErrorBoundary({\n children,\n}: PropsWithChildren<Record<never, never>>) {\n const { getCurrentQueryRequest
|
|
1
|
+
{"version":3,"file":"QueryWrapperErrorBoundary.js","names":[],"sources":["../../src/components/QueryWrapperErrorBoundary.tsx"],"sourcesContent":["import { SynapseClientError, useSynapseContext } from '@/utils'\nimport { PropsWithChildren, useCallback, useMemo } from 'react'\nimport {\n ErrorBoundary,\n ErrorBoundaryPropsWithComponent,\n} from 'react-error-boundary'\nimport { EntityActionsRequired } from './AccessRequirement/EntityActionsRequired'\nimport { ErrorBanner } from './error/ErrorBanner'\nimport { useQueryContext } from './QueryContext/QueryContext'\nimport SqlEditor from './SynapseTable/SqlEditor'\n\n/**\n * Error boundary that automatically pulls the error from QueryContext. If 403, shows entity actions required\n */\nexport function QueryWrapperErrorBoundary({\n children,\n}: PropsWithChildren<Record<never, never>>) {\n const { getCurrentQueryRequest } = useQueryContext()\n const { entityId } = useMemo(\n () => getCurrentQueryRequest(),\n [getCurrentQueryRequest],\n )\n const { isAuthenticated } = useSynapseContext()\n\n const FallbackComponent: ErrorBoundaryPropsWithComponent['FallbackComponent'] =\n useCallback(\n props => {\n if (\n props.error instanceof SynapseClientError &&\n props.error.status === 403 &&\n isAuthenticated\n ) {\n return (\n <div className={`ErrorBannerWrapper`}>\n <EntityActionsRequired entityId={entityId} />\n </div>\n )\n }\n return (\n <div className={`ErrorBannerWrapper`}>\n <SqlEditor resetErrorBoundary={props.resetErrorBoundary} />\n <ErrorBanner {...props} />\n </div>\n )\n },\n [entityId, isAuthenticated],\n )\n\n return (\n <ErrorBoundary FallbackComponent={FallbackComponent}>\n {children}\n </ErrorBoundary>\n )\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,EAA0B,EACxC,eAC0C;CAC1C,IAAM,EAAE,8BAA2B,EAAgB,GAC7C,EAAE,gBAAa,QACb,EAAuB,GAC7B,CAAC,CAAsB,CACzB,GACM,EAAE,uBAAoB,EAAkB;CA0B9C,OACE,kBAAC,GAAD;EAAkC,mBAxBlC,GACE,MAEI,EAAM,iBAAiB,KACvB,EAAM,MAAM,WAAW,OACvB,IAGE,kBAAC,OAAD;GAAK,WAAW;aACd,kBAAC,GAAD,EAAiC,YAAW,CAAA;EACzC,CAAA,IAIP,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACE,kBAAC,GAAD,EAAW,oBAAoB,EAAM,mBAAqB,CAAA,GAC1D,kBAAC,GAAD,EAAa,GAAI,EAAQ,CAAA,CACtB;MAGT,CAAC,GAAU,CAAe,CAIM;EAC/B;CACY,CAAA;AAEnB"}
|
|
@@ -35,7 +35,6 @@ type QueryWrapperPlotNavOwnProps = {
|
|
|
35
35
|
defaultColumn?: string;
|
|
36
36
|
defaultShowSearchBox?: boolean;
|
|
37
37
|
lockedColumn?: QueryWrapperProps['lockedColumn'];
|
|
38
|
-
onViewSharingSettingsClicked?: (benefactorId: string) => void;
|
|
39
38
|
initialLimit?: number;
|
|
40
39
|
hideTopLevelControls?: boolean;
|
|
41
40
|
} & Omit<TopLevelControlsProps, 'entityId'> & Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> & Pick<QueryWrapperProps, 'isRowSelectionVisible' | 'rowSelectionPrimaryKey' | 'isRowSelectionUIFloating' | 'fileIdColumnName' | 'fileNameColumnName' | 'fileVersionColumnName'> & Pick<QueryVisualizationWrapperProps, 'defaultShowPlots' | 'visibleColumnCount' | 'hiddenColumns' | 'columnAliases' | 'renderFacetValue' | 'rgbIndex' | 'showLastUpdatedOn' | 'noContentPlaceholderType' | 'unitDescription' | 'additionalFiltersSessionStorageKey' | 'helpConfiguration' | 'hideCopyToClipboard' | 'hideSearchBarControl' | 'hideVisualizationsControl' | 'enabledExternalAnalysisPlatforms' | 'lockTextMatchesQueryFilterPill'> & Pick<QueryContextType, 'combineRangeFacetConfig'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAiBlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAItE,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAGL,8BAA8B,EAC/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAgB,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAiB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAyB,EACvB,qBAAqB,EACrB,aAAa,EACd,MAAM,mDAAmD,CAAA;AAG1D,OAAuB,EACrB,mBAAmB,EACpB,MAAM,qCAAqC,CAAA;AAC5C,OAA4B,EAC1B,wBAAwB,EACzB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAIxE,eAAO,MAAM,0BAA0B,EAAE,MAAgC,CAAA;AACzE,eAAO,MAAM,2BAA2B,EAAE,MAA+B,CAAA;AAEzE,eAAO,MAAM,qBAAqB,EAAE,MAA0B,CAAA;AAE9D,KAAK,2BAA2B,GAAG;IACjC,2HAA2H;IAC3H,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iLAAiL;IACjL,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mFAAmF;IACnF,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,2GAA2G;IAC3G,yBAAyB,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,yBAAyB,CAAA;IAC9C,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,mBAAmB,CAAC,EAAE,IAAI,CACxB,aAAa,EACb,cAAc,GAAG,2BAA2B,CAC7C,CAAA;IACD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,4BAA4B,CAAC,EAAE,wBAAwB,CAAC,8BAA8B,CAAC,CAAA;IACvF,WAAW,CAAC,EAAE,4BAA4B,EAAE,CAAA;IAC5C,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAA;IAChD,
|
|
1
|
+
{"version":3,"file":"QueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"sourcesContent":["import { QueryOrDeprecatedSearchParams } from '@/components/CardContainerLogic/CardContainerLogic'\nimport AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { useGetEntity } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdAndVersionFromSqlStatement,\n} from '@/utils/functions'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useQuery } from '@tanstack/react-query'\nimport { useAtomValue } from 'jotai'\nimport { Suspense, useMemo, useState } from 'react'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport { SynapseErrorBoundary } from '../error'\nimport FullTextSearch from '../FullTextSearch/FullTextSearch'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { QueryWrapperPlotNavCustomPlotParams } from '../Plot/SynapsePlot'\nimport { QueryContextType, useQueryContext } from '../QueryContext'\nimport {\n QueryVisualizationContextConsumer,\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper, QueryWrapperProps } from '../QueryWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport SearchV2, { SearchV2Props } from '../SynapseTable/SearchV2'\nimport SqlEditor from '../SynapseTable/SqlEditor'\nimport TopLevelControls, {\n TopLevelControlsProps,\n CustomControl,\n} from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { CustomControls } from '../SynapseTable/CustomControls/CustomControls'\nimport TotalQueryResults from '../TotalQueryResults'\nimport PlotsContainer, {\n PlotsContainerProps,\n} from '../widgets/facet-nav/PlotsContainer'\nimport FacetFilterControls, {\n FacetFilterControlsProps,\n} from '../widgets/query-filter/FacetFilterControls'\nimport { QueryWrapperSynapsePlotProps } from './QueryWrapperSynapsePlot'\nimport { RowSetView } from './RowSetView'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\n\nexport const QUERY_FILTERS_EXPANDED_CSS: string = 'isShowingFacetFilters'\nexport const QUERY_FILTERS_COLLAPSED_CSS: string = 'isHidingFacetFilters'\n\nexport const HAS_SELECTED_ROWS_CSS: string = 'hasSelectedRows'\n\ntype QueryWrapperPlotNavOwnProps = {\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n /** Set to true when you want the query to be saved in the URL search parameters. If you are controlling the view (such as in PortalSearch), you'll want to set this to false */\n shouldDeepLink?: boolean\n /** If onQueryChange is set, the callback will be invoked when the Query changes */\n onQueryChange?: (newQueryJson: string) => void\n /** If onQueryResultBundleChange is set, the callback will be invoked when the QueryResultBundle changes */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n /** If initQueryJson is set, it will be the Query used in the initial QueryBundleRequest */\n initQueryJson?: string\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n searchConfiguration?: Omit<\n SearchV2Props,\n 'queryContext' | 'queryVisualizationContext'\n >\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n customPlots?: QueryWrapperSynapsePlotProps[]\n customControls?: CustomControl[]\n defaultColumn?: string\n defaultShowSearchBox?: boolean\n lockedColumn?: QueryWrapperProps['lockedColumn']\n onViewSharingSettingsClicked?: (benefactorId: string) => void\n initialLimit?: number\n hideTopLevelControls?: boolean\n} & Omit<TopLevelControlsProps, 'entityId'> &\n Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> &\n Pick<\n QueryWrapperProps,\n | 'isRowSelectionVisible'\n | 'rowSelectionPrimaryKey'\n | 'isRowSelectionUIFloating'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n > &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'renderFacetValue'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'additionalFiltersSessionStorageKey'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideSearchBarControl'\n | 'hideVisualizationsControl'\n | 'enabledExternalAnalysisPlatforms'\n | 'lockTextMatchesQueryFilterPill'\n > &\n Pick<QueryContextType, 'combineRangeFacetConfig'>\n\nexport type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams &\n PlotsContainerProps &\n QueryWrapperPlotNavOwnProps\n\nexport type QueryWrapperPlotNavContentsProps = Pick<\n QueryWrapperPlotNavProps,\n | 'tableConfiguration'\n | 'name'\n | 'cardConfiguration'\n | 'facetsToPlot'\n | 'availableFacets'\n | 'initialExpandedFacetControls'\n | 'hideDownload'\n | 'hideQueryCount'\n | 'hideSqlEditorControl'\n | 'hideVisualizationsControl'\n | 'searchConfiguration'\n | 'enabledExternalAnalysisPlatforms'\n | 'cavaticaConnectAccountURL'\n | 'customControls'\n | 'customPlots'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n | 'initialLimit'\n | 'initialPlotTypeByFacetColumnName'\n | 'hideTopLevelControls'\n> & {\n isFullTextSearchEnabled: boolean\n remount?: () => void\n}\n\nexport function QueryWrapperPlotNavContents(\n props: QueryWrapperPlotNavContentsProps,\n) {\n const {\n tableConfiguration,\n name,\n cardConfiguration,\n facetsToPlot,\n availableFacets,\n initialExpandedFacetControls,\n hideDownload,\n hideQueryCount,\n hideSqlEditorControl,\n hideVisualizationsControl,\n searchConfiguration,\n cavaticaConnectAccountURL,\n customControls,\n remount = () => {},\n isFullTextSearchEnabled,\n customPlots,\n initialLimit,\n initialPlotTypeByFacetColumnName,\n hideTopLevelControls,\n } = props\n const queryContext = useQueryContext()\n const [showExportMetadata, setShowExportMetadata] = useState(false)\n const { hasFacetedSelectColumn: isFaceted, queryMetadataQueryOptions } =\n queryContext\n const { isLoading: isLoadingQueryMetadata } = useQuery(\n queryMetadataQueryOptions,\n )\n\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const currentQueryRequest = queryContext.currentQueryRequest\n\n const hasFacetsOrFilters =\n (currentQueryRequest?.query.selectedFacets !== undefined &&\n currentQueryRequest.query.selectedFacets.length > 0) ||\n (currentQueryRequest?.query.additionalFilters !== undefined &&\n currentQueryRequest?.query.additionalFilters.length > 0)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n return (\n <QueryVisualizationContextConsumer>\n {queryVisualizationContext => {\n if (queryVisualizationContext === undefined) {\n throw new Error(\n 'No queryVisualizationContext found when using QueryVisualizationContextConsumer',\n )\n }\n\n return (\n <Box\n className={`QueryWrapperPlotNav ${\n queryVisualizationContext.showFacetFilter\n ? QUERY_FILTERS_EXPANDED_CSS\n : QUERY_FILTERS_COLLAPSED_CSS\n } ${isRowSelectionVisible ? HAS_SELECTED_ROWS_CSS : ''} ${\n hideTopLevelControls ? 'isHidingTopLevelControls' : ''\n }`}\n sx={{\n '*': {\n cursor: isLoadingQueryMetadata ? 'wait' : undefined,\n },\n }}\n >\n <QueryWrapperErrorBoundary>\n {isFullTextSearchEnabled ? (\n <FullTextSearch ftsConfig={searchConfiguration?.ftsConfig} />\n ) : (\n <SearchV2\n {...searchConfiguration}\n queryContext={queryContext}\n queryVisualizationContext={queryVisualizationContext}\n />\n )}\n <SqlEditor />\n {queryVisualizationContext.showDownloadConfirmation && (\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() =>\n queryVisualizationContext.setShowDownloadConfirmation(false)\n }\n />\n )}\n {!hideTopLevelControls && (\n <SynapseErrorBoundary>\n <TopLevelControls\n showColumnSelection={tableConfiguration !== undefined}\n name={name}\n hideDownload={hideDownload}\n hideQueryCount={hideQueryCount}\n hideFacetFilterControl={!isFaceted}\n hideVisualizationsControl={\n !isFaceted || hideVisualizationsControl\n }\n hideSqlEditorControl={hideSqlEditorControl}\n cavaticaConnectAccountURL={cavaticaConnectAccountURL}\n remount={remount}\n customControls={customControls}\n />\n </SynapseErrorBoundary>\n )}\n {isFaceted && (\n <>\n <FacetFilterControls\n availableFacets={availableFacets}\n initialExpandedFacetControls={initialExpandedFacetControls}\n />\n </>\n )}\n {/* Isolated Suspense so that metadata loading does not hide the table */}\n <Suspense fallback={null}>\n <TotalQueryResults\n frontText={''}\n endText={hasFacetsOrFilters ? 'filtered by' : ''}\n hideIfUnfiltered={true}\n />\n </Suspense>\n <CustomControls\n customControls={customControls}\n remount={remount}\n />\n <PlotsContainer\n facetsToPlot={facetsToPlot}\n customPlots={customPlots}\n initialPlotTypeByFacetColumnName={\n initialPlotTypeByFacetColumnName\n }\n />\n <RowSetView\n tableConfiguration={tableConfiguration}\n hideDownload={hideDownload}\n cardConfiguration={cardConfiguration}\n initialLimit={initialLimit}\n />\n {showExportMetadata && (\n <ModalDownload\n getLastQueryRequest={queryContext?.getCurrentQueryRequest}\n onClose={() => setShowExportMetadata(false)}\n />\n )}\n </QueryWrapperErrorBoundary>\n </Box>\n )\n }}\n </QueryVisualizationContextConsumer>\n )\n}\n\nexport default function QueryWrapperPlotNav(props: QueryWrapperPlotNavProps) {\n const {\n sql: deprecatedSql,\n tableConfiguration,\n isInfinite = !tableConfiguration,\n limit = DEFAULT_PAGE_SIZE,\n showLastUpdatedOn,\n unitDescription,\n additionalFiltersSessionStorageKey,\n helpConfiguration,\n customPlots,\n enabledExternalAnalysisPlatforms,\n } = props\n\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const { entityId, versionNumber } =\n parseEntityIdAndVersionFromSqlStatement(sql)\n\n const query: Query = useMemo(() => {\n if (props.query) {\n // use query if set\n return props.query\n } else if (props.initQueryJson) {\n // Otherwise use initQueryJson\n return JSON.parse(props.initQueryJson) as Query\n } else {\n // use the deprecated sql, searchParams, and sqlOperator\n const additionalFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n return {\n sql: deprecatedSql!,\n additionalFilters,\n limit: limit,\n offset: 0,\n }\n }\n }, [\n props.query,\n props.initQueryJson,\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n deprecatedSql,\n limit,\n ])\n\n const [componentKey, setComponentKey] = useState(1)\n const remount = () => {\n setComponentKey(componentKey + 1)\n }\n\n const { data: entity } = useGetEntity(entityId, versionNumber)\n const initQueryRequest: QueryBundleRequest = {\n entityId: entityId ?? '',\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n query,\n }\n const isFullTextSearchEnabled =\n (entity && isTable(entity) && entity.isSearchEnabled) ?? false\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = `${JSON.stringify(initQueryRequest)}-${componentKey}`\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n key={queryWrapperKey}\n isInfinite={isInfinite}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n renderFacetValue={props.renderFacetValue}\n dataUseModifiersColumnName={\n props.cardConfiguration?.genericCardSchema\n ?.dataUseModifiersColumnName\n }\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n defaultShowSearchBar={\n (props.defaultShowSearchBox || isFullTextSearchEnabled) &&\n !props.hideSearchBarControl\n }\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n hideSearchBarControl={props.hideSearchBarControl}\n showLastUpdatedOn={showLastUpdatedOn}\n noContentPlaceholderType={NoContentPlaceholderType.INTERACTIVE}\n hasCustomPlots={Array.isArray(customPlots) && customPlots.length > 0}\n enabledExternalAnalysisPlatforms={enabledExternalAnalysisPlatforms}\n >\n <QueryWrapperPlotNavContents\n {...props}\n isFullTextSearchEnabled={isFullTextSearchEnabled}\n remount={remount}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </QueryWrapper>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/QueryWrapperPlotNav/QueryWrapperPlotNav.tsx"],"sourcesContent":["import { QueryOrDeprecatedSearchParams } from '@/components/CardContainerLogic/CardContainerLogic'\nimport AddToDownloadListConfirmationAlert from '@/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert'\nimport { useGetAddToDownloadListRequestForCurrentQuery } from '@/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery'\nimport { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { useGetEntity } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport {\n getAdditionalFilters,\n parseEntityIdAndVersionFromSqlStatement,\n} from '@/utils/functions'\nimport { isTable } from '@/utils/functions/EntityTypeUtils'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Box } from '@mui/material'\nimport { Query, QueryBundleRequest } from '@sage-bionetworks/synapse-types'\nimport { useQuery } from '@tanstack/react-query'\nimport { useAtomValue } from 'jotai'\nimport { Suspense, useMemo, useState } from 'react'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport { SynapseErrorBoundary } from '../error'\nimport FullTextSearch from '../FullTextSearch/FullTextSearch'\nimport ModalDownload from '../ModalDownload/ModalDownload'\nimport { QueryWrapperPlotNavCustomPlotParams } from '../Plot/SynapsePlot'\nimport { QueryContextType, useQueryContext } from '../QueryContext'\nimport {\n QueryVisualizationContextConsumer,\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport { QueryWrapper, QueryWrapperProps } from '../QueryWrapper'\nimport { isRowSelectionVisibleAtom } from '../QueryWrapper/TableRowSelectionState'\nimport { QueryWrapperErrorBoundary } from '../QueryWrapperErrorBoundary'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport SearchV2, { SearchV2Props } from '../SynapseTable/SearchV2'\nimport SqlEditor from '../SynapseTable/SqlEditor'\nimport TopLevelControls, {\n TopLevelControlsProps,\n CustomControl,\n} from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { CustomControls } from '../SynapseTable/CustomControls/CustomControls'\nimport TotalQueryResults from '../TotalQueryResults'\nimport PlotsContainer, {\n PlotsContainerProps,\n} from '../widgets/facet-nav/PlotsContainer'\nimport FacetFilterControls, {\n FacetFilterControlsProps,\n} from '../widgets/query-filter/FacetFilterControls'\nimport { QueryWrapperSynapsePlotProps } from './QueryWrapperSynapsePlot'\nimport { RowSetView } from './RowSetView'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\n\nexport const QUERY_FILTERS_EXPANDED_CSS: string = 'isShowingFacetFilters'\nexport const QUERY_FILTERS_COLLAPSED_CSS: string = 'isHidingFacetFilters'\n\nexport const HAS_SELECTED_ROWS_CSS: string = 'hasSelectedRows'\n\ntype QueryWrapperPlotNavOwnProps = {\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n /** Set to true when you want the query to be saved in the URL search parameters. If you are controlling the view (such as in PortalSearch), you'll want to set this to false */\n shouldDeepLink?: boolean\n /** If onQueryChange is set, the callback will be invoked when the Query changes */\n onQueryChange?: (newQueryJson: string) => void\n /** If onQueryResultBundleChange is set, the callback will be invoked when the QueryResultBundle changes */\n onQueryResultBundleChange?: (newQueryResultBundleJson: string) => void\n /** If initQueryJson is set, it will be the Query used in the initial QueryBundleRequest */\n initQueryJson?: string\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n searchConfiguration?: Omit<\n SearchV2Props,\n 'queryContext' | 'queryVisualizationContext'\n >\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n customPlots?: QueryWrapperSynapsePlotProps[]\n customControls?: CustomControl[]\n defaultColumn?: string\n defaultShowSearchBox?: boolean\n lockedColumn?: QueryWrapperProps['lockedColumn']\n initialLimit?: number\n hideTopLevelControls?: boolean\n} & Omit<TopLevelControlsProps, 'entityId'> &\n Pick<QueryWrapperPlotNavCustomPlotParams, 'onCustomPlotClick'> &\n Pick<\n QueryWrapperProps,\n | 'isRowSelectionVisible'\n | 'rowSelectionPrimaryKey'\n | 'isRowSelectionUIFloating'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n > &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'renderFacetValue'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'additionalFiltersSessionStorageKey'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideSearchBarControl'\n | 'hideVisualizationsControl'\n | 'enabledExternalAnalysisPlatforms'\n | 'lockTextMatchesQueryFilterPill'\n > &\n Pick<QueryContextType, 'combineRangeFacetConfig'>\n\nexport type QueryWrapperPlotNavProps = QueryOrDeprecatedSearchParams &\n PlotsContainerProps &\n QueryWrapperPlotNavOwnProps\n\nexport type QueryWrapperPlotNavContentsProps = Pick<\n QueryWrapperPlotNavProps,\n | 'tableConfiguration'\n | 'name'\n | 'cardConfiguration'\n | 'facetsToPlot'\n | 'availableFacets'\n | 'initialExpandedFacetControls'\n | 'hideDownload'\n | 'hideQueryCount'\n | 'hideSqlEditorControl'\n | 'hideVisualizationsControl'\n | 'searchConfiguration'\n | 'enabledExternalAnalysisPlatforms'\n | 'cavaticaConnectAccountURL'\n | 'customControls'\n | 'customPlots'\n | 'fileIdColumnName'\n | 'fileNameColumnName'\n | 'fileVersionColumnName'\n | 'initialLimit'\n | 'initialPlotTypeByFacetColumnName'\n | 'hideTopLevelControls'\n> & {\n isFullTextSearchEnabled: boolean\n remount?: () => void\n}\n\nexport function QueryWrapperPlotNavContents(\n props: QueryWrapperPlotNavContentsProps,\n) {\n const {\n tableConfiguration,\n name,\n cardConfiguration,\n facetsToPlot,\n availableFacets,\n initialExpandedFacetControls,\n hideDownload,\n hideQueryCount,\n hideSqlEditorControl,\n hideVisualizationsControl,\n searchConfiguration,\n cavaticaConnectAccountURL,\n customControls,\n remount = () => {},\n isFullTextSearchEnabled,\n customPlots,\n initialLimit,\n initialPlotTypeByFacetColumnName,\n hideTopLevelControls,\n } = props\n const queryContext = useQueryContext()\n const [showExportMetadata, setShowExportMetadata] = useState(false)\n const { hasFacetedSelectColumn: isFaceted, queryMetadataQueryOptions } =\n queryContext\n const { isLoading: isLoadingQueryMetadata } = useQuery(\n queryMetadataQueryOptions,\n )\n\n const isRowSelectionVisible = useAtomValue(isRowSelectionVisibleAtom)\n\n const currentQueryRequest = queryContext.currentQueryRequest\n\n const hasFacetsOrFilters =\n (currentQueryRequest?.query.selectedFacets !== undefined &&\n currentQueryRequest.query.selectedFacets.length > 0) ||\n (currentQueryRequest?.query.additionalFilters !== undefined &&\n currentQueryRequest?.query.additionalFilters.length > 0)\n\n const addToDownloadListRequest =\n useGetAddToDownloadListRequestForCurrentQuery()\n\n return (\n <QueryVisualizationContextConsumer>\n {queryVisualizationContext => {\n if (queryVisualizationContext === undefined) {\n throw new Error(\n 'No queryVisualizationContext found when using QueryVisualizationContextConsumer',\n )\n }\n\n return (\n <Box\n className={`QueryWrapperPlotNav ${\n queryVisualizationContext.showFacetFilter\n ? QUERY_FILTERS_EXPANDED_CSS\n : QUERY_FILTERS_COLLAPSED_CSS\n } ${isRowSelectionVisible ? HAS_SELECTED_ROWS_CSS : ''} ${\n hideTopLevelControls ? 'isHidingTopLevelControls' : ''\n }`}\n sx={{\n '*': {\n cursor: isLoadingQueryMetadata ? 'wait' : undefined,\n },\n }}\n >\n <QueryWrapperErrorBoundary>\n {isFullTextSearchEnabled ? (\n <FullTextSearch ftsConfig={searchConfiguration?.ftsConfig} />\n ) : (\n <SearchV2\n {...searchConfiguration}\n queryContext={queryContext}\n queryVisualizationContext={queryVisualizationContext}\n />\n )}\n <SqlEditor />\n {queryVisualizationContext.showDownloadConfirmation && (\n <AddToDownloadListConfirmationAlert\n addToDownloadListRequest={addToDownloadListRequest}\n onClose={() =>\n queryVisualizationContext.setShowDownloadConfirmation(false)\n }\n />\n )}\n {!hideTopLevelControls && (\n <SynapseErrorBoundary>\n <TopLevelControls\n showColumnSelection={tableConfiguration !== undefined}\n name={name}\n hideDownload={hideDownload}\n hideQueryCount={hideQueryCount}\n hideFacetFilterControl={!isFaceted}\n hideVisualizationsControl={\n !isFaceted || hideVisualizationsControl\n }\n hideSqlEditorControl={hideSqlEditorControl}\n cavaticaConnectAccountURL={cavaticaConnectAccountURL}\n remount={remount}\n customControls={customControls}\n />\n </SynapseErrorBoundary>\n )}\n {isFaceted && (\n <>\n <FacetFilterControls\n availableFacets={availableFacets}\n initialExpandedFacetControls={initialExpandedFacetControls}\n />\n </>\n )}\n {/* Isolated Suspense so that metadata loading does not hide the table */}\n <Suspense fallback={null}>\n <TotalQueryResults\n frontText={''}\n endText={hasFacetsOrFilters ? 'filtered by' : ''}\n hideIfUnfiltered={true}\n />\n </Suspense>\n <CustomControls\n customControls={customControls}\n remount={remount}\n />\n <PlotsContainer\n facetsToPlot={facetsToPlot}\n customPlots={customPlots}\n initialPlotTypeByFacetColumnName={\n initialPlotTypeByFacetColumnName\n }\n />\n <RowSetView\n tableConfiguration={tableConfiguration}\n hideDownload={hideDownload}\n cardConfiguration={cardConfiguration}\n initialLimit={initialLimit}\n />\n {showExportMetadata && (\n <ModalDownload\n getLastQueryRequest={queryContext?.getCurrentQueryRequest}\n onClose={() => setShowExportMetadata(false)}\n />\n )}\n </QueryWrapperErrorBoundary>\n </Box>\n )\n }}\n </QueryVisualizationContextConsumer>\n )\n}\n\nexport default function QueryWrapperPlotNav(props: QueryWrapperPlotNavProps) {\n const {\n sql: deprecatedSql,\n tableConfiguration,\n isInfinite = !tableConfiguration,\n limit = DEFAULT_PAGE_SIZE,\n showLastUpdatedOn,\n unitDescription,\n additionalFiltersSessionStorageKey,\n helpConfiguration,\n customPlots,\n enabledExternalAnalysisPlatforms,\n } = props\n\n const sql = props.query?.sql ?? deprecatedSql ?? ''\n const { entityId, versionNumber } =\n parseEntityIdAndVersionFromSqlStatement(sql)\n\n const query: Query = useMemo(() => {\n if (props.query) {\n // use query if set\n return props.query\n } else if (props.initQueryJson) {\n // Otherwise use initQueryJson\n return JSON.parse(props.initQueryJson) as Query\n } else {\n // use the deprecated sql, searchParams, and sqlOperator\n const additionalFilters = getAdditionalFilters(\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n return {\n sql: deprecatedSql!,\n additionalFilters,\n limit: limit,\n offset: 0,\n }\n }\n }, [\n props.query,\n props.initQueryJson,\n props.searchParams,\n props.sqlOperator,\n additionalFiltersSessionStorageKey,\n deprecatedSql,\n limit,\n ])\n\n const [componentKey, setComponentKey] = useState(1)\n const remount = () => {\n setComponentKey(componentKey + 1)\n }\n\n const { data: entity } = useGetEntity(entityId, versionNumber)\n const initQueryRequest: QueryBundleRequest = {\n entityId: entityId ?? '',\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n partMask:\n SynapseConstants.BUNDLE_MASK_QUERY_RESULTS |\n SynapseConstants.BUNDLE_MASK_QUERY_COUNT |\n SynapseConstants.BUNDLE_MASK_QUERY_SELECT_COLUMNS |\n SynapseConstants.BUNDLE_MASK_QUERY_MAX_ROWS_PER_PAGE |\n SynapseConstants.BUNDLE_MASK_QUERY_COLUMN_MODELS |\n SynapseConstants.BUNDLE_MASK_QUERY_FACETS |\n SynapseConstants.BUNDLE_MASK_SUM_FILES_SIZE_BYTES |\n SynapseConstants.BUNDLE_MASK_LAST_UPDATED_ON,\n query,\n }\n const isFullTextSearchEnabled =\n (entity && isTable(entity) && entity.isSearchEnabled) ?? false\n\n /**\n * Fully re-render the uncontrolled QueryWrapper component when the initial query changes. This eliminates a class of\n * bugs where our 'derived' state (the current query), which should be reset, is out of sync with props.\n *\n * See https://legacy.reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html#recommendation-fully-uncontrolled-component-with-a-key\n */\n const queryWrapperKey = `${JSON.stringify(initQueryRequest)}-${componentKey}`\n\n return (\n <QueryWrapper\n {...props}\n initQueryRequest={initQueryRequest}\n key={queryWrapperKey}\n isInfinite={isInfinite}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n renderFacetValue={props.renderFacetValue}\n dataUseModifiersColumnName={\n props.cardConfiguration?.genericCardSchema\n ?.dataUseModifiersColumnName\n }\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n defaultShowSearchBar={\n (props.defaultShowSearchBox || isFullTextSearchEnabled) &&\n !props.hideSearchBarControl\n }\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n hideSearchBarControl={props.hideSearchBarControl}\n showLastUpdatedOn={showLastUpdatedOn}\n noContentPlaceholderType={NoContentPlaceholderType.INTERACTIVE}\n hasCustomPlots={Array.isArray(customPlots) && customPlots.length > 0}\n enabledExternalAnalysisPlatforms={enabledExternalAnalysisPlatforms}\n >\n <QueryWrapperPlotNavContents\n {...props}\n isFullTextSearchEnabled={isFullTextSearchEnabled}\n remount={remount}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </QueryWrapper>\n )\n}\n"],"mappings":"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"}
|
|
@@ -64,133 +64,133 @@ function D(i) {
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
let $ = k ?? u(W, J), De = U && C(fe(G, (e, t) => Object.keys(U).find((e) => e === t))), Oe = q === null && De;
|
|
67
|
-
return /* @__PURE__ */ x(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
return /* @__PURE__ */ x(b, { children: we ? /* @__PURE__ */ x(v, {
|
|
68
|
+
sx: {
|
|
69
|
+
display: "flex",
|
|
70
|
+
margin: "60px auto"
|
|
71
|
+
},
|
|
72
|
+
children: /* @__PURE__ */ x(n, { size: 30 })
|
|
73
|
+
}) : /* @__PURE__ */ S(b, { children: [
|
|
74
|
+
U && q && /* @__PURE__ */ S(_, {
|
|
75
|
+
severity: "info",
|
|
76
|
+
sx: { mb: 2 },
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ x("b", { children: U.name }),
|
|
79
|
+
" requires scientific annotations specified by ",
|
|
80
|
+
/* @__PURE__ */ x("b", { children: q.jsonSchemaVersionInfo.$id }),
|
|
81
|
+
". ",
|
|
82
|
+
/* @__PURE__ */ x("b", { children: /* @__PURE__ */ x(me, {
|
|
83
|
+
href: `${t(e.REPO_ENDPOINT)}/repo/v1/schema/type/registered/${q.jsonSchemaVersionInfo.$id}`,
|
|
84
|
+
target: "_blank",
|
|
85
|
+
rel: "noopener noreferrer",
|
|
86
|
+
children: "View required schema (JSON)"
|
|
87
|
+
}) })
|
|
88
|
+
]
|
|
89
|
+
}),
|
|
90
|
+
Oe && /* @__PURE__ */ x(_, {
|
|
91
|
+
severity: "info",
|
|
92
|
+
children: /* @__PURE__ */ S(v, {
|
|
93
|
+
sx: {
|
|
94
|
+
display: "flex",
|
|
95
|
+
alignItems: "center",
|
|
96
|
+
gap: .5
|
|
97
|
+
},
|
|
76
98
|
children: [
|
|
77
|
-
/* @__PURE__ */
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
99
|
+
/* @__PURE__ */ S(y, {
|
|
100
|
+
variant: "smallText1",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ x("b", { children: U.name }),
|
|
103
|
+
" has no annotations. Click the",
|
|
104
|
+
" "
|
|
105
|
+
]
|
|
106
|
+
}),
|
|
107
|
+
/* @__PURE__ */ x(p, {}),
|
|
108
|
+
/* @__PURE__ */ x(y, {
|
|
109
|
+
variant: "smallText1",
|
|
110
|
+
children: "button to annotate."
|
|
111
|
+
})
|
|
87
112
|
]
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
uiSchema: Ce,
|
|
136
|
-
transformErrors: d,
|
|
137
|
-
formData: G,
|
|
138
|
-
onChange: ({ formData: e }) => {
|
|
139
|
-
N(e), K(e), R(void 0);
|
|
140
|
-
},
|
|
141
|
-
onBlur: () => {
|
|
142
|
-
K(E(G, !1));
|
|
143
|
-
},
|
|
144
|
-
onSubmit: ({ formData: e, errors: t }, n) => {
|
|
145
|
-
n.preventDefault(), t && t.length > 0 && R(t), B(!1), K(e), Q();
|
|
146
|
-
},
|
|
147
|
-
onError: (e) => {
|
|
148
|
-
R(e), (L || $) && a && V(!0);
|
|
113
|
+
})
|
|
114
|
+
}),
|
|
115
|
+
/* @__PURE__ */ S(f, {
|
|
116
|
+
validator: T,
|
|
117
|
+
liveValidate: $,
|
|
118
|
+
noHtml5Validate: !0,
|
|
119
|
+
formRef: I,
|
|
120
|
+
disabled: Ee,
|
|
121
|
+
translateString: ae,
|
|
122
|
+
formContext: {
|
|
123
|
+
showDerivedAnnotationPlaceholder: !0,
|
|
124
|
+
descriptionVariant: "expand",
|
|
125
|
+
descriptionFormat: "table",
|
|
126
|
+
allowFreeSoloEnum: !0
|
|
127
|
+
},
|
|
128
|
+
experimental_defaultFormStateBehavior: { emptyObjectFields: "skipDefaults" },
|
|
129
|
+
fields: { ObjectField: m },
|
|
130
|
+
templates: {
|
|
131
|
+
ObjectFieldTemplate: se,
|
|
132
|
+
WrapIfAdditionalTemplate: ce
|
|
133
|
+
},
|
|
134
|
+
widgets: { TextWidget: le },
|
|
135
|
+
schema: Se,
|
|
136
|
+
uiSchema: Ce,
|
|
137
|
+
transformErrors: d,
|
|
138
|
+
formData: G,
|
|
139
|
+
onChange: ({ formData: e }) => {
|
|
140
|
+
N(e), K(e), R(void 0);
|
|
141
|
+
},
|
|
142
|
+
onBlur: () => {
|
|
143
|
+
K(E(G, !1));
|
|
144
|
+
},
|
|
145
|
+
onSubmit: ({ formData: e, errors: t }, n) => {
|
|
146
|
+
n.preventDefault(), t && t.length > 0 && R(t), B(!1), K(e), Q();
|
|
147
|
+
},
|
|
148
|
+
onError: (e) => {
|
|
149
|
+
R(e), (L || $) && a && V(!0);
|
|
150
|
+
},
|
|
151
|
+
children: [z && ge && /* @__PURE__ */ S(_, {
|
|
152
|
+
severity: "error",
|
|
153
|
+
sx: { my: 2 },
|
|
154
|
+
children: ["Annotations could not be updated: ", z.reason]
|
|
155
|
+
}), !P && /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ x(pe, { sx: { my: 2 } }), /* @__PURE__ */ x(v, {
|
|
156
|
+
sx: {
|
|
157
|
+
display: "flex",
|
|
158
|
+
justifyContent: "space-between",
|
|
159
|
+
gridRowStart: 5
|
|
149
160
|
},
|
|
150
|
-
children:
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}), !P && /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ x(pe, { sx: { my: 2 } }), /* @__PURE__ */ x(v, {
|
|
155
|
-
sx: {
|
|
156
|
-
display: "flex",
|
|
157
|
-
justifyContent: "space-between",
|
|
158
|
-
gridRowStart: 5
|
|
161
|
+
children: /* @__PURE__ */ x(re, {
|
|
162
|
+
hasCancelButton: j !== void 0,
|
|
163
|
+
onCancel: () => {
|
|
164
|
+
j && j();
|
|
159
165
|
},
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
/* @__PURE__ */ x("div", { children: "Are you sure you want to save the invalid annotations?" })
|
|
189
|
-
] }),
|
|
190
|
-
confirmButtonProps: { children: "Save" }
|
|
191
|
-
})
|
|
192
|
-
] })
|
|
193
|
-
});
|
|
166
|
+
onConfirm: () => {
|
|
167
|
+
I.current.formElement.current.requestSubmit();
|
|
168
|
+
},
|
|
169
|
+
confirmButtonProps: { children: a ? "Save" : "Validate" }
|
|
170
|
+
})
|
|
171
|
+
})] })]
|
|
172
|
+
}),
|
|
173
|
+
_e && /* @__PURE__ */ x(ie, {
|
|
174
|
+
open: !0,
|
|
175
|
+
onConfirm: () => {
|
|
176
|
+
Q(), V(!1);
|
|
177
|
+
},
|
|
178
|
+
onCancel: () => {
|
|
179
|
+
V(!1);
|
|
180
|
+
},
|
|
181
|
+
title: "Update Annotations",
|
|
182
|
+
content: /* @__PURE__ */ S(b, { children: [
|
|
183
|
+
/* @__PURE__ */ x("div", { children: "The following errors exist with the annotations you entered:" }),
|
|
184
|
+
/* @__PURE__ */ x("div", { children: /* @__PURE__ */ x("ul", { children: (L ?? []).map((e, t) => /* @__PURE__ */ S("li", { children: [
|
|
185
|
+
/* @__PURE__ */ x("b", { children: `${oe(e)}: ` }),
|
|
186
|
+
" ",
|
|
187
|
+
`${e.message}`
|
|
188
|
+
] }, t)) }) }),
|
|
189
|
+
/* @__PURE__ */ x("div", { children: "Are you sure you want to save the invalid annotations?" })
|
|
190
|
+
] }),
|
|
191
|
+
confirmButtonProps: { children: "Save" }
|
|
192
|
+
})
|
|
193
|
+
] }) });
|
|
194
194
|
}
|
|
195
195
|
//#endregion
|
|
196
196
|
export { D as SchemaDrivenAnnotationEditor };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaDrivenAnnotationEditor.js","names":[],"sources":["../../../src/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport {\n useGetJson,\n useGetSchema,\n useGetSchemaBinding,\n useUpdateViaJson,\n} from '@/synapse-queries'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { Alert, Box, Divider, Link, Typography } from '@mui/material'\nimport RJSF from '@rjsf/core'\nimport { RJSFValidationError } from '@rjsf/utils'\nimport validator from '@rjsf/validator-ajv8'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { EntityJson } from '@sage-bionetworks/synapse-types'\nimport { JSONSchema7 } from 'json-schema'\nimport { omitBy } from 'lodash-es'\nimport isEmpty from 'lodash-es/isEmpty'\nimport noop from 'lodash-es/noop'\nimport { RefObject, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ConfirmationButtons,\n ConfirmationDialog,\n} from '../ConfirmationDialog/ConfirmationDialog'\nimport { JsonSchemaForm } from '../JsonSchemaForm/JsonSchemaForm'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport {\n dropNullishArrayValues,\n dropNullValues,\n getPossibleTopLevelPropertiesInObjectSchema,\n getFriendlyPropertyName,\n getJsonSchemaForForm,\n getSchemaIdForConcreteType,\n transformErrors,\n getUiSchemaForForm,\n shouldLiveValidate,\n customTranslateString,\n} from './AnnotationEditorUtils'\nimport SynapseAnnotationsRJSFObjectField from './field/SynapseAnnotationsRJSFObjectField'\nimport { ObjectFieldTemplate } from './template/ObjectFieldTemplate'\nimport SynapseAnnotationsWrapIfAdditionalTemplate from './template/SynapseAnnotationsWrapIfAdditionalTemplate'\nimport TextWidget from './widget/TextWidget'\n\nexport type SchemaDrivenAnnotationEditorProps = {\n /** The entity whose annotations should be edited with the form */\n entityId?: string\n /** If no entity ID is supplied, the schema to use for the form */\n schemaId?: string\n /** May be used to directly provide a JSON Schema to use for the form */\n validationSchema?: JSONSchema7\n /** Optionally supply a ref to the form to handle submission externally with `formRef.current.submit()`. */\n formRef?: RefObject<RJSF | null>\n /** Provide live input validation. This can cause performance degradation. By default, liveValidate will be true if an entity with a schema and existing annotations is being edited */\n liveValidate?: boolean\n /** Invoked after a successful form submission */\n onSuccess?: () => void\n /** If defined and formRef is not supplied, shows a 'Cancel' button and runs this effect on click */\n onCancel?: () => void\n /** Passes new form data upon each change to the form */\n onChange?: (annotations: Record<string, unknown>) => void\n /** If true, the editor will not render its own submit UI. */\n hideActions?: boolean\n}\n\n/**\n * Cleans the formData to remove values that are invalid for Synapse Annotations\n * @param formData\n * @param dropNullishValuesInArrays\n */\nfunction cleanFormData(\n formData: Record<string, unknown> | undefined,\n dropNullishValuesInArrays: boolean,\n) {\n let cleanedFormData = dropNullValues(formData)\n if (dropNullishValuesInArrays) {\n cleanedFormData = dropNullishArrayValues(cleanedFormData)\n }\n return cleanedFormData\n}\n\n/**\n * Renders a form for editing an entity's annotations. The component also supports supplying just a schema ID,\n * but work to support annotation flows without an entity (i.e. before creating entities) is not yet complete.\n */\nexport function SchemaDrivenAnnotationEditor(\n props: SchemaDrivenAnnotationEditorProps,\n) {\n const {\n entityId,\n schemaId,\n validationSchema: validationSchemaFromProps,\n liveValidate: liveValidateFromProps,\n onSuccess = () => {\n /* no-op */\n },\n onCancel,\n formRef: formRefFromParent,\n onChange = noop,\n hideActions = false,\n } = props\n const localRef = useRef<RJSF>(null)\n const ref = formRefFromParent ?? localRef\n\n // Client-side validation errors\n const [validationError, setValidationError] = useState<\n RJSFValidationError[] | undefined\n >(undefined)\n\n // Errors from the backend response\n const [submissionError, setSubmissionError] = useState<\n SynapseClientError | undefined\n >(undefined)\n const [showSubmissionError, setShowSubmissionError] = useState(false)\n\n const [showConfirmation, setShowConfirmation] = useState(false)\n\n const { data } = useGetJson(\n entityId!,\n undefined,\n // Derived annotations will be precomputed and displayed as placeholders in the form\n false,\n {\n // Metadata is being edited, so don't refetch\n staleTime: Infinity,\n enabled: !!entityId,\n throwOnError: true,\n },\n )\n\n const entityJson = data?.entityMetadata\n const annotations = data?.annotations\n\n // Annotation fields fetched and modified via the form\n const [formData, setFormData] = useState<Record<string, unknown> | undefined>(\n undefined,\n )\n\n // Set initial form data when the entity or its annotations change\n useEffect(() => {\n if (data?.entity) {\n const formData = data.entity\n const hasAnnotations = annotations && Object.keys(annotations).length > 0\n\n const newFormData = !hasAnnotations\n ? { ...formData, newKey: [''] }\n : formData\n\n setFormData(newFormData)\n }\n }, [data?.entity, annotations])\n\n const { data: schema, isLoading: isLoadingBinding } = useGetSchemaBinding(\n entityId!,\n {\n enabled: !!entityId,\n refetchOnWindowFocus: false,\n throwOnError: true,\n },\n )\n\n // The full schema which is bound to the entity\n const { data: fetchedValidationSchema, isLoading: isLoadingSchema } =\n useGetSchema(schemaId ?? schema?.jsonSchemaVersionInfo.$id ?? '', {\n enabled: !!schemaId || !!schema,\n throwOnError: true,\n })\n const validationSchema = validationSchemaFromProps || fetchedValidationSchema\n\n const concreteTypeSchemaId = getSchemaIdForConcreteType(\n entityJson?.concreteType ?? '',\n )\n // The schema for the entity type (e.g. FileEntity, TableEntity, etc.)\n const { data: schemaForEntityType, isLoading: isLoadingEntityTypeSchema } =\n useGetSchema(concreteTypeSchemaId ?? '', {\n enabled: !!concreteTypeSchemaId,\n throwOnError: true,\n })\n\n const entitySchemaBaseProperties: JSONSchema7['properties'] = useMemo(\n () =>\n getPossibleTopLevelPropertiesInObjectSchema(schemaForEntityType ?? {}),\n [schemaForEntityType],\n )\n\n const formSchema = useMemo(\n () => getJsonSchemaForForm(validationSchema, schemaForEntityType),\n [validationSchema, schemaForEntityType],\n )\n\n const uiSchema = useMemo(\n () => getUiSchemaForForm(entitySchemaBaseProperties),\n [entitySchemaBaseProperties],\n )\n\n const isLoading =\n isLoadingBinding || isLoadingSchema || isLoadingEntityTypeSchema\n\n const { mutate, isPending: updateIsPending } = useUpdateViaJson({\n onSuccess: () => {\n onSuccess()\n },\n onError: error => {\n setSubmissionError(error)\n setShowSubmissionError(true)\n },\n })\n\n function submitChangedEntity() {\n mutate({\n ...cleanFormData(formData, true),\n ...entityJson,\n } as EntityJson)\n }\n\n const liveValidate =\n liveValidateFromProps ?? shouldLiveValidate(annotations, validationSchema)\n\n const formDataHasNoAnnotations =\n entityJson &&\n isEmpty(\n omitBy(formData, (_value, key) =>\n Object.keys(entityJson).find(k => k === key),\n ),\n )\n\n const showHasNoAnnotationsAlert = schema === null && formDataHasNoAnnotations\n\n return (\n <div className=\"JsonSchemaFormContainer\">\n {isLoading ? (\n <div className=\"LoadingPlaceholder\">\n <SynapseSpinner size={30} />\n </div>\n ) : (\n <>\n {entityJson && schema && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n <b>{entityJson.name}</b> requires scientific annotations specified\n by <b>{schema.jsonSchemaVersionInfo.$id}</b>\n {'. '}\n <b>\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/schema/type/registered/${\n schema.jsonSchemaVersionInfo.$id\n }`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n View required schema (JSON)\n </Link>\n </b>\n </Alert>\n )}\n {showHasNoAnnotationsAlert && (\n <Alert severity=\"info\">\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n <Typography variant={'smallText1'}>\n <b>{entityJson.name}</b> has no annotations. Click the{' '}\n </Typography>\n <AddToList />\n <Typography variant={'smallText1'}>\n button to annotate.\n </Typography>\n </Box>\n </Alert>\n )}\n <JsonSchemaForm\n validator={validator}\n liveValidate={liveValidate}\n noHtml5Validate={true}\n formRef={ref}\n disabled={updateIsPending}\n translateString={customTranslateString}\n formContext={{\n showDerivedAnnotationPlaceholder: true,\n descriptionVariant: 'expand',\n descriptionFormat: 'table',\n allowFreeSoloEnum: true,\n }}\n experimental_defaultFormStateBehavior={{\n emptyObjectFields: 'skipDefaults',\n }}\n fields={{\n ObjectField: SynapseAnnotationsRJSFObjectField,\n }}\n templates={{\n ObjectFieldTemplate: ObjectFieldTemplate,\n WrapIfAdditionalTemplate:\n SynapseAnnotationsWrapIfAdditionalTemplate,\n }}\n widgets={{\n TextWidget: TextWidget,\n }}\n schema={formSchema}\n uiSchema={uiSchema}\n transformErrors={transformErrors}\n formData={formData}\n onChange={({ formData }) => {\n onChange(formData)\n setFormData(formData)\n setValidationError(undefined)\n }}\n onBlur={() => {\n setFormData(\n // Clean the formData onBlur to remove null values that we will need to strip before submission\n // This will ensure that the user gets accurate validation information since the data will match what the backend will receive\n cleanFormData(\n formData,\n // Don't remove null values in arrays--the fields will disappear, which the user probably does not want\n false,\n ),\n )\n }}\n onSubmit={({ formData, errors }, event) => {\n event.preventDefault()\n if (errors && errors.length > 0) {\n setValidationError(errors)\n }\n setShowSubmissionError(false)\n setFormData(formData)\n submitChangedEntity()\n }}\n onError={(errors: RJSFValidationError[]) => {\n // invoked when submit is clicked and there are client-side validation errors\n setValidationError(errors)\n if ((validationError || liveValidate) && entityId) {\n setShowConfirmation(true)\n }\n }}\n >\n {submissionError && showSubmissionError && (\n <Alert severity=\"error\" sx={{ my: 2 }}>\n Annotations could not be updated: {submissionError.reason}\n </Alert>\n )}\n {!hideActions && (\n <>\n <Divider sx={{ my: 2 }} />\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n gridRowStart: 5,\n }}\n >\n <ConfirmationButtons\n hasCancelButton={onCancel !== undefined}\n onCancel={() => {\n if (onCancel) {\n onCancel()\n }\n }}\n onConfirm={() => {\n ref.current!.formElement.current.requestSubmit()\n }}\n confirmButtonProps={{\n children: entityId ? 'Save' : 'Validate',\n }}\n />\n </Box>\n </>\n )}\n </JsonSchemaForm>\n {showConfirmation && (\n <ConfirmationDialog\n open={true}\n onConfirm={() => {\n submitChangedEntity()\n setShowConfirmation(false)\n }}\n onCancel={() => {\n setShowConfirmation(false)\n }}\n title=\"Update Annotations\"\n content={\n <>\n <div>\n The following errors exist with the annotations you entered:\n </div>\n <div>\n <ul>\n {(validationError ?? []).map(\n (e: RJSFValidationError, index: number) => (\n <li key={index}>\n <b>{`${getFriendlyPropertyName(e)}: `}</b>{' '}\n {`${e.message}`}\n </li>\n ),\n )}\n </ul>\n </div>\n <div>\n Are you sure you want to save the invalid annotations?\n </div>\n </>\n }\n confirmButtonProps={{\n children: 'Save',\n }}\n />\n )}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaDrivenAnnotationEditor.js","names":[],"sources":["../../../src/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.tsx"],"sourcesContent":["import AddToList from '@/assets/icons/AddToList'\nimport {\n useGetJson,\n useGetSchema,\n useGetSchemaBinding,\n useUpdateViaJson,\n} from '@/synapse-queries'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { Alert, Box, Divider, Link, Typography } from '@mui/material'\nimport RJSF from '@rjsf/core'\nimport { RJSFValidationError } from '@rjsf/utils'\nimport validator from '@rjsf/validator-ajv8'\nimport { SynapseClientError } from '@sage-bionetworks/synapse-client/util/SynapseClientError'\nimport { EntityJson } from '@sage-bionetworks/synapse-types'\nimport { JSONSchema7 } from 'json-schema'\nimport { omitBy } from 'lodash-es'\nimport isEmpty from 'lodash-es/isEmpty'\nimport noop from 'lodash-es/noop'\nimport { RefObject, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n ConfirmationButtons,\n ConfirmationDialog,\n} from '../ConfirmationDialog/ConfirmationDialog'\nimport { JsonSchemaForm } from '../JsonSchemaForm/JsonSchemaForm'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport {\n dropNullishArrayValues,\n dropNullValues,\n getPossibleTopLevelPropertiesInObjectSchema,\n getFriendlyPropertyName,\n getJsonSchemaForForm,\n getSchemaIdForConcreteType,\n transformErrors,\n getUiSchemaForForm,\n shouldLiveValidate,\n customTranslateString,\n} from './AnnotationEditorUtils'\nimport SynapseAnnotationsRJSFObjectField from './field/SynapseAnnotationsRJSFObjectField'\nimport { ObjectFieldTemplate } from './template/ObjectFieldTemplate'\nimport SynapseAnnotationsWrapIfAdditionalTemplate from './template/SynapseAnnotationsWrapIfAdditionalTemplate'\nimport TextWidget from './widget/TextWidget'\n\nexport type SchemaDrivenAnnotationEditorProps = {\n /** The entity whose annotations should be edited with the form */\n entityId?: string\n /** If no entity ID is supplied, the schema to use for the form */\n schemaId?: string\n /** May be used to directly provide a JSON Schema to use for the form */\n validationSchema?: JSONSchema7\n /** Optionally supply a ref to the form to handle submission externally with `formRef.current.submit()`. */\n formRef?: RefObject<RJSF | null>\n /** Provide live input validation. This can cause performance degradation. By default, liveValidate will be true if an entity with a schema and existing annotations is being edited */\n liveValidate?: boolean\n /** Invoked after a successful form submission */\n onSuccess?: () => void\n /** If defined and formRef is not supplied, shows a 'Cancel' button and runs this effect on click */\n onCancel?: () => void\n /** Passes new form data upon each change to the form */\n onChange?: (annotations: Record<string, unknown>) => void\n /** If true, the editor will not render its own submit UI. */\n hideActions?: boolean\n}\n\n/**\n * Cleans the formData to remove values that are invalid for Synapse Annotations\n * @param formData\n * @param dropNullishValuesInArrays\n */\nfunction cleanFormData(\n formData: Record<string, unknown> | undefined,\n dropNullishValuesInArrays: boolean,\n) {\n let cleanedFormData = dropNullValues(formData)\n if (dropNullishValuesInArrays) {\n cleanedFormData = dropNullishArrayValues(cleanedFormData)\n }\n return cleanedFormData\n}\n\n/**\n * Renders a form for editing an entity's annotations. The component also supports supplying just a schema ID,\n * but work to support annotation flows without an entity (i.e. before creating entities) is not yet complete.\n */\nexport function SchemaDrivenAnnotationEditor(\n props: SchemaDrivenAnnotationEditorProps,\n) {\n const {\n entityId,\n schemaId,\n validationSchema: validationSchemaFromProps,\n liveValidate: liveValidateFromProps,\n onSuccess = () => {\n /* no-op */\n },\n onCancel,\n formRef: formRefFromParent,\n onChange = noop,\n hideActions = false,\n } = props\n const localRef = useRef<RJSF>(null)\n const ref = formRefFromParent ?? localRef\n\n // Client-side validation errors\n const [validationError, setValidationError] = useState<\n RJSFValidationError[] | undefined\n >(undefined)\n\n // Errors from the backend response\n const [submissionError, setSubmissionError] = useState<\n SynapseClientError | undefined\n >(undefined)\n const [showSubmissionError, setShowSubmissionError] = useState(false)\n\n const [showConfirmation, setShowConfirmation] = useState(false)\n\n const { data } = useGetJson(\n entityId!,\n undefined,\n // Derived annotations will be precomputed and displayed as placeholders in the form\n false,\n {\n // Metadata is being edited, so don't refetch\n staleTime: Infinity,\n enabled: !!entityId,\n throwOnError: true,\n },\n )\n\n const entityJson = data?.entityMetadata\n const annotations = data?.annotations\n\n // Annotation fields fetched and modified via the form\n const [formData, setFormData] = useState<Record<string, unknown> | undefined>(\n undefined,\n )\n\n // Set initial form data when the entity or its annotations change\n useEffect(() => {\n if (data?.entity) {\n const formData = data.entity\n const hasAnnotations = annotations && Object.keys(annotations).length > 0\n\n const newFormData = !hasAnnotations\n ? { ...formData, newKey: [''] }\n : formData\n\n setFormData(newFormData)\n }\n }, [data?.entity, annotations])\n\n const { data: schema, isLoading: isLoadingBinding } = useGetSchemaBinding(\n entityId!,\n {\n enabled: !!entityId,\n refetchOnWindowFocus: false,\n throwOnError: true,\n },\n )\n\n // The full schema which is bound to the entity\n const { data: fetchedValidationSchema, isLoading: isLoadingSchema } =\n useGetSchema(schemaId ?? schema?.jsonSchemaVersionInfo.$id ?? '', {\n enabled: !!schemaId || !!schema,\n throwOnError: true,\n })\n const validationSchema = validationSchemaFromProps || fetchedValidationSchema\n\n const concreteTypeSchemaId = getSchemaIdForConcreteType(\n entityJson?.concreteType ?? '',\n )\n // The schema for the entity type (e.g. FileEntity, TableEntity, etc.)\n const { data: schemaForEntityType, isLoading: isLoadingEntityTypeSchema } =\n useGetSchema(concreteTypeSchemaId ?? '', {\n enabled: !!concreteTypeSchemaId,\n throwOnError: true,\n })\n\n const entitySchemaBaseProperties: JSONSchema7['properties'] = useMemo(\n () =>\n getPossibleTopLevelPropertiesInObjectSchema(schemaForEntityType ?? {}),\n [schemaForEntityType],\n )\n\n const formSchema = useMemo(\n () => getJsonSchemaForForm(validationSchema, schemaForEntityType),\n [validationSchema, schemaForEntityType],\n )\n\n const uiSchema = useMemo(\n () => getUiSchemaForForm(entitySchemaBaseProperties),\n [entitySchemaBaseProperties],\n )\n\n const isLoading =\n isLoadingBinding || isLoadingSchema || isLoadingEntityTypeSchema\n\n const { mutate, isPending: updateIsPending } = useUpdateViaJson({\n onSuccess: () => {\n onSuccess()\n },\n onError: error => {\n setSubmissionError(error)\n setShowSubmissionError(true)\n },\n })\n\n function submitChangedEntity() {\n mutate({\n ...cleanFormData(formData, true),\n ...entityJson,\n } as EntityJson)\n }\n\n const liveValidate =\n liveValidateFromProps ?? shouldLiveValidate(annotations, validationSchema)\n\n const formDataHasNoAnnotations =\n entityJson &&\n isEmpty(\n omitBy(formData, (_value, key) =>\n Object.keys(entityJson).find(k => k === key),\n ),\n )\n\n const showHasNoAnnotationsAlert = schema === null && formDataHasNoAnnotations\n\n return (\n <>\n {isLoading ? (\n <Box sx={{ display: 'flex', margin: '60px auto' }}>\n <SynapseSpinner size={30} />\n </Box>\n ) : (\n <>\n {entityJson && schema && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n <b>{entityJson.name}</b> requires scientific annotations specified\n by <b>{schema.jsonSchemaVersionInfo.$id}</b>\n {'. '}\n <b>\n <Link\n href={`${getEndpoint(\n BackendDestinationEnum.REPO_ENDPOINT,\n )}/repo/v1/schema/type/registered/${\n schema.jsonSchemaVersionInfo.$id\n }`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n View required schema (JSON)\n </Link>\n </b>\n </Alert>\n )}\n {showHasNoAnnotationsAlert && (\n <Alert severity=\"info\">\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n <Typography variant={'smallText1'}>\n <b>{entityJson.name}</b> has no annotations. Click the{' '}\n </Typography>\n <AddToList />\n <Typography variant={'smallText1'}>\n button to annotate.\n </Typography>\n </Box>\n </Alert>\n )}\n <JsonSchemaForm\n validator={validator}\n liveValidate={liveValidate}\n noHtml5Validate={true}\n formRef={ref}\n disabled={updateIsPending}\n translateString={customTranslateString}\n formContext={{\n showDerivedAnnotationPlaceholder: true,\n descriptionVariant: 'expand',\n descriptionFormat: 'table',\n allowFreeSoloEnum: true,\n }}\n experimental_defaultFormStateBehavior={{\n emptyObjectFields: 'skipDefaults',\n }}\n fields={{\n ObjectField: SynapseAnnotationsRJSFObjectField,\n }}\n templates={{\n ObjectFieldTemplate: ObjectFieldTemplate,\n WrapIfAdditionalTemplate:\n SynapseAnnotationsWrapIfAdditionalTemplate,\n }}\n widgets={{\n TextWidget: TextWidget,\n }}\n schema={formSchema}\n uiSchema={uiSchema}\n transformErrors={transformErrors}\n formData={formData}\n onChange={({ formData }) => {\n onChange(formData)\n setFormData(formData)\n setValidationError(undefined)\n }}\n onBlur={() => {\n setFormData(\n // Clean the formData onBlur to remove null values that we will need to strip before submission\n // This will ensure that the user gets accurate validation information since the data will match what the backend will receive\n cleanFormData(\n formData,\n // Don't remove null values in arrays--the fields will disappear, which the user probably does not want\n false,\n ),\n )\n }}\n onSubmit={({ formData, errors }, event) => {\n event.preventDefault()\n if (errors && errors.length > 0) {\n setValidationError(errors)\n }\n setShowSubmissionError(false)\n setFormData(formData)\n submitChangedEntity()\n }}\n onError={(errors: RJSFValidationError[]) => {\n // invoked when submit is clicked and there are client-side validation errors\n setValidationError(errors)\n if ((validationError || liveValidate) && entityId) {\n setShowConfirmation(true)\n }\n }}\n >\n {submissionError && showSubmissionError && (\n <Alert severity=\"error\" sx={{ my: 2 }}>\n Annotations could not be updated: {submissionError.reason}\n </Alert>\n )}\n {!hideActions && (\n <>\n <Divider sx={{ my: 2 }} />\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n gridRowStart: 5,\n }}\n >\n <ConfirmationButtons\n hasCancelButton={onCancel !== undefined}\n onCancel={() => {\n if (onCancel) {\n onCancel()\n }\n }}\n onConfirm={() => {\n ref.current!.formElement.current.requestSubmit()\n }}\n confirmButtonProps={{\n children: entityId ? 'Save' : 'Validate',\n }}\n />\n </Box>\n </>\n )}\n </JsonSchemaForm>\n {showConfirmation && (\n <ConfirmationDialog\n open={true}\n onConfirm={() => {\n submitChangedEntity()\n setShowConfirmation(false)\n }}\n onCancel={() => {\n setShowConfirmation(false)\n }}\n title=\"Update Annotations\"\n content={\n <>\n <div>\n The following errors exist with the annotations you entered:\n </div>\n <div>\n <ul>\n {(validationError ?? []).map(\n (e: RJSFValidationError, index: number) => (\n <li key={index}>\n <b>{`${getFriendlyPropertyName(e)}: `}</b>{' '}\n {`${e.message}`}\n </li>\n ),\n )}\n </ul>\n </div>\n <div>\n Are you sure you want to save the invalid annotations?\n </div>\n </>\n }\n confirmButtonProps={{\n children: 'Save',\n }}\n />\n )}\n </>\n )}\n </>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchQueryUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapper/SearchQueryUseQueryOptions.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,WAAW,EAEX,uBAAuB,EAIvB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EAIP,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAGV,gBAAgB,EAChB,kBAAkB,EAElB,kBAAkB,EAEnB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAI9B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"SearchQueryUseQueryOptions.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapper/SearchQueryUseQueryOptions.ts"],"names":[],"mappings":"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"}
|