synapse-react-client 4.0.36 → 4.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.js +1 -1
- package/dist/aridhia-queries/index.js +11 -11
- package/dist/aridhia-queries/useAridhiaQuery.d.ts +1 -0
- package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -1
- package/dist/aridhia-queries/useAridhiaQuery.js +24 -17
- package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -1
- package/dist/assets/icons/emailWithNotification.js +15 -15
- package/dist/assets/icons/emailWithNotification.js.map +1 -1
- package/dist/assets/icons/emailWithNotification.svg +13 -13
- package/dist/components/AccessRequirementList/AccessRequirementList.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +124 -117
- package/dist/components/AccessRequirementList/AccessRequirementList.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsFilesForm/DataAccessRequestAccessorsFilesForm.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/EDucPreviewStep/EDucPreviewStep.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js +33 -32
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManualUploadDucStep/ManualUploadDucStep.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +39 -18
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.d.ts +32 -0
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js +285 -0
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarAboutStep.d.ts +4 -0
- package/dist/components/Aridhia/DarWizard/DarAboutStep.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarAboutStep.js +17 -0
- package/dist/components/Aridhia/DarWizard/DarAboutStep.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarCompleteStep.d.ts +27 -0
- package/dist/components/Aridhia/DarWizard/DarCompleteStep.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarCompleteStep.js +96 -0
- package/dist/components/Aridhia/DarWizard/DarCompleteStep.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarDestinationStep.d.ts +28 -0
- package/dist/components/Aridhia/DarWizard/DarDestinationStep.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarDestinationStep.js +128 -0
- package/dist/components/Aridhia/DarWizard/DarDestinationStep.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarProjectStep.d.ts +4 -0
- package/dist/components/Aridhia/DarWizard/DarProjectStep.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarProjectStep.js +17 -0
- package/dist/components/Aridhia/DarWizard/DarProjectStep.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts +13 -0
- package/dist/components/Aridhia/DarWizard/DarSectionForm.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js +23 -0
- package/dist/components/Aridhia/DarWizard/DarSectionForm.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts +11 -0
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +47 -0
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarWorkspaceStep.d.ts +16 -0
- package/dist/components/Aridhia/DarWizard/DarWorkspaceStep.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/DarWorkspaceStep.js +33 -0
- package/dist/components/Aridhia/DarWizard/DarWorkspaceStep.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/useDarDraft.d.ts +32 -0
- package/dist/components/Aridhia/DarWizard/useDarDraft.d.ts.map +1 -0
- package/dist/components/Aridhia/DarWizard/useDarDraft.js +44 -0
- package/dist/components/Aridhia/DarWizard/useDarDraft.js.map +1 -0
- package/dist/components/Aridhia/FairLabelField.d.ts +8 -0
- package/dist/components/Aridhia/FairLabelField.d.ts.map +1 -0
- package/dist/components/Aridhia/FairLabelField.js +13 -0
- package/dist/components/Aridhia/FairLabelField.js.map +1 -0
- package/dist/components/Aridhia/fairFormToRjsf.d.ts +36 -0
- package/dist/components/Aridhia/fairFormToRjsf.d.ts.map +1 -0
- package/dist/components/Aridhia/fairFormToRjsf.js +137 -0
- package/dist/components/Aridhia/fairFormToRjsf.js.map +1 -0
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.d.ts.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +2 -2
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +1 -1
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js +2 -2
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js +3 -3
- package/dist/components/ChallengeTeamWizard/ChallengeTeamWizard.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js +2 -2
- package/dist/components/CreateTableViewWizard/CreateTableViewWizard.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +121 -117
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.d.ts +21 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js +73 -29
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.d.ts +31 -0
- package/dist/components/DataGrid/columns/NumberColumn.d.ts.map +1 -0
- package/dist/components/DataGrid/columns/NumberColumn.js +27 -0
- package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -0
- package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts +1 -0
- package/dist/components/DataGrid/components/ReorderColumnsButton.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsButton.js +17 -16
- package/dist/components/DataGrid/components/ReorderColumnsButton.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts +2 -0
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +104 -65
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +55 -51
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js +9 -8
- package/dist/components/DataGrid/utils/computeDefaultColumnOrder.js.map +1 -1
- package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts +10 -5
- package/dist/components/DatasetHosting/DatasetDownloadButton.d.ts.map +1 -1
- package/dist/components/DatasetHosting/DatasetDownloadButton.js +66 -74
- package/dist/components/DatasetHosting/DatasetDownloadButton.js.map +1 -1
- package/dist/components/DatasetHosting/DatasetHosting.d.ts +6 -0
- package/dist/components/DatasetHosting/DatasetHosting.d.ts.map +1 -1
- package/dist/components/DatasetHosting/DatasetHosting.js +6 -0
- package/dist/components/DatasetHosting/DatasetHosting.js.map +1 -1
- package/dist/components/DatasetHosting/DatasetHostingAdornment.d.ts +15 -0
- package/dist/components/DatasetHosting/DatasetHostingAdornment.d.ts.map +1 -0
- package/dist/components/DatasetHosting/DatasetHostingAdornment.js +23 -0
- package/dist/components/DatasetHosting/DatasetHostingAdornment.js.map +1 -0
- package/dist/components/DatasetHosting/index.d.ts +2 -0
- package/dist/components/DatasetHosting/index.d.ts.map +1 -1
- package/dist/components/DatasetHosting/index.js +2 -1
- package/dist/components/DownloadCart/DownloadCartPage.d.ts.map +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js +1 -1
- package/dist/components/DownloadCart/DownloadCartPage.js.map +1 -1
- package/dist/components/DropdownSelect/DropdownSelect.d.ts.map +1 -1
- package/dist/components/DropdownSelect/DropdownSelect.js +1 -1
- package/dist/components/DropdownSelect/DropdownSelect.js.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.d.ts.map +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js.map +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js +1 -1
- package/dist/components/EntityFinder/tree/VirtualizedTree.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +176 -170
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +9 -0
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js +2 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js +1 -1
- package/dist/components/JsonSchemaForm/templates/ArrayFieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js +6 -6
- package/dist/components/JsonSchemaForm/templates/FieldTemplate.js.map +1 -1
- package/dist/components/JsonSchemaForm/widgets/DateWidget.d.ts +9 -0
- package/dist/components/JsonSchemaForm/widgets/DateWidget.d.ts.map +1 -0
- package/dist/components/JsonSchemaForm/widgets/DateWidget.js +23 -0
- package/dist/components/JsonSchemaForm/widgets/DateWidget.js.map +1 -0
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.css +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.d.ts +3 -2
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.d.ts.map +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js +10 -12
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.js.map +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.module.js +8 -7
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.module.js.map +1 -1
- package/dist/components/MailchimpSubscribeSection/MailchimpSubscribeSection.module.scss +12 -2
- package/dist/components/Markdown/MarkdownEditor.js +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +46 -46
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +27 -25
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.d.ts +0 -9
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.d.ts.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js +23 -31
- package/dist/components/SchemaDrivenAnnotationEditor/AnnotationEditorUtils.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.d.ts.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js +5 -4
- package/dist/components/SchemaDrivenAnnotationEditor/SchemaDrivenAnnotationEditor.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.d.ts.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js +6 -5
- package/dist/components/SchemaDrivenAnnotationEditor/field/SynapseAnnotationsRJSFObjectField.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +2 -0
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +18 -13
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/StatisticsPlot.d.ts.map +1 -1
- package/dist/components/StatisticsPlot.js +1 -1
- package/dist/components/StatisticsPlot.js.map +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js +1 -1
- package/dist/components/SynapseForm/SynapseFormWrapper.js.map +1 -1
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.css +1 -1
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js +9 -9
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.js.map +1 -1
- package/dist/components/SynapseHomepageV2/HotdropsAndNews.module.scss +15 -0
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageChatSearch.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchPage.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts +4 -0
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +71 -69
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +4 -0
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js +14 -13
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js +4 -4
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.js.map +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.d.ts.map +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.js +1 -1
- package/dist/components/TanStackTable/TableCellRenderer.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/Webhook/CreateWebhookModal.d.ts.map +1 -1
- package/dist/components/Webhook/CreateWebhookModal.js +1 -1
- package/dist/components/Webhook/CreateWebhookModal.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +172 -63
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/RouteConstants.d.ts +3 -0
- package/dist/components/dataaccess/UserAccessRequestHistory/RouteConstants.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/RouteConstants.js +2 -2
- package/dist/components/dataaccess/UserAccessRequestHistory/RouteConstants.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js +10 -8
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPage.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +74 -43
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js +2 -2
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +5 -5
- package/dist/components/doi/CreateOrUpdateDoiModal.js.map +1 -1
- package/dist/components/entity/metadata/EntityModal.js +1 -1
- package/dist/components/entity/metadata/EntityModal.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js +2 -2
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/index.js +113 -112
- package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/menu/DropdownMenu.js +1 -1
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/row_renderers/Dataset.js +1 -1
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.d.ts +8 -0
- package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
- package/dist/components/styled/LeftRightPanel.js +10 -1
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/index.js +174 -173
- package/dist/index.js.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +73 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +119 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js +1 -1
- package/dist/mocks/msw/handlers/dataAccessRequestHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/entityHandlers.js +4 -4
- package/dist/mocks/msw/handlers/entityHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.js +2 -2
- package/dist/mocks/msw/handlers/userProfileHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +72 -69
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/components/_terms-and-conditions.scss +25 -3
- package/dist/style/main.css +1 -1
- package/dist/testutils/RjsfFormTestUtils.js +12 -0
- package/dist/testutils/RjsfFormTestUtils.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/QueryFilterUtils.js +1 -1
- package/dist/utils/functions/QueryFilterUtils.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/dist/utils/functions/queryUtils.js +1 -1
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.d.ts.map +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js +1 -1
- package/dist/utils/hooks/useDetectSSOCode.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/useImmutableTableQuery.js.map +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js +1 -1
- package/dist/utils/jsonschema/SchemaAnnotationUtils.js.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +22 -0
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -0
- package/dist/utils/jsonschema/collectTopLevelProperties.js +31 -0
- package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -0
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapseGrid.js","names":["CertificationRequirement","ExportCsvFromGridButton","GridMenuButton","ReorderColumnsButton","UploadCsvToGridButton","useGetSchemaForGrid","SyncGridWithSourceButton","computeReplicaSelectionModel","modelRowsToGrid","SynapseErrorBoundary","SkeletonTable","useGetCurrentUserBundle","useListGridReplicas","useGetEntity","getSchemaPropertiesInfo","HelpOutline","Box","Stack","Tooltip","Typography","Grid","DataSheetGridRef","SelectionWithId","CreateGridRequest","GridSession","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useErrorHandler","SynapseSpinner","GridAgentChat","ValidationAlert","DataGrid","DataGridRow","GridModel","Operation","useGridReplicaUsers","useGridUndoRedo","useRemoteSelections","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","enrichRowsWithChangeInfo","mapOperationsToModelChanges","CurieAvatarHead","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","t30","newColumnOrder","handleReorderColumns","isCertified","t31","xs","xl","t32","t33","t34","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t35","t36","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t37","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport ReorderColumnsButton from '@/components/DataGrid/components/ReorderColumnsButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\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 { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { HelpOutline } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport {\n DataSheetGridRef,\n SelectionWithId,\n} from '@sage-bionetworks/react-datasheet-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 { useErrorHandler } from 'react-error-boundary'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport CurieAvatarHead from '@/assets/mui_components/CurieAvatarHead'\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 const handleReorderColumns = useCallback(\n (newColumnOrder: number[]) => {\n if (!model) return\n applyAndCommitChanges(model, [\n { type: 'REORDER_COLUMNS', newColumnOrder },\n ])\n },\n [model, applyAndCommitChanges],\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 {/* Keep this sync indicator first in the stack, otherwise it will cause other buttons to shift */}\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\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 <GridMenuButton\n variant=\"outlined\"\n startIcon={<HelpOutline />}\n href=\"https://docs.synapse.org/synapse-docs/managing-metadata-with-curator\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n sx={{ mr: 'auto' }}\n >\n Help and Instructions\n </GridMenuButton>\n {undoUI}\n {redoUI}\n <ReorderColumnsButton\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n jsonSchema={jsonSchema}\n upsertKey={upsertKey}\n onReorder={handleReorderColumns}\n />\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<CurieAvatarHead />}\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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"}
|
|
1
|
+
{"version":3,"file":"SynapseGrid.js","names":["CertificationRequirement","ExportCsvFromGridButton","GridMenuButton","ReorderColumnsButton","UploadCsvToGridButton","useGetSchemaForGrid","SyncGridWithSourceButton","computeReplicaSelectionModel","modelRowsToGrid","SynapseErrorBoundary","SkeletonTable","useGetCurrentUserBundle","useListGridReplicas","useGetEntity","getSchemaPropertiesInfo","HelpOutline","Box","Stack","Tooltip","Typography","Grid","DataSheetGridRef","SelectionWithId","CreateGridRequest","GridSession","instanceOfRecordSet","ClickableJsonCrdt","Ref","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useErrorHandler","SynapseSpinner","GridAgentChat","ValidationAlert","DataGrid","DataGridRow","GridModel","Operation","useGridReplicaUsers","useGridUndoRedo","useRemoteSelections","StartGridSession","StartGridSessionHandle","useDataGridWebSocket","applyModelChange","ModelChange","removeNoOpOperations","enrichRowsWithChangeInfo","mapOperationsToModelChanges","CurieAvatarHead","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","isRecordSet","t18","upsertKey","t19","t20","schemaPropertiesInfo","connectionStatus","remoteSelections","t21","rowValues","t22","enrichedRowValues","t23","sendPatch","commit","t24","t25","t26","model_0","modelChanges","forEach","change","applyAndCommitChanges","t27","change_0","console","error","type","applyModelChangeFromUndoRedo","undoUI","redoUI","addOperationsToUndoStack","clearRedoStack","t28","newValue","operations","length","modelChanges_0","handleChange","t29","opts","selection","replicaSelectionModel","toString","handleSelectionChange","t30","rowIndex","colIndex","col","row","handleNavigateToCell","t31","newColumnOrder","handleReorderColumns","isCertified","t32","xs","xl","t33","t34","t35","gridJsonSchema$Id","substring","color","connectedReplicas","filter","_temp","map","r_0","i","r","margin","fontSize","JSON","stringify","cursor","textDecoration","t36","t37","columnNames","columnOrder","marginBottom","justifyContent","display","alignItems","gap","mr","padding","border","maxHeight","overflowY","t38","SynapseGrid","props"],"sources":["../../../src/components/DataGrid/SynapseGrid.tsx"],"sourcesContent":["import CertificationRequirement from '@/components/AccessRequirementList/RequirementItem/CertificationRequirement'\nimport ExportCsvFromGridButton from '@/components/DataGrid/components/ExportCsvFromGridButton'\nimport GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport ReorderColumnsButton from '@/components/DataGrid/components/ReorderColumnsButton'\nimport UploadCsvToGridButton from '@/components/DataGrid/components/UploadCsvToGridButton'\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 { SynapseErrorBoundary } from '@/components/error/ErrorBanner'\nimport { SkeletonTable } from '@/components/index'\nimport { useGetCurrentUserBundle } from '@/synapse-queries'\nimport { useListGridReplicas } from '@/synapse-queries/grid/useGridSession'\nimport { useGetEntity } from '@/synapse-queries/index'\nimport { getSchemaPropertiesInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport { HelpOutline } from '@mui/icons-material'\nimport { Box, Stack, Tooltip, Typography } from '@mui/material'\nimport Grid from '@mui/material/Grid'\nimport {\n DataSheetGridRef,\n SelectionWithId,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport {\n CreateGridRequest,\n GridSession,\n instanceOfRecordSet,\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 { useErrorHandler } from 'react-error-boundary'\nimport { SynapseSpinner } from '../LoadingScreen/LoadingScreen'\nimport GridAgentChat from '../SynapseChat/GridAgentChat'\nimport { ValidationAlert } from './components/ValidationAlert'\nimport DataGrid from './DataGrid'\nimport { DataGridRow, GridModel, Operation } from './DataGridTypes'\nimport { useGridReplicaUsers } from './hooks/useGridReplicaUsers'\nimport { useGridUndoRedo } from './hooks/useGridUndoRedo'\nimport { useRemoteSelections } from './hooks/useRemoteSelections'\nimport { StartGridSession, StartGridSessionHandle } from './StartGridSession'\nimport { useDataGridWebSocket } from './useDataGridWebsocket'\nimport { applyModelChange, ModelChange } from './utils/applyModelChange'\nimport { removeNoOpOperations } from './utils/DataGridUtils'\nimport { enrichRowsWithChangeInfo } from './utils/enrichRowsWithChangeInfo'\nimport { mapOperationsToModelChanges } from './utils/mapOperationsToModelChanges'\nimport CurieAvatarHead from '@/assets/mui_components/CurieAvatarHead'\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 const isRecordSet = !!entityData && instanceOfRecordSet(entityData)\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 const handleReorderColumns = useCallback(\n (newColumnOrder: number[]) => {\n if (!model) return\n applyAndCommitChanges(model, [\n { type: 'REORDER_COLUMNS', newColumnOrder },\n ])\n },\n [model, applyAndCommitChanges],\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 {/* Keep this sync indicator first in the stack, otherwise it will cause other buttons to shift */}\n {(!hasCompletedInitialSync || isSyncing) && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\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 <GridMenuButton\n variant=\"outlined\"\n startIcon={<HelpOutline />}\n href=\"https://docs.synapse.org/synapse-docs/managing-metadata-with-curator\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n sx={{ mr: 'auto' }}\n >\n Help and Instructions\n </GridMenuButton>\n {undoUI}\n {redoUI}\n <ReorderColumnsButton\n columnNames={modelSnapshot?.columnNames ?? []}\n columnOrder={modelSnapshot?.columnOrder ?? []}\n jsonSchema={jsonSchema}\n upsertKey={upsertKey}\n canRemoveColumns={isRecordSet}\n onReorder={handleReorderColumns}\n />\n <GridMenuButton\n variant={'outlined'}\n onClick={() => setChatOpen(true)}\n startIcon={<CurieAvatarHead />}\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,SAAA+D,EAAAC,GAAA;CAAA,IAAAC,IAAAC,GAAA,GAAA,GAA0B,EAAAX,wBAAAC,eAAAW,IAAAV,YAAAO,GAExBR,IAAAW,OAAAC,KAAAA,IAAA,KAAAD,IAGA,CAAAE,GAAAC,MAA8BrC,GAA6B,IAAI,GAC/D,CAAAsC,GAAAC,MAAkCvC,GAAwB,IAAI,GAC9D,CAAAwC,IAAAC,MAAgCzC,GAAS,EAAK,GAC9C,CAAA0C,IAAAC,MAA0C3C,GACxC,IACF,GAEA4C,IAA4B7C,GAAsC,IAAI,GACtE8C,IAAgB9C,GAAgC,IAAI,GAEpD,EAAA+C,MAAAC,IAAAC,kBAAwCtE,EAAwB,GAEhE,EAAAoE,MAAAG,IAAAC,SAAAC,OAA0DxE,GACxDyD,GAAOP,SACT,GAACuB;CAAA,AAAApB,EAAA,OAAAiB,KAF0BG,KAAApB,EAAA,MAAboB,KAAAH,OAAAd,KAAAA,IAAA,CAAA,IAAAc,IAAajB,EAAA,KAAAiB,IAAAjB,EAAA,KAAAoB;CAAb,IAAAC,IAAAD,IAAaE;CAAA,AAAAtB,EAAA,OAAAmB,KAM1BG,KAAAtB,EAAA,MAFiDsB,WAAA;EAC3CH,GAAgB;CAAC,GACvBnB,EAAA,KAAAmB,IAAAnB,EAAA,KAAAsB;CAFD,IAAAC,IAAsCD,IAQtCK,KAAuBlD,GAAoB4C,GAAUf,GAFnDS,IAAUU,UAAY,OAAtBtB,KAAAA,IAA6BuB,OAAOX,GAAUU,MAAmB,CAEU,GAACG,GAAAC;CAE9EhE,AAF8EmC,EAAA,OAAA8B,OAAAC,IAAA,2BAAA,KAI5EH,WAAO;EAAAlC,iBACWC,MAAA;GACd,AAAIiB,EAAmBoB,WACrBpB,EAAmBoB,QAAQC,mBAAoBtC,CAAO;EACvD;EACFC,sBACoBC,MAAA;GACnB,AAAIe,EAAmBoB,WACrBpB,EAAmBoB,QAAQE,kBAAmBrC,CAAS;EACxD;CAEL,IACAgC,IAAA,CAAA,GAAE7B,EAAA,KAAA4B,GAAA5B,EAAA,KAAA6B,MAAAD,IAAA5B,EAAA,IAAA6B,IAAA7B,EAAA,KAdJnC,GACE2B,IACAoC,GAYAC,CACF;CAAC,IAAAM;CAAA,AAAAnC,EAAA,OAAAuB,IAkBAY,IAAAnC,EAAA,MAJwBmC,IAAA;EAAAC,aACVb;EAA6Bc,oBACtBd;EAA6Be,uBAC1Bf;CACzB,GAACvB,EAAA,KAAAuB,GAAAvB,EAAA,KAAAmC;CAfD,IAAA,EAAAI,gBAAAC,sBAAAC,4BAAAC,eAAAC,UAAAC,kBAAAC,YAAAC,iBAAAC,uBAAAC,uBAWIlE,GAAqBqD,CAIxB;CAEDlE,GAAgB+E,EAAc;CAE9B,IAAAC,KAA6BlF,GAAwC,IAAI,GAACmF,IAAAC;CAE1EvF,AAF0EoC,EAAA,OAAAwC,KAIpDU,KAAAlD,EAAA,IAAAmD,IAAAnD,EAAA,QAFZkD,WAAA;EACRD,GAAoBjB,UAAWQ;CAAH,GAC3BW,IAAA,CAACX,CAAiB,GAACxC,EAAA,KAAAwC,GAAAxC,EAAA,KAAAkD,IAAAlD,EAAA,MAAAmD,IAFtBvF,EAAUsF,IAEPC,CAAmB;CAGtB,IAAAC,KAA6BrF,GAGnB,IAAI,GAACsF;CAAA,AAAArD,EAAA,QAAA6C,KAAA7C,EAAA,QAAAM,KAAAN,EAAA,QAAAI,KAELiD,UAAA;EACR,IAAI/C,KAAc,QAAd,CAAkDF,GAAOP,WAAW;GACtEuD,GAAoBpB,UAAW;GAAH;EAAA;EAI9B,IAAAsB,IAAmB;GAAAhD;GAAAT,WAENO,EAAOP;EACpB,GAEA0D,IAAmBH,GAAoBpB;EAGrCuB,KACAA,EAAUjD,cAAegD,EAAUhD,aACnCiD,EAAU1D,cAAeyD,EAAUzD,cAKrCuD,GAAoBpB,UAAWsB,GAC/BT,EAAQvC,GAAWF,EAAOP,SAAU;CAAC,GACtCG,EAAA,MAAA6C,GAAA7C,EAAA,MAAAM,GAAAN,EAAA,MAAAI,GAAAJ,EAAA,MAAAqD,KAAAA,IAAArD,EAAA;CAAc,IAAAwD,KAAApD,GAAOP,WAAW4D;CAvBjC7F,AAuBiCoC,EAAA,QAAA6C,KAAA7C,EAAA,QAAAM,KAAAN,EAAA,QAAAwD,MAA9BC,IAAA;EAACnD;EAAWkD;EAAoBX;CAAO,GAAC7C,EAAA,MAAA6C,GAAA7C,EAAA,MAAAM,GAAAN,EAAA,MAAAwD,IAAAxD,EAAA,MAAAyD,KAAAA,IAAAzD,EAAA,KAvB3CpC,EAAUyF,GAuBPI,CAAwC;CAAC,IAAAC,GAAAC;CAG5C/F,AAH4CoC,EAAA,QAAA2C,KAYlCe,IAAA1D,EAAA,KAAA2D,IAAA3D,EAAA,QATA0D,UAAA;EACR,AAAIf,MAAU,SAEZhC,GAAiB,IAAI,GAEjBE,EAAOmB,WACTnB,EAAOmB,QAAQ4B,cAAe,IAAI;CAErC,GACAD,IAAA,CAAChB,CAAK,GAAC3C,EAAA,MAAA2C,GAAA3C,EAAA,MAAA0D,GAAA1D,EAAA,MAAA2D,IATV/F,EAAU8F,GASPC,CAAO;CAEV,IAAAE,IAAmBzH,GAAoBgE,CAAO,GAQjC0D,KAAA,CAAC,CAAC1D,GAAO2D,gBAAgBC;CAAA,AAAAhE,EAAA,QAAA8D,KACnCE,IAAAhE,EAAA,OAFDgE,IAAA,EAAAC,SACWH,GACX,GAAC9D,EAAA,MAAA8D,IAAA9D,EAAA,MAAAgE;CALH,IAAA,EAAAlD,MAAAoD,MAA6BtH,EAC3BwD,GAAO2D,gBACP5D,KAAAA,GACA6D,CAGF,GAEAG,IACED,GAAUE,iBACV,mDAAiDC;CAAA,AAAArE,EAAA,QAAAkE,IAEgBG,IAAArE,EAAA,OAA/CqE,IAAA,CAAC,CAACH,KAAc1G,GAAoB0G,CAAU,GAAClE,EAAA,MAAAkE,GAAAlE,EAAA,MAAAqE;CAAnE,IAAAC,KAAoBD,GAA+CE;CAAA,AAAAvE,EAAA,QAAAkE,KAAAlE,EAAA,QAAAmE,KAIjDI,IAACJ,IAAD,CAAA,IACbD,GAA8DM,WAC7DxE,EAAA,MAAAkE,GAAAlE,EAAA,MAAAmE,GAAAnE,EAAA,MAAAuE,KAAAA,IAAAvE,EAAA;CAFN,IAAAwE,IAAkBD,GAMeE,KAAAZ,KAAA,MAAkBa;CAAA,AAAA1E,EAAA,QAAAyE,KAACC,IAAA1E,EAAA,OAA3C0E,IAAA7H,GAAwB4H,EAAkB,GAACzE,EAAA,MAAAyE,IAAAzE,EAAA,MAAA0E;CADpD,IAAAC,IACED,GAGFE,KAAyBrC,IAAA,cAAA,gBAEzBsC,KAAyBlG,GACvBiE,GACAD,GACAtB,GACAf,CACF,GAACwE;CAAA,AAAA9E,EAAA,QAAA2C,KAAA3C,EAAA,QAAA4C,KAIQkC,IAAAlC,IAAgBrG,GAAgBoG,GAAOC,CAAkB,IAAzD,CAAA,GAA0D5C,EAAA,MAAA2C,GAAA3C,EAAA,MAAA4C,GAAA5C,EAAA,MAAA8E,KAAAA,IAAA9E,EAAA;CADnE,IAAA+E,IACSD,GAERE;CAAA,AAAAhF,EAAA,QAAA2C,KAAA3C,EAAA,QAAA4C,KAAA5C,EAAA,QAAA2B,MAAA3B,EAAA,QAAA+E,KAKGC,KAAA9F,GAAyB6F,GAAWpC,GAAOC,GAAejB,EAAc,GAAC3B,EAAA,MAAA2C,GAAA3C,EAAA,MAAA4C,GAAA5C,EAAA,MAAA2B,IAAA3B,EAAA,MAAA+E,GAAA/E,EAAA,MAAAgF,MAAAA,KAAAhF,EAAA;CAF7E,IAAAiF,KAEID,IAEHE;CAAA,AAAAlF,EAAA,QAAAuC,IAQA2C,IAAAlF,EAAA,OAN0BkF,UAAA;EACrB,CAAC3C,KAAD,CAAiBU,GAAoBjB,WAIzCiB,GAAoBjB,QAAQmD,UAAW;CAAC,GACzCnF,EAAA,MAAAuC,GAAAvC,EAAA,MAAAkF;CAND,IAAAE,IAAeF,GAMwBG,GAAAC;CAEvC1H,AAFuCoC,EAAA,QAAAoF,KAAApF,EAAA,QAAAuC,KAE7B8C,UAAA;EACR,AAAI9C,KACF6C,EAAO;CACR,GACAE,IAAA,CAAC/C,GAAa6C,CAAM,GAACpF,EAAA,MAAAoF,GAAApF,EAAA,MAAAuC,GAAAvC,EAAA,MAAAqF,GAAArF,EAAA,MAAAsF,MAAAD,IAAArF,EAAA,KAAAsF,IAAAtF,EAAA,MAJxBpC,EAAUyH,GAIPC,CAAqB;CAAC,IAAAC;CAAA,AAAAvF,EAAA,QAAAoF,KAAApF,EAAA,QAAA2E,KAGvBY,KAAAC,GAAAC,MAAA;EAMEL,AAJAK,EAAYC,SAASC,MAAA;GACnB5G,GAAiB4D,GAAOgD,GAAQhB,CAAoB;EAAC,CACtD,GAEDS,EAAO;CAAC,GACTpF,EAAA,MAAAoF,GAAApF,EAAA,MAAA2E,GAAA3E,EAAA,MAAAuF,KAAAA,IAAAvF,EAAA;CARH,IAAA4F,IAA8BL,GAU7BM;CAAA,AAAA7F,EAAA,QAAA4F,KAAA5F,EAAA,QAAA2C,KAGCkD,MAAAC,MAAA;EACE,IAAI,CAACnD,GAAK;GACRoD,QAAOC,MAAO,0BAA0B;GAAC;EAAA;EAS3CJ,AALID,EAAMM,SAAU,YAAYpF,EAAOmB,WAErCnB,EAAOmB,QAAQ4B,cAAe,IAAI,GAGpCgC,EAAsBjD,GAAO,CAACgD,CAAM,CAAC;CAAC,GACvC3F,EAAA,MAAA4F,GAAA5F,EAAA,MAAA2C,GAAA3C,EAAA,MAAA6F,MAAAA,KAAA7F,EAAA;CAIH,IAAA,EAAAmG,YAAAC,YAAAC,8BAAAC,uBACE5H,GAAgBwH,EAA4B,GAACK;CAAA,AAAAvG,EAAA,QAAAqG,MAAArG,EAAA,QAAA4F,KAAA5F,EAAA,QAAAsG,MAAAtG,EAAA,QAAA2C,KAAA3C,EAAA,QAAA+E,KAG7CwB,MAAAC,GAAAC,MAAA;EACE,IAAI,CAAC9D,GAAK;GACRoD,QAAOC,MAAO,0BAA0B;GAAC;EAAA;EAO3C,AAFAS,IAAaxH,GAAqBuH,GAAUzB,GAAW0B,CAAU,GAE7DA,EAAUC,SAAU,MAEtBJ,GAAe,GAKfD,GAAyBI,GAAY1B,GAAWyB,CAAQ,GAKxDZ,EAAsBjD,GAFDxD,GAA4BsH,GAAYD,CAEhCf,CAAY;CAC1C,GACFzF,EAAA,MAAAqG,IAAArG,EAAA,MAAA4F,GAAA5F,EAAA,MAAAsG,IAAAtG,EAAA,MAAA2C,GAAA3C,EAAA,MAAA+E,GAAA/E,EAAA,MAAAuG,MAAAA,KAAAvG,EAAA;CAxBH,IAAA4G,KAAqBL,IAgCpBM;CAAA,AAAA7G,EAAA,QAAA4F,KAAA5F,EAAA,QAAA2C,KAAA3C,EAAA,QAAAM,KAGCuG,MAAAC,MAAA;EACE,IAAA,EAAAC,iBAAsBD;EACtB,IAAIC,KAAa,SACfpG,GAAiBoG,CAAS,GAEtBpE,KAAS,QAAQrC,KAAa,OAAI;GACpC,IAAA0G,IAA8B1K,GAC5ByK,GACApE,CACF;GAEAiD,EAAsBjD,GAAO,CAC3B;IAAAsD,MACQ;IAAe3F,WACVA,EAAS2G,SAAU;IAACF,WACpBC;GACb,CAAC,CACF;EAAC;CAEL,GACFhH,EAAA,MAAA4F,GAAA5F,EAAA,MAAA2C,GAAA3C,EAAA,MAAAM,GAAAN,EAAA,MAAA6G,MAAAA,KAAA7G,EAAA;CArBH,IAAAkH,KAA8BL,IAuB7BM;CAAA,AAAAnH,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAGCoF,KAAAC,GAAAC,MAAA;EACExG,EAAOmB,SAAuB4B,cAAC;GAAA0D,KAAOD;GAAQE,KAAOH;EAAS,CAAC;CAAC,GACjEpH,EAAA,MAAAmH,KAAAA,IAAAnH,EAAA;CAHH,IAAAwH,KAA6BL,GAK5BM;CAAA,AAAAzH,EAAA,QAAA4F,KAAA5F,EAAA,QAAA2C,KAGC8E,MAAAC,MAAA;EACO/E,KACLiD,EAAsBjD,GAAO,CAC3B;GAAAsD,MAAQ;GAAiByB;EAAiB,CAAC,CAC5C;CAAC,GACH1H,EAAA,MAAA4F,GAAA5F,EAAA,MAAA2C,GAAA3C,EAAA,MAAAyH,MAAAA,KAAAzH,EAAA;CANH,IAAA2H,KAA6BF;CAU7B,IAAI,CAACzG,MAAD,CAAeD,IAAU6G,aAAa;EAAA,IAAAC;EACL,OADK7H,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KACjC8F,IAAA,kBAAC,IAAD,CAAyB,CAAA,GAAG7H,EAAA,MAAA6H,KAAAA,IAAA7H,EAAA,KAA5B6H;CAA4B;CACpC,IAAAA;CAAA,AAAA7H,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAKiB8F,KAAA;EAAAC,IAAM;EAAEC,IAAM;CAAE,GAAC/H,EAAA,MAAA6H,MAAAA,KAAA7H,EAAA;CAAA,IAAAgI;CAAA,AAAAhI,EAAA,QAAAT,IAOtByI,IAAAhI,EAAA,OAPPgI,IAAA,kBAAC,GAAD;EAAY,MAAAH;YACV,kBAAC,IAAD;GACOjH,KAAAA;GACYP,iBAAAA;GACAE,iBAAAA;GACXhB,MAAAA;EAAa,CAAA;CALlB,CAAA,GAOES,EAAA,MAAAT,GAAAS,EAAA,MAAAgI;CAAA,IAAAC;CAAA,AAAAjI,EAAA,QAAA8B,OAAAC,IAAA,2BAAA,KAEKkG,KAAA;EAAAH,IAAM;EAAEC,IAAM;CAAE,GAAC/H,EAAA,MAAAiI,MAAAA,KAAAjI,EAAA;CAAA,IAAAkI;CAAA,AAAAlI,EAAA,QAAA4E,MAAA5E,EAAA,QAAAuC,KAAAvC,EAAA,QAAA8C,KAAA9C,EAAA,QAAAM,KAAAN,EAAA,QAAAqB,KAAArB,EAAA,QAAAI,GAAA+H,qBAAAnI,EAAA,QAAAI,GAAAP,aAAAG,EAAA,QAAAI,GAAA2D,kBAAA/D,EAAA,QAAAT,KAC1B2I,IAAA3I,KACC,kBAAA,OAAA,EAAA,UAAA;EACE,kBAAA,KAAA,EAAA,UAAA,CAAG,gBAAaa,GAAOP,aAAP,oBAA+C,EAAA,CAAA;EAC/D,kBAAA,KAAA,EAAA,UAAA,CAAG,gBAAaS,KAAA,oBAAsC,EAAA,CAAA;EACtD,kBAAA,KAAA,EAAA,UAAA;GAAG;GACiB;GACjBF,GAAO2D,kBAAP;EACC,EAAA,CAAA;EACJ,kBAAA,KAAA,EAAA,UAAA;GAAG;GACgB;GAChB3D,GAAO+H,qBAAP;EACC,EAAA,CAAA;EACJ,kBAAA,KAAA,EAAA,UAAA;GAAG;GACc;GACdrF,IACGA,EAAYsF,UAAW,GAAG,EAAE,KAC3BtF,EAAY4D,SAAU,KACnB,UACA5D,EAAYsF,UAAWtF,EAAY4D,SAAU,EAAE,IAFlD,MAFJ;EAOC,EAAA,CAAA;EACJ,kBAAA,KAAA,EAAA,UAAA;GAAG;GACiB;GAClB,kBAAA,QAAA;IAAa,OAAA,EAAA2B,OAAS9F,IAAA,UAAA,MAA8B;cACjDqC;GACI,CAAA;EACL,EAAA,CAAA;EACJ,kBAAA,KAAA,EAAA,iBACI;GACA,IAAA0D,IAA0BjH,EAAQkH,OAAQC,EAAkB;GAAC,OAE3D,kBAAA,IAAA,EAAA,UAAA;IAAE;IACqBF,EAAiB5B;IAAQ;IAAG;IAChDrF,EAAQqF;IAAQ;IAAS;IACzB4B,EAAiB5B,WAAY,IAA7B,SAEG4B,EAAiBG,KAAKC,GAAAC,MACpB,kBAAC,IAAD;KAGI,OAAA,kBAAA,OAAA;MAAY,OAAA;OAAAE,QAAU;OAACC,UAAY;MAAO;gBACvCC,KAAIC,UAAWJ,GAAG,MAAM,CAAC;KACtB,CAAA;eAGR,kBAAA,QAAA;MACS,OAAA;OAAAK,QACG;OAASC,gBACD;MAClB;gBAJF,CAMGN,EAACtI,WACDqI,IAAIL,EAAiB5B,SAAU,IAA/B,OAAA,EACI;;IAhBD,GACDkC,EAACtI,SADA,CAkBT;GAAC,EAAA,CAAA;EACL,GAEJ,EACD,CAAA;CACA,EAAA,CAAA,GACPN,EAAA,MAAA4E,IAAA5E,EAAA,MAAAuC,GAAAvC,EAAA,MAAA8C,GAAA9C,EAAA,MAAAM,GAAAN,EAAA,MAAAqB,GAAArB,EAAA,MAAAI,GAAA+H,mBAAAnI,EAAA,MAAAI,GAAAP,WAAAG,EAAA,MAAAI,GAAA2D,gBAAA/D,EAAA,MAAAT,GAAAS,EAAA,MAAAkI,KAAAA,IAAAlI,EAAA;CAAA,IAAAmJ;CAAA,AAAAnJ,EAAA,QAAAkI,IACIiB,IAAAnJ,EAAA,OAhEPmJ,IAAA,kBAAC,GAAD;EAAY,MAAAlB;YACTC;CADE,CAAA,GAgEElI,EAAA,MAAAkI,GAAAlI,EAAA,MAAAmJ;CAAA,IAAAC;CAAA,AAAApJ,EAAA,QAAAV,KAAAU,EAAA,QAAAQ,MAAAR,EAAA,QAAAiF,MAAAjF,EAAA,QAAAmE,KAAAnE,EAAA,QAAA4G,MAAA5G,EAAA,QAAA2H,MAAA3H,EAAA,QAAAkH,MAAAlH,EAAA,QAAAyC,KAAAzC,EAAA,QAAA+C,MAAA/C,EAAA,QAAAuC,KAAAvC,EAAA,QAAAsE,MAAAtE,EAAA,QAAA0C,MAAA1C,EAAA,QAAA6D,KAAA7D,EAAA,QAAAU,MAAAV,EAAA,QAAA2C,KAAA3C,EAAA,QAAA4C,GAAAyG,eAAArJ,EAAA,QAAA4C,GAAA0G,eAAAtJ,EAAA,QAAA8C,KAAA9C,EAAA,SAAAoG,MAAApG,EAAA,SAAA6E,MAAA7E,EAAA,SAAAM,KAAAN,EAAA,SAAA+E,KAAA/E,EAAA,SAAA2E,KAAA3E,EAAA,SAAAI,KAAAJ,EAAA,SAAAT,KAAAS,EAAA,SAAAmG,MAAAnG,EAAA,SAAAwE,KAEN4E,IAAAhJ,KAAA,kBAAA,IAAA,EAAA,UAAA;EAGI,CAAC2C,MACA,kBAAC,GAAD;GAAY,MAAA;aAAZ,CACE,kBAAA,MAAA,EAAA,UAAI,qBAAuB,CAAA,GAC3B,kBAAA,OAAA;IAAY,OAAA,EAAAwG,cAAgB,OAAO;cAAnC;KACG,CAACnJ,KAAW,kBAAA,KAAA,EAAA,UAAG,2BAA4B,CAAA;KAC3CA,KAAA,CAAYE,KAAa,kBAAA,KAAA,EAAA,UAAG,+BAAgC,CAAA;KAC5DF,KAAAE,KAAA,CAAyBwC,KACxB,kBAAA,KAAA,EAAA,UAAG,oCAAqC,CAAA;KAEzC1C,KAAAE,KAAAwC,KAAA,CAAyCP,KACxC,kBAAA,KAAA,EAAA,UAAG,0BAA2B,CAAA;KAE/BA,KAAA,CAAgBE,KACf,kBAAA,KAAA,EAAA,UAAG,wBAAyB,CAAA;KAE9B,kBAAC,IAAD;MAAwB,SAAA;MAAY,SAAA;KAAC,CAAA;IACjC;KAfH;;EAmBNM,MAAA,kBAAA,IAAA,EAAA,UAAA;GAEG,kBAAC,GAAD;IAAY,MAAA;cACV,kBAAC,IAAD;KACagC;KACE,aAAAnC,GAAayG,eAAb,CAAA;KACA,aAAAzG,GAAa0G,eAAb,CAAA;KACK9B,kBAAAA;KACP,WAAA,CAAC/E;IAAuB,CAAA;GANlC,CAAA;GASL,kBAAC,GAAD;IAAY,MAAA;cACV,kBAAC,IAAD;KACa,WAAA;KACF,SAAA;KACL,IAAA,EAAA+G,gBAAkB,WAAW;eAHnC;OAMI,CAAC/G,KAADC,OACA,kBAAC,IAAD;OACM,IAAA;QAAA+G,SACO;QAAMC,YACH;QAAQC,KACf;OACP;iBALF,CAOE,kBAAC,GAAD;QAAsB,MAAA;QAAW,QAAA;OAAG,CAAA,GACpC,kBAAC,IAAD;QAAoB,SAAA;QAAgB,OAAA;kBACjClH,IAAA,aAAA;OADQ,CAAA,CART;;MAaN,kBAAC,IAAD;OACU,SAAA;OACG,WAAA,kBAAC,IAAD,CAAY,CAAA;OAClB,MAAA;OACE,QAAA;OACH,KAAA;OACA,IAAA,EAAAmH,IAAM,OAAO;iBAClB;MAPc,CAAA;MAUdzD;MACAC;MACD,kBAAC,IAAD;OACe,aAAAxD,GAAayG,eAAb,CAAA;OACA,aAAAzG,GAAa0G,eAAb,CAAA;OACDzF;OACDW;OACOF,kBAAAA;OACPqD,WAAAA;MAAoB,CAAA;MAEjC,kBAAC,IAAD;OACW,SAAA;OACA,eAAMlH,GAAY,EAAI;OACpB,WAAA,kBAAC,IAAD,CAAgB,CAAA;iBAC5B;MAJc,CAAA;MAOf,kBAAC,IAAD;OACuBnB;OACfkB,MAAAA;OACG,eAAMC,GAAY,EAAK;OACjB,eAAAL,EAAOP;OACNS,gBAAAA;OACJ,aAAA;MAAO,CAAA;MAEpBF,EAAO2D,kBACN,kBAAC,IAAD;OACkB,gBAAA3D,EAAO2D;OACR,eAAA3D,EAAOP;MAAU,CAAA;MAGnCO,EAAOP,aACN,kBAAC,IAAD;OACiB,eAAAO,EAAOP;OAEpB,UAAA,WAAWO,EAAO2D,kBAAP;MAAmC,CAAA;MAInD3D,EAAO2D,kBACN,kBAAC,IAAD,EAAuC3D,aAAAA,EAAO,CAAA;KAtE5C;;GADH,CAAA;GA2EL,kBAAC,GAAD;IAAY,MAAA;cACV,kBAAC,IAAD;KACWS;KACEoE,WAAAA;KACE,aAAArC,GAAayG,eAAb,CAAA;KACA,aAAAzG,GAAa0G,eAAb,CAAA;KACS3E;KACRR;KACFN;KACGnD;KACDkG;KACSM;KACLrC;KACPL;IAAS,CAAA;GAbnB,CAAA;EAeE,EAAA,CAAA;EAIVjF,KACC,kBAAC,GAAD;GACQ,MAAA;GACC,OAAA;IAAAsJ,QACG;IAAQgB,SACP;IAAMC,QACP;IAAgBC,WACb;IAAOC,WACP;GACb;aARF,CAUE,kBAAA,MAAA,EAAA,UAAI,QAAU,CAAA,GACbrH,IACC,kBAAC,IAAD,EAA0BA,SAAK,CAAA,IADhC,oBAXE;;CAiBN,EAAA,CAAA,GAEJ3C,EAAA,MAAAV,GAAAU,EAAA,MAAAQ,IAAAR,EAAA,MAAAiF,IAAAjF,EAAA,MAAAmE,GAAAnE,EAAA,MAAA4G,IAAA5G,EAAA,MAAA2H,IAAA3H,EAAA,MAAAkH,IAAAlH,EAAA,MAAAyC,GAAAzC,EAAA,MAAA+C,IAAA/C,EAAA,MAAAuC,GAAAvC,EAAA,MAAAsE,IAAAtE,EAAA,MAAA0C,IAAA1C,EAAA,MAAA6D,GAAA7D,EAAA,MAAAU,IAAAV,EAAA,MAAA2C,GAAA3C,EAAA,MAAA4C,GAAAyG,aAAArJ,EAAA,MAAA4C,GAAA0G,aAAAtJ,EAAA,MAAA8C,GAAA9C,EAAA,OAAAoG,IAAApG,EAAA,OAAA6E,IAAA7E,EAAA,OAAAM,GAAAN,EAAA,OAAA+E,GAAA/E,EAAA,OAAA2E,GAAA3E,EAAA,OAAAI,GAAAJ,EAAA,OAAAT,GAAAS,EAAA,OAAAmG,IAAAnG,EAAA,OAAAwE,GAAAxE,EAAA,OAAAoJ,KAAAA,IAAApJ,EAAA;CAAA,IAAAiK;CAEC,OAFDjK,EAAA,SAAAgI,KAAAhI,EAAA,SAAAmJ,KAAAnJ,EAAA,SAAAoJ,KAjOLa,KAAA,kBAAA,OAAA,EAAA,UACE,kBAAC,GAAD;EAAM,WAAA;EAAmB,SAAA;YAAzB;GACEjC;GASAmB;GAkECC;EA5EE;IAkOD,CAAA,GAAApJ,EAAA,OAAAgI,GAAAhI,EAAA,OAAAmJ,GAAAnJ,EAAA,OAAAoJ,GAAApJ,EAAA,OAAAiK,MAAAA,KAAAjK,EAAA,MAnONiK;AAmOM;AA1gBV,SAAAzB,GAAAI,GAAA;CAAA,OAiViEA,EAACrG;AAAY;AA6L9E,SAAA2H,EAAAC,GAAA;CAAA,IAAAnK,IAAAC,GAAA,CAAA,GAAAF;CAI2B,OAJ3BC,EAAA,OAAAmK,IAI2BpK,IAAAC,EAAA,MAFvBD,IAAA,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD,EAAiB,GAAKoK,EAAK,CAAA,EADR,CAAA,GAEEnK,EAAA,KAAAmK,GAAAnK,EAAA,KAAAD,IAFvBA;AAEuB"}
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
+
import { Dayjs } from 'dayjs';
|
|
1
2
|
import { JSONSchema7Type } from 'json-schema';
|
|
2
3
|
import { CellProps, Column } from '@sage-bionetworks/react-datasheet-grid';
|
|
3
4
|
export type DateTimeCellProps = CellProps & {
|
|
4
5
|
colType?: JSONSchema7Type;
|
|
5
6
|
};
|
|
6
|
-
export
|
|
7
|
+
export type DateTimeCellValue = {
|
|
8
|
+
kind: 'empty';
|
|
9
|
+
} | {
|
|
10
|
+
kind: 'date';
|
|
11
|
+
date: Dayjs;
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'unparseable';
|
|
14
|
+
text: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Classify a stored cell value as empty, a usable date, or something the picker
|
|
18
|
+
* cannot represent.
|
|
19
|
+
*
|
|
20
|
+
* Numeric schema types store epoch milliseconds, but an imported value can
|
|
21
|
+
* arrive as a numeric string, which dayjs would otherwise read as a year
|
|
22
|
+
* ("1705314600000" parses to 1707). Coercion is attempted only when the string
|
|
23
|
+
* is fully numeric, so an ISO string in a numeric column still parses as a date.
|
|
24
|
+
*/
|
|
25
|
+
export declare function interpretDateTimeCellValue(rowData: unknown, colType?: JSONSchema7Type): DateTimeCellValue;
|
|
26
|
+
export declare function DateTimeCell({ rowData, setRowData, disabled, colType, active, }: DateTimeCellProps): import("react/jsx-runtime").JSX.Element;
|
|
7
27
|
export type DateTimeColumnProps = {
|
|
8
28
|
colType?: JSONSchema7Type;
|
|
9
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"DateTimeColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,EAEL,SAAS,EACT,MAAM,EACP,MAAM,wCAAwC,CAAA;AAc/C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAazC;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,iBAAiB,CA2BnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,GACP,EAAE,iBAAiB,2CA0CnB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,GACR,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAUvC"}
|
|
@@ -1,39 +1,83 @@
|
|
|
1
1
|
import e from "../../DateTimePicker/DateTimePicker.js";
|
|
2
|
-
import {
|
|
3
|
-
import n from "
|
|
4
|
-
import {
|
|
2
|
+
import { castCellValueToString as t } from "./AutocompleteColumn.js";
|
|
3
|
+
import { Box as n, Tooltip as r } from "@mui/material";
|
|
4
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
5
|
+
import a from "dayjs";
|
|
6
|
+
import { c as o } from "react/compiler-runtime";
|
|
7
|
+
import s from "lodash-es/isNil";
|
|
5
8
|
//#region src/components/DataGrid/columns/DateTimeColumn.tsx
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
var c = {
|
|
10
|
+
display: "flex",
|
|
11
|
+
alignItems: "center",
|
|
12
|
+
width: "100%",
|
|
13
|
+
height: "100%",
|
|
14
|
+
px: "14px",
|
|
15
|
+
overflow: "hidden",
|
|
16
|
+
whiteSpace: "nowrap",
|
|
17
|
+
textOverflow: "ellipsis"
|
|
18
|
+
};
|
|
19
|
+
function l(e) {
|
|
20
|
+
return typeof e == "string" || typeof e == "number" || e instanceof Date || a.isDayjs(e);
|
|
21
|
+
}
|
|
22
|
+
function u(e, n) {
|
|
23
|
+
if (s(e) || typeof e == "string" && e.trim() === "") return { kind: "empty" };
|
|
24
|
+
let r = {
|
|
25
|
+
kind: "unparseable",
|
|
26
|
+
text: t(e)
|
|
27
|
+
};
|
|
28
|
+
if (!l(e)) return r;
|
|
29
|
+
let i = a(((n === "number" || n === "integer") && typeof e == "string" && Number.isFinite(Number(e)) ? Number(e) : null) ?? e);
|
|
30
|
+
return i.isValid() ? {
|
|
31
|
+
kind: "date",
|
|
32
|
+
date: i
|
|
33
|
+
} : r;
|
|
34
|
+
}
|
|
35
|
+
function d(t) {
|
|
36
|
+
let s = o(19), { rowData: l, setRowData: d, disabled: f, colType: p, active: m } = t, h;
|
|
37
|
+
s[0] !== p || s[1] !== l ? (h = u(l, p), s[0] = p, s[1] = l, s[2] = h) : h = s[2];
|
|
38
|
+
let g = h;
|
|
39
|
+
if (g.kind === "unparseable" && !m) {
|
|
40
|
+
let e;
|
|
41
|
+
s[3] === g.text ? e = s[4] : (e = /* @__PURE__ */ i(n, {
|
|
42
|
+
sx: c,
|
|
43
|
+
children: g.text
|
|
44
|
+
}), s[3] = g.text, s[4] = e);
|
|
45
|
+
let t;
|
|
46
|
+
return s[5] !== g.text || s[6] !== e ? (t = /* @__PURE__ */ i(r, {
|
|
47
|
+
title: g.text,
|
|
48
|
+
placement: "top-start",
|
|
49
|
+
arrow: !0,
|
|
50
|
+
children: e
|
|
51
|
+
}), s[5] = g.text, s[6] = e, s[7] = t) : t = s[7], t;
|
|
52
|
+
}
|
|
53
|
+
let _ = g.kind === "date" ? g.date : null, v;
|
|
54
|
+
s[8] !== p || s[9] !== d ? (v = (e) => {
|
|
55
|
+
d(e == null ? null : p === "number" || p === "integer" ? a(e).valueOf() : a(e).toISOString());
|
|
56
|
+
}, s[8] = p, s[9] = d, s[10] = v) : v = s[10];
|
|
57
|
+
let y = f ? "none" : void 0, b;
|
|
58
|
+
s[11] === Symbol.for("react.memo_cache_sentinel") ? (b = {
|
|
15
59
|
height: "100%",
|
|
16
60
|
backgroundColor: "inherit"
|
|
17
|
-
},
|
|
18
|
-
let
|
|
19
|
-
|
|
20
|
-
pointerEvents:
|
|
61
|
+
}, s[11] = b) : b = s[11];
|
|
62
|
+
let x;
|
|
63
|
+
s[12] === y ? x = s[13] : (x = {
|
|
64
|
+
pointerEvents: y,
|
|
21
65
|
width: "100%",
|
|
22
66
|
height: "100%",
|
|
23
|
-
"& .MuiInputBase-root":
|
|
24
|
-
},
|
|
25
|
-
let
|
|
26
|
-
return
|
|
27
|
-
disabled:
|
|
28
|
-
value:
|
|
29
|
-
onChange:
|
|
30
|
-
sx:
|
|
31
|
-
}),
|
|
67
|
+
"& .MuiInputBase-root": b
|
|
68
|
+
}, s[12] = y, s[13] = x);
|
|
69
|
+
let S;
|
|
70
|
+
return s[14] !== f || s[15] !== _ || s[16] !== v || s[17] !== x ? (S = /* @__PURE__ */ i(e, {
|
|
71
|
+
disabled: f,
|
|
72
|
+
value: _,
|
|
73
|
+
onChange: v,
|
|
74
|
+
sx: x
|
|
75
|
+
}), s[14] = f, s[15] = _, s[16] = v, s[17] = x, s[18] = S) : S = s[18], S;
|
|
32
76
|
}
|
|
33
|
-
function
|
|
77
|
+
function f({ colType: e }) {
|
|
34
78
|
return {
|
|
35
|
-
component: ((
|
|
36
|
-
...
|
|
79
|
+
component: ((t) => /* @__PURE__ */ i(d, {
|
|
80
|
+
...t,
|
|
37
81
|
colType: e
|
|
38
82
|
})),
|
|
39
83
|
copyValue: ({ rowData: e }) => e,
|
|
@@ -43,6 +87,6 @@ function a({ colType: e }) {
|
|
|
43
87
|
};
|
|
44
88
|
}
|
|
45
89
|
//#endregion
|
|
46
|
-
export {
|
|
90
|
+
export { d as DateTimeCell, f as dateTimeColumn, u as interpretDateTimeCellValue };
|
|
47
91
|
|
|
48
92
|
//# sourceMappingURL=DateTimeColumn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeColumn.js","names":["DateTimePicker","dayjs","Dayjs","JSONSchema7Type","CellComponent","CellProps","Column","DateTimeCellProps","colType","DateTimeCell","t0","$","_c","
|
|
1
|
+
{"version":3,"file":"DateTimeColumn.js","names":["DateTimePicker","Box","SxProps","Theme","Tooltip","dayjs","Dayjs","JSONSchema7Type","isNil","CellComponent","CellProps","Column","castCellValueToString","UNPARSEABLE_VALUE_SX","display","alignItems","width","height","px","overflow","whiteSpace","textOverflow","DateTimeCellProps","colType","DateTimeCellValue","kind","date","text","isDateLike","value","Date","isDayjs","interpretDateTimeCellValue","rowData","trim","unparseable","const","expectsEpochMillis","epochMillis","Number","isFinite","ConfigType","isValid","DateTimeCell","t0","$","_c","setRowData","disabled","active","t1","cellValue","t2","t3","newValue","valueOf","toISOString","t4","undefined","t5","Symbol","for","backgroundColor","t6","pointerEvents","t7","DateTimeColumnProps","dateTimeColumn","Partial","component","props","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"sourcesContent":["import DateTimePicker from '@/components/DateTimePicker/DateTimePicker'\nimport { Box, SxProps, Theme, Tooltip } from '@mui/material'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { JSONSchema7Type } from 'json-schema'\nimport isNil from 'lodash-es/isNil'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { castCellValueToString } from './AutocompleteColumn'\n\nconst UNPARSEABLE_VALUE_SX: SxProps<Theme> = {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n px: '14px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n}\n\nexport type DateTimeCellProps = CellProps & {\n colType?: JSONSchema7Type\n}\n\nexport type DateTimeCellValue =\n | { kind: 'empty' }\n | { kind: 'date'; date: Dayjs }\n | { kind: 'unparseable'; text: string }\n\n// dayjs coerces values it has no business accepting — dayjs(true) yields epoch\n// 1ms — so restrict parsing to types that can legitimately carry a date.\nfunction isDateLike(value: unknown): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n value instanceof Date ||\n dayjs.isDayjs(value)\n )\n}\n\n/**\n * Classify a stored cell value as empty, a usable date, or something the picker\n * cannot represent.\n *\n * Numeric schema types store epoch milliseconds, but an imported value can\n * arrive as a numeric string, which dayjs would otherwise read as a year\n * (\"1705314600000\" parses to 1707). Coercion is attempted only when the string\n * is fully numeric, so an ISO string in a numeric column still parses as a date.\n */\nexport function interpretDateTimeCellValue(\n rowData: unknown,\n colType?: JSONSchema7Type,\n): DateTimeCellValue {\n if (\n isNil(rowData) ||\n (typeof rowData === 'string' && rowData.trim() === '')\n ) {\n return { kind: 'empty' }\n }\n\n const unparseable = {\n kind: 'unparseable',\n text: castCellValueToString(rowData),\n } as const\n\n if (!isDateLike(rowData)) {\n return unparseable\n }\n\n const expectsEpochMillis = colType === 'number' || colType === 'integer'\n const epochMillis =\n expectsEpochMillis &&\n typeof rowData === 'string' &&\n Number.isFinite(Number(rowData))\n ? Number(rowData)\n : null\n\n const date = dayjs((epochMillis ?? rowData) as dayjs.ConfigType)\n return date.isValid() ? { kind: 'date', date } : unparseable\n}\n\nexport function DateTimeCell({\n rowData,\n setRowData,\n disabled,\n colType,\n active,\n}: DateTimeCellProps) {\n const cellValue = interpretDateTimeCellValue(rowData, colType)\n\n // The picker renders a value it can't parse as an empty field, which hides\n // imported data that fails schema validation. Show the raw value instead until\n // the user activates the cell, at which point the picker is the only way to\n // replace it. The value is left untouched unless the user commits a change.\n if (cellValue.kind === 'unparseable' && !active) {\n return (\n <Tooltip title={cellValue.text} placement=\"top-start\" arrow>\n <Box sx={UNPARSEABLE_VALUE_SX}>{cellValue.text}</Box>\n </Tooltip>\n )\n }\n\n return (\n <DateTimePicker\n disabled={disabled}\n value={cellValue.kind === 'date' ? cellValue.date : null}\n onChange={(newValue: string | Dayjs | null) => {\n if (newValue == null) {\n setRowData(null)\n } else if (colType === 'number' || colType === 'integer') {\n // Assume unix millisecond timestamp\n setRowData(dayjs(newValue).valueOf())\n } else {\n // colType is 'string' or unspecified, use ISO string\n setRowData(dayjs(newValue).toISOString())\n }\n }}\n sx={{\n // When disabled, allow selecting the entire cell\n pointerEvents: disabled ? 'none' : undefined,\n width: '100%',\n height: '100%',\n '& .MuiInputBase-root': {\n height: '100%',\n backgroundColor: 'inherit',\n },\n }}\n />\n )\n}\n\nexport type DateTimeColumnProps = {\n colType?: JSONSchema7Type\n}\n\nexport function dateTimeColumn({\n colType,\n}: DateTimeColumnProps): Partial<Column> {\n return {\n component: ((props: DateTimeCellProps) => (\n <DateTimeCell {...props} colType={colType} />\n )) as CellComponent,\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Column } from '@sage-bionetworks/react-datasheet-grid';
|
|
2
|
+
import { JSONSchema7Type } from 'json-schema';
|
|
3
|
+
/**
|
|
4
|
+
* Render a numeric cell value for display while the cell is not being edited.
|
|
5
|
+
*
|
|
6
|
+
* Real numbers are locale-formatted; anything else is stringified verbatim.
|
|
7
|
+
* Numeric columns legitimately hold non-numeric values — CSV import writes
|
|
8
|
+
* cells server-side without passing through any client-side parsing, and
|
|
9
|
+
* parseFreeTextGivenJsonSchemaType deliberately preserves unparseable text so
|
|
10
|
+
* the validator can report it. Rendering those as blank leaves the user with an
|
|
11
|
+
* apparently empty cell on a row flagged invalid.
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatNumberCellValue(value: unknown): string;
|
|
14
|
+
export type NumberColumnProps = {
|
|
15
|
+
colType?: JSONSchema7Type;
|
|
16
|
+
isRequired?: boolean;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Mirrors the (unexported) columnData that createTextColumn builds, so callers
|
|
20
|
+
* and tests can reach the format/parse functions it derives.
|
|
21
|
+
*/
|
|
22
|
+
export type NumberColumnData = {
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
alignRight: boolean;
|
|
25
|
+
continuousUpdates: boolean;
|
|
26
|
+
parseUserInput: (value: string) => unknown;
|
|
27
|
+
formatBlurredInput: (value: unknown) => string;
|
|
28
|
+
formatInputOnFocus: (value: unknown) => string;
|
|
29
|
+
};
|
|
30
|
+
export declare function numberColumn({ colType, isRequired, }: NumberColumnProps): Partial<Column<unknown, NumberColumnData, string>>;
|
|
31
|
+
//# sourceMappingURL=NumberColumn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/columns/NumberColumn.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EAEP,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAK7C;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;IAC1C,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;IAC9C,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;CAC/C,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAkB,EAClB,UAAU,GACX,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAmBxE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import e from "../utils/parseFreeTextUsingJsonSchemaType.js";
|
|
2
|
+
import { castCellValueToString as t } from "./AutocompleteColumn.js";
|
|
3
|
+
import { getEmptyValue as n } from "../utils/getEmptyValue.js";
|
|
4
|
+
import { createTextColumn as r } from "@sage-bionetworks/react-datasheet-grid";
|
|
5
|
+
//#region src/components/DataGrid/columns/NumberColumn.ts
|
|
6
|
+
var i = new Intl.NumberFormat();
|
|
7
|
+
function a(e) {
|
|
8
|
+
return typeof e == "number" ? Number.isNaN(e) ? "" : i.format(e) : t(e);
|
|
9
|
+
}
|
|
10
|
+
function o({ colType: i = "number", isRequired: o }) {
|
|
11
|
+
function s(t) {
|
|
12
|
+
return t.trim() === "" ? n(o) : e(t, i);
|
|
13
|
+
}
|
|
14
|
+
return r({
|
|
15
|
+
alignRight: !0,
|
|
16
|
+
continuousUpdates: !1,
|
|
17
|
+
deletedValue: n(o),
|
|
18
|
+
formatBlurredInput: a,
|
|
19
|
+
formatInputOnFocus: t,
|
|
20
|
+
parseUserInput: s,
|
|
21
|
+
parsePastedValue: (e) => s(e.replace(/[\n\r]+/g, " "))
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { a as formatNumberCellValue, o as numberColumn };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=NumberColumn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberColumn.js","names":["getEmptyValue","parseFreeTextGivenJsonSchemaType","Column","createTextColumn","JSONSchema7Type","castCellValueToString","NUMBER_FORMAT","Intl","NumberFormat","formatNumberCellValue","value","Number","isNaN","format","NumberColumnProps","colType","isRequired","NumberColumnData","placeholder","alignRight","continuousUpdates","parseUserInput","formatBlurredInput","formatInputOnFocus","numberColumn","Partial","parse","trim","deletedValue","parsePastedValue","replace"],"sources":["../../../../src/components/DataGrid/columns/NumberColumn.ts"],"sourcesContent":["import { getEmptyValue } from '@/components/DataGrid/utils/getEmptyValue'\nimport parseFreeTextGivenJsonSchemaType from '@/components/DataGrid/utils/parseFreeTextUsingJsonSchemaType'\nimport {\n Column,\n createTextColumn,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { JSONSchema7Type } from 'json-schema'\nimport { castCellValueToString } from './AutocompleteColumn'\n\nconst NUMBER_FORMAT = new Intl.NumberFormat()\n\n/**\n * Render a numeric cell value for display while the cell is not being edited.\n *\n * Real numbers are locale-formatted; anything else is stringified verbatim.\n * Numeric columns legitimately hold non-numeric values — CSV import writes\n * cells server-side without passing through any client-side parsing, and\n * parseFreeTextGivenJsonSchemaType deliberately preserves unparseable text so\n * the validator can report it. Rendering those as blank leaves the user with an\n * apparently empty cell on a row flagged invalid.\n */\nexport function formatNumberCellValue(value: unknown): string {\n if (typeof value === 'number') {\n return Number.isNaN(value) ? '' : NUMBER_FORMAT.format(value)\n }\n return castCellValueToString(value)\n}\n\nexport type NumberColumnProps = {\n colType?: JSONSchema7Type\n isRequired?: boolean\n}\n\n/**\n * Mirrors the (unexported) columnData that createTextColumn builds, so callers\n * and tests can reach the format/parse functions it derives.\n */\nexport type NumberColumnData = {\n placeholder?: string\n alignRight: boolean\n continuousUpdates: boolean\n parseUserInput: (value: string) => unknown\n formatBlurredInput: (value: unknown) => string\n formatInputOnFocus: (value: unknown) => string\n}\n\nexport function numberColumn({\n colType = 'number',\n isRequired,\n}: NumberColumnProps): Partial<Column<unknown, NumberColumnData, string>> {\n function parse(value: string): unknown {\n if (value.trim() === '') {\n return getEmptyValue(isRequired)\n }\n return parseFreeTextGivenJsonSchemaType(value, colType)\n }\n\n return createTextColumn<unknown>({\n alignRight: true,\n continuousUpdates: false,\n deletedValue: getEmptyValue(isRequired),\n formatBlurredInput: formatNumberCellValue,\n // Edit against the stored value rather than the locale-formatted one so\n // grouping separators never reach the parser.\n formatInputOnFocus: castCellValueToString,\n parseUserInput: parse,\n parsePastedValue: value => parse(value.replace(/[\\n\\r]+/g, ' ')),\n })\n}\n"],"mappings":";;;;;AASA,IAAMM,IAAgB,IAAIC,KAAKC,aAAa;AAY5C,SAAgBC,EAAsBC,GAAwB;CAI5D,OAHI,OAAOA,KAAU,WACZC,OAAOC,MAAMF,CAAK,IAAI,KAAKJ,EAAcO,OAAOH,CAAK,IAEvDL,EAAsBK,CAAK;AACpC;AAoBA,SAAgBc,EAAa,EAC3BT,aAAU,UACVC,iBACwE;CACxE,SAASU,EAAMhB,GAAwB;EAIrC,OAHIA,EAAMiB,KAAK,MAAM,KACZ3B,EAAcgB,CAAU,IAE1Bf,EAAiCS,GAAOK,CAAO;CACxD;CAEA,OAAOZ,EAA0B;EAC/BgB,YAAY;EACZC,mBAAmB;EACnBQ,cAAc5B,EAAcgB,CAAU;EACtCM,oBAAoBb;EAGpBc,oBAAoBlB;EACpBgB,gBAAgBK;EAChBG,mBAAkBnB,MAASgB,EAAMhB,EAAMoB,QAAQ,YAAY,GAAG,CAAC;CACjE,CAAC;AACH"}
|
|
@@ -4,6 +4,7 @@ export type ReorderColumnsButtonProps = {
|
|
|
4
4
|
columnOrder: number[];
|
|
5
5
|
jsonSchema: JSONSchema7 | undefined;
|
|
6
6
|
upsertKey?: string[];
|
|
7
|
+
canRemoveColumns?: boolean;
|
|
7
8
|
onReorder: (newColumnOrder: number[]) => void;
|
|
8
9
|
};
|
|
9
10
|
export default function ReorderColumnsButton(props: ReorderColumnsButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReorderColumnsButton.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsButton.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"ReorderColumnsButton.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsButton.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAwC5E"}
|
|
@@ -6,30 +6,31 @@ import { SwapHoriz as o } from "@mui/icons-material";
|
|
|
6
6
|
import { c as s } from "react/compiler-runtime";
|
|
7
7
|
//#region src/components/DataGrid/components/ReorderColumnsButton.tsx
|
|
8
8
|
function c(c) {
|
|
9
|
-
let l = s(
|
|
10
|
-
l[0] !==
|
|
11
|
-
open:
|
|
9
|
+
let l = s(15), { columnNames: u, columnOrder: d, jsonSchema: f, upsertKey: p, canRemoveColumns: m, onReorder: h } = c, [g, _] = n(!1), v;
|
|
10
|
+
l[0] !== m || l[1] !== u || l[2] !== d || l[3] !== f || l[4] !== h || l[5] !== g || l[6] !== p ? (v = g && /* @__PURE__ */ i(t, {
|
|
11
|
+
open: g,
|
|
12
12
|
columnNames: u,
|
|
13
13
|
columnOrder: d,
|
|
14
14
|
jsonSchema: f,
|
|
15
15
|
upsertKey: p,
|
|
16
|
+
canRemoveColumns: m,
|
|
16
17
|
onSave: (e) => {
|
|
17
|
-
|
|
18
|
+
h(e), _(!1);
|
|
18
19
|
},
|
|
19
|
-
onCancel: () =>
|
|
20
|
-
}), l[0] =
|
|
21
|
-
let
|
|
22
|
-
l[
|
|
23
|
-
let
|
|
24
|
-
l[
|
|
20
|
+
onCancel: () => _(!1)
|
|
21
|
+
}), l[0] = m, l[1] = u, l[2] = d, l[3] = f, l[4] = h, l[5] = g, l[6] = p, l[7] = v) : v = l[7];
|
|
22
|
+
let y, b;
|
|
23
|
+
l[8] === Symbol.for("react.memo_cache_sentinel") ? (y = /* @__PURE__ */ i(o, {}), b = () => _(!0), l[8] = y, l[9] = b) : (y = l[8], b = l[9]);
|
|
24
|
+
let x = d.length < 2, S;
|
|
25
|
+
l[10] === x ? S = l[11] : (S = /* @__PURE__ */ i(e, {
|
|
25
26
|
variant: "outlined",
|
|
26
|
-
startIcon:
|
|
27
|
-
onClick:
|
|
28
|
-
disabled:
|
|
27
|
+
startIcon: y,
|
|
28
|
+
onClick: b,
|
|
29
|
+
disabled: x,
|
|
29
30
|
children: "Reorder Columns"
|
|
30
|
-
}), l[
|
|
31
|
-
let
|
|
32
|
-
return l[
|
|
31
|
+
}), l[10] = x, l[11] = S);
|
|
32
|
+
let C;
|
|
33
|
+
return l[12] !== v || l[13] !== S ? (C = /* @__PURE__ */ a(r, { children: [v, S] }), l[12] = v, l[13] = S, l[14] = C) : C = l[14], C;
|
|
33
34
|
}
|
|
34
35
|
//#endregion
|
|
35
36
|
export { c as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReorderColumnsButton.js","names":["GridMenuButton","ReorderColumnsDialog","SwapHoriz","JSONSchema7","useState","ReorderColumnsButtonProps","columnNames","columnOrder","jsonSchema","upsertKey","onReorder","newColumnOrder","ReorderColumnsButton","props","$","_c","showDialog","setShowDialog","t0","t1","t2","Symbol","for","t3","length","t4","t5"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport ReorderColumnsDialog from '@/components/DataGrid/components/ReorderColumnsDialog'\nimport { SwapHoriz } from '@mui/icons-material'\nimport { JSONSchema7 } from 'json-schema'\nimport { useState } from 'react'\n\nexport type ReorderColumnsButtonProps = {\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n onReorder: (newColumnOrder: number[]) => void\n}\n\nexport default function ReorderColumnsButton(props: ReorderColumnsButtonProps) {\n const {
|
|
1
|
+
{"version":3,"file":"ReorderColumnsButton.js","names":["GridMenuButton","ReorderColumnsDialog","SwapHoriz","JSONSchema7","useState","ReorderColumnsButtonProps","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onReorder","newColumnOrder","ReorderColumnsButton","props","$","_c","showDialog","setShowDialog","t0","t1","t2","Symbol","for","t3","length","t4","t5"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsButton.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport ReorderColumnsDialog from '@/components/DataGrid/components/ReorderColumnsDialog'\nimport { SwapHoriz } from '@mui/icons-material'\nimport { JSONSchema7 } from 'json-schema'\nimport { useState } from 'react'\n\nexport type ReorderColumnsButtonProps = {\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n canRemoveColumns?: boolean\n onReorder: (newColumnOrder: number[]) => void\n}\n\nexport default function ReorderColumnsButton(props: ReorderColumnsButtonProps) {\n const {\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns,\n onReorder,\n } = props\n\n const [showDialog, setShowDialog] = useState(false)\n\n return (\n <>\n {showDialog && (\n // Explicitly unmount the dialog when it is closed so its working order resets\n <ReorderColumnsDialog\n open={showDialog}\n columnNames={columnNames}\n columnOrder={columnOrder}\n jsonSchema={jsonSchema}\n upsertKey={upsertKey}\n canRemoveColumns={canRemoveColumns}\n onSave={newColumnOrder => {\n onReorder(newColumnOrder)\n setShowDialog(false)\n }}\n onCancel={() => setShowDialog(false)}\n />\n )}\n <GridMenuButton\n variant=\"outlined\"\n startIcon={<SwapHoriz />}\n onClick={() => setShowDialog(true)}\n disabled={columnOrder.length < 2}\n >\n Reorder Columns\n </GridMenuButton>\n </>\n )\n}\n"],"mappings":";;;;;;;AAeA,SAAea,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACb,EAAAV,gBAAAC,gBAAAC,eAAAC,cAAAC,qBAAAC,iBAOIG,GAEJ,CAAAG,GAAAC,KAAoCd,EAAS,EAAK,GAACe;CAAA,AAAAJ,EAAA,OAAAL,KAAAK,EAAA,OAAAT,KAAAS,EAAA,OAAAR,KAAAQ,EAAA,OAAAP,KAAAO,EAAA,OAAAJ,KAAAI,EAAA,OAAAE,KAAAF,EAAA,OAAAN,KAI9CU,IAAAF,KAEC,kBAAC,GAAD;EACQA,MAAAA;EACOX;EACAC;EACDC;EACDC;EACOC;EACV,SAAAE,MAAA;GAENM,AADAP,EAAUC,CAAc,GACxBM,EAAc,EAAK;EAAC;EAEZ,gBAAMA,EAAc,EAAK;CAAC,CAAA,GAEvCH,EAAA,KAAAL,GAAAK,EAAA,KAAAT,GAAAS,EAAA,KAAAR,GAAAQ,EAAA,KAAAP,GAAAO,EAAA,KAAAJ,GAAAI,EAAA,KAAAE,GAAAF,EAAA,KAAAN,GAAAM,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAK,GAAAC;CAAA,AAAAN,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAGYH,IAAA,kBAAC,GAAD,CAAU,CAAA,GACZC,UAAMH,EAAc,EAAI,GAACH,EAAA,KAAAK,GAAAL,EAAA,KAAAM,MAAAD,IAAAL,EAAA,IAAAM,IAAAN,EAAA;CACxB,IAAAS,IAAAjB,EAAWkB,SAAU,GAACC;CAAA,AAAAX,EAAA,QAAAS,IAGjBE,IAAAX,EAAA,OAPjBW,IAAA,kBAAC,GAAD;EACU,SAAA;EACG,WAAAN;EACF,SAAAC;EACC,UAAAG;YACX;CALc,CAAA,GAOET,EAAA,MAAAS,GAAAT,EAAA,MAAAW;CAAA,IAAAC;CAChB,OADgBZ,EAAA,QAAAI,KAAAJ,EAAA,QAAAW,KAxBnBC,IAAA,kBAAA,GAAA,EAAA,UAAA,CACGR,GAgBDO,CAOiB,EAAA,CAAA,GAChBX,EAAA,MAAAI,GAAAJ,EAAA,MAAAW,GAAAX,EAAA,MAAAY,KAAAA,IAAAZ,EAAA,KAzBHY;AAyBG"}
|
|
@@ -5,6 +5,8 @@ export type ReorderColumnsDialogProps = {
|
|
|
5
5
|
columnOrder: number[];
|
|
6
6
|
jsonSchema: JSONSchema7 | undefined;
|
|
7
7
|
upsertKey?: string[];
|
|
8
|
+
/** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */
|
|
9
|
+
canRemoveColumns?: boolean;
|
|
8
10
|
onSave: (newColumnOrder: number[]) => void;
|
|
9
11
|
onCancel: () => void;
|
|
10
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReorderColumnsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReorderColumnsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AASD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA8J5E"}
|