/** * WordPress dependencies */ import { createInterpolateElement } from '@safe-wordpress/element'; import { sprintf, _x } from '@safe-wordpress/i18n'; /** * External dependencies */ import { ConversionActionScopeView } from '@nab/components'; import { formatDuration } from '@nab/utils'; import type { CAViewProps, ConversionActionScope } from '@nab/types'; /** * Internal dependencies */ import type { Attributes } from './types'; export const View = ( props: CAViewProps< Attributes > ): JSX.Element => ( <>
); const ActualView = ( { attributes: { value }, scope, }: CAViewProps< Attributes > ): JSX.Element => { const label = useLabel( scope ); const duration = formatDuration( value, 'seconds' ); return createInterpolateElement( sprintf( label, `${ duration }` ), { strong: } ); }; // ===== // HOOKS // ===== const useLabel = ( scope: ConversionActionScope ): string => { switch ( scope.type ) { case 'all-pages': /* translators: %s: Time duration, such as "3 minutes, 2 seconds". */ return _x( 'A visitor has spent %s on any page.', 'text', 'nelio-ab-testing' ); case 'test-scope': /* translators: %s: Time duration, such as "3 minutes, 2 seconds". */ return _x( 'A visitor has spent %s on a tested page.', 'text', 'nelio-ab-testing' ); case 'urls': case 'post-ids': case 'php-function': /* translators: %s: Time duration, such as "3 minutes, 2 seconds". */ return _x( 'A visitor has spent %s on certain pages.', 'text', 'nelio-ab-testing' ); } };