synapse-react-client 4.0.3 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SWC.index.js +1 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +1 -1
- package/dist/components/AccessRequirementList/AccessRequirementList.js +4 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.d.ts.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js +8 -7
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/DataAccessRequestAccessorsEditor.js.map +1 -1
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementFormWikiWrapper.js +4 -4
- package/dist/components/AccessRequirementList/ManagedACTAccessRequirementRequestFlow/ManagedACTAccessRequirementItem.js +11 -11
- package/dist/components/AccessRequirementList/RequirementItem/RequirementItem.js +1 -1
- package/dist/components/AccessRequirementList/RequirementItem/SelfSignAccessRequirementItem.js +9 -9
- package/dist/components/AccessRequirementList/RequirementItem/UnmanagedACTAccessRequirementItem.js +5 -5
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.d.ts.map +1 -1
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js +33 -32
- package/dist/components/AcknowledgementsPage/AcknowledgementsPage.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.js +8 -8
- package/dist/components/AclEditor/AclEditor.js.map +1 -1
- package/dist/components/AclEditor/AclEditor.test-utils.js +34 -34
- package/dist/components/AclEditor/AclEditor.test-utils.js.map +1 -1
- package/dist/components/Authentication/AuthenticationMethodSelection.js +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +6 -5
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.css +1 -1
- package/dist/components/BasePortalCard/BasePortalCard.module.scss +6 -0
- package/dist/components/BasePortalCard/BasePortalCard.module.scss.js +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.css +1 -1
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.js +7 -7
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss +13 -5
- package/dist/components/BasePortalCard/ColorfulPortalCardWithChips/ColorfulPortalCardWithChips.module.scss.js +5 -5
- package/dist/components/CardContainer/CardLink.d.ts +12 -0
- package/dist/components/CardContainer/CardLink.d.ts.map +1 -1
- package/dist/components/ChallengeSubmission/AvailableEvaluationQueueList.js +12 -12
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.d.ts.map +1 -1
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js +7 -7
- package/dist/components/ChallengeTeamWizard/CreateChallengeTeam.js.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.d.ts.map +1 -1
- package/dist/components/CitationPopover/CitationPopoverContent.js +13 -12
- package/dist/components/CitationPopover/CitationPopoverContent.js.map +1 -1
- package/dist/components/CookiesNotification/CookiesNotification.js +1 -1
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js +3 -4
- package/dist/components/CreateOrUpdateAccessRequirementWizard/CreateOrUpdateAccessRequirementWizard.js.map +1 -1
- package/dist/components/DataGrid/MergeGridWithSourceTableButton.js +2 -2
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +35 -35
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/UploadCsvToGridDialog.js +2 -2
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.d.ts.map +1 -1
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js +9 -7
- package/dist/components/DataGrid/hooks/useExportDataGridToCsv.js.map +1 -1
- package/dist/components/DownloadCart/ActionRequiredCard/ActionRequiredCard.js +1 -1
- package/dist/components/DownloadCart/RequestDownloadCard.js +1 -1
- package/dist/components/Ecosystem/EcosystemSkeleton.js +2 -2
- package/dist/components/Ecosystem/TableQueryEcosystem.js +1 -1
- package/dist/components/EntityAclEditor/EntityAclEditorModal.js +1 -1
- package/dist/components/EntityAclEditor/OpenData.js +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.d.ts.map +1 -1
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js +113 -127
- package/dist/components/EntityBadgeIcons/EntityBadgeIcons.js.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js +1 -1
- package/dist/components/EntityFinder/details/view/table/AddToDownloadListCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/CreatedOnCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/EntityNameCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntityMD5Cell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/FileEntitySizeCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedByCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ModifiedOnCell.js +1 -1
- package/dist/components/EntityFinder/details/view/table/ParentProjectCell.js +1 -1
- package/dist/components/EntityFinder/tree/EntityTree.js +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.d.ts.map +1 -1
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js +39 -39
- package/dist/components/EntityHeaderTable/EntityHeaderTable.js.map +1 -1
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts +8 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.d.ts.map +1 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js +46 -0
- package/dist/components/Evaluation/DeleteEvaluationQueueConfirmationDialog.js.map +1 -0
- package/dist/components/Evaluation/EvaluationCard.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationCard.js +35 -41
- package/dist/components/Evaluation/EvaluationCard.js.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationEditor.js +95 -90
- package/dist/components/Evaluation/EvaluationEditor.js.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.d.ts.map +1 -1
- package/dist/components/Evaluation/EvaluationRoundEditor.js +133 -124
- package/dist/components/Evaluation/EvaluationRoundEditor.js.map +1 -1
- package/dist/components/FilePreview/EntityPreview.js +1 -1
- package/dist/components/Forum/DiscussionReply.js +10 -10
- package/dist/components/Forum/DiscussionThread.js +21 -21
- package/dist/components/GenericCard/CardUtils.d.ts.map +1 -1
- package/dist/components/GenericCard/CardUtils.js +36 -36
- package/dist/components/GenericCard/CardUtils.js.map +1 -1
- package/dist/components/GenericCard/CollapsibleDescription.js +25 -25
- package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +72 -67
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +4 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +98 -96
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.d.ts.map +1 -1
- package/dist/components/GoalsV2/GoalsV2.Desktop.js +14 -15
- package/dist/components/GoalsV2/GoalsV2.Desktop.js.map +1 -1
- package/dist/components/GoogleAnalytics/GoogleAnalytics.js +1 -1
- package/dist/components/HasAccess/HasAccessV2.js +1 -1
- package/dist/components/HasAccess/useHasAccess.js +1 -1
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js +23 -23
- package/dist/components/IDUReport/IDUReportSubmissionInfo.js.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.d.ts +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.d.ts.map +1 -1
- package/dist/components/JSONArrayEditor/useParseCsv.js +9 -9
- package/dist/components/JSONArrayEditor/useParseCsv.js.map +1 -1
- package/dist/components/Markdown/MarkdownCollapse.js +7 -7
- package/dist/components/Markdown/MarkdownEditor.js +11 -11
- package/dist/components/Markdown/MarkdownGithub.js +1 -1
- package/dist/components/Markdown/MarkdownPopover.js +6 -6
- package/dist/components/Markdown/MarkdownPopover.js.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownSynapse.js +139 -135
- package/dist/components/Markdown/MarkdownSynapse.js.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.d.ts +8 -0
- package/dist/components/Markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/components/Markdown/MarkdownUtils.js +139 -65
- package/dist/components/Markdown/MarkdownUtils.js.map +1 -1
- package/dist/components/Markdown/UserMentionModal.js +18 -18
- package/dist/components/Markdown/UserMentionModal.js.map +1 -1
- package/dist/components/Markdown/widget/MarkdownButton.js +3 -3
- package/dist/components/Markdown/widget/MarkdownButton.js.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.d.ts.map +1 -1
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js +9 -8
- package/dist/components/MissingQueryResultsWarning/MissingQueryResultsWarning.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.css +1 -0
- package/dist/components/Plot/SynapsePlot.d.ts +2 -0
- package/dist/components/Plot/SynapsePlot.d.ts.map +1 -1
- package/dist/components/Plot/SynapsePlot.js +43 -39
- package/dist/components/Plot/SynapsePlot.js.map +1 -1
- package/dist/components/Plot/SynapsePlot.scss +8 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +114 -113
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperSynapsePlot.js.map +1 -1
- package/dist/components/Resources/Resources.Desktop.js +7 -7
- package/dist/components/Resources/Resources.Mobile.js +6 -6
- package/dist/components/SubsectionRowRenderer/SubsectionRowRenderer.js +3 -3
- package/dist/components/SustainabilityScorecard/SustainabilityScorecardSummary.js +10 -10
- package/dist/components/SynapseChat/SynapseChatInteraction.js +5 -5
- package/dist/components/SynapseForm/WarningDialog.d.ts +1 -0
- package/dist/components/SynapseForm/WarningDialog.d.ts.map +1 -1
- package/dist/components/SynapseForm/WarningDialog.js +18 -16
- package/dist/components/SynapseForm/WarningDialog.js.map +1 -1
- package/dist/components/SynapseHomepageV2/SynapseHomepageNavBar.js +1 -1
- package/dist/components/SynapseSearchPageResults/HasAccessChip.js +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.d.ts.map +1 -1
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js +12 -13
- package/dist/components/SynapseSearchPageResults/SearchPagePortalBanners.js.map +1 -1
- package/dist/components/SynapseSearchPageResults/SynapseSearchResultsCard.js +5 -5
- package/dist/components/SynapseTable/ExpandableTableDataCell.d.ts.map +1 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js +3 -1
- package/dist/components/SynapseTable/ExpandableTableDataCell.js.map +1 -1
- package/dist/components/SynapseTable/SynapseTable.js +4 -4
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.d.ts.map +1 -1
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js +122 -122
- package/dist/components/SynapseTable/SynapseTableCell/SynapseTableCell.js.map +1 -1
- package/dist/components/SynapseTable/datasets/DatasetItemsEditor.js +5 -5
- package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditor.js +1 -1
- package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
- package/dist/components/TableFeedCards/TableFeedCards.js +9 -9
- package/dist/components/TermsAndConditions/TermsAndConditionsItem.js +10 -10
- package/dist/components/TimelinePlot/TimelinePlotSpeciesSelector.js +9 -9
- package/dist/components/UserSearchBox/UserSearchBox.d.ts +23 -0
- package/dist/components/UserSearchBox/UserSearchBox.d.ts.map +1 -0
- package/dist/components/UserSearchBox/UserSearchBox.js +146 -0
- package/dist/components/UserSearchBox/UserSearchBox.js.map +1 -0
- package/dist/components/WikiMarkdownEditorButton/WikiMarkdownEditorButton.js +13 -13
- package/dist/components/WizardChoiceButton/WizardChoiceButton.js +3 -3
- package/dist/components/dataaccess/AccessHistoryDashboard.js +5 -5
- package/dist/components/dataaccess/AccessHistoryDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessRequirementDashboard.js +4 -4
- package/dist/components/dataaccess/AccessRequirementDashboard.js.map +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js +1 -1
- package/dist/components/dataaccess/AccessSubmissionDashboard.js.map +1 -1
- package/dist/components/dataaccess/SubmissionPage/SubmissionPage.js +5 -5
- package/dist/components/dataaccess/UseAccessRequirementTable.js +3 -3
- package/dist/components/dataaccess/UseAccessRequirementTable.js.map +1 -1
- package/dist/components/doi/CreateOrUpdateDoiModal.js +1 -1
- package/dist/components/download_list/AddToDownloadListConfirmationAlert/AddToDownloadListConfirmationAlert.js +2 -2
- package/dist/components/entity/metadata/EntityModal.js +1 -1
- package/dist/components/entity/metadata/MetadataTable.js +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +1 -1
- package/dist/components/entity/page/title_bar/EntityTitleBarVersionInfo.js +1 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js +27 -26
- package/dist/components/entity/page/title_bar/useGetEntityTitleBarProperties.js.map +1 -1
- package/dist/components/index.js +109 -107
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/InfiniteTableLayout.js +1 -1
- package/dist/components/styled/HoverPopover.css +1 -0
- package/dist/components/styled/HoverPopover.d.ts +28 -0
- package/dist/components/styled/HoverPopover.d.ts.map +1 -0
- package/dist/components/styled/HoverPopover.js +103 -0
- package/dist/components/styled/HoverPopover.js.map +1 -0
- package/dist/components/styled/HoverPopover.module.scss +9 -0
- package/dist/components/styled/HoverPopover.module.scss.js +10 -0
- package/dist/components/styled/HoverPopover.module.scss.js.map +1 -0
- package/dist/components/styled/index.d.ts +2 -0
- package/dist/components/styled/index.d.ts.map +1 -1
- package/dist/components/styled/index.js +11 -9
- package/dist/components/styled/index.js.map +1 -1
- package/dist/components/table/CsvPreview/CsvPreview.js +2 -2
- package/dist/components/table/CsvPreview/CsvPreviewDialog.js +2 -2
- package/dist/components/widgets/Range.js +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/FacetNavPanel.js +35 -32
- package/dist/components/widgets/facet-nav/FacetNavPanel.js.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/PlotsContainer.js +69 -68
- package/dist/components/widgets/facet-nav/PlotsContainer.js.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/useFacetPlots.js +24 -21
- package/dist/components/widgets/facet-nav/useFacetPlots.js.map +1 -1
- package/dist/components/widgets/query-filter/FacetFilterControls.js +3 -3
- package/dist/features/curator/GridPage/GridPage.js +2 -2
- package/dist/features/curator/GridPage/components/GridPageTitle.js +2 -2
- package/dist/features/entity/metadata-task/hooks/useMetadataTaskTable.js +1 -1
- package/dist/index.js +157 -155
- package/dist/index.js.map +1 -1
- package/dist/mocks/msw/handlers/accessRequirementHandlers.js +5 -5
- package/dist/mocks/msw/handlers/projectStorageHandlers.js +5 -5
- package/dist/mocks/msw/handlers/wikiHandlers.js +1 -1
- package/dist/mocks/msw/handlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers.js +67 -59
- package/dist/mocks/msw/handlers.js.map +1 -1
- package/dist/style/base/_core.scss +0 -1
- package/dist/style/components/_all.scss +0 -1
- package/dist/style/components/_entity-badge.scss +0 -2
- package/dist/style/components/_expandable_table_data.scss +3 -3
- package/dist/style/components/facet_nav/_facet-nav-panel.scss +3 -0
- package/dist/style/components/facet_nav/_facet-nav.scss +4 -0
- package/dist/style/main.css +1 -1
- package/dist/synapse-client/SynapseClient.js +118 -118
- package/dist/synapse-client/SynapseClient.js.map +1 -1
- package/dist/synapse-queries/auth/useOIDC.js +1 -1
- package/dist/synapse-queries/auth/useTwoFactorEnrollment.js +1 -1
- package/dist/synapse-queries/entity/index.js +6 -6
- package/dist/synapse-queries/grid/useEstablishWebsocketConnection.js +1 -1
- package/dist/synapse-queries/index.js +1 -1
- package/dist/synapse-queries/user/usePersonalAccessToken.js +1 -1
- package/dist/testutils/vitest.setup.js +10 -11
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/theme/DefaultTheme.js +1 -1
- package/dist/theme/ThemeProvider.d.ts +2 -1
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +11 -10
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/mergeTheme.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/AppUtils.js +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.d.ts.map +1 -1
- package/dist/utils/functions/SanitizeHtmlUtils.js +34 -40
- package/dist/utils/functions/SanitizeHtmlUtils.js.map +1 -1
- package/dist/utils/functions/deepLinkingUtils.js +10 -10
- package/dist/utils/functions/deepLinkingUtils.js.map +1 -1
- package/dist/utils/hooks/index.js +6 -6
- package/dist/utils/hooks/useDetectSSOCode.js +3 -3
- package/dist/utils/hooks/useGetEntityMetadata.js +1 -1
- package/dist/utils/hooks/useNativeSearchParams.d.ts.map +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js +1 -1
- package/dist/utils/hooks/useNativeSearchParams.js.map +1 -1
- package/dist/utils/hooks/useOneSageURL.d.ts.map +1 -1
- package/dist/utils/hooks/useOneSageURL.js +15 -15
- package/dist/utils/hooks/useOneSageURL.js.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.d.ts +1 -0
- package/dist/utils/hooks/useSourceAppConfigs.d.ts.map +1 -1
- package/dist/utils/hooks/useSourceAppConfigs.js +79 -77
- package/dist/utils/hooks/useSourceAppConfigs.js.map +1 -1
- package/dist/utils/index.js +4 -4
- package/package.json +14 -15
- package/dist/_virtual/index.js +0 -6
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/index2.js +0 -5
- package/dist/_virtual/index2.js.map +0 -1
- package/dist/_virtual/index3.js +0 -5
- package/dist/_virtual/index3.js.map +0 -1
- package/dist/_virtual/index4.js +0 -5
- package/dist/_virtual/index4.js.map +0 -1
- package/dist/_virtual/index5.js +0 -5
- package/dist/_virtual/index5.js.map +0 -1
- package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts +0 -21
- package/dist/components/UserSearchBox/UserSearchBoxV2.d.ts.map +0 -1
- package/dist/components/UserSearchBox/UserSearchBoxV2.js +0 -144
- package/dist/components/UserSearchBox/UserSearchBoxV2.js.map +0 -1
- package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js +0 -53
- package/dist/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js.map +0 -1
- package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js +0 -948
- package/dist/node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js.map +0 -1
- package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js +0 -30
- package/dist/node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js.map +0 -1
- package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js +0 -15
- package/dist/node_modules/.pnpm/vite-plugin-node-polyfills@0.17.0_rollup@4.55.1_vite@7.3.1_@types_node@22.19.13_sass@1._2da6e8f78437c36f3eb7db51bdd4d89e/node_modules/vite-plugin-node-polyfills/shims/dist/index.js.map +0 -1
- package/dist/style/components/_user-search-box.scss +0 -30
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { truncateString as
|
|
4
|
-
function
|
|
5
|
-
if (!
|
|
1
|
+
import c from "katex";
|
|
2
|
+
import l from "markdown-it";
|
|
3
|
+
import { truncateString as d } from "../../utils/functions/StringUtils.js";
|
|
4
|
+
function k(e) {
|
|
5
|
+
if (!e.current)
|
|
6
6
|
return;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
const o =
|
|
12
|
-
return
|
|
7
|
+
const t = e.current.querySelectorAll('[id^="mathjax-"]'), n = new RegExp(/\\[()[\]]/, "g");
|
|
8
|
+
t.forEach((r) => {
|
|
9
|
+
if (r.textContent && !r.getAttribute("processed")) {
|
|
10
|
+
r.setAttribute("processed", "true");
|
|
11
|
+
const o = r.textContent.replace(n, "");
|
|
12
|
+
return c.render(o, r, {
|
|
13
13
|
output: "html",
|
|
14
14
|
throwOnError: !1
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
const
|
|
19
|
+
function I(e) {
|
|
20
|
+
const t = {
|
|
21
21
|
"&": "&",
|
|
22
22
|
">": ">",
|
|
23
23
|
"<": "<",
|
|
24
24
|
""": '"'
|
|
25
25
|
};
|
|
26
|
-
return
|
|
26
|
+
return e.replace(
|
|
27
27
|
/("|<|>|&)/g,
|
|
28
|
-
(
|
|
28
|
+
(n, r) => t[r]
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
const
|
|
33
|
-
let
|
|
34
|
-
return
|
|
35
|
-
const
|
|
36
|
-
return
|
|
31
|
+
function x(e) {
|
|
32
|
+
const t = /<span.*?id="wikiReference.*?<span.*? data-widgetparams.*?span>/g;
|
|
33
|
+
let n = 1;
|
|
34
|
+
return e.replace(t, () => {
|
|
35
|
+
const r = n;
|
|
36
|
+
return n += 1, `<a href="" id="ref${r}">[${r}]</a>`;
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
function
|
|
40
|
-
const
|
|
41
|
-
let
|
|
42
|
-
const
|
|
43
|
-
return
|
|
44
|
-
const
|
|
45
|
-
return
|
|
39
|
+
function y(e) {
|
|
40
|
+
const t = "SRC-header-";
|
|
41
|
+
let n = 1;
|
|
42
|
+
const r = /<h[1-6] toc="true">.*<\/h[1-6]>/gm;
|
|
43
|
+
return e.replace(r, (o) => {
|
|
44
|
+
const i = n;
|
|
45
|
+
return n += 1, `${o.substring(
|
|
46
46
|
0,
|
|
47
47
|
3
|
|
48
|
-
)} id="${
|
|
48
|
+
)} id="${t}${i}"${o.substring(3)}`;
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
-
function
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
const o = Number(
|
|
51
|
+
function L(e) {
|
|
52
|
+
const t = e.target, n = e.currentTarget;
|
|
53
|
+
if (t.tagName === "A" || t.tagName === "BUTTON") {
|
|
54
|
+
const r = e.target;
|
|
55
|
+
if (r.id.substring(0, 3) === "ref") {
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
const o = Number(n.id.substring(3)), i = n.querySelector(`#bookmark${o}`);
|
|
58
58
|
try {
|
|
59
|
-
|
|
59
|
+
i.scrollIntoView({
|
|
60
60
|
behavior: "smooth",
|
|
61
61
|
block: "center",
|
|
62
62
|
inline: "center"
|
|
@@ -64,11 +64,11 @@ function I(t) {
|
|
|
64
64
|
} catch (s) {
|
|
65
65
|
console.log("error on scroll", s);
|
|
66
66
|
}
|
|
67
|
-
} else if (
|
|
68
|
-
|
|
69
|
-
const o =
|
|
67
|
+
} else if (n.id !== null && r.getAttribute("data-anchor")) {
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
const o = r.getAttribute("data-anchor"), i = n.querySelector(`[id="${o}"]`);
|
|
70
70
|
try {
|
|
71
|
-
|
|
71
|
+
i.scrollIntoView({
|
|
72
72
|
behavior: "smooth",
|
|
73
73
|
block: "center",
|
|
74
74
|
inline: "center"
|
|
@@ -79,34 +79,108 @@ function I(t) {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
function
|
|
83
|
-
const
|
|
84
|
-
return
|
|
82
|
+
function u(e) {
|
|
83
|
+
const t = document.createElement("div");
|
|
84
|
+
return t.innerHTML = e, t.textContent || t.innerText || "";
|
|
85
85
|
}
|
|
86
|
-
function
|
|
87
|
-
const
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
else if (
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
} else
|
|
94
|
-
return
|
|
86
|
+
function A(e, t) {
|
|
87
|
+
const n = {};
|
|
88
|
+
if (t)
|
|
89
|
+
n.markdown = e;
|
|
90
|
+
else if (e.includes("/wiki/")) {
|
|
91
|
+
const r = e.split("/"), o = r[0], i = r[2];
|
|
92
|
+
n.ownerId = o, n.wikiId = i;
|
|
93
|
+
} else e && (n.ownerId = e);
|
|
94
|
+
return n;
|
|
95
95
|
}
|
|
96
|
-
const
|
|
97
|
-
if (!
|
|
96
|
+
const f = new l(), M = (e, t) => {
|
|
97
|
+
if (!e || e.length === 0)
|
|
98
98
|
return "";
|
|
99
|
-
const
|
|
100
|
-
return
|
|
99
|
+
const n = f.render(e), r = u(n).replace(/\|/g, "").replace(/#/g, "").replace(/<Synapse widget>/g, "");
|
|
100
|
+
return t ? d(r, t) : r;
|
|
101
|
+
}, g = [
|
|
102
|
+
"address",
|
|
103
|
+
"article",
|
|
104
|
+
"aside",
|
|
105
|
+
"blockquote",
|
|
106
|
+
"canvas",
|
|
107
|
+
"dd",
|
|
108
|
+
"div",
|
|
109
|
+
"dl",
|
|
110
|
+
"dt",
|
|
111
|
+
"fieldset",
|
|
112
|
+
"figcaption",
|
|
113
|
+
"figure",
|
|
114
|
+
"footer",
|
|
115
|
+
"form",
|
|
116
|
+
"h1",
|
|
117
|
+
"h2",
|
|
118
|
+
"h3",
|
|
119
|
+
"h4",
|
|
120
|
+
"h5",
|
|
121
|
+
"h6",
|
|
122
|
+
"header",
|
|
123
|
+
"hr",
|
|
124
|
+
"li",
|
|
125
|
+
"main",
|
|
126
|
+
"nav",
|
|
127
|
+
"noscript",
|
|
128
|
+
"ol",
|
|
129
|
+
"p",
|
|
130
|
+
"pre",
|
|
131
|
+
"section",
|
|
132
|
+
"table",
|
|
133
|
+
"tfoot",
|
|
134
|
+
"ul",
|
|
135
|
+
"video"
|
|
136
|
+
], p = ["span", "a", "em", "strong", "b", "i", "u", "sub", "sup"], m = ["table", "thead", "tbody", "tr", "tfoot"], h = ["badge", "image", "imageLink", "buttonlink"], T = (e) => {
|
|
137
|
+
if (e.nodeType !== Node.ELEMENT_NODE)
|
|
138
|
+
return !1;
|
|
139
|
+
const n = e.tagName.toLowerCase();
|
|
140
|
+
return p.includes(n);
|
|
141
|
+
}, a = (e) => {
|
|
142
|
+
if (e.nodeType !== Node.ELEMENT_NODE)
|
|
143
|
+
return !1;
|
|
144
|
+
const t = e, n = t.tagName.toLowerCase(), r = g.includes(n), o = t.getAttribute("data-widgetparams"), i = o !== null && !h.includes(o.split("?")[0]);
|
|
145
|
+
return r || i;
|
|
101
146
|
};
|
|
147
|
+
function b(e, t) {
|
|
148
|
+
return !(a(e) && T(t) || t.tagName.toLowerCase() === "button" && e.tagName.toLowerCase() === "button" || t.tagName.toLowerCase() === "p" && a(e));
|
|
149
|
+
}
|
|
150
|
+
function E(e, t = []) {
|
|
151
|
+
if (e.nodeType === Node.TEXT_NODE) {
|
|
152
|
+
const r = e.parentNode?.tagName?.toLowerCase();
|
|
153
|
+
m.includes(r) && !e.textContent?.trim() && e.parentNode?.removeChild(e);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (e.nodeType !== Node.ELEMENT_NODE)
|
|
157
|
+
return;
|
|
158
|
+
const n = e;
|
|
159
|
+
for (let r = t.length - 1; r >= 0; r--) {
|
|
160
|
+
const o = t[r];
|
|
161
|
+
if (!b(n, o)) {
|
|
162
|
+
const i = n.ownerDocument.createElement("div");
|
|
163
|
+
for (Array.from(o.attributes).forEach(
|
|
164
|
+
(s) => i.setAttribute(s.name, s.value)
|
|
165
|
+
); o.firstChild; )
|
|
166
|
+
i.appendChild(o.firstChild);
|
|
167
|
+
o.parentNode && o.parentNode.replaceChild(i, o), t[r] = i;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
t.push(n), Array.from(n.childNodes).forEach((r) => {
|
|
171
|
+
E(r, t);
|
|
172
|
+
}), t.pop();
|
|
173
|
+
}
|
|
102
174
|
export {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
175
|
+
x as addIdsToReferenceWidgets,
|
|
176
|
+
y as addIdsToTocWidgets,
|
|
177
|
+
I as decodeXml,
|
|
178
|
+
E as fixInvalidNesting,
|
|
179
|
+
L as handleLinkClicks,
|
|
180
|
+
a as isBlockLevelElement,
|
|
181
|
+
M as markdownToPlainText,
|
|
182
|
+
k as processMath,
|
|
183
|
+
u as stripHTML,
|
|
184
|
+
A as transformStringIntoMarkdownProps
|
|
111
185
|
};
|
|
112
186
|
//# sourceMappingURL=MarkdownUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownUtils.js","sources":["../../../src/components/Markdown/MarkdownUtils.ts"],"sourcesContent":["import katex from 'katex'\nimport { RefObject } from 'react'\nimport { MarkdownSynapseProps } from './MarkdownSynapse'\nimport MarkdownIt from 'markdown-it'\nimport { truncateString } from '@/utils/functions/StringUtils'\n\n/**\n * Find all math identified elements of the form [id^=\\\"mathjax-\\\"]\n * (e.g. <dom element id=\"mathjax-10\"> text </dom element>)\n * and transform them to their math markdown equivalents\n */\nexport function processMath(markupRef: RefObject<HTMLElement | null>) {\n if (!markupRef.current) {\n return\n }\n // use regex to grab all elements\n const mathExpressions =\n markupRef.current.querySelectorAll<HTMLElement>('[id^=\"mathjax-\"]')\n // go through all obtained elements and transform them with katex\n const regEx = new RegExp(/\\\\[()[\\]]/, 'g') // Look for a '\\' followed by either '(', ')', '[', or ']'. We delete these strings since they interfere with katex processing.\n mathExpressions.forEach(element => {\n if (element.textContent && !element.getAttribute('processed')) {\n // only process a math element once, used to double/triple process\n element.setAttribute('processed', 'true')\n const textContent = element.textContent.replace(regEx, '')\n return katex.render(textContent, element, {\n output: 'html',\n throwOnError: false,\n })\n }\n })\n}\n\n/**\n * When the markdown string is transferred over the network certain characters get transformed,\n * this does a simple transformation back to the original user's string.\n *\n * @param {string} xml\n * @returns\n * @memberof MarkdownSynapse\n */\nexport function decodeXml(xml: string) {\n const escapedOneToXmlSpecialMap = {\n '&': '&',\n '>': '>',\n '<': '<',\n '"': '\"',\n }\n return xml.replace(\n /("|<|>|&)/g,\n (str: string, item: keyof typeof escapedOneToXmlSpecialMap) => {\n return escapedOneToXmlSpecialMap[item]\n },\n )\n}\n\nexport function addIdsToReferenceWidgets(text: string) {\n const referenceRegex =\n /<span.*?id=\"wikiReference.*?<span.*? data-widgetparams.*?span>/g\n let referenceCount = 1\n\n return text.replace(referenceRegex, () => {\n // replace all reference tags with id's of the form id=\"ref<number>\"\" that we can read onClick\n const current = referenceCount\n referenceCount += 1\n return `<a href=\"\" id=\"ref${current}\">[${current}]</a>`\n })\n}\n\nexport function addIdsToTocWidgets(text: string) {\n const tocId = 'SRC-header-'\n let tocIdCount = 1\n const TOC_HEADER_REGEX = /<h[1-6] toc=\"true\">.*<\\/h[1-6]>/gm\n\n return text.replace(TOC_HEADER_REGEX, (match: string) => {\n // replace with id of the form id=\"toc\" so we can read them with onclick events\n const curTocId = tocIdCount\n tocIdCount += 1\n const matchWithId = `${match.substring(\n 0,\n 3,\n )} id=\"${tocId}${curTocId}\"${match.substring(3)}`\n return matchWithId\n })\n}\n\n// Manually handle clicks to anchor tags where the scrollto isn't handled by page hash\nexport function handleLinkClicks(event: MouseEvent) {\n const genericElement = event.target as HTMLElement\n const currentTarget = event.currentTarget as HTMLElement\n if (genericElement.tagName === 'A' || genericElement.tagName === 'BUTTON') {\n const anchor = event.target as HTMLAnchorElement\n if (anchor.id.substring(0, 3) === 'ref') {\n event.preventDefault()\n\n // its a reference, so we scroll to the appropriate bookmark\n const referenceNumber = Number(currentTarget.id.substring(3)) // e.g. ref2 => '2'\n const goTo = currentTarget.querySelector(`#bookmark${referenceNumber}`)\n try {\n goTo!.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n })\n } catch (e) {\n console.log('error on scroll', e)\n }\n } else if (\n currentTarget.id !== null &&\n anchor.getAttribute('data-anchor')\n ) {\n event.preventDefault()\n // handle table of contents widget\n const idOfContent = anchor.getAttribute('data-anchor')\n const goTo = currentTarget.querySelector(`[id=\"${idOfContent}\"]`)\n try {\n goTo!.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n })\n } catch (e) {\n console.log('error on scroll', e)\n }\n }\n }\n}\n\nexport function stripHTML(myHtmlString: string): string {\n const el = document.createElement('div')\n el.innerHTML = myHtmlString\n return el.textContent || el.innerText || ''\n}\n\nexport function transformStringIntoMarkdownProps(\n value: string,\n isRawMarkdown?: boolean,\n) {\n const newProps: MarkdownSynapseProps = {}\n if (isRawMarkdown) {\n newProps.markdown = value\n } else {\n if (value.includes('/wiki/')) {\n // value looks like syn20681023/wiki/594680\n const split = value.split('/')\n const ownerId = split[0]\n const wikiId = split[2]\n newProps.ownerId = ownerId\n newProps.wikiId = wikiId\n } else if (value) {\n // else assume it's an ownerId\n newProps.ownerId = value\n }\n }\n return newProps\n}\n\nconst md = new MarkdownIt()\n\nexport const markdownToPlainText = (markdown: string, maxLength?: number) => {\n if (!markdown || markdown.length === 0) {\n return ''\n }\n\n const html = md.render(markdown)\n const plainText = stripHTML(html)\n .replace(/\\|/g, '')\n .replace(/#/g, '')\n .replace(/<Synapse widget>/g, '')\n\n return maxLength ? truncateString(plainText, maxLength) : plainText\n}\n"],"names":["processMath","markupRef","mathExpressions","regEx","element","textContent","katex","decodeXml","xml","escapedOneToXmlSpecialMap","str","item","addIdsToReferenceWidgets","text","referenceRegex","referenceCount","current","addIdsToTocWidgets","tocId","tocIdCount","TOC_HEADER_REGEX","match","curTocId","handleLinkClicks","event","genericElement","currentTarget","anchor","referenceNumber","goTo","e","idOfContent","stripHTML","myHtmlString","el","transformStringIntoMarkdownProps","value","isRawMarkdown","newProps","split","ownerId","wikiId","md","MarkdownIt","markdownToPlainText","markdown","maxLength","html","plainText","truncateString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MarkdownUtils.js","sources":["../../../src/components/Markdown/MarkdownUtils.ts"],"sourcesContent":["import katex from 'katex'\nimport { RefObject } from 'react'\nimport { MarkdownSynapseProps } from './MarkdownSynapse'\nimport MarkdownIt from 'markdown-it'\nimport { truncateString } from '@/utils/functions/StringUtils'\n\n/**\n * Find all math identified elements of the form [id^=\\\"mathjax-\\\"]\n * (e.g. <dom element id=\"mathjax-10\"> text </dom element>)\n * and transform them to their math markdown equivalents\n */\nexport function processMath(markupRef: RefObject<HTMLElement | null>) {\n if (!markupRef.current) {\n return\n }\n // use regex to grab all elements\n const mathExpressions =\n markupRef.current.querySelectorAll<HTMLElement>('[id^=\"mathjax-\"]')\n // go through all obtained elements and transform them with katex\n const regEx = new RegExp(/\\\\[()[\\]]/, 'g') // Look for a '\\' followed by either '(', ')', '[', or ']'. We delete these strings since they interfere with katex processing.\n mathExpressions.forEach(element => {\n if (element.textContent && !element.getAttribute('processed')) {\n // only process a math element once, used to double/triple process\n element.setAttribute('processed', 'true')\n const textContent = element.textContent.replace(regEx, '')\n return katex.render(textContent, element, {\n output: 'html',\n throwOnError: false,\n })\n }\n })\n}\n\n/**\n * When the markdown string is transferred over the network certain characters get transformed,\n * this does a simple transformation back to the original user's string.\n *\n * @param {string} xml\n * @returns\n * @memberof MarkdownSynapse\n */\nexport function decodeXml(xml: string) {\n const escapedOneToXmlSpecialMap = {\n '&': '&',\n '>': '>',\n '<': '<',\n '"': '\"',\n }\n return xml.replace(\n /("|<|>|&)/g,\n (str: string, item: keyof typeof escapedOneToXmlSpecialMap) => {\n return escapedOneToXmlSpecialMap[item]\n },\n )\n}\n\nexport function addIdsToReferenceWidgets(text: string) {\n const referenceRegex =\n /<span.*?id=\"wikiReference.*?<span.*? data-widgetparams.*?span>/g\n let referenceCount = 1\n\n return text.replace(referenceRegex, () => {\n // replace all reference tags with id's of the form id=\"ref<number>\"\" that we can read onClick\n const current = referenceCount\n referenceCount += 1\n return `<a href=\"\" id=\"ref${current}\">[${current}]</a>`\n })\n}\n\nexport function addIdsToTocWidgets(text: string) {\n const tocId = 'SRC-header-'\n let tocIdCount = 1\n const TOC_HEADER_REGEX = /<h[1-6] toc=\"true\">.*<\\/h[1-6]>/gm\n\n return text.replace(TOC_HEADER_REGEX, (match: string) => {\n // replace with id of the form id=\"toc\" so we can read them with onclick events\n const curTocId = tocIdCount\n tocIdCount += 1\n const matchWithId = `${match.substring(\n 0,\n 3,\n )} id=\"${tocId}${curTocId}\"${match.substring(3)}`\n return matchWithId\n })\n}\n\n// Manually handle clicks to anchor tags where the scrollto isn't handled by page hash\nexport function handleLinkClicks(event: MouseEvent) {\n const genericElement = event.target as HTMLElement\n const currentTarget = event.currentTarget as HTMLElement\n if (genericElement.tagName === 'A' || genericElement.tagName === 'BUTTON') {\n const anchor = event.target as HTMLAnchorElement\n if (anchor.id.substring(0, 3) === 'ref') {\n event.preventDefault()\n\n // its a reference, so we scroll to the appropriate bookmark\n const referenceNumber = Number(currentTarget.id.substring(3)) // e.g. ref2 => '2'\n const goTo = currentTarget.querySelector(`#bookmark${referenceNumber}`)\n try {\n goTo!.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n })\n } catch (e) {\n console.log('error on scroll', e)\n }\n } else if (\n currentTarget.id !== null &&\n anchor.getAttribute('data-anchor')\n ) {\n event.preventDefault()\n // handle table of contents widget\n const idOfContent = anchor.getAttribute('data-anchor')\n const goTo = currentTarget.querySelector(`[id=\"${idOfContent}\"]`)\n try {\n goTo!.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n })\n } catch (e) {\n console.log('error on scroll', e)\n }\n }\n }\n}\n\nexport function stripHTML(myHtmlString: string): string {\n const el = document.createElement('div')\n el.innerHTML = myHtmlString\n return el.textContent || el.innerText || ''\n}\n\nexport function transformStringIntoMarkdownProps(\n value: string,\n isRawMarkdown?: boolean,\n) {\n const newProps: MarkdownSynapseProps = {}\n if (isRawMarkdown) {\n newProps.markdown = value\n } else {\n if (value.includes('/wiki/')) {\n // value looks like syn20681023/wiki/594680\n const split = value.split('/')\n const ownerId = split[0]\n const wikiId = split[2]\n newProps.ownerId = ownerId\n newProps.wikiId = wikiId\n } else if (value) {\n // else assume it's an ownerId\n newProps.ownerId = value\n }\n }\n return newProps\n}\n\nconst md = new MarkdownIt()\n\nexport const markdownToPlainText = (markdown: string, maxLength?: number) => {\n if (!markdown || markdown.length === 0) {\n return ''\n }\n\n const html = md.render(markdown)\n const plainText = stripHTML(html)\n .replace(/\\|/g, '')\n .replace(/#/g, '')\n .replace(/<Synapse widget>/g, '')\n\n return maxLength ? truncateString(plainText, maxLength) : plainText\n}\n\nconst blockLevelTags = [\n 'address',\n 'article',\n 'aside',\n 'blockquote',\n 'canvas',\n 'dd',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'li',\n 'main',\n 'nav',\n 'noscript',\n 'ol',\n 'p',\n 'pre',\n 'section',\n 'table',\n 'tfoot',\n 'ul',\n 'video',\n]\n\nconst inlineTags = ['span', 'a', 'em', 'strong', 'b', 'i', 'u', 'sub', 'sup']\n\nconst tableTags = ['table', 'thead', 'tbody', 'tr', 'tfoot']\n\n// Widget types that render inline elements and should not be treated as block-level\nconst inlineWidgetTypes = ['badge', 'image', 'imageLink', 'buttonlink']\n\nconst isInlineContainer = (node: Node): boolean => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const element = node as HTMLElement\n const tag = element.tagName.toLowerCase()\n return inlineTags.includes(tag)\n}\n\n// Check if a node is a block level element\nexport const isBlockLevelElement = (node: Node): boolean => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n const element = node as HTMLElement\n const tag = element.tagName.toLowerCase()\n const isStandardBlock = blockLevelTags.includes(tag)\n\n const widgetParams = element.getAttribute('data-widgetparams')\n const isWidget =\n widgetParams !== null &&\n !inlineWidgetTypes.includes(widgetParams.split('?')[0])\n\n return isStandardBlock || isWidget\n}\n\nfunction isValidNesting(child: HTMLElement, ancestor: HTMLElement): boolean {\n // case 1: block level elements cannot be inside of inline containers\n if (isBlockLevelElement(child) && isInlineContainer(ancestor)) {\n return false\n }\n\n // case 2: buttons cannot be nested inside of other buttons\n if (\n ancestor.tagName.toLowerCase() === 'button' &&\n child.tagName.toLowerCase() === 'button'\n ) {\n return false\n }\n\n // A <p> tag cannot contain block-level elements (including other <p> tags)\n if (ancestor.tagName.toLowerCase() === 'p' && isBlockLevelElement(child)) {\n return false\n }\n\n return true\n}\n\n/**\n * Fixes invalid HTML nesting (e.g., <div> inside <p>) in a single O(n) pass.\n * It compares the current 'node' against a stack of its 'ancestors'.\n * @param node - The current DOM node being inspected.\n * @param ancestors - An array of the current node's parent elements\n */\nexport function fixInvalidNesting(\n node: Node,\n ancestors: HTMLElement[] = [],\n): void {\n // Whitespace-only text nodes are invalid children of table structure elements and must be removed.\n if (node.nodeType === Node.TEXT_NODE) {\n const parentTag = (node.parentNode as HTMLElement)?.tagName?.toLowerCase()\n\n if (tableTags.includes(parentTag) && !node.textContent?.trim()) {\n node.parentNode?.removeChild(node)\n }\n\n return\n }\n\n // We only care about element nodes\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return\n }\n\n const element = node as HTMLElement\n\n // We check the current element against every ancestor in the stack to see if there is any invalid nesting.\n // We iterate backwards (from immediate parent to root) so we fix the closest invalid container first.\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const ancestor = ancestors[i]\n\n // if the nesting is invalid\n if (!isValidNesting(element, ancestor)) {\n // change the ancestor to a div\n const div = element.ownerDocument.createElement('div')\n\n // Preserve all original attributes\n Array.from(ancestor.attributes).forEach(attr =>\n div.setAttribute(attr.name, attr.value),\n )\n\n // Move all children from the old element to the new <div>\n while (ancestor.firstChild) {\n div.appendChild(ancestor.firstChild)\n }\n\n // replace the ancestor with the new div\n if (ancestor.parentNode) {\n ancestor.parentNode.replaceChild(div, ancestor)\n }\n\n ancestors[i] = div // Update our local stack to reference to the new div\n }\n }\n\n // Push the current element to the stack before traversing children\n ancestors.push(element)\n\n Array.from(element.childNodes).forEach(child => {\n fixInvalidNesting(child, ancestors)\n })\n\n // Pop the current element off the stack after traversing its children\n ancestors.pop()\n}\n"],"names":["processMath","markupRef","mathExpressions","regEx","element","textContent","katex","decodeXml","xml","escapedOneToXmlSpecialMap","str","item","addIdsToReferenceWidgets","text","referenceRegex","referenceCount","current","addIdsToTocWidgets","tocId","tocIdCount","TOC_HEADER_REGEX","match","curTocId","handleLinkClicks","event","genericElement","currentTarget","anchor","referenceNumber","goTo","e","idOfContent","stripHTML","myHtmlString","el","transformStringIntoMarkdownProps","value","isRawMarkdown","newProps","split","ownerId","wikiId","md","MarkdownIt","markdownToPlainText","markdown","maxLength","html","plainText","truncateString","blockLevelTags","inlineTags","tableTags","inlineWidgetTypes","isInlineContainer","node","tag","isBlockLevelElement","isStandardBlock","widgetParams","isWidget","isValidNesting","child","ancestor","fixInvalidNesting","ancestors","parentTag","i","div","attr"],"mappings":"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"}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as r, Fragment as l } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback as m } from "react";
|
|
3
|
-
import { DialogBase as
|
|
4
|
-
import { TYPE_FILTER as
|
|
5
|
-
import
|
|
3
|
+
import { DialogBase as p } from "../DialogBase.js";
|
|
4
|
+
import { TYPE_FILTER as s } from "@sage-bionetworks/synapse-types";
|
|
5
|
+
import u from "../UserSearchBox/UserSearchBox.js";
|
|
6
6
|
function v({
|
|
7
7
|
show: i,
|
|
8
|
-
onClose:
|
|
9
|
-
handleUserTag:
|
|
8
|
+
onClose: o,
|
|
9
|
+
handleUserTag: e
|
|
10
10
|
}) {
|
|
11
|
-
const
|
|
12
|
-
(
|
|
13
|
-
|
|
11
|
+
const a = m(
|
|
12
|
+
(n, t) => {
|
|
13
|
+
n && t && e(t.userName), o();
|
|
14
14
|
},
|
|
15
|
-
[
|
|
15
|
+
[o, e]
|
|
16
16
|
);
|
|
17
|
-
return /* @__PURE__ */
|
|
18
|
-
|
|
17
|
+
return /* @__PURE__ */ r(l, { children: /* @__PURE__ */ r(
|
|
18
|
+
p,
|
|
19
19
|
{
|
|
20
20
|
open: i,
|
|
21
|
-
onCancel:
|
|
21
|
+
onCancel: o,
|
|
22
22
|
title: "Find User or Team",
|
|
23
|
-
content: /* @__PURE__ */
|
|
24
|
-
|
|
23
|
+
content: /* @__PURE__ */ r(
|
|
24
|
+
u,
|
|
25
25
|
{
|
|
26
26
|
placeholder: "Search for a user or team name",
|
|
27
|
-
onChange:
|
|
28
|
-
typeFilter:
|
|
29
|
-
|
|
27
|
+
onChange: a,
|
|
28
|
+
typeFilter: s.ALL,
|
|
29
|
+
autoFocus: !0
|
|
30
30
|
}
|
|
31
31
|
),
|
|
32
32
|
sx: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMentionModal.js","sources":["../../../src/components/Markdown/UserMentionModal.tsx"],"sourcesContent":["import { useCallback } from 'react'\nimport { DialogBase } from '../DialogBase'\nimport { TYPE_FILTER, UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport
|
|
1
|
+
{"version":3,"file":"UserMentionModal.js","sources":["../../../src/components/Markdown/UserMentionModal.tsx"],"sourcesContent":["import { useCallback } from 'react'\nimport { DialogBase } from '../DialogBase'\nimport { TYPE_FILTER, UserGroupHeader } from '@sage-bionetworks/synapse-types'\nimport UserSearchBox from '../UserSearchBox/UserSearchBox'\n\nexport type UserMentionModalProps = {\n show: boolean\n onClose: () => void\n handleUserTag: (user: string) => void\n}\n\nexport function UserMentionModal({\n show,\n onClose,\n handleUserTag,\n}: UserMentionModalProps) {\n const onUserChange = useCallback(\n (selected: string | null, header: UserGroupHeader | null) => {\n if (selected && header) {\n handleUserTag(header.userName)\n }\n onClose()\n },\n [onClose, handleUserTag],\n )\n\n return (\n <>\n <DialogBase\n open={show}\n onCancel={onClose}\n title=\"Find User or Team\"\n content={\n <UserSearchBox\n placeholder=\"Search for a user or team name\"\n onChange={onUserChange}\n typeFilter={TYPE_FILTER.ALL}\n autoFocus={true}\n />\n }\n sx={{\n '.MuiDialog-paperFullWidth': {\n overflowY: 'visible',\n '.MuiDialogContent-root': { overflowY: 'visible' },\n },\n }}\n />\n </>\n )\n}\n"],"names":["UserMentionModal","show","onClose","handleUserTag","onUserChange","useCallback","selected","header","jsx","Fragment","DialogBase","UserSearchBox","TYPE_FILTER"],"mappings":";;;;;AAWO,SAASA,EAAiB;AAAA,EAC/B,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AACF,GAA0B;AACxB,QAAMC,IAAeC;AAAA,IACnB,CAACC,GAAyBC,MAAmC;AAC3D,MAAID,KAAYC,KACdJ,EAAcI,EAAO,QAAQ,GAE/BL,EAAA;AAAA,IACF;AAAA,IACA,CAACA,GAASC,CAAa;AAAA,EAAA;AAGzB,SACE,gBAAAK,EAAAC,GAAA,EACE,UAAA,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAMT;AAAA,MACN,UAAUC;AAAA,MACV,OAAM;AAAA,MACN,SACE,gBAAAM;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,UAAUP;AAAA,UACV,YAAYQ,EAAY;AAAA,UACxB,WAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAGf,IAAI;AAAA,QACF,6BAA6B;AAAA,UAC3B,WAAW;AAAA,UACX,0BAA0B,EAAE,WAAW,UAAA;AAAA,QAAU;AAAA,MACnD;AAAA,IACF;AAAA,EAAA,GAEJ;AAEJ;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import { WideButton as a } from "../../styled/WideButton.js";
|
|
3
3
|
import { useInRouterContext as g, Link as C } from "react-router";
|
|
4
|
-
function
|
|
4
|
+
function p(t) {
|
|
5
5
|
let n = "";
|
|
6
6
|
const { align: c = "", highlight: h = "" } = t, l = h === "true", r = c.toLowerCase();
|
|
7
7
|
r === "left" && (n += "floatleft "), r === "right" && (n += "floatright ");
|
|
@@ -38,9 +38,9 @@ function v(t) {
|
|
|
38
38
|
children: t.text
|
|
39
39
|
}
|
|
40
40
|
);
|
|
41
|
-
return i ? /* @__PURE__ */ e("
|
|
41
|
+
return i ? /* @__PURE__ */ e("span", { style: { display: "block", textAlign: "center" }, children: s }) : /* @__PURE__ */ e("span", { children: s });
|
|
42
42
|
}
|
|
43
43
|
export {
|
|
44
|
-
|
|
44
|
+
p as default
|
|
45
45
|
};
|
|
46
46
|
//# sourceMappingURL=MarkdownButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownButton.js","sources":["../../../../src/components/Markdown/widget/MarkdownButton.tsx"],"sourcesContent":["import WideButton from '@/components/styled/WideButton'\nimport { ButtonProps } from '@mui/material'\nimport { Link as RouterLink, useInRouterContext } from 'react-router'\n\nexport type ButtonLinkWidgetParams = {\n align?: string\n highlight?: string\n url?: string\n text?: string\n}\n\nexport default function MarkdownButton(\n widgetParamsMapped: ButtonLinkWidgetParams,\n) {\n let buttonClasses = ''\n const { align = '', highlight: _highlight = '' } = widgetParamsMapped\n const highlight = _highlight === 'true'\n const alignLowerCase = align.toLowerCase()\n if (alignLowerCase === 'left') {\n buttonClasses += 'floatleft '\n }\n if (alignLowerCase === 'right') {\n buttonClasses += 'floatright '\n }\n const buttonIsCenterAligned = alignLowerCase === 'center'\n const buttonColor = highlight ? 'secondary' : 'neutral'\n const isExternalLink =\n widgetParamsMapped.url?.startsWith('http://') ||\n widgetParamsMapped.url?.startsWith('https://')\n const inRouterContext = useInRouterContext()\n\n let linkProps: Partial<ButtonProps> & { target?: string; to?: string } = {}\n\n if (isExternalLink) {\n linkProps = {\n href: widgetParamsMapped.url,\n target: '_blank',\n rel: 'noopener noreferrer',\n component: 'a',\n }\n } else if (inRouterContext) {\n // For internal links, if we are in a react-router context, we want to use the RouterLink\n linkProps = {\n to: widgetParamsMapped.url,\n component: RouterLink,\n }\n } else {\n linkProps = {\n href: widgetParamsMapped.url,\n component: 'a',\n }\n }\n\n const button = (\n <WideButton\n className={buttonClasses}\n variant=\"contained\"\n color={buttonColor}\n {...linkProps}\n sx={{\n '&:hover': {\n backgroundColor: highlight ? undefined : 'secondary.main',\n color: 'white',\n },\n ...(!buttonIsCenterAligned &&\n widgetParamsMapped.url && {\n margin: '20px 20px 20px 0px',\n }),\n }}\n >\n {widgetParamsMapped.text}\n </WideButton>\n )\n\n return buttonIsCenterAligned ? (\n <
|
|
1
|
+
{"version":3,"file":"MarkdownButton.js","sources":["../../../../src/components/Markdown/widget/MarkdownButton.tsx"],"sourcesContent":["import WideButton from '@/components/styled/WideButton'\nimport { ButtonProps } from '@mui/material'\nimport { Link as RouterLink, useInRouterContext } from 'react-router'\n\nexport type ButtonLinkWidgetParams = {\n align?: string\n highlight?: string\n url?: string\n text?: string\n}\n\nexport default function MarkdownButton(\n widgetParamsMapped: ButtonLinkWidgetParams,\n) {\n let buttonClasses = ''\n const { align = '', highlight: _highlight = '' } = widgetParamsMapped\n const highlight = _highlight === 'true'\n const alignLowerCase = align.toLowerCase()\n if (alignLowerCase === 'left') {\n buttonClasses += 'floatleft '\n }\n if (alignLowerCase === 'right') {\n buttonClasses += 'floatright '\n }\n const buttonIsCenterAligned = alignLowerCase === 'center'\n const buttonColor = highlight ? 'secondary' : 'neutral'\n const isExternalLink =\n widgetParamsMapped.url?.startsWith('http://') ||\n widgetParamsMapped.url?.startsWith('https://')\n const inRouterContext = useInRouterContext()\n\n let linkProps: Partial<ButtonProps> & { target?: string; to?: string } = {}\n\n if (isExternalLink) {\n linkProps = {\n href: widgetParamsMapped.url,\n target: '_blank',\n rel: 'noopener noreferrer',\n component: 'a',\n }\n } else if (inRouterContext) {\n // For internal links, if we are in a react-router context, we want to use the RouterLink\n linkProps = {\n to: widgetParamsMapped.url,\n component: RouterLink,\n }\n } else {\n linkProps = {\n href: widgetParamsMapped.url,\n component: 'a',\n }\n }\n\n const button = (\n <WideButton\n className={buttonClasses}\n variant=\"contained\"\n color={buttonColor}\n {...linkProps}\n sx={{\n '&:hover': {\n backgroundColor: highlight ? undefined : 'secondary.main',\n color: 'white',\n },\n ...(!buttonIsCenterAligned &&\n widgetParamsMapped.url && {\n margin: '20px 20px 20px 0px',\n }),\n }}\n >\n {widgetParamsMapped.text}\n </WideButton>\n )\n\n return buttonIsCenterAligned ? (\n <span style={{ display: 'block', textAlign: 'center' }}>{button}</span>\n ) : (\n <span>{button}</span>\n )\n}\n"],"names":["MarkdownButton","widgetParamsMapped","buttonClasses","align","_highlight","highlight","alignLowerCase","buttonIsCenterAligned","buttonColor","isExternalLink","inRouterContext","useInRouterContext","linkProps","RouterLink","button","jsx","WideButton"],"mappings":";;;AAWA,SAAwBA,EACtBC,GACA;AACA,MAAIC,IAAgB;AACpB,QAAM,EAAE,OAAAC,IAAQ,IAAI,WAAWC,IAAa,OAAOH,GAC7CI,IAAYD,MAAe,QAC3BE,IAAiBH,EAAM,YAAA;AAC7B,EAAIG,MAAmB,WACrBJ,KAAiB,eAEfI,MAAmB,YACrBJ,KAAiB;AAEnB,QAAMK,IAAwBD,MAAmB,UAC3CE,IAAcH,IAAY,cAAc,WACxCI,IACJR,EAAmB,KAAK,WAAW,SAAS,KAC5CA,EAAmB,KAAK,WAAW,UAAU,GACzCS,IAAkBC,EAAA;AAExB,MAAIC,IAAqE,CAAA;AAEzE,EAAIH,IACFG,IAAY;AAAA,IACV,MAAMX,EAAmB;AAAA,IACzB,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,WAAW;AAAA,EAAA,IAEJS,IAETE,IAAY;AAAA,IACV,IAAIX,EAAmB;AAAA,IACvB,WAAWY;AAAAA,EAAA,IAGbD,IAAY;AAAA,IACV,MAAMX,EAAmB;AAAA,IACzB,WAAW;AAAA,EAAA;AAIf,QAAMa,IACJ,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWd;AAAA,MACX,SAAQ;AAAA,MACR,OAAOM;AAAA,MACN,GAAGI;AAAA,MACJ,IAAI;AAAA,QACF,WAAW;AAAA,UACT,iBAAiBP,IAAY,SAAY;AAAA,UACzC,OAAO;AAAA,QAAA;AAAA,QAET,GAAI,CAACE,KACHN,EAAmB,OAAO;AAAA,UACxB,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,MAGH,UAAAA,EAAmB;AAAA,IAAA;AAAA,EAAA;AAIxB,SAAOM,IACL,gBAAAQ,EAAC,QAAA,EAAK,OAAO,EAAE,SAAS,SAAS,WAAW,SAAA,GAAa,UAAAD,EAAA,CAAO,IAEhE,gBAAAC,EAAC,UAAM,UAAAD,GAAO;AAElB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MissingQueryResultsWarning.d.ts","sourceRoot":"","sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAU3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,KAAK,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;GAGG;AACH,iBAAS,0BAA0B,CAAC,EAClC,MAAM,GACP,EAAE,+BAA+B,
|
|
1
|
+
{"version":3,"file":"MissingQueryResultsWarning.d.ts","sourceRoot":"","sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAsB,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAU3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,KAAK,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;GAGG;AACH,iBAAS,0BAA0B,CAAC,EAClC,MAAM,GACP,EAAE,+BAA+B,2CAsEjC;AAED,eAAe,0BAA0B,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as o, Fragment as a, jsxs as p } from "react/jsx-runtime";
|
|
2
2
|
import "../../synapse-client/SynapseClient.js";
|
|
3
3
|
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
|
|
4
4
|
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
|
|
@@ -51,12 +51,13 @@ function X({
|
|
|
51
51
|
if (r && s && e) {
|
|
52
52
|
const i = s.responseBody.queryCount, m = e.items?.length ?? 0;
|
|
53
53
|
if (i >= m)
|
|
54
|
-
return /* @__PURE__ */
|
|
54
|
+
return /* @__PURE__ */ o(a, {});
|
|
55
55
|
const l = m - i;
|
|
56
|
-
let
|
|
57
|
-
return e.isLatestVersion ?
|
|
56
|
+
let t = "";
|
|
57
|
+
return e.isLatestVersion ? t = b : t = h, /* @__PURE__ */ p(
|
|
58
58
|
d,
|
|
59
59
|
{
|
|
60
|
+
component: "div",
|
|
60
61
|
className: "SRC-centerContent",
|
|
61
62
|
style: {
|
|
62
63
|
marginLeft: 10
|
|
@@ -64,7 +65,7 @@ function X({
|
|
|
64
65
|
variant: "smallText1",
|
|
65
66
|
color: "textSecondary",
|
|
66
67
|
children: [
|
|
67
|
-
/* @__PURE__ */
|
|
68
|
+
/* @__PURE__ */ o(
|
|
68
69
|
g,
|
|
69
70
|
{
|
|
70
71
|
className: "SRC-color-warning",
|
|
@@ -72,11 +73,11 @@ function X({
|
|
|
72
73
|
}
|
|
73
74
|
),
|
|
74
75
|
l.toLocaleString() + " Unavailable",
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ o(
|
|
76
77
|
S,
|
|
77
78
|
{
|
|
78
79
|
className: "SRC-margin-left-5",
|
|
79
|
-
markdownText:
|
|
80
|
+
markdownText: t,
|
|
80
81
|
placement: "right"
|
|
81
82
|
}
|
|
82
83
|
)
|
|
@@ -84,7 +85,7 @@ function X({
|
|
|
84
85
|
}
|
|
85
86
|
);
|
|
86
87
|
} else
|
|
87
|
-
return /* @__PURE__ */
|
|
88
|
+
return /* @__PURE__ */ o(a, {});
|
|
88
89
|
}
|
|
89
90
|
export {
|
|
90
91
|
X as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MissingQueryResultsWarning.js","sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { isEntityRefCollectionView } from '@/utils/functions/EntityTypeUtils'\nimport { WarningSharp } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { QueryBundleRequest, Table } from '@sage-bionetworks/synapse-types'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nconst DATASETS_CURRENT_VERSION_HELP =\n 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.'\n\n// Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot\nconst DATASETS_SNAPSHOT_HELP =\n 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.'\n\nexport type MissingQueryResultsWarningProps = {\n entity: Table\n versionNumber?: number\n}\n\n/**\n * If possible, this component will render a warning message if results may be missing from the query due to user permissions or\n * entities being deleted. If not possible, it will render an empty fragment.\n */\nfunction MissingQueryResultsWarning({\n entity,\n}: MissingQueryResultsWarningProps) {\n // Currently, Datasets and Dataset collections are the only table type for which we can reliably get this info.\n // Other cases will need a new service, tracked by PLFM-7046\n const isMissingResultsCalculable = entity && isEntityRefCollectionView(entity)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: {\n sql: `SELECT * FROM ${entity.id!}${\n !entity.isLatestVersion && entity.versionNumber\n ? `.${entity.versionNumber}`\n : ''\n }`,\n },\n entityId: entity.id!,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundleWithAsyncStatus(\n request,\n {\n enabled: isMissingResultsCalculable,\n },\n )\n if (isMissingResultsCalculable && queryResult && entity) {\n const totalVisibleResults = queryResult.responseBody!.queryCount!\n const totalResults = entity.items?.length ?? 0\n\n if (totalVisibleResults >= totalResults) {\n // All the results are visible, so there is no need to show a warning.\n // SWC-6727 / PLFM-8326 - `totalVisibleResults` should never be greater than `totalResults`, but in case it is (e.g. stale cache),\n // don't show the warning.\n return <></>\n }\n\n const difference = totalResults - totalVisibleResults\n\n let helpMessage = ''\n\n if (entity.isLatestVersion) {\n helpMessage = DATASETS_CURRENT_VERSION_HELP\n } else {\n helpMessage = DATASETS_SNAPSHOT_HELP\n }\n\n return (\n <Typography\n className=\"SRC-centerContent\"\n style={{\n marginLeft: 10,\n }}\n variant=\"smallText1\"\n color=\"textSecondary\"\n >\n <WarningSharp\n className=\"SRC-color-warning\"\n style={{ fontSize: '16px' }}\n />\n {difference.toLocaleString() + ' Unavailable'}\n <HelpPopover\n className=\"SRC-margin-left-5\"\n markdownText={helpMessage}\n placement=\"right\"\n ></HelpPopover>\n </Typography>\n )\n } else {\n return <></>\n }\n}\n\nexport default MissingQueryResultsWarning\n"],"names":["DATASETS_CURRENT_VERSION_HELP","DATASETS_SNAPSHOT_HELP","MissingQueryResultsWarning","entity","isMissingResultsCalculable","isEntityRefCollectionView","request","SynapseConstants.BUNDLE_MASK_QUERY_COUNT","queryResult","useGetQueryResultBundleWithAsyncStatus","totalVisibleResults","totalResults","jsx","Fragment","difference","helpMessage","jsxs","Typography","WarningSharp","HelpPopover"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAMA,IACJ,2IAGIC,IACJ;AAWF,SAASC,EAA2B;AAAA,EAClC,QAAAC;AACF,GAAoC;AAGlC,QAAMC,IAA6BD,KAAUE,EAA0BF,CAAM,GAEvEG,IAA8B;AAAA,IAClC,cAAc;AAAA,IACd,OAAO;AAAA,MACL,KAAK,iBAAiBH,EAAO,EAAG,GAC9B,CAACA,EAAO,mBAAmBA,EAAO,gBAC9B,IAAIA,EAAO,aAAa,KACxB,EACN;AAAA,IAAA;AAAA,IAEF,UAAUA,EAAO;AAAA,IACjB,UAAUI;AAAAA,EAAiB,GAGvB,EAAE,MAAMC,EAAA,IAAgBC;AAAA,IAC5BH;AAAA,IACA;AAAA,MACE,SAASF;AAAA,IAAA;AAAA,EACX;AAEF,MAAIA,KAA8BI,KAAeL,GAAQ;AACvD,UAAMO,IAAsBF,EAAY,aAAc,YAChDG,IAAeR,EAAO,OAAO,UAAU;AAE7C,QAAIO,KAAuBC;AAIzB,aAAO,gBAAAC,EAAAC,GAAA,EAAE;AAGX,UAAMC,IAAaH,IAAeD;AAElC,QAAIK,IAAc;AAElB,WAAIZ,EAAO,kBACTY,IAAcf,IAEde,IAAcd,GAId,gBAAAe;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,YAAY;AAAA,QAAA;AAAA,QAEd,SAAQ;AAAA,QACR,OAAM;AAAA,QAEN,UAAA;AAAA,UAAA,gBAAAL;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,UAAU,OAAA;AAAA,YAAO;AAAA,UAAA;AAAA,UAE3BJ,EAAW,mBAAmB;AAAA,UAC/B,gBAAAF;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAcJ;AAAA,cACd,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACE,WAAO,gBAAAH,EAAAC,GAAA,EAAE;AAEb;"}
|
|
1
|
+
{"version":3,"file":"MissingQueryResultsWarning.js","sources":["../../../src/components/MissingQueryResultsWarning/MissingQueryResultsWarning.tsx"],"sourcesContent":["import { useGetQueryResultBundleWithAsyncStatus } from '@/synapse-queries'\nimport { SynapseConstants } from '@/utils'\nimport { isEntityRefCollectionView } from '@/utils/functions/EntityTypeUtils'\nimport { WarningSharp } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { QueryBundleRequest, Table } from '@sage-bionetworks/synapse-types'\nimport { HelpPopover } from '../HelpPopover/HelpPopover'\n\nconst DATASETS_CURRENT_VERSION_HELP =\n 'Files may be unavailable because you do not have permission to see them, they have been deleted, or the Dataset has been misconfigured.'\n\n// Help text for snapshot does not indicate that files were deleted, because the deleted file would have been captured in the snapshot\nconst DATASETS_SNAPSHOT_HELP =\n 'Files may be unavailable because you do not have permission to see them or the Dataset was misconfigured.'\n\nexport type MissingQueryResultsWarningProps = {\n entity: Table\n versionNumber?: number\n}\n\n/**\n * If possible, this component will render a warning message if results may be missing from the query due to user permissions or\n * entities being deleted. If not possible, it will render an empty fragment.\n */\nfunction MissingQueryResultsWarning({\n entity,\n}: MissingQueryResultsWarningProps) {\n // Currently, Datasets and Dataset collections are the only table type for which we can reliably get this info.\n // Other cases will need a new service, tracked by PLFM-7046\n const isMissingResultsCalculable = entity && isEntityRefCollectionView(entity)\n\n const request: QueryBundleRequest = {\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n query: {\n sql: `SELECT * FROM ${entity.id!}${\n !entity.isLatestVersion && entity.versionNumber\n ? `.${entity.versionNumber}`\n : ''\n }`,\n },\n entityId: entity.id!,\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_COUNT,\n }\n\n const { data: queryResult } = useGetQueryResultBundleWithAsyncStatus(\n request,\n {\n enabled: isMissingResultsCalculable,\n },\n )\n if (isMissingResultsCalculable && queryResult && entity) {\n const totalVisibleResults = queryResult.responseBody!.queryCount!\n const totalResults = entity.items?.length ?? 0\n\n if (totalVisibleResults >= totalResults) {\n // All the results are visible, so there is no need to show a warning.\n // SWC-6727 / PLFM-8326 - `totalVisibleResults` should never be greater than `totalResults`, but in case it is (e.g. stale cache),\n // don't show the warning.\n return <></>\n }\n\n const difference = totalResults - totalVisibleResults\n\n let helpMessage = ''\n\n if (entity.isLatestVersion) {\n helpMessage = DATASETS_CURRENT_VERSION_HELP\n } else {\n helpMessage = DATASETS_SNAPSHOT_HELP\n }\n\n return (\n <Typography\n component={'div'}\n className=\"SRC-centerContent\"\n style={{\n marginLeft: 10,\n }}\n variant=\"smallText1\"\n color=\"textSecondary\"\n >\n <WarningSharp\n className=\"SRC-color-warning\"\n style={{ fontSize: '16px' }}\n />\n {difference.toLocaleString() + ' Unavailable'}\n <HelpPopover\n className=\"SRC-margin-left-5\"\n markdownText={helpMessage}\n placement=\"right\"\n ></HelpPopover>\n </Typography>\n )\n } else {\n return <></>\n }\n}\n\nexport default MissingQueryResultsWarning\n"],"names":["DATASETS_CURRENT_VERSION_HELP","DATASETS_SNAPSHOT_HELP","MissingQueryResultsWarning","entity","isMissingResultsCalculable","isEntityRefCollectionView","request","SynapseConstants.BUNDLE_MASK_QUERY_COUNT","queryResult","useGetQueryResultBundleWithAsyncStatus","totalVisibleResults","totalResults","jsx","Fragment","difference","helpMessage","jsxs","Typography","WarningSharp","HelpPopover"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAMA,IACJ,2IAGIC,IACJ;AAWF,SAASC,EAA2B;AAAA,EAClC,QAAAC;AACF,GAAoC;AAGlC,QAAMC,IAA6BD,KAAUE,EAA0BF,CAAM,GAEvEG,IAA8B;AAAA,IAClC,cAAc;AAAA,IACd,OAAO;AAAA,MACL,KAAK,iBAAiBH,EAAO,EAAG,GAC9B,CAACA,EAAO,mBAAmBA,EAAO,gBAC9B,IAAIA,EAAO,aAAa,KACxB,EACN;AAAA,IAAA;AAAA,IAEF,UAAUA,EAAO;AAAA,IACjB,UAAUI;AAAAA,EAAiB,GAGvB,EAAE,MAAMC,EAAA,IAAgBC;AAAA,IAC5BH;AAAA,IACA;AAAA,MACE,SAASF;AAAA,IAAA;AAAA,EACX;AAEF,MAAIA,KAA8BI,KAAeL,GAAQ;AACvD,UAAMO,IAAsBF,EAAY,aAAc,YAChDG,IAAeR,EAAO,OAAO,UAAU;AAE7C,QAAIO,KAAuBC;AAIzB,aAAO,gBAAAC,EAAAC,GAAA,EAAE;AAGX,UAAMC,IAAaH,IAAeD;AAElC,QAAIK,IAAc;AAElB,WAAIZ,EAAO,kBACTY,IAAcf,IAEde,IAAcd,GAId,gBAAAe;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,WAAU;AAAA,QACV,OAAO;AAAA,UACL,YAAY;AAAA,QAAA;AAAA,QAEd,SAAQ;AAAA,QACR,OAAM;AAAA,QAEN,UAAA;AAAA,UAAA,gBAAAL;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,UAAU,OAAA;AAAA,YAAO;AAAA,UAAA;AAAA,UAE3BJ,EAAW,mBAAmB;AAAA,UAC/B,gBAAAF;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,cAAcJ;AAAA,cACd,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACE,WAAO,gBAAAH,EAAAC,GAAA,EAAE;AAEb;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.SynapsePlot--clickable .main-svg{overflow:visible!important}.SynapsePlot--clickable .main-svg .draglayer{cursor:pointer!important}
|
|
@@ -3,6 +3,7 @@ import { FacetColumnRequest, QueryFilter } from '@sage-bionetworks/synapse-types
|
|
|
3
3
|
import Plotly, { AxisType, PlotType } from 'plotly.js-basic-dist';
|
|
4
4
|
import { QueryContextType } from '../QueryContext';
|
|
5
5
|
import { QueryWrapperSynapsePlotRowClickEvent } from '../QueryWrapperPlotNav/QueryWrapperSynapsePlot';
|
|
6
|
+
import './SynapsePlot.scss';
|
|
6
7
|
export type SynapsePlotWidgetParams = {
|
|
7
8
|
query: string;
|
|
8
9
|
title?: string;
|
|
@@ -14,6 +15,7 @@ export type SynapsePlotWidgetParams = {
|
|
|
14
15
|
horizontal?: boolean;
|
|
15
16
|
barmode?: Plotly.Layout['barmode'];
|
|
16
17
|
displayModeBar?: Plotly.Config['displayModeBar'];
|
|
18
|
+
hoverinfo?: Plotly.PlotData['hoverinfo'];
|
|
17
19
|
};
|
|
18
20
|
export type QueryWrapperPlotNavCustomPlotParams = {
|
|
19
21
|
selectedFacets: FacetColumnRequest[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SynapsePlot.d.ts","sourceRoot":"","sources":["../../../src/components/Plot/SynapsePlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EACL,kBAAkB,EAElB,WAAW,EAEZ,MAAM,iCAAiC,CAAA;AACxC,OAAO,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAA;
|
|
1
|
+
{"version":3,"file":"SynapsePlot.d.ts","sourceRoot":"","sources":["../../../src/components/Plot/SynapsePlot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,EACL,kBAAkB,EAElB,WAAW,EAEZ,MAAM,iCAAiC,CAAA;AACxC,OAAO,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAA;AAErG,OAAO,oBAAoB,CAAA;AAE3B,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACnC,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACxC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;CACzC,CAAA;AAGD,MAAM,MAAM,mCAAmC,GAAG;IAChD,cAAc,EAAE,kBAAkB,EAAE,CAAA;IACpC,iBAAiB,EAAE,WAAW,EAAE,CAAA;IAChC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,oCAAoC,KAAK,IAAI,CAAA;IACzE,YAAY,CAAC,EAAE,gBAAgB,CAAA;CAChC,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,gBAAgB,CAAC,EAAE,mCAAmC,CAAA;CACvD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,KAAG,KAAK,CAAC,SAuH3D,CAAA;AAED,eAAe,WAAW,CAAA"}
|