{"version":3,"file":"DevNotesStickyPanel-BPakpEvi.js","sources":["../../components/features/DevNotesStickyPanel.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { FileCodeIcon, SparklesIcon } from '../icons/FeatureIcons.tsx';\nimport { useLocalStorage } from '../../hooks/useLocalStorage.ts';\nimport { summarizeNotesStream } from '../../services/geminiService.ts';\nimport { LoadingSpinner } from '../shared/LoadingSpinner.tsx';\nimport { MarkdownRenderer } from '../shared/MarkdownRenderer.tsx';\n\ninterface Note {\n id: number;\n text: string;\n x: number;\n y: number;\n color: string;\n}\n\nconst colors = ['bg-yellow-300 text-yellow-900', 'bg-green-300 text-green-900', 'bg-blue-300 text-blue-900', 'bg-pink-300 text-pink-900', 'bg-purple-300 text-purple-900'];\n\nexport const DevNotesStickyPanel: React.FC = () => {\n const [notes, setNotes] = useLocalStorage('devcore_notes', []);\n const [dragging, setDragging] = useState<{ id: number; offsetX: number; offsetY: number } | null>(null);\n const [isSummarizing, setIsSummarizing] = useState(false);\n const [summary, setSummary] = useState('');\n\n const handleSummarize = useCallback(async () => {\n if (notes.length === 0) return;\n setIsSummarizing(true);\n setSummary('');\n try {\n const allNotesText = notes.map((n: Note) => `- ${n.text}`).join('\\n');\n const stream = summarizeNotesStream(allNotesText);\n let fullResponse = '';\n for await (const chunk of stream) {\n fullResponse += chunk;\n setSummary(fullResponse);\n }\n } catch (error) {\n console.error(error);\n setSummary('Sorry, an error occurred while summarizing.');\n } finally {\n setIsSummarizing(false);\n }\n }, [notes]);\n\n\n const addNote = () => {\n const newNote: Note = {\n id: Date.now(),\n text: 'New note...',\n x: 50 + (notes.length % 10) * 20,\n y: 50 + (notes.length % 10) * 20,\n color: colors[notes.length % colors.length],\n };\n setNotes([...notes, newNote]);\n };\n\n const updateText = (id: number, text: string) => {\n setNotes(notes.map((n: Note) => n.id === id ? { ...n, text } : n));\n };\n \n const deleteNote = (id: number, e: React.MouseEvent) => {\n e.stopPropagation();\n setNotes(notes.filter((n: Note) => n.id !== id));\n };\n\n const onMouseDown = (e: React.MouseEvent, id: number) => {\n if((e.target as HTMLElement).tagName === 'TEXTAREA' || (e.target as HTMLElement).tagName === 'BUTTON') return;\n const noteElement = e.currentTarget;\n const rect = noteElement.getBoundingClientRect();\n setDragging({ id, offsetX: e.clientX - rect.left, offsetY: e.clientY - rect.top });\n };\n\n const onMouseMove = (e: React.MouseEvent) => {\n if (!dragging) return;\n const boardRect = e.currentTarget.getBoundingClientRect();\n setNotes(\n notes.map((n: Note) =>\n n.id === dragging.id\n ? { ...n, x: e.clientX - dragging.offsetX - boardRect.left, y: e.clientY - dragging.offsetY - boardRect.top }\n : n\n )\n );\n };\n\n const onMouseUp = () => setDragging(null);\n\n return (\n
\n
\n
\n

Dev Notes Sticky Panel

\n

A place for your thoughts, todos, and random ideas.

\n
\n
\n \n \n
\n
\n \n {notes.map((note: Note) => (\n onMouseDown(e, note.id)}\n >\n \n updateText(note.id, e.target.value)}\n className=\"w-full h-full bg-transparent resize-none focus:outline-none font-medium p-1 placeholder:text-inherit/50\"\n />\n
\n ))}\n \n {(isSummarizing || summary) && (\n
setSummary('')}>\n
e.stopPropagation()}>\n

AI Summary of Notes

\n {isSummarizing && !summary ? : }\n
\n
\n )}\n \n );\n};"],"names":["colors","DevNotesStickyPanel","notes","setNotes","useLocalStorage","dragging","setDragging","useState","isSummarizing","setIsSummarizing","summary","setSummary","handleSummarize","useCallback","allNotesText","n","stream","summarizeNotesStream","fullResponse","chunk","error","addNote","newNote","updateText","id","text","deleteNote","e","onMouseDown","rect","onMouseMove","boardRect","onMouseUp","jsxs","jsx","FileCodeIcon","SparklesIcon","note","LoadingSpinner","MarkdownRenderer"],"mappings":"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"}