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); }} >
{index + 1}
{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}
); }