All files / src/components/ui/lists FlatListOuterDropTarget.tsx

0% Statements 0/13
0% Branches 0/1
0% Functions 0/4
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37                                                                         
import React from "react";
import { useDrop } from "react-dnd";
import {
  StyledListDropzone,
  StyledListWithDropzoneWrapper,
} from "ui/lists/style";
 
export const createFlatListOuterDropTarget = <T,>(
  acceptTypes: string[],
  onDrop: (item: T) => void,
) => {
  const Outer = React.forwardRef<
    HTMLDivElement,
    React.HTMLAttributes<HTMLDivElement>
  >((props, ref) => {
    const [{ isOver }, drop] = useDrop({
      accept: acceptTypes,
      drop: (item: T, monitor) => {
        Iif (monitor.didDrop()) return;
        onDrop(item);
      },
      collect: (monitor) => ({
        isOver: monitor.isOver({ shallow: true }),
      }),
    });
 
    return (
      <StyledListWithDropzoneWrapper {...props} ref={ref}>
        {props.children}
        <StyledListDropzone ref={drop} $isOver={isOver} />
      </StyledListWithDropzoneWrapper>
    );
  });
 
  return Outer;
};