@@ -452,12 +452,15 @@ class ParallaxEditorApp {
452452
453453 this . refs . previewMeta = rootDocument . getElementById ( "previewMeta" ) ;
454454 this . refs . simulationContext = rootDocument . getElementById ( "simulationContext" ) ;
455+ this . refs . previewDetailsText = rootDocument . getElementById ( "previewDetailsText" ) ;
455456 this . refs . statusText = rootDocument . getElementById ( "statusText" ) ;
456457 this . refs . appShell = rootDocument . querySelector ( ".app-shell" ) ;
457458 this . refs . leftSidebar = rootDocument . getElementById ( "leftSidebar" ) ;
458459 this . refs . rightSidebar = rootDocument . getElementById ( "rightSidebar" ) ;
459460 this . refs . showLeftPanelButton = rootDocument . getElementById ( "showLeftPanelButton" ) ;
460461 this . refs . showRightPanelButton = rootDocument . getElementById ( "showRightPanelButton" ) ;
462+ this . refs . closeLeftOverlayButton = rootDocument . getElementById ( "closeLeftOverlayButton" ) ;
463+ this . refs . closeRightOverlayButton = rootDocument . getElementById ( "closeRightOverlayButton" ) ;
461464 this . refs . previewWrap = rootDocument . querySelector ( ".preview-wrap" ) ;
462465 this . refs . previewCanvas = rootDocument . getElementById ( "previewCanvas" ) ;
463466 this . refs . previewContext = this . refs . previewCanvas . getContext ( "2d" , { alpha : false } ) ;
@@ -485,14 +488,25 @@ class ParallaxEditorApp {
485488 this . refs . applyRemediationButton . addEventListener ( "click" , ( ) => this . applyRemediationAction ( ) ) ;
486489 this . refs . showLeftPanelButton ?. addEventListener ( "click" , ( ) => {
487490 this . refs . leftSidebar ?. classList . toggle ( "visible-overlay" ) ;
491+ this . syncOverlayToggleButtons ( ) ;
488492 } ) ;
489493 this . refs . showRightPanelButton ?. addEventListener ( "click" , ( ) => {
490494 this . refs . rightSidebar ?. classList . toggle ( "visible-overlay" ) ;
495+ this . syncOverlayToggleButtons ( ) ;
496+ } ) ;
497+ this . refs . closeLeftOverlayButton ?. addEventListener ( "click" , ( ) => {
498+ this . refs . leftSidebar ?. classList . remove ( "visible-overlay" ) ;
499+ this . syncOverlayToggleButtons ( ) ;
500+ } ) ;
501+ this . refs . closeRightOverlayButton ?. addEventListener ( "click" , ( ) => {
502+ this . refs . rightSidebar ?. classList . remove ( "visible-overlay" ) ;
503+ this . syncOverlayToggleButtons ( ) ;
491504 } ) ;
492505 document . addEventListener ( "fullscreenchange" , ( ) => {
493506 this . syncFullscreenState ( ) ;
494507 this . refs . leftSidebar ?. classList . remove ( "visible-overlay" ) ;
495508 this . refs . rightSidebar ?. classList . remove ( "visible-overlay" ) ;
509+ this . syncOverlayToggleButtons ( ) ;
496510 } ) ;
497511
498512 this . refs . applyMapMetaButton . addEventListener ( "click" , ( ) => this . applyMapMetaFromInputs ( ) ) ;
@@ -532,6 +546,18 @@ class ParallaxEditorApp {
532546
533547 syncFullscreenState ( ) {
534548 document . body . classList . toggle ( "fullscreen-mode" , Boolean ( document . fullscreenElement ) ) ;
549+ this . syncOverlayToggleButtons ( ) ;
550+ }
551+
552+ syncOverlayToggleButtons ( ) {
553+ const leftVisible = this . refs . leftSidebar ?. classList . contains ( "visible-overlay" ) === true ;
554+ const rightVisible = this . refs . rightSidebar ?. classList . contains ( "visible-overlay" ) === true ;
555+ if ( this . refs . showLeftPanelButton instanceof HTMLElement ) {
556+ this . refs . showLeftPanelButton . style . display = leftVisible ? "none" : "" ;
557+ }
558+ if ( this . refs . showRightPanelButton instanceof HTMLElement ) {
559+ this . refs . showRightPanelButton . style . display = rightVisible ? "none" : "" ;
560+ }
535561 }
536562
537563 getSelectedLayer ( ) {
@@ -1731,27 +1757,25 @@ class ParallaxEditorApp {
17311757 context . strokeRect ( mapOriginX , mapOriginY , worldWidth , worldHeight ) ;
17321758 this . ensureSimulationViewportFocus ( proxyX ) ;
17331759
1734- context . fillStyle = "rgba(15, 23, 42, 0.72)" ;
1735- context . fillRect ( 10 , 10 , Math . min ( 860 , viewportWidth - 20 ) , 148 ) ;
1736- context . fillStyle = "#dbeafe" ;
1737- context . font = "12px monospace" ;
1738- context . textBaseline = "top" ;
17391760 const modeText = this . isSimulationMode
17401761 ? `SIMULATION ${ this . simulation . playing ? "PLAY" : "PAUSE" } `
17411762 : "EDIT" ;
17421763 const repeatCount = sortedLayers . filter ( ( layer ) => layer . repeatX || layer . repeatY ) . length ;
17431764 const wrapCount = sortedLayers . filter ( ( layer ) => layer . wrapMode === "wrap" ) . length ;
17441765
1745- context . fillText ( `Mode: ${ modeText } ` , 18 , 18 ) ;
1746- context . fillText ( `Map: ${ this . documentModel . map . name } ` , 18 , 34 ) ;
1747- context . fillText ( `Camera: ${ this . cameraX } , ${ this . cameraY } ` , 18 , 50 ) ;
1748- context . fillText ( `Traverse: ${ Math . round ( progress * 100 ) } % (${ Math . round ( this . simulation . traversedDistance ) } /${ Math . round ( this . simulation . traversalDistance || 0 ) } px)` , 18 , 66 ) ;
1749- context . fillText ( `Layers: ${ sortedLayers . length } repeat=${ repeatCount } wrap=${ wrapCount } ` , 18 , 82 ) ;
1750- sortedLayers . slice ( 0 , 3 ) . forEach ( ( layer , index ) => {
1751- const y = 100 + ( index * 16 ) ;
1752- const row = `${ layer . drawOrder } :${ layer . name } sf(${ layer . scrollFactorX . toFixed ( 2 ) } ,${ layer . scrollFactorY . toFixed ( 2 ) } ) ${ layer . repeatX ? "RX" : "--" } /${ layer . repeatY ? "RY" : "--" } ${ layer . wrapMode } ` ;
1753- context . fillText ( row , 18 , y ) ;
1754- } ) ;
1766+ if ( this . refs . previewDetailsText instanceof HTMLElement ) {
1767+ const lines = [
1768+ `Mode: ${ modeText } ` ,
1769+ `Map: ${ this . documentModel . map . name } ` ,
1770+ `Camera: ${ this . cameraX } , ${ this . cameraY } ` ,
1771+ `Traverse: ${ Math . round ( progress * 100 ) } % (${ Math . round ( this . simulation . traversedDistance ) } /${ Math . round ( this . simulation . traversalDistance || 0 ) } px)` ,
1772+ `Layers: ${ sortedLayers . length } repeat=${ repeatCount } wrap=${ wrapCount } `
1773+ ] ;
1774+ sortedLayers . slice ( 0 , 3 ) . forEach ( ( layer ) => {
1775+ lines . push ( `${ layer . drawOrder } :${ layer . name } sf(${ layer . scrollFactorX . toFixed ( 2 ) } ,${ layer . scrollFactorY . toFixed ( 2 ) } ) ${ layer . repeatX ? "RX" : "--" } /${ layer . repeatY ? "RY" : "--" } ${ layer . wrapMode } ` ) ;
1776+ } ) ;
1777+ this . refs . previewDetailsText . textContent = lines . join ( "\n" ) ;
1778+ }
17551779 this . updateSimulationContextReadout ( ) ;
17561780 }
17571781
0 commit comments