synapse-react-client 4.0.38 → 4.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.d.ts +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/aridhia-queries/useAridhiaQuery.d.ts +6 -2
- package/dist/aridhia-queries/useAridhiaQuery.d.ts.map +1 -1
- package/dist/aridhia-queries/useAridhiaQuery.js +3 -0
- package/dist/aridhia-queries/useAridhiaQuery.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts +2 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +57 -31
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts +12 -0
- package/dist/components/Aridhia/AridhiaDarStatusPopover.d.ts.map +1 -0
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js +56 -0
- package/dist/components/Aridhia/AridhiaDarStatusPopover.js.map +1 -0
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.d.ts.map +1 -1
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js +38 -30
- package/dist/components/Aridhia/DarWizard/AridhiaDarWizard.js.map +1 -1
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js +15 -14
- package/dist/components/Aridhia/DarWizard/DarSubmittedPanel.js.map +1 -1
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts +11 -0
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.d.ts.map +1 -0
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.js +37 -0
- package/dist/components/Aridhia/RdcaDapEligibilityDialog.js.map +1 -0
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js +2 -2
- package/dist/components/Aridhia/aridhiaAccessStatusUtils.js.map +1 -1
- package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts +10 -0
- package/dist/components/Aridhia/aridhiaFairPortalUrls.d.ts.map +1 -0
- package/dist/components/Aridhia/aridhiaFairPortalUrls.js +11 -0
- package/dist/components/Aridhia/aridhiaFairPortalUrls.js.map +1 -0
- package/dist/components/Aridhia/rdcaDapConstants.d.ts +3 -0
- package/dist/components/Aridhia/rdcaDapConstants.d.ts.map +1 -0
- package/dist/components/Aridhia/rdcaDapConstants.js +6 -0
- package/dist/components/Aridhia/rdcaDapConstants.js.map +1 -0
- package/dist/components/Authentication/Constants.d.ts +4 -0
- package/dist/components/Authentication/Constants.d.ts.map +1 -1
- package/dist/components/Authentication/Constants.js +5 -2
- package/dist/components/Authentication/Constants.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +20 -18
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +1 -1
- package/dist/components/DataExplorer/DataExplorer.d.ts.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.js +50 -50
- package/dist/components/DataExplorer/DataExplorer.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
- package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.module.scss +29 -6
- package/dist/components/DataGrid/columns/DateTimeColumn.d.ts +16 -7
- package/dist/components/DataGrid/columns/DateTimeColumn.d.ts.map +1 -1
- package/dist/components/DataGrid/columns/DateTimeColumn.js +79 -57
- package/dist/components/DataGrid/columns/DateTimeColumn.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +11 -8
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +10 -0
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker/DatePicker.js +18 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/EntityCitation/EntityCitation.d.ts.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js +8 -5
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
- package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
- package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/utils.js +27 -0
- package/dist/components/FormTemplateEditor/utils.js.map +1 -0
- package/dist/components/HasAccess/AccessIcon.d.ts +3 -1
- package/dist/components/HasAccess/AccessIcon.d.ts.map +1 -1
- package/dist/components/HasAccess/AccessIcon.js +11 -1
- package/dist/components/HasAccess/AccessIcon.js.map +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts +2 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.d.ts.map +1 -1
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js +81 -53
- package/dist/components/PortalHomePageHeader/PortalHomePageHeader.js.map +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.d.ts.map +1 -1
- package/dist/components/ProjectInfo/ProjectInfo.js +3 -2
- package/dist/components/ProjectInfo/ProjectInfo.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.css +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts +8 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.js +260 -0
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.module.js +16 -0
- package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -0
- package/dist/components/QueryBuilder/FilterConditionRow.module.scss +101 -0
- package/dist/components/QueryBuilder/FilterGroupNode.css +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts +11 -0
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.js +134 -0
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.module.js +16 -0
- package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -0
- package/dist/components/QueryBuilder/FilterGroupNode.module.scss +92 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
- package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.css +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts +21 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.js +143 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js +17 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.module.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.module.scss +79 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts +39 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js +19 -0
- package/dist/components/QueryBuilder/QueryBuilderInternalContext.js.map +1 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.d.ts +14 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.d.ts.map +1 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.js +89 -0
- package/dist/components/QueryBuilder/qbTreeToReadable.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
- package/dist/components/QueryBuilder/queryBuilderId.d.ts +2 -0
- package/dist/components/QueryBuilder/queryBuilderId.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderId.js +9 -0
- package/dist/components/QueryBuilder/queryBuilderId.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts +24 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.js +91 -0
- package/dist/components/QueryBuilder/queryBuilderMetadata.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +71 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.js +203 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts +3 -2
- package/dist/components/QueryBuilder/queryBuilderTranslation.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderTranslation.js +82 -84
- package/dist/components/QueryBuilder/queryBuilderTranslation.js.map +1 -1
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts +11 -0
- package/dist/components/QueryBuilder/useQBCombinedSql.d.ts.map +1 -0
- package/dist/components/QueryBuilder/useQBCombinedSql.js +29 -0
- package/dist/components/QueryBuilder/useQBCombinedSql.js.map +1 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts +18 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.d.ts.map +1 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js +27 -0
- package/dist/components/QueryBuilder/useQBFacetSourceMetadata.js.map +1 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +14 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +183 -119
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.d.ts +1 -0
- package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +11 -11
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts +7 -1
- package/dist/components/SynapseChat/SynapseChat.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapseChat.js +76 -71
- package/dist/components/SynapseChat/SynapseChat.js.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts +3 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.d.ts.map +1 -1
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js +24 -13
- package/dist/components/SynapseChat/SynapsePortalChatDialog.js.map +1 -1
- package/dist/components/SynapseChat/portalChatSessionStorage.d.ts +23 -0
- package/dist/components/SynapseChat/portalChatSessionStorage.d.ts.map +1 -0
- package/dist/components/SynapseChat/portalChatSessionStorage.js +29 -0
- package/dist/components/SynapseChat/portalChatSessionStorage.js.map +1 -0
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts +6 -0
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +92 -79
- package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts +3 -4
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.d.ts.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js +2 -2
- package/dist/components/dataaccess/UserAccessRequestHistory/InFlightEDucSignaturesTable.js.map +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js +1 -1
- package/dist/components/dataaccess/UserAccessRequestHistory/UserAccessRequestHistoryPlace.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js +9 -2
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +36 -37
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/menu/ComplexMenu.js +1 -1
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/menu/DropdownMenu.js +4 -0
- package/dist/components/menu/DropdownMenu.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
- package/dist/components/styled/LeftRightPanel.js +19 -2
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts +10 -0
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.d.ts.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js +20 -0
- package/dist/features/entity/metadata-task/hooks/useMarkCurationTaskInProgress.js.map +1 -0
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js +29 -20
- package/dist/features/entity/metadata-task/hooks/useOpenCuratorButton.js.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +16 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.js +63 -0
- package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts +7 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.d.ts.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js +47 -0
- package/dist/mocks/accessRequirement/mockJsonSchemaAccessRequirements.js.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +27 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.js +83 -0
- package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -0
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts +18 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/aridhiaHandlers.js +39 -33
- package/dist/mocks/msw/handlers/aridhiaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts +5 -0
- package/dist/mocks/msw/handlers/formTemplateHandlers.d.ts.map +1 -0
- package/dist/mocks/msw/handlers/formTemplateHandlers.js +65 -0
- package/dist/mocks/msw/handlers/formTemplateHandlers.js.map +1 -0
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +49 -47
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/abstracts/_cssVariables.scss +7 -0
- package/dist/style/components/_query-wrapper-plot-nav.scss +9 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +5 -1
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +14 -2
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/chat/useChat.d.ts.map +1 -1
- package/dist/synapse-queries/chat/useChat.js +2 -4
- package/dist/synapse-queries/chat/useChat.js.map +1 -1
- package/dist/synapse-queries/dataaccess/index.d.ts +1 -0
- package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +4 -3
- package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts +41 -0
- package/dist/synapse-queries/dataaccess/useFormTemplate.d.ts.map +1 -0
- package/dist/synapse-queries/dataaccess/useFormTemplate.js +63 -0
- package/dist/synapse-queries/dataaccess/useFormTemplate.js.map +1 -0
- package/dist/synapse-queries/index.js +186 -180
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
- package/dist/testutils/ReactQueryMockUtils.js.map +1 -1
- package/dist/testutils/vitest.setup.js +18 -9
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js +4 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.d.ts +3 -0
- package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +7 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
- package/dist/utils/jsonschema/getType.d.ts.map +1 -1
- package/dist/utils/jsonschema/getType.js +4 -1
- package/dist/utils/jsonschema/getType.js.map +1 -1
- package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
- package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
- package/dist/utils/jsonschema/submissionContext.js +186 -0
- package/dist/utils/jsonschema/submissionContext.js.map +1 -0
- package/package.json +10 -8
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeColumn.js","names":["DateTimePicker","Box","SxProps","Theme","Tooltip","dayjs","Dayjs","JSONSchema7Type","isNil","CellComponent","CellProps","Column","castCellValueToString","UNPARSEABLE_VALUE_SX","display","alignItems","width","height","px","overflow","whiteSpace","textOverflow","DateTimeCellProps","colType","DateTimeCellValue","kind","date","text","isDateLike","value","Date","isDayjs","interpretDateTimeCellValue","rowData","trim","unparseable","const","expectsEpochMillis","epochMillis","Number","isFinite","ConfigType","isValid","DateTimeCell","t0","$","_c","setRowData","disabled","active","t1","cellValue","t2","t3","newValue","valueOf","toISOString","t4","undefined","t5","Symbol","for","backgroundColor","t6","pointerEvents","t7","DateTimeColumnProps","dateTimeColumn","Partial","component","props","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"sourcesContent":["import DateTimePicker from '@/components/DateTimePicker/DateTimePicker'\nimport { Box, SxProps, Theme, Tooltip } from '@mui/material'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { JSONSchema7Type } from 'json-schema'\nimport isNil from 'lodash-es/isNil'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { castCellValueToString } from './AutocompleteColumn'\n\nconst UNPARSEABLE_VALUE_SX: SxProps<Theme> = {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n px: '14px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n}\n\nexport type DateTimeCellProps = CellProps & {\n colType?: JSONSchema7Type\n}\n\nexport type DateTimeCellValue =\n | { kind: 'empty' }\n | { kind: 'date'; date: Dayjs }\n | { kind: 'unparseable'; text: string }\n\n// dayjs coerces values it has no business accepting — dayjs(true) yields epoch\n// 1ms — so restrict parsing to types that can legitimately carry a date.\nfunction isDateLike(value: unknown): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n value instanceof Date ||\n dayjs.isDayjs(value)\n )\n}\n\n/**\n * Classify a stored cell value as empty, a usable date, or something the picker\n * cannot represent.\n *\n * Numeric schema types store epoch milliseconds, but an imported value can\n * arrive as a numeric string, which dayjs would otherwise read as a year\n * (\"1705314600000\" parses to 1707). Coercion is attempted only when the string\n * is fully numeric, so an ISO string in a numeric column still parses as a date.\n */\nexport function interpretDateTimeCellValue(\n rowData: unknown,\n colType?: JSONSchema7Type,\n): DateTimeCellValue {\n if (\n isNil(rowData) ||\n (typeof rowData === 'string' && rowData.trim() === '')\n ) {\n return { kind: 'empty' }\n }\n\n const unparseable = {\n kind: 'unparseable',\n text: castCellValueToString(rowData),\n } as const\n\n if (!isDateLike(rowData)) {\n return unparseable\n }\n\n const expectsEpochMillis = colType === 'number' || colType === 'integer'\n const epochMillis =\n expectsEpochMillis &&\n typeof rowData === 'string' &&\n Number.isFinite(Number(rowData))\n ? Number(rowData)\n : null\n\n const date = dayjs((epochMillis ?? rowData) as dayjs.ConfigType)\n return date.isValid() ? { kind: 'date', date } : unparseable\n}\n\nexport function DateTimeCell({\n rowData,\n setRowData,\n disabled,\n colType,\n active,\n}: DateTimeCellProps) {\n const cellValue = interpretDateTimeCellValue(rowData, colType)\n\n // The picker renders a value it can't parse as an empty field, which hides\n // imported data that fails schema validation. Show the raw value instead until\n // the user activates the cell, at which point the picker is the only way to\n // replace it. The value is left untouched unless the user commits a change.\n if (cellValue.kind === 'unparseable' && !active) {\n return (\n <Tooltip title={cellValue.text} placement=\"top-start\" arrow>\n <Box sx={UNPARSEABLE_VALUE_SX}>{cellValue.text}</Box>\n </Tooltip>\n )\n }\n\n return (\n <DateTimePicker\n disabled={disabled}\n value={cellValue.kind === 'date' ? cellValue.date : null}\n onChange={(newValue: string | Dayjs | null) => {\n if (newValue == null) {\n setRowData(null)\n } else if (colType === 'number' || colType === 'integer') {\n // Assume unix millisecond timestamp\n setRowData(dayjs(newValue).valueOf())\n } else {\n // colType is 'string' or unspecified, use ISO string\n setRowData(dayjs(newValue).toISOString())\n }\n }}\n sx={{\n // When disabled, allow selecting the entire cell\n pointerEvents: disabled ? 'none' : undefined,\n width: '100%',\n height: '100%',\n '& .MuiInputBase-root': {\n height: '100%',\n backgroundColor: 'inherit',\n },\n }}\n />\n )\n}\n\nexport type DateTimeColumnProps = {\n colType?: JSONSchema7Type\n}\n\nexport function dateTimeColumn({\n colType,\n}: DateTimeColumnProps): Partial<Column> {\n return {\n component: ((props: DateTimeCellProps) => (\n <DateTimeCell {...props} colType={colType} />\n )) as CellComponent,\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimeColumn.js","names":["DatePicker","DateTimePicker","Box","SxProps","Theme","Tooltip","dayjs","Dayjs","utc","JSONSchema7Type","isNil","CellComponent","CellProps","Column","castCellValueToString","extend","UNPARSEABLE_VALUE_SX","display","alignItems","width","height","px","overflow","whiteSpace","textOverflow","PICKER_SX","backgroundColor","FULL_DATE_FORMAT_NAME","FULL_DATE_PATTERN","LEADING_FULL_DATE","EPOCH_MILLIS_STRING","DateTimeCellProps","colType","format","DateTimeCellValue","kind","date","text","isDateLike","value","Date","isDayjs","parseEpochMillisString","rowData","trimmed","trim","test","Number","toCalendarDate","epochMillis","parsed","denotesInstant","slice","length","interpretDateTimeCellValue","unparseable","const","ConfigType","isValid","serializeDateCellValue","expectsEpochMillis","fullDate","valueOf","toISOString","DateTimeCell","t0","$","_c","setRowData","disabled","active","t1","cellValue","t2","t3","undefined","pointerEvents","pickerSx","t4","t5","newValue","t6","onChange","sx","pickerProps","t7","DateTimeColumnProps","dateTimeColumn","Partial","component","props","copyValue","pasteValue","disableKeys","keepFocus"],"sources":["../../../../src/components/DataGrid/columns/DateTimeColumn.tsx"],"sourcesContent":["import DatePicker from '@/components/DatePicker/DatePicker'\nimport DateTimePicker from '@/components/DateTimePicker/DateTimePicker'\nimport { Box, SxProps, Theme, Tooltip } from '@mui/material'\nimport dayjs, { Dayjs } from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport { JSONSchema7Type } from 'json-schema'\nimport isNil from 'lodash-es/isNil'\nimport {\n CellComponent,\n CellProps,\n Column,\n} from '@sage-bionetworks/react-datasheet-grid'\nimport { castCellValueToString } from './AutocompleteColumn'\n\ndayjs.extend(utc)\n\nconst UNPARSEABLE_VALUE_SX: SxProps<Theme> = {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n px: '14px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n}\n\nconst PICKER_SX: SxProps<Theme> = {\n width: '100%',\n height: '100%',\n '& .MuiInputBase-root': {\n height: '100%',\n backgroundColor: 'inherit',\n },\n}\n\n/** The JSON Schema `date` format: an RFC 3339 full-date, e.g. 2026-12-25. */\nexport const FULL_DATE_FORMAT_NAME = 'date'\n\nconst FULL_DATE_PATTERN = 'YYYY-MM-DD'\nconst LEADING_FULL_DATE = /^\\d{4}-\\d{2}-\\d{2}/\n\n// Epoch millis reaches 11 digits in 1973 — longer than any date notation dayjs\n// accepts, whose longest form is an 8-digit YYYYMMDD — so a numeric string this\n// long is a timestamp rather than a date to parse. dayjs would otherwise read\n// \"1705314600000\" as the year 1707.\nconst EPOCH_MILLIS_STRING = /^-?\\d{11,}$/\n\nexport type DateTimeCellProps = CellProps & {\n colType?: JSONSchema7Type\n /**\n * The column's JSON Schema `format`. `date` collects a calendar date only;\n * anything else collects a date and time of day.\n */\n format?: string\n}\n\nexport type DateTimeCellValue =\n | { kind: 'empty' }\n | { kind: 'date'; date: Dayjs }\n | { kind: 'unparseable'; text: string }\n\n// dayjs coerces values it has no business accepting — dayjs(true) yields epoch\n// 1ms — so restrict parsing to types that can legitimately carry a date.\nfunction isDateLike(value: unknown): boolean {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n value instanceof Date ||\n dayjs.isDayjs(value)\n )\n}\n\n/**\n * Read a value that carries epoch milliseconds as a string, or null if it does\n * not. A column of any schema type can hold one: server-side CSV import writes\n * cells without client-side parsing, and a value that has round-tripped through\n * a store that represents dates as timestamps comes back this way.\n */\nfunction parseEpochMillisString(rowData: unknown): number | null {\n if (typeof rowData !== 'string') {\n return null\n }\n const trimmed = rowData.trim()\n return EPOCH_MILLIS_STRING.test(trimmed) ? Number(trimmed) : null\n}\n\n/**\n * Anchor a value to local midnight of the calendar date it denotes.\n *\n * The picker renders in the browser's timezone, so a value carrying an instant\n * has to be reduced to a day first or the rendered date can land on the\n * neighboring one. Epoch millis are read in UTC, matching what\n * serializeDateCellValue writes. An ISO-style string already names its day, so\n * that day is read off the leading YYYY-MM-DD rather than from the instant\n * dayjs derived from it. Any other string was parsed in local time, so its\n * local day is already the intended one.\n */\nfunction toCalendarDate(\n rowData: unknown,\n epochMillis: number | null,\n parsed: Dayjs,\n): Dayjs {\n const denotesInstant =\n epochMillis !== null ||\n typeof rowData === 'number' ||\n rowData instanceof Date\n if (denotesInstant) {\n return dayjs(parsed.utc().format(FULL_DATE_PATTERN))\n }\n if (typeof rowData === 'string' && LEADING_FULL_DATE.test(rowData.trim())) {\n return dayjs(rowData.trim().slice(0, FULL_DATE_PATTERN.length))\n }\n return dayjs(parsed.format(FULL_DATE_PATTERN))\n}\n\n/**\n * Classify a stored cell value as empty, a usable date, or something the picker\n * cannot represent.\n *\n * Epoch milliseconds stored as a string are read as a timestamp rather than\n * handed to dayjs, which would take them for a year — see EPOCH_MILLIS_STRING.\n *\n * A `date` format column carries no time of day, so its value is reduced to the\n * calendar date it names — see toCalendarDate.\n */\nexport function interpretDateTimeCellValue(\n rowData: unknown,\n format?: string,\n): DateTimeCellValue {\n if (\n isNil(rowData) ||\n (typeof rowData === 'string' && rowData.trim() === '')\n ) {\n return { kind: 'empty' }\n }\n\n const unparseable = {\n kind: 'unparseable',\n text: castCellValueToString(rowData),\n } as const\n\n if (!isDateLike(rowData)) {\n return unparseable\n }\n\n const epochMillis = parseEpochMillisString(rowData)\n const parsed = dayjs((epochMillis ?? rowData) as dayjs.ConfigType)\n if (!parsed.isValid()) {\n return unparseable\n }\n return {\n kind: 'date',\n date:\n format === FULL_DATE_FORMAT_NAME\n ? toCalendarDate(rowData, epochMillis, parsed)\n : parsed,\n }\n}\n\n/**\n * Render a committed picker value in the representation the column's schema\n * declares.\n *\n * A `date` format column stores an RFC 3339 full-date, or — where the schema\n * type cannot hold a string — the equivalent UTC-midnight epoch.\n */\nfunction serializeDateCellValue(\n value: Dayjs,\n colType?: JSONSchema7Type,\n format?: string,\n): string | number {\n const expectsEpochMillis = colType === 'number' || colType === 'integer'\n if (format === FULL_DATE_FORMAT_NAME) {\n const fullDate = value.format(FULL_DATE_PATTERN)\n return expectsEpochMillis ? dayjs.utc(fullDate).valueOf() : fullDate\n }\n return expectsEpochMillis ? value.valueOf() : value.toISOString()\n}\n\nexport function DateTimeCell({\n rowData,\n setRowData,\n disabled,\n colType,\n format,\n active,\n}: DateTimeCellProps) {\n const cellValue = interpretDateTimeCellValue(rowData, format)\n\n // The picker renders a value it can't parse as an empty field, which hides\n // imported data that fails schema validation. Show the raw value instead until\n // the user activates the cell, at which point the picker is the only way to\n // replace it. The value is left untouched unless the user commits a change.\n if (cellValue.kind === 'unparseable' && !active) {\n return (\n <Tooltip title={cellValue.text} placement=\"top-start\" arrow>\n <Box sx={UNPARSEABLE_VALUE_SX}>{cellValue.text}</Box>\n </Tooltip>\n )\n }\n\n const pickerSx: SxProps<Theme> = {\n ...PICKER_SX,\n // When disabled, allow selecting the entire cell\n pointerEvents: disabled ? 'none' : undefined,\n }\n\n const pickerProps = {\n disabled,\n value: cellValue.kind === 'date' ? cellValue.date : null,\n onChange: (newValue: string | Dayjs | null) => {\n setRowData(\n newValue == null\n ? null\n : serializeDateCellValue(dayjs(newValue), colType, format),\n )\n },\n sx: pickerSx,\n }\n\n return format === FULL_DATE_FORMAT_NAME ? (\n <DatePicker {...pickerProps} />\n ) : (\n <DateTimePicker {...pickerProps} />\n )\n}\n\nexport type DateTimeColumnProps = {\n colType?: JSONSchema7Type\n format?: string\n}\n\nexport function dateTimeColumn({\n colType,\n format,\n}: DateTimeColumnProps): Partial<Column> {\n return {\n component: ((props: DateTimeCellProps) => (\n <DateTimeCell {...props} colType={colType} format={format} />\n )) as CellComponent,\n copyValue: ({ rowData }) => rowData,\n pasteValue: ({ value }) => value,\n disableKeys: true,\n keepFocus: true,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReorderColumnsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReorderColumnsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,iGAAiG;IACjG,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA8J5E"}
|
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { moveItem as e } from "../../../utils/functions/ArrayUtils.js";
|
|
2
|
+
import { ConfirmationDialog as t } from "../../ConfirmationDialog/ConfirmationDialog.js";
|
|
2
3
|
import "../../ConfirmationDialog/index.js";
|
|
3
|
-
import { collectTopLevelProperties as
|
|
4
|
-
import { computeDefaultColumnOrder as
|
|
5
|
-
import { useState as
|
|
6
|
-
import { Box as
|
|
4
|
+
import { collectTopLevelProperties as n } from "../../../utils/jsonschema/collectTopLevelProperties.js";
|
|
5
|
+
import { computeDefaultColumnOrder as r } from "../utils/computeDefaultColumnOrder.js";
|
|
6
|
+
import { useState as i } from "react";
|
|
7
|
+
import { Box as a, Button as ee, IconButton as o, List as te, ListItem as s, ListItemText as c, Stack as l, Typography as ne } from "@mui/material";
|
|
7
8
|
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
8
|
-
import
|
|
9
|
-
import { DeleteOutline as
|
|
9
|
+
import re from "lodash-es/isEqual";
|
|
10
|
+
import { DeleteOutline as f, North as p, RestartAlt as m, RestoreFromTrash as h, South as ie } from "@mui/icons-material";
|
|
10
11
|
import { c as ae } from "react/compiler-runtime";
|
|
11
12
|
//#region src/components/DataGrid/components/ReorderColumnsDialog.tsx
|
|
12
|
-
function h(e, t, n) {
|
|
13
|
-
let r = [...e], [i] = r.splice(t, 1);
|
|
14
|
-
return r.splice(n, 0, i), r;
|
|
15
|
-
}
|
|
16
13
|
function g(g) {
|
|
17
14
|
let _ = ae(57), { open: v, columnNames: y, columnOrder: b, jsonSchema: x, upsertKey: S, canRemoveColumns: C, onSave: w, onCancel: T } = g, E = C === void 0 ? !1 : C, D, O, k;
|
|
18
|
-
_[0] !== E || _[1] !== y || _[2] !== b ? (D = E ? y.map(oe).filter((e) => !b.includes(e)) : [], O =
|
|
19
|
-
let [A, j] = O(k), [M, N] =
|
|
20
|
-
_[6] !== y || _[7] !== x || _[8] !== S ? (P =
|
|
15
|
+
_[0] !== E || _[1] !== y || _[2] !== b ? (D = E ? y.map(oe).filter((e) => !b.includes(e)) : [], O = i, k = [...b, ...D], _[0] = E, _[1] = y, _[2] = b, _[3] = D, _[4] = O, _[5] = k) : (D = _[3], O = _[4], k = _[5]);
|
|
16
|
+
let [A, j] = O(k), [M, N] = i(D), P;
|
|
17
|
+
_[6] !== y || _[7] !== x || _[8] !== S ? (P = r(y, x, S), _[6] = y, _[7] = x, _[8] = S, _[9] = P) : P = _[9];
|
|
21
18
|
let F = P, I = A.length - M.length, L;
|
|
22
|
-
_[10] !== F || _[11] !== M.length || _[12] !== A ? (L =
|
|
19
|
+
_[10] !== F || _[11] !== M.length || _[12] !== A ? (L = re(A, F) && M.length === 0, _[10] = F, _[11] = M.length, _[12] = A, _[13] = L) : L = _[13];
|
|
23
20
|
let R = L, z;
|
|
24
|
-
_[14] === x ? z = _[15] : (z =
|
|
21
|
+
_[14] === x ? z = _[15] : (z = n(x), _[14] = x, _[15] = z);
|
|
25
22
|
let B = z, V;
|
|
26
23
|
_[16] === B ? V = _[17] : (V = (e) => Object.hasOwn(B, e), _[16] = B, _[17] = V);
|
|
27
24
|
let H = V, U;
|
|
28
|
-
_[18] === E ? U = _[19] : (U = E && /* @__PURE__ */ u(
|
|
25
|
+
_[18] === E ? U = _[19] : (U = E && /* @__PURE__ */ u(ne, {
|
|
29
26
|
variant: "body2",
|
|
30
27
|
color: "text.secondary",
|
|
31
28
|
sx: { mb: 1 },
|
|
@@ -38,15 +35,15 @@ function g(g) {
|
|
|
38
35
|
mb: 1
|
|
39
36
|
}, _[20] = W) : W = _[20];
|
|
40
37
|
let G;
|
|
41
|
-
_[21] === Symbol.for("react.memo_cache_sentinel") ? (G = /* @__PURE__ */ u(
|
|
38
|
+
_[21] === Symbol.for("react.memo_cache_sentinel") ? (G = /* @__PURE__ */ u(m, {}), _[21] = G) : G = _[21];
|
|
42
39
|
let K;
|
|
43
40
|
_[22] === F ? K = _[23] : (K = () => {
|
|
44
41
|
j(F), N([]);
|
|
45
42
|
}, _[22] = F, _[23] = K);
|
|
46
43
|
let q;
|
|
47
|
-
_[24] !== R || _[25] !== K ? (q = /* @__PURE__ */ u(
|
|
44
|
+
_[24] !== R || _[25] !== K ? (q = /* @__PURE__ */ u(a, {
|
|
48
45
|
sx: W,
|
|
49
|
-
children: /* @__PURE__ */ u(
|
|
46
|
+
children: /* @__PURE__ */ u(ee, {
|
|
50
47
|
variant: "text",
|
|
51
48
|
startIcon: G,
|
|
52
49
|
onClick: K,
|
|
@@ -56,55 +53,55 @@ function g(g) {
|
|
|
56
53
|
}), _[24] = R, _[25] = K, _[26] = q) : q = _[26];
|
|
57
54
|
let J;
|
|
58
55
|
if (_[27] !== I || _[28] !== E || _[29] !== y || _[30] !== H || _[31] !== M || _[32] !== A) {
|
|
59
|
-
let
|
|
60
|
-
_[34] !== I || _[35] !== E || _[36] !== y || _[37] !== H || _[38] !== M || _[39] !== A.length ? (
|
|
61
|
-
let
|
|
62
|
-
return /* @__PURE__ */ u(
|
|
56
|
+
let t;
|
|
57
|
+
_[34] !== I || _[35] !== E || _[36] !== y || _[37] !== H || _[38] !== M || _[39] !== A.length ? (t = (t, n) => {
|
|
58
|
+
let r = y[t], i = M.includes(t);
|
|
59
|
+
return /* @__PURE__ */ u(s, {
|
|
63
60
|
divider: !0,
|
|
64
|
-
sx:
|
|
61
|
+
sx: i ? { opacity: .5 } : void 0,
|
|
65
62
|
secondaryAction: /* @__PURE__ */ d(l, {
|
|
66
63
|
direction: "row",
|
|
67
64
|
spacing: .5,
|
|
68
65
|
children: [
|
|
69
|
-
E && (
|
|
70
|
-
"aria-label": `Restore ${
|
|
66
|
+
E && (i ? /* @__PURE__ */ u(o, {
|
|
67
|
+
"aria-label": `Restore ${r}`,
|
|
71
68
|
size: "small",
|
|
72
|
-
onClick: () => N((
|
|
73
|
-
children: /* @__PURE__ */ u(
|
|
74
|
-
}) : !H(
|
|
75
|
-
"aria-label": `Remove ${
|
|
69
|
+
onClick: () => N((e) => e.filter((e) => e !== t)),
|
|
70
|
+
children: /* @__PURE__ */ u(h, { fontSize: "small" })
|
|
71
|
+
}) : !H(r) && /* @__PURE__ */ u(o, {
|
|
72
|
+
"aria-label": `Remove ${r}`,
|
|
76
73
|
size: "small",
|
|
77
74
|
disabled: I <= 1,
|
|
78
|
-
onClick: () => N((
|
|
79
|
-
children: /* @__PURE__ */ u(
|
|
75
|
+
onClick: () => N((e) => [...e, t]),
|
|
76
|
+
children: /* @__PURE__ */ u(f, { fontSize: "small" })
|
|
80
77
|
})),
|
|
81
78
|
/* @__PURE__ */ u(o, {
|
|
82
|
-
"aria-label": `Move ${
|
|
79
|
+
"aria-label": `Move ${r} up`,
|
|
83
80
|
size: "small",
|
|
84
|
-
disabled:
|
|
85
|
-
onClick: () => j((
|
|
86
|
-
children: /* @__PURE__ */ u(
|
|
81
|
+
disabled: i || n === 0,
|
|
82
|
+
onClick: () => j((t) => e(t, n, -1)),
|
|
83
|
+
children: /* @__PURE__ */ u(p, { fontSize: "small" })
|
|
87
84
|
}),
|
|
88
85
|
/* @__PURE__ */ u(o, {
|
|
89
|
-
"aria-label": `Move ${
|
|
86
|
+
"aria-label": `Move ${r} down`,
|
|
90
87
|
size: "small",
|
|
91
|
-
disabled:
|
|
92
|
-
onClick: () => j((
|
|
88
|
+
disabled: i || n === A.length - 1,
|
|
89
|
+
onClick: () => j((t) => e(t, n, 1)),
|
|
93
90
|
children: /* @__PURE__ */ u(ie, { fontSize: "small" })
|
|
94
91
|
})
|
|
95
92
|
]
|
|
96
93
|
}),
|
|
97
|
-
children: /* @__PURE__ */ u(c, { primary:
|
|
98
|
-
},
|
|
99
|
-
}, _[34] = I, _[35] = E, _[36] = y, _[37] = H, _[38] = M, _[39] = A.length, _[40] =
|
|
94
|
+
children: /* @__PURE__ */ u(c, { primary: r })
|
|
95
|
+
}, t);
|
|
96
|
+
}, _[34] = I, _[35] = E, _[36] = y, _[37] = H, _[38] = M, _[39] = A.length, _[40] = t) : t = _[40], J = A.map(t), _[27] = I, _[28] = E, _[29] = y, _[30] = H, _[31] = M, _[32] = A, _[33] = J;
|
|
100
97
|
} else J = _[33];
|
|
101
98
|
let Y;
|
|
102
|
-
_[41] === J ? Y = _[42] : (Y = /* @__PURE__ */ u(
|
|
99
|
+
_[41] === J ? Y = _[42] : (Y = /* @__PURE__ */ u(te, {
|
|
103
100
|
disablePadding: !0,
|
|
104
101
|
children: J
|
|
105
102
|
}), _[41] = J, _[42] = Y);
|
|
106
103
|
let X;
|
|
107
|
-
_[43] !== q || _[44] !== Y || _[45] !== U ? (X = /* @__PURE__ */ d(
|
|
104
|
+
_[43] !== q || _[44] !== Y || _[45] !== U ? (X = /* @__PURE__ */ d(a, { children: [
|
|
108
105
|
U,
|
|
109
106
|
q,
|
|
110
107
|
Y
|
|
@@ -114,7 +111,7 @@ function g(g) {
|
|
|
114
111
|
let Q;
|
|
115
112
|
_[48] !== w || _[49] !== M || _[50] !== A ? (Q = () => w(A.filter((e) => !M.includes(e))), _[48] = w, _[49] = M, _[50] = A, _[51] = Q) : Q = _[51];
|
|
116
113
|
let $;
|
|
117
|
-
return _[52] !== T || _[53] !== v || _[54] !== X || _[55] !== Q ? ($ = /* @__PURE__ */ u(
|
|
114
|
+
return _[52] !== T || _[53] !== v || _[54] !== X || _[55] !== Q ? ($ = /* @__PURE__ */ u(t, {
|
|
118
115
|
open: v,
|
|
119
116
|
title: "Reorder Columns",
|
|
120
117
|
content: X,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReorderColumnsDialog.js","names":["ConfirmationDialog","computeDefaultColumnOrder","collectTopLevelProperties","DeleteOutline","North","RestartAlt","RestoreFromTrash","South","Box","Button","IconButton","List","ListItem","ListItemText","Stack","Typography","JSONSchema7","isEqual","useMemo","useState","ReorderColumnsDialogProps","open","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onSave","newColumnOrder","onCancel","moveItem","order","from","to","next","moved","splice","ReorderColumnsDialog","props","$","_c","t0","undefined","previouslyRemovedColumnIndices","t1","t2","map","_temp","filter","index_0","includes","index","workingOrder","setWorkingOrder","removedColumnIndices","setRemovedColumnIndices","t3","defaultOrder","activeColumnCount","length","t4","isAtDefault","t5","schemaProperties","t6","columnName","Object","hasOwn","isSchemaColumn","t7","mb","t8","Symbol","for","display","justifyContent","t9","t10","t11","t12","t13","colIndex","displayIndex","columnName_0","isRemoved","opacity","indices","index_1","indices_0","order_0","t14","t15","children","t16","index_2","t17","_"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { computeDefaultColumnOrder } from '@/components/DataGrid/utils/computeDefaultColumnOrder'\nimport { collectTopLevelProperties } from '@/utils/jsonschema/collectTopLevelProperties'\nimport {\n DeleteOutline,\n North,\n RestartAlt,\n RestoreFromTrash,\n South,\n} from '@mui/icons-material'\nimport {\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemText,\n Stack,\n Typography,\n} from '@mui/material'\nimport { JSONSchema7 } from 'json-schema'\nimport isEqual from 'lodash-es/isEqual'\nimport { useMemo, useState } from 'react'\n\nexport type ReorderColumnsDialogProps = {\n open: boolean\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n /** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */\n canRemoveColumns?: boolean\n onSave: (newColumnOrder: number[]) => void\n onCancel: () => void\n}\n\nfunction moveItem(order: number[], from: number, to: number): number[] {\n const next = [...order]\n const [moved] = next.splice(from, 1)\n next.splice(to, 0, moved)\n return next\n}\n\nexport default function ReorderColumnsDialog(props: ReorderColumnsDialogProps) {\n const {\n open,\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns = false,\n onSave,\n onCancel,\n } = props\n\n // Columns previously removed (and saved) are absent from columnOrder entirely, but their\n // identity index still exists in columnNames -- surface them so they can be restored.\n const previouslyRemovedColumnIndices = canRemoveColumns\n ? columnNames\n .map((_, index) => index)\n .filter(index => !columnOrder.includes(index))\n : []\n\n const [workingOrder, setWorkingOrder] = useState<number[]>([\n ...columnOrder,\n ...previouslyRemovedColumnIndices,\n ])\n const [removedColumnIndices, setRemovedColumnIndices] = useState<number[]>(\n previouslyRemovedColumnIndices,\n )\n\n const defaultOrder = useMemo(\n () => computeDefaultColumnOrder(columnNames, jsonSchema, upsertKey),\n [columnNames, jsonSchema, upsertKey],\n )\n\n const activeColumnCount = workingOrder.length - removedColumnIndices.length\n const isAtDefault =\n isEqual(workingOrder, defaultOrder) && removedColumnIndices.length === 0\n\n // Only columns that aren't part of the JSON schema can be removed -- schema-defined\n // columns are required for validation/upsert and shouldn't be hidden from the grid.\n // Properties inherited through $ref/allOf/etc. count, matching how the backend resolves\n // a RecordSet's schema columns.\n const schemaProperties = useMemo(\n () => collectTopLevelProperties(jsonSchema),\n [jsonSchema],\n )\n const isSchemaColumn = (columnName: string) =>\n Object.hasOwn(schemaProperties, columnName)\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Reorder Columns\"\n content={\n <Box>\n {canRemoveColumns && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Only columns that are not part of the schema can be removed.\n </Typography>\n )}\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1 }}>\n <Button\n variant=\"text\"\n startIcon={<RestartAlt />}\n onClick={() => {\n setWorkingOrder(defaultOrder)\n setRemovedColumnIndices([])\n }}\n disabled={isAtDefault}\n >\n Reset to Default Order\n </Button>\n </Box>\n <List disablePadding>\n {workingOrder.map((colIndex, displayIndex) => {\n const columnName = columnNames[colIndex]\n const isRemoved = removedColumnIndices.includes(colIndex)\n return (\n <ListItem\n key={colIndex}\n divider\n sx={isRemoved ? { opacity: 0.5 } : undefined}\n secondaryAction={\n <Stack direction=\"row\" spacing={0.5}>\n {canRemoveColumns &&\n (isRemoved ? (\n <IconButton\n aria-label={`Restore ${columnName}`}\n size=\"small\"\n onClick={() =>\n setRemovedColumnIndices(indices =>\n indices.filter(index => index !== colIndex),\n )\n }\n >\n <RestoreFromTrash fontSize=\"small\" />\n </IconButton>\n ) : (\n !isSchemaColumn(columnName) && (\n <IconButton\n aria-label={`Remove ${columnName}`}\n size=\"small\"\n disabled={activeColumnCount <= 1}\n onClick={() =>\n setRemovedColumnIndices(indices => [\n ...indices,\n colIndex,\n ])\n }\n >\n <DeleteOutline fontSize=\"small\" />\n </IconButton>\n )\n ))}\n <IconButton\n aria-label={`Move ${columnName} up`}\n size=\"small\"\n disabled={isRemoved || displayIndex === 0}\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, displayIndex - 1),\n )\n }\n >\n <North fontSize=\"small\" />\n </IconButton>\n <IconButton\n aria-label={`Move ${columnName} down`}\n size=\"small\"\n disabled={\n isRemoved || displayIndex === workingOrder.length - 1\n }\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, displayIndex + 1),\n )\n }\n >\n <South fontSize=\"small\" />\n </IconButton>\n </Stack>\n }\n >\n <ListItemText primary={columnName} />\n </ListItem>\n )\n })}\n </List>\n </Box>\n }\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() =>\n onSave(\n workingOrder.filter(index => !removedColumnIndices.includes(index)),\n )\n }\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReorderColumnsDialog.js","names":["ConfirmationDialog","computeDefaultColumnOrder","moveItem","collectTopLevelProperties","DeleteOutline","North","RestartAlt","RestoreFromTrash","South","Box","Button","IconButton","List","ListItem","ListItemText","Stack","Typography","JSONSchema7","isEqual","useMemo","useState","ReorderColumnsDialogProps","open","columnNames","columnOrder","jsonSchema","upsertKey","canRemoveColumns","onSave","newColumnOrder","onCancel","ReorderColumnsDialog","props","$","_c","t0","undefined","previouslyRemovedColumnIndices","t1","t2","map","_temp","filter","index_0","includes","index","workingOrder","setWorkingOrder","removedColumnIndices","setRemovedColumnIndices","t3","defaultOrder","activeColumnCount","length","t4","isAtDefault","t5","schemaProperties","t6","columnName","Object","hasOwn","isSchemaColumn","t7","mb","t8","Symbol","for","display","justifyContent","t9","t10","t11","t12","t13","colIndex","displayIndex","columnName_0","isRemoved","opacity","indices","index_1","indices_0","order","order_0","t14","t15","children","t16","index_2","t17","_"],"sources":["../../../../src/components/DataGrid/components/ReorderColumnsDialog.tsx"],"sourcesContent":["import { ConfirmationDialog } from '@/components/ConfirmationDialog'\nimport { computeDefaultColumnOrder } from '@/components/DataGrid/utils/computeDefaultColumnOrder'\nimport { moveItem } from '@/utils/functions/ArrayUtils'\nimport { collectTopLevelProperties } from '@/utils/jsonschema/collectTopLevelProperties'\nimport {\n DeleteOutline,\n North,\n RestartAlt,\n RestoreFromTrash,\n South,\n} from '@mui/icons-material'\nimport {\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemText,\n Stack,\n Typography,\n} from '@mui/material'\nimport { JSONSchema7 } from 'json-schema'\nimport isEqual from 'lodash-es/isEqual'\nimport { useMemo, useState } from 'react'\n\nexport type ReorderColumnsDialogProps = {\n open: boolean\n columnNames: string[]\n columnOrder: number[]\n jsonSchema: JSONSchema7 | undefined\n upsertKey?: string[]\n /** Recordset-sourced grids only -- views do not support hiding/removing columns from display. */\n canRemoveColumns?: boolean\n onSave: (newColumnOrder: number[]) => void\n onCancel: () => void\n}\n\nexport default function ReorderColumnsDialog(props: ReorderColumnsDialogProps) {\n const {\n open,\n columnNames,\n columnOrder,\n jsonSchema,\n upsertKey,\n canRemoveColumns = false,\n onSave,\n onCancel,\n } = props\n\n // Columns previously removed (and saved) are absent from columnOrder entirely, but their\n // identity index still exists in columnNames -- surface them so they can be restored.\n const previouslyRemovedColumnIndices = canRemoveColumns\n ? columnNames\n .map((_, index) => index)\n .filter(index => !columnOrder.includes(index))\n : []\n\n const [workingOrder, setWorkingOrder] = useState<number[]>([\n ...columnOrder,\n ...previouslyRemovedColumnIndices,\n ])\n const [removedColumnIndices, setRemovedColumnIndices] = useState<number[]>(\n previouslyRemovedColumnIndices,\n )\n\n const defaultOrder = useMemo(\n () => computeDefaultColumnOrder(columnNames, jsonSchema, upsertKey),\n [columnNames, jsonSchema, upsertKey],\n )\n\n const activeColumnCount = workingOrder.length - removedColumnIndices.length\n const isAtDefault =\n isEqual(workingOrder, defaultOrder) && removedColumnIndices.length === 0\n\n // Only columns that aren't part of the JSON schema can be removed -- schema-defined\n // columns are required for validation/upsert and shouldn't be hidden from the grid.\n // Properties inherited through $ref/allOf/etc. count, matching how the backend resolves\n // a RecordSet's schema columns.\n const schemaProperties = useMemo(\n () => collectTopLevelProperties(jsonSchema),\n [jsonSchema],\n )\n const isSchemaColumn = (columnName: string) =>\n Object.hasOwn(schemaProperties, columnName)\n\n return (\n <ConfirmationDialog\n open={open}\n title=\"Reorder Columns\"\n content={\n <Box>\n {canRemoveColumns && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\n Only columns that are not part of the schema can be removed.\n </Typography>\n )}\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', mb: 1 }}>\n <Button\n variant=\"text\"\n startIcon={<RestartAlt />}\n onClick={() => {\n setWorkingOrder(defaultOrder)\n setRemovedColumnIndices([])\n }}\n disabled={isAtDefault}\n >\n Reset to Default Order\n </Button>\n </Box>\n <List disablePadding>\n {workingOrder.map((colIndex, displayIndex) => {\n const columnName = columnNames[colIndex]\n const isRemoved = removedColumnIndices.includes(colIndex)\n return (\n <ListItem\n key={colIndex}\n divider\n sx={isRemoved ? { opacity: 0.5 } : undefined}\n secondaryAction={\n <Stack direction=\"row\" spacing={0.5}>\n {canRemoveColumns &&\n (isRemoved ? (\n <IconButton\n aria-label={`Restore ${columnName}`}\n size=\"small\"\n onClick={() =>\n setRemovedColumnIndices(indices =>\n indices.filter(index => index !== colIndex),\n )\n }\n >\n <RestoreFromTrash fontSize=\"small\" />\n </IconButton>\n ) : (\n !isSchemaColumn(columnName) && (\n <IconButton\n aria-label={`Remove ${columnName}`}\n size=\"small\"\n disabled={activeColumnCount <= 1}\n onClick={() =>\n setRemovedColumnIndices(indices => [\n ...indices,\n colIndex,\n ])\n }\n >\n <DeleteOutline fontSize=\"small\" />\n </IconButton>\n )\n ))}\n <IconButton\n aria-label={`Move ${columnName} up`}\n size=\"small\"\n disabled={isRemoved || displayIndex === 0}\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, -1),\n )\n }\n >\n <North fontSize=\"small\" />\n </IconButton>\n <IconButton\n aria-label={`Move ${columnName} down`}\n size=\"small\"\n disabled={\n isRemoved || displayIndex === workingOrder.length - 1\n }\n onClick={() =>\n setWorkingOrder(order =>\n moveItem(order, displayIndex, 1),\n )\n }\n >\n <South fontSize=\"small\" />\n </IconButton>\n </Stack>\n }\n >\n <ListItemText primary={columnName} />\n </ListItem>\n )\n })}\n </List>\n </Box>\n }\n confirmButtonProps={{ children: 'Save' }}\n onConfirm={() =>\n onSave(\n workingOrder.filter(index => !removedColumnIndices.includes(index)),\n )\n }\n onCancel={onCancel}\n />\n )\n}\n"],"mappings":"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"}
|
|
@@ -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;AAwE/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;
|
|
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;AAwE/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;AA+LD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGzD"}
|
|
@@ -93,7 +93,7 @@ function y(e, t) {
|
|
|
93
93
|
stickyLeft: e.isPinned
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
|
-
var b = {
|
|
96
|
+
var b = new Set(["date", "date-time"]), x = {
|
|
97
97
|
multipleEnum: (e) => y(e, n({
|
|
98
98
|
choices: e.enumeratedValues ?? [],
|
|
99
99
|
colType: e.typeInfo?.type || null,
|
|
@@ -114,8 +114,11 @@ var b = {
|
|
|
114
114
|
colType: t.typeInfo?.type || null,
|
|
115
115
|
clearValue: r(t.isRequired)
|
|
116
116
|
})),
|
|
117
|
-
|
|
118
|
-
let n = t({
|
|
117
|
+
dateOrDateTime: (e) => {
|
|
118
|
+
let n = t({
|
|
119
|
+
colType: e.typeInfo?.type || null,
|
|
120
|
+
format: e.typeInfo?.format
|
|
121
|
+
}), r = {
|
|
119
122
|
showPinIcon: e.showPinIcon,
|
|
120
123
|
hasDescription: !!e.description
|
|
121
124
|
}, i = e.customWidth ?? a(e.columnName, {
|
|
@@ -138,13 +141,13 @@ var b = {
|
|
|
138
141
|
cellClassName: "MuiInputBase-input"
|
|
139
142
|
})
|
|
140
143
|
};
|
|
141
|
-
function
|
|
142
|
-
return e ? e.format
|
|
144
|
+
function S(e, t) {
|
|
145
|
+
return e ? e.format && b.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";
|
|
143
146
|
}
|
|
144
|
-
function
|
|
145
|
-
return
|
|
147
|
+
function C(e) {
|
|
148
|
+
return x[S(e.typeInfo, e.enumeratedValues)](e);
|
|
146
149
|
}
|
|
147
150
|
//#endregion
|
|
148
|
-
export {
|
|
151
|
+
export { C as createColumn };
|
|
149
152
|
|
|
150
153
|
//# 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","COLUMN_FACTORIES","multipleEnum","choices","colType","type","limitTags","clearValue","boolean","number","enumerated","date-time","text","continuousUpdates","deletedValue","parseUserInput","cellClassName","getColumnType","length","format","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'\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\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 'date-time': (config: ColumnConfig) => {\n const columnImpl = dateTimeColumn({\n colType: config.typeInfo?.type || null,\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-time') {\n return 'date-time'\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","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'\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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DatePickerProps as MuiDatePickerProps } from '@mui/x-date-pickers/DatePicker';
|
|
2
|
+
/**
|
|
3
|
+
* Picker for a calendar date with no time of day.
|
|
4
|
+
*
|
|
5
|
+
* Unlike DateTimePicker, no timezone is applied or displayed: a calendar date is
|
|
6
|
+
* not an instant, so converting one between zones could shift it onto the
|
|
7
|
+
* adjacent day.
|
|
8
|
+
*/
|
|
9
|
+
export default function DatePicker(props: MuiDatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,IAAI,kBAAkB,EACtC,MAAM,gCAAgC,CAAA;AAGvC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,kBAAkB,2CAM3D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { AdapterDayjs as t } from "@mui/x-date-pickers/AdapterDayjs";
|
|
3
|
+
import { LocalizationProvider as n } from "@mui/x-date-pickers/LocalizationProvider";
|
|
4
|
+
import { DatePicker as r } from "@mui/x-date-pickers/DatePicker";
|
|
5
|
+
//#region src/components/DatePicker/DatePicker.tsx
|
|
6
|
+
function i(i) {
|
|
7
|
+
return /* @__PURE__ */ e(n, {
|
|
8
|
+
dateAdapter: t,
|
|
9
|
+
children: /* @__PURE__ */ e(r, {
|
|
10
|
+
enableAccessibleFieldDOMStructure: !1,
|
|
11
|
+
...i
|
|
12
|
+
})
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { i as default };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport {\n DatePicker as MuiDatePicker,\n DatePickerProps as MuiDatePickerProps,\n} from '@mui/x-date-pickers/DatePicker'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\n\n/**\n * Picker for a calendar date with no time of day.\n *\n * Unlike DateTimePicker, no timezone is applied or displayed: a calendar date is\n * not an instant, so converting one between zones could shift it onto the\n * adjacent day.\n */\nexport default function DatePicker(props: MuiDatePickerProps) {\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDatePicker enableAccessibleFieldDOMStructure={false} {...props} />\n </LocalizationProvider>\n )\n}\n"],"mappings":";;;;;AAcA,SAAwB,EAAW,GAA2B;CAC5D,OACE,kBAAC,GAAD;EAAsB,aAAa;YACjC,kBAAC,GAAD;GAAe,mCAAmC;GAAO,GAAI;EAAQ,CAAA;CACjD,CAAA;AAE1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCitation.d.ts","sourceRoot":"","sources":["../../../src/components/EntityCitation/EntityCitation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,QAAA,MAAM,cAAc,GAAI,yCAIrB,mBAAmB,KAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"EntityCitation.d.ts","sourceRoot":"","sources":["../../../src/components/EntityCitation/EntityCitation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,QAAA,MAAM,cAAc,GAAI,yCAIrB,mBAAmB,KAAG,KAAK,CAAC,SAgK9B,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -10,7 +10,7 @@ import { Button as c, Skeleton as l } from "@mui/material";
|
|
|
10
10
|
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
11
11
|
import { DoiObjectType as p } from "@sage-bionetworks/synapse-client";
|
|
12
12
|
//#region src/components/EntityCitation/EntityCitation.tsx
|
|
13
|
-
var m = "
|
|
13
|
+
var m = "8px", h = ({ projectId: h, entityId: g, versionNumber: _ }) => {
|
|
14
14
|
let { data: v, isLoading: y } = e(g, _), [b, x] = s(null), [S, C] = s(void 0), [w, T] = s(null), [E, D] = s(void 0), O = o(null), k = b ? "cite-as-popover" : void 0, A = a(g, _, h, v), { data: j, isLoading: M } = t({
|
|
15
15
|
id: h,
|
|
16
16
|
version: void 0,
|
|
@@ -31,6 +31,7 @@ var m = "10px 12px", h = ({ projectId: h, entityId: g, versionNumber: _ }) => {
|
|
|
31
31
|
options: ["Cite this Project", "Cite only this page"],
|
|
32
32
|
anchorRef: O,
|
|
33
33
|
sx: {
|
|
34
|
+
height: "28px",
|
|
34
35
|
width: {
|
|
35
36
|
xs: "100%",
|
|
36
37
|
sm: "initial"
|
|
@@ -42,7 +43,8 @@ var m = "10px 12px", h = ({ projectId: h, entityId: g, versionNumber: _ }) => {
|
|
|
42
43
|
},
|
|
43
44
|
"& .MuiButtonGroup-lastButton": {
|
|
44
45
|
borderTopRightRadius: "6px",
|
|
45
|
-
borderBottomRightRadius: "6px"
|
|
46
|
+
borderBottomRightRadius: "6px",
|
|
47
|
+
"& svg": { fontSize: "16px" }
|
|
46
48
|
},
|
|
47
49
|
"& .MuiButton-root": { fontWeight: 540 }
|
|
48
50
|
},
|
|
@@ -67,12 +69,13 @@ var m = "10px 12px", h = ({ projectId: h, entityId: g, versionNumber: _ }) => {
|
|
|
67
69
|
},
|
|
68
70
|
borderRadius: "6px",
|
|
69
71
|
fontWeight: 540,
|
|
70
|
-
padding: m
|
|
72
|
+
padding: m,
|
|
73
|
+
height: "28px"
|
|
71
74
|
},
|
|
72
75
|
variant: "outlined",
|
|
73
76
|
startIcon: /* @__PURE__ */ d(n, {
|
|
74
|
-
width:
|
|
75
|
-
height:
|
|
77
|
+
width: 16,
|
|
78
|
+
height: 16
|
|
76
79
|
}),
|
|
77
80
|
children: F
|
|
78
81
|
}), /* @__PURE__ */ d(r, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCitation.js","names":[],"sources":["../../../src/components/EntityCitation/EntityCitation.tsx"],"sourcesContent":["import React from 'react'\nimport { ReactComponent as DoubleQuotes } from '@/assets/icons/DoubleQuotes.svg'\nimport { Button, Skeleton } from '@mui/material'\nimport { useGetDOIAssociation } from '@/synapse-queries/doi/useDOI'\nimport { useGetEntityBundle } from '@/synapse-queries/entity'\nimport { DoiObjectType } from '@sage-bionetworks/synapse-client'\nimport CitationPopoverContent from '../CitationPopover/CitationPopoverContent'\nimport { useRef, useState } from 'react'\nimport { useGetEntityDoiAssociation } from './EntityCitationUtils'\nimport DropdownSelect from '../DropdownSelect'\n\nconst CITATION_BUTTON_PADDING = '
|
|
1
|
+
{"version":3,"file":"EntityCitation.js","names":[],"sources":["../../../src/components/EntityCitation/EntityCitation.tsx"],"sourcesContent":["import React from 'react'\nimport { ReactComponent as DoubleQuotes } from '@/assets/icons/DoubleQuotes.svg'\nimport { Button, Skeleton } from '@mui/material'\nimport { useGetDOIAssociation } from '@/synapse-queries/doi/useDOI'\nimport { useGetEntityBundle } from '@/synapse-queries/entity'\nimport { DoiObjectType } from '@sage-bionetworks/synapse-client'\nimport CitationPopoverContent from '../CitationPopover/CitationPopoverContent'\nimport { useRef, useState } from 'react'\nimport { useGetEntityDoiAssociation } from './EntityCitationUtils'\nimport DropdownSelect from '../DropdownSelect'\n\nconst CITATION_BUTTON_PADDING = '8px'\n\nexport type EntityCitationProps = {\n projectId: string\n entityId: string\n versionNumber?: number\n}\n\nconst EntityCitation = ({\n projectId,\n entityId,\n versionNumber,\n}: EntityCitationProps): React.ReactNode => {\n const { data: bundle, isLoading: isEntityLoading } = useGetEntityBundle(\n entityId,\n versionNumber,\n )\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null)\n const [selectedDoi, setSelectedDoi] = useState<string | undefined>(undefined)\n const [citationAnchorEl, setCitationAnchorEl] = useState<HTMLElement | null>(\n null,\n )\n const [selectedIndex, setSelectedIndex] = useState<number | undefined>(\n undefined,\n )\n const citationButtonRef = useRef<HTMLDivElement>(null)\n\n const open = Boolean(anchorEl)\n const id = open ? 'cite-as-popover' : undefined\n\n const entityDoiAssociation = useGetEntityDoiAssociation(\n entityId,\n versionNumber,\n projectId,\n bundle,\n )\n\n // Get DOI association for the project\n // Projects are not versioned\n const { data: projectDoiAssociation, isLoading: isProjectLoading } =\n useGetDOIAssociation(\n {\n id: projectId,\n version: undefined,\n type: DoiObjectType.ENTITY,\n },\n {\n enabled: !!projectId,\n },\n )\n\n // If both project and entity have DOIs, we show the dropdown variant\n const isProjectAndEntityDoi = projectDoiAssociation && entityDoiAssociation\n\n function getButtonText() {\n if (isProjectAndEntityDoi) {\n return 'Cite as...'\n } else if (entityDoiAssociation && !projectDoiAssociation) {\n return 'Cite page'\n } else if (!entityDoiAssociation && projectDoiAssociation) {\n return 'Cite project'\n }\n return ''\n }\n\n const buttonText = getButtonText()\n\n const handleButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (entityDoiAssociation && !projectDoiAssociation) {\n setSelectedDoi(entityDoiAssociation.doiUri)\n setCitationAnchorEl(event.currentTarget)\n } else if (!entityDoiAssociation && projectDoiAssociation) {\n setSelectedDoi(projectDoiAssociation.doiUri)\n setCitationAnchorEl(event.currentTarget)\n } else {\n // If both project and entity doi exist, show dropdown\n setAnchorEl(event.currentTarget)\n }\n }\n\n const popover = (\n <CitationPopoverContent\n doi={selectedDoi}\n anchorEl={citationAnchorEl}\n open={!!citationAnchorEl && !!selectedDoi}\n id={id}\n onClose={() => {\n setCitationAnchorEl(null)\n setSelectedDoi(undefined)\n }}\n />\n )\n\n const options: string[] = ['Cite this Project', 'Cite only this page']\n\n if (!projectDoiAssociation && !entityDoiAssociation) {\n return null\n }\n\n if (isEntityLoading || isProjectLoading) {\n return (\n <Skeleton\n sx={{\n width: { xs: '100%', sm: '140px' },\n height: '45px',\n }}\n />\n )\n }\n\n return (\n <>\n {isProjectAndEntityDoi ? (\n <DropdownSelect\n disabled={isEntityLoading && isProjectLoading}\n options={options}\n anchorRef={citationButtonRef}\n sx={{\n height: '28px',\n width: { xs: '100%', sm: 'initial' },\n '& .MuiButtonGroup-firstButton': {\n borderTopLeftRadius: '6px',\n borderBottomLeftRadius: '6px',\n padding: CITATION_BUTTON_PADDING,\n },\n '& .MuiButtonGroup-lastButton': {\n borderTopRightRadius: '6px',\n borderBottomRightRadius: '6px',\n '& svg': {\n fontSize: '16px',\n },\n },\n '& .MuiButton-root': {\n fontWeight: 540,\n },\n }}\n buttonText=\"Cite as...\"\n variant=\"outlined\"\n buttonGroupAriaLabel=\"Citation options\"\n selectedIndex={selectedIndex}\n setSelectedIndex={(index: number) => {\n setSelectedIndex(index)\n const selected =\n index === 0\n ? projectDoiAssociation?.doiUri\n : entityDoiAssociation?.doiUri\n if (selected) {\n setSelectedDoi(selected)\n setCitationAnchorEl(citationButtonRef.current)\n }\n }}\n />\n ) : (\n <Button\n onClick={handleButtonClick}\n disabled={isEntityLoading && isProjectLoading}\n sx={{\n width: { xs: '100%', sm: 'initial' },\n borderRadius: '6px',\n fontWeight: 540,\n padding: CITATION_BUTTON_PADDING,\n height: '28px',\n }}\n variant=\"outlined\"\n startIcon={<DoubleQuotes width={16} height={16} />}\n >\n {buttonText}\n </Button>\n )}\n {popover}\n </>\n )\n}\n\nexport default EntityCitation\n"],"mappings":";;;;;;;;;;;;AAWA,IAAM,IAA0B,OAQ1B,KAAkB,EACtB,cACA,aACA,uBAC0C;CAC1C,IAAM,EAAE,MAAM,GAAQ,WAAW,MAAoB,EACnD,GACA,CACF,GACM,CAAC,GAAU,KAAe,EAAmC,IAAI,GACjE,CAAC,GAAa,KAAkB,EAA6B,KAAA,CAAS,GACtE,CAAC,GAAkB,KAAuB,EAC9C,IACF,GACM,CAAC,GAAe,KAAoB,EACxC,KAAA,CACF,GACM,IAAoB,EAAuB,IAAI,GAG/C,IADe,IACH,oBAAoB,KAAA,GAEhC,IAAuB,EAC3B,GACA,GACA,GACA,CACF,GAIM,EAAE,MAAM,GAAuB,WAAW,MAC9C,EACE;EACE,IAAI;EACJ,SAAS,KAAA;EACT,MAAM,EAAc;CACtB,GACA,EACE,SAAS,CAAC,CAAC,EACb,CACF,GAGI,IAAwB,KAAyB;CAEvD,SAAS,IAAgB;EAQvB,OAPI,IACK,eACE,KAAwB,CAAC,IAC3B,cACE,CAAC,KAAwB,IAC3B,iBAEF;CACT;CAEA,IAAM,IAAa,EAAc;CA6CjC,OAfI,CAAC,KAAyB,CAAC,IACtB,OAGL,KAAmB,IAEnB,kBAAC,GAAD,EACE,IAAI;EACF,OAAO;GAAE,IAAI;GAAQ,IAAI;EAAQ;EACjC,QAAQ;CACV,EACD,CAAA,IAKH,kBAAA,GAAA,EAAA,UAAA,CACG,IACC,kBAAC,GAAD;EACE,UAAU,KAAmB;EACpB,UAtBU,qBAAqB,qBAsB/B;EACT,WAAW;EACX,IAAI;GACF,QAAQ;GACR,OAAO;IAAE,IAAI;IAAQ,IAAI;GAAU;GACnC,iCAAiC;IAC/B,qBAAqB;IACrB,wBAAwB;IACxB,SAAS;GACX;GACA,gCAAgC;IAC9B,sBAAsB;IACtB,yBAAyB;IACzB,SAAS,EACP,UAAU,OACZ;GACF;GACA,qBAAqB,EACnB,YAAY,IACd;EACF;EACA,YAAW;EACX,SAAQ;EACR,sBAAqB;EACN;EACf,mBAAmB,MAAkB;GACnC,EAAiB,CAAK;GACtB,IAAM,IACJ,MAAU,IACN,GAAuB,SACvB,GAAsB;GAC5B,AAAI,MACF,EAAe,CAAQ,GACvB,EAAoB,EAAkB,OAAO;EAEjD;CACD,CAAA,IAED,kBAAC,GAAD;EACE,UAvFmB,MAA+C;GACxE,AAAI,KAAwB,CAAC,KAC3B,EAAe,EAAqB,MAAM,GAC1C,EAAoB,EAAM,aAAa,KAC9B,CAAC,KAAwB,KAClC,EAAe,EAAsB,MAAM,GAC3C,EAAoB,EAAM,aAAa,KAGvC,EAAY,EAAM,aAAa;EAEnC;EA6EQ,UAAU,KAAmB;EAC7B,IAAI;GACF,OAAO;IAAE,IAAI;IAAQ,IAAI;GAAU;GACnC,cAAc;GACd,YAAY;GACZ,SAAS;GACT,QAAQ;EACV;EACA,SAAQ;EACR,WAAW,kBAAC,GAAD;GAAc,OAAO;GAAI,QAAQ;EAAK,CAAA;YAEhD;CACK,CAAA,GAET,gBAxFH,EAAC,GAAD;EACE,KAAK;EACL,UAAU;EACV,MAAM,CAAC,CAAC,KAAoB,CAAC,CAAC;EAC1B;EACJ,eAAe;GAEb,AADA,EAAoB,IAAI,GACxB,EAAe,KAAA,CAAS;EAC1B;CACD,CA+EE,CACD,EAAA,CAAA;AAEN"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type ChoiceOptionsEditorProps = {
|
|
2
|
+
options: string[];
|
|
3
|
+
onChange: (next: string[]) => void;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Edits a choice field's options. At least one option is always kept, and added options get a
|
|
7
|
+
* unique `Option N` label.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ChoiceOptionsEditor({ options, onChange, }: ChoiceOptionsEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ChoiceOptionsEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChoiceOptionsEditor.d.ts","sourceRoot":"","sources":["../../../src/components/FormTemplateEditor/ChoiceOptionsEditor.tsx"],"names":[],"mappings":"AAUA,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CACnC,CAAA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,QAAQ,GACT,EAAE,wBAAwB,2CAkD1B"}
|