livekit-client 0.11.2 → 0.13.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 (87) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.github/workflows/publish.yaml +1 -3
  3. package/CHANGELOG.md +5 -0
  4. package/README.md +21 -1
  5. package/dist/api/SignalClient.d.ts +10 -7
  6. package/dist/api/SignalClient.js +19 -10
  7. package/dist/api/SignalClient.js.map +1 -1
  8. package/dist/connect.d.ts +23 -0
  9. package/dist/connect.js +93 -0
  10. package/dist/connect.js.map +1 -0
  11. package/dist/index.d.ts +4 -2
  12. package/dist/index.js +4 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/options.d.ts +5 -3
  15. package/dist/options.js.map +1 -1
  16. package/dist/proto/livekit_models.d.ts +68 -54
  17. package/dist/proto/livekit_models.js +324 -362
  18. package/dist/proto/livekit_models.js.map +1 -1
  19. package/dist/proto/livekit_rtc.d.ts +31 -61
  20. package/dist/proto/livekit_rtc.js +177 -356
  21. package/dist/proto/livekit_rtc.js.map +1 -1
  22. package/dist/room/DeviceManager.d.ts +10 -0
  23. package/dist/room/DeviceManager.js +77 -0
  24. package/dist/room/DeviceManager.js.map +1 -0
  25. package/dist/room/PCTransport.d.ts +5 -0
  26. package/dist/room/PCTransport.js +43 -0
  27. package/dist/room/PCTransport.js.map +1 -1
  28. package/dist/room/RTCEngine.d.ts +21 -15
  29. package/dist/room/RTCEngine.js +122 -87
  30. package/dist/room/RTCEngine.js.map +1 -1
  31. package/dist/room/Room.d.ts +47 -3
  32. package/dist/room/Room.js +167 -10
  33. package/dist/room/Room.js.map +1 -1
  34. package/dist/room/defaults.d.ts +3 -0
  35. package/dist/room/defaults.js +13 -0
  36. package/dist/room/defaults.js.map +1 -0
  37. package/dist/room/events.d.ts +26 -3
  38. package/dist/room/events.js +25 -2
  39. package/dist/room/events.js.map +1 -1
  40. package/dist/room/participant/LocalParticipant.d.ts +32 -9
  41. package/dist/room/participant/LocalParticipant.js +165 -60
  42. package/dist/room/participant/LocalParticipant.js.map +1 -1
  43. package/dist/room/participant/Participant.d.ts +14 -0
  44. package/dist/room/participant/Participant.js +39 -0
  45. package/dist/room/participant/Participant.js.map +1 -1
  46. package/dist/room/participant/RemoteParticipant.d.ts +2 -0
  47. package/dist/room/participant/RemoteParticipant.js +14 -0
  48. package/dist/room/participant/RemoteParticipant.js.map +1 -1
  49. package/dist/room/track/LocalAudioTrack.d.ts +3 -0
  50. package/dist/room/track/LocalAudioTrack.js +37 -0
  51. package/dist/room/track/LocalAudioTrack.js.map +1 -1
  52. package/dist/room/track/LocalTrack.d.ts +6 -2
  53. package/dist/room/track/LocalTrack.js +49 -6
  54. package/dist/room/track/LocalTrack.js.map +1 -1
  55. package/dist/room/track/LocalTrackPublication.d.ts +6 -3
  56. package/dist/room/track/LocalTrackPublication.js +21 -2
  57. package/dist/room/track/LocalTrackPublication.js.map +1 -1
  58. package/dist/room/track/LocalVideoTrack.d.ts +3 -2
  59. package/dist/room/track/LocalVideoTrack.js +34 -5
  60. package/dist/room/track/LocalVideoTrack.js.map +1 -1
  61. package/dist/room/track/RemoteAudioTrack.d.ts +2 -0
  62. package/dist/room/track/RemoteAudioTrack.js +8 -0
  63. package/dist/room/track/RemoteAudioTrack.js.map +1 -1
  64. package/dist/room/track/RemoteVideoTrack.d.ts +1 -0
  65. package/dist/room/track/RemoteVideoTrack.js +6 -1
  66. package/dist/room/track/RemoteVideoTrack.js.map +1 -1
  67. package/dist/room/track/Track.d.ts +14 -2
  68. package/dist/room/track/Track.js +42 -0
  69. package/dist/room/track/Track.js.map +1 -1
  70. package/dist/room/track/TrackPublication.d.ts +1 -0
  71. package/dist/room/track/TrackPublication.js +2 -0
  72. package/dist/room/track/TrackPublication.js.map +1 -1
  73. package/dist/room/track/create.d.ts +23 -0
  74. package/dist/room/track/create.js +166 -0
  75. package/dist/room/track/create.js.map +1 -0
  76. package/dist/room/track/options.d.ts +47 -17
  77. package/dist/room/track/options.js +11 -6
  78. package/dist/room/track/options.js.map +1 -1
  79. package/dist/version.d.ts +2 -2
  80. package/dist/version.js +2 -2
  81. package/example/index.html +51 -20
  82. package/example/sample.ts +204 -75
  83. package/example/webpack.config.js +8 -2
  84. package/package.json +11 -10
  85. package/dist/livekit.d.ts +0 -42
  86. package/dist/livekit.js +0 -194
  87. package/dist/livekit.js.map +0 -1
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.createLocalScreenTracks = exports.createLocalAudioTrack = exports.createLocalVideoTrack = exports.createLocalTracks = exports.isVideoCaptureAllowed = exports.isAudioCaptureAllowed = void 0;
16
+ const errors_1 = require("../errors");
17
+ const LocalAudioTrack_1 = __importDefault(require("./LocalAudioTrack"));
18
+ const LocalTrack_1 = __importDefault(require("./LocalTrack"));
19
+ const LocalVideoTrack_1 = __importDefault(require("./LocalVideoTrack"));
20
+ const options_1 = require("./options");
21
+ const Track_1 = require("./Track");
22
+ let audioAllowed;
23
+ function isAudioCaptureAllowed() {
24
+ return audioAllowed;
25
+ }
26
+ exports.isAudioCaptureAllowed = isAudioCaptureAllowed;
27
+ let videoAllowed;
28
+ function isVideoCaptureAllowed() {
29
+ return videoAllowed;
30
+ }
31
+ exports.isVideoCaptureAllowed = isVideoCaptureAllowed;
32
+ /**
33
+ * creates a local video and audio track at the same time
34
+ * @param options
35
+ */
36
+ function createLocalTracks(options) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ if (!options)
39
+ options = {};
40
+ if (options.audio === undefined)
41
+ options.audio = {};
42
+ const constraints = LocalTrack_1.default.constraintsForOptions(options);
43
+ let stream;
44
+ try {
45
+ stream = yield navigator.mediaDevices.getUserMedia(constraints);
46
+ }
47
+ catch (e) {
48
+ if (e instanceof DOMException && e.name === 'NotAllowedError') {
49
+ if (options.audio) {
50
+ audioAllowed = false;
51
+ }
52
+ if (options.video) {
53
+ videoAllowed = false;
54
+ }
55
+ }
56
+ throw e;
57
+ }
58
+ if (options.audio) {
59
+ audioAllowed = true;
60
+ }
61
+ if (options.video) {
62
+ videoAllowed = true;
63
+ }
64
+ return stream.getTracks().map((mediaStreamTrack) => {
65
+ const isAudio = mediaStreamTrack.kind === 'audio';
66
+ let trackOptions = isAudio ? options.audio : options.video;
67
+ if (typeof trackOptions === 'boolean' || !trackOptions) {
68
+ trackOptions = {};
69
+ }
70
+ let trackConstraints;
71
+ const conOrBool = isAudio ? constraints.audio : constraints.video;
72
+ if (typeof conOrBool !== 'boolean') {
73
+ trackConstraints = conOrBool;
74
+ }
75
+ const track = createLocalTrack(mediaStreamTrack, trackOptions === null || trackOptions === void 0 ? void 0 : trackOptions.name, trackConstraints);
76
+ if (track.kind === Track_1.Track.Kind.Video) {
77
+ track.source = Track_1.Track.Source.Camera;
78
+ }
79
+ else if (track.kind === Track_1.Track.Kind.Audio) {
80
+ track.source = Track_1.Track.Source.Microphone;
81
+ }
82
+ return track;
83
+ });
84
+ });
85
+ }
86
+ exports.createLocalTracks = createLocalTracks;
87
+ /**
88
+ * Creates a [[LocalVideoTrack]] with getUserMedia()
89
+ * @param options
90
+ */
91
+ function createLocalVideoTrack(options) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const tracks = yield createLocalTracks({
94
+ audio: false,
95
+ video: options,
96
+ });
97
+ return tracks[0];
98
+ });
99
+ }
100
+ exports.createLocalVideoTrack = createLocalVideoTrack;
101
+ function createLocalAudioTrack(options) {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const tracks = yield createLocalTracks({
104
+ audio: options,
105
+ video: false,
106
+ });
107
+ return tracks[0];
108
+ });
109
+ }
110
+ exports.createLocalAudioTrack = createLocalAudioTrack;
111
+ /**
112
+ * Creates a screen capture tracks with getDisplayMedia().
113
+ * A LocalVideoTrack is always created and returned.
114
+ * If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
115
+ */
116
+ function createLocalScreenTracks(options) {
117
+ var _a;
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ if (options === undefined) {
120
+ options = {};
121
+ }
122
+ if (options.name === undefined) {
123
+ options.name = 'screen';
124
+ }
125
+ if (options.resolution === undefined) {
126
+ options.resolution = options_1.VideoPresets.fhd.resolution;
127
+ }
128
+ let videoConstraints = true;
129
+ if (options.resolution) {
130
+ videoConstraints = {
131
+ width: options.resolution.width,
132
+ height: options.resolution.height,
133
+ };
134
+ }
135
+ // typescript definition is missing getDisplayMedia: https://github.com/microsoft/TypeScript/issues/33232
136
+ // @ts-ignore
137
+ const stream = yield navigator.mediaDevices.getDisplayMedia({
138
+ audio: (_a = options.audio) !== null && _a !== void 0 ? _a : false,
139
+ video: videoConstraints,
140
+ });
141
+ const tracks = stream.getVideoTracks();
142
+ if (tracks.length === 0) {
143
+ throw new errors_1.TrackInvalidError('no video track found');
144
+ }
145
+ const screenVideo = new LocalVideoTrack_1.default(tracks[0], options.name);
146
+ screenVideo.source = Track_1.Track.Source.ScreenShare;
147
+ const localTracks = [screenVideo];
148
+ if (stream.getAudioTracks().length > 0) {
149
+ localTracks.push(new LocalAudioTrack_1.default(stream.getAudioTracks()[0], options.name));
150
+ }
151
+ return localTracks;
152
+ });
153
+ }
154
+ exports.createLocalScreenTracks = createLocalScreenTracks;
155
+ /** @internal */
156
+ function createLocalTrack(mediaStreamTrack, name, constraints) {
157
+ switch (mediaStreamTrack.kind) {
158
+ case 'audio':
159
+ return new LocalAudioTrack_1.default(mediaStreamTrack, name, constraints);
160
+ case 'video':
161
+ return new LocalVideoTrack_1.default(mediaStreamTrack, name, constraints);
162
+ default:
163
+ throw new errors_1.TrackInvalidError(`unsupported track type: ${mediaStreamTrack.kind}`);
164
+ }
165
+ }
166
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/room/track/create.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,17 @@
1
- /**
2
- * Options when publishing tracks
3
- */
4
- export interface TrackPublishOptions {
1
+ import { Track } from './Track';
2
+ export interface TrackPublishDefaults {
5
3
  /**
6
- * set a track name
4
+ * encoding parameters for camera track
7
5
  */
8
- name?: string;
6
+ videoEncoding?: VideoEncoding;
9
7
  /**
10
- * encoding parameters, if empty, LiveKit will automatically select an appropriate
11
- * encoding based on bitrate
8
+ * default video capture resolution
12
9
  */
13
- videoEncoding?: VideoEncoding;
10
+ videoResolution?: VideoResolution;
11
+ /**
12
+ * encoding parameters for screen share track
13
+ */
14
+ screenShareEncoding?: VideoEncoding;
14
15
  /**
15
16
  * codec, defaults to vp8
16
17
  */
@@ -19,12 +20,29 @@ export interface TrackPublishOptions {
19
20
  * max audio bitrate, defaults to [[AudioPresets.speech]]
20
21
  */
21
22
  audioBitrate?: number;
23
+ /**
24
+ * dtx (Discontinuous Tranmission of audio), defaults to true
25
+ */
26
+ dtx?: boolean;
22
27
  /**
23
28
  * use simulcast, defaults to false.
24
29
  * When using simulcast, LiveKit will publish up to three version of the stream at varying qualiti
25
30
  */
26
31
  simulcast?: boolean;
27
32
  }
33
+ /**
34
+ * Options when publishing tracks
35
+ */
36
+ export interface TrackPublishOptions extends TrackPublishDefaults {
37
+ /**
38
+ * set a track name
39
+ */
40
+ name?: string;
41
+ /**
42
+ * Source of track, camera, microphone, or screen
43
+ */
44
+ source?: Track.Source;
45
+ }
28
46
  export interface CreateLocalTracksOptions {
29
47
  /**
30
48
  * audio track options, true to create with defaults. false if audio shouldn't be created
@@ -52,13 +70,18 @@ export interface CreateVideoTrackOptions extends CreateLocalTrackOptions {
52
70
  * [valid options](https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints/facingMode)
53
71
  */
54
72
  facingMode?: ConstrainDOMString;
55
- resolution?: VideoResolutionConstraint;
73
+ resolution?: VideoResolution;
56
74
  }
57
75
  export interface CreateScreenTrackOptions {
58
76
  /** name of track, defaults to "screen" */
59
77
  name?: string;
78
+ /**
79
+ * true to capture audio shared. browser support for audio capturing in
80
+ * screenshare is limited: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#browser_compatibility
81
+ */
82
+ audio?: boolean;
60
83
  /** capture resolution, defaults to full HD */
61
- resolution?: VideoResolutionConstraint;
84
+ resolution?: VideoResolution;
62
85
  }
63
86
  export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
64
87
  /**
@@ -104,21 +127,21 @@ export interface CreateAudioTrackOptions extends CreateLocalTrackOptions {
104
127
  * }
105
128
  * ```
106
129
  */
107
- export interface VideoResolutionConstraint {
108
- width: ConstrainULong;
109
- height: ConstrainULong;
110
- frameRate?: ConstrainDouble;
130
+ export interface VideoResolution {
131
+ width: number;
132
+ height: number;
133
+ frameRate?: number;
111
134
  }
112
135
  export interface VideoEncoding {
113
136
  maxBitrate: number;
114
- maxFramerate: number;
137
+ maxFramerate?: number;
115
138
  }
116
139
  export declare class VideoPreset {
117
140
  encoding: VideoEncoding;
118
141
  width: number;
119
142
  height: number;
120
143
  constructor(width: number, height: number, maxBitrate: number, maxFramerate: number);
121
- get resolution(): VideoResolutionConstraint;
144
+ get resolution(): VideoResolution;
122
145
  }
123
146
  export interface AudioPreset {
124
147
  maxBitrate: number;
@@ -149,3 +172,10 @@ export declare const VideoPresets43: {
149
172
  hd: VideoPreset;
150
173
  fhd: VideoPreset;
151
174
  };
175
+ export declare const ScreenSharePresets: {
176
+ vga: VideoPreset;
177
+ hd_8: VideoPreset;
178
+ hd_15: VideoPreset;
179
+ fhd_15: VideoPreset;
180
+ fhd_30: VideoPreset;
181
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VideoPresets43 = exports.VideoPresets = exports.AudioPresets = exports.VideoPreset = void 0;
3
+ exports.ScreenSharePresets = exports.VideoPresets43 = exports.VideoPresets = exports.AudioPresets = exports.VideoPreset = void 0;
4
4
  class VideoPreset {
5
5
  constructor(width, height, maxBitrate, maxFramerate) {
6
6
  this.width = width;
@@ -12,11 +12,9 @@ class VideoPreset {
12
12
  }
13
13
  get resolution() {
14
14
  return {
15
- width: { ideal: this.width },
16
- height: { ideal: this.height },
17
- frameRate: {
18
- ideal: this.encoding.maxFramerate,
19
- },
15
+ width: this.width,
16
+ height: this.height,
17
+ frameRate: this.encoding.maxFramerate,
20
18
  };
21
19
  }
22
20
  }
@@ -53,4 +51,11 @@ exports.VideoPresets43 = {
53
51
  hd: new VideoPreset(960, 720, 2000000, 30),
54
52
  fhd: new VideoPreset(1440, 1080, 3200000, 30),
55
53
  };
54
+ exports.ScreenSharePresets = {
55
+ vga: new VideoPreset(640, 360, 200000, 3),
56
+ hd_8: new VideoPreset(1280, 720, 400000, 5),
57
+ hd_15: new VideoPreset(1280, 720, 1250000, 15),
58
+ fhd_15: new VideoPreset(1920, 1080, 2000000, 15),
59
+ fhd_30: new VideoPreset(1920, 1080, 4000000, 30),
60
+ };
56
61
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/room/track/options.ts"],"names":[],"mappings":";;;AAyIA,MAAa,WAAW;IAOtB,YAAY,KAAa,EAAE,MAAc,EAAE,UAAkB,EAAE,YAAoB;QACjF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG;YACd,UAAU;YACV,YAAY;SACb,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO;YACL,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAC5B,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YAC9B,SAAS,EAAE;gBACT,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;aAClC;SACF,CAAC;IACJ,CAAC;CACF;AAzBD,kCAyBC;AAQD,IAAiB,YAAY,CAU5B;AAVD,WAAiB,YAAY;IACd,sBAAS,GAAgB;QACpC,UAAU,EAAE,KAAM;KACnB,CAAC;IACW,mBAAM,GAAgB;QACjC,UAAU,EAAE,KAAM;KACnB,CAAC;IACW,kBAAK,GAAgB;QAChC,UAAU,EAAE,KAAM;KACnB,CAAC;AACJ,CAAC,EAVgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAU5B;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,EAAE,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAC7C,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CAChD,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,EAAE,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CAChD,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/room/track/options.ts"],"names":[],"mappings":";;;AAsKA,MAAa,WAAW;IAOtB,YAAY,KAAa,EAAE,MAAc,EAAE,UAAkB,EAAE,YAAoB;QACjF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG;YACd,UAAU;YACV,YAAY;SACb,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACZ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;SACtC,CAAC;IACJ,CAAC;CACF;AAvBD,kCAuBC;AAQD,IAAiB,YAAY,CAU5B;AAVD,WAAiB,YAAY;IACd,sBAAS,GAAgB;QACpC,UAAU,EAAE,KAAM;KACnB,CAAC;IACW,mBAAM,GAAgB;QACjC,UAAU,EAAE,KAAM;KACnB,CAAC;IACW,kBAAK,GAAgB;QAChC,UAAU,EAAE,KAAM;KACnB,CAAC;AACJ,CAAC,EAVgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAU5B;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,EAAE,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAC7C,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CAChD,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,EAAE,CAAC;IAC3C,EAAE,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAC5C,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CAChD,CAAC;AAEW,QAAA,kBAAkB,GAAG;IAChC,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAO,EAAE,CAAC,CAAC;IAC1C,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,MAAO,EAAE,CAAC,CAAC;IAC5C,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAS,EAAE,EAAE,CAAC;IAChD,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;IAClD,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAS,EAAE,EAAE,CAAC;CACnD,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.11.2";
2
- export declare const protocolVersion = 2;
1
+ export declare const version = "0.13.0";
2
+ export declare const protocolVersion = 4;
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.protocolVersion = exports.version = void 0;
4
- exports.version = '0.11.2';
5
- exports.protocolVersion = 2;
4
+ exports.version = '0.13.0';
5
+ exports.protocolVersion = 4;
6
6
  //# sourceMappingURL=version.js.map
@@ -52,7 +52,19 @@
52
52
  </div>
53
53
 
54
54
  <div class="form-group row">
55
- <div class="col-md-3"></div>
55
+ <div class="col-md-2 offset-md-1">
56
+ <div class="form-check">
57
+ <input
58
+ type="checkbox"
59
+ class="form-check-input"
60
+ id="publish-option"
61
+ checked
62
+ />
63
+ <label for="checkbox" class="form-check-label">
64
+ Publish
65
+ </label>
66
+ </div>
67
+ </div>
56
68
  <div class="col-md-2">
57
69
  <div class="form-check">
58
70
  <input
@@ -84,44 +96,44 @@
84
96
  <div class="col-md-2">
85
97
  <button
86
98
  id="connect-button"
87
- class="btn btn-primary"
99
+ class="btn btn-primary mt-1"
88
100
  type="button"
89
101
  onclick="connectWithFormInput()"
90
102
  >
91
103
  Connect
92
104
  </button>
93
105
  </div>
94
- <div class="col-md-8">
106
+ <div class="col-md-10">
95
107
  <button
96
- id="mute-audio-button"
97
- class="btn btn-secondary"
108
+ id="toggle-audio-button"
109
+ class="btn btn-secondary mt-1"
98
110
  disabled
99
111
  type="button"
100
- onclick="muteAudio()"
112
+ onclick="toggleAudio()"
101
113
  >
102
- Mute Audio
114
+ Enable Audio
103
115
  </button>
104
116
  <button
105
- id="mute-video-button"
106
- class="btn btn-secondary"
117
+ id="toggle-video-button"
118
+ class="btn btn-secondary mt-1"
107
119
  disabled
108
120
  type="button"
109
- onclick="muteVideo()"
121
+ onclick="toggleVideo()"
110
122
  >
111
- Mute Video
123
+ Enable Video
112
124
  </button>
113
125
  <button
114
126
  id="flip-video-button"
115
- class="btn btn-secondary"
127
+ class="btn btn-secondary mt-1"
116
128
  disabled
117
129
  type="button"
118
130
  onclick="flipVideo()"
119
131
  >
120
- Flip Video
132
+ Back Camera
121
133
  </button>
122
134
  <button
123
135
  id="share-screen-button"
124
- class="btn btn-secondary"
136
+ class="btn btn-secondary mt-1"
125
137
  disabled
126
138
  type="button"
127
139
  onclick="shareScreen()"
@@ -130,16 +142,16 @@
130
142
  </button>
131
143
  <button
132
144
  id="disconnect-ws-button"
133
- class="btn btn-warning"
145
+ class="btn btn-warning mt-1"
134
146
  disabled
135
147
  type="button"
136
148
  onclick="disconnectSignal()"
137
149
  >
138
- WS reconnect
150
+ WS Reconnect
139
151
  </button>
140
152
  <button
141
153
  id="disconnect-room-button"
142
- class="btn btn-danger"
154
+ class="btn btn-danger mt-1"
143
155
  disabled
144
156
  type="button"
145
157
  onclick="disconnectRoom()"
@@ -148,16 +160,35 @@
148
160
  </button>
149
161
  <button
150
162
  id="start-audio-button"
151
- class="btn btn-secondary"
163
+ class="btn btn-secondary mt-1"
152
164
  disabled
153
165
  type="button"
154
166
  onclick="startAudio()"
155
167
  >
156
- Enable audio
168
+ Enable Audio
157
169
  </button>
158
170
  </div>
159
171
  </div>
160
172
 
173
+ <!-- video devices -->
174
+ <div class="form-group row">
175
+ <div class="col-md-4">
176
+ <select id="video-input" class="custom-select" onchange="handleDeviceSelected(event)">
177
+ <option selected>Video Input (default)</option>
178
+ </select>
179
+ </div>
180
+ <div class="col-md-4">
181
+ <select id="audio-input" class="custom-select" onchange="handleDeviceSelected(event)">
182
+ <option selected>Audio Input (default)</option>
183
+ </select>
184
+ </div>
185
+ <div class="col-md-4">
186
+ <select id="audio-output" class="custom-select" onchange="handleDeviceSelected(event)">
187
+ <option selected>Audio Output (default)</option>
188
+ </select>
189
+ </div>
190
+ </div>
191
+
161
192
  <div class="form-group row">
162
193
  <textarea
163
194
  class="form-control col-md-12"
@@ -174,7 +205,7 @@
174
205
  <textarea class="form-control" id="chat" rows="15"></textarea>
175
206
  </div>
176
207
  </div>
177
- <div class="row">
208
+ <div class="row mt-1">
178
209
  <div class="col-md-10">
179
210
  <input type="text" class="form-control" id="entry" />
180
211
  </div>