@taskp3/react 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/past-submissions.d.ts.map +1 -1
  6. package/dist/past-submissions.js +1 -10
  7. package/dist/past-submissions.js.map +1 -1
  8. package/dist/recorder/camera-overlay.d.ts +9 -0
  9. package/dist/recorder/camera-overlay.d.ts.map +1 -0
  10. package/dist/recorder/camera-overlay.js +3 -0
  11. package/dist/recorder/camera-overlay.js.map +1 -0
  12. package/dist/recorder/composeRecordingWithCamera.d.ts +8 -0
  13. package/dist/recorder/composeRecordingWithCamera.d.ts.map +1 -0
  14. package/dist/recorder/composeRecordingWithCamera.js +183 -0
  15. package/dist/recorder/composeRecordingWithCamera.js.map +1 -0
  16. package/dist/recorder/finalize-recording-worker-source.d.ts +1 -1
  17. package/dist/recorder/finalize-recording-worker-source.d.ts.map +1 -1
  18. package/dist/recorder/finalize-recording-worker-source.js +1 -1
  19. package/dist/recorder/finalize-recording-worker-source.js.map +1 -1
  20. package/dist/recorder/finalize-recording-worker.js +4 -1
  21. package/dist/recorder/finalize-recording-worker.js.map +1 -1
  22. package/dist/recorder/finalizeRecording.d.ts +18 -1
  23. package/dist/recorder/finalizeRecording.d.ts.map +1 -1
  24. package/dist/recorder/finalizeRecording.js +167 -40
  25. package/dist/recorder/finalizeRecording.js.map +1 -1
  26. package/dist/recorder/finalizeRecordingInWorker.d.ts +6 -2
  27. package/dist/recorder/finalizeRecordingInWorker.d.ts.map +1 -1
  28. package/dist/recorder/finalizeRecordingInWorker.js +36 -11
  29. package/dist/recorder/finalizeRecordingInWorker.js.map +1 -1
  30. package/dist/screen-recorder-context.d.ts.map +1 -1
  31. package/dist/screen-recorder-context.js +7 -1
  32. package/dist/screen-recorder-context.js.map +1 -1
  33. package/dist/screen-recorder.d.ts +2 -0
  34. package/dist/screen-recorder.d.ts.map +1 -1
  35. package/dist/screen-recorder.js +78 -12
  36. package/dist/screen-recorder.js.map +1 -1
  37. package/dist/triage-button.d.ts.map +1 -1
  38. package/dist/triage-button.js +39 -6
  39. package/dist/triage-button.js.map +1 -1
  40. package/dist/triage-rich-content.d.ts.map +1 -1
  41. package/dist/triage-rich-content.js +1 -15
  42. package/dist/triage-rich-content.js.map +1 -1
  43. package/dist/triage-ui-controller.d.ts +1 -0
  44. package/dist/triage-ui-controller.d.ts.map +1 -1
  45. package/dist/triage-ui-controller.js.map +1 -1
  46. package/dist/use-recorder-controller.d.ts +17 -2
  47. package/dist/use-recorder-controller.d.ts.map +1 -1
  48. package/dist/use-recorder-controller.js +302 -35
  49. package/dist/use-recorder-controller.js.map +1 -1
  50. package/dist/use-screen-recorder.d.ts +7 -0
  51. package/dist/use-screen-recorder.d.ts.map +1 -1
  52. package/dist/use-screen-recorder.js +7 -0
  53. package/dist/use-screen-recorder.js.map +1 -1
  54. package/package.json +6 -6
  55. package/dist/loom-recorder.d.ts +0 -9
  56. package/dist/loom-recorder.d.ts.map +0 -1
  57. package/dist/loom-recorder.js +0 -92
  58. package/dist/loom-recorder.js.map +0 -1
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Screen recorder: capture a window-oriented display stream, mix in microphone audio
4
- * when available, and finalize after stop. Preview becomes available immediately so
5
- * optimization can continue in the background.
4
+ * when available, and finalize after stop. Preview becomes available immediately,
5
+ * while attach stays disabled until finalization finishes.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.useRecorderController = useRecorderController;
9
9
  const react_1 = require("react");
