in app/src/components/TranscriptLine.js [9:44]
function combineSegments(results) {
const markers = [];
const addMarker = (where) => {
if (!markers.includes(where)) markers.push(where);
};
results.forEach((r) => {
addMarker(r.BeginOffset);
addMarker(r.EndOffset);
(r.Attributes || []).forEach((a) => {
addMarker(a.BeginOffset);
addMarker(a.EndOffset);
});
});
markers.sort((a, b) => a - b);
let ret = [];
for (let i = 0; i < markers.length - 1; i++) {
const start = markers[i];
const end = markers[i + 1];
const matches = results.filter(
(r) =>
(r.BeginOffset <= start && r.EndOffset >= end) ||
(r.Attributes || []).some((a) => a.BeginOffset <= start && a.EndOffset >= end),
);
if (matches.length) ret.push({ start, end, matches });
}
return ret;
}