import CohortsPropertyFilter from './cohorts-property-filter'; import CustomEventPropertyFilter from './custom-event-property-filter'; import InsightsPropertyFilter from './insights-property-filter'; import PropertyFilter from './property-filter'; import {DisplayContext} from './types'; const PROPERTY_FILTER_TYPES: {[key in DisplayContext]: typeof PropertyFilter} = { [DisplayContext.Cohorts]: CohortsPropertyFilter, [DisplayContext.CustomEvent]: CustomEventPropertyFilter, [DisplayContext.Default]: PropertyFilter, [DisplayContext.Insights]: InsightsPropertyFilter, [DisplayContext.Signal]: PropertyFilter, }; export default class PropertyFilterFactory { public static createPropertyFilter( attributes: Partial, {displayContext}: {displayContext: DisplayContext}, ): PropertyFilter { const PropertyFilterClass = PROPERTY_FILTER_TYPES[displayContext]; return new PropertyFilterClass(attributes); } }