synapse-react-client 4.0.25 → 4.0.27
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 +3 -2
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +4 -3
- package/dist/SWC.index.js.map +1 -1
- package/dist/assets/icons/FileCopy.d.ts +5 -0
- package/dist/assets/icons/FileCopy.d.ts.map +1 -0
- package/dist/assets/icons/FileCopy.js +13 -0
- package/dist/assets/icons/FileCopy.js.map +1 -0
- package/dist/assets/icons/NIHIcon.d.ts +4 -0
- package/dist/assets/icons/NIHIcon.d.ts.map +1 -0
- package/dist/assets/icons/NIHIcon.js +14 -0
- package/dist/assets/icons/NIHIcon.js.map +1 -0
- package/dist/assets/icons/fileCopy.svg +8 -0
- package/dist/assets/icons/fileCopy2.js +33 -0
- package/dist/assets/icons/fileCopy2.js.map +1 -0
- package/dist/assets/icons/nih.js +35 -0
- package/dist/assets/icons/nih.js.map +1 -0
- package/dist/assets/icons/nih.svg +9 -0
- package/dist/assets/illustrations/compute_illustration.js +485 -0
- package/dist/assets/illustrations/compute_illustration.js.map +1 -0
- package/dist/assets/illustrations/compute_illustration.svg +204 -0
- package/dist/assets/illustrations/curate_data_illustration.js +479 -0
- package/dist/assets/illustrations/curate_data_illustration.js.map +1 -0
- package/dist/assets/illustrations/curate_data_illustration.svg +91 -0
- package/dist/components/AccountLevelBadges/useRevokeCertificationUI.js +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsDialog.js +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.d.ts +1 -0
- package/dist/components/Authentication/AuthenticationMethodSelection.d.ts.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +17 -10
- package/dist/components/Authentication/AuthenticationMethodSelection.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.d.ts +2 -2
- package/dist/components/Authentication/LoginForm.d.ts +1 -0
- package/dist/components/Authentication/LoginForm.d.ts.map +1 -1
- package/dist/components/Authentication/LoginForm.js +3 -2
- package/dist/components/Authentication/LoginForm.js.map +1 -1
- package/dist/components/Authentication/LoginMethod.d.ts +2 -2
- package/dist/components/Authentication/LoginMethod.d.ts.map +1 -1
- package/dist/components/Authentication/LoginMethod.js +10 -8
- package/dist/components/Authentication/LoginMethod.js.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.d.ts +1 -0
- package/dist/components/Authentication/StandaloneLoginForm.d.ts.map +1 -1
- package/dist/components/Authentication/StandaloneLoginForm.js +16 -15
- package/dist/components/Authentication/StandaloneLoginForm.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -2
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js +24 -30
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/ChallengeDataDownload/ChallengeDataDownload.js +1 -1
- package/dist/components/ChallengeDetailPage/ChallengeDetailPage.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
- package/dist/components/ChangePassword/ChangePassword.js +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts +3 -2
- package/dist/components/CopyToClipboardString/CopyToClipboardString.d.ts.map +1 -1
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js +27 -18
- package/dist/components/CopyToClipboardString/CopyToClipboardString.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -1
- package/dist/components/DataExplorer/DataExplorer.d.ts +16 -2
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js +82 -75
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.scss +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +2 -5
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts +35 -0
- package/dist/components/DataGrid/SyncGridWithSourceButton.d.ts.map +1 -0
- package/dist/components/DataGrid/SyncGridWithSourceButton.js +115 -0
- package/dist/components/DataGrid/SyncGridWithSourceButton.js.map +1 -0
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +14 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts +2 -0
- package/dist/components/DataGrid/useMergeGridWithRecordSet.d.ts.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithRecordSet.js.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.d.ts +12 -7
- package/dist/components/DataGrid/useMergeGridWithSource.d.ts.map +1 -1
- package/dist/components/DataGrid/useMergeGridWithSource.js +31 -25
- package/dist/components/DataGrid/useMergeGridWithSource.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +15 -19
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DownloadCart/DownloadListTable.js +1 -1
- package/dist/components/DynamicForm/DynamicForm.js +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
- package/dist/components/EntityAclEditor/useNotifyNewACLUsers.js +1 -1
- package/dist/components/EntityDownloadButton/EntityDownloadButton.js +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.d.ts +1 -0
- package/dist/components/EntityFinder/EntityIdTextField.d.ts.map +1 -1
- package/dist/components/EntityFinder/EntityIdTextField.js +7 -6
- package/dist/components/EntityFinder/EntityIdTextField.js.map +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.css +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.d.ts.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.js +47 -39
- package/dist/components/EntitySidebar/EntitySidebar.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.js +11 -11
- package/dist/components/EntitySidebar/EntitySidebar.module.js.map +1 -1
- package/dist/components/EntitySidebar/EntitySidebar.module.scss +6 -6
- package/dist/components/FieldDescription/FieldDescription.css +1 -0
- package/dist/components/FieldDescription/FieldDescription.d.ts +15 -0
- package/dist/components/FieldDescription/FieldDescription.d.ts.map +1 -0
- package/dist/components/FieldDescription/FieldDescription.js +13 -0
- package/dist/components/FieldDescription/FieldDescription.js.map +1 -0
- package/dist/components/FieldDescription/FieldDescription.module.js +5 -0
- package/dist/components/FieldDescription/FieldDescription.module.js.map +1 -0
- package/dist/components/FieldDescription/FieldDescription.module.scss +8 -0
- package/dist/components/FieldDescription/index.d.ts +3 -0
- package/dist/components/FieldDescription/index.d.ts.map +1 -0
- package/dist/components/FieldDescription/index.js +2 -0
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +2 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +3 -2
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/HeaderCard.d.ts.map +1 -1
- package/dist/components/HeaderCard.js +4 -0
- package/dist/components/HeaderCard.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.d.ts +2 -1
- package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid/HexGrid.js +13 -13
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +216 -212
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/OAuthClientAclEditor/OAuthAclEditorModal.js +1 -1
- package/dist/components/OAuthClientManagement/OAuthManagement.js +1 -1
- package/dist/components/PortalAclEditor/PortalAclEditorModal.js +1 -1
- package/dist/components/PortalList/CreatePortalModal.js +1 -1
- package/dist/components/PortalList/PortalCard.js +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.css +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.d.ts +5 -0
- package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.js +50 -0
- package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.module.js +11 -0
- package/dist/components/ProjectInfo/ProjectInfo.module.js.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfo.module.scss +35 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts +10 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.d.ts.map +1 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.js +94 -0
- package/dist/components/ProjectInfo/ProjectInfoPopover.js.map +1 -0
- package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts +2 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.d.ts.map +1 -1
- package/dist/components/ProjectStorage/ProjectDataAvailability.js +67 -75
- package/dist/components/ProjectStorage/ProjectDataAvailability.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts +3 -0
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +140 -85
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +3 -3
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/StorybookComponentWrapper.js +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +1 -1
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.css +1 -1
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js +9 -8
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js.map +1 -1
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.scss +4 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.d.ts +2 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNews.js +8 -7
- package/dist/components/SynapseHomepageV2/WordPressNews.js.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.d.ts +5 -1
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.d.ts.map +1 -1
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.js +19 -11
- package/dist/components/SynapseHomepageV2/WordPressNewsItem.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ImportTableColumnsButton.js +1 -1
- package/dist/components/TextField/TextField.css +1 -1
- package/dist/components/TextField/TextField.d.ts.map +1 -1
- package/dist/components/TextField/TextField.js +27 -25
- package/dist/components/TextField/TextField.js.map +1 -1
- package/dist/components/TextField/TextField.module.js +3 -3
- package/dist/components/TextField/TextField.module.js.map +1 -1
- package/dist/components/TextField/TextField.module.scss +2 -5
- package/dist/components/Webhook/WebhookVerificationDialog.js +1 -1
- package/dist/components/WordPress/useWordPressPosts.js +1 -1
- package/dist/components/WordPress/useWordPressPosts.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/ApproveSubmissionConfirmationModal.js +1 -1
- package/dist/components/dataaccess/SubmissionPage/CancelDataAccessRequestConfirmationModal.js +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +66 -49
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/error/SendMessageToEntityOwnerDialog.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
- package/dist/components/menu/ComplexMenu.js +1 -4
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js +1 -1
- package/dist/features/curator/GridPage/components/UpdateGridPageSearchParamsForm.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.d.ts.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboard.js +36 -35
- package/dist/features/curator/dashboard/CuratorDashboard.js.map +1 -1
- package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts +13 -0
- package/dist/features/curator/dashboard/CuratorDashboardRouter.d.ts.map +1 -0
- package/dist/features/curator/dashboard/CuratorDashboardRouter.js +37 -0
- package/dist/features/curator/dashboard/CuratorDashboardRouter.js.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCard.css +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts +3 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js +26 -157
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js +10 -6
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.module.scss +31 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts +25 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js +134 -0
- package/dist/features/curator/dashboard/components/CurationTaskCardLayout.js.map +1 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts +10 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.js +51 -0
- package/dist/features/curator/dashboard/components/ExecutableTaskCard.js.map +1 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.d.ts +10 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.js +35 -0
- package/dist/features/curator/dashboard/components/GridTaskCard.js.map +1 -0
- package/dist/features/curator/dashboard/components/NextStepButton.css +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts +3 -0
- package/dist/features/curator/dashboard/components/NextStepButton.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.js +56 -26
- package/dist/features/curator/dashboard/components/NextStepButton.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.module.js +6 -5
- package/dist/features/curator/dashboard/components/NextStepButton.module.js.map +1 -1
- package/dist/features/curator/dashboard/components/NextStepButton.module.scss +28 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts +31 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.d.ts.map +1 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js +32 -0
- package/dist/features/curator/dashboard/components/getExecutableTaskButtonState.js.map +1 -0
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +213 -204
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts +0 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js +19 -39
- package/dist/features/entity/metadata-task/components/MetadataTaskTableActionCell.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts +9 -3
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js +37 -46
- package/dist/features/entity/metadata-task/components/MetadataTasksPage.js.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts +17 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js +43 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksPageRouter.js.map +1 -0
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js +27 -26
- package/dist/features/entity/metadata-task/components/MetadataTasksTableAssigneeCell.js.map +1 -1
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts +16 -0
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js +64 -0
- package/dist/features/entity/metadata-task/create-task/CommonTaskFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts +41 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js +165 -0
- package/dist/features/entity/metadata-task/create-task/ComputeTaskForm.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts +18 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js +78 -0
- package/dist/features/entity/metadata-task/create-task/CreateCurationTaskFlow.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts +10 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js +40 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskCategoryPicker.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js +35 -0
- package/dist/features/entity/metadata-task/create-task/CreateTaskConfirmation.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts +41 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js +198 -0
- package/dist/features/entity/metadata-task/create-task/CurateTaskForm.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts +8 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js +29 -0
- package/dist/features/entity/metadata-task/create-task/EditCurationTaskPage.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.js +65 -0
- package/dist/features/entity/metadata-task/create-task/FileBasedFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts +11 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js +33 -0
- package/dist/features/entity/metadata-task/create-task/ProjectSelectorField.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js +38 -0
- package/dist/features/entity/metadata-task/create-task/RecordBasedFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts +13 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.js +72 -0
- package/dist/features/entity/metadata-task/create-task/RecordSetFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts +11 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js +42 -0
- package/dist/features/entity/metadata-task/create-task/SampleSheetFields.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts +17 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js +70 -0
- package/dist/features/entity/metadata-task/create-task/TaskCategoryCard.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts +23 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.js +68 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormActions.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts +17 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js +33 -0
- package/dist/features/entity/metadata-task/create-task/TaskFormHeader.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts +50 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js +76 -0
- package/dist/features/entity/metadata-task/create-task/useCurationTaskFormState.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts +36 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js +31 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildComputeTaskPayload.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts +32 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js +33 -0
- package/dist/features/entity/metadata-task/create-task/utils/buildCurateTaskPayload.js.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts +10 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js +13 -0
- package/dist/features/entity/metadata-task/create-task/utils/taskIdValidation.js.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js +24 -24
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js +2 -2
- package/dist/features/entity/metadata-task/hooks/useGridSessionForCurationTask_legacy.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +33 -32
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +24 -21
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +84 -15
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +47 -3
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/dueDate.d.ts +22 -0
- package/dist/features/entity/metadata-task/utils/dueDate.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/dueDate.js +24 -0
- package/dist/features/entity/metadata-task/utils/dueDate.js.map +1 -0
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts +2 -2
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js +5 -6
- package/dist/features/entity/metadata-task/utils/getCreateGridRequestForMetadataTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts +4 -4
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js +5 -6
- package/dist/features/entity/metadata-task/utils/getGridSourceIdForTask.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/types.d.ts +12 -0
- package/dist/features/entity/metadata-task/utils/types.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/utils/types.js +18 -0
- package/dist/features/entity/metadata-task/utils/types.js.map +1 -0
- package/dist/mocks/curation/mockCurationTask.d.ts +6 -0
- package/dist/mocks/curation/mockCurationTask.d.ts.map +1 -1
- package/dist/mocks/curation/mockCurationTask.js +20 -3
- package/dist/mocks/curation/mockCurationTask.js.map +1 -1
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts +16 -0
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js +24 -0
- package/dist/mocks/msw/handlers/curationTaskExecutionHandlers.js.map +1 -0
- package/dist/style/components/_data-grid-extra.css +1 -1
- package/dist/style/components/_data-grid-extra.scss +0 -6
- package/dist/synapse-client/SynapseClient.d.ts +7 -1
- package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
- package/dist/synapse-client/SynapseClient.js +493 -482
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-client/index.js +3 -3
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts +8 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +48 -34
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/theme/palette/Palettes.js +2 -2
- package/dist/theme/palette/Palettes.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/useSessionManager.js +50 -48
- package/dist/utils/AppUtils/session/useSessionManager.js.map +1 -1
- package/dist/utils/SynapseConstants.d.ts +4 -1
- package/dist/utils/SynapseConstants.d.ts.map +1 -1
- package/dist/utils/SynapseConstants.js +86 -83
- package/dist/utils/SynapseConstants.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +2 -2
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js +37 -27
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/package.json +6 -6
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts +0 -8
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.d.ts.map +0 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +0 -64
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataExplorer.module.js","names":[],"sources":["../../../src/components/DataExplorer/DataExplorer.module.scss"],"sourcesContent":["@use 'sass:map';\n@use '../../style/abstracts/variables' as SrcVariables;\n\n.dataExplorerTitle:global(.MuiTypography-root) {\n color: var(--data-explorer-title-color, var(--synapse-primary-action-color));\n font-size: 36px;\n line-height: 40px; /* 111.111% */\n}\n\n.dataExplorerSubtitle:global(.MuiTypography-root) {\n line-height: 140%;\n}\n\n.dataExplorerButton {\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n width: fit-content;\n }\n}\n\n.dataExplorerTextContainer {\n gap: 16px;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n flex: 0 0 30%;\n max-width: 30%;\n }\n}\n\n.dataExplorerContainer {\n display: flex;\n padding: 40px 0;\n align-items: flex-start;\n gap: 60px;\n flex: 1 0 0;\n flex-direction: column;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n flex-direction: row;\n }\n}\n\n.dataContainer {\n display: inline-grid;\n row-gap: 8px;\n column-gap: 8px;\n flex: 1 1 60%;\n min-width: 0;\n grid-template-rows: repeat(9, fit-content(100%));\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.dataRowTitle {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 16px;\n font-weight: 400;\n line-height: 26.4px;\n flex: 0 1 auto;\n min-width: 0;\n overflow-wrap: break-word;\n word-break: break-word;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n font-size: 19.8px;\n }\n}\n\n.dataRowInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n}\n\n.dataRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8.8px 26.4px;\n min-height: 66.6px;\n gap: 17.6px;\n justify-self: stretch;\n position: relative;\n border-radius: 3.3px;\n border: 1px solid transparent;\n text-decoration: none !important;\n transition:\n background-color 200ms ease,\n border-color 200ms ease,\n box-shadow 200ms ease,\n transform 200ms ease;\n\n &:hover {\n background-color: #fff;\n border-color: #e1e1e1;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);\n transform: scale(1.1);\n z-index: 1;\n .viewCta {\n opacity: 1;\n pointer-events: auto;\n }\n }\n}\n\n.dataRowLeft {\n display: inline-flex;\n align-items: center;\n gap: 16px;\n min-width: 0;\n flex: 1;\n}\n\n.iconContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 49px;\n height: 49px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dataRowNamePill {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1 1 0;\n min-width: 0;\n}\n\n.
|
|
1
|
+
{"version":3,"file":"DataExplorer.module.js","names":[],"sources":["../../../src/components/DataExplorer/DataExplorer.module.scss"],"sourcesContent":["@use 'sass:map';\n@use '../../style/abstracts/variables' as SrcVariables;\n\n.dataExplorerTitle:global(.MuiTypography-root) {\n color: var(--data-explorer-title-color, var(--synapse-primary-action-color));\n font-size: 36px;\n line-height: 40px; /* 111.111% */\n}\n\n.dataExplorerSubtitle:global(.MuiTypography-root) {\n line-height: 140%;\n}\n\n.dataExplorerButton {\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n width: fit-content;\n }\n}\n\n.dataExplorerTextContainer {\n gap: 16px;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n flex: 0 0 30%;\n max-width: 30%;\n }\n}\n\n.dataExplorerContainer {\n display: flex;\n padding: 40px 0;\n align-items: flex-start;\n gap: 60px;\n flex: 1 0 0;\n flex-direction: column;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n flex-direction: row;\n }\n}\n\n.dataContainer {\n display: inline-grid;\n row-gap: 8px;\n column-gap: 8px;\n flex: 1 1 60%;\n min-width: 0;\n grid-template-rows: repeat(9, fit-content(100%));\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.dataRowTitle {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 16px;\n font-weight: 400;\n line-height: 26.4px;\n flex: 0 1 auto;\n min-width: 0;\n overflow-wrap: break-word;\n word-break: break-word;\n\n @media (min-width: map.get(SrcVariables.$breakpoints, 'large')) {\n font-size: 19.8px;\n }\n}\n\n.dataRowInner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 1;\n min-width: 0;\n}\n\n.dataRow {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8.8px 26.4px;\n min-height: 66.6px;\n gap: 17.6px;\n justify-self: stretch;\n position: relative;\n border-radius: 3.3px;\n border: 1px solid transparent;\n text-decoration: none !important;\n transition:\n background-color 200ms ease,\n border-color 200ms ease,\n box-shadow 200ms ease,\n transform 200ms ease;\n\n &:hover {\n background-color: #fff;\n border-color: #e1e1e1;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1);\n transform: scale(1.1);\n z-index: 1;\n .viewCta {\n opacity: 1;\n pointer-events: auto;\n }\n }\n}\n\n.dataRowLeft {\n display: inline-flex;\n align-items: center;\n gap: 16px;\n min-width: 0;\n flex: 1;\n}\n\n.iconContainer {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 49px;\n height: 49px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.dataRowNamePill {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1 1 0;\n min-width: 0;\n}\n\n.facetCount {\n display: flex;\n padding: 4px 8px;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 80px;\n border: 1px solid #d8d5e0;\n color: #787090;\n font-size: 14px;\n font-weight: 400;\n line-height: 24px; /* 171.429% */\n flex-shrink: 0;\n}\n\n.viewCta {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n display: inline-flex;\n align-items: center;\n padding-right: 26.4px;\n padding-left: 40px;\n gap: 4px;\n opacity: 0;\n white-space: nowrap;\n color: var(--synapse-primary-action-color, #4d558d);\n background: linear-gradient(to right, transparent, #fff 25%, #fff 100%);\n border-radius: 0 2px 2px 0;\n transition: opacity 200ms ease;\n}\n\n.viewCtaText {\n color: var(--synapse-primary-action-color, #4d558d);\n font-size: 16px;\n font-weight: 400;\n line-height: 26.4px; /* 165% */\n}\n\n.viewCtaIcon:global(.MuiSvgIcon-root) {\n font-size: 24px;\n color: var(--synapse-primary-action-color, #5a488f);\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseGrid.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"names":[],"mappings":"AAcA,OAAO,EACL,iBAAiB,EAElB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EACL,GAAG,EAOJ,MAAM,OAAO,CAAA;AAsBd,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACpD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,CAAA;
|
|
1
|
+
{"version":3,"file":"SynapseGrid.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"names":[],"mappings":"AAcA,OAAO,EACL,iBAAiB,EAElB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EACL,GAAG,EAOJ,MAAM,OAAO,CAAA;AAsBd,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACpD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACjD,CAAA;AAkfD,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAM3C;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -12,7 +12,7 @@ import ie from "./components/GridMenuButton/GridMenuButton.js";
|
|
|
12
12
|
import ae from "./components/UploadCsvToGridButton.js";
|
|
13
13
|
import oe from "./components/ExportCsvFromGridButton.js";
|
|
14
14
|
import se from "./hooks/useGetSchemaForGrid.js";
|
|
15
|
-
import ce from "./
|
|
15
|
+
import ce from "./SyncGridWithSourceButton.js";
|
|
16
16
|
import le from "./utils/computeReplicaSelectionModel.js";
|
|
17
17
|
import { removeNoOpOperations as ue } from "./utils/DataGridUtils.js";
|
|
18
18
|
import de from "./utils/modelRowsToGrid.js";
|
|
@@ -308,10 +308,7 @@ function s(e) {
|
|
|
308
308
|
gridSessionId: u.sessionId,
|
|
309
309
|
filename: "grid-" + (u.sourceEntityId || "export")
|
|
310
310
|
}),
|
|
311
|
-
u.sourceEntityId && /* @__PURE__ */ i(ce, {
|
|
312
|
-
sourceEntityId: u.sourceEntityId,
|
|
313
|
-
gridSessionId: u.sessionId
|
|
314
|
-
})
|
|
311
|
+
u.sourceEntityId && /* @__PURE__ */ i(ce, { gridSession: u })
|
|
315
312
|
]
|
|
316
313
|
})
|
|
317
314
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseGrid.js","names":["GridMenuButton","UploadCsvToGridButton","ExportCsvFromGridButton","useGetSchemaForGrid","MergeGridWithSourceTableButton","computeReplicaSelectionModel","modelRowsToGrid","SkeletonTable","useGetEntity","getSchemaPropertiesInfo","SmartToyTwoTone","Box","Stack","Tooltip","Typography","SynapseSpinner","Grid","CreateGridRequest","GridSession","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","DataSheetGridRef","SelectionWithId","GridAgentChat","DataGrid","DataGridRow","GridModel","Operation","useGridUndoRedo","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","mapOperationsToModelChanges","useGetCurrentUserBundle","useListGridReplicas","useGridReplicaUsers","useRemoteSelections","enrichRowsWithChangeInfo","CertificationRequirement","ValidationAlert","SynapseErrorBoundary","useErrorHandler","SynapseGridProps","agentRegistrationId","showDebugInfo","ref","SynapseGridHandle","initializeGrid","request","loadExistingSession","sessionId","SynapseGridInner","t0","$","_c","t1","undefined","session","setSession","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","gridRef","data","userBundle","isLoading","t2","refetch","refetchReplicas","t3","replicas","t4","handleReplicaConnectionChange","currentUserId","userId","String","replicaUserMap","t5","t6","Symbol","for","current","handleStartSession","handleLoadSession","t7","onGridReady","onReplicaConnected","onReplicaDisconnected","isConnected","websocketInstance","hasCompletedInitialSync","isSyncing","model","modelSnapshot","connect","presignedUrl","hasSufficientData","websocketError","websocketInstanceRef","t8","t9","lastConnectParamsRef","t10","nextParams","prevParams","t11","t12","t13","t14","setActiveCell","jsonSchema","t15","sourceEntityId","t16","enabled","entityData","entityIsView","concreteType","t17","upsertKey","t18","t19","schemaPropertiesInfo","connectionStatus","remoteSelections","t20","rowValues","t21","enrichedRowValues","t22","sendPatch","commit","t23","t24","t25","model_0","modelChanges","forEach","change","applyAndCommitChanges","t26","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t27","newValue","operations","length","modelChanges_0","handleChange","t28","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t29","rowIndex","colIndex","col","row","handleNavigateToCell","isCertified","t30","xs","xl","t31","t32","t33","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t34","t35","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t36","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport MergeGridWithSourceTableButton from '@/components/DataGrid/MergeGridWithSourceTableButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { SmartToyTwoTone } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport Grid from '@mui/material/Grid'\nimport {\n CreateGridRequest,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { DataSheetGridRef } from '@sage-bionetworks/react-datasheet-grid'\nimport { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { useErrorHandler } from 'react-error-boundary'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n ref?: Ref<SynapseGridHandle>\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nfunction SynapseGridInner({\n agentRegistrationId,\n showDebugInfo = false,\n ref,\n}: SynapseGridProps) {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const { data: replicas = [], refetch: refetchReplicas } = useListGridReplicas(\n session?.sessionId,\n )\n\n const handleReplicaConnectionChange = useCallback(() => {\n void refetchReplicas()\n }, [refetchReplicas])\n\n // ── Attribution infrastructure ─────────────────────────────────────────\n const currentUserId =\n userBundle?.userId != null ? String(userBundle.userId) : undefined\n\n const replicaUserMap = useGridReplicaUsers(replicas, replicaId, currentUserId)\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n isSyncing,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n websocketError,\n } = useDataGridWebSocket({\n onGridReady: handleReplicaConnectionChange,\n onReplicaConnected: handleReplicaConnectionChange,\n onReplicaDisconnected: handleReplicaConnectionChange,\n })\n\n useErrorHandler(websocketError)\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (replicaId === null || replicaId === undefined || !session?.sessionId) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n // If grid source entity is a recordSet, get its upsert key(s)\n // from the entity bundle\n const upsertKey = !entityIsView\n ? (entityData as { upsertKey?: string[] } | undefined)?.upsertKey\n : []\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n const remoteSelections = useRemoteSelections(\n modelSnapshot,\n model,\n replicas,\n replicaId,\n )\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n // Enrich rows with per-cell change attribution for CSS indicators and tooltips\n const enrichedRowValues = useMemo(\n () =>\n enrichRowsWithChangeInfo(rowValues, model, modelSnapshot, replicaUserMap),\n [rowValues, model, modelSnapshot, replicaUserMap],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n const handleNavigateToCell = useCallback(\n (rowIndex: number, colIndex: number) => {\n gridRef.current?.setActiveCell({ col: colIndex, row: rowIndex })\n },\n [],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id || 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n <p>\n {(() => {\n const connectedReplicas = replicas.filter(r => r.isConnected)\n return (\n <>\n Connected Replicas ({connectedReplicas.length} /{' '}\n {replicas.length} total):{' '}\n {connectedReplicas.length === 0\n ? 'none'\n : connectedReplicas.map((r, i) => (\n <Tooltip\n key={r.replicaId}\n title={\n <pre style={{ margin: 0, fontSize: '11px' }}>\n {JSON.stringify(r, null, 2)}\n </pre>\n }\n >\n <span\n style={{\n cursor: 'pointer',\n textDecoration: 'underline dotted',\n }}\n >\n {r.replicaId}\n {i < connectedReplicas.length - 1 ? ', ' : ''}\n </span>\n </Tooltip>\n ))}\n </>\n )\n })()}\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && <p>Setting up real-time sync...</p>}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <ValidationAlert\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n onNavigateToCell={handleNavigateToCell}\n isLoading={!hasCompletedInitialSync}\n />\n </Grid>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n mr: 'auto',\n }}\n >\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {hasCompletedInitialSync ? 'Syncing…' : 'Loading…'}\n </Typography>\n </Box>\n )}\n {undoUI}\n {redoUI}\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<SmartToyTwoTone />}\n >\n Open Curie\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Curie\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <MergeGridWithSourceTableButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={enrichedRowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n remoteSelections={remoteSelections}\n upsertKey={upsertKey}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n}\n\nfunction SynapseGrid(props: SynapseGridProps) {\n return (\n <SynapseErrorBoundary>\n <SynapseGridInner {...props} />\n </SynapseErrorBoundary>\n )\n}\n\nexport default SynapseGrid\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SynapseGrid.js","names":["GridMenuButton","UploadCsvToGridButton","ExportCsvFromGridButton","useGetSchemaForGrid","SyncGridWithSourceButton","computeReplicaSelectionModel","modelRowsToGrid","SkeletonTable","useGetEntity","getSchemaPropertiesInfo","SmartToyTwoTone","Box","Stack","Tooltip","Typography","SynapseSpinner","Grid","CreateGridRequest","GridSession","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","DataSheetGridRef","SelectionWithId","GridAgentChat","DataGrid","DataGridRow","GridModel","Operation","useGridUndoRedo","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","mapOperationsToModelChanges","useGetCurrentUserBundle","useListGridReplicas","useGridReplicaUsers","useRemoteSelections","enrichRowsWithChangeInfo","CertificationRequirement","ValidationAlert","SynapseErrorBoundary","useErrorHandler","SynapseGridProps","agentRegistrationId","showDebugInfo","ref","SynapseGridHandle","initializeGrid","request","loadExistingSession","sessionId","SynapseGridInner","t0","$","_c","t1","undefined","session","setSession","replicaId","setReplicaId","chatOpen","setChatOpen","lastSelection","setLastSelection","startGridSessionRef","gridRef","data","userBundle","isLoading","t2","refetch","refetchReplicas","t3","replicas","t4","handleReplicaConnectionChange","currentUserId","userId","String","replicaUserMap","t5","t6","Symbol","for","current","handleStartSession","handleLoadSession","t7","onGridReady","onReplicaConnected","onReplicaDisconnected","isConnected","websocketInstance","hasCompletedInitialSync","isSyncing","model","modelSnapshot","connect","presignedUrl","hasSufficientData","websocketError","websocketInstanceRef","t8","t9","lastConnectParamsRef","t10","nextParams","prevParams","t11","t12","t13","t14","setActiveCell","jsonSchema","t15","sourceEntityId","t16","enabled","entityData","entityIsView","concreteType","t17","upsertKey","t18","t19","schemaPropertiesInfo","connectionStatus","remoteSelections","t20","rowValues","t21","enrichedRowValues","t22","sendPatch","commit","t23","t24","t25","model_0","modelChanges","forEach","change","applyAndCommitChanges","t26","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t27","newValue","operations","length","modelChanges_0","handleChange","t28","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t29","rowIndex","colIndex","col","row","handleNavigateToCell","isCertified","t30","xs","xl","t31","t32","t33","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t34","t35","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t36","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport useGetSchemaForGrid from '@/components/DataGrid/hooks/useGetSchemaForGrid'\nimport SyncGridWithSourceButton from '@/components/DataGrid/SyncGridWithSourceButton'\nimport computeReplicaSelectionModel from '@/components/DataGrid/utils/computeReplicaSelectionModel'\nimport modelRowsToGrid from '@/components/DataGrid/utils/modelRowsToGrid'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { SmartToyTwoTone } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport Grid from '@mui/material/Grid'\nimport {\n CreateGridRequest,\n GridSession,\n} from '@sage-bionetworks/synapse-client'\nimport { ClickableJsonCrdt } from 'clickable-json'\nimport {\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { DataSheetGridRef } from '@sage-bionetworks/react-datasheet-grid'\nimport { SelectionWithId } from '@sage-bionetworks/react-datasheet-grid'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { useErrorHandler } from 'react-error-boundary'\n\nexport type SynapseGridProps = {\n agentRegistrationId?: string\n showDebugInfo?: boolean\n ref?: Ref<SynapseGridHandle>\n}\n\nexport type SynapseGridHandle = {\n initializeGrid: (request: CreateGridRequest) => void\n loadExistingSession: (sessionId: string) => void\n}\n\nfunction SynapseGridInner({\n agentRegistrationId,\n showDebugInfo = false,\n ref,\n}: SynapseGridProps) {\n const [session, setSession] = useState<GridSession | null>(null)\n const [replicaId, setReplicaId] = useState<number | null>(null)\n const [chatOpen, setChatOpen] = useState(false)\n const [lastSelection, setLastSelection] = useState<SelectionWithId | null>(\n null,\n )\n\n const startGridSessionRef = useRef<StartGridSessionHandle | null>(null)\n const gridRef = useRef<DataSheetGridRef | null>(null)\n\n const { data: userBundle, isLoading } = useGetCurrentUserBundle()\n\n const { data: replicas = [], refetch: refetchReplicas } = useListGridReplicas(\n session?.sessionId,\n )\n\n const handleReplicaConnectionChange = useCallback(() => {\n void refetchReplicas()\n }, [refetchReplicas])\n\n // ── Attribution infrastructure ─────────────────────────────────────────\n const currentUserId =\n userBundle?.userId != null ? String(userBundle.userId) : undefined\n\n const replicaUserMap = useGridReplicaUsers(replicas, replicaId, currentUserId)\n\n useImperativeHandle(\n ref,\n () => ({\n initializeGrid: (request: CreateGridRequest) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleStartSession(request)\n }\n },\n loadExistingSession: (sessionId: string) => {\n if (startGridSessionRef.current) {\n startGridSessionRef.current.handleLoadSession(sessionId)\n }\n },\n }),\n [],\n )\n\n // WebSocket state\n const {\n isConnected,\n websocketInstance,\n hasCompletedInitialSync,\n isSyncing,\n model,\n modelSnapshot,\n connect,\n presignedUrl,\n hasSufficientData,\n websocketError,\n } = useDataGridWebSocket({\n onGridReady: handleReplicaConnectionChange,\n onReplicaConnected: handleReplicaConnectionChange,\n onReplicaDisconnected: handleReplicaConnectionChange,\n })\n\n useErrorHandler(websocketError)\n\n const websocketInstanceRef = useRef<typeof websocketInstance | null>(null)\n\n useEffect(() => {\n websocketInstanceRef.current = websocketInstance\n }, [websocketInstance])\n\n // Track last connection parameters to avoid redundant connections\n const lastConnectParamsRef = useRef<{\n replicaId: number\n sessionId: string\n } | null>(null)\n\n useEffect(() => {\n if (replicaId === null || replicaId === undefined || !session?.sessionId) {\n lastConnectParamsRef.current = null\n return\n }\n\n const nextParams = {\n replicaId,\n sessionId: session.sessionId,\n }\n\n const prevParams = lastConnectParamsRef.current\n\n if (\n prevParams &&\n prevParams.replicaId === nextParams.replicaId &&\n prevParams.sessionId === nextParams.sessionId\n ) {\n return\n }\n\n lastConnectParamsRef.current = nextParams\n connect(replicaId, session.sessionId)\n }, [replicaId, session?.sessionId, connect])\n\n // Reset grid state when model is reset (new session/replica)\n useEffect(() => {\n if (model === null) {\n // Clear any grid-specific state when starting a new session\n setLastSelection(null)\n // Clear active cell if grid exists\n if (gridRef.current) {\n gridRef.current.setActiveCell(null)\n }\n }\n }, [model])\n\n const jsonSchema = useGetSchemaForGrid(session)\n\n // Grid behaves differently for views vs recordSets\n // Note for future: can get modifiedOn to refresh grid when view changes\n const { data: entityData } = useGetEntity(\n session?.sourceEntityId,\n undefined,\n {\n enabled: !!session?.sourceEntityId,\n },\n )\n\n const entityIsView =\n entityData?.concreteType ===\n 'org.sagebionetworks.repo.model.table.EntityView'\n\n // If grid source entity is a recordSet, get its upsert key(s)\n // from the entity bundle\n const upsertKey = !entityIsView\n ? (entityData as { upsertKey?: string[] } | undefined)?.upsertKey\n : []\n\n // Process schema properties once\n const schemaPropertiesInfo = useMemo(() => {\n return getSchemaPropertiesInfo(jsonSchema ?? null)\n }, [jsonSchema])\n\n const connectionStatus = isConnected ? 'Connected' : 'Disconnected'\n\n const remoteSelections = useRemoteSelections(\n modelSnapshot,\n model,\n replicas,\n replicaId,\n )\n\n // Transform the model view rows and columns to DataSheetGrid format\n const rowValues = useMemo(\n () => (modelSnapshot ? modelRowsToGrid(model, modelSnapshot) : []),\n [model, modelSnapshot],\n )\n\n // Enrich rows with per-cell change attribution for CSS indicators and tooltips\n const enrichedRowValues = useMemo(\n () =>\n enrichRowsWithChangeInfo(rowValues, model, modelSnapshot, replicaUserMap),\n [rowValues, model, modelSnapshot, replicaUserMap],\n )\n\n const commit = useCallback(() => {\n if (!isConnected || !websocketInstanceRef.current) {\n return\n }\n\n websocketInstanceRef.current.sendPatch()\n }, [isConnected, websocketInstanceRef])\n\n useEffect(() => {\n if (isConnected) {\n commit()\n }\n }, [isConnected, commit])\n\n const applyAndCommitChanges = useCallback(\n (model: GridModel, modelChanges: ModelChange[]) => {\n // Apply each change to the model\n modelChanges.forEach(change => {\n applyModelChange(model, change, schemaPropertiesInfo)\n })\n\n commit()\n },\n [commit, schemaPropertiesInfo],\n )\n\n const applyModelChangeFromUndoRedo = useCallback(\n (change: ModelChange) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n if (change.type === 'DELETE' && gridRef.current) {\n // The user may have set a cell as active that we are removing with an 'undo'. In that case, clear the active state\n gridRef.current.setActiveCell(null)\n }\n\n applyAndCommitChanges(model, [change])\n },\n [model, applyAndCommitChanges],\n )\n\n const { undoUI, redoUI, addOperationsToUndoStack, clearRedoStack } =\n useGridUndoRedo(applyModelChangeFromUndoRedo)\n\n const handleChange = useCallback(\n (newValue: DataGridRow[], operations: Operation[]) => {\n if (!model) {\n console.error('Model is not initialized')\n return\n }\n\n // Check that something changed before updating the model\n operations = removeNoOpOperations(newValue, rowValues, operations)\n\n if (operations.length > 0) {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n // Track row creation, updates, and deletions to keep UI state and undo history in sync\n\n // Add all operations to the undo stack\n addOperationsToUndoStack(operations, rowValues, newValue)\n\n // Transform operations to model changes\n const modelChanges = mapOperationsToModelChanges(operations, newValue)\n\n applyAndCommitChanges(model, modelChanges)\n }\n },\n [\n model,\n rowValues,\n clearRedoStack,\n addOperationsToUndoStack,\n applyAndCommitChanges,\n ],\n )\n\n const handleSelectionChange = useCallback(\n (opts: { selection: SelectionWithId | null }) => {\n const { selection } = opts\n if (selection != null) {\n setLastSelection(selection)\n\n if (model != null && replicaId != null) {\n const replicaSelectionModel = computeReplicaSelectionModel(\n selection,\n model,\n )\n // insert it into the CRDT Model\n applyAndCommitChanges(model, [\n {\n type: 'SET_SELECTION',\n replicaId: replicaId.toString(),\n selection: replicaSelectionModel,\n },\n ])\n }\n }\n },\n [applyAndCommitChanges, model, replicaId],\n )\n\n const handleNavigateToCell = useCallback(\n (rowIndex: number, colIndex: number) => {\n gridRef.current?.setActiveCell({ col: colIndex, row: rowIndex })\n },\n [],\n )\n\n if (!isLoading && !userBundle?.isCertified) {\n return <CertificationRequirement />\n }\n\n return (\n <div>\n <Grid container spacing={2}>\n <Grid size={{ xs: 12, xl: 8 }}>\n <StartGridSession\n ref={startGridSessionRef}\n onSessionChange={setSession}\n onReplicaChange={setReplicaId}\n show={showDebugInfo}\n />\n </Grid>\n {/* Debug Information */}\n <Grid size={{ xs: 12, xl: 4 }}>\n {showDebugInfo && (\n <div>\n <p>Session ID: {session?.sessionId || 'No session created'}</p>\n <p>Replica ID: {replicaId || 'No replica created'}</p>\n <p>\n Source Entity ID:{' '}\n {session?.sourceEntityId || 'No source entity'}\n </p>\n <p>\n JSON Schema $id:{' '}\n {session?.gridJsonSchema$Id || 'No schema attached to session'}\n </p>\n <p>\n Presigned URL:{' '}\n {presignedUrl\n ? presignedUrl.substring(0, 30) +\n (presignedUrl.length > 30\n ? ' ... ' +\n presignedUrl.substring(presignedUrl.length - 10)\n : '')\n : 'No URL generated'}\n </p>\n <p>\n WebSocket Status:{' '}\n <span style={{ color: isConnected ? 'green' : 'red' }}>\n {connectionStatus}\n </span>\n </p>\n <p>\n {(() => {\n const connectedReplicas = replicas.filter(r => r.isConnected)\n return (\n <>\n Connected Replicas ({connectedReplicas.length} /{' '}\n {replicas.length} total):{' '}\n {connectedReplicas.length === 0\n ? 'none'\n : connectedReplicas.map((r, i) => (\n <Tooltip\n key={r.replicaId}\n title={\n <pre style={{ margin: 0, fontSize: '11px' }}>\n {JSON.stringify(r, null, 2)}\n </pre>\n }\n >\n <span\n style={{\n cursor: 'pointer',\n textDecoration: 'underline dotted',\n }}\n >\n {r.replicaId}\n {i < connectedReplicas.length - 1 ? ', ' : ''}\n </span>\n </Tooltip>\n ))}\n </>\n )\n })()}\n </p>\n </div>\n )}\n </Grid>\n\n {session && (\n <>\n {/* Grid Loading State */}\n {!hasSufficientData && (\n <Grid size={12}>\n <h3>Setting up grid...</h3>\n <div style={{ marginBottom: '10px' }}>\n {!session && <p>Creating grid session...</p>}\n {session && !replicaId && <p>Setting up real-time sync...</p>}\n {session && replicaId && !presignedUrl && (\n <p>Establishing secure connection...</p>\n )}\n {session && replicaId && presignedUrl && !isConnected && (\n <p>Connecting to server...</p>\n )}\n {isConnected && !hasCompletedInitialSync && (\n <p>Loading table data...</p>\n )}\n <SkeletonTable numRows={4} numCols={1} />\n </div>\n </Grid>\n )}\n {/* Grid */}\n {hasSufficientData && (\n <>\n <Grid size={12}>\n <ValidationAlert\n rowValues={rowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n onNavigateToCell={handleNavigateToCell}\n isLoading={!hasCompletedInitialSync}\n />\n </Grid>\n <Grid size={12}>\n <Stack\n direction={'row'}\n spacing={1}\n sx={{ justifyContent: 'flex-end' }}\n >\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n mr: 'auto',\n }}\n >\n <SynapseSpinner size={16} margin=\"0\" />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {hasCompletedInitialSync ? 'Syncing…' : 'Loading…'}\n </Typography>\n </Box>\n )}\n {undoUI}\n {redoUI}\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<SmartToyTwoTone />}\n >\n Open Curie\n </GridMenuButton>\n <GridAgentChat\n agentRegistrationId={agentRegistrationId}\n open={chatOpen}\n onClose={() => setChatOpen(false)}\n gridSessionId={session.sessionId!}\n usersReplicaId={replicaId!}\n chatbotName=\"Curie\"\n />\n {session.sourceEntityId && (\n <UploadCsvToGridButton\n sourceEntityId={session.sourceEntityId}\n gridSessionId={session.sessionId!}\n />\n )}\n {session.sessionId && (\n <ExportCsvFromGridButton\n gridSessionId={session.sessionId}\n filename={\n 'grid-' + (session.sourceEntityId || 'export')\n }\n />\n )}\n {session.sourceEntityId && (\n <SyncGridWithSourceButton gridSession={session} />\n )}\n </Stack>\n </Grid>\n <Grid size={12}>\n <DataGrid\n gridRef={gridRef}\n rowValues={enrichedRowValues}\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n schemaPropertiesInfo={schemaPropertiesInfo}\n entityIsView={entityIsView}\n jsonSchema={jsonSchema}\n lastSelection={lastSelection}\n handleChange={handleChange}\n handleSelectionChange={handleSelectionChange}\n remoteSelections={remoteSelections}\n upsertKey={upsertKey}\n />\n </Grid>\n </>\n )}\n {/* Debug Model Snapshot */}\n {showDebugInfo && (\n <Grid\n size={12}\n style={{\n margin: '10px 0',\n padding: '10px',\n border: '1px solid #ccc',\n maxHeight: '400px',\n overflowY: 'auto',\n }}\n >\n <h3>Model</h3>\n {model ? (\n <ClickableJsonCrdt model={model} />\n ) : (\n 'No model available'\n )}\n </Grid>\n )}\n </>\n )}\n </Grid>\n </div>\n )\n}\n\nfunction SynapseGrid(props: SynapseGridProps) {\n return (\n <SynapseErrorBoundary>\n <SynapseGridInner {...props} />\n </SynapseErrorBoundary>\n )\n}\n\nexport default SynapseGrid\n"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { MergeGridWithSource } from '@/components/DataGrid/useMergeGridWithSource';
|
|
2
|
+
import { Entity, EntityType, GridSession, JsonSchemaObjectBinding, SynchronizeGridResponse } from '@sage-bionetworks/synapse-client';
|
|
3
|
+
import { SyncType } from '@sage-bionetworks/synapse-client/generated/models/SyncType';
|
|
4
|
+
export type SyncGridWithSourceButtonProps = {
|
|
5
|
+
gridSession: GridSession;
|
|
6
|
+
};
|
|
7
|
+
export default function SyncGridWithSourceButton(props: SyncGridWithSourceButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
/**
|
|
9
|
+
* If the source data or JSON Schema has been updated since this grid was created, we have
|
|
10
|
+
* the user PULL the latest changes before enabling a full PULL_PUSH, so they have an
|
|
11
|
+
* opportunity to handle unexpected merge outcomes.
|
|
12
|
+
*
|
|
13
|
+
* This only applies to source types that support the PULL SyncType.
|
|
14
|
+
*
|
|
15
|
+
* @param gridSession The grid session to check.
|
|
16
|
+
* @param sourceEntity The source entity to check.
|
|
17
|
+
* @param sourceEntitySchemaBinding The source entity's schema binding to check.
|
|
18
|
+
* @returns True if the user should PULL before PULL_PUSH, false otherwise.
|
|
19
|
+
*/
|
|
20
|
+
export declare function shouldPullBeforePush(gridSession: GridSession, sourceEntity: Entity | null, sourceEntitySchemaBinding: JsonSchemaObjectBinding | null): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Determines the button label and tooltip copy for the sync button based on whether the
|
|
23
|
+
* user should PULL before PULL_PUSH, and the source entity's type.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getSyncButtonLabels(shouldPull: boolean, sourceEntityType: EntityType | undefined, enableRecordSetSync: boolean): {
|
|
26
|
+
buttonText: string;
|
|
27
|
+
tooltipText: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Builds the variables passed to the merge grid mutation for the given grid session,
|
|
31
|
+
* source entity type, and whether the user should PULL before PULL_PUSH.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildMergeGridVariables(gridSession: GridSession, sourceEntityType: EntityType | undefined, shouldPull: boolean): MergeGridWithSource;
|
|
34
|
+
export declare function onSynchronizeSuccess(result: SynchronizeGridResponse, syncType?: SyncType): void;
|
|
35
|
+
//# sourceMappingURL=SyncGridWithSourceButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncGridWithSourceButton.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/SyncGridWithSourceButton.tsx"],"names":[],"mappings":"AACA,OAA+B,EAC7B,mBAAmB,EACpB,MAAM,8CAA8C,CAAA;AASrD,OAAO,EACL,MAAM,EACN,UAAU,EAEV,WAAW,EAIX,uBAAuB,EACvB,uBAAuB,EAExB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAA;AAErF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,KAAK,EAAE,6BAA6B,2CA8ErC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,yBAAyB,EAAE,uBAAuB,GAAG,IAAI,GACxD,OAAO,CAqBT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,OAAO,EACnB,gBAAgB,EAAE,UAAU,GAAG,SAAS,EACxC,mBAAmB,EAAE,OAAO,GAC3B;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAuB7C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,UAAU,GAAG,SAAS,EACxC,UAAU,EAAE,OAAO,GAClB,mBAAmB,CAOrB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,CAAC,EAAE,QAAQ,QAmBpB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { displayToast as e } from "../ToastMessage/ToastMessage.js";
|
|
2
|
+
import { convertToEntityType as t } from "../../utils/functions/EntityTypeUtils.js";
|
|
3
|
+
import { useGetEntity as n } from "../../synapse-queries/entity/useEntity.js";
|
|
4
|
+
import { useGetSchemaBinding as r } from "../../synapse-queries/entity/useEntityBoundSchema.js";
|
|
5
|
+
import { useGetFeatureFlag as i } from "../../synapse-queries/featureflags/useGetFeatureFlag.js";
|
|
6
|
+
import "../../synapse-queries/featureflags/index.js";
|
|
7
|
+
import "../../synapse-queries/index.js";
|
|
8
|
+
import { FeatureFlagEnum as a } from "../../utils/featureflag/FeatureFlags.js";
|
|
9
|
+
import "../index.js";
|
|
10
|
+
import o from "./components/GridMenuButton/GridMenuButton.js";
|
|
11
|
+
import s from "./useMergeGridWithSource.js";
|
|
12
|
+
import { Skeleton as c, Tooltip as l } from "@mui/material";
|
|
13
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
14
|
+
import { EntityType as d, instanceOfEntityUpdateResults as f, instanceOfRecordSet as p, instanceOfUploadToTableResult as m } from "@sage-bionetworks/synapse-client";
|
|
15
|
+
import { CloudDownloadTwoTone as h, CloudSyncTwoTone as g } from "@mui/icons-material";
|
|
16
|
+
import { c as _ } from "react/compiler-runtime";
|
|
17
|
+
//#region src/components/DataGrid/SyncGridWithSourceButton.tsx
|
|
18
|
+
function v(e) {
|
|
19
|
+
let d = _(19), { gridSession: f } = e, { data: p, isLoading: m } = n(f.sourceEntityId), v = !!f.sourceEntityId, w;
|
|
20
|
+
d[0] === v ? w = d[1] : (w = { enabled: v }, d[0] = v, d[1] = w);
|
|
21
|
+
let { data: T, isLoading: E } = r(f.sourceEntityId ?? "", w), D = p?.concreteType ? t(p.concreteType) : void 0, O = i(a.ENABLE_RECORDSET_SYNCHRONIZATION), k;
|
|
22
|
+
d[2] === Symbol.for("react.memo_cache_sentinel") ? (k = {
|
|
23
|
+
onSuccess: b,
|
|
24
|
+
onError: y
|
|
25
|
+
}, d[2] = k) : k = d[2];
|
|
26
|
+
let { mutate: A, isPending: j } = s(k), M = O && p !== void 0 && T !== void 0 && x(f, p, T), { buttonText: N, tooltipText: P } = S(M, D, O);
|
|
27
|
+
if (m || E) {
|
|
28
|
+
let e;
|
|
29
|
+
return d[3] === Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ u(c, { width: "100px" }), d[3] = e) : e = d[3], e;
|
|
30
|
+
}
|
|
31
|
+
let F;
|
|
32
|
+
d[4] === M ? F = d[5] : (F = u(M ? h : g, {}), d[4] = M, d[5] = F);
|
|
33
|
+
let I;
|
|
34
|
+
d[6] !== f || d[7] !== A || d[8] !== M || d[9] !== D ? (I = () => {
|
|
35
|
+
A(C(f, D, M));
|
|
36
|
+
}, d[6] = f, d[7] = A, d[8] = M, d[9] = D, d[10] = I) : I = d[10];
|
|
37
|
+
let L;
|
|
38
|
+
d[11] !== N || d[12] !== j || d[13] !== F || d[14] !== I ? (L = /* @__PURE__ */ u(o, {
|
|
39
|
+
startIcon: F,
|
|
40
|
+
loading: j,
|
|
41
|
+
onClick: I,
|
|
42
|
+
variant: "contained",
|
|
43
|
+
children: N
|
|
44
|
+
}), d[11] = N, d[12] = j, d[13] = F, d[14] = I, d[15] = L) : L = d[15];
|
|
45
|
+
let R;
|
|
46
|
+
return d[16] !== L || d[17] !== P ? (R = /* @__PURE__ */ u(l, {
|
|
47
|
+
title: P,
|
|
48
|
+
describeChild: !0,
|
|
49
|
+
children: L
|
|
50
|
+
}), d[16] = L, d[17] = P, d[18] = R) : R = d[18], R;
|
|
51
|
+
}
|
|
52
|
+
function y(t) {
|
|
53
|
+
return e(t.message, "danger");
|
|
54
|
+
}
|
|
55
|
+
function b(t, n) {
|
|
56
|
+
bb14: switch (t.type) {
|
|
57
|
+
case "synchronize":
|
|
58
|
+
w(t.data, n.syncType);
|
|
59
|
+
break bb14;
|
|
60
|
+
case "tableUpdateTransaction":
|
|
61
|
+
T(t.data);
|
|
62
|
+
break bb14;
|
|
63
|
+
case "recordset_overwrite":
|
|
64
|
+
e("Successfully updated RecordSet.", "success");
|
|
65
|
+
break bb14;
|
|
66
|
+
default:
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function x(e, t, n) {
|
|
70
|
+
if (!(t != null && p(t))) return !1;
|
|
71
|
+
let r = e.sourceEntityVersionNumber != null && t.versionNumber != null && e.sourceEntityVersionNumber < t.versionNumber, i = n != null && e.gridJsonSchema$Id !== n.jsonSchemaVersionInfo?.$id;
|
|
72
|
+
return r || i;
|
|
73
|
+
}
|
|
74
|
+
function S(e, t, n) {
|
|
75
|
+
return e ? {
|
|
76
|
+
buttonText: "Import latest changes",
|
|
77
|
+
tooltipText: "Imports any recent changes into this Curator session. Your changes will not yet be applied."
|
|
78
|
+
} : t === d.table || t === d.recordset && !n ? {
|
|
79
|
+
buttonText: "Apply changes",
|
|
80
|
+
tooltipText: "Applies any changes made in this Curator session to the source"
|
|
81
|
+
} : {
|
|
82
|
+
buttonText: "Sync changes",
|
|
83
|
+
tooltipText: "Applies any changes made in this Curator session, and imports any recent changes into this Curator session."
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function C(e, t, n) {
|
|
87
|
+
return {
|
|
88
|
+
gridSessionId: e.sessionId,
|
|
89
|
+
sourceEntityId: e.sourceEntityId,
|
|
90
|
+
sourceEntityType: t,
|
|
91
|
+
syncType: n ? "PULL" : "PULL_PUSH"
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function w(t, n) {
|
|
95
|
+
t.errorMessages == null || t.errorMessages.length === 0 ? e(n === "PULL" ? "Successfully imported latest changes." : "Successfully synchronized changes.", "success") : e(/* @__PURE__ */ u("ul", { children: t.errorMessages.map((e, t) => /* @__PURE__ */ u("li", { children: e }, t)) }), "warning", { title: "Some changes could not be applied" });
|
|
96
|
+
}
|
|
97
|
+
function T(t) {
|
|
98
|
+
if (t.results?.length) {
|
|
99
|
+
let n = t.results[0];
|
|
100
|
+
if (f(n)) {
|
|
101
|
+
let t = E(n).join("\n");
|
|
102
|
+
t ? e(`Some changes could not be applied:\n${t}`, "danger") : e("Changes applied successfully", "success");
|
|
103
|
+
} else if (m(n)) {
|
|
104
|
+
let t = n.rowsProcessed?.toLocaleString();
|
|
105
|
+
e(`Successfully updated ${t} rows.`, "success");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function E(e) {
|
|
110
|
+
return e.updateResults?.filter((e) => !!e.failureCode).map((e) => `${e.entityId}: ${e.failureMessage} (code: ${e.failureCode})`) ?? [];
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { C as buildMergeGridVariables, v as default, S as getSyncButtonLabels, w as onSynchronizeSuccess, x as shouldPullBeforePush };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=SyncGridWithSourceButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncGridWithSourceButton.js","names":["GridMenuButton","useMergeGridWithSource","MergeGridWithSource","displayToast","useGetEntity","useGetSchemaBinding","useGetFeatureFlag","FeatureFlagEnum","convertToEntityType","CloudDownloadTwoTone","CloudSyncTwoTone","Skeleton","Tooltip","Entity","EntityType","EntityUpdateResults","GridSession","instanceOfEntityUpdateResults","instanceOfRecordSet","instanceOfUploadToTableResult","JsonSchemaObjectBinding","SynchronizeGridResponse","TableUpdateTransactionResponse","SyncType","SyncGridWithSourceButtonProps","gridSession","SyncGridWithSourceButton","props","$","_c","data","entity","isLoading","entityLoading","sourceEntityId","t0","t1","enabled","sourceEntitySchemaBinding","schemaBindingIsLoading","sourceEntityType","concreteType","undefined","enableRecordSetSync","ENABLE_RECORDSET_SYNCHRONIZATION","t2","Symbol","for","onSuccess","_temp","onError","_temp2","mutate","mergeGrid","isPending","shouldPull","shouldPullBeforePush","buttonText","tooltipText","getSyncButtonLabels","isLoadingPrerequisiteData","t3","t4","buildMergeGridVariables","t5","t6","e","message","result","variables","bb14","type","onSynchronizeSuccess","syncType","onMergeTableSuccess","sourceEntity","isPullSupported","isSourceEntityUpdated","sourceEntityVersionNumber","versionNumber","isSchemaBindingUpdated","gridJsonSchema$Id","jsonSchemaVersionInfo","$id","table","recordset","gridSessionId","sessionId","errorMessages","length","map","msg","index","title","results","updateResult","failureMessages","getEntityUpdateResultsErrorMessages","join","rowsUpdatedStr","rowsProcessed","toLocaleString","updateResults","filter","failureCode","r","entityId","failureMessage"],"sources":["../../../src/components/DataGrid/SyncGridWithSourceButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport useMergeGridWithSource, {\n MergeGridWithSource,\n} from '@/components/DataGrid/useMergeGridWithSource'\nimport { displayToast } from '@/components/index'\nimport { useGetEntity } from '@/synapse-queries'\nimport { useGetSchemaBinding } from '@/synapse-queries/entity/useEntityBoundSchema'\nimport { useGetFeatureFlag } from '@/synapse-queries/featureflags'\nimport { FeatureFlagEnum } from '@/utils/featureflag/FeatureFlags'\nimport { convertToEntityType } from '@/utils/functions/EntityTypeUtils'\nimport { CloudDownloadTwoTone, CloudSyncTwoTone } from '@mui/icons-material'\nimport { Skeleton, Tooltip } from '@mui/material'\nimport {\n Entity,\n EntityType,\n EntityUpdateResults,\n GridSession,\n instanceOfEntityUpdateResults,\n instanceOfRecordSet,\n instanceOfUploadToTableResult,\n JsonSchemaObjectBinding,\n SynchronizeGridResponse,\n TableUpdateTransactionResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { SyncType } from '@sage-bionetworks/synapse-client/generated/models/SyncType'\n\nexport type SyncGridWithSourceButtonProps = {\n gridSession: GridSession\n}\n\nexport default function SyncGridWithSourceButton(\n props: SyncGridWithSourceButtonProps,\n) {\n const { gridSession } = props\n\n const { data: entity, isLoading: entityLoading } = useGetEntity(\n gridSession.sourceEntityId,\n )\n\n const { data: sourceEntitySchemaBinding, isLoading: schemaBindingIsLoading } =\n useGetSchemaBinding(gridSession.sourceEntityId ?? '', {\n enabled: !!gridSession.sourceEntityId,\n })\n\n const sourceEntityType = entity?.concreteType\n ? convertToEntityType(entity.concreteType)\n : undefined\n\n const enableRecordSetSync = useGetFeatureFlag(\n FeatureFlagEnum.ENABLE_RECORDSET_SYNCHRONIZATION,\n )\n\n const { mutate: mergeGrid, isPending } = useMergeGridWithSource({\n onSuccess: (result, variables) => {\n switch (result.type) {\n case 'synchronize':\n onSynchronizeSuccess(result.data, variables.syncType)\n break\n case 'tableUpdateTransaction':\n onMergeTableSuccess(result.data)\n break\n case 'recordset_overwrite':\n displayToast('Successfully updated RecordSet.', 'success')\n break\n default:\n result satisfies never\n }\n },\n onError: e => displayToast(e.message, 'danger'),\n })\n\n // At this time, only RecordSet sync supports PULL.\n // If the RecordSet source or JSON Schema has been updated since this grid was created,\n // we have the user PULL the latest changes before enabling a full PULL_PUSH, so they\n // have an opportunity to handle and fix unexpected merge outcomes.\n const shouldPull =\n enableRecordSetSync &&\n entity !== undefined &&\n sourceEntitySchemaBinding !== undefined &&\n shouldPullBeforePush(gridSession, entity, sourceEntitySchemaBinding)\n\n const { buttonText, tooltipText } = getSyncButtonLabels(\n shouldPull,\n sourceEntityType,\n enableRecordSetSync,\n )\n\n const isLoadingPrerequisiteData = entityLoading || schemaBindingIsLoading\n\n if (isLoadingPrerequisiteData) {\n return <Skeleton width=\"100px\" />\n }\n\n return (\n <Tooltip title={tooltipText} describeChild>\n <GridMenuButton\n startIcon={shouldPull ? <CloudDownloadTwoTone /> : <CloudSyncTwoTone />}\n loading={isPending}\n onClick={() => {\n mergeGrid(\n buildMergeGridVariables(gridSession, sourceEntityType, shouldPull),\n )\n }}\n variant=\"contained\"\n >\n {buttonText}\n </GridMenuButton>\n </Tooltip>\n )\n}\n\n/**\n * If the source data or JSON Schema has been updated since this grid was created, we have\n * the user PULL the latest changes before enabling a full PULL_PUSH, so they have an\n * opportunity to handle unexpected merge outcomes.\n *\n * This only applies to source types that support the PULL SyncType.\n *\n * @param gridSession The grid session to check.\n * @param sourceEntity The source entity to check.\n * @param sourceEntitySchemaBinding The source entity's schema binding to check.\n * @returns True if the user should PULL before PULL_PUSH, false otherwise.\n */\nexport function shouldPullBeforePush(\n gridSession: GridSession,\n sourceEntity: Entity | null,\n sourceEntitySchemaBinding: JsonSchemaObjectBinding | null,\n): boolean {\n // Currently, only RecordSet supports PULL\n const isPullSupported =\n sourceEntity != null && instanceOfRecordSet(sourceEntity)\n if (!isPullSupported) {\n return false\n }\n\n // Guide the user to PULL first if the source was updated since the grid was\n // created/synced, or if the JSON Schema binding has updated.\n const isSourceEntityUpdated =\n gridSession.sourceEntityVersionNumber != null &&\n sourceEntity.versionNumber != null &&\n gridSession.sourceEntityVersionNumber < sourceEntity.versionNumber\n\n const isSchemaBindingUpdated =\n sourceEntitySchemaBinding != null &&\n gridSession.gridJsonSchema$Id !==\n sourceEntitySchemaBinding.jsonSchemaVersionInfo?.$id\n\n return isSourceEntityUpdated || isSchemaBindingUpdated\n}\n\n/**\n * Determines the button label and tooltip copy for the sync button based on whether the\n * user should PULL before PULL_PUSH, and the source entity's type.\n */\nexport function getSyncButtonLabels(\n shouldPull: boolean,\n sourceEntityType: EntityType | undefined,\n enableRecordSetSync: boolean,\n): { buttonText: string; tooltipText: string } {\n if (shouldPull) {\n return {\n buttonText: 'Import latest changes',\n tooltipText:\n 'Imports any recent changes into this Curator session. Your changes will not yet be applied.',\n }\n }\n if (\n sourceEntityType === EntityType.table ||\n (sourceEntityType === EntityType.recordset && !enableRecordSetSync)\n ) {\n return {\n buttonText: 'Apply changes',\n tooltipText:\n 'Applies any changes made in this Curator session to the source',\n }\n }\n return {\n buttonText: 'Sync changes',\n tooltipText:\n 'Applies any changes made in this Curator session, and imports any recent changes into this Curator session.',\n }\n}\n\n/**\n * Builds the variables passed to the merge grid mutation for the given grid session,\n * source entity type, and whether the user should PULL before PULL_PUSH.\n */\nexport function buildMergeGridVariables(\n gridSession: GridSession,\n sourceEntityType: EntityType | undefined,\n shouldPull: boolean,\n): MergeGridWithSource {\n return {\n gridSessionId: gridSession.sessionId!,\n sourceEntityId: gridSession.sourceEntityId!,\n sourceEntityType,\n syncType: shouldPull ? 'PULL' : 'PULL_PUSH',\n }\n}\n\nexport function onSynchronizeSuccess(\n result: SynchronizeGridResponse,\n syncType?: SyncType,\n) {\n if (result.errorMessages == null || result.errorMessages.length === 0) {\n if (syncType === 'PULL') {\n displayToast('Successfully imported latest changes.', 'success')\n } else {\n displayToast('Successfully synchronized changes.', 'success')\n }\n } else {\n displayToast(\n <ul>\n {result.errorMessages.map((msg, index) => (\n <li key={index}>{msg}</li>\n ))}\n </ul>,\n 'warning',\n { title: 'Some changes could not be applied' },\n )\n }\n}\n\nfunction onMergeTableSuccess(result: TableUpdateTransactionResponse) {\n if (result.results?.length) {\n // There should only be one result since the CSV upload is done in one step\n const updateResult = result.results[0]\n if (instanceOfEntityUpdateResults(updateResult)) {\n // This is an update to the contents of a View\n const failureMessages =\n getEntityUpdateResultsErrorMessages(updateResult).join('\\n')\n\n if (failureMessages) {\n displayToast(\n `Some changes could not be applied:\\n${failureMessages}`,\n 'danger',\n )\n } else {\n displayToast('Changes applied successfully', 'success')\n }\n } else if (instanceOfUploadToTableResult(updateResult)) {\n // This is an update to a TableEntity\n const rowsUpdatedStr = updateResult.rowsProcessed?.toLocaleString()\n displayToast(`Successfully updated ${rowsUpdatedStr} rows.`, 'success')\n }\n }\n}\n\nfunction getEntityUpdateResultsErrorMessages(\n results: EntityUpdateResults,\n): string[] {\n return (\n results.updateResults\n ?.filter(e => !!e.failureCode)\n .map(\n r => `${r.entityId}: ${r.failureMessage} (code: ${r.failureCode})`,\n ) ?? []\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderWithTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"names":[],"mappings":"AAIA,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAKD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,UAAkB,EAClB,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,WAAW,GACZ,EAAE,4BAA4B,
|
|
1
|
+
{"version":3,"file":"ColumnHeaderWithTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"names":[],"mappings":"AAIA,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAKD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,UAAkB,EAClB,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,WAAW,GACZ,EAAE,4BAA4B,2CA8F9B"}
|
|
@@ -50,7 +50,20 @@ function u(u) {
|
|
|
50
50
|
title: l,
|
|
51
51
|
placement: "top",
|
|
52
52
|
enterNextDelay: 500,
|
|
53
|
-
children: /* @__PURE__ */ r(
|
|
53
|
+
children: /* @__PURE__ */ r(e, {
|
|
54
|
+
component: "span",
|
|
55
|
+
sx: {
|
|
56
|
+
display: "inline-flex",
|
|
57
|
+
alignItems: "center",
|
|
58
|
+
justifyContent: "center",
|
|
59
|
+
backgroundColor: "primary.main",
|
|
60
|
+
color: "primary.contrastText",
|
|
61
|
+
borderRadius: "50%",
|
|
62
|
+
width: "1.25em",
|
|
63
|
+
height: "1.25em"
|
|
64
|
+
},
|
|
65
|
+
children: /* @__PURE__ */ r(a, { sx: { fontSize: "1em" } })
|
|
66
|
+
})
|
|
54
67
|
}), d[9] = b, d[10] = k);
|
|
55
68
|
let A;
|
|
56
69
|
d[11] !== S || d[12] !== v || d[13] !== x ? (A = x && v && /* @__PURE__ */ r(n, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","Key","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","isRequired","isUpsertKey","showPinIcon","isPinned","onTogglePin","UPSERT_KEY_TOOLTIP_TEXT","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","t3","t4","undefined","t5","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t6","overflow","textOverflow","whiteSpace","t7","t8","color","ml","t9","t10","flexShrink","t11","fontSize","t12","e","stopPropagation","opacity","t13","t14"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { Key, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n isRequired?: boolean\n isUpsertKey?: boolean\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\nconst UPSERT_KEY_TOOLTIP_TEXT =\n 'This property field is the primary key. It is used to match the existing rows when applying updates. If a value already exists the row is updated; if not, a new row is added. If multiple primary keys are defined, all primary key values must match for an existing row to be updated.'\n\n/**\n * Renders a column header. When a description is provided, hovering the column\n * name shows it as a native tooltip; otherwise the column name is shown (useful\n * for truncated headers). An optional pin icon is shown on the right.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n isRequired = false,\n isUpsertKey = false,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n data-column-id={name}\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={description || name}\n >\n {name}\n {isRequired && (\n <Box component=\"span\" sx={{ color: 'error.main', ml: 0.25 }}>\n *\n </Box>\n )}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box\n sx={{ display: 'flex', gap: 0.5, flexShrink: 0, alignItems: 'center' }}\n >\n {isUpsertKey && (\n <Tooltip\n title={UPSERT_KEY_TOOLTIP_TEXT}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <Key sx={{ fontSize: '1em' }} />\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":";;;;;;AAcA,IAAMe,IACJ;AAOF,SAAOC,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAiC,EAAAX,SAAAC,gBAAAC,YAAAU,GAAAT,aAAAU,GAAAT,aAAAU,GAAAT,UAAAU,GAAAT,mBAAAG,GAGtCP,IAAAU,MAAAI,KAAAA,IAAA,KAAAJ,GACAT,IAAAU,MAAAG,KAAAA,IAAA,KAAAH,GACAT,IAAAU,MAAAE,KAAAA,IAAA,KAAAF,GACAT,IAAAU,MAAAC,KAAAA,IAAA,KAAAD,GAAgBE;CAAA,AAAAP,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAMRF,IAAA;EAAAG,SACO;EAAMC,qBACM;EAAqBC,KACrC;EAAGC,OACD;EAAMC,YACD;EAAQC,UACV;CACZ,GAACf,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAKKO,IAAA;EAAAC,UACQ;EAAQC,cACJ;EAAUC,YACZ;EAAQJ,UACV;CACZ,GAACf,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;CACM,IAAAoB,IAAA7B,KAAAD,GAAmB+B;CAAA,AAAArB,EAAA,OAAAR,IAOzB6B,IAAArB,EAAA,MAJAqB,IAAA7B,KACC,kBAAC,GAAD;EAAe,WAAA;EAAW,IAAA;GAAA8B,OAAS;GAAYC,IAAM;EAAK;YAAG;CAAzD,CAAA,GAGLvB,EAAA,KAAAR,GAAAQ,EAAA,KAAAqB;CAAA,IAAAG;CAAA,AAAAxB,EAAA,OAAAV,KAAAU,EAAA,OAAAoB,KAAApB,EAAA,OAAAqB,KAfHG,IAAA,kBAAC,GAAD;EACY,WAAA;EACN,IAAAR;EAMG,OAAAI;YART,CAUG9B,GACA+B,CAXC;KAgBErB,EAAA,KAAAV,GAAAU,EAAA,KAAAoB,GAAApB,EAAA,KAAAqB,GAAArB,EAAA,KAAAwB,KAAAA,IAAAxB,EAAA;CAAA,IAAAyB;CAAA,AAAAzB,EAAA,OAAAQ,OAAAC,IAAA,2BAAA,KAIAgB,IAAA;EAAAf,SAAW;EAAME,KAAO;EAAGc,YAAc;EAACZ,YAAc;CAAS,GAACd,EAAA,KAAAyB,KAAAA,IAAAzB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,OAAAP,
|
|
1
|
+
{"version":3,"file":"ColumnHeaderWithTooltip.js","names":["Box","IconButton","Tooltip","Key","PushPin","PushPinOutlined","TOOLTIP_DELAY_SHOW","ColumnHeaderWithTooltipProps","name","description","isRequired","isUpsertKey","showPinIcon","isPinned","onTogglePin","UPSERT_KEY_TOOLTIP_TEXT","ColumnHeaderWithTooltip","t0","$","_c","t1","t2","t3","t4","undefined","t5","Symbol","for","display","gridTemplateColumns","gap","width","alignItems","minWidth","t6","overflow","textOverflow","whiteSpace","t7","t8","color","ml","t9","t10","flexShrink","t11","justifyContent","backgroundColor","borderRadius","height","fontSize","t12","e","stopPropagation","opacity","t13","t14"],"sources":["../../../../src/components/DataGrid/components/ColumnHeaderWithTooltip.tsx"],"sourcesContent":["import { Box, IconButton, Tooltip } from '@mui/material'\nimport { Key, PushPin, PushPinOutlined } from '@mui/icons-material'\nimport { TOOLTIP_DELAY_SHOW } from '@/components/SynapseTable/SynapseTableConstants'\n\ntype ColumnHeaderWithTooltipProps = {\n name: string\n description?: string\n isRequired?: boolean\n isUpsertKey?: boolean\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n}\n\nconst UPSERT_KEY_TOOLTIP_TEXT =\n 'This property field is the primary key. It is used to match the existing rows when applying updates. If a value already exists the row is updated; if not, a new row is added. If multiple primary keys are defined, all primary key values must match for an existing row to be updated.'\n\n/**\n * Renders a column header. When a description is provided, hovering the column\n * name shows it as a native tooltip; otherwise the column name is shown (useful\n * for truncated headers). An optional pin icon is shown on the right.\n */\nexport function ColumnHeaderWithTooltip({\n name,\n description,\n isRequired = false,\n isUpsertKey = false,\n showPinIcon = false,\n isPinned = false,\n onTogglePin,\n}: ColumnHeaderWithTooltipProps) {\n return (\n <Box\n data-column-id={name}\n sx={{\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gap: 0.5,\n width: '100%',\n alignItems: 'center',\n minWidth: 0,\n }}\n >\n {/* Text area - shrinks first */}\n <Box\n component=\"span\"\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n }}\n title={description || name}\n >\n {name}\n {isRequired && (\n <Box component=\"span\" sx={{ color: 'error.main', ml: 0.25 }}>\n *\n </Box>\n )}\n </Box>\n\n {/* Icons area - fixed size, never shrinks */}\n <Box\n sx={{ display: 'flex', gap: 0.5, flexShrink: 0, alignItems: 'center' }}\n >\n {isUpsertKey && (\n <Tooltip\n title={UPSERT_KEY_TOOLTIP_TEXT}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <Box\n component=\"span\"\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'primary.main',\n color: 'primary.contrastText',\n borderRadius: '50%',\n width: '1.25em',\n height: '1.25em',\n }}\n >\n <Key sx={{ fontSize: '1em' }} />\n </Box>\n </Tooltip>\n )}\n {showPinIcon && onTogglePin && (\n <Tooltip\n title={isPinned ? 'Unpin column' : 'Pin column'}\n placement=\"top\"\n enterNextDelay={TOOLTIP_DELAY_SHOW}\n >\n <IconButton\n size=\"small\"\n color=\"inherit\"\n aria-label={isPinned ? 'Unpin column' : 'Pin column'}\n // Use onMouseDown instead of onClick to prevent column selection\n // when clicking the pin icon. stopPropagation prevents event bubbling.\n onMouseDown={e => {\n e.stopPropagation()\n onTogglePin()\n }}\n sx={{\n color: 'inherit',\n opacity: isPinned ? 1 : 0.7,\n '&:hover': {\n opacity: 1,\n },\n }}\n >\n {isPinned ? (\n <PushPin fontSize=\"inherit\" />\n ) : (\n <PushPinOutlined fontSize=\"inherit\" />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n )\n}\n"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export type MergeGridWithRecordSetInput = {
|
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
7
|
* Query mutation hook for exporting a grid session back into a RecordSet.
|
|
8
|
+
*
|
|
9
|
+
* @deprecated This is a legacy method for overwriting a RecordSet with data from a Grid. Use `useSynchronizeGridSession` instead.
|
|
8
10
|
*/
|
|
9
11
|
export default function useMergeGridWithRecordSet(options?: Omit<UseMutationOptions<GridRecordSetExportResponse, SynapseClientError, MergeGridWithRecordSetInput>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<GridRecordSetExportResponse, SynapseClientError, MergeGridWithRecordSetInput, unknown>;
|
|
10
12
|
//# sourceMappingURL=useMergeGridWithRecordSet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeGridWithRecordSet.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useMergeGridWithRecordSet.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,2BAA2B,EAC3B,kBAAkB,EAEnB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAe,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAEvE,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"useMergeGridWithRecordSet.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useMergeGridWithRecordSet.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,2BAA2B,EAC3B,kBAAkB,EAEnB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAe,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAEvE,MAAM,MAAM,2BAA2B,GAAG;IACxC,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAChB,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,CAC5B,EACD,YAAY,CACb,4IAmCF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeGridWithRecordSet.js","names":["useSynapseContext","GridRecordSetExportRequest","GridRecordSetExportResponse","SynapseClientError","waitForAsyncResult","useMutation","UseMutationOptions","MergeGridWithRecordSetInput","gridSessionId","useMergeGridWithRecordSet","options","$","_c","synapseClient","t0","t1","gridExportRequest","sessionId","concreteType","asyncJobId","gridServicesClient","postRepoV1GridExportRecordsetAsyncStart","gridRecordSetExportRequest","asyncJobResponse","asynchronousJobServicesClient","getRepoV1AsynchronousJobJobId","jobId","token","responseBody","mutationFn"],"sources":["../../../src/components/DataGrid/useMergeGridWithRecordSet.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport {\n GridRecordSetExportRequest,\n GridRecordSetExportResponse,\n SynapseClientError,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport type MergeGridWithRecordSetInput = {\n gridSessionId: string\n}\n\n/**\n * Query mutation hook for exporting a grid session back into a RecordSet.\n */\nexport default function useMergeGridWithRecordSet(\n options?: Omit<\n UseMutationOptions<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >,\n 'mutationFn'\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >({\n ...options,\n mutationFn: async ({ gridSessionId }) => {\n const gridExportRequest: GridRecordSetExportRequest = {\n sessionId: gridSessionId,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridRecordSetExportRequest',\n }\n\n // Start the async export job\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridExportRecordsetAsyncStart(\n { gridRecordSetExportRequest: gridExportRequest },\n )\n\n // Poll for the async job\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return asyncJobResponse.responseBody as GridRecordSetExportResponse\n },\n })\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"useMergeGridWithRecordSet.js","names":["useSynapseContext","GridRecordSetExportRequest","GridRecordSetExportResponse","SynapseClientError","waitForAsyncResult","useMutation","UseMutationOptions","MergeGridWithRecordSetInput","gridSessionId","useMergeGridWithRecordSet","options","$","_c","synapseClient","t0","t1","gridExportRequest","sessionId","concreteType","asyncJobId","gridServicesClient","postRepoV1GridExportRecordsetAsyncStart","gridRecordSetExportRequest","asyncJobResponse","asynchronousJobServicesClient","getRepoV1AsynchronousJobJobId","jobId","token","responseBody","mutationFn"],"sources":["../../../src/components/DataGrid/useMergeGridWithRecordSet.ts"],"sourcesContent":["import { useSynapseContext } from '@/utils'\nimport {\n GridRecordSetExportRequest,\n GridRecordSetExportResponse,\n SynapseClientError,\n waitForAsyncResult,\n} from '@sage-bionetworks/synapse-client'\nimport { useMutation, UseMutationOptions } from '@tanstack/react-query'\n\nexport type MergeGridWithRecordSetInput = {\n gridSessionId: string\n}\n\n/**\n * Query mutation hook for exporting a grid session back into a RecordSet.\n *\n * @deprecated This is a legacy method for overwriting a RecordSet with data from a Grid. Use `useSynchronizeGridSession` instead.\n */\nexport default function useMergeGridWithRecordSet(\n options?: Omit<\n UseMutationOptions<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >,\n 'mutationFn'\n >,\n) {\n const { synapseClient } = useSynapseContext()\n\n return useMutation<\n GridRecordSetExportResponse,\n SynapseClientError,\n MergeGridWithRecordSetInput\n >({\n ...options,\n mutationFn: async ({ gridSessionId }) => {\n const gridExportRequest: GridRecordSetExportRequest = {\n sessionId: gridSessionId,\n concreteType:\n 'org.sagebionetworks.repo.model.grid.GridRecordSetExportRequest',\n }\n\n // Start the async export job\n const asyncJobId =\n await synapseClient.gridServicesClient.postRepoV1GridExportRecordsetAsyncStart(\n { gridRecordSetExportRequest: gridExportRequest },\n )\n\n // Poll for the async job\n const asyncJobResponse = await waitForAsyncResult(() =>\n synapseClient.asynchronousJobServicesClient.getRepoV1AsynchronousJobJobId(\n {\n jobId: asyncJobId.token!,\n },\n ),\n )\n\n return asyncJobResponse.responseBody as GridRecordSetExportResponse\n },\n })\n}\n"],"mappings":";;;;;;AAkBA,SAAeS,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAUb,EAAAC,qBAA0Bb,EAAkB,GAACc;CAAA,AAAAH,EAAA,OAAAE,IA+B1CC,IAAAH,EAAA,MAvBWG,IAAA,OAAAC,MAAA;EAAO,IAAA,EAAAP,qBAAAO,GACjBC,IAAsD;GAAAC,WACzCT;GAAaU,cAEtB;EACJ,GAGAC,IACE,MAAMN,EAAaO,mBAAmBC,wCACpC,EAAAC,4BAA8BN,EAAkB,CAClD;EASD,QAEMO,MARwBnB,QAC7BS,EAAaW,8BAA8BC,8BACzC,EAAAC,OACSP,EAAUQ,MACnB,CACF,CACF,GAEuBC;CAA4C,GACpEjB,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAAA,IAAAC;CACF,OADEJ,EAAA,OAAAD,KAAAC,EAAA,OAAAG,KAzBDC,IAAA;EAAA,GACGL;EAAOmB,YACEf;CAwBd,GAACH,EAAA,KAAAD,GAAAC,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA,IA9BMN,EAILU,CA0BD;AAAC"}
|
|
@@ -1,29 +1,34 @@
|
|
|
1
|
-
import { EntityType, GridRecordSetExportResponse, SynchronizeGridResponse, TableUpdateTransactionResponse } from '@sage-bionetworks/synapse-client';
|
|
1
|
+
import { EntityType, GridRecordSetExportResponse, SynchronizeGridResponse, SyncType, TableUpdateTransactionResponse } from '@sage-bionetworks/synapse-client';
|
|
2
2
|
import { UseMutationOptions } from '@tanstack/react-query';
|
|
3
3
|
import { SynapseClientError } from '@sage-bionetworks/synapse-client';
|
|
4
4
|
export type MergeGridWithSource = {
|
|
5
|
+
/** The ID of the grid session to merge with the source entity. */
|
|
5
6
|
gridSessionId: string;
|
|
7
|
+
/** The ID of the source entity to merge with. This is only used for client-side logic. */
|
|
6
8
|
sourceEntityId?: string;
|
|
9
|
+
/** The type of the source entity. This is only used for client-side logic. */
|
|
7
10
|
sourceEntityType?: EntityType;
|
|
11
|
+
/** The type of synchronization to perform. Only valid for types supported by the Synchronize service. */
|
|
12
|
+
syncType?: SyncType;
|
|
8
13
|
};
|
|
9
14
|
export type MergeGridResult = {
|
|
10
|
-
type: '
|
|
15
|
+
type: 'synchronize';
|
|
11
16
|
data: SynchronizeGridResponse;
|
|
12
17
|
} | {
|
|
13
|
-
|
|
18
|
+
/** @deprecated */
|
|
19
|
+
type: 'recordset_overwrite';
|
|
14
20
|
data: GridRecordSetExportResponse;
|
|
15
21
|
} | {
|
|
16
|
-
type: '
|
|
22
|
+
type: 'tableUpdateTransaction';
|
|
17
23
|
data: TableUpdateTransactionResponse;
|
|
18
24
|
};
|
|
19
25
|
/**
|
|
20
26
|
* Single entrypoint to handle merging grid edits with source Synapse data.
|
|
21
27
|
* Calls the appropriate mutation based on entity type:
|
|
22
|
-
* - EntityView -> useSynchronizeGridSession
|
|
28
|
+
* - EntityView/RecordSet -> useSynchronizeGridSession
|
|
23
29
|
* - TableEntity -> useMergeGridWithTable
|
|
24
|
-
* - RecordSet -> useMergeGridWithRecordSet
|
|
25
30
|
*
|
|
26
|
-
* Returns a query mutation that handles
|
|
31
|
+
* Returns a query mutation that handles synchronization.
|
|
27
32
|
*/
|
|
28
33
|
export default function useMergeGridWithSource(options?: Omit<UseMutationOptions<MergeGridResult, SynapseClientError, MergeGridWithSource>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<MergeGridResult, SynapseClientError, MergeGridWithSource, unknown>;
|
|
29
34
|
//# sourceMappingURL=useMergeGridWithSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeGridWithSource.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useMergeGridWithSource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMergeGridWithSource.d.ts","sourceRoot":"","sources":["../../../src/components/DataGrid/useMergeGridWithSource.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,QAAQ,EACR,8BAA8B,EAC/B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAe,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAMrE,MAAM,MAAM,mBAAmB,GAAG;IAChC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAA;IACrB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,UAAU,CAAA;IAC7B,yGAAyG;IACzG,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACtD;IACE,kBAAkB;IAClB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,IAAI,EAAE,2BAA2B,CAAA;CAClC,GACD;IACE,IAAI,EAAE,wBAAwB,CAAA;IAC9B,IAAI,EAAE,8BAA8B,CAAA;CACrC,CAAA;AAEL;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,OAAO,CAAC,EAAE,IAAI,CACZ,kBAAkB,CAChB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,CACpB,EACD,YAAY,CACb,wHA2CF"}
|