@fishjam-cloud/react-client 0.10.1 → 0.11.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 (70) hide show
  1. package/LICENSE.txt +201 -0
  2. package/dist/FishjamProvider.d.ts +43 -0
  3. package/dist/FishjamProvider.d.ts.map +1 -0
  4. package/dist/{fishjamProvider.js → FishjamProvider.js} +17 -15
  5. package/dist/devices/DeviceManager.d.ts +2 -2
  6. package/dist/devices/DeviceManager.d.ts.map +1 -1
  7. package/dist/devices/DeviceManager.js +5 -5
  8. package/dist/devices/mediaInitializer.d.ts.map +1 -1
  9. package/dist/devices/mediaInitializer.js +1 -1
  10. package/dist/hooks/devices/useCamera.d.ts +44 -2
  11. package/dist/hooks/devices/useCamera.d.ts.map +1 -1
  12. package/dist/hooks/devices/useCamera.js +13 -2
  13. package/dist/hooks/devices/useInitializeDevices.d.ts +14 -3
  14. package/dist/hooks/devices/useInitializeDevices.d.ts.map +1 -1
  15. package/dist/hooks/devices/useInitializeDevices.js +6 -6
  16. package/dist/hooks/devices/useMicrophone.d.ts +46 -2
  17. package/dist/hooks/devices/useMicrophone.d.ts.map +1 -1
  18. package/dist/hooks/devices/useMicrophone.js +15 -2
  19. package/dist/hooks/internal/device/useDeviceApi.d.ts +2 -4
  20. package/dist/hooks/internal/device/useDeviceApi.d.ts.map +1 -1
  21. package/dist/hooks/internal/device/useDeviceApi.js +16 -22
  22. package/dist/hooks/internal/device/useDeviceManager.d.ts +1 -1
  23. package/dist/hooks/internal/device/useDeviceManager.d.ts.map +1 -1
  24. package/dist/hooks/internal/device/useDeviceManager.js +2 -2
  25. package/dist/hooks/internal/useFishjamClientState.d.ts +1 -1
  26. package/dist/hooks/internal/useFishjamClientState.d.ts.map +1 -1
  27. package/dist/hooks/internal/useFishjamClient_DO_NOT_USE.d.ts.map +1 -1
  28. package/dist/hooks/internal/useFishjamClient_DO_NOT_USE.js +1 -1
  29. package/dist/hooks/internal/useFishjamContext.d.ts +4 -3
  30. package/dist/hooks/internal/useFishjamContext.d.ts.map +1 -1
  31. package/dist/hooks/internal/usePeerStatus.d.ts.map +1 -1
  32. package/dist/hooks/internal/usePeerStatus.js +2 -0
  33. package/dist/hooks/internal/useReconnection.d.ts.map +1 -1
  34. package/dist/hooks/internal/useScreenshareManager.d.ts +10 -0
  35. package/dist/hooks/internal/useScreenshareManager.d.ts.map +1 -0
  36. package/dist/hooks/internal/useScreenshareManager.js +114 -0
  37. package/dist/hooks/internal/useTrackManager.d.ts +3 -3
  38. package/dist/hooks/internal/useTrackManager.d.ts.map +1 -1
  39. package/dist/hooks/internal/useTrackManager.js +13 -36
  40. package/dist/hooks/useConnection.d.ts +30 -10
  41. package/dist/hooks/useConnection.d.ts.map +1 -1
  42. package/dist/hooks/useConnection.js +10 -3
  43. package/dist/hooks/usePeers.d.ts +31 -11
  44. package/dist/hooks/usePeers.d.ts.map +1 -1
  45. package/dist/hooks/usePeers.js +7 -5
  46. package/dist/hooks/useScreenShare.d.ts +46 -10
  47. package/dist/hooks/useScreenShare.d.ts.map +1 -1
  48. package/dist/hooks/useScreenShare.js +3 -121
  49. package/dist/hooks/useUpdatePeerMetadata.d.ts +6 -0
  50. package/dist/hooks/useUpdatePeerMetadata.d.ts.map +1 -1
  51. package/dist/hooks/useUpdatePeerMetadata.js +6 -0
  52. package/dist/hooks/useVAD.d.ts +6 -0
  53. package/dist/hooks/useVAD.d.ts.map +1 -1
  54. package/dist/hooks/useVAD.js +10 -4
  55. package/dist/index.d.ts +10 -11
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +5 -4
  58. package/dist/types/internal.d.ts +4 -24
  59. package/dist/types/internal.d.ts.map +1 -1
  60. package/dist/types/public.d.ts +17 -31
  61. package/dist/types/public.d.ts.map +1 -1
  62. package/dist/utils/bandwidth.d.ts.map +1 -1
  63. package/dist/utils/localStorage.d.ts +1 -1
  64. package/dist/utils/localStorage.d.ts.map +1 -1
  65. package/dist/utils/track.d.ts.map +1 -1
  66. package/dist/utils/track.js +0 -1
  67. package/package.json +10 -10
  68. package/readme.md +8 -8
  69. package/dist/fishjamProvider.d.ts +0 -17
  70. package/dist/fishjamProvider.d.ts.map +0 -1
