fix: targetTrackId undefined outside updateActiveTracks closure

Move track Y-position computation before updateActiveTracks so
targetTrackId is accessible for setDraggedSectionItem update.
This commit is contained in:
2026-07-29 11:09:05 +07:00
parent ad6fa1feb9
commit 0d763c5a0b
3 changed files with 24 additions and 15 deletions
+16 -13
View File
@@ -12049,23 +12049,26 @@ const App = () => {
wrapper.scrollLeft = Math.max(0, itemPx - keepMargin);
setCanvasRedrawCount(n => n + 1);
}
// Compute target track from mouse Y position
var allTrks = activeTracksRef.current || [];
var mouseY = e.clientY - rect.top;
var trackTop = 0;
var targetIdx = -1;
for (var ti = 0; ti < allTrks.length; ti++) {
var tH = allTrks[ti].height || (allTrks[ti].isArmed ? 164 : 140);
if (mouseY >= trackTop && mouseY < trackTop + tH) { targetIdx = ti; break; }
trackTop += tH;
}
if (targetIdx < 0) targetIdx = mouseY < trackTop ? 0 : Math.max(0, allTrks.length - 1);
var targetTrackId = allTrks[targetIdx] ? allTrks[targetIdx].id : drag.trackId;
updateActiveTracks(prev => {
// Compute target track from mouse Y position relative to timeline wrapper
var trkIds = prev.map(function(tr) { return tr.id; });
var baseIdx = trkIds.indexOf(drag.trackId);
if (baseIdx < 0) baseIdx = 0;
var trackTop = 0;
var targetIdx = -1;
var mouseY = e.clientY - rect.top;
for (var ti = 0; ti < prev.length; ti++) {
var tH = prev[ti].height || (prev[ti].isArmed ? 164 : 140);
if (mouseY >= trackTop && mouseY < trackTop + tH) { targetIdx = ti; break; }
trackTop += tH;
}
if (targetIdx < 0) targetIdx = mouseY < trackTop ? 0 : prev.length - 1;
if (targetIdx < 0) targetIdx = 0;
var targetTrackId = prev[targetIdx].id;
var crossOffset = targetIdx - baseIdx;
var tIdx = trkIds.indexOf(targetTrackId);
if (tIdx < 0) tIdx = prev.length - 1;
if (tIdx < 0) tIdx = 0;
var crossOffset = tIdx - baseIdx;
let movedItem = null;
for (let track of prev) {
const sec = (track.sections || []).find(it => it.id === drag.itemId);