c8286b931b
User-Feedback: About sollte nicht als overlay im Panel erscheinen sondern ein echtes OS-Fenster sein wie Kamera/Masse-Settings. Neu: - rhino/about.py: open_as_window() via panel_base.open_satellite_window (read-only, kein Bridge-Save/Cancel-Callback noetig) - src/AboutApp.jsx: gleiche Inhalte wie der vorige Modal — Versionen, Autor, Website, Lizenz — in einer 440x380 Eto-Form - src/main.jsx: mode 'about' → AboutApp - openAbout() in rhinoBridge.js sendet OPEN_ABOUT an Oberleiste - OberleisteBridge handler OPEN_ABOUT → about.open_as_window() OberleisteApp: - Logo-onClick aufgeräumt: openAbout() statt setAboutOpen(true) - aboutOpen-State und die AboutModal-Komponente entfernt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
72 lines
3.3 KiB
React
72 lines
3.3 KiB
React
import { StrictMode } from 'react'
|
|
import { createRoot } from 'react-dom/client'
|
|
import './index.css'
|
|
import App from './App.jsx'
|
|
import ZeichnungsebenenApp from './ZeichnungsebenenApp.jsx'
|
|
import GeschossSettingsApp from './GeschossSettingsApp.jsx'
|
|
import EbenenSettingsApp from './EbenenSettingsApp.jsx'
|
|
import GeschossDialogApp from './GeschossDialogApp.jsx'
|
|
import LayerCombinationsApp from './LayerCombinationsApp.jsx'
|
|
import AusschnittSettingsApp from './AusschnittSettingsApp.jsx'
|
|
import LayoutDialogApp from './LayoutDialogApp.jsx'
|
|
import SwisstopoApp from './SwisstopoApp.jsx'
|
|
import OsmApp from './OsmApp.jsx'
|
|
import KameraApp from './KameraApp.jsx'
|
|
import MasseSettingsApp from './MasseSettingsApp.jsx'
|
|
import AboutApp from './AboutApp.jsx'
|
|
import GestaltungApp from './GestaltungApp.jsx'
|
|
import AusschnitteApp from './AusschnitteApp.jsx'
|
|
import MassstabApp from './MassstabApp.jsx'
|
|
import WerkzeugeApp from './WerkzeugeApp.jsx'
|
|
import OberleisteApp from './OberleisteApp.jsx'
|
|
import OverridesApp from './OverridesApp.jsx'
|
|
import DimensionenApp from './DimensionenApp.jsx'
|
|
import LayoutsApp from './LayoutsApp.jsx'
|
|
import ElementeApp from './ElementeApp.jsx'
|
|
|
|
const mode = (typeof window !== 'undefined' && window.PANEL_MODE) || 'ebenen'
|
|
const RootApp = mode === 'gestaltung' ? GestaltungApp
|
|
: mode === 'ausschnitte' ? AusschnitteApp
|
|
: mode === 'massstab' ? MassstabApp
|
|
: mode === 'werkzeuge' ? WerkzeugeApp
|
|
: mode === 'oberleiste' ? OberleisteApp
|
|
: mode === 'overrides' ? OverridesApp
|
|
: mode === 'dimensionen' ? DimensionenApp
|
|
: mode === 'layouts' ? LayoutsApp
|
|
: mode === 'elemente' ? ElementeApp
|
|
: mode === 'zeichnungsebenen' ? ZeichnungsebenenApp
|
|
: mode === 'geschoss_settings' ? GeschossSettingsApp
|
|
: mode === 'ebenen_settings' ? EbenenSettingsApp
|
|
: mode === 'geschoss_dialog' ? GeschossDialogApp
|
|
: mode === 'layer_combinations' ? LayerCombinationsApp
|
|
: mode === 'ausschnitt_settings' ? AusschnittSettingsApp
|
|
: mode === 'layout_dialog' ? LayoutDialogApp
|
|
: mode === 'swisstopo' ? SwisstopoApp
|
|
: mode === 'osm' ? OsmApp
|
|
: mode === 'kamera' ? KameraApp
|
|
: mode === 'masse_settings' ? MasseSettingsApp
|
|
: mode === 'about' ? AboutApp
|
|
: App
|
|
|
|
window.onerror = function (msg, src, line, col, err) {
|
|
document.body.style.cssText = 'background:#1c1c1e;margin:0;padding:12px'
|
|
document.body.innerHTML =
|
|
'<pre style="color:#ff6b6b;font-size:10px;font-family:monospace;white-space:pre-wrap">' +
|
|
'JS ERROR:\n' + msg + '\n' + src + ':' + line + '\n' +
|
|
(err ? err.stack : '') + '</pre>'
|
|
return false
|
|
}
|
|
|
|
window.onunhandledrejection = function (e) {
|
|
document.body.style.cssText = 'background:#1c1c1e;margin:0;padding:12px'
|
|
document.body.innerHTML =
|
|
'<pre style="color:#ff6b6b;font-size:10px;font-family:monospace;white-space:pre-wrap">' +
|
|
'PROMISE ERROR:\n' + (e.reason ? e.reason.stack || e.reason : e) + '</pre>'
|
|
}
|
|
|
|
createRoot(document.getElementById('root')).render(
|
|
<StrictMode>
|
|
<RootApp />
|
|
</StrictMode>,
|
|
)
|