Spaces:
Running
Running
File size: 1,387 Bytes
8fe4e41 a8323d4 8fe4e41 3752479 44d07e8 342bc0e a55eb17 e326fb7 a8323d4 10c9dc3 44d07e8 10c9dc3 be095f5 342bc0e 05891f5 b0968aa a8323d4 10c9dc3 a8323d4 3752479 d1d859f 342bc0e be095f5 342bc0e |
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 38 39 40 41 42 43 44 45 |
import { useReactFlow } from "@xyflow/react";
import React from "react";
// @ts-ignore
import Triangle from "~icons/tabler/triangle-inverted-filled.jsx";
import LynxKiteNode from "./LynxKiteNode";
import NodeParameter, { type UpdateOptions } from "./NodeParameter";
export function NodeWithParams(props: any) {
const reactFlow = useReactFlow();
const metaParams = props.data.meta?.value?.params ?? [];
const [collapsed, setCollapsed] = React.useState(props.collapsed);
function setParam(name: string, newValue: any, opts: UpdateOptions) {
reactFlow.updateNodeData(props.id, (prevData: any) => ({
...prevData,
params: { ...prevData.data.params, [name]: newValue },
__execution_delay: opts.delay || 0,
}));
}
return (
<>
{props.collapsed && metaParams.length > 0 && (
<div className="params-expander" onClick={() => setCollapsed(!collapsed)}>
<Triangle className={`flippy ${collapsed ? "flippy-90" : ""}`} />
</div>
)}
{!collapsed &&
metaParams.map((meta: any) => (
<NodeParameter
name={meta.name}
key={meta.name}
value={props.data.params[meta.name]}
data={props.data}
meta={meta}
setParam={setParam}
/>
))}
{props.children}
</>
);
}
export default LynxKiteNode(NodeWithParams);
|