@@ -89,7 +89,7 @@ function collapseAllErrors() {
8989}
9090
9191function uncollapseAllErrors ( ) {
92- document . querySelectorAll ( '.entry-no-error' ) . forEach ( line => line . style . display = "contents" ) ;
92+ document . querySelectorAll ( '.entry-no-error' ) . forEach ( line => line . style . removeProperty ( " display" ) ) ;
9393 document . querySelectorAll ( '.collapsed-lines' ) . forEach ( collapsed => collapsed . remove ( ) ) ;
9494}
9595
@@ -101,7 +101,7 @@ function handleCollapsedClick(e) {
101101 position = positionElement . getBoundingClientRect ( ) . top - window . scrollY ;
102102 }
103103 for ( let i = parseInt ( collapsed . dataset . start ) ; i <= parseInt ( collapsed . dataset . end ) ; i ++ ) {
104- document . getElementById ( `L${ i } ` ) . parentElement . parentElement . style . display = "contents" ;
104+ document . getElementById ( `L${ i } ` ) . parentElement . parentElement . style . removeProperty ( " display" ) ;
105105 }
106106 if ( positionElement ) {
107107 window . scrollTo ( {
@@ -157,27 +157,16 @@ if (typeof BroadcastChannel !== "undefined") {
157157 settingsChannel . onmessage = ( e ) => {
158158 if ( e . data . type === "settings-updated" ) {
159159 for ( const checkbox of settingCheckboxes ) {
160- let bodyClass = checkbox . dataset . bodyClass ;
161- if ( e . data . settings [ checkbox . dataset . key ] ) {
162- document . body . classList . add ( bodyClass ) ;
163- checkbox . checked = true ;
164- } else {
165- document . body . classList . remove ( bodyClass ) ;
166- checkbox . checked = false ;
167- }
160+ checkbox . checked = ! ! e . data . settings [ checkbox . dataset . key ] ;
161+ applySetting ( checkbox ) ;
168162 }
169163 }
170164 } ;
171165}
172166
173167function handleSettingChange ( e ) {
174168 let checkbox = e . target ;
175- let bodyClass = checkbox . dataset . bodyClass ;
176- if ( checkbox . checked ) {
177- document . body . classList . add ( bodyClass ) ;
178- } else {
179- document . body . classList . remove ( bodyClass ) ;
180- }
169+ applySetting ( checkbox ) ;
181170 saveSettings ( ) ;
182171 if ( settingsChannel ) {
183172 settingsChannel . postMessage ( {
@@ -187,6 +176,20 @@ function handleSettingChange(e) {
187176 }
188177}
189178
179+ function applySetting ( checkbox ) {
180+ let bodyClass = checkbox . dataset . bodyClass ;
181+ if ( checkbox . checked ) {
182+ document . body . classList . add ( bodyClass ) ;
183+ } else {
184+ document . body . classList . remove ( bodyClass ) ;
185+ }
186+ switch ( checkbox . dataset . key ) {
187+ case "floatingScrollbar" :
188+ initFloatingScrollbar ( ) ;
189+ break ;
190+ }
191+ }
192+
190193function getCurrentSettings ( ) {
191194 const data = { } ;
192195 for ( const checkbox of settingCheckboxes ) {
@@ -249,8 +252,18 @@ async function handleDeleteButtonClick() {
249252}
250253
251254/* floating scroll bar */
255+ const browser = getComputedStyle ( document . body )
256+ . getPropertyValue ( "--browser" )
257+ . replaceAll ( / [ ' " ] / g, '' )
258+ . trim ( )
259+ . toLowerCase ( ) ;
252260const floatingScrollbar = document . querySelector ( ".floating-scrollbar" ) ;
253- const logContainer = document . querySelector ( ".log-inner" ) ;
261+ let logContainer = null ;
262+ if ( browser === "firefox" ) {
263+ logContainer = document . querySelector ( ".log" ) ;
264+ } else {
265+ logContainer = document . querySelector ( ".log-inner" ) ;
266+ }
254267
255268if ( floatingScrollbar && logContainer ) {
256269 updateFloatingScrollbarWidths ( ) ;
@@ -275,6 +288,14 @@ function syncScroll(source, target) {
275288 }
276289}
277290
291+ function initFloatingScrollbar ( ) {
292+ if ( ! floatingScrollbar || ! logContainer ) {
293+ return ;
294+ }
295+ updateFloatingScrollbarWidths ( ) ;
296+ syncScroll ( logContainer , floatingScrollbar ) ;
297+ }
298+
278299function updateFloatingScrollbarWidths ( ) {
279300 floatingScrollbar . style . setProperty (
280301 "--floating-scrollbar-width" ,
0 commit comments