@fishjam-cloud/react-client 0.5.1 → 0.5.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../src/DeviceManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKjH,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAI9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,CACd,KAAK,EAAE,WAAW,GAAG;QACnB,WAAW,EAAE,qBAAqB,GAAG,SAAS,CAAC;KAChD,EACD,KAAK,EAAE,WAAW,KACf,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7G,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1E,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxF,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAE7C,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC;4CAGxD,YAAY,CAAC,mBAAmB,CAAC;AADtE,qBAAa,aACX,SAAQ,kBACR,YAAW,mBAAmB;IAE9B,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,UAAU,CAAoB;IAE/B,WAAW,EAAE,WAAW,CAM7B;gBAEU,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAS9E,OAAO,CAAC,mBAAmB;IAMpB,SAAS,IAAI,mBAAmB;IAIhC,cAAc,CACnB,kBAAkB,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,GAC9D,qBAAqB,GAAG,SAAS;IAO7B,QAAQ,uCAAgC;IAExC,SAAS,2BAKd;IAEK,UAAU,WACP,WAAW,GAAG,IAAI,SACnB,gBAAgB,GAAG,IAAI,WACrB,eAAe,EAAE,kBACV,OAAO,UAChB,WAAW,GAAG,IAAI,iBAWzB;IAEF,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,YAAY,CAIlB;IAEK,aAAa,IAAI,eAAe,GAAG,IAAI;IAI9C,OAAO,CAAC,cAAc;IAMT,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IA4EjC,IAAI;IAOV,OAAO;IAWP,MAAM;IAWN,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,qBAAqB;CAIlG"}
1
+ {"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../src/DeviceManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAK1G,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAI9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,CACd,KAAK,EAAE,WAAW,GAAG;QACnB,WAAW,EAAE,qBAAqB,GAAG,SAAS,CAAC;KAChD,EACD,KAAK,EAAE,WAAW,KACf,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7G,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1E,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxF,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAE7C,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC;4CAGxD,YAAY,CAAC,mBAAmB,CAAC;AADtE,qBAAa,aACX,SAAQ,kBACR,YAAW,YAAY;IAEvB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAExC,WAAW,EAAE,WAAW,CAM7B;gBAEU,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAS9E,OAAO,CAAC,mBAAmB;IAMpB,SAAS,IAAI,mBAAmB;IAIhC,cAAc,CACnB,kBAAkB,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,GAC9D,qBAAqB,GAAG,SAAS;IAO7B,QAAQ,uCAAgC;IAExC,SAAS,2BAKd;IAEK,UAAU,WACP,WAAW,GAAG,IAAI,SACnB,gBAAgB,GAAG,IAAI,WACrB,eAAe,EAAE,kBACV,OAAO,UAChB,WAAW,GAAG,IAAI,iBAWzB;IAEF,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,YAAY,CAIlB;IAEK,aAAa,IAAI,eAAe,GAAG,IAAI;IAI9C,OAAO,CAAC,cAAc;IAMT,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IA4EjC,IAAI;IAOV,OAAO;IAWP,MAAM;IAWN,aAAa,0BAElB;IAEK,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,qBAAqB;CAIlG"}
@@ -150,6 +150,9 @@ export class DeviceManager extends EventEmitter {
150
150
  this.deviceState.media.enabled = true;
151
151
  this.emit("deviceEnabled", this.deviceState);
152
152
  }
