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:
+16
-13
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user