@tribe-nest/media-client 0.1.1 → 0.4.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 (44) hide show
  1. package/build/core/index.d.ts +1 -1
  2. package/build/core/index.d.ts.map +1 -1
  3. package/build/core/index.js.map +1 -1
  4. package/build/core/reconnect.d.ts +29 -0
  5. package/build/core/reconnect.d.ts.map +1 -1
  6. package/build/core/reconnect.js +49 -9
  7. package/build/core/reconnect.js.map +1 -1
  8. package/build/core/signal.d.ts +9 -0
  9. package/build/core/signal.d.ts.map +1 -1
  10. package/build/core/signal.js +18 -2
  11. package/build/core/signal.js.map +1 -1
  12. package/build/core/state.d.ts +31 -0
  13. package/build/core/state.d.ts.map +1 -1
  14. package/build/core/state.js +113 -8
  15. package/build/core/state.js.map +1 -1
  16. package/build/index.d.ts +1 -1
  17. package/build/index.d.ts.map +1 -1
  18. package/build/index.js.map +1 -1
  19. package/build/react/index.d.ts +78 -16
  20. package/build/react/index.d.ts.map +1 -1
  21. package/build/react/index.js +289 -12
  22. package/build/react/index.js.map +1 -1
  23. package/build/room/browserDevice.d.ts.map +1 -1
  24. package/build/room/browserDevice.js +13 -4
  25. package/build/room/browserDevice.js.map +1 -1
  26. package/build/room/device.d.ts +19 -0
  27. package/build/room/device.d.ts.map +1 -1
  28. package/build/room/room.d.ts +298 -3
  29. package/build/room/room.d.ts.map +1 -1
  30. package/build/room/room.js +742 -24
  31. package/build/room/room.js.map +1 -1
  32. package/package.json +2 -2
  33. package/src/core/_tests/reconnect.spec.ts +92 -0
  34. package/src/core/_tests/state.spec.ts +138 -0
  35. package/src/core/index.ts +2 -0
  36. package/src/core/reconnect.ts +76 -9
  37. package/src/core/signal.ts +16 -2
  38. package/src/core/state.ts +163 -11
  39. package/src/index.ts +2 -0
  40. package/src/react/index.tsx +323 -19
  41. package/src/room/_tests/room.spec.ts +954 -4
  42. package/src/room/browserDevice.ts +14 -4
  43. package/src/room/device.ts +19 -0
  44. package/src/room/room.ts +913 -26
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA+CA,sCAMC;AArDD,wDAA2D;AAC3D,sCAA+D;AAE/D;;;;;;;;;;;;;;GAcG;AAEH,8CAA4B;AAW5B,sDAA2D;AAAlD,oHAAA,mBAAmB,OAAA;AAU5B;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CACjC,OAAqF;IAErF,MAAM,IAAI,GAAG,IAAI,gBAAS,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,mCAAmB,EAAE,CAAC,CAAC;IAC1F,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiDA,sCAMC;AAvDD,wDAA2D;AAC3D,sCAA+D;AAE/D;;;;;;;;;;;;;;GAcG;AAEH,8CAA4B;AAW5B,sDAA2D;AAAlD,oHAAA,mBAAmB,OAAA;AAY5B;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CACjC,OAAqF;IAErF,MAAM,IAAI,GAAG,IAAI,gBAAS,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,mCAAmB,EAAE,CAAC,CAAC;IAC1F,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type ReactNode } from "react";
2
2
  import type { MediaGrants, Peer } from "@tribe-nest/media-protocol";
3
- import { MediaRoom, type ConnectionState, type LocalPublication, type LocalPublicationSource, type MediaRoomOptions, type MediaTrack } from "../room/room";
3
+ import { MediaRoom, type BroadcastEvent, type CallDiagnostics, type ConnectionState, type LocalPublication, type LocalPublicationSource, type MediaRoomOptions, type MediaTrack } from "../room/room";
4
4
  import type { DisconnectCause, ProducerEntry, RoomState } from "../core";
