| | |
| | 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; |