{"version":3,"sources":["../src/track_publication.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type { EncryptionType } from '@livekit/rtc-ffi-bindings';\nimport type { SetSubscribedResponse } from '@livekit/rtc-ffi-bindings';\nimport { SetSubscribedRequest } from '@livekit/rtc-ffi-bindings';\nimport type {\n  OwnedTrackPublication,\n  TrackKind,\n  TrackPublicationInfo,\n  TrackSource,\n} from '@livekit/rtc-ffi-bindings';\nimport { FfiHandle } from '@livekit/rtc-ffi-bindings';\nimport { FfiClient } from './ffi_client.js';\nimport type { Track } from './track.js';\n\nexport abstract class TrackPublication {\n  /** @internal */\n  ffiHandle: FfiHandle;\n\n  /** @internal */\n  info?: TrackPublicationInfo;\n  track?: Track;\n\n  constructor(ownedInfo: OwnedTrackPublication) {\n    this.info = ownedInfo.info;\n    this.ffiHandle = new FfiHandle(ownedInfo.handle!.id!);\n  }\n\n  get sid(): string | undefined {\n    return this.info?.sid;\n  }\n\n  get name(): string | undefined {\n    return this.info?.name;\n  }\n\n  get kind(): TrackKind | undefined {\n    return this.info?.kind;\n  }\n\n  get source(): TrackSource | undefined {\n    return this.info?.source;\n  }\n\n  get simulcasted(): boolean | undefined {\n    return this.info?.simulcasted;\n  }\n\n  get width(): number | undefined {\n    return this.info?.width;\n  }\n\n  get height(): number | undefined {\n    return this.info?.height;\n  }\n\n  get mimeType(): string | undefined {\n    return this.info?.mimeType;\n  }\n\n  get muted(): boolean | undefined {\n    return this.info?.muted;\n  }\n\n  get encryptionType(): EncryptionType | undefined {\n    return this.info?.encryptionType;\n  }\n}\n\nexport class LocalTrackPublication extends TrackPublication {\n  private firstSubscription: Promise<void>;\n  private firstSubscriptionResolver: (() => void) | null = null;\n\n  constructor(ownedInfo: OwnedTrackPublication) {\n    super(ownedInfo);\n    this.firstSubscription = new Promise<void>((resolve) => {\n      this.firstSubscriptionResolver = resolve;\n    });\n  }\n\n  async waitForSubscription(): Promise<void> {\n    await this.firstSubscription;\n  }\n\n  /** @internal */\n  resolveFirstSubscription(): void {\n    if (this.firstSubscriptionResolver) {\n      this.firstSubscriptionResolver();\n      this.firstSubscriptionResolver = null;\n    }\n  }\n}\n\nexport class RemoteTrackPublication extends TrackPublication {\n  subscribed: boolean = false;\n\n  constructor(ownedInfo: OwnedTrackPublication) {\n    super(ownedInfo);\n  }\n\n  setSubscribed(subscribed: boolean) {\n    const req = new SetSubscribedRequest({\n      subscribe: subscribed,\n      publicationHandle: this.ffiHandle.handle,\n    });\n\n    FfiClient.instance.request<SetSubscribedResponse>({\n      message: { case: 'setSubscribed', value: req },\n    });\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,8BAAqC;AAOrC,IAAAA,2BAA0B;AAC1B,wBAA0B;AAGnB,MAAe,iBAAiB;AAAA,EAQrC,YAAY,WAAkC;AAC5C,SAAK,OAAO,UAAU;AACtB,SAAK,YAAY,IAAI,mCAAU,UAAU,OAAQ,EAAG;AAAA,EACtD;AAAA,EAEA,IAAI,MAA0B;AA7BhC;AA8BI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA2B;AAjCjC;AAkCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAA8B;AArCpC;AAsCI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAAkC;AAzCxC;AA0CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,cAAmC;AA7CzC;AA8CI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA4B;AAjDlC;AAkDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,SAA6B;AArDnC;AAsDI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,WAA+B;AAzDrC;AA0DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,QAA6B;AA7DnC;AA8DI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AAAA,EAEA,IAAI,iBAA6C;AAjEnD;AAkEI,YAAO,UAAK,SAAL,mBAAW;AAAA,EACpB;AACF;AAEO,MAAM,8BAA8B,iBAAiB;AAAA,EAI1D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,SAAQ,4BAAiD;AAIvD,SAAK,oBAAoB,IAAI,QAAc,CAAC,YAAY;AACtD,WAAK,4BAA4B;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,2BAAiC;AAC/B,QAAI,KAAK,2BAA2B;AAClC,WAAK,0BAA0B;AAC/B,WAAK,4BAA4B;AAAA,IACnC;AAAA,EACF;AACF;AAEO,MAAM,+BAA+B,iBAAiB;AAAA,EAG3D,YAAY,WAAkC;AAC5C,UAAM,SAAS;AAHjB,sBAAsB;AAAA,EAItB;AAAA,EAEA,cAAc,YAAqB;AACjC,UAAM,MAAM,IAAI,6CAAqB;AAAA,MACnC,WAAW;AAAA,MACX,mBAAmB,KAAK,UAAU;AAAA,IACpC,CAAC;AAED,gCAAU,SAAS,QAA+B;AAAA,MAChD,SAAS,EAAE,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;","names":["import_rtc_ffi_bindings"]}