synapse-react-client 4.0.21 → 4.0.23
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/assets/icons/GeneticsIcon.d.ts +3 -0
- package/dist/assets/icons/GeneticsIcon.d.ts.map +1 -0
- package/dist/assets/icons/GeneticsIcon.js +14 -0
- package/dist/assets/icons/GeneticsIcon.js.map +1 -0
- package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
- package/dist/components/CardContainer/CardContainer.js +43 -49
- package/dist/components/CardContainer/CardContainer.js.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +13 -0
- package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
- package/dist/components/CardContainerLogic/CardContainerLogic.js +64 -40
- package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
- package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
- package/dist/components/DataExplorer/DataExplorer.css +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 +0 -1
- package/dist/components/DataGrid/DataGrid.d.ts +1 -0
- package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/DataGrid.js +72 -72
- package/dist/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/SynapseGrid.js +209 -206
- package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +2 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +51 -42
- package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
- package/dist/components/DataGrid/useDataGridWebsocket.js +68 -67
- package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.d.ts +1 -0
- package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/columnFactory.js +4 -3
- package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.d.ts +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.d.ts.map +1 -1
- package/dist/components/DataGrid/utils/modelColsToGrid.js +15 -14
- package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
- package/dist/components/DataGrid/utils/normalizeWebsocketError.d.ts +7 -0
- package/dist/components/DataGrid/utils/normalizeWebsocketError.d.ts.map +1 -0
- package/dist/components/DataGrid/utils/normalizeWebsocketError.js +8 -0
- package/dist/components/DataGrid/utils/normalizeWebsocketError.js.map +1 -0
- package/dist/components/EntityCitation/EntityCitation.d.ts.map +1 -1
- package/dist/components/EntityCitation/EntityCitation.js +23 -8
- package/dist/components/EntityCitation/EntityCitation.js.map +1 -1
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.d.ts +18 -0
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.d.ts.map +1 -0
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js +112 -0
- package/dist/components/GenericCard/DuoTermTags/DuoTermTags.js.map +1 -0
- package/dist/components/GenericCard/DuoTermTags/duoTerms.d.ts +31 -0
- package/dist/components/GenericCard/DuoTermTags/duoTerms.d.ts.map +1 -0
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js +198 -0
- package/dist/components/GenericCard/DuoTermTags/duoTerms.js.map +1 -0
- package/dist/components/GenericCard/SynapseCardLabel.d.ts.map +1 -1
- package/dist/components/GenericCard/SynapseCardLabel.js +4 -8
- package/dist/components/GenericCard/SynapseCardLabel.js.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.d.ts +6 -0
- package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
- package/dist/components/GenericCard/TableRowGenericCard.js +168 -153
- package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
- package/dist/components/Goals/Goals.d.ts +8 -0
- package/dist/components/Goals/Goals.d.ts.map +1 -1
- package/dist/components/Goals/Goals.js +54 -40
- package/dist/components/Goals/Goals.js.map +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts +1 -1
- package/dist/components/IconSvg/IconSvg.d.ts.map +1 -1
- package/dist/components/IconSvg/IconSvg.js +19 -18
- package/dist/components/IconSvg/IconSvg.js.map +1 -1
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.d.ts +9 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.d.ts.map +1 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +69 -0
- package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js.map +1 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.d.ts +13 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.d.ts.map +1 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.js +11 -0
- package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.js.map +1 -0
- package/dist/components/ProjectVisibilityChip/index.d.ts +5 -0
- package/dist/components/ProjectVisibilityChip/index.d.ts.map +1 -0
- package/dist/components/ProjectVisibilityChip/index.js +7 -0
- package/dist/components/ProjectVisibilityChip/index.js.map +1 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.d.ts +21 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationContext.js.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts +10 -0
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +66 -60
- package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +2 -0
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/RowSetView.js +9 -12
- package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.d.ts +7 -15
- package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
- package/dist/components/RssFeedCards/RssFeedCards.js +114 -123
- package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +33 -6
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +93 -55
- package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts +3 -0
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js +39 -37
- package/dist/components/SearchQueryWrapper/SearchQueryWrapper.js.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts +3 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js +4 -0
- package/dist/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.js.map +1 -1
- package/dist/components/UserCardList/UserCardList.d.ts +2 -20
- package/dist/components/UserCardList/UserCardList.d.ts.map +1 -1
- package/dist/components/UserCardList/UserCardList.js +49 -72
- package/dist/components/UserCardList/UserCardList.js.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.d.ts +13 -0
- package/dist/components/UserCardList/UserCardListRotate.d.ts.map +1 -1
- package/dist/components/UserCardList/UserCardListRotate.js +82 -57
- package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts +5 -2
- package/dist/components/entity/page/action_menu/EntityActionMenu.d.ts.map +1 -1
- package/dist/components/entity/page/action_menu/EntityActionMenu.js +68 -51
- package/dist/components/entity/page/action_menu/EntityActionMenu.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/menu/ComplexMenu.d.ts +8 -1
- package/dist/components/menu/ComplexMenu.d.ts.map +1 -1
- package/dist/components/menu/ComplexMenu.js +50 -20
- package/dist/components/menu/ComplexMenu.js.map +1 -1
- package/dist/components/widgets/facet-nav/FacetValueChip.d.ts +25 -0
- package/dist/components/widgets/facet-nav/FacetValueChip.d.ts.map +1 -0
- package/dist/components/widgets/facet-nav/FacetValueChip.js +40 -0
- package/dist/components/widgets/facet-nav/FacetValueChip.js.map +1 -0
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.d.ts +10 -5
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js +10 -17
- package/dist/components/widgets/facet-nav/SelectionCriteriaPill.js.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.d.ts.map +1 -1
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js +11 -10
- package/dist/components/widgets/facet-nav/SelectionCriteriaPills.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js +70 -54
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilter.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts +2 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js +17 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterOption.js.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts +2 -0
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.d.ts.map +1 -1
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js +7 -7
- package/dist/components/widgets/query-filter/EnumFacetFilter/EnumFacetFilterUI.js.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.d.ts.map +1 -1
- package/dist/features/curator/dashboard/components/CurationTaskCard.js +99 -45
- package/dist/features/curator/dashboard/components/CurationTaskCard.js.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js +174 -149
- package/dist/features/entity/metadata-task/components/CreateOrUpdateCurationTaskDialog.js.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.d.ts +6 -0
- package/dist/features/entity/metadata-task/utils/constants.d.ts.map +1 -1
- package/dist/features/entity/metadata-task/utils/constants.js +19 -2
- package/dist/features/entity/metadata-task/utils/constants.js.map +1 -1
- package/dist/style/abstracts/_cssVariables.scss +1 -0
- package/dist/style/components/_total-query-results.scss +10 -34
- package/dist/style/main.css +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +1 -0
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +3 -0
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.d.ts.map +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js +1 -1
- package/dist/synapse-queries/curation/task/useCurationTask.js.map +1 -1
- package/dist/synapse-queries/index.js +46 -44
- package/dist/synapse-queries/user/index.js +3 -3
- package/dist/synapse-queries/user/useUserBundle.d.ts +12 -0
- package/dist/synapse-queries/user/useUserBundle.d.ts.map +1 -1
- package/dist/synapse-queries/user/useUserBundle.js +50 -36
- package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.d.ts +10 -5
- package/dist/utils/AppUtils/session/SessionInitializedGuard.d.ts.map +1 -1
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js +13 -9
- package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts +1 -1
- package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
- package/dist/utils/functions/SqlFunctions.js +1 -1
- package/dist/utils/functions/SqlFunctions.js.map +1 -1
- package/package.json +4 -4
|
@@ -24,13 +24,15 @@ type SearchQueryWrapperPlotNavOwnProps = {
|
|
|
24
24
|
initialLimit?: number;
|
|
25
25
|
hideTopLevelControls?: boolean;
|
|
26
26
|
};
|
|
27
|
-
export type SearchQueryWrapperPlotNavProps = SearchQueryWrapperPlotNavOwnProps & PlotsContainerProps & Pick<QueryVisualizationWrapperProps, 'defaultShowPlots' | 'visibleColumnCount' | 'hiddenColumns' | 'columnAliases' | 'rgbIndex' | 'showLastUpdatedOn' | 'noContentPlaceholderType' | 'unitDescription' | 'helpConfiguration' | 'hideCopyToClipboard' | 'hideVisualizationsControl' | 'lockTextMatchesQueryFilterPill' | 'hideSearchBarControl' | 'defaultShowSearchBar'> & Pick<TopLevelControlsProps, 'name' | 'hideQueryCount'> & {
|
|
27
|
+
export type SearchQueryWrapperPlotNavProps = SearchQueryWrapperPlotNavOwnProps & PlotsContainerProps & Pick<QueryVisualizationWrapperProps, 'defaultShowPlots' | 'visibleColumnCount' | 'hiddenColumns' | 'columnAliases' | 'renderFacetValue' | 'rgbIndex' | 'showLastUpdatedOn' | 'noContentPlaceholderType' | 'unitDescription' | 'helpConfiguration' | 'hideCopyToClipboard' | 'hideVisualizationsControl' | 'lockTextMatchesQueryFilterPill' | 'hideSearchBarControl' | 'defaultShowSearchBar'> & Pick<TopLevelControlsProps, 'name' | 'hideQueryCount'> & {
|
|
28
28
|
/** Optional initial query parameters. Only selectedFacets, additionalFilters, limit, and offset are used. */
|
|
29
29
|
initQueryRequest?: SearchQueryWrapperProps['initQueryRequest'];
|
|
30
30
|
/** Called when the query result bundle changes (e.g. to report result counts to a parent). */
|
|
31
31
|
onQueryResultBundleChange?: SearchQueryWrapperProps['onQueryResultBundleChange'];
|
|
32
32
|
/** Whether the URL should update when the query is modified (deep linking). */
|
|
33
33
|
shouldDeepLink?: SearchQueryWrapperProps['shouldDeepLink'];
|
|
34
|
+
/** OpenSearch query strategy and field-boost configuration. Forwarded to SearchQueryWrapper. */
|
|
35
|
+
searchQueryConfig?: SearchQueryWrapperProps['searchQueryConfig'];
|
|
34
36
|
};
|
|
35
37
|
/**
|
|
36
38
|
* Type guard that identifies a SearchQueryWrapperPlotNavProps from the union
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchQueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAEL,8BAA8B,EAC/B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAEL,uBAAuB,EACxB,MAAM,0CAA0C,CAAA;AAIjD,KAAK,iCAAiC,GAAG;IACvC,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,2HAA2H;IAC3H,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,yBAAyB,CAAA;IAC9C,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,4BAA4B,CAAC,EAAE,wBAAwB,CAAC,8BAA8B,CAAC,CAAA;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAI/B,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,iCAAiC,GAC5E,mBAAmB,GACnB,IAAI,CACF,8BAA8B,EAC5B,kBAAkB,GAClB,oBAAoB,GACpB,eAAe,GACf,eAAe,GACf,UAAU,GACV,mBAAmB,GACnB,0BAA0B,GAC1B,iBAAiB,GACjB,mBAAmB,GACnB,qBAAqB,GACrB,2BAA2B,GAC3B,gCAAgC,GAChC,sBAAsB,GACtB,sBAAsB,CACzB,GACD,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG;IACvD,6GAA6G;IAC7G,gBAAgB,CAAC,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAA;IAC9D,8FAA8F;IAC9F,yBAAyB,CAAC,EAAE,uBAAuB,CAAC,2BAA2B,CAAC,CAAA;IAChF,+EAA+E;IAC/E,cAAc,CAAC,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"SearchQueryWrapperPlotNav.d.ts","sourceRoot":"","sources":["../../../src/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAEL,8BAA8B,EAC/B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAEL,uBAAuB,EACxB,MAAM,0CAA0C,CAAA;AAIjD,KAAK,iCAAiC,GAAG;IACvC,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,2HAA2H;IAC3H,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,yBAAyB,CAAA;IAC9C,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,eAAe,CAAC,EAAE,wBAAwB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,4BAA4B,CAAC,EAAE,wBAAwB,CAAC,8BAA8B,CAAC,CAAA;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAI/B,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,iCAAiC,GAC5E,mBAAmB,GACnB,IAAI,CACF,8BAA8B,EAC5B,kBAAkB,GAClB,oBAAoB,GACpB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,UAAU,GACV,mBAAmB,GACnB,0BAA0B,GAC1B,iBAAiB,GACjB,mBAAmB,GACnB,qBAAqB,GACrB,2BAA2B,GAC3B,gCAAgC,GAChC,sBAAsB,GACtB,sBAAsB,CACzB,GACD,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG;IACvD,6GAA6G;IAC7G,gBAAgB,CAAC,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAA;IAC9D,8FAA8F;IAC9F,yBAAyB,CAAC,EAAE,uBAAuB,CAAC,2BAA2B,CAAC,CAAA;IAChF,+EAA+E;IAC/E,cAAc,CAAC,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,CAAA;IAC1D,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,CAAA;CACjE,CAAA;AAEH;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GAAG,MAAM,IAAI,8BAA8B,CAE3C;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,KAAK,EAAE,8BAA8B,2CA4GtC"}
|
|
@@ -19,6 +19,7 @@ function d(u) {
|
|
|
19
19
|
query: {
|
|
20
20
|
selectedFacets: h?.query?.selectedFacets,
|
|
21
21
|
additionalFilters: h?.query?.additionalFilters,
|
|
22
|
+
sort: h?.query?.sort,
|
|
22
23
|
limit: h?.query?.limit ?? 25,
|
|
23
24
|
offset: h?.query?.offset ?? 0
|
|
24
25
|
}
|
|
@@ -29,12 +30,15 @@ function d(u) {
|
|
|
29
30
|
isInfinite: f,
|
|
30
31
|
onQueryResultBundleChange: g,
|
|
31
32
|
shouldDeepLink: y,
|
|
33
|
+
searchQueryConfig: u.searchQueryConfig,
|
|
32
34
|
children: /* @__PURE__ */ c(o, {
|
|
33
35
|
fallback: /* @__PURE__ */ c(n, {}),
|
|
34
36
|
children: /* @__PURE__ */ c(t, {
|
|
35
37
|
unitDescription: p,
|
|
36
38
|
rgbIndex: u.rgbIndex,
|
|
37
39
|
columnAliases: u.columnAliases,
|
|
40
|
+
renderFacetValue: u.renderFacetValue,
|
|
41
|
+
dataUseModifiersColumnName: u.cardConfiguration?.genericCardSchema?.dataUseModifiersColumnName,
|
|
38
42
|
helpConfiguration: m,
|
|
39
43
|
visibleColumnCount: u.visibleColumnCount,
|
|
40
44
|
hiddenColumns: u.hiddenColumns,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchQueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.tsx"],"sourcesContent":["import { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Suspense, useRef } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport { TopLevelControlsProps } from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { PlotsContainerProps } from '../widgets/facet-nav/PlotsContainer'\nimport { FacetFilterControlsProps } from '../widgets/query-filter/FacetFilterControls'\nimport {\n SearchQueryWrapper,\n SearchQueryWrapperProps,\n} from '../SearchQueryWrapper/SearchQueryWrapper'\nimport { QueryWrapperPlotNavContents } from '../QueryWrapperPlotNav/QueryWrapperPlotNav'\nimport { useGetSuggestionsForSearchIndex } from '../SearchQueryWrapper/SearchQueryUseQueryOptions'\n\ntype SearchQueryWrapperPlotNavOwnProps = {\n /** The ID of the SearchIndex entity to query. */\n searchIndexId: string\n /**\n * The name of the field to use for autocomplete suggestions.\n * When provided, the search bar will show a dropdown of suggestions as the user types,\n * populated by querying the search index with this field restricted via POST /search/autocomplete.\n */\n autocompleteFieldName?: string\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n initialLimit?: number\n hideTopLevelControls?: boolean\n // Note: hideDownload, hideSqlEditorControl are intentionally\n // excluded — they are hardcoded to true because these controls are not applicable to the\n // SearchQueryServicesApi (no file download, no SQL editing).\n}\n\nexport type SearchQueryWrapperPlotNavProps = SearchQueryWrapperPlotNavOwnProps &\n PlotsContainerProps &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideVisualizationsControl'\n | 'lockTextMatchesQueryFilterPill'\n | 'hideSearchBarControl'\n | 'defaultShowSearchBar'\n > &\n Pick<TopLevelControlsProps, 'name' | 'hideQueryCount'> & {\n /** Optional initial query parameters. Only selectedFacets, additionalFilters, limit, and offset are used. */\n initQueryRequest?: SearchQueryWrapperProps['initQueryRequest']\n /** Called when the query result bundle changes (e.g. to report result counts to a parent). */\n onQueryResultBundleChange?: SearchQueryWrapperProps['onQueryResultBundleChange']\n /** Whether the URL should update when the query is modified (deep linking). */\n shouldDeepLink?: SearchQueryWrapperProps['shouldDeepLink']\n }\n\n/**\n * Type guard that identifies a SearchQueryWrapperPlotNavProps from the union\n * `QueryWrapperPlotNavProps | SearchQueryWrapperPlotNavProps`.\n *\n * Two conditions are checked to be robust against future API changes:\n * 1. The config has `searchIndexId` (present only on SearchQueryWrapperPlotNavProps).\n * 2. The config does NOT have `sql` (always present on QueryWrapperPlotNavProps via\n * QueryOrDeprecatedSearchParams), so that if QueryWrapperPlotNavProps ever gains a\n * `searchIndexId` field the guard remains correct.\n */\nexport function isSearchQueryWrapperPlotNavProps(config: {\n searchIndexId?: unknown\n sql?: unknown\n}): config is SearchQueryWrapperPlotNavProps {\n return 'searchIndexId' in config && !('sql' in config)\n}\n\n/**\n * A component similar to QueryWrapperPlotNav that sources its data from the SearchQueryServicesApi\n * rather than the standard Synapse Table Services. Facets, table/card rendering, and plots are\n * all reused from the existing component library.\n */\nexport default function SearchQueryWrapperPlotNav(\n props: SearchQueryWrapperPlotNavProps,\n) {\n const {\n tableConfiguration,\n isInfinite = !tableConfiguration,\n unitDescription,\n helpConfiguration,\n initQueryRequest: initQueryRequestFromProps,\n onQueryResultBundleChange,\n searchIndexId,\n autocompleteFieldName,\n shouldDeepLink,\n } = props\n\n const getSuggestions = useGetSuggestionsForSearchIndex(\n searchIndexId,\n autocompleteFieldName,\n )\n\n const initQueryRequest: SearchQueryWrapperProps['initQueryRequest'] =\n useDeepCompareMemoize({\n partMask: initQueryRequestFromProps?.partMask ?? 0,\n query: {\n selectedFacets: initQueryRequestFromProps?.query?.selectedFacets,\n additionalFilters: initQueryRequestFromProps?.query?.additionalFilters,\n limit: initQueryRequestFromProps?.query?.limit ?? DEFAULT_PAGE_SIZE,\n offset: initQueryRequestFromProps?.query?.offset ?? 0,\n },\n })\n\n // Remount SearchQueryWrapper when initQueryRequest content changes.\n // useDeepCompareMemoize returns the same reference when content is equal, so reference\n // comparison is sufficient here. A counter is used rather than JSON.stringify to avoid\n // serializing the object on every render.\n const mountKeyRef = useRef(0)\n const prevInitQueryRef = useRef(initQueryRequest)\n if (prevInitQueryRef.current !== initQueryRequest) {\n mountKeyRef.current += 1\n prevInitQueryRef.current = initQueryRequest\n }\n\n return (\n <SearchQueryWrapper\n key={mountKeyRef.current}\n searchIndexId={searchIndexId}\n initQueryRequest={initQueryRequest}\n isInfinite={isInfinite}\n onQueryResultBundleChange={onQueryResultBundleChange}\n shouldDeepLink={shouldDeepLink}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n hideSearchBarControl={props.hideSearchBarControl ?? false}\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n defaultShowSearchBar={props.defaultShowSearchBar ?? true}\n showLastUpdatedOn={props.showLastUpdatedOn}\n noContentPlaceholderType={\n props.noContentPlaceholderType ??\n NoContentPlaceholderType.INTERACTIVE\n }\n >\n <QueryWrapperPlotNavContents\n tableConfiguration={tableConfiguration}\n name={props.name}\n cardConfiguration={props.cardConfiguration}\n facetsToPlot={props.facetsToPlot}\n availableFacets={props.availableFacets}\n initialExpandedFacetControls={props.initialExpandedFacetControls}\n hideDownload={true}\n hideQueryCount={props.hideQueryCount ?? false}\n hideSqlEditorControl={true}\n hideVisualizationsControl={props.hideVisualizationsControl}\n initialLimit={props.initialLimit}\n initialPlotTypeByFacetColumnName={\n props.initialPlotTypeByFacetColumnName\n }\n hideTopLevelControls={props.hideTopLevelControls}\n isFullTextSearchEnabled={true}\n searchConfiguration={{\n ftsConfig: {\n textMatchesMode: 'NATURAL_LANGUAGE',\n minSearchQueryLength: 1,\n replaceExistingFilter: true,\n getSuggestions: autocompleteFieldName\n ? getSuggestions\n : undefined,\n },\n }}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </SearchQueryWrapper>\n )\n}\n"],"mappings":";;;;;;;;;;;;AAkFA,SAAgB,EAAiC,GAGJ;CAC3C,OAAO,mBAAmB,KAAU,EAAE,SAAS;AACjD;AAOA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,uBACA,gBAAa,CAAC,GACd,oBACA,sBACA,kBAAkB,GAClB,8BACA,kBACA,0BACA,sBACE,GAEE,IAAiB,EACrB,GACA,CACF,GAEM,IACJ,EAAsB;EACpB,UAAU,GAA2B,YAAY;EACjD,OAAO;GACL,gBAAgB,GAA2B,OAAO;GAClD,mBAAmB,GAA2B,OAAO;GACrD,OAAO,GAA2B,OAAO,SAAA;GACzC,QAAQ,GAA2B,OAAO,UAAU;EACtD;CACF,CAAC,GAMG,IAAc,EAAO,CAAC,GACtB,IAAmB,EAAO,CAAgB;CAMhD,OALI,EAAiB,YAAY,MAC/B,EAAY,WAAW,GACvB,EAAiB,UAAU,IAI3B,kBAAC,GAAD;EAEiB;EACG;EACN;EACe;EACX;YAEhB,kBAAC,GAAD;GAAU,UAAU,kBAAC,GAAD,CAA4B,CAAA;aAC9C,kBAAC,GAAD;IACmB;IACjB,UAAU,EAAM;IAChB,eAAe,EAAM;IACF;IACnB,oBAAoB,EAAM;IAC1B,eAAe,EAAM;IACrB,kBAAkB,EAAM;IACxB,qBAAqB,EAAM;IAC3B,sBAAsB,EAAM,wBAAwB;IACpD,gCAAgC,EAAM;IACtC,sBAAsB,EAAM,wBAAwB;IACpD,mBAAmB,EAAM;IACzB,0BACE,EAAM,4BACN,EAAyB;cAG3B,kBAAC,GAAD;KACsB;KACpB,MAAM,EAAM;KACZ,mBAAmB,EAAM;KACzB,cAAc,EAAM;KACpB,iBAAiB,EAAM;KACvB,8BAA8B,EAAM;KACpC,cAAc;KACd,gBAAgB,EAAM,kBAAkB;KACxC,sBAAsB;KACtB,2BAA2B,EAAM;KACjC,cAAc,EAAM;KACpB,kCACE,EAAM;KAER,sBAAsB,EAAM;KAC5B,yBAAyB;KACzB,qBAAqB,EACnB,WAAW;MACT,iBAAiB;MACjB,sBAAsB;MACtB,uBAAuB;MACvB,gBAAgB,IACZ,IACA,KAAA;KACN,EACF;IACD,CAAA;GACwB,CAAA;EACnB,CAAA;CACQ,GAxDb,EAAY,OAwDC;AAExB"}
|
|
1
|
+
{"version":3,"file":"SearchQueryWrapperPlotNav.js","names":[],"sources":["../../../src/components/SearchQueryWrapperPlotNav/SearchQueryWrapperPlotNav.tsx"],"sourcesContent":["import { NoContentPlaceholderType } from '@/components/SynapseTable/NoContentPlaceholderType'\nimport { DEFAULT_PAGE_SIZE } from '@/utils/SynapseConstants'\nimport { Suspense, useRef } from 'react'\nimport { useDeepCompareMemoize } from 'use-deep-compare-effect'\nimport { CardConfiguration } from '../CardContainer/CardConfiguration'\nimport {\n QueryVisualizationWrapper,\n QueryVisualizationWrapperProps,\n} from '../QueryVisualizationWrapper'\nimport QueryWrapperLoadingScreen from '../QueryWrapper/QueryWrapperLoadingScreen'\nimport { SynapseTableConfiguration } from '../SynapseTable'\nimport { TopLevelControlsProps } from '../SynapseTable/TopLevelControls/TopLevelControls'\nimport { PlotsContainerProps } from '../widgets/facet-nav/PlotsContainer'\nimport { FacetFilterControlsProps } from '../widgets/query-filter/FacetFilterControls'\nimport {\n SearchQueryWrapper,\n SearchQueryWrapperProps,\n} from '../SearchQueryWrapper/SearchQueryWrapper'\nimport { QueryWrapperPlotNavContents } from '../QueryWrapperPlotNav/QueryWrapperPlotNav'\nimport { useGetSuggestionsForSearchIndex } from '../SearchQueryWrapper/SearchQueryUseQueryOptions'\n\ntype SearchQueryWrapperPlotNavOwnProps = {\n /** The ID of the SearchIndex entity to query. */\n searchIndexId: string\n /**\n * The name of the field to use for autocomplete suggestions.\n * When provided, the search bar will show a dropdown of suggestions as the user types,\n * populated by querying the search index with this field restricted via POST /search/autocomplete.\n */\n autocompleteFieldName?: string\n /** Whether the displayed results should be paginated or infinite. Default for cards is true, default for table is false */\n isInfinite?: boolean\n tableConfiguration?: SynapseTableConfiguration\n cardConfiguration?: CardConfiguration\n facetsToPlot?: string[]\n availableFacets?: FacetFilterControlsProps['availableFacets']\n initialExpandedFacetControls?: FacetFilterControlsProps['initialExpandedFacetControls']\n initialLimit?: number\n hideTopLevelControls?: boolean\n // Note: hideDownload, hideSqlEditorControl are intentionally\n // excluded — they are hardcoded to true because these controls are not applicable to the\n // SearchQueryServicesApi (no file download, no SQL editing).\n}\n\nexport type SearchQueryWrapperPlotNavProps = SearchQueryWrapperPlotNavOwnProps &\n PlotsContainerProps &\n Pick<\n QueryVisualizationWrapperProps,\n | 'defaultShowPlots'\n | 'visibleColumnCount'\n | 'hiddenColumns'\n | 'columnAliases'\n | 'renderFacetValue'\n | 'rgbIndex'\n | 'showLastUpdatedOn'\n | 'noContentPlaceholderType'\n | 'unitDescription'\n | 'helpConfiguration'\n | 'hideCopyToClipboard'\n | 'hideVisualizationsControl'\n | 'lockTextMatchesQueryFilterPill'\n | 'hideSearchBarControl'\n | 'defaultShowSearchBar'\n > &\n Pick<TopLevelControlsProps, 'name' | 'hideQueryCount'> & {\n /** Optional initial query parameters. Only selectedFacets, additionalFilters, limit, and offset are used. */\n initQueryRequest?: SearchQueryWrapperProps['initQueryRequest']\n /** Called when the query result bundle changes (e.g. to report result counts to a parent). */\n onQueryResultBundleChange?: SearchQueryWrapperProps['onQueryResultBundleChange']\n /** Whether the URL should update when the query is modified (deep linking). */\n shouldDeepLink?: SearchQueryWrapperProps['shouldDeepLink']\n /** OpenSearch query strategy and field-boost configuration. Forwarded to SearchQueryWrapper. */\n searchQueryConfig?: SearchQueryWrapperProps['searchQueryConfig']\n }\n\n/**\n * Type guard that identifies a SearchQueryWrapperPlotNavProps from the union\n * `QueryWrapperPlotNavProps | SearchQueryWrapperPlotNavProps`.\n *\n * Two conditions are checked to be robust against future API changes:\n * 1. The config has `searchIndexId` (present only on SearchQueryWrapperPlotNavProps).\n * 2. The config does NOT have `sql` (always present on QueryWrapperPlotNavProps via\n * QueryOrDeprecatedSearchParams), so that if QueryWrapperPlotNavProps ever gains a\n * `searchIndexId` field the guard remains correct.\n */\nexport function isSearchQueryWrapperPlotNavProps(config: {\n searchIndexId?: unknown\n sql?: unknown\n}): config is SearchQueryWrapperPlotNavProps {\n return 'searchIndexId' in config && !('sql' in config)\n}\n\n/**\n * A component similar to QueryWrapperPlotNav that sources its data from the SearchQueryServicesApi\n * rather than the standard Synapse Table Services. Facets, table/card rendering, and plots are\n * all reused from the existing component library.\n */\nexport default function SearchQueryWrapperPlotNav(\n props: SearchQueryWrapperPlotNavProps,\n) {\n const {\n tableConfiguration,\n isInfinite = !tableConfiguration,\n unitDescription,\n helpConfiguration,\n initQueryRequest: initQueryRequestFromProps,\n onQueryResultBundleChange,\n searchIndexId,\n autocompleteFieldName,\n shouldDeepLink,\n } = props\n\n const getSuggestions = useGetSuggestionsForSearchIndex(\n searchIndexId,\n autocompleteFieldName,\n )\n\n const initQueryRequest: SearchQueryWrapperProps['initQueryRequest'] =\n useDeepCompareMemoize({\n partMask: initQueryRequestFromProps?.partMask ?? 0,\n query: {\n selectedFacets: initQueryRequestFromProps?.query?.selectedFacets,\n additionalFilters: initQueryRequestFromProps?.query?.additionalFilters,\n sort: initQueryRequestFromProps?.query?.sort,\n limit: initQueryRequestFromProps?.query?.limit ?? DEFAULT_PAGE_SIZE,\n offset: initQueryRequestFromProps?.query?.offset ?? 0,\n },\n })\n\n // Remount SearchQueryWrapper when initQueryRequest content changes.\n // useDeepCompareMemoize returns the same reference when content is equal, so reference\n // comparison is sufficient here. A counter is used rather than JSON.stringify to avoid\n // serializing the object on every render.\n const mountKeyRef = useRef(0)\n const prevInitQueryRef = useRef(initQueryRequest)\n if (prevInitQueryRef.current !== initQueryRequest) {\n mountKeyRef.current += 1\n prevInitQueryRef.current = initQueryRequest\n }\n\n return (\n <SearchQueryWrapper\n key={mountKeyRef.current}\n searchIndexId={searchIndexId}\n initQueryRequest={initQueryRequest}\n isInfinite={isInfinite}\n onQueryResultBundleChange={onQueryResultBundleChange}\n shouldDeepLink={shouldDeepLink}\n searchQueryConfig={props.searchQueryConfig}\n >\n <Suspense fallback={<QueryWrapperLoadingScreen />}>\n <QueryVisualizationWrapper\n unitDescription={unitDescription}\n rgbIndex={props.rgbIndex}\n columnAliases={props.columnAliases}\n renderFacetValue={props.renderFacetValue}\n dataUseModifiersColumnName={\n props.cardConfiguration?.genericCardSchema\n ?.dataUseModifiersColumnName\n }\n helpConfiguration={helpConfiguration}\n visibleColumnCount={props.visibleColumnCount}\n hiddenColumns={props.hiddenColumns}\n defaultShowPlots={props.defaultShowPlots}\n hideCopyToClipboard={props.hideCopyToClipboard}\n hideSearchBarControl={props.hideSearchBarControl ?? false}\n lockTextMatchesQueryFilterPill={props.lockTextMatchesQueryFilterPill}\n defaultShowSearchBar={props.defaultShowSearchBar ?? true}\n showLastUpdatedOn={props.showLastUpdatedOn}\n noContentPlaceholderType={\n props.noContentPlaceholderType ??\n NoContentPlaceholderType.INTERACTIVE\n }\n >\n <QueryWrapperPlotNavContents\n tableConfiguration={tableConfiguration}\n name={props.name}\n cardConfiguration={props.cardConfiguration}\n facetsToPlot={props.facetsToPlot}\n availableFacets={props.availableFacets}\n initialExpandedFacetControls={props.initialExpandedFacetControls}\n hideDownload={true}\n hideQueryCount={props.hideQueryCount ?? false}\n hideSqlEditorControl={true}\n hideVisualizationsControl={props.hideVisualizationsControl}\n initialLimit={props.initialLimit}\n initialPlotTypeByFacetColumnName={\n props.initialPlotTypeByFacetColumnName\n }\n hideTopLevelControls={props.hideTopLevelControls}\n isFullTextSearchEnabled={true}\n searchConfiguration={{\n ftsConfig: {\n textMatchesMode: 'NATURAL_LANGUAGE',\n minSearchQueryLength: 1,\n replaceExistingFilter: true,\n getSuggestions: autocompleteFieldName\n ? getSuggestions\n : undefined,\n },\n }}\n />\n </QueryVisualizationWrapper>\n </Suspense>\n </SearchQueryWrapper>\n )\n}\n"],"mappings":";;;;;;;;;;;;AAqFA,SAAgB,EAAiC,GAGJ;CAC3C,OAAO,mBAAmB,KAAU,EAAE,SAAS;AACjD;AAOA,SAAwB,EACtB,GACA;CACA,IAAM,EACJ,uBACA,gBAAa,CAAC,GACd,oBACA,sBACA,kBAAkB,GAClB,8BACA,kBACA,0BACA,sBACE,GAEE,IAAiB,EACrB,GACA,CACF,GAEM,IACJ,EAAsB;EACpB,UAAU,GAA2B,YAAY;EACjD,OAAO;GACL,gBAAgB,GAA2B,OAAO;GAClD,mBAAmB,GAA2B,OAAO;GACrD,MAAM,GAA2B,OAAO;GACxC,OAAO,GAA2B,OAAO,SAAA;GACzC,QAAQ,GAA2B,OAAO,UAAU;EACtD;CACF,CAAC,GAMG,IAAc,EAAO,CAAC,GACtB,IAAmB,EAAO,CAAgB;CAMhD,OALI,EAAiB,YAAY,MAC/B,EAAY,WAAW,GACvB,EAAiB,UAAU,IAI3B,kBAAC,GAAD;EAEiB;EACG;EACN;EACe;EACX;EAChB,mBAAmB,EAAM;YAEzB,kBAAC,GAAD;GAAU,UAAU,kBAAC,GAAD,CAA4B,CAAA;aAC9C,kBAAC,GAAD;IACmB;IACjB,UAAU,EAAM;IAChB,eAAe,EAAM;IACrB,kBAAkB,EAAM;IACxB,4BACE,EAAM,mBAAmB,mBACrB;IAEa;IACnB,oBAAoB,EAAM;IAC1B,eAAe,EAAM;IACrB,kBAAkB,EAAM;IACxB,qBAAqB,EAAM;IAC3B,sBAAsB,EAAM,wBAAwB;IACpD,gCAAgC,EAAM;IACtC,sBAAsB,EAAM,wBAAwB;IACpD,mBAAmB,EAAM;IACzB,0BACE,EAAM,4BACN,EAAyB;cAG3B,kBAAC,GAAD;KACsB;KACpB,MAAM,EAAM;KACZ,mBAAmB,EAAM;KACzB,cAAc,EAAM;KACpB,iBAAiB,EAAM;KACvB,8BAA8B,EAAM;KACpC,cAAc;KACd,gBAAgB,EAAM,kBAAkB;KACxC,sBAAsB;KACtB,2BAA2B,EAAM;KACjC,cAAc,EAAM;KACpB,kCACE,EAAM;KAER,sBAAsB,EAAM;KAC5B,yBAAyB;KACzB,qBAAqB,EACnB,WAAW;MACT,iBAAiB;MACjB,sBAAsB;MACtB,uBAAuB;MACvB,gBAAgB,IACZ,IACA,KAAA;KACN,EACF;IACD,CAAA;GACwB,CAAA;EACnB,CAAA;CACQ,GA9Db,EAAY,OA8DC;AAExB"}
|
|
@@ -1,28 +1,10 @@
|
|
|
1
1
|
import { UserCardSize } from '@/utils/SynapseConstants';
|
|
2
|
-
import { RowSet
|
|
3
|
-
import { Component } from 'react';
|
|
2
|
+
import { RowSet } from '@sage-bionetworks/synapse-types';
|
|
4
3
|
export type UserCardListProps = {
|
|
5
4
|
list: (string | null)[];
|
|
6
5
|
size?: UserCardSize;
|
|
7
6
|
rowSet?: RowSet;
|
|
8
7
|
};
|
|
9
|
-
export
|
|
10
|
-
userProfileMap: Record<string, UserProfile>;
|
|
11
|
-
};
|
|
12
|
-
export declare class UserCardList extends Component<UserCardListProps, UserCardListState> {
|
|
13
|
-
constructor(props: UserCardListProps);
|
|
14
|
-
componentDidMount(): void;
|
|
15
|
-
componentDidUpdate(prevProps: UserCardListProps): void;
|
|
16
|
-
update(list: (string | null)[]): void;
|
|
17
|
-
/**
|
|
18
|
-
* Given data this will find rows where there is no userId columnType and create faux user profiles
|
|
19
|
-
* using firstName, lastName, and institution (company in UserProfile object).
|
|
20
|
-
* @param {RowSet} rowSet
|
|
21
|
-
* @returns list of UserProfiles with firstName, lastName, company, userName (first letter of firstName) filled out.
|
|
22
|
-
* @memberof UserCardList
|
|
23
|
-
*/
|
|
24
|
-
manuallyExtractData(rowSet: RowSet): Omit<UserProfile, "ownerId">[];
|
|
25
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
26
|
-
}
|
|
8
|
+
export declare function UserCardList(props: UserCardListProps): import("react/jsx-runtime").JSX.Element;
|
|
27
9
|
export default UserCardList;
|
|
28
10
|
//# sourceMappingURL=UserCardList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardList.d.ts","sourceRoot":"","sources":["../../../src/components/UserCardList/UserCardList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserCardList.d.ts","sourceRoot":"","sources":["../../../src/components/UserCardList/UserCardList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAEL,MAAM,EAEP,MAAM,iCAAiC,CAAA;AAIxC,MAAM,MAAM,iBAAiB,GAAG;IAE9B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,YAAY,CAAA;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AA8BD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAkEpD;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -1,78 +1,55 @@
|
|
|
1
1
|
import { MEDIUM_USER_CARD as e } from "../../utils/SynapseConstants.js";
|
|
2
|
-
import {
|
|
2
|
+
import { useGetUserProfilesWithProfilePicAttached as t } from "../../synapse-queries/user/useUserBundle.js";
|
|
3
3
|
import { UserCard as n } from "../UserCard/UserCard.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ColumnTypeEnum as o } from "@sage-bionetworks/synapse-types";
|
|
4
|
+
import { useMemo as r } from "react";
|
|
5
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
6
|
+
import { ColumnTypeEnum as a } from "@sage-bionetworks/synapse-types";
|
|
8
7
|
//#region src/components/UserCardList/UserCardList.tsx
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (r) return /* @__PURE__ */ a("div", {
|
|
55
|
-
className: "SRC-grid-item SRC-narrow-grid-item",
|
|
56
|
-
children: /* @__PURE__ */ a(n, {
|
|
57
|
-
size: t,
|
|
58
|
-
preSignedURL: r.clientPreSignedURL,
|
|
59
|
-
userProfile: r
|
|
60
|
-
})
|
|
61
|
-
}, JSON.stringify(r));
|
|
62
|
-
let i = s && s[c];
|
|
63
|
-
return i ? (c += 1, /* @__PURE__ */ a("div", {
|
|
64
|
-
className: "SRC-grid-item SRC-narrow-grid-item",
|
|
65
|
-
children: /* @__PURE__ */ a(n, {
|
|
66
|
-
disableLink: !0,
|
|
67
|
-
hideEmail: !0,
|
|
68
|
-
size: t,
|
|
69
|
-
userProfile: i
|
|
70
|
-
})
|
|
71
|
-
}, JSON.stringify(i))) : !1;
|
|
72
|
-
})
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
};
|
|
8
|
+
function o(e) {
|
|
9
|
+
let t = e.headers.findIndex((e) => e.name === "firstName"), n = e.headers.findIndex((e) => e.name === "lastName"), r = e.headers.findIndex((e) => e.name === "institution"), i = e.headers.findIndex((e) => e.columnType === a.USERID);
|
|
10
|
+
return e.rows.filter((e) => !e.values[i]).map((e) => {
|
|
11
|
+
let i = e.values;
|
|
12
|
+
return {
|
|
13
|
+
firstName: i[t] ?? "",
|
|
14
|
+
lastName: i[n] ?? "",
|
|
15
|
+
company: i[r] ?? void 0,
|
|
16
|
+
ownerId: null,
|
|
17
|
+
userName: i[t] ? i[t][0] ?? "" : ""
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function s(a) {
|
|
22
|
+
let { list: s, size: c = e, rowSet: l } = a, { data: u } = t(r(() => s.filter((e) => !!e), [s])), d = r(() => {
|
|
23
|
+
let e = {};
|
|
24
|
+
return u?.list.forEach((t) => {
|
|
25
|
+
t.ownerId && (e[t.ownerId] = t);
|
|
26
|
+
}), e;
|
|
27
|
+
}, [u]), f = l ? o(l) : void 0, p = 0;
|
|
28
|
+
return /* @__PURE__ */ i("div", {
|
|
29
|
+
className: "SRC-card-grid-row",
|
|
30
|
+
children: s.map((e) => {
|
|
31
|
+
let t = e == null ? null : d[e];
|
|
32
|
+
if (t) return /* @__PURE__ */ i("div", {
|
|
33
|
+
className: "SRC-grid-item SRC-narrow-grid-item",
|
|
34
|
+
children: /* @__PURE__ */ i(n, {
|
|
35
|
+
size: c,
|
|
36
|
+
preSignedURL: t.clientPreSignedURL,
|
|
37
|
+
userProfile: t
|
|
38
|
+
})
|
|
39
|
+
}, JSON.stringify(t));
|
|
40
|
+
let r = f && f[p];
|
|
41
|
+
return r ? (p += 1, /* @__PURE__ */ i("div", {
|
|
42
|
+
className: "SRC-grid-item SRC-narrow-grid-item",
|
|
43
|
+
children: /* @__PURE__ */ i(n, {
|
|
44
|
+
disableLink: !0,
|
|
45
|
+
hideEmail: !0,
|
|
46
|
+
size: c,
|
|
47
|
+
userProfile: r
|
|
48
|
+
})
|
|
49
|
+
}, JSON.stringify(r))) : !1;
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
}
|
|
76
53
|
//#endregion
|
|
77
54
|
export { s as UserCardList, s as default };
|
|
78
55
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardList.js","names":[],"sources":["../../../src/components/UserCardList/UserCardList.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"UserCardList.js","names":[],"sources":["../../../src/components/UserCardList/UserCardList.tsx"],"sourcesContent":["import { useGetUserProfilesWithProfilePicAttached } from '@/synapse-queries/user/useUserBundle'\nimport { MEDIUM_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n RowSet,\n UserProfile,\n} from '@sage-bionetworks/synapse-types'\nimport { useMemo } from 'react'\nimport UserCard from '../UserCard/UserCard'\n\nexport type UserCardListProps = {\n /* The list of user IDs or null values to render. For null values, the card will be rendered with table data supplied by `firstName`, `lastName`, and `institution` columns supplied by the data prop. */\n list: (string | null)[]\n size?: UserCardSize\n // Data should not be needed, however, it gives the option to fill in a user profile with other column\n // fields. This is required specifically by AMP-AD Explore/People page\n rowSet?: RowSet\n}\n\n/**\n * Given a RowSet, extracts faux user profiles for rows where ownerId is null,\n * using firstName, lastName, and institution columns.\n */\nfunction extractFauxUserProfiles(\n rowSet: RowSet,\n): Omit<UserProfile, 'ownerId'>[] {\n const firstNameIndex = rowSet.headers.findIndex(el => el.name === 'firstName')\n const lastNameIndex = rowSet.headers.findIndex(el => el.name === 'lastName')\n const institutionIndex = rowSet.headers.findIndex(\n el => el.name === 'institution',\n )\n const ownerIdIndex = rowSet.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n const nullOwnerIdsRows = rowSet.rows.filter(el => !el.values[ownerIdIndex])\n return nullOwnerIdsRows.map(el => {\n const values = el.values\n return {\n firstName: values[firstNameIndex] ?? '',\n lastName: values[lastNameIndex] ?? '',\n company: values[institutionIndex] ?? undefined,\n ownerId: null,\n userName: values[firstNameIndex] ? (values[firstNameIndex][0] ?? '') : '',\n }\n })\n}\n\nexport function UserCardList(props: UserCardListProps) {\n const { list, size = MEDIUM_USER_CARD, rowSet } = props\n\n const principalIds = useMemo(\n () => list.filter((el): el is string => !!el),\n [list],\n )\n\n const { data } = useGetUserProfilesWithProfilePicAttached(principalIds)\n\n const userProfileMap = useMemo(() => {\n const map: Record<string, UserProfile> = {}\n data?.list.forEach(profile => {\n if (profile.ownerId) {\n map[profile.ownerId] = profile\n }\n })\n return map\n }, [data])\n\n const fauxUserProfilesList = rowSet\n ? extractFauxUserProfiles(rowSet)\n : undefined\n let fauxUserProfileIndex = 0\n\n return (\n <div className=\"SRC-card-grid-row\">\n {list.map(ownerId => {\n const userProfile = ownerId != null ? userProfileMap[ownerId] : null\n if (userProfile) {\n return (\n <div\n key={JSON.stringify(userProfile)}\n className=\"SRC-grid-item SRC-narrow-grid-item\"\n >\n <UserCard\n size={size}\n preSignedURL={userProfile.clientPreSignedURL}\n userProfile={userProfile}\n />\n </div>\n )\n }\n const fauxUserProfile =\n fauxUserProfilesList && fauxUserProfilesList[fauxUserProfileIndex]\n if (!fauxUserProfile) {\n return false\n }\n fauxUserProfileIndex += 1\n return (\n <div\n key={JSON.stringify(fauxUserProfile)}\n className=\"SRC-grid-item SRC-narrow-grid-item\"\n >\n <UserCard\n disableLink={true}\n hideEmail={true}\n size={size}\n // TODO: Modify UserCard to accept a fake profile with no ownerId field, and remove this cast.\n userProfile={fauxUserProfile as UserProfile}\n />\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default UserCardList\n"],"mappings":";;;;;;;AAuBA,SAAS,EACP,GACgC;CAChC,IAAM,IAAiB,EAAO,QAAQ,WAAU,MAAM,EAAG,SAAS,WAAW,GACvE,IAAgB,EAAO,QAAQ,WAAU,MAAM,EAAG,SAAS,UAAU,GACrE,IAAmB,EAAO,QAAQ,WACtC,MAAM,EAAG,SAAS,aACpB,GACM,IAAe,EAAO,QAAQ,WAClC,MAAM,EAAG,eAAe,EAAe,MACzC;CAEA,OADyB,EAAO,KAAK,QAAO,MAAM,CAAC,EAAG,OAAO,EACtD,EAAiB,KAAI,MAAM;EAChC,IAAM,IAAS,EAAG;EAClB,OAAO;GACL,WAAW,EAAO,MAAmB;GACrC,UAAU,EAAO,MAAkB;GACnC,SAAS,EAAO,MAAqB,KAAA;GACrC,SAAS;GACT,UAAU,EAAO,KAAmB,EAAO,GAAgB,MAAM,KAAM;EACzE;CACF,CAAC;AACH;AAEA,SAAgB,EAAa,GAA0B;CACrD,IAAM,EAAE,SAAM,UAAO,GAAkB,cAAW,GAO5C,EAAE,YAAS,EALI,QACb,EAAK,QAAQ,MAAqB,CAAC,CAAC,CAAE,GAC5C,CAAC,CAAI,CAGmD,CAAY,GAEhE,IAAiB,QAAc;EACnC,IAAM,IAAmC,CAAC;EAM1C,OALA,GAAM,KAAK,SAAQ,MAAW;GAC5B,AAAI,EAAQ,YACV,EAAI,EAAQ,WAAW;EAE3B,CAAC,GACM;CACT,GAAG,CAAC,CAAI,CAAC,GAEH,IAAuB,IACzB,EAAwB,CAAM,IAC9B,KAAA,GACA,IAAuB;CAE3B,OACE,kBAAC,OAAD;EAAK,WAAU;YACZ,EAAK,KAAI,MAAW;GACnB,IAAM,IAAc,KAAW,OAAiC,OAA1B,EAAe;GACrD,IAAI,GACF,OACE,kBAAC,OAAD;IAEE,WAAU;cAEV,kBAAC,GAAD;KACQ;KACN,cAAc,EAAY;KACb;IACd,CAAA;GACE,GARE,KAAK,UAAU,CAAW,CAQ5B;GAGT,IAAM,IACJ,KAAwB,EAAqB;GAK/C,OAJK,KAGL,KAAwB,GAEtB,kBAAC,OAAD;IAEE,WAAU;cAEV,kBAAC,GAAD;KACE,aAAa;KACb,WAAW;KACL;KAEN,aAAa;IACd,CAAA;GACE,GAVE,KAAK,UAAU,CAAe,CAUhC,KAfE;EAiBX,CAAC;CACE,CAAA;AAET"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SQLOperator } from '@/utils/functions/SqlFunctions';
|
|
2
2
|
import { UserCardSize } from '@/utils/SynapseConstants';
|
|
3
3
|
import { FacetColumnRequest } from '@sage-bionetworks/synapse-types';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
4
5
|
export type UserCardListRotateProps = {
|
|
5
6
|
sql: string;
|
|
6
7
|
count: number;
|
|
@@ -16,4 +17,16 @@ export type UserCardListRotateProps = {
|
|
|
16
17
|
export declare const getDisplayIds: (ids: string[] | undefined, count: number | undefined, storageUidKey: string) => string[];
|
|
17
18
|
export declare function UserCardListRotate({ sql, count, useQueryResultUserData, size, summaryLink, summaryLinkText, selectedFacets, searchParams, sqlOperator, additionalFiltersSessionStorageKey, }: UserCardListRotateProps): import("react/jsx-runtime").JSX.Element;
|
|
18
19
|
export default UserCardListRotate;
|
|
20
|
+
/**
|
|
21
|
+
* Prefetches the UserCardListRotate table query and the user profiles it
|
|
22
|
+
* references into a QueryClient for use with HydrationBoundary. Uses anonymous
|
|
23
|
+
* access; warm-caches for unauthenticated users.
|
|
24
|
+
*/
|
|
25
|
+
export declare function prefetchUserCardListRotate(queryClient: QueryClient, sql: string, options?: {
|
|
26
|
+
selectedFacets?: FacetColumnRequest[];
|
|
27
|
+
searchParams?: Record<string, string>;
|
|
28
|
+
sqlOperator?: SQLOperator;
|
|
29
|
+
additionalFiltersSessionStorageKey?: string;
|
|
30
|
+
count?: number;
|
|
31
|
+
}): Promise<void>;
|
|
19
32
|
//# sourceMappingURL=UserCardListRotate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardListRotate.d.ts","sourceRoot":"","sources":["../../../src/components/UserCardList/UserCardListRotate.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserCardListRotate.d.ts","sourceRoot":"","sources":["../../../src/components/UserCardList/UserCardListRotate.tsx"],"names":[],"mappings":"AAOA,OAAO,EAGL,WAAW,EACZ,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAmB,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACxE,OAAO,EAEL,kBAAkB,EAGnB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,WAAW,EAAY,MAAM,uBAAuB,CAAA;AAQ7D,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACrC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,kCAAkC,CAAC,EAAE,MAAM,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,EAAE,YAAK,EAClB,OAAO,MAAM,YAAwB,EACrC,eAAe,MAAM,KACpB,MAAM,EAgCR,CAAA;AA0CD,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,KAAK,EACL,sBAA8B,EAC9B,IAAsB,EACtB,WAAW,EACX,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,kCAAkC,GACnC,EAAE,uBAAuB,2CAiEzB;AAED,eAAe,kBAAkB,CAAA;AAEjC;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,kCAAkC,CAAC,EAAE,MAAM,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -1,81 +1,106 @@
|
|
|
1
1
|
import { LARGE_USER_CARD as e } from "../../utils/SynapseConstants.js";
|
|
2
2
|
import t from "../../synapse-client/index.js";
|
|
3
3
|
import { getAdditionalFilters as n, parseEntityIdFromSqlStatement as r } from "../../utils/functions/SqlFunctions.js";
|
|
4
|
-
import {
|
|
4
|
+
import { KeyFactory as i } from "../../synapse-queries/KeyFactory.js";
|
|
5
|
+
import { useSynapseContext as a } from "../../utils/context/SynapseContext.js";
|
|
5
6
|
import "../../utils/index.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
7
|
+
import { tableQueryUseQueryDefaults as o } from "../../synapse-queries/entity/useGetQueryResultBundle.js";
|
|
8
|
+
import { getUserProfilesWithProfilePicAttachedQueryOptions as s } from "../../synapse-queries/user/useUserBundle.js";
|
|
9
|
+
import { LoadingUserCardMedium as c } from "../UserCard/UserCardMedium.js";
|
|
10
|
+
import { UserCardList as l } from "./UserCardList.js";
|
|
11
|
+
import { LargeButton as u } from "../styled/LargeButton.js";
|
|
12
|
+
import { useEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
13
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
14
|
+
import { ColumnTypeEnum as _ } from "@sage-bionetworks/synapse-types";
|
|
15
|
+
import { useQuery as v } from "@tanstack/react-query";
|
|
13
16
|
//#region src/components/UserCardList/UserCardListRotate.tsx
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
var y = "sage_rotate_uids", b = 3, x = (e = [], t = b, n) => {
|
|
18
|
+
if (typeof localStorage > "u") return e.slice(0, t);
|
|
19
|
+
let r = localStorage.getItem(n), i = r ? JSON.parse(r) : [];
|
|
20
|
+
if (!i.length) {
|
|
21
|
+
let r = e.slice(0, t);
|
|
22
|
+
return localStorage.setItem(n, JSON.stringify(r)), r;
|
|
23
|
+
}
|
|
24
|
+
let a = new Set(i), o = e.filter((e) => !a.has(e));
|
|
25
|
+
if (o.length >= t) {
|
|
26
|
+
let e = o.slice(0, t);
|
|
27
|
+
return localStorage.setItem(n, JSON.stringify([...i, ...e])), e;
|
|
28
|
+
}
|
|
29
|
+
let s = e.slice(0, t - o.length);
|
|
30
|
+
return localStorage.setItem(n, JSON.stringify(s)), [...o, ...s];
|
|
25
31
|
};
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}(), ()
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
]),
|
|
32
|
+
function S(e, t) {
|
|
33
|
+
return {
|
|
34
|
+
partMask: 1,
|
|
35
|
+
concreteType: "org.sagebionetworks.repo.model.table.QueryBundleRequest",
|
|
36
|
+
entityId: r(e),
|
|
37
|
+
query: {
|
|
38
|
+
sql: e,
|
|
39
|
+
additionalFilters: n(t?.searchParams, t?.sqlOperator, t?.additionalFiltersSessionStorageKey),
|
|
40
|
+
selectedFacets: t?.selectedFacets
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function C(e) {
|
|
45
|
+
if (!e?.queryResult?.queryResults.rows) return [];
|
|
46
|
+
let t = e.queryResult.queryResults.headers.findIndex((e) => e.columnType === _.USERID);
|
|
47
|
+
return t === -1 ? [] : e.queryResult.queryResults.rows.map((e) => e.values[t]).filter((e) => e !== null);
|
|
48
|
+
}
|
|
49
|
+
function w({ sql: n, count: r, useQueryResultUserData: i = !1, size: s = e, summaryLink: _, summaryLinkText: b, selectedFacets: w, searchParams: T, sqlOperator: E, additionalFiltersSessionStorageKey: D }) {
|
|
50
|
+
let { accessToken: O, keyFactory: k } = a(), A = `${y}-${n}-${JSON.stringify(w)}`, j = S(n, {
|
|
51
|
+
selectedFacets: w,
|
|
52
|
+
searchParams: T,
|
|
53
|
+
sqlOperator: E,
|
|
54
|
+
additionalFiltersSessionStorageKey: D
|
|
55
|
+
}), { data: M, isPending: N } = v({
|
|
56
|
+
...o,
|
|
57
|
+
queryKey: k.getFullTableQueryResultQueryKey(j, !1),
|
|
58
|
+
queryFn: () => t.getFullQueryTableResults(j, O)
|
|
59
|
+
}), [P, F] = m([]), I = f(() => C(M), [M]), L = I.slice(0, r), R = p(!1);
|
|
60
|
+
d(() => {
|
|
61
|
+
R.current || (R.current = !0, F(x(I, r, A)));
|
|
62
|
+
}, [
|
|
63
|
+
I,
|
|
64
|
+
r,
|
|
65
|
+
A
|
|
66
|
+
]);
|
|
67
|
+
let z = P.length > 0 ? P : L;
|
|
68
|
+
return /* @__PURE__ */ g("div", {
|
|
54
69
|
className: "UserCardListRotate",
|
|
55
70
|
children: [
|
|
56
|
-
|
|
57
|
-
!
|
|
71
|
+
N && /* @__PURE__ */ h(c, {}),
|
|
72
|
+
!N && z.length === 0 && /* @__PURE__ */ h("p", {
|
|
58
73
|
className: "font-italic",
|
|
59
74
|
children: "No one was found."
|
|
60
75
|
}),
|
|
61
|
-
!
|
|
62
|
-
list:
|
|
63
|
-
size:
|
|
64
|
-
rowSet:
|
|
76
|
+
!N && z.length > 0 && /* @__PURE__ */ h(l, {
|
|
77
|
+
list: z,
|
|
78
|
+
size: s,
|
|
79
|
+
rowSet: i ? M?.queryResult?.queryResults : void 0
|
|
65
80
|
}),
|
|
66
|
-
|
|
81
|
+
_ && b && /* @__PURE__ */ h("div", {
|
|
67
82
|
className: "UserCardListRotate__summary",
|
|
68
|
-
children: /* @__PURE__ */
|
|
83
|
+
children: /* @__PURE__ */ h(u, {
|
|
69
84
|
color: "secondary",
|
|
70
85
|
variant: "contained",
|
|
71
|
-
href:
|
|
86
|
+
href: _,
|
|
72
87
|
children: b
|
|
73
88
|
})
|
|
74
89
|
})
|
|
75
90
|
]
|
|
76
91
|
});
|
|
77
92
|
}
|
|
93
|
+
async function T(e, n, r) {
|
|
94
|
+
let a = new i(void 0), c = S(n, r), l = a.getFullTableQueryResultQueryKey(c, !1);
|
|
95
|
+
await e.prefetchQuery({
|
|
96
|
+
...o,
|
|
97
|
+
queryKey: l,
|
|
98
|
+
queryFn: () => t.getFullQueryTableResults(c, void 0)
|
|
99
|
+
});
|
|
100
|
+
let u = C(e.getQueryData(l)).slice(0, r?.count ?? b);
|
|
101
|
+
u.length > 0 && await e.prefetchQuery(s(u, { keyFactory: a }));
|
|
102
|
+
}
|
|
78
103
|
//#endregion
|
|
79
|
-
export {
|
|
104
|
+
export { w as UserCardListRotate, w as default, x as getDisplayIds, T as prefetchUserCardListRotate };
|
|
80
105
|
|
|
81
106
|
//# sourceMappingURL=UserCardListRotate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserCardListRotate.js","names":[],"sources":["../../../src/components/UserCardList/UserCardListRotate.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport SynapseClient from '@/synapse-client'\nimport { SynapseConstants } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { LARGE_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n FacetColumnRequest,\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { useState } from 'react'\nimport { useDeepCompareEffectNoCheck } from 'use-deep-compare-effect'\nimport { LoadingUserCardMedium } from '../UserCard/UserCardMedium'\nimport UserCardList from './UserCardList'\n\nconst STORED_UID_KEY = 'sage_rotate_uids'\nconst DEFAULT_DISPLAY_COUNT = 3\n\nexport type UserCardListRotateProps = {\n sql: string\n count: number\n useQueryResultUserData?: boolean\n size?: UserCardSize\n summaryLink?: string\n summaryLinkText?: string\n selectedFacets?: FacetColumnRequest[]\n sqlOperator?: SQLOperator\n searchParams?: Record<string, string>\n additionalFiltersSessionStorageKey?: string\n}\n\nexport const getDisplayIds = (\n ids: string[] = [],\n count: number = DEFAULT_DISPLAY_COUNT,\n storageUidKey: string,\n) => {\n let storedIds: string[] = []\n let newIds: string[] = []\n const storedIdsStr = localStorage.getItem(storageUidKey)\n if (storedIdsStr != null) {\n storedIds = JSON.parse(storedIdsStr)\n }\n if (!storedIds.length) {\n // no stuff in storage\n newIds = ids.slice(0, count)\n localStorage.setItem(storageUidKey, JSON.stringify(newIds))\n return newIds\n } else {\n // has stuff in storage\n const filtered = ids.filter(item => !storedIds.includes(item))\n if (filtered.length >= count) {\n newIds = filtered.slice(0, count)\n localStorage.setItem(\n storageUidKey,\n JSON.stringify(storedIds.concat(newIds)),\n )\n return newIds\n } else {\n localStorage.removeItem(storageUidKey)\n const part = ids.slice(0, count - filtered.length)\n localStorage.setItem(storageUidKey, JSON.stringify(part))\n return filtered.concat(part)\n }\n }\n}\n\nexport function UserCardListRotate({\n sql,\n count,\n useQueryResultUserData = false,\n size = LARGE_USER_CARD,\n summaryLink,\n summaryLinkText,\n selectedFacets,\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n}: UserCardListRotateProps) {\n const { accessToken } = useSynapseContext()\n const [userIds, setUserIds] = useState<string[]>([])\n const [queryData, setQueryData] = useState<QueryResultBundle>()\n const [isLoading, setIsLoading] = useState<boolean>()\n let mounted = true\n const storageUidKey = `${STORED_UID_KEY}-${sql}-${JSON.stringify(\n selectedFacets,\n )}`\n useDeepCompareEffectNoCheck(() => {\n const fetchData = async function () {\n setIsLoading(true)\n const entityId = parseEntityIdFromSqlStatement(sql)\n const additionalFilters = getAdditionalFilters(\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n )\n const partMask = SynapseConstants.BUNDLE_MASK_QUERY_RESULTS\n const request: QueryBundleRequest = {\n partMask,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query: {\n sql,\n additionalFilters,\n selectedFacets,\n },\n }\n\n const queryResultBundle = await SynapseClient.getFullQueryTableResults(\n request,\n accessToken,\n )\n const { queryResult } = queryResultBundle\n if (queryResult?.queryResults.rows) {\n // find the column that has the USER_ID in it.\n const ownerIdColumnIndex = queryResult.queryResults.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n const ids: string[] = queryResult.queryResults.rows\n .map(d => d.values[ownerIdColumnIndex])\n .filter((id): id is string => id !== null)\n if (mounted) {\n const newIds = getDisplayIds(ids, count, storageUidKey)\n setUserIds(newIds)\n if (useQueryResultUserData) {\n setQueryData(queryResultBundle)\n }\n setIsLoading(false)\n }\n } else {\n console.log('UserCardListRotate: Error getting data')\n }\n }\n fetchData()\n\n return () => {\n mounted = false\n }\n }, [sql, selectedFacets, count, accessToken, searchParams, sqlOperator])\n\n return (\n <div className=\"UserCardListRotate\">\n {isLoading && <LoadingUserCardMedium />}\n {!isLoading && userIds.length === 0 && (\n <p className=\"font-italic\">No one was found.</p>\n )}\n {!isLoading && userIds.length > 0 && (\n <UserCardList\n list={userIds}\n size={size}\n rowSet={queryData?.queryResult?.queryResults}\n />\n )}\n {summaryLink && summaryLinkText && (\n <div className=\"UserCardListRotate__summary\">\n <LargeButton color=\"secondary\" variant=\"contained\" href={summaryLink}>\n {summaryLinkText}\n </LargeButton>\n </div>\n )}\n </div>\n )\n}\n\nexport default UserCardListRotate\n"],"mappings":";;;;;;;;;;;;;AAqBA,IAAM,IAAiB,oBACjB,IAAwB,GAejB,KACX,IAAgB,CAAC,GACjB,IAAgB,GAChB,MACG;CACH,IAAI,IAAsB,CAAC,GACvB,IAAmB,CAAC,GAClB,IAAe,aAAa,QAAQ,CAAa;CAIvD,IAHI,KAAgB,SAClB,IAAY,KAAK,MAAM,CAAY,IAEhC,EAAU,QAKR;EAEL,IAAM,IAAW,EAAI,QAAO,MAAQ,CAAC,EAAU,SAAS,CAAI,CAAC;EAC7D,IAAI,EAAS,UAAU,GAMrB,OALA,IAAS,EAAS,MAAM,GAAG,CAAK,GAChC,aAAa,QACX,GACA,KAAK,UAAU,EAAU,OAAO,CAAM,CAAC,CACzC,GACO;EACF;GACL,aAAa,WAAW,CAAa;GACrC,IAAM,IAAO,EAAI,MAAM,GAAG,IAAQ,EAAS,MAAM;GAEjD,OADA,aAAa,QAAQ,GAAe,KAAK,UAAU,CAAI,CAAC,GACjD,EAAS,OAAO,CAAI;EAC7B;CACF,OAjBE,OAFA,IAAS,EAAI,MAAM,GAAG,CAAK,GAC3B,aAAa,QAAQ,GAAe,KAAK,UAAU,CAAM,CAAC,GACnD;AAkBX;AAEA,SAAgB,EAAmB,EACjC,QACA,UACA,4BAAyB,IACzB,UAAO,GACP,gBACA,oBACA,mBACA,iBACA,gBACA,yCAC0B;CAC1B,IAAM,EAAE,mBAAgB,EAAkB,GACpC,CAAC,GAAS,KAAc,EAAmB,CAAC,CAAC,GAC7C,CAAC,GAAW,KAAgB,EAA4B,GACxD,CAAC,GAAW,KAAgB,EAAkB,GAChD,IAAU,IACR,IAAgB,GAAG,EAAe,GAAG,EAAI,GAAG,KAAK,UACrD,CACF;CAsDA,OArDA,SA8CE,iBA7CoC;EAClC,EAAa,EAAI;EAQjB,IAAM,IAA8B;GAClC,UAAA;GACA,cAAc;GACd,UAVe,EAA8B,CAU7C;GACA,OAAO;IACL;IACA,mBAZsB,EACxB,GACA,GACA,CASE;IACA;GACF;EACF,GAEM,IAAoB,MAAM,EAAc,yBAC5C,GACA,CACF,GACM,EAAE,mBAAgB;EACxB,IAAI,GAAa,aAAa,MAAM;GAElC,IAAM,IAAqB,EAAY,aAAa,QAAQ,WAC1D,MAAM,EAAG,eAAe,EAAe,MACzC,GACM,IAAgB,EAAY,aAAa,KAC5C,KAAI,MAAK,EAAE,OAAO,EAAmB,EACrC,QAAQ,MAAqB,MAAO,IAAI;GAC3C,AAAI,MAEF,EADe,EAAc,GAAK,GAAO,CAC9B,CAAM,GACb,KACF,EAAa,CAAiB,GAEhC,EAAa,EAAK;EAEtB,OACE,QAAQ,IAAI,wCAAwC;CAExD,EACU,SAEG;EACX,IAAU;CACZ,IACC;EAAC;EAAK;EAAgB;EAAO;EAAa;EAAc;CAAW,CAAC,GAGrE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACG,KAAa,kBAAC,GAAD,CAAwB,CAAA;GACrC,CAAC,KAAa,EAAQ,WAAW,KAChC,kBAAC,KAAD;IAAG,WAAU;cAAc;GAAoB,CAAA;GAEhD,CAAC,KAAa,EAAQ,SAAS,KAC9B,kBAAC,GAAD;IACE,MAAM;IACA;IACN,QAAQ,GAAW,aAAa;GACjC,CAAA;GAEF,KAAe,KACd,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KAAa,OAAM;KAAY,SAAQ;KAAY,MAAM;eACtD;IACU,CAAA;GACV,CAAA;EAEJ;;AAET"}
|
|
1
|
+
{"version":3,"file":"UserCardListRotate.js","names":[],"sources":["../../../src/components/UserCardList/UserCardListRotate.tsx"],"sourcesContent":["import LargeButton from '@/components/styled/LargeButton'\nimport SynapseClient from '@/synapse-client'\nimport { KeyFactory } from '@/synapse-queries/KeyFactory'\nimport { tableQueryUseQueryDefaults } from '@/synapse-queries/entity/useGetQueryResultBundle'\nimport { getUserProfilesWithProfilePicAttachedQueryOptions } from '@/synapse-queries/user/useUserBundle'\nimport { SynapseConstants } from '@/utils'\nimport { useSynapseContext } from '@/utils/context/SynapseContext'\nimport {\n getAdditionalFilters,\n parseEntityIdFromSqlStatement,\n SQLOperator,\n} from '@/utils/functions/SqlFunctions'\nimport { LARGE_USER_CARD, UserCardSize } from '@/utils/SynapseConstants'\nimport {\n ColumnTypeEnum,\n FacetColumnRequest,\n QueryBundleRequest,\n QueryResultBundle,\n} from '@sage-bionetworks/synapse-types'\nimport { QueryClient, useQuery } from '@tanstack/react-query'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { LoadingUserCardMedium } from '../UserCard/UserCardMedium'\nimport UserCardList from './UserCardList'\n\nconst STORED_UID_KEY = 'sage_rotate_uids'\nconst DEFAULT_DISPLAY_COUNT = 3\n\nexport type UserCardListRotateProps = {\n sql: string\n count: number\n useQueryResultUserData?: boolean\n size?: UserCardSize\n summaryLink?: string\n summaryLinkText?: string\n selectedFacets?: FacetColumnRequest[]\n sqlOperator?: SQLOperator\n searchParams?: Record<string, string>\n additionalFiltersSessionStorageKey?: string\n}\n\nexport const getDisplayIds = (\n ids: string[] = [],\n count: number = DEFAULT_DISPLAY_COUNT,\n storageUidKey: string,\n): string[] => {\n // Guard against SSR / Node.js environments where localStorage is unavailable\n if (typeof localStorage === 'undefined') {\n return ids.slice(0, count)\n }\n const storedIdsJson = localStorage.getItem(storageUidKey)\n const seenIds: string[] = storedIdsJson\n ? (JSON.parse(storedIdsJson) as string[])\n : []\n\n if (!seenIds.length) {\n const selected = ids.slice(0, count)\n localStorage.setItem(storageUidKey, JSON.stringify(selected))\n return selected\n }\n\n const seenSet = new Set(seenIds)\n const unseenIds = ids.filter(id => !seenSet.has(id))\n\n if (unseenIds.length >= count) {\n const selected = unseenIds.slice(0, count)\n localStorage.setItem(\n storageUidKey,\n JSON.stringify([...seenIds, ...selected]),\n )\n return selected\n }\n\n // Not enough unseen IDs — reset and cycle back to the beginning\n const fromStart = ids.slice(0, count - unseenIds.length)\n localStorage.setItem(storageUidKey, JSON.stringify(fromStart))\n return [...unseenIds, ...fromStart]\n}\n\nfunction buildRequest(\n sql: string,\n options?: {\n selectedFacets?: FacetColumnRequest[]\n searchParams?: Record<string, string>\n sqlOperator?: SQLOperator\n additionalFiltersSessionStorageKey?: string\n },\n): QueryBundleRequest {\n const entityId = parseEntityIdFromSqlStatement(sql)\n const additionalFilters = getAdditionalFilters(\n options?.searchParams,\n options?.sqlOperator,\n options?.additionalFiltersSessionStorageKey,\n )\n return {\n partMask: SynapseConstants.BUNDLE_MASK_QUERY_RESULTS,\n concreteType: 'org.sagebionetworks.repo.model.table.QueryBundleRequest',\n entityId,\n query: {\n sql,\n additionalFilters,\n selectedFacets: options?.selectedFacets,\n },\n }\n}\n\nfunction extractUserIdsFromBundle(\n bundle: QueryResultBundle | undefined,\n): string[] {\n if (!bundle?.queryResult?.queryResults.rows) return []\n const ownerIdColumnIndex = bundle.queryResult.queryResults.headers.findIndex(\n el => el.columnType === ColumnTypeEnum.USERID,\n )\n if (ownerIdColumnIndex === -1) return []\n return bundle.queryResult.queryResults.rows\n .map(d => d.values[ownerIdColumnIndex])\n .filter((id): id is string => id !== null)\n}\n\nexport function UserCardListRotate({\n sql,\n count,\n useQueryResultUserData = false,\n size = LARGE_USER_CARD,\n summaryLink,\n summaryLinkText,\n selectedFacets,\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n}: UserCardListRotateProps) {\n const { accessToken, keyFactory } = useSynapseContext()\n const storageUidKey = `${STORED_UID_KEY}-${sql}-${JSON.stringify(\n selectedFacets,\n )}`\n\n const request = buildRequest(sql, {\n selectedFacets,\n searchParams,\n sqlOperator,\n additionalFiltersSessionStorageKey,\n })\n\n const { data: queryResultBundle, isPending } = useQuery({\n ...tableQueryUseQueryDefaults,\n queryKey: keyFactory.getFullTableQueryResultQueryKey(request, false),\n queryFn: () => SynapseClient.getFullQueryTableResults(request, accessToken),\n })\n\n const [rotatedShownIds, setRotatedShownIds] = useState<string[]>([])\n const allIds = useMemo(\n () => extractUserIdsFromBundle(queryResultBundle),\n [queryResultBundle],\n )\n\n const firstNIds = allIds.slice(0, count)\n\n // Not ideal to use an effect, but this ensures this is isomorphic for SSG\n // while ensuring a new set of IDs is shown after client rendering takes over.\n const hasMounted = useRef(false)\n useEffect(() => {\n if (!hasMounted.current) {\n hasMounted.current = true\n setRotatedShownIds(getDisplayIds(allIds, count, storageUidKey))\n }\n }, [allIds, count, storageUidKey])\n\n const renderedIds = rotatedShownIds.length > 0 ? rotatedShownIds : firstNIds\n\n return (\n <div className=\"UserCardListRotate\">\n {isPending && <LoadingUserCardMedium />}\n {!isPending && renderedIds.length === 0 && (\n <p className=\"font-italic\">No one was found.</p>\n )}\n {!isPending && renderedIds.length > 0 && (\n <UserCardList\n list={renderedIds}\n size={size}\n rowSet={\n useQueryResultUserData\n ? queryResultBundle?.queryResult?.queryResults\n : undefined\n }\n />\n )}\n {summaryLink && summaryLinkText && (\n <div className=\"UserCardListRotate__summary\">\n <LargeButton color=\"secondary\" variant=\"contained\" href={summaryLink}>\n {summaryLinkText}\n </LargeButton>\n </div>\n )}\n </div>\n )\n}\n\nexport default UserCardListRotate\n\n/**\n * Prefetches the UserCardListRotate table query and the user profiles it\n * references into a QueryClient for use with HydrationBoundary. Uses anonymous\n * access; warm-caches for unauthenticated users.\n */\nexport async function prefetchUserCardListRotate(\n queryClient: QueryClient,\n sql: string,\n options?: {\n selectedFacets?: FacetColumnRequest[]\n searchParams?: Record<string, string>\n sqlOperator?: SQLOperator\n additionalFiltersSessionStorageKey?: string\n count?: number\n },\n): Promise<void> {\n const keyFactory = new KeyFactory(undefined)\n const request = buildRequest(sql, options)\n const queryKey = keyFactory.getFullTableQueryResultQueryKey(request, false)\n await queryClient.prefetchQuery({\n ...tableQueryUseQueryDefaults,\n queryKey,\n queryFn: () => SynapseClient.getFullQueryTableResults(request, undefined),\n })\n\n const queryResultBundle =\n queryClient.getQueryData<QueryResultBundle>(queryKey)\n // During SSR localStorage is unavailable, so getDisplayIds falls back to\n // slice(0, count). Match that here so prefetched profiles cover exactly the\n // IDs the first render will request.\n const principalIds = extractUserIdsFromBundle(queryResultBundle).slice(\n 0,\n options?.count ?? DEFAULT_DISPLAY_COUNT,\n )\n if (principalIds.length > 0) {\n await queryClient.prefetchQuery(\n getUserProfilesWithProfilePicAttachedQueryOptions(principalIds, {\n keyFactory,\n }),\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAwBA,IAAM,IAAiB,oBACjB,IAAwB,GAejB,KACX,IAAgB,CAAC,GACjB,IAAgB,GAChB,MACa;CAEb,IAAI,OAAO,eAAiB,KAC1B,OAAO,EAAI,MAAM,GAAG,CAAK;CAE3B,IAAM,IAAgB,aAAa,QAAQ,CAAa,GAClD,IAAoB,IACrB,KAAK,MAAM,CAAa,IACzB,CAAC;CAEL,IAAI,CAAC,EAAQ,QAAQ;EACnB,IAAM,IAAW,EAAI,MAAM,GAAG,CAAK;EAEnC,OADA,aAAa,QAAQ,GAAe,KAAK,UAAU,CAAQ,CAAC,GACrD;CACT;CAEA,IAAM,IAAU,IAAI,IAAI,CAAO,GACzB,IAAY,EAAI,QAAO,MAAM,CAAC,EAAQ,IAAI,CAAE,CAAC;CAEnD,IAAI,EAAU,UAAU,GAAO;EAC7B,IAAM,IAAW,EAAU,MAAM,GAAG,CAAK;EAKzC,OAJA,aAAa,QACX,GACA,KAAK,UAAU,CAAC,GAAG,GAAS,GAAG,CAAQ,CAAC,CAC1C,GACO;CACT;CAGA,IAAM,IAAY,EAAI,MAAM,GAAG,IAAQ,EAAU,MAAM;CAEvD,OADA,aAAa,QAAQ,GAAe,KAAK,UAAU,CAAS,CAAC,GACtD,CAAC,GAAG,GAAW,GAAG,CAAS;AACpC;AAEA,SAAS,EACP,GACA,GAMoB;CAOpB,OAAO;EACL,UAAU;EACV,cAAc;EACd,UATe,EAA8B,CAS7C;EACA,OAAO;GACL;GACA,mBAXsB,EACxB,GAAS,cACT,GAAS,aACT,GAAS,kCAQP;GACA,gBAAgB,GAAS;EAC3B;CACF;AACF;AAEA,SAAS,EACP,GACU;CACV,IAAI,CAAC,GAAQ,aAAa,aAAa,MAAM,OAAO,CAAC;CACrD,IAAM,IAAqB,EAAO,YAAY,aAAa,QAAQ,WACjE,MAAM,EAAG,eAAe,EAAe,MACzC;CAEA,OADI,MAAuB,KAAW,CAAC,IAChC,EAAO,YAAY,aAAa,KACpC,KAAI,MAAK,EAAE,OAAO,EAAmB,EACrC,QAAQ,MAAqB,MAAO,IAAI;AAC7C;AAEA,SAAgB,EAAmB,EACjC,QACA,UACA,4BAAyB,IACzB,UAAO,GACP,gBACA,oBACA,mBACA,iBACA,gBACA,yCAC0B;CAC1B,IAAM,EAAE,gBAAa,kBAAe,EAAkB,GAChD,IAAgB,GAAG,EAAe,GAAG,EAAI,GAAG,KAAK,UACrD,CACF,KAEM,IAAU,EAAa,GAAK;EAChC;EACA;EACA;EACA;CACF,CAAC,GAEK,EAAE,MAAM,GAAmB,iBAAc,EAAS;EACtD,GAAG;EACH,UAAU,EAAW,gCAAgC,GAAS,EAAK;EACnE,eAAe,EAAc,yBAAyB,GAAS,CAAW;CAC5E,CAAC,GAEK,CAAC,GAAiB,KAAsB,EAAmB,CAAC,CAAC,GAC7D,IAAS,QACP,EAAyB,CAAiB,GAChD,CAAC,CAAiB,CACpB,GAEM,IAAY,EAAO,MAAM,GAAG,CAAK,GAIjC,IAAa,EAAO,EAAK;CAC/B,QAAgB;EACd,AAAK,EAAW,YACd,EAAW,UAAU,IACrB,EAAmB,EAAc,GAAQ,GAAO,CAAa,CAAC;CAElE,GAAG;EAAC;EAAQ;EAAO;CAAa,CAAC;CAEjC,IAAM,IAAc,EAAgB,SAAS,IAAI,IAAkB;CAEnE,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACG,KAAa,kBAAC,GAAD,CAAwB,CAAA;GACrC,CAAC,KAAa,EAAY,WAAW,KACpC,kBAAC,KAAD;IAAG,WAAU;cAAc;GAAoB,CAAA;GAEhD,CAAC,KAAa,EAAY,SAAS,KAClC,kBAAC,GAAD;IACE,MAAM;IACA;IACN,QACE,IACI,GAAmB,aAAa,eAChC,KAAA;GAEP,CAAA;GAEF,KAAe,KACd,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KAAa,OAAM;KAAY,SAAQ;KAAY,MAAM;eACtD;IACU,CAAA;GACV,CAAA;EAEJ;;AAET;AASA,eAAsB,EACpB,GACA,GACA,GAOe;CACf,IAAM,IAAa,IAAI,EAAW,KAAA,CAAS,GACrC,IAAU,EAAa,GAAK,CAAO,GACnC,IAAW,EAAW,gCAAgC,GAAS,EAAK;CAC1E,MAAM,EAAY,cAAc;EAC9B,GAAG;EACH;EACA,eAAe,EAAc,yBAAyB,GAAS,KAAA,CAAS;CAC1E,CAAC;CAOD,IAAM,IAAe,EAJnB,EAAY,aAAgC,CAIA,CAAiB,EAAE,MAC/D,GACA,GAAS,SAAS,CACpB;CACA,AAAI,EAAa,SAAS,KACxB,MAAM,EAAY,cAChB,EAAkD,GAAc,EAC9D,cACF,CAAC,CACH;AAEJ"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { SxProps } from '@mui/material';
|
|
1
|
+
import { ButtonProps, SxProps, Theme } from '@mui/material';
|
|
2
2
|
import { IconName } from '../../../IconSvg/IconSvg';
|
|
3
3
|
import { DropdownMenuItem } from '../../../menu/DropdownMenu';
|
|
4
4
|
import { MouseEvent } from 'react';
|
|
5
|
+
import { SystemStyleObject } from '@mui/system';
|
|
5
6
|
type EntityActionMenuDropdownMenuType = 'DOWNLOAD' | 'PRIMARY';
|
|
6
7
|
type EntityActionMenuDropdownMenuConfiguration = {
|
|
7
8
|
visible: boolean;
|
|
@@ -23,6 +24,7 @@ export type ActionViewProps = {
|
|
|
23
24
|
icon?: IconName;
|
|
24
25
|
textSx?: SxProps;
|
|
25
26
|
iconSx?: SxProps;
|
|
27
|
+
variant?: ButtonProps['variant'];
|
|
26
28
|
};
|
|
27
29
|
export type EntityActionMenuLayout = {
|
|
28
30
|
buttonActions: ActionViewProps[];
|
|
@@ -30,7 +32,8 @@ export type EntityActionMenuLayout = {
|
|
|
30
32
|
primaryMenuActions: ActionViewProps[][];
|
|
31
33
|
primaryMenuText: string;
|
|
32
34
|
primaryMenuEndIcon: IconName;
|
|
33
|
-
|
|
35
|
+
primaryMenuEndIconSx?: SxProps;
|
|
36
|
+
menuButtonSx?: SystemStyleObject<Theme>;
|
|
34
37
|
};
|
|
35
38
|
export type EntityActionMenuProps = {
|
|
36
39
|
actionConfiguration: ActionConfigurationMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityActionMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/entity/page/action_menu/EntityActionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"EntityActionMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/entity/page/action_menu/EntityActionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhE,OAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,KAAK,gCAAgC,GAAG,UAAU,GAAG,SAAS,CAAA;AAE9D,KAAK,yCAAyC,GAAG;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AAExE,MAAM,MAAM,oBAAoB,GAAG,MAAM,CACvC,gCAAgC,EAChC,yCAAyC,CAC1C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,eAAe,EAAE,CAAA;IAChC,mBAAmB,EAAE,eAAe,EAAE,EAAE,CAAA;IACxC,kBAAkB,EAAE,eAAe,EAAE,EAAE,CAAA;IACvC,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,QAAQ,CAAA;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAElC,mBAAmB,EAAE,sBAAsB,CAAA;IAE3C,iBAAiB,EAAE,oBAAoB,CAAA;IAEvC,MAAM,EAAE,sBAAsB,CAAA;CAC/B,CAAA;AAMD,iBAAS,kBAAkB,CACzB,mBAAmB,EAAE,sBAAsB,EAC3C,MAAM,EAAE,sBAAsB,GAC7B,sBAAsB,CAmBxB;AAED;;;;;GAKG;AACH,iBAAS,4BAA4B,CACnC,KAAK,EAAE,eAAe,EAAE,EACxB,mBAAmB,EAAE,sBAAsB,GAC1C,gBAAgB,EAAE,CAqBpB;AAED;;;;;;GAMG;AACH,iBAAS,sBAAsB,CAC7B,WAAW,EAAE,eAAe,EAAE,EAAE,EAChC,mBAAmB,EAAE,sBAAsB,GAC1C,gBAAgB,EAAE,EAAE,CAYtB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,2CA8GpE;AAED,eAAO,MAAM,yBAAyB;;;;CAIrC,CAAA"}
|