@@ -1,14 +1,50 @@
1
- import type { FishjamClient } from "@fishjam-cloud/ts-client";
2
- import type { ScreenshareApi, PeerStatus } from "../types/public";
3
- interface ScreenShareManagerProps {
4
- fishjamClient: FishjamClient;
5
- getCurrentPeerStatus: () => PeerStatus;
6
- }
1
+ import type { TracksMiddleware } from "../types/public";
7
2
  /**
8
3
  *
9
- * @category Screenshare
4
+ * @category Devices
5
+ * @group Types
10
6
  */
11
- export declare const useScreenShareManager: ({ fishjamClient, getCurrentPeerStatus, }: ScreenShareManagerProps) => ScreenshareApi;
12
- export declare const useScreenShare: () => ScreenshareApi;
13
- export {};
7
+ export type UseScreenshareResult = {
8
+ /**
9
+ * Invokes the screen sharing prompt in the user's browser and starts streaming upon approval.
10
+ */
11
+ startStreaming: (props?: {
12
+ audioConstraints?: boolean | MediaTrackConstraints;
13
+ videoConstraints?: boolean | MediaTrackConstraints;
14
+ }) => Promise<void>;
15
+ /**
16
+ * Stops the stream and cancels browser screen sharing.
17
+ */
18
+ stopStreaming: () => Promise<void>;
19
+ /**
20
+ * The MediaStream object containing both tracks.
21
+ */
22
+ stream: MediaStream | null;
23
+ /**
24
+ * The separate video MediaStreamTrack.
25
+ */
26
+ videoTrack: MediaStreamTrack | null;
27
+ /**
28
+ * The separate audio MediaStreamTrack.
29
+ */
30
+ audioTrack: MediaStreamTrack | null;
31
+ /**
32
+ * The middleware currently assigned to process the tracks.
33
+ * A screenshare may include both audio and video tracks, and this middleware is capable of processing
34
+ * each track type.
35
+ */
36
+ currentTracksMiddleware: TracksMiddleware | null;
37
+ /**
38
+ * Sets the middleware responsible for processing the tracks.
39
+ * @param middleware The middleware to set, which can be a TracksMiddleware instance or null to remove the middleware.
40
+ * @returns A Promise that resolves once the middleware is successfully set.
41
+ */
42
+ setTracksMiddleware: (middleware: TracksMiddleware | null) => Promise<void>;
43
+ };
44
+ /**
45
+ * Hook to enable screen sharing within a room and manage the existing stream.
46
+ * @category Devices
47
+ * @group Hooks
48
+ */
49
+ export declare const useScreenShare: () => UseScreenshareResult;
14
50
  //# sourceMappingURL=useScreenShare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAoB,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIpF,UAAU,uBAAuB;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB,EAAE,MAAM,UAAU,CAAC;CACxC;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,6CAG/B,uBAAuB,KAAG,cAwI5B,CAAC;AAEF,eAAO,MAAM,cAAc,sBAI1B,CAAC"}
1
+ {"version":3,"file":"useScreenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/useScreenShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE;QACvB,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;QACnD,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;KACpD,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB;;OAEG;IACH,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjD;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,4BAI1B,CAAC"}
@@ -1,128 +1,10 @@
1
- import { useCallback, useEffect, useRef, useState } from "react";
2
- import { getRemoteOrLocalTrack } from "../utils/track";
3
1
  import { useFishjamContext } from "./internal/useFishjamContext";
4
2
  /**
5
- *
6
- * @category Screenshare
3
+ * Hook to enable screen sharing within a room and manage the existing stream.
4
+ * @category Devices
5
+ * @group Hooks
7
6
  */
