fix: auto-add tracks when drag exceeds track count
Compute maxTargetIdx across all multiIds items. Prepend new tracks to prev array before mapping if needed.
This commit is contained in:
@@ -12075,6 +12075,22 @@ const App = () => {
|
||||
if (drag.multiIds) {
|
||||
var dragOrigStart = drag.multiIds[drag.itemId] ? drag.multiIds[drag.itemId].start : 0;
|
||||
var delta = newStart - dragOrigStart;
|
||||
// Ensure enough tracks exist for all displaced items
|
||||
var maxTrg = 0;
|
||||
Object.keys(drag.multiIds).forEach(function(mid) {
|
||||
var inf = drag.multiIds[mid];
|
||||
var origIdx = trkIds.indexOf(inf.trackId);
|
||||
if (origIdx < 0) origIdx = baseIdx;
|
||||
var trg = Math.max(0, origIdx + crossOffset);
|
||||
if (trg > maxTrg) maxTrg = trg;
|
||||
});
|
||||
var tracksToAdd = [];
|
||||
while (prev.length <= maxTrg) {
|
||||
var newId = (prev.length + tracksToAdd.length + 1).toString();
|
||||
var colors = ['#0f766e', '#1d4ed8', '#701a75', '#a21caf', '#b45309'];
|
||||
tracksToAdd.push({ id: newId, name: 'Track ' + newId, buffer: null, startTime: 0, volumeDb: 0, pan: 0, muted: false, solo: false, color: colors[(prev.length + tracksToAdd.length) % colors.length], clips: [], midiItems: [], sections: [], markers: [], isArmed: false, height: 140 });
|
||||
}
|
||||
if (tracksToAdd.length > 0) prev = prev.concat(tracksToAdd);
|
||||
return prev.map(function(t) {
|
||||
var resS = (t.sections || []).slice();
|
||||
var resM = (t.midiItems || []).slice();
|
||||
|
||||
Reference in New Issue
Block a user