/** * WordPress dependencies */ import { createInterpolateElement } from '@safe-wordpress/element'; import { sprintf, _x } from '@safe-wordpress/i18n'; /** * External dependencies */ import { trim } from 'lodash'; import { isEmpty, listify } from '@nab/utils'; import type { SRViewProps } from '@nab/types'; /** * Internal dependencies */ import type { Attributes } from './types'; export const View = ( { attributes: { condition, value: originalValue }, }: SRViewProps< Attributes > ): JSX.Element => { const value = originalValue .split( '\n' ) .map( ( v ) => trim( v ) ) .filter( ( v ) => !! v ) .join( '\n' ); if ( isEmpty( trim( value ) ) ) { return <>{ _x( 'URL to be defined.', 'text', 'nelio-ab-testing' ) }; } switch ( condition ) { case 'is-equal-to': return createInterpolateElement( sprintf( /* translators: %s: URL. */ _x( 'Referring URL is equal to %s.', 'text', 'nelio-ab-testing' ), `${ value }` ), { code: } ); case 'is-not-equal-to': return createInterpolateElement( sprintf( /* translators: %s: URL. */ _x( 'Referring URL is not equal to %s.', 'text', 'nelio-ab-testing' ), `${ value }` ), { code: } ); case 'contains': return createInterpolateElement( sprintf( /* translators: %s: Text. */ _x( 'Referring URL contains %s.', 'text', 'nelio-ab-testing' ), `${ value }` ), { code: } ); case 'does-not-contain': return createInterpolateElement( sprintf( /* translators: %s: Text. */ _x( 'Referring URL does not contain %s.', 'text', 'nelio-ab-testing' ), `${ value }` ), { code: } ); case 'is-any-of': return createInterpolateElement( sprintf( /* translators: %s: List of URL values. */ _x( 'Referring URL is %s.', 'text', 'nelio-ab-testing' ), makeList( value ) ), { code: } ); case 'is-none-of': return createInterpolateElement( sprintf( /* translators: %s: List of URL values. */ _x( 'Referring URL is not %s.', 'text', 'nelio-ab-testing' ), makeList( value ) ), { code: } ); } }; // ======= // HELPERS // ======= const makeList = ( value: string ): string => listify( 'or', value .split( '\n' ) .map( ( v ) => trim( v ) ) .filter( ( v ) => !! v ) .map( ( v ) => `${ v }` ) );