// Top toolbar: compact, with a popover for background settings const { useState: useStateTB, useRef: useRefTB, useEffect: useEffectTB } = React; function Toolbar({ title, setTitle, subtitle, setSubtitle, showTitleOnCanvas, setShowTitleOnCanvas, showNotes, setShowNotes, showFlow, setShowFlow, bgPattern, setBgPattern, bgColor, setBgColor, canUndo, canRedo, onUndo, onRedo, onAddNode, onShotMode, onSaveProject, onLoadProject, onLoadDemo, onClear, branchNodeMode, onToggleBranchMode, branchModeAvailable, }){ const [bgOpen, setBgOpen] = useStateTB(false); const [moreOpen, setMoreOpen] = useStateTB(false); const [fileOpen, setFileOpen] = useStateTB(false); const bgRef = useRefTB(null); const moreRef = useRefTB(null); const fileRef = useRefTB(null); useEffectTB(()=>{ const onDoc = (e)=>{ if (bgRef.current && !bgRef.current.contains(e.target)) setBgOpen(false); if (moreRef.current && !moreRef.current.contains(e.target)) setMoreOpen(false); if (fileRef.current && !fileRef.current.contains(e.target)) setFileOpen(false); }; document.addEventListener('mousedown', onDoc); return ()=>document.removeEventListener('mousedown', onDoc); },[]); return (
๐Ÿƒ
setTitle(e.target.value)} placeholder="Combo title"/>
{bgOpen && (
Pattern
{BG_PATTERNS.map(p=>(
Background color
{BG_COLORS.map(c=>(
Subtitle
setSubtitle(e.target.value)} style={{border:'1px solid var(--line)', background:'var(--bg)', borderRadius:10, padding:'6px 10px', fontSize:13, fontFamily:'inherit', outline:'none', color:'var(--ink)'}}/>
)}
{moreOpen && (
)}
{fileOpen && (
)}
); } window.Toolbar = Toolbar;