()
| 387 | } |
| 388 | |
| 389 | function stemsBody() { |
| 390 | const c = state.current; |
| 391 | if (!c) return `<div class="lib-note">Pick a track from your Library to start mixing.</div>`; |
| 392 | if (c.loading) return `<div class="lib-note">Loading stems…</div>`; |
| 393 | if (c.error) return `<div class="lib-note">${esc(c.error)}</div>`; |
| 394 | const ll = lanes(); |
| 395 | if (!ll.length) return `<div class="lib-note">No stems available.</div>`; |
| 396 | return `<div class="stems-grid">${ll.map((l, idx) => { |
| 397 | const vol = state.vols[l.name] ?? 1; |
| 398 | const muted = !!state.muted[l.name]; |
| 399 | const soloed = !!state.solo[l.name]; |
| 400 | const eff = !laneActive(l.name); |
| 401 | const pct = Math.round(vol * 100) + "%"; |
| 402 | const mOn = muted ? `background:${l.color};color:#15100a;border-color:${l.color};` : ""; |
| 403 | const sOn = soloed ? "background:#f5b417;color:#1a1206;border-color:#f5b417;" : ""; |
| 404 | return `<div class="stem"> |
| 405 | <div class="stem-top"> |
| 406 | <div class="stem-dot" style="background:${l.color};box-shadow:0 0 8px ${l.color}88;opacity:${eff ? 0.4 : 1}"></div> |
| 407 | <div class="stem-name" style="color:${eff ? "#6a6a72" : l.color}">${esc(l.label)}</div> |
| 408 | <button class="ms-btn" style="${mOn}" data-action="mute" data-id="${l.name}">M</button> |
| 409 | <button class="ms-btn" style="${sOn}" data-action="solo" data-id="${l.name}">S</button> |
| 410 | </div> |
| 411 | <div class="stem-wave">${stemWave(idx, l.color, vol, eff)}</div> |
| 412 | <div class="fader" data-fader data-id="${l.name}"> |
| 413 | <div class="fader-track"></div> |
| 414 | <div class="fader-fill" style="width:${pct};background:${eff ? "#46464e" : l.color}"></div> |
| 415 | <div class="fader-knob" style="left:${pct};background:${eff ? "#8a8a90" : "#fff"}"></div> |
| 416 | </div> |
| 417 | </div>`; |
| 418 | }).join("")}</div>`; |
| 419 | } |
| 420 | |
| 421 | function analysisBody() { |
| 422 | const a = state.current?.detail?.analysis; |
no test coverage detected