5
5
  /**
6
6
  * The React surface.
@@ -85,6 +85,53 @@ export declare function useLocalPublications(): readonly LocalPublication[];
85
85
  export declare function useGrants(): MediaGrants | undefined;
86
86
  /** True while any egress participant is present. A consent signal. */
87
87
  export declare function useRecording(): boolean;
88
+ /**
89
+ * The node's speaker ranking with quantized levels, loudest first.
90
+ *
91
+ * Read this from the SMALLEST component that renders it (a meter inside a
92
+ * name badge), not from the grid: the list moves on the observer's tick, and
93
+ * a grid subscribed to it re-renders every tile a few times a second.
94
+ */
95
+ export declare function useSpeakers(): RoomState["speakers"];
96
+ /** Hands currently up, oldest first: the order IS the queue. */
97
+ export declare function useRaisedHands(): RoomState["raisedHands"];
98
+ /** Whether a consume outside the active set would actually be refused. */
99
+ export declare function useActiveSetEnforced(): boolean;
100
+ /**
101
+ * Incoming ephemeral broadcasts (reactions, courtesy lower-hands), as events.
102
+ *
103
+ * The handler lives in a ref, so an inline arrow does not resubscribe per
104
+ * render. Unknown `type` values are delivered; ignore what you do not know.
105
+ */
106
+ export declare function useBroadcast(handler: (event: BroadcastEvent) => void): void;
107
+ /**
108
+ * Poll the call's diagnostics while `enabled`: per tile, the layer asked for,
109
+ * the layer the node is giving, and the decoded picture; plus the node's
110
+ * congestion estimate and this side's publish health. Null until the first
111
+ * answer, and null again when disabled. One request a second against the
112
+ * node while open, which is why it is gated rather than always on.
113
+ */
114
+ export declare function useCallDiagnostics(enabled: boolean, intervalMs?: number): CallDiagnostics | null;
115
+ export type { CallDiagnostics, TileDiagnostics, NodeDiagnostics } from "../room/room";
116
+ export type TileViewportControls = {
117
+ /**
118
+ * A ref-callback factory: `<video ref={observeTile(producerId)} />`.
119
+ * Registers the element as rendering that producer; passing a null element
120
+ * (unmount) unregisters it.
121
+ */
122
+ observeTile: (producerId: string) => (element: HTMLElement | null) => void;
123
+ };
124
+ /**
125
+ * Report what the UI is actually rendering, so the room narrows its video
126
+ * subscriptions to it (audio never narrows) and picks simulcast layers from
127
+ * the real tile sizes.
128
+ *
129
+ * One shared IntersectionObserver and ResizeObserver for every tile, plus
130
+ * `visibilitychange` for the backgrounded tab. Where `IntersectionObserver`
131
+ * does not exist (jsdom, SSR) this never calls `setViewport`, which IS the
132
+ * legacy subscribe-everything behavior.
133
+ */
134
+ export declare function useTileViewport(): TileViewportControls;
88
135
  /**
89
136
  * One remote track, and a ref callback that attaches it.
90
137
  *
@@ -105,21 +152,44 @@ export declare function useRecording(): boolean;
105
152
  * renders one only after the track arrives, and every remote `<video>` is
106
153
  * `muted`, so a call had picture and no sound in either direction.
107
154
  *
108
- * Depending on `track` is what makes React re-run it: the identity changes when
109
- * the track appears, React calls the old callback with `null` and the new one
110
- * with the element. `MediaTrack` objects are created once per consumer and the
111
- * room's snapshot array is rebuilt only when a track changes, so this settles
112
- * rather than churning.
155
+ * ## Why the callback is STABLE, and an effect does the re-attaching
156
+ *
157
+ * The callback used to be memoised on `[track]`, so a new track identity made
158
+ * React run the OLD callback with `null` (which pauses the element and clears
159
+ * `srcObject`) and then the new one with the element. That is a black frame and
160
+ * a stall on the viewer's screen, and it fires for reasons that have nothing to
161
+ * do with the picture: the room's snapshot is rebuilt on every change, and a
162
+ * consumer that is closed and re-created (`syncSubscriptions` following the
163
+ * active set) produces a fresh `MediaTrack` for the SAME underlying
164
+ * `MediaStreamTrack`.
165
+ *
166
+ * So the ref callback is now stable - it mounts and unmounts, nothing else -
167
+ * and an effect assigns `srcObject` whenever the underlying track actually
168
+ * changes. `applied` is what makes that idempotent: assigning the same track
169
+ * again is not free, it restarts the element's load and shows as a flicker.
113
170
  */
