मुख्य कंटेंट तक स्किप करें

उदाहरण

ड्रैग और ड्रॉप​

import { useState } from "react";
import { Tree } from "@powerduck/tree/react";
import type { ReorderResult } from "@powerduck/tree/core";

function SortableTree({ initialNodes }) {
const [nodes, setNodes] = useState(initialNodes);

return (
<Tree
nodes={nodes}
draggable
onReorder={(result: ReorderResult) => setNodes(result.nodes)}
/>
);
}

ब्रांच नोड पर ड्रॉप क्षेत्र:

  • ऊपरी 25% — पहले जोड़ें (क्रम बदलें)
  • बीच का 50% — इस फ़ोल्डर में ले जाएँ (दूसरे स्तर पर)
  • निचला 25% — बाद में जोड़ें (क्रम बदलें)

प्रोग्राम के ज़रिए स्थान ढूँढना​

import { useRef } from "react";
import { Tree } from "@powerduck/tree/react";
import type { TreeHandle } from "@powerduck/tree/react";

function TreeWithLocate({ nodes }) {
const treeRef = useRef<TreeHandle>(null);

const locateById = (operationId: string) => {
treeRef.current?.locateNode(
(node) => node.metadata?.operationId === operationId
);
};

return (
<>
<button onClick={() => locateById("getPet")}>Locate getPet</button>
<Tree ref={treeRef} nodes={nodes} />
</>
);
}

संदर्भ मेन्यू​

import { LuCopy, LuTrash2 } from "react-icons/lu";
import { Tree } from "@powerduck/tree/react";
import type { ContextMenuItem } from "@powerduck/tree/react";

function ApiTree({ nodes }) {
const buildMenu = (node): ContextMenuItem[] => [
{
label: "Copy operationId",
icon: <LuCopy size={14} />,
onClick: (n) => navigator.clipboard.writeText(n.metadata?.operationId ?? ""),
},
{ separator: true, label: "" },
{
label: "Delete",
icon: <LuTrash2 size={14} />,
danger: true,
onClick: (n) => console.log("Delete", n.id),
},
];

return <Tree nodes={nodes} contextMenuItems={buildMenu} />;
}

JSON Patch एकीकरण​

जब नोड के मेटाडेटा में jsonPath होता है, तो ट्री onPatch के ज़रिए RFC 6902 ऑपरेशन भेजता है:

import { patchContent } from "@powerduck/conf-patch/core";
import { Tree } from "@powerduck/tree/react";

function EditableTree({ nodes, format }) {
const handlePatch = (ops) => {
// Apply patch operations to your document string.
const updated = patchContent(documentString, ops, format);
};

return (
<Tree
nodes={nodes}
draggable
onPatch={handlePatch}
/>
);
}