@limrun/ui 0.9.0-rc.11 → 0.9.0-rc.13

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.
@@ -93,6 +93,34 @@ interface RemoteControlProps {
93
93
  * @default 2000
94
94
  */
95
95
  axMaxBackoffMs?: number;
96
+ /**
97
+ * Optional outbound camera input.
98
+ *
99
+ * When provided, every video track on this `MediaStream` is forwarded
100
+ * up the same `RTCPeerConnection` that already carries the device
101
+ * screen downstream. On iOS instances, the limulator-side injector
102
+ * splices those frames into apps that use AVFoundation, so the user's
103
+ * browser camera becomes the iOS camera (`AVCaptureDevice.default(for:
104
+ * .video)`).
105
+ *
106
+ * Today this is only honored by iOS instances launched with the
107
+ * camera runtime; Android instances ignore it.
108
+ *
109
+ * Lifecycle expectations:
110
+ * - Pass `null`/`undefined` to skip outbound camera (default).
111
+ * - Pass a `MediaStream` obtained from
112
+ * `navigator.mediaDevices.getUserMedia({ video: true })` (or any
113
+ * other source — screen capture, virtual camera, etc.).
114
+ * - Changing the `MediaStream.id` triggers a connection restart so
115
+ * the new track is included in the SDP offer. The reference itself
116
+ * is allowed to be unstable across renders — we key the reconnect
117
+ * on `id`, not object identity, so memoization isn't required.
118
+ * - Stopping the tracks (e.g. `track.stop()`) on the parent side is
119
+ * sufficient to cut the outbound feed without restarting; the peer
120
+ * connection just stops getting frames on that track. To fully
121
+ * detach the track from the SDP, swap the prop to `null`.
122
+ */
123
+ cameraStream?: MediaStream | null;
96
124
  }
97
125
  interface ScreenshotData {
98
126
  dataUri: string;