114
171
  export declare function useRemoteTrack(producerId: string): {
115
172
  track: MediaTrack | undefined;
116
173
  attach: (element: HTMLMediaElement | null) => void;
117
174
  };
118
175
  export type LocalSource = LocalPublicationSource;
176
+ export type PublishDeviceOptions = {
177
+ /** Capture from this device rather than the browser's default. */
178
+ deviceId?: string;
179
+ /** Publish three spatial layers (VP8 only). For group calls whose viewers
180
+ * pick a layer per tile; wrong for a 1:1 where one encoding carries. */
181
+ simulcast?: boolean;
182
+ };
119
183
  export type LocalMediaControls = {
120
- publishCamera: () => Promise<void>;
121
- publishMicrophone: () => Promise<void>;
184
+ publishCamera: (options?: PublishDeviceOptions) => Promise<void>;
185
+ publishMicrophone: (options?: PublishDeviceOptions) => Promise<void>;
122
186
  publishScreen: () => Promise<void>;
187
+ /**
188
+ * Swap the capture behind a live publication to another device, keeping the
189
+ * producer: remote tiles do not blink, and Safari is not re-prompted. No-op
190
+ * for a source that is not published.
191
+ */
192
+ switchDevice: (source: "camera" | "microphone", deviceId: string) => Promise<void>;
123
193
  unpublish: (source: LocalSource) => Promise<void>;
124
194
  /**
125
195
  * Mute or unmute a source that is already published, keeping its capture.
@@ -156,13 +226,5 @@ export type LocalMediaControls = {
156
226
  pending: Record<LocalSource, boolean>;
157
227
  error: Error | undefined;
158
228
  };
159
- /**
160
- * Capture and publish.
161
- *
162
- * `getUserMedia` lives here rather than in the room because permission is a
163
- * BROWSER concern with a UI consequence - a denied prompt is something a person
164
- * has to be told about - and the room has no way to say so.
165
- */
166
229
  export declare function useLocalMedia(): LocalMediaControls;
167
- export {};
168
230
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC;;;;;;;OAOG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,GAAG;IAC1C,QAAQ,EAAE,SAAS,CAAC;IACpB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEJ,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,sBAAsB,GAAG,SAAS,CAsD/G;AAQD,wBAAgB,YAAY,IAAI,qBAAqB,CAEpD;AA8BD,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,wBAAgB,eAAe,IAAI,SAAS,IAAI,EAAE,CAEjD;AAED,wBAAgB,iBAAiB,IAAI,SAAS,MAAM,EAAE,CAErD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,aAAa,EAAE,CAG9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,SAAS,gBAAgB,EAAE,CAElE;AAED;uEACuE;AACvE,wBAAgB,SAAS,IAAI,WAAW,GAAG,SAAS,CAGnD;AAED,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,SAAS,CAAC,UAAU,CAAC,CAEnD;AAED,gEAAgE;AAChE,wBAAgB,cAAc,IAAI,SAAS,CAAC,aAAa,CAAC,CAEzD;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAQ3E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,SAAO,GAAG,eAAe,GAAG,IAAI,CAwB9F;AAED,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEtF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5E,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,oBAAoB,CAqFtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;IAClD,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;CACpD,CAqDA;AAED,MAAM,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAEjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;4EACwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;;;OAIG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD;;;;;;;;OAQG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,kDAAkD;IAClD,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,WAAW,EAAE,SAAS,WAAW,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,CAAC;AA+BF,wBAAgB,aAAa,IAAI,kBAAkB,CAgLlD"}
@@ -9,6 +9,12 @@ exports.useVisibleProducers = useVisibleProducers;
9
9
  exports.useLocalPublications = useLocalPublications;
10
10
  exports.useGrants = useGrants;
11
11
  exports.useRecording = useRecording;
12
+ exports.useSpeakers = useSpeakers;
13
+ exports.useRaisedHands = useRaisedHands;
14
+ exports.useActiveSetEnforced = useActiveSetEnforced;
15
+ exports.useBroadcast = useBroadcast;
16
+ exports.useCallDiagnostics = useCallDiagnostics;
17
+ exports.useTileViewport = useTileViewport;
12
18
  exports.useRemoteTrack = useRemoteTrack;
13
19
  exports.useLocalMedia = useLocalMedia;
14
20
  const jsx_runtime_1 = require("react/jsx-runtime");
@@ -150,6 +156,168 @@ function useGrants() {
150
156
  function useRecording() {
151
157
  return useRoomState().recording;
152
158
  }
159
+ /**
160
+ * The node's speaker ranking with quantized levels, loudest first.
161
+ *
162
+ * Read this from the SMALLEST component that renders it (a meter inside a
163
+ * name badge), not from the grid: the list moves on the observer's tick, and
164
+ * a grid subscribed to it re-renders every tile a few times a second.
165
+ */
166
+ function useSpeakers() {
167
+ return useRoomState().speakers;
168
+ }
169
+ /** Hands currently up, oldest first: the order IS the queue. */
170
+ function useRaisedHands() {
171
+ return useRoomState().raisedHands;
172
+ }
173
+ /** Whether a consume outside the active set would actually be refused. */
174
+ function useActiveSetEnforced() {
175
+ return useRoomState().activeSetEnforced;
176
+ }
177
+ /**
178
+ * Incoming ephemeral broadcasts (reactions, courtesy lower-hands), as events.
179
+ *
180
+ * The handler lives in a ref, so an inline arrow does not resubscribe per
181
+ * render. Unknown `type` values are delivered; ignore what you do not know.
182
+ */
183
+ function useBroadcast(handler) {
184
+ const { room } = useRoomContext();
185
+ const handlerRef = (0, react_1.useRef)(handler);
186
+ handlerRef.current = handler;
187
+ (0, react_1.useEffect)(() => {
188
+ if (!room)
189
+ return undefined;
190
+ return room.onBroadcast((event) => handlerRef.current(event));
191
+ }, [room]);
192
+ }
193
+ /**
194
+ * Poll the call's diagnostics while `enabled`: per tile, the layer asked for,
195
+ * the layer the node is giving, and the decoded picture; plus the node's
196
+ * congestion estimate and this side's publish health. Null until the first
197
+ * answer, and null again when disabled. One request a second against the
198
+ * node while open, which is why it is gated rather than always on.
199
+ */
200
+ function useCallDiagnostics(enabled, intervalMs = 1000) {
201
+ const { room } = useRoomContext();
202
+ const [diagnostics, setDiagnostics] = (0, react_1.useState)(null);
203
+ (0, react_1.useEffect)(() => {
204
+ if (!enabled || !room) {
205
+ setDiagnostics(null);
206
+ return undefined;
207
+ }
208
+ let cancelled = false;
209
+ const tick = () => void room
210
+ .getDiagnostics()
211
+ .then((d) => {
212
+ if (!cancelled)
213
+ setDiagnostics(d);
214
+ })
215
+ .catch(() => undefined);
216
+ tick();
217
+ const timer = setInterval(tick, intervalMs);
218
+ return () => {
219
+ cancelled = true;
220
+ clearInterval(timer);
221
+ };
222
+ }, [enabled, room, intervalMs]);
223
+ return diagnostics;
224
+ }
225
+ /**
226
+ * Report what the UI is actually rendering, so the room narrows its video
227
+ * subscriptions to it (audio never narrows) and picks simulcast layers from
228
+ * the real tile sizes.
229
+ *
230
+ * One shared IntersectionObserver and ResizeObserver for every tile, plus
231
+ * `visibilitychange` for the backgrounded tab. Where `IntersectionObserver`
232
+ * does not exist (jsdom, SSR) this never calls `setViewport`, which IS the
233
+ * legacy subscribe-everything behavior.
234
+ */
235
+ function useTileViewport() {
236
+ const { room } = useRoomContext();
237
+ const internals = (0, react_1.useMemo)(() => {
238
+ if (typeof IntersectionObserver === "undefined" || typeof ResizeObserver === "undefined")
239
+ return null;
240
+ const byElement = new Map();
241
+ const report = () => {
242
+ if (!room)
243
+ return;
244
+ if (typeof document !== "undefined" && document.visibilityState === "hidden") {
245
+ room.setViewport([]);
246
+ return;
247
+ }
248
+ const entries = [];
249
+ for (const tile of byElement.values()) {
250
+ if (tile.visible)
251
+ entries.push({ producerId: tile.producerId, widthPx: tile.widthPx });
252
+ }
253
+ room.setViewport(entries);
254
+ };
255
+ const intersection = new IntersectionObserver((observed) => {
256
+ for (const entry of observed) {
257
+ const tile = byElement.get(entry.target);
258
+ if (!tile)
259
+ continue;
260
+ tile.visible = entry.isIntersecting;
261
+ if (entry.isIntersecting)
262
+ tile.widthPx = Math.round(entry.boundingClientRect.width) || tile.widthPx;
263
+ }
264
+ report();
265
+ },
266
+ // A sliver of a tile at a page edge is not "rendering it".
267
+ { threshold: 0.05 });
268
+ const resize = new ResizeObserver((observed) => {
269
+ for (const entry of observed) {
270
+ const tile = byElement.get(entry.target);
271
+ if (!tile)
272
+ continue;
273
+ tile.widthPx = Math.round(entry.contentRect.width) || tile.widthPx;
274
+ }
275
+ report();
276
+ });
277
+ return { byElement, report, intersection, resize };
278
+ }, [room]);
279
+ (0, react_1.useEffect)(() => {
280
+ if (!internals || !room)
281
+ return undefined;
282
+ const onVisibility = () => internals.report();
283
+ document.addEventListener("visibilitychange", onVisibility);
284
+ return () => {
285
+ document.removeEventListener("visibilitychange", onVisibility);
286
+ internals.intersection.disconnect();
287
+ internals.resize.disconnect();
288
+ internals.byElement.clear();
289
+ // The tiles are gone with the component that rendered them; the room
290
+ // goes back to following the whole set rather than an empty viewport.
291
+ room.clearViewport();
292
+ };
293
+ }, [internals, room]);
294
+ const observeTile = (0, react_1.useCallback)((producerId) => (element) => {
295
+ if (!internals)
296
+ return;
297
+ if (element === null) {
298
+ for (const [el, tile] of internals.byElement) {
299
+ if (tile.producerId !== producerId)
300
+ continue;
301
+ internals.intersection.unobserve(el);
302
+ internals.resize.unobserve(el);
303
+ internals.byElement.delete(el);
304
+ }
305
+ internals.report();
306
+ return;
307
+ }
308
+ internals.byElement.set(element, {
309
+ producerId,
310
+ // Visible until the observer's first callback says otherwise: the
311
+ // pessimistic default would pause every tile for a beat on mount.
312
+ visible: true,
313
+ widthPx: Math.round(element.getBoundingClientRect().width) || 320,
314
+ });
315
+ internals.intersection.observe(element);
316
+ internals.resize.observe(element);
317
+ internals.report();
318
+ }, [internals]);
319
+ return { observeTile };
320
+ }
153
321
  /**
154
322
  * One remote track, and a ref callback that attaches it.
155
323
  *
@@ -170,20 +338,73 @@ function useRecording() {
170
338
  * renders one only after the track arrives, and every remote `<video>` is
171
339
  * `muted`, so a call had picture and no sound in either direction.
172
340
  *
173
- * Depending on `track` is what makes React re-run it: the identity changes when
174
- * the track appears, React calls the old callback with `null` and the new one
175
- * with the element. `MediaTrack` objects are created once per consumer and the
176
- * room's snapshot array is rebuilt only when a track changes, so this settles
177
- * rather than churning.
341
+ * ## Why the callback is STABLE, and an effect does the re-attaching
342
+ *
343
+ * The callback used to be memoised on `[track]`, so a new track identity made
344
+ * React run the OLD callback with `null` (which pauses the element and clears
345
+ * `srcObject`) and then the new one with the element. That is a black frame and
346
+ * a stall on the viewer's screen, and it fires for reasons that have nothing to
347
+ * do with the picture: the room's snapshot is rebuilt on every change, and a
348
+ * consumer that is closed and re-created (`syncSubscriptions` following the
349
+ * active set) produces a fresh `MediaTrack` for the SAME underlying
350
+ * `MediaStreamTrack`.
351
+ *
352
+ * So the ref callback is now stable - it mounts and unmounts, nothing else -
353
+ * and an effect assigns `srcObject` whenever the underlying track actually
354
+ * changes. `applied` is what makes that idempotent: assigning the same track
355
+ * again is not free, it restarts the element's load and shows as a flicker.
178
356
  */
179
357
  function useRemoteTrack(producerId) {
180
358
  const tracks = useRoomSnapshot(selectTracks, EMPTY_TRACKS);
181
359
  const track = tracks.find((t) => t.producerId === producerId);
360
+ const mediaTrack = track?.track ?? null;
361
+ // The element this callback last attached to, so DETACHING can undo it.
362
+ const attached = (0, react_1.useRef)(null);
363
+ // The `MediaStreamTrack` currently on that element. Compared by identity, so
364
+ // the same track arriving inside a new `MediaTrack` record is a no-op.
365
+ const applied = (0, react_1.useRef)(null);
366
+ // Read by the ref callback, which must not depend on the track (see above).
367
+ const latest = (0, react_1.useRef)(mediaTrack);
368
+ latest.current = mediaTrack;
182
369
  const attach = (0, react_1.useCallback)((element) => {
370
+ // React calls a ref callback with null when the element goes away, and
371
+ // ignoring that leaves a detached element holding the stream and still
372
+ // PLAYING it. Nothing on screen shows the orphan; you only hear it,
373
+ // as the same audio a second time, slightly out of step with itself.
374
+ // A remount is enough to cause it, and StrictMode remounts everything
375
+ // once in development, so this reproduced on every dev page load.
376
+ if (!element) {
377
+ const previous = attached.current;
378
+ attached.current = null;
379
+ applied.current = null;
380
+ if (previous) {
381
+ previous.pause();
382
+ previous.srcObject = null;
383
+ }
384
+ return;
385
+ }
386
+ // A newly mounted element is always written to, even with no track yet: an
387
+ // explicit `null` is what says "this element holds nothing", and skipping
388
+ // it would leave whatever a reused element was carrying.
389
+ const previousElement = attached.current;
390
+ attached.current = element;
391
+ if (previousElement === element && applied.current === latest.current)
392
+ return;
393
+ applied.current = latest.current;
394
+ element.srcObject = latest.current ? new MediaStream([latest.current]) : null;
395
+ }, []);
396
+ // The track almost never exists when the element mounts: the consume round
397
+ // trip lands milliseconds later. This is what puts it on the element then,
398
+ // and what swaps it if the consumer is ever rebuilt.
399
+ (0, react_1.useEffect)(() => {
400
+ const element = attached.current;
183
401
  if (!element)
184
402
  return;
185
- element.srcObject = track ? new MediaStream([track.track]) : null;
186
- }, [track]);
403
+ if (applied.current === mediaTrack)
404
+ return;
405
+ applied.current = mediaTrack;
406
+ element.srcObject = mediaTrack ? new MediaStream([mediaTrack]) : null;
407
+ }, [mediaTrack]);
187
408
  return { track, attach };
188
409
  }
