synapse-react-client 4.0.9 → 4.0.11
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.d.ts +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/aridhiaTokenExchange.js.map +1 -1
- package/dist/aridhia-queries/useGetAridhiaRequests.js.map +1 -1
- package/dist/assets/icons/CloudWarning.d.ts +5 -0
- package/dist/assets/icons/CloudWarning.d.ts.map +1 -0
- package/dist/assets/icons/CloudWarning.js +47 -0
- package/dist/assets/icons/CloudWarning.js.map +1 -0
- package/dist/assets/icons/TasksIcon.d.ts.map +1 -1
- package/dist/assets/icons/TasksIcon.js +6 -10
- package/dist/assets/icons/TasksIcon.js.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js +69 -63
- package/dist/components/AccessRequirementAclEditor/AccessRequirementAclEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessApprovalCheckMark.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementListUtils.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js.map +1 -1
- package/dist/components/AccessRequirementRelatedProjectsList/AccessRequirementRelatedProjectsList.js.map +1 -1
- package/dist/components/AccessTokenPage/AccessTokenCard/AccessTokenCard.js.map +1 -1
- package/dist/components/AcknowledgementsPage/StudyAcknowledgements.js.map +1 -1
- package/dist/components/AclEditor/PermissionLevelMenu.js.map +1 -1
- package/dist/components/AclEditor/ResourceAccessAndUserGroupHeader.js.map +1 -1
- package/dist/components/AclEditor/useSortResourceAccessList.js.map +1 -1
- package/dist/components/AclEditor/useUpdateAcl.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +38 -37
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/Constants.d.ts +1 -0
- package/dist/components/Authentication/Constants.d.ts.map +1 -1
- package/dist/components/Authentication/Constants.js +2 -2
- package/dist/components/Authentication/Constants.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/Reset2FAWarning.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +2 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardDeck/CardDeck.Mobile.js.map +1 -1
- package/dist/components/CardDeck/TableQueryCardDeck.js.map +1 -1
- package/dist/components/CertificationQuiz/CertificationQuiz.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueCurrentRoundInfo.js.map +1 -1
- package/dist/components/ChallengeSubmission/EvaluationQueueList.js.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js +143 -140
- package/dist/components/ChallengeSubmission/SubmissionDirectoryList.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/ChangePassword/ChangePassword.js.map +1 -1
- package/dist/components/ChangePassword/ChangePasswordWithToken.js.map +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js +1 -1
- package/dist/components/ChangePassword/useChangePasswordFormState.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/ComponentCollapse.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js.map +1 -1
- package/dist/components/CreateProjectModal/CreateProjectModal.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizardUtils.js.map +1 -1
- package/dist/components/DataGrid/DataGrid.d.ts +0 -1
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.d.ts +4 -0
- package/dist/components/DataGrid/DataGridWebSocket.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGridWebSocket.js +9 -8
- package/dist/components/DataGrid/DataGridWebSocket.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +326 -268
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +2 -0
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +124 -67
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts +2 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js +126 -122
- package/dist/components/DataGrid/columns/AutocompleteMultipleEnumColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts +58 -0
- package/dist/components/DataGrid/columns/useGridAutocompleteState.d.ts.map +1 -0
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js +52 -0
- package/dist/components/DataGrid/columns/useGridAutocompleteState.js.map +1 -0
- package/dist/components/DataGrid/components/ValidationAlert.d.ts +5 -2
- package/dist/components/DataGrid/components/ValidationAlert.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ValidationAlert.js +429 -24
- package/dist/components/DataGrid/components/ValidationAlert.js.map +1 -1
- package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGetSchemaForGrid.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/useCRDTModelView.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts +7 -0
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +16 -2
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/useInitializeGridConnection.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithTable.js.map +1 -1
- package/dist/components/DataGrid/utils/DataGridUtils.js.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/applyModelChange.js +27 -24
- package/dist/components/DataGrid/utils/applyModelChange.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts +8 -0
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +47 -44
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/computeReplicaSelectionModel.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/getCellClassName.js +8 -8
- package/dist/components/DataGrid/utils/getCellClassName.js.map +1 -1
- package/dist/components/DataGrid/utils/getEmptyValue.d.ts +2 -0
- package/dist/components/DataGrid/utils/getEmptyValue.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/getEmptyValue.js +8 -0
- package/dist/components/DataGrid/utils/getEmptyValue.js.map +1 -0
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js +2 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/modelRowsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType.js.map +1 -1
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.d.ts +32 -0
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js +22 -0
- package/dist/components/DataGrid/utils/schemaAwarePasteValue.js.map +1 -0
- package/dist/components/DataGrid/utils/splitPatch.js.map +1 -1
- package/dist/components/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/DirectDownload/DirectDownload.js.map +1 -1
- package/dist/components/DirectDownloadButton.js.map +1 -1
- package/dist/components/DownloadCart/CreatePackageV2.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.css +1 -0
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +199 -132
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js +22 -0
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.js.map +1 -0
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.module.scss +170 -0
- package/dist/components/DownloadCart/DownloadListActionsRequired.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js.map +1 -1
- package/dist/components/DownloadCart/fileNameUtils.js.map +1 -1
- package/dist/components/DraggableDialog/DraggableDialog.js.map +1 -1
- package/dist/components/DynamicForm/DynamicFormModal.js.map +1 -1
- package/dist/components/Ecosystem/TableQueryEcosystem.js.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.d.ts.map +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditor.js +103 -103
- package/dist/components/EntityAclEditor/EntityAclEditor.js.map +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.d.ts.map +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -0
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.d.ts.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +36 -30
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/EntityFinder.js.map +1 -1
- package/dist/components/EntityFinder/VersionSelectionType.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/EntityChildrenDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/FavoritesDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/configurations/ProjectListDetails.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/EntityFinder/useEntitySelection.js.map +1 -1
- package/dist/components/EntityForm/EntityForm.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/EntityHeaderTable/useEntityHeaderTableState.js.map +1 -1
- package/dist/components/EntitySubjectsSelector/EntitySubjectsSelector.js.map +1 -1
- package/dist/components/EntityTreeTable/components/IdColumnHeader.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useEntityTreeState.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableColumns.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTableData.js.map +1 -1
- package/dist/components/EntityTreeTable/hooks/useTreeOperationsWithDirectFetch.js.map +1 -1
- package/dist/components/EntityUpload/EntityUpload.js.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.d.ts.map +1 -1
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js +15 -14
- package/dist/components/EntityViewScopeEditor/EntityViewMaskEditor.js.map +1 -1
- package/dist/components/ExperimentalMode/ExperimentalMode.js.map +1 -1
- package/dist/components/ExternalFileHandleLink/ExternalFileHandleLink.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/QueryPerFacetPlotsCard.js.map +1 -1
- package/dist/components/FeaturedDataTabs/SingleQueryFacetPlotsCards.js.map +1 -1
- package/dist/components/FeaturedResearch/FeaturedResearch.js.map +1 -1
- package/dist/components/FeaturedToolsList/FeaturedToolsList.js.map +1 -1
- package/dist/components/FilePreview/FileHandleContentRenderer.js.map +1 -1
- package/dist/components/FilePreview/HtmlPreview/HtmlPreview.js.map +1 -1
- package/dist/components/FilePreview/PreviewRendererType.js.map +1 -1
- package/dist/components/Forum/DiscussionReply.d.ts +1 -0
- package/dist/components/Forum/DiscussionReply.d.ts.map +1 -1
- package/dist/components/Forum/DiscussionReply.js +19 -19
- package/dist/components/Forum/DiscussionReply.js.map +1 -1
- package/dist/components/Forum/DiscussionSearchResult.js.map +1 -1
- package/dist/components/Forum/DiscussionThread.d.ts +1 -0
- package/dist/components/Forum/DiscussionThread.d.ts.map +1 -1
- package/dist/components/Forum/DiscussionThread.js +73 -72
- package/dist/components/Forum/DiscussionThread.js.map +1 -1
- package/dist/components/Forum/ForumTable.js.map +1 -1
- package/dist/components/Forum/ForumThreadEditor.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearchUtils.js.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.d.ts.map +1 -1
- package/dist/components/GenericCard/BioregistryRules.js +7 -3
- package/dist/components/GenericCard/BioregistryRules.js.map +1 -1
- package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/GenericCard.js +12 -7
- package/dist/components/GenericCard/GenericCard.js.map +1 -1
- package/dist/components/GenericCard/Linkify.js.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +105 -105
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/Goals/Goals.Mobile.js.map +1 -1
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Mobile.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.Mobile.js.map +1 -1
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/GoogleMap/SynapseUserMarker.js.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/HasAccess/useHasAccess.js.map +1 -1
- package/dist/components/HeaderCard/HeaderCardV2.js.map +1 -1
- package/dist/components/HeaderCard.d.ts +6 -1
- package/dist/components/HeaderCard.d.ts.map +1 -1
- package/dist/components/HeaderCard.js +107 -76
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IconList.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +2 -1
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/ImageCardGridWithLinks/ImageCardGridWithLinks.js.map +1 -1
- package/dist/components/ImageFromSynapseTable.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldDescriptionTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldItemTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/Markdown/MarkdownGithub.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/SynapseWikiContext.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownProvenanceGraph.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.d.ts.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js +45 -39
- package/dist/components/OAuthClientAclEditor/OAuthClientAclEditor.js.map +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js.map +1 -1
- package/dist/components/PageProgress/PageProgress.js.map +1 -1
- package/dist/components/Plot/DotPlot.js.map +1 -1
- package/dist/components/Plot/Plot.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/ThemesPlot.js.map +1 -1
- package/dist/components/Plot/UpsetPlot.js.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.d.ts.map +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditor.js +43 -41
- package/dist/components/PortalAclEditor/PortalAclEditor.js.map +1 -1
- package/dist/components/PortalFeaturedPartners/PortalFeaturedPartners.js.map +1 -1
- package/dist/components/PortalList/CreatePortalModal.js.map +1 -1
- package/dist/components/ProgrammaticInstructionsModal/ProgrammaticInstructionsModal.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/Programs/Programs.Mobile.js.map +1 -1
- package/dist/components/Programs/Programs.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraphUtils.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceUtils.js.map +1 -1
- package/dist/components/QueryCount/QueryCount.js.map +1 -1
- package/dist/components/QueryCountButton/QueryCountButton.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/QueryWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/TableRowSelectionState.js.map +1 -1
- package/dist/components/QueryWrapper/generateEncodedPathAndQueryForSelectedFacetURL.js.map +1 -1
- package/dist/components/QueryWrapper/useGetQueryMetadata.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RecentPublicationsGrid/RecentPublicationsGrid.js.map +1 -1
- package/dist/components/ReleaseCard/ReleaseCardUtils.js.map +1 -1
- package/dist/components/ResizableContainer/hooks/useResizable.js.map +1 -1
- package/dist/components/Resources/Resources.Mobile.js.map +1 -1
- package/dist/components/Resources/Resources.js.map +1 -1
- package/dist/components/RowDataTable/RowDataTableWithQuery.js.map +1 -1
- package/dist/components/SageResourcesPopover/SageResourcesPopover.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/SetManagedAccessRequirementFields/SetManagedAccessRequirementFields.js.map +1 -1
- package/dist/components/SmartLink/SmartButton.js.map +1 -1
- package/dist/components/SmartLink/SmartLink.js.map +1 -1
- package/dist/components/SourceAppImage.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js.map +1 -1
- package/dist/components/StatisticsPlot.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js.map +1 -1
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js.map +1 -1
- package/dist/components/SustainabilityScorecard/SustainabilityScorecard.js.map +1 -1
- package/dist/components/SynapseChat/GridAgentChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatInteraction.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseChat/extractMessageFromTraceEvent.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseForm/SummaryTable.js.map +1 -1
- package/dist/components/SynapseForm/SynapseForm.js +4 -2
- package/dist/components/SynapseForm/SynapseForm.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseByTheNumbersItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseFeatureItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageSearch.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseInActionItem.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapsePlans.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseTrendingProjects.js.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts +8 -7
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.d.ts.map +1 -1
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js +173 -164
- package/dist/components/SynapseNavDrawer/SynapseNavDrawer.js.map +1 -1
- package/dist/components/SynapsePortalBanners/SynapsePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanel.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPageResults.js.map +1 -1
- package/dist/components/SynapseTable/EntityIDColumnCopyIcon.js.map +1 -1
- package/dist/components/SynapseTable/NoContentPlaceholderType.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelFormFields/DefaultValueField.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.d.ts +1 -0
- package/dist/components/TanStackTable/ColumnHeader.d.ts.map +1 -1
- package/dist/components/TanStackTable/ColumnHeader.js +8 -8
- package/dist/components/TanStackTable/ColumnHeader.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/TableBody.js.map +1 -1
- package/dist/components/TeamSubjectsSelector/TeamSubjectsSelector.js.map +1 -1
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePhase.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlot.js.map +1 -1
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js.map +1 -1
- package/dist/components/UserCard/Avatar.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListGroups/UserCardListGroups.Mobile.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/UserOrTeamBadge/useUserOrTeam.js.map +1 -1
- package/dist/components/UserProfileLinks/UserProjects.js.map +1 -1
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/WikiMarkdownEditor/WikiMarkdownEditor.js.map +1 -1
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js.map +1 -1
- package/dist/components/dataaccess/AccessApprovalsTable.js.map +1 -1
- package/dist/components/dataaccess/AccessRequestSubmissionTable.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.d.ts.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +157 -148
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js.map +1 -1
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.d.ts.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +20 -19
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/entity/page/CreatedByModifiedBy.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/useDataCiteUsage.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetMentions.js.map +1 -1
- package/dist/components/error/ErrorPage.js.map +1 -1
- package/dist/components/favorites/FavoritesPage.js.map +1 -1
- package/dist/components/file/upload/BasicFileHandleUpload.js.map +1 -1
- package/dist/components/layout/SWCHeader.d.ts +9 -0
- package/dist/components/layout/SWCHeader.d.ts.map +1 -0
- package/dist/components/layout/SWCHeader.js +19 -0
- package/dist/components/layout/SWCHeader.js.map +1 -0
- package/dist/components/layout/SWCPageLayout.d.ts +9 -0
- package/dist/components/layout/SWCPageLayout.d.ts.map +1 -0
- package/dist/components/layout/SWCPageLayout.js +14 -0
- package/dist/components/layout/SWCPageLayout.js.map +1 -0
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/row_renderers/utils/ChipContainer.js.map +1 -1
- package/dist/components/styled/StyledPopover.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +2 -1
- package/dist/components/table/CsvPreview/CsvPreview.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js.map +1 -1
- package/dist/components/trash/TrashCanList.js.map +1 -1
- package/dist/components/widgets/FileHandleLink.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseVideo.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilterUI.js.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.d.ts.map +1 -1
- package/dist/features/curator/GridPage/components/GridPageTitle.js +23 -30
- package/dist/features/curator/GridPage/components/GridPageTitle.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts +2 -0
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/CuratorDashboard.js +45 -0
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +9 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.js +106 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +12 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +52 -0
- package/dist/features/curator/dashboard/components/NextStepButton.css +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts +14 -0
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.js +35 -0
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.module.js +11 -0
- package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.module.scss +57 -0
- package/dist/features/curator/dashboard/components/UserOrTeamChip.css +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.module.js +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/UserOrTeamChip.module.scss +5 -5
- package/dist/features/curator/dashboard/components/shared.css +1 -0
- package/dist/features/curator/dashboard/components/shared.module.js +5 -0
- package/dist/features/curator/dashboard/components/shared.module.js.map +1 -0
- package/dist/features/curator/dashboard/components/shared.module.scss +8 -0
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -2
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +16 -34
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGetOrCreateGridSessionForSource.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts +10 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +37 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts +5 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/constants.js +6 -0
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -0
- package/dist/mocks/challenge/mockChallenge.js.map +1 -1
- package/dist/mocks/entity/mockDataset.js.map +1 -1
- package/dist/mocks/entity/mockDatasetCollection.js.map +1 -1
- package/dist/mocks/entity/mockFileEntity.js.map +1 -1
- package/dist/mocks/entity/mockFileView.js.map +1 -1
- package/dist/mocks/entity/mockGeneratedEntityData.js.map +1 -1
- package/dist/mocks/entity/mockProject.js.map +1 -1
- package/dist/mocks/entity/mockProjectView.js.map +1 -1
- package/dist/mocks/entity/mockRootEntity.js.map +1 -1
- package/dist/mocks/entity/mockTableEntity.js.map +1 -1
- package/dist/mocks/mockWiki.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/challengeHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/changePasswordHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/discussionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/fileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/gridHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/personalAccessTokenHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/teamHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/wikiHandlers.js.map +1 -1
- package/dist/mocks/provenance/mockActivity.js.map +1 -1
- package/dist/mocks/query/mockReleaseCardsTableQueryResultBundle.js.map +1 -1
- package/dist/ror-client/index.js.map +1 -1
- package/dist/style/components/_cards.scss +4 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +2 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/HttpClient.js.map +1 -1
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +1 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +3 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/QueryMatching.test-utils.js.map +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useRestrictionInformation.js.map +1 -1
- package/dist/synapse-queries/doi/useDOI.js.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useEntityBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useExportTableQueryToAnalysisPlatform.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToTerra.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/entity/useSchema.js.map +1 -1
- package/dist/synapse-queries/file/UploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useDirectUploadToS3.js.map +1 -1
- package/dist/synapse-queries/file/useFiles.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.d.ts +1 -0
- package/dist/synapse-queries/forum/useThread.d.ts.map +1 -1
- package/dist/synapse-queries/forum/useThread.js +19 -12
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts +2 -0
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.d.ts.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useExportGrid.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/grid/useImportCsvIntoGrid.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useGetCsvPreview.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/user/useGetUserChallenges.js.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/synapse-queries/user/useUserGroupHeader.js.map +1 -1
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -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 +7 -4
- package/dist/utils/AppUtils/session/ApplicationSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/SynapseSessionManager.js.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/challenge/evaluation/EvaluationUtils.js.map +1 -1
- package/dist/utils/context/SynapseContext.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.d.ts +4 -0
- package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js +12 -1
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.d.ts.map +1 -1
- package/dist/utils/functions/EntityTypeUtils.js +15 -4
- package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
- package/dist/utils/functions/GridApiUtils.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/RealmUtils.d.ts +4 -0
- package/dist/utils/functions/RealmUtils.d.ts.map +1 -1
- package/dist/utils/functions/RealmUtils.js +9 -3
- package/dist/utils/functions/RealmUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.test-utils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/getDataFromFromStorage.js.map +1 -1
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/hooks/useConfirmItems.js.map +1 -1
- package/dist/utils/hooks/useCookiePreferences.js.map +1 -1
- package/dist/utils/hooks/useCreateShortUrl.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useDirectDownloadHandler.js.map +1 -1
- package/dist/utils/hooks/useGetGoalData.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useImageUrlUtils.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useTableQueryReducer.js.map +1 -1
- package/dist/utils/hooks/useIsBot.js.map +1 -1
- package/dist/utils/hooks/useListState.js.map +1 -1
- package/dist/utils/hooks/useLogin.d.ts.map +1 -1
- package/dist/utils/hooks/useLogin.js +53 -52
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useMutuallyExclusiveState.js.map +1 -1
- package/dist/utils/hooks/useOverlay.js.map +1 -1
- package/dist/utils/hooks/usePreFetchResource.js.map +1 -1
- package/dist/utils/hooks/useQuerySearchParam.js.map +1 -1
- package/dist/utils/hooks/useScrollFadeTransition.js.map +1 -1
- package/dist/utils/hooks/useSet.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/hooks/useTableImageUrl.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreatePathsAndGetParentId.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useLinkFileEntityToURL.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/usePrepareFileEntityUpload.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useTrackFileUploads.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFileEntities.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useUploadFiles.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/willUploadsExceedStorageLimit.js.map +1 -1
- package/dist/utils/html/TargetEnum.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,33 +1,438 @@
|
|
|
1
|
-
import e from "../../
|
|
2
|
-
import {
|
|
3
|
-
import { c as
|
|
1
|
+
import { SynapseSpinner as e } from "../../LoadingScreen/LoadingScreen.js";
|
|
2
|
+
import { Fragment as t, useState as n } from "react";
|
|
3
|
+
import { Box as r, Chip as i, Collapse as a, Divider as o, Link as s, Stack as c, Tab as l, Tabs as u, Typography as d } from "@mui/material";
|
|
4
|
+
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
5
|
+
import { c as h } from "react/compiler-runtime";
|
|
4
6
|
//#region src/components/DataGrid/components/ValidationAlert.tsx
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
function g(e, t, n) {
|
|
8
|
+
return n.findIndex((n) => t[n] === e);
|
|
9
|
+
}
|
|
10
|
+
function _(e) {
|
|
11
|
+
return e === "_row" ? "Row-level" : e;
|
|
12
|
+
}
|
|
13
|
+
function ee(e) {
|
|
14
|
+
let t = h(14), { columnName: n, message: i, rowIndex: a } = e, o = ` (Row ${a + 1})`;
|
|
15
|
+
if (n === "_row") {
|
|
16
|
+
let e;
|
|
17
|
+
t[0] === Symbol.for("react.memo_cache_sentinel") ? (e = { fontWeight: "normal" }, t[0] = e) : e = t[0];
|
|
18
|
+
let n;
|
|
19
|
+
return t[1] !== i || t[2] !== o ? (n = /* @__PURE__ */ p(f, { children: /* @__PURE__ */ m(r, {
|
|
20
|
+
component: "span",
|
|
21
|
+
sx: e,
|
|
22
|
+
children: [i, o]
|
|
23
|
+
}) }), t[1] = i, t[2] = o, t[3] = n) : n = t[3], n;
|
|
24
|
+
}
|
|
25
|
+
let s;
|
|
26
|
+
t[4] === Symbol.for("react.memo_cache_sentinel") ? (s = { fontWeight: "bold" }, t[4] = s) : s = t[4];
|
|
27
|
+
let c;
|
|
28
|
+
t[5] === n ? c = t[6] : (c = /* @__PURE__ */ p(r, {
|
|
29
|
+
component: "span",
|
|
30
|
+
sx: s,
|
|
31
|
+
children: n
|
|
32
|
+
}), t[5] = n, t[6] = c);
|
|
33
|
+
let l;
|
|
34
|
+
t[7] === Symbol.for("react.memo_cache_sentinel") ? (l = { fontWeight: "normal" }, t[7] = l) : l = t[7];
|
|
12
35
|
let u;
|
|
13
|
-
|
|
36
|
+
t[8] !== i || t[9] !== o ? (u = /* @__PURE__ */ m(r, {
|
|
37
|
+
component: "span",
|
|
38
|
+
sx: l,
|
|
39
|
+
children: [
|
|
40
|
+
" — ",
|
|
41
|
+
i,
|
|
42
|
+
o
|
|
43
|
+
]
|
|
44
|
+
}), t[8] = i, t[9] = o, t[10] = u) : u = t[10];
|
|
14
45
|
let d;
|
|
15
|
-
|
|
46
|
+
return t[11] !== c || t[12] !== u ? (d = /* @__PURE__ */ m(f, { children: [c, u] }), t[11] = c, t[12] = u, t[13] = d) : d = t[13], d;
|
|
47
|
+
}
|
|
48
|
+
var te = {
|
|
49
|
+
textDecoration: "none",
|
|
50
|
+
cursor: "pointer",
|
|
51
|
+
"&:hover": { textDecoration: "underline" }
|
|
52
|
+
}, ne = {
|
|
53
|
+
border: "1px solid",
|
|
54
|
+
borderLeft: "4px solid",
|
|
55
|
+
borderRadius: 1,
|
|
56
|
+
mb: 1
|
|
57
|
+
}, v = {
|
|
58
|
+
minHeight: 36,
|
|
59
|
+
py: .5
|
|
60
|
+
}, y = {
|
|
61
|
+
display: "flex",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
gap: .5,
|
|
64
|
+
mb: .25
|
|
65
|
+
}, b = {
|
|
66
|
+
pl: 2,
|
|
67
|
+
display: "flex",
|
|
68
|
+
alignItems: "baseline",
|
|
69
|
+
flexWrap: "wrap",
|
|
70
|
+
gap: .5,
|
|
71
|
+
py: .25
|
|
72
|
+
};
|
|
73
|
+
function x(e) {
|
|
74
|
+
let n = h(9), { rows: i, navCol: a, onNavigateToCell: o } = e, c;
|
|
75
|
+
if (n[0] !== a || n[1] !== o || n[2] !== i) {
|
|
76
|
+
let e;
|
|
77
|
+
n[4] !== a || n[5] !== o ? (e = (e, n) => {
|
|
78
|
+
let { rowIndex: i, pending: c } = e;
|
|
79
|
+
return /* @__PURE__ */ m(t, { children: [n > 0 && /* @__PURE__ */ p(r, {
|
|
80
|
+
component: "span",
|
|
81
|
+
"aria-hidden": !0,
|
|
82
|
+
sx: {
|
|
83
|
+
color: "text.disabled",
|
|
84
|
+
userSelect: "none"
|
|
85
|
+
},
|
|
86
|
+
children: "·"
|
|
87
|
+
}), /* @__PURE__ */ p(s, {
|
|
88
|
+
component: "button",
|
|
89
|
+
variant: "body1",
|
|
90
|
+
color: "text.secondary",
|
|
91
|
+
onClick: () => o(i, a),
|
|
92
|
+
sx: {
|
|
93
|
+
...te,
|
|
94
|
+
opacity: c ? .5 : 1
|
|
95
|
+
},
|
|
96
|
+
children: n === 0 ? `Row ${i + 1}` : i + 1
|
|
97
|
+
})] }, i);
|
|
98
|
+
}, n[4] = a, n[5] = o, n[6] = e) : e = n[6], c = i.map(e), n[0] = a, n[1] = o, n[2] = i, n[3] = c;
|
|
99
|
+
} else c = n[3];
|
|
100
|
+
let l;
|
|
101
|
+
return n[7] === c ? l = n[8] : (l = /* @__PURE__ */ p(f, { children: c }), n[7] = c, n[8] = l), l;
|
|
102
|
+
}
|
|
103
|
+
function re(e) {
|
|
104
|
+
let t = h(6), { groups: n, columnNames: a, columnOrder: s, onNavigateToCell: l } = e, u;
|
|
105
|
+
t[0] === Symbol.for("react.memo_cache_sentinel") ? (u = /* @__PURE__ */ p(o, {}), t[0] = u) : u = t[0];
|
|
16
106
|
let f;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
107
|
+
return t[1] !== a || t[2] !== s || t[3] !== n || t[4] !== l ? (f = /* @__PURE__ */ p(c, {
|
|
108
|
+
divider: u,
|
|
109
|
+
spacing: 1,
|
|
110
|
+
children: Array.from(n.entries()).map((e) => {
|
|
111
|
+
let [t, n] = e, o = Array.from(n.values()).reduce(ie, 0), c = Math.max(0, g(t, a, s));
|
|
112
|
+
return /* @__PURE__ */ m(r, { children: [/* @__PURE__ */ m(r, {
|
|
113
|
+
sx: y,
|
|
114
|
+
children: [/* @__PURE__ */ p(d, {
|
|
115
|
+
variant: "body1",
|
|
116
|
+
fontWeight: "bold",
|
|
117
|
+
children: _(t)
|
|
118
|
+
}), /* @__PURE__ */ p(i, {
|
|
119
|
+
label: o,
|
|
120
|
+
color: "error",
|
|
121
|
+
size: "small"
|
|
122
|
+
})]
|
|
123
|
+
}), Array.from(n.entries()).map((e) => {
|
|
124
|
+
let [t, n] = e;
|
|
125
|
+
return /* @__PURE__ */ m(r, {
|
|
126
|
+
sx: b,
|
|
127
|
+
children: [/* @__PURE__ */ p(d, {
|
|
128
|
+
variant: "body1",
|
|
129
|
+
color: "text.secondary",
|
|
130
|
+
sx: { mr: .5 },
|
|
131
|
+
children: t
|
|
132
|
+
}), /* @__PURE__ */ p(x, {
|
|
133
|
+
rows: n,
|
|
134
|
+
navCol: c,
|
|
135
|
+
onNavigateToCell: l
|
|
136
|
+
})]
|
|
137
|
+
}, t);
|
|
138
|
+
})] }, t);
|
|
139
|
+
})
|
|
140
|
+
}), t[1] = a, t[2] = s, t[3] = n, t[4] = l, t[5] = f) : f = t[5], f;
|
|
141
|
+
}
|
|
142
|
+
function ie(e, t) {
|
|
143
|
+
return e + t.length;
|
|
144
|
+
}
|
|
145
|
+
function ae(e) {
|
|
146
|
+
let t = h(6), { groups: n, columnNames: a, columnOrder: s, onNavigateToCell: l } = e, u;
|
|
147
|
+
t[0] === Symbol.for("react.memo_cache_sentinel") ? (u = /* @__PURE__ */ p(o, {}), t[0] = u) : u = t[0];
|
|
148
|
+
let f;
|
|
149
|
+
return t[1] !== a || t[2] !== s || t[3] !== n || t[4] !== l ? (f = /* @__PURE__ */ p(c, {
|
|
150
|
+
divider: u,
|
|
151
|
+
spacing: 1,
|
|
152
|
+
children: Array.from(n.entries()).map((e) => {
|
|
153
|
+
let [t, n] = e, o = Array.from(n.values()).reduce(oe, 0);
|
|
154
|
+
return /* @__PURE__ */ m(r, { children: [/* @__PURE__ */ m(r, {
|
|
155
|
+
sx: y,
|
|
156
|
+
children: [/* @__PURE__ */ p(d, {
|
|
157
|
+
variant: "body1",
|
|
158
|
+
fontWeight: "bold",
|
|
159
|
+
children: t
|
|
160
|
+
}), /* @__PURE__ */ p(i, {
|
|
161
|
+
label: o,
|
|
162
|
+
color: "error",
|
|
163
|
+
size: "small"
|
|
164
|
+
})]
|
|
165
|
+
}), Array.from(n.entries()).map((e) => {
|
|
166
|
+
let [t, n] = e, i = Math.max(0, g(t, a, s));
|
|
167
|
+
return /* @__PURE__ */ m(r, {
|
|
168
|
+
sx: b,
|
|
169
|
+
children: [/* @__PURE__ */ p(d, {
|
|
170
|
+
variant: "body1",
|
|
171
|
+
color: "text.secondary",
|
|
172
|
+
sx: {
|
|
173
|
+
mr: .5,
|
|
174
|
+
fontStyle: "italic"
|
|
175
|
+
},
|
|
176
|
+
children: _(t)
|
|
177
|
+
}), /* @__PURE__ */ p(x, {
|
|
178
|
+
rows: n,
|
|
179
|
+
navCol: i,
|
|
180
|
+
onNavigateToCell: l
|
|
181
|
+
})]
|
|
182
|
+
}, t);
|
|
183
|
+
})] }, t);
|
|
184
|
+
})
|
|
185
|
+
}), t[1] = a, t[2] = s, t[3] = n, t[4] = l, t[5] = f) : f = t[5], f;
|
|
186
|
+
}
|
|
187
|
+
function oe(e, t) {
|
|
188
|
+
return e + t.length;
|
|
189
|
+
}
|
|
190
|
+
var se = (t) => {
|
|
191
|
+
let f = h(65), { rowValues: _, columnNames: y, columnOrder: b, onNavigateToCell: x, isLoading: ie } = t, oe = ie === void 0 ? !1 : ie, [se, le] = n(!1), [S, ue] = n("row"), C;
|
|
192
|
+
f[0] === _ ? C = f[1] : (C = [], _.forEach((e, t) => {
|
|
193
|
+
let n = e.__validationStatus;
|
|
194
|
+
if (n !== "invalid" && n !== "pending") return;
|
|
195
|
+
let r = n === "pending";
|
|
196
|
+
e.__cellValidationResults?.forEach((e, n) => {
|
|
197
|
+
e.forEach((e) => C.push({
|
|
198
|
+
rowIndex: t,
|
|
199
|
+
columnName: n,
|
|
200
|
+
message: e,
|
|
201
|
+
pending: r
|
|
202
|
+
}));
|
|
203
|
+
});
|
|
204
|
+
}), f[0] = _, f[1] = C);
|
|
205
|
+
let w = C, T;
|
|
206
|
+
f[2] === w ? T = f[3] : (T = /* @__PURE__ */ new Map(), w.forEach((e) => {
|
|
207
|
+
let { rowIndex: t, columnName: n, message: r, pending: i } = e;
|
|
208
|
+
T.has(n) || T.set(n, /* @__PURE__ */ new Map());
|
|
209
|
+
let a = T.get(n);
|
|
210
|
+
a.has(r) || a.set(r, []), a.get(r).push({
|
|
211
|
+
rowIndex: t,
|
|
212
|
+
pending: i
|
|
213
|
+
});
|
|
214
|
+
}), f[2] = w, f[3] = T);
|
|
215
|
+
let de = T, E;
|
|
216
|
+
f[4] === w ? E = f[5] : (E = /* @__PURE__ */ new Map(), w.forEach((e) => {
|
|
217
|
+
let { rowIndex: t, columnName: n, message: r, pending: i } = e;
|
|
218
|
+
E.has(r) || E.set(r, /* @__PURE__ */ new Map());
|
|
219
|
+
let a = E.get(r);
|
|
220
|
+
a.has(n) || a.set(n, []), a.get(n).push({
|
|
221
|
+
rowIndex: t,
|
|
222
|
+
pending: i
|
|
223
|
+
});
|
|
224
|
+
}), f[4] = w, f[5] = E);
|
|
225
|
+
let D = E, O = se && w.length > 0, k = w[0];
|
|
226
|
+
if (oe) {
|
|
227
|
+
let t;
|
|
228
|
+
return f[6] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ m(r, {
|
|
229
|
+
sx: {
|
|
230
|
+
...ne,
|
|
231
|
+
borderColor: "divider",
|
|
232
|
+
borderLeftColor: "divider",
|
|
233
|
+
px: 2,
|
|
234
|
+
py: 2,
|
|
235
|
+
display: "flex",
|
|
236
|
+
alignItems: "center",
|
|
237
|
+
gap: 1
|
|
238
|
+
},
|
|
239
|
+
children: [/* @__PURE__ */ p(e, {
|
|
240
|
+
size: 14,
|
|
241
|
+
margin: "0"
|
|
242
|
+
}), /* @__PURE__ */ p(d, {
|
|
243
|
+
variant: "body1",
|
|
244
|
+
color: "text.secondary",
|
|
245
|
+
children: "Loading validation errors…"
|
|
246
|
+
})]
|
|
247
|
+
}), f[6] = t) : t = f[6], t;
|
|
248
|
+
}
|
|
249
|
+
if (w.length === 0) {
|
|
250
|
+
let e;
|
|
251
|
+
return f[7] === Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ p(r, {
|
|
252
|
+
sx: {
|
|
253
|
+
...ne,
|
|
254
|
+
borderColor: "success.main",
|
|
255
|
+
borderLeftColor: "success.main",
|
|
256
|
+
px: 2,
|
|
257
|
+
py: 2
|
|
258
|
+
},
|
|
259
|
+
children: /* @__PURE__ */ p(d, {
|
|
260
|
+
variant: "body1",
|
|
261
|
+
color: "success.main",
|
|
262
|
+
children: "No validation errors"
|
|
263
|
+
})
|
|
264
|
+
}), f[7] = e) : e = f[7], e;
|
|
265
|
+
}
|
|
266
|
+
let A;
|
|
267
|
+
f[8] === Symbol.for("react.memo_cache_sentinel") ? (A = {
|
|
268
|
+
...ne,
|
|
269
|
+
borderColor: "error.main",
|
|
270
|
+
borderLeftColor: "error.main"
|
|
271
|
+
}, f[8] = A) : A = f[8];
|
|
272
|
+
let j, M;
|
|
273
|
+
f[9] === Symbol.for("react.memo_cache_sentinel") ? (j = {
|
|
274
|
+
display: "flex",
|
|
275
|
+
alignItems: "center",
|
|
276
|
+
px: 2,
|
|
277
|
+
py: 2,
|
|
278
|
+
gap: 1
|
|
279
|
+
}, M = /* @__PURE__ */ p(d, {
|
|
280
|
+
variant: "body1",
|
|
281
|
+
fontWeight: "bold",
|
|
282
|
+
children: "Validation errors"
|
|
283
|
+
}), f[9] = j, f[10] = M) : (j = f[9], M = f[10]);
|
|
284
|
+
let N;
|
|
285
|
+
f[11] === w.length ? N = f[12] : (N = /* @__PURE__ */ p(i, {
|
|
286
|
+
label: w.length,
|
|
287
|
+
color: "error",
|
|
288
|
+
size: "small"
|
|
289
|
+
}), f[11] = w.length, f[12] = N);
|
|
290
|
+
let P, F;
|
|
291
|
+
f[13] === Symbol.for("react.memo_cache_sentinel") ? (P = () => le(ce), F = {
|
|
292
|
+
cursor: "pointer",
|
|
293
|
+
flexShrink: 0,
|
|
294
|
+
fontWeight: "normal"
|
|
295
|
+
}, f[13] = P, f[14] = F) : (P = f[13], F = f[14]);
|
|
296
|
+
let I = O ? "Collapse" : "Expand", L;
|
|
297
|
+
f[15] === I ? L = f[16] : (L = /* @__PURE__ */ p(s, {
|
|
298
|
+
component: "button",
|
|
299
|
+
variant: "body1",
|
|
300
|
+
onClick: P,
|
|
301
|
+
sx: F,
|
|
302
|
+
children: I
|
|
303
|
+
}), f[15] = I, f[16] = L);
|
|
304
|
+
let R;
|
|
305
|
+
f[17] !== y || f[18] !== b || f[19] !== k || f[20] !== x || f[21] !== O ? (R = !O && /* @__PURE__ */ p(s, {
|
|
306
|
+
component: "button",
|
|
307
|
+
variant: "body1",
|
|
308
|
+
color: "text.secondary",
|
|
309
|
+
onClick: () => x(k.rowIndex, Math.max(0, g(k.columnName, y, b))),
|
|
310
|
+
noWrap: !0,
|
|
311
|
+
sx: {
|
|
312
|
+
textAlign: "left",
|
|
313
|
+
ml: "auto",
|
|
314
|
+
...te,
|
|
315
|
+
opacity: k.pending ? .5 : 1
|
|
316
|
+
},
|
|
317
|
+
children: /* @__PURE__ */ p(ee, {
|
|
318
|
+
columnName: k.columnName,
|
|
319
|
+
message: k.message,
|
|
320
|
+
rowIndex: k.rowIndex
|
|
321
|
+
})
|
|
322
|
+
}), f[17] = y, f[18] = b, f[19] = k, f[20] = x, f[21] = O, f[22] = R) : R = f[22];
|
|
323
|
+
let z;
|
|
324
|
+
f[23] !== R || f[24] !== N || f[25] !== L ? (z = /* @__PURE__ */ m(r, {
|
|
325
|
+
sx: j,
|
|
326
|
+
children: [
|
|
327
|
+
M,
|
|
328
|
+
N,
|
|
329
|
+
L,
|
|
330
|
+
R
|
|
331
|
+
]
|
|
332
|
+
}), f[23] = R, f[24] = N, f[25] = L, f[26] = z) : z = f[26];
|
|
333
|
+
let B;
|
|
334
|
+
f[27] === Symbol.for("react.memo_cache_sentinel") ? (B = (e, t) => ue(t), f[27] = B) : B = f[27];
|
|
335
|
+
let V, H, U, W, G;
|
|
336
|
+
f[28] === Symbol.for("react.memo_cache_sentinel") ? (V = {
|
|
337
|
+
px: 2,
|
|
338
|
+
minHeight: 36,
|
|
339
|
+
borderTop: "1px solid",
|
|
340
|
+
borderColor: "divider"
|
|
341
|
+
}, H = { style: { height: 2 } }, U = /* @__PURE__ */ p(l, {
|
|
342
|
+
label: "By row",
|
|
343
|
+
value: "row",
|
|
344
|
+
sx: v
|
|
345
|
+
}), W = /* @__PURE__ */ p(l, {
|
|
346
|
+
label: "By column",
|
|
347
|
+
value: "column",
|
|
348
|
+
sx: v
|
|
349
|
+
}), G = /* @__PURE__ */ p(l, {
|
|
350
|
+
label: "By message",
|
|
351
|
+
value: "message",
|
|
352
|
+
sx: v
|
|
353
|
+
}), f[28] = V, f[29] = H, f[30] = U, f[31] = W, f[32] = G) : (V = f[28], H = f[29], U = f[30], W = f[31], G = f[32]);
|
|
354
|
+
let K;
|
|
355
|
+
f[33] === S ? K = f[34] : (K = /* @__PURE__ */ m(u, {
|
|
356
|
+
value: S,
|
|
357
|
+
onChange: B,
|
|
358
|
+
textColor: "inherit",
|
|
359
|
+
sx: V,
|
|
360
|
+
TabIndicatorProps: H,
|
|
361
|
+
children: [
|
|
362
|
+
U,
|
|
363
|
+
W,
|
|
364
|
+
G
|
|
365
|
+
]
|
|
366
|
+
}), f[33] = S, f[34] = K);
|
|
367
|
+
let q;
|
|
368
|
+
f[35] === Symbol.for("react.memo_cache_sentinel") ? (q = {
|
|
369
|
+
px: 2,
|
|
370
|
+
py: 1,
|
|
371
|
+
maxHeight: 200,
|
|
372
|
+
overflowY: "auto"
|
|
373
|
+
}, f[35] = q) : q = f[35];
|
|
374
|
+
let J;
|
|
375
|
+
f[36] !== w || f[37] !== y || f[38] !== b || f[39] !== S || f[40] !== x ? (J = S === "row" && /* @__PURE__ */ p(c, {
|
|
376
|
+
divider: /* @__PURE__ */ p(o, {}),
|
|
377
|
+
children: w.map((e, t) => {
|
|
378
|
+
let n = Math.max(0, g(e.columnName, y, b));
|
|
379
|
+
return /* @__PURE__ */ p(s, {
|
|
380
|
+
component: "button",
|
|
381
|
+
variant: "body1",
|
|
382
|
+
color: "text.secondary",
|
|
383
|
+
onClick: () => x(e.rowIndex, n),
|
|
384
|
+
sx: {
|
|
385
|
+
textAlign: "left",
|
|
386
|
+
py: .5,
|
|
387
|
+
...te,
|
|
388
|
+
opacity: e.pending ? .5 : 1
|
|
389
|
+
},
|
|
390
|
+
children: /* @__PURE__ */ p(ee, {
|
|
391
|
+
columnName: e.columnName,
|
|
392
|
+
message: e.message,
|
|
393
|
+
rowIndex: e.rowIndex
|
|
394
|
+
})
|
|
395
|
+
}, t);
|
|
396
|
+
})
|
|
397
|
+
}), f[36] = w, f[37] = y, f[38] = b, f[39] = S, f[40] = x, f[41] = J) : J = f[41];
|
|
398
|
+
let Y;
|
|
399
|
+
f[42] !== de || f[43] !== y || f[44] !== b || f[45] !== S || f[46] !== x ? (Y = S === "column" && /* @__PURE__ */ p(re, {
|
|
400
|
+
groups: de,
|
|
401
|
+
columnNames: y,
|
|
402
|
+
columnOrder: b,
|
|
403
|
+
onNavigateToCell: x
|
|
404
|
+
}), f[42] = de, f[43] = y, f[44] = b, f[45] = S, f[46] = x, f[47] = Y) : Y = f[47];
|
|
405
|
+
let X;
|
|
406
|
+
f[48] !== D || f[49] !== y || f[50] !== b || f[51] !== S || f[52] !== x ? (X = S === "message" && /* @__PURE__ */ p(ae, {
|
|
407
|
+
groups: D,
|
|
408
|
+
columnNames: y,
|
|
409
|
+
columnOrder: b,
|
|
410
|
+
onNavigateToCell: x
|
|
411
|
+
}), f[48] = D, f[49] = y, f[50] = b, f[51] = S, f[52] = x, f[53] = X) : X = f[53];
|
|
412
|
+
let Z;
|
|
413
|
+
f[54] !== J || f[55] !== Y || f[56] !== X ? (Z = /* @__PURE__ */ m(r, {
|
|
414
|
+
sx: q,
|
|
415
|
+
children: [
|
|
416
|
+
J,
|
|
417
|
+
Y,
|
|
418
|
+
X
|
|
419
|
+
]
|
|
420
|
+
}), f[54] = J, f[55] = Y, f[56] = X, f[57] = Z) : Z = f[57];
|
|
421
|
+
let Q;
|
|
422
|
+
f[58] !== O || f[59] !== K || f[60] !== Z ? (Q = /* @__PURE__ */ m(a, {
|
|
423
|
+
in: O,
|
|
424
|
+
children: [K, Z]
|
|
425
|
+
}), f[58] = O, f[59] = K, f[60] = Z, f[61] = Q) : Q = f[61];
|
|
426
|
+
let $;
|
|
427
|
+
return f[62] !== z || f[63] !== Q ? ($ = /* @__PURE__ */ m(r, {
|
|
428
|
+
sx: A,
|
|
429
|
+
children: [z, Q]
|
|
430
|
+
}), f[62] = z, f[63] = Q, f[64] = $) : $ = f[64], $;
|
|
26
431
|
};
|
|
27
|
-
function
|
|
28
|
-
return
|
|
432
|
+
function ce(e) {
|
|
433
|
+
return !e;
|
|
29
434
|
}
|
|
30
435
|
//#endregion
|
|
31
|
-
export {
|
|
436
|
+
export { se as ValidationAlert };
|
|
32
437
|
|
|
33
438
|
//# sourceMappingURL=ValidationAlert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationAlert.js","names":["FullWidthAlert","DataGridRow","ValidationAlertProps","selectedRowIndex","rowValues","ValidationAlert","t0","$","_c","selectedRow","validationMessages","__validationResults","allValidationMessages","Array","isArray","length","t1","map","_temp","t2","t3","Symbol","for","marginTop","t4","msg"],"sources":["../../../../src/components/DataGrid/components/ValidationAlert.tsx"],"sourcesContent":["import FullWidthAlert from '../../FullWidthAlert/FullWidthAlert'\nimport { DataGridRow } from '../DataGridTypes'\n\ntype ValidationAlertProps = {\n selectedRowIndex: number | null\n rowValues: DataGridRow[]\n}\n\nexport const ValidationAlert = ({\n selectedRowIndex,\n rowValues,\n}: ValidationAlertProps) => {\n if (selectedRowIndex === null) return null\n\n const selectedRow = rowValues[selectedRowIndex]\n if (!selectedRow) return null\n\n const validationMessages =\n selectedRow.__validationResults?.allValidationMessages\n if (!Array.isArray(validationMessages) || validationMessages.length === 0) {\n return null\n }\n\n return (\n <FullWidthAlert\n variant=\"warning\"\n title=\"Validation Messages For Selected Row:\"\n isGlobal={false}\n description={\n <ul>\n {validationMessages.map((msg: string) => (\n <li key={msg}>{msg}</li>\n ))}\n </ul>\n }\n sx={{\n marginTop: '12px',\n }}\n />\n )\n}\n"],"mappings":";;;;AAQA,IAAaK,KAAkBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAC,EAAAL,qBAAAC,iBAAAE;AAI9B,KAAIH,MAAqB,KAAI,QAAS;CAEtC,IAAAM,IAAoBL,EAAUD;AAC9B,KAAI,CAACM,EAAW,QAAS;CAEzB,IAAAC,IACED,EAAWE,qBAA2CC;AACxD,KAAI,CAACC,MAAKC,QAASJ,EAAsD,IAA/BA,EAAkBK,WAAY,EAAC,QAChE;CACR,IAAAC;AAAA,CAAAT,EAAA,OAAAG,IAWSM,IAAAT,EAAA,MAFDS,IAAAN,EAAkBO,IAAKC,EAEtB,EAAAX,EAAA,KAAAG,GAAAH,EAAA,KAAAS;CAAA,IAAAG;AAAA,CAAAZ,EAAA,OAAAS,IACCG,IAAAZ,EAAA,MAJLY,IAAA,kBAAA,MAAA,EAAA,UACGH,GAGE,CAAA,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAY;CAAA,IAAAC;AAAA,CAAAb,EAAA,OAAAc,OAAAC,IAAA,4BAAA,IAEHF,IAAA,EAAAG,WACS,QACZ,EAAAhB,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAAA,IAAAiB;AACD,QADCjB,EAAA,OAAAY,IACDK,IAAAjB,EAAA,MAdFiB,IAAA,kBAAC,GAAD;EACU,SAAA;EACF,OAAA;EACI,UAAA;EAER,aAAAL;EAME,IAAAC;EAGJ,CAAA,EAAAb,EAAA,KAAAY,GAAAZ,EAAA,KAAAiB,IAdFA;;AAhB2B,SAAAN,EAAAO,GAAA;AAAA,QAuBnB,kBAAA,MAAA,EAAA,UAAeA,GAAS,EAAfA,EAAe"}
|
|
1
|
+
{"version":3,"file":"ValidationAlert.js","names":["DataGridRow","Box","Chip","Collapse","Divider","Link","Stack","Tab","Tabs","Typography","Fragment","useMemo","useState","SynapseSpinner","ValidationError","rowIndex","columnName","message","pending","RowEntry","GroupBy","ValidationAlertProps","rowValues","columnNames","columnOrder","onNavigateToCell","colIndex","isLoading","NavProps","getColDisplayIndex","colName","findIndex","i","colLabel","ErrorText","t0","$","_c","rowSuffix","t1","Symbol","for","fontWeight","t2","t3","t4","t5","rowLinkSx","textDecoration","cursor","const","bannerBaseSx","border","borderLeft","borderRadius","mb","tabSx","minHeight","py","groupSectionHeaderSx","display","alignItems","gap","groupSectionItemSx","pl","flexWrap","RowLinks","rows","navCol","j","color","userSelect","opacity","map","ByColumnTab","groups","Array","from","entries","messages","totalCount","values","reduce","_temp","Math","max","msg","rows_0","mr","sum","length","ByMessageTab","columns","_temp2","fontStyle","ValidationAlert","undefined","isExpanded","setIsExpanded","groupBy","setGroupBy","errors","forEach","row","status","__validationStatus","__cellValidationResults","push","allErrors","Map","rowIndex_0","columnName_0","message_0","pending_0","has","set","colGroup","get","byColumn","groups_0","rowIndex_1","columnName_1","message_1","pending_1","msgGroup","byMessage","shouldExpand","firstError","borderColor","borderLeftColor","px","t6","t7","_temp3","flexShrink","t8","t9","t10","textAlign","ml","t11","t12","_","v","t13","t14","t15","t16","t17","borderTop","style","height","t18","t19","maxHeight","overflowY","t20","error","t21","t22","t23","t24","t25","p"],"sources":["../../../../src/components/DataGrid/components/ValidationAlert.tsx"],"sourcesContent":["import { DataGridRow } from '../DataGridTypes'\nimport {\n Box,\n Chip,\n Collapse,\n Divider,\n Link,\n Stack,\n Tab,\n Tabs,\n Typography,\n} from '@mui/material'\nimport { Fragment, useMemo, useState } from 'react'\nimport { SynapseSpinner } from '../../LoadingScreen/LoadingScreen'\n\ntype ValidationError = {\n rowIndex: number\n columnName: string\n message: string\n pending: boolean\n}\n\ntype RowEntry = { rowIndex: number; pending: boolean }\n\ntype GroupBy = 'row' | 'column' | 'message'\n\ntype ValidationAlertProps = {\n rowValues: DataGridRow[]\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n isLoading?: boolean\n}\n\ntype NavProps = {\n columnNames: string[]\n columnOrder: number[]\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}\n\nfunction getColDisplayIndex(\n colName: string,\n columnNames: string[],\n columnOrder: number[],\n): number {\n return columnOrder.findIndex(i => columnNames[i] === colName)\n}\n\n/** Column name for display — '_row' becomes 'Row-level'. */\nfunction colLabel(colName: string): string {\n return colName === '_row' ? 'Row-level' : colName\n}\n\n/** Renders a column name + message pair with distinct styles. */\nfunction ErrorText({\n columnName,\n message,\n rowIndex,\n}: {\n columnName: string\n message: string\n rowIndex: number\n}) {\n const rowSuffix = ` (Row ${rowIndex + 1})`\n if (columnName === '_row') {\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n }\n return (\n <>\n <Box component=\"span\" sx={{ fontWeight: 'bold' }}>\n {columnName}\n </Box>\n <Box component=\"span\" sx={{ fontWeight: 'normal' }}>\n {' — '}\n {message}\n {rowSuffix}\n </Box>\n </>\n )\n}\n\nconst rowLinkSx = {\n textDecoration: 'none',\n cursor: 'pointer',\n '&:hover': { textDecoration: 'underline' },\n} as const\n\nconst bannerBaseSx = {\n border: '1px solid',\n borderLeft: '4px solid',\n borderRadius: 1,\n mb: 1,\n} as const\n\nconst tabSx = { minHeight: 36, py: 0.5 } as const\n\nconst groupSectionHeaderSx = {\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n mb: 0.25,\n} as const\n\nconst groupSectionItemSx = {\n pl: 2,\n display: 'flex',\n alignItems: 'baseline',\n flexWrap: 'wrap',\n gap: 0.5,\n py: 0.25,\n} as const\n\n/** Renders a list of row number links. The first shows \"Row N\"; subsequent\n * items show only the number, separated by a middle dot.\n * Pending entries are dimmed to signal unconfirmed validation state. */\nfunction RowLinks({\n rows,\n navCol,\n onNavigateToCell,\n}: {\n rows: RowEntry[]\n navCol: number\n onNavigateToCell: (rowIndex: number, colIndex: number) => void\n}) {\n return (\n <>\n {rows.map(({ rowIndex, pending }, j) => (\n <Fragment key={rowIndex}>\n {j > 0 && (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ color: 'text.disabled', userSelect: 'none' }}\n >\n ·\n </Box>\n )}\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(rowIndex, navCol)}\n sx={{ ...rowLinkSx, opacity: pending ? 0.5 : 1 }}\n >\n {j === 0 ? `Row ${rowIndex + 1}` : rowIndex + 1}\n </Link>\n </Fragment>\n ))}\n </>\n )\n}\n\nfunction ByColumnTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([colName, messages]) => {\n const totalCount = Array.from(messages.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {colLabel(colName)}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(messages.entries()).map(([msg, rows]) => (\n <Box key={msg} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5 }}\n >\n {msg}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n ))}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nfunction ByMessageTab({\n groups,\n columnNames,\n columnOrder,\n onNavigateToCell,\n}: NavProps & { groups: Map<string, Map<string, RowEntry[]>> }) {\n return (\n <Stack divider={<Divider />} spacing={1}>\n {Array.from(groups.entries()).map(([msg, columns]) => {\n const totalCount = Array.from(columns.values()).reduce(\n (sum, rows) => sum + rows.length,\n 0,\n )\n return (\n <Box key={msg}>\n <Box sx={groupSectionHeaderSx}>\n <Typography variant=\"body1\" fontWeight=\"bold\">\n {msg}\n </Typography>\n <Chip label={totalCount} color=\"error\" size=\"small\" />\n </Box>\n {Array.from(columns.entries()).map(([colName, rows]) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(colName, columnNames, columnOrder),\n )\n return (\n <Box key={colName} sx={groupSectionItemSx}>\n <Typography\n variant=\"body1\"\n color=\"text.secondary\"\n sx={{ mr: 0.5, fontStyle: 'italic' }}\n >\n {colLabel(colName)}\n </Typography>\n <RowLinks\n rows={rows}\n navCol={navCol}\n onNavigateToCell={onNavigateToCell}\n />\n </Box>\n )\n })}\n </Box>\n )\n })}\n </Stack>\n )\n}\n\nexport const ValidationAlert = ({\n rowValues,\n columnNames,\n columnOrder,\n onNavigateToCell,\n isLoading = false,\n}: ValidationAlertProps) => {\n const [isExpanded, setIsExpanded] = useState(false)\n const [groupBy, setGroupBy] = useState<GroupBy>('row')\n\n const allErrors = useMemo((): ValidationError[] => {\n const errors: ValidationError[] = []\n rowValues.forEach((row, rowIndex) => {\n const status = row.__validationStatus\n if (status !== 'invalid' && status !== 'pending') return\n const pending = status === 'pending'\n row.__cellValidationResults?.forEach((messages, columnName) => {\n messages.forEach(message =>\n errors.push({ rowIndex, columnName, message, pending }),\n )\n })\n })\n return errors\n }, [rowValues])\n\n // columnName → messageText → RowEntry[]\n const byColumn = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(columnName)) groups.set(columnName, new Map())\n const colGroup = groups.get(columnName)!\n if (!colGroup.has(message)) colGroup.set(message, [])\n colGroup.get(message)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n // messageText → columnName → RowEntry[]\n const byMessage = useMemo(() => {\n const groups = new Map<string, Map<string, RowEntry[]>>()\n allErrors.forEach(({ rowIndex, columnName, message, pending }) => {\n if (!groups.has(message)) groups.set(message, new Map())\n const msgGroup = groups.get(message)!\n if (!msgGroup.has(columnName)) msgGroup.set(columnName, [])\n msgGroup.get(columnName)!.push({ rowIndex, pending })\n })\n return groups\n }, [allErrors])\n\n const shouldExpand = isExpanded && allErrors.length > 0\n\n const firstError = allErrors[0]\n\n if (isLoading) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'divider',\n borderLeftColor: 'divider',\n px: 2,\n py: 2,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <SynapseSpinner size={14} margin=\"0\" />\n <Typography variant=\"body1\" color=\"text.secondary\">\n Loading validation errors…\n </Typography>\n </Box>\n )\n }\n\n if (allErrors.length === 0) {\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'success.main',\n borderLeftColor: 'success.main',\n px: 2,\n py: 2,\n }}\n >\n <Typography variant=\"body1\" color=\"success.main\">\n No validation errors\n </Typography>\n </Box>\n )\n }\n\n return (\n <Box\n sx={{\n ...bannerBaseSx,\n borderColor: 'error.main',\n borderLeftColor: 'error.main',\n }}\n >\n {/* Header */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n px: 2,\n py: 2,\n gap: 1,\n }}\n >\n <Typography variant=\"body1\" fontWeight=\"bold\">\n Validation errors\n </Typography>\n <Chip label={allErrors.length} color=\"error\" size=\"small\" />\n <Link\n component=\"button\"\n variant=\"body1\"\n onClick={() => setIsExpanded(p => !p)}\n sx={{ cursor: 'pointer', flexShrink: 0, fontWeight: 'normal' }}\n >\n {shouldExpand ? 'Collapse' : 'Expand'}\n </Link>\n {!shouldExpand && (\n <Link\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() =>\n onNavigateToCell(\n firstError.rowIndex,\n Math.max(\n 0,\n getColDisplayIndex(\n firstError.columnName,\n columnNames,\n columnOrder,\n ),\n ),\n )\n }\n noWrap\n sx={{\n textAlign: 'left',\n ml: 'auto',\n ...rowLinkSx,\n opacity: firstError.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={firstError.columnName}\n message={firstError.message}\n rowIndex={firstError.rowIndex}\n />\n </Link>\n )}\n </Box>\n\n {/* Expanded panel */}\n <Collapse in={shouldExpand}>\n <Tabs\n value={groupBy}\n onChange={(_, v: GroupBy) => setGroupBy(v)}\n textColor=\"inherit\"\n sx={{\n px: 2,\n minHeight: 36,\n borderTop: '1px solid',\n borderColor: 'divider',\n }}\n TabIndicatorProps={{ style: { height: 2 } }}\n >\n <Tab label=\"By row\" value=\"row\" sx={tabSx} />\n <Tab label=\"By column\" value=\"column\" sx={tabSx} />\n <Tab label=\"By message\" value=\"message\" sx={tabSx} />\n </Tabs>\n\n <Box sx={{ px: 2, py: 1, maxHeight: 200, overflowY: 'auto' }}>\n {/* ── By row ─────────────────────────────────────────── */}\n {groupBy === 'row' && (\n <Stack divider={<Divider />}>\n {allErrors.map((error, i) => {\n const navCol = Math.max(\n 0,\n getColDisplayIndex(\n error.columnName,\n columnNames,\n columnOrder,\n ),\n )\n return (\n <Link\n key={i}\n component=\"button\"\n variant=\"body1\"\n color=\"text.secondary\"\n onClick={() => onNavigateToCell(error.rowIndex, navCol)}\n sx={{\n textAlign: 'left',\n py: 0.5,\n ...rowLinkSx,\n opacity: error.pending ? 0.5 : 1,\n }}\n >\n <ErrorText\n columnName={error.columnName}\n message={error.message}\n rowIndex={error.rowIndex}\n />\n </Link>\n )\n })}\n </Stack>\n )}\n\n {/* ── By column ──────────────────────────────────────── */}\n {groupBy === 'column' && (\n <ByColumnTab\n groups={byColumn}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n\n {/* ── By message ─────────────────────────────────────── */}\n {groupBy === 'message' && (\n <ByMessageTab\n groups={byMessage}\n columnNames={columnNames}\n columnOrder={columnOrder}\n onNavigateToCell={onNavigateToCell}\n />\n )}\n </Box>\n </Collapse>\n </Box>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnResizeHandles.js","names":["useEffect","useRef","Column","useResizeObserver","ResizeHandleElement","HTMLDivElement","__cellElement","HTMLElement","__columnName","UseColumnResizeHandlesProps","wrapperRef","React","RefObject","colValues","onColumnResize","columnName","newWidth","ResizeState","startX","startWidth","handle","initialLeft","ColumnResizeManager","COLUMN_MIN_WIDTH_PX","handlesMap","Map","cleanupFunctions","Array","activeResize","gridContainer","headerRow","Element","observer","MutationObserver","constructor","name","width","updateColumns","syncHandles","initialize","querySelector","setupEventListeners","createNewHandle","Error","document","createElement","className","dataset","style","position","top","cursor","pointerEvents","zIndex","onMouseDown","e","MouseEvent","handleMouseDown","addEventListener","push","removeEventListener","appendChild","set","createOrUpdateHandle","cellElement","columnIndex","id","get","updateHandlePosition","gridHeight","scrollHeight","left","offsetLeft","offsetWidth","height","display","preventDefault","stopPropagation","currentColumnName","currentCellElement","currentLeft","parseFloat","clientX","classList","add","body","handleMouseMove","deltaX","handleMouseUp","Math","max","remove","headerCells","querySelectorAll","length","visibleColumns","Set","forEach","cell","index","cellText","textContent","trim","actualColumnIndex","findIndex","col","has","requestAnimationFrame","observe","childList","subtree","disconnect","cleanup","item","clear","useColumnResizeHandles","t0","$","_c","managerRef","t1","entry","current","contentRect","manager","success","t2","t3","t4","t5","Symbol","for"],"sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport { useResizeObserver } from '@react-hookz/web'\n\n// Extended HTMLDivElement with custom properties for resize handles\ninterface ResizeHandleElement extends HTMLDivElement {\n __cellElement?: HTMLElement\n __columnName?: string\n}\n\ntype UseColumnResizeHandlesProps = {\n wrapperRef: React.RefObject<HTMLDivElement | null>\n colValues: Column[]\n onColumnResize: (columnName: string, newWidth: number) => void\n}\n\ninterface ResizeState {\n columnName: string\n startX: number\n startWidth: number\n handle: HTMLDivElement\n initialLeft: number\n}\n\n/**\n * Encapsulates all column resize handle logic and state management.\n * Manages handle creation, positioning, mouse interactions, and cleanup.\n */\nclass ColumnResizeManager {\n private static readonly COLUMN_MIN_WIDTH_PX = 50\n\n private handlesMap = new Map<string, ResizeHandleElement>()\n private cleanupFunctions: Array<(() => void) | HTMLDivElement> = []\n private activeResize: ResizeState | null = null\n private gridContainer: HTMLElement | null = null\n private headerRow: Element | null = null\n private observer: MutationObserver | null = null\n\n constructor(\n private colValues: Column[],\n private onColumnResize: (name: string, width: number) => void,\n ) {}\n\n /**\n * Update the column values and callback without reinitializing.\n */\n updateColumns(\n colValues: Column[],\n onColumnResize: (name: string, width: number) => void,\n ): void {\n this.colValues = colValues\n this.onColumnResize = onColumnResize\n // Resync handles with new column data\n this.syncHandles()\n }\n\n /**\n * Initialize the manager by finding grid elements and setting up event listeners.\n * Returns true if initialization was successful, false otherwise.\n */\n initialize(wrapperRef: HTMLDivElement): boolean {\n const gridContainer = wrapperRef.querySelector(\n '.dsg-container',\n ) as HTMLElement\n\n if (!gridContainer) {\n return false\n }\n\n const headerRow = gridContainer.querySelector('.dsg-row.dsg-row-header')\n\n if (!headerRow) {\n return false\n }\n\n this.gridContainer = gridContainer\n this.headerRow = headerRow\n\n this.setupEventListeners()\n this.syncHandles()\n\n return true\n }\n\n /**\n * Creates a new resize handle element with mousedown listener.\n */\n private createNewHandle(columnName: string): ResizeHandleElement {\n if (!this.gridContainer) {\n throw new Error('Cannot create handle without grid container')\n }\n\n const handle = document.createElement('div') as ResizeHandleElement\n handle.className = 'column-resize-handle'\n handle.dataset.columnName = columnName\n handle.style.position = 'absolute'\n handle.style.top = '0'\n handle.style.width = '8px'\n handle.style.cursor = 'col-resize'\n handle.style.pointerEvents = 'auto'\n handle.style.zIndex = '1000'\n\n const onMouseDown = (e: MouseEvent) => this.handleMouseDown(e, handle)\n handle.addEventListener('mousedown', onMouseDown)\n\n this.cleanupFunctions.push(() =>\n handle.removeEventListener('mousedown', onMouseDown),\n )\n\n this.gridContainer.appendChild(handle)\n this.cleanupFunctions.push(handle)\n this.handlesMap.set(columnName, handle)\n\n return handle\n }\n\n /**\n * Creates or updates a handle for a given cell element.\n */\n private createOrUpdateHandle(\n cellElement: HTMLElement,\n columnIndex: number,\n ): void {\n const columnName = this.colValues[columnIndex]?.id as string\n if (!columnName || !this.gridContainer) return\n\n let handle = this.handlesMap.get(columnName)\n\n if (!handle) {\n handle = this.createNewHandle(columnName)\n }\n\n this.updateHandlePosition(handle, cellElement)\n }\n\n /**\n * Updates the position and size of a handle based on its cell element.\n */\n private updateHandlePosition(\n handle: ResizeHandleElement,\n cellElement: HTMLElement,\n ): void {\n if (!this.gridContainer) return\n\n const gridHeight = this.gridContainer.scrollHeight\n const left = cellElement.offsetLeft + cellElement.offsetWidth - 3\n\n handle.__cellElement = cellElement\n handle.__columnName = handle.dataset.columnName\n handle.style.left = `${left}px`\n handle.style.height = `${gridHeight}px`\n handle.style.display = '' // Ensure visible\n }\n\n /**\n * Handles mousedown event on a resize handle to initiate dragging.\n */\n private handleMouseDown(e: MouseEvent, handle: ResizeHandleElement): void {\n e.preventDefault()\n e.stopPropagation()\n\n // Read the column info fresh at mousedown time\n const currentColumnName = handle.__columnName\n const currentCellElement = handle.__cellElement\n\n if (!currentColumnName || !currentCellElement) return\n\n // Get current width and position at the time of mousedown\n const currentLeft = parseFloat(handle.style.left)\n\n this.activeResize = {\n columnName: currentColumnName,\n startX: e.clientX,\n startWidth: currentCellElement.offsetWidth,\n handle,\n initialLeft: currentLeft,\n }\n\n handle.classList.add('is-resizing')\n document.body.classList.add('col-resizing')\n }\n\n /**\n * Handles mousemove event to update handle position during drag.\n */\n private handleMouseMove = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { startX, handle, initialLeft } = this.activeResize\n const deltaX = e.clientX - startX\n handle.style.left = `${initialLeft + deltaX}px`\n }\n\n /**\n * Handles mouseup/mouseleave to finalize the resize operation.\n */\n private handleMouseUp = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { columnName, startX, startWidth, handle } = this.activeResize\n const deltaX = e.clientX - startX\n const newWidth = Math.max(\n ColumnResizeManager.COLUMN_MIN_WIDTH_PX,\n startWidth + deltaX,\n )\n\n handle.classList.remove('is-resizing')\n document.body.classList.remove('col-resizing')\n this.activeResize = null\n\n // Only update state when drag is complete\n this.onColumnResize(columnName, newWidth)\n }\n\n /**\n * Synchronizes handles with currently visible columns in the header.\n * Handles virtualization by showing/hiding handles as columns appear/disappear.\n */\n private syncHandles = (): void => {\n if (this.activeResize || !this.headerRow) return // Don't sync during resize\n\n const headerCells = this.headerRow.querySelectorAll('.dsg-cell')\n if (headerCells.length <= 1) return\n\n // Track which columns are currently visible\n const visibleColumns = new Set<string>()\n\n // Update or create handles for visible columns\n headerCells.forEach((cell: Element, index: number) => {\n if (index === 0) return // Skip gutter column\n\n const cellElement = cell as HTMLElement\n\n // Get the column name from the cell's text content\n // This is more reliable than using DOM index with virtualization\n const cellText = cellElement.textContent?.trim() || ''\n\n // Find the actual column index in colValues by matching the id (column name)\n // Note: col.title may be a React element (e.g. ColumnHeaderWithTooltip), so we use col.id\n const actualColumnIndex = this.colValues.findIndex(\n col => col.id === cellText,\n )\n\n if (actualColumnIndex !== -1) {\n const columnName = this.colValues[actualColumnIndex]?.id as string\n visibleColumns.add(columnName)\n this.createOrUpdateHandle(cellElement, actualColumnIndex)\n }\n })\n\n // Hide handles for columns that are no longer visible (virtualized out)\n this.handlesMap.forEach((handle, columnName) => {\n if (!visibleColumns.has(columnName)) {\n handle.style.display = 'none'\n }\n })\n }\n\n /**\n * Sets up all event listeners for mouse interactions, scroll, and virtualization.\n */\n private setupEventListeners(): void {\n if (!this.gridContainer || !this.headerRow) return\n\n // Global mouse event listeners\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('mouseup', this.handleMouseUp)\n document.addEventListener('mouseleave', this.handleMouseUp)\n\n // Scroll listener for updating handle positions\n this.gridContainer.addEventListener('scroll', this.syncHandles)\n\n // MutationObserver to detect when columns are added/removed due to virtualization\n this.observer = new MutationObserver(() => {\n // Debounce mutations to avoid excessive syncs\n requestAnimationFrame(() => {\n this.syncHandles()\n })\n })\n\n this.observer.observe(this.headerRow, {\n childList: true, // Watch for added/removed columns\n subtree: true,\n })\n\n // Register cleanup functions\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n document.removeEventListener('mouseleave', this.handleMouseUp)\n this.gridContainer?.removeEventListener('scroll', this.syncHandles)\n this.observer?.disconnect()\n })\n }\n\n /**\n * Cleans up all handles, event listeners, and resets state.\n */\n cleanup(): void {\n // Ensure cursor class is removed\n document.body.classList.remove('col-resizing')\n\n // Reset active resize state\n if (this.activeResize) {\n this.activeResize.handle?.classList.remove('is-resizing')\n this.activeResize = null\n }\n\n // Run all cleanup functions and remove handles\n this.cleanupFunctions.forEach(item => {\n if (typeof item === 'function') {\n item()\n } else {\n // It's a handle element, remove it\n item.remove()\n }\n })\n\n this.cleanupFunctions = []\n this.handlesMap.clear()\n this.gridContainer = null\n this.headerRow = null\n this.observer = null\n }\n}\n\n/**\n * Custom hook that manages interactive column resize handles for a data grid.\n * Creates, positions, and updates resize handles that allow users to drag column borders.\n * Handles virtualization, scrolling, and proper cleanup.\n */\nexport function useColumnResizeHandles({\n wrapperRef,\n colValues,\n onColumnResize,\n}: UseColumnResizeHandlesProps) {\n const managerRef = useRef<ColumnResizeManager | null>(null)\n\n // Use react-hookz useResizeObserver to detect when wrapper is rendered and sized\n useResizeObserver(wrapperRef, entry => {\n if (!wrapperRef.current || !entry || entry.contentRect.height === 0) {\n return\n }\n\n // Initialize manager if not already done\n if (!managerRef.current) {\n const manager = new ColumnResizeManager(colValues, onColumnResize)\n const success = manager.initialize(wrapperRef.current)\n if (success) {\n managerRef.current = manager\n }\n }\n })\n\n useEffect(() => {\n // Update columns when they change instead of full reinitialization\n if (managerRef.current) {\n managerRef.current.updateColumns(colValues, onColumnResize)\n }\n }, [colValues, onColumnResize])\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n managerRef.current?.cleanup()\n managerRef.current = null\n }\n }, [])\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useColumnResizeHandles.js","names":["useEffect","useRef","Column","useResizeObserver","ResizeHandleElement","HTMLDivElement","__cellElement","HTMLElement","__columnName","UseColumnResizeHandlesProps","wrapperRef","React","RefObject","colValues","onColumnResize","columnName","newWidth","ResizeState","startX","startWidth","handle","initialLeft","ColumnResizeManager","COLUMN_MIN_WIDTH_PX","handlesMap","Map","cleanupFunctions","Array","activeResize","gridContainer","headerRow","Element","observer","MutationObserver","constructor","name","width","updateColumns","syncHandles","initialize","querySelector","setupEventListeners","createNewHandle","Error","document","createElement","className","dataset","style","position","top","cursor","pointerEvents","zIndex","onMouseDown","e","MouseEvent","handleMouseDown","addEventListener","push","removeEventListener","appendChild","set","createOrUpdateHandle","cellElement","columnIndex","id","get","updateHandlePosition","gridHeight","scrollHeight","left","offsetLeft","offsetWidth","height","display","preventDefault","stopPropagation","currentColumnName","currentCellElement","currentLeft","parseFloat","clientX","classList","add","body","handleMouseMove","deltaX","handleMouseUp","Math","max","remove","headerCells","querySelectorAll","length","visibleColumns","Set","forEach","cell","index","cellText","textContent","trim","actualColumnIndex","findIndex","col","has","requestAnimationFrame","observe","childList","subtree","disconnect","cleanup","item","clear","useColumnResizeHandles","t0","$","_c","managerRef","t1","entry","current","contentRect","manager","success","t2","t3","t4","t5","Symbol","for"],"sources":["../../../../src/components/DataGrid/hooks/useColumnResizeHandles.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { Column } from '@sage-bionetworks/react-datasheet-grid'\nimport { useResizeObserver } from '@react-hookz/web'\n\n// Extended HTMLDivElement with custom properties for resize handles\ninterface ResizeHandleElement extends HTMLDivElement {\n __cellElement?: HTMLElement\n __columnName?: string\n}\n\ntype UseColumnResizeHandlesProps = {\n wrapperRef: React.RefObject<HTMLDivElement | null>\n colValues: Column[]\n onColumnResize: (columnName: string, newWidth: number) => void\n}\n\ninterface ResizeState {\n columnName: string\n startX: number\n startWidth: number\n handle: HTMLDivElement\n initialLeft: number\n}\n\n/**\n * Encapsulates all column resize handle logic and state management.\n * Manages handle creation, positioning, mouse interactions, and cleanup.\n */\nclass ColumnResizeManager {\n private static readonly COLUMN_MIN_WIDTH_PX = 50\n\n private handlesMap = new Map<string, ResizeHandleElement>()\n private cleanupFunctions: Array<(() => void) | HTMLDivElement> = []\n private activeResize: ResizeState | null = null\n private gridContainer: HTMLElement | null = null\n private headerRow: Element | null = null\n private observer: MutationObserver | null = null\n\n constructor(\n private colValues: Column[],\n private onColumnResize: (name: string, width: number) => void,\n ) {}\n\n /**\n * Update the column values and callback without reinitializing.\n */\n updateColumns(\n colValues: Column[],\n onColumnResize: (name: string, width: number) => void,\n ): void {\n this.colValues = colValues\n this.onColumnResize = onColumnResize\n // Resync handles with new column data\n this.syncHandles()\n }\n\n /**\n * Initialize the manager by finding grid elements and setting up event listeners.\n * Returns true if initialization was successful, false otherwise.\n */\n initialize(wrapperRef: HTMLDivElement): boolean {\n const gridContainer = wrapperRef.querySelector(\n '.dsg-container',\n ) as HTMLElement\n\n if (!gridContainer) {\n return false\n }\n\n const headerRow = gridContainer.querySelector('.dsg-row.dsg-row-header')\n\n if (!headerRow) {\n return false\n }\n\n this.gridContainer = gridContainer\n this.headerRow = headerRow\n\n this.setupEventListeners()\n this.syncHandles()\n\n return true\n }\n\n /**\n * Creates a new resize handle element with mousedown listener.\n */\n private createNewHandle(columnName: string): ResizeHandleElement {\n if (!this.gridContainer) {\n throw new Error('Cannot create handle without grid container')\n }\n\n const handle = document.createElement('div') as ResizeHandleElement\n handle.className = 'column-resize-handle'\n handle.dataset.columnName = columnName\n handle.style.position = 'absolute'\n handle.style.top = '0'\n handle.style.width = '8px'\n handle.style.cursor = 'col-resize'\n handle.style.pointerEvents = 'auto'\n handle.style.zIndex = '1000'\n\n const onMouseDown = (e: MouseEvent) => this.handleMouseDown(e, handle)\n handle.addEventListener('mousedown', onMouseDown)\n\n this.cleanupFunctions.push(() =>\n handle.removeEventListener('mousedown', onMouseDown),\n )\n\n this.gridContainer.appendChild(handle)\n this.cleanupFunctions.push(handle)\n this.handlesMap.set(columnName, handle)\n\n return handle\n }\n\n /**\n * Creates or updates a handle for a given cell element.\n */\n private createOrUpdateHandle(\n cellElement: HTMLElement,\n columnIndex: number,\n ): void {\n const columnName = this.colValues[columnIndex]?.id as string\n if (!columnName || !this.gridContainer) return\n\n let handle = this.handlesMap.get(columnName)\n\n if (!handle) {\n handle = this.createNewHandle(columnName)\n }\n\n this.updateHandlePosition(handle, cellElement)\n }\n\n /**\n * Updates the position and size of a handle based on its cell element.\n */\n private updateHandlePosition(\n handle: ResizeHandleElement,\n cellElement: HTMLElement,\n ): void {\n if (!this.gridContainer) return\n\n const gridHeight = this.gridContainer.scrollHeight\n const left = cellElement.offsetLeft + cellElement.offsetWidth - 3\n\n handle.__cellElement = cellElement\n handle.__columnName = handle.dataset.columnName\n handle.style.left = `${left}px`\n handle.style.height = `${gridHeight}px`\n handle.style.display = '' // Ensure visible\n }\n\n /**\n * Handles mousedown event on a resize handle to initiate dragging.\n */\n private handleMouseDown(e: MouseEvent, handle: ResizeHandleElement): void {\n e.preventDefault()\n e.stopPropagation()\n\n // Read the column info fresh at mousedown time\n const currentColumnName = handle.__columnName\n const currentCellElement = handle.__cellElement\n\n if (!currentColumnName || !currentCellElement) return\n\n // Get current width and position at the time of mousedown\n const currentLeft = parseFloat(handle.style.left)\n\n this.activeResize = {\n columnName: currentColumnName,\n startX: e.clientX,\n startWidth: currentCellElement.offsetWidth,\n handle,\n initialLeft: currentLeft,\n }\n\n handle.classList.add('is-resizing')\n document.body.classList.add('col-resizing')\n }\n\n /**\n * Handles mousemove event to update handle position during drag.\n */\n private handleMouseMove = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { startX, handle, initialLeft } = this.activeResize\n const deltaX = e.clientX - startX\n handle.style.left = `${initialLeft + deltaX}px`\n }\n\n /**\n * Handles mouseup/mouseleave to finalize the resize operation.\n */\n private handleMouseUp = (e: MouseEvent): void => {\n if (!this.activeResize) return\n\n const { columnName, startX, startWidth, handle } = this.activeResize\n const deltaX = e.clientX - startX\n const newWidth = Math.max(\n ColumnResizeManager.COLUMN_MIN_WIDTH_PX,\n startWidth + deltaX,\n )\n\n handle.classList.remove('is-resizing')\n document.body.classList.remove('col-resizing')\n this.activeResize = null\n\n // Only update state when drag is complete\n this.onColumnResize(columnName, newWidth)\n }\n\n /**\n * Synchronizes handles with currently visible columns in the header.\n * Handles virtualization by showing/hiding handles as columns appear/disappear.\n */\n private syncHandles = (): void => {\n if (this.activeResize || !this.headerRow) return // Don't sync during resize\n\n const headerCells = this.headerRow.querySelectorAll('.dsg-cell')\n if (headerCells.length <= 1) return\n\n // Track which columns are currently visible\n const visibleColumns = new Set<string>()\n\n // Update or create handles for visible columns\n headerCells.forEach((cell: Element, index: number) => {\n if (index === 0) return // Skip gutter column\n\n const cellElement = cell as HTMLElement\n\n // Get the column name from the cell's text content\n // This is more reliable than using DOM index with virtualization\n const cellText = cellElement.textContent?.trim() || ''\n\n // Find the actual column index in colValues by matching the id (column name)\n // Note: col.title may be a React element (e.g. ColumnHeaderWithTooltip), so we use col.id\n const actualColumnIndex = this.colValues.findIndex(\n col => col.id === cellText,\n )\n\n if (actualColumnIndex !== -1) {\n const columnName = this.colValues[actualColumnIndex]?.id as string\n visibleColumns.add(columnName)\n this.createOrUpdateHandle(cellElement, actualColumnIndex)\n }\n })\n\n // Hide handles for columns that are no longer visible (virtualized out)\n this.handlesMap.forEach((handle, columnName) => {\n if (!visibleColumns.has(columnName)) {\n handle.style.display = 'none'\n }\n })\n }\n\n /**\n * Sets up all event listeners for mouse interactions, scroll, and virtualization.\n */\n private setupEventListeners(): void {\n if (!this.gridContainer || !this.headerRow) return\n\n // Global mouse event listeners\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('mouseup', this.handleMouseUp)\n document.addEventListener('mouseleave', this.handleMouseUp)\n\n // Scroll listener for updating handle positions\n this.gridContainer.addEventListener('scroll', this.syncHandles)\n\n // MutationObserver to detect when columns are added/removed due to virtualization\n this.observer = new MutationObserver(() => {\n // Debounce mutations to avoid excessive syncs\n requestAnimationFrame(() => {\n this.syncHandles()\n })\n })\n\n this.observer.observe(this.headerRow, {\n childList: true, // Watch for added/removed columns\n subtree: true,\n })\n\n // Register cleanup functions\n this.cleanupFunctions.push(() => {\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('mouseup', this.handleMouseUp)\n document.removeEventListener('mouseleave', this.handleMouseUp)\n this.gridContainer?.removeEventListener('scroll', this.syncHandles)\n this.observer?.disconnect()\n })\n }\n\n /**\n * Cleans up all handles, event listeners, and resets state.\n */\n cleanup(): void {\n // Ensure cursor class is removed\n document.body.classList.remove('col-resizing')\n\n // Reset active resize state\n if (this.activeResize) {\n this.activeResize.handle?.classList.remove('is-resizing')\n this.activeResize = null\n }\n\n // Run all cleanup functions and remove handles\n this.cleanupFunctions.forEach(item => {\n if (typeof item === 'function') {\n item()\n } else {\n // It's a handle element, remove it\n item.remove()\n }\n })\n\n this.cleanupFunctions = []\n this.handlesMap.clear()\n this.gridContainer = null\n this.headerRow = null\n this.observer = null\n }\n}\n\n/**\n * Custom hook that manages interactive column resize handles for a data grid.\n * Creates, positions, and updates resize handles that allow users to drag column borders.\n * Handles virtualization, scrolling, and proper cleanup.\n */\nexport function useColumnResizeHandles({\n wrapperRef,\n colValues,\n onColumnResize,\n}: UseColumnResizeHandlesProps) {\n const managerRef = useRef<ColumnResizeManager | null>(null)\n\n // Use react-hookz useResizeObserver to detect when wrapper is rendered and sized\n useResizeObserver(wrapperRef, entry => {\n if (!wrapperRef.current || !entry || entry.contentRect.height === 0) {\n return\n }\n\n // Initialize manager if not already done\n if (!managerRef.current) {\n const manager = new ColumnResizeManager(colValues, onColumnResize)\n const success = manager.initialize(wrapperRef.current)\n if (success) {\n managerRef.current = manager\n }\n }\n })\n\n useEffect(() => {\n // Update columns when they change instead of full reinitialization\n if (managerRef.current) {\n managerRef.current.updateColumns(colValues, onColumnResize)\n }\n }, [colValues, onColumnResize])\n\n useEffect(() => {\n // Cleanup on unmount\n return () => {\n managerRef.current?.cleanup()\n managerRef.current = null\n }\n }, [])\n}\n"],"mappings":"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"}
|