Current File : /home/digitaw/www/wp-content/updraft/plugins-old/simple-history/src/components/Event.jsx
import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
import { useCopyToClipboard } from '@wordpress/compose';
import { __ } from '@wordpress/i18n';
import { info, link, moreVertical } from '@wordpress/icons';
import { clsx } from 'clsx';
import { navigateToEventPermalink } from '../functions';
import { EventDetails } from './EventDetails';
import { EventHeader } from './EventHeader';
import { EventInitiatorImage } from './EventInitiator';
import { EventOccasions } from './EventOccasions';
import { EventText } from './EventText';
import { useState } from '@wordpress/element';

function CopyLinkMenuItem( { event } ) {
	const permalink = event.permalink;
	const copyText = __( 'Copy link to event', 'simple-history' );
	const copiedText = __( 'Link copied to clipboard', 'simple-history' );

	const [ dynamicCopyText, setDynamicCopyText ] = useState( copyText );

	const ref = useCopyToClipboard( permalink, () => {
		setDynamicCopyText( copiedText );
		setTimeout( () => {
			setDynamicCopyText( copyText );
		}, 2000 );

		// A notice after copy link would be better but this does not work for some reason.
	} );

	return (
		<MenuItem icon={ link } iconPosition="left" ref={ ref }>
			{ dynamicCopyText }
		</MenuItem>
	);
}

function ViewEventDetailsMenuItem( { event, onClose } ) {
	return (
		<MenuItem
			icon={ info }
			iconPosition="left"
			onClick={ () => {
				navigateToEventPermalink( { event } );
				onClose();
			} }
		>
			{ __( 'View event details', 'simple-history' ) }
		</MenuItem>
	);
}

function EventActions( props ) {
	const { event } = props;
	const eventVariant = props.eventVariant;

	// Don't show actions on modal events.
	if ( eventVariant === 'modal' ) {
		return null;
	}

	return (
		<div className="SimpleHistoryLogitem__actions">
			<DropdownMenu
				label={ __( 'Actions…', 'simple-history' ) }
				icon={ moreVertical }
				popoverProps={ {
					placement: 'left-start',
					inline: true,
				} }
			>
				{ ( { onClose } ) => (
					<>
						<MenuGroup>
							<ViewEventDetailsMenuItem
								event={ event }
								eventVariant={ eventVariant }
								onClose={ onClose }
							/>
							<CopyLinkMenuItem event={ event } />
						</MenuGroup>
					</>
				) }
			</DropdownMenu>
		</div>
	);
}
/*
				{ [

					{
						title: __( 'Copy as text', 'simple-history' ),
						icon: copy,
						onClick: () => {
							navigator.clipboard.writeText( event.message );
						},
					},
					{
						title: __( 'Send via email', 'simple-history' ),
						icon: send,
						onClick: () => {
							console.log( 'Send via email', event );
						},
					},
				] }
				*/
/**
 * Component for a single event in the list of events.
 *
 * @param {Object} props
 */
export function Event( props ) {
	const {
		event,
		variant = 'normal',
		mapsApiKey,
		hasExtendedSettingsAddOn,
		isNewAfterFetchNewEvents,
	} = props;

	const containerClassNames = clsx(
		'SimpleHistoryLogitem',
		`SimpleHistoryLogitem--variant-${ variant }`,
		`SimpleHistoryLogitem--loglevel-${ event.loglevel }`,
		`SimpleHistoryLogitem--logger-${ event.logger }`,
		`SimpleHistoryLogitem--initiator-${ event.initiator }`,
		{
			'SimpleHistoryLogitem--newRowSinceReload': isNewAfterFetchNewEvents,
		}
	);

	return (
		<li key={ event.id } className={ containerClassNames }>
			<div className="SimpleHistoryLogitem__firstcol">
				<EventInitiatorImage event={ event } />
			</div>

			<div className="SimpleHistoryLogitem__secondcol">
				<EventHeader
					event={ event }
					eventVariant={ variant }
					mapsApiKey={ mapsApiKey }
					hasExtendedSettingsAddOn={ hasExtendedSettingsAddOn }
				/>

				<EventText event={ event } eventVariant={ variant } />

				<EventDetails event={ event } eventVariant={ variant } />

				<EventOccasions
					event={ event }
					eventVariant={ variant }
					hasExtendedSettingsAddOn={ hasExtendedSettingsAddOn }
				/>

				<EventActions event={ event } eventVariant={ variant } />
			</div>
		</li>
	);
}