import CustomEventDateRange from './custom-event-date-range'; import DateRange from './date-range'; import InsightsPropertyFilterDateRange from './insights-property-filter-date-range'; import {DisplayContext} from './types'; const DATE_RANGE_TYPES: {[key in DisplayContext]: typeof DateRange} = { [DisplayContext.CustomEvent]: CustomEventDateRange, [DisplayContext.Default]: DateRange, [DisplayContext.InsightsPropertyFilter]: InsightsPropertyFilterDateRange, }; export default class DateRangeFactory { public static createDateRange( attributes: Partial, {displayContext}: {displayContext: DisplayContext}, ): DateRange { const DateRangeClass = DATE_RANGE_TYPES[displayContext]; return new DateRangeClass(attributes); } }