in apps/televisit-demo/frontend/src/containers/transcriptions/TranscriptLine.js [14:51]
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);
const 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;
}