import { useEffect, useState } from 'react' import { onMessage, notifyReady } from './lib/rhinoBridge' function send(type, payload = {}) { if (!window.RHINO_MODE) { console.log('[AusschnittSettings] →', type, payload); return } document.title = 'RHINOMSG::' + JSON.stringify({ type, payload }) } function Field({ label, hint, children }) { return (
{label}
{children}
{hint && ( {hint} )}
) } function SectionLabel({ children }) { return (
{children}
) } export default function AusschnittSettingsApp() { const initial = (typeof window !== 'undefined' && window.PANEL_PARAMS) || {} const [snap, setSnap] = useState(initial.snap || {}) const [displayModes, setDisplayModes] = useState(initial.displayModes || []) const [overridesPresets, setOverridesPresets] = useState(initial.overridesPresets || []) const [layerKombis, setLayerKombis] = useState(initial.layerKombis || []) useEffect(() => { onMessage('AUSSCHNITT_SETTINGS_STATE', (p) => { if (p.snap) setSnap(p.snap) if (Array.isArray(p.displayModes)) setDisplayModes(p.displayModes) if (Array.isArray(p.overridesPresets)) setOverridesPresets(p.overridesPresets) if (Array.isArray(p.layerKombis)) setLayerKombis(p.layerKombis) }) notifyReady() const blockContext = (ev) => ev.preventDefault() document.addEventListener('contextmenu', blockContext) return () => document.removeEventListener('contextmenu', blockContext) }, []) const set = (patch) => setSnap(s => ({ ...s, ...patch })) const saveAndClose = () => { send('SAVE', { settings: { scale: snap.scale || '', displayMode: snap.displayMode || null, displayModeName: snap.displayModeName || null, applyOverrides: !!snap.applyOverrides, overridesEnabled: !!snap.overridesEnabled, overridesPreset: snap.overridesPreset || '', layerCombination: snap.layerCombination || '', darstellung: snap.darstellung || '', }, }) } return (
{/* Body */}
set({ scale: ev.target.value })} placeholder="1:50" style={{ flex: 1, fontSize: 11, fontFamily: 'var(--font-mono)', minWidth: 0 }} /> Grafische Overrides set({ applyOverrides: ev.target.checked })} style={{ marginRight: 6 }} /> {snap.applyOverrides ? 'Overrides werden gesetzt' : 'Aktueller Overrides-Zustand bleibt'} {snap.applyOverrides && ( <> )} Ebenenkombination
{/* Footer */}
) }