153
+ getDeviceType = () => {
154
+ return this.deviceType;
155
+ };
153
156
  setConfig(storage, constraints) {
154
157
  this.storageConfig = this.createStorageConfig(storage);
155
158
  this.constraints = constraints ? toMediaTrackConstraints(constraints) : undefined;
package/dist/create.d.ts CHANGED
@@ -1,11 +1,10 @@
1
+ import type { CreateFishjamClient, DeviceManagerConfig, PeerMetadata, TrackMetadata } from "./types";
1
2
  import type { CreateConfig } from "@fishjam-cloud/ts-client";
2
- import type { DeviceManagerConfig, CreateFishjamClient } from "./types";
3
- import type { ScreenShareManagerConfig } from "./ScreenShareManager";
4
3
  /**
5
4
  * Create a client that can be used with a context.
6
5
  * Returns context provider, and two hooks to interact with the context.
7
6
  *
8
7
  * @returns ContextProvider, useSelector, useConnect
9
8
  */
10
- export declare const create: <PeerMetadata, TrackMetadata>(config?: CreateConfig<PeerMetadata, TrackMetadata>, deviceManagerDefaultConfig?: DeviceManagerConfig, screenShareManagerDefaultConfig?: ScreenShareManagerConfig) => CreateFishjamClient<PeerMetadata, TrackMetadata>;
9
+ export declare function create(config?: CreateConfig<PeerMetadata, TrackMetadata>, deviceManagerDefaultConfig?: DeviceManagerConfig): CreateFishjamClient;
11
10
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EACV,mBAAmB,EAGnB,mBAAmB,EAMpB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGrE;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,YAAY,EAAE,aAAa,WACvC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,+BACrB,mBAAmB,oCACd,wBAAwB,KACzD,mBAAmB,CAAC,YAAY,EAAE,aAAa,CAkRjD,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EAGnB,YAAY,EAIZ,aAAa,EAGd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAuD7D;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAClD,0BAA0B,CAAC,EAAE,mBAAmB,GAC/C,mBAAmB,CA+KrB"}
package/dist/create.js CHANGED
@@ -1,161 +1,122 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useCallback, useContext, useMemo, useRef, useSyncExternalStore } from "react";
2
+ import { createContext, useCallback, useContext, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
3
  import { Client } from "./Client";
4
4
  import { createUseSetupMediaHook } from "./useSetupMedia";
5
+ import { useScreenShare as _useScreenShare } from "./screenShareTrackManager";
6
+ import { useTrackManager } from "./trackManager";
7
+ const eventNames = [
8
+ "socketOpen",
9
+ "socketError",
10
+ "socketClose",
11
+ "authSuccess",
12
+ "authError",
13
+ "disconnected",
14
+ "joined",
15
+ "joinError",
16
+ "peerJoined",
17
+ "peerUpdated",
18
+ "peerLeft",
19
+ "reconnected",
20
+ "reconnectionRetriesLimitReached",
21
+ "reconnectionStarted",
22
+ "componentAdded",
23
+ "componentUpdated",
24
+ "componentRemoved",
25
+ "trackReady",
26
+ "trackAdded",
27
+ "trackRemoved",
28
+ "trackUpdated",
29
+ "bandwidthEstimationChanged",
30
+ "encodingChanged",
31
+ "voiceActivityChanged",
32
+ "deviceDisabled",
33
+ "deviceEnabled",
34
+ "managerInitialized",
35
+ "managerStarted",
36
+ "deviceStopped",
37
+ "deviceReady",
38
+ "devicesStarted",
39
+ "devicesReady",
40
+ "error",
41
+ "targetTrackEncodingRequested",
42
+ "localTrackAdded",
43
+ "localTrackRemoved",
44
+ "localTrackReplaced",
45
+ "localTrackMuted",
46
+ "localTrackUnmuted",
47
+ "localTrackBandwidthSet",
48
+ "localTrackEncodingBandwidthSet",
49
+ "localTrackEncodingEnabled",
50
+ "localTrackEncodingDisabled",
51
+ "localPeerMetadataChanged",
52
+ "localTrackMetadataChanged",
53
+ "disconnectRequested",
54
+ ];
5
55
  /**
6
56
  * Create a client that can be used with a context.
7
57
  * Returns context provider, and two hooks to interact with the context.
8
58
  *
9
59
  * @returns ContextProvider, useSelector, useConnect
10
60
  */
11
- export const create = (config, deviceManagerDefaultConfig, screenShareManagerDefaultConfig) => {
61
+ export function create(config, deviceManagerDefaultConfig) {
12
62
  const FishjamContext = createContext(undefined);
13
- const FishjamContextProvider = ({ children, }) => {
14
- const memoClient = useMemo(() => {
15
- return new Client({
16
- clientConfig: config,
17
- deviceManagerDefaultConfig,
18
- screenShareManagerDefaultConfig,
19
- });
20
- }, []);
63
+ function FishjamContextProvider({ children }) {
64
+ const memoClient = useMemo(() => new Client({ clientConfig: config, deviceManagerDefaultConfig }), []);
21
65
  const clientRef = useRef(memoClient);
22
66
  const mutationRef = useRef(false);
23
- const subscribe = useCallback((cb) => {
67
+ const subscribe = useCallback((subscribeCallback) => {
24
68
  const client = clientRef.current;
25
69
  const callback = () => {
26
70
  mutationRef.current = true;
27
- cb();
71
+ subscribeCallback();
28
72
  };
29
- client.on("socketOpen", callback);
30
- client.on("socketError", callback);
31
- client.on("socketClose", callback);
32
- client.on("authSuccess", callback);
33
- client.on("authError", callback);
34
- client.on("disconnected", callback);
35
- client.on("joined", callback);
36
- client.on("joinError", callback);
37
- client.on("peerJoined", callback);
38
- client.on("peerUpdated", callback);
39
- client.on("peerLeft", callback);
40
- client.on("reconnected", callback);
41
- client.on("reconnectionRetriesLimitReached", callback);
42
- client.on("reconnectionStarted", callback);
43
- client.on("componentAdded", callback);
44
- client.on("componentUpdated", callback);
45
- client.on("componentRemoved", callback);
46
- client.on("trackReady", callback);
47
- client.on("trackAdded", callback);
48
- client.on("trackRemoved", callback);
49
- client.on("trackUpdated", callback);
50
- client.on("bandwidthEstimationChanged", callback);
51
- client.on("encodingChanged", callback);
52
- client.on("voiceActivityChanged", callback);
53
- client.on("deviceDisabled", callback);
54
- client.on("deviceEnabled", callback);
55
- client.on("managerInitialized", callback);
56
- client.on("managerStarted", callback);
57
- client.on("deviceStopped", callback);
58
- client.on("deviceReady", callback);
59
- client.on("devicesStarted", callback);
60
- client.on("devicesReady", callback);
61
- client.on("error", callback);
62
- client.on("targetTrackEncodingRequested", callback);
63
- client.on("localTrackAdded", callback);
64
- client.on("localTrackRemoved", callback);
65
- client.on("localTrackReplaced", callback);
66
- client.on("localTrackMuted", callback);
67
- client.on("localTrackUnmuted", callback);
68
- client.on("localTrackBandwidthSet", callback);
69
- client.on("localTrackEncodingBandwidthSet", callback);
70
- client.on("localTrackEncodingEnabled", callback);
71
- client.on("localTrackEncodingDisabled", callback);
72
- client.on("localPeerMetadataChanged", callback);
73
- client.on("localTrackMetadataChanged", callback);
74
- client.on("disconnectRequested", callback);
73
+ eventNames.forEach((eventName) => client.on(eventName, callback));
75
74
  return () => {
76
- client.removeListener("socketOpen", callback);
77
- client.removeListener("socketError", callback);
78
- client.removeListener("socketClose", callback);
79
- client.removeListener("authSuccess", callback);
80
- client.removeListener("authError", callback);
81
- client.removeListener("disconnected", callback);
82
- client.removeListener("joined", callback);
83
- client.removeListener("joinError", callback);
84
- client.removeListener("peerJoined", callback);
85
- client.removeListener("peerUpdated", callback);
86
- client.removeListener("peerLeft", callback);
87
- client.removeListener("reconnected", callback);
88
- client.removeListener("reconnectionRetriesLimitReached", callback);
89
- client.removeListener("reconnectionStarted", callback);
90
- client.removeListener("componentAdded", callback);
91
- client.removeListener("componentUpdated", callback);
92
- client.removeListener("componentRemoved", callback);
93
- client.removeListener("trackReady", callback);
94
- client.removeListener("trackAdded", callback);
95
- client.removeListener("trackRemoved", callback);
96
- client.removeListener("trackUpdated", callback);
97
- client.removeListener("bandwidthEstimationChanged", callback);
98
- client.removeListener("encodingChanged", callback);
99
- client.removeListener("voiceActivityChanged", callback);
100
- client.removeListener("deviceDisabled", callback);
101
- client.removeListener("deviceEnabled", callback);
102
- client.removeListener("managerInitialized", callback);
103
- client.removeListener("managerStarted", callback);
104
- client.removeListener("deviceStopped", callback);
105
- client.removeListener("devicesStarted", callback);
106
- client.removeListener("devicesReady", callback);
107
- client.removeListener("error", callback);
108
- client.removeListener("targetTrackEncodingRequested", callback);
109
- client.removeListener("localTrackAdded", callback);
110
- client.removeListener("localTrackRemoved", callback);
111
- client.removeListener("localTrackReplaced", callback);
112
- client.removeListener("localTrackMuted", callback);
113
- client.removeListener("localTrackUnmuted", callback);
114
- client.removeListener("localTrackBandwidthSet", callback);
115
- client.removeListener("localTrackEncodingBandwidthSet", callback);
116
- client.removeListener("localTrackEncodingEnabled", callback);
117
- client.removeListener("localTrackEncodingDisabled", callback);
118
- client.removeListener("localPeerMetadataChanged", callback);
119
- client.removeListener("localTrackMetadataChanged", callback);
120
- client.removeListener("disconnectRequested", callback);
75
+ eventNames.forEach((eventName) => client.removeListener(eventName, callback));
121
76
  };
122
77
  }, []);
123
78
  const lastSnapshotRef = useRef(null);
124
79
  const getSnapshot = useCallback(() => {
125
80
  if (mutationRef.current || lastSnapshotRef.current === null) {
126
- const state = {
81
+ lastSnapshotRef.current = {
127
82
  remote: clientRef.current.peers,
128
- screenShareManager: clientRef.current.screenShareManager,
129
83
  media: clientRef.current.media,
130
84
  bandwidthEstimation: clientRef.current.bandwidthEstimation,
131
85
  tracks: clientRef.current.peersTracks,
132
86
  local: clientRef.current.local,
133
87
  status: clientRef.current.status,
134
88
  devices: clientRef.current.devices,
135
- videoTrackManager: clientRef.current.videoTrackManager,
136
- audioTrackManager: clientRef.current.audioTrackManager,
137
89
  client: clientRef.current,
138
90
  reconnectionStatus: clientRef.current.reconnectionStatus,
139
91
  };
140
- lastSnapshotRef.current = state;
141
92
  mutationRef.current = false;
142
93
  }
143
94
  return lastSnapshotRef.current;
144
95
  }, []);
145
96
  const state = useSyncExternalStore(subscribe, getSnapshot);
146
- return _jsx(FishjamContext.Provider, { value: { state }, children: children });
147
- };
148
- const useFishjamContext = () => {
97
+ const tsClient = state.client.getTsClient();
98
+ const screenshareState = useState(null);
99
+ const videoTrackManager = useTrackManager({
100
+ mediaManager: state.client.videoDeviceManager,
101
+ tsClient,
102
+ });
103
+ const audioTrackManager = useTrackManager({
104
+ mediaManager: state.client.audioDeviceManager,
105
+ tsClient,
106
+ });
107
+ return (_jsx(FishjamContext.Provider, { value: { state, screenshareState, videoTrackManager, audioTrackManager }, children: children }));
108
+ }
109
+ function useFishjamContext() {
149
110
  const context = useContext(FishjamContext);
150
111
  if (!context)
151
112
  throw new Error("useFishjamContext must be used within a FishjamContextProvider");
152
113
  return context;
153
- };
154
- const useSelector = (selector) => {
114
+ }
115
+ function useSelector(selector) {
155
116
  const { state } = useFishjamContext();
156
117
  return useMemo(() => selector(state), [selector, state]);
157
- };
158
- const useConnect = () => {
118
+ }
119
+ function useConnect() {
159
120
  const { state } = useFishjamContext();
160
121
  return useMemo(() => {
161
122
  return (config) => {
@@ -165,29 +126,31 @@ export const create = (config, deviceManagerDefaultConfig, screenShareManagerDef
165
126
  };
166
127
  };
167
128
  }, [state.client]);
168
- };
169
- const useDisconnect = () => {
129
+ }
130
+ function useDisconnect() {
170
131
  const { state } = useFishjamContext();
171
132
  return useCallback(() => {
172
133
  state.client.disconnect();
173
134
  }, [state.client]);
174
- };
175
- const useStatus = () => useSelector((s) => s.status);
176
- const useTracks = () => useSelector((s) => s.tracks);
177
- const useClient = () => useSelector((s) => s.client);
178
- const useCamera = () => {
179
- const { state } = useFishjamContext();
180
- return { ...state.devices.camera, ...state.videoTrackManager };
181
- };
182
- const useMicrophone = () => {
183
- const { state } = useFishjamContext();
184
- return { ...state.devices.microphone, ...state.audioTrackManager };
185
- };
186
- const useScreenShare = () => {
187
- const { state } = useFishjamContext();
188
- return { ...state.devices.screenShare };
189
- };
190
- const useReconnection = () => {
135
+ }
136
+ function useStatus() {
137
+ return useSelector((s) => s.status);
138
+ }
139
+ function useTracks() {
140
+ return useSelector((s) => s.tracks);
141
+ }
142
+ function useClient() {
143
+ return useSelector((s) => s.client);
144
+ }
145
+ function useCamera() {
146
+ const { state, videoTrackManager } = useFishjamContext();
147
+ return { ...state.devices.camera, ...videoTrackManager };
148
+ }
149
+ function useMicrophone() {
150
+ const { state, audioTrackManager } = useFishjamContext();
151
+ return { ...state.devices.microphone, ...audioTrackManager };
152
+ }
153
+ function useReconnection() {
191
154
  const { state } = useFishjamContext();
192
155
  return {
193
156
  status: state.reconnectionStatus,
@@ -195,21 +158,25 @@ export const create = (config, deviceManagerDefaultConfig, screenShareManagerDef
195
158
  isError: state.reconnectionStatus === "error",
196
159
  isIdle: state.reconnectionStatus === "idle",
197
160
  };
198
- };
199
- const getPeerWithDistinguishedTracks = (peerState) => {
161
+ }
162
+ function getPeerWithDistinguishedTracks(peerState) {
200
163
  const localTracks = Object.values(peerState.tracks ?? {});
201
- const videoTrack = localTracks.find(({ track }) => track?.kind === "video");
202
- const audioTrack = localTracks.find(({ track }) => track?.kind === "audio");
203
- return { ...peerState, videoTrack, audioTrack };
204
- };
205
- const useParticipants = () => {
164
+ const videoTracks = localTracks.filter(({ track }) => track?.kind === "video");
165
+ const audioTracks = localTracks.filter(({ track }) => track?.kind === "audio");
166
+ return { ...peerState, videoTracks, audioTracks };
167
+ }
168
+ function useParticipants() {
206
169
  const { state } = useFishjamContext();
207
170
  const localParticipant = state.local
208
171
  ? getPeerWithDistinguishedTracks(state.local)
209
172
  : null;
210
173
  const participants = Object.values(state.remote).map(getPeerWithDistinguishedTracks);
211
174
  return { localParticipant, participants };
212
- };
175
+ }
176
+ function useScreenShare() {
177
+ const { state, screenshareState } = useFishjamContext();
178
+ return _useScreenShare(screenshareState, state.client.getTsClient());
179
+ }
213
180
  return {
214
181
  FishjamContextProvider,
215
182
  useSelector,
@@ -219,10 +186,10 @@ export const create = (config, deviceManagerDefaultConfig, screenShareManagerDef
219
186
  useTracks,
220
187
  useSetupMedia: createUseSetupMediaHook(useFishjamContext),
221
188
  useParticipants,
189
+ useScreenShare,
222
190
  useCamera,
223
191
  useMicrophone,
224
- useScreenShare,
225
192
  useClient,
226
193
  useReconnection,
227
194
  };
228
- };
195
+ }
package/dist/index.d.ts CHANGED
@@ -2,9 +2,9 @@ export { create } from "./create";
2
2
  export { Client } from "./Client";
3
3
  export type { ClientEvents } from "./Client";
4
4
  export type { PeerState, Track, PeerId, TrackId, TrackWithOrigin, Origin, PeerStatus, Selector, State, SetStore, } from "./state.types";
5
- export type { DeviceManagerConfig, StorageConfig, Devices, UserMediaAPI, ScreenShareAPI, UseSetupMediaResult, UseSetupMediaConfig, CreateFishjamClient, UseConnect, GenericTrackManager, } from "./types";
6
- export type { ScreenShareManagerConfig } from "./ScreenShareManager";
5
+ export type { DeviceManagerConfig, StorageConfig, Devices, UserMediaAPI, UseSetupMediaResult, UseSetupMediaConfig, CreateFishjamClient, ScreenshareApi, UseConnect, ConnectConfig, TrackManager, TrackMiddleware, TrackMetadata, // only for compatibility reasons, will be removed in: FCE-415
6
+ PeerMetadata, } from "./types";
7
7
  export { AUDIO_TRACK_CONSTRAINTS, VIDEO_TRACK_CONSTRAINTS, SCREEN_SHARING_MEDIA_CONSTRAINTS } from "./constraints";
8
- export type { Peer, MessageEvents, SignalingUrl, CreateConfig, TrackBandwidthLimit, SimulcastBandwidthLimit, BandwidthLimit, WebRTCEndpointEvents, TrackContextEvents, Endpoint, SimulcastConfig, TrackContext, VadStatus, EncodingReason, MetadataParser, ConnectConfig, AuthErrorReason, Encoding, } from "@fishjam-cloud/ts-client";
8
+ export type { Peer, MessageEvents, CreateConfig, TrackBandwidthLimit, SimulcastBandwidthLimit, BandwidthLimit, WebRTCEndpointEvents, TrackContextEvents, Endpoint, SimulcastConfig, TrackContext, VadStatus, EncodingReason, MetadataParser, AuthErrorReason, Encoding, } from "@fishjam-cloud/ts-client";
9
9
  export { FishjamClient } from "@fishjam-cloud/ts-client";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,YAAY,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAEnH,YAAY,EACV,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,QAAQ,GACT,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,YAAY,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EAAE,8DAA8D;AAC7E,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAEnH,YAAY,EACV,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,QAAQ,GACT,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FishjamClient } from "@fishjam-cloud/ts-client";
2
+ import type { PeerMetadata, ScreenshareApi, ScreenshareState, TrackMetadata } from "./types";
3
+ export declare const useScreenShare: ([state, setState]: [ScreenshareState, React.Dispatch<React.SetStateAction<ScreenshareState>>], tsClient: FishjamClient<PeerMetadata, TrackMetadata>) => ScreenshareApi;
4
+ //# sourceMappingURL=screenShareTrackManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenShareTrackManager.d.ts","sourceRoot":"","sources":["../src/screenShareTrackManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAS/G,eAAO,MAAM,cAAc,sBAEN,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,YACnF,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,KACnD,cAmGF,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { useCallback, useEffect } from "react";
2
+ import { getRemoteOrLocalTrack } from "./utils/track";
3
+ const getTracks = (stream) => {
4
+ const video = stream.getVideoTracks()[0];
5
+ const audio = stream.getAudioTracks()[0] ?? null;
6
+ return [video, audio];
7
+ };
8
+ export const useScreenShare = (
9
+ // these arguments will be removed after we get rid of create() fn, we will just use the context
10
+ [state, setState], tsClient) => {
11
+ const startStreaming = async (props) => {
12
+ const stream = await navigator.mediaDevices.getDisplayMedia({
13
+ video: props?.videoConstraints ?? true,
14
+ audio: props?.audioConstraints ?? true,
15
+ });
16
+ const [video, audio] = getTracks(stream);
17
+ const addTrackPromises = [tsClient.addTrack(video)];
18
+ if (audio)
19
+ addTrackPromises.push(tsClient.addTrack(audio));
20
+ const [videoId, audioId] = await Promise.all(addTrackPromises);
21
+ setState({ stream, trackIds: { videoId, audioId } });
22
+ };
23
+ const replaceTracks = async (newVideoTrack, newAudioTrack) => {
24
+ if (!state?.stream)
25
+ return;
26
+ const addTrackPromises = [tsClient.replaceTrack(state.trackIds.videoId, newVideoTrack)];
27
+ if (newAudioTrack && state.trackIds.audioId) {
28
+ addTrackPromises.push(tsClient.replaceTrack(state.trackIds.audioId, newAudioTrack));
29
+ }
30
+ await Promise.all(addTrackPromises);
31
+ };
32
+ const setTracksMiddleware = async (middleware) => {
33
+ if (!state?.stream)
34
+ return;
35
+ const [videoTrack, audioTrack] = getTracks(state.stream);
36
+ const [newVideoTrack, newAudioTrack] = middleware?.(videoTrack, audioTrack) ?? [videoTrack, audioTrack];
37
+ await replaceTracks(newVideoTrack, newAudioTrack);
38
+ };
39
+ const stopStreaming = useCallback(async () => {
40
+ if (!state) {
41
+ console.warn("No stream to stop");
42
+ return;
43
+ }
44
+ const [video, audio] = getTracks(state.stream);
45
+ video.stop();
46
+ if (audio)
47
+ audio.stop();
48
+ const removeTrackPromises = [tsClient.removeTrack(state.trackIds.videoId)];
49
+ if (state.trackIds.audioId)
50
+ removeTrackPromises.push(tsClient.removeTrack(state.trackIds.audioId));
51
+ await Promise.all(removeTrackPromises);
52
+ setState(null);
53
+ }, [state, tsClient, setState]);
54
+ useEffect(() => {
55
+ if (!state)
56
+ return;
57
+ const [video, audio] = getTracks(state.stream);
58
+ const trackEndedHandler = () => {
59
+ stopStreaming();
60
+ };
61
+ video.addEventListener("ended", trackEndedHandler);
62
+ audio?.addEventListener("ended", trackEndedHandler);
63
+ return () => {
64
+ video.removeEventListener("ended", trackEndedHandler);
65
+ audio?.removeEventListener("ended", trackEndedHandler);
66
+ };
67
+ }, [state, stopStreaming]);
68
+ useEffect(() => {
69
+ const onDisconnected = () => {
70
+ stopStreaming();
71
+ };
72
+ tsClient.on("disconnected", onDisconnected);
73
+ return () => {
74
+ tsClient.removeListener("disconnected", onDisconnected);
75
+ };
76
+ }, [stopStreaming, tsClient]);
77
+ const stream = state?.stream ?? null;
78
+ const [videoTrack, audioTrack] = stream ? getTracks(stream) : [null, null];
79
+ const videoBroadcast = state ? getRemoteOrLocalTrack(tsClient, state.trackIds.videoId) : null;
80
+ const audioBroadcast = state?.trackIds.audioId ? getRemoteOrLocalTrack(tsClient, state.trackIds.audioId) : null;
81
+ return {
82
+ startStreaming,
83
+ stopStreaming,
84
+ stream,
85
+ videoTrack,
86
+ audioTrack,
87
+ videoBroadcast,
88
+ audioBroadcast,
89
+ setTracksMiddleware,
90
+ currentTracksMiddleware: state?.tracksMiddleware ?? null,
91
+ };
92
+ };
@@ -1,38 +1,36 @@
1
1
  import type { Encoding, VadStatus, SimulcastConfig, ReconnectionStatus } from "@fishjam-cloud/ts-client";
2
- import type { MediaState } from "./types";
2
+ import type { MediaState, PeerMetadata, TrackMetadata } from "./types";
3
3
  import type { Devices } from "./types";
4
4
  import type { Client } from "./Client";
5
- import type { ScreenShareManager } from "./ScreenShareManager";
6
- import type { TrackManager } from "./trackManager";
7
5
  export type TrackId = string;
8
6
  export type PeerId = string;
9
- export type Track<TrackMetadata> = {
7
+ export type Track = {
10
8
  stream: MediaStream | null;
11
9
  encoding: Encoding | null;
12
10
  trackId: TrackId;
13
11
  metadata?: TrackMetadata;
14
- rawMetadata: any;
12
+ rawMetadata: Record<string, unknown>;
15
13
  metadataParsingError?: any;
16
14
  simulcastConfig: SimulcastConfig | null;
17
15
  vadStatus: VadStatus;
18
16
  track: MediaStreamTrack | null;
19
17
  };
20
- export interface Origin<OriginMetadata> {
18
+ export interface Origin {
21
19
  id: string;
22
20
  type: string;
23
- metadata?: OriginMetadata;
24
- rawMetadata: any;
21
+ metadata?: PeerMetadata;
22
+ rawMetadata: Record<string, unknown>;
25
23
  metadataParsingError?: any;
26
24
  }
27
- export type TrackWithOrigin<PeerMetadata, TrackMetadata> = Track<TrackMetadata> & {
28
- origin: Origin<PeerMetadata>;
25
+ export type TrackWithOrigin = Track & {
26
+ origin: Origin;
29
27
  };
30
- export type PeerState<PeerMetadata, TrackMetadata> = {
28
+ export type PeerState = {
31
29
  id: PeerId;
32
30
  metadata?: PeerMetadata;
33
- rawMetadata: any;
31
+ rawMetadata: Record<string, unknown>;
34
32
  metadataParsingError?: any;
35
- tracks: Record<TrackId, Track<TrackMetadata>>;
33
+ tracks: Record<TrackId, Track>;
36
34
  };
37
35
  export type PeerStatus = "connecting" | "connected" | "authenticated" | "joined" | "error" | "closed" | null;
38
36
  export type UseReconnection = {
@@ -41,20 +39,17 @@ export type UseReconnection = {
41
39
  isError: boolean;
42
40
  isIdle: boolean;
43
41
  };
44
- export type State<PeerMetadata, TrackMetadata> = {
45
- local: PeerState<PeerMetadata, TrackMetadata> | null;
46
- remote: Record<PeerId, PeerState<PeerMetadata, TrackMetadata>>;
47
- tracks: Record<TrackId, TrackWithOrigin<PeerMetadata, TrackMetadata>>;
42
+ export type State = {
43
+ local: PeerState | null;
44
+ remote: Record<PeerId, PeerState>;
45
+ tracks: Record<TrackId, TrackWithOrigin>;
48
46
  bandwidthEstimation: bigint;
49
47
  status: PeerStatus;
50
48
  media: MediaState | null;
51
- devices: Devices<TrackMetadata>;
52
- client: Client<PeerMetadata, TrackMetadata>;
53
- videoTrackManager: TrackManager<PeerMetadata, TrackMetadata>;
54
- audioTrackManager: TrackManager<PeerMetadata, TrackMetadata>;
55
- screenShareManager: ScreenShareManager;
49
+ devices: Devices;
50
+ client: Client;
56
51
  reconnectionStatus: ReconnectionStatus;
57
52
  };
58
- export type SetStore<PeerMetadata, TrackMetadata> = (setter: (prevState: State<PeerMetadata, TrackMetadata>) => State<PeerMetadata, TrackMetadata>) => void;
59
- export type Selector<PeerMetadata, TrackMetadata, Result> = (snapshot: State<PeerMetadata, TrackMetadata>) => Result;
53
+ export type SetStore = (setter: (prevState: State) => State) => void;
54
+ export type Selector<Result> = (snapshot: State) => Result;
60
55
  //# sourceMappingURL=state.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.types.d.ts","sourceRoot":"","sources":["../src/state.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.types.d.ts","sourceRoot":"","sources":["../src/state.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAC3B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,GAAG,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,GAAG,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE7G,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;AAErE,MAAM,MAAM,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC"}
@@ -1,24 +1,9 @@
1
- import type { FishjamClient, SimulcastConfig, TrackBandwidthLimit } from "@fishjam-cloud/ts-client";
2
- import type { GenericMediaManager, GenericTrackManager } from "./types";
3
- import type { Track } from "./state.types";
4
- export declare class TrackManager<PeerMetadata, TrackMetadata> implements GenericTrackManager<TrackMetadata> {
5
- private mediaManager;
6
- private tsClient;
7
- private currentTrackId;
8
- constructor(tsClient: FishjamClient<PeerMetadata, TrackMetadata>, deviceManager: GenericMediaManager);
9
- private getPreviousTrack;
10
- getCurrentTrack: () => Track<TrackMetadata> | null;
11
- private trackContextToTrack;
12
- private getRemoteTrack;
13
- initialize: (deviceId?: string) => Promise<void>;
14
- cleanup: () => Promise<void>;
15
- startStreaming: (trackMetadata?: TrackMetadata, simulcastConfig?: SimulcastConfig, maxBandwidth?: TrackBandwidthLimit) => Promise<string>;
16
- refreshStreamedTrack: () => Promise<void>;
17
- stopStreaming: () => Promise<void>;
18
- pauseStreaming: () => Promise<void>;
19
- isMuted: () => boolean;
20
- resumeStreaming: () => Promise<void>;
21
- disableTrack: () => Promise<void>;
22
- enableTrack: () => Promise<void>;
1
+ import type { FishjamClient } from "@fishjam-cloud/ts-client";
2
+ import type { MediaManager, PeerMetadata, TrackManager, TrackMetadata } from "./types";
3
+ interface TrackManagerConfig {
4
+ mediaManager: MediaManager;
5
+ tsClient: FishjamClient<PeerMetadata, TrackMetadata>;
23
6
  }
7
+ export declare const useTrackManager: ({ mediaManager, tsClient }: TrackManagerConfig) => TrackManager;
8
+ export {};
24
9
  //# sourceMappingURL=trackManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trackManager.d.ts","sourceRoot":"","sources":["../src/trackManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAgB,MAAM,0BAA0B,CAAC;AAClH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,YAAY,CAAC,YAAY,EAAE,aAAa,CAAE,YAAW,mBAAmB,CAAC,aAAa,CAAC;IAClG,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,cAAc,CAAuB;gBAEjC,QAAQ,EAAE,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,mBAAmB;IAKpG,OAAO,CAAC,gBAAgB,CAQtB;IAEK,eAAe,QAAO,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAGtD;IAEF,OAAO,CAAC,mBAAmB,CAUxB;IAEH,OAAO,CAAC,cAAc,CASpB;IAEK,UAAU,cAAqB,MAAM,mBAE1C;IAEK,OAAO,sBAEZ;IAEK,cAAc,mBACH,aAAa,oBACX,eAAe,iBAClB,mBAAmB,qBAoBlC;IAEK,oBAAoB,sBAOzB;IAEK,aAAa,sBAIlB;IAEK,cAAc,sBAGnB;IAEK,OAAO,gBAMZ;IAEK,eAAe,sBAOpB;IAEK,YAAY,sBAEjB;IAEK,WAAW,sBAEhB;CACH"}
1
+ {"version":3,"file":"trackManager.d.ts","sourceRoot":"","sources":["../src/trackManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwC,MAAM,0BAA0B,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,SAAS,CAAC;AAKxG,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;CACtD;AAOD,eAAO,MAAM,eAAe,+BAAgC,kBAAkB,KAAG,YA6IhF,CAAC"}