import { GripVertical, Trash2 } from "lucide-react";
import { postJson } from "../api/controlApi";
import { ParameterField } from "./ParameterField";
export function LayerCard({
layer,
index,
shaders,
expanded,
isDragging,
isDropTarget,
onToggleExpanded,
onDragStart,
onDragEnd,
onDragOver,
onDrop,
onRemove,
onLayerParameterChange,
}) {
const selectedShader = shaders.find((shader) => shader.id === layer.shaderId);
return (
{
event.preventDefault();
onDragOver(layer.id);
}}
onDrop={(event) => {
event.preventDefault();
onDrop(event, layer.id, index);
}}
>
{expanded ? (
{layer.temporal?.enabled ? (
{layer.temporal.historySource} history, requested {layer.temporal.requestedHistoryLength} frame{layer.temporal.requestedHistoryLength === 1 ? "" : "s"}, using {layer.temporal.effectiveHistoryLength}
) : (
Stateless shader
)}
{selectedShader?.description ? (
{selectedShader.category || "Shader"}
{selectedShader.description}
) : null}
Parameters
{layer.parameters.length > 0 ? (
{layer.parameters.map((parameter) => (
onLayerParameterChange(layer.id, parameterId, value)}
/>
))}
) : (
This shader does not expose any user parameters.
)}
) : null}
);
}