12345678910111213141516171819202122232425262728293031323334353637 |
- import {PageFilters} from 'sentry/types';
- import getDisplayName from 'sentry/utils/getDisplayName';
- import usePageFilters from './usePageFilters';
- type InjectedPageFiltersProps = {
- isGlobalSelectionReady?: boolean;
- selection?: PageFilters;
- };
- /**
- * Higher order component that uses PageFiltersStore and provides the active
- * project
- */
- function withPageFilters<P extends InjectedPageFiltersProps>(
- WrappedComponent: React.ComponentType<P>
- ) {
- type Props = Omit<P, keyof InjectedPageFiltersProps> & InjectedPageFiltersProps;
- const WithPageFilters: React.FC<Props> = props => {
- const {selection, isReady: isGlobalSelectionReady} = usePageFilters();
- const selectionProps = {
- selection,
- isGlobalSelectionReady,
- };
- return <WrappedComponent {...selectionProps} {...(props as P)} />;
- };
- const displayName = getDisplayName(WrappedComponent);
- WithPageFilters.displayName = `withPageFilters(${displayName})`;
- return WithPageFilters;
- }
- export default withPageFilters;
|