8
- export const useScreenShareManager = ({ fishjamClient, getCurrentPeerStatus, }) => {
9
- const [state, setState] = useState({ stream: null, trackIds: null });
10
- const cleanMiddlewareFnRef = useRef(null);
11
- const stream = state.stream ?? null;
12
- const [videoTrack, audioTrack] = stream ? getTracksFromStream(stream) : [null, null];
13
- const getDisplayName = () => {
14
- const name = fishjamClient.getLocalPeer()?.metadata?.peer?.displayName;
15
- if (typeof name === "string")
16
- return name;
17
- };
18
- const startStreaming = async (props) => {
19
- const stream = await navigator.mediaDevices.getDisplayMedia({
20
- video: props?.videoConstraints ?? true,
21
- audio: props?.audioConstraints ?? true,
22
- });
23
- const displayName = getDisplayName();
24
- let [video, audio] = getTracksFromStream(stream);
25
- if (state.tracksMiddleware) {
26
- const { videoTrack, audioTrack, onClear } = state.tracksMiddleware(video, audio);
27
- video = videoTrack;
28
- audio = audioTrack;
29
- cleanMiddlewareFnRef.current = onClear;
30
- }
31
- const addTrackPromises = [fishjamClient.addTrack(video, { displayName, type: "screenShareVideo", paused: false })];
32
- if (audio)
33
- addTrackPromises.push(fishjamClient.addTrack(audio, { displayName, type: "screenShareAudio", paused: false }));
34
- const [videoId, audioId] = await Promise.all(addTrackPromises);
35
- setState({ stream, trackIds: { videoId, audioId } });
36
- };
37
- const replaceTracks = async (newVideoTrack, newAudioTrack) => {
38
- if (!state?.stream)
39
- return;
40
- const addTrackPromises = [fishjamClient.replaceTrack(state.trackIds.videoId, newVideoTrack)];
41
- if (newAudioTrack && state.trackIds.audioId) {
42
- addTrackPromises.push(fishjamClient.replaceTrack(state.trackIds.audioId, newAudioTrack));
43
- }
44
- await Promise.all(addTrackPromises);
45
- };
46
- const cleanMiddleware = useCallback(() => {
47
- cleanMiddlewareFnRef.current?.();
48
- cleanMiddlewareFnRef.current = null;
49
- }, []);
50
- const setTracksMiddleware = async (middleware) => {
51
- if (!state?.stream)
52
- return;
53
- const [video, audio] = getTracksFromStream(state.stream);
54
- cleanMiddleware();
55
- const { videoTrack, audioTrack, onClear } = middleware?.(video, audio) ?? {
56
- videoTrack: video,
57
- audioTrack: audio,
58
- onClear: null,
59
- };
60
- cleanMiddlewareFnRef.current = onClear;
61
- await replaceTracks(videoTrack, audioTrack);
62
- };
63
- const stopStreaming = useCallback(async () => {
64
- if (!state.stream) {
65
- console.warn("No stream to stop");
66
- return;
67
- }
68
- const [video, audio] = getTracksFromStream(state.stream);
69
- video.stop();
70
- if (audio)
71
- audio.stop();
72
- if (getCurrentPeerStatus() === "connected") {
73
- const removeTrackPromises = [fishjamClient.removeTrack(state.trackIds.videoId)];
74
- if (state.trackIds.audioId)
75
- removeTrackPromises.push(fishjamClient.removeTrack(state.trackIds.audioId));
76
- await Promise.all(removeTrackPromises);
77
- }
78
- cleanMiddleware();
79
- setState(({ tracksMiddleware }) => ({ stream: null, trackIds: null, tracksMiddleware }));
80
- }, [state, fishjamClient, setState, cleanMiddleware, getCurrentPeerStatus]);
81
- useEffect(() => {
82
- if (!state.stream)
83
- return;
84
- const [video, audio] = getTracksFromStream(state.stream);
85
- const trackEndedHandler = () => {
86
- stopStreaming();
87
- };
88
- video.addEventListener("ended", trackEndedHandler);
89
- audio?.addEventListener("ended", trackEndedHandler);
90
- return () => {
91
- video.removeEventListener("ended", trackEndedHandler);
92
- audio?.removeEventListener("ended", trackEndedHandler);
93
- };
94
- }, [state, stopStreaming]);
95
- useEffect(() => {
96
- const onDisconnected = () => {
97
- if (stream) {
98
- stopStreaming();
99
- }
100
- };
101
- fishjamClient.on("disconnected", onDisconnected);
102
- return () => {
103
- fishjamClient.removeListener("disconnected", onDisconnected);
104
- };
105
- }, [stopStreaming, fishjamClient, stream]);
106
- const videoBroadcast = state.stream ? getRemoteOrLocalTrack(fishjamClient, state.trackIds.videoId) : null;
107
- const audioBroadcast = state.trackIds?.audioId ? getRemoteOrLocalTrack(fishjamClient, state.trackIds.audioId) : null;
108
- return {
109
- startStreaming,
110
- stopStreaming,
111
- stream,
112
- videoTrack,
113
- audioTrack,
114
- videoBroadcast,
115
- audioBroadcast,
116
- setTracksMiddleware,
117
- currentTracksMiddleware: state?.tracksMiddleware ?? null,
118
- };
119
- };
120
7
  export const useScreenShare = () => {
121
8
  const { screenShareManager } = useFishjamContext();
122
9
  return screenShareManager;
123
10
  };
124
- const getTracksFromStream = (stream) => {
125
- const video = stream.getVideoTracks()[0];
126
- const audio = stream.getAudioTracks()[0] ?? null;
127
- return [video, audio];
128
- };
@@ -1,4 +1,10 @@
1
1
  import type { GenericMetadata } from "@fishjam-cloud/ts-client";
