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 || '',
},
})
}
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 */}
)
}