import { PLAIN_EDITOR_NAME } from '@/Constants' import { sanitizeHtmlString, SNNote } from '@standardnotes/snjs' import { observer } from 'mobx-react-lite' import { FunctionComponent } from 'preact' import { Icon } from '@/Components/Icon/Icon' import { ListItemConflictIndicator } from './ListItemConflictIndicator' import { ListItemFlagIcons } from './ListItemFlagIcons' import { ListItemTags } from './ListItemTags' import { ListItemMetadata } from './ListItemMetadata' import { DisplayableListItemProps } from './Types/DisplayableListItemProps' export const NoteListItem: FunctionComponent = observer( ({ application, appState, hideDate, hideIcon, hideTags, hidePreview, item, selected, sortBy, tags }) => { const editorForNote = application.componentManager.editorForNote(item as SNNote) const editorName = editorForNote?.name ?? PLAIN_EDITOR_NAME const [icon, tint] = application.iconsController.getIconAndTintForNoteType(editorForNote?.package_info.note_type) const hasFiles = application.items.getFilesForNote(item as SNNote).length > 0 const openNoteContextMenu = (posX: number, posY: number) => { appState.notes.setContextMenuClickLocation({ x: posX, y: posY, }) appState.notes.reloadContextMenuLayout() appState.notes.setContextMenuOpen(true) } const openContextMenu = (posX: number, posY: number) => { void appState.selectedItems.selectItem(item.uuid, true) openNoteContextMenu(posX, posY) } return (
{ void appState.selectedItems.selectItem(item.uuid, true) }} onContextMenu={(event) => { event.preventDefault() openContextMenu(event.clientX, event.clientY) }} > {!hideIcon ? (
) : (
)}
{item.title}
{!hidePreview && !item.hidePreview && !item.protected && (
{item.preview_html && (
)} {!item.preview_html && item.preview_plain && (
{item.preview_plain}
)} {!item.preview_html && !item.preview_plain && item.text && (
{item.text}
)}
)}
) }, )