{enableNavigation && navigationPath && (imageAsLink ?? !internalState) ? (
{imageContainerContent}
) : (
{imageContainerContent}
)}
{rows
.filter(
(row): row is NonNullable =>
row !== null && row !== undefined,
)
.map((row, index) => (
))}
);
}
return (
{rows
.filter(
(row): row is NonNullable => row !== null && row !== undefined,
)
.map((row, index) => (
0,
})}
key={row.id}
size={index > 0 ? 'sm' : 'md'}
>
))}
);
};
const PosterItemCard = ({
controls,
data,
enableDrag,
enableExpansion,
enableMultiSelect,
enableNavigation,
imageAsLink,
internalState,
isRound,
itemType,
rows,
showRating,
withControls,
}: ItemCardDerivativeProps) => {
const [showControls, setShowControls] = useState(false);
const itemRowId =
data && internalState && typeof data === 'object' && 'id' in data
? internalState.extractRowId(data)
: undefined;
const isSelected = useItemSelectionState(internalState, itemRowId || undefined);
const getId = useCallback(() => {
if (!data) {
return [];
}
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
return draggedItems.map((item) => item.id);
}, [data, internalState, enableMultiSelect]);
const getItem = useCallback(() => {
if (!data) {
return [];
}
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
return draggedItems;
}, [data, internalState, enableMultiSelect]);
const onDragStart = useCallback(() => {
if (!data) {
return;
}
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
if (internalState) {
internalState.setDragging(draggedItems);
}
}, [data, internalState, enableMultiSelect]);
const onDrop = useCallback(() => {
if (internalState) {
internalState.setDragging([]);
}
}, [internalState]);
const dragOperation = useMemo(
() =>
itemType === LibraryItem.QUEUE_SONG
? [DragOperation.REORDER, DragOperation.ADD]
: [DragOperation.ADD],
[itemType],
);
const drag = useMemo(
() => ({
getId,
getItem,
itemType,
onDragStart,
onDrop,
operation: dragOperation,
target: DragTarget.ALBUM,
}),
[getId, getItem, itemType, onDragStart, onDrop, dragOperation],
);
const { isDragging: isDraggingLocal, ref } = useDragDrop