Files

36 lines
921 B
JavaScript

.pragma library
function breaksRun(entry, state) {
if (state === false)
return true;
const id = entry?.widgetId ?? "";
return id === "spacer" || id === "separator";
}
function resolve(entries, participating) {
const count = entries?.length ?? 0;
const roles = new Array(count).fill("solo");
let run = [];
const close = () => {
if (run.length > 1) {
roles[run[0]] = "first";
roles[run[run.length - 1]] = "last";
for (let i = 1; i < run.length - 1; i++)
roles[run[i]] = "middle";
}
run = [];
};
for (let i = 0; i < count; i++) {
const state = participating?.[i];
if (state === null || state === undefined)
continue;
if (breaksRun(entries[i], state)) {
close();
continue;
}
run.push(i);
}
close();
return roles;
}