|
|
|
if (!ScreenCastRecorder.isSupportedBrowser()) { |
|
console.error("Screen Recording not supported in this browser"); |
|
} |
|
let recorder; |
|
let outputBlob; |
|
const stopRecording = () => __awaiter(void 0, void 0, void 0, function* () { |
|
let currentState = "RECORDING"; |
|
|
|
if (currentState === "OFF" || recorder == null) { |
|
return; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (currentState === "RECORDING") { |
|
if (recorder.getState() === "inactive") { |
|
|
|
|
|
|
|
console.log("Inactive"); |
|
} |
|
else { |
|
outputBlob = yield recorder.stop(); |
|
console.log("Done recording"); |
|
|
|
|
|
|
|
|
|
window.currentState = "PREVIEW_FILE"; |
|
const videoSource = URL.createObjectURL(outputBlob); |
|
window.videoSource = videoSource; |
|
const fileName = "recording"; |
|
const link = document.createElement("a"); |
|
link.setAttribute("href", videoSource); |
|
link.setAttribute("download", `${fileName}.webm`); |
|
link.click(); |
|
} |
|
} |
|
}); |
|
const startRecording = () => __awaiter(void 0, void 0, void 0, function* () { |
|
const recordAudio = false; |
|
recorder = new ScreenCastRecorder({ |
|
recordAudio, |
|
onErrorOrStop: () => stopRecording(), |
|
}); |
|
try { |
|
yield recorder.initialize(); |
|
} |
|
catch (e) { |
|
console.warn(`ScreenCastRecorder.initialize error: ${e}`); |
|
|
|
window.currentState = "UNSUPPORTED"; |
|
return; |
|
} |
|
|
|
const hasStarted = recorder.start(); |
|
if (hasStarted) { |
|
|
|
|
|
|
|
console.log("Started recording"); |
|
window.currentState = "RECORDING"; |
|
} |
|
else { |
|
stopRecording().catch(err => console.warn(`withScreencast.stopRecording threw an error: ${err}`)); |
|
} |
|
}); |
|
|
|
|
|
window.startRecording = startRecording; |
|
window.stopRecording = stopRecording; |