import { FC, PropsWithChildren, useState } from 'react'; import { GetConfigurationValue, UnseenItemCategory } from '../../../../api'; import { LayoutBadgeImageView } from '../../../../common'; import { useInventoryBadges, useInventoryUnseenTracker } from '../../../../hooks'; import { InfiniteGrid } from '../../../../layout'; export const InventoryBadgeItemView: FC> = props => { const { badgeCode = null, children = null, ...rest } = props; const { selectedBadgeCode = null, setSelectedBadgeCode = null, toggleBadge = null, getBadgeId = null } = useInventoryBadges(); const { isUnseen = null } = useInventoryUnseenTracker(); const unseen = isUnseen(UnseenItemCategory.BADGE, getBadgeId(badgeCode)); const [ isDragging, setIsDragging ] = useState(false); const onDragStart = (event: React.DragEvent) => { event.dataTransfer.setData('badgeCode', badgeCode); event.dataTransfer.setData('source', 'inventory'); event.dataTransfer.effectAllowed = 'move'; setIsDragging(true); const badgeUrl = GetConfigurationValue('badge.asset.url').replace('%badgename%', badgeCode); const img = new Image(); img.src = badgeUrl; event.dataTransfer.setDragImage(img, 20, 20); }; const onDragEnd = () => setIsDragging(false); return ( toggleBadge(selectedBadgeCode) } onDragEnd={ onDragEnd } onDragStart={ onDragStart } onMouseDown={ event => setSelectedBadgeCode(badgeCode) } { ...rest }> { children } ); };