New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@tencentcloud/call-uikit-vue2

Package Overview
Dependencies
Maintainers
9
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tencentcloud/call-uikit-vue2 - npm Package Compare versions

Comparing version 2.4.0 to 2.4.2

src/Components/assets/desktop/invite_user.svg

4

package.json
{
"name": "@tencentcloud/call-uikit-vue2",
"version": "2.4.0",
"version": "2.4.2",
"main": "./tuicall-uikit-vue2.umd.js",

@@ -16,3 +16,3 @@ "module": "./tuicall-uikit-vue2.es.js",

"dependencies": {
"tuicall-engine-webrtc": "^1.5.6"
"tuicall-engine-webrtc": "^1.5.7"
},

@@ -19,0 +19,0 @@ "bugs": {

@@ -14,3 +14,3 @@ import { onMounted, onUpdated, ref } from '../../../../adapter-vue';

export function useSwiperSliders(swiperContainerRef) {
export function useSwiperSliders(swiperContainerRef): any {
const sliders = ref<Element[]>([]);

@@ -17,0 +17,0 @@ const updateSliders = () => {

@@ -32,3 +32,3 @@ import {

};
const Version = '2.4.0'; // basic-demo 原来上报使用
const Version = '2.4.2'; // basic-demo 原来上报使用

@@ -35,0 +35,0 @@ // 输出产物

@@ -1,2 +0,12 @@

import { ITUICallService, ICallParams, IGroupCallParams, IUserInfo, ICallbackParam, ISelfInfoParams } from '../interface/ICallService';
import {
ITUICallService,
ICallParams,
IGroupCallParams,
IUserInfo,
ICallbackParam,
ISelfInfoParams,
IBellParams,
IInviteUserParams,
IJoinInGroupCallParams
} from '../interface/ICallService';
import {

@@ -23,8 +33,7 @@ StoreName,

import { CallTips, t } from '../locales';
// @ts-ignore
import { BellContext } from './web';
import { checkLocalMP3FileExists } from '../utils';
import { BellContext } from './bellContext';
import { avoidRepeatedCall } from '../utils/validate';
import { handleRepeatedCallError, handleNoDevicePermissionError, formatTime, formatTimeInverse } from '../utils/common-utils';
import { getMyProfile, getRemoteUserProfile, generateText, generateStatusChangeText } from './utils';
import { getMyProfile, getRemoteUserProfile, generateText, generateStatusChangeText, getGroupMemberList, getGroupProfile } from './utils';
import timer from '../utils/timer';

@@ -35,7 +44,5 @@ import { ITUIGlobal } from '../interface/ITUIGlobal';

import TuiStore from '../TUIStore/tuiStore';
import DEFAULT_CALLER_BELL_FILEPATH from '../assets/phone_dialing.mp3';
import DEFAULT_CALLEE_BELL_FILEPATH from '../assets/phone_ringing.mp3';
const TUIGlobal: ITUIGlobal = TuiGlobal.getInstance();
const TUIStore: ITUIStore = TuiStore.getInstance();
const version = '2.4.0';
const version = '2.4.2';
const frameWork = 'vue2.7';

@@ -50,7 +57,7 @@ export { TUIGlobal, TUIStore };

private _timerId: number = -1;
private _callingBell: any = null;
private _bellFilePath: string | undefined;
private _bellContext: any = null;
constructor() {
console.log(`${NAME.PREFIX}version: ${version}`);
this._watchTUIStore();
this._bellContext = new BellContext();
}

@@ -86,4 +93,2 @@ static getInstance() {

await this._tuiCallEngine.login({ userID, userSig, assetsPath: '' }); // web && mini
this._callingBell = new BellContext();
this._updateDeviceList();

@@ -104,6 +109,7 @@ } catch (error) {

this._removeListenTuiCallEngineEvent();
this._callingBell.destroy();
this._bellContext.destroy();
this._unwatchTUIStore();
await this._tuiCallEngine.destroyInstance();
this._tuiCallEngine = null;
this._bellContext = null;
}

@@ -144,12 +150,12 @@ } catch (error) {

@avoidRepeatedCall()
public async inviteUser(params: any) {
const { userIDList = [] } = params;
public async inviteUser(params: IInviteUserParams) {
try {
const response = this._tuiCallEngine && await this._tuiCallEngine.inviteUser(params);
if (response) {
const remoteUserInfoList: IUserInfo[] = await getRemoteUserProfile(userIDList, this.getTim()); // eslint-disable-line
// this._updateRemoteUserInfoList(remoteUserInfoList);
}
const { userIDList } = params;
let inviteUserInfoList = await getRemoteUserProfile(userIDList, this.getTim());
const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, [...remoteUserInfoList, ...inviteUserInfoList]);
this._tuiCallEngine && await this._tuiCallEngine.inviteUser(params);
} catch (error: any) {
console.error(`${NAME.PREFIX}inviteUser failed, error: ${JSON.stringify(error)}.`);
this._resetCallStore();
throw error;

@@ -159,8 +165,24 @@ }

@avoidRepeatedCall()
public async joinInGroupCall(params: any) {
public async joinInGroupCall(params: IJoinInGroupCallParams) {
try {
await this._tuiCallEngine.joinInGroupCall(params);
TUIStore.update(StoreName.CALL, NAME.CALL_STATUS, CallStatus.CONNECTED);
const updateStoreParams = {
[NAME.CALL_ROLE]: CallRole.CALLEE,
[NAME.IS_GROUP]: true,
[NAME.CALL_STATUS]: CallStatus.CONNECTED,
[NAME.CALL_MEDIA_TYPE]: params.type,
[NAME.GROUP_ID]: params.groupID,
[NAME.ROOM_ID]: params.roomID,
};
TUIStore.updateStore(updateStoreParams, StoreName.CALL);
const response = await this._tuiCallEngine.joinInGroupCall(params);
(params.type === CallMediaType.VIDEO) && await this.openCamera(NAME.LOCAL_VIDEO);
TUIStore.update(StoreName.CALL, NAME.IS_CLICKABLE, true);
this._startTimer();
await this._tuiCallEngine.setVideoQuality(TUIStore.getData(StoreName.CALL, NAME.VIDEO_RESOLUTION));
const localUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, { ...localUserInfo, isEnter: true });
this._setLocalUserInfoAudioVideoAvailable(true, NAME.AUDIO);
} catch (error) {
console.error(`${NAME.PREFIX}joinInGroupCall failed, error: ${JSON.stringify(error)}.`);
this._resetCallStore();
throw error;

@@ -206,2 +228,5 @@ }

}
public getTUICallEngineInstance(): any {
return this?._tuiCallEngine || null;
}
// =============================【内部按钮操作方法】=============================

@@ -319,11 +344,20 @@ @avoidRepeatedCall()

public async setCallingBell(filePath?: string) {
let result: string | boolean = filePath;
result = await checkLocalMP3FileExists(filePath);
if (result) {
this._bellFilePath = filePath;
} else {
this._bellFilePath = DEFAULT_CALLEE_BELL_FILEPATH;
console.warn(`${NAME.PREFIX}setCallingBell: ${filePath} The media ringtone file does not exist or has an incorrect format.`);
let isCheckFileExist: boolean = true;
isCheckFileExist = await checkLocalMP3FileExists(filePath);
if (!isCheckFileExist) {
console.warn(`${NAME.PREFIX}setCallingBell failed, filePath: ${filePath}.`);
return ;
}
const bellParams: IBellParams = { calleeBellFilePath: filePath };
this._bellContext.setBellProperties(bellParams);
}
public async enableMuteMode(enable: boolean) {
try {
const bellParams: IBellParams = { isMuteBell: enable };
this._bellContext.setBellProperties(bellParams);
await this._bellContext.setBellMute(enable);
} catch (error) {
console.warn(`${NAME.PREFIX}enableMuteMode failed, error: ${JSON.stringify(error)}.`);
}
}
@avoidRepeatedCall()

@@ -396,3 +430,3 @@ public async switchDevice(params) {

console.log(`${NAME.PREFIX}onCallReceived event data: ${JSON.stringify(event)}.`);
const { sponsor = '', isFromGroup, callMediaType, inviteData = {}, calleeIdList = [] } = this._analyzeEventData(event);
const { sponsor = '', isFromGroup, callMediaType, inviteData = {}, calleeIdList = [], groupID = '' } = this._analyzeEventData(event);
const currentUserInfo: IUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);

@@ -409,2 +443,3 @@ const remoteUserIdList: string[] = [sponsor, ...calleeIdList.filter((userId: string) => userId !== currentUserInfo.userId)];

[NAME.CALLER_USER_INFO]: { userId: sponsor },
[NAME.GROUP_ID]: groupID,
};

@@ -430,6 +465,18 @@ TUIStore.updateStore(updateStoreParams, StoreName.CALL);

}
private _handleUserEnter(event: any): void {
private async _handleUserEnter(event: any): Promise<void> {
this._callerChangeToConnected();
const { userID: userId, data } = this._analyzeEventData(event);
let remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
const isInRemoteUserList = remoteUserInfoList.find(item => item?.userId === userId);
if (!isInRemoteUserList) {
remoteUserInfoList.push({ userId });
remoteUserInfoList.length > 0 && TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, remoteUserInfoList);
const [userInfo] = await getRemoteUserProfile([userId], this.getTim());
remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
remoteUserInfoList.forEach((obj) => {
if (obj?.userId === userId) {
obj = Object.assign(obj, userInfo);
}
});
}
remoteUserInfoList = remoteUserInfoList.map((obj: IUserInfo) => {

@@ -694,2 +741,3 @@ if (obj.userId === userId) obj.isEnter = true;

[NAME.CALL_TIPS]: t(CallTips.CALLER_CALLING_MSG),
[NAME.GROUP_ID]: groupID
};

@@ -707,2 +755,3 @@ TUIStore.updateStore({ ...updateStoreParams, [NAME.CALL_STATUS]: CallStatus.CALLING }, StoreName.CALL);

TUIStore.update(StoreName.CALL, NAME.IS_CLICKABLE, true);
TUIStore.update(StoreName.CALL, NAME.ROOM_ID, response.roomID);
if (response.code === 0) {

@@ -824,28 +873,40 @@ const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);

}
// =========================【调用 chat api】=========================
// 获取群成员
public async getGroupMemberList(count: number, offset: number) {
const groupID = TUIStore.getData(StoreName.CALL, NAME.GROUP_ID);
let groupMemberList = await getGroupMemberList(groupID, this.getTim(), count, offset);
return groupMemberList;
}
// 获取群信息
public async getGroupProfile() {
const groupID: string = TUIStore.getData(StoreName.CALL, NAME.GROUP_ID);
return await getGroupProfile(groupID, this.getTim());
}
// =========================【监听 TUIStore 中的状态】=========================
private _handleCallStatusChange = async (value: CallStatus) => {
if (value === CallStatus.CALLING) {
const callRole = TUIStore.getData(StoreName.CALL, NAME.CALL_ROLE);
let bellFilePath = DEFAULT_CALLER_BELL_FILEPATH;
if (callRole === CallRole.CALLEE) {
bellFilePath = this._bellFilePath ? this._bellFilePath : DEFAULT_CALLEE_BELL_FILEPATH;
}
this._callingBell.setBellSrc(bellFilePath);
if (TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS) === CallStatus.CALLING) {
// 连续两个异步请求,会导致 play 和 stop 的调用顺序混乱,因此再多加一次状态判断
await this?._callingBell?.play();
}
} else {
await this?._callingBell?.stop();
// 状态变更通知
if (value === CallStatus.CONNECTED) {
const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
const oldStatus = isGroup ? StatusChange.DIALING_GROUP : StatusChange.DIALING_C2C;
this.statusChanged && this.statusChanged({ oldStatus, newStatus: generateStatusChangeText(TUIStore) });
if (!isGroup && callMediaType === CallMediaType.VIDEO) {
this.switchScreen(remoteUserInfoList[0].domId);
try {
const bellParams: IBellParams = {
callRole: TUIStore.getData(StoreName.CALL, NAME.CALL_ROLE),
callStatus: TUIStore.getData(StoreName.CALL, NAME.CALL_STATUS),
};
this._bellContext.setBellProperties(bellParams);
if (value === CallStatus.CALLING) {
await this?._bellContext?.play();
} else {
// 状态变更通知
if (value === CallStatus.CONNECTED) {
const isGroup = TUIStore.getData(StoreName.CALL, NAME.IS_GROUP);
const callMediaType = TUIStore.getData(StoreName.CALL, NAME.CALL_MEDIA_TYPE);
const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
const oldStatus = isGroup ? StatusChange.DIALING_GROUP : StatusChange.DIALING_C2C;
this.statusChanged && this.statusChanged({ oldStatus, newStatus: generateStatusChangeText(TUIStore) });
if (!isGroup && callMediaType === CallMediaType.VIDEO) {
this.switchScreen(remoteUserInfoList[0].domId);
}
}
await this?._bellContext?.stop();
}
} catch (error) {
console.warn(`${NAME.PREFIX}handleCallStatusChange, ${error}.`);
}

@@ -867,2 +928,2 @@ };

}
}
}

@@ -1,2 +0,2 @@

import { CallMediaType, CallStatus, NAME } from '../const';
import { CallMediaType, CallStatus } from '../const';

@@ -55,56 +55,2 @@ export function initialUI() {

}
}
// 铃声设置
export class BellContext {
private context: any = null;
constructor() {
// @ts-ignore
this.context = wx.createInnerAudioContext();
this.context.loop = true;
this.context.onError((res: any) => {
this.handleError(res.errCode);
});
}
setBellSrc(filePath: string) {
// @ts-ignore
const fs = wx.getFileSystemManager();
try {
fs.readFileSync(filePath, 'utf8', 0);
} catch (e) {
console.debug(e);
console.warn(`${NAME.PREFIX}setCallingBell: 媒体铃声路径错误`, filePath);
}
this.context.src = filePath;
}
play() {
this.context.play();
}
stop() {
this.context.stop();
}
handleError(code: number) {
let errMsg = '';
switch (code) {
case 10001:
errMsg = '系统错误';
break;
case 10002:
errMsg = '网络错误';
break;
case 10003:
errMsg = '文件错误';
break;
case 10004:
errMsg = '格式错误';
break;
default:
errMsg = '未知错误';
break;
}
console.warn(`${NAME.PREFIX}setCallingBell: 媒体铃声${errMsg}`);
}
destroy() {
this.context.destroy();
}
}
}

@@ -6,3 +6,2 @@ import { NAME, StoreName, CallStatus, StatusChange, CallMediaType } from '../const';

// 设置默认的 UserInfo 信息

@@ -114,1 +113,27 @@ export function setDefaultUserInfo(userId: string, domId?: string): IUserInfo {

}
// 获取群组[offset, count + offset]区间成员
export async function getGroupMemberList(groupID: string, tim: any, count, offset) {
let groupMemberList = [];
try {
const res = await tim.getGroupMemberList({ groupID, count, offset });
if (res.code === 0) {
return res.data.memberList || groupMemberList;
}
} catch(error) {
console.error(`${NAME.PREFIX}getGroupMember failed, error: ${JSON.stringify(error)}.`);
return groupMemberList;
}
}
// 获取 IM 群信息
export async function getGroupProfile(groupID: string, tim: any): Promise<any> {
let groupProfile = {};
try {
const res = await tim.getGroupProfile({ groupID });
if (res.code === 0) {
return res.data.group || groupProfile;
}
} catch(error) {
console.error(`${NAME.PREFIX}getGroupProfile failed, error: ${JSON.stringify(error)}.`);
return groupProfile;
}
}

@@ -31,2 +31,5 @@ export * from './call';

SHOW_PERMISSION_TIP: 'SHOW_PERMISSION_TIP',
GROUP_ID: 'groupID',
ROOM_ID: 'roomID',
SHOW_SELECT_USER: 'showSelectUser',
};

@@ -33,0 +36,0 @@

@@ -0,1 +1,3 @@

import { CallStatus, CallRole } from '../const';
/**

@@ -72,1 +74,17 @@ * @interface ITUICallService

}
export interface IBellParams {
callRole?: CallRole;
callStatus?: CallStatus;
isMuteBell?: boolean;
calleeBellFilePath?: string;
}
export interface IInviteUserParams {
userIDList: string[];
offlinePushInfo?: IOfflinePushInfo;
}
export interface IJoinInGroupCallParams {
type: number;
groupID: string;
roomID: number;
}

@@ -27,3 +27,5 @@ import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, TDeviceList } from '../const';

showPermissionTip: boolean; // 设备权限弹窗是否展示(如果有麦克风权限为 false,如果没有麦克风也没有摄像头权限为 true)
deviceList: TDeviceList,
deviceList: TDeviceList;
groupID: string;
roomID: number;
// TUICallKit 组件上的属性

@@ -36,2 +38,3 @@ displayMode: VideoDisplayMode; // 设置预览远端的画面显示模式, 默认: VideoDisplayMode.COVER

isEarPhone: boolean; // 是否是听筒, 默认: false
showSelectUser: boolean;
}

@@ -20,3 +20,3 @@ export const en = {

'no camera access': 'no camera access',
'invite member': 'Invite Member',
'speaker': 'speaker',

@@ -85,2 +85,8 @@ 'Invited group call': 'Invited you to a group call',

'close microphone': 'Close Microphone',
'Please enter userID': 'Please enter userID',
'View more': 'View more',
'people selected': 'people selected',
'Select all': 'Select all',
'Cancel': 'Cancel',
'Done': 'Done',
};

@@ -19,2 +19,3 @@ export const ja_JP = {

'no camera access': 'カメラにアクセスできません',
'invite member': 'メンバーを招待する',
'speaker': 'スピーカー',

@@ -79,2 +80,8 @@ 'Invited group call': 'グループ通話に招待されました。',

'win-preferences': 'システム設定を開く',
'Please enter userID': 'ユーザーIDを入力してください',
'View more': 'もっと見る',
'people selected': '人が選択されました',
'Select all': 'すべて選択',
'Cancel': 'キャンセル',
'Done': '完了',
};

@@ -19,3 +19,3 @@ export const zh = {

'no camera access': '没有摄像头权限',
'invite member': '邀请成员',
'speaker': '扬声器',

@@ -84,2 +84,8 @@ 'Invited group call': '邀请你参加多人通话',

'close microphone': '关闭麦克风',
'Please enter userID': '请输入 userID',
'View more': '查看更多',
'people selected': '人已选中',
'Select all': '全选',
'Cancel': '取消',
'Done': '完成',
};

@@ -57,2 +57,3 @@ import { TUICallKitServer, NAME, TUIStore, StoreName } from '../../index';

case CallStatus.CALLING:
case CallStatus.CONNECTED:
this._handleCallStatusToCalling();

@@ -59,0 +60,0 @@ break;

@@ -24,5 +24,8 @@ import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution } from '../const';

showPermissionTip: false,
groupID: '',
roomID: 0,
// TUICallKit 组件上的属性
displayMode: VideoDisplayMode.COVER, // 设置预览远端的画面显示模式
videoResolution: VideoResolution.RESOLUTION_480P,
showSelectUser: false,
// 小程序相关属性

@@ -29,0 +32,0 @@ pusher: {},

@@ -13,5 +13,5 @@ export async function checkLocalMP3FileExists(src: string) {

} catch (error) {
console.error(error);
console.warn(error);
return false;
}
}

@@ -1,1 +0,1 @@

export declare function useSwiperSliders(swiperContainerRef: any): import("vue/types/v3-generated").Ref<Element[]>;
export declare function useSwiperSliders(swiperContainerRef: any): any;

@@ -1,2 +0,2 @@

import { ITUICallService, ICallParams, IGroupCallParams, ICallbackParam, ISelfInfoParams } from '../interface/ICallService';
import { ITUICallService, ICallParams, IGroupCallParams, ICallbackParam, ISelfInfoParams, IInviteUserParams, IJoinInGroupCallParams } from '../interface/ICallService';
import { LanguageType, LOG_LEVEL, VideoDisplayMode, VideoResolution } from '../const';

@@ -14,4 +14,3 @@ import { ITUIGlobal } from '../interface/ITUIGlobal';

private _timerId;
private _callingBell;
private _bellFilePath;
private _bellContext;
constructor();

@@ -23,4 +22,4 @@ static getInstance(): TUICallService;

groupCall(groupCallParams: IGroupCallParams): Promise<void>;
inviteUser(params: any): Promise<void>;
joinInGroupCall(params: any): Promise<void>;
inviteUser(params: IInviteUserParams): Promise<void>;
joinInGroupCall(params: IJoinInGroupCallParams): Promise<void>;
private _handleCallError;

@@ -32,2 +31,3 @@ setLogLevel(level: LOG_LEVEL): void;

enableAIVoice(enable: boolean): Promise<void>;
getTUICallEngineInstance(): any;
accept(): Promise<void>;

@@ -46,2 +46,3 @@ hangup(): Promise<void>;

setCallingBell(filePath?: string): Promise<void>;
enableMuteMode(enable: boolean): Promise<void>;
switchDevice(params: any): Promise<void>;

@@ -99,2 +100,4 @@ private _addListenTuiCallEngineEvent;

private _analyzeEventData;
getGroupMemberList(count: number, offset: number): Promise<any>;
getGroupProfile(): Promise<any>;
private _handleCallStatusChange;

@@ -101,0 +104,0 @@ private _watchTUIStore;

@@ -7,10 +7,1 @@ import { CallMediaType, CallStatus } from '../const';

export declare function handlePackageError(error: any): void;
export declare class BellContext {
private context;
constructor();
setBellSrc(filePath: string): void;
play(): void;
stop(): void;
handleError(code: number): void;
destroy(): void;
}

@@ -8,1 +8,3 @@ import { IUserInfo } from '../interface/ICallService';

export declare function generateStatusChangeText(TUIStore: ITUIStore): string;
export declare function getGroupMemberList(groupID: string, tim: any, count: any, offset: any): Promise<any>;
export declare function getGroupProfile(groupID: string, tim: any): Promise<any>;

@@ -0,1 +1,2 @@

import { CallStatus, CallRole } from '../const';
/**

@@ -65,1 +66,16 @@ * @interface ITUICallService

}
export interface IBellParams {
callRole?: CallRole;
callStatus?: CallStatus;
isMuteBell?: boolean;
calleeBellFilePath?: string;
}
export interface IInviteUserParams {
userIDList: string[];
offlinePushInfo?: IOfflinePushInfo;
}
export interface IJoinInGroupCallParams {
type: number;
groupID: string;
roomID: number;
}

@@ -25,2 +25,4 @@ import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, TDeviceList } from '../const';

deviceList: TDeviceList;
groupID: string;
roomID: number;
displayMode: VideoDisplayMode;

@@ -31,2 +33,3 @@ videoResolution: VideoResolution;

isEarPhone: boolean;
showSelectUser: boolean;
}

@@ -20,2 +20,3 @@ export declare const en: {

'no camera access': string;
'invite member': string;
speaker: string;

@@ -84,2 +85,8 @@ 'Invited group call': string;

'close microphone': string;
'Please enter userID': string;
'View more': string;
'people selected': string;
'Select all': string;
Cancel: string;
Done: string;
};

@@ -19,2 +19,3 @@ export declare const ja_JP: {

'no camera access': string;
'invite member': string;
speaker: string;

@@ -79,2 +80,8 @@ 'Invited group call': string;

'win-preferences': string;
'Please enter userID': string;
'View more': string;
'people selected': string;
'Select all': string;
Cancel: string;
Done: string;
};

@@ -19,2 +19,3 @@ export declare const zh: {

'no camera access': string;
'invite member': string;
speaker: string;

@@ -83,2 +84,8 @@ 'Invited group call': string;

'close microphone': string;
'Please enter userID': string;
'View more': string;
'people selected': string;
'Select all': string;
Cancel: string;
Done: string;
};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc