0.6.3 • Published 8 days ago
live-cat-library v0.6.3
live-cat-library
This is a component library for 3DCAT
live-cat Launcher
Features:
- LauncherUI
- LauncherPrivateUI
- Loading Component
- ImeSwitchComponent
- FakeImeInputComponent
- KeepActiveHelper
Technologies
- live-cat v1.1.8
- Svelte v3.57.0
- Rollup v2.78.0
- Typescript v4.9.5
quick start
instantiation parameter
interface BaseOptionsType {
address: string; // address
appId?: string; // appId
appKey?: string; // appKey
appSecret?: string; // appSecret
startType?: StartType;
castScreenMaxQty?: number;
castScreenNickname?: string;
castScreenPwd?: string;
isCastScreenMaster?: boolean;
serverIp?: string; //for coturn server
joinType?: ScreenJoinType; //only screen
optionalParam?: string; // command line parameters
exeParameter?: string; // command line parameters for privatization
enableVirtualCamera?: boolean; // setup camera enable
}
Options detail to see live-cat
type UIOptions = Options & loadingOptions & ExtendUIOptions;
interface loadingOptions {
loadingImage: string | HTMLImageElement;
loadingBgImage: { portrait: string; landscape: string };
loadingBarImage: string | HTMLImageElement;
showDefaultLoading: boolean;
showFakePercent: boolean;
phaseChanged: boolean;
percentChanged: boolean;
}
interface ExtendUIOptions {
onChange: (cb: OnChange) => void;
onQueue: (rank: number) => void;
onLoadingError: (err: LoadingError) => void;
onTaskId: (taskId: number) => void;
onShowUserList: (showCastScreenUsers: boolean) => void;
onRunningOptions: (opt: OnRunningOptions) => void;
}
interface OnChange {
phase: Phase;
fakePercent: number;
deltaTime: number;
}
type Phase =
| 'initial'
| 'signaling-connected'
| 'node-ready'
| 'end-candidate'
| 'peer-connection-connected'
| 'data-channel-open'
| 'streaming-ready'
| 'loaded-metadata'
| 'streaming-playing';
interface LoadingError {
code: number | string;
type: 'app' | 'task' | 'connection' | 'reConnection';
reason: string | ErrorState;
}
type ErrorState = 'disconnect' | 'afk' | 'kick' | 'hangup';
interface OnRunningOptions {
token: string;
coturns: RTCIceServer[];
signaling: string;
}
enum StartType {
NormalMode = 1,
ScreenMode = 3,
}
enum ScreenJoinType {
Secret = 1,
Link,
}
//when terminal is ios and wechat
onPhaseChange: (phase: Phase, deltaTime: number) => {
if (phase === 'data-channel-open') {
/* NOTE: Autoplay video need user activation gesture
* @see https://html.spec.whatwg.org/multipage/interaction.html#user-activation-processing-model
*/
someTriggerElement.addEventListener('click', () =>
launcher?.launcherBase?.resumeVideoStream(),
);
}
};
//Microphone
//Start capture audio to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
if (phase === 'data-channel-open') {
launcher?.launcherBase?.openMicrophone();
}
};
//Stop
launcher?.launcherBase?.closeMicrophone();
//Camera
const baseOptionsType = {
address: 'xxxx',
appKey: 'xxxx',
startType: 1,
enableVirtualCamera: true,
};
let launcher = new LauncherUI(baseOptionsType, container);
//Start capture video to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
if (phase === 'data-channel-open') {
launcher?.launcherBase?.openCamera();
}
};
//Stop
launcher?.launcherBase?.closeCamera();
// Public Cloud
import { LauncherUI } from 'live-cat-library';
const container = document.querySelector('body');
document.querySelector('body').style.width = '100%';
document.querySelector('body').style.height = '100%';
const baseOptionsType = {
address: 'https://app.3dcat.live',
appKey: 'xxxx',
startType: 1,
};
const uiOptions = {
loadingImage: '',
};
let launcher = new LauncherUI(baseOptionsType, container, uiOptions);
window.addEventListener('DOMContentLoaded', () => {
if (
navigator.userAgent.includes('miniProgram') ||
navigator.userAgent.includes('MicroMessenger')
) {
//wechat
document.addEventListener('WeixinJSBridgeReady', bootstrap, false);
} else {
bootstrap();
}
});
// Private Cloud
import { LauncherPrivateUI } from 'live-cat-library';
const container = document.querySelector('body');
document.querySelector('body').style.width = '100%';
document.querySelector('body').style.height = '100%';
const baseOptionsType = {
address: 'xxxxx',
appKey: 'xxxx',
startType: 1,
};
const uiOptions = {
loadingImage: '',
};
let launcher = new LauncherPrivateUI(baseOptionsType, container, uiOptions);
window.addEventListener('DOMContentLoaded', () => {
if (
navigator.userAgent.includes('miniProgram') ||
navigator.userAgent.includes('MicroMessenger')
) {
//wechat
document.addEventListener('WeixinJSBridgeReady', bootstrap, false);
} else {
bootstrap();
}
});
License
MIT
0.6.3
8 days ago
0.6.2
28 days ago
0.6.1
29 days ago
0.6.0
30 days ago
0.5.5
2 months ago
0.5.4
3 months ago
0.5.3
5 months ago
0.5.2
5 months ago
0.5.1
6 months ago
0.5.0
7 months ago
0.4.0
8 months ago
0.3.0
8 months ago
0.3.2
8 months ago
0.3.1
8 months ago
0.2.9
9 months ago
0.2.8
9 months ago
0.2.7
9 months ago
0.2.6
9 months ago
0.2.5
10 months ago
0.2.4
10 months ago
0.2.3
11 months ago
0.2.2
11 months ago
0.2.1
11 months ago
0.2.0
11 months ago
0.1.3
11 months ago
0.1.2
11 months ago
0.1.1
11 months ago
0.1.0
11 months ago