import {useState} from 'react';
import {FormattedMessage} from 'react-intl';
import {
Icon,
Item,
List,
Menu,
MenuItemProps,
Popup,
Tab,
} from 'semantic-ui-react';
import {Source} from '../../util/gedcom_util';
import {AdditionalFiles, FileEntry} from './additional-files';
import {MultilineText} from './multiline-text';
import {Sources} from './sources';
import {WrappedImage} from './wrapped-image';
export interface Image {
url: string;
filename: string;
title?: string;
}
interface Props {
images?: Image[];
notes?: string[][];
sources?: Source[];
indi: string;
files?: FileEntry[];
}
function eventImages(images: Image[] | undefined) {
return (
!!images &&
images.map((image, index) => (
))
);
}
function eventNotes(notes: string[][] | undefined) {
return (
!!notes?.length &&
notes.map((note, index) => (
(
{line}
))}
/>
))
);
}
export function EventExtras(props: Props) {
const [activeIndex, setActiveIndex] = useState(-1);
const [indi, setIndi] = useState('');
if (!indi || indi !== props.indi) {
setActiveIndex(-1);
setIndi(props.indi);
}
function handleTabOnClick(
_event: React.MouseEvent,
menuItemProps: MenuItemProps,
) {
menuItemProps.index !== undefined && activeIndex !== menuItemProps.index
? setActiveIndex(menuItemProps.index)
: setActiveIndex(-1);
}
const imageTab = props.images?.length && {
menuItem: (
}
size="mini"
position="bottom center"
trigger={}
/>
),
render: () => {eventImages(props.images)},
};
const noteTab = props.notes?.length && {
menuItem: (
}
size="mini"
position="bottom center"
trigger={}
/>
),
render: () => {eventNotes(props.notes)},
};
const sourceTab = props.sources?.length && {
menuItem: (
}
size="mini"
position="bottom center"
trigger={}
/>
),
render: () => (
),
};
const filesTab = props.files?.length && {
menuItem: (
}
size="mini"
position="bottom center"
trigger={}
/>
),
render: () => (
),
};
const panes = [imageTab, noteTab, sourceTab, filesTab].flatMap((tab) =>
tab ? [tab] : [],
);
if (panes.length) {
return (
);
}
return null;
}