@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.
- package/dist/Client.d.ts +71 -83
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +17 -145
- package/dist/DeviceManager.d.ts +4 -3
- package/dist/DeviceManager.d.ts.map +1 -1
- package/dist/DeviceManager.js +3 -0
- package/dist/create.d.ts +2 -3
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +111 -144
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/screenShareTrackManager.d.ts +4 -0
- package/dist/screenShareTrackManager.d.ts.map +1 -0
- package/dist/screenShareTrackManager.js +92 -0
- package/dist/state.types.d.ts +19 -24
- package/dist/state.types.d.ts.map +1 -1
- package/dist/trackManager.d.ts +7 -22
- package/dist/trackManager.d.ts.map +1 -1
- package/dist/trackManager.js +101 -84
- package/dist/types.d.ts +75 -51
- package/dist/types.d.ts.map +1 -1
- package/dist/useSetupMedia.d.ts +1 -1
- package/dist/useSetupMedia.d.ts.map +1 -1
- package/dist/useSetupMedia.js +19 -80
- package/dist/utils/track.d.ts +5 -0
- package/dist/utils/track.d.ts.map +1 -0
- package/dist/utils/track.js +37 -0
- package/package.json +6 -6
- package/readme.md +11 -29
- package/dist/ScreenShareManager.d.ts +0 -57
- package/dist/ScreenShareManager.d.ts.map +0 -1
- package/dist/ScreenShareManager.js +0 -135
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceManager.d.ts","sourceRoot":"","sources":["../src/DeviceManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,
|
|
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"}
|
package/dist/DeviceManager.js
CHANGED
|
@@ -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
|
|
9
|
+
export declare function create(config?: CreateConfig<PeerMetadata, TrackMetadata>, deviceManagerDefaultConfig?: DeviceManagerConfig): CreateFishjamClient;
|
|
11
10
|
//# sourceMappingURL=create.d.ts.map
|
package/dist/create.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.tsx"],"names":[],"mappings":"
|
|
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
|
|
61
|
+
export function create(config, deviceManagerDefaultConfig) {
|
|
12
62
|
const FishjamContext = createContext(undefined);
|
|
13
|
-
|
|
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((
|
|
67
|
+
const subscribe = useCallback((subscribeCallback) => {
|
|
24
68
|
const client = clientRef.current;
|
|
25
69
|
const callback = () => {
|
|
26
70
|
mutationRef.current = true;
|
|
27
|
-
|
|
71
|
+
subscribeCallback();
|
|
28
72
|
};
|
|
29
|
-
client.on(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
114
|
+
}
|
|
115
|
+
function useSelector(selector) {
|
|
155
116
|
const { state } = useFishjamContext();
|
|
156
117
|
return useMemo(() => selector(state), [selector, state]);
|
|
157
|
-
}
|
|
158
|
-
|
|
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
|
-
|
|
129
|
+
}
|
|
130
|
+
function useDisconnect() {
|
|
170
131
|
const { state } = useFishjamContext();
|
|
171
132
|
return useCallback(() => {
|
|
172
133
|
state.client.disconnect();
|
|
173
134
|
}, [state.client]);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
161
|
+
}
|
|
162
|
+
function getPeerWithDistinguishedTracks(peerState) {
|
|
200
163
|
const localTracks = Object.values(peerState.tracks ?? {});
|
|
201
|
-
const
|
|
202
|
-
const
|
|
203
|
-
return { ...peerState,
|
|
204
|
-
}
|
|
205
|
-
|
|
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,
|
|
6
|
-
|
|
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,
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
+
};
|
package/dist/state.types.d.ts
CHANGED
|
@@ -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
|
|
7
|
+
export type Track = {
|
|
10
8
|
stream: MediaStream | null;
|
|
11
9
|
encoding: Encoding | null;
|
|
12
10
|
trackId: TrackId;
|
|
13
11
|
metadata?: TrackMetadata;
|
|
14
|
-
rawMetadata:
|
|
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
|
|
18
|
+
export interface Origin {
|
|
21
19
|
id: string;
|
|
22
20
|
type: string;
|
|
23
|
-
metadata?:
|
|
24
|
-
rawMetadata:
|
|
21
|
+
metadata?: PeerMetadata;
|
|
22
|
+
rawMetadata: Record<string, unknown>;
|
|
25
23
|
metadataParsingError?: any;
|
|
26
24
|
}
|
|
27
|
-
export type TrackWithOrigin
|
|
28
|
-
origin: Origin
|
|
25
|
+
export type TrackWithOrigin = Track & {
|
|
26
|
+
origin: Origin;
|
|
29
27
|
};
|
|
30
|
-
export type PeerState
|
|
28
|
+
export type PeerState = {
|
|
31
29
|
id: PeerId;
|
|
32
30
|
metadata?: PeerMetadata;
|
|
33
|
-
rawMetadata:
|
|
31
|
+
rawMetadata: Record<string, unknown>;
|
|
34
32
|
metadataParsingError?: any;
|
|
35
|
-
tracks: Record<TrackId, Track
|
|
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
|
|
45
|
-
local: PeerState
|
|
46
|
-
remote: Record<PeerId, PeerState
|
|
47
|
-
tracks: Record<TrackId, TrackWithOrigin
|
|
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
|
|
52
|
-
client: Client
|
|
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
|
|
59
|
-
export type Selector<
|
|
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":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,KAAK,EAAE,UAAU,EAAE,
|
|
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"}
|
package/dist/trackManager.d.ts
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
import type { FishjamClient
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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,
|
|
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"}
|