()
| 2102 | } |
| 2103 | |
| 2104 | function updatePaneStickyClasses() { |
| 2105 | const panes = document.querySelectorAll('.file-list-pane'); |
| 2106 | panes.forEach(pane => pane.classList.remove('fr-pane-sticky')); |
| 2107 | |
| 2108 | if (!window.dualPaneEnabled || panes.length < 2) return; |
| 2109 | |
| 2110 | const paneList = Array.from(panes); |
| 2111 | const heights = paneList.map(pane => pane.getBoundingClientRect().height || 0); |
| 2112 | const viewport = window.innerHeight || 0; |
| 2113 | const buffer = 24; |
| 2114 | |
| 2115 | if (!viewport || heights.every(h => h <= 0)) return; |
| 2116 | |
| 2117 | const canStick = heights.map(h => h + buffer <= viewport); |
| 2118 | |
| 2119 | if (canStick[0] && canStick[1]) { |
| 2120 | paneList.forEach(pane => pane.classList.add('fr-pane-sticky')); |
| 2121 | return; |
| 2122 | } |
| 2123 | |
| 2124 | if (canStick[0] && heights[0] < heights[1]) { |
| 2125 | paneList[0].classList.add('fr-pane-sticky'); |
| 2126 | } |
| 2127 | if (canStick[1] && heights[1] < heights[0]) { |
| 2128 | paneList[1].classList.add('fr-pane-sticky'); |
| 2129 | } |
| 2130 | } |
| 2131 | |
| 2132 | function ensureDualPaneTargetHint() { |
| 2133 | const actions = document.getElementById('fileListActions'); |
no outgoing calls
no test coverage detected