window.generateDiff = function (text1, text2, divDiff, divLegend) {
let wikEdDiff = new WikEdDiff();
let targetDiv = document.getElementById(divDiff)
targetDiv.innerHTML = wikEdDiff.diff(text1, text2);
targetDiv.classList.add('mud-typography-body1', 'improvedDiff');
let legend = document.getElementById(divLegend);
legend.innerHTML = `
Legend
- Original block position
- Inserted text
- Deleted text
- Moved block
`;
}
window.clearDiv = function (divName) {
let targetDiv = document.getElementById(divName);
targetDiv.innerHTML = '';
}
window.scrollToBottom = function(element) {
element.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });
}
let mediaRecorder;
let audioChunks = [];
window.audioRecorder = {
start: async function () {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/webm' });
audioChunks = [];
mediaRecorder.ondataavailable = (event) => {
if (event.data.size > 0) {
audioChunks.push(event.data);
}
};
mediaRecorder.start();
},
stop: async function () {
return new Promise((resolve) => {
mediaRecorder.onstop = async () => {
const blob = new Blob(audioChunks, { type: 'audio/webm' });
const arrayBuffer = await blob.arrayBuffer();
const base64 = btoa(
new Uint8Array(arrayBuffer).reduce((data, byte) => data + String.fromCharCode(byte), '')
);
// Tracks stoppen, damit das Mic-Icon verschwindet
mediaRecorder.stream.getTracks().forEach(track => track.stop());
resolve(base64);
};
mediaRecorder.stop();
});
}
};