/** * @file JavaScript Code Node - Code editor for particle physics functions */ import * as React from "react"; import type { NodeDefinition, NodeRendererProps, InspectorRenderProps, ExternalDataReference, } from "../../../../../types/NodeDefinition"; import classes from "./JavaScriptCodeNode.module.css"; export type JavaScriptCodeData = { id: string; code: string; label: string; }; export const JavaScriptCodeRenderer = ({ node, isSelected, isDragging, externalData, onUpdateNode, }: NodeRendererProps) => { const codeData = externalData as JavaScriptCodeData | undefined; const [localCode, setLocalCode] = React.useState(codeData?.code || ""); React.useEffect(() => { if (codeData?.code !== undefined) { setLocalCode(codeData.code); } }, [codeData?.code]); const handleCodeChange = (newCode: string) => { setLocalCode(newCode); }; const handleApply = () => { onUpdateNode({ data: { ...node.data, code: localCode, timestamp: Date.now(), }, }); }; const lineCount = localCode.split("\n").length; return (
📝 {codeData?.label || "JavaScript"}
{lineCount} lines