{"version":3,"sources":["../../../node_modules/tseep/lib/types.js","../../../node_modules/tseep/src/task-collection/utils.ts","../../../node_modules/tseep/src/task-collection/bake-collection.ts","../../../node_modules/tseep/src/task-collection/task-collection.ts","../../../node_modules/tseep/src/task-collection/index.ts","../../../node_modules/tseep/src/utils.ts","../../../node_modules/tseep/src/ee.ts","../../../node_modules/tseep/src/index.ts","../src/hls-player.ts","../../shared/src/assert.ts","../src/event-manager.ts","../src/helpers.ts","../src/types.ts","../src/state.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map",null,null,null,null,null,null,null,"import Hls from \"hls.js\";\nimport { assert } from \"shared/assert\";\nimport { EventEmitter } from \"tseep\";\nimport { EventManager } from \"./event-manager\";\nimport { getLangCode } from \"./helpers\";\nimport { getState, State } from \"./state\";\nimport { Events } from \"./types\";\nimport type {\n  AudioTrack,\n  HlsPlayerEventMap,\n  Quality,\n  SubtitleTrack,\n} from \"./types\";\nimport type { Level } from \"hls.js\";\n\nexport class HlsPlayer {\n  private media_: HTMLMediaElement;\n\n  private eventManager_ = new EventManager();\n\n  private hls_: Hls | null = null;\n\n  private state_: State | null = null;\n\n  private emitter_ = new EventEmitter<HlsPlayerEventMap>();\n\n  constructor(public container: HTMLDivElement) {\n    this.media_ = this.createMedia_();\n  }\n\n  private createMedia_() {\n    const media = document.createElement(\"video\");\n    this.container.appendChild(media);\n\n    media.style.position = \"absolute\";\n    media.style.inset = \"0\";\n    media.style.width = \"100%\";\n    media.style.height = \"100%\";\n\n    return media;\n  }\n\n  load(url: string) {\n    this.unload();\n\n    this.bindMediaListeners_();\n    const hls = this.createHls_();\n\n    this.state_ = new State({\n      onEvent: (event: Events) => this.emit_(event),\n      getTiming: () => ({\n        primary: hls.interstitialsManager?.primary ?? hls.media,\n        asset: hls.interstitialsManager?.playerQueue.find(\n          (player) =>\n            player.assetItem === hls.interstitialsManager?.playingAsset,\n        ),\n      }),\n    });\n\n    hls.attachMedia(this.media_);\n    hls.loadSource(url);\n\n    this.hls_ = hls;\n  }\n\n  unload() {\n    this.eventManager_.removeAll();\n    this.state_ = null;\n\n    if (this.hls_) {\n      this.hls_.destroy();\n      this.hls_ = null;\n    }\n\n    this.emit_(Events.RESET);\n  }\n\n  destroy() {\n    this.emitter_.removeAllListeners();\n    this.unload();\n  }\n\n  on = this.emitter_.on.bind(this.emitter_);\n  off = this.emitter_.off.bind(this.emitter_);\n  once = this.emitter_.once.bind(this.emitter_);\n\n  playOrPause() {\n    if (!this.state_) {\n      return;\n    }\n    const shouldPause =\n      this.state_.playhead === \"play\" || this.state_.playhead === \"playing\";\n    if (shouldPause) {\n      this.media_.pause();\n    } else {\n      this.media_.play();\n    }\n  }\n\n  seekTo(time: number) {\n    assert(this.hls_);\n\n    if (this.state_?.interstitial) {\n      return false;\n    }\n\n    if (this.hls_.interstitialsManager) {\n      this.hls_.interstitialsManager.primary.seekTo(time);\n    } else {\n      this.media_.currentTime = time;\n    }\n\n    return true;\n  }\n\n  setQuality(height: number | null) {\n    assert(this.hls_);\n\n    if (height === null) {\n      this.hls_.nextLevel = -1;\n    } else {\n      const loadLevel = this.hls_.levels[this.hls_.loadLevel];\n      assert(loadLevel, \"No level found for loadLevel index\");\n\n      const idx = this.hls_.levels.findIndex((level) => {\n        return (\n          level.height === height &&\n          level.audioCodec?.substring(0, 4) ===\n            loadLevel.audioCodec?.substring(0, 4)\n        );\n      });\n\n      if (idx < 0) {\n        throw new Error(\"Could not find matching level\");\n      }\n\n      this.hls_.nextLevel = idx;\n    }\n\n    this.updateQualities_();\n  }\n\n  setAudioTrack(id: number) {\n    assert(this.hls_);\n\n    const audioTrack = this.state_?.audioTracks.find(\n      (track) => track.id === id,\n    );\n    assert(audioTrack);\n\n    this.hls_.setAudioOption({\n      lang: audioTrack.track.lang,\n      channels: audioTrack.track.channels,\n      name: audioTrack.track.name,\n    });\n  }\n\n  setSubtitleTrack(id: number | null) {\n    assert(this.hls_);\n\n    if (id === null) {\n      this.hls_.subtitleTrack = -1;\n      return;\n    }\n\n    const subtitleTrack = this.state_?.subtitleTracks.find(\n      (track) => track.id === id,\n    );\n    assert(subtitleTrack);\n\n    this.hls_.setSubtitleOption({\n      lang: subtitleTrack.track.lang,\n      name: subtitleTrack.track.name,\n    });\n  }\n\n  setVolume(volume: number) {\n    this.media_.volume = volume;\n    this.media_.muted = volume === 0;\n    this.state_?.setVolume(volume);\n  }\n\n  get ready() {\n    return getState(this.state_, \"ready\");\n  }\n\n  get playhead() {\n    return getState(this.state_, \"playhead\");\n  }\n\n  get started() {\n    return getState(this.state_, \"started\");\n  }\n\n  get time() {\n    return getState(this.state_, \"time\");\n  }\n\n  get duration() {\n    return getState(this.state_, \"duration\");\n  }\n\n  get seeking() {\n    return getState(this.state_, \"seeking\");\n  }\n\n  get interstitial() {\n    return getState(this.state_, \"interstitial\");\n  }\n\n  get qualities() {\n    return getState(this.state_, \"qualities\");\n  }\n\n  get autoQuality() {\n    return getState(this.state_, \"autoQuality\");\n  }\n\n  get audioTracks() {\n    return getState(this.state_, \"audioTracks\");\n  }\n\n  get subtitleTracks() {\n    return getState(this.state_, \"subtitleTracks\");\n  }\n\n  get volume() {\n    return getState(this.state_, \"volume\");\n  }\n\n  get seekableStart() {\n    if (this.hls_) {\n      return this.hls_.interstitialsManager?.primary?.seekableStart ?? 0;\n    }\n    return NaN;\n  }\n\n  get live() {\n    return this.hls_?.levels[this.hls_.currentLevel]?.details?.live ?? false;\n  }\n\n  get cuePoints() {\n    return getState(this.state_, \"cuePoints\");\n  }\n\n  private createHls_() {\n    const hls = new Hls();\n\n    const listen = this.eventManager_.listen(hls);\n\n    listen(Hls.Events.MANIFEST_LOADED, () => {\n      this.updateQualities_();\n      this.updateAudioTracks_();\n      this.updateSubtitleTracks_();\n    });\n\n    listen(Hls.Events.INTERSTITIAL_STARTED, () => {\n      this.state_?.setInterstitial({\n        asset: null,\n      });\n    });\n\n    listen(Hls.Events.INTERSTITIAL_ASSET_STARTED, (_, data) => {\n      const listResponseAsset = data.event.assetListResponse?.ASSETS[\n        data.assetListIndex\n      ] as {\n        \"SPRS-KIND\"?: \"ad\" | \"bumper\";\n      };\n\n      this.state_?.setAsset({\n        type: listResponseAsset[\"SPRS-KIND\"],\n      });\n    });\n\n    listen(Hls.Events.INTERSTITIAL_ASSET_ENDED, () => {\n      this.state_?.setAsset(null);\n    });\n\n    listen(Hls.Events.INTERSTITIAL_ENDED, () => {\n      this.state_?.setInterstitial(null);\n    });\n\n    listen(Hls.Events.LEVELS_UPDATED, () => {\n      this.updateQualities_();\n    });\n\n    listen(Hls.Events.LEVEL_SWITCHING, () => {\n      this.updateQualities_();\n    });\n\n    listen(Hls.Events.AUDIO_TRACKS_UPDATED, () => {\n      this.updateAudioTracks_();\n    });\n\n    listen(Hls.Events.AUDIO_TRACK_SWITCHING, () => {\n      this.updateAudioTracks_();\n    });\n\n    listen(Hls.Events.SUBTITLE_TRACKS_UPDATED, () => {\n      this.updateSubtitleTracks_();\n    });\n\n    listen(Hls.Events.SUBTITLE_TRACK_SWITCH, () => {\n      this.updateSubtitleTracks_();\n    });\n\n    listen(Hls.Events.INTERSTITIALS_UPDATED, (_, data) => {\n      const cuePoints = data.schedule.reduce<number[]>((acc, item) => {\n        if (item.event) {\n          acc.push(item.start);\n        }\n        return acc;\n      }, []);\n      this.state_?.setCuePoints(cuePoints);\n    });\n\n    return hls;\n  }\n\n  private updateQualities_() {\n    assert(this.hls_);\n\n    const group: {\n      height: number;\n      levels: Level[];\n    }[] = [];\n\n    for (const level of this.hls_.levels) {\n      let item = group.find((item) => item.height === level.height);\n      if (!item) {\n        item = {\n          height: level.height,\n          levels: [],\n        };\n        group.push(item);\n      }\n      item.levels.push(level);\n    }\n\n    const level = this.hls_.levels[this.hls_.nextLoadLevel];\n\n    const qualities = group.map<Quality>((item) => {\n      return {\n        ...item,\n        active: item.height === level.height,\n      };\n    });\n\n    qualities.sort((a, b) => b.height - a.height);\n\n    const autoQuality = this.hls_.autoLevelEnabled;\n    this.state_?.setQualities(qualities, autoQuality);\n  }\n\n  private updateAudioTracks_() {\n    assert(this.hls_);\n\n    const tracks = this.hls_.allAudioTracks.map<AudioTrack>((track, index) => {\n      let label = getLangCode(track.lang);\n      if (track.channels === \"6\") {\n        label += \" 5.1\";\n      }\n      return {\n        id: index,\n        active: this.hls_?.audioTracks.includes(track)\n          ? track.id === this.hls_.audioTrack\n          : false,\n        label,\n        track,\n      };\n    });\n\n    this.state_?.setAudioTracks(tracks);\n  }\n\n  private updateSubtitleTracks_() {\n    assert(this.hls_);\n\n    const tracks = this.hls_.allSubtitleTracks.map<SubtitleTrack>(\n      (track, index) => {\n        return {\n          id: index,\n          active: this.hls_?.subtitleTracks.includes(track)\n            ? track.id === this.hls_.subtitleTrack\n            : false,\n          label: getLangCode(track.lang),\n          track,\n        };\n      },\n    );\n\n    this.state_?.setSubtitleTracks(tracks);\n  }\n\n  private bindMediaListeners_() {\n    const listen = this.eventManager_.listen(this.media_);\n\n    listen(\"canplay\", () => {\n      this.state_?.setReady();\n    });\n\n    listen(\"play\", () => {\n      this.state_?.setPlayhead(\"play\");\n    });\n\n    listen(\"playing\", () => {\n      this.state_?.setStarted();\n\n      this.state_?.setPlayhead(\"playing\");\n    });\n\n    listen(\"pause\", () => {\n      this.state_?.setPlayhead(\"pause\");\n    });\n\n    listen(\"volumechange\", () => {\n      this.state_?.setVolume(this.media_.volume);\n    });\n\n    listen(\"seeking\", () => {\n      this.state_?.setSeeking(true);\n    });\n\n    listen(\"seeked\", () => {\n      this.state_?.setSeeking(false);\n    });\n  }\n\n  private emit_(event: Events) {\n    this.emitter_.emit(event);\n    this.emitter_.emit(\"*\", event);\n  }\n}\n","export function assert<T>(\n  value: T,\n  message = \"value is null\",\n): asserts value is NonNullable<T> {\n  if (value === null || value === undefined) {\n    throw Error(message);\n  }\n}\n","interface Target {\n  addEventListener?: Handler;\n  removeEventListener?: Handler;\n  on?: Handler;\n  off?: Handler;\n}\n\ntype AddCallback<T extends Target> = T extends { addEventListener: Handler }\n  ? T[\"addEventListener\"]\n  : T extends { on: Handler }\n    ? T[\"on\"]\n    : Handler;\n\ntype RemoveCallback<T extends Target> = T extends {\n  removeEventListener: Handler;\n}\n  ? T[\"removeEventListener\"]\n  : T extends { off: Handler }\n    ? T[\"off\"]\n    : Handler;\n\nexport class EventManager {\n  private bindings_ = new Set<Binding>();\n\n  listen = <T extends Target>(target: T) =>\n    ((type, listener, context) => {\n      const binding = createBinding(target, type, listener, context);\n      this.bindings_.add(binding);\n    }) as AddCallback<T>;\n\n  listenOnce = <T extends Target>(target: T) =>\n    ((type, listener, context) => {\n      const binding = createBinding(target, type, listener, context, true);\n      this.bindings_.add(binding);\n    }) as AddCallback<T>;\n\n  unlisten = <T extends Target>(target: T) =>\n    ((type, listener) => {\n      const binding = Array.from(this.bindings_).find(\n        (binding) =>\n          binding.target === target &&\n          binding.type === type &&\n          binding.listener === listener,\n      );\n      if (binding) {\n        binding.remove();\n        this.bindings_.delete(binding);\n      }\n    }) as RemoveCallback<T>;\n\n  removeAll() {\n    this.bindings_.forEach((binding) => {\n      binding.remove();\n    });\n    this.bindings_.clear();\n  }\n}\n\n/**\n * Create a binding for a specific target.\n * @param target\n * @param type\n * @param listener\n * @param context\n * @param once\n * @returns\n */\nfunction createBinding(\n  target: Target,\n  type: string,\n  listener: Handler,\n  context?: unknown,\n  once?: boolean,\n) {\n  const methodMap = {\n    add: target.addEventListener?.bind(target) ?? target.on?.bind(target),\n    remove:\n      target.removeEventListener?.bind(target) ?? target.off?.bind(target),\n  };\n\n  const remove = () => {\n    methodMap.remove?.(type, callback);\n  };\n\n  const callback = async (...args: unknown[]) => {\n    try {\n      await listener.apply(context, args);\n      if (once) {\n        remove();\n      }\n    } catch (error) {\n      console.error(error);\n    }\n  };\n\n  methodMap.add?.(type, callback);\n\n  return {\n    target,\n    type,\n    listener,\n    context,\n    once,\n    remove,\n  };\n}\n\ntype Binding = ReturnType<typeof createBinding>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Handler = (...args: any) => any;\n","export function preciseFloat(value: number) {\n  return Math.round((value + Number.EPSILON) * 100) / 100;\n}\n\nexport function getLangCode(key?: string) {\n  const value = key ? langCodes[key]?.split(\",\")[0] : null;\n  if (!value) {\n    return \"Unknown\";\n  }\n  return `${value[0].toUpperCase()}${value.slice(1)}`;\n}\n\n// Inspired by iso-language-codes.\n// See https://github.com/pubcore/iso-language-codes/blob/master/src/data.ts\nconst langCodes: Record<string, string> = {\n  sr: \"српски језик\",\n  ro: \"Română\",\n  ii: \"ꆈꌠ꒿ Nuosuhxop\",\n  ty: \"Reo Tahiti\",\n  tl: \"Wikang Tagalog\",\n  yi: \"ייִדיש\",\n  ak: \"Akan\",\n  ms: \"Bahasa Melayu, بهاس ملايو\",\n  ar: \"العربية\",\n  no: \"Norsk\",\n  oj: \"ᐊᓂᔑᓈᐯᒧᐎᓐ\",\n  ff: \"Fulfulde, Pulaar, Pular\",\n  fa: \"فارسی\",\n  sq: \"Shqip\",\n  ay: \"aymar aru\",\n  az: \"azərbaycan dili\",\n  zh: \"中文 (Zhōngwén), 汉语, 漢語\",\n  cr: \"ᓀᐦᐃᔭᐍᐏᐣ\",\n  et: \"eesti, eesti keel\",\n  gn: \"Avañe'ẽ\",\n  ik: \"Iñupiaq, Iñupiatun\",\n  iu: \"ᐃᓄᒃᑎᑐᑦ\",\n  kr: \"Kanuri\",\n  kv: \"коми кыв\",\n  kg: \"Kikongo\",\n  ku: \"Kurdî, أۇزبېك\",\n  lv: \"latviešu valoda\",\n  mg: \"fiteny malagasy\",\n  mn: \"Монгол хэл\",\n  om: \"Afaan Oromoo\",\n  ps: \"پښتو\",\n  qu: \"Runa Simi, Kichwa\",\n  sc: \"sardu\",\n  sw: \"Kiswahili\",\n  uz: \"O'zbek, Ўзбек, \",\n  za: \"Saw cueŋƅ, Saw cuengh\",\n  bi: \"Bislama\",\n  nb: \"Norsk Bokmål\",\n  nn: \"Norsk Nynorsk\",\n  id: \"Bahasa Indonesia\",\n  tw: \"Twi\",\n  eo: \"Esperanto\",\n  ia: \"Interlingua\",\n  ie: \"Originally called Occidental; then Interlingue after WWII\",\n  io: \"Ido\",\n  vo: \"Volapük\",\n  bh: \"भोजपुरी\",\n  he: \"עברית\",\n  sa: \"संस्कृतम्\",\n  cu: \"ѩзыкъ словѣньскъ\",\n  pi: \"पाऴि\",\n  ae: \"avesta\",\n  la: \"latine, lingua latina\",\n  hy: \"Հայերեն\",\n  ss: \"SiSwati\",\n  bo: \"བོད་ཡིག\",\n  nr: \"isiNdebele\",\n  sl: \"Slovenski Jezik, Slovenščina\",\n  or: \"ଓଡ଼ିଆ\",\n  nd: \"isiNdebele\",\n  na: \"Dorerin Naoero\",\n  mi: \"te reo Māori\",\n  mr: \"मराठी\",\n  lu: \"Kiluba\",\n  rn: \"Ikirundi\",\n  km: \"ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ\",\n  fy: \"Frysk\",\n  bn: \"বাংলা\",\n  av: \"авар мацӀ, магӀарул мацӀ\",\n  ab: \"аҧсуа бызшәа, аҧсшәа\",\n  aa: \"Afaraf\",\n  af: \"Afrikaans\",\n  am: \"አማርኛ\",\n  an: \"aragonés\",\n  as: \"অসমীয়া\",\n  bm: \"bamanankan\",\n  ba: \"башҡорт теле\",\n  eu: \"euskara, euskera\",\n  be: \"беларуская мова\",\n  bs: \"bosanski jezik\",\n  br: \"brezhoneg\",\n  bg: \"български език\",\n  my: \"ဗမာစာ\",\n  ca: \"català, valencià\",\n  ch: \"Chamoru\",\n  ce: \"нохчийн мотт\",\n  ny: \"chiCheŵa, chinyanja\",\n  cv: \"чӑваш чӗлхи\",\n  kw: \"Kernewek\",\n  co: \"corsu, lingua corsa\",\n  hr: \"hrvatski jezik\",\n  cs: \"čeština, český jazyk\",\n  da: \"dansk\",\n  dv: \"ދިވެހި\",\n  nl: \"Nederlands, Vlaams\",\n  dz: \"རྫོང་ཁ\",\n  en: \"English\",\n  ee: \"Eʋegbe\",\n  fo: \"føroyskt\",\n  fj: \"vosa Vakaviti\",\n  fi: \"suomi, suomen kieli\",\n  fr: \"français, langue française\",\n  gl: \"Galego\",\n  ka: \"ქართული\",\n  de: \"Deutsch\",\n  el: \"ελληνικά\",\n  gu: \"ગુજરાતી\",\n  ht: \"Kreyòl ayisyen\",\n  ha: \"(Hausa) هَوُسَ\",\n  hz: \"Otjiherero\",\n  hi: \"हिन्दी, हिंदी\",\n  ho: \"Hiri Motu\",\n  hu: \"magyar\",\n  ga: \"Gaeilge\",\n  ig: \"Asụsụ Igbo\",\n  is: \"Íslenska\",\n  it: \"Italiano\",\n  ja: \"日本語 (にほんご)\",\n  jv: \"ꦧꦱꦗꦮ, Basa Jawa\",\n  kl: \"kalaallisut, kalaallit oqaasii\",\n  kn: \"ಕನ್ನಡ\",\n  ks: \"कश्मीरी, كشميري\",\n  kk: \"қазақ тілі\",\n  ki: \"Gĩkũyũ\",\n  rw: \"Ikinyarwanda\",\n  ky: \"Кыргызча, Кыргыз тили\",\n  ko: \"한국어\",\n  kj: \"Kuanyama\",\n  lb: \"Lëtzebuergesch\",\n  lg: \"Luganda\",\n  li: \"Limburgs\",\n  ln: \"Lingála\",\n  lo: \"ພາສາລາວ\",\n  lt: \"lietuvių kalba\",\n  gv: \"Gaelg, Gailck\",\n  mk: \"македонски јазик\",\n  ml: \"മലയാളം\",\n  mt: \"Malti\",\n  mh: \"Kajin M̧ajeļ\",\n  nv: \"Diné bizaad\",\n  ne: \"नेपाली\",\n  ng: \"Owambo\",\n  oc: \"occitan, lenga d'òc\",\n  os: \"ирон æвзаг\",\n  pa: \"ਪੰਜਾਬੀ\",\n  pl: \"język polski, polszczyzna\",\n  pt: \"Português\",\n  rm: \"Rumantsch Grischun\",\n  ru: \"русский\",\n  sd: \"सिन्धी, سنڌي، سندھی\",\n  se: \"Davvisámegiella\",\n  sm: \"gagana fa'a Samoa\",\n  sg: \"yângâ tî sängö\",\n  gd: \"Gàidhlig\",\n  sn: \"chiShona\",\n  si: \"සිංහල\",\n  sk: \"Slovenčina, Slovenský Jazyk\",\n  so: \"Soomaaliga, af Soomaali\",\n  st: \"Sesotho\",\n  es: \"Español\",\n  su: \"Basa Sunda\",\n  sv: \"Svenska\",\n  ta: \"தமிழ்\",\n  te: \"తెలుగు\",\n  tg: \"тоҷикӣ, toçikī, تاجیکی\",\n  th: \"ไทย\",\n  ti: \"ትግርኛ\",\n  tk: \"Türkmen, Түркмен\",\n  tn: \"Setswana\",\n  to: \"Faka Tonga\",\n  tr: \"Türkçe\",\n  ts: \"Xitsonga\",\n  tt: \"татар теле, tatar tele\",\n  ug: \"ئۇيغۇرچە, Uyghurche\",\n  uk: \"Українська\",\n  ur: \"اردو\",\n  ve: \"Tshivenḓa\",\n  vi: \"Tiếng Việt\",\n  wa: \"Walon\",\n  cy: \"Cymraeg\",\n  wo: \"Wollof\",\n  xh: \"isiXhosa\",\n  yo: \"Yorùbá\",\n  zu: \"isiZulu\",\n};\n","import type { Level, MediaPlaylist } from \"hls.js\";\n\nexport type Playhead = \"idle\" | \"play\" | \"playing\" | \"pause\" | \"ended\";\n\nexport enum Events {\n  RESET = \"reset\",\n  READY = \"ready\",\n  STARTED = \"started\",\n  PLAYHEAD_CHANGE = \"playheadChange\",\n  TIME_CHANGE = \"timeChange\",\n  VOLUME_CHANGE = \"volumeChange\",\n  QUALITIES_CHANGE = \"qualitiesChange\",\n  AUDIO_TRACKS_CHANGE = \"audioTracksChange\",\n  SUBTITLE_TRACKS_CHANGE = \"subtitleTracksChange\",\n  AUTO_QUALITY_CHANGE = \"autoQualityChange\",\n  INTERSTITIAL_CHANGE = \"interstitialChange\",\n  SEEKING_CHANGE = \"seekingChange\",\n  CUEPOINTS_CHANGE = \"cuePointsChange\",\n}\n\nexport type HlsPlayerEventMap = {\n  [Events.RESET]: () => void;\n  [Events.READY]: () => void;\n  [Events.STARTED]: () => void;\n  [Events.PLAYHEAD_CHANGE]: () => void;\n  [Events.TIME_CHANGE]: () => void;\n  [Events.VOLUME_CHANGE]: () => void;\n  [Events.QUALITIES_CHANGE]: () => void;\n  [Events.AUDIO_TRACKS_CHANGE]: () => void;\n  [Events.SUBTITLE_TRACKS_CHANGE]: () => void;\n  [Events.AUTO_QUALITY_CHANGE]: () => void;\n  [Events.INTERSTITIAL_CHANGE]: () => void;\n  [Events.SEEKING_CHANGE]: () => void;\n  [Events.CUEPOINTS_CHANGE]: () => void;\n} & {\n  \"*\": (event: Events) => void;\n};\n\nexport interface Quality {\n  height: number;\n  active: boolean;\n  levels: Level[];\n}\n\nexport interface AudioTrack {\n  id: number;\n  active: boolean;\n  label: string;\n  track: MediaPlaylist;\n}\n\nexport interface SubtitleTrack {\n  id: number;\n  active: boolean;\n  label: string;\n  track: MediaPlaylist;\n}\n\nexport interface Asset {\n  time: number;\n  duration: number;\n  type?: \"ad\" | \"bumper\";\n}\n\nexport interface Interstitial {\n  asset: Asset | null;\n}\n","import { preciseFloat } from \"./helpers\";\nimport { Events } from \"./types\";\nimport type {\n  Asset,\n  AudioTrack,\n  Interstitial,\n  Playhead,\n  Quality,\n  SubtitleTrack,\n} from \"./types\";\n\ninterface MediaShim {\n  currentTime: number;\n  duration: number;\n}\n\ninterface StateParams {\n  onEvent(event: Events): void;\n  getTiming(): {\n    primary?: MediaShim | null;\n    asset?: MediaShim | null;\n  };\n}\n\ninterface StateProperties {\n  ready: boolean;\n  playhead: Playhead;\n  started: boolean;\n  time: number;\n  duration: number;\n  interstitial: Interstitial | null;\n  qualities: Quality[];\n  autoQuality: boolean;\n  audioTracks: AudioTrack[];\n  subtitleTracks: SubtitleTrack[];\n  volume: number;\n  seeking: boolean;\n  cuePoints: number[];\n}\n\nconst noState: StateProperties = {\n  playhead: \"idle\",\n  ready: false,\n  started: false,\n  time: 0,\n  duration: NaN,\n  interstitial: null,\n  qualities: [],\n  autoQuality: false,\n  audioTracks: [],\n  subtitleTracks: [],\n  volume: 1,\n  seeking: false,\n  cuePoints: [],\n};\n\nexport class State implements StateProperties {\n  private timerId_: number | undefined;\n\n  constructor(private params_: StateParams) {\n    this.requestTimingSync();\n  }\n\n  setReady() {\n    if (this.ready) {\n      return;\n    }\n    this.ready = true;\n    this.requestTimingSync();\n    this.params_.onEvent(Events.READY);\n  }\n\n  setPlayhead(playhead: Playhead) {\n    if (playhead === this.playhead) {\n      return;\n    }\n\n    this.playhead = playhead;\n\n    if (playhead === \"pause\") {\n      this.requestTimingSync();\n    }\n\n    this.params_.onEvent(Events.PLAYHEAD_CHANGE);\n  }\n\n  setStarted() {\n    if (this.started) {\n      return;\n    }\n    this.started = true;\n    this.params_.onEvent(Events.STARTED);\n  }\n\n  setInterstitial(interstitial: Interstitial | null) {\n    this.interstitial = interstitial;\n    this.setSeeking(false);\n    this.params_.onEvent(Events.INTERSTITIAL_CHANGE);\n  }\n\n  setAsset(asset: Omit<Asset, \"time\" | \"duration\"> | null) {\n    if (!this.interstitial) {\n      return;\n    }\n    if (asset) {\n      this.interstitial.asset = {\n        time: 0,\n        duration: NaN,\n        ...asset,\n      };\n      this.requestTimingSync();\n    } else {\n      this.interstitial.asset = null;\n    }\n  }\n\n  setQualities(qualities: Quality[], autoQuality: boolean) {\n    const diff = (items: Quality[]) =>\n      items.find((item) => item.active)?.height;\n\n    if (diff(this.qualities) !== diff(qualities)) {\n      this.qualities = qualities;\n      this.params_.onEvent(Events.QUALITIES_CHANGE);\n    }\n\n    if (autoQuality !== this.autoQuality) {\n      this.autoQuality = autoQuality;\n      this.params_.onEvent(Events.AUTO_QUALITY_CHANGE);\n    }\n  }\n\n  setAudioTracks(audioTracks: AudioTrack[]) {\n    const diff = (items: AudioTrack[]) => items.find((item) => item.active)?.id;\n\n    if (diff(this.audioTracks) !== diff(audioTracks)) {\n      this.audioTracks = audioTracks;\n      this.params_.onEvent(Events.AUDIO_TRACKS_CHANGE);\n    }\n  }\n\n  setSubtitleTracks(subtitleTracks: SubtitleTrack[]) {\n    const diff = (items: AudioTrack[]) => items.find((item) => item.active)?.id;\n\n    if (\n      // TODO: Come up with a generic logical check.\n      (!this.subtitleTracks.length && subtitleTracks.length) ||\n      diff(this.subtitleTracks) !== diff(subtitleTracks)\n    ) {\n      this.subtitleTracks = subtitleTracks;\n      this.params_.onEvent(Events.SUBTITLE_TRACKS_CHANGE);\n    }\n  }\n\n  setVolume(volume: number) {\n    if (volume === this.volume) {\n      return;\n    }\n    this.volume = volume;\n    this.params_.onEvent(Events.VOLUME_CHANGE);\n  }\n\n  setSeeking(seeking: boolean) {\n    if (seeking === this.seeking) {\n      return;\n    }\n    this.seeking = seeking;\n    this.requestTimingSync();\n    this.params_.onEvent(Events.SEEKING_CHANGE);\n  }\n\n  setCuePoints(cuePoints: number[]) {\n    this.cuePoints = cuePoints;\n    this.requestTimingSync();\n    this.params_.onEvent(Events.CUEPOINTS_CHANGE);\n  }\n\n  requestTimingSync() {\n    clearTimeout(this.timerId_);\n    this.timerId_ = window.setTimeout(() => {\n      this.requestTimingSync();\n    }, 250);\n\n    const timing = this.params_.getTiming();\n\n    let shouldEmit = false;\n\n    if (this.updateTimeDuration_(this, timing.primary)) {\n      shouldEmit = true;\n    }\n\n    if (\n      this.interstitial?.asset &&\n      this.updateTimeDuration_(this.interstitial.asset, timing.asset)\n    ) {\n      shouldEmit = true;\n    }\n\n    if (shouldEmit) {\n      this.params_.onEvent(Events.TIME_CHANGE);\n    }\n  }\n\n  private updateTimeDuration_(\n    target: {\n      time: number;\n      duration: number;\n      seekableStart?: number;\n    },\n    shim?: MediaShim | null,\n  ) {\n    if (!shim) {\n      return false;\n    }\n    if (!Number.isFinite(shim.duration)) {\n      return false;\n    }\n\n    const oldTime = target.time;\n    target.time = preciseFloat(shim.currentTime);\n\n    const oldDuration = target.duration;\n    target.duration = preciseFloat(shim.duration);\n\n    if (target.time > target.duration) {\n      target.time = target.duration;\n    }\n\n    return oldTime !== target.time || oldDuration !== target.duration;\n  }\n\n  ready = noState.ready;\n  playhead = noState.playhead;\n  started = noState.started;\n  time = noState.time;\n  duration = noState.duration;\n  interstitial = noState.interstitial;\n  qualities = noState.qualities;\n  autoQuality = noState.autoQuality;\n  audioTracks = noState.audioTracks;\n  subtitleTracks = noState.subtitleTracks;\n  volume = noState.volume;\n  seeking = noState.seeking;\n  cuePoints = noState.cuePoints;\n}\n\nexport function getState<N extends keyof StateProperties>(\n  state: State | null,\n  name: N,\n) {\n  return state?.[name] ?? noState[name];\n}\n"],"mappings":"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AAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,I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","names":["exports","exports","argsDefCode","funcDefCode","funcCallCode","_a","TaskCollection","exports","exports","exports","EventEmitter","exports","_a","exports","binding","Events","level","item"]}