@@ -210,28 +210,44 @@ window.addEventListener('resize', buildScrollMarker);
210210
211211function toggleColdCode ( ) {
212212 coldCodeHidden = ! coldCodeHidden ;
213+ applyHotFilter ( ) ;
214+ updateToggleUI ( 'toggle-cold' , coldCodeHidden ) ;
215+ }
216+
217+ // Apply hot filter based on current coldCodeHidden and colorMode state
218+ function applyHotFilter ( ) {
213219 const lines = document . querySelectorAll ( '.code-line' ) ;
214- const toggle = document . getElementById ( 'toggle-cold' ) ;
215220
216221 lines . forEach ( line => {
217- // Check both self and cumulative samples
218222 const selfSamples = line . querySelector ( '.line-samples-self' ) ?. textContent . trim ( ) ;
219223 const cumulativeSamples = line . querySelector ( '.line-samples-cumulative' ) ?. textContent . trim ( ) ;
220224
221- // Line is cold if both are empty
222- if ( ( ! selfSamples || selfSamples === '' ) && ( ! cumulativeSamples || cumulativeSamples === '' ) ) {
223- if ( coldCodeHidden ) {
224- line . style . display = 'none' ;
225- } else {
226- line . style . display = 'flex' ;
227- }
225+ // Determine if line should be hidden based on color mode
226+ let isCold ;
227+ if ( colorMode === 'self' ) {
228+ // In self mode, hide lines with no self samples
229+ isCold = ! selfSamples || selfSamples === '' ;
230+ } else {
231+ // In cumulative mode, hide lines with no cumulative samples
232+ isCold = ! cumulativeSamples || cumulativeSamples === '' ;
233+ }
234+
235+ if ( isCold ) {
236+ line . style . display = coldCodeHidden ? 'none' : 'flex' ;
237+ } else {
238+ // Line has samples, always show it
239+ line . style . display = 'flex' ;
228240 }
229241 } ) ;
242+ }
230243
244+ // Update toggle UI state
245+ function updateToggleUI ( toggleId , isOn ) {
246+ const toggle = document . getElementById ( toggleId ) ;
231247 if ( toggle ) {
232248 const track = toggle . querySelector ( '.toggle-track' ) ;
233249 const labels = toggle . querySelectorAll ( '.toggle-label' ) ;
234- if ( coldCodeHidden ) {
250+ if ( isOn ) {
235251 track . classList . add ( 'on' ) ;
236252 labels [ 0 ] . classList . remove ( 'active' ) ;
237253 labels [ 1 ] . classList . add ( 'active' ) ;
@@ -258,7 +274,6 @@ document.addEventListener('DOMContentLoaded', () => {
258274function toggleColorMode ( ) {
259275 colorMode = colorMode === 'self' ? 'cumulative' : 'self' ;
260276 const lines = document . querySelectorAll ( '.code-line' ) ;
261- const toggle = document . getElementById ( 'toggle-color-mode' ) ;
262277
263278 lines . forEach ( line => {
264279 let bgColor ;
@@ -273,18 +288,11 @@ function toggleColorMode() {
273288 }
274289 } ) ;
275290
276- if ( toggle ) {
277- const track = toggle . querySelector ( '.toggle-track' ) ;
278- const labels = toggle . querySelectorAll ( '.toggle-label' ) ;
279- if ( colorMode === 'self' ) {
280- track . classList . remove ( 'on' ) ;
281- labels [ 0 ] . classList . add ( 'active' ) ;
282- labels [ 1 ] . classList . remove ( 'active' ) ;
283- } else {
284- track . classList . add ( 'on' ) ;
285- labels [ 0 ] . classList . remove ( 'active' ) ;
286- labels [ 1 ] . classList . add ( 'active' ) ;
287- }
291+ updateToggleUI ( 'toggle-color-mode' , colorMode === 'cumulative' ) ;
292+
293+ // Reapply hot filter if enabled (filtering criteria depends on color mode)
294+ if ( coldCodeHidden ) {
295+ applyHotFilter ( ) ;
288296 }
289297
290298 // Rebuild scroll marker with new color mode
0 commit comments