1.1.7 • Published 7 months ago

live-cat-library v1.1.7

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

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', () => launcherUI?.launcher?.resumeVideoStream())
  }
}
//Microphone

//Start capture audio to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
  if (phase === 'data-channel-open') {
    launcherUI?.launcher?.openMicrophone()
  }
}
//Stop
launcherUI?.launcher?.closeMicrophone()
//Camera
const baseOptionsType = {
  address: 'xxxx',
  appKey: 'xxxx',
  startType: 1,
  enableVirtualCamera: true,
}
let launcherUI = new LauncherUI(baseOptionsType, container)

//Start capture video to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
  if (phase === 'data-channel-open') {
    launcherUI?.launcher?.openCamera()
  }
}
//Stop
launcherUI?.launcher?.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 launcherUI = 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 launcherUI = 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

1.1.7

7 months ago

1.1.6

8 months ago

1.1.5

8 months ago

1.1.4

8 months ago

1.1.3

9 months ago

1.1.2

9 months ago

1.1.1

9 months ago

1.1.0

10 months ago

1.0.0

10 months ago

0.6.7

1 year ago

0.6.6

1 year ago

0.6.9

12 months ago

0.6.8

12 months ago

0.6.10

12 months ago

0.6.12

11 months ago

0.6.11

12 months ago

0.6.5

1 year ago

0.6.4

1 year ago

0.6.3

1 year ago

0.6.2

1 year ago

0.6.1

1 year ago

0.6.0

1 year ago

0.5.5

1 year ago

0.5.4

1 year ago

0.5.3

2 years ago

0.5.2

2 years ago

0.5.1

2 years ago

0.5.0

2 years ago

0.4.0

2 years ago

0.3.0

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago