"use client";
import * as React from "react";
import {
closestCenter,
DndContext,
type DragEndEvent,
} from "@dnd-kit/core";
import {
rectSortingStrategy,
SortableContext,
useSortable,
} from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities";
import { DotsSixVerticalIcon, XIcon } from "@phosphor-icons/react";
import { cn } from "../../../lib/utils";
import { Button } from "../../primitives";
import {
FileDropPlusGlyph,
getImageTransformStyle,
} from "./file-drop-presentation";
import type {
FileDropPresentationEntry,
FileDropPresentationItem,
} from "./file-drop-types";
type SortablePreviewTileProps = {
entry: FileDropPresentationEntry;
isSortable: boolean;
onItemRemove?: (item: FileDropPresentationItem, index: number) => void;
onPreviewSelect?: (itemKey: string) => void;
selected?: boolean;
};
function SortablePreviewTile({
entry,
isSortable,
onItemRemove,
onPreviewSelect,
selected = false,
}: SortablePreviewTileProps): React.JSX.Element {
const { item, key: itemKey, sourceIndex } = entry;
const { attributes, isDragging, listeners, setNodeRef, transform, transition } =
useSortable({
disabled: !isSortable,
id: itemKey,
});
const sortableTransform = transform
? {
...transform,
scaleX: isDragging ? 1.035 : transform.scaleX,
scaleY: isDragging ? 1.035 : transform.scaleY,
}
: null;
const style: React.CSSProperties = {
transform: sortableTransform ? CSS.Transform.toString(sortableTransform) : undefined,
transition,
};
const image = (
);
return (