2
+ /**
3
+ * Hook provides a method to update the metadata of the local peer.
4
+ * @category Connection
5
+ * @group Hooks
6
+ * @returns
7
+ */
2
8
  export declare const useUpdatePeerMetadata: <PeerMetadata extends GenericMetadata = GenericMetadata>() => {
3
9
  updatePeerMetadata: (peerMetadata: PeerMetadata) => void;
4
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useUpdatePeerMetadata.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdatePeerMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,eAAO,MAAM,qBAAqB,GAAI,YAAY,SAAS,eAAe;uCAIvD,YAAY;CAO9B,CAAC"}
1
+ {"version":3,"file":"useUpdatePeerMetadata.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdatePeerMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAKhE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,SAAS,eAAe;uCAIvD,YAAY;CAO9B,CAAC"}
@@ -1,5 +1,11 @@
1
1
  import { useCallback } from "react";
2
2
  import { useFishjamContext } from "./internal/useFishjamContext";
3
+ /**
4
+ * Hook provides a method to update the metadata of the local peer.
5
+ * @category Connection
6
+ * @group Hooks
7
+ * @returns
8
+ */
3
9
  export const useUpdatePeerMetadata = () => {
4
10
  const { fishjamClientRef } = useFishjamContext();
5
11
  const updatePeerMetadata = useCallback((peerMetadata) => {
@@ -1,3 +1,9 @@
1
1
  import type { PeerId } from "../types/internal";
2
+ /**
3
+ * @param peerIds List of ids of peers to subscribe to for voice activity detection notifications.
4
+ * @category Connection
5
+ * @group Hooks
6
+ * @returns Each key is a peerId and the boolean value indicates if voice activity is currently detected for that peer.
7
+ */
2
8
  export declare const useVAD: (peerIds: PeerId[]) => Record<PeerId, boolean>;
3
9
  //# sourceMappingURL=useVAD.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useVAD.d.ts","sourceRoot":"","sources":["../../src/hooks/useVAD.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAKzD,eAAO,MAAM,MAAM,YAAa,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA6DhE,CAAC"}
1
+ {"version":3,"file":"useVAD.d.ts","sourceRoot":"","sources":["../../src/hooks/useVAD.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAIzD;;;;;GAKG;AACH,eAAO,MAAM,MAAM,YAAa,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAgEhE,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import { useEffect, useMemo, useState } from "react";
2
- import { useFishjamContext } from "./internal/useFishjamContext";
3
2
  import { useFishjamClientState } from "./internal/useFishjamClientState";
3
+ import { useFishjamContext } from "./internal/useFishjamContext";
4
+ /**
5
+ * @param peerIds List of ids of peers to subscribe to for voice activity detection notifications.
6
+ * @category Connection
7
+ * @group Hooks
8
+ * @returns Each key is a peerId and the boolean value indicates if voice activity is currently detected for that peer.
9
+ */
4
10
  export const useVAD = (peerIds) => {
5
11
  const { fishjamClientRef } = useFishjamContext();
6
12
  const { peers } = useFishjamClientState(fishjamClientRef.current);
@@ -10,9 +16,9 @@ export const useVAD = (peerIds) => {
10
16
  peerId: peer.id,
11
17
  microphoneTracks: Array.from(peer.tracks.values()).filter(({ metadata }) => metadata?.type === "microphone"),
12
18
  })), [peers, peerIds]);
13
- const getDefaultVadStatuses = () => micTracksWithSelectedPeerIds.reduce((acc, peer) => ({
14
- ...acc,
15
- [peer.peerId]: peer.microphoneTracks.reduce((acc, track) => ({ ...acc, [track.trackId]: track.vadStatus }), {}),
19
+ const getDefaultVadStatuses = () => micTracksWithSelectedPeerIds.reduce((mappedTracks, peer) => ({
20
+ ...mappedTracks,
21
+ [peer.peerId]: peer.microphoneTracks.reduce((vadStatuses, track) => ({ ...vadStatuses, [track.trackId]: track.vadStatus }), {}),
16
22
  }), {});
17
23
  const [_vadStatuses, setVadStatuses] = useState(getDefaultVadStatuses);
18
24
  useEffect(() => {
package/dist/index.d.ts CHANGED
@@ -1,14 +1,13 @@
1
- export type { JoinRoomConfig } from "./hooks/useConnection";
2
- export type { PeerWithTracks } from "./hooks/usePeers";
3
- export { useConnection } from "./hooks/useConnection";
4
- export { usePeers } from "./hooks/usePeers";
5
- export { useCamera } from "./hooks/devices/useCamera";
6
- export { useMicrophone } from "./hooks/devices/useMicrophone";
7
- export { useInitializeDevices } from "./hooks/devices/useInitializeDevices";
8
- export { useScreenShare } from "./hooks/useScreenShare";
1
+ export { FishjamProvider, type FishjamProviderProps } from "./FishjamProvider";
2
+ export { useCamera, type UseCameraResult } from "./hooks/devices/useCamera";
3
+ export { useInitializeDevices, type UseInitializeDevicesResult } from "./hooks/devices/useInitializeDevices";
4
+ export { useMicrophone, type UseMicrophoneResult } from "./hooks/devices/useMicrophone";
5
+ export { type JoinRoomConfig, useConnection, type UseConnectionResult } from "./hooks/useConnection";
6
+ export { type PeerWithTracks, usePeers, type UsePeersResult } from "./hooks/usePeers";
7
+ export { useScreenShare, type UseScreenshareResult } from "./hooks/useScreenShare";
9
8
  export { useUpdatePeerMetadata } from "./hooks/useUpdatePeerMetadata";
10
9
  export { useVAD } from "./hooks/useVAD";
11
- export { FishjamProvider } from "./fishjamProvider";
12
- export type { Track, TrackMiddleware, TracksMiddleware, PeerStatus, Device, PersistLastDeviceHandlers, ScreenshareApi, StartStreamingProps, DeviceType, } from "./types/public";
13
- export type { Peer, MessageEvents, CreateConfig, TrackBandwidthLimit, SimulcastBandwidthLimit, BandwidthLimit, TrackContextEvents, SimulcastConfig, TrackContext, VadStatus, EncodingReason, AuthErrorReason, Variant, } from "@fishjam-cloud/ts-client";
10
+ export type { DeviceItem, PeerStatus, PersistLastDeviceHandlers, StreamConfig, Track, TrackMiddleware, TracksMiddleware, } from "./types/public";
11
+ export type { AuthErrorReason, Metadata, ReconnectConfig, ReconnectionStatus, SimulcastBandwidthLimit, SimulcastConfig, TrackBandwidthLimit, } from "@fishjam-cloud/ts-client";
12
+ export { Variant } from "@fishjam-cloud/ts-client";
14
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,YAAY,EACV,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,yBAAyB,EACzB,cAAc,EACd,mBAAmB,EACnB,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,SAAS,EACT,cAAc,EACd,eAAe,EACf,OAAO,GACR,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,KAAK,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,KAAK,cAAc,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,YAAY,EACV,UAAU,EACV,UAAU,EACV,yBAAyB,EACzB,YAAY,EACZ,KAAK,EACL,eAAe,EACf,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,eAAe,EACf,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
- export { useConnection } from "./hooks/useConnection";
2
- export { usePeers } from "./hooks/usePeers";
1
+ export { FishjamProvider } from "./FishjamProvider";
3
2
  export { useCamera } from "./hooks/devices/useCamera";
4
- export { useMicrophone } from "./hooks/devices/useMicrophone";
5
3
  export { useInitializeDevices } from "./hooks/devices/useInitializeDevices";
4
+ export { useMicrophone } from "./hooks/devices/useMicrophone";
5
+ export { useConnection } from "./hooks/useConnection";
6
+ export { usePeers } from "./hooks/usePeers";
6
7
  export { useScreenShare } from "./hooks/useScreenShare";
7
8
  export { useUpdatePeerMetadata } from "./hooks/useUpdatePeerMetadata";
8
9
  export { useVAD } from "./hooks/useVAD";
9
- export { FishjamProvider } from "./fishjamProvider";
10
+ export { Variant } from "@fishjam-cloud/ts-client";
@@ -1,19 +1,13 @@
1
- import type { StartStreamingProps, Track, TrackMiddleware, TracksMiddleware, DeviceType } from "./public";
2
- import type { Peer } from "@fishjam-cloud/ts-client";
1
+ import type { DeviceType, Track, TrackMiddleware, TracksMiddleware } from "./public";
3
2
  export type TrackId = string;
4
3
  export type PeerId = string;
5
- export type PeerState<P, S> = {
6
- id: PeerId;
7
- metadata?: Peer<P, S>["metadata"];
8
- tracks: Track[];
9
- };
10
4
  export type DevicesStatus = "OK" | "Error" | "Not requested" | "Requesting";
11
5
  export type MediaStatus = "OK" | "Error" | "Not requested" | "Requesting";
12
6
  export type DeviceManagerStatus = "uninitialized" | "initializing" | "initialized" | "error";
13
7
  export interface DeviceManagerState {
14
8
  deviceState: DeviceState;
15
- status: DeviceManagerStatus;
16
- type: DeviceType;
9
+ deviceStatus: DeviceManagerStatus;
10
+ deviceType: DeviceType;
17
11
  }
18
12
  export type Media = {
19
13
  stream: MediaStream | null;
@@ -69,17 +63,9 @@ export type ScreenShareState = ({
69
63
  tracksMiddleware?: TracksMiddleware | null;
70
64
  };
71
65
  export interface TrackManager {
72
- initialize: (deviceId?: string) => Promise<void>;
73
- stop: () => void;
74
- startStreaming: (startStreamingProps?: StartStreamingProps) => Promise<string>;
75
- stopStreaming: () => Promise<void>;
76
- pauseStreaming: () => Promise<void>;
77
- resumeStreaming: () => Promise<void>;
66
+ selectDevice: (deviceId?: string) => Promise<void>;
78
67
  paused: boolean;
79
- disableTrack: () => void;
80
- enableTrack: () => void;
81
68
  setTrackMiddleware: (middleware: TrackMiddleware | null) => Promise<void>;
82
- refreshStreamedTrack: () => Promise<void>;
83
69
  currentTrack: Track | null;
84
70
  /**
85
71
  * Either enables or disables the stream.
@@ -99,10 +85,4 @@ export interface TrackManager {
99
85
  */
100
86
  toggleDevice: () => Promise<void>;
101
87
  }
102
- export type DistinguishedTracks = {
103
- cameraTrack?: Track;
104
- microphoneTrack?: Track;
105
- screenShareVideoTrack?: Track;
106
- screenShareAudioTrack?: Track;
107
- };
108
88
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
- import type { SimulcastConfig, TrackMetadata, VadStatus, Variant } from "@fishjam-cloud/ts-client";
2
- import type { DeviceError, DeviceManagerStatus, TrackId, TrackManager } from "./internal";
1
+ import type { SimulcastConfig, TrackMetadata, Variant } from "@fishjam-cloud/ts-client";
2
+ import type { DeviceError, DeviceManagerStatus, TrackId } from "./internal";
3
3
  export type Track = {
4
4
  stream: MediaStream | null;
5
5
  encoding: Variant | null;
6
6
  trackId: TrackId;
7
7
  metadata?: TrackMetadata;
8
8
  simulcastConfig: SimulcastConfig | null;
9
- vadStatus: VadStatus;
10
9
  track: MediaStreamTrack | null;
11
10
  };
12
11
  export type TrackMiddleware = ((track: MediaStreamTrack) => {
@@ -21,49 +20,36 @@ export type TracksMiddleware = (videoTrack: MediaStreamTrack, audioTrack: MediaS
21
20
  /**
22
21
  * Represents the possible statuses of a peer connection.
23
22
  *
24
- * idle - Peer is not connected, either never connected or successfully disconnected.
25
- * connecting - Peer is in the process of connecting.
26
- * connected - Peer has successfully connected.
27
- * error - There was an error in the connection process.
23
+ * - `idle` - Peer is not connected, either never connected or successfully disconnected.
24
+ * - `connecting` - Peer is in the process of connecting.
25
+ * - `connected` - Peer has successfully connected.
26
+ * - `error` - There was an error in the connection process.
28
27
  */
29
28
  export type PeerStatus = "connecting" | "connected" | "error" | "idle";
29
+ export type DeviceItem = {
30
+ deviceId: string;
31
+ label: string;
32
+ };
30
33
  export type Device = {
31
- isStreaming: boolean;
32
- status: DeviceManagerStatus;
33
- trackId: TrackId | null;
34
- track: MediaStreamTrack | null;
35
- stream: MediaStream | null;
36
- devices: MediaDeviceInfo[];
37
- activeDevice: MediaDeviceInfo | null;
34
+ deviceStatus: DeviceManagerStatus;
35
+ mediaStream: MediaStream | null;
36
+ mediaStreamTrack: MediaStreamTrack | null;
37
+ devices: DeviceItem[];
38
+ activeDevice: DeviceItem | null;
38
39
  currentMiddleware: TrackMiddleware;
39
40
  deviceError: DeviceError | null;
40
41
  isMuted: boolean;
41
- isDeviceEnabled: boolean;
42
- } & Omit<TrackManager, "currentTrack">;
42
+ };
43
43
  export type PersistLastDeviceHandlers = {
44
44
  getLastDevice: () => MediaDeviceInfo | null;
45
45
  saveLastDevice: (info: MediaDeviceInfo) => void;
46
46
  };
47
- export type ScreenshareApi = {
48
- startStreaming: (props?: {
49
- audioConstraints?: boolean | MediaTrackConstraints;
50
- videoConstraints?: boolean | MediaTrackConstraints;
51
- }) => Promise<void>;
52
- stopStreaming: () => Promise<void>;
53
- stream: MediaStream | null;
54
- videoTrack: MediaStreamTrack | null;
55
- audioTrack: MediaStreamTrack | null;
56
- videoBroadcast: Track | null;
57
- audioBroadcast: Track | null;
58
- setTracksMiddleware: (middleware: TracksMiddleware | null) => Promise<void>;
59
- currentTracksMiddleware: TracksMiddleware | null;
60
- };
61
47
  export type SimulcastBandwidthLimits = {
62
48
  [Variant.VARIANT_LOW]: number;
63
49
  [Variant.VARIANT_MEDIUM]: number;
64
50
  [Variant.VARIANT_HIGH]: number;
65
51
  };
66
- export type StartStreamingProps = {
52
+ export type StreamConfig = {
67
53
  simulcast?: Variant[] | false;
68
54
  };
69
55
  export type BandwidthLimits = {
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/types/public.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/types/public.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC;AAEtH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAChC;IAAE,UAAU,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAEhG;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvE,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,MAAM,GAAG;IACnB,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,eAAe,CAAC;IACnC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,eAAe,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bandwidth.d.ts","sourceRoot":"","sources":["../../src/utils/bandwidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,eAAO,MAAM,sBAAsB,8EAA+E,CAAC;AAEnH,eAAO,MAAM,gCAAgC,YAAa,OAAO,CAAC,eAAe,CAAC,KAAG,eAGnF,CAAC"}
1
+ {"version":3,"file":"bandwidth.d.ts","sourceRoot":"","sources":["../../src/utils/bandwidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,eAAO,MAAM,sBAAsB,8EAA+E,CAAC;AAEnH,eAAO,MAAM,gCAAgC,YAAa,OAAO,CAAC,eAAe,CAAC,KAAG,eAGnF,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { PersistLastDeviceHandlers, DeviceType } from "../types/public";
1
+ import type { DeviceType, PersistLastDeviceHandlers } from "../types/public";
2
2
  export declare function createStorageConfig(deviceType: DeviceType, storage?: boolean | PersistLastDeviceHandlers): PersistLastDeviceHandlers | null;
3
3
  //# sourceMappingURL=localStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localStorage.d.ts","sourceRoot":"","sources":["../../src/utils/localStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7E,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,OAAO,GAAG,yBAAyB,GAC5C,yBAAyB,GAAG,IAAI,CAIlC"}
1
+ {"version":3,"file":"localStorage.d.ts","sourceRoot":"","sources":["../../src/utils/localStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,OAAO,GAAG,yBAAyB,GAC5C,yBAAyB,GAAG,IAAI,CAIlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/utils/track.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAA+B,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoC9D,eAAO,MAAM,qBAAqB,aAAc,aAAa,wBAAwB,MAAM,GAAG,IAAI,iBAIjG,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,EAC3C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,QAQ9B;AAOD,eAAO,MAAM,8BAA8B,cAC9B,OAAO,EAAE,GAAG,KAAK,GAAG,SAAS,mBACvB,eAAe,oFAcjC,CAAC"}
1
+ {"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/utils/track.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAA+B,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAmC9D,eAAO,MAAM,qBAAqB,aAAc,aAAa,wBAAwB,MAAM,GAAG,IAAI,iBAIjG,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,EAC3C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,QAQ9B;AAOD,eAAO,MAAM,8BAA8B,cAC9B,OAAO,EAAE,GAAG,KAAK,GAAG,SAAS,mBACvB,eAAe,oFAcjC,CAAC"}
@@ -25,7 +25,6 @@ const getTrackFromContext = (context) => ({
25
25
  stream: context.stream,
26
26
  simulcastConfig: context.simulcastConfig || null,
27
27
  encoding: context.encoding || null,
28
- vadStatus: context.vadStatus,
29
28
  track: context.track,
30
29
  });
31
30
  export const getRemoteOrLocalTrack = (tsClient, remoteOrLocalTrackId) => {
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@fishjam-cloud/react-client",
3
- "version": "0.10.1",
4
- "description": "React client library for Fishjam Cloud",
3
+ "version": "0.11.0",
4
+ "description": "React client library for Fishjam",
5
5
  "license": "Apache-2.0",
6
- "author": "Fishjam Cloud Team",
6
+ "author": "Fishjam Team",
7
7
  "main": "./dist/index.js",
8
8
  "module": "./dist/index.js",
9
9
  "types": "./dist/index.d.ts",
@@ -38,19 +38,19 @@
38
38
  "prepack": "yarn workspace @fishjam-cloud/ts-client build && yarn build"
39
39
  },
40
40
  "devDependencies": {
41
- "@playwright/test": "^1.49.0",
41
+ "@playwright/test": "^1.49.1",
42
42
  "@types/events": "^3.0.3",
43
43
  "@types/lodash.isequal": "^4.5.8",
44
- "@types/node": "^22.10.0",
45
- "@types/react": "^18.3.12",
46
- "react": "^18.2.0",
44
+ "@types/node": "^22.10.2",
45
+ "@types/react": "^19.0.1",
46
+ "react": "^19.0.0",
47
47
  "typed-emitter": "^2.1.0",
48
- "typedoc": "^0.27.0",
49
- "typedoc-plugin-mdn-links": "^4.0.1",
48
+ "typedoc": "^0.27.5",
49
+ "typedoc-plugin-mdn-links": "^4.0.5",
50
50
  "typescript": "^5.7.2"
51
51
  },
52
52
  "dependencies": {
53
- "@fishjam-cloud/ts-client": "0.10.1",
53
+ "@fishjam-cloud/ts-client": "0.11.0",
54
54
  "events": "3.3.0",
55
55
  "lodash.isequal": "4.5.0"
56
56
  },
package/readme.md CHANGED
@@ -1,31 +1,31 @@
1
- <img src="../../.github/images/fishjam-card.png" width="100%">
1
+ <img src="../../.github/images/fishjam-card.png" width="100%" />
2
2
 
3
- # Fishjam Cloud React client
3
+ # Fishjam React client
4
4
 
5
5
  `@fishjam-cloud/react-client` is an easiest way to add video streaming to your React web app.
6
6
 
7
7
  # Installation
8
8
 
9
- Check out the [installation](https://fishjam-cloud.github.io/documentation/guide/react/installation) section of our docs for the detailed installation instructions.
9
+ Check out the [installation](https://docs.fishjam.io/react/installation) section of our docs for the detailed installation instructions.
10
10
 
11
11
  # Documentation
12
12
 
13
- Check out our [documentation](https://fishjam-cloud.github.io/documentation/) on how Fishjam Cloud work and how to integrate our service with your app.
13
+ Check out our [documentation](https://docs.fishjam.io/) on how Fishjam work and how to integrate our service with your app.
14
14
 
15
- There is also [API documentation](https://fishjam-cloud.github.io/web-client-sdk/) available.
15
+ There is also [API documentation](https://docs.fishjam.io/api/web/) available.
16
16
 
17
17
  # Examples
18
18
 
19
- There are [few example apps](https://github.com/fishjam-cloud/web-client-sdk/tree/main/examples/react-client#examples-for-fishjam-client) that shows how to use Fishjam Cloud SDKs and service.
19
+ There are [few example apps](https://github.com/fishjam-cloud/web-client-sdk/tree/main/examples/react-client#examples-for-fishjam-client) that shows how to use Fishjam SDKs and service.
20
20
 
21
21
  - [Fishjam Chat](https://github.com/fishjam-cloud/web-client-sdk/tree/main/examples/react-client/fishjam-chat) - example video chat app
22
22
  - [minimal-react](https://github.com/fishjam-cloud/web-client-sdk/tree/main/examples/react-client/minimal-react) - minimal example that shows how to connect and broadcast screen
23
23
 
24
24
  ## License
25
25
 
26
- Licensed under the [Apache License, Version 2.0](LICENSE)
26
+ Licensed under the [Apache xdLicense, Version 2.0](./LICENSE.txt)
27
27
 
28
- ## Fishjam Cloud is created by Software Mansion
28
+ ## Fishjam is created by Software Mansion
29
29
 
30
30
  Since 2012 [Software Mansion](https://swmansion.com) is a software agency with experience in building web and mobile
31
31
  apps. We are Core React Native Contributors and experts in dealing with all kinds of React Native issues. We can help
@@ -1,17 +0,0 @@
1
- import { type PropsWithChildren } from "react";
2
- import { type ReconnectConfig } from "@fishjam-cloud/ts-client";
3
- import type { BandwidthLimits, PersistLastDeviceHandlers, StartStreamingProps } from "./types/public";
4
- interface FishjamProviderProps extends PropsWithChildren {
5
- reconnect?: ReconnectConfig | boolean;
6
- constraints?: Pick<MediaStreamConstraints, "audio" | "video">;
7
- persistLastDevice?: boolean | PersistLastDeviceHandlers;
8
- bandwidthLimits?: Partial<BandwidthLimits>;
9
- autoStreamCamera?: StartStreamingProps | false;
10
- autoStreamMicrophone?: StartStreamingProps | false;
11
- }
12
- /**
13
- * @category Components
14
- */
15
- export declare function FishjamProvider({ children, reconnect, constraints, persistLastDevice, bandwidthLimits, autoStreamCamera, autoStreamMicrophone, }: FishjamProviderProps): import("react/jsx-runtime").JSX.Element;
16
- export {};
17
- //# sourceMappingURL=fishjamProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fishjamProvider.d.ts","sourceRoot":"","sources":["../src/fishjamProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAO/E,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAItG,UAAU,oBAAqB,SAAQ,iBAAiB;IACtD,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;IAC9D,iBAAiB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;IAC/C,oBAAoB,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;CACpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,oBAAoB,2CA8DtB"}