synapse-react-client 4.0.46 → 4.0.47
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/useSubmitAridhiaDar.js +2 -2
- package/dist/aridhia-queries/useSubmitAridhiaDar.js.map +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js +1 -1
- package/dist/components/AccessTokenPage/CreateAccessTokenModal.js.map +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js +1 -1
- package/dist/components/AccountLevelBadges/AccountLevelBadges.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js +3 -5
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +43 -30
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +6 -2
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js +101 -31
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts +11 -9
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.d.ts.map +1 -1
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +24 -13
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Authentication/LastLoginInfo.js +2 -2
- package/dist/components/Authentication/LastLoginInfo.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js +1 -1
- package/dist/components/Authentication/RecoveryCodeForm.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +3 -3
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/index.d.ts +6 -6
- package/dist/components/Authentication/index.d.ts.map +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js +1 -1
- package/dist/components/CannedRejectionDialog/CannedRejectionDialog.js.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +7 -7
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js +1 -1
- package/dist/components/ChallengeRequirementsModal/ChallengeRequirementsModal.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmission.js.map +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js +1 -1
- package/dist/components/ChallengeTeamWizard/SelectChallengeTeam.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverUtils.js +2 -2
- package/dist/components/CitationPopover/CitationPopoverUtils.js.map +1 -1
- package/dist/components/CohortBuilder/CohortBuilder.css +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.d.ts +35 -0
- package/dist/components/CohortBuilder/CohortBuilder.d.ts.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.js +108 -0
- package/dist/components/CohortBuilder/CohortBuilder.js.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.js +10 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.js.map +1 -0
- package/dist/components/CohortBuilder/CohortBuilder.module.scss +20 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.d.ts +16 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.d.ts.map +1 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.js +124 -0
- package/dist/components/CohortBuilder/CohortFilesPanel.js.map +1 -0
- package/dist/components/CohortBuilder/cohortHandOff.d.ts +25 -0
- package/dist/components/CohortBuilder/cohortHandOff.d.ts.map +1 -0
- package/dist/components/CohortBuilder/cohortHandOff.js +26 -0
- package/dist/components/CohortBuilder/cohortHandOff.js.map +1 -0
- package/dist/components/ColumnFilter/ColumnFilter.d.ts.map +1 -1
- package/dist/components/ColumnFilter/ColumnFilter.js +14 -13
- package/dist/components/ColumnFilter/ColumnFilter.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts +11 -2
- package/dist/components/DataGrid/columns/AutocompleteColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/AutocompleteColumn.js +115 -109
- package/dist/components/DataGrid/columns/AutocompleteColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.js +1 -1
- package/dist/components/DataGrid/columns/NumberColumn.js.map +1 -1
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts +20 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.d.ts.map +1 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.js +18 -0
- package/dist/components/DataGrid/columns/NumberOrEnumColumn.js.map +1 -0
- package/dist/components/DataGrid/components/contextMenu.js +3 -3
- package/dist/components/DataGrid/components/contextMenu.js.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js +9 -7
- package/dist/components/DataGrid/hooks/useGridUndoRedo.js.map +1 -1
- package/dist/components/DataGrid/hooks/useStack.d.ts +1 -1
- package/dist/components/DataGrid/hooks/useStack.js +2 -2
- package/dist/components/DataGrid/hooks/useStack.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +47 -42
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js +7 -7
- package/dist/components/DataGrid/utils/extractColumnValidationMessages.js.map +1 -1
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js +2 -2
- package/dist/components/DataGrid/utils/json-rx/JsonRx.js.map +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js +1 -1
- package/dist/components/DownloadCart/DownloadIneligibleForPackagingFilesFromListButton.js.map +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js +1 -1
- package/dist/components/DownloadCart/MeetAccessRequirementCard.js.map +1 -1
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js +5 -5
- package/dist/components/EntityDownloadConfirmation/EntityDownloadConfirmation.js.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.d.ts.map +1 -1
- package/dist/components/EntityFinder/details/view/DetailsView.js +4 -4
- package/dist/components/EntityFinder/details/view/DetailsView.js.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +4 -4
- package/dist/components/EntityHeaderTable/Filter.d.ts.map +1 -1
- package/dist/components/EntityHeaderTable/Filter.js +1 -1
- package/dist/components/EntityHeaderTable/Filter.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.d.ts.map +1 -1
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js +80 -84
- package/dist/components/FeaturedDataTabs/FacetPlotsCard.js.map +1 -1
- package/dist/components/FormTemplateEditor/FormStructurePanel.js +7 -7
- package/dist/components/FormTemplateEditor/StepCard.js +9 -9
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +2 -2
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -1
- package/dist/components/FullTextSearch/FullTextSearch.js +8 -8
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js +1 -1
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +37 -37
- package/dist/components/GoalsV3/GoalsV3.js +1 -1
- package/dist/components/GoalsV3/GoalsV3.js.map +1 -1
- package/dist/components/HexGrid/HexGrid.d.ts +3 -1
- package/dist/components/HexGrid/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid/HexGrid.js +14 -13
- package/dist/components/HexGrid/HexGrid.js.map +1 -1
- package/dist/components/IconSvg/index.d.ts +1 -1
- package/dist/components/IconSvg/index.d.ts.map +1 -1
- package/dist/components/IconSvg/index.js.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js +3 -3
- package/dist/components/JsonSchemaForm/templates/BaseInputTemplate.js.map +1 -1
- package/dist/components/Markdown/MarkdownEditor.js +1 -1
- package/dist/components/Markdown/MarkdownEditor.js.map +1 -1
- package/dist/components/Markdown/widget/index.d.ts +1 -1
- package/dist/components/Markdown/widget/index.d.ts.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.d.ts.map +1 -1
- package/dist/components/ModalDownload/ModalDownload.js +2 -1
- package/dist/components/ModalDownload/ModalDownload.js.map +1 -1
- package/dist/components/Plot/BarPlot.js +1 -1
- package/dist/components/Plot/BarPlot.js.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.d.ts +3 -2
- package/dist/components/Plot/PlotPanelHeader.d.ts.map +1 -1
- package/dist/components/Plot/PlotPanelHeader.js.map +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js +1 -1
- package/dist/components/ProgrammaticTableDownload/ProgrammaticTableDownload.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceExternalIcon.js.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.d.ts.map +1 -1
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js +3 -3
- package/dist/components/ProvenanceGraph/ProvenanceGraph.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.js +28 -27
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.js +91 -75
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.js +91 -79
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js +11 -11
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +2 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +2 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderLimits.d.ts +18 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.js +38 -0
- package/dist/components/QueryBuilder/queryBuilderLimits.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +0 -8
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderMetadata.js +6 -9
- package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +5 -4
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +58 -33
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.js +4 -4
- package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.d.ts.map +1 -1
- package/dist/components/QueryBuilder/useQBValueDisplayName.js +5 -5
- package/dist/components/QueryBuilder/useQBValueDisplayName.js.map +1 -1
- package/dist/components/QuerySortSelector.js +5 -5
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +21 -21
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts +20 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.d.ts.map +1 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js +50 -0
- package/dist/components/QueryWrapper/AggregateQueryErrorNotice.js.map +1 -0
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts +5 -3
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js +7 -3
- package/dist/components/QueryWrapper/TableQueryUseQueryOptions.js.map +1 -1
- package/dist/components/QueryWrapper/downloadListFiles.d.ts +25 -0
- package/dist/components/QueryWrapper/downloadListFiles.d.ts.map +1 -0
- package/dist/components/QueryWrapper/downloadListFiles.js +39 -0
- package/dist/components/QueryWrapper/downloadListFiles.js.map +1 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts +16 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.d.ts.map +1 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js +50 -0
- package/dist/components/QueryWrapper/useAddSelectedRowsToDownloadList.js.map +1 -0
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts +4 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js +15 -28
- package/dist/components/QueryWrapper/useGetAddToDownloadListRequestForCurrentQuery.js.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.d.ts.map +1 -1
- package/dist/components/QueryWrapper/useOnQueryDataChange.js +7 -6
- package/dist/components/QueryWrapper/useOnQueryDataChange.js.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts +3 -1
- package/dist/components/QueryWrapperErrorBoundary.d.ts.map +1 -1
- package/dist/components/QueryWrapperErrorBoundary.js +26 -21
- package/dist/components/QueryWrapperErrorBoundary.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/LastUpdatedOn.js +7 -7
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +2 -2
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +34 -32
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js +7 -7
- package/dist/components/QueryWrapperPlotNav/UseRowSet.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js +12 -12
- package/dist/components/QueryWrapperPlotNav/UseRowSet.js.map +1 -1
- package/dist/components/RowDataTable/CategorizedRowDataTable.css +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts +33 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.d.ts.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.js +64 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.js.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.js +8 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.js.map +1 -0
- package/dist/components/RowDataTable/CategorizedRowDataTable.module.scss +18 -0
- package/dist/components/RowDataTable/RowDataTable.d.ts +13 -0
- package/dist/components/RowDataTable/RowDataTable.d.ts.map +1 -1
- package/dist/components/RowDataTable/RowDataTable.js +25 -8
- package/dist/components/RowDataTable/RowDataTable.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.d.ts.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js +2 -2
- package/dist/components/SchemaDrivenAnnotationEditor/field/AdditionalPropertiesSchemaField.js.map +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js +1 -1
- package/dist/components/SchemaDrivenAnnotationEditor/template/ObjectFieldTemplate.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +17 -9
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +39 -30
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js +24 -24
- package/dist/components/SetAccessRequirementCommonFields/SetAccessRequirementCommonFields.js.map +1 -1
- package/dist/components/StandaloneQueryWrapper/StandaloneQueryWrapper.js +8 -8
- package/dist/components/SynapseChat/SynapseChatMessage.js +1 -1
- package/dist/components/SynapseChat/SynapseChatMessage.js.map +1 -1
- package/dist/components/SynapseForm/NavButtons.js.map +1 -1
- package/dist/components/SynapseForm/StepsSideNav.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js +1 -1
- package/dist/components/SynapseSearchPageResults/HighlightedTypography.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js +3 -3
- package/dist/components/SynapseSearchPageResults/SearchFacetPanel/SearchFacetPanelUtils.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js +38 -44
- package/dist/components/SynapseTable/RowSelection/RowSelectionControls.js.map +1 -1
- package/dist/components/SynapseTable/RowSelection/RowSelectionUI.js +4 -4
- package/dist/components/SynapseTable/SqlEditor.js +7 -7
- package/dist/components/SynapseTable/SynapseTable.js +8 -8
- package/dist/components/SynapseTable/SynapseTable.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableRenderers.js +73 -72
- package/dist/components/SynapseTable/SynapseTableRenderers.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js +1 -1
- package/dist/components/SynapseTable/SynapseTableUtils.js.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +44 -45
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js +1 -1
- package/dist/components/SynapseTable/datasets/DatasetEditorVersionCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.d.ts.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +142 -142
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js.map +1 -1
- package/dist/components/SynapseTable/export/ExportToAnalysisPlatformDialog.js +4 -4
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js +12 -12
- package/dist/components/SynapseTable/export/ExternalPlatformActionsRequiredPrecheck.js.map +1 -1
- package/dist/components/SynapseTable/table-top/ColumnSelection.js +6 -6
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts +0 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.d.ts.map +1 -1
- package/dist/components/SynapseTable/table-top/DownloadOptions.js +64 -57
- package/dist/components/SynapseTable/table-top/DownloadOptions.js.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.d.ts.map +1 -1
- package/dist/components/SynapseTable/usePrefetchTableData.js +3 -3
- package/dist/components/SynapseTable/usePrefetchTableData.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorTestUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +2 -2
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +60 -60
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js +1 -1
- package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.js.map +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js +1 -1
- package/dist/components/TanStackTable/ColumnHeaderEnumFilter.js.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.d.ts.map +1 -1
- package/dist/components/TanStackTable/StyledTanStackTable.js +1 -4
- package/dist/components/TanStackTable/StyledTanStackTable.js.map +1 -1
- package/dist/components/TermsAndConditions/TermsAndConditions.js.map +1 -1
- package/dist/components/TotalQueryResults.js +14 -14
- package/dist/components/Webhook/WebhookDashboard.d.ts.map +1 -1
- package/dist/components/Webhook/WebhookDashboard.js +2 -2
- package/dist/components/Webhook/WebhookDashboard.js.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.d.ts +5 -1
- package/dist/components/download_list/DownloadConfirmationUtils.d.ts.map +1 -1
- package/dist/components/download_list/DownloadConfirmationUtils.js +2 -2
- package/dist/components/download_list/DownloadConfirmationUtils.js.map +1 -1
- package/dist/components/error/ErrorBanner.d.ts.map +1 -1
- package/dist/components/error/ErrorBanner.js +49 -46
- package/dist/components/error/ErrorBanner.js.map +1 -1
- package/dist/components/file/upload/MultiFileUploadProgress.js +5 -5
- package/dist/components/row_renderers/Dataset.d.ts.map +1 -1
- package/dist/components/row_renderers/Dataset.js +6 -6
- package/dist/components/row_renderers/Dataset.js.map +1 -1
- package/dist/components/row_renderers/Funder.js +1 -1
- package/dist/components/row_renderers/Funder.js.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.d.ts +6 -1
- package/dist/components/widgets/ElementWithTooltip.d.ts.map +1 -1
- package/dist/components/widgets/ElementWithTooltip.js +22 -14
- package/dist/components/widgets/ElementWithTooltip.js.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.d.ts.map +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js +1 -1
- package/dist/components/widgets/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/widgets/SynapseImage.js +1 -1
- package/dist/components/widgets/SynapseImage.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts +16 -5
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +115 -102
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js +4 -2
- package/dist/components/widgets/facet-nav/FacetPlotLegendList.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendTable.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts +2 -0
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetPlotLegendUtils.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +7 -0
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js +47 -45
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +4 -4
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts +3 -2
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js +16 -15
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/CombinedRangeFacetFilter.js +4 -4
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts +2 -2
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +62 -60
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +10 -10
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +1 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +2 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts +3 -2
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUtils.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.d.ts +3 -2
- package/dist/components/widgets/query-filter/FacetFilterControls.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +63 -62
- package/dist/components/widgets/query-filter/FacetFilterControls.js.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js +30 -29
- package/dist/components/widgets/query-filter/JsonColumnFacetFilters.js.map +1 -1
- package/dist/components/widgets/query-filter/RangeFacetFilter.js +5 -5
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts +53 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js +391 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockProfiles.js.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts +41 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js +379 -0
- package/dist/mocks/cohortBuilder/cohortBuilderMockQueryEngine.js.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts +26 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.d.ts.map +1 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js +112 -0
- package/dist/mocks/cohortBuilder/cohortBuilderSyntheticData.js.map +1 -0
- package/dist/mocks/mockAnnotationColumns.d.ts.map +1 -1
- package/dist/mocks/mockAnnotationColumns.js +1 -1
- package/dist/mocks/mockAnnotationColumns.js.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +9 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +24 -15
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +21 -2
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +30 -22
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts +27 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.js +158 -0
- package/dist/mocks/msw/handlers/cohortBuilderHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/subscriptionHandlers.js +1 -1
- package/dist/mocks/msw/handlers/subscriptionHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/userProfileHandlers.d.ts.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/query/mockColumnCategoryTable.d.ts +19 -0
- package/dist/mocks/query/mockColumnCategoryTable.d.ts.map +1 -0
- package/dist/mocks/query/mockColumnCategoryTable.js +188 -0
- package/dist/mocks/query/mockColumnCategoryTable.js.map +1 -0
- package/dist/stories/ColorPaletteInspector.d.ts.map +1 -1
- package/dist/stories/ColorPaletteInspector.js +2 -2
- package/dist/stories/ColorPaletteInspector.js.map +1 -1
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +8 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/auth/useOIDC.js +2 -2
- package/dist/synapse-queries/auth/useOIDC.js.map +1 -1
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js +2 -2
- package/dist/synapse-queries/auth/useUnbindOAuthProviderIdentity.js.map +1 -1
- package/dist/synapse-queries/challenge/useChallenge.js +2 -2
- package/dist/synapse-queries/challenge/useChallenge.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.js +8 -8
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +10 -10
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js +24 -24
- package/dist/synapse-queries/dataaccess/useAccessRequirements.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js +4 -4
- package/dist/synapse-queries/dataaccess/useDataAccessSubmission.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useEDuc.js +6 -6
- package/dist/synapse-queries/dataaccess/useEDuc.js.map +1 -1
- package/dist/synapse-queries/dataaccess/useFormTemplate.js +4 -4
- package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -1
- package/dist/synapse-queries/download/index.js +2 -2
- package/dist/synapse-queries/download/useDownloadList.d.ts +5 -0
- package/dist/synapse-queries/download/useDownloadList.d.ts.map +1 -1
- package/dist/synapse-queries/download/useDownloadList.js +14 -13
- package/dist/synapse-queries/download/useDownloadList.js.map +1 -1
- package/dist/synapse-queries/entity/useEntity.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useEntity.js +20 -20
- package/dist/synapse-queries/entity/useEntity.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js +2 -1
- package/dist/synapse-queries/entity/useExportToADWorkbench.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToCavatica.js +3 -2
- package/dist/synapse-queries/entity/useExportToCavatica.js.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useExportToPluto.js +2 -1
- package/dist/synapse-queries/entity/useExportToPluto.js.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.d.ts.map +1 -1
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js +4 -7
- package/dist/synapse-queries/entity/useGetQueryResultBundle.js.map +1 -1
- package/dist/synapse-queries/forum/useReply.js +6 -6
- package/dist/synapse-queries/forum/useReply.js.map +1 -1
- package/dist/synapse-queries/forum/useThread.js +14 -14
- package/dist/synapse-queries/forum/useThread.js.map +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js.map +1 -1
- package/dist/synapse-queries/grid/useGridSession.js +4 -4
- package/dist/synapse-queries/grid/useGridSession.js.map +1 -1
- package/dist/synapse-queries/index.js +177 -176
- package/dist/synapse-queries/oauth/useOAuthClient.js +9 -9
- package/dist/synapse-queries/oauth/useOAuthClient.js.map +1 -1
- package/dist/synapse-queries/portal/usePortal.js +7 -7
- package/dist/synapse-queries/portal/usePortal.js.map +1 -1
- package/dist/synapse-queries/subscription/useSubscription.js +4 -4
- package/dist/synapse-queries/subscription/useSubscription.js.map +1 -1
- package/dist/synapse-queries/table/useTableUpdateTransaction.js +2 -2
- package/dist/synapse-queries/table/useTableUpdateTransaction.js.map +1 -1
- package/dist/synapse-queries/team/useTeam.js +2 -2
- package/dist/synapse-queries/team/useTeam.js.map +1 -1
- package/dist/synapse-queries/team/useTeamList.d.ts.map +1 -1
- package/dist/synapse-queries/team/useTeamList.js +3 -3
- package/dist/synapse-queries/team/useTeamList.js.map +1 -1
- package/dist/synapse-queries/team/useTeamMembers.js +8 -8
- package/dist/synapse-queries/team/useTeamMembers.js.map +1 -1
- package/dist/synapse-queries/termsOfService/useTermsOfService.js +2 -2
- package/dist/synapse-queries/termsOfService/useTermsOfService.js.map +1 -1
- package/dist/synapse-queries/trash/useTrashCan.js +4 -4
- package/dist/synapse-queries/trash/useTrashCan.js.map +1 -1
- package/dist/synapse-queries/user/useCertificationQuiz.js +2 -2
- package/dist/synapse-queries/user/useCertificationQuiz.js.map +1 -1
- package/dist/synapse-queries/user/useFavorites.js +4 -4
- package/dist/synapse-queries/user/useFavorites.js.map +1 -1
- package/dist/synapse-queries/user/useRevokeCertification.js +2 -2
- package/dist/synapse-queries/user/useRevokeCertification.js.map +1 -1
- package/dist/synapse-queries/wiki/useWiki.js +10 -10
- package/dist/synapse-queries/wiki/useWiki.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/ContentTypeUtils.js +4 -4
- package/dist/utils/ContentTypeUtils.js.map +1 -1
- package/dist/utils/PermissionLevelToAccessType.js +1 -1
- package/dist/utils/PermissionLevelToAccessType.js.map +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js +1 -1
- package/dist/utils/analytics/useGoogleAnalytics.js.map +1 -1
- package/dist/utils/context/DocumentMetadataContext.js +1 -1
- package/dist/utils/context/DocumentMetadataContext.js.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.d.ts.map +1 -1
- package/dist/utils/functions/AccessControlListUtils.js +3 -3
- package/dist/utils/functions/AccessControlListUtils.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +2 -2
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/functions/FileHandleUtils.js +1 -1
- package/dist/utils/functions/FileHandleUtils.js.map +1 -1
- package/dist/utils/functions/RegularExpressions.js +1 -1
- package/dist/utils/functions/RegularExpressions.js.map +1 -1
- package/dist/utils/functions/StringUtils.d.ts.map +1 -1
- package/dist/utils/functions/StringUtils.js +1 -2
- package/dist/utils/functions/StringUtils.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js +2 -2
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/functions/enumerationFacet.d.ts +26 -0
- package/dist/utils/functions/enumerationFacet.d.ts.map +1 -0
- package/dist/utils/functions/enumerationFacet.js +27 -0
- package/dist/utils/functions/enumerationFacet.js.map +1 -0
- package/dist/utils/functions/facetCountUtils.d.ts +12 -0
- package/dist/utils/functions/facetCountUtils.d.ts.map +1 -0
- package/dist/utils/functions/facetCountUtils.js +9 -0
- package/dist/utils/functions/facetCountUtils.js.map +1 -0
- package/dist/utils/functions/getEndpoint.js.map +1 -1
- package/dist/utils/functions/getUserData.js +1 -1
- package/dist/utils/functions/getUserData.js.map +1 -1
- package/dist/utils/functions/queryUtils.d.ts +1 -1
- package/dist/utils/functions/queryUtils.d.ts.map +1 -1
- package/dist/utils/functions/queryUtils.js +26 -22
- package/dist/utils/functions/queryUtils.js.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.d.ts.map +1 -1
- package/dist/utils/functions/testDownloadSpeed.js +17 -26
- package/dist/utils/functions/testDownloadSpeed.js.map +1 -1
- package/dist/utils/functions/unCamelCase.js +1 -1
- package/dist/utils/functions/unCamelCase.js.map +1 -1
- package/dist/utils/hooks/useGetInfoFromIds.js +5 -5
- package/dist/utils/hooks/useGetInfoFromIds.js.map +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js +1 -1
- package/dist/utils/hooks/useImmutableTableQuery/TableQueryReducerActions.js.map +1 -1
- package/dist/utils/hooks/useLogin.d.ts.map +1 -1
- package/dist/utils/hooks/useLogin.js +5 -5
- package/dist/utils/hooks/useLogin.js.map +1 -1
- package/dist/utils/hooks/useUploadFileEntity/useCreateFolderPath.js.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts +6 -0
- package/dist/utils/jsonschema/collectTopLevelProperties.d.ts.map +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.js +1 -1
- package/dist/utils/jsonschema/collectTopLevelProperties.js.map +1 -1
- package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts +22 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.d.ts.map +1 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.js +39 -0
- package/dist/utils/jsonschema/getNumberOrEnumInfo.js.map +1 -0
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts +1 -0
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.d.ts.map +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js +1 -1
- package/dist/utils/jsonschema/getOnlyNonNullOneOfOption.js.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts +5 -0
- package/dist/utils/jsonschema/getSchemaPropertyInfo.d.ts.map +1 -1
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js +30 -15
- package/dist/utils/jsonschema/getSchemaPropertyInfo.js.map +1 -1
- package/dist/utils/jsonschema/submissionContext.js +2 -2
- package/dist/utils/jsonschema/submissionContext.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridUndoRedo.js","names":["GridMenuButton","KeyboardArrowDownIcon","Menu","MenuItem","useCallback","useEffect","useState","DataGridRow","Operation","ModelChange","convertActionToModelChange","useStack","SingleGridAction","type","rowIndex","previousValue","newValue","CompositeGridAction","actions","GridAction","batchGridActions","MAX_UNDO_STEPS","MAX_REDO_STEPS","useGridUndoRedo","onApplyModelChange","$","_c","t0","Symbol","for","undoStack","t1","redoStack","undoAnchorEl","setUndoAnchorEl","redoAnchorEl","setRedoAnchorEl","undoOpen","Boolean","redoOpen","t2","event","currentTarget","handleUndoClick","t3","event_0","handleRedoClick","t4","handleUndoClose","t5","handleRedoClose","t6","isEmpty","lastAction","peek","lastType","sameTypeCount","i","stack","length","i_0","totalActions","size","getUndoPreview","t7","lastAction_0","sameTypeCount_0","i_1","getRedoPreview","t8","undoPreview","t9","redoPreview","t10","actionToUndo","pop","i_2","child","inverseOp","push","inverseOperation","handleUndo","t11","actionToRedo","i_3","child_0","originalOp","originalOperation","handleRedo","t12","t13","handleKeyDown","event_1","ctrlKey","key","shiftKey","metaKey","preventDefault","window","addEventListener","removeEventListener","t14","action","addToUndoStack","t15","clear","clearUndoStack","t16","clearRedoStack","t17","operations","rowValues","batch","operation","start","fromRowIndex","end","toRowIndex","i_4","newRow","oldVal","slice","newVal","forEach","newRow_0","idx","oldRow","deletedRows","row","idx_0","addOperationsToUndoStack","t18","undefined","t19","t20","t21","t22","t23","toLowerCase","t24","t25","undoUI","t26","t27","t28","t29","t30","t31","t32","t33","redoUI","t34","t35","t36","undoTotalActions","redoTotalActions"],"sources":["../../../../src/components/DataGrid/hooks/useGridUndoRedo.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { Menu, MenuItem } from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\nimport { DataGridRow, Operation } from '../DataGridTypes'\nimport { ModelChange } from '../utils/applyModelChange'\nimport { convertActionToModelChange } from '../utils/convertActionToModelChange'\nimport { useStack } from './useStack'\n\n/**\n * Represents a single action in the grid that can be undone or redone\n */\nexport type SingleGridAction = {\n type: 'CREATE' | 'DELETE' | 'UPDATE'\n rowIndex: number\n previousValue?: DataGridRow\n newValue?: DataGridRow\n}\n\n/**\n * Composite action for batch undo/redo\n */\nexport type CompositeGridAction = {\n type: 'COMPOSITE'\n actions: SingleGridAction[]\n}\n\n/**\n * GridAction can be a single or composite action\n */\nexport type GridAction = SingleGridAction | CompositeGridAction\n\n/**\n * Helper to batch multiple single actions into a composite action\n */\nexport function batchGridActions(\n actions: SingleGridAction[],\n): CompositeGridAction {\n return {\n type: 'COMPOSITE',\n actions,\n }\n}\n\nconst MAX_UNDO_STEPS = 100\nconst MAX_REDO_STEPS = 100\n\n/**\n * Hook to manage undo/redo functionality for a grid backed by a CRDT model.\n *\n * @param onApplyModelChange - Function to apply model changes and commit\n */\nexport function useGridUndoRedo(\n onApplyModelChange: (change: ModelChange) => void,\n) {\n // Tracks the stack of undoable actions in LIFO order\n const undoStack = useStack<GridAction>([], MAX_UNDO_STEPS)\n const redoStack = useStack<GridAction>([], MAX_REDO_STEPS)\n\n // Separate state for undo and redo menus\n const [undoAnchorEl, setUndoAnchorEl] = useState<null | HTMLElement>(null)\n const [redoAnchorEl, setRedoAnchorEl] = useState<null | HTMLElement>(null)\n const undoOpen = Boolean(undoAnchorEl)\n const redoOpen = Boolean(redoAnchorEl)\n\n const handleUndoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setUndoAnchorEl(event.currentTarget)\n }\n\n const handleRedoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setRedoAnchorEl(event.currentTarget)\n }\n\n const handleUndoClose = () => setUndoAnchorEl(null)\n const handleRedoClose = () => setRedoAnchorEl(null)\n\n // Generate preview information for the undo menu\n const getUndoPreview = useCallback(() => {\n if (undoStack.isEmpty()) return null\n\n const lastAction = undoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Count consecutive composites from the end\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === 'COMPOSITE') {\n sameTypeCount++\n } else {\n break\n }\n }\n } else {\n lastType = lastAction.type\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: undoStack.size,\n }\n }, [undoStack])\n\n // Generate preview information for the redo menu\n const getRedoPreview = useCallback(() => {\n if (redoStack.isEmpty()) return null\n\n const lastAction = redoStack.peek()\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Always treat composite as a single atomic action for preview\n sameTypeCount = 1\n } else {\n lastType = lastAction.type\n for (let i = redoStack.stack.length - 1; i >= 0; i--) {\n if (redoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: redoStack.size,\n }\n }, [redoStack])\n\n const undoPreview = getUndoPreview()\n const redoPreview = getRedoPreview()\n\n /**\n * Undo the most recent action\n */\n const handleUndo = useCallback(() => {\n if (undoStack.isEmpty()) return\n const actionToUndo = undoStack.pop()\n if (actionToUndo) {\n // If composite, undo all child actions in reverse order\n if (actionToUndo.type === 'COMPOSITE') {\n for (let i = actionToUndo.actions.length - 1; i >= 0; i--) {\n const child = actionToUndo.actions[i]\n const inverseOp = convertActionToModelChange(child, 'undo')\n if (inverseOp) {\n onApplyModelChange(inverseOp)\n }\n }\n // Push the composite action itself to the redo stack\n redoStack.push(actionToUndo)\n } else {\n const inverseOperation = convertActionToModelChange(\n actionToUndo,\n 'undo',\n )\n if (!inverseOperation) return\n onApplyModelChange(inverseOperation)\n // Push the single action to the redo stack\n redoStack.push(actionToUndo)\n }\n }\n handleUndoClose()\n }, [onApplyModelChange, undoStack, redoStack])\n\n /**\n * Redo the most recent undone action\n */\n const handleRedo = useCallback(() => {\n if (redoStack.isEmpty()) return\n\n const actionToRedo = redoStack.pop()\n\n if (actionToRedo) {\n // If composite, redo all child actions in order\n if (actionToRedo.type === 'COMPOSITE') {\n for (let i = 0; i < actionToRedo.actions.length; i++) {\n const child = actionToRedo.actions[i]\n const originalOp = convertActionToModelChange(child, 'redo')\n if (originalOp) {\n onApplyModelChange(originalOp)\n }\n }\n // Push the composite action itself back to the undo stack\n undoStack.push(actionToRedo)\n } else {\n const originalOperation = convertActionToModelChange(\n actionToRedo,\n 'redo',\n )\n if (!originalOperation) return\n onApplyModelChange(originalOperation)\n // Push the single action back to the undo stack\n undoStack.push(actionToRedo)\n }\n }\n handleRedoClose()\n }, [redoStack, undoStack, onApplyModelChange])\n\n // Keyboard shortcuts for both undo and redo\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n (event.ctrlKey && event.key === 'z' && !event.shiftKey) ||\n (event.metaKey && event.key === 'z' && !event.shiftKey)\n ) {\n event.preventDefault()\n handleUndo()\n } else if (\n (event.ctrlKey && event.key === 'y') ||\n (event.ctrlKey && event.shiftKey && event.key === 'z') ||\n (event.metaKey && event.shiftKey && event.key === 'z')\n ) {\n event.preventDefault()\n handleRedo()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleUndo, handleRedo])\n\n const addToUndoStack = (action: GridAction) => {\n undoStack.push(action)\n }\n\n const clearUndoStack = () => undoStack.clear()\n\n const clearRedoStack = () => redoStack.clear()\n\n const addOperationsToUndoStack = (\n operations: Operation[],\n rowValues: DataGridRow[],\n newValue: DataGridRow[],\n ) => {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n const batch: SingleGridAction[] = []\n\n for (const operation of operations) {\n const start = operation.fromRowIndex\n const end = operation.toRowIndex\n\n if (operation.type === 'CREATE') {\n for (let i = start; i < end; i++) {\n const newRow = newValue[i]\n batch.push({\n type: 'CREATE',\n rowIndex: i,\n newValue: newRow,\n })\n }\n }\n\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(start, end)\n const newVal = newValue.slice(start, end)\n\n newVal.forEach((newRow: DataGridRow, idx: number) => {\n const oldRow = oldVal[idx]\n const rowIndex = start + idx\n batch.push({\n type: 'UPDATE',\n rowIndex,\n previousValue: oldRow,\n newValue: newRow,\n })\n })\n }\n\n if (operation.type === 'DELETE') {\n const deletedRows = rowValues.slice(start, end)\n deletedRows.forEach((row, idx) => {\n batch.push({\n type: 'DELETE',\n rowIndex: start + idx,\n previousValue: row,\n })\n })\n }\n }\n if (batch.length === 1) {\n addToUndoStack(batch[0])\n } else if (batch.length > 1) {\n addToUndoStack(batchGridActions(batch))\n }\n }\n\n const undoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={undoOpen ? 'undo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleUndoClick}\n disabled={!undoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Undo {undoPreview && `(${undoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"undo-menu\"\n anchorEl={undoAnchorEl}\n open={undoOpen}\n onClose={handleUndoClose}\n >\n {undoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleUndo}>\n Undo last {undoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to undo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n const redoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={redoOpen ? 'redo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleRedoClick}\n disabled={!redoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Redo {redoPreview && `(${redoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"redo-menu\"\n anchorEl={redoAnchorEl}\n open={redoOpen}\n onClose={handleRedoClose}\n >\n {redoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleRedo}>\n Redo last {redoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to redo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n return {\n // Undo\n undoPreview,\n handleUndo,\n addToUndoStack,\n clearUndoStack,\n addOperationsToUndoStack,\n undoUI,\n undoTotalActions: undoPreview ? undoPreview.totalActions : 0,\n\n // Redo\n redoPreview,\n redoUI,\n redoTotalActions: redoPreview ? redoPreview.totalActions : 0,\n handleRedo,\n clearRedoStack,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGridUndoRedo.js","names":["GridMenuButton","KeyboardArrowDownIcon","Menu","MenuItem","useCallback","useEffect","useState","DataGridRow","Operation","ModelChange","convertActionToModelChange","useStack","SingleGridAction","type","rowIndex","previousValue","newValue","CompositeGridAction","actions","GridAction","batchGridActions","MAX_UNDO_STEPS","MAX_REDO_STEPS","useGridUndoRedo","onApplyModelChange","$","_c","t0","Symbol","for","undoStack","t1","redoStack","undoAnchorEl","setUndoAnchorEl","redoAnchorEl","setRedoAnchorEl","undoOpen","Boolean","redoOpen","t2","event","currentTarget","handleUndoClick","t3","event_0","handleRedoClick","t4","handleUndoClose","t5","handleRedoClose","t6","lastAction","peek","undefined","lastType","sameTypeCount","i","stack","length","i_0","totalActions","size","getUndoPreview","t7","lastAction_0","sameTypeCount_0","i_1","getRedoPreview","t8","undoPreview","t9","redoPreview","t10","isEmpty","actionToUndo","pop","i_2","child","inverseOp","push","inverseOperation","handleUndo","t11","actionToRedo","child_0","originalOp","originalOperation","handleRedo","t12","t13","handleKeyDown","event_1","ctrlKey","key","shiftKey","metaKey","preventDefault","window","addEventListener","removeEventListener","t14","action","addToUndoStack","t15","clear","clearUndoStack","t16","clearRedoStack","t17","operations","rowValues","batch","operation","start","fromRowIndex","end","toRowIndex","i_3","newRow","oldVal","slice","newVal","forEach","newRow_0","idx","oldRow","deletedRows","row","idx_0","addOperationsToUndoStack","t18","t19","t20","t21","t22","t23","toLowerCase","t24","t25","undoUI","t26","t27","t28","t29","t30","t31","t32","t33","redoUI","t34","t35","t36","undoTotalActions","redoTotalActions"],"sources":["../../../../src/components/DataGrid/hooks/useGridUndoRedo.tsx"],"sourcesContent":["import GridMenuButton from '@/components/DataGrid/components/GridMenuButton/GridMenuButton'\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\nimport { Menu, MenuItem } from '@mui/material'\nimport { useCallback, useEffect, useState } from 'react'\nimport { DataGridRow, Operation } from '../DataGridTypes'\nimport { ModelChange } from '../utils/applyModelChange'\nimport { convertActionToModelChange } from '../utils/convertActionToModelChange'\nimport { useStack } from './useStack'\n\n/**\n * Represents a single action in the grid that can be undone or redone\n */\nexport type SingleGridAction = {\n type: 'CREATE' | 'DELETE' | 'UPDATE'\n rowIndex: number\n previousValue?: DataGridRow\n newValue?: DataGridRow\n}\n\n/**\n * Composite action for batch undo/redo\n */\nexport type CompositeGridAction = {\n type: 'COMPOSITE'\n actions: SingleGridAction[]\n}\n\n/**\n * GridAction can be a single or composite action\n */\nexport type GridAction = SingleGridAction | CompositeGridAction\n\n/**\n * Helper to batch multiple single actions into a composite action\n */\nexport function batchGridActions(\n actions: SingleGridAction[],\n): CompositeGridAction {\n return {\n type: 'COMPOSITE',\n actions,\n }\n}\n\nconst MAX_UNDO_STEPS = 100\nconst MAX_REDO_STEPS = 100\n\n/**\n * Hook to manage undo/redo functionality for a grid backed by a CRDT model.\n *\n * @param onApplyModelChange - Function to apply model changes and commit\n */\nexport function useGridUndoRedo(\n onApplyModelChange: (change: ModelChange) => void,\n) {\n // Tracks the stack of undoable actions in LIFO order\n const undoStack = useStack<GridAction>([], MAX_UNDO_STEPS)\n const redoStack = useStack<GridAction>([], MAX_REDO_STEPS)\n\n // Separate state for undo and redo menus\n const [undoAnchorEl, setUndoAnchorEl] = useState<null | HTMLElement>(null)\n const [redoAnchorEl, setRedoAnchorEl] = useState<null | HTMLElement>(null)\n const undoOpen = Boolean(undoAnchorEl)\n const redoOpen = Boolean(redoAnchorEl)\n\n const handleUndoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setUndoAnchorEl(event.currentTarget)\n }\n\n const handleRedoClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setRedoAnchorEl(event.currentTarget)\n }\n\n const handleUndoClose = () => setUndoAnchorEl(null)\n const handleRedoClose = () => setRedoAnchorEl(null)\n\n // Generate preview information for the undo menu\n const getUndoPreview = useCallback(() => {\n const lastAction = undoStack.peek()\n if (lastAction === undefined) return null\n\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Count consecutive composites from the end\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === 'COMPOSITE') {\n sameTypeCount++\n } else {\n break\n }\n }\n } else {\n lastType = lastAction.type\n for (let i = undoStack.stack.length - 1; i >= 0; i--) {\n if (undoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: undoStack.size,\n }\n }, [undoStack])\n\n // Generate preview information for the redo menu\n const getRedoPreview = useCallback(() => {\n const lastAction = redoStack.peek()\n if (lastAction === undefined) return null\n\n let lastType: string\n let sameTypeCount = 0\n\n if (lastAction.type === 'COMPOSITE') {\n lastType = 'COMPOSITE'\n // Always treat composite as a single atomic action for preview\n sameTypeCount = 1\n } else {\n lastType = lastAction.type\n for (let i = redoStack.stack.length - 1; i >= 0; i--) {\n if (redoStack.stack[i].type === lastType) {\n sameTypeCount++\n } else {\n break\n }\n }\n }\n\n return {\n lastType,\n sameTypeCount,\n totalActions: redoStack.size,\n }\n }, [redoStack])\n\n const undoPreview = getUndoPreview()\n const redoPreview = getRedoPreview()\n\n /**\n * Undo the most recent action\n */\n const handleUndo = useCallback(() => {\n if (undoStack.isEmpty()) return\n const actionToUndo = undoStack.pop()\n if (actionToUndo) {\n // If composite, undo all child actions in reverse order\n if (actionToUndo.type === 'COMPOSITE') {\n for (let i = actionToUndo.actions.length - 1; i >= 0; i--) {\n const child = actionToUndo.actions[i]\n const inverseOp = convertActionToModelChange(child, 'undo')\n if (inverseOp) {\n onApplyModelChange(inverseOp)\n }\n }\n // Push the composite action itself to the redo stack\n redoStack.push(actionToUndo)\n } else {\n const inverseOperation = convertActionToModelChange(\n actionToUndo,\n 'undo',\n )\n if (!inverseOperation) return\n onApplyModelChange(inverseOperation)\n // Push the single action to the redo stack\n redoStack.push(actionToUndo)\n }\n }\n handleUndoClose()\n }, [onApplyModelChange, undoStack, redoStack])\n\n /**\n * Redo the most recent undone action\n */\n const handleRedo = useCallback(() => {\n if (redoStack.isEmpty()) return\n\n const actionToRedo = redoStack.pop()\n\n if (actionToRedo) {\n // If composite, redo all child actions in order\n if (actionToRedo.type === 'COMPOSITE') {\n for (const child of actionToRedo.actions) {\n const originalOp = convertActionToModelChange(child, 'redo')\n if (originalOp) {\n onApplyModelChange(originalOp)\n }\n }\n // Push the composite action itself back to the undo stack\n undoStack.push(actionToRedo)\n } else {\n const originalOperation = convertActionToModelChange(\n actionToRedo,\n 'redo',\n )\n if (!originalOperation) return\n onApplyModelChange(originalOperation)\n // Push the single action back to the undo stack\n undoStack.push(actionToRedo)\n }\n }\n handleRedoClose()\n }, [redoStack, undoStack, onApplyModelChange])\n\n // Keyboard shortcuts for both undo and redo\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n (event.ctrlKey && event.key === 'z' && !event.shiftKey) ||\n (event.metaKey && event.key === 'z' && !event.shiftKey)\n ) {\n event.preventDefault()\n handleUndo()\n } else if (\n (event.ctrlKey && event.key === 'y') ||\n (event.ctrlKey && event.shiftKey && event.key === 'z') ||\n (event.metaKey && event.shiftKey && event.key === 'z')\n ) {\n event.preventDefault()\n handleRedo()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleUndo, handleRedo])\n\n const addToUndoStack = (action: GridAction) => {\n undoStack.push(action)\n }\n\n const clearUndoStack = () => undoStack.clear()\n\n const clearRedoStack = () => redoStack.clear()\n\n const addOperationsToUndoStack = (\n operations: Operation[],\n rowValues: DataGridRow[],\n newValue: DataGridRow[],\n ) => {\n // Clear redo stack since new changes invalidate redo history\n clearRedoStack()\n\n const batch: SingleGridAction[] = []\n\n for (const operation of operations) {\n const start = operation.fromRowIndex\n const end = operation.toRowIndex\n\n if (operation.type === 'CREATE') {\n for (let i = start; i < end; i++) {\n const newRow = newValue[i]\n batch.push({\n type: 'CREATE',\n rowIndex: i,\n newValue: newRow,\n })\n }\n }\n\n if (operation.type === 'UPDATE') {\n const oldVal = rowValues.slice(start, end)\n const newVal = newValue.slice(start, end)\n\n newVal.forEach((newRow: DataGridRow, idx: number) => {\n const oldRow = oldVal[idx]\n const rowIndex = start + idx\n batch.push({\n type: 'UPDATE',\n rowIndex,\n previousValue: oldRow,\n newValue: newRow,\n })\n })\n }\n\n if (operation.type === 'DELETE') {\n const deletedRows = rowValues.slice(start, end)\n deletedRows.forEach((row, idx) => {\n batch.push({\n type: 'DELETE',\n rowIndex: start + idx,\n previousValue: row,\n })\n })\n }\n }\n if (batch.length === 1) {\n addToUndoStack(batch[0])\n } else if (batch.length > 1) {\n addToUndoStack(batchGridActions(batch))\n }\n }\n\n const undoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={undoOpen ? 'undo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleUndoClick}\n disabled={!undoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Undo {undoPreview && `(${undoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"undo-menu\"\n anchorEl={undoAnchorEl}\n open={undoOpen}\n onClose={handleUndoClose}\n >\n {undoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleUndo}>\n Undo last {undoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to undo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n const redoUI = (\n <>\n <GridMenuButton\n variant={'outlined'}\n aria-controls={redoOpen ? 'redo-menu' : undefined}\n aria-haspopup=\"true\"\n onClick={handleRedoClick}\n disabled={!redoPreview}\n endIcon={<KeyboardArrowDownIcon />}\n >\n Redo {redoPreview && `(${redoPreview.totalActions})`}\n </GridMenuButton>\n <Menu\n id=\"redo-menu\"\n anchorEl={redoAnchorEl}\n open={redoOpen}\n onClose={handleRedoClose}\n >\n {redoPreview ? (\n <MenuItem key=\"lastAction\" onClick={handleRedo}>\n Redo last {redoPreview.lastType.toLowerCase()} action\n </MenuItem>\n ) : (\n <MenuItem disabled>No actions to redo</MenuItem>\n )}\n </Menu>\n </>\n )\n\n return {\n // Undo\n undoPreview,\n handleUndo,\n addToUndoStack,\n clearUndoStack,\n addOperationsToUndoStack,\n undoUI,\n undoTotalActions: undoPreview ? undoPreview.totalActions : 0,\n\n // Redo\n redoPreview,\n redoUI,\n redoTotalActions: redoPreview ? redoPreview.totalActions : 0,\n handleRedo,\n clearRedoStack,\n }\n}\n"],"mappings":"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"}
|
|
@@ -14,11 +14,11 @@ function n(n, i) {
|
|
|
14
14
|
let u = l, d;
|
|
15
15
|
a[4] === s ? d = a[5] : (d = () => {
|
|
16
16
|
if (s.length === 0) return;
|
|
17
|
-
let e = s
|
|
17
|
+
let e = s.at(-1);
|
|
18
18
|
return c(r), e;
|
|
19
19
|
}, a[4] = s, a[5] = d);
|
|
20
20
|
let f = d, p;
|
|
21
|
-
a[6] === s ? p = a[7] : (p = () => s
|
|
21
|
+
a[6] === s ? p = a[7] : (p = () => s.at(-1), a[6] = s, a[7] = p);
|
|
22
22
|
let m = p, h;
|
|
23
23
|
a[8] === Symbol.for("react.memo_cache_sentinel") ? (h = () => {
|
|
24
24
|
c([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStack.js","names":["useCallback","useState","useStack","t0","maxSize","$","_c","t1","undefined","stack","currentStack","setCurrentStack","t2","item","prev","newStack","length","shift","push","t3","popped","_temp","pop","t4","peek","t5","Symbol","for","clear","t6","isEmpty","t7","size","prev_0","slice"],"sources":["../../../../src/components/DataGrid/hooks/useStack.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing a stack data structure\n * @param stack - Initial stack items\n * @param maxSize - Optional maximum stack size. When exceeded, oldest items are removed\n */ export function useStack<T>(stack: T[] = [], maxSize?: number) {\n const [currentStack, setCurrentStack] = useState<T[]>(stack)\n\n const push = useCallback(\n (item: T) => {\n setCurrentStack(prev => {\n // Push a new item onto the top of the stack\n const newStack = [...prev, item]\n\n // Enforce maximum stack size by removing oldest element (bottom of stack)\n if (maxSize && newStack.length > maxSize) {\n newStack.shift()\n }\n\n return newStack\n })\n },\n [maxSize],\n )\n\n const pop = useCallback(() => {\n if (currentStack.length === 0) return undefined\n\n const popped = currentStack
|
|
1
|
+
{"version":3,"file":"useStack.js","names":["useCallback","useState","useStack","t0","maxSize","$","_c","t1","undefined","stack","currentStack","setCurrentStack","t2","item","prev","newStack","length","shift","push","t3","popped","at","_temp","pop","t4","peek","t5","Symbol","for","clear","t6","isEmpty","t7","size","prev_0","slice"],"sources":["../../../../src/components/DataGrid/hooks/useStack.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing a stack data structure\n * @param stack - Initial stack items\n * @param maxSize - Optional maximum stack size. When exceeded, oldest items are removed\n */ export function useStack<T>(stack: T[] = [], maxSize?: number) {\n const [currentStack, setCurrentStack] = useState<T[]>(stack)\n\n const push = useCallback(\n (item: T) => {\n setCurrentStack(prev => {\n // Push a new item onto the top of the stack\n const newStack = [...prev, item]\n\n // Enforce maximum stack size by removing oldest element (bottom of stack)\n if (maxSize && newStack.length > maxSize) {\n newStack.shift()\n }\n\n return newStack\n })\n },\n [maxSize],\n )\n\n const pop = useCallback(() => {\n if (currentStack.length === 0) return undefined\n\n const popped = currentStack.at(-1)\n setCurrentStack(prev => prev.slice(0, -1))\n return popped\n }, [currentStack])\n\n const peek = useCallback(() => {\n return currentStack.at(-1)\n }, [currentStack])\n\n const clear = useCallback(() => {\n setCurrentStack([])\n }, [])\n\n const isEmpty = useCallback(() => currentStack.length === 0, [currentStack])\n\n return {\n stack: currentStack,\n push,\n pop,\n clear,\n peek,\n size: currentStack.length,\n isEmpty,\n }\n}\n"],"mappings":";;;AAMI,SAAOE,EAAAC,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAF,IAAoCI,IAAAF,EAAA,MAAfE,IAAAJ,MAAAK,KAAAA,IAAA,CAAA,IAAAL,GAAeE,EAAA,KAAAF,GAAAE,EAAA,KAAAE;CAC7C,IAAA,CAAAG,GAAAC,KAAwCV,EAAcQ,CAAK,GAACG;CAAA,AAAAP,EAAA,OAAAD,IAezDQ,IAAAP,EAAA,MAZDO,KAAAC,MAAA;EACEF,GAAgBG,MAAA;GAEd,IAAAC,IAAiB,CAAA,GAAID,GAAMD,CAAI;GAK9B,OAFGT,KAAWW,EAAQC,SAAUZ,KAC/BW,EAAQE,MAAO,GAGVF;EAAQ,CAChB;CAAC,GACHV,EAAA,KAAAD,GAAAC,EAAA,KAAAO;CAbH,IAAAM,IAAaN,GAeZO;CAAA,AAAAd,EAAA,OAAAK,IAQAS,IAAAd,EAAA,MANuBc,UAAA;EACtB,IAAIT,EAAYM,WAAY,GAAC;EAE7B,IAAAI,IAAeV,EAAYW,GAAI,EAAE;EACS,OAA1CV,EAAgBW,CAAyB,GAClCF;CAAM,GACdf,EAAA,KAAAK,GAAAL,EAAA,KAAAc;CAND,IAAAI,IAAYJ,GAMMK;CAAA,AAAAnB,EAAA,OAAAK,IAIjBc,IAAAnB,EAAA,MAFwBmB,UAChBd,EAAYW,GAAI,EAAE,GAC1BhB,EAAA,KAAAK,GAAAL,EAAA,KAAAmB;CAFD,IAAAC,IAAaD,GAEKE;CAAA,AAAArB,EAAA,OAAAsB,OAAAC,IAAA,2BAAA,KAEQF,UAAA;EACxBf,EAAgB,CAAA,CAAE;CAAC,GACpBN,EAAA,KAAAqB,KAAAA,IAAArB,EAAA;CAFD,IAAAwB,IAAcH,GAERI;CAAA,AAAAzB,EAAA,OAAAK,EAAAM,SAEqDc,IAAAzB,EAAA,OAA/ByB,UAAMpB,EAAYM,WAAY,GAACX,EAAA,KAAAK,EAAAM,QAAAX,EAAA,MAAAyB;CAA3D,IAAAC,IAAgBD,GAA4DE;CAU3E,OAV2E3B,EAAA,QAAAK,KAAAL,EAAA,QAAA0B,KAAA1B,EAAA,QAAAoB,KAAApB,EAAA,QAAAkB,KAAAlB,EAAA,QAAAa,KAErEc,IAAA;EAAAvB,OACEC;EAAYQ;EAAAK;EAAAM;EAAAJ;EAAAQ,MAKbvB,EAAYM;EAAOe;CAE3B,GAAC1B,EAAA,MAAAK,GAAAL,EAAA,MAAA0B,GAAA1B,EAAA,MAAAoB,GAAApB,EAAA,MAAAkB,GAAAlB,EAAA,MAAAa,GAAAb,EAAA,MAAA2B,KAAAA,IAAA3B,EAAA,KARM2B;AAQN;AA9CQ,SAAAV,EAAAY,GAAA;CAAA,OAwBiBpB,EAAIqB,MAAO,GAAG,EAAE;AAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnFactory.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAGL,MAAM,EAGP,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"columnFactory.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAA;AAC7E,OAAO,EAGL,MAAM,EAGP,MAAM,wCAAwC,CAAA;AAyE/C,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IACrD,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC,CAAA;AAgND,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAOzD"}
|
|
@@ -3,24 +3,25 @@ import { dateTimeColumn as t } from "../columns/DateTimeColumn.js";
|
|
|
3
3
|
import { autocompleteMultipleEnumColumn as n } from "../columns/AutocompleteMultipleEnumColumn.js";
|
|
4
4
|
import { getEmptyValue as r } from "./getEmptyValue.js";
|
|
5
5
|
import { numberColumn as i } from "../columns/NumberColumn.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import f from "
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
6
|
+
import { numberOrEnumColumn as a } from "../columns/NumberOrEnumColumn.js";
|
|
7
|
+
import { calculateDefaultColumnWidth as o } from "./calculateColumnWidth.js";
|
|
8
|
+
import { ColumnHeaderWithTooltip as s } from "../components/ColumnHeaderWithTooltip.js";
|
|
9
|
+
import { wrapPasteValueWithSchemaCoercion as c } from "./schemaAwarePasteValue.js";
|
|
10
|
+
import { Tooltip as l } from "@mui/material";
|
|
11
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
12
|
+
import p from "@mui/icons-material/SmartToyTwoTone";
|
|
13
|
+
import { c as m } from "react/compiler-runtime";
|
|
14
|
+
import { createTextColumn as h, keyColumn as g } from "@sage-bionetworks/react-datasheet-grid";
|
|
14
15
|
//#region src/components/DataGrid/utils/columnFactory.tsx
|
|
15
|
-
function
|
|
16
|
+
function _(e, t) {
|
|
16
17
|
function n(n) {
|
|
17
|
-
let r =
|
|
18
|
-
r[0] === n ? o = r[1] : (o = /* @__PURE__ */
|
|
18
|
+
let r = m(13), i = n.rowData.__cellChangeInfo?.[t], a = i?.category === "own-agent" || i?.category === "other-agent", o;
|
|
19
|
+
r[0] === n ? o = r[1] : (o = /* @__PURE__ */ d(e, { ...n }), r[0] = n, r[1] = o);
|
|
19
20
|
let s;
|
|
20
|
-
r[2] !== i || r[3] !== a ? (s = i && !a && /* @__PURE__ */
|
|
21
|
+
r[2] !== i || r[3] !== a ? (s = i && !a && /* @__PURE__ */ d(l, {
|
|
21
22
|
title: i.tooltipText,
|
|
22
23
|
placement: "top-end",
|
|
23
|
-
children: /* @__PURE__ */
|
|
24
|
+
children: /* @__PURE__ */ d("div", { style: {
|
|
24
25
|
position: "absolute",
|
|
25
26
|
top: 0,
|
|
26
27
|
right: 0,
|
|
@@ -30,11 +31,11 @@ function g(e, t) {
|
|
|
30
31
|
pointerEvents: "auto"
|
|
31
32
|
} })
|
|
32
33
|
}), r[2] = i, r[3] = a, r[4] = s) : s = r[4];
|
|
33
|
-
let
|
|
34
|
-
r[5] !== i || r[6] !== a || r[7] !== n.focus ? (
|
|
34
|
+
let c;
|
|
35
|
+
r[5] !== i || r[6] !== a || r[7] !== n.focus ? (c = a && !n.focus && /* @__PURE__ */ d(l, {
|
|
35
36
|
title: i.tooltipText,
|
|
36
37
|
placement: "left",
|
|
37
|
-
children: /* @__PURE__ */
|
|
38
|
+
children: /* @__PURE__ */ d(p, { sx: {
|
|
38
39
|
fontSize: "1em",
|
|
39
40
|
alignSelf: "center",
|
|
40
41
|
flexShrink: 0,
|
|
@@ -44,37 +45,37 @@ function g(e, t) {
|
|
|
44
45
|
color: "grey.400",
|
|
45
46
|
backgroundColor: "transparent"
|
|
46
47
|
} })
|
|
47
|
-
}), r[5] = i, r[6] = a, r[7] = n.focus, r[8] =
|
|
48
|
+
}), r[5] = i, r[6] = a, r[7] = n.focus, r[8] = c) : c = r[8];
|
|
48
49
|
let h;
|
|
49
|
-
return r[9] !== o || r[10] !== s || r[11] !==
|
|
50
|
+
return r[9] !== o || r[10] !== s || r[11] !== c ? (h = /* @__PURE__ */ f(u, { children: [
|
|
50
51
|
o,
|
|
51
52
|
s,
|
|
52
|
-
|
|
53
|
-
] }), r[9] = o, r[10] = s, r[11] =
|
|
53
|
+
c
|
|
54
|
+
] }), r[9] = o, r[10] = s, r[11] = c, r[12] = h) : h = r[12], h;
|
|
54
55
|
}
|
|
55
56
|
return n.displayName = `CellWithTooltip(${t})`, n;
|
|
56
57
|
}
|
|
57
|
-
function
|
|
58
|
+
function v(e, t) {
|
|
58
59
|
return ({ rowData: n }) => ({
|
|
59
60
|
...n,
|
|
60
61
|
[e]: r(t)
|
|
61
62
|
});
|
|
62
63
|
}
|
|
63
|
-
function
|
|
64
|
+
function y(e) {
|
|
64
65
|
return (t) => {
|
|
65
66
|
let n = t.trim();
|
|
66
67
|
return n === "" ? r(e) : n;
|
|
67
68
|
};
|
|
68
69
|
}
|
|
69
|
-
function
|
|
70
|
+
function b(e, t) {
|
|
70
71
|
let n = {
|
|
71
72
|
showPinIcon: e.showPinIcon,
|
|
72
73
|
hasDescription: !!e.description
|
|
73
|
-
}, r = e.customWidth ??
|
|
74
|
+
}, r = e.customWidth ?? o(e.columnName, void 0, n), i = g(e.columnName, t);
|
|
74
75
|
return {
|
|
75
76
|
...i,
|
|
76
|
-
component:
|
|
77
|
-
title: /* @__PURE__ */
|
|
77
|
+
component: _(i.component, e.columnName),
|
|
78
|
+
title: /* @__PURE__ */ d(s, {
|
|
78
79
|
name: e.columnName,
|
|
79
80
|
description: e.description,
|
|
80
81
|
isRequired: e.isRequired,
|
|
@@ -88,32 +89,36 @@ function y(e, t) {
|
|
|
88
89
|
grow: 0,
|
|
89
90
|
shrink: 0,
|
|
90
91
|
disabled: e.disabled,
|
|
91
|
-
deleteValue:
|
|
92
|
-
pasteValue:
|
|
92
|
+
deleteValue: v(e.columnName, e.isRequired),
|
|
93
|
+
pasteValue: c(i.pasteValue, e.columnName, e.schemaPropertyInfo),
|
|
93
94
|
stickyLeft: e.isPinned
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
|
-
var
|
|
97
|
-
multipleEnum: (e) =>
|
|
97
|
+
var x = new Set(["date", "date-time"]), S = {
|
|
98
|
+
multipleEnum: (e) => b(e, n({
|
|
98
99
|
choices: e.enumeratedValues ?? [],
|
|
99
100
|
colType: e.typeInfo?.type || null,
|
|
100
101
|
limitTags: 3,
|
|
101
102
|
clearValue: r(e.isRequired)
|
|
102
103
|
})),
|
|
103
|
-
boolean: (t) =>
|
|
104
|
+
boolean: (t) => b(t, e({
|
|
104
105
|
choices: [!0, !1],
|
|
105
106
|
colType: "boolean",
|
|
106
107
|
clearValue: r(t.isRequired)
|
|
107
108
|
})),
|
|
108
|
-
number: (e) =>
|
|
109
|
+
number: (e) => b(e, i({
|
|
109
110
|
colType: e.typeInfo?.type,
|
|
110
111
|
isRequired: e.isRequired
|
|
111
112
|
})),
|
|
112
|
-
enumerated: (t) =>
|
|
113
|
+
enumerated: (t) => b(t, e({
|
|
113
114
|
choices: t.enumeratedValues ?? [],
|
|
114
115
|
colType: t.typeInfo?.type || null,
|
|
115
116
|
clearValue: r(t.isRequired)
|
|
116
117
|
})),
|
|
118
|
+
numberOrEnum: (e) => b(e, a({
|
|
119
|
+
enumValues: e.enumeratedValues ?? [],
|
|
120
|
+
clearValue: r(e.isRequired)
|
|
121
|
+
})),
|
|
117
122
|
dateOrDateTime: (e) => {
|
|
118
123
|
let n = t({
|
|
119
124
|
colType: e.typeInfo?.type || null,
|
|
@@ -121,33 +126,33 @@ var b = new Set(["date", "date-time"]), x = {
|
|
|
121
126
|
}), r = {
|
|
122
127
|
showPinIcon: e.showPinIcon,
|
|
123
128
|
hasDescription: !!e.description
|
|
124
|
-
}, i = e.customWidth ??
|
|
129
|
+
}, i = e.customWidth ?? o(e.columnName, {
|
|
125
130
|
type: e.typeInfo ?? void 0,
|
|
126
131
|
isRequired: e.isRequired,
|
|
127
132
|
enumeratedValues: null
|
|
128
133
|
}, r);
|
|
129
134
|
return {
|
|
130
|
-
...
|
|
135
|
+
...b(e, n),
|
|
131
136
|
minWidth: i,
|
|
132
137
|
basis: i
|
|
133
138
|
};
|
|
134
139
|
},
|
|
135
140
|
text: (e) => ({
|
|
136
|
-
...
|
|
141
|
+
...b(e, h({
|
|
137
142
|
continuousUpdates: !1,
|
|
138
143
|
deletedValue: void 0,
|
|
139
|
-
parseUserInput:
|
|
144
|
+
parseUserInput: y(e.isRequired)
|
|
140
145
|
})),
|
|
141
146
|
cellClassName: "MuiInputBase-input"
|
|
142
147
|
})
|
|
143
148
|
};
|
|
144
|
-
function
|
|
145
|
-
return e ? e.format &&
|
|
149
|
+
function C(e, t, n) {
|
|
150
|
+
return n ? "numberOrEnum" : e ? e.format && x.has(e.format) ? "dateOrDateTime" : e.isArray ? "multipleEnum" : e.type === "boolean" ? "boolean" : e.type === "number" || e.type === "integer" ? "number" : t && t.length > 0 ? "enumerated" : "text" : t && t.length > 0 ? "enumerated" : "text";
|
|
146
151
|
}
|
|
147
|
-
function
|
|
148
|
-
return
|
|
152
|
+
function w(e) {
|
|
153
|
+
return S[C(e.typeInfo, e.enumeratedValues, e.schemaPropertyInfo?.isNumberOrEnum)](e);
|
|
149
154
|
}
|
|
150
155
|
//#endregion
|
|
151
|
-
export {
|
|
156
|
+
export { w as createColumn };
|
|
152
157
|
|
|
153
158
|
//# sourceMappingURL=columnFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnFactory.js","names":["dateTimeColumn","EnumeratedValue","FlatTypeInfo","SchemaPropertyInfo","CellComponent","CellProps","Column","createTextColumn","keyColumn","autocompleteColumn","autocompleteMultipleEnumColumn","numberColumn","calculateDefaultColumnWidth","HeaderOptions","ColumnHeaderWithTooltip","Tooltip","SmartToyTwoTone","DataGridRow","wrapPasteValueWithSchemaCoercion","getEmptyValue","withChangeIndicatorTooltip","OriginalComponent","T","C","colName","CellWithTooltip","props","$","_c","changeInfo","rowData","__cellChangeInfo","isAgent","category","t0","t1","tooltipText","position","top","right","width","height","zIndex","pointerEvents","t2","focus","fontSize","alignSelf","flexShrink","mr","color","backgroundColor","t3","displayName","ColumnConfig","columnName","description","disabled","typeInfo","enumeratedValues","isRequired","customWidth","showPinIcon","isPinned","onTogglePin","isUpsertKey","schemaPropertyInfo","createDeleteValue","Record","createParseUserInput","value","trimmedValue","trim","createBaseColumn","config","columnImpl","headerOptions","hasDescription","undefined","keyed","component","title","minWidth","basis","grow","shrink","deleteValue","pasteValue","stickyLeft","DATE_COLUMN_FORMATS","ReadonlySet","Set","COLUMN_FACTORIES","multipleEnum","choices","colType","type","limitTags","clearValue","boolean","number","enumerated","dateOrDateTime","format","text","continuousUpdates","deletedValue","parseUserInput","cellClassName","getColumnType","length","has","isArray","createColumn","columnType"],"sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"sourcesContent":["import { dateTimeColumn } from '@/components/DataGrid/columns/DateTimeColumn'\nimport { EnumeratedValue } from '@/utils/jsonschema/getEnumeratedValues'\nimport { FlatTypeInfo } from '@/utils/jsonschema/getType'\nimport { SchemaPropertyInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport {\n CellComponent,\n CellProps,\n Column,\n createTextColumn,\n keyColumn,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { autocompleteColumn } from '../columns/AutocompleteColumn'\nimport { autocompleteMultipleEnumColumn } from '../columns/AutocompleteMultipleEnumColumn'\nimport { numberColumn } from '../columns/NumberColumn'\nimport {\n calculateDefaultColumnWidth,\n HeaderOptions,\n} from './calculateColumnWidth'\nimport { ColumnHeaderWithTooltip } from '../components/ColumnHeaderWithTooltip'\nimport { Tooltip } from '@mui/material'\nimport SmartToyTwoTone from '@mui/icons-material/SmartToyTwoTone'\nimport type { DataGridRow } from '../DataGridTypes'\nimport { wrapPasteValueWithSchemaCoercion } from './schemaAwarePasteValue'\nimport { getEmptyValue } from './getEmptyValue'\n\n/**\n * Wraps a column cell component to overlay change-attribution indicators:\n * - Non-agent changes: invisible 7×7px tooltip trigger over the CSS triangle (top-right).\n * - Agent changes: robot icon (1em, vertically centered on the right) with no triangle.\n */\nfunction withChangeIndicatorTooltip<T, C>(\n OriginalComponent: CellComponent<T, C>,\n colName: string,\n): CellComponent<T, C> {\n function CellWithTooltip(props: CellProps<T, C>) {\n const changeInfo = (props.rowData as DataGridRow).__cellChangeInfo?.[\n colName\n ]\n const isAgent =\n changeInfo?.category === 'own-agent' ||\n changeInfo?.category === 'other-agent'\n return (\n <>\n <OriginalComponent {...props} />\n {changeInfo && !isAgent && (\n <Tooltip title={changeInfo.tooltipText} placement=\"top-end\">\n <div\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n width: 7,\n height: 7,\n zIndex: 21,\n pointerEvents: 'auto',\n }}\n />\n </Tooltip>\n )}\n {isAgent && !props.focus && (\n <Tooltip title={changeInfo.tooltipText} placement=\"left\">\n <SmartToyTwoTone\n sx={{\n fontSize: '1em',\n alignSelf: 'center',\n flexShrink: 0,\n mr: 0.5,\n zIndex: 21,\n pointerEvents: 'auto',\n color: 'grey.400',\n backgroundColor: 'transparent',\n }}\n />\n </Tooltip>\n )}\n </>\n )\n }\n CellWithTooltip.displayName = `CellWithTooltip(${colName})`\n return CellWithTooltip\n}\n\ntype ColumnConfig = {\n columnName: string\n description?: string\n disabled?: boolean\n typeInfo: FlatTypeInfo | null\n enumeratedValues: EnumeratedValue[] | string[] | null\n isRequired: boolean\n customWidth?: number\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n isUpsertKey?: boolean\n /**\n * Optional column-level schema info. When provided, paste behavior coerces\n * empty pasted cells to the schema-correct blank (undefined for optional\n * columns, null for required columns). Omit to preserve the column impl's\n * default paste behavior.\n */\n schemaPropertyInfo?: SchemaPropertyInfo\n}\n\nfunction createDeleteValue(columnName: string, isRequired?: boolean) {\n return ({ rowData }: { rowData: Record<string, unknown> }) => ({\n ...rowData,\n [columnName]: getEmptyValue(isRequired),\n })\n}\n\nfunction createParseUserInput(isRequired?: boolean) {\n return (value: string) => {\n const trimmedValue = value.trim()\n if (trimmedValue === '') {\n return getEmptyValue(isRequired)\n }\n return trimmedValue\n }\n}\n\nfunction createBaseColumn(config: ColumnConfig, columnImpl: any) {\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n undefined, // propertyInfo is not available here, passed from higher level\n headerOptions,\n )\n\n const keyed = keyColumn(config.columnName, columnImpl)\n return {\n ...keyed,\n component: withChangeIndicatorTooltip(keyed.component!, config.columnName),\n title: (\n <ColumnHeaderWithTooltip\n name={config.columnName}\n description={config.description}\n isRequired={config.isRequired}\n isUpsertKey={config.isUpsertKey}\n showPinIcon={config.showPinIcon}\n isPinned={config.isPinned}\n onTogglePin={config.onTogglePin}\n />\n ),\n minWidth: width,\n basis: width,\n grow: 0,\n shrink: 0,\n disabled: config.disabled,\n deleteValue: createDeleteValue(config.columnName, config.isRequired),\n pasteValue: wrapPasteValueWithSchemaCoercion(\n keyed.pasteValue,\n config.columnName,\n config.schemaPropertyInfo,\n ),\n stickyLeft: config.isPinned,\n }\n}\n\n// JSON Schema formats handled by the date column: `date-time` collects a time of\n// day alongside the date, `date` a calendar date on its own.\nconst DATE_COLUMN_FORMATS: ReadonlySet<string> = new Set(['date', 'date-time'])\n\nconst COLUMN_FACTORIES = {\n multipleEnum: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteMultipleEnumColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n limitTags: 3,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n boolean: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: [true, false],\n colType: 'boolean',\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n number: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n numberColumn({\n colType: config.typeInfo?.type,\n isRequired: config.isRequired,\n }),\n )\n },\n\n enumerated: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n dateOrDateTime: (config: ColumnConfig) => {\n const columnImpl = dateTimeColumn({\n colType: config.typeInfo?.type || null,\n format: config.typeInfo?.format,\n })\n\n // Date-time needs special width calculation\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n {\n type: config.typeInfo ?? undefined,\n isRequired: config.isRequired,\n enumeratedValues: null,\n },\n headerOptions,\n )\n\n return {\n ...createBaseColumn(config, columnImpl),\n minWidth: width,\n basis: width,\n }\n },\n\n text: (config: ColumnConfig) => {\n const columnImpl = createTextColumn({\n continuousUpdates: false,\n deletedValue: undefined,\n parseUserInput: createParseUserInput(config.isRequired),\n })\n\n return {\n ...createBaseColumn(config, columnImpl),\n cellClassName: 'MuiInputBase-input',\n }\n },\n}\n\nfunction getColumnType(\n typeInfo: FlatTypeInfo | null,\n enumeratedValues?: EnumeratedValue[] | string[] | null,\n): keyof typeof COLUMN_FACTORIES {\n if (!typeInfo) {\n return enumeratedValues && enumeratedValues.length > 0\n ? 'enumerated'\n : 'text'\n }\n\n if (typeInfo.format && DATE_COLUMN_FORMATS.has(typeInfo.format)) {\n return 'dateOrDateTime'\n }\n\n // Handle arrays - check if it's an array of enums\n if (typeInfo.isArray) {\n return 'multipleEnum'\n }\n\n if (typeInfo.type === 'boolean') {\n return 'boolean'\n }\n\n if (typeInfo.type === 'number' || typeInfo.type === 'integer') {\n return 'number'\n }\n\n if (enumeratedValues && enumeratedValues.length > 0) {\n return 'enumerated'\n }\n\n return 'text'\n}\n\nexport function createColumn(config: ColumnConfig): Column {\n const columnType = getColumnType(config.typeInfo, config.enumeratedValues)\n return COLUMN_FACTORIES[columnType](config)\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"columnFactory.js","names":["dateTimeColumn","EnumeratedValue","FlatTypeInfo","SchemaPropertyInfo","CellComponent","CellProps","Column","createTextColumn","keyColumn","autocompleteColumn","autocompleteMultipleEnumColumn","numberColumn","numberOrEnumColumn","calculateDefaultColumnWidth","HeaderOptions","ColumnHeaderWithTooltip","Tooltip","SmartToyTwoTone","DataGridRow","wrapPasteValueWithSchemaCoercion","getEmptyValue","withChangeIndicatorTooltip","OriginalComponent","T","C","colName","CellWithTooltip","props","$","_c","changeInfo","rowData","__cellChangeInfo","isAgent","category","t0","t1","tooltipText","position","top","right","width","height","zIndex","pointerEvents","t2","focus","fontSize","alignSelf","flexShrink","mr","color","backgroundColor","t3","displayName","ColumnConfig","columnName","description","disabled","typeInfo","enumeratedValues","isRequired","customWidth","showPinIcon","isPinned","onTogglePin","isUpsertKey","schemaPropertyInfo","createDeleteValue","Record","createParseUserInput","value","trimmedValue","trim","createBaseColumn","config","columnImpl","headerOptions","hasDescription","undefined","keyed","component","title","minWidth","basis","grow","shrink","deleteValue","pasteValue","stickyLeft","DATE_COLUMN_FORMATS","ReadonlySet","Set","COLUMN_FACTORIES","multipleEnum","choices","colType","type","limitTags","clearValue","boolean","number","enumerated","numberOrEnum","enumValues","dateOrDateTime","format","text","continuousUpdates","deletedValue","parseUserInput","cellClassName","getColumnType","isNumberOrEnum","length","has","isArray","createColumn","columnType"],"sources":["../../../../src/components/DataGrid/utils/columnFactory.tsx"],"sourcesContent":["import { dateTimeColumn } from '@/components/DataGrid/columns/DateTimeColumn'\nimport { EnumeratedValue } from '@/utils/jsonschema/getEnumeratedValues'\nimport { FlatTypeInfo } from '@/utils/jsonschema/getType'\nimport { SchemaPropertyInfo } from '@/utils/jsonschema/getSchemaPropertyInfo'\nimport {\n CellComponent,\n CellProps,\n Column,\n createTextColumn,\n keyColumn,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { autocompleteColumn } from '../columns/AutocompleteColumn'\nimport { autocompleteMultipleEnumColumn } from '../columns/AutocompleteMultipleEnumColumn'\nimport { numberColumn } from '../columns/NumberColumn'\nimport { numberOrEnumColumn } from '../columns/NumberOrEnumColumn'\nimport {\n calculateDefaultColumnWidth,\n HeaderOptions,\n} from './calculateColumnWidth'\nimport { ColumnHeaderWithTooltip } from '../components/ColumnHeaderWithTooltip'\nimport { Tooltip } from '@mui/material'\nimport SmartToyTwoTone from '@mui/icons-material/SmartToyTwoTone'\nimport type { DataGridRow } from '../DataGridTypes'\nimport { wrapPasteValueWithSchemaCoercion } from './schemaAwarePasteValue'\nimport { getEmptyValue } from './getEmptyValue'\n\n/**\n * Wraps a column cell component to overlay change-attribution indicators:\n * - Non-agent changes: invisible 7×7px tooltip trigger over the CSS triangle (top-right).\n * - Agent changes: robot icon (1em, vertically centered on the right) with no triangle.\n */\nfunction withChangeIndicatorTooltip<T, C>(\n OriginalComponent: CellComponent<T, C>,\n colName: string,\n): CellComponent<T, C> {\n function CellWithTooltip(props: CellProps<T, C>) {\n const changeInfo = (props.rowData as DataGridRow).__cellChangeInfo?.[\n colName\n ]\n const isAgent =\n changeInfo?.category === 'own-agent' ||\n changeInfo?.category === 'other-agent'\n return (\n <>\n <OriginalComponent {...props} />\n {changeInfo && !isAgent && (\n <Tooltip title={changeInfo.tooltipText} placement=\"top-end\">\n <div\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n width: 7,\n height: 7,\n zIndex: 21,\n pointerEvents: 'auto',\n }}\n />\n </Tooltip>\n )}\n {isAgent && !props.focus && (\n <Tooltip title={changeInfo.tooltipText} placement=\"left\">\n <SmartToyTwoTone\n sx={{\n fontSize: '1em',\n alignSelf: 'center',\n flexShrink: 0,\n mr: 0.5,\n zIndex: 21,\n pointerEvents: 'auto',\n color: 'grey.400',\n backgroundColor: 'transparent',\n }}\n />\n </Tooltip>\n )}\n </>\n )\n }\n CellWithTooltip.displayName = `CellWithTooltip(${colName})`\n return CellWithTooltip\n}\n\ntype ColumnConfig = {\n columnName: string\n description?: string\n disabled?: boolean\n typeInfo: FlatTypeInfo | null\n enumeratedValues: EnumeratedValue[] | string[] | null\n isRequired: boolean\n customWidth?: number\n showPinIcon?: boolean\n isPinned?: boolean\n onTogglePin?: () => void\n isUpsertKey?: boolean\n /**\n * Optional column-level schema info. When provided, paste behavior coerces\n * empty pasted cells to the schema-correct blank (undefined for optional\n * columns, null for required columns). Omit to preserve the column impl's\n * default paste behavior.\n */\n schemaPropertyInfo?: SchemaPropertyInfo\n}\n\nfunction createDeleteValue(columnName: string, isRequired?: boolean) {\n return ({ rowData }: { rowData: Record<string, unknown> }) => ({\n ...rowData,\n [columnName]: getEmptyValue(isRequired),\n })\n}\n\nfunction createParseUserInput(isRequired?: boolean) {\n return (value: string) => {\n const trimmedValue = value.trim()\n if (trimmedValue === '') {\n return getEmptyValue(isRequired)\n }\n return trimmedValue\n }\n}\n\nfunction createBaseColumn(config: ColumnConfig, columnImpl: any) {\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n undefined, // propertyInfo is not available here, passed from higher level\n headerOptions,\n )\n\n const keyed = keyColumn(config.columnName, columnImpl)\n return {\n ...keyed,\n component: withChangeIndicatorTooltip(keyed.component!, config.columnName),\n title: (\n <ColumnHeaderWithTooltip\n name={config.columnName}\n description={config.description}\n isRequired={config.isRequired}\n isUpsertKey={config.isUpsertKey}\n showPinIcon={config.showPinIcon}\n isPinned={config.isPinned}\n onTogglePin={config.onTogglePin}\n />\n ),\n minWidth: width,\n basis: width,\n grow: 0,\n shrink: 0,\n disabled: config.disabled,\n deleteValue: createDeleteValue(config.columnName, config.isRequired),\n pasteValue: wrapPasteValueWithSchemaCoercion(\n keyed.pasteValue,\n config.columnName,\n config.schemaPropertyInfo,\n ),\n stickyLeft: config.isPinned,\n }\n}\n\n// JSON Schema formats handled by the date column: `date-time` collects a time of\n// day alongside the date, `date` a calendar date on its own.\nconst DATE_COLUMN_FORMATS: ReadonlySet<string> = new Set(['date', 'date-time'])\n\nconst COLUMN_FACTORIES = {\n multipleEnum: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteMultipleEnumColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n limitTags: 3,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n boolean: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: [true, false],\n colType: 'boolean',\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n number: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n numberColumn({\n colType: config.typeInfo?.type,\n isRequired: config.isRequired,\n }),\n )\n },\n\n enumerated: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n autocompleteColumn({\n choices: config.enumeratedValues ?? [],\n colType: config.typeInfo?.type || null,\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n numberOrEnum: (config: ColumnConfig) => {\n return createBaseColumn(\n config,\n numberOrEnumColumn({\n enumValues: config.enumeratedValues ?? [],\n clearValue: getEmptyValue(config.isRequired),\n }),\n )\n },\n\n dateOrDateTime: (config: ColumnConfig) => {\n const columnImpl = dateTimeColumn({\n colType: config.typeInfo?.type || null,\n format: config.typeInfo?.format,\n })\n\n // Date-time needs special width calculation\n const headerOptions: HeaderOptions = {\n showPinIcon: config.showPinIcon,\n hasDescription: !!config.description,\n }\n\n const width =\n config.customWidth ??\n calculateDefaultColumnWidth(\n config.columnName,\n {\n type: config.typeInfo ?? undefined,\n isRequired: config.isRequired,\n enumeratedValues: null,\n },\n headerOptions,\n )\n\n return {\n ...createBaseColumn(config, columnImpl),\n minWidth: width,\n basis: width,\n }\n },\n\n text: (config: ColumnConfig) => {\n const columnImpl = createTextColumn({\n continuousUpdates: false,\n deletedValue: undefined,\n parseUserInput: createParseUserInput(config.isRequired),\n })\n\n return {\n ...createBaseColumn(config, columnImpl),\n cellClassName: 'MuiInputBase-input',\n }\n },\n}\n\nfunction getColumnType(\n typeInfo: FlatTypeInfo | null,\n enumeratedValues?: EnumeratedValue[] | string[] | null,\n isNumberOrEnum?: boolean,\n): keyof typeof COLUMN_FACTORIES {\n // A number-or-enum union reports its numeric branch as its type, so it must\n // be matched before the number check claims it\n if (isNumberOrEnum) {\n return 'numberOrEnum'\n }\n\n if (!typeInfo) {\n return enumeratedValues && enumeratedValues.length > 0\n ? 'enumerated'\n : 'text'\n }\n\n if (typeInfo.format && DATE_COLUMN_FORMATS.has(typeInfo.format)) {\n return 'dateOrDateTime'\n }\n\n // Handle arrays - check if it's an array of enums\n if (typeInfo.isArray) {\n return 'multipleEnum'\n }\n\n if (typeInfo.type === 'boolean') {\n return 'boolean'\n }\n\n if (typeInfo.type === 'number' || typeInfo.type === 'integer') {\n return 'number'\n }\n\n if (enumeratedValues && enumeratedValues.length > 0) {\n return 'enumerated'\n }\n\n return 'text'\n}\n\nexport function createColumn(config: ColumnConfig): Column {\n const columnType = getColumnType(\n config.typeInfo,\n config.enumeratedValues,\n config.schemaPropertyInfo?.isNumberOrEnum,\n )\n return COLUMN_FACTORIES[columnType](config)\n}\n"],"mappings":"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"}
|
|
@@ -3,14 +3,14 @@ function e(e) {
|
|
|
3
3
|
let t = /* @__PURE__ */ new Map(), n = /^#(?:\/([^/:]+)(?:\/\d+)?)?:\s*(.*)$/;
|
|
4
4
|
for (let r of e) {
|
|
5
5
|
if (typeof r != "string") continue;
|
|
6
|
-
let e = r.trimStart().
|
|
7
|
-
if (
|
|
8
|
-
let
|
|
9
|
-
if (
|
|
10
|
-
let
|
|
11
|
-
|
|
6
|
+
let e = r.trimStart(), i = n.exec(e);
|
|
7
|
+
if (i) {
|
|
8
|
+
let e = i[1]?.trim() ?? "_row", n = i[2].trim();
|
|
9
|
+
if (e === "_row") {
|
|
10
|
+
let t = /^required key \[([^\]]+)\] not found$/i.exec(n);
|
|
11
|
+
t && (e = t[1]);
|
|
12
12
|
}
|
|
13
|
-
t.has(
|
|
13
|
+
t.has(e) || t.set(e, []), t.get(e).push(n);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
return t;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractColumnValidationMessages.js","names":["extractColumnValidationMessages","messages","Map","columnMap","regex","raw","str","trimStart","match","columnName","trim","message","requiredKeyMatch","has","set","get","push"],"sources":["../../../../src/components/DataGrid/utils/extractColumnValidationMessages.ts"],"sourcesContent":["/**\n * Extracts column name and validation message from validation message strings.\n *\n * Example:\n * extractColumnValidationMessages([\"#/platform: null is not a valid enum value\"])\n * -> Map { \"platform\" => [\"null is not a valid enum value\"] }\n *\n * extractColumnValidationMessages([\"#/requiredNumberArrayColumn/0: some error\"])\n * -> Map { \"requiredNumberArrayColumn\" => [\"some error\"] }\n *\n * extractColumnValidationMessages([\"#: row-level error\"])\n * -> Map { \"_row\" => [\"row-level error\"] }\n *\n * extractColumnValidationMessages([\"#: required key [missingColumn] not found\"])\n * -> Map { \"missingColumn\" => [\"required key [missingColumn] not found\"] }\n */\nexport function extractColumnValidationMessages(\n messages: string[],\n): Map<string, string[]> {\n const columnMap = new Map<string, string[]>()\n // Validation message format: \"#/columnName: message\"\n // or for array items: \"#/columnName/0: message\"\n // or for object (row) level: \"#: message\"\n const regex = /^#(?:\\/([^/:]+)(?:\\/\\d+)?)?:\\s*(.*)$/\n\n for (const raw of messages) {\n if (typeof raw !== 'string') continue\n const str = raw.trimStart()\n const match =
|
|
1
|
+
{"version":3,"file":"extractColumnValidationMessages.js","names":["extractColumnValidationMessages","messages","Map","columnMap","regex","raw","str","trimStart","match","exec","columnName","trim","message","requiredKeyMatch","has","set","get","push"],"sources":["../../../../src/components/DataGrid/utils/extractColumnValidationMessages.ts"],"sourcesContent":["/**\n * Extracts column name and validation message from validation message strings.\n *\n * Example:\n * extractColumnValidationMessages([\"#/platform: null is not a valid enum value\"])\n * -> Map { \"platform\" => [\"null is not a valid enum value\"] }\n *\n * extractColumnValidationMessages([\"#/requiredNumberArrayColumn/0: some error\"])\n * -> Map { \"requiredNumberArrayColumn\" => [\"some error\"] }\n *\n * extractColumnValidationMessages([\"#: row-level error\"])\n * -> Map { \"_row\" => [\"row-level error\"] }\n *\n * extractColumnValidationMessages([\"#: required key [missingColumn] not found\"])\n * -> Map { \"missingColumn\" => [\"required key [missingColumn] not found\"] }\n */\nexport function extractColumnValidationMessages(\n messages: string[],\n): Map<string, string[]> {\n const columnMap = new Map<string, string[]>()\n // Validation message format: \"#/columnName: message\"\n // or for array items: \"#/columnName/0: message\"\n // or for object (row) level: \"#: message\"\n const regex = /^#(?:\\/([^/:]+)(?:\\/\\d+)?)?:\\s*(.*)$/\n\n for (const raw of messages) {\n if (typeof raw !== 'string') continue\n const str = raw.trimStart()\n const match = regex.exec(str)\n if (match) {\n let columnName = match[1]?.trim() ?? '_row'\n const message = match[2].trim()\n if (columnName === '_row') {\n const requiredKeyMatch = /^required key \\[([^\\]]+)\\] not found$/i.exec(\n message,\n )\n if (requiredKeyMatch) {\n columnName = requiredKeyMatch[1]\n }\n }\n\n if (!columnMap.has(columnName)) {\n columnMap.set(columnName, [])\n }\n columnMap.get(columnName)!.push(message)\n }\n }\n\n return columnMap\n}\n"],"mappings":";AAgBA,SAAgBA,EACdC,GACuB;CACvB,IAAME,oBAAY,IAAID,IAAsB,GAItCE,IAAQ;CAEd,KAAK,IAAMC,KAAOJ,GAAU;EAC1B,IAAI,OAAOI,KAAQ,UAAU;EAC7B,IAAMC,IAAMD,EAAIE,UAAU,GACpBC,IAAQJ,EAAMK,KAAKH,CAAG;EAC5B,IAAIE,GAAO;GACT,IAAIE,IAAaF,EAAM,IAAIG,KAAK,KAAK,QAC/BC,IAAUJ,EAAM,GAAGG,KAAK;GAC9B,IAAID,MAAe,QAAQ;IACzB,IAAMG,IAAmB,yCAAyCJ,KAChEG,CACF;IACA,AAAIC,MACFH,IAAaG,EAAiB;GAElC;GAKAV,AAHKA,EAAUW,IAAIJ,CAAU,KAC3BP,EAAUY,IAAIL,GAAY,CAAA,CAAE,GAE9BP,EAAUa,IAAIN,CAAU,EAAGO,KAAKL,CAAO;EACzC;CACF;CAEA,OAAOT;AACT"}
|
|
@@ -6,9 +6,9 @@ import i from "./JsonRxRequestComplete.js";
|
|
|
6
6
|
//#region src/components/DataGrid/utils/json-rx/JsonRx.ts
|
|
7
7
|
var a = class {
|
|
8
8
|
static fromJson(a) {
|
|
9
|
-
if (!Array.isArray(a)) throw
|
|
9
|
+
if (!Array.isArray(a)) throw TypeError("Invalid JSON-Rx message: not an array");
|
|
10
10
|
let o = a[0];
|
|
11
|
-
if (typeof o != "number") throw
|
|
11
|
+
if (typeof o != "number") throw TypeError(`Invalid JSON-Rx message: type code is not a number, received ${o}`);
|
|
12
12
|
switch (o) {
|
|
13
13
|
case 0: {
|
|
14
14
|
let [e, n, r, i] = a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonRx.js","names":["JsonRxMessage","JsonRxNotification","NOTIFICATION_TYPE_CODE","JsonRxRequest","REQUEST_TYPE_CODE","JsonRxResponse","RESPONSE_TYPE_CODE","JsonRxResponseComplete","RESPONSE_COMPLETE_TYPE_CODE","JsonRxRequestComplete","REQUEST_COMPLETE_TYPE_CODE","JsonRx","fromJson","json","Array","isArray","
|
|
1
|
+
{"version":3,"file":"JsonRx.js","names":["JsonRxMessage","JsonRxNotification","NOTIFICATION_TYPE_CODE","JsonRxRequest","REQUEST_TYPE_CODE","JsonRxResponse","RESPONSE_TYPE_CODE","JsonRxResponseComplete","RESPONSE_COMPLETE_TYPE_CODE","JsonRxRequestComplete","REQUEST_COMPLETE_TYPE_CODE","JsonRx","fromJson","json","Array","isArray","TypeError","typeCode","_","requestId","methodName","payload","message","Error"],"sources":["../../../../../src/components/DataGrid/utils/json-rx/JsonRx.ts"],"sourcesContent":["import JsonRxMessage from '@/components/DataGrid/utils/json-rx/JsonRxMessage'\nimport JsonRxNotification, {\n NOTIFICATION_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxNotification'\nimport JsonRxRequest, {\n REQUEST_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxRequest'\nimport JsonRxResponse, {\n RESPONSE_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxResponse'\nimport JsonRxResponseComplete, {\n RESPONSE_COMPLETE_TYPE_CODE,\n} from '@/components/DataGrid/utils/json-rx/JsonRxResponseComplete'\nimport JsonRxRequestComplete, {\n REQUEST_COMPLETE_TYPE_CODE,\n} from './JsonRxRequestComplete'\n\n/**\n * Static utility methods intended to implement the JSON-Rx communication protocol\n * Spec: https://jsonjoy.com/specs/json-rx\n */\nexport default class JsonRx {\n /**\n * Converts a JSON-encoded JSON-Rx message (which is always an array) into the appropriate JsonRxMessage subclass\n *\n * For more information, see the JSON-Rx specification: https://jsonjoy.com/specs/json-rx\n * @param json\n */\n static fromJson(json: unknown): JsonRxMessage {\n if (!Array.isArray(json)) {\n throw new TypeError('Invalid JSON-Rx message: not an array')\n }\n const typeCode = json[0]\n\n if (typeof typeCode !== 'number') {\n throw new TypeError(\n `Invalid JSON-Rx message: type code is not a number, received ${typeCode}`,\n )\n }\n\n switch (typeCode) {\n case REQUEST_TYPE_CODE: {\n // Request\n const [_, requestId, methodName, payload] = json\n return new JsonRxRequest(requestId, methodName, payload)\n }\n case REQUEST_COMPLETE_TYPE_CODE: {\n const [_, requestId, methodName, payload] = json\n const message = new JsonRxRequestComplete(\n requestId,\n methodName,\n payload,\n )\n return message\n }\n case RESPONSE_TYPE_CODE: {\n // Response\n const [_, requestId, payload] = json\n return new JsonRxResponse(requestId, payload)\n }\n case RESPONSE_COMPLETE_TYPE_CODE: {\n // ResponseComplete\n const [_, requestId, payload] = json\n return new JsonRxResponseComplete(requestId, payload)\n }\n case NOTIFICATION_TYPE_CODE: {\n // Notification\n const [_, methodName, payload] = json\n return new JsonRxNotification(methodName, payload)\n }\n default:\n throw new Error(\n `Invalid JSON-Rx message: unknown type code ${typeCode}`,\n )\n }\n }\n}\n"],"mappings":";;;;;;AAqBA,IAAqBW,IAArB,MAA4B;CAO1B,OAAOC,SAASC,GAA8B;EAC5C,IAAI,CAACC,MAAMC,QAAQF,CAAI,GACrB,MAAUG,UAAU,uCAAuC;EAE7D,IAAMC,IAAWJ,EAAK;EAEtB,IAAI,OAAOI,KAAa,UACtB,MAAUD,UACR,gEAAgEC,GAClE;EAGF,QAAQA,GAAR;GACE,KAAA,GAAwB;IAEtB,IAAM,CAACC,GAAGC,GAAWC,GAAYC,KAAWR;IAC5C,OAAO,IAAIV,EAAcgB,GAAWC,GAAYC,CAAO;GACzD;GACA,KAAA,GAAiC;IAC/B,IAAM,CAACH,GAAGC,GAAWC,GAAYC,KAAWR;IAM5C,OAAOS,IALab,EAClBU,GACAC,GACAC,CAEKC;GACT;GACA,KAAA,GAAyB;IAEvB,IAAM,CAACJ,GAAGC,GAAWE,KAAWR;IAChC,OAAO,IAAIR,EAAec,GAAWE,CAAO;GAC9C;GACA,KAAA,GAAkC;IAEhC,IAAM,CAACH,GAAGC,GAAWE,KAAWR;IAChC,OAAO,IAAIN,EAAuBY,GAAWE,CAAO;GACtD;GACA,KAAA,GAA6B;IAE3B,IAAM,CAACH,GAAGE,GAAYC,KAAWR;IACjC,OAAO,IAAIZ,EAAmBmB,GAAYC,CAAO;GACnD;GACA,SACE,MAAUE,MACR,8CAA8CN,GAChD;EACJ;CACF;AACF"}
|
|
@@ -104,7 +104,7 @@ function A(E) {
|
|
|
104
104
|
let n = await fetch(e);
|
|
105
105
|
if (!n.ok) throw Error(`HTTP error! status: ${n.status}`);
|
|
106
106
|
let r = await n.blob(), i = URL.createObjectURL(r), a = document.createElement("a");
|
|
107
|
-
return a.href = i, a.download = t, a.style.display = "none", document.body.appendChild(a), a.click(),
|
|
107
|
+
return a.href = i, a.download = t, a.style.display = "none", document.body.appendChild(a), a.click(), a.remove(), setTimeout(() => URL.revokeObjectURL(i), 1e3), !0;
|
|
108
108
|
} catch (n) {
|
|
109
109
|
console.error(`Failed to download file ${t}:`, n);
|
|
110
110
|
try {
|