/** * WordPress dependencies */ import { createSelector } from '@safe-wordpress/data'; /** * External dependencies */ import { values } from 'lodash'; import type { Dict, Maybe, SegmentationRuleType, SegmentationRuleTypeName, SegmentationRuleCategory, SegmentationRuleCategoryName, } from '@nab/types'; /** * Internal dependencies */ import type { State } from './types'; export const getSegmentationRuleTypes = createSelector( ( state: State ): ReadonlyArray< SegmentationRuleType > => values( state.segmentationRuleTypes ), ( state: State ) => [ state.segmentationRuleTypes ] ); type GetSegmentationRuleType = typeof _getSegmentationRuleType & { CurriedSignature: < T extends Dict = Dict >( name: SegmentationRuleTypeName ) => Maybe< SegmentationRuleType< T > >; }; export const getSegmentationRuleType = _getSegmentationRuleType as GetSegmentationRuleType; function _getSegmentationRuleType< T extends Dict = Dict >( state: State, name: SegmentationRuleTypeName ): Maybe< SegmentationRuleType< T > > { return state.segmentationRuleTypes[ name ] as SegmentationRuleType< T >; } export const getSegmentationRuleTypeCategories = createSelector( ( state: State ): ReadonlyArray< SegmentationRuleCategory > => values( state.categories ), ( state: State ) => [ state.categories ] ); export function getSegmentationRuleTypeCategory( state: State, name: SegmentationRuleCategoryName ): Maybe< SegmentationRuleCategory > { return state.categories[ name ]; }