generate-text-node-demo
simple-ai/generate-text-node-demoFreeExample
simple-ai publishes no description for this item.
Install it
npx shadcn@latest add https://simple-ai.dev/r/generate-text-node-demo.jsonSource
1"use client";23import "@xyflow/react/dist/style.css";45import {6 addEdge,7 applyEdgeChanges,8 applyNodeChanges,9 Background,10 type Connection,11 type EdgeChange,12 type Node,13 type NodeChange,14 type NodeProps,15 type NodeTypes,16 ReactFlow,17 ReactFlowProvider,18} from "@xyflow/react";19import { nanoid } from "nanoid";20import { useCallback, useState } from "react";21import type { Model } from "@/registry/ui/model-selector";22import { GenerateTextNode } from "../ui/flow/generate-text-node";2324const GenerateTextNodeController = ({25 id,26 data,27 ...props28}: NodeProps<Node>) => {29 const [model, setModel] = useState<Model>("deepseek-chat");30 const [toolHandles, setToolHandles] = useState({31 tools: [32 {33 id: "name",34 name: "name",35 },36 ],37 });3839 const handleCreateTool = useCallback(() => {40 setToolHandles({41 ...toolHandles,42 tools: [...toolHandles.tools, { id: nanoid(), name: "name" }],43 });44 return true;45 }, [toolHandles]);4647 const handleRemoveTool = useCallback(() => {48 setToolHandles({49 ...toolHandles,50 tools: toolHandles.tools.filter((tool) => tool.id !== "name"),51 });52 return true;53 }, [toolHandles]);5455 const handleUpdateTool = useCallback(56 (toolId: string, newName: string, newDescription?: string) => {57 setToolHandles({58 ...toolHandles,59 tools: toolHandles.tools.map((tool) =>60 tool.id === toolId61 ? {62 ...tool,63 name: newName,64 description: newDescription,65 }66 : tool,67 ),68 });69 return true;70 },71 [toolHandles],72 );7374 return (75 <GenerateTextNode76 id={id}77 data={{78 status: "idle",79 config: { model },80 dynamicHandles: toolHandles,81 }}82 {...props}83 type="generate-text"84 onModelChange={(model) => setModel(model)}85 onCreateTool={handleCreateTool}86 onRemoveTool={handleRemoveTool}87 onUpdateTool={handleUpdateTool}88 onDeleteNode={() => {}}89 />90 );91};9293const nodeTypes: NodeTypes = {94 "generate-text": GenerateTextNodeController,95};9697const initialNodes = [98 {99 id: "node-1",100 type: "generate-text",101 position: { x: 0, y: -130 },102 data: {},103 },104];105106export default function ResizableNodeDemo() {107 const [nodes, setNodes] = useState<Node[]>(initialNodes);108 const [edges, setEdges] = useState([]);109110 // Add default viewport configuration111 const defaultViewport = { x: 100, y: 200, zoom: 1 };112113 const onNodesChange = useCallback(114 (changes: NodeChange<Node>[]) =>115 setNodes((nds) => applyNodeChanges(changes, nds)),116 [],117 );118 const onEdgesChange = useCallback(119// … truncated
Files it writes
More from simple-ai
All 77 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| chat-input-demo-mentionschat-input-demo-mentions | simple-ai | Examples | Free | no deps | |
| chat-input-demo-simplechat-input-demo-simple | simple-ai | Examples | Free | no deps | |
| chat-input-with-addonschat-input-with-addons | simple-ai | Examples | Free | no deps | |
| chat-message-area-demochat-message-area-demo | simple-ai | Examples | Free | no deps | |
| chat-message-area-demo-alignmentchat-message-area-demo-alignment | simple-ai | Examples | Free | no deps | |
| chat-message-area-demo-streamingchat-message-area-demo-streaming | simple-ai | Examples | Free | no deps | |
| chat-message-demochat-message-demo | simple-ai | Examples | Free | no deps | |
| chat-message-demo-avatar-imagechat-message-demo-avatar-image | simple-ai | Examples | Free | no deps |