189
410
  const NOTHING_PENDING = { camera: false, microphone: false, screen: false };
@@ -196,6 +417,23 @@ const selectLostSources = (room) => room.lostPublicationSources;
196
417
  * BROWSER concern with a UI consequence - a denied prompt is something a person
197
418
  * has to be told about - and the room has no way to say so.
198
419
  */
420
+ /**
421
+ * The camera ask: 720p wanted, nothing REQUIRED.
422
+ *
423
+ * Without constraints the browser answers `getUserMedia({ video: true })`
424
+ * with 640x480 - the health panel caught a whole call whose "full" layer
425
+ * was SD 4:3 because of exactly this line. `ideal` rather than `exact`/`min`
426
+ * on purpose: a laptop whose camera tops out lower must still join the call,
427
+ * not be refused with OverconstrainedError over a resolution.
428
+ */
429
+ function cameraConstraints(deviceId) {
430
+ return {
431
+ width: { ideal: 1280 },
432
+ height: { ideal: 720 },
433
+ frameRate: { ideal: 30 },
434
+ ...(deviceId ? { deviceId: { exact: deviceId } } : {}),
435
+ };
436
+ }
199
437
  function useLocalMedia() {
200
438
  const { room } = useRoomContext();
201
439
  const [error, setError] = (0, react_1.useState)(undefined);
@@ -261,7 +499,7 @@ function useLocalMedia() {
261
499
  * screen share when the person ticks "share audio", and only one track is
262
500
  * published).
263
501
  */
264
- const publish = (0, react_1.useCallback)(async (source) => exclusively(source, async () => {
502
+ const publish = (0, react_1.useCallback)(async (source, options) => exclusively(source, async () => {
265
503
  if (!room)
266
504
  return;
267
505
  setError(undefined);
@@ -270,12 +508,14 @@ function useLocalMedia() {
270
508
  try {
271
509
  const stream = source === "screen"
272
510
  ? await navigator.mediaDevices.getDisplayMedia({ video: true })
273
- : await navigator.mediaDevices.getUserMedia(source === "camera" ? { video: true } : { audio: true });
511
+ : await navigator.mediaDevices.getUserMedia(source === "camera"
512
+ ? { video: cameraConstraints(options?.deviceId) }
513
+ : { audio: options?.deviceId ? { deviceId: { exact: options.deviceId } } : true });
274
514
  captured = stream.getTracks();
275
515
  const track = captured[0];
276
516
  if (!track)
277
517
  throw new Error(`no ${source} track was captured`);
278
- await room.publish(track, source);
518
+ await room.publish(track, source, options?.simulcast && source === "camera" ? { simulcast: true } : {});
279
519
  published = track;
280
520
  }
281
521
  catch (err) {
@@ -290,6 +530,37 @@ function useLocalMedia() {
290
530
  }
291
531
  }
292
532
  }), [room, exclusively]);
533
+ // Same lock as publish: a switch pressed twice must not open two captures,
534
+ // and a switch racing a publish must not replace a track that is not there
535
+ // yet. The new capture is owned here until `replaceTrack` takes it.
536
+ const switchDevice = (0, react_1.useCallback)(async (source, deviceId) => exclusively(source, async () => {
537
+ if (!room)
538
+ return;
539
+ const publication = room.localPublications.find((p) => p.source === source);
540
+ if (!publication)
541
+ return;
542
+ setError(undefined);
543
+ let captured = [];
544
+ let handedOver;
545
+ try {
546
+ const stream = await navigator.mediaDevices.getUserMedia(source === "camera" ? { video: cameraConstraints(deviceId) } : { audio: { deviceId: { exact: deviceId } } });
547
+ captured = stream.getTracks();
548
+ const track = captured[0];
549
+ if (!track)
550
+ throw new Error(`no ${source} track was captured`);
551
+ await room.replaceTrack(publication.producerId, track);
552
+ handedOver = track;
553
+ }
554
+ catch (err) {
555
+ setError(err instanceof Error ? err : new Error(String(err)));
556
+ }
557
+ finally {
558
+ for (const track of captured) {
559
+ if (track !== handedOver)
560
+ track.stop();
561
+ }
562
+ }
563
+ }), [room, exclusively]);
293
564
  // Under the same lock as `publish`, because the pair is what a toggle
294
565
  // alternates between: a stop pressed while a start is still capturing would
295
566
  // otherwise find no publication to close and leave the capture that lands a
@@ -311,9 +582,10 @@ function useLocalMedia() {
311
582
  }
312
583
  }), [room, exclusively]);
313
584
  return {
314
- publishCamera: (0, react_1.useCallback)(() => publish("camera"), [publish]),
315
- publishMicrophone: (0, react_1.useCallback)(() => publish("microphone"), [publish]),
585
+ publishCamera: (0, react_1.useCallback)((options) => publish("camera", options), [publish]),
586
+ publishMicrophone: (0, react_1.useCallback)((options) => publish("microphone", options), [publish]),
316
587
  publishScreen: (0, react_1.useCallback)(() => publish("screen"), [publish]),
588
+ switchDevice,
317
589
  unpublish,
318
590
  setPaused,
319
591
  isCameraEnabled: has("camera"),
@@ -337,6 +609,11 @@ const EMPTY_STATE = {
337
609
  peers: [],
338
610
  producers: [],
339
611
  activeSpeakers: [],
612
+ activeAudio: [],
613
+ activeVideo: [],
614
+ speakers: [],
615
+ activeSetEnforced: false,
616
+ raisedHands: [],
340
617
  recording: false,
341
618
  subscribeRule: null,
342
619
  draining: null,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"browserDevice.d.ts","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,WAAW,EAOZ,MAAM,UAAU,CAAC;AAsClB,wBAAgB,mBAAmB,IAAI,WAAW,CA8DjD"}
1
+ {"version":3,"file":"browserDevice.d.ts","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,WAAW,EAOZ,MAAM,UAAU,CAAC;AAgDlB,wBAAgB,mBAAmB,IAAI,WAAW,CA8DjD"}
@@ -15,13 +15,22 @@ const mediasoup_client_1 = require("mediasoup-client");
15
15
  * This file is deliberately dull. If it grows logic, that logic is in the wrong
16
16
  * place.
17
17
  */
18
- const adapt = (transport) => ({
18
+ const CODEC_MIME = { h264: "video/h264", vp8: "video/vp8" };
19
+ const adapt = (transport, device) => ({
19
20
  id: transport.id,
20
- async produce({ track, appData, encodings }) {
21
+ async produce({ track, appData, encodings, codec }) {
22
+ // The router's own entry for the codec, which is what mediasoup-client
23
+ // wants rather than a name. Missing means the router does not offer it
24
+ // and the default applies, which the caller can see from the producer.
25
+ const wanted = codec ? CODEC_MIME[codec] : undefined;
26
+ const capability = wanted
27
+ ? device.rtpCapabilities.codecs?.find((c) => c.mimeType.toLowerCase() === wanted)
28
+ : undefined;
21
29
  const producer = await transport.produce({
22
30
  track,
23
31
  ...(encodings ? { encodings: encodings } : {}),
24
32
  ...(appData ? { appData } : {}),
33
+ ...(capability ? { codec: capability } : {}),
25
34
  });
26
35
  return producer;
27
36
  },
@@ -82,12 +91,12 @@ function createBrowserDevice() {
82
91
  createSendTransport({ description, iceServers, handlers }) {
83
92
  const transport = device.createSendTransport(common(description, iceServers));
84
93
  wire(transport, handlers);
85
- return adapt(transport);
94
+ return adapt(transport, device);
86
95
  },
87
96
  createRecvTransport({ description, iceServers, handlers }) {
88
97
  const transport = device.createRecvTransport(common(description, iceServers));
89
98
  wire(transport, handlers);
90
- return adapt(transport);
99
+ return adapt(transport, device);
91
100
  },
92
101
  };
93
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browserDevice.js","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserDevice.js","sourceRoot":"","sources":["../../src/room/browserDevice.ts"],"names":[],"mappings":"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"}