/** * External dependencies */ import type { ExperimentId, Maybe } from '@nab/types'; /** * Internal dependencies */ import { EMPTY_ARRAY } from '../constants'; import type { ClickEvent, State, VisitedPage } from './types'; export function getPosition( state: State ): State[ 'position' ] { return state.position; } export function getTab( state: State ): State[ 'tab' ] { return state.tab; } export function isAwaitingGdpr( state: State ): boolean { return ( !! getSettings( state ).gdprCookie.name && 'ready' !== state.gdprStatus ); } export function getStatus( state: State ): State[ 'status' ] { return state.status; } export function getPages( state: State ): State[ 'navigation' ] { return state.navigation; } export function getCloudStatus( state: State ): State[ 'cloudStatus' ] { return state.cloudStatus; } export function getSettings( state: State ): State[ 'settings' ] { return state.settings; } export function getAlternative( state: State ): State[ 'cookies' ][ 'alternative' ] { return state.cookies.alternative; } export function getSegmentation( state: State ): State[ 'cookies' ][ 'segmentation' ] { return state.cookies.segmentation; } export function getActiveSegments( state: State, experimentId: ExperimentId ): Maybe< ReadonlyArray< number > > { return getSegmentation( state ).activeSegments[ experimentId ]; } export function getNewAlternative( state: State ): State[ 'newCookies' ][ 'alternative' ] { return state.newCookies.alternative; } export function getNewSegmentation( state: State ): State[ 'newCookies' ][ 'segmentation' ] { return state.newCookies.segmentation; } export function getNewActiveSegments( state: State, experimentId: ExperimentId ): Maybe< ReadonlyArray< number > > { return getNewSegmentation( state ).activeSegments[ experimentId ]; } export function getViews( state: State ): State[ 'cookies' ][ 'views' ] { return state.cookies.views; } export function hasViews( state: State, experimentId: ExperimentId ): boolean { return !! getViews( state )[ experimentId ]; } export function getEvents( state: State ): VisitedPage[ 'events' ] { return state.navigation[ 0 ]?.events || EMPTY_ARRAY; } export function getHeatmapClicks( state: State ): VisitedPage[ 'heatmapClicks' ] { return state.navigation[ 0 ]?.heatmapClicks || EMPTY_ARRAY; } export function getHighlightedClick( state: State ): Maybe< ClickEvent > { return state.highlightedClick; }