@@ -341,14 +341,32 @@ _show_popout(p::Popout) = wrapped() do Child
341341
342342 header.onclick = (e) => {container.popout()}
343343
344- contents.onmouseenter = (e) => container.classList.toggle('contents-hover', true)
345- contents.onmouseleave = (e) => container.classList.toggle('contents-hover', false)
344+ // Create a reusable debounced class removal function
345+ const createDebouncedClassRemover = (container, className, delay) => {
346+ return _.debounce(() => {
347+ container.classList.toggle(className, false)
348+ }, delay)
349+ }
350+
351+ const debouncedRemoveContentsHover = createDebouncedClassRemover(container, 'contents-hover', 300)
352+ const debouncedRemoveHeaderHover = createDebouncedClassRemover(container, 'header-hover', 300)
353+
354+ contents.onmouseenter = (e) => {
355+ container.classList.toggle('contents-hover', true)
356+ debouncedRemoveContentsHover.cancel()
357+ }
358+ contents.onmouseleave = (e) => {
359+ debouncedRemoveContentsHover()
360+ }
346361
347362 header.onmouseenter = (e) => {
348363 container.classList.toggle('header-hover', true)
349364 container.classList.contains('popped') ? null : positionContents()
365+ debouncedRemoveHeaderHover.cancel()
366+ }
367+ header.onmouseleave = (e) => {
368+ debouncedRemoveHeaderHover()
350369 }
351- header.onmouseleave = (e) => container.classList.toggle('header-hover', false)
352370</script>
353371<style>
354372 $(CSS_Sheets. popout)
0 commit comments