Projekt-Settings-Dialog + Library Phase A + Material-Merger
- Project-Settings-Dialog (Voreinstellungen Geschoss/Schnitt + Material-Editor) ueber Zahnrad-Icon in Oberleiste; Defaults werden in schnitte.pick_schnitt + GeschossManager als Vorgabe genommen, pro-Element-Werte unangetastet - Dossier-Library Phase A (lokal, read-only): rhino/library.py + LibraryBrowser Satellite; Seed-Manifest unter ~/Library/Application Support/Dossier/library/ - Material-Merger: _get_all_materials(doc) merged builtin _MATERIAL_LIBRARY mit Projekt-Settings-Materialien (inkl. Library-Imports); Wand-Erstellung, Sub-Layer-Anlage + Elemente-Material-Dropdown ziehen jetzt aus dem Merge Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import LibraryBrowser from './components/LibraryBrowser'
|
||||
import { notifyReady, onMessage, send } from './lib/rhinoBridge'
|
||||
|
||||
export default function LibraryApp() {
|
||||
const [manifest, setManifest] = useState({ items: [] })
|
||||
const [importedIds, setImportedIds] = useState([])
|
||||
const [libraryRoot, setLibraryRoot] = useState('')
|
||||
|
||||
useEffect(() => {
|
||||
onMessage('LIBRARY_STATE', ({ manifest, importedIds, libraryRoot }) => {
|
||||
if (manifest) setManifest(manifest)
|
||||
if (importedIds) setImportedIds(importedIds)
|
||||
if (libraryRoot) setLibraryRoot(libraryRoot)
|
||||
})
|
||||
notifyReady()
|
||||
const blockContext = (ev) => ev.preventDefault()
|
||||
document.addEventListener('contextmenu', blockContext)
|
||||
return () => document.removeEventListener('contextmenu', blockContext)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<LibraryBrowser
|
||||
manifest={manifest}
|
||||
importedIds={importedIds}
|
||||
libraryRoot={libraryRoot}
|
||||
onImport={(id) => send('IMPORT_ITEM', { id })}
|
||||
onReload={() => send('RELOAD', {})}
|
||||
onClose={() => send('CLOSE', {})}
|
||||
/>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user