{"version":3,"sources":["jsdelivr-header.js","/npm/media-chrome@4.17.0/dist/constants.js","/npm/media-chrome@4.17.0/dist/utils/server-safe-globals.js","/npm/media-chrome@4.17.0/dist/utils/anchor-utils.js","/npm/media-chrome@4.17.0/dist/utils/resize-observer.js","/npm/media-chrome@4.17.0/dist/utils/events.js","/npm/media-chrome@4.17.0/dist/utils/element-utils.js","/npm/media-chrome@4.17.0/dist/menu/media-chrome-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-chrome-menu-item.js","/npm/media-chrome@4.17.0/dist/menu/media-settings-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-settings-menu-item.js","/npm/media-chrome@4.17.0/dist/media-tooltip.js","/npm/media-chrome@4.17.0/dist/media-chrome-button.js","/npm/media-chrome@4.17.0/dist/menu/media-chrome-menu-button.js","/npm/media-chrome@4.17.0/dist/utils/i18n.js","/npm/media-chrome@4.17.0/dist/lang/en.js","/npm/media-chrome@4.17.0/dist/menu/media-settings-menu-button.js","/npm/media-chrome@4.17.0/dist/utils/utils.js","/npm/media-chrome@4.17.0/dist/menu/media-audio-track-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-audio-track-menu-button.js","/npm/media-chrome@4.17.0/dist/utils/captions.js","/npm/media-chrome@4.17.0/dist/menu/media-captions-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-captions-menu-button.js","/npm/media-chrome@4.17.0/dist/utils/attribute-token-list.js","/npm/media-chrome@4.17.0/dist/media-playback-rate-button.js","/npm/media-chrome@4.17.0/dist/menu/media-playback-rate-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-playback-rate-menu-button.js","/npm/media-chrome@4.17.0/dist/menu/media-rendition-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-rendition-menu-button.js","/npm/media-chrome@4.17.0/dist/menu/media-context-menu.js","/npm/media-chrome@4.17.0/dist/menu/media-context-menu-item.js"],"names":[],"mappings":"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","file":"/npm/media-chrome@4.17.0/dist/menu/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/media-chrome@4.17.0/dist/menu/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const MediaUIEvents = {\n  MEDIA_PLAY_REQUEST: \"mediaplayrequest\",\n  MEDIA_PAUSE_REQUEST: \"mediapauserequest\",\n  MEDIA_MUTE_REQUEST: \"mediamuterequest\",\n  MEDIA_UNMUTE_REQUEST: \"mediaunmuterequest\",\n  MEDIA_LOOP_REQUEST: \"medialooprequest\",\n  MEDIA_VOLUME_REQUEST: \"mediavolumerequest\",\n  MEDIA_SEEK_REQUEST: \"mediaseekrequest\",\n  MEDIA_AIRPLAY_REQUEST: \"mediaairplayrequest\",\n  MEDIA_ENTER_FULLSCREEN_REQUEST: \"mediaenterfullscreenrequest\",\n  MEDIA_EXIT_FULLSCREEN_REQUEST: \"mediaexitfullscreenrequest\",\n  MEDIA_PREVIEW_REQUEST: \"mediapreviewrequest\",\n  MEDIA_ENTER_PIP_REQUEST: \"mediaenterpiprequest\",\n  MEDIA_EXIT_PIP_REQUEST: \"mediaexitpiprequest\",\n  MEDIA_ENTER_CAST_REQUEST: \"mediaentercastrequest\",\n  MEDIA_EXIT_CAST_REQUEST: \"mediaexitcastrequest\",\n  MEDIA_SHOW_TEXT_TRACKS_REQUEST: \"mediashowtexttracksrequest\",\n  MEDIA_HIDE_TEXT_TRACKS_REQUEST: \"mediahidetexttracksrequest\",\n  MEDIA_SHOW_SUBTITLES_REQUEST: \"mediashowsubtitlesrequest\",\n  MEDIA_DISABLE_SUBTITLES_REQUEST: \"mediadisablesubtitlesrequest\",\n  MEDIA_TOGGLE_SUBTITLES_REQUEST: \"mediatogglesubtitlesrequest\",\n  MEDIA_PLAYBACK_RATE_REQUEST: \"mediaplaybackraterequest\",\n  MEDIA_RENDITION_REQUEST: \"mediarenditionrequest\",\n  MEDIA_AUDIO_TRACK_REQUEST: \"mediaaudiotrackrequest\",\n  MEDIA_SEEK_TO_LIVE_REQUEST: \"mediaseektoliverequest\",\n  REGISTER_MEDIA_STATE_RECEIVER: \"registermediastatereceiver\",\n  UNREGISTER_MEDIA_STATE_RECEIVER: \"unregistermediastatereceiver\"\n};\nconst MediaStateReceiverAttributes = {\n  MEDIA_CHROME_ATTRIBUTES: \"mediachromeattributes\",\n  MEDIA_CONTROLLER: \"mediacontroller\"\n};\nconst MediaUIProps = {\n  MEDIA_AIRPLAY_UNAVAILABLE: \"mediaAirplayUnavailable\",\n  MEDIA_AUDIO_TRACK_ENABLED: \"mediaAudioTrackEnabled\",\n  MEDIA_AUDIO_TRACK_LIST: \"mediaAudioTrackList\",\n  MEDIA_AUDIO_TRACK_UNAVAILABLE: \"mediaAudioTrackUnavailable\",\n  MEDIA_BUFFERED: \"mediaBuffered\",\n  MEDIA_CAST_UNAVAILABLE: \"mediaCastUnavailable\",\n  MEDIA_CHAPTERS_CUES: \"mediaChaptersCues\",\n  MEDIA_CURRENT_TIME: \"mediaCurrentTime\",\n  MEDIA_DURATION: \"mediaDuration\",\n  MEDIA_ENDED: \"mediaEnded\",\n  MEDIA_ERROR: \"mediaError\",\n  MEDIA_ERROR_CODE: \"mediaErrorCode\",\n  MEDIA_ERROR_MESSAGE: \"mediaErrorMessage\",\n  MEDIA_FULLSCREEN_UNAVAILABLE: \"mediaFullscreenUnavailable\",\n  MEDIA_HAS_PLAYED: \"mediaHasPlayed\",\n  MEDIA_HEIGHT: \"mediaHeight\",\n  MEDIA_IS_AIRPLAYING: \"mediaIsAirplaying\",\n  MEDIA_IS_CASTING: \"mediaIsCasting\",\n  MEDIA_IS_FULLSCREEN: \"mediaIsFullscreen\",\n  MEDIA_IS_PIP: \"mediaIsPip\",\n  MEDIA_LOADING: \"mediaLoading\",\n  MEDIA_MUTED: \"mediaMuted\",\n  MEDIA_LOOP: \"mediaLoop\",\n  MEDIA_PAUSED: \"mediaPaused\",\n  MEDIA_PIP_UNAVAILABLE: \"mediaPipUnavailable\",\n  MEDIA_PLAYBACK_RATE: \"mediaPlaybackRate\",\n  MEDIA_PREVIEW_CHAPTER: \"mediaPreviewChapter\",\n  MEDIA_PREVIEW_COORDS: \"mediaPreviewCoords\",\n  MEDIA_PREVIEW_IMAGE: \"mediaPreviewImage\",\n  MEDIA_PREVIEW_TIME: \"mediaPreviewTime\",\n  MEDIA_RENDITION_LIST: \"mediaRenditionList\",\n  MEDIA_RENDITION_SELECTED: \"mediaRenditionSelected\",\n  MEDIA_RENDITION_UNAVAILABLE: \"mediaRenditionUnavailable\",\n  MEDIA_SEEKABLE: \"mediaSeekable\",\n  MEDIA_STREAM_TYPE: \"mediaStreamType\",\n  MEDIA_SUBTITLES_LIST: \"mediaSubtitlesList\",\n  MEDIA_SUBTITLES_SHOWING: \"mediaSubtitlesShowing\",\n  MEDIA_TARGET_LIVE_WINDOW: \"mediaTargetLiveWindow\",\n  MEDIA_TIME_IS_LIVE: \"mediaTimeIsLive\",\n  MEDIA_VOLUME: \"mediaVolume\",\n  MEDIA_VOLUME_LEVEL: \"mediaVolumeLevel\",\n  MEDIA_VOLUME_UNAVAILABLE: \"mediaVolumeUnavailable\",\n  MEDIA_LANG: \"mediaLang\",\n  MEDIA_WIDTH: \"mediaWidth\"\n};\nconst MediaUIPropsEntries = Object.entries(\n  MediaUIProps\n);\nconst MediaUIAttributes = MediaUIPropsEntries.reduce(\n  (dictObj, [key, propName]) => {\n    dictObj[key] = propName.toLowerCase();\n    return dictObj;\n  },\n  {}\n);\nconst AdditionalStateChangeEvents = {\n  USER_INACTIVE_CHANGE: \"userinactivechange\",\n  BREAKPOINTS_CHANGE: \"breakpointchange\",\n  BREAKPOINTS_COMPUTED: \"breakpointscomputed\"\n};\nconst MediaStateChangeEvents = MediaUIPropsEntries.reduce(\n  (dictObj, [key, propName]) => {\n    dictObj[key] = propName.toLowerCase();\n    return dictObj;\n  },\n  { ...AdditionalStateChangeEvents }\n);\nconst StateChangeEventToAttributeMap = Object.entries(\n  MediaStateChangeEvents\n).reduce(\n  (mapObj, [key, eventType]) => {\n    const attrName = MediaUIAttributes[key];\n    if (attrName) {\n      mapObj[eventType] = attrName;\n    }\n    return mapObj;\n  },\n  { userinactivechange: \"userinactive\" }\n);\nconst AttributeToStateChangeEventMap = Object.entries(\n  MediaUIAttributes\n).reduce(\n  (mapObj, [key, attrName]) => {\n    const evtType = MediaStateChangeEvents[key];\n    if (evtType) {\n      mapObj[attrName] = evtType;\n    }\n    return mapObj;\n  },\n  { userinactive: \"userinactivechange\" }\n);\nconst TextTrackKinds = {\n  SUBTITLES: \"subtitles\",\n  CAPTIONS: \"captions\",\n  DESCRIPTIONS: \"descriptions\",\n  CHAPTERS: \"chapters\",\n  METADATA: \"metadata\"\n};\nconst TextTrackModes = {\n  DISABLED: \"disabled\",\n  HIDDEN: \"hidden\",\n  SHOWING: \"showing\"\n};\nconst ReadyStates = {\n  HAVE_NOTHING: 0,\n  HAVE_METADATA: 1,\n  HAVE_CURRENT_DATA: 2,\n  HAVE_FUTURE_DATA: 3,\n  HAVE_ENOUGH_DATA: 4\n};\nconst PointerTypes = {\n  MOUSE: \"mouse\",\n  PEN: \"pen\",\n  TOUCH: \"touch\"\n};\nconst AvailabilityStates = {\n  UNAVAILABLE: \"unavailable\",\n  UNSUPPORTED: \"unsupported\"\n};\nconst StreamTypes = {\n  LIVE: \"live\",\n  ON_DEMAND: \"on-demand\",\n  UNKNOWN: \"unknown\"\n};\nconst VolumeLevels = {\n  HIGH: \"high\",\n  MEDIUM: \"medium\",\n  LOW: \"low\",\n  OFF: \"off\"\n};\nconst WebkitPresentationModes = {\n  INLINE: \"inline\",\n  FULLSCREEN: \"fullscreen\",\n  PICTURE_IN_PICTURE: \"picture-in-picture\"\n};\nexport {\n  AttributeToStateChangeEventMap,\n  AvailabilityStates,\n  MediaStateChangeEvents,\n  MediaStateReceiverAttributes,\n  MediaUIAttributes,\n  MediaUIEvents,\n  MediaUIProps,\n  PointerTypes,\n  ReadyStates,\n  StateChangeEventToAttributeMap,\n  StreamTypes,\n  TextTrackKinds,\n  TextTrackModes,\n  VolumeLevels,\n  WebkitPresentationModes\n};\n","class EventTarget {\n  addEventListener() {\n  }\n  removeEventListener() {\n  }\n  dispatchEvent() {\n    return true;\n  }\n}\nclass Node extends EventTarget {\n}\nclass Element extends Node {\n  constructor() {\n    super(...arguments);\n    this.role = null;\n  }\n}\nclass ResizeObserver {\n  observe() {\n  }\n  unobserve() {\n  }\n  disconnect() {\n  }\n}\nconst documentShim = {\n  createElement: function() {\n    return new globalThisShim.HTMLElement();\n  },\n  createElementNS: function() {\n    return new globalThisShim.HTMLElement();\n  },\n  addEventListener() {\n  },\n  removeEventListener() {\n  },\n  dispatchEvent(_event) {\n    return false;\n  }\n};\nconst globalThisShim = {\n  ResizeObserver,\n  document: documentShim,\n  Node,\n  Element,\n  HTMLElement: class HTMLElement extends Element {\n    constructor() {\n      super(...arguments);\n      this.innerHTML = \"\";\n    }\n    get content() {\n      return new globalThisShim.DocumentFragment();\n    }\n  },\n  DocumentFragment: class DocumentFragment extends EventTarget {\n  },\n  customElements: {\n    get: function() {\n    },\n    define: function() {\n    },\n    whenDefined: function() {\n    }\n  },\n  localStorage: {\n    getItem(_key) {\n      return null;\n    },\n    setItem(_key, _value) {\n    },\n    removeItem(_key) {\n    }\n  },\n  CustomEvent: function CustomEvent() {\n  },\n  getComputedStyle: function() {\n  },\n  navigator: {\n    languages: [],\n    get userAgent() {\n      return \"\";\n    }\n  },\n  matchMedia(media) {\n    return {\n      matches: false,\n      media\n    };\n  },\n  DOMParser: class DOMParser {\n    parseFromString(string, _contentType) {\n      return {\n        body: {\n          textContent: string\n        }\n      };\n    }\n  }\n};\nconst isServer = \"global\" in globalThis && (globalThis == null ? void 0 : globalThis.global) === globalThis || // node or node-like environments, whether or not there are global polyfills like jsdom\ntypeof window === \"undefined\" || typeof window.customElements === \"undefined\";\nconst isShimmed = Object.keys(globalThisShim).every((key) => key in globalThis);\nconst GlobalThis = isServer && !isShimmed ? globalThisShim : globalThis;\nconst Document = isServer && !isShimmed ? documentShim : globalThis.document;\nexport {\n  Document,\n  GlobalThis,\n  Document as document,\n  GlobalThis as globalThis,\n  isServer\n};\n","function computePosition({\n  anchor,\n  floating,\n  placement\n}) {\n  const rects = getElementRects({ anchor, floating });\n  const { x, y } = computeCoordsFromPlacement(rects, placement);\n  return { x, y };\n}\nfunction getElementRects({\n  anchor,\n  floating\n}) {\n  return {\n    anchor: getRectRelativeToOffsetParent(anchor, floating.offsetParent),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floating.offsetWidth,\n      height: floating.offsetHeight\n    }\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent) {\n  var _a;\n  const rect = element.getBoundingClientRect();\n  const offsetRect = (_a = offsetParent == null ? void 0 : offsetParent.getBoundingClientRect()) != null ? _a : { x: 0, y: 0 };\n  return {\n    x: rect.x - offsetRect.x,\n    y: rect.y - offsetRect.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction computeCoordsFromPlacement({ anchor, floating }, placement) {\n  const alignmentAxis = getSideAxis(placement) === \"x\" ? \"y\" : \"x\";\n  const alignLength = alignmentAxis === \"y\" ? \"height\" : \"width\";\n  const side = getSide(placement);\n  const commonX = anchor.x + anchor.width / 2 - floating.width / 2;\n  const commonY = anchor.y + anchor.height / 2 - floating.height / 2;\n  const commonAlign = anchor[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case \"top\":\n      coords = { x: commonX, y: anchor.y - floating.height };\n      break;\n    case \"bottom\":\n      coords = { x: commonX, y: anchor.y + anchor.height };\n      break;\n    case \"right\":\n      coords = { x: anchor.x + anchor.width, y: commonY };\n      break;\n    case \"left\":\n      coords = { x: anchor.x - floating.width, y: commonY };\n      break;\n    default:\n      coords = { x: anchor.x, y: anchor.y };\n  }\n  switch (placement.split(\"-\")[1]) {\n    case \"start\":\n      coords[alignmentAxis] -= commonAlign;\n      break;\n    case \"end\":\n      coords[alignmentAxis] += commonAlign;\n      break;\n  }\n  return coords;\n}\nfunction getSide(placement) {\n  return placement.split(\"-\")[0];\n}\nfunction getSideAxis(placement) {\n  return [\"top\", \"bottom\"].includes(getSide(placement)) ? \"y\" : \"x\";\n}\nexport {\n  computePosition\n};\n","import { globalThis } from \"./server-safe-globals.js\";\nconst callbacksMap = /* @__PURE__ */ new WeakMap();\nconst getCallbacks = (element) => {\n  let callbacks = callbacksMap.get(element);\n  if (!callbacks)\n    callbacksMap.set(element, callbacks = /* @__PURE__ */ new Set());\n  return callbacks;\n};\nconst observer = new globalThis.ResizeObserver(\n  (entries) => {\n    for (const entry of entries) {\n      for (const callback of getCallbacks(entry.target)) {\n        callback(entry);\n      }\n    }\n  }\n);\nfunction observeResize(element, callback) {\n  getCallbacks(element).add(callback);\n  observer.observe(element);\n}\nfunction unobserveResize(element, callback) {\n  const callbacks = getCallbacks(element);\n  callbacks.delete(callback);\n  if (!callbacks.size) {\n    observer.unobserve(element);\n  }\n}\nexport {\n  observeResize,\n  unobserveResize\n};\n","class InvokeEvent extends Event {\n  /**\n   * @param init - The event options.\n   */\n  constructor({ action = \"auto\", relatedTarget, ...options }) {\n    super(\"invoke\", options);\n    this.action = action;\n    this.relatedTarget = relatedTarget;\n  }\n}\nclass ToggleEvent extends Event {\n  /**\n   * @param init - The event options.\n   */\n  constructor({ newState, oldState, ...options }) {\n    super(\"toggle\", options);\n    this.newState = newState;\n    this.oldState = oldState;\n  }\n}\nexport {\n  InvokeEvent,\n  ToggleEvent\n};\n","import { MediaStateReceiverAttributes } from \"../constants.js\";\nfunction namedNodeMapToObject(namedNodeMap) {\n  const obj = {};\n  for (const attr of namedNodeMap) {\n    obj[attr.name] = attr.value;\n  }\n  return obj;\n}\nfunction getMediaController(host) {\n  var _a;\n  return (_a = getAttributeMediaController(host)) != null ? _a : closestComposedNode(host, \"media-controller\");\n}\nfunction getAttributeMediaController(host) {\n  var _a;\n  const { MEDIA_CONTROLLER } = MediaStateReceiverAttributes;\n  const mediaControllerId = host.getAttribute(MEDIA_CONTROLLER);\n  if (mediaControllerId) {\n    return (_a = getDocumentOrShadowRoot(host)) == null ? void 0 : _a.getElementById(\n      mediaControllerId\n    );\n  }\n}\nconst updateIconText = (svg, value, selector = \".value\") => {\n  const node = svg.querySelector(selector);\n  if (!node)\n    return;\n  node.textContent = value;\n};\nconst getAllSlotted = (el, name) => {\n  const slotSelector = `slot[name=\"${name}\"]`;\n  const slot = el.shadowRoot.querySelector(slotSelector);\n  if (!slot)\n    return [];\n  return slot.children;\n};\nconst getSlotted = (el, name) => getAllSlotted(el, name)[0];\nconst containsComposedNode = (rootNode, childNode) => {\n  if (!rootNode || !childNode)\n    return false;\n  if (rootNode == null ? void 0 : rootNode.contains(childNode))\n    return true;\n  return containsComposedNode(\n    rootNode,\n    childNode.getRootNode().host\n  );\n};\nconst closestComposedNode = (childNode, selector) => {\n  if (!childNode)\n    return null;\n  const closest = childNode.closest(selector);\n  if (closest)\n    return closest;\n  return closestComposedNode(\n    childNode.getRootNode().host,\n    selector\n  );\n};\nfunction getActiveElement(root = document) {\n  var _a;\n  const activeEl = root == null ? void 0 : root.activeElement;\n  if (!activeEl)\n    return null;\n  return (_a = getActiveElement(activeEl.shadowRoot)) != null ? _a : activeEl;\n}\nfunction getDocumentOrShadowRoot(node) {\n  var _a;\n  const rootNode = (_a = node == null ? void 0 : node.getRootNode) == null ? void 0 : _a.call(node);\n  if (rootNode instanceof ShadowRoot || rootNode instanceof Document) {\n    return rootNode;\n  }\n  return null;\n}\nfunction isElementVisible(element, { depth = 3, checkOpacity = true, checkVisibilityCSS = true } = {}) {\n  if (element.checkVisibility) {\n    return element.checkVisibility({\n      checkOpacity,\n      checkVisibilityCSS\n    });\n  }\n  let el = element;\n  while (el && depth > 0) {\n    const style = getComputedStyle(el);\n    if (checkOpacity && style.opacity === \"0\" || checkVisibilityCSS && style.visibility === \"hidden\" || style.display === \"none\") {\n      return false;\n    }\n    el = el.parentElement;\n    depth--;\n  }\n  return true;\n}\nfunction getPointProgressOnLine(x, y, p1, p2) {\n  const dx = p2.x - p1.x;\n  const dy = p2.y - p1.y;\n  const lengthSquared = dx * dx + dy * dy;\n  if (lengthSquared === 0)\n    return 0;\n  const projection = ((x - p1.x) * dx + (y - p1.y) * dy) / lengthSquared;\n  return Math.max(0, Math.min(1, projection));\n}\nfunction distance(p1, p2) {\n  return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nfunction getOrInsertCSSRule(styleParent, selectorText) {\n  const cssRule = getCSSRule(styleParent, (st) => st === selectorText);\n  if (cssRule)\n    return cssRule;\n  return insertCSSRule(styleParent, selectorText);\n}\nfunction getCSSRule(styleParent, predicate) {\n  var _a, _b;\n  let style;\n  for (style of (_a = styleParent.querySelectorAll(\"style:not([media])\")) != null ? _a : []) {\n    let cssRules;\n    try {\n      cssRules = (_b = style.sheet) == null ? void 0 : _b.cssRules;\n    } catch {\n      continue;\n    }\n    for (const rule of cssRules != null ? cssRules : []) {\n      if (predicate(rule.selectorText))\n        return rule;\n    }\n  }\n}\nfunction insertCSSRule(styleParent, selectorText) {\n  var _a, _b;\n  const styles = (_a = styleParent.querySelectorAll(\"style:not([media])\")) != null ? _a : [];\n  const style = styles == null ? void 0 : styles[styles.length - 1];\n  if (!(style == null ? void 0 : style.sheet)) {\n    console.warn(\n      \"Media Chrome: No style sheet found on style tag of\",\n      styleParent\n    );\n    return {\n      // @ts-ignore\n      style: {\n        setProperty: () => {\n        },\n        removeProperty: () => \"\",\n        getPropertyValue: () => \"\"\n      }\n    };\n  }\n  style == null ? void 0 : style.sheet.insertRule(`${selectorText}{}`, style.sheet.cssRules.length);\n  return (\n    /** @type {CSSStyleRule} */\n    (_b = style.sheet.cssRules) == null ? void 0 : _b[style.sheet.cssRules.length - 1]\n  );\n}\nfunction getNumericAttr(el, attrName, defaultValue = Number.NaN) {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal != null ? +attrVal : defaultValue;\n}\nfunction setNumericAttr(el, attrName, value) {\n  const nextNumericValue = +value;\n  if (value == null || Number.isNaN(nextNumericValue)) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  if (getNumericAttr(el, attrName, void 0) === nextNumericValue)\n    return;\n  el.setAttribute(attrName, `${nextNumericValue}`);\n}\nfunction getBooleanAttr(el, attrName) {\n  return el.hasAttribute(attrName);\n}\nfunction setBooleanAttr(el, attrName, value) {\n  if (value == null) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  if (getBooleanAttr(el, attrName) == value)\n    return;\n  el.toggleAttribute(attrName, value);\n}\nfunction getStringAttr(el, attrName, defaultValue = null) {\n  var _a;\n  return (_a = el.getAttribute(attrName)) != null ? _a : defaultValue;\n}\nfunction setStringAttr(el, attrName, value) {\n  if (value == null) {\n    if (el.hasAttribute(attrName)) {\n      el.removeAttribute(attrName);\n    }\n    return;\n  }\n  const nextValue = `${value}`;\n  if (getStringAttr(el, attrName, void 0) === nextValue)\n    return;\n  el.setAttribute(attrName, nextValue);\n}\nexport {\n  closestComposedNode,\n  containsComposedNode,\n  distance,\n  getActiveElement,\n  getAllSlotted,\n  getAttributeMediaController,\n  getBooleanAttr,\n  getCSSRule,\n  getDocumentOrShadowRoot,\n  getMediaController,\n  getNumericAttr,\n  getOrInsertCSSRule,\n  getPointProgressOnLine,\n  getSlotted,\n  getStringAttr,\n  insertCSSRule,\n  isElementVisible,\n  namedNodeMapToObject,\n  setBooleanAttr,\n  setNumericAttr,\n  setStringAttr,\n  updateIconText\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController, _previouslyFocused, _invokerElement, _previousItems, _mutationObserver, _isPopover, _cssRule, _handleSlotChange, handleSlotChange_fn, _toggleHeader, toggleHeader_fn, _handleMenuItems, _updateLayoutStyle, updateLayoutStyle_fn, _handleInvoke, handleInvoke_fn, _handleOpen, handleOpen_fn, _handleClosed, handleClosed_fn, _handleBoundsResize, _handleMenuResize, _positionMenu, positionMenu_fn, _resizeMenu, resizeMenu_fn, _handleClick, handleClick_fn, _backButtonElement, backButtonElement_get, _handleToggle, handleToggle_fn, _checkSubmenuHasExpanded, checkSubmenuHasExpanded_fn, _handleFocusOut, handleFocusOut_fn, _handleKeyDown, handleKeyDown_fn, _getItem, getItem_fn, _getTabItem, getTabItem_fn, _setTabItem, setTabItem_fn, _selectItem, selectItem_fn;\nimport { MediaStateReceiverAttributes } from \"../constants.js\";\nimport { globalThis, document } from \"../utils/server-safe-globals.js\";\nimport { computePosition } from \"../utils/anchor-utils.js\";\nimport { observeResize, unobserveResize } from \"../utils/resize-observer.js\";\nimport { ToggleEvent, InvokeEvent } from \"../utils/events.js\";\nimport {\n  getActiveElement,\n  containsComposedNode,\n  closestComposedNode,\n  insertCSSRule,\n  getMediaController,\n  getAttributeMediaController,\n  getDocumentOrShadowRoot,\n  namedNodeMapToObject\n} from \"../utils/element-utils.js\";\nfunction createMenuItem({\n  type,\n  text,\n  value,\n  checked\n}) {\n  const item = document.createElement(\n    \"media-chrome-menu-item\"\n  );\n  item.type = type != null ? type : \"\";\n  item.part.add(\"menu-item\");\n  if (type)\n    item.part.add(type);\n  item.value = value;\n  item.checked = checked;\n  const label = document.createElement(\"span\");\n  label.textContent = text;\n  item.append(label);\n  return item;\n}\nfunction createIndicator(el, name) {\n  let customIndicator = el.querySelector(`:scope > [slot=\"${name}\"]`);\n  if ((customIndicator == null ? void 0 : customIndicator.nodeName) == \"SLOT\")\n    customIndicator = customIndicator.assignedElements({ flatten: true })[0];\n  if (customIndicator) {\n    customIndicator = customIndicator.cloneNode(true);\n    return customIndicator;\n  }\n  const fallbackIndicator = el.shadowRoot.querySelector(\n    `[name=\"${name}\"] > svg`\n  );\n  if (fallbackIndicator) {\n    return fallbackIndicator.cloneNode(true);\n  }\n  return \"\";\n}\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        font: var(--media-font,\n          var(--media-font-weight, normal)\n          var(--media-font-size, 14px) /\n          var(--media-text-content-height, var(--media-control-height, 24px))\n          var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n        color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n        --_menu-bg: rgb(20 20 30 / .8);\n        background: var(--media-menu-background, var(--media-control-background, var(--media-secondary-color, var(--_menu-bg))));\n        border-radius: var(--media-menu-border-radius);\n        border: var(--media-menu-border, none);\n        display: var(--media-menu-display, inline-flex) !important;\n        ${/* ^^Prevent override by Tailwind CSS causing the menu to not hide properly. */\n    \"\"}\n        transition: var(--media-menu-transition-in,\n          visibility 0s,\n          opacity .2s ease-out,\n          transform .15s ease-out,\n          left .2s ease-in-out,\n          min-width .2s ease-in-out,\n          min-height .2s ease-in-out\n        ) !important;\n        ${/* ^^Prevent transition override by media-container */\n    \"\"}\n        visibility: var(--media-menu-visibility, visible);\n        opacity: var(--media-menu-opacity, 1);\n        max-height: var(--media-menu-max-height, var(--_menu-max-height, 300px));\n        transform: var(--media-menu-transform-in, translateY(0) scale(1));\n        flex-direction: column;\n        ${/* Prevent overflowing a flex container */\n    \"\"}\n        min-height: 0;\n        position: relative;\n        bottom: var(--_menu-bottom);\n        box-sizing: border-box;\n      } \n\n      @-moz-document url-prefix() {\n        :host{\n          --_menu-bg: rgb(20 20 30);\n        }\n      }\n\n      :host([hidden]) {\n        transition: var(--media-menu-transition-out,\n          visibility .15s ease-in,\n          opacity .15s ease-in,\n          transform .15s ease-in\n        ) !important;\n        visibility: var(--media-menu-hidden-visibility, hidden);\n        opacity: var(--media-menu-hidden-opacity, 0);\n        max-height: var(--media-menu-hidden-max-height,\n          var(--media-menu-max-height, var(--_menu-max-height, 300px)));\n        transform: var(--media-menu-transform-out, translateY(2px) scale(.99));\n        pointer-events: none;\n      }\n\n      :host([slot=\"submenu\"]) {\n        background: none;\n        width: 100%;\n        min-height: 100%;\n        position: absolute;\n        bottom: 0;\n        right: -100%;\n      }\n\n      #container {\n        display: flex;\n        flex-direction: column;\n        min-height: 0;\n        transition: transform .2s ease-out;\n        transform: translate(0, 0);\n      }\n\n      #container.has-expanded {\n        transition: transform .2s ease-in;\n        transform: translate(-100%, 0);\n      }\n\n      button {\n        background: none;\n        color: inherit;\n        border: none;\n        padding: 0;\n        font: inherit;\n        outline: inherit;\n        display: inline-flex;\n        align-items: center;\n      }\n\n      slot[name=\"header\"][hidden] {\n        display: none;\n      }\n\n      slot[name=\"header\"] > *,\n      slot[name=\"header\"]::slotted(*) {\n        padding: .4em .7em;\n        border-bottom: 1px solid rgb(255 255 255 / .25);\n        cursor: var(--media-cursor, default);\n      }\n\n      slot[name=\"header\"] > button[part~=\"back\"],\n      slot[name=\"header\"]::slotted(button[part~=\"back\"]) {\n        cursor: var(--media-cursor, pointer);\n      }\n\n      svg[part~=\"back\"] {\n        height: var(--media-menu-icon-height, var(--media-control-height, 24px));\n        fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n        display: block;\n        margin-right: .5ch;\n      }\n\n      slot:not([name]) {\n        gap: var(--media-menu-gap);\n        flex-direction: var(--media-menu-flex-direction, column);\n        overflow: var(--media-menu-overflow, hidden auto);\n        display: flex;\n        min-height: 0;\n      }\n\n      :host([role=\"menu\"]) slot:not([name]) {\n        padding-block: .4em;\n      }\n\n      slot:not([name])::slotted([role=\"menu\"]) {\n        background: none;\n      }\n\n      media-chrome-menu-item > span {\n        margin-right: .5ch;\n        max-width: var(--media-menu-item-max-width);\n        text-overflow: ellipsis;\n        overflow: hidden;\n      }\n    </style>\n    <style id=\"layout-row\" media=\"width:0\">\n\n      slot[name=\"header\"] > *,\n      slot[name=\"header\"]::slotted(*) {\n        padding: .4em .5em;\n      }\n\n      slot:not([name]) {\n        gap: var(--media-menu-gap, .25em);\n        flex-direction: var(--media-menu-flex-direction, row);\n        padding-inline: .5em;\n      }\n\n      media-chrome-menu-item {\n        padding: .3em .5em;\n      }\n\n      media-chrome-menu-item[aria-checked=\"true\"] {\n        background: var(--media-menu-item-checked-background, rgb(255 255 255 / .2));\n      }\n\n      ${/* In row layout hide the checked indicator completely. */\n    \"\"}\n      media-chrome-menu-item::part(checked-indicator) {\n        display: var(--media-menu-item-checked-indicator-display, none);\n      }\n    </style>\n    <div id=\"container\" part=\"container\">\n      <slot name=\"header\" hidden>\n        <button part=\"back button\" aria-label=\"Back to previous menu\">\n          <slot name=\"back-icon\">\n            <svg aria-hidden=\"true\" viewBox=\"0 0 20 24\" part=\"back indicator\">\n              <path d=\"m11.88 17.585.742-.669-4.2-4.665 4.2-4.666-.743-.669-4.803 5.335 4.803 5.334Z\"/>\n            </svg>\n          </slot>\n          <slot name=\"title\"></slot>\n        </button>\n      </slot>\n      <slot></slot>\n    </div>\n    <slot name=\"checked-indicator\" hidden></slot>\n  `\n  );\n}\nconst Attributes = {\n  STYLE: \"style\",\n  HIDDEN: \"hidden\",\n  DISABLED: \"disabled\",\n  ANCHOR: \"anchor\"\n};\nclass MediaChromeMenu extends globalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd(this, _handleSlotChange);\n    __privateAdd(this, _toggleHeader);\n    /**\n     * Sets the layout style for the menu.\n     * It can be a row or column layout. e.g. playback-rate-menu\n     */\n    __privateAdd(this, _updateLayoutStyle);\n    __privateAdd(this, _handleInvoke);\n    __privateAdd(this, _handleOpen);\n    __privateAdd(this, _handleClosed);\n    /**\n     * Updates the popover menu position based on the anchor element.\n     * @param  {number} [menuWidth]\n     */\n    __privateAdd(this, _positionMenu);\n    /**\n     * Resize this menu to fit the submenu.\n     * @param  {boolean} animate\n     */\n    __privateAdd(this, _resizeMenu);\n    __privateAdd(this, _handleClick);\n    __privateAdd(this, _backButtonElement);\n    /**\n     * Handle the toggle event of submenus.\n     * Closes all other open submenus when opening a submenu.\n     * Resizes this menu to fit the submenu.\n     *\n     * @param  {ToggleEvent} event\n     */\n    __privateAdd(this, _handleToggle);\n    /**\n     * Check if any submenu is expanded and update the container class accordingly.\n     * When the CSS :has() selector is supported, this can be done with CSS only.\n     */\n    __privateAdd(this, _checkSubmenuHasExpanded);\n    __privateAdd(this, _handleFocusOut);\n    __privateAdd(this, _handleKeyDown);\n    __privateAdd(this, _getItem);\n    __privateAdd(this, _getTabItem);\n    __privateAdd(this, _setTabItem);\n    __privateAdd(this, _selectItem);\n    __privateAdd(this, _mediaController, null);\n    __privateAdd(this, _previouslyFocused, null);\n    __privateAdd(this, _invokerElement, null);\n    __privateAdd(this, _previousItems, /* @__PURE__ */ new Set());\n    __privateAdd(this, _mutationObserver, void 0);\n    __privateAdd(this, _isPopover, false);\n    __privateAdd(this, _cssRule, null);\n    /**\n     * Fires an event when a menu item is added or removed.\n     * This is needed to update the description slot of an ancestor menu item.\n     */\n    __privateAdd(this, _handleMenuItems, () => {\n      const previousItems = __privateGet(this, _previousItems);\n      const currentItems = new Set(this.items);\n      for (const item of previousItems) {\n        if (!currentItems.has(item)) {\n          this.dispatchEvent(new CustomEvent(\"removemenuitem\", { detail: item }));\n        }\n      }\n      for (const item of currentItems) {\n        if (!previousItems.has(item)) {\n          this.dispatchEvent(new CustomEvent(\"addmenuitem\", { detail: item }));\n        }\n      }\n      __privateSet(this, _previousItems, currentItems);\n    });\n    __privateAdd(this, _handleBoundsResize, () => {\n      __privateMethod(this, _positionMenu, positionMenu_fn).call(this);\n      __privateMethod(this, _resizeMenu, resizeMenu_fn).call(this, false);\n    });\n    __privateAdd(this, _handleMenuResize, () => {\n      __privateMethod(this, _positionMenu, positionMenu_fn).call(this);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow(this.constructor.shadowRootOptions);\n      const attrs = namedNodeMapToObject(this.attributes);\n      this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n    }\n    this.container = this.shadowRoot.querySelector(\"#container\");\n    this.defaultSlot = this.shadowRoot.querySelector(\n      \"slot:not([name])\"\n    );\n    this.shadowRoot.addEventListener(\"slotchange\", this);\n    __privateSet(this, _mutationObserver, new MutationObserver(__privateGet(this, _handleMenuItems)));\n    __privateGet(this, _mutationObserver).observe(this.defaultSlot, { childList: true });\n  }\n  static get observedAttributes() {\n    return [\n      Attributes.DISABLED,\n      Attributes.HIDDEN,\n      Attributes.STYLE,\n      Attributes.ANCHOR,\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    ];\n  }\n  static formatMenuItemText(text, _data) {\n    return text;\n  }\n  enable() {\n    this.addEventListener(\"click\", this);\n    this.addEventListener(\"focusout\", this);\n    this.addEventListener(\"keydown\", this);\n    this.addEventListener(\"invoke\", this);\n    this.addEventListener(\"toggle\", this);\n  }\n  disable() {\n    this.removeEventListener(\"click\", this);\n    this.removeEventListener(\"focusout\", this);\n    this.removeEventListener(\"keyup\", this);\n    this.removeEventListener(\"invoke\", this);\n    this.removeEventListener(\"toggle\", this);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"slotchange\":\n        __privateMethod(this, _handleSlotChange, handleSlotChange_fn).call(this, event);\n        break;\n      case \"invoke\":\n        __privateMethod(this, _handleInvoke, handleInvoke_fn).call(this, event);\n        break;\n      case \"click\":\n        __privateMethod(this, _handleClick, handleClick_fn).call(this, event);\n        break;\n      case \"toggle\":\n        __privateMethod(this, _handleToggle, handleToggle_fn).call(this, event);\n        break;\n      case \"focusout\":\n        __privateMethod(this, _handleFocusOut, handleFocusOut_fn).call(this, event);\n        break;\n      case \"keydown\":\n        __privateMethod(this, _handleKeyDown, handleKeyDown_fn).call(this, event);\n        break;\n    }\n  }\n  connectedCallback() {\n    var _a, _b;\n    __privateSet(this, _cssRule, insertCSSRule(this.shadowRoot, \":host\"));\n    __privateMethod(this, _updateLayoutStyle, updateLayoutStyle_fn).call(this);\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    }\n    if (!this.role) {\n      this.role = \"menu\";\n    }\n    __privateSet(this, _mediaController, getAttributeMediaController(this));\n    (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.associateElement) == null ? void 0 : _b.call(_a, this);\n    if (!this.hidden) {\n      observeResize(getBoundsElement(this), __privateGet(this, _handleBoundsResize));\n      observeResize(this, __privateGet(this, _handleMenuResize));\n    }\n    __privateMethod(this, _toggleHeader, toggleHeader_fn).call(this);\n  }\n  disconnectedCallback() {\n    var _a, _b;\n    unobserveResize(getBoundsElement(this), __privateGet(this, _handleBoundsResize));\n    unobserveResize(this, __privateGet(this, _handleMenuResize));\n    this.disable();\n    (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.unassociateElement) == null ? void 0 : _b.call(_a, this);\n    __privateSet(this, _mediaController, null);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a, _b, _c, _d;\n    if (attrName === Attributes.HIDDEN && newValue !== oldValue) {\n      if (!__privateGet(this, _isPopover))\n        __privateSet(this, _isPopover, true);\n      if (this.hidden) {\n        __privateMethod(this, _handleClosed, handleClosed_fn).call(this);\n      } else {\n        __privateMethod(this, _handleOpen, handleOpen_fn).call(this);\n      }\n      this.dispatchEvent(\n        new ToggleEvent({\n          oldState: this.hidden ? \"open\" : \"closed\",\n          newState: this.hidden ? \"closed\" : \"open\",\n          bubbles: true\n        })\n      );\n    } else if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.unassociateElement) == null ? void 0 : _b.call(_a, this);\n        __privateSet(this, _mediaController, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet(this, _mediaController, getAttributeMediaController(this));\n        (_d = (_c = __privateGet(this, _mediaController)) == null ? void 0 : _c.associateElement) == null ? void 0 : _d.call(_c, this);\n      }\n    } else if (attrName === Attributes.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    } else if (attrName === Attributes.STYLE && newValue !== oldValue) {\n      __privateMethod(this, _updateLayoutStyle, updateLayoutStyle_fn).call(this);\n    }\n  }\n  formatMenuItemText(text, data) {\n    return this.constructor.formatMenuItemText(\n      text,\n      data\n    );\n  }\n  get anchor() {\n    return this.getAttribute(\"anchor\");\n  }\n  set anchor(value) {\n    this.setAttribute(\"anchor\", `${value}`);\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   */\n  get anchorElement() {\n    var _a;\n    if (this.anchor) {\n      return (_a = getDocumentOrShadowRoot(this)) == null ? void 0 : _a.querySelector(\n        `#${this.anchor}`\n      );\n    }\n    return null;\n  }\n  /**\n   * Returns the menu items.\n   */\n  get items() {\n    return this.defaultSlot.assignedElements({ flatten: true }).filter(isMenuItem);\n  }\n  get radioGroupItems() {\n    return this.items.filter((item) => item.role === \"menuitemradio\");\n  }\n  get checkedItems() {\n    return this.items.filter((item) => item.checked);\n  }\n  get value() {\n    var _a, _b;\n    return (_b = (_a = this.checkedItems[0]) == null ? void 0 : _a.value) != null ? _b : \"\";\n  }\n  set value(newValue) {\n    const item = this.items.find((item2) => item2.value === newValue);\n    if (!item)\n      return;\n    __privateMethod(this, _selectItem, selectItem_fn).call(this, item);\n  }\n  focus() {\n    __privateSet(this, _previouslyFocused, getActiveElement());\n    if (this.items.length) {\n      __privateMethod(this, _setTabItem, setTabItem_fn).call(this, this.items[0]);\n      this.items[0].focus();\n      return;\n    }\n    const focusable = this.querySelector(\n      '[autofocus], [tabindex]:not([tabindex=\"-1\"]), [role=\"menu\"]'\n    );\n    focusable == null ? void 0 : focusable.focus();\n  }\n  handleSelect(event) {\n    var _a;\n    const item = __privateMethod(this, _getItem, getItem_fn).call(this, event);\n    if (!item)\n      return;\n    __privateMethod(this, _selectItem, selectItem_fn).call(this, item, item.type === \"checkbox\");\n    if (__privateGet(this, _invokerElement) && !this.hidden) {\n      (_a = __privateGet(this, _previouslyFocused)) == null ? void 0 : _a.focus();\n      this.hidden = true;\n    }\n  }\n  get keysUsed() {\n    return [\n      \"Enter\",\n      \"Escape\",\n      \"Tab\",\n      \" \",\n      \"ArrowDown\",\n      \"ArrowUp\",\n      \"Home\",\n      \"End\"\n    ];\n  }\n  handleMove(event) {\n    var _a, _b;\n    const { key } = event;\n    const items = this.items;\n    const currentItem = (_b = (_a = __privateMethod(this, _getItem, getItem_fn).call(this, event)) != null ? _a : __privateMethod(this, _getTabItem, getTabItem_fn).call(this)) != null ? _b : items[0];\n    const currentIndex = items.indexOf(currentItem);\n    let index = Math.max(0, currentIndex);\n    if (key === \"ArrowDown\") {\n      index++;\n    } else if (key === \"ArrowUp\") {\n      index--;\n    } else if (event.key === \"Home\") {\n      index = 0;\n    } else if (event.key === \"End\") {\n      index = items.length - 1;\n    }\n    if (index < 0) {\n      index = items.length - 1;\n    }\n    if (index > items.length - 1) {\n      index = 0;\n    }\n    __privateMethod(this, _setTabItem, setTabItem_fn).call(this, items[index]);\n    items[index].focus();\n  }\n}\n_mediaController = new WeakMap();\n_previouslyFocused = new WeakMap();\n_invokerElement = new WeakMap();\n_previousItems = new WeakMap();\n_mutationObserver = new WeakMap();\n_isPopover = new WeakMap();\n_cssRule = new WeakMap();\n_handleSlotChange = new WeakSet();\nhandleSlotChange_fn = function(event) {\n  const slot = event.target;\n  for (const node of slot.assignedNodes({ flatten: true })) {\n    if (node.nodeType === 3 && node.textContent.trim() === \"\") {\n      node.remove();\n    }\n  }\n  if ([\"header\", \"title\"].includes(slot.name)) {\n    __privateMethod(this, _toggleHeader, toggleHeader_fn).call(this);\n  }\n  if (!slot.name) {\n    __privateGet(this, _handleMenuItems).call(this);\n  }\n};\n_toggleHeader = new WeakSet();\ntoggleHeader_fn = function() {\n  const header = this.shadowRoot.querySelector(\n    'slot[name=\"header\"]'\n  );\n  const title = this.shadowRoot.querySelector(\n    'slot[name=\"title\"]'\n  );\n  header.hidden = title.assignedNodes().length === 0 && header.assignedNodes().length === 0;\n};\n_handleMenuItems = new WeakMap();\n_updateLayoutStyle = new WeakSet();\nupdateLayoutStyle_fn = function() {\n  var _a;\n  const layoutRowStyle = this.shadowRoot.querySelector(\"#layout-row\");\n  const menuLayout = (_a = getComputedStyle(this).getPropertyValue(\"--media-menu-layout\")) == null ? void 0 : _a.trim();\n  layoutRowStyle.setAttribute(\"media\", menuLayout === \"row\" ? \"\" : \"width:0\");\n};\n_handleInvoke = new WeakSet();\nhandleInvoke_fn = function(event) {\n  __privateSet(this, _invokerElement, event.relatedTarget);\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    this.hidden = !this.hidden;\n  }\n};\n_handleOpen = new WeakSet();\nhandleOpen_fn = function() {\n  var _a;\n  (_a = __privateGet(this, _invokerElement)) == null ? void 0 : _a.setAttribute(\"aria-expanded\", \"true\");\n  this.addEventListener(\"transitionend\", () => this.focus(), { once: true });\n  observeResize(getBoundsElement(this), __privateGet(this, _handleBoundsResize));\n  observeResize(this, __privateGet(this, _handleMenuResize));\n};\n_handleClosed = new WeakSet();\nhandleClosed_fn = function() {\n  var _a;\n  (_a = __privateGet(this, _invokerElement)) == null ? void 0 : _a.setAttribute(\"aria-expanded\", \"false\");\n  unobserveResize(getBoundsElement(this), __privateGet(this, _handleBoundsResize));\n  unobserveResize(this, __privateGet(this, _handleMenuResize));\n};\n_handleBoundsResize = new WeakMap();\n_handleMenuResize = new WeakMap();\n_positionMenu = new WeakSet();\npositionMenu_fn = function(menuWidth) {\n  if (this.hasAttribute(\"mediacontroller\") && !this.anchor)\n    return;\n  if (this.hidden || !this.anchorElement)\n    return;\n  const { x, y } = computePosition({\n    anchor: this.anchorElement,\n    floating: this,\n    placement: \"top-start\"\n  });\n  menuWidth != null ? menuWidth : menuWidth = this.offsetWidth;\n  const bounds = getBoundsElement(this);\n  const boundsRect = bounds.getBoundingClientRect();\n  const right = boundsRect.width - x - menuWidth;\n  const bottom = boundsRect.height - y - this.offsetHeight;\n  const { style } = __privateGet(this, _cssRule);\n  style.setProperty(\"position\", \"absolute\");\n  style.setProperty(\"right\", `${Math.max(0, right)}px`);\n  style.setProperty(\"--_menu-bottom\", `${bottom}px`);\n  const computedStyle = getComputedStyle(this);\n  const isBottomCalc = style.getPropertyValue(\"--_menu-bottom\") === computedStyle.bottom;\n  const realBottom = isBottomCalc ? bottom : parseFloat(computedStyle.bottom);\n  const maxHeight = boundsRect.height - realBottom - parseFloat(computedStyle.marginBottom);\n  this.style.setProperty(\"--_menu-max-height\", `${maxHeight}px`);\n};\n_resizeMenu = new WeakSet();\nresizeMenu_fn = function(animate) {\n  const expandedMenuItem = this.querySelector(\n    '[role=\"menuitem\"][aria-haspopup][aria-expanded=\"true\"]'\n  );\n  const expandedSubmenu = expandedMenuItem == null ? void 0 : expandedMenuItem.querySelector(\n    '[role=\"menu\"]'\n  );\n  const { style } = __privateGet(this, _cssRule);\n  if (!animate) {\n    style.setProperty(\"--media-menu-transition-in\", \"none\");\n  }\n  if (expandedSubmenu) {\n    const height = expandedSubmenu.offsetHeight;\n    const width = Math.max(\n      expandedSubmenu.offsetWidth,\n      expandedMenuItem.offsetWidth\n    );\n    this.style.setProperty(\"min-width\", `${width}px`);\n    this.style.setProperty(\"min-height\", `${height}px`);\n    __privateMethod(this, _positionMenu, positionMenu_fn).call(this, width);\n  } else {\n    this.style.removeProperty(\"min-width\");\n    this.style.removeProperty(\"min-height\");\n    __privateMethod(this, _positionMenu, positionMenu_fn).call(this);\n  }\n  style.removeProperty(\"--media-menu-transition-in\");\n};\n_handleClick = new WeakSet();\nhandleClick_fn = function(event) {\n  var _a;\n  event.stopPropagation();\n  if (event.composedPath().includes(__privateGet(this, _backButtonElement, backButtonElement_get))) {\n    (_a = __privateGet(this, _previouslyFocused)) == null ? void 0 : _a.focus();\n    this.hidden = true;\n    return;\n  }\n  const item = __privateMethod(this, _getItem, getItem_fn).call(this, event);\n  if (!item || item.hasAttribute(\"disabled\"))\n    return;\n  __privateMethod(this, _setTabItem, setTabItem_fn).call(this, item);\n  this.handleSelect(event);\n};\n_backButtonElement = new WeakSet();\nbackButtonElement_get = function() {\n  var _a;\n  const headerSlot = this.shadowRoot.querySelector(\n    'slot[name=\"header\"]'\n  );\n  return (_a = headerSlot.assignedElements({ flatten: true })) == null ? void 0 : _a.find((el) => el.matches('button[part~=\"back\"]'));\n};\n_handleToggle = new WeakSet();\nhandleToggle_fn = function(event) {\n  if (event.target === this)\n    return;\n  __privateMethod(this, _checkSubmenuHasExpanded, checkSubmenuHasExpanded_fn).call(this);\n  const menuItemsWithSubmenu = Array.from(\n    this.querySelectorAll('[role=\"menuitem\"][aria-haspopup]')\n  );\n  for (const item of menuItemsWithSubmenu) {\n    if (item.invokeTargetElement == event.target)\n      continue;\n    if (event.newState == \"open\" && item.getAttribute(\"aria-expanded\") == \"true\" && !item.invokeTargetElement.hidden) {\n      item.invokeTargetElement.dispatchEvent(\n        new InvokeEvent({ relatedTarget: item })\n      );\n    }\n  }\n  for (const item of menuItemsWithSubmenu) {\n    item.setAttribute(\"aria-expanded\", `${!item.submenuElement.hidden}`);\n  }\n  __privateMethod(this, _resizeMenu, resizeMenu_fn).call(this, true);\n};\n_checkSubmenuHasExpanded = new WeakSet();\ncheckSubmenuHasExpanded_fn = function() {\n  const selector = '[role=\"menuitem\"] > [role=\"menu\"]:not([hidden])';\n  const expandedMenuItem = this.querySelector(selector);\n  this.container.classList.toggle(\"has-expanded\", !!expandedMenuItem);\n};\n_handleFocusOut = new WeakSet();\nhandleFocusOut_fn = function(event) {\n  var _a;\n  if (!containsComposedNode(this, event.relatedTarget)) {\n    if (__privateGet(this, _isPopover)) {\n      (_a = __privateGet(this, _previouslyFocused)) == null ? void 0 : _a.focus();\n    }\n    if (__privateGet(this, _invokerElement) && __privateGet(this, _invokerElement) !== event.relatedTarget && !this.hidden) {\n      this.hidden = true;\n    }\n  }\n};\n_handleKeyDown = new WeakSet();\nhandleKeyDown_fn = function(event) {\n  var _a, _b, _c, _d, _e;\n  const { key, ctrlKey, altKey, metaKey } = event;\n  if (ctrlKey || altKey || metaKey) {\n    return;\n  }\n  if (!this.keysUsed.includes(key)) {\n    return;\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  if (key === \"Tab\") {\n    if (__privateGet(this, _isPopover)) {\n      this.hidden = true;\n      return;\n    }\n    if (event.shiftKey) {\n      (_b = (_a = this.previousElementSibling) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);\n    } else {\n      (_d = (_c = this.nextElementSibling) == null ? void 0 : _c.focus) == null ? void 0 : _d.call(_c);\n    }\n    this.blur();\n  } else if (key === \"Escape\") {\n    (_e = __privateGet(this, _previouslyFocused)) == null ? void 0 : _e.focus();\n    if (__privateGet(this, _isPopover)) {\n      this.hidden = true;\n    }\n  } else if (key === \"Enter\" || key === \" \") {\n    this.handleSelect(event);\n  } else {\n    this.handleMove(event);\n  }\n};\n_getItem = new WeakSet();\ngetItem_fn = function(event) {\n  return event.composedPath().find((el) => {\n    return [\"menuitemradio\", \"menuitemcheckbox\"].includes(\n      el.role\n    );\n  });\n};\n_getTabItem = new WeakSet();\ngetTabItem_fn = function() {\n  return this.items.find((item) => item.tabIndex === 0);\n};\n_setTabItem = new WeakSet();\nsetTabItem_fn = function(tabItem) {\n  for (const item of this.items) {\n    item.tabIndex = item === tabItem ? 0 : -1;\n  }\n};\n_selectItem = new WeakSet();\nselectItem_fn = function(item, toggle) {\n  const oldCheckedItems = [...this.checkedItems];\n  if (item.type === \"radio\") {\n    this.radioGroupItems.forEach((el) => el.checked = false);\n  }\n  if (toggle) {\n    item.checked = !item.checked;\n  } else {\n    item.checked = true;\n  }\n  if (this.checkedItems.some((opt, i) => opt != oldCheckedItems[i])) {\n    this.dispatchEvent(\n      new Event(\"change\", { bubbles: true, composed: true })\n    );\n  }\n};\nMediaChromeMenu.shadowRootOptions = { mode: \"open\" };\nMediaChromeMenu.getTemplateHTML = getTemplateHTML;\nfunction isMenuItem(element) {\n  return [\"menuitem\", \"menuitemradio\", \"menuitemcheckbox\"].includes(\n    element == null ? void 0 : element.role\n  );\n}\nfunction getBoundsElement(host) {\n  var _a;\n  return (_a = host.getAttribute(\"bounds\") ? closestComposedNode(host, `#${host.getAttribute(\"bounds\")}`) : getMediaController(host) || host.parentElement) != null ? _a : host;\n}\nif (!globalThis.customElements.get(\"media-chrome-menu\")) {\n  globalThis.customElements.define(\"media-chrome-menu\", MediaChromeMenu);\n}\nvar media_chrome_menu_default = MediaChromeMenu;\nexport {\n  Attributes,\n  MediaChromeMenu,\n  createIndicator,\n  createMenuItem,\n  media_chrome_menu_default as default\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _dirty, _ownerElement, _handleSlotChange, handleSlotChange_fn, _submenuConnected, submenuConnected_fn, _submenuDisconnected, submenuDisconnected_fn, _handleMenuItem, _handleKeyUp, handleKeyUp_fn, _handleKeyDown, handleKeyDown_fn, _reset, reset_fn;\nimport { globalThis, document } from \"../utils/server-safe-globals.js\";\nimport { InvokeEvent } from \"../utils/events.js\";\nimport {\n  getDocumentOrShadowRoot,\n  containsComposedNode,\n  namedNodeMapToObject\n} from \"../utils/element-utils.js\";\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        transition: var(--media-menu-item-transition,\n          background .15s linear,\n          opacity .2s ease-in-out\n        );\n        outline: var(--media-menu-item-outline, 0);\n        outline-offset: var(--media-menu-item-outline-offset, -1px);\n        cursor: var(--media-cursor, pointer);\n        display: flex;\n        align-items: center;\n        align-self: stretch;\n        justify-self: stretch;\n        white-space: nowrap;\n        white-space-collapse: collapse;\n        text-wrap: nowrap;\n        padding: .4em .8em .4em 1em;\n      }\n\n      :host(:focus-visible) {\n        box-shadow: var(--media-menu-item-focus-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n        outline: var(--media-menu-item-hover-outline, 0);\n        outline-offset: var(--media-menu-item-hover-outline-offset,  var(--media-menu-item-outline-offset, -1px));\n      }\n\n      :host(:hover) {\n        cursor: var(--media-cursor, pointer);\n        background: var(--media-menu-item-hover-background, rgb(92 92 102 / .5));\n        outline: var(--media-menu-item-hover-outline);\n        outline-offset: var(--media-menu-item-hover-outline-offset,  var(--media-menu-item-outline-offset, -1px));\n      }\n\n      :host([aria-checked=\"true\"]) {\n        background: var(--media-menu-item-checked-background);\n      }\n\n      :host([hidden]) {\n        display: none;\n      }\n\n      :host([disabled]) {\n        pointer-events: none;\n        color: rgba(255, 255, 255, .3);\n      }\n\n      slot:not([name]) {\n        width: 100%;\n      }\n\n      slot:not([name=\"submenu\"]) {\n        display: inline-flex;\n        align-items: center;\n        transition: inherit;\n        opacity: var(--media-menu-item-opacity, 1);\n      }\n\n      slot[name=\"description\"] {\n        justify-content: end;\n      }\n\n      slot[name=\"description\"] > span {\n        display: inline-block;\n        margin-inline: 1em .2em;\n        max-width: var(--media-menu-item-description-max-width, 100px);\n        text-overflow: ellipsis;\n        overflow: hidden;\n        font-size: .8em;\n        font-weight: 400;\n        text-align: right;\n        position: relative;\n        top: .04em;\n      }\n\n      slot[name=\"checked-indicator\"] {\n        display: none;\n      }\n\n      :host(:is([role=\"menuitemradio\"],[role=\"menuitemcheckbox\"])) slot[name=\"checked-indicator\"] {\n        display: var(--media-menu-item-checked-indicator-display, inline-block);\n      }\n\n      ${/* For all slotted icons in prefix and suffix. */\n    \"\"}\n      svg, img, ::slotted(svg), ::slotted(img) {\n        height: var(--media-menu-item-icon-height, var(--media-control-height, 24px));\n        fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n        display: block;\n      }\n\n      ${/* Only for indicator icons like checked-indicator or captions-indicator. */\n    \"\"}\n      [part~=\"indicator\"],\n      ::slotted([part~=\"indicator\"]) {\n        fill: var(--media-menu-item-indicator-fill,\n          var(--media-icon-color, var(--media-primary-color, rgb(238 238 238))));\n        height: var(--media-menu-item-indicator-height, 1.25em);\n        margin-right: .5ch;\n      }\n\n      [part~=\"checked-indicator\"] {\n        visibility: hidden;\n      }\n\n      :host([aria-checked=\"true\"]) [part~=\"checked-indicator\"] {\n        visibility: visible;\n      }\n    </style>\n    <slot name=\"checked-indicator\">\n      <svg aria-hidden=\"true\" viewBox=\"0 1 24 24\" part=\"checked-indicator indicator\">\n        <path d=\"m10 15.17 9.193-9.191 1.414 1.414-10.606 10.606-6.364-6.364 1.414-1.414 4.95 4.95Z\"/>\n      </svg>\n    </slot>\n    <slot name=\"prefix\"></slot>\n    <slot></slot>\n    <slot name=\"description\"></slot>\n    <slot name=\"suffix\">\n      ${this.getSuffixSlotInnerHTML(_attrs)}\n    </slot>\n    <slot name=\"submenu\"></slot>\n  `\n  );\n}\nfunction getSuffixSlotInnerHTML(_attrs) {\n  return \"\";\n}\nconst Attributes = {\n  TYPE: \"type\",\n  VALUE: \"value\",\n  CHECKED: \"checked\",\n  DISABLED: \"disabled\"\n};\nclass MediaChromeMenuItem extends globalThis.HTMLElement {\n  constructor() {\n    super();\n    __privateAdd(this, _handleSlotChange);\n    __privateAdd(this, _submenuConnected);\n    __privateAdd(this, _submenuDisconnected);\n    __privateAdd(this, _handleKeyUp);\n    __privateAdd(this, _handleKeyDown);\n    __privateAdd(this, _reset);\n    __privateAdd(this, _dirty, false);\n    __privateAdd(this, _ownerElement, void 0);\n    /**\n     * If there is a slotted submenu the fallback content of the description slot\n     * is populated with the text of the first checked item.\n     */\n    __privateAdd(this, _handleMenuItem, () => {\n      var _a, _b;\n      if (this.submenuElement.items) {\n        this.setAttribute(\"submenusize\", `${this.submenuElement.items.length}`);\n      }\n      const descriptionSlot = this.shadowRoot.querySelector(\n        'slot[name=\"description\"]'\n      );\n      const checkedItem = (_a = this.submenuElement.checkedItems) == null ? void 0 : _a[0];\n      const description = (_b = checkedItem == null ? void 0 : checkedItem.dataset.description) != null ? _b : checkedItem == null ? void 0 : checkedItem.text;\n      const span = document.createElement(\"span\");\n      span.textContent = description != null ? description : \"\";\n      descriptionSlot.replaceChildren(span);\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow(this.constructor.shadowRootOptions);\n      const attrs = namedNodeMapToObject(this.attributes);\n      this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n    }\n    this.shadowRoot.addEventListener(\"slotchange\", this);\n  }\n  static get observedAttributes() {\n    return [\n      Attributes.TYPE,\n      Attributes.DISABLED,\n      Attributes.CHECKED,\n      Attributes.VALUE\n    ];\n  }\n  enable() {\n    if (!this.hasAttribute(\"tabindex\")) {\n      this.setAttribute(\"tabindex\", \"-1\");\n    }\n    if (isCheckable(this) && !this.hasAttribute(\"aria-checked\")) {\n      this.setAttribute(\"aria-checked\", \"false\");\n    }\n    this.addEventListener(\"click\", this);\n    this.addEventListener(\"keydown\", this);\n  }\n  disable() {\n    this.removeAttribute(\"tabindex\");\n    this.removeEventListener(\"click\", this);\n    this.removeEventListener(\"keydown\", this);\n    this.removeEventListener(\"keyup\", this);\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"slotchange\":\n        __privateMethod(this, _handleSlotChange, handleSlotChange_fn).call(this, event);\n        break;\n      case \"click\":\n        this.handleClick(event);\n        break;\n      case \"keydown\":\n        __privateMethod(this, _handleKeyDown, handleKeyDown_fn).call(this, event);\n        break;\n      case \"keyup\":\n        __privateMethod(this, _handleKeyUp, handleKeyUp_fn).call(this, event);\n        break;\n    }\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    if (attrName === Attributes.CHECKED && isCheckable(this) && !__privateGet(this, _dirty)) {\n      this.setAttribute(\"aria-checked\", newValue != null ? \"true\" : \"false\");\n    } else if (attrName === Attributes.TYPE && newValue !== oldValue) {\n      this.role = \"menuitem\" + newValue;\n    } else if (attrName === Attributes.DISABLED && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n  }\n  connectedCallback() {\n    if (!this.hasAttribute(Attributes.DISABLED)) {\n      this.enable();\n    }\n    this.role = \"menuitem\" + this.type;\n    __privateSet(this, _ownerElement, closestMenuItemsContainer(this, this.parentNode));\n    __privateMethod(this, _reset, reset_fn).call(this);\n    if (this.submenuElement) {\n      __privateMethod(this, _submenuConnected, submenuConnected_fn).call(this);\n    }\n  }\n  disconnectedCallback() {\n    this.disable();\n    __privateMethod(this, _reset, reset_fn).call(this);\n    __privateSet(this, _ownerElement, null);\n  }\n  get invokeTarget() {\n    return this.getAttribute(\"invoketarget\");\n  }\n  set invokeTarget(value) {\n    this.setAttribute(\"invoketarget\", `${value}`);\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute\n   * or the slotted submenu element.\n   */\n  get invokeTargetElement() {\n    var _a;\n    if (this.invokeTarget) {\n      return (_a = getDocumentOrShadowRoot(this)) == null ? void 0 : _a.querySelector(\n        `#${this.invokeTarget}`\n      );\n    }\n    return this.submenuElement;\n  }\n  /**\n   * Returns the slotted submenu element.\n   */\n  get submenuElement() {\n    const submenuSlot = this.shadowRoot.querySelector(\n      'slot[name=\"submenu\"]'\n    );\n    return submenuSlot.assignedElements({\n      flatten: true\n    })[0];\n  }\n  get type() {\n    var _a;\n    return (_a = this.getAttribute(Attributes.TYPE)) != null ? _a : \"\";\n  }\n  set type(val) {\n    this.setAttribute(Attributes.TYPE, `${val}`);\n  }\n  get value() {\n    var _a;\n    return (_a = this.getAttribute(Attributes.VALUE)) != null ? _a : this.text;\n  }\n  set value(val) {\n    this.setAttribute(Attributes.VALUE, val);\n  }\n  get text() {\n    var _a;\n    return ((_a = this.textContent) != null ? _a : \"\").trim();\n  }\n  get checked() {\n    if (!isCheckable(this))\n      return void 0;\n    return this.getAttribute(\"aria-checked\") === \"true\";\n  }\n  set checked(value) {\n    if (!isCheckable(this))\n      return;\n    __privateSet(this, _dirty, true);\n    this.setAttribute(\"aria-checked\", value ? \"true\" : \"false\");\n    if (value) {\n      this.part.add(\"checked\");\n    } else {\n      this.part.remove(\"checked\");\n    }\n  }\n  handleClick(event) {\n    if (isCheckable(this))\n      return;\n    if (this.invokeTargetElement && containsComposedNode(this, event.target)) {\n      this.invokeTargetElement.dispatchEvent(\n        new InvokeEvent({ relatedTarget: this })\n      );\n    }\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \"];\n  }\n}\n_dirty = new WeakMap();\n_ownerElement = new WeakMap();\n_handleSlotChange = new WeakSet();\nhandleSlotChange_fn = function(event) {\n  const slot = event.target;\n  const isDefaultSlot = !(slot == null ? void 0 : slot.name);\n  if (isDefaultSlot) {\n    for (const node of slot.assignedNodes({ flatten: true })) {\n      if (node instanceof Text && node.textContent.trim() === \"\") {\n        node.remove();\n      }\n    }\n  }\n  if (slot.name === \"submenu\") {\n    if (this.submenuElement) {\n      __privateMethod(this, _submenuConnected, submenuConnected_fn).call(this);\n    } else {\n      __privateMethod(this, _submenuDisconnected, submenuDisconnected_fn).call(this);\n    }\n  }\n};\n_submenuConnected = new WeakSet();\nsubmenuConnected_fn = async function() {\n  this.setAttribute(\"aria-haspopup\", \"menu\");\n  this.setAttribute(\"aria-expanded\", `${!this.submenuElement.hidden}`);\n  this.submenuElement.addEventListener(\"change\", __privateGet(this, _handleMenuItem));\n  this.submenuElement.addEventListener(\"addmenuitem\", __privateGet(this, _handleMenuItem));\n  this.submenuElement.addEventListener(\n    \"removemenuitem\",\n    __privateGet(this, _handleMenuItem)\n  );\n  __privateGet(this, _handleMenuItem).call(this);\n};\n_submenuDisconnected = new WeakSet();\nsubmenuDisconnected_fn = function() {\n  this.removeAttribute(\"aria-haspopup\");\n  this.removeAttribute(\"aria-expanded\");\n  this.submenuElement.removeEventListener(\"change\", __privateGet(this, _handleMenuItem));\n  this.submenuElement.removeEventListener(\n    \"addmenuitem\",\n    __privateGet(this, _handleMenuItem)\n  );\n  this.submenuElement.removeEventListener(\n    \"removemenuitem\",\n    __privateGet(this, _handleMenuItem)\n  );\n  __privateGet(this, _handleMenuItem).call(this);\n};\n_handleMenuItem = new WeakMap();\n_handleKeyUp = new WeakSet();\nhandleKeyUp_fn = function(event) {\n  const { key } = event;\n  if (!this.keysUsed.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod(this, _handleKeyUp, handleKeyUp_fn));\n    return;\n  }\n  this.handleClick(event);\n};\n_handleKeyDown = new WeakSet();\nhandleKeyDown_fn = function(event) {\n  const { metaKey, altKey, key } = event;\n  if (metaKey || altKey || !this.keysUsed.includes(key)) {\n    this.removeEventListener(\"keyup\", __privateMethod(this, _handleKeyUp, handleKeyUp_fn));\n    return;\n  }\n  this.addEventListener(\"keyup\", __privateMethod(this, _handleKeyUp, handleKeyUp_fn), { once: true });\n};\n_reset = new WeakSet();\nreset_fn = function() {\n  var _a;\n  const items = (_a = __privateGet(this, _ownerElement)) == null ? void 0 : _a.radioGroupItems;\n  if (!items)\n    return;\n  let checkedItem = items.filter((item) => item.getAttribute(\"aria-checked\") === \"true\").pop();\n  if (!checkedItem)\n    checkedItem = items[0];\n  for (const item of items) {\n    item.setAttribute(\"aria-checked\", \"false\");\n  }\n  checkedItem == null ? void 0 : checkedItem.setAttribute(\"aria-checked\", \"true\");\n};\nMediaChromeMenuItem.shadowRootOptions = { mode: \"open\" };\nMediaChromeMenuItem.getTemplateHTML = getTemplateHTML;\nMediaChromeMenuItem.getSuffixSlotInnerHTML = getSuffixSlotInnerHTML;\nfunction isCheckable(item) {\n  return item.type === \"radio\" || item.type === \"checkbox\";\n}\nfunction closestMenuItemsContainer(childNode, parentNode) {\n  if (!childNode)\n    return null;\n  const { host } = childNode.getRootNode();\n  if (!parentNode && host)\n    return closestMenuItemsContainer(childNode, host);\n  if (parentNode == null ? void 0 : parentNode.items)\n    return parentNode;\n  return closestMenuItemsContainer(parentNode, parentNode == null ? void 0 : parentNode.parentNode);\n}\nif (!globalThis.customElements.get(\"media-chrome-menu-item\")) {\n  globalThis.customElements.define(\n    \"media-chrome-menu-item\",\n    MediaChromeMenuItem\n  );\n}\nvar media_chrome_menu_item_default = MediaChromeMenuItem;\nexport {\n  Attributes,\n  MediaChromeMenuItem,\n  media_chrome_menu_item_default as default\n};\n","import { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaChromeMenu } from \"./media-chrome-menu.js\";\nimport { getMediaController } from \"../utils/element-utils.js\";\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    ${MediaChromeMenu.getTemplateHTML(_attrs)}\n    <style>\n      :host {\n        --_menu-bg: rgb(20 20 30 / .8);\n        background: var(--media-settings-menu-background,\n            var(--media-menu-background,\n              var(--media-control-background,\n                var(--media-secondary-color, var(--_menu-bg)))));\n        min-width: var(--media-settings-menu-min-width, 170px);\n        border-radius: 2px 2px 0 0;\n        overflow: hidden;\n      }\n\n      @-moz-document url-prefix() {\n        :host{\n          --_menu-bg: rgb(20 20 30);\n        }\n      }\n\n      :host([role=\"menu\"]) {\n        ${/* Bottom fix setting menu items for animation when the height expands. */\n    \"\"}\n        justify-content: end;\n      }\n\n      slot:not([name]) {\n        justify-content: var(--media-settings-menu-justify-content);\n        flex-direction: var(--media-settings-menu-flex-direction, column);\n        overflow: visible;\n      }\n\n      #container.has-expanded {\n        --media-settings-menu-item-opacity: 0;\n      }\n    </style>\n  `\n  );\n}\nclass MediaSettingsMenu extends MediaChromeMenu {\n  /**\n   * Returns the anchor element when it is a floating menu.\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-settings-menu-button\"\n    );\n  }\n}\nMediaSettingsMenu.getTemplateHTML = getTemplateHTML;\nif (!globalThis.customElements.get(\"media-settings-menu\")) {\n  globalThis.customElements.define(\"media-settings-menu\", MediaSettingsMenu);\n}\nvar media_settings_menu_default = MediaSettingsMenu;\nexport {\n  MediaSettingsMenu,\n  media_settings_menu_default as default\n};\n","import { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaChromeMenuItem } from \"./media-chrome-menu-item.js\";\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    ${MediaChromeMenuItem.getTemplateHTML.call(this, _attrs)}\n    <style>\n      slot:not([name=\"submenu\"]) {\n        opacity: var(--media-settings-menu-item-opacity, var(--media-menu-item-opacity));\n      }\n\n      :host([aria-expanded=\"true\"]:hover) {\n        background: transparent;\n      }\n    </style>\n  `\n  );\n}\nfunction getSuffixSlotInnerHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 24\">\n      <path d=\"m8.12 17.585-.742-.669 4.2-4.665-4.2-4.666.743-.669 4.803 5.335-4.803 5.334Z\"/>\n    </svg>\n  `\n  );\n}\nclass MediaSettingsMenuItem extends MediaChromeMenuItem {\n}\nMediaSettingsMenuItem.shadowRootOptions = { mode: \"open\" };\nMediaSettingsMenuItem.getTemplateHTML = getTemplateHTML;\nMediaSettingsMenuItem.getSuffixSlotInnerHTML = getSuffixSlotInnerHTML;\nif (!globalThis.customElements.get(\"media-settings-menu-item\")) {\n  globalThis.customElements.define(\n    \"media-settings-menu-item\",\n    MediaSettingsMenuItem\n  );\n}\nvar media_settings_menu_item_default = MediaSettingsMenuItem;\nexport {\n  MediaSettingsMenuItem,\n  media_settings_menu_item_default as default\n};\n","import {\n  closestComposedNode,\n  getMediaController,\n  getStringAttr,\n  isElementVisible,\n  namedNodeMapToObject,\n  setStringAttr\n} from \"./utils/element-utils.js\";\nimport { globalThis } from \"./utils/server-safe-globals.js\";\nconst Attributes = {\n  PLACEMENT: \"placement\",\n  BOUNDS: \"bounds\"\n};\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        --_tooltip-background-color: var(--media-tooltip-background-color, var(--media-secondary-color, rgba(20, 20, 30, .7)));\n        --_tooltip-background: var(--media-tooltip-background, var(--_tooltip-background-color));\n        --_tooltip-arrow-half-width: calc(var(--media-tooltip-arrow-width, 12px) / 2);\n        --_tooltip-arrow-height: var(--media-tooltip-arrow-height, 5px);\n        --_tooltip-arrow-background: var(--media-tooltip-arrow-color, var(--_tooltip-background-color));\n        position: relative;\n        pointer-events: none;\n        display: var(--media-tooltip-display, inline-flex);\n        justify-content: center;\n        align-items: center;\n        box-sizing: border-box;\n        z-index: var(--media-tooltip-z-index, 1);\n        background: var(--_tooltip-background);\n        color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n        font: var(--media-font,\n          var(--media-font-weight, 400)\n          var(--media-font-size, 13px) /\n          var(--media-text-content-height, var(--media-control-height, 18px))\n          var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n        padding: var(--media-tooltip-padding, .35em .7em);\n        border: var(--media-tooltip-border, none);\n        border-radius: var(--media-tooltip-border-radius, 5px);\n        filter: var(--media-tooltip-filter, drop-shadow(0 0 4px rgba(0, 0, 0, .2)));\n        white-space: var(--media-tooltip-white-space, nowrap);\n      }\n\n      :host([hidden]) {\n        display: none;\n      }\n\n      img, svg {\n        display: inline-block;\n      }\n\n      #arrow {\n        position: absolute;\n        width: 0px;\n        height: 0px;\n        border-style: solid;\n        display: var(--media-tooltip-arrow-display, block);\n      }\n\n      :host(:not([placement])),\n      :host([placement=\"top\"]) {\n        position: absolute;\n        bottom: calc(100% + var(--media-tooltip-distance, 12px));\n        left: 50%;\n        transform: translate(calc(-50% - var(--media-tooltip-offset-x, 0px)), 0);\n      }\n      :host(:not([placement])) #arrow,\n      :host([placement=\"top\"]) #arrow {\n        top: 100%;\n        left: 50%;\n        border-width: var(--_tooltip-arrow-height) var(--_tooltip-arrow-half-width) 0 var(--_tooltip-arrow-half-width);\n        border-color: var(--_tooltip-arrow-background) transparent transparent transparent;\n        transform: translate(calc(-50% + var(--media-tooltip-offset-x, 0px)), 0);\n      }\n\n      :host([placement=\"right\"]) {\n        position: absolute;\n        left: calc(100% + var(--media-tooltip-distance, 12px));\n        top: 50%;\n        transform: translate(0, -50%);\n      }\n      :host([placement=\"right\"]) #arrow {\n        top: 50%;\n        right: 100%;\n        border-width: var(--_tooltip-arrow-half-width) var(--_tooltip-arrow-height) var(--_tooltip-arrow-half-width) 0;\n        border-color: transparent var(--_tooltip-arrow-background) transparent transparent;\n        transform: translate(0, -50%);\n      }\n\n      :host([placement=\"bottom\"]) {\n        position: absolute;\n        top: calc(100% + var(--media-tooltip-distance, 12px));\n        left: 50%;\n        transform: translate(calc(-50% - var(--media-tooltip-offset-x, 0px)), 0);\n      }\n      :host([placement=\"bottom\"]) #arrow {\n        bottom: 100%;\n        left: 50%;\n        border-width: 0 var(--_tooltip-arrow-half-width) var(--_tooltip-arrow-height) var(--_tooltip-arrow-half-width);\n        border-color: transparent transparent var(--_tooltip-arrow-background) transparent;\n        transform: translate(calc(-50% + var(--media-tooltip-offset-x, 0px)), 0);\n      }\n\n      :host([placement=\"left\"]) {\n        position: absolute;\n        right: calc(100% + var(--media-tooltip-distance, 12px));\n        top: 50%;\n        transform: translate(0, -50%);\n      }\n      :host([placement=\"left\"]) #arrow {\n        top: 50%;\n        left: 100%;\n        border-width: var(--_tooltip-arrow-half-width) 0 var(--_tooltip-arrow-half-width) var(--_tooltip-arrow-height);\n        border-color: transparent transparent transparent var(--_tooltip-arrow-background);\n        transform: translate(0, -50%);\n      }\n      \n      :host([placement=\"none\"]) #arrow {\n        display: none;\n      }\n    </style>\n    <slot></slot>\n    <div id=\"arrow\"></div>\n  `\n  );\n}\nclass MediaTooltip extends globalThis.HTMLElement {\n  constructor() {\n    super();\n    // Adjusts tooltip position relative to the closest specified container\n    // such that it doesn't spill out of the left or right sides. Only applies\n    // to 'top' and 'bottom' placed tooltips.\n    this.updateXOffset = () => {\n      var _a;\n      if (!isElementVisible(this, { checkOpacity: false, checkVisibilityCSS: false }))\n        return;\n      const placement = this.placement;\n      if (placement === \"left\" || placement === \"right\") {\n        this.style.removeProperty(\"--media-tooltip-offset-x\");\n        return;\n      }\n      const tooltipStyle = getComputedStyle(this);\n      const containingEl = (_a = closestComposedNode(this, \"#\" + this.bounds)) != null ? _a : getMediaController(this);\n      if (!containingEl)\n        return;\n      const { x: containerX, width: containerWidth } = containingEl.getBoundingClientRect();\n      const { x: tooltipX, width: tooltipWidth } = this.getBoundingClientRect();\n      const tooltipRight = tooltipX + tooltipWidth;\n      const containerRight = containerX + containerWidth;\n      const offsetXVal = tooltipStyle.getPropertyValue(\n        \"--media-tooltip-offset-x\"\n      );\n      const currOffsetX = offsetXVal ? parseFloat(offsetXVal.replace(\"px\", \"\")) : 0;\n      const marginVal = tooltipStyle.getPropertyValue(\n        \"--media-tooltip-container-margin\"\n      );\n      const currMargin = marginVal ? parseFloat(marginVal.replace(\"px\", \"\")) : 0;\n      const leftDiff = tooltipX - containerX + currOffsetX - currMargin;\n      const rightDiff = tooltipRight - containerRight + currOffsetX + currMargin;\n      if (leftDiff < 0) {\n        this.style.setProperty(\"--media-tooltip-offset-x\", `${leftDiff}px`);\n        return;\n      }\n      if (rightDiff > 0) {\n        this.style.setProperty(\"--media-tooltip-offset-x\", `${rightDiff}px`);\n        return;\n      }\n      this.style.removeProperty(\"--media-tooltip-offset-x\");\n    };\n    if (!this.shadowRoot) {\n      this.attachShadow(this.constructor.shadowRootOptions);\n      const attrs = namedNodeMapToObject(this.attributes);\n      this.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n    }\n    this.arrowEl = this.shadowRoot.querySelector(\"#arrow\");\n    if (Object.prototype.hasOwnProperty.call(this, \"placement\")) {\n      const placement = this.placement;\n      delete this.placement;\n      this.placement = placement;\n    }\n  }\n  static get observedAttributes() {\n    return [Attributes.PLACEMENT, Attributes.BOUNDS];\n  }\n  /**\n   * Get or set tooltip placement\n   */\n  get placement() {\n    return getStringAttr(this, Attributes.PLACEMENT);\n  }\n  set placement(value) {\n    setStringAttr(this, Attributes.PLACEMENT, value);\n  }\n  /**\n   * Get or set tooltip container ID selector that will constrain the tooltips\n   * horizontal position.\n   */\n  get bounds() {\n    return getStringAttr(this, Attributes.BOUNDS);\n  }\n  set bounds(value) {\n    setStringAttr(this, Attributes.BOUNDS, value);\n  }\n}\nMediaTooltip.shadowRootOptions = { mode: \"open\" };\nMediaTooltip.getTemplateHTML = getTemplateHTML;\nif (!globalThis.customElements.get(\"media-tooltip\")) {\n  globalThis.customElements.define(\"media-tooltip\", MediaTooltip);\n}\nvar media_tooltip_default = MediaTooltip;\nexport {\n  Attributes,\n  media_tooltip_default as default\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _mediaController, _clickListener, _positionTooltip, _keyupListener, _keydownListener, _setupTooltip, setupTooltip_fn;\nimport {\n  MediaStateReceiverAttributes,\n  MediaUIAttributes\n} from \"./constants.js\";\nimport MediaTooltip from \"./media-tooltip.js\";\nimport {\n  getBooleanAttr,\n  getOrInsertCSSRule,\n  getStringAttr,\n  namedNodeMapToObject,\n  setBooleanAttr,\n  setStringAttr\n} from \"./utils/element-utils.js\";\nimport { globalThis } from \"./utils/server-safe-globals.js\";\nconst Attributes = {\n  TOOLTIP_PLACEMENT: \"tooltipplacement\",\n  DISABLED: \"disabled\",\n  NO_TOOLTIP: \"notooltip\"\n};\nfunction getTemplateHTML(_attrs, _props = {}) {\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        position: relative;\n        font: var(--media-font,\n          var(--media-font-weight, bold)\n          var(--media-font-size, 14px) /\n          var(--media-text-content-height, var(--media-control-height, 24px))\n          var(--media-font-family, helvetica neue, segoe ui, roboto, arial, sans-serif));\n        color: var(--media-text-color, var(--media-primary-color, rgb(238 238 238)));\n        background: var(--media-control-background, var(--media-secondary-color, rgb(20 20 30 / .7)));\n        padding: var(--media-button-padding, var(--media-control-padding, 10px));\n        justify-content: var(--media-button-justify-content, center);\n        display: inline-flex;\n        align-items: center;\n        vertical-align: middle;\n        box-sizing: border-box;\n        transition: background .15s linear;\n        pointer-events: auto;\n        cursor: var(--media-cursor, pointer);\n        -webkit-tap-highlight-color: transparent;\n      }\n\n      ${/*\n      Only show outline when keyboard focusing.\n      https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo\n    */\n    \"\"}\n      :host(:focus-visible) {\n        box-shadow: var(--media-focus-box-shadow, inset 0 0 0 2px rgb(27 127 204 / .9));\n        outline: 0;\n      }\n      ${/*\n    * hide default focus ring, particularly when using mouse\n    */\n    \"\"}\n      :host(:where(:focus)) {\n        box-shadow: none;\n        outline: 0;\n      }\n\n      :host(:hover) {\n        background: var(--media-control-hover-background, rgba(50 50 70 / .7));\n      }\n\n      svg, img, ::slotted(svg), ::slotted(img) {\n        width: var(--media-button-icon-width);\n        height: var(--media-button-icon-height, var(--media-control-height, 24px));\n        transform: var(--media-button-icon-transform);\n        transition: var(--media-button-icon-transition);\n        fill: var(--media-icon-color, var(--media-primary-color, rgb(238 238 238)));\n        vertical-align: middle;\n        max-width: 100%;\n        max-height: 100%;\n        min-width: 100%;\n      }\n\n      media-tooltip {\n        ${/** Make sure unpositioned tooltip doesn't cause page overflow (scroll). */\n    \"\"}\n        max-width: 0;\n        overflow-x: clip;\n        opacity: 0;\n        transition: opacity .3s, max-width 0s 9s;\n      }\n\n      :host(:hover) media-tooltip,\n      :host(:focus-visible) media-tooltip {\n        max-width: 100vw;\n        opacity: 1;\n        transition: opacity .3s;\n      }\n\n      :host([notooltip]) slot[name=\"tooltip\"] {\n        display: none;\n      }\n    </style>\n\n    ${this.getSlotTemplateHTML(_attrs, _props)}\n\n    <slot name=\"tooltip\">\n      <media-tooltip part=\"tooltip\" aria-hidden=\"true\">\n        <template shadowrootmode=\"${MediaTooltip.shadowRootOptions.mode}\">\n          ${MediaTooltip.getTemplateHTML({})}\n        </template>\n        <slot name=\"tooltip-content\">\n          ${this.getTooltipContentHTML(_attrs)}\n        </slot>\n      </media-tooltip>\n    </slot>\n  `\n  );\n}\nfunction getSlotTemplateHTML(_attrs, _props) {\n  return (\n    /*html*/\n    `\n    <slot></slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return \"\";\n}\nclass MediaChromeButton extends globalThis.HTMLElement {\n  constructor() {\n    super();\n    // Called when we know the tooltip is ready / defined\n    __privateAdd(this, _setupTooltip);\n    __privateAdd(this, _mediaController, void 0);\n    this.preventClick = false;\n    this.tooltipEl = null;\n    __privateAdd(this, _clickListener, (e) => {\n      if (!this.preventClick) {\n        this.handleClick(e);\n      }\n      setTimeout(__privateGet(this, _positionTooltip), 0);\n    });\n    __privateAdd(this, _positionTooltip, () => {\n      var _a, _b;\n      (_b = (_a = this.tooltipEl) == null ? void 0 : _a.updateXOffset) == null ? void 0 : _b.call(_a);\n    });\n    // NOTE: There are definitely some \"false positive\" cases with multi-key pressing,\n    // but this should be good enough for most use cases.\n    __privateAdd(this, _keyupListener, (e) => {\n      const { key } = e;\n      if (!this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet(this, _keyupListener));\n        return;\n      }\n      if (!this.preventClick) {\n        this.handleClick(e);\n      }\n    });\n    __privateAdd(this, _keydownListener, (e) => {\n      const { metaKey, altKey, key } = e;\n      if (metaKey || altKey || !this.keysUsed.includes(key)) {\n        this.removeEventListener(\"keyup\", __privateGet(this, _keyupListener));\n        return;\n      }\n      this.addEventListener(\"keyup\", __privateGet(this, _keyupListener), { once: true });\n    });\n    if (!this.shadowRoot) {\n      this.attachShadow(this.constructor.shadowRootOptions);\n      const attrs = namedNodeMapToObject(this.attributes);\n      const html = this.constructor.getTemplateHTML(attrs);\n      this.shadowRoot.setHTMLUnsafe ? this.shadowRoot.setHTMLUnsafe(html) : this.shadowRoot.innerHTML = html;\n    }\n    this.tooltipEl = this.shadowRoot.querySelector(\"media-tooltip\");\n  }\n  static get observedAttributes() {\n    return [\n      \"disabled\",\n      Attributes.TOOLTIP_PLACEMENT,\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER,\n      MediaUIAttributes.MEDIA_LANG\n    ];\n  }\n  enable() {\n    this.addEventListener(\"click\", __privateGet(this, _clickListener));\n    this.addEventListener(\"keydown\", __privateGet(this, _keydownListener));\n    this.tabIndex = 0;\n  }\n  disable() {\n    this.removeEventListener(\"click\", __privateGet(this, _clickListener));\n    this.removeEventListener(\"keydown\", __privateGet(this, _keydownListener));\n    this.removeEventListener(\"keyup\", __privateGet(this, _keyupListener));\n    this.tabIndex = -1;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    var _a, _b, _c, _d, _e;\n    if (attrName === MediaStateReceiverAttributes.MEDIA_CONTROLLER) {\n      if (oldValue) {\n        (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.unassociateElement) == null ? void 0 : _b.call(_a, this);\n        __privateSet(this, _mediaController, null);\n      }\n      if (newValue && this.isConnected) {\n        __privateSet(this, _mediaController, (_c = this.getRootNode()) == null ? void 0 : _c.getElementById(newValue));\n        (_e = (_d = __privateGet(this, _mediaController)) == null ? void 0 : _d.associateElement) == null ? void 0 : _e.call(_d, this);\n      }\n    } else if (attrName === \"disabled\" && newValue !== oldValue) {\n      if (newValue == null) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    } else if (attrName === Attributes.TOOLTIP_PLACEMENT && this.tooltipEl && newValue !== oldValue) {\n      this.tooltipEl.placement = newValue;\n    } else if (attrName === MediaUIAttributes.MEDIA_LANG) {\n      this.shadowRoot.querySelector('slot[name=\"tooltip-content\"]').innerHTML = this.constructor.getTooltipContentHTML();\n    }\n    __privateGet(this, _positionTooltip).call(this);\n  }\n  connectedCallback() {\n    var _a, _b, _c;\n    const { style } = getOrInsertCSSRule(this.shadowRoot, \":host\");\n    style.setProperty(\n      \"display\",\n      `var(--media-control-display, var(--${this.localName}-display, inline-flex))`\n    );\n    if (!this.hasAttribute(\"disabled\")) {\n      this.enable();\n    } else {\n      this.disable();\n    }\n    this.setAttribute(\"role\", \"button\");\n    const mediaControllerId = this.getAttribute(\n      MediaStateReceiverAttributes.MEDIA_CONTROLLER\n    );\n    if (mediaControllerId) {\n      __privateSet(\n        this,\n        _mediaController,\n        // @ts-ignore\n        (_a = this.getRootNode()) == null ? void 0 : _a.getElementById(mediaControllerId)\n      );\n      (_c = (_b = __privateGet(this, _mediaController)) == null ? void 0 : _b.associateElement) == null ? void 0 : _c.call(_b, this);\n    }\n    globalThis.customElements.whenDefined(\"media-tooltip\").then(() => __privateMethod(this, _setupTooltip, setupTooltip_fn).call(this));\n  }\n  disconnectedCallback() {\n    var _a, _b;\n    this.disable();\n    (_b = (_a = __privateGet(this, _mediaController)) == null ? void 0 : _a.unassociateElement) == null ? void 0 : _b.call(_a, this);\n    __privateSet(this, _mediaController, null);\n    this.removeEventListener(\"mouseenter\", __privateGet(this, _positionTooltip));\n    this.removeEventListener(\"focus\", __privateGet(this, _positionTooltip));\n    this.removeEventListener(\"click\", __privateGet(this, _clickListener));\n  }\n  get keysUsed() {\n    return [\"Enter\", \" \"];\n  }\n  /**\n   * Get or set tooltip placement\n   */\n  get tooltipPlacement() {\n    return getStringAttr(this, Attributes.TOOLTIP_PLACEMENT);\n  }\n  set tooltipPlacement(value) {\n    setStringAttr(this, Attributes.TOOLTIP_PLACEMENT, value);\n  }\n  get mediaController() {\n    return getStringAttr(this, MediaStateReceiverAttributes.MEDIA_CONTROLLER);\n  }\n  set mediaController(value) {\n    setStringAttr(this, MediaStateReceiverAttributes.MEDIA_CONTROLLER, value);\n  }\n  get disabled() {\n    return getBooleanAttr(this, Attributes.DISABLED);\n  }\n  set disabled(value) {\n    setBooleanAttr(this, Attributes.DISABLED, value);\n  }\n  get noTooltip() {\n    return getBooleanAttr(this, Attributes.NO_TOOLTIP);\n  }\n  set noTooltip(value) {\n    setBooleanAttr(this, Attributes.NO_TOOLTIP, value);\n  }\n  /**\n   * @abstract\n   * @argument {Event} e\n   */\n  handleClick(e) {\n  }\n  // eslint-disable-line\n}\n_mediaController = new WeakMap();\n_clickListener = new WeakMap();\n_positionTooltip = new WeakMap();\n_keyupListener = new WeakMap();\n_keydownListener = new WeakMap();\n_setupTooltip = new WeakSet();\nsetupTooltip_fn = function() {\n  this.addEventListener(\"mouseenter\", __privateGet(this, _positionTooltip));\n  this.addEventListener(\"focus\", __privateGet(this, _positionTooltip));\n  this.addEventListener(\"click\", __privateGet(this, _clickListener));\n  const initialPlacement = this.tooltipPlacement;\n  if (initialPlacement && this.tooltipEl) {\n    this.tooltipEl.placement = initialPlacement;\n  }\n};\nMediaChromeButton.shadowRootOptions = { mode: \"open\" };\nMediaChromeButton.getTemplateHTML = getTemplateHTML;\nMediaChromeButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaChromeButton.getTooltipContentHTML = getTooltipContentHTML;\nif (!globalThis.customElements.get(\"media-chrome-button\")) {\n  globalThis.customElements.define(\"media-chrome-button\", MediaChromeButton);\n}\nvar media_chrome_button_default = MediaChromeButton;\nexport {\n  MediaChromeButton,\n  media_chrome_button_default as default\n};\n","import { MediaChromeButton } from \"../media-chrome-button.js\";\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { InvokeEvent } from \"../utils/events.js\";\nimport { getDocumentOrShadowRoot } from \"../utils/element-utils.js\";\nclass MediaChromeMenuButton extends MediaChromeButton {\n  connectedCallback() {\n    super.connectedCallback();\n    if (this.invokeTargetElement) {\n      this.setAttribute(\"aria-haspopup\", \"menu\");\n    }\n  }\n  get invokeTarget() {\n    return this.getAttribute(\"invoketarget\");\n  }\n  set invokeTarget(value) {\n    this.setAttribute(\"invoketarget\", `${value}`);\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    var _a;\n    if (this.invokeTarget) {\n      return (_a = getDocumentOrShadowRoot(this)) == null ? void 0 : _a.querySelector(\n        `#${this.invokeTarget}`\n      );\n    }\n    return null;\n  }\n  handleClick() {\n    var _a;\n    (_a = this.invokeTargetElement) == null ? void 0 : _a.dispatchEvent(\n      new InvokeEvent({ relatedTarget: this })\n    );\n  }\n}\nif (!globalThis.customElements.get(\"media-chrome-menu-button\")) {\n  globalThis.customElements.define(\n    \"media-chrome-menu-button\",\n    MediaChromeMenuButton\n  );\n}\nvar media_chrome_menu_button_default = MediaChromeMenuButton;\nexport {\n  MediaChromeMenuButton,\n  media_chrome_menu_button_default as default\n};\n","var _a;\nimport { En } from \"../lang/en.js\";\nconst translations = {\n  en: En\n};\nlet currentLang = ((_a = globalThis.navigator) == null ? void 0 : _a.language) || \"en\";\nconst setLanguage = (langCode) => {\n  currentLang = langCode;\n};\nconst addTranslation = (lang, languageDictionary) => {\n  translations[lang] = languageDictionary;\n};\nconst resolveTranslation = (key) => {\n  var _a2, _b, _c;\n  const [base] = currentLang.split(\"-\");\n  return ((_a2 = translations[currentLang]) == null ? void 0 : _a2[key]) || ((_b = translations[base]) == null ? void 0 : _b[key]) || ((_c = translations.en) == null ? void 0 : _c[key]) || key;\n};\nconst t = (key, vars = {}) => resolveTranslation(key).replace(\n  /\\{(\\w+)\\}/g,\n  (_, v) => v in vars ? String(vars[v]) : `{${v}}`\n);\nexport {\n  addTranslation,\n  setLanguage,\n  t\n};\n","const En = {\n  \"Start airplay\": \"Start airplay\",\n  \"Stop airplay\": \"Stop airplay\",\n  Audio: \"Audio\",\n  Captions: \"Captions\",\n  \"Enable captions\": \"Enable captions\",\n  \"Disable captions\": \"Disable captions\",\n  \"Start casting\": \"Start casting\",\n  \"Stop casting\": \"Stop casting\",\n  \"Enter fullscreen mode\": \"Enter fullscreen mode\",\n  \"Exit fullscreen mode\": \"Exit fullscreen mode\",\n  Mute: \"Mute\",\n  Unmute: \"Unmute\",\n  Loop: \"Loop\",\n  \"Enter picture in picture mode\": \"Enter picture in picture mode\",\n  \"Exit picture in picture mode\": \"Exit picture in picture mode\",\n  Play: \"Play\",\n  Pause: \"Pause\",\n  \"Playback rate\": \"Playback rate\",\n  \"Playback rate {playbackRate}\": \"Playback rate {playbackRate}\",\n  Quality: \"Quality\",\n  \"Seek backward\": \"Seek backward\",\n  \"Seek forward\": \"Seek forward\",\n  Settings: \"Settings\",\n  Auto: \"Auto\",\n  \"audio player\": \"audio player\",\n  \"video player\": \"video player\",\n  volume: \"volume\",\n  seek: \"seek\",\n  \"closed captions\": \"closed captions\",\n  \"current playback rate\": \"current playback rate\",\n  \"playback time\": \"playback time\",\n  \"media loading\": \"media loading\",\n  settings: \"settings\",\n  \"audio tracks\": \"audio tracks\",\n  quality: \"quality\",\n  play: \"play\",\n  pause: \"pause\",\n  mute: \"mute\",\n  unmute: \"unmute\",\n  \"chapter: {chapterName}\": \"chapter: {chapterName}\",\n  live: \"live\",\n  Off: \"Off\",\n  \"start airplay\": \"start airplay\",\n  \"stop airplay\": \"stop airplay\",\n  \"start casting\": \"start casting\",\n  \"stop casting\": \"stop casting\",\n  \"enter fullscreen mode\": \"enter fullscreen mode\",\n  \"exit fullscreen mode\": \"exit fullscreen mode\",\n  \"enter picture in picture mode\": \"enter picture in picture mode\",\n  \"exit picture in picture mode\": \"exit picture in picture mode\",\n  \"seek to live\": \"seek to live\",\n  \"playing live\": \"playing live\",\n  \"seek back {seekOffset} seconds\": \"seek back {seekOffset} seconds\",\n  \"seek forward {seekOffset} seconds\": \"seek forward {seekOffset} seconds\",\n  \"Network Error\": \"Network Error\",\n  \"Decode Error\": \"Decode Error\",\n  \"Source Not Supported\": \"Source Not Supported\",\n  \"Encryption Error\": \"Encryption Error\",\n  \"A network error caused the media download to fail.\": \"A network error caused the media download to fail.\",\n  \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\": \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\",\n  \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\": \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\",\n  \"The media is encrypted and there are no keys to decrypt it.\": \"The media is encrypted and there are no keys to decrypt it.\"\n};\nexport {\n  En\n};\n","import { MediaChromeMenuButton } from \"./media-chrome-menu-button.js\";\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { getMediaController } from \"../utils/element-utils.js\";\nimport { t } from \"../utils/i18n.js\";\nfunction getSlotTemplateHTML() {\n  return (\n    /*html*/\n    `\n    <style>\n      :host([aria-expanded=\"true\"]) slot[name=tooltip] {\n        display: none;\n      }\n    </style>\n    <slot name=\"icon\">\n      <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n        <path d=\"M4.5 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm7.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm7.5 0a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\"/>\n      </svg>\n    </slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return t(\"Settings\");\n}\nclass MediaSettingsMenuButton extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [...super.observedAttributes, \"target\"];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", t(\"settings\"));\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-settings-menu\");\n  }\n}\nMediaSettingsMenuButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaSettingsMenuButton.getTooltipContentHTML = getTooltipContentHTML;\nif (!globalThis.customElements.get(\"media-settings-menu-button\")) {\n  globalThis.customElements.define(\n    \"media-settings-menu-button\",\n    MediaSettingsMenuButton\n  );\n}\nvar media_settings_menu_button_default = MediaSettingsMenuButton;\nexport {\n  MediaSettingsMenuButton,\n  media_settings_menu_button_default as default\n};\n","function stringifyRenditionList(renditions) {\n  return renditions == null ? void 0 : renditions.map(stringifyRendition).join(\" \");\n}\nfunction parseRenditionList(renditions) {\n  return renditions == null ? void 0 : renditions.split(/\\s+/).map(parseRendition);\n}\nfunction stringifyRendition(rendition) {\n  if (rendition) {\n    const { id, width, height } = rendition;\n    return [id, width, height].filter((a) => a != null).join(\":\");\n  }\n}\nfunction parseRendition(rendition) {\n  if (rendition) {\n    const [id, width, height] = rendition.split(\":\");\n    return { id, width: +width, height: +height };\n  }\n}\nfunction stringifyAudioTrackList(audioTracks) {\n  return audioTracks == null ? void 0 : audioTracks.map(stringifyAudioTrack).join(\" \");\n}\nfunction parseAudioTrackList(audioTracks) {\n  return audioTracks == null ? void 0 : audioTracks.split(/\\s+/).map(parseAudioTrack);\n}\nfunction stringifyAudioTrack(audioTrack) {\n  if (audioTrack) {\n    const { id, kind, language, label } = audioTrack;\n    return [id, kind, language, label].filter((a) => a != null).join(\":\");\n  }\n}\nfunction parseAudioTrack(audioTrack) {\n  if (audioTrack) {\n    const [id, kind, language, label] = audioTrack.split(\":\");\n    return {\n      id,\n      kind,\n      language,\n      label\n    };\n  }\n}\nfunction dashedToCamel(word) {\n  return word.split(\"-\").map(function(x, i) {\n    return (i ? x[0].toUpperCase() : x[0].toLowerCase()) + x.slice(1).toLowerCase();\n  }).join(\"\");\n}\nfunction constToCamel(word, upperFirst = false) {\n  return word.split(\"_\").map(function(x, i) {\n    return (i || upperFirst ? x[0].toUpperCase() : x[0].toLowerCase()) + x.slice(1).toLowerCase();\n  }).join(\"\");\n}\nfunction camelCase(name) {\n  return name.replace(/[-_]([a-z])/g, ($0, $1) => $1.toUpperCase());\n}\nfunction isValidNumber(x) {\n  return typeof x === \"number\" && !Number.isNaN(x) && Number.isFinite(x);\n}\nfunction isNumericString(str) {\n  if (typeof str != \"string\")\n    return false;\n  return !isNaN(str) && !isNaN(parseFloat(str));\n}\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst capitalize = (str) => str && str[0].toUpperCase() + str.slice(1);\nexport {\n  camelCase,\n  capitalize,\n  constToCamel,\n  dashedToCamel,\n  delay,\n  isNumericString,\n  isValidNumber,\n  parseAudioTrack,\n  parseAudioTrackList,\n  parseRendition,\n  parseRenditionList,\n  stringifyAudioTrack,\n  stringifyAudioTrackList,\n  stringifyRendition,\n  stringifyRenditionList\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _audioTrackList, _prevState, _render, render_fn, _onChange, onChange_fn;\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaUIAttributes, MediaUIEvents } from \"../constants.js\";\nimport { parseAudioTrackList } from \"../utils/utils.js\";\nimport {\n  MediaChromeMenu,\n  createMenuItem,\n  createIndicator\n} from \"./media-chrome-menu.js\";\nimport {\n  getStringAttr,\n  setStringAttr,\n  getMediaController\n} from \"../utils/element-utils.js\";\nclass MediaAudioTrackMenu extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd(this, _render);\n    __privateAdd(this, _onChange);\n    __privateAdd(this, _audioTrackList, []);\n    __privateAdd(this, _prevState, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED && oldValue !== newValue) {\n      this.value = newValue;\n    } else if (attrName === MediaUIAttributes.MEDIA_AUDIO_TRACK_LIST && oldValue !== newValue) {\n      __privateSet(this, _audioTrackList, parseAudioTrackList(newValue != null ? newValue : \"\"));\n      __privateMethod(this, _render, render_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   */\n  get anchorElement() {\n    var _a;\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return (_a = getMediaController(this)) == null ? void 0 : _a.querySelector(\n      \"media-audio-track-menu-button\"\n    );\n  }\n  get mediaAudioTrackList() {\n    return __privateGet(this, _audioTrackList);\n  }\n  set mediaAudioTrackList(list) {\n    __privateSet(this, _audioTrackList, list);\n    __privateMethod(this, _render, render_fn).call(this);\n  }\n  /**\n   * Get enabled audio track id.\n   */\n  get mediaAudioTrackEnabled() {\n    var _a;\n    return (_a = getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED)) != null ? _a : \"\";\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n}\n_audioTrackList = new WeakMap();\n_prevState = new WeakMap();\n_render = new WeakSet();\nrender_fn = function() {\n  if (__privateGet(this, _prevState) === JSON.stringify(this.mediaAudioTrackList))\n    return;\n  __privateSet(this, _prevState, JSON.stringify(this.mediaAudioTrackList));\n  const audioTrackList = this.mediaAudioTrackList;\n  this.defaultSlot.textContent = \"\";\n  audioTrackList.sort((a, b) => a.id.localeCompare(b.id, void 0, { numeric: true }));\n  for (const audioTrack of audioTrackList) {\n    const text = this.formatMenuItemText(audioTrack.label, audioTrack);\n    const item = createMenuItem({\n      type: \"radio\",\n      text,\n      value: `${audioTrack.id}`,\n      checked: audioTrack.enabled\n    });\n    item.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item);\n  }\n};\n_onChange = new WeakSet();\nonChange_fn = function() {\n  if (this.value == null)\n    return;\n  const event = new globalThis.CustomEvent(\n    MediaUIEvents.MEDIA_AUDIO_TRACK_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!globalThis.customElements.get(\"media-audio-track-menu\")) {\n  globalThis.customElements.define(\n    \"media-audio-track-menu\",\n    MediaAudioTrackMenu\n  );\n}\nvar media_audio_track_menu_default = MediaAudioTrackMenu;\nexport {\n  MediaAudioTrackMenu,\n  media_audio_track_menu_default as default\n};\n","import { MediaUIAttributes } from \"../constants.js\";\nimport { MediaChromeMenuButton } from \"./media-chrome-menu-button.js\";\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport {\n  getStringAttr,\n  setStringAttr,\n  getMediaController\n} from \"../utils/element-utils.js\";\nimport { t } from \"../utils/i18n.js\";\nconst audioTrackIcon = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M11 17H9.5V7H11v10Zm-3-3H6.5v-4H8v4Zm6-5h-1.5v6H14V9Zm3 7h-1.5V8H17v8Z\"/>\n  <path d=\"M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Zm-2 0a8 8 0 1 0-16 0 8 8 0 0 0 16 0Z\"/>\n</svg>`\n);\nfunction getSlotTemplateHTML() {\n  return (\n    /*html*/\n    `\n    <style>\n      :host([aria-expanded=\"true\"]) slot[name=tooltip] {\n        display: none;\n      }\n    </style>\n    <slot name=\"icon\">${audioTrackIcon}</slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return t(\"Audio\");\n}\nconst updateAriaLabel = (el) => {\n  const label = t(\"Audio\");\n  el.setAttribute(\"aria-label\", label);\n};\nclass MediaAudioTrackMenuButton extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED,\n      MediaUIAttributes.MEDIA_AUDIO_TRACK_UNAVAILABLE\n    ];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel(this);\n  }\n  attributeChangedCallback(attrName, _oldValue, newValue) {\n    super.attributeChangedCallback(attrName, _oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_LANG) {\n      updateAriaLabel(this);\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    var _a;\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return (_a = getMediaController(this)) == null ? void 0 : _a.querySelector(\"media-audio-track-menu\");\n  }\n  /**\n   * Get enabled audio track id.\n   * @return {string}\n   */\n  get mediaAudioTrackEnabled() {\n    var _a;\n    return (_a = getStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED)) != null ? _a : \"\";\n  }\n  set mediaAudioTrackEnabled(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_AUDIO_TRACK_ENABLED, id);\n  }\n}\nMediaAudioTrackMenuButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaAudioTrackMenuButton.getTooltipContentHTML = getTooltipContentHTML;\nif (!globalThis.customElements.get(\"media-audio-track-menu-button\")) {\n  globalThis.customElements.define(\n    \"media-audio-track-menu-button\",\n    MediaAudioTrackMenuButton\n  );\n}\nvar media_audio_track_menu_button_default = MediaAudioTrackMenuButton;\nexport {\n  MediaAudioTrackMenuButton,\n  media_audio_track_menu_button_default as default\n};\n","import { MediaUIAttributes, TextTrackKinds } from \"../constants.js\";\nconst splitTextTracksStr = (textTracksStr = \"\") => textTracksStr.split(/\\s+/);\nconst parseTextTrackStr = (textTrackStr = \"\") => {\n  const [kind, language, encodedLabel] = textTrackStr.split(\":\");\n  const label = encodedLabel ? decodeURIComponent(encodedLabel) : void 0;\n  return {\n    kind: kind === \"cc\" ? TextTrackKinds.CAPTIONS : TextTrackKinds.SUBTITLES,\n    language,\n    label\n  };\n};\nconst parseTextTracksStr = (textTracksStr = \"\", textTrackLikeObj = {}) => {\n  return splitTextTracksStr(textTracksStr).map((textTrackStr) => {\n    const textTrackObj = parseTextTrackStr(textTrackStr);\n    return {\n      ...textTrackLikeObj,\n      ...textTrackObj\n    };\n  });\n};\nconst parseTracks = (trackOrTracks) => {\n  if (!trackOrTracks)\n    return [];\n  if (Array.isArray(trackOrTracks)) {\n    return trackOrTracks.map((trackObjOrStr) => {\n      if (typeof trackObjOrStr === \"string\") {\n        return parseTextTrackStr(trackObjOrStr);\n      }\n      return trackObjOrStr;\n    });\n  }\n  if (typeof trackOrTracks === \"string\") {\n    return parseTextTracksStr(trackOrTracks);\n  }\n  return [trackOrTracks];\n};\nconst formatTextTrackObj = ({ kind, label, language } = { kind: \"subtitles\" }) => {\n  if (!label)\n    return language;\n  return `${kind === \"captions\" ? \"cc\" : \"sb\"}:${language}:${encodeURIComponent(\n    label\n  )}`;\n};\nconst stringifyTextTrackList = (textTracks = []) => {\n  return Array.prototype.map.call(textTracks, formatTextTrackObj).join(\" \");\n};\nconst isMatchingPropOf = (key, value) => (obj) => obj[key] === value;\nconst textTrackObjAsPred = (filterObj) => {\n  const preds = Object.entries(filterObj).map(([key, value]) => {\n    return isMatchingPropOf(key, value);\n  });\n  return (textTrack) => preds.every((pred) => pred(textTrack));\n};\nconst updateTracksModeTo = (mode, tracks = [], tracksToUpdate = []) => {\n  const preds = parseTracks(tracksToUpdate).map(textTrackObjAsPred);\n  const isTrackToUpdate = (textTrack) => {\n    return preds.some((pred) => pred(textTrack));\n  };\n  Array.from(tracks).filter(isTrackToUpdate).forEach((textTrack) => {\n    textTrack.mode = mode;\n  });\n};\nconst getTextTracksList = (media, filterPredOrObj = () => true) => {\n  if (!(media == null ? void 0 : media.textTracks))\n    return [];\n  const filterPred = typeof filterPredOrObj === \"function\" ? filterPredOrObj : textTrackObjAsPred(filterPredOrObj);\n  return Array.from(media.textTracks).filter(filterPred);\n};\nconst areSubsOn = (el) => {\n  var _a;\n  const showingSubtitles = !!((_a = el.mediaSubtitlesShowing) == null ? void 0 : _a.length) || el.hasAttribute(MediaUIAttributes.MEDIA_SUBTITLES_SHOWING);\n  return showingSubtitles;\n};\nexport {\n  areSubsOn,\n  formatTextTrackObj,\n  getTextTracksList,\n  isMatchingPropOf,\n  parseTextTrackStr,\n  parseTextTracksStr,\n  parseTracks,\n  splitTextTracksStr,\n  stringifyTextTrackList,\n  textTrackObjAsPred,\n  updateTracksModeTo\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _prevState, _render, render_fn, _onChange, onChange_fn;\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaUIAttributes, MediaUIEvents } from \"../constants.js\";\nimport { getMediaController } from \"../utils/element-utils.js\";\nimport {\n  MediaChromeMenu,\n  createMenuItem,\n  createIndicator\n} from \"./media-chrome-menu.js\";\nimport {\n  parseTextTracksStr,\n  stringifyTextTrackList,\n  formatTextTrackObj\n} from \"../utils/captions.js\";\nimport { t } from \"../utils/i18n.js\";\nconst ccIcon = (\n  /*html*/\n  `\n  <svg aria-hidden=\"true\" viewBox=\"0 0 26 24\" part=\"captions-indicator indicator\">\n    <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n  </svg>`\n);\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    ${MediaChromeMenu.getTemplateHTML(_attrs)}\n    <slot name=\"captions-indicator\" hidden>${ccIcon}</slot>\n  `\n  );\n}\nclass MediaCaptionsMenu extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd(this, _render);\n    __privateAdd(this, _onChange);\n    __privateAdd(this, _prevState, void 0);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_LIST && oldValue !== newValue) {\n      __privateMethod(this, _render, render_fn).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING && oldValue !== newValue) {\n      this.value = newValue || \"\";\n      __privateMethod(this, _render, render_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\"media-captions-menu-button\");\n  }\n  /**\n   * @type {Array<object>} An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n}\n_prevState = new WeakMap();\n_render = new WeakSet();\nrender_fn = function() {\n  var _a;\n  const hasListChanged = __privateGet(this, _prevState) !== JSON.stringify(this.mediaSubtitlesList);\n  const hasShowingChanged = this.value !== this.getAttribute(MediaUIAttributes.MEDIA_SUBTITLES_SHOWING);\n  if (!hasListChanged && !hasShowingChanged)\n    return;\n  __privateSet(this, _prevState, JSON.stringify(this.mediaSubtitlesList));\n  this.defaultSlot.textContent = \"\";\n  const isOff = !this.value;\n  const item = createMenuItem({\n    type: \"radio\",\n    text: this.formatMenuItemText(t(\"Off\")),\n    value: \"off\",\n    checked: isOff\n  });\n  item.prepend(createIndicator(this, \"checked-indicator\"));\n  this.defaultSlot.append(item);\n  const subtitlesList = this.mediaSubtitlesList;\n  for (const subs of subtitlesList) {\n    const item2 = createMenuItem({\n      type: \"radio\",\n      text: this.formatMenuItemText(subs.label, subs),\n      value: formatTextTrackObj(subs),\n      checked: this.value == formatTextTrackObj(subs)\n    });\n    item2.prepend(createIndicator(this, \"checked-indicator\"));\n    const type = (_a = subs.kind) != null ? _a : \"subs\";\n    if (type === \"captions\") {\n      item2.append(createIndicator(this, \"captions-indicator\"));\n    }\n    this.defaultSlot.append(item2);\n  }\n};\n_onChange = new WeakSet();\nonChange_fn = function() {\n  const showingSubs = this.mediaSubtitlesShowing;\n  const showingSubsStr = this.getAttribute(\n    MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n  );\n  const localStateChange = this.value !== showingSubsStr;\n  if ((showingSubs == null ? void 0 : showingSubs.length) && localStateChange) {\n    this.dispatchEvent(\n      new globalThis.CustomEvent(\n        MediaUIEvents.MEDIA_DISABLE_SUBTITLES_REQUEST,\n        {\n          composed: true,\n          bubbles: true,\n          detail: showingSubs\n        }\n      )\n    );\n  }\n  if (!this.value || !localStateChange)\n    return;\n  const event = new globalThis.CustomEvent(\n    MediaUIEvents.MEDIA_SHOW_SUBTITLES_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nMediaCaptionsMenu.getTemplateHTML = getTemplateHTML;\nconst getSubtitlesListAttr = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nconst setSubtitlesListAttr = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!globalThis.customElements.get(\"media-captions-menu\")) {\n  globalThis.customElements.define(\"media-captions-menu\", MediaCaptionsMenu);\n}\nvar media_captions_menu_default = MediaCaptionsMenu;\nexport {\n  MediaCaptionsMenu,\n  media_captions_menu_default as default\n};\n","import { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaUIAttributes } from \"../constants.js\";\nimport { MediaChromeMenuButton } from \"./media-chrome-menu-button.js\";\nimport { getMediaController } from \"../utils/element-utils.js\";\nimport {\n  areSubsOn,\n  parseTextTracksStr,\n  stringifyTextTrackList\n} from \"../utils/captions.js\";\nimport { t } from \"../utils/i18n.js\";\nconst ccIconOn = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M22.83 5.68a2.58 2.58 0 0 0-2.3-2.5c-3.62-.24-11.44-.24-15.06 0a2.58 2.58 0 0 0-2.3 2.5c-.23 4.21-.23 8.43 0 12.64a2.58 2.58 0 0 0 2.3 2.5c3.62.24 11.44.24 15.06 0a2.58 2.58 0 0 0 2.3-2.5c.23-4.21.23-8.43 0-12.64Zm-11.39 9.45a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.92 3.92 0 0 1 .92-2.77 3.18 3.18 0 0 1 2.43-1 2.94 2.94 0 0 1 2.13.78c.364.359.62.813.74 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.17 1.61 1.61 0 0 0-1.29.58 2.79 2.79 0 0 0-.5 1.89 3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.48 1.48 0 0 0 1-.37 2.1 2.1 0 0 0 .59-1.14l1.4.44a3.23 3.23 0 0 1-1.07 1.69Zm7.22 0a3.07 3.07 0 0 1-1.91.57 3.06 3.06 0 0 1-2.34-1 3.75 3.75 0 0 1-.92-2.67 3.88 3.88 0 0 1 .93-2.77 3.14 3.14 0 0 1 2.42-1 3 3 0 0 1 2.16.82 2.8 2.8 0 0 1 .73 1.31l-1.43.35a1.49 1.49 0 0 0-1.51-1.21 1.61 1.61 0 0 0-1.29.58A2.79 2.79 0 0 0 15 12a3 3 0 0 0 .49 1.93 1.61 1.61 0 0 0 1.27.58 1.44 1.44 0 0 0 1-.37 2.1 2.1 0 0 0 .6-1.15l1.4.44a3.17 3.17 0 0 1-1.1 1.7Z\"/>\n</svg>`;\nconst ccIconOff = `<svg aria-hidden=\"true\" viewBox=\"0 0 26 24\">\n  <path d=\"M17.73 14.09a1.4 1.4 0 0 1-1 .37 1.579 1.579 0 0 1-1.27-.58A3 3 0 0 1 15 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34A2.89 2.89 0 0 0 19 9.07a3 3 0 0 0-2.14-.78 3.14 3.14 0 0 0-2.42 1 3.91 3.91 0 0 0-.93 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.17 3.17 0 0 0 1.07-1.74l-1.4-.45c-.083.43-.3.822-.62 1.12Zm-7.22 0a1.43 1.43 0 0 1-1 .37 1.58 1.58 0 0 1-1.27-.58A3 3 0 0 1 7.76 12a2.8 2.8 0 0 1 .5-1.85 1.63 1.63 0 0 1 1.29-.57 1.47 1.47 0 0 1 1.51 1.2l1.43-.34a2.81 2.81 0 0 0-.74-1.32 2.94 2.94 0 0 0-2.13-.78 3.18 3.18 0 0 0-2.43 1 4 4 0 0 0-.92 2.78 3.74 3.74 0 0 0 .92 2.66 3.07 3.07 0 0 0 2.34 1 3.07 3.07 0 0 0 1.91-.57 3.23 3.23 0 0 0 1.07-1.74l-1.4-.45a2.06 2.06 0 0 1-.6 1.07Zm12.32-8.41a2.59 2.59 0 0 0-2.3-2.51C18.72 3.05 15.86 3 13 3c-2.86 0-5.72.05-7.53.17a2.59 2.59 0 0 0-2.3 2.51c-.23 4.207-.23 8.423 0 12.63a2.57 2.57 0 0 0 2.3 2.5c1.81.13 4.67.19 7.53.19 2.86 0 5.72-.06 7.53-.19a2.57 2.57 0 0 0 2.3-2.5c.23-4.207.23-8.423 0-12.63Zm-1.49 12.53a1.11 1.11 0 0 1-.91 1.11c-1.67.11-4.45.18-7.43.18-2.98 0-5.76-.07-7.43-.18a1.11 1.11 0 0 1-.91-1.11c-.21-4.14-.21-8.29 0-12.43a1.11 1.11 0 0 1 .91-1.11C7.24 4.56 10 4.49 13 4.49s5.76.07 7.43.18a1.11 1.11 0 0 1 .91 1.11c.21 4.14.21 8.29 0 12.43Z\"/>\n</svg>`;\nfunction getSlotTemplateHTML() {\n  return (\n    /*html*/\n    `\n    <style>\n      :host([data-captions-enabled=\"true\"]) slot[name=off] {\n        display: none !important;\n      }\n\n      ${/* Double negative, but safer if display doesn't equal 'block' */\n    \"\"}\n      :host(:not([data-captions-enabled=\"true\"])) slot[name=on] {\n        display: none !important;\n      }\n\n      :host([aria-expanded=\"true\"]) slot[name=tooltip] {\n        display: none;\n      }\n    </style>\n\n    <slot name=\"icon\">\n      <slot name=\"on\">${ccIconOn}</slot>\n      <slot name=\"off\">${ccIconOff}</slot>\n    </slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return t(\"Captions\");\n}\nconst updateAriaChecked = (el) => {\n  el.setAttribute(\"data-captions-enabled\", areSubsOn(el).toString());\n};\nconst updateAriaLabel = (el) => {\n  el.setAttribute(\"aria-label\", t(\"closed captions\"));\n};\nclass MediaCaptionsMenuButton extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_SUBTITLES_LIST,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING,\n      MediaUIAttributes.MEDIA_LANG\n    ];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    updateAriaLabel(this);\n    updateAriaChecked(this);\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_SUBTITLES_SHOWING) {\n      updateAriaChecked(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_LANG) {\n      updateAriaLabel(this);\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   * @return {HTMLElement | null}\n   */\n  get invokeTargetElement() {\n    var _a;\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return (_a = getMediaController(this)) == null ? void 0 : _a.querySelector(\"media-captions-menu\");\n  }\n  /**\n   * An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesList() {\n    return getSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST);\n  }\n  set mediaSubtitlesList(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_LIST, list);\n  }\n  /**\n   * An array of TextTrack-like objects.\n   * Objects must have the properties: kind, language, and label.\n   */\n  get mediaSubtitlesShowing() {\n    return getSubtitlesListAttr(\n      this,\n      MediaUIAttributes.MEDIA_SUBTITLES_SHOWING\n    );\n  }\n  set mediaSubtitlesShowing(list) {\n    setSubtitlesListAttr(this, MediaUIAttributes.MEDIA_SUBTITLES_SHOWING, list);\n  }\n}\nMediaCaptionsMenuButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaCaptionsMenuButton.getTooltipContentHTML = getTooltipContentHTML;\nconst getSubtitlesListAttr = (el, attrName) => {\n  const attrVal = el.getAttribute(attrName);\n  return attrVal ? parseTextTracksStr(attrVal) : [];\n};\nconst setSubtitlesListAttr = (el, attrName, list) => {\n  if (!(list == null ? void 0 : list.length)) {\n    el.removeAttribute(attrName);\n    return;\n  }\n  const newValStr = stringifyTextTrackList(list);\n  const oldVal = el.getAttribute(attrName);\n  if (oldVal === newValStr)\n    return;\n  el.setAttribute(attrName, newValStr);\n};\nif (!globalThis.customElements.get(\"media-captions-menu-button\")) {\n  globalThis.customElements.define(\n    \"media-captions-menu-button\",\n    MediaCaptionsMenuButton\n  );\n}\nvar media_captions_menu_button_default = MediaCaptionsMenuButton;\nexport {\n  MediaCaptionsMenuButton,\n  media_captions_menu_button_default as default\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar _el, _attr, _defaultSet, _tokenSet, _tokens, tokens_get;\nclass AttributeTokenList {\n  constructor(el, attr, { defaultValue } = { defaultValue: void 0 }) {\n    __privateAdd(this, _tokens);\n    __privateAdd(this, _el, void 0);\n    __privateAdd(this, _attr, void 0);\n    __privateAdd(this, _defaultSet, void 0);\n    __privateAdd(this, _tokenSet, /* @__PURE__ */ new Set());\n    __privateSet(this, _el, el);\n    __privateSet(this, _attr, attr);\n    __privateSet(this, _defaultSet, new Set(defaultValue));\n  }\n  [Symbol.iterator]() {\n    return __privateGet(this, _tokens, tokens_get).values();\n  }\n  get length() {\n    return __privateGet(this, _tokens, tokens_get).size;\n  }\n  get value() {\n    var _a;\n    return (_a = [...__privateGet(this, _tokens, tokens_get)].join(\" \")) != null ? _a : \"\";\n  }\n  set value(val) {\n    var _a;\n    if (val === this.value)\n      return;\n    __privateSet(this, _tokenSet, /* @__PURE__ */ new Set());\n    this.add(...(_a = val == null ? void 0 : val.split(\" \")) != null ? _a : []);\n  }\n  toString() {\n    return this.value;\n  }\n  item(index) {\n    return [...__privateGet(this, _tokens, tokens_get)][index];\n  }\n  values() {\n    return __privateGet(this, _tokens, tokens_get).values();\n  }\n  forEach(callback, thisArg) {\n    __privateGet(this, _tokens, tokens_get).forEach(callback, thisArg);\n  }\n  add(...tokens) {\n    var _a, _b;\n    tokens.forEach((t) => __privateGet(this, _tokenSet).add(t));\n    if (this.value === \"\" && !((_a = __privateGet(this, _el)) == null ? void 0 : _a.hasAttribute(`${__privateGet(this, _attr)}`))) {\n      return;\n    }\n    (_b = __privateGet(this, _el)) == null ? void 0 : _b.setAttribute(`${__privateGet(this, _attr)}`, `${this.value}`);\n  }\n  remove(...tokens) {\n    var _a;\n    tokens.forEach((t) => __privateGet(this, _tokenSet).delete(t));\n    (_a = __privateGet(this, _el)) == null ? void 0 : _a.setAttribute(`${__privateGet(this, _attr)}`, `${this.value}`);\n  }\n  contains(token) {\n    return __privateGet(this, _tokens, tokens_get).has(token);\n  }\n  toggle(token, force) {\n    if (typeof force !== \"undefined\") {\n      if (force) {\n        this.add(token);\n        return true;\n      } else {\n        this.remove(token);\n        return false;\n      }\n    }\n    if (this.contains(token)) {\n      this.remove(token);\n      return false;\n    }\n    this.add(token);\n    return true;\n  }\n  replace(oldToken, newToken) {\n    this.remove(oldToken);\n    this.add(newToken);\n    return oldToken === newToken;\n  }\n}\n_el = new WeakMap();\n_attr = new WeakMap();\n_defaultSet = new WeakMap();\n_tokenSet = new WeakMap();\n_tokens = new WeakSet();\ntokens_get = function() {\n  return __privateGet(this, _tokenSet).size ? __privateGet(this, _tokenSet) : __privateGet(this, _defaultSet);\n};\nexport {\n  AttributeTokenList\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar _rates;\nimport { MediaChromeButton } from \"./media-chrome-button.js\";\nimport { globalThis } from \"./utils/server-safe-globals.js\";\nimport { MediaUIEvents, MediaUIAttributes } from \"./constants.js\";\nimport { AttributeTokenList } from \"./utils/attribute-token-list.js\";\nimport { getNumericAttr, setNumericAttr } from \"./utils/element-utils.js\";\nimport { t } from \"./utils/i18n.js\";\nconst Attributes = {\n  RATES: \"rates\"\n};\nconst DEFAULT_RATES = [1, 1.2, 1.5, 1.7, 2];\nconst DEFAULT_RATE = 1;\nfunction getSlotTemplateHTML(attrs) {\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        min-width: 5ch;\n        padding: var(--media-button-padding, var(--media-control-padding, 10px 5px));\n      }\n    </style>\n    <slot name=\"icon\">${attrs[\"mediaplaybackrate\"] || DEFAULT_RATE}x</slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return t(\"Playback rate\");\n}\nclass MediaPlaybackRateButton extends MediaChromeButton {\n  constructor() {\n    var _a;\n    super();\n    __privateAdd(this, _rates, new AttributeTokenList(this, Attributes.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    this.container = this.shadowRoot.querySelector('slot[name=\"icon\"]');\n    this.container.innerHTML = `${(_a = this.mediaPlaybackRate) != null ? _a : DEFAULT_RATE}x`;\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === Attributes.RATES) {\n      __privateGet(this, _rates).value = newValue;\n    }\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE) {\n      const newPlaybackRate = newValue ? +newValue : Number.NaN;\n      const playbackRate = !Number.isNaN(newPlaybackRate) ? newPlaybackRate : DEFAULT_RATE;\n      this.container.innerHTML = `${playbackRate}x`;\n      this.setAttribute(\n        \"aria-label\",\n        t(\"Playback rate {playbackRate}\", { playbackRate })\n      );\n    }\n  }\n  /**\n   * Get the playback rates for the button.\n   */\n  get rates() {\n    return __privateGet(this, _rates);\n  }\n  /**\n   * Set the playback rates for the button.\n   * For React 19+ compatibility, accept a string of space-separated rates.\n   */\n  set rates(value) {\n    if (!value) {\n      __privateGet(this, _rates).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet(this, _rates).value = value.join(\" \");\n    } else if (typeof value === \"string\") {\n      __privateGet(this, _rates).value = value;\n    }\n  }\n  /**\n   * @type {number} The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n  handleClick() {\n    var _a, _b;\n    const availableRates = Array.from(__privateGet(this, _rates).values(), (str) => +str).sort(\n      (a, b) => a - b\n    );\n    const detail = (_b = (_a = availableRates.find((r) => r > this.mediaPlaybackRate)) != null ? _a : availableRates[0]) != null ? _b : DEFAULT_RATE;\n    const evt = new globalThis.CustomEvent(\n      MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n      { composed: true, bubbles: true, detail }\n    );\n    this.dispatchEvent(evt);\n  }\n}\n_rates = new WeakMap();\nMediaPlaybackRateButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaPlaybackRateButton.getTooltipContentHTML = getTooltipContentHTML;\nif (!globalThis.customElements.get(\"media-playback-rate-button\")) {\n  globalThis.customElements.define(\n    \"media-playback-rate-button\",\n    MediaPlaybackRateButton\n  );\n}\nvar media_playback_rate_button_default = MediaPlaybackRateButton;\nexport {\n  Attributes,\n  DEFAULT_RATE,\n  DEFAULT_RATES,\n  media_playback_rate_button_default as default\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _rates, _render, render_fn, _onChange, onChange_fn;\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaUIAttributes, MediaUIEvents } from \"../constants.js\";\nimport { AttributeTokenList } from \"../utils/attribute-token-list.js\";\nimport {\n  getNumericAttr,\n  setNumericAttr,\n  getMediaController\n} from \"../utils/element-utils.js\";\nimport { DEFAULT_RATES, DEFAULT_RATE } from \"../media-playback-rate-button.js\";\nimport {\n  MediaChromeMenu,\n  createMenuItem,\n  createIndicator\n} from \"./media-chrome-menu.js\";\nconst Attributes = {\n  RATES: \"rates\"\n};\nclass MediaPlaybackRateMenu extends MediaChromeMenu {\n  constructor() {\n    super();\n    __privateAdd(this, _render);\n    __privateAdd(this, _onChange);\n    __privateAdd(this, _rates, new AttributeTokenList(this, Attributes.RATES, {\n      defaultValue: DEFAULT_RATES\n    }));\n    __privateMethod(this, _render, render_fn).call(this);\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      Attributes.RATES\n    ];\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE && oldValue != newValue) {\n      this.value = newValue;\n      __privateMethod(this, _render, render_fn).call(this);\n    } else if (attrName === Attributes.RATES && oldValue != newValue) {\n      __privateGet(this, _rates).value = newValue;\n      __privateMethod(this, _render, render_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-playback-rate-menu-button\"\n    );\n  }\n  /**\n   * Get the playback rates for the button.\n   */\n  get rates() {\n    return __privateGet(this, _rates);\n  }\n  /**\n   * Set the playback rates for the button.\n   * For React 19+ compatibility, accept a string of space-separated rates.\n   */\n  set rates(value) {\n    if (!value) {\n      __privateGet(this, _rates).value = \"\";\n    } else if (Array.isArray(value)) {\n      __privateGet(this, _rates).value = value.join(\" \");\n    } else if (typeof value === \"string\") {\n      __privateGet(this, _rates).value = value;\n    }\n    __privateMethod(this, _render, render_fn).call(this);\n  }\n  /**\n   * The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n}\n_rates = new WeakMap();\n_render = new WeakSet();\nrender_fn = function() {\n  this.defaultSlot.textContent = \"\";\n  const currentRate = this.mediaPlaybackRate;\n  const ratesSet = new Set(Array.from(__privateGet(this, _rates)).map((rate) => Number(rate)));\n  if (currentRate > 0 && !ratesSet.has(currentRate)) {\n    ratesSet.add(currentRate);\n  }\n  const sortedRates = Array.from(ratesSet).sort((a, b) => a - b);\n  for (const rate of sortedRates) {\n    const item = createMenuItem({\n      type: \"radio\",\n      text: this.formatMenuItemText(`${rate}x`, rate),\n      value: rate.toString(),\n      checked: currentRate === rate\n    });\n    item.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item);\n  }\n};\n_onChange = new WeakSet();\nonChange_fn = function() {\n  if (!this.value)\n    return;\n  const event = new globalThis.CustomEvent(\n    MediaUIEvents.MEDIA_PLAYBACK_RATE_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!globalThis.customElements.get(\"media-playback-rate-menu\")) {\n  globalThis.customElements.define(\n    \"media-playback-rate-menu\",\n    MediaPlaybackRateMenu\n  );\n}\nvar media_playback_rate_menu_default = MediaPlaybackRateMenu;\nexport {\n  Attributes,\n  MediaPlaybackRateMenu,\n  media_playback_rate_menu_default as default\n};\n","import { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaUIAttributes } from \"../constants.js\";\nimport { MediaChromeMenuButton } from \"./media-chrome-menu-button.js\";\nimport {\n  getNumericAttr,\n  setNumericAttr,\n  getMediaController\n} from \"../utils/element-utils.js\";\nimport { t } from \"../utils/i18n.js\";\nconst DEFAULT_RATE = 1;\nfunction getSlotTemplateHTML(attrs) {\n  return (\n    /*html*/\n    `\n    <style>\n      :host {\n        min-width: 5ch;\n        padding: var(--media-button-padding, var(--media-control-padding, 10px 5px));\n      }\n      \n      :host([aria-expanded=\"true\"]) slot[name=tooltip] {\n        display: none;\n      }\n    </style>\n    <slot name=\"icon\">${attrs[\"mediaplaybackrate\"] || DEFAULT_RATE}x</slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return t(\"Playback rate\");\n}\nclass MediaPlaybackRateMenuButton extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE\n    ];\n  }\n  constructor() {\n    var _a;\n    super();\n    this.container = this.shadowRoot.querySelector('slot[name=\"icon\"]');\n    this.container.innerHTML = `${(_a = this.mediaPlaybackRate) != null ? _a : DEFAULT_RATE}x`;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_PLAYBACK_RATE) {\n      const newPlaybackRate = newValue ? +newValue : Number.NaN;\n      const playbackRate = !Number.isNaN(newPlaybackRate) ? newPlaybackRate : DEFAULT_RATE;\n      this.container.innerHTML = `${playbackRate}x`;\n      this.setAttribute(\n        \"aria-label\",\n        t(\"Playback rate {playbackRate}\", { playbackRate })\n      );\n    }\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-playback-rate-menu\");\n  }\n  /**\n   * The current playback rate\n   */\n  get mediaPlaybackRate() {\n    return getNumericAttr(\n      this,\n      MediaUIAttributes.MEDIA_PLAYBACK_RATE,\n      DEFAULT_RATE\n    );\n  }\n  set mediaPlaybackRate(value) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_PLAYBACK_RATE, value);\n  }\n}\nMediaPlaybackRateMenuButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaPlaybackRateMenuButton.getTooltipContentHTML = getTooltipContentHTML;\nif (!globalThis.customElements.get(\"media-playback-rate-menu-button\")) {\n  globalThis.customElements.define(\n    \"media-playback-rate-menu-button\",\n    MediaPlaybackRateMenuButton\n  );\n}\nvar media_playback_rate_menu_button_default = MediaPlaybackRateMenuButton;\nexport {\n  DEFAULT_RATE,\n  MediaPlaybackRateMenuButton,\n  media_playback_rate_menu_button_default as default\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _renditionList, _prevState, _render, render_fn, _onChange, onChange_fn;\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaUIAttributes, MediaUIEvents } from \"../constants.js\";\nimport {\n  getMediaController,\n  getStringAttr,\n  setStringAttr,\n  getNumericAttr,\n  setNumericAttr\n} from \"../utils/element-utils.js\";\nimport { parseRenditionList } from \"../utils/utils.js\";\nimport {\n  MediaChromeMenu,\n  createMenuItem,\n  createIndicator\n} from \"./media-chrome-menu.js\";\nimport { t } from \"../utils/i18n.js\";\nclass MediaRenditionMenu extends MediaChromeMenu {\n  constructor() {\n    super(...arguments);\n    __privateAdd(this, _render);\n    __privateAdd(this, _onChange);\n    __privateAdd(this, _renditionList, []);\n    __privateAdd(this, _prevState, {});\n  }\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_LIST,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE,\n      MediaUIAttributes.MEDIA_HEIGHT\n    ];\n  }\n  static formatMenuItemText(text, rendition) {\n    return super.formatMenuItemText(text, rendition);\n  }\n  static formatRendition(rendition, { showBitrate = false } = {}) {\n    const renditionText = `${Math.min(\n      rendition.width,\n      rendition.height\n    )}p`;\n    if (showBitrate && rendition.bitrate) {\n      const mbps = rendition.bitrate / 1e6;\n      const bitrateText = `${mbps.toFixed(mbps < 1 ? 1 : 0)} Mbps`;\n      return `${renditionText} (${bitrateText})`;\n    }\n    return this.formatMenuItemText(renditionText, rendition);\n  }\n  static compareRendition(a, b) {\n    var _a, _b;\n    return b.height === a.height ? ((_a = b.bitrate) != null ? _a : 0) - ((_b = a.bitrate) != null ? _b : 0) : b.height - a.height;\n  }\n  attributeChangedCallback(attrName, oldValue, newValue) {\n    super.attributeChangedCallback(attrName, oldValue, newValue);\n    if (attrName === MediaUIAttributes.MEDIA_RENDITION_SELECTED && oldValue !== newValue) {\n      this.value = newValue != null ? newValue : \"auto\";\n      __privateMethod(this, _render, render_fn).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_RENDITION_LIST && oldValue !== newValue) {\n      __privateSet(this, _renditionList, parseRenditionList(newValue));\n      __privateMethod(this, _render, render_fn).call(this);\n    } else if (attrName === MediaUIAttributes.MEDIA_HEIGHT && oldValue !== newValue) {\n      __privateMethod(this, _render, render_fn).call(this);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.addEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.removeEventListener(\"change\", __privateMethod(this, _onChange, onChange_fn));\n  }\n  /**\n   * Returns the anchor element when it is a floating menu.\n   */\n  get anchorElement() {\n    if (this.anchor !== \"auto\")\n      return super.anchorElement;\n    return getMediaController(this).querySelector(\n      \"media-rendition-menu-button\"\n    );\n  }\n  get mediaRenditionList() {\n    return __privateGet(this, _renditionList);\n  }\n  set mediaRenditionList(list) {\n    __privateSet(this, _renditionList, list);\n    __privateMethod(this, _render, render_fn).call(this);\n  }\n  /**\n   * Get selected rendition id.\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n  get mediaHeight() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_HEIGHT);\n  }\n  set mediaHeight(height) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_HEIGHT, height);\n  }\n  compareRendition(a, b) {\n    const ctor = this.constructor;\n    return ctor.compareRendition(a, b);\n  }\n  formatMenuItemText(text, rendition) {\n    const ctor = this.constructor;\n    return ctor.formatMenuItemText(text, rendition);\n  }\n  formatRendition(rendition, options) {\n    const ctor = this.constructor;\n    return ctor.formatRendition(rendition, options);\n  }\n  showRenditionBitrate(rendition) {\n    return this.mediaRenditionList.some(\n      (r) => r !== rendition && r.height === rendition.height && r.bitrate !== rendition.bitrate\n    );\n  }\n}\n_renditionList = new WeakMap();\n_prevState = new WeakMap();\n_render = new WeakSet();\nrender_fn = function() {\n  if (__privateGet(this, _prevState).mediaRenditionList === JSON.stringify(this.mediaRenditionList) && __privateGet(this, _prevState).mediaHeight === this.mediaHeight)\n    return;\n  __privateGet(this, _prevState).mediaRenditionList = JSON.stringify(\n    this.mediaRenditionList\n  );\n  __privateGet(this, _prevState).mediaHeight = this.mediaHeight;\n  const renditionList = this.mediaRenditionList.sort(\n    this.compareRendition.bind(this)\n  );\n  const selectedRendition = renditionList.find(\n    (rendition) => rendition.id === this.mediaRenditionSelected\n  );\n  for (const rendition of renditionList) {\n    rendition.selected = rendition === selectedRendition;\n  }\n  this.defaultSlot.textContent = \"\";\n  const isAuto = !this.mediaRenditionSelected;\n  for (const rendition of renditionList) {\n    const text = this.formatRendition(rendition, {\n      showBitrate: this.showRenditionBitrate(rendition)\n    });\n    const item2 = createMenuItem({\n      type: \"radio\",\n      text,\n      value: `${rendition.id}`,\n      checked: rendition.selected && !isAuto\n    });\n    item2.prepend(createIndicator(this, \"checked-indicator\"));\n    this.defaultSlot.append(item2);\n  }\n  const showSelectedBitrate = selectedRendition && this.showRenditionBitrate(selectedRendition);\n  const autoText = isAuto ? (\n    // Auto • 1080p (4 Mbps)\n    selectedRendition ? this.formatMenuItemText(\n      `${t(\"Auto\")} \\u2022 ${this.formatRendition(selectedRendition, {\n        showBitrate: showSelectedBitrate\n      })}`,\n      selectedRendition\n    ) : this.formatMenuItemText(`${t(\"Auto\")} (${this.mediaHeight}p)`)\n  ) : this.formatMenuItemText(t(\"Auto\"));\n  const item = createMenuItem({\n    type: \"radio\",\n    text: autoText,\n    value: \"auto\",\n    checked: isAuto\n  });\n  item.dataset.description = autoText;\n  item.prepend(createIndicator(this, \"checked-indicator\"));\n  this.defaultSlot.append(item);\n};\n_onChange = new WeakSet();\nonChange_fn = function() {\n  if (this.value == null)\n    return;\n  const event = new globalThis.CustomEvent(\n    MediaUIEvents.MEDIA_RENDITION_REQUEST,\n    {\n      composed: true,\n      bubbles: true,\n      detail: this.value\n    }\n  );\n  this.dispatchEvent(event);\n};\nif (!globalThis.customElements.get(\"media-rendition-menu\")) {\n  globalThis.customElements.define(\"media-rendition-menu\", MediaRenditionMenu);\n}\nvar media_rendition_menu_default = MediaRenditionMenu;\nexport {\n  MediaRenditionMenu,\n  media_rendition_menu_default as default\n};\n","import { MediaUIAttributes } from \"../constants.js\";\nimport { MediaChromeMenuButton } from \"./media-chrome-menu-button.js\";\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport {\n  getStringAttr,\n  setStringAttr,\n  getMediaController,\n  getNumericAttr,\n  setNumericAttr\n} from \"../utils/element-utils.js\";\nimport { t } from \"../utils/i18n.js\";\nconst renditionIcon = (\n  /*html*/\n  `<svg aria-hidden=\"true\" viewBox=\"0 0 24 24\">\n  <path d=\"M13.5 2.5h2v6h-2v-2h-11v-2h11v-2Zm4 2h4v2h-4v-2Zm-12 4h2v6h-2v-2h-3v-2h3v-2Zm4 2h12v2h-12v-2Zm1 4h2v6h-2v-2h-8v-2h8v-2Zm4 2h7v2h-7v-2Z\" />\n</svg>`\n);\nfunction getSlotTemplateHTML() {\n  return (\n    /*html*/\n    `\n    <style>\n      :host([aria-expanded=\"true\"]) slot[name=tooltip] {\n        display: none;\n      }\n    </style>\n    <slot name=\"icon\">${renditionIcon}</slot>\n  `\n  );\n}\nfunction getTooltipContentHTML() {\n  return t(\"Quality\");\n}\nclass MediaRenditionMenuButton extends MediaChromeMenuButton {\n  static get observedAttributes() {\n    return [\n      ...super.observedAttributes,\n      MediaUIAttributes.MEDIA_RENDITION_SELECTED,\n      MediaUIAttributes.MEDIA_RENDITION_UNAVAILABLE,\n      MediaUIAttributes.MEDIA_HEIGHT\n    ];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    this.setAttribute(\"aria-label\", t(\"quality\"));\n  }\n  /**\n   * Returns the element with the id specified by the `invoketarget` attribute.\n   */\n  get invokeTargetElement() {\n    if (this.invokeTarget != void 0)\n      return super.invokeTargetElement;\n    return getMediaController(this).querySelector(\"media-rendition-menu\");\n  }\n  /**\n   * Get selected rendition id.\n   */\n  get mediaRenditionSelected() {\n    return getStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED);\n  }\n  set mediaRenditionSelected(id) {\n    setStringAttr(this, MediaUIAttributes.MEDIA_RENDITION_SELECTED, id);\n  }\n  get mediaHeight() {\n    return getNumericAttr(this, MediaUIAttributes.MEDIA_HEIGHT);\n  }\n  set mediaHeight(height) {\n    setNumericAttr(this, MediaUIAttributes.MEDIA_HEIGHT, height);\n  }\n}\nMediaRenditionMenuButton.getSlotTemplateHTML = getSlotTemplateHTML;\nMediaRenditionMenuButton.getTooltipContentHTML = getTooltipContentHTML;\nif (!globalThis.customElements.get(\"media-rendition-menu-button\")) {\n  globalThis.customElements.define(\n    \"media-rendition-menu-button\",\n    MediaRenditionMenuButton\n  );\n}\nvar media_rendition_menu_button_default = MediaRenditionMenuButton;\nexport {\n  MediaRenditionMenuButton,\n  media_rendition_menu_button_default as default\n};\n","var __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\nvar _isContextMenuOpen, _updateVisibility, updateVisibility_fn, _closeContextMenu, closeContextMenu_fn, _closeOtherContextMenus, closeOtherContextMenus_fn, _isVideoContainer, isVideoContainer_fn, _onControllerContextMenu, _onContextMenu, onContextMenu_fn, _onDocumentClick, _onKeyDown, _onMenuClick;\nimport { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaChromeMenu } from \"./media-chrome-menu.js\";\nimport { getMediaController } from \"../utils/element-utils.js\";\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n      ${MediaChromeMenu.getTemplateHTML(_attrs)}\n      <style>\n        :host {\n          --_menu-bg: rgb(20 20 30 / .8);\n          background: var(--media-settings-menu-background,\n            var(--media-menu-background,\n              var(--media-control-background,\n                var(--media-secondary-color, var(--_menu-bg)))));\n          min-width: var(--media-settings-menu-min-width, 170px);\n          border-radius: 2px;\n          overflow: hidden;\n        }\n      </style>\n    `\n  );\n}\nclass MediaContextMenu extends MediaChromeMenu {\n  constructor() {\n    super();\n    __privateAdd(this, _updateVisibility);\n    __privateAdd(this, _closeContextMenu);\n    __privateAdd(this, _closeOtherContextMenus);\n    __privateAdd(this, _isVideoContainer);\n    __privateAdd(this, _onContextMenu);\n    __privateAdd(this, _isContextMenuOpen, false);\n    __privateAdd(this, _onControllerContextMenu, (event) => {\n      const target = event.target;\n      const isVideoElement = (target == null ? void 0 : target.nodeName) === \"VIDEO\";\n      const isVideoContainer = __privateMethod(this, _isVideoContainer, isVideoContainer_fn).call(this, target);\n      if (isVideoElement || isVideoContainer) {\n        if (!__privateGet(this, _isContextMenuOpen)) {\n          __privateMethod(this, _onContextMenu, onContextMenu_fn).call(this, event);\n        } else {\n          __privateMethod(this, _closeContextMenu, closeContextMenu_fn).call(this);\n        }\n      }\n    });\n    __privateAdd(this, _onDocumentClick, (event) => {\n      const target = event.target;\n      const isInsideMenu = this.contains(target);\n      const isRightClick = event.button === 2;\n      const isVideo = (target == null ? void 0 : target.nodeName) === \"VIDEO\";\n      const isVideoContainer = __privateMethod(this, _isVideoContainer, isVideoContainer_fn).call(this, target);\n      if (isInsideMenu) {\n        return;\n      }\n      const isRightClickOnVideo = isRightClick && (isVideo || isVideoContainer);\n      if (isRightClickOnVideo) {\n        return;\n      }\n      __privateMethod(this, _closeContextMenu, closeContextMenu_fn).call(this);\n    });\n    __privateAdd(this, _onKeyDown, (event) => {\n      if (event.key === \"Escape\") {\n        __privateMethod(this, _closeContextMenu, closeContextMenu_fn).call(this);\n      }\n    });\n    __privateAdd(this, _onMenuClick, (event) => {\n      var _a, _b;\n      const target = event.target;\n      if ((_a = target.matches) == null ? void 0 : _a.call(target, 'button[invoke=\"copy\"]')) {\n        const input = (_b = target.closest(\"media-context-menu-item\")) == null ? void 0 : _b.querySelector('input[slot=\"copy\"]');\n        input && navigator.clipboard.writeText(input.value);\n      }\n      __privateMethod(this, _closeContextMenu, closeContextMenu_fn).call(this);\n    });\n    this.setAttribute(\"noautohide\", \"\");\n    __privateMethod(this, _updateVisibility, updateVisibility_fn).call(this);\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    getMediaController(this).addEventListener(\n      \"contextmenu\",\n      __privateGet(this, _onControllerContextMenu)\n    );\n    this.addEventListener(\"click\", __privateGet(this, _onMenuClick));\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    getMediaController(this).removeEventListener(\n      \"contextmenu\",\n      __privateGet(this, _onControllerContextMenu)\n    );\n    this.removeEventListener(\"click\", __privateGet(this, _onMenuClick));\n    document.removeEventListener(\"mousedown\", __privateGet(this, _onDocumentClick));\n    document.removeEventListener(\"keydown\", __privateGet(this, _onKeyDown));\n  }\n}\n_isContextMenuOpen = new WeakMap();\n_updateVisibility = new WeakSet();\nupdateVisibility_fn = function() {\n  this.hidden = !__privateGet(this, _isContextMenuOpen);\n};\n_closeContextMenu = new WeakSet();\ncloseContextMenu_fn = function() {\n  __privateSet(this, _isContextMenuOpen, false);\n  __privateMethod(this, _updateVisibility, updateVisibility_fn).call(this);\n};\n_closeOtherContextMenus = new WeakSet();\ncloseOtherContextMenus_fn = function() {\n  const allContextMenus = document.querySelectorAll(\"media-context-menu\");\n  allContextMenus.forEach((menu) => {\n    var _a;\n    if (menu !== this) {\n      __privateMethod(_a = menu, _closeContextMenu, closeContextMenu_fn).call(_a);\n    }\n  });\n};\n_isVideoContainer = new WeakSet();\nisVideoContainer_fn = function(element) {\n  if (!element)\n    return false;\n  if (element.hasAttribute(\"slot\") && element.getAttribute(\"slot\") === \"media\") {\n    return true;\n  }\n  if (element.nodeName.includes(\"-\") && element.tagName.includes(\"-\")) {\n    const hasVideoAttributes = element.hasAttribute(\"src\") || element.hasAttribute(\"poster\") || element.hasAttribute(\"preload\") || element.hasAttribute(\"playsinline\");\n    return hasVideoAttributes;\n  }\n  return false;\n};\n_onControllerContextMenu = new WeakMap();\n_onContextMenu = new WeakSet();\nonContextMenu_fn = function(event) {\n  event.preventDefault();\n  __privateMethod(this, _closeOtherContextMenus, closeOtherContextMenus_fn).call(this);\n  __privateSet(this, _isContextMenuOpen, true);\n  this.style.position = \"fixed\";\n  this.style.left = `${event.clientX}px`;\n  this.style.top = `${event.clientY}px`;\n  __privateMethod(this, _updateVisibility, updateVisibility_fn).call(this);\n  document.addEventListener(\"mousedown\", __privateGet(this, _onDocumentClick), {\n    once: true\n  });\n  document.addEventListener(\"keydown\", __privateGet(this, _onKeyDown), { once: true });\n};\n_onDocumentClick = new WeakMap();\n_onKeyDown = new WeakMap();\n_onMenuClick = new WeakMap();\nMediaContextMenu.getTemplateHTML = getTemplateHTML;\nif (!globalThis.customElements.get(\"media-context-menu\")) {\n  globalThis.customElements.define(\"media-context-menu\", MediaContextMenu);\n}\nvar media_context_menu_default = MediaContextMenu;\nexport {\n  MediaContextMenu,\n  media_context_menu_default as default\n};\n","import { globalThis } from \"../utils/server-safe-globals.js\";\nimport { MediaChromeMenuItem } from \"./media-chrome-menu-item.js\";\nfunction getTemplateHTML(_attrs) {\n  return (\n    /*html*/\n    `\n    ${MediaChromeMenuItem.getTemplateHTML.call(this, _attrs)}\n    <style>\n        ::slotted(*) {\n            color: var(--media-text-color, white);\n            text-decoration: none;\n            border: none;\n            background: none;\n            cursor: pointer;\n            padding: 0;\n            min-height: var(--media-control-height, 24px);\n        }\n    </style>\n  `\n  );\n}\nclass MediaContextMenuItem extends MediaChromeMenuItem {\n}\nMediaContextMenuItem.shadowRootOptions = { mode: \"open\" };\nMediaContextMenuItem.getTemplateHTML = getTemplateHTML;\nif (!globalThis.customElements.get(\"media-context-menu-item\")) {\n  globalThis.customElements.define(\n    \"media-context-menu-item\",\n    MediaContextMenuItem\n  );\n}\nvar media_context_menu_item_default = MediaContextMenuItem;\nexport {\n  MediaContextMenuItem,\n  media_context_menu_item_default as default\n};\n"]}