{"version":3,"file":"RTCIceTransport.mjs","sources":["../../../src/polyfill/RTCIceTransport.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCPeerConnection from './RTCPeerConnection';\n\nexport default class RTCIceTransport extends EventTarget implements globalThis.RTCIceTransport {\n  #pc: RTCPeerConnection = null;\n\n  ongatheringstatechange: globalThis.RTCIceTransport['ongatheringstatechange'] = null;\n  onselectedcandidatepairchange: globalThis.RTCIceTransport['onselectedcandidatepairchange'] = null;\n  onstatechange: globalThis.RTCIceTransport['onstatechange'] = null;\n\n  constructor(init: { pc: RTCPeerConnection }) {\n    super();\n    this.#pc = init.pc;\n\n    this.#pc.addEventListener('icegatheringstatechange', () => {\n      const e = new Event('gatheringstatechange');\n      this.dispatchEvent(e);\n      this.ongatheringstatechange?.(e);\n    });\n    this.#pc.addEventListener('iceconnectionstatechange', () => {\n      const e = new Event('statechange');\n      this.dispatchEvent(e);\n      this.onstatechange?.(e);\n    });\n  }\n\n  get component(): globalThis.RTCIceComponent {\n    const cp = this.getSelectedCandidatePair();\n    if (!cp?.local) return null;\n    return cp.local.component;\n  }\n\n  get gatheringState(): globalThis.RTCIceGatheringState {\n    return this.#pc ? this.#pc.iceGatheringState : 'new';\n  }\n\n  get role(): globalThis.RTCIceRole {\n    return this.#pc.localDescription!.type == 'offer' ? 'controlling' : 'controlled';\n  }\n\n  get state(): globalThis.RTCIceTransportState {\n    return this.#pc ? this.#pc.iceConnectionState : 'new';\n  }\n\n  getLocalCandidates(): globalThis.RTCIceCandidate[] {\n    return this.#pc?.ext_localCandidates ?? [];\n  }\n\n  getLocalParameters(): RTCIceParameters | null {\n    return new RTCIceParameters(\n      new RTCIceCandidate({\n        candidate: this.#pc.selectedCandidatePair()!.local.candidate,\n        sdpMLineIndex: 0,\n      }),\n    );\n  }\n\n  getRemoteCandidates(): globalThis.RTCIceCandidate[] {\n    return this.#pc?.ext_remoteCandidates ?? [];\n  }\n\n  getRemoteParameters(): any {\n    /** */\n  }\n\n  getSelectedCandidatePair(): globalThis.RTCIceCandidatePair | null {\n    const cp = this.#pc?.selectedCandidatePair();\n    if (!cp) return null;\n    return {\n      local: new RTCIceCandidate({\n        candidate: cp.local.candidate,\n        sdpMid: cp.local.mid,\n      }),\n      remote: new RTCIceCandidate({\n        candidate: cp.remote.candidate,\n        sdpMid: cp.remote.mid,\n      }),\n    };\n  }\n}\n\nexport class RTCIceParameters implements globalThis.RTCIceParameters {\n  usernameFragment = '';\n  password = '';\n  constructor({ usernameFragment, password = '' }) {\n    this.usernameFragment = usernameFragment;\n    this.password = password;\n  }\n}\n"],"names":[],"mappings":"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"}