10
10
  const finalizeRecordingInWorker_1 = require("./recorder/finalizeRecordingInWorker");
11
11
  const DEFAULT_MAX_MS = 5 * 60 * 1000;
12
+ const DEFAULT_CAMERA_BITRATE = 500000;
12
13
  const MIME = typeof MediaRecorder !== "undefined" && MediaRecorder.isTypeSupported("video/webm;codecs=vp9")
13
14
  ? "video/webm;codecs=vp9"
14
15
  : "video/webm";
@@ -19,7 +20,7 @@ function isSupported() {
19
20
  }
20
21
  function buildDisplayMediaOptions() {
21
22
  return {
22
- video: { displaySurface: "window" },
23
+ video: true,
23
24
  audio: true,
24
25
  preferCurrentTab: false,
25
26
  selfBrowserSurface: "exclude",
@@ -29,9 +30,38 @@ function buildDisplayMediaOptions() {
29
30
  monitorTypeSurfaces: "include",
30
31
  };
31
32
  }
32
- async function tryAcquireMicrophone() {
33
+ function createMicrophoneCaptureError(message) {
34
+ const error = new Error(message);
35
+ error.name = "MicrophoneCaptureError";
36
+ return error;
37
+ }
38
+ function createCameraCaptureError(message) {
39
+ const error = new Error(message);
40
+ error.name = "CameraCaptureError";
41
+ return error;
42
+ }
43
+ function describeCameraAccessFailure(error) {
44
+ const errorName = error instanceof Error ? error.name : "";
45
+ if (errorName === "NotAllowedError" || errorName === "SecurityError") {
46
+ return "Camera recording is enabled, but camera access was blocked. Allow camera access in Firefox and macOS Settings, then try again.";
47
+ }
48
+ if (errorName === "NotFoundError" || errorName === "DevicesNotFoundError") {
49
+ return "Camera recording is enabled, but no camera device was found. Connect a camera, make sure Firefox can see it, or turn off camera recording.";
50
+ }
51
+ if (errorName === "NotReadableError" || errorName === "TrackStartError") {
52
+ return "Camera recording is enabled, but the camera could not be opened. Another app may already be using it.";
53
+ }
54
+ if (errorName === "OverconstrainedError") {
55
+ return "Camera recording is enabled, but Firefox rejected the requested camera settings. Try again or use a different camera.";
56
+ }
57
+ return "Camera recording is enabled, but camera access failed. Allow camera access or turn off camera recording.";
58
+ }
59
+ async function tryAcquireMicrophone(required) {
60
+ if (!required) {
61
+ return null;
62
+ }
33
63
  try {
34
- return await navigator.mediaDevices.getUserMedia({
64
+ const microphoneStream = await navigator.mediaDevices.getUserMedia({
35
65
  audio: {
36
66
  echoCancellation: true,
37
67
  noiseSuppression: true,
@@ -39,10 +69,69 @@ async function tryAcquireMicrophone() {
39
69
  },
40
70
  video: false,
41
71
  });
72
+ const microphoneTrack = microphoneStream.getAudioTracks()[0];
73
+ if (!microphoneTrack || microphoneTrack.readyState !== "live") {
74
+ microphoneStream.getTracks().forEach((track) => track.stop());
75
+ throw createMicrophoneCaptureError("Microphone recording is enabled, but no working microphone input was found.");
76
+ }
77
+ return microphoneStream;
78
+ }
79
+ catch (error) {
80
+ if (error instanceof Error && error.name === "MicrophoneCaptureError") {
81
+ throw error;
82
+ }
83
+ throw createMicrophoneCaptureError("Microphone recording is enabled, but microphone access failed. Allow microphone access or turn off microphone recording.");
42
84
  }
43
- catch {
85
+ }
86
+ async function tryAcquireCamera(required) {
87
+ if (!required) {
44
88
  return null;
45
89
  }
90
+ try {
91
+ const videoInputs = await navigator.mediaDevices
92
+ .enumerateDevices()
93
+ .then((devices) => devices.filter((device) => device.kind === "videoinput"))
94
+ .catch(() => []);
95
+ if (videoInputs.length === 0) {
96
+ throw createCameraCaptureError("Camera recording is enabled, but no camera device was found. Connect a camera, make sure Firefox can see it, or turn off camera recording.");
97
+ }
98
+ const cameraStream = await navigator.mediaDevices.getUserMedia({
99
+ video: true,
100
+ audio: false,
101
+ });
102
+ const cameraTrack = cameraStream.getVideoTracks()[0];
103
+ if (!cameraTrack || cameraTrack.readyState !== "live") {
104
+ cameraStream.getTracks().forEach((track) => track.stop());
105
+ throw createCameraCaptureError("Camera recording is enabled, but no working camera input was found.");
106
+ }
107
+ cameraTrack
108
+ .applyConstraints({
109
+ width: { ideal: 320 },
110
+ height: { ideal: 240 },
111
+ })
112
+ .catch(() => { });
113
+ return cameraStream;
114
+ }
115
+ catch (error) {
116
+ if (error instanceof Error && error.name === "CameraCaptureError") {
117
+ throw error;
118
+ }
119
+ throw createCameraCaptureError(describeCameraAccessFailure(error));
120
+ }
121
+ }
122
+ function createVideoRecorder(stream, bitsPerSecond) {
123
+ const candidates = [MIME, "video/webm;codecs=vp8", "video/webm"].filter((value, index, values) => values.indexOf(value) === index);
124
+ for (const mimeType of candidates) {
125
+ if (!MediaRecorder.isTypeSupported(mimeType))
126
+ continue;
127
+ try {
128
+ return new MediaRecorder(stream, { mimeType, videoBitsPerSecond: bitsPerSecond });
129
+ }
130
+ catch {
131
+ // Try the next supported candidate.
132
+ }
133
+ }
134
+ return new MediaRecorder(stream, { videoBitsPerSecond: bitsPerSecond });
46
135
  }
47
136
  function createRecordingStream(displayStream, microphoneStream) {
48
137
  const tracks = [...displayStream.getVideoTracks()];
@@ -70,20 +159,60 @@ function createRecordingStream(displayStream, microphoneStream) {
70
159
  },
71
160
  };
72
161
  }
162
+ function toError(error, fallbackMessage) {
163
+ return error instanceof Error ? error : new Error(fallbackMessage);
164
+ }
165
+ function getFinalizationHints(displayStream, microphoneStream, cameraEnabled, pipPosition, pipShape) {
166
+ const videoTrack = displayStream.getVideoTracks()[0];
167
+ const settings = videoTrack?.getSettings();
168
+ return {
169
+ hasAudio: displayStream.getAudioTracks().length > 0
170
+ || (microphoneStream?.getAudioTracks().length ?? 0) > 0,
171
+ width: typeof settings?.width === "number" && settings.width > 0
172
+ ? settings.width
173
+ : undefined,
174
+ height: typeof settings?.height === "number" && settings.height > 0
175
+ ? settings.height
176
+ : undefined,
177
+ cameraOverlayEnabled: cameraEnabled || undefined,
178
+ cameraOverlayPosition: cameraEnabled ? pipPosition : undefined,
179
+ cameraOverlayShape: cameraEnabled ? pipShape : undefined,
180
+ };
181
+ }
73
182
  function useRecorderController(options = {}) {
74
- const { maxDurationMs = DEFAULT_MAX_MS, videoBitsPerSecond = 2500000 } = options;
183
+ const { maxDurationMs = DEFAULT_MAX_MS, videoBitsPerSecond = 2500000, cameraBitsPerSecond = DEFAULT_CAMERA_BITRATE, defaultMicrophoneEnabled = true, microphoneEnabled: controlledMicrophoneEnabled, defaultCameraEnabled = false, cameraEnabled: controlledCameraEnabled, pipPosition = "bottom-right", pipShape = "circle", } = options;
75
184
  const [state, setState] = (0, react_1.useState)("idle");
76
185
  const [duration, setDuration] = (0, react_1.useState)(0);
77
186
  const [previewUrl, setPreviewUrl] = (0, react_1.useState)(null);
78
187
  const [cameraPreviewUrl, setCameraPreviewUrl] = (0, react_1.useState)(null);
188
+ const [liveCameraStream, setLiveCameraStream] = (0, react_1.useState)(null);
79
189
  const [error, setError] = (0, react_1.useState)(null);
190
+ const [microphoneError, setMicrophoneError] = (0, react_1.useState)(null);
191
+ const [cameraError, setCameraError] = (0, react_1.useState)(null);
80
192
  const [isFinalizing, setIsFinalizing] = (0, react_1.useState)(false);
193
+ const [uncontrolledMicrophoneEnabled, setUncontrolledMicrophoneEnabled] = (0, react_1.useState)(defaultMicrophoneEnabled);
194
+ const [uncontrolledCameraEnabled, setUncontrolledCameraEnabled] = (0, react_1.useState)(defaultCameraEnabled);
195
+ const microphoneEnabled = controlledMicrophoneEnabled ?? uncontrolledMicrophoneEnabled;
196
+ const cameraEnabled = controlledCameraEnabled ?? uncontrolledCameraEnabled;
197
+ const setMicrophoneEnabled = (0, react_1.useCallback)((enabled) => {
198
+ if (controlledMicrophoneEnabled === undefined) {
199
+ setUncontrolledMicrophoneEnabled(enabled);
200
+ }
201
+ }, [controlledMicrophoneEnabled]);
202
+ const setCameraEnabled = (0, react_1.useCallback)((enabled) => {
203
+ if (controlledCameraEnabled === undefined) {
204
+ setUncontrolledCameraEnabled(enabled);
205
+ }
206
+ }, [controlledCameraEnabled]);
81
207
  const streamRef = (0, react_1.useRef)(null);
82
208
  const displayStreamRef = (0, react_1.useRef)(null);
83
209
  const microphoneStreamRef = (0, react_1.useRef)(null);
210
+ const cameraStreamRef = (0, react_1.useRef)(null);
84
211
  const releaseAudioRef = (0, react_1.useRef)(null);
85
212
  const recorderRef = (0, react_1.useRef)(null);
213
+ const cameraRecorderRef = (0, react_1.useRef)(null);
86
214
  const chunksRef = (0, react_1.useRef)([]);
215
+ const cameraChunksRef = (0, react_1.useRef)([]);
87
216
  const blobRef = (0, react_1.useRef)(null);
88
217
  const blobMetadataRef = (0, react_1.useRef)(null);
89
218
  const finalizePromiseRef = (0, react_1.useRef)(null);
@@ -109,16 +238,37 @@ function useRecorderController(options = {}) {
109
238
  displayStreamRef.current = null;
110
239
  microphoneStreamRef.current?.getTracks().forEach((t) => t.stop());
111
240
  microphoneStreamRef.current = null;
241
+ cameraStreamRef.current?.getTracks().forEach((t) => t.stop());
242
+ cameraStreamRef.current = null;
112
243
  releaseAudioRef.current?.();
113
244
  releaseAudioRef.current = null;
114
245
  recorderRef.current = null;
246
+ cameraRecorderRef.current = null;
247
+ setLiveCameraStream(null);
115
248
  }, []);
116
- const buildFallbackMetadata = (0, react_1.useCallback)((blob) => ({
249
+ const buildFallbackMetadata = (0, react_1.useCallback)((blob, conversionReason) => ({
117
250
  durationSeconds: Math.max(1, Math.round(Math.max(elapsedMsRef.current, 1) / 1000)),
118
251
  mimeType: blob.type || "video/webm",
119
252
  fileExtension: blob.type.includes("mp4") ? "mp4" : "webm",
120
253
  conversionMode: "passthrough",
254
+ conversionReason,
121
255
  }), []);
256
+ const setPreviewBlob = (0, react_1.useCallback)((blob) => {
257
+ setPreviewUrl((currentUrl) => {
258
+ if (currentUrl) {
259
+ URL.revokeObjectURL(currentUrl);
260
+ }
261
+ return blob ? URL.createObjectURL(blob) : null;
262
+ });
263
+ }, []);
264
+ const setCameraPreviewBlob = (0, react_1.useCallback)((blob) => {
265
+ setCameraPreviewUrl((currentUrl) => {
266
+ if (currentUrl) {
267
+ URL.revokeObjectURL(currentUrl);
268
+ }
269
+ return blob ? URL.createObjectURL(blob) : null;
270
+ });
271
+ }, []);
122
272
  const scheduleMaxTimer = (0, react_1.useCallback)(() => {
123
273
  if (maxTimerRef.current) {
124
274
  clearTimeout(maxTimerRef.current);
@@ -132,7 +282,9 @@ function useRecorderController(options = {}) {
132
282
  cleanup();
133
283
  if (previewUrl)
134
284
  URL.revokeObjectURL(previewUrl);
135
- }, [cleanup, previewUrl]);
285
+ if (cameraPreviewUrl)
286
+ URL.revokeObjectURL(cameraPreviewUrl);
287
+ }, [cameraPreviewUrl, cleanup, previewUrl]);
136
288
  const start = (0, react_1.useCallback)(async () => {
137
289
  if (!isSupported()) {
138
290
  setError(new Error("Screen recording is not supported"));
@@ -140,12 +292,12 @@ function useRecorderController(options = {}) {
140
292
  return;
141
293
  }
142
294
  setError(null);
295
+ setMicrophoneError(null);
296
+ setCameraError(null);
143
297
  discardingRef.current = false;
144
- if (previewUrl) {
145
- URL.revokeObjectURL(previewUrl);
146
- setPreviewUrl(null);
147
- }
148
- setCameraPreviewUrl(null);
298
+ setPreviewBlob(null);
299
+ setCameraPreviewBlob(null);
300
+ setLiveCameraStream(null);
149
301
  blobRef.current = null;
150
302
  blobMetadataRef.current = null;
151
303
  finalizePromiseRef.current = null;
@@ -154,25 +306,44 @@ function useRecorderController(options = {}) {
154
306
  setState("requesting");
155
307
  try {
156
308
  const displayStream = await navigator.mediaDevices.getDisplayMedia(buildDisplayMediaOptions());
157
- const microphoneStream = await tryAcquireMicrophone();
309
+ const microphoneStream = await tryAcquireMicrophone(microphoneEnabled);
310
+ const cameraStream = await tryAcquireCamera(cameraEnabled);
158
311
  const { stream, release } = createRecordingStream(displayStream, microphoneStream);
312
+ const finalizationHints = getFinalizationHints(displayStream, microphoneStream, cameraEnabled, pipPosition, pipShape);
159
313
  displayStreamRef.current = displayStream;
160
314
  microphoneStreamRef.current = microphoneStream;
315
+ cameraStreamRef.current = cameraStream;
161
316
  releaseAudioRef.current = release;
162
317
  streamRef.current = stream;
163
- const recorder = new MediaRecorder(stream, {
164
- mimeType: MIME,
165
- videoBitsPerSecond: videoBitsPerSecond ?? 2500000,
166
- });
318
+ setLiveCameraStream(cameraStream ? new MediaStream(cameraStream.getVideoTracks()) : null);
319
+ const recorder = createVideoRecorder(stream, videoBitsPerSecond ?? 2500000);
320
+ const cameraRecorder = cameraStream && cameraStream.getVideoTracks().length > 0
321
+ ? createVideoRecorder(new MediaStream(cameraStream.getVideoTracks()), cameraBitsPerSecond)
322
+ : null;
167
323
  recorderRef.current = recorder;
324
+ cameraRecorderRef.current = cameraRecorder;
168
325
  chunksRef.current = [];
326
+ cameraChunksRef.current = [];
169
327
  recorder.ondataavailable = (e) => {
170
328
  if (discardingRef.current)
171
329
  return;
172
330
  if (e.data.size > 0)
173
331
  chunksRef.current.push(e.data);
174
332
  };
175
- recorder.onstop = async () => {
333
+ cameraRecorder?.addEventListener("dataavailable", (e) => {
334
+ if (discardingRef.current)
335
+ return;
336
+ if (e.data.size > 0)
337
+ cameraChunksRef.current.push(e.data);
338
+ });
339
+ let screenStopped = false;
340
+ let cameraStopped = cameraRecorder == null;
341
+ let finalizationStarted = false;
342
+ const maybeFinalizeStoppedRecorders = async () => {
343
+ if (finalizationStarted || !screenStopped || !cameraStopped) {
344
+ return;
345
+ }
346
+ finalizationStarted = true;
176
347
  cleanup();
177
348
  if (discardingRef.current) {
178
349
  discardingRef.current = false;
@@ -184,14 +355,35 @@ function useRecorderController(options = {}) {
184
355
  const chunks = chunksRef.current;
185
356
  const type = chunks[0]?.type || MIME.split(";")[0];
186
357
  const rawBlob = new Blob(chunks, { type });
187
- const previewObjectUrl = URL.createObjectURL(rawBlob);
358
+ const cameraType = cameraChunksRef.current[0]?.type || cameraRecorder?.mimeType || MIME;
359
+ const rawCameraBlob = cameraChunksRef.current.length > 0
360
+ ? new Blob(cameraChunksRef.current, { type: cameraType.split(";")[0] })
361
+ : null;
362
+ if (cameraEnabled && !rawCameraBlob) {
363
+ setError(new Error("Camera recording was enabled, but the camera overlay could not be captured."));
364
+ setState("error");
365
+ return;
366
+ }
188
367
  blobRef.current = rawBlob;
189
- blobMetadataRef.current = buildFallbackMetadata(rawBlob);
190
- setPreviewUrl(previewObjectUrl);
368
+ blobMetadataRef.current = {
369
+ ...buildFallbackMetadata(rawBlob),
370
+ cameraOverlayEnabled: cameraEnabled || undefined,
371
+ cameraOverlayIncluded: false,
372
+ cameraOverlayPosition: cameraEnabled ? pipPosition : undefined,
373
+ cameraOverlayShape: cameraEnabled ? pipShape : undefined,
374
+ };
375
+ setPreviewBlob(rawBlob);
376
+ setCameraPreviewBlob(rawCameraBlob);
191
377
  setState("preview");
192
378
  setIsFinalizing(true);
193
379
  const runId = ++finalizationRunIdRef.current;
194
- const finalizePromise = (0, finalizeRecordingInWorker_1.finalizeRecordingInWorker)(rawBlob, Math.max(elapsedMsRef.current, 1));
380
+ const finalizePromise = (0, finalizeRecordingInWorker_1.finalizeRecordingInWorker)(rawBlob, Math.max(elapsedMsRef.current, 1), finalizationHints, {
381
+ enabled: cameraEnabled,
382
+ cameraBlob: rawCameraBlob,
383
+ pipScale: options.pipScale,
384
+ position: pipPosition,
385
+ shape: pipShape,
386
+ });
195
387
  finalizePromiseRef.current = finalizePromise;
196
388
  try {
197
389
  const finalizedRecording = await finalizePromise;
@@ -200,12 +392,23 @@ function useRecorderController(options = {}) {
200
392
  }
201
393
  blobRef.current = finalizedRecording.blob;
202
394
  blobMetadataRef.current = finalizedRecording.metadata;
395
+ setPreviewBlob(finalizedRecording.blob);
396
+ setCameraPreviewBlob(null);
397
+ if (finalizedRecording.metadata.conversionMode !== "mp4"
398
+ || finalizedRecording.metadata.mimeType !== "video/mp4") {
399
+ throw new Error("Recorder finalized to a non-MP4 output");
400
+ }
203
401
  }
204
- catch (err) {
402
+ catch (error) {
205
403
  if (discardingRef.current || finalizationRunIdRef.current !== runId) {
206
404
  return;
207
405
  }
208
- setError(err instanceof Error ? err : new Error("Failed to finalize recording"));
406
+ blobRef.current = null;
407
+ blobMetadataRef.current = null;
408
+ setPreviewBlob(null);
409
+ setCameraPreviewBlob(null);
410
+ setError(toError(error, "Recording processing failed. MP4 conversion is required before upload."));
411
+ setState("error");
209
412
  }
210
413
  finally {
211
414
  if (finalizationRunIdRef.current === runId) {
@@ -214,11 +417,26 @@ function useRecorderController(options = {}) {
214
417
  }
215
418
  }
216
419
  };
420
+ recorder.onstop = () => {
421
+ screenStopped = true;
422
+ void maybeFinalizeStoppedRecorders();
423
+ };
217
424
  recorder.onerror = () => {
218
425
  setError(new Error("Recording failed"));
219
426
  cleanup();
220
427
  setState("error");
221
428
  };
429
+ if (cameraRecorder) {
430
+ cameraRecorder.onstop = () => {
431
+ cameraStopped = true;
432
+ void maybeFinalizeStoppedRecorders();
433
+ };
434
+ cameraRecorder.onerror = () => {
435
+ setCameraError(new Error("Camera recording failed"));
436
+ cleanup();
437
+ setState("error");
438
+ };
439
+ }
222
440
  displayStream.getVideoTracks()[0]?.addEventListener("ended", () => {
223
441
  if (recorder.state === "recording") {
224
442
  const activeMs = Date.now() - timerStartedAtRef.current;
@@ -228,6 +446,7 @@ function useRecorderController(options = {}) {
228
446
  }
229
447
  });
230
448
  recorder.start();
449
+ cameraRecorder?.start();
231
450
  remainingMaxMsRef.current = maxDurationMs;
232
451
  elapsedMsRef.current = 0;
233
452
  timerStartedAtRef.current = Date.now();
@@ -241,10 +460,33 @@ function useRecorderController(options = {}) {
241
460
  }
242
461
  catch (err) {
243
462
  cleanup();
244
- setError(err instanceof Error ? err : new Error("Failed to start recording"));
463
+ const resolvedError = err instanceof Error ? err : new Error("Failed to start recording");
464
+ if (resolvedError.name === "MicrophoneCaptureError") {
465
+ setMicrophoneError(resolvedError);
466
+ }
467
+ else if (resolvedError.name === "CameraCaptureError") {
468
+ setCameraError(resolvedError);
469
+ }
470
+ else {
471
+ setError(resolvedError);
472
+ }
245
473
  setState("error");
246
474
  }
247
- }, [previewUrl, maxDurationMs, videoBitsPerSecond, cleanup, scheduleMaxTimer]);
475
+ }, [
476
+ cameraBitsPerSecond,
477
+ cameraEnabled,
478
+ buildFallbackMetadata,
479
+ cleanup,
480
+ maxDurationMs,
481
+ microphoneEnabled,
482
+ options.pipScale,
483
+ pipPosition,
484
+ pipShape,
485
+ scheduleMaxTimer,
486
+ setCameraPreviewBlob,
487
+ setPreviewBlob,
488
+ videoBitsPerSecond,
489
+ ]);
248
490
  const stop = (0, react_1.useCallback)(() => {
249
491
  if (state !== "recording" && state !== "paused")
250
492
  return;
@@ -262,17 +504,25 @@ function useRecorderController(options = {}) {
262
504
  maxTimerRef.current = null;
263
505
  }
264
506
  const rec = recorderRef.current;
507
+ const cameraRec = cameraRecorderRef.current;
265
508
  if (rec && (rec.state === "recording" || rec.state === "paused")) {
266
509
  rec.requestData();
267
510
  rec.stop();
268
511
  }
512
+ if (cameraRec && (cameraRec.state === "recording" || cameraRec.state === "paused")) {
513
+ cameraRec.requestData();
514
+ cameraRec.stop();
515
+ }
269
516
  }, [state]);
270
517
  const pause = (0, react_1.useCallback)(() => {
271
518
  if (state !== "recording")
272
519
  return;
273
520
  const rec = recorderRef.current;
521
+ const cameraRec = cameraRecorderRef.current;
274
522
  if (rec?.state === "recording")
275
523
  rec.pause();
524
+ if (cameraRec?.state === "recording")
525
+ cameraRec.pause();
276
526
  if (timerRef.current) {
277
527
  clearInterval(timerRef.current);
278
528
  timerRef.current = null;
@@ -287,8 +537,11 @@ function useRecorderController(options = {}) {
287
537
  if (state !== "paused")
288
538
  return;
289
539
  const rec = recorderRef.current;
540
+ const cameraRec = cameraRecorderRef.current;
290
541
  if (rec?.state === "paused")
291
542
  rec.resume();
543
+ if (cameraRec?.state === "paused")
544
+ cameraRec.resume();
292
545
  timerStartedAtRef.current = Date.now();
293
546
  timerRef.current = setInterval(() => {
294
547
  const totalMs = elapsedMsRef.current + (Date.now() - timerStartedAtRef.current);
@@ -304,16 +557,16 @@ function useRecorderController(options = {}) {
304
557
  blobMetadataRef.current = null;
305
558
  finalizePromiseRef.current = null;
306
559
  finalizationRunIdRef.current += 1;
307
- if (previewUrl)
308
- URL.revokeObjectURL(previewUrl);
309
- setPreviewUrl(null);
310
- setCameraPreviewUrl(null);
560
+ setPreviewBlob(null);
561
+ setCameraPreviewBlob(null);
562
+ setLiveCameraStream(null);
311
563
  setIsFinalizing(false);
312
564
  setDuration(0);
313
565
  remainingMaxMsRef.current = maxDurationMs;
314
566
  elapsedMsRef.current = 0;
315
567
  setState("idle");
316
568
  const rec = recorderRef.current;
569
+ const cameraRec = cameraRecorderRef.current;
317
570
  if (rec && (rec.state === "recording" || rec.state === "paused")) {
318
571
  if (timerRef.current) {
319
572
  clearInterval(timerRef.current);
@@ -324,11 +577,14 @@ function useRecorderController(options = {}) {
324
577
  maxTimerRef.current = null;
325
578
  }
326
579
  rec.stop();
580
+ if (cameraRec && (cameraRec.state === "recording" || cameraRec.state === "paused")) {
581
+ cameraRec.stop();
582
+ }
327
583
  return;
328
584
  }
329
585
  cleanup();
330
586
  discardingRef.current = false;
331
- }, [cleanup, maxDurationMs, previewUrl]);
587
+ }, [cleanup, maxDurationMs, setCameraPreviewBlob, setPreviewBlob]);
332
588
  const restart = (0, react_1.useCallback)(async () => {
333
589
  discard();
334
590
  await start();
@@ -346,19 +602,30 @@ function useRecorderController(options = {}) {
346
602
  if (!blob) {
347
603
  return null;
348
604
  }
605
+ const metadata = blobMetadataRef.current;
606
+ if (metadata?.conversionMode !== "mp4" || metadata.mimeType !== "video/mp4") {
607
+ throw new Error("Recording is not finalized as MP4");
608
+ }
349
609
  return {
350
610
  blob,
351
- metadata: blobMetadataRef.current ?? buildFallbackMetadata(blob),
611
+ metadata,
352
612
  };
353
- }, [buildFallbackMetadata]);
613
+ }, []);
354
614
  return {
355
615
  state,
356
616
  duration,
357
617
  previewUrl,
358
618
  cameraPreviewUrl,
619
+ liveCameraStream,
359
620
  error,
621
+ microphoneError,
622
+ cameraError,
360
623
  isSupported: isSupported(),
361
624
  isFinalizing,
625
+ microphoneEnabled,
626
+ cameraEnabled,
627
+ setMicrophoneEnabled,
628
+ setCameraEnabled,
362
629
  start,
363
630
  stop,
364
631
  pause,
@@ -1 +1 @@
1
- {"version":3,"file":"use-recorder-controller.js","sourceRoot":"","sources":["../src/use-recorder-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-recorder-controller.js","sourceRoot":"","sources":["../src/use-recorder-controller.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,15 @@ export interface UseScreenRecorderResult {
11
11
  duration: number;
12
12
  previewUrl: string | null;
13
13
  cameraPreviewUrl: string | null;
14
+ liveCameraStream: MediaStream | null;
14
15
  error: Error | null;
16
+ microphoneError: Error | null;
17
+ cameraError: Error | null;
15
18
  isSupported: boolean;
19
+ microphoneEnabled: boolean;
20
+ cameraEnabled: boolean;
21
+ setMicrophoneEnabled: (enabled: boolean) => void;
22
+ setCameraEnabled: (enabled: boolean) => void;
16
23
  startRecording: () => Promise<void>;
17
24
  stopRecording: () => void;
18
25
  pauseRecording: () => void;