{"version":3,"sources":["jsdelivr-header.js","/npm/youtube-video-element@1.9.1/dist/youtube-video-element.js"],"names":[],"mappings":"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","file":"/npm/youtube-video-element@1.9.1/dist/youtube-video-element.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/youtube-video-element@1.9.1/dist/youtube-video-element.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { MediaPlayedRangesMixin } from \"media-played-ranges-mixin\";\nconst EMBED_BASE = \"https://www.youtube.com/embed\";\nconst EMBED_BASE_NOCOOKIE = \"https://www.youtube-nocookie.com/embed\";\nconst API_URL = \"https://www.youtube.com/iframe_api\";\nconst API_GLOBAL = \"YT\";\nconst API_GLOBAL_READY = \"onYouTubeIframeAPIReady\";\nconst VIDEO_MATCH_SRC = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=|shorts\\/|live\\/))((\\w|-){11})/;\nconst PLAYLIST_MATCH_SRC = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/.*?[?&]list=)([\\w_-]+)/;\nfunction parseStartTime(url) {\n  if (!url) return;\n  const tMatch = url.match(/[?&]t=([\\dms]+)/i);\n  if (!tMatch) return;\n  const tValue = tMatch[1].toLowerCase();\n  let totalSeconds = 0;\n  let hasValue = false;\n  const minutesMatch = tValue.match(/(\\d+)m/);\n  if (minutesMatch) {\n    totalSeconds += parseInt(minutesMatch[1], 10) * 60;\n    hasValue = true;\n  }\n  const secondsMatch = tValue.match(/(\\d+)s?$/);\n  if (secondsMatch) {\n    totalSeconds += parseInt(secondsMatch[1], 10);\n    hasValue = true;\n  }\n  return hasValue ? totalSeconds : void 0;\n}\nfunction getTemplateHTML(attrs, props = {}) {\n  var _a;\n  const iframeAttrs = {\n    src: serializeIframeUrl(attrs, props),\n    frameborder: 0,\n    width: \"100%\",\n    height: \"100%\",\n    allow: \"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture; clipboard-write; web-share\"\n  };\n  if ((_a = props.config) == null ? void 0 : _a.referrerpolicy) {\n    iframeAttrs.referrerpolicy = props.config.referrerpolicy;\n  }\n  if (props.config) {\n    iframeAttrs[\"data-config\"] = JSON.stringify(props.config);\n  }\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        display: inline-block;\n        line-height: 0;\n        position: relative;\n        min-width: 300px;\n        min-height: 150px;\n      }\n      iframe {\n        position: absolute;\n        top: 0;\n        left: 0;\n      }\n    </style>\n    <iframe${serializeAttributes(iframeAttrs)}></iframe>\n  `\n  );\n}\nfunction serializeIframeUrl(attrs, props) {\n  if (!attrs.src) return;\n  const embedBase = attrs.src.includes(\"-nocookie\") ? EMBED_BASE_NOCOOKIE : EMBED_BASE;\n  const params = {\n    // ?controls=true is enabled by default in the iframe\n    controls: attrs.controls === \"\" ? null : 0,\n    autoplay: attrs.autoplay,\n    loop: attrs.loop,\n    mute: attrs.muted,\n    playsinline: attrs.playsinline,\n    preload: attrs.preload ?? \"metadata\",\n    // https://developers.google.com/youtube/player_parameters#Parameters\n    // origin: globalThis.location?.origin,\n    enablejsapi: 1,\n    cc_load_policy: 1,\n    showinfo: 0,\n    rel: 0,\n    iv_load_policy: 3,\n    modestbranding: 1,\n    start: parseStartTime(attrs.src),\n    ...props.config\n  };\n  if (VIDEO_MATCH_SRC.test(attrs.src)) {\n    const matches2 = attrs.src.match(VIDEO_MATCH_SRC);\n    const srcId = matches2 && matches2[1];\n    return `${embedBase}/${srcId}?${serialize(params)}`;\n  }\n  const matches = attrs.src.match(PLAYLIST_MATCH_SRC);\n  const playlistId = matches && matches[1];\n  const extendedParams = {\n    listType: \"playlist\",\n    list: playlistId,\n    ...params\n  };\n  return `${embedBase}?${serialize(extendedParams)}`;\n}\nclass YoutubeVideoElement extends MediaPlayedRangesMixin(globalThis.HTMLElement ?? class {\n}) {\n  static getTemplateHTML = getTemplateHTML;\n  static shadowRootOptions = { mode: \"open\" };\n  static observedAttributes = [\n    \"autoplay\",\n    \"controls\",\n    \"crossorigin\",\n    \"loop\",\n    \"muted\",\n    \"playsinline\",\n    \"poster\",\n    \"preload\",\n    \"src\"\n  ];\n  loadComplete = new PublicPromise();\n  #loadRequested;\n  #hasLoaded;\n  #readyState = 0;\n  #seeking = false;\n  #seekComplete;\n  isLoaded = false;\n  #error = null;\n  #config = null;\n  #textTracksVideo = null;\n  #initialVolume = 1;\n  constructor() {\n    super();\n    this.#upgradeProperty(\"config\");\n  }\n  get config() {\n    return this.#config;\n  }\n  set config(value) {\n    this.#config = value;\n  }\n  async load() {\n    if (this.#loadRequested) return;\n    if (!this.shadowRoot) {\n      this.attachShadow({ mode: \"open\" });\n    }\n    const isFirstLoad = !this.#hasLoaded;\n    if (this.#hasLoaded) {\n      this.loadComplete = new PublicPromise();\n      this.isLoaded = false;\n    }\n    this.#hasLoaded = true;\n    await (this.#loadRequested = Promise.resolve());\n    this.#loadRequested = null;\n    this.#readyState = 0;\n    this.dispatchEvent(new Event(\"emptied\"));\n    let oldApi = this.api;\n    this.api = null;\n    if (!this.src) {\n      oldApi == null ? void 0 : oldApi.destroy();\n      return;\n    }\n    this.#textTracksVideo = document.createElement(\"video\");\n    this.textTracks = this.#textTracksVideo.textTracks;\n    this.textTracks.addEventListener(\"change\", () => {\n      var _a;\n      const active = Array.from(this.textTracks).find((t) => t.mode === \"showing\");\n      (_a = this.api) == null ? void 0 : _a.setOption(\"captions\", \"track\", active ? { languageCode: active.language } : {});\n    });\n    this.dispatchEvent(new Event(\"loadstart\"));\n    let iframe = this.shadowRoot.querySelector(\"iframe\");\n    let attrs = namedNodeMapToObject(this.attributes);\n    if (isFirstLoad && iframe) {\n      this.#config = JSON.parse(iframe.getAttribute(\"data-config\") || \"{}\");\n    }\n    if (!(iframe == null ? void 0 : iframe.src) || iframe.src !== serializeIframeUrl(attrs, this)) {\n      this.shadowRoot.innerHTML = getTemplateHTML(attrs, this);\n      iframe = this.shadowRoot.querySelector(\"iframe\");\n    }\n    const YT = await loadScript(API_URL, API_GLOBAL, API_GLOBAL_READY);\n    this.api = new YT.Player(iframe, {\n      events: {\n        onReady: () => {\n          var _a;\n          this.#readyState = 1;\n          this.dispatchEvent(new Event(\"loadedmetadata\"));\n          this.dispatchEvent(new Event(\"durationchange\"));\n          if (this.#initialVolume !== 1) {\n            (_a = this.api) == null ? void 0 : _a.setVolume(this.#initialVolume * 100);\n          }\n          this.dispatchEvent(new Event(\"volumechange\"));\n          this.dispatchEvent(new Event(\"loadcomplete\"));\n          this.isLoaded = true;\n          this.loadComplete.resolve();\n        },\n        onError: (error) => {\n          console.error(error);\n          this.#error = {\n            code: error.data,\n            message: `YouTube iframe player error #${error.data}; visit https://developers.google.com/youtube/iframe_api_reference#onError for the full error message.`\n          };\n          this.dispatchEvent(new Event(\"error\"));\n        }\n      }\n    });\n    let playFired = false;\n    this.api.addEventListener(\"onStateChange\", (event) => {\n      var _a;\n      const state = event.data;\n      if (state === YT.PlayerState.PLAYING || state === YT.PlayerState.BUFFERING) {\n        if (!playFired) {\n          playFired = true;\n          this.dispatchEvent(new Event(\"play\"));\n        }\n        const captionList = this.api.getOption(\"captions\", \"tracklist\") || [];\n        captionList.forEach((t) => {\n          if (![...this.textTracks].some((tt) => tt.language === t.languageCode)) {\n            this.#textTracksVideo.addTextTrack(\"subtitles\", t.displayName, t.languageCode);\n          }\n          this.textTracks = this.#textTracksVideo.textTracks;\n        });\n        this.dispatchEvent(new Event(\"loadstart\"));\n      }\n      if (state === YT.PlayerState.PLAYING) {\n        if (this.seeking) {\n          this.#seeking = false;\n          (_a = this.#seekComplete) == null ? void 0 : _a.resolve();\n          this.dispatchEvent(new Event(\"seeked\"));\n        }\n        this.#readyState = 3;\n        this.dispatchEvent(new Event(\"playing\"));\n      } else if (state === YT.PlayerState.PAUSED) {\n        const diff = Math.abs(this.currentTime - lastCurrentTime);\n        if (!this.seeking && diff > 0.1) {\n          this.#seeking = true;\n          this.dispatchEvent(new Event(\"seeking\"));\n        }\n        playFired = false;\n        this.dispatchEvent(new Event(\"pause\"));\n      }\n      if (state === YT.PlayerState.ENDED) {\n        playFired = false;\n        this.dispatchEvent(new Event(\"pause\"));\n        this.dispatchEvent(new Event(\"ended\"));\n        if (this.loop) {\n          this.play();\n        }\n      }\n    });\n    this.api.addEventListener(\"onPlaybackRateChange\", () => {\n      this.dispatchEvent(new Event(\"ratechange\"));\n    });\n    this.api.addEventListener(\"onVolumeChange\", () => {\n      var _a;\n      const apiVolume = ((_a = this.api) == null ? void 0 : _a.getVolume()) / 100;\n      this.#initialVolume = apiVolume;\n      this.dispatchEvent(new Event(\"volumechange\"));\n    });\n    this.api.addEventListener(\"onVideoProgress\", () => {\n      this.dispatchEvent(new Event(\"timeupdate\"));\n    });\n    await this.loadComplete;\n    let lastCurrentTime = 0;\n    setInterval(() => {\n      var _a;\n      const diff = Math.abs(this.currentTime - lastCurrentTime);\n      const bufferedEnd = this.buffered.end(this.buffered.length - 1);\n      if (this.seeking && bufferedEnd > 0.1) {\n        this.#seeking = false;\n        (_a = this.#seekComplete) == null ? void 0 : _a.resolve();\n        this.dispatchEvent(new Event(\"seeked\"));\n      } else if (!this.seeking && diff > 0.1) {\n        this.#seeking = true;\n        this.dispatchEvent(new Event(\"seeking\"));\n      }\n      lastCurrentTime = this.currentTime;\n    }, 50);\n    let lastBufferedEnd;\n    const progressInterval = setInterval(() => {\n      const bufferedEnd = this.buffered.end(this.buffered.length - 1);\n      if (bufferedEnd >= this.duration) {\n        clearInterval(progressInterval);\n        this.#readyState = 4;\n      }\n      if (lastBufferedEnd != bufferedEnd) {\n        lastBufferedEnd = bufferedEnd;\n        this.dispatchEvent(new Event(\"progress\"));\n      }\n    }, 100);\n  }\n  async attributeChangedCallback(attrName, oldValue, newValue) {\n    if (oldValue === newValue) return;\n    switch (attrName) {\n      case \"src\":\n      case \"autoplay\":\n      case \"controls\":\n      case \"loop\":\n      case \"playsinline\": {\n        this.load();\n      }\n    }\n  }\n  async play() {\n    var _a;\n    this.#seekComplete = null;\n    await this.loadComplete;\n    (_a = this.api) == null ? void 0 : _a.playVideo();\n    return createPlayPromise(this);\n  }\n  async pause() {\n    var _a;\n    await this.loadComplete;\n    return (_a = this.api) == null ? void 0 : _a.pauseVideo();\n  }\n  get seeking() {\n    return this.#seeking;\n  }\n  get readyState() {\n    return this.#readyState;\n  }\n  get src() {\n    return this.getAttribute(\"src\");\n  }\n  set src(val) {\n    if (this.src == val) return;\n    this.setAttribute(\"src\", val);\n  }\n  get error() {\n    return this.#error;\n  }\n  /* onStateChange\n    -1 (unstarted)\n    0 (ended)\n    1 (playing)\n    2 (paused)\n    3 (buffering)\n    5 (video cued).\n  */\n  get paused() {\n    var _a, _b;\n    if (!this.isLoaded) return !this.autoplay;\n    return [-1, 0, 2, 5].includes((_b = (_a = this.api) == null ? void 0 : _a.getPlayerState) == null ? void 0 : _b.call(_a));\n  }\n  get duration() {\n    var _a, _b;\n    return ((_b = (_a = this.api) == null ? void 0 : _a.getDuration) == null ? void 0 : _b.call(_a)) ?? NaN;\n  }\n  get autoplay() {\n    return this.hasAttribute(\"autoplay\");\n  }\n  set autoplay(val) {\n    if (this.autoplay == val) return;\n    this.toggleAttribute(\"autoplay\", Boolean(val));\n  }\n  get buffered() {\n    var _a, _b;\n    if (!this.isLoaded) return createTimeRanges();\n    const progress = ((_a = this.api) == null ? void 0 : _a.getVideoLoadedFraction()) * ((_b = this.api) == null ? void 0 : _b.getDuration());\n    if (progress > 0) {\n      return createTimeRanges(0, progress);\n    }\n    return createTimeRanges();\n  }\n  get controls() {\n    return this.hasAttribute(\"controls\");\n  }\n  set controls(val) {\n    if (this.controls == val) return;\n    this.toggleAttribute(\"controls\", Boolean(val));\n  }\n  get currentTime() {\n    var _a, _b;\n    return ((_b = (_a = this.api) == null ? void 0 : _a.getCurrentTime) == null ? void 0 : _b.call(_a)) ?? 0;\n  }\n  set currentTime(val) {\n    if (this.currentTime == val) return;\n    this.#seekComplete = new PublicPromise();\n    this.loadComplete.then(() => {\n      var _a, _b;\n      (_a = this.api) == null ? void 0 : _a.seekTo(val, true);\n      if (this.paused) {\n        (_b = this.#seekComplete) == null ? void 0 : _b.then(() => {\n          var _a2;\n          if (!this.#seekComplete) return;\n          (_a2 = this.api) == null ? void 0 : _a2.pauseVideo();\n        });\n      }\n    });\n  }\n  set defaultMuted(val) {\n    if (this.defaultMuted == val) return;\n    this.toggleAttribute(\"muted\", Boolean(val));\n  }\n  get defaultMuted() {\n    return this.hasAttribute(\"muted\");\n  }\n  get loop() {\n    return this.hasAttribute(\"loop\");\n  }\n  set loop(val) {\n    if (this.loop == val) return;\n    this.toggleAttribute(\"loop\", Boolean(val));\n  }\n  set muted(val) {\n    if (this.muted == val) return;\n    this.loadComplete.then(() => {\n      var _a, _b;\n      val ? (_a = this.api) == null ? void 0 : _a.mute() : (_b = this.api) == null ? void 0 : _b.unMute();\n    });\n  }\n  get muted() {\n    var _a, _b;\n    if (!this.isLoaded) return this.defaultMuted;\n    return (_b = (_a = this.api) == null ? void 0 : _a.isMuted) == null ? void 0 : _b.call(_a);\n  }\n  get playbackRate() {\n    var _a, _b;\n    return ((_b = (_a = this.api) == null ? void 0 : _a.getPlaybackRate) == null ? void 0 : _b.call(_a)) ?? 1;\n  }\n  set playbackRate(val) {\n    if (this.playbackRate == val) return;\n    this.loadComplete.then(() => {\n      var _a;\n      (_a = this.api) == null ? void 0 : _a.setPlaybackRate(val);\n    });\n  }\n  get playsInline() {\n    return this.hasAttribute(\"playsinline\");\n  }\n  set playsInline(val) {\n    if (this.playsInline == val) return;\n    this.toggleAttribute(\"playsinline\", Boolean(val));\n  }\n  get poster() {\n    return this.getAttribute(\"poster\");\n  }\n  set poster(val) {\n    if (this.poster == val) return;\n    this.setAttribute(\"poster\", `${val}`);\n  }\n  set volume(val) {\n    if (this.volume == val) return;\n    this.#initialVolume = val;\n    this.loadComplete.then(() => {\n      var _a;\n      (_a = this.api) == null ? void 0 : _a.setVolume(val * 100);\n    });\n  }\n  get volume() {\n    var _a;\n    if (!this.isLoaded) {\n      return this.#initialVolume;\n    }\n    return ((_a = this.api) == null ? void 0 : _a.getVolume()) / 100;\n  }\n  // This is a pattern to update property values that are set before\n  // the custom element is upgraded.\n  // https://web.dev/custom-elements-best-practices/#make-properties-lazy\n  #upgradeProperty(prop) {\n    if (Object.prototype.hasOwnProperty.call(this, prop)) {\n      const value = this[prop];\n      delete this[prop];\n      this[prop] = value;\n    }\n  }\n}\nfunction serializeAttributes(attrs) {\n  let html = \"\";\n  for (const key in attrs) {\n    const value = attrs[key];\n    if (value === \"\") html += ` ${escapeHtml(key)}`;\n    else html += ` ${escapeHtml(key)}=\"${escapeHtml(`${value}`)}\"`;\n  }\n  return html;\n}\nfunction escapeHtml(str) {\n  return str.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&apos;\").replace(/`/g, \"&#x60;\");\n}\nfunction serialize(props) {\n  return String(new URLSearchParams(boolToBinary(props)));\n}\nfunction boolToBinary(props) {\n  let p = {};\n  for (let key in props) {\n    let val = props[key];\n    if (val === true || val === \"\") p[key] = 1;\n    else if (val === false) p[key] = 0;\n    else if (val != null) p[key] = val;\n  }\n  return p;\n}\nfunction namedNodeMapToObject(namedNodeMap) {\n  let obj = {};\n  for (let attr of namedNodeMap) {\n    obj[attr.name] = attr.value;\n  }\n  return obj;\n}\nconst loadScriptCache = {};\nasync function loadScript(src, globalName, readyFnName) {\n  if (loadScriptCache[src]) return loadScriptCache[src];\n  if (globalName && self[globalName]) {\n    await delay(0);\n    return self[globalName];\n  }\n  return loadScriptCache[src] = new Promise(function(resolve, reject) {\n    const script = document.createElement(\"script\");\n    script.src = src;\n    const ready = () => resolve(self[globalName]);\n    if (readyFnName) self[readyFnName] = ready;\n    script.onload = () => !readyFnName && ready();\n    script.onerror = reject;\n    document.head.append(script);\n  });\n}\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nfunction promisify(fn) {\n  return (...args) => new Promise((resolve) => {\n    fn(...args, (...res) => {\n      if (res.length > 1) resolve(res);\n      else resolve(res[0]);\n    });\n  });\n}\nfunction createPlayPromise(player) {\n  return promisify((event, cb) => {\n    let fn;\n    player.addEventListener(\n      event,\n      fn = () => {\n        player.removeEventListener(event, fn);\n        cb();\n      }\n    );\n  })(\"playing\");\n}\nclass PublicPromise extends Promise {\n  constructor(executor = () => {\n  }) {\n    let res, rej;\n    super((resolve, reject) => {\n      executor(resolve, reject);\n      res = resolve;\n      rej = reject;\n    });\n    this.resolve = res;\n    this.reject = rej;\n  }\n}\nfunction createTimeRanges(start, end) {\n  if (Array.isArray(start)) {\n    return createTimeRangesObj(start);\n  } else if (start == null || end == null || start === 0 && end === 0) {\n    return createTimeRangesObj([[0, 0]]);\n  }\n  return createTimeRangesObj([[start, end]]);\n}\nfunction createTimeRangesObj(ranges) {\n  Object.defineProperties(ranges, {\n    start: {\n      value: (i) => ranges[i][0]\n    },\n    end: {\n      value: (i) => ranges[i][1]\n    }\n  });\n  return ranges;\n}\nif (globalThis.customElements && !globalThis.customElements.get(\"youtube-video\")) {\n  globalThis.customElements.define(\"youtube-video\", YoutubeVideoElement);\n}\nvar youtube_video_element_default = YoutubeVideoElement;\nexport {\n  youtube_video_element_default as default\n};\n"]}