import { Box, Heading, useColorModeValue } from '@chakra-ui/react'; import { motion } from 'framer-motion'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Category, IconEntity } from 'src/types'; import theme from '../lib/theme'; import IconReorder from './IconReorder'; const UnCategorizedIcons = ({ icons, dropZones, dragging, setDragging, categories, handleChange, }): JSX.Element => { const [scrollPosition, setScrollPosition] = useState(0); const boxBackground = useColorModeValue(theme.colors.white, theme.colors.gray[700]); const allIconContainerRef = useRef(null); const unCategorizedIcons = useMemo(() => { return (icons as IconEntity[]).filter(icon => { return !Object.values(categories as Category[]) .flat() .some(categorizedIcon => categorizedIcon.name === icon.name); }); }, [icons, categories]); const onItemDrop = useCallback( (iconName: string, targetCategory: string) => { const newIcons = [...categories[targetCategory].map(({ name }) => name), iconName]; handleChange(targetCategory)(newIcons); }, [categories], ); useEffect(() => { allIconContainerRef.current.addEventListener('scroll', () => { setScrollPosition(allIconContainerRef.current.scrollTop); }); }, []); return ( Uncategorized Icons {}} dragging={dragging} setDragging={setDragging} /> All Icons {}} dragging={dragging} setDragging={setDragging} sx={{ opacity: 0.4, }} /> ); }; export default UnCategorizedIcons;