Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

Historical list of changes in releases

## [v0.0.51] - 2025-08-18
* Batch multiple enumeration calls into a shared promise ([#2b666c9e](https://github.com/digitalsamba/embedded-sdk/commit/63a1e03d4e3da93d2051bc4ad6bae39546400184)).

## [v0.0.50] - 2025-08-18
* Add new methods for managing topbar ([#77c4ffbc](https://github.com/digitalsamba/embedded-sdk/commit/77c4ffbcf6e734d09e670707067ff859f7022caa)).

Expand Down
5 changes: 3 additions & 2 deletions dist/cjs/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { EventEmitter } from 'events';
import { PermissionManager } from './utils/PermissionManager';
import { LayoutMode } from './utils/vars';
import { AnyFn, BrandingOptionsConfig, CaptionsOptions, EmbeddedInstance, FeatureFlag, InitialRoomSettings, InitOptions, InstanceProperties, QueuedEventListener, QueuedUICallback, QueuedTileAction, Stored, TileActionProperties, UICallbackName, UserId, UserTileType, VirtualBackgroundOptions, AddImageToWhiteboardOptions, TemplateParams, CreateWhiteboardOptions, AddCustomTileOptions, BroadcastOptions, SendMessageToCustomTileOptions } from './types';
import { AnyFn, BrandingOptionsConfig, CaptionsOptions, EmbeddedInstance, FeatureFlag, InitialRoomSettings, InitOptions, InstanceProperties, QueuedEventListener, QueuedUICallback, QueuedTileAction, Stored, TileActionProperties, UICallbackName, UserId, UserTileType, VirtualBackgroundOptions, AddImageToWhiteboardOptions, TemplateParams, CreateWhiteboardOptions, AddCustomTileOptions, BroadcastOptions, SendMessageToCustomTileOptions, MobileScreenshareOptions } from './types';
export declare class DigitalSambaEmbedded extends EventEmitter implements EmbeddedInstance {
initOptions: Partial<InitOptions>;
templateParams?: TemplateParams;
Expand All @@ -18,7 +18,6 @@ export declare class DigitalSambaEmbedded extends EventEmitter implements Embedd
queuedUICallbacks: QueuedUICallback[];
queuedTileActions: QueuedTileAction[];
private tileActionListeners;
private defaultMediaDevices;
constructor(options?: Partial<InitOptions>, instanceProperties?: Partial<InstanceProperties>, loadImmediately?: boolean);
static createControl: (initOptions: Partial<InitOptions>, instanceProperties?: InstanceProperties) => DigitalSambaEmbedded;
private mountFrame;
Expand Down Expand Up @@ -109,5 +108,7 @@ export declare class DigitalSambaEmbedded extends EventEmitter implements Embedd
minimizeUser: () => void;
minimizeContent: () => void;
changeRole: (userId: UserId, role: string) => void;
startMobileScreenshare: (data: MobileScreenshareOptions) => void;
stopMobileScreenshare: (data: MobileScreenshareOptions) => void;
}
export default DigitalSambaEmbedded;
27 changes: 15 additions & 12 deletions dist/cjs/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DigitalSambaEmbedded = void 0;
const events_1 = require("events");
const enumerateDevices_1 = require("./utils/enumerateDevices");
const PermissionManager_1 = require("./utils/PermissionManager");
const vars_1 = require("./utils/vars");
const proxy_1 = require("./utils/proxy");
Expand All @@ -31,7 +30,6 @@ class DigitalSambaEmbedded extends events_1.EventEmitter {
this.queuedUICallbacks = [];
this.queuedTileActions = [];
this.tileActionListeners = {};
this.defaultMediaDevices = {};
this.mountFrame = (loadImmediately) => {
const { url, frame, root } = this.initOptions;
if (root) {
Expand Down Expand Up @@ -72,8 +70,6 @@ class DigitalSambaEmbedded extends events_1.EventEmitter {
this.frame.style.display = 'block';
};
this.prepareRoomSettings = (settings) => __awaiter(this, void 0, void 0, function* () {
this.defaultMediaDevices = settings.mediaDevices || {};
settings.mediaDevices = {};
if (settings.appLanguage) {
this.stored.roomState.appLanguage = settings.appLanguage;
}
Expand Down Expand Up @@ -394,19 +390,20 @@ class DigitalSambaEmbedded extends events_1.EventEmitter {
}
case 'internalMediaDeviceChanged': {
const data = message.data;
const devices = yield (0, enumerateDevices_1.enumerateDevices)();
if (this.defaultMediaDevices && Object.keys(this.defaultMediaDevices).length > 0) {
this.sendMessage({ type: 'applyMediaDevices', data: this.defaultMediaDevices });
this.defaultMediaDevices = {};
}
const devices = data.availableDevices || [];
const matchingDevice = devices.find((device) => device.kind === data.kind && device.label === data.label);
if (matchingDevice) {
const previousDeviceId = this.stored.roomState.media.activeDevices[data.kind];
const previousDeviceLabel = this.stored.roomState.media.activeDevices[data.kind];
this._emit('mediaDeviceChanged', {
type: 'mediaDeviceChanged',
data: Object.assign(Object.assign({}, data), { previousDeviceId, deviceId: matchingDevice.deviceId }),
data: {
previousDeviceLabel,
label: matchingDevice.label,
kind: matchingDevice.kind,
availableDevices: devices,
},
});
this.stored.roomState.media.activeDevices[data.kind] = matchingDevice.deviceId;
this.stored.roomState.media.activeDevices[data.kind] = data.label;
}
break;
}
Expand Down Expand Up @@ -763,6 +760,12 @@ class DigitalSambaEmbedded extends events_1.EventEmitter {
this.changeRole = (userId, role) => {
this.sendMessage({ type: 'changeRole', data: { userId, role } });
};
this.startMobileScreenshare = (data) => {
this.sendMessage({ type: 'startMobileScreenshare', data });
};
this.stopMobileScreenshare = (data) => {
this.sendMessage({ type: 'stopMobileScreenshare', data });
};
console.log(`SDK Version: ${vars_1.PACKAGE_VERSION}`);
this.stored = (0, vars_1.getDefaultStoredState)();
this.stored.roomState = (0, proxy_1.createWatchedProxy)(Object.assign({}, this.stored.roomState), this.emitRoomStateUpdated);
Expand Down
2 changes: 1 addition & 1 deletion dist/cjs/tsconfig.cjs.tsbuildinfo

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion dist/cjs/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export interface InitialRoomSettings {
mediaDevices?: MediaDeviceSettings;
requireRemoveUserConfirmation: boolean;
baseDomain?: string;
mobileScreenshare?: boolean;
}
export interface QueuedEventListener {
operation: 'connectEventListener' | 'disconnectEventListener';
Expand Down Expand Up @@ -75,7 +76,7 @@ export interface InstanceProperties {
frameAttributes?: Partial<FrameAttributes>;
reportErrors?: boolean;
}
export type SendMessageType = 'connect' | 'setTemplateParams' | 'enableVideo' | 'enableAudio' | 'disableVideo' | 'disableAudio' | 'toggleVideo' | 'toggleAudio' | 'addImageToWhiteboard' | 'startScreenshare' | 'stopScreenshare' | 'startRecording' | 'stopRecording' | 'showToolbar' | 'hideToolbar' | 'toggleToolbar' | 'showTopbar' | 'hideTopbar' | 'toggleTopbar' | 'changeLayoutMode' | 'leaveSession' | 'endSession' | 'requestToggleAudio' | 'requestMute' | 'requestUnmute' | 'removeUser' | 'showCaptions' | 'hideCaptions' | 'toggleCaptions' | 'configureCaptions' | 'raiseHand' | 'lowerHand' | 'allowBroadcast' | 'disallowBroadcast' | 'allowScreenshare' | 'disallowScreenshare' | 'configureVirtualBackground' | 'disableVirtualBackground' | 'muteFrame' | 'unmuteFrame' | 'toggleMuteFrame' | 'changeToolbarPosition' | 'changeBrandingOptions' | 'minimizeLocalTile' | 'maximizeLocalTile' | 'pinUser' | 'maximizeUser' | 'minimizeContent' | 'connectEventListener' | 'disconnectEventListener' | 'connectUICallback' | 'disconnectUICallback' | 'changeRole' | 'addTileAction' | 'removeTileAction' | 'addCustomTile' | 'removeCustomTile' | 'sendMessageToCustomTile' | 'openLibraryFile' | 'closeLibraryFile' | 'toggleLibraryFile' | 'createWhiteboard' | 'openWhiteboard' | 'closeWhiteboard' | 'toggleWhiteboard' | 'applyMediaDevices';
export type SendMessageType = 'startMobileScreenshare' | 'stopMobileScreenshare' | 'connect' | 'setTemplateParams' | 'enableVideo' | 'enableAudio' | 'disableVideo' | 'disableAudio' | 'toggleVideo' | 'toggleAudio' | 'addImageToWhiteboard' | 'startScreenshare' | 'stopScreenshare' | 'startRecording' | 'stopRecording' | 'showToolbar' | 'hideToolbar' | 'toggleToolbar' | 'showTopbar' | 'hideTopbar' | 'toggleTopbar' | 'changeLayoutMode' | 'leaveSession' | 'endSession' | 'requestToggleAudio' | 'requestMute' | 'requestUnmute' | 'removeUser' | 'showCaptions' | 'hideCaptions' | 'toggleCaptions' | 'configureCaptions' | 'raiseHand' | 'lowerHand' | 'allowBroadcast' | 'disallowBroadcast' | 'allowScreenshare' | 'disallowScreenshare' | 'configureVirtualBackground' | 'disableVirtualBackground' | 'muteFrame' | 'unmuteFrame' | 'toggleMuteFrame' | 'changeToolbarPosition' | 'changeBrandingOptions' | 'minimizeLocalTile' | 'maximizeLocalTile' | 'pinUser' | 'maximizeUser' | 'minimizeContent' | 'connectEventListener' | 'disconnectEventListener' | 'connectUICallback' | 'disconnectUICallback' | 'changeRole' | 'addTileAction' | 'removeTileAction' | 'addCustomTile' | 'removeCustomTile' | 'sendMessageToCustomTile' | 'openLibraryFile' | 'closeLibraryFile' | 'toggleLibraryFile' | 'createWhiteboard' | 'openWhiteboard' | 'closeWhiteboard' | 'toggleWhiteboard';
export declare const receiveMessagesTypes: readonly ["connected", "frameLoaded", "userJoined", "usersUpdated", "userLeft", "sessionEnded", "roomJoined", "videoEnabled", "videoDisabled", "audioEnabled", "audioDisabled", "screenshareStarted", "screenshareStopped", "recordingStarted", "recordingStopped", "recordingFailed", "layoutModeChanged", "activeSpeakerChanged", "speakerStoppedTalking", "appError", "captionsEnabled", "captionsDisabled", "captionsSpokenLanguageChanged", "captionsFontSizeChanged", "permissionsChanged", "handRaised", "handLowered", "virtualBackgroundChanged", "virtualBackgroundDisabled", "roomStateUpdated", "localTileMaximized", "localTileMinimized", "userMaximized", "internalMediaDeviceChanged", "mediaPermissionsFailed", "documentEvent", "UICallback", "appLanguageChanged", "roleChanged", "tileAction", "chatMessageReceived", "userLeftBatch"];
export type ReceiveMessageType = typeof receiveMessagesTypes[number];
export type UICallbackName = 'leaveSession';
Expand Down Expand Up @@ -181,6 +182,7 @@ export type MediaDeviceUpdatePayload = {
previousDeviceId?: string;
kind: MediaDeviceKind;
label: string;
availableDevices?: MediaDeviceInfo[];
};
type TileActionScope = 'all' | 'remote' | 'local' | 'screenshare-local' | 'screenshare-remote';
export type TileActionProperties = {
Expand All @@ -200,6 +202,14 @@ export type CreateWhiteboardOptions = {
personal: boolean;
folderId: string;
};
export type Stream = {
type: 'video' | 'audio';
mid: string;
};
export type MobileScreenshareOptions = {
feedId: string;
streams: Stream[];
};
export type CustomTilePosition = 'first' | 'last';
export type AddCustomTileOptions = {
name: string;
Expand Down
1 change: 0 additions & 1 deletion dist/cjs/utils/enumerateDevices.d.ts

This file was deleted.

48 changes: 0 additions & 48 deletions dist/cjs/utils/enumerateDevices.js

This file was deleted.

2 changes: 1 addition & 1 deletion dist/cjs/utils/vars.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Stored } from '../types';
export declare const PACKAGE_VERSION = "0.0.50";
export declare const PACKAGE_VERSION = "0.0.51";
export declare const CONNECT_TIMEOUT = 10000;
export declare const internalEvents: Record<string, boolean>;
export declare enum LayoutMode {
Expand Down
2 changes: 1 addition & 1 deletion dist/cjs/utils/vars.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDefaultStoredState = exports.PermissionTypes = exports.LayoutMode = exports.internalEvents = exports.CONNECT_TIMEOUT = exports.PACKAGE_VERSION = void 0;
exports.PACKAGE_VERSION = '0.0.50';
exports.PACKAGE_VERSION = '0.0.51';
exports.CONNECT_TIMEOUT = 10000;
exports.internalEvents = {
roomJoined: true,
Expand Down
2 changes: 1 addition & 1 deletion dist/demo/index.js

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions dist/demo/initial-config.html
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@
appLanguage: undefined,
requireRemoveUserConfirmation: true,
mediaDevices: {},
replaceVirtualBackgrounds: true,
// replaceVirtualBackgrounds: true,
virtualBackgrounds: [
{
id: "woman",
Expand Down Expand Up @@ -313,7 +313,7 @@
const select = document.querySelector("#" + device.kind);
if (select) {
const deviceLabel = device.label || `Device (${device.deviceId || device.kind})`;
select.innerHTML += `<option value="${device.deviceId}">${deviceLabel}</option>`;
select.innerHTML += `<option value="${deviceLabel}">${deviceLabel}</option>`;
}
});
};
Expand Down Expand Up @@ -352,7 +352,7 @@
if (input.value) {
ROOM_URL = input.value;

// initialSettings.virtualBackground = vbStateToInitState(initialSettings.virtualBackground);
initialSettings.virtualBackground = vbStateToInitState(initialSettings.virtualBackground);

loadRoom();
} else {
Expand Down Expand Up @@ -406,7 +406,7 @@
sambaEmbedded.on("*", (data) => {
const logList = document.querySelector(".log-list");

console.log('data', data)
console.log('SDK Event:', data)

if (logList) {
logList.innerHTML += `<div>
Expand Down
5 changes: 3 additions & 2 deletions dist/esm/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { EventEmitter } from 'events';
import { PermissionManager } from './utils/PermissionManager';
import { LayoutMode } from './utils/vars';
import { AnyFn, BrandingOptionsConfig, CaptionsOptions, EmbeddedInstance, FeatureFlag, InitialRoomSettings, InitOptions, InstanceProperties, QueuedEventListener, QueuedUICallback, QueuedTileAction, Stored, TileActionProperties, UICallbackName, UserId, UserTileType, VirtualBackgroundOptions, AddImageToWhiteboardOptions, TemplateParams, CreateWhiteboardOptions, AddCustomTileOptions, BroadcastOptions, SendMessageToCustomTileOptions } from './types';
import { AnyFn, BrandingOptionsConfig, CaptionsOptions, EmbeddedInstance, FeatureFlag, InitialRoomSettings, InitOptions, InstanceProperties, QueuedEventListener, QueuedUICallback, QueuedTileAction, Stored, TileActionProperties, UICallbackName, UserId, UserTileType, VirtualBackgroundOptions, AddImageToWhiteboardOptions, TemplateParams, CreateWhiteboardOptions, AddCustomTileOptions, BroadcastOptions, SendMessageToCustomTileOptions, MobileScreenshareOptions } from './types';
export declare class DigitalSambaEmbedded extends EventEmitter implements EmbeddedInstance {
initOptions: Partial<InitOptions>;
templateParams?: TemplateParams;
Expand All @@ -18,7 +18,6 @@ export declare class DigitalSambaEmbedded extends EventEmitter implements Embedd
queuedUICallbacks: QueuedUICallback[];
queuedTileActions: QueuedTileAction[];
private tileActionListeners;
private defaultMediaDevices;
constructor(options?: Partial<InitOptions>, instanceProperties?: Partial<InstanceProperties>, loadImmediately?: boolean);
static createControl: (initOptions: Partial<InitOptions>, instanceProperties?: InstanceProperties) => DigitalSambaEmbedded;
private mountFrame;
Expand Down Expand Up @@ -109,5 +108,7 @@ export declare class DigitalSambaEmbedded extends EventEmitter implements Embedd
minimizeUser: () => void;
minimizeContent: () => void;
changeRole: (userId: UserId, role: string) => void;
startMobileScreenshare: (data: MobileScreenshareOptions) => void;
stopMobileScreenshare: (data: MobileScreenshareOptions) => void;
}
export default DigitalSambaEmbedded;
Loading