MCPcopy Create free account
hub / github.com/ZenNotes/zennotes / RootFolderDropTarget

Function RootFolderDropTarget

packages/app-core/src/components/Sidebar.tsx:357–391  ·  view source on GitHub ↗
({
  children,
  onDropPayload,
}: {
  children: JSX.Element;
  onDropPayload: (payload: DragPayload) => void | Promise<void>;
})

Source from the content-addressed store, hash-verified

355}
356
357function RootFolderDropTarget({
358 children,
359 onDropPayload,
360}: {
361 children: JSX.Element;
362 onDropPayload: (payload: DragPayload) => void | Promise<void>;
363}): JSX.Element {
364 const [dragHover, setDragHover] = useState(false);
365
366 return (
367 <div
368 className={[
369 "min-h-8 rounded-lg transition-colors",
370 dragHover ? "bg-accent/10 ring-1 ring-accent/25" : "",
371 ].join(" ")}
372 onDragOver={(e) => {
373 if (e.target !== e.currentTarget || !hasZenItem(e)) return;
374 e.preventDefault();
375 e.dataTransfer.dropEffect = "move";
376 setDragHover(true);
377 }}
378 onDragLeave={() => setDragHover(false)}
379 onDrop={(e) => {
380 setDragHover(false);
381 if (e.target !== e.currentTarget) return;
382 const payload = readDragPayload(e);
383 if (!payload) return;
384 e.preventDefault();
385 void onDropPayload(payload);
386 }}
387 >
388 {children}
389 </div>
390 );
391}
392
393export function Sidebar(): JSX.Element {
394 const vault = useStore((s) => s.vault);

Callers

nothing calls this directly

Calls 2

hasZenItemFunction · 0.90
readDragPayloadFunction · 0.90

Tested by

no test coverage detected