()
| 2397 | // Column resizer module |
| 2398 | |
| 2399 | function initColumnResizers() { |
| 2400 | const table = document.getElementById('message-table'); |
| 2401 | if (!table) return; |
| 2402 | |
| 2403 | const resizers = table.querySelectorAll('.col-resizer'); |
| 2404 | let currentResizer = null; |
| 2405 | let startX = 0; |
| 2406 | let startWidth = 0; |
| 2407 | let headerCell = null; |
| 2408 | let colClass = ''; |
| 2409 | |
| 2410 | resizers.forEach(resizer => { |
| 2411 | resizer.addEventListener('mousedown', (e) => { |
| 2412 | e.preventDefault(); |
| 2413 | e.stopPropagation(); |
| 2414 | |
| 2415 | currentResizer = resizer; |
| 2416 | headerCell = resizer.parentElement; |
| 2417 | colClass = resizer.dataset.col; |
| 2418 | startX = e.pageX; |
| 2419 | startWidth = headerCell.offsetWidth; |
| 2420 | |
| 2421 | resizer.classList.add('resizing'); |
| 2422 | document.body.style.cursor = 'col-resize'; |
| 2423 | document.body.style.userSelect = 'none'; |
| 2424 | |
| 2425 | document.addEventListener('mousemove', onMouseMove); |
| 2426 | document.addEventListener('mouseup', onMouseUp); |
| 2427 | }); |
| 2428 | }); |
| 2429 | |
| 2430 | function onMouseMove(e) { |
| 2431 | if (!currentResizer || !headerCell || !colClass) return; |
| 2432 | |
| 2433 | const diff = e.pageX - startX; |
| 2434 | const newWidth = Math.max(40, startWidth + diff); |
| 2435 | |
| 2436 | table.style.setProperty('--col-' + colClass + '-width', newWidth + 'px'); |
| 2437 | |
| 2438 | if (colClass === 'data') { |
| 2439 | const dataCells = table.querySelectorAll('.col-data'); |
| 2440 | dataCells.forEach(cell => { |
| 2441 | cell.style.flex = 'none'; |
| 2442 | }); |
| 2443 | } |
| 2444 | } |
| 2445 | |
| 2446 | function onMouseUp() { |
| 2447 | if (currentResizer) { |
| 2448 | currentResizer.classList.remove('resizing'); |
| 2449 | } |
| 2450 | currentResizer = null; |
| 2451 | headerCell = null; |
| 2452 | colClass = ''; |
| 2453 | document.body.style.cursor = ''; |
| 2454 | document.body.style.userSelect = ''; |
| 2455 | |
| 2456 | document.removeEventListener('mousemove', onMouseMove); |
no outgoing calls
no test coverage detected