{"version":3,"file":"video-player.umd.cjs","sources":["../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/css-tag.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/reactive-element.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/property.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/state.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/event-options.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/base.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query.js","../node_modules/.pnpm/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js","../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.js","../src/helpers/closest.ts","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/when.js","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/lit-html.js","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/if-defined.js","../node_modules/.pnpm/@lit+context@1.1.0/node_modules/@lit/context/lib/context-request-event.js","../node_modules/.pnpm/@lit+context@1.1.0/node_modules/@lit/context/lib/create-context.js","../node_modules/.pnpm/@lit+context@1.1.0/node_modules/@lit/context/lib/value-notifier.js","../node_modules/.pnpm/@lit+context@1.1.0/node_modules/@lit/context/lib/controllers/context-provider.js","../src/helpers/isEqual.ts","../src/state/connector.ts","../src/types.ts","../src/state/mapper.ts","../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js","../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js","../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js","../src/state/controller.ts","../src/state/events.ts","../src/state/commander.ts","../src/helpers/device.ts","../src/state/dispatcher.ts","../src/state/index.ts","../src/helpers/event.ts","../src/helpers/ismobile.ts","../src/components/video-button/Video-button.component.ts","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directive.js","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/unsafe-html.js","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/unsafe-svg.js","../src/icons/chrome-cast-outline.svg?raw","../src/components/video-chromecast/Video-chromecast.component.ts","../src/components/video-condition/Video-condition.component.ts","../src/helpers/buffer.ts","../src/helpers/mux.ts","../src/helpers/drm.ts","../src/helpers/storage.ts","../src/icons/play-solid.svg?raw","../src/icons/pause-solid.svg?raw","../src/components/buttons/Play.ts","../src/helpers/cue.ts","../src/helpers/debounce.ts","../src/components/video-container/subtitles.ts","../src/components/video-container/sources.ts","../src/components/video-container/audios/native.ts","../src/components/video-container/audios/hls.ts","../src/components/video-container/audios/index.ts","../src/components/video-container/Video-container.component.ts","../src/mixins/DependentProps.ts","../src/components/video-controls/Video-controls.component.ts","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/static.js","../src/components/video-cues/Video-cues.component.ts","../src/components/video-errors-manager/Video-errors-manager.component.ts","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/class-map.js","../src/components/video-live-sign/Video-live-sign.component.ts","../src/components/video-menu/Video-menu.component.ts","../src/components/video-player/controllers/Fullscreen.ts","../src/components/video-player/controllers/Idle.ts","../src/components/video-player/controllers/Keyboard.ts","../src/decorators/watch.ts","../src/components/video-player/Video-player.component.ts","../src/components/video-progress/Video-progress.component.ts","../src/helpers/slot.ts","../src/components/video-slider/Video-slider.component.ts","../src/helpers/time.ts","../node_modules/.pnpm/lit-html@3.1.2/node_modules/lit-html/directives/map.js","../src/components/video-timeline/Video-timeline.component.ts","../src/components/video-timer/Video-timer.component.ts","../src/components/video-volume-control/Video-volume-control.component.ts","../src/icons/airplay-outline.svg?raw","../src/components/buttons/Airplay.ts","../src/icons/backward-solid.svg?raw","../src/components/buttons/Backward.ts","../src/components/buttons/ChromeCast.ts","../src/icons/forward-solid.svg?raw","../src/components/buttons/Forward.ts","../src/icons/fullscreen-enter-solid.svg?raw","../src/icons/fullscreen-out-solid.svg?raw","../src/components/buttons/Fullscreen.ts","../src/icons/play-in-window-outline.svg?raw","../src/icons/play-in-window-solid.svg?raw","../src/components/buttons/Pip.ts","../src/icons/settings-solid.svg?raw","../src/icons/checkmark.svg?raw","../src/icons/chevron-left.svg?raw","../src/components/buttons/Settings.ts","../src/icons/subtitles-solid.svg?raw","../src/icons/subtitles-outline.svg?raw","../src/components/buttons/Subtitles.ts","../src/icons/volume-mid-solid.svg?raw","../src/icons/volume-min-solid.svg?raw","../src/icons/volume-mute-solid.svg?raw","../src/icons/volume-max-solid.svg?raw","../src/components/buttons/Volume.ts","../src/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction t(t){return(n,o)=>{const c=\"function\"==typeof n?n:n[o];Object.assign(c,t)}}export{t as eventOptions};\n//# sourceMappingURL=event-options.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(o){return(e,n)=>{const{slot:r,selector:s}=o??{},c=\"slot\"+(r?`[name=${r}]`:\":not([name])\");return t(e,n,{get(){const t=this.renderRoot?.querySelector(c),e=t?.assignedElements(o)??[];return void 0===s?e:e.filter((t=>t.matches(s)))}})}}export{o as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","export function closestElement(\n  selector: string,\n  base = this,\n  __Closest = (\n    el: Element | Document | Window,\n    found = el && (el as Element).closest(selector),\n  ): any =>\n    !el || el === document || el === window\n      ? null // standard .closest() returns null for non-found selectors also\n      : found\n        ? found // found a selector INside this element\n        : __Closest((el as any).getRootNode().host), // recursion!! break out to parent DOM\n) {\n  return __Closest(base);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n,r,t){return n?r(n):t?.(n)}export{n as when};\n//# sourceMappingURL=when.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${(Math.random()+\"\").slice(9)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=Symbol.for(\"lit-noChange\"),T=Symbol.for(\"lit-nothing\"),A=new WeakMap,E=r.createTreeWalker(r,129);function C(t,i){if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const P=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[C(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":\"\")),o]};class V{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=P(t,s);if(this.el=V.createElement(f,n),E.currentNode=this.el.content,2===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=E.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?k:\"?\"===e[1]?H:\"@\"===e[1]?I:R}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),E.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function N(t,i,s=t,e){if(i===w)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=N(t,h._$AS(t,i.values),h,e)),i}class S{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);E.currentNode=e;let h=E.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new M(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new L(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=E.nextNode(),o++)}return E.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class M{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=T,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=N(this,t,i),c(t)?t===T||null==t||\"\"===t?(this._$AH!==T&&this._$AR(),this._$AH=T):t!==this._$AH&&t!==w&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}S(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.S(t))}_(t){this._$AH!==T&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=V.createElement(C(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new S(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new V(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new M(this.S(l()),this.S(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class R{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=T,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=T}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=N(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==w,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=N(this,e[s+n],i,n),r===w&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===T?t=T:t!==T&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===T?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class k extends R{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===T?void 0:t}}class H extends R{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==T)}}class I extends R{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=N(this,t,i,0)??T)===w)return;const s=this._$AH,e=t===T&&s!==T||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==T&&(s===T||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class L{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){N(this,t)}}const z={P:e,A:h,C:o,M:1,L:P,R:S,D:u,V:N,I:M,H:R,N:H,U:I,B:k,F:L},Z=t.litHtmlPolyfillSupport;Z?.(V,M),(t.litHtmlVersions??=[]).push(\"3.1.2\");const j=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new M(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{z as _$LH,x as html,w as noChange,T as nothing,j as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s extends Event{constructor(s,t,e){super(\"context-request\",{bubbles:!0,composed:!0}),this.context=s,this.callback=t,this.subscribe=e??!1}}export{s as ContextRequestEvent};\n//# sourceMappingURL=context-request-event.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction n(n){return n}export{n as createContext};\n//# sourceMappingURL=create-context.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s{get value(){return this.o}set value(s){this.setValue(s)}setValue(s,t=!1){const i=t||!Object.is(s,this.o);this.o=s,i&&this.updateObservers()}constructor(s){this.subscriptions=new Map,this.updateObservers=()=>{for(const[s,{disposer:t}]of this.subscriptions)s(this.o,t)},void 0!==s&&(this.value=s)}addCallback(s,t,i){if(!i)return void s(this.value);this.subscriptions.has(s)||this.subscriptions.set(s,{disposer:()=>{this.subscriptions.delete(s)},consumerHost:t});const{disposer:h}=this.subscriptions.get(s);s(this.value,h)}clearCallbacks(){this.subscriptions.clear()}}export{s as ValueNotifier};\n//# sourceMappingURL=value-notifier.js.map\n","import{ContextRequestEvent as t}from\"../context-request-event.js\";import{ValueNotifier as s}from\"../value-notifier.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends Event{constructor(t){super(\"context-provider\",{bubbles:!0,composed:!0}),this.context=t}}class i extends s{constructor(s,e,i){super(void 0!==e.context?e.initialValue:i),this.onContextRequest=t=>{const s=t.composedPath()[0];t.context===this.context&&s!==this.host&&(t.stopPropagation(),this.addCallback(t.callback,s,t.subscribe))},this.onProviderRequest=s=>{const e=s.composedPath()[0];if(s.context!==this.context||e===this.host)return;const i=new Set;for(const[s,{consumerHost:e}]of this.subscriptions)i.has(s)||(i.add(s),e.dispatchEvent(new t(this.context,s,!0)));s.stopPropagation()},this.host=s,void 0!==e.context?this.context=e.context:this.context=e,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(\"context-request\",this.onContextRequest),this.host.addEventListener(\"context-provider\",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new e(this.context))}}export{i as ContextProvider,e as ContextProviderEvent};\n//# sourceMappingURL=context-provider.js.map\n","export const isEqual = (a: any, b: any) => {\n  if (typeof a !== typeof b) return false;\n  if (typeof a === \"object\") return Object.is(a, b);\n  return a === b;\n};\n","import { Context, ContextType, ContextEvent } from \"@lit/context\";\nimport { ReactiveController, ReactiveElement } from \"lit\";\nimport { type Interface } from \"@lit/reactive-element/decorators/base\";\nimport { isEqual } from \"../helpers/isEqual\";\n\nexport class ContextConsumer<\n  C extends Context<unknown, unknown>,\n  HostElement extends ReactiveElement,\n> implements ReactiveController\n{\n  constructor(\n    protected host: HostElement,\n    private context: C,\n    private field?: keyof ContextType<C>,\n    private name?: PropertyKey,\n  ) {\n    this.host.addController(this);\n  }\n\n  connected = false;\n\n  private unsubscribe?: () => void;\n\n  hostConnected(): void {\n    this.dispatchRequest();\n  }\n\n  hostDisconnected(): void {\n    if (this.unsubscribe) {\n      this.unsubscribe();\n      this.unsubscribe = undefined;\n    }\n  }\n\n  private dispatchRequest() {\n    const event = new ContextEvent(\n      this.context,\n      (value, unsubscribe) => {\n        this.connected = true;\n        // some providers will pass an unsubscribe function indicating they may provide future values\n        if (this.unsubscribe) {\n          // if the unsubscribe function changes this implies we have changed provider\n          if (this.unsubscribe !== unsubscribe) {\n            // cleanup the old provider\n            this.unsubscribe();\n          }\n        }\n\n        const _host = this.host as any;\n\n        if (!this.field) {\n          _host[this.name] = value;\n        } else if (!isEqual(_host[this.name], value[this.field])) {\n          _host[this.name] = value[this.field];\n        } else {\n          this.unsubscribe = unsubscribe;\n          return;\n        }\n\n        this.host.requestUpdate();\n        this.unsubscribe = unsubscribe;\n      },\n      true,\n    );\n\n    this.host.dispatchEvent(event);\n\n    Promise.resolve().then(() => {\n      if (!this.connected) this.host.dispatchEvent(event);\n    });\n  }\n}\n\nexport type ContextDecorator = {\n  // accessor decorator signature\n  <C extends Interface<ReactiveElement>, V>(\n    target: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>,\n  ): ClassAccessorDecoratorResult<C, V>;\n\n  // setter decorator signature\n  <C extends Interface<ReactiveElement>, V>(\n    target: (value: V) => void,\n    context: ClassSetterDecoratorContext<C, V>,\n  ): (this: C, value: V) => void;\n\n  // legacy decorator signature\n  (\n    protoOrDescriptor: Object,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): any;\n};\n\nexport function connectConsumer<ValueType>({\n  context: context,\n  field,\n}: {\n  context: Context<unknown, ValueType>;\n  field?: keyof ValueType;\n}): ContextDecorator {\n  return <C extends Interface<ReactiveElement>, V>(\n    protoOrTarget:\n      | object\n      | ClassAccessorDecoratorTarget<C, V>\n      | ((value: V) => void),\n    nameOrContext:\n      | PropertyKey\n      | ClassAccessorDecoratorContext<C, V>\n      | ClassSetterDecoratorContext<C, V>,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): any => {\n    const ctor = protoOrTarget.constructor as typeof ReactiveElement;\n    ctor.addInitializer((element: ReactiveElement): void => {\n      new ContextConsumer(element, context, field, nameOrContext as string);\n    });\n  };\n}\n","import { device } from \"./helpers/device\";\nimport type Hls from \"hls.js\";\n\n/**\n * Command are the actions that can be triggered by the user or a interface\n * They can be handled with the `@listen` decorator, and should not affect the state\n */\nexport enum Command {\n  /** Play the video */\n  play = \"play\",\n  /** Pause the video */\n  pause = \"pause\",\n  /** Seek to a specific time */\n  seek = \"seek\",\n  /** Mute the video */\n  mute = \"mute\",\n  /** Unmute the video */\n  unmute = \"unmute\",\n  /** Set playback rate */\n  setPlaybackRate = \"setPlaybackRate\",\n  /** Toggle fullscreen mode */\n  toggleFullscreen = \"toggleFullscreen\",\n  /** Toggle play/pause */\n  togglePlay = \"togglePlay\",\n  /** Toggle mute/unmute */\n  toggleMuted = \"toggleMuted\",\n  /** Set the video volume */\n  setVolume = \"setVolume\",\n  /** Increase video volume */\n  increaseVolume = \"increaseVolume\",\n  /** Decrease video volume */\n  decreaseVolume = \"decreaseVolume\",\n  /** Seek forward for 10 seconds */\n  forward = \"forward\",\n  /** Seek backward for 10 seconds */\n  backward = \"backward\",\n  /** Enable a text track */\n  enableTextTrack = \"enableTextTrack\",\n  /** Enable an audio track */\n  enableAudioTrack = \"enableAudioTrack\",\n  /** Sets video quality */\n  setQualityLevel = \"setQualityLevel\",\n  /** Initialize the custom HLS player */\n  initCustomHLS = \"initCustomHLS\",\n  /** Initialize the video player */\n  init = \"init\",\n  /** Request to play via AirPlay on IOS/MacOs devices */\n  requestAirplay = \"requestAirplay\",\n  /** Triggers when ChromeCast is not supported in browser */\n  castNotSupported = \"castNotSupported\",\n  /** Request playing video on ChromeCast device */\n  requestCast = \"requestCast\",\n  /** Toggles \"picture in picture\" mode */\n  togglePip = \"togglePip\",\n  /** Toggles live mode */\n  live = \"live\",\n  /** Sets error */\n  error = \"error\",\n}\n\nexport enum Action {\n  play = \"play\",\n  pause = \"pause\",\n  update = \"update\",\n  toggleMuted = \"toggleMuted\",\n  seekEnd = \"seekEnd\",\n  seekStart = \"seekStart\",\n  canPlay = \"canPlay\",\n  updateDuration = \"updateDuration\",\n  updateTime = \"updateTime\",\n  init = \"init\",\n  volumeChange = \"volumeChange\",\n  fullscreenChange = \"fullscreenChange\",\n  setLevels = \"setLevels\",\n  interacted = \"interacted\",\n  idle = \"idle\",\n  selectTextTrack = \"selectTextTrack\",\n  selectAudioTrack = \"selectAudioTrack\",\n  cues = \"cues\",\n  setPlaybackRate = \"setPlaybackRate\",\n  setQualityLevel = \"setQualityLevel\",\n  updateAirplayStatus = \"updateAirplayStatus\",\n  toggleAirplay = \"toggleAirplay\",\n  togglePip = \"togglePip\",\n  setCastStatus = \"setCastStatus\",\n  setBuffer = \"setBuffer\",\n  setMuxParams = \"setMuxParams\",\n  setVideoOffset = \"setVideoOffset\",\n  live = \"live\",\n  setDRMOptions = \"setDRMOptions\",\n}\n\nexport enum Event {\n  state = \"video-state-update\",\n  bulk = \"video-bulk-state-update\",\n  command = \"video-command\",\n  registerCommand = \"video-register-command\",\n}\n\nexport type State = Partial<\n  {\n    value: number;\n    duration: number;\n    currentTime: number;\n    src: string;\n    sources: {\n      type: string;\n      src: string;\n    }[];\n    title: string;\n    poster: string;\n    volume: number;\n    canPlay: boolean;\n    played: boolean;\n    idle: boolean;\n    isInteracted: boolean;\n    isPlaying: boolean;\n    isMuted: boolean;\n    isAutoplay: boolean;\n    isSourceSupported: boolean;\n    isFullscreen: boolean;\n    activeTextTrackId: string;\n    activeAudioTrackId: string;\n    activeQualityLevel: number;\n    playbackRate: number;\n    customHLS: boolean;\n    airplayAvailable: boolean;\n    airplayActivated: boolean;\n    pipAvailable: boolean;\n    pipActivated: boolean;\n    castAvailable: boolean;\n    castActivated: boolean;\n    cues: string[];\n    buffered: number;\n    textTracks: {\n      label: string;\n      src: string;\n      lang: string;\n      id: string;\n    }[];\n    audioTracks: {\n      label: string,\n      lang: string,\n      id: string\n    }[];\n    qualityLevels: {\n      name: string;\n    }[];\n    muxData: MuxParams;\n    live: boolean;\n    initialized: boolean;\n    drmOptions?: DRMOptions;\n  } & typeof device\n>;\n\nexport type MuxParams = {\n  env_key: string;\n\n  /** any arbitrary string you want to use to identify this player */\n  player_name?: string;\n  player_init_time?: number;\n  player_version?: string;\n\n  viewer_user_id?: string;\n  experiment_name?: string;\n\n  video_id?: string;\n  video_title?: string;\n  video_series?: string;\n  video_duration?: string;\n  video_stream_type?: string;\n  video_cdn?: string;\n};\n\nexport type MuxOptions = {\n  debug?: boolean;\n  Hls?: (typeof import(\"hls.js\"))[\"default\"];\n  hlsjs?: Hls;\n};\n\n\nexport const enum KeySystems {\n  clearkey = 'org.w3.clearkey',\n  fps = 'com.apple.fps',\n  playready = 'com.microsoft.playready',\n  widevine = 'com.widevine.alpha',\n};\n\n\nexport type DRMSystemConfiguration = {\n  licenseUrl: string;\n  certificateUrl?: string;\n};\n\nexport type DRMOptions = Partial<\n  Record<KeySystems, DRMSystemConfiguration>\n>;\n","import { initialState } from \".\";\nimport { Action, State } from \"../types\";\n\nexport const stateMapper: Partial<Record<Action, (s: State, v: any) => State>> =\n  {\n    [Action.init]: (s, params) => ({\n      ...initialState,\n      ...s,\n      ...params,\n    }),\n    [Action.toggleMuted]: (state) => ({\n      ...state,\n      isMuted: !state.isMuted,\n    }),\n    [Action.play]: (state) => ({\n      ...state,\n      isPlaying: true,\n      played: true,\n      canPlay: true,\n    }),\n    [Action.pause]: (state) => ({\n      ...state,\n      isPlaying: false,\n      live: state.live && !state.played ? true : false,\n    }),\n    [Action.update]: (state, params) => ({\n      ...state,\n      ...params,\n    }),\n    [Action.toggleAirplay]: (state) => ({\n      ...state,\n      airplayActivated: !state.airplayActivated,\n    }),\n    [Action.canPlay]: (state) => ({\n      ...state,\n      canPlay: true,\n    }),\n  };\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","import { ContextProvider } from \"@lit/context\";\nimport { context } from \"./index\";\nimport { StateAction } from \"./dispatcher\";\nimport { stateMapper } from \"./mapper\";\nimport { Action, Command, Event, State } from \"../types\";\nimport {\n  CommandEvent,\n  CommandMeta,\n  CommandParams,\n  CommandRegisterEvent,\n} from \"./events\";\nimport _debug from \"debug\";\n\nconst commandDebug = _debug(\"player:commands\");\nconst stateDebug = _debug(\"player:state\");\n\ntype Context = typeof context;\n\nexport const mapState = (action: Action, state: State, value: any): State =>\n  (stateMapper[action] || stateMapper[Action.update])(state, value);\n\nclass CachedCommand {\n  private _params: CommandParams;\n  private _meta: CommandMeta;\n  public isPending: boolean;\n\n  constructor(\n    public readonly cache: Set<CachedCommand>,\n    public readonly command: Command,\n    public readonly dependencies: State | undefined,\n    public readonly callback: (\n      params: unknown,\n      meta: unknown,\n      unsubscribe: () => void,\n      resolve: (value: unknown) => void,\n      reject: (value: unknown) => void,\n    ) => void,\n  ) {}\n\n  isMatchingState(s: State) {\n    if (!this.dependencies) return true;\n    return Object.keys(this.dependencies).every(\n      (k: keyof State) => this.dependencies[k] === s[k],\n    );\n  }\n\n  setParams(params: CommandParams, meta: CommandMeta) {\n    this._params = params;\n    this._meta = meta;\n    return this;\n  }\n\n  pend(params = this._params, meta = this._meta) {\n    this._params = params;\n    this._meta = meta;\n    if (!meta?.once) this.isPending = true;\n  }\n\n  exec(params = this._params, meta = this._meta) {\n    this.callback(\n      params,\n      meta,\n      // unsubscribe\n      () => this.cache.delete(this),\n      // resolve\n      (res) => {\n        commandDebug(`[${Command[this.command]}] resolved`, res);\n        this.isPending = false;\n      },\n      // reject\n      (e) => {\n        commandDebug(`[${Command[this.command]}] rejected`, e);\n        if (!meta?.once) this.isPending = true;\n      },\n    );\n  }\n}\n\nexport class StateController extends ContextProvider<Context> {\n  private _commands = new Set<CachedCommand>();\n\n  hostConnected() {\n    this.host.addEventListener(Event.state, this.handleEvent);\n    this.host.addEventListener(Event.registerCommand, this.registerCommand);\n    this.host.addEventListener(Event.command, this.callCommand);\n  }\n\n  hostDisconnected() {\n    this.host.removeEventListener(Event.state, this.handleEvent);\n    this.host.removeEventListener(Event.registerCommand, this.registerCommand);\n  }\n\n  setState = (action: Action, params: Record<string, any>) => {\n    const prevState = this.value;\n    this.setValue(mapState(action, this.value, params));\n    if (prevState !== this.value) {\n      Promise.resolve().then(() => {\n        stateDebug(`[${Action[action]}]`, params);\n      });\n    }\n  };\n\n  handleEvent = (e: CustomEvent<StateAction>) => {\n    e.stopPropagation();\n    this.setState(e.detail.action, e.detail.params);\n\n    Promise.resolve().then(() => this.resolvePendingCommands());\n  };\n\n  resolvePendingCommands() {\n    for (const cmd of this._commands) {\n      if (cmd.isPending && cmd.isMatchingState(this.value)) {\n        cmd.exec();\n      }\n    }\n  }\n\n  callCommand = (event?: CommandEvent) => {\n    event.stopPropagation();\n    for (const cmd of this._commands) {\n      if (cmd.command !== event.command) continue;\n      if (cmd.isMatchingState(this.value)) {\n        cmd.exec(event.params, event.meta);\n      } else {\n        cmd.pend(event.params, event.meta);\n      }\n    }\n  };\n\n  registerCommand = (event: CommandRegisterEvent) => {\n    event.stopPropagation();\n    this._commands.add(\n      new CachedCommand(\n        this._commands,\n        event.command,\n        event.dependencies,\n        event.callback,\n      ),\n    );\n  };\n}\n","import { Types } from \".\";\n\nexport type CommandMeta = {\n  // Command will not be pended\n  once?: boolean;\n  // Command has been sent from keyboard\n  keyboard?: boolean;\n};\nexport type CommandParams = Record<string, unknown>;\n\nexport type CommandCallback = (\n  params: CommandParams,\n  meta: CommandMeta,\n  unsubscribe: () => void,\n  resolve: (value?: unknown) => void,\n  reject: (value?: unknown) => void,\n) => void;\n\nexport class CommandRegisterEvent extends Event {\n  constructor(\n    public readonly command: Types.Command,\n    public readonly dependencies: Types.State,\n    public readonly callback: CommandCallback,\n  ) {\n    super(Types.Event.registerCommand, { bubbles: true, composed: true });\n  }\n}\n\nexport class CommandEvent extends Event {\n  constructor(\n    public readonly command: Types.Command,\n    public readonly params: CommandParams = {},\n    public readonly meta: CommandMeta = {},\n  ) {\n    super(Types.Event.command, { bubbles: true, composed: true });\n  }\n}\n","import { ReactiveController, ReactiveElement } from \"lit\";\nimport { Command, State } from \"../types\";\nimport {\n  CommandEvent,\n  CommandMeta,\n  CommandParams,\n  CommandRegisterEvent,\n} from \"./events\";\nimport _debug from \"debug\";\nimport { Interface } from \"@lit/reactive-element/decorators/base\";\n\nconst debugCommand = _debug(\"player:commands\");\n\nexport class EventListener implements ReactiveController {\n  root: ReactiveElement;\n  unsubscribe?: () => void;\n\n  constructor(\n    protected host: ReactiveElement,\n    private command: Command,\n    private name: PropertyKey,\n    private dependencies?: State,\n  ) {\n    this.host.addController(this);\n  }\n\n  hostConnected() {\n    const _host: any = this.host;\n    const event = new CommandRegisterEvent(\n      this.command,\n      this.dependencies,\n      (params, meta, unsubscribe, resolve, reject) => {\n        const fx = (this.host as any)[this.name](params, meta, this.command);\n        this.unsubscribe = unsubscribe;\n        debugCommand(`[${Command[this.command]}] handled`, params);\n        if (fx instanceof Promise) {\n          fx.then(resolve).catch(reject);\n        } else {\n          resolve();\n        }\n      },\n    );\n\n    _host.state?.registerCommand?.(event) || _host.dispatchEvent(event);\n  }\n\n  hostDisconnected(): void {\n    this.unsubscribe?.();\n  }\n}\n\nexport function createCommand(host: ReactiveElement) {\n  /**\n   * Dispatches a command event\n   * @type {Command}\n   */\n  return (\n    command: Command | keyof typeof Command,\n    params?: CommandParams,\n    meta?: CommandMeta,\n  ) => {\n    const _command = typeof command === \"string\" ? Command[command] : command;\n    debugCommand(`[${Command[_command]}] fired`, params);\n    return host.dispatchEvent(new CommandEvent(_command, params, meta));\n  };\n}\n\nexport type CommandDecorator = {\n  // legacy\n  (\n    proto: Interface<ReactiveElement>,\n    name: PropertyKey,\n    // Note TypeScript requires the return type to be `void|any`\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): void | any;\n\n  // standard\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  <C, V extends (this: C, ...args: any) => any>(\n    value: V,\n    _context: ClassMethodDecoratorContext<C, V>,\n  ): void;\n};\n\nexport function createCommandListener(\n  command: Command,\n  requirements?: State,\n): CommandDecorator {\n  return <C, V extends (this: C, ...args: any) => any>(\n    protoOrValue: ReactiveElement,\n    nameOrContext: PropertyKey | ClassMethodDecoratorContext<C, V>,\n  ) => {\n    const ctor = protoOrValue.constructor as typeof ReactiveElement;\n    ctor.addInitializer((element: ReactiveElement): void => {\n      new EventListener(\n        element,\n        command,\n        nameOrContext as string,\n        requirements,\n      );\n    });\n  };\n}\n","const isIos = (() => {\n  return (\n    [\n      \"iPad Simulator\",\n      \"iPhone Simulator\",\n      \"iPod Simulator\",\n      \"iPad\",\n      \"iPhone\",\n      \"iPod\",\n    ].includes(navigator.platform) ||\n    // iPad on iOS 13 detection\n    (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n  );\n})();\n\nconst getDevice = () => {\n  const ua = navigator?.userAgent;\n  if (!ua) return {};\n\n  const isWebkit = !!ua.match(/WebKit/i);\n  const isMobileSafari = isIos && isWebkit && !ua.match(/CriOS/i);\n\n  return {\n    isIos,\n    isWebkit,\n    isMobileSafari,\n  };\n};\n\nexport const device = getDevice();\n","import { ReactiveElement } from \"lit\";\nimport { Event, Action, State } from \"../types\";\n\nexport type StateAction = {\n  action: Action;\n  params: Record<string, any>;\n  resolve: (value: unknown) => void;\n  reject: (reason?: any) => void;\n};\n\nexport const dispatch = (\n  host: ReactiveElement,\n  action: Action,\n  params?: Partial<State>,\n) =>\n  new Promise((resolve, reject) =>\n    host.dispatchEvent(\n      new CustomEvent<StateAction>(Event.state, {\n        bubbles: true,\n        cancelable: true,\n        composed: true,\n        detail: {\n          action,\n          params,\n          resolve,\n          reject,\n        },\n      }),\n    ),\n  );\n","import { createContext } from \"@lit/context\";\nimport { ReactiveElement } from \"lit\";\nimport { connectConsumer } from \"./connector\";\nimport { StateController } from \"./controller\";\nimport { createCommandListener } from \"./commander\";\nimport { Command, State } from \"../types\";\nimport { device } from \"../helpers/device\";\nexport { dispatch } from \"./dispatcher\";\nexport { createCommand } from \"./commander\";\nexport * as Types from \"../types\";\n\nexport const initialState: State = {\n  isPlaying: false,\n  isInteracted: false,\n  idle: false,\n  canPlay: !device.isIos,\n  cues: [],\n  castActivated: false,\n  played: false,\n  airplayAvailable: Boolean(\n    (window as any).WebKitPlaybackTargetAvailabilityEvent,\n  ),\n  pipAvailable: Boolean(document.pictureInPictureEnabled),\n  ...device,\n};\n\nexport const context = createContext<State>(\"video-state\");\nexport const connect = (field?: keyof State) =>\n  connectConsumer<State>({ context, field });\n\n/**\n * A decorator that creates a command listener.\n * If dependencies are provided, the command will only be executed if all dependencies are met.\n */\nexport const listen = (command: Command, dependencies?: State) =>\n  createCommandListener(command, dependencies);\nexport const createState = (host: ReactiveElement) =>\n  new StateController(host, context, initialState);\n","export const eventCode = (e: KeyboardEvent, ...codes: string[]) => {\n  const code = e.code.toLowerCase();\n  return codes.some((c) => c.toLowerCase() === code);\n};\n\nexport function emit(\n  el: HTMLElement,\n  name: string,\n  detail?: Record<string, unknown>,\n) {\n  const event = new CustomEvent(name, {\n    bubbles: true,\n    cancelable: false,\n    composed: true,\n    detail,\n  });\n  el.dispatchEvent(event);\n  return event;\n}\n","export const isMobile = () => {\n  return window.matchMedia(`(max-width: 640px)`).matches;\n};\n","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport {\n  createPopper,\n  Instance as PopperInstance,\n  Placement,\n} from \"@popperjs/core\";\nimport styles from \"./Video-button.styles.css?inline\";\nimport { closestElement } from \"../../helpers/closest\";\nimport { when } from \"lit/directives/when.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { createCommand, connect } from \"../../state\";\nimport { eventCode } from \"../../helpers/event\";\nimport { isMobile } from \"../../helpers/ismobile\";\n\n@customElement(\"video-button\")\nexport class VideoButton extends LitElement {\n  static styles = unsafeCSS(styles);\n  public command = createCommand(this);\n\n  /**\n   * Specifies the offset distance of the tooltip from the button.\n   */\n  @property({ type: Number, attribute: \"tooltip-offset\" })\n  tooltipOffset = isMobile() ? 30 : 40;\n\n  /**\n   * Determines whether the button should display a tooltip.\n   * If set to `true`, the tooltip will not be displayed.\n   * Defaults to `false`, meaning the tooltip will be shown by default.\n   */\n  @property({ type: Boolean, attribute: \"without-tooltip\" })\n  withoutTooltip = false;\n\n  /**\n   * Specifies the preferred position of the tooltip relative to the button.\n   */\n  @property({ attribute: \"tooltip-position\" })\n  tooltipPosition: Placement = \"top\";\n\n  @connect('isFullscreen')\n  @property({ type: Boolean, attribute: 'is-fullscreen', reflect: true })\n  isFullscreen: Boolean\n\n  @query(\".tooltip\")\n  tooltip: HTMLElement;\n\n  @query(\".menu\")\n  menu: HTMLElement;\n\n  tooltipPopper: PopperInstance;\n  menuPopper: PopperInstance;\n\n  createPopper(element: HTMLElement) {\n    return createPopper(this, element, {\n      placement: this.tooltipPosition,\n      modifiers: [\n        {\n          name: \"flip\",\n          enabled: false,\n        },\n        {\n          name: \"preventOverflow\",\n          options: {\n            boundary: closestElement(\"video-player\", this),\n            padding: 10,\n          },\n        },\n        {\n          name: \"offset\",\n          options: {\n            offset: [0, this.tooltipOffset],\n          },\n        },\n      ],\n    });\n  }\n\n  createTooltip() {\n    if (!this.withoutTooltip && this.tooltip) {\n      this.tooltipPopper = this.createPopper(this.tooltip);\n    }\n  }\n\n  createMenu() {\n    if (this.menu) {\n      this.menuPopper = this.createPopper(this.menu);\n    }\n  }\n\n  destroyTooltip(): void {\n    this.tooltipPopper?.destroy();\n    this.tooltipPopper = undefined;\n  }\n\n  destroyMenu(): void {\n    this.menuPopper?.destroy();\n    this.menuPopper = undefined;\n    this.destroyTooltip();\n  }\n\n  protected firstUpdated(): void {\n    this.addEventListener(\"focus\", this.handleFocus);\n    this.addEventListener(\"blur\", this.handleBlur);\n    this.addEventListener(\"mouseenter\", this.createTooltip);\n    this.addEventListener(\"mouseleave\", this.destroyTooltip);\n  }\n\n  disconnectedCallback(): void {\n    this.destroyTooltip();\n    this.destroyMenu();\n    this.removeEventListener(\"focus\", this.handleFocus);\n    this.removeEventListener(\"blur\", this.handleBlur);\n    this.removeEventListener(\"mouseenter\", this.createTooltip);\n    this.removeEventListener(\"mouseleave\", this.destroyTooltip);\n  }\n\n  handleClick(): void {}\n\n  handleFocus = () => {\n    if (!this.menu) return;\n    // We have to have a small timeout to not mix this event with the click event\n    setTimeout(() => {\n      if (!this.menuPopper) {\n        this.createMenu();\n      }\n    }, 100);\n  };\n\n  handleBlur = () => {\n    this.destroyMenu();\n  };\n\n  handleKeypress = (e: KeyboardEvent) => {\n    if (eventCode(e, \"space\", \"enter\")) {\n      e.stopPropagation();\n      Promise.resolve(() => this.handleClick());\n    }\n  };\n\n  renderContent(): any {\n    return html` <slot></slot> `;\n  }\n\n  renderTooltip(): any {\n    return html` <slot name=\"tooltip\"></slot> `;\n  }\n\n  renderMenu(): any {}\n\n  render() {\n    const content = this.renderContent();\n    const tooltip = this.renderTooltip();\n    const menu = this.renderMenu();\n\n    if (!content) return null;\n\n    return html`\n      <button\n        tabindex=\"0\"\n        part=\"button\"\n        aria-haspopup=${ifDefined(menu && \"menu\")}\n        aria-controls=${ifDefined(menu && \"menu\")}\n        aria-describedby=\"tooltip\"\n        @click=${this.handleClick}\n        @keydown=${this.handleKeypress}\n      >\n        ${content}\n      </button>\n      ${when(\n        !isMobile(),\n        () => html`\n          <div id=\"tooltip\" role=\"tooltip\" class=\"tooltip\" part=\"tooltip\">\n            <div class=\"inner\">${tooltip}</div>\n          </div>\n        `,\n      )}\n      ${when(\n        menu,\n        () => html`\n          <div id=\"menu\" role=\"menu\" class=\"menu\" part=\"menu\">\n            <div class=\"inner\">${menu}</div>\n          </div>\n        `,\n      )}\n    `;\n  }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import{directive as s}from\"../directive.js\";import{UnsafeHTMLDirective as e}from\"./unsafe-html.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t extends e{}t.directiveName=\"unsafeSVG\",t.resultType=2;const o=s(t);export{o as unsafeSVG};\n//# sourceMappingURL=unsafe-svg.js.map\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M2.5 20H4.5C4.63333 20 4.75 19.95 4.85 19.85C4.95 19.75 4.98333 19.6333 4.95 19.5C4.85 18.8667 4.575 18.325 4.125 17.875C3.675 17.425 3.13333 17.15 2.5 17.05C2.36667 17.0167 2.25 17.05 2.15 17.15C2.05 17.25 2 17.3667 2 17.5V19.5C2 19.6333 2.05 19.75 2.15 19.85C2.25 19.95 2.36667 20 2.5 20ZM8 20C8.28333 20 8.51667 19.9 8.7 19.7C8.88333 19.5 8.95833 19.2667 8.925 19C8.70833 17.45 8.05433 16.129 6.963 15.037C5.871 13.9457 4.55 13.2917 3 13.075C2.73333 13.0417 2.5 13.1167 2.3 13.3C2.1 13.4833 2 13.7167 2 14C2 14.2667 2.09167 14.5 2.275 14.7C2.45833 14.9 2.69167 15.0333 2.975 15.1C3.975 15.3 4.82933 15.754 5.538 16.462C6.246 17.1707 6.7 18.025 6.9 19.025C6.96667 19.3083 7.1 19.5417 7.3 19.725C7.5 19.9083 7.73333 20 8 20ZM12 20C12.2833 20 12.521 19.9 12.713 19.7C12.9043 19.5 12.9833 19.2667 12.95 19C12.8333 17.6833 12.496 16.4457 11.938 15.287C11.3793 14.129 10.6583 13.1083 9.775 12.225C8.89167 11.3417 7.871 10.6207 6.713 10.062C5.55433 9.504 4.31667 9.16667 3 9.05C2.73333 9.01667 2.5 9.09567 2.3 9.287C2.1 9.479 2 9.71667 2 10C2 10.2667 2.096 10.5 2.288 10.7C2.47933 10.9 2.71667 11.0167 3 11.05C5.1 11.2833 6.89167 12.1417 8.375 13.625C9.85833 15.1083 10.7167 16.9 10.95 19C10.9833 19.2833 11.096 19.5207 11.288 19.712C11.4793 19.904 11.7167 20 12 20ZM4 4H20C20.55 4 21.021 4.196 21.413 4.588C21.8043 4.97933 22 5.45 22 6V18C22 18.55 21.8043 19.021 21.413 19.413C21.021 19.8043 20.55 20 20 20H16C15.7167 20 15.4793 19.904 15.288 19.712C15.096 19.5207 15 19.2833 15 19C15 18.7167 15.096 18.4793 15.288 18.288C15.4793 18.096 15.7167 18 16 18H20V6H4C4 6.28333 3.90433 6.521 3.713 6.713C3.521 6.90433 3.28333 7 3 7C2.71667 7 2.47933 6.90433 2.288 6.713C2.096 6.521 2 6.28333 2 6C2 5.45 2.196 4.97933 2.588 4.588C2.97933 4.196 3.45 4 4 4Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport styles from \"./Video-chromecast.styles.css?inline\";\nimport { connect, createCommand, dispatch, listen } from \"../../state\";\nimport { Action, Command, State, DRMOptions, KeySystems, MuxParams } from \"../../types\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport _castIcon from \"../../icons/chrome-cast-outline.svg?raw\";\n// import { CastStatus } from '../../types';\nconst castIcon = unsafeSVG(_castIcon);\n\n@customElement(\"video-chromecast\")\nexport class VideoChromecast extends LitElement {\n  static styles = unsafeCSS(styles);\n  public command = createCommand(this);\n  private player: cast.framework.RemotePlayer;\n  private controller: cast.framework.RemotePlayerController;\n\n  @connect(\"src\")\n  src: string;\n\n  @connect(\"title\")\n  title: string;\n\n  @connect(\"castActivated\")\n  @property({ type: Boolean, reflect: true })\n  active: false;\n\n  @connect(\"poster\")\n  poster: string;\n\n  @connect(\"textTracks\")\n  cues: State[\"textTracks\"];\n\n  @connect(\"activeTextTrackId\")\n  activeTextTrackId: string;\n\n  @connect(\"drmOptions\")\n  drmOptions?: DRMOptions;\n\n  @connect(\"muxData\")\n  muxData: MuxParams;\n\n  @state()\n  targetDevise: string;\n\n  @property({ type: String, attribute: \"receiver-application-id\" })\n  receiverApplicationId?: string;\n\n  @listen(Command.togglePlay, { castActivated: true })\n  @listen(Command.play, { castActivated: true })\n  @listen(Command.pause, { castActivated: true })\n  play() {\n    this.controller.playOrPause();\n  }\n\n  @listen(Command.seek, { castActivated: true })\n  seek({ time }: { time: number }) {\n    this.player.currentTime = time;\n    this.controller.seek();\n  }\n\n  @listen(Command.forward, { castActivated: true })\n  forward() {\n    this.player.currentTime = Math.min(\n      this.player.currentTime + 10,\n      this.player.duration,\n    );\n    this.controller.seek();\n  }\n\n  @listen(Command.backward, { castActivated: true })\n  backward() {\n    this.player.currentTime = Math.max(\n      this.player.currentTime - 10,\n      this.player.duration,\n    );\n    this.controller.seek();\n  }\n\n  @listen(Command.toggleMuted, { castActivated: true })\n  @listen(Command.mute)\n  mute() {\n    this.controller?.muteOrUnmute();\n  }\n\n  @listen(Command.setVolume, { castActivated: true })\n  setVolume({ volume }: { volume: number }) {\n    this.player.volumeLevel = volume;\n    this.controller.setVolumeLevel();\n  }\n\n  @listen(Command.increaseVolume, { castActivated: true })\n  increaseVolume() {\n    this.player.volumeLevel = this.player.volumeLevel + 0.1;\n    this.controller.setVolumeLevel();\n  }\n\n  @listen(Command.decreaseVolume, { castActivated: true })\n  decreaseVolume() {\n    this.player.volumeLevel = this.player.volumeLevel - 0.1;\n    this.controller.setVolumeLevel();\n  }\n\n  @listen(Command.enableTextTrack, { castActivated: true })\n  handleCuesChange() {\n    const session =\n      window.cast.framework.CastContext.getInstance().getCurrentSession();\n    const media = session?.getMediaSession && session.getMediaSession();\n\n    if (!media) return;\n\n    const index = this.cues.findIndex((s) => this.activeTextTrackId === s.id);\n    const request = new window.chrome.cast.media.EditTracksInfoRequest([index]);\n\n    media.editTracksInfo(request, void 0, void 0);\n  }\n\n  @listen(Command.requestCast)\n  async loadMedia() {\n    const media = new window.chrome.cast.media.MediaInfo(\n      this.src,\n      \"application/x-mpegurl\",\n    );\n\n    media.metadata = new window.chrome.cast.media.GenericMediaMetadata();\n    media.textTrackStyle = new window.chrome.cast.media.TextTrackStyle();\n    media.textTrackStyle.backgroundColor = \"#00000000\";\n    media.textTrackStyle.edgeColor = \"#00000016\";\n    media.textTrackStyle.edgeType =\n      window.chrome.cast.media.TextTrackEdgeType.DROP_SHADOW;\n    media.textTrackStyle.fontFamily =\n      window.chrome.cast.media.TextTrackFontGenericFamily.SANS_SERIF;\n    media.textTrackStyle.fontScale = 1.0;\n    media.textTrackStyle.foregroundColor = \"#FFFFFF\";\n    media.tracks = this.cues.map((track, i) => {\n      const t = new window.chrome.cast.media.Track(\n        Number(i),\n        window.chrome.cast.media.TrackType.TEXT,\n      );\n\n      t.trackContentId = track.src;\n      t.trackContentType = \"text/vtt\";\n      t.subtype = window.chrome.cast.media.TextTrackType.CAPTIONS;\n      t.name = track.label;\n      t.trackId = Number(i);\n      t.language = track.lang;\n\n      return t;\n    });\n\n    media.metadata.title = this.title;\n    media.metadata.images = [\n      {\n        url: this.poster,\n      },\n    ];\n    media.customData = this.drmOptions ? {\n      \"drm\": {\n        \"licenseUrl\": this.drmOptions[KeySystems.widevine]?.licenseUrl\n      }\n    } : {};\n\n    const request = new window.chrome.cast.media.LoadRequest(media);\n\n    if (this.activeTextTrackId) {\n      const subtitlesLanguageIdx = this.cues.findIndex(\n        ({ id }) => this.activeTextTrackId === id,\n      );\n\n      request.activeTrackIds =\n        subtitlesLanguageIdx !== -1 ? [subtitlesLanguageIdx] : [];\n    }\n\n    request.customData = {\n      ...(this.muxData?.env_key && { \"mux\": { \"envKey\": this.muxData.env_key } })\n    };\n\n    try {\n      await window.cast.framework.CastContext.getInstance().requestSession();\n\n      const session =\n        window.cast.framework.CastContext.getInstance().getCurrentSession();\n\n      await session.loadMedia(request);\n\n      this.targetDevise = this.player?.statusText || \"\";\n    } catch (err) {\n      console.error(err);\n    }\n  }\n\n  connectedCallback(): void {\n    super.connectedCallback();\n\n    if (window.cast) this.initChromeCast();\n    else if (window.chrome) this.loadChromeCastFramework();\n  }\n\n  disconnectedCallback(): void {\n    if (this.controller)\n      Object.values(cast.framework.RemotePlayerEventType).forEach((event) =>\n        this.controller.removeEventListener(event, this.handleCastEvent),\n      );\n\n    super.disconnectedCallback();\n  }\n\n  initChromeCast() {\n    window.cast.framework.CastContext.getInstance().setOptions({\n      receiverApplicationId: this.receiverApplicationId || window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,\n      autoJoinPolicy: window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED,\n      resumeSavedSession: false,\n    });\n\n    this.player = new window.cast.framework.RemotePlayer();\n    this.controller = new window.cast.framework.RemotePlayerController(\n      this.player,\n    );\n\n    Object.values(cast.framework.RemotePlayerEventType).forEach((event) =>\n      this.controller.addEventListener(event, this.handleCastEvent),\n    );\n\n    dispatch(this, Action.setCastStatus, { castAvailable: true });\n  }\n\n  loadChromeCastFramework() {\n    const existingScript = document.getElementById(\n      \"uscreen-player-chromecast-framework\",\n    );\n    if (existingScript) return;\n\n    const script = document.createElement(\"script\");\n    script.src =\n      \"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1\";\n    script.id = \"uscreen-player-chromecast-framework\";\n    script.addEventListener(\"load\", () => this.handleChromeCastLoad(0));\n    document.head.appendChild(script);\n  }\n\n  handleChromeCastLoad = (tries: number): void => {\n    if (window.chrome?.cast?.isAvailable) {\n      this.initChromeCast();\n    } else {\n      if (tries++ > 20) {\n        dispatch(this, Action.setCastStatus, { castAvailable: false });\n      } else {\n        setTimeout(this.handleChromeCastLoad, 250, tries);\n      }\n    }\n  };\n\n  handleCastEvent = ({\n    field,\n    value,\n  }: cast.framework.RemotePlayerChangedEvent) => {\n    switch (field) {\n      case \"displayName\":\n        this.targetDevise = value;\n        break;\n      case \"isConnected\":\n        dispatch(this, Action.setCastStatus, { castActivated: value });\n        break;\n      case \"playerState\":\n        dispatch(this, value === \"PLAYING\" ? Action.play : Action.pause);\n        break;\n      case \"currentTime\":\n        dispatch(this, Action.updateTime, { currentTime: value });\n        break;\n    }\n  };\n\n  render() {\n    return html` ${castIcon} <slot>Casting to</slot> \"${this.targetDevise}\" `;\n  }\n}\n","import { LitElement, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { context } from \"../../state\";\nimport { State } from \"../../types\";\nimport { ContextEvent } from \"@lit/context\";\n\nconst comparatorsRegexp = /^(\\w+)\\s*([><]=?|==|!=)\\s*(\\w+)$/;\nconst operatorRegexp = /(\\&\\&|\\|\\|)/g;\n\ntype Comparator = \">\" | \">=\" | \"<=\" | \"<\" | \"==\" | \"!=\";\ntype Operator = \"&&\" | \"||\";\n\ntype Query = {\n  key: keyof State;\n  compare: (v: any) => boolean;\n};\n\nconst typeValue = (value: any) => {\n  try {\n    return JSON.parse(value);\n  } catch (e) {\n    return value;\n  }\n};\n\nconst createCompare =\n  ({ comparator, value: needed }: { comparator: Comparator; value: any }) =>\n  (value: any) =>\n    ({\n      \">\": value > needed,\n      \">=\": value >= needed,\n      \"<\": value < needed,\n      \"<=\": value <= needed,\n      \"==\": value == needed,\n      \"!=\": value != needed,\n    })[comparator];\n\n@customElement(\"video-condition\")\nexport class VideoCondition extends LitElement {\n  /**\n   * A query string specifying conditions to be evaluated against the application state.\n   * The query string consists of one or more comparison expressions separated by logical operators (&& or ||).\n   * Each comparison expression follows the pattern: \"key comparator value\", where:\n   * - key: The key of a property in the application state to be compared.\n   * - comparator: The comparison operator (>, >=, <, <=, ==, or !=).\n   * - value: The value to compare against the property in the application state.\n   * Examples of valid comparison expressions:\n   *   - \"isActive == true\"\n   *   - \"volume >= 50\"\n   *   - \"currentTime < 100\"\n   *   - \"isMuted != false\"\n   * Multiple comparison expressions can be combined using logical operators:\n   *   - \"isActive == true && volume >= 50\"\n   *   - \"currentTime < 100 || isMuted != false\"\n   */\n  @property()\n  query?: string;\n\n  /**\n   * Indicates whether the conditions specified by the query are currently matching the state of the application.\n   * This property reflects the result of evaluating the query against the application state.\n   * If the conditions specified in the query match the state, this property is set to true; otherwise, it is false.\n   */\n  @property({ type: Boolean, reflect: true, attribute: \"matching\" })\n  isMatching: boolean;\n\n  _queries: Query[];\n  _operators: Operator[];\n  _connected = false;\n  _unsubscribe: any;\n\n  connectedCallback(): void {\n    super.connectedCallback();\n    this._operators = this.query.match(operatorRegexp) as Operator[];\n    this._queries = this.query\n      .split(operatorRegexp)\n      .map((string): Query => {\n        const match = string.trim().match(comparatorsRegexp);\n        if (!match) return undefined;\n\n        return {\n          key: match[1] as keyof State,\n          compare: createCompare({\n            comparator: match[2] as Comparator,\n            value: typeValue(match[3]),\n          }),\n        };\n      })\n      .filter((i) => i);\n\n    this.connectContext();\n  }\n\n  disconnectedCallback(): void {\n    this._unsubscribe?.();\n  }\n\n  connectContext() {\n    const event = new ContextEvent(\n      context,\n      (value, unsubscribe) => {\n        if (this._unsubscribe && this._unsubscribe !== unsubscribe) {\n          this._unsubscribe();\n        }\n\n        this._unsubscribe = unsubscribe;\n        this.isMatching = this._queries.reduce(\n          (acc, { key, compare }, index) => {\n            const isEq = compare(value[key]);\n            return !index || this._operators[index - 1] === \"||\"\n              ? acc || isEq\n              : acc && isEq;\n          },\n          false,\n        );\n      },\n      true,\n    );\n\n    this.dispatchEvent(event);\n    Promise.resolve().then(() => {\n      if (!this._connected) this.dispatchEvent(event);\n    });\n  }\n\n  render() {\n    return html`\n      <slot name=${this.isMatching ? \"true\" : \"false\"}></slot>\n      <slot></slot>\n    `;\n  }\n}\n","export const getBufferedEnd = (video: HTMLVideoElement) => {\n  const { buffered, currentTime } = video;\n  let match = 0;\n  let i = 0;\n\n  if (!buffered) return match;\n\n  while (!match && i < buffered.length) {\n    const start = buffered.start(i);\n    const end = buffered.end(i);\n\n    i++;\n    if (end > currentTime && (currentTime > start || !currentTime)) {\n      match = end;\n    }\n  }\n\n  return match;\n};\n","import { MuxOptions, MuxParams } from \"../types\";\n\nexport const connectMuxData = async (\n  element: HTMLElement,\n  data: MuxParams,\n  options?: MuxOptions,\n) => {\n  const mux = await import(\"mux-embed\");\n  mux.default.monitor(element, {\n    ...options,\n    data: {\n      ...data,\n      player_version: options?.Hls ? \"HLS\" : \"Native\",\n    },\n  });\n};\n","import { DRMSystemConfiguration } from \"../types\";\n\nexport const initFairPlayDRM = async (videoElement: HTMLVideoElement, fairPlayOptions: DRMSystemConfiguration) => {\n  const certificateUrl = fairPlayOptions.certificateUrl;\n  const licenseServerUrl = fairPlayOptions.licenseUrl;\n\n  const fairPlayCertificate = await loadFairPlayCertificate(certificateUrl);\n\n  videoElement.addEventListener('encrypted', fairplayEncryptedCallback(fairPlayCertificate, licenseServerUrl));\n};\n\nconst loadFairPlayCertificate = async (certificateUrl: string) => {\n  let response = await fetch(certificateUrl);\n  return response.arrayBuffer();\n};\n\nconst fairplayEncryptedCallback = (fairPlayCertificate: ArrayBuffer, licenseServerUrl: string) => {\n  return async (event: MediaEncryptedEvent) => {\n    const video = event.target as HTMLVideoElement;\n    const initDataType = event.initDataType;\n\n    if (!video.mediaKeys) {\n      let access = await navigator.requestMediaKeySystemAccess(\n        \"com.apple.fps\",\n        [\n          {\n            initDataTypes: [initDataType],\n            videoCapabilities: [\n              { contentType: \"application/vnd.apple.mpegurl\" },\n            ],\n          },\n        ],\n      );\n\n      let keys = await access.createMediaKeys();\n\n      await keys.setServerCertificate(fairPlayCertificate);\n      await video.setMediaKeys(keys);\n    }\n\n    let initData = event.initData;\n\n    let session = video.mediaKeys.createSession();\n    session.generateRequest(initDataType, initData);\n    let message = await new Promise<MediaKeySessionEventMap[\"message\"]>((resolve) => {\n      session.addEventListener(\"message\", resolve, { once: true });\n    });\n\n    let response = await getLicenseResponse(message, licenseServerUrl);\n    await session.update(response);\n    return session;\n  };\n};\n\nconst getLicenseResponse = async (event: MediaKeySessionEventMap[\"message\"], licenseServerUrl: string) => {\n  let licenseResponse = await fetch(licenseServerUrl, {\n    method: 'POST',\n    headers: new Headers({'Content-type': 'application/octet-stream'}),\n    body: event.message,\n  });\n  return licenseResponse.arrayBuffer();\n};\n","import { State } from \"../types\";\n\nexport type StorageValue = Partial<\n  Pick<\n    State,\n    | \"isMuted\"\n    | \"volume\"\n    | \"activeQualityLevel\"\n    | \"activeTextTrackId\"\n    | \"playbackRate\"\n    | \"activeAudioTrackId\"\n  >\n>;\n\nexport type StorageProvider = {\n  get: () => StorageValue;\n  set: (val: StorageValue) => void;\n  clear: () => void;\n};\n\nexport const createProvider = (key?: string): StorageProvider => {\n  const Provider: StorageProvider = {\n    get: () => {\n      if (!key) return {};\n      const item = window.localStorage.getItem(key);\n      return item ? JSON.parse(item) : {};\n    },\n    set: (val) => {\n      if (!key) return;\n      window.localStorage.setItem(key, JSON.stringify(val));\n    },\n    clear: () => {\n      if (!key) return;\n      window.localStorage.removeItem(key);\n    },\n  };\n\n  return Provider;\n};\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M6.75742 3.17676C5.99832 2.70546 5 3.23185 5 4.1034V19.8966C5 20.7681 5.99832 21.2945 6.75742 20.8232L19.4762 12.9266C20.1746 12.493 20.1746 11.507 19.4762 11.0734L6.75742 3.17676Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M6 4C5.44772 4 5 4.44772 5 5V19C5 19.5523 5.44772 20 6 20H8C8.55228 20 9 19.5523 9 19V5C9 4.44772 8.55228 4 8 4H6Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M16 4C15.4477 4 15 4.44772 15 5V19C15 19.5523 15.4477 20 16 20H18C18.5523 20 19 19.5523 19 19V5C19 4.44772 18.5523 4 18 4H16Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport playIcon from \"../../icons/play-solid.svg?raw\";\nimport pauseIcon from \"../../icons/pause-solid.svg?raw\";\n\nconst icons = {\n  play: unsafeSVG(playIcon),\n  pause: unsafeSVG(pauseIcon),\n};\n\n@customElement(\"video-play-button\")\nexport class PlayButton extends VideoButton {\n  @connect(\"isPlaying\")\n  isPlaying: boolean;\n\n  override handleClick() {\n    this.command(Types.Command.togglePlay);\n  }\n\n  override renderContent() {\n    return html`\n      <slot name=\"icon:${this.isPlaying ? \"play\" : \"pause\"}\">\n        ${this.isPlaying ? icons.pause : icons.play}\n      </slot>\n    `;\n  }\n\n  override renderTooltip() {\n    return html`\n      <slot name=\"tooltip:${this.isPlaying ? \"pause\" : \"play\"}\">\n        ${this.isPlaying ? \"Pause\" : \"Play\"}\n      </slot>\n    `;\n  }\n}\n","export const getCueText = (element: Node) => {\n  const wrapper = document.createElement(\"div\");\n  wrapper.appendChild(element);\n  return wrapper.innerHTML.split(/\\n/gm);\n};\n\nexport const mapCueListToState = (cueList: TextTrackCueList) =>\n  Array.from(cueList)\n    .map((cue: VTTCue) => cue.getCueAsHTML())\n    .flatMap(getCueText);\n","function debounce<T extends (...args: any[]) => void>(func: T, wait: number): (...args: Parameters<T>) => void {\n  let timeout: ReturnType<typeof setTimeout> | null;\n\n  return function(...args: Parameters<T>): void {\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n    timeout = setTimeout(() => {\n      func(...args);\n    }, wait);\n  };\n}\n\nexport default debounce;","import { dispatch, Types } from \"../../state\";\nimport { VideoContainer } from \"./Video-container.component\";\nimport { mapCueListToState } from \"../../helpers/cue\";\nimport debounce from \"../../helpers/debounce\"\nimport type Hls from \"hls.js\";\nimport _debug from \"debug\";\nimport { MediaPlaylist } from \"hls.js\";\n\nconst subtitlesDebug = _debug(\"player:subtitles\");\n\nconst buildTrackId = (track: TextTrack) => `${track.label}-${track.language}`;\nconst buildHlsTrackId = (track: MediaPlaylist) => `${track.name}-${track.lang}`;\n\n/**\n * Util to manage vide text tracks\n */\nconst videoTextTtracksManager = (video: HTMLVideoElement, hls: Hls) => {\n  const trackElements = Array.from(video.querySelectorAll(\"track\"));\n  const langToSrcMapping = trackElements.reduce<Record<string, string>>(\n    (acc, t) => {\n      acc[t.srclang] = t.src;\n      return acc;\n    },\n    {},\n  );\n\n  const isTrackNative = (track: TextTrack) =>\n    !!trackElements.find(\n      (t) => t.label === track.label && t.srclang === track.language,\n    );\n\n  const getTracks = (): TextTrack[] => {\n    const textTracks = Array.from(video.textTracks);\n    return textTracks\n  };\n\n  const tracksToStoreState = () => {\n    const pageLanguage = document.documentElement.lang;\n    const pageLanguageCode = pageLanguage.split('-')?.[0];\n\n    return {\n      textTracks: getTracks().map((t) => ({\n        src: langToSrcMapping[t.language] || \"\",\n        lang: t.language || t.label,\n        label: t.label,\n        id: buildTrackId(t),\n      })).sort((a, b) => {\n        if (pageLanguageCode) {\n          const aMatches = a.lang === pageLanguageCode;\n          const bMatches = b.lang === pageLanguageCode;\n          if (aMatches && !bMatches) return -1;\n          if (!aMatches && bMatches) return 1;\n        }\n\n        return a.label.localeCompare(b.label, undefined, { sensitivity: 'base' })\n      })\n    }\n  };\n\n  const showTracks = (trackId: string) => {\n    if (hls) {\n      hls.subtitleTracks.forEach((t) => {\n        if (buildHlsTrackId(t) === trackId) {\n          hls.subtitleTrack = t.id;\n          hls.subtitleDisplay = true;\n        }\n      });\n    }\n    getTracks().forEach((t) => {\n      if (buildTrackId(t) === trackId) {\n        t.mode = \"hidden\";\n      } else {\n        t.mode = \"disabled\";\n      }\n    });\n  };\n\n  const removeNativeTextTracks = () => {\n    trackElements.forEach(t => t.remove())\n  }\n\n  const hasNonNative = () => getTracks().some(t => !isTrackNative(t))\n\n  return {\n    getTracks,\n    tracksToStoreState,\n    showTracks,\n    isTrackNative,\n    removeNativeTextTracks,\n    hasNonNative\n  };\n};\n\nexport const subtitlesController = (\n  host: VideoContainer,\n  video: HTMLVideoElement,\n  hls: Hls,\n  defaultTextTrackId?: string,\n) => {\n  if (hls) {\n    // Disable subtitles by default\n    hls.subtitleTrack = -1;\n    hls.subtitleDisplay = false;\n  }\n\n  let activeTextTrackId =   defaultTextTrackId;\n\n  const tracksManager = videoTextTtracksManager(video, hls);\n\n  if (tracksManager.hasNonNative()) {\n    tracksManager.removeNativeTextTracks()\n  }\n\n\n  const onCueChange = (event: Event & { target: TextTrack }) => {\n    subtitlesDebug(\n      \"CUE CHANGE\",\n      event.target.label,\n      event.target.kind,\n      event.target.mode,\n    );\n    const targetTrackId = buildTrackId(event.target)\n\n    if (event.target.mode === \"showing\" && targetTrackId !== activeTextTrackId) {\n      activeTextTrackId = targetTrackId;\n      dispatch(host, Types.Action.selectTextTrack, {\n        activeTextTrackId: targetTrackId,\n      });\n    }\n\n    if (targetTrackId === activeTextTrackId) {\n      const cues = mapCueListToState(event.target.activeCues);\n      dispatch(host, Types.Action.cues, { cues });\n    }\n  };\n\n  tracksManager.getTracks().forEach((t) => {\n    t.oncuechange = onCueChange;\n  });\n\n  tracksManager.showTracks(activeTextTrackId);\n\n  const updateTracksListSate = debounce(() => {\n    dispatch(host, Types.Action.update, tracksManager.tracksToStoreState());\n  }, 100)\n\n  updateTracksListSate()\n\n  const onTextTrackAdded = (data: TrackEvent) => {\n    subtitlesDebug(\n      \"TRACK ADDED\",\n      data.track.label,\n      data.track.language,\n      data.track.kind,\n    );\n    if (!tracksManager.isTrackNative(data.track)) {\n      tracksManager.removeNativeTextTracks()\n      data.track.oncuechange = onCueChange;\n      tracksManager.showTracks(activeTextTrackId);\n      updateTracksListSate()\n    }\n  };\n\n  video.textTracks.addEventListener(\"addtrack\", onTextTrackAdded);\n\n  return {\n    enableTextTrack: (trackId: string) => {\n      activeTextTrackId = trackId;\n      tracksManager.showTracks(activeTextTrackId);\n      const activeTrack = tracksManager\n        .getTracks()\n        .find((t) => buildTrackId(t) === activeTextTrackId);\n      if (activeTrack && activeTrack.activeCues) {\n        dispatch(host, Types.Action.cues, {\n          cues: mapCueListToState(activeTrack.activeCues),\n        });\n      }\n    },\n  };\n};\n\nexport type SubtitlesController = ReturnType<typeof subtitlesController>;\n","import { State } from \"../../types\";\n\nexport const sourcesController = (video: HTMLVideoElement) => {\n  const sources = Array.from(video.querySelectorAll(\"source\"));\n\n  const supportedSource = sources.find((s) => video.canPlayType(s.type));\n\n  const activeSource = supportedSource || sources[0];\n\n  return {\n    allSources: (): State[\"sources\"] =>\n      sources.map((s) => ({\n        type: s.type,\n        src: s.src || s.getAttribute(\"data-src\"),\n      })),\n    isSourceSupported: () => !!supportedSource,\n    getSrc: () => activeSource.src || activeSource.getAttribute(\"data-src\"),\n    enableSource: () => {\n      activeSource.src =\n        activeSource.src || activeSource.getAttribute(\"data-src\");\n    },\n    isLazy: () => !activeSource.src,\n  };\n};\n\nexport type SourcesController = ReturnType<typeof sourcesController>;\n","import { VideoContainer } from \"../Video-container.component\";\nimport debounce from \"../../../helpers/debounce\"\nimport { dispatch, Types } from \"../../../state\"\nimport type { AudiosController, AudioTrack, VideoElementWithAudioTracks } from \"./types\"\nimport _debug from \"debug\";\n\nconst audiosDebug = _debug(\"player:audios\");\n\nconst buildNativeAudioTrackId = (track: AudioTrack) => `${track.label}-${track.language}`\n\nexport const nativeController = (host: VideoContainer, video: VideoElementWithAudioTracks, activeAudioTrackId?: string): AudiosController => {\n  const enableAudioTrack = (id: string) => {\n    const newActiveTrack = Array.from(video.audioTracks).find(t => buildNativeAudioTrackId(t) === id)\n\n    if (newActiveTrack) {\n      for (let i = 0; i < video.audioTracks.length; i++) {\n        video.audioTracks[i].enabled = buildNativeAudioTrackId(video.audioTracks[i]) === id\n      }\n      audiosDebug('AUDIO TRACK ENABLED', id)\n    }\n\n  }\n  \n  const onTrackAdded = debounce(() => {\n    const audioTracks = Array.from(video.audioTracks)\n\n    dispatch(host, Types.Action.update, {\n      audioTracks: audioTracks.map((track) => ({\n        label: track.label,\n        lang: track.language,\n        id: buildNativeAudioTrackId(track)\n      })),\n      activeAudioTrackId: buildNativeAudioTrackId(audioTracks.find(t => t.enabled) || audioTracks[0])\n    })\n\n    audioTracks.forEach(t => {\n      audiosDebug('AUDIO TRACK ADDED', t.label, t.language, t.enabled)\n    })\n\n    if (activeAudioTrackId) {\n      enableAudioTrack(activeAudioTrackId)\n    }\n  }, 100)\n\n  const onTracksChanged = debounce(() => {\n    const audioTracks = Array.from(video.audioTracks)\n    dispatch(host, Types.Action.update, {\n      activeAudioTrackId: buildNativeAudioTrackId(audioTracks.find(t => t.enabled) || audioTracks[0])\n    })\n  }, 100)\n\n  video.audioTracks.addEventListener('addtrack', onTrackAdded)\n  video.audioTracks.addEventListener('change', onTracksChanged)\n\n  return {\n    enableAudioTrack\n  }\n}\n","import { VideoContainer } from \"../Video-container.component\";\nimport type Hls from \"hls.js\";\nimport type { MediaPlaylist } from \"hls.js\";\nimport { dispatch, Types } from \"../../../state\";\nimport type { AudiosController } from \"./types\";\nimport _debug from \"debug\";\n\nconst audiosDebug = _debug(\"player:audios\");\n\nconst buildHlsAudioTrackId = (track: MediaPlaylist) => `${track.name}-${track.lang}`\n\nexport const hlsController = (host: VideoContainer, hls: Hls, activeAudioTrackId?: string): AudiosController => {\n  const enableAudioTrack = (id: string) => {\n    const newHlsTrackId = hls.audioTracks.find(t => buildHlsAudioTrackId(t) === id)?.id\n    if (typeof newHlsTrackId === 'number') {\n      hls.audioTrack = newHlsTrackId\n      dispatch(host, Types.Action.update, {\n        activeAudioTrackId: id\n      })\n      audiosDebug('AUDIO TRACK ENABLED', id)\n    }\n  }\n\n  if (hls.audioTracks.length > 0) {\n    dispatch(host, Types.Action.update, {\n      audioTracks: hls.audioTracks.map((track) => ({\n        label: track.name,\n        lang: track.lang,\n        id: buildHlsAudioTrackId(track)\n      })),\n      activeAudioTrackId: buildHlsAudioTrackId(hls.audioTracks.find(t => t.id === hls.audioTrack) || hls.audioTracks[0])\n    })\n\n    hls.audioTracks.forEach(t => {\n      audiosDebug('AUDIO TRACK ADDED', t.id, t.name, t.lang)\n    })\n\n    if (activeAudioTrackId) {\n      enableAudioTrack(activeAudioTrackId)\n    }\n  }\n\n  return {\n    enableAudioTrack\n  }\n}\n","import { nativeController } from \"./native\";\nimport { hlsController } from \"./hls\";\nimport type { AudiosController, VideoElementWithAudioTracks } from \"./types\";\nimport type { VideoContainer } from \"../Video-container.component\";\nimport type Hls from \"hls.js\";\n\nexport const audiosController = (host: VideoContainer, video: HTMLVideoElement, hls?: Hls, activeAudioTrackId?: string): AudiosController => {\n  if (hls) {\n    return hlsController(host, hls, activeAudioTrackId)\n  } else {\n    return nativeController(host, video as VideoElementWithAudioTracks, activeAudioTrackId)\n  }\n}\n","import { connect, createCommand, dispatch, listen, Types } from \"../../state\";\nimport { CommandParams } from \"../../state/events\";\nimport { State } from \"../../types\";\nimport { unsafeCSS, LitElement, html } from \"lit\";\nimport {\n  customElement,\n  eventOptions,\n  queryAssignedElements,\n  property,\n} from \"lit/decorators.js\";\nimport styles from \"./Video-container.styles.css?inline\";\nimport type Hls from \"hls.js\";\nimport { getBufferedEnd } from \"../../helpers/buffer\";\nimport { connectMuxData } from \"../../helpers/mux\";\nimport { initFairPlayDRM } from \"../../helpers/drm\";\nimport { createProvider, StorageProvider } from \"../../helpers/storage\";\nimport { MuxParams, DRMOptions, KeySystems } from \"../../types\";\nimport { when } from \"lit/directives/when.js\";\nimport \"../buttons/Play\";\nimport { subtitlesController, SubtitlesController } from \"./subtitles\";\nimport { sourcesController, SourcesController } from \"./sources\";\nimport { audiosController } from \"./audios\";\nimport type { AudiosController } from \"./audios/types\";\n\nconst INIT_NATIVE_HLS_RE = /^((?!chrome|android).)*safari/i;\n\n// In Safari on live streams video.duration = Infinity\nconst getVideoDuration = (video: HTMLVideoElement): number => {\n  if (video.duration && video.duration !== Infinity) {\n    return video.duration;\n  }\n  if (video.seekable.length > 0) {\n    return video.seekable.end(0);\n  }\n  return Infinity;\n};\n\n/**\n * @slot - Video-container main content\n * */\n@customElement(\"video-container\")\nexport class VideoContainer extends LitElement {\n  static styles = unsafeCSS(styles);\n  public command = createCommand(this);\n  private subtitles: SubtitlesController;\n  private sources: SourcesController;\n  private audios: AudiosController;\n\n  hls: Hls;\n  initTime: number;\n\n  @queryAssignedElements({ selector: \"video\", flatten: true })\n  videos: HTMLVideoElement[];\n\n  @connect(\"poster\")\n  poster: string;\n\n  @connect(\"title\")\n  title: string;\n\n  @connect(\"played\")\n  played: boolean;\n\n  @connect(\"canPlay\")\n  canPlay: boolean;\n\n  @connect(\"muxData\")\n  muxData: MuxParams;\n\n  @connect(\"castActivated\")\n  castActivated: string;\n\n  @connect(\"isSourceSupported\")\n  isSourceSupported: false;\n\n  @connect(\"live\")\n  live: boolean;\n\n  @connect(\"drmOptions\")\n  drmOptions?: DRMOptions;\n\n  /**\n   * A unique identifier used for storing and retrieving user preferences related to video playback.\n   * These preferences include volume level, selected quality level, active text track, playback rate, and mute status.\n   * When provided, these preferences are stored in the browser's local storage to maintain user settings across sessions.\n   */\n  @property({ type: String, attribute: \"storage-key\" })\n  storageKey: string;\n\n  _storageProvider: StorageProvider;\n  connectedCallback() {\n    super.connectedCallback();\n    this._storageProvider = createProvider(this.storageKey);\n  }\n\n  @listen(Types.Command.play, { canPlay: true, castActivated: false })\n  async play() {\n    try {\n      await this.videos[0].play();\n    } catch (e) {\n      if (e.toString().includes(\"source\")) {\n        this.command(Types.Command.initCustomHLS);\n      }\n      dispatch(this, Types.Action.update, { isPlaying: false, played: false });\n      throw e;\n    }\n  }\n\n  @listen(Types.Command.pause)\n  pause() {\n    return this.videos[0].pause();\n  }\n\n  @listen(Types.Command.togglePlay, { castActivated: false })\n  togglePlay() {\n    return this.videos[0].paused ? this.play() : this.pause();\n  }\n\n  @listen(Types.Command.seek, { canPlay: true })\n  seek({ time }: { time: number }) {\n    const [video] = this.videos;\n    video.currentTime = time;\n    if (video.paused && !this.castActivated) this.play();\n    dispatch(this, Types.Action.live, {\n      live: false,\n    });\n  }\n\n  @listen(Types.Command.forward)\n  forward() {\n    this.seek({\n      time: Math.min(\n        this.videos[0].currentTime + 10,\n        getVideoDuration(this.videos[0]),\n      ),\n    });\n  }\n\n  @listen(Types.Command.backward)\n  backward() {\n    this.seek({\n      time: Math.max(this.videos[0].currentTime - 10, 0),\n    });\n  }\n\n  @listen(Types.Command.mute)\n  mute() {\n    this.videos[0].muted = true;\n  }\n\n  @listen(Types.Command.toggleMuted)\n  toggleMuted() {\n    this.videos[0].muted ? this.unmute() : this.mute();\n  }\n\n  @listen(Types.Command.init, {\n    isAutoplay: true,\n    isMuted: true,\n    isInteracted: true,\n  })\n  @listen(Types.Command.unmute)\n  unmute() {\n    this.videos[0].muted = false;\n  }\n\n  @listen(Types.Command.setVolume)\n  setVolume({ volume }: { volume: number }) {\n    this.videos[0].muted = false;\n    this.videos[0].volume = Math.min(1, Math.max(0, volume));\n  }\n\n  @listen(Types.Command.increaseVolume)\n  increaseVolume() {\n    this.setVolume({\n      volume: this.videos[0].volume + 0.1,\n    });\n  }\n\n  @listen(Types.Command.decreaseVolume)\n  decreaseVolume() {\n    this.setVolume({\n      volume: this.videos[0].volume - 0.1,\n    });\n  }\n\n  @listen(Types.Command.live, { canPlay: true, initialized: true })\n  enableLiveMode() {\n    dispatch(this, Types.Action.live, { live: true });\n    if (this.played) {\n      window.requestAnimationFrame(() => {\n        const seekable = this.videos[0].seekable;\n        const end = seekable?.length ? seekable.end(0) - 1 : 999999;\n        this.videos[0].currentTime = end;\n        this.play();\n      });\n    }\n  }\n\n  @listen(Types.Command.enableTextTrack)\n  enableTextTrack({ trackId }: { trackId: string }) {\n    dispatch(this, Types.Action.selectTextTrack, {\n      activeTextTrackId: trackId,\n    });\n    this.subtitles.enableTextTrack(trackId);\n  }\n\n  @listen(Types.Command.enableAudioTrack)\n  enableAudioTrack({ trackId }: { trackId: string }) {\n    this.audios.enableAudioTrack(trackId);\n  }\n\n  @listen(Types.Command.setPlaybackRate, { canPlay: true })\n  setPlaybackRate({ playbackRate }: { playbackRate: number }) {\n    this.videos[0].playbackRate = this.videos[0].defaultPlaybackRate =\n      playbackRate;\n  }\n\n  @listen(Types.Command.requestAirplay)\n  requestAirplay() {\n    (this.videos[0] as any).webkitShowPlaybackTargetPicker();\n  }\n\n  @listen(Types.Command.setQualityLevel, { customHLS: true })\n  setHLSQualityLevel({ level }: { level: number }) {\n    const qualityLevelIdx = this.hls.levels.findIndex(\n      ({ height }) => height === level,\n    );\n    this.hls.nextLevel = qualityLevelIdx;\n    // We need to update state here as well, as HLS.Events.LEVEL_UPDATED sometimes not triggered\n    dispatch(this, Types.Action.setQualityLevel, {\n      activeQualityLevel: qualityLevelIdx === -1 ? -1 : level,\n    });\n  }\n\n  @listen(Types.Command.togglePip)\n  togglePip() {\n    if (!document.pictureInPictureElement) {\n      this.videos[0].requestPictureInPicture();\n    } else {\n      document.exitPictureInPicture();\n    }\n  }\n\n  @listen(Types.Command.init, { isSourceSupported: true })\n  initNative() {\n    if (this.muxData) {\n      connectMuxData(this.videos[0], {\n        ...this.muxData,\n        player_init_time: this.initTime,\n      });\n    }\n\n    if (this.drmOptions?.[KeySystems.fps]) {\n      initFairPlayDRM(this.videos[0], this.drmOptions[KeySystems.fps]);\n    }\n\n    // Init source after the video events are set\n    this.sources.enableSource();\n  }\n\n  @listen(Types.Command.initCustomHLS)\n  @listen(Types.Command.init, { isSourceSupported: false })\n  async initHls() {\n    const HLS = (await import(\"hls.js\")).default;\n\n    if (!HLS.isSupported()) return;\n\n    this.hls?.destroy();\n\n    this.hls = new HLS({\n      maxMaxBufferLength: 30,\n      enableWorker: true,\n      initialLiveManifestSize: 2,\n      liveSyncDurationCount: 5,\n      fragLoadingMaxRetry: 10,\n      manifestLoadingMaxRetry: 2,\n      levelLoadingMaxRetry: 4,\n      backBufferLength: navigator.userAgent.match(/Android/i) ? 0 : 30,\n      liveDurationInfinity: true,\n      emeEnabled: !!this.drmOptions,\n      drmSystems: this.drmOptions\n        ? {\n            \"com.apple.fps\": {\n              licenseUrl: this.drmOptions[KeySystems.fps]?.licenseUrl,\n              serverCertificateUrl:\n                this.drmOptions[KeySystems.fps]?.certificateUrl,\n            },\n            \"com.widevine.alpha\": {\n              licenseUrl: this.drmOptions[KeySystems.widevine]?.licenseUrl,\n            },\n            \"com.microsoft.playready\": {\n              licenseUrl: this.drmOptions[KeySystems.playready]?.licenseUrl,\n            },\n          }\n        : {},\n    });\n\n    if (this.muxData)\n      await connectMuxData(\n        this.videos[0],\n        { ...this.muxData, player_init_time: this.initTime },\n        { Hls: HLS, hlsjs: this.hls },\n      );\n\n    this.hls.on(HLS.Events.LEVEL_LOADED, () => {\n      dispatch(this, Types.Action.canPlay);\n    });\n\n    this.hls.on(HLS.Events.ERROR, (_, error) => {\n      if (error.fatal && error.type === HLS.ErrorTypes.NETWORK_ERROR) {\n        this.command(Types.Command.error, {\n          code: MediaError.MEDIA_ERR_NETWORK,\n        });\n      }\n    });\n\n    this.hls.on(\n      HLS.Events.LEVEL_UPDATED,\n      (_: unknown, { level }: { level: number }) => {\n        dispatch(this, Types.Action.setQualityLevel, {\n          activeQualityLevel: this.hls.levels[level]?.height || -1,\n        });\n      },\n    );\n\n    this.hls.on(\n      HLS.Events.MANIFEST_PARSED,\n      (_: unknown, { levels }: { levels: unknown[] }) => {\n        dispatch(this, Types.Action.setLevels, {\n          qualityLevels: levels.map((level: { height: string }) => ({\n            name: level.height || \"auto\",\n          })),\n        });\n        const { activeQualityLevel } = this._storageProvider.get();\n        if (activeQualityLevel >= 0) {\n          const qualityLevelIdx = levels.findIndex(\n            ({ height }) => height === activeQualityLevel,\n          );\n          if (qualityLevelIdx >= 0) {\n            this.hls.nextLevel = qualityLevelIdx;\n            dispatch(this, Types.Action.setQualityLevel, {\n              activeQualityLevel,\n            });\n          }\n        }\n\n        this.subtitles = subtitlesController(\n          this,\n          this.videos[0],\n          this.hls,\n          this._storageProvider.get().activeTextTrackId,\n        );\n\n        window.requestAnimationFrame(() => {\n          this.audios = audiosController(\n            this,\n            this.videos[0],\n            this.hls,\n            this._storageProvider.get().activeAudioTrackId,\n          );\n        })\n      },\n    );\n\n    this.sources.enableSource();\n    this.hls.loadSource(this.sources.getSrc());\n    this.hls.attachMedia(this.videos[0]);\n\n    dispatch(this, Types.Action.update, { customHLS: true });\n  }\n\n  @eventOptions({ capture: true })\n  handleVideoEvent(e: Event & { target: HTMLVideoElement }) {\n    const type = e.type;\n    const video = this.videos[0];\n\n    switch (type) {\n      case \"play\":\n        dispatch(this, Types.Action.play);\n        break;\n      case \"pause\":\n        dispatch(this, Types.Action.pause);\n        break;\n      case \"timeupdate\":\n        dispatch(this, Types.Action.updateTime, {\n          currentTime: video.currentTime,\n          duration: getVideoDuration(video), // Required for New android devices\n        });\n        break;\n      case \"volumechange\":\n        dispatch(this, Types.Action.volumeChange, {\n          volume: video.volume,\n          isMuted: video.muted,\n        });\n        break;\n      case \"loadeddata\":\n        dispatch(this, Types.Action.updateDuration, {\n          initialized: true,\n          duration: getVideoDuration(video),\n        });\n        break;\n      case \"ratechange\":\n        dispatch(this, Types.Action.setPlaybackRate, {\n          playbackRate: video.playbackRate,\n        });\n        break;\n      case \"progress\":\n        dispatch(this, Types.Action.setBuffer, {\n          buffered: getBufferedEnd(video),\n        });\n        break;\n      case \"webkitplaybacktargetavailabilitychanged\":\n        dispatch(this, Types.Action.updateAirplayStatus, {\n          airplayAvailable: (e as any).availability === \"available\",\n        });\n        break;\n      case \"webkitcurrentplaybacktargetiswirelesschanged\":\n        dispatch(this, Types.Action.toggleAirplay);\n        break;\n      case \"enterpictureinpicture\":\n        dispatch(this, Types.Action.togglePip, { pipActivated: true });\n        break;\n      case \"leavepictureinpicture\":\n        dispatch(this, Types.Action.togglePip, { pipActivated: false });\n        break;\n      case \"loadedmetadata\":\n        dispatch(this, Types.Action.canPlay);\n        const duration = getVideoDuration(video);\n        if (duration && duration !== Infinity) {\n          dispatch(this, Types.Action.updateDuration, {\n            initialized: true,\n            duration,\n          });\n        }\n        break;\n      case \"error\":\n        if (!this.isSourceSupported) return;\n        const error = video.error || { code: MediaError.MEDIA_ERR_NETWORK };\n\n        this.command(Types.Command.error, { ...error });\n        break;\n    }\n  }\n\n  @eventOptions({ capture: true })\n  handleClick() {\n    this.command(Types.Command.togglePlay);\n  }\n\n  @listen(Types.Command.setVolume)\n  @listen(Types.Command.setQualityLevel)\n  @listen(Types.Command.mute)\n  @listen(Types.Command.unmute)\n  @listen(Types.Command.toggleMuted)\n  @listen(Types.Command.setPlaybackRate)\n  @listen(Types.Command.enableTextTrack)\n  @listen(Types.Command.enableAudioTrack)\n  _syncStateWithStorage(params: CommandParams, _: any, command: Types.Command) {\n    if (!this.storageKey) return;\n\n    let key: keyof State;\n    let value: unknown;\n\n    switch (command) {\n      case Types.Command.setVolume:\n        key = \"volume\";\n        value = +params.volume;\n        break;\n      case Types.Command.setQualityLevel:\n        key = \"activeQualityLevel\";\n        value = +params.level;\n        break;\n      case Types.Command.toggleMuted:\n      case Types.Command.mute:\n      case Types.Command.unmute:\n        key = \"isMuted\";\n        value = this.videos[0].muted;\n        break;\n      case Types.Command.setPlaybackRate:\n        key = \"playbackRate\";\n        value = +params.playbackRate;\n        break;\n      case Types.Command.enableTextTrack:\n        key = \"activeTextTrackId\";\n        value = params.trackId;\n        break;\n      case Types.Command.enableAudioTrack:\n        key = \"activeAudioTrackId\";\n        value = params.trackId;\n        break;\n    }\n    const currentVal = this._storageProvider.get();\n    this._storageProvider.set({ ...currentVal, [key]: value });\n  }\n\n  setup() {\n    // active quality level will be initialized in HLS callback\n    const { activeQualityLevel, ...savedSettings } =\n      this._storageProvider.get();\n\n    if (typeof savedSettings.isMuted === \"boolean\") {\n      this.videos[0].muted = savedSettings.isMuted;\n    }\n\n    if (typeof savedSettings.volume === \"number\") {\n      this.videos[0].volume = savedSettings.volume;\n    }\n\n    this.sources = sourcesController(this.videos[0]);\n\n    const isSourceSupported = !INIT_NATIVE_HLS_RE.test(navigator.userAgent)\n      ? false\n      : this.sources.isSourceSupported();\n    if (isSourceSupported) {\n      this.subtitles = subtitlesController(\n        this,\n        this.videos[0],\n        this.hls,\n        savedSettings.activeTextTrackId,\n      );\n      this.audios = audiosController(\n        this,\n        this.videos[0],\n        this.hls,\n        savedSettings.activeAudioTrackId\n      );\n    }\n\n    const [\n      { autoplay, muted, poster, volume, currentTime, playbackRate, title },\n    ] = this.videos;\n\n    this.initTime = Date.now();\n\n    dispatch(this, Types.Action.init, {\n      poster,\n      duration: getVideoDuration(this.videos[0]),\n      currentTime,\n      volume,\n      title,\n      sources: this.sources.allSources(),\n      src: this.sources.getSrc(),\n      isAutoplay: autoplay,\n      isMuted: muted,\n      playbackRate,\n      isSourceSupported,\n      ...savedSettings,\n    });\n\n    this.command(Types.Command.setPlaybackRate, {\n      playbackRate:\n        typeof savedSettings.playbackRate === \"number\"\n          ? savedSettings.playbackRate\n          : playbackRate,\n    });\n\n    if (this.sources.isLazy()) return;\n\n    this.command(Types.Command.init);\n  }\n\n  _boundingRect: DOMRect;\n  get boundingRect(): DOMRect {\n    this._boundingRect = this._boundingRect || this.getBoundingClientRect();\n    return this._boundingRect;\n  }\n\n  _videoRect: DOMRect;\n  handleDblClick(e: PointerEvent) {\n    const { x, width } = this.boundingRect;\n    const xPercentage = ((e.clientX - x) / width) * 100;\n    if (xPercentage < 33) {\n      this.command(Types.Command.backward);\n    }\n    if (xPercentage > 66) {\n      this.command(Types.Command.forward);\n    }\n  }\n\n  render() {\n    return html`\n      <slot\n        @slotchange=${this.setup}\n        @play=${this.handleVideoEvent}\n        @pause=${this.handleVideoEvent}\n        @timeupdate=${this.handleVideoEvent}\n        @loadeddata=${this.handleVideoEvent}\n        @loadedmetadata=${this.handleVideoEvent}\n        @ratechange=${this.handleVideoEvent}\n        @volumechange=${this.handleVideoEvent}\n        @error=${this.handleVideoEvent}\n        @abort=${this.handleVideoEvent}\n        @enterpictureinpicture=${this.handleVideoEvent}\n        @leavepictureinpicture=${this.handleVideoEvent}\n        @progress=${this.handleVideoEvent}\n        @click=${this.handleClick}\n        @dblclick=${this.handleDblClick}\n        @webkitcurrentplaybacktargetiswirelesschanged=${this.handleVideoEvent}\n        @webkitplaybacktargetavailabilitychanged=${this.handleVideoEvent}\n      ></slot>\n      ${when(\n        this.poster && !this.played,\n        () => html`\n          <img\n            src=${this.poster}\n            alt=${this.title}\n            @click=${this.handleClick}\n          />\n        `,\n      )}\n    `;\n  }\n}\n","import type { LitElement, PropertyValueMap } from \"lit\";\nimport { property } from \"lit/decorators.js\";\n\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport declare class WithDependentPropsInterface {\n  when: string;\n}\n\nconst parseValue = (val: string): any => {\n  try {\n    const parsed = JSON.parse(val);\n    return parsed;\n  } catch (err) {\n    return val;\n  }\n};\n\nconst dashSeparatorRe = new RegExp(\"-\\\\w{1}\", \"g\");\nconst formatName = (name: string) =>\n  name.replace(dashSeparatorRe, (m) => m.replace(\"-\", \"\").toUpperCase());\n\nconst parsePropNameValue = (prop: string): [string, unknown] => {\n  const [name, val] = prop.split(\"=\");\n  return [formatName(name), parseValue(val)];\n};\n\ntype LinkedProps = {\n  propName: string;\n  defaultValue: unknown;\n  linkedValue: unknown;\n};\n\nexport const DependentPropsMixin = <T extends Constructor<LitElement>>(\n  superClass: T,\n) => {\n  class WithDependentPropsElement extends superClass {\n    /**\n     * fullscreen=true->custom=false,time=true;\n     */\n    @property()\n    when: string;\n\n    private _parsedWhen: Record<\n      string,\n      {\n        value: unknown;\n        linked: LinkedProps[];\n      }\n    >;\n\n    connectedCallback() {\n      super.connectedCallback();\n      if (this.when) {\n        this._parsedWhen = this.when\n          .split(\";\")\n          .reduce<typeof this._parsedWhen>((acc, val) => {\n            const [dependency, linkedProps] = val.split(\"->\");\n\n            const [depName, depValue] = parsePropNameValue(dependency);\n\n            const parsedLinkedProps: LinkedProps[] = linkedProps\n              .split(\",\")\n              .map((prop) => {\n                const [propName, propVal] = parsePropNameValue(prop);\n                return {\n                  propName: propName,\n                  // @ts-ignore\n                  defaultValue: this[propName],\n                  linkedValue: propVal,\n                };\n              });\n\n            acc[depName] = {\n              value: depValue,\n              linked: parsedLinkedProps,\n            };\n\n            return acc;\n          }, {});\n      }\n    }\n\n    protected updated(\n      _changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n    ): void {\n      if (super.updated) {\n        super.updated(_changedProps);\n      }\n\n      if (!this._parsedWhen) return;\n\n      for (const propName of _changedProps.keys()) {\n        const dependencyProp = this._parsedWhen[propName as string];\n        if (!dependencyProp) return;\n        dependencyProp.linked.forEach((linkedProp) => {\n          // @ts-ignore\n          this[linkedProp.propName] =\n            // @ts-ignore\n            this[propName] === dependencyProp.value\n              ? linkedProp.linkedValue\n              : linkedProp.defaultValue;\n        });\n      }\n    }\n  }\n\n  return WithDependentPropsElement as Constructor<WithDependentPropsInterface> &\n    T;\n};\n","import { connect } from \"../../state\";\nimport { unsafeCSS, LitElement, html, PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { DependentPropsMixin } from \"../../mixins/DependentProps\";\nimport styles from \"./Video-controls.styles.css?inline\";\n\n/**\n * @slot - Video-controls main content\n * */\n@customElement(\"video-controls\")\nexport class VideoControls extends DependentPropsMixin(LitElement) {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * Indicates whether the video player is in idle mode.\n   */\n  @connect(\"idle\")\n  @property({ type: Boolean, reflect: true })\n  idle: boolean;\n\n  /**\n   * Indicates whether the video is currently playing.\n   */\n  @connect(\"isPlaying\")\n  @property({ type: Boolean, reflect: true })\n  playing: boolean;\n\n  /**\n   * Indicates whether the video player is in fullscreen mode.\n   */\n  @connect(\"isFullscreen\")\n  @property({ type: Boolean, reflect: true })\n  fullscreen: boolean;\n\n  /**\n   * Indicates whether the video controls are customized.\n   * If true, the controls are custom; if false, they are default.\n   */\n  @property({ type: Boolean, reflect: true })\n  custom = false;\n\n  private resizeObserver: ResizeObserver;\n\n  connectedCallback(): void {\n    super.connectedCallback();\n    this.resizeObserver = new ResizeObserver((entries) => {\n      const [entry] = entries\n      if (entry?.contentBoxSize) {\n        const { blockSize } =  entry.contentBoxSize[0]\n        this.style.cssText = `${this.style.cssText}; --video-menu-max-height: ${Math.round(blockSize)}px;`\n      }\n    });\n  }\n\n  protected firstUpdated(_changedProperties: PropertyValues): void {\n    this.resizeObserver.observe(this.parentElement)\n  }\n\n  disconnectedCallback(): void {\n    super.disconnectedCallback()\n    this.resizeObserver?.disconnect()\n  }\n\n  render() {\n    return html`<slot></slot>`;\n  }\n}\n","import{html as t,svg as r}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=Symbol.for(\"\"),o=t=>{if(t?.r===e)return t?._$litStatic$},i=t=>({_$litStatic$:t,r:e}),s=(t,...r)=>({_$litStatic$:r.reduce(((r,e,o)=>r+(t=>{if(void 0!==t._$litStatic$)return t._$litStatic$;throw Error(`Value passed to 'literal' function must be a 'literal' result: ${t}. Use 'unsafeStatic' to pass non-literal values, but\\n            take care to ensure page security.`)})(e)+t[o+1]),t[0]),r:e}),a=new Map,l=t=>(r,...e)=>{const i=e.length;let s,l;const n=[],u=[];let c,$=0,f=!1;for(;$<i;){for(c=r[$];$<i&&void 0!==(l=e[$],s=o(l));)c+=s+r[++$],f=!0;$!==i&&u.push(l),n.push(c),$++}if($===i&&n.push(r[i]),f){const t=n.join(\"$$lit$$\");void 0===(r=a.get(t))&&(n.raw=n,a.set(t,r=n)),e=u}return t(r,...e)},n=l(t),u=l(r);export{n as html,s as literal,u as svg,i as unsafeStatic,l as withStatic};\n//# sourceMappingURL=static.js.map\n","import { unsafeCSS, LitElement } from \"lit\";\nimport { unsafeStatic, html } from \"lit/static-html.js\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport styles from \"./Video-cues.styles.css?inline\";\nimport { connect } from \"../../state\";\n\n@customElement(\"video-cues\")\nexport class VideoCues extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * Indicates whether the video player is in idle mode.\n   */\n  @connect(\"idle\")\n  @property({ type: Boolean, reflect: true })\n  idle: boolean;\n\n  /**\n   * The currently active text track (e.g., subtitles or captions).\n   */\n  @connect(\"activeTextTrackId\")\n  activeTextTrackId: string;\n\n  /**\n   * An array of cues or subtitles to be displayed during video playback.\n   */\n  @connect(\"cues\")\n  cues: string[];\n\n  /**\n   * Indicates whether the device is an iOS device.\n   */\n  @connect(\"isIos\")\n  @property({ type: Boolean, reflect: true, attribute: \"is-ios\" })\n  isIos: true;\n\n  /**\n   * Indicates whether the video player is in fullscreen mode.\n   */\n  @connect(\"isFullscreen\")\n  isFullscreen: false;\n\n  render() {\n    if ((this.isIos && this.isFullscreen) || !this.activeTextTrackId) return null;\n\n    return this.cues.map(\n      (cue) => html`\n        <div class=\"cue\">\n          <span>${unsafeStatic(cue)}</span>\n        </div>\n      `,\n    );\n  }\n}\n","import { unsafeCSS, LitElement, html, TemplateResult } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport styles from \"./Video-errors-manager.styles.css?inline\";\nimport { Types, connect, dispatch, listen } from \"../../state\";\n\n@customElement(\"video-errors-manager\")\nexport class VideoErrorsManager extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  timer = 0;\n\n  /**\n   * The timeout duration (in milliseconds) for displaying error messages before clearing.\n   * If set to 0, error messages will persist until manually cleared.\n   */\n  @property({ type: Number })\n  timeout = 10000;\n\n  @connect(\"src\")\n  src: string;\n\n  @state()\n  message: string | TemplateResult<any> = \"\";\n\n  @listen(Types.Command.error)\n  handleErrors(error: MediaError) {\n    if (error.message) this.print(error.message);\n    if (error.code === MediaError.MEDIA_ERR_NETWORK) {\n      dispatch(this, Types.Action.update, { canPlay: false });\n      this.requestSrc(5)\n        .then(() =>\n          dispatch(this, Types.Action.update, {\n            canPlay: true,\n            src: this.src + \"#\" + Math.random().toString(36).slice(2, 7),\n          }),\n        )\n        .catch(() =>\n          this.print(\n            html`The stream could not be fetched after the maximum allowed\n              connection attempts.<br />\n              Please reload this page to try again.`,\n            true,\n          ),\n        );\n    }\n  }\n\n  clear = () => {\n    if (this.timer) clearTimeout(this.timer);\n    this.timer = 0;\n    this.message = \"\";\n  };\n\n  print = (message: string | TemplateResult<any>, persist = false) => {\n    this.message = message;\n    if (!persist) this.timer = setTimeout(this.clear, this.timeout);\n  };\n\n  requestSrc = async (attempts: number) => {\n    if (!attempts) throw new Error(\"Video is not available\");\n\n    this.print(\n      html`The stream is currently not active.<br />\n        Attempting to establish a connection...`,\n    );\n    await new Promise((resolve) => setTimeout(resolve, this.timeout));\n    const { ok } = await fetch(this.src);\n    if (!ok) await this.requestSrc(attempts - 1);\n  };\n\n  render() {\n    if (!this.message) return null;\n    return html` <div>${this.message}</div> `;\n  }\n}\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport styles from \"./Video-live-sign.styles.css?inline\";\nimport { createCommand, connect, dispatch, Types } from \"../../state\";\n\n@customElement(\"video-live-sign\")\nexport class VideoLiveSign extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * Indicates whether the video stream is live.\n   */\n  @connect(\"live\")\n  live: boolean;\n\n  command = createCommand(this);\n\n  private onClick = () => {\n    if (!this.live) {\n      this.command(Types.Command.live);\n    }\n  };\n\n  firstUpdated(): void {\n    dispatch(this, Types.Action.live, { live: true });\n    this.addEventListener(\"click\", this.onClick);\n  }\n\n  disconnectedCallback(): void {\n    super.disconnectedCallback();\n    this.removeEventListener(\"click\", this.onClick);\n  }\n\n  render() {\n    return html`\n      <div\n        class=${classMap({ live: !!this.live, sign: true })}\n        part=\"sign\"\n      ></div>\n      <slot>Live</slot>\n    `;\n  }\n}\n","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { when } from \"lit/directives/when.js\";\nimport styles from \"./Video-menu.styles.css?inline\";\nimport { eventCode, emit } from \"../../helpers/event\";\n\ntype MenuItem = {\n  // The value associated with the menu item\n  value: string | number;\n  // The text label of the menu item\n  label: string;\n  // Indicates whether the menu item is currently active\n  isActive?: boolean;\n  // Icon to display before the label\n  iconBefore?: any;\n  // Icon to display after the label\n  iconAfter?: any;\n  // Keyboard shortcut for the menu item\n  key?: string;\n};\n\n@customElement(\"video-menu\")\nexport class VideoMenu extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * An array of menu items to display.\n   */\n  @property({ type: Array })\n  items: MenuItem[] = [];\n\n  /**\n   * The title of the menu.\n   */\n  @property()\n  title: string;\n\n  handleClick(e: any) {\n    e.stopPropagation();\n    emit(this, \"menu-item-click\", { value: e.currentTarget.dataset.value });\n  }\n\n  handleKeyDown(e: KeyboardEvent) {\n    if (eventCode(e, \"space\", \"enter\")) {\n      e.stopPropagation();\n      Promise.resolve(() => this.handleClick(e));\n    }\n  }\n\n  render() {\n    return html`\n      ${when(\n        this.title,\n        () => html`\n          <p class=\"title\">\n            <slot name=\"title\"> ${this.title} </slot>\n          </p>\n        `,\n      )}\n      <ul class=\"menu\">\n        ${this.items.map(\n          (item) => html`\n            <li>\n              <button\n                tabindex=\"0\"\n                class=\"item\"\n                area-pressed=${item.isActive}\n                data-value=${item.value}\n                @click=${this.handleClick}\n                @keydown=${this.handleKeyDown}\n              >\n                ${item.iconBefore}\n                <span class=\"text\">\n                  <slot name=\"label:${item.value}\"> ${item.label} </slot>\n                </span>\n                ${item.iconAfter}\n              </button>\n            </li>\n          `,\n        )}\n      </ul>\n    `;\n  }\n}\n","import { ReactiveController } from \"lit\";\nimport { dispatch, Types } from \"../../../state\";\nimport { VideoPlayer } from \"../Video-player.component\";\n\nexport class FullscreenController implements ReactiveController {\n  container: Element;\n  video: HTMLVideoElement;\n  fullscreenProperties: null | {\n    prefix: string;\n    property: string;\n  };\n\n  constructor(\n    protected host: VideoPlayer & { fullscreenContainer: Element | string },\n  ) {\n    this.host.addController(this);\n  }\n\n  hostConnected(): void {\n    const { fullscreenContainer } = this.host;\n    this.container =\n      typeof fullscreenContainer === \"string\"\n        ? document.querySelector(fullscreenContainer)\n        : this.host;\n\n    this.video = this.host.querySelector(\"video\");\n    this.fullscreenProperties = this.getFullscreenProperties(this.video);\n\n    document.addEventListener(\"fullscreenchange\", this.handleFullscreenChange);\n    document.addEventListener(\n      \"webkitfullscreenchange\",\n      this.handleFullscreenChange,\n    );\n    document.addEventListener(\n      \"mozfullscreenchange\",\n      this.handleFullscreenChange,\n    );\n    this.video.addEventListener(\n      \"webkitbeginfullscreen\",\n      this.handleFullscreenChange,\n    );\n    this.video.addEventListener(\n      \"webkitendfullscreen\",\n      this.handleFullscreenChange,\n    );\n    this.handleFullscreenChange();\n  }\n\n  hostDisconnected(): void {\n    document.removeEventListener(\n      \"fullscreenchange\",\n      this.handleFullscreenChange,\n    );\n    document.removeEventListener(\n      \"webkitfullscreenchange\",\n      this.handleFullscreenChange,\n    );\n    document.removeEventListener(\n      \"mozfullscreenchange\",\n      this.handleFullscreenChange,\n    );\n    this.video.removeEventListener(\n      \"webkitbeginfullscreen\",\n      this.handleFullscreenChange,\n    );\n    this.video.removeEventListener(\n      \"webkitendfullscreen\",\n      this.handleFullscreenChange,\n    );\n  }\n\n  private fullscreenNodesMatching(target?: Element) {\n    return Boolean(target === this.video || target === this.container);\n  }\n\n  private handleFullscreenChange = (e?: Event & { target: Element }) => {\n    if (\n      this.fullscreenNodesMatching(document.fullscreenElement) ||\n      this.fullscreenNodesMatching(e?.target)\n    ) {\n      const isFullscreen = Boolean(\n        document.fullscreenElement ||\n          (document as any).webkitIsFullScreen ||\n          (document as any).mozFullScreen ||\n          (document as any).webkitCurrentFullScreenElement,\n      );\n\n      if (this.host.state.value?.isIos) {\n        this.toggleIosFullscreen(e.type === \"webkitbeginfullscreen\");\n      }\n\n      dispatch(this.host, Types.Action.fullscreenChange, { isFullscreen });\n    }\n  };\n\n  public enter() {\n    let fx = \"requestFullscreen\";\n    const element: any = this.container;\n    const _document: any = document;\n    const video: any = this.video;\n\n    if (this.fullscreenProperties) {\n      const { prefix, property } = this.fullscreenProperties;\n      fx = `${prefix}Request${property}`;\n    }\n\n    if (element[fx]) {\n      return element[fx].call(element);\n    }\n\n    // Safari on IOS allows to fullscreen only video element\n    if (video.webkitEnterFullScreen) {\n      return video.webkitEnterFullScreen({\n        navigationUI: \"hide\",\n      });\n    }\n\n    if (_document[fx]) {\n      return _document[fx].call(document);\n    }\n  }\n\n  public exit() {\n    let fx = \"exitFullscreen\";\n    const element: any = this.container;\n    const _document: any = document;\n\n    if (this.fullscreenProperties) {\n      const { prefix, property } = this.fullscreenProperties;\n      fx = `${prefix}Exit${property}`;\n    }\n\n    if (element[fx]) {\n      return element[fx].call(element);\n    }\n\n    if (_document[fx]) {\n      return _document[fx].call(document);\n    }\n  }\n\n  /**\n   * A dirty hack for IOS browsers:\n   * Safari resets video attributes when exiting from fullscreen by swiping video down\n   */\n  toggleIosFullscreen(isFullscreen: boolean) {\n    this.video.setAttribute(\"controls\", \"true\");\n    this.video.removeAttribute(\"playsinline\");\n    setTimeout(() => {\n      this.video.setAttribute(\"playsinline\", \"true\");\n    });\n    if (!isFullscreen)\n      requestAnimationFrame(() => {\n        this.video.removeAttribute(\"controls\");\n      });\n  }\n\n  getFullscreenProperties = (element: HTMLVideoElement) => {\n    if (document.exitFullscreen) return null;\n\n    const prefix = [\"webkit\", \"moz\", \"ms\"].find(\n      (item) =>\n        !!(element as any)[`${item}ExitFullscreen`] ||\n        !!(document as any)[`${item}CancelFullScreen`],\n    );\n\n    return {\n      prefix,\n      property: prefix === \"moz\" ? \"FullScreen\" : \"Fullscreen\",\n    };\n  };\n}\n","import { ReactiveController, ReactiveElement } from \"lit\";\n\nexport class IdleController implements ReactiveController {\n  timer: number;\n  callback: (value: boolean) => void;\n\n  constructor(\n    private host: ReactiveElement & { idleTimeout: number },\n    callback: (value: boolean) => void,\n  ) {\n    this.host.addController(this);\n    this.callback = callback.bind(host);\n  }\n\n  hostConnected(): void {\n    this.start();\n  }\n\n  hostDisconnected(): void {\n    this.clear();\n  }\n\n  public start = () => {\n    this.clear();\n    this.timer = window.setTimeout(() => {\n      this.callback(true);\n    }, this.host.idleTimeout);\n  };\n\n  public clear = () => {\n    if (!this.timer) return;\n    window.clearTimeout(this.timer);\n    this.timer = null;\n  };\n\n  public reset = () => {\n    this.start();\n    this.callback(false);\n  };\n}\n","import { ReactiveController } from \"lit\";\nimport { Types } from \"../../../state\";\nimport type { VideoPlayer } from \"../Video-player.component\";\n\nconst keys = [\n  \"space\",\n  \"keym\",\n  \"arrowup\",\n  \"arrowdown\",\n  \"enter\",\n  \"arrowright\",\n  \"arrowleft\",\n] as const;\n\nexport class KeyboardController implements ReactiveController {\n  timer: number;\n  callback: (value: boolean) => void;\n\n  constructor(private host: VideoPlayer) {\n    this.host.addController(this);\n  }\n\n  hostConnected(): void {\n    this.host.addEventListener(\"keydown\", this.handleKeydown);\n    Promise.resolve().then(() => this.host.autofocus && this.host.focus());\n  }\n\n  command(command: Types.Command, props?: Record<string, unknown>) {\n    this.host.command(command, props, { keyboard: true, once: true });\n  }\n\n  hostDisconnected(): void {\n    this.host.addEventListener(\"keydown\", this.handleKeydown);\n  }\n\n  handleKeydown(e: KeyboardEvent) {\n    const code = e.code.toLowerCase() as (typeof keys)[number];\n    if (keys.includes(code)) e.preventDefault();\n    else return;\n\n    switch (code) {\n      case \"space\":\n        this.command(Types.Command.togglePlay);\n        break;\n      case \"keym\":\n        this.command(Types.Command.toggleMuted);\n        break;\n      case \"arrowup\":\n        this.command(Types.Command.increaseVolume);\n        break;\n      case \"arrowdown\":\n        this.command(Types.Command.decreaseVolume);\n        break;\n      case \"arrowright\":\n        this.command(Types.Command.forward);\n        break;\n      case \"arrowleft\":\n        this.command(Types.Command.backward);\n        break;\n      case \"enter\":\n        this.command(Types.Command.toggleFullscreen);\n        break;\n    }\n  }\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n//  @watch('propName')\n//  handlePropChange(oldValue, newValue) {\n//    ...\n//  }\nimport type { LitElement } from \"lit\";\n\ntype UpdateHandler = (prev?: unknown, next?: unknown) => void;\n\ntype NonUndefined<A> = A extends undefined ? never : A;\n\ntype UpdateHandlerFunctionKeys<T extends object> = {\n  [K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;\n}[keyof T];\n\ninterface WatchOptions {\n  /**\n   * If true, will only start watching after the initial update/render\n   */\n  waitUntilFirstUpdate?: boolean;\n}\n\nexport function watch(propName: string, options?: WatchOptions) {\n  const resolvedOptions: Required<WatchOptions> = {\n    waitUntilFirstUpdate: false,\n    ...options,\n  };\n  return <ElemClass extends LitElement>(\n    proto: ElemClass,\n    decoratedFnName: UpdateHandlerFunctionKeys<ElemClass>,\n  ): void => {\n    // @ts-expect-error -- update is a protected property\n    const { update } = proto;\n    if (propName in proto) {\n      const propNameKey = propName as keyof ElemClass;\n      // @ts-expect-error -- update is a protected property\n      proto.update = function (\n        this: ElemClass,\n        changedProps: Map<keyof ElemClass, ElemClass[keyof ElemClass]>,\n      ) {\n        if (changedProps.has(propNameKey)) {\n          const oldValue = changedProps.get(propNameKey);\n          const newValue = this[propNameKey];\n\n          if (oldValue !== newValue) {\n            if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {\n              (this[decoratedFnName] as unknown as UpdateHandler)(\n                oldValue,\n                newValue,\n              );\n            }\n          }\n        }\n\n        update.call(this, changedProps);\n      };\n    }\n  };\n}\n","import {\n  createCommand,\n  createState,\n  dispatch,\n  listen,\n  Types,\n} from \"../../state\";\nimport { unsafeCSS, LitElement, html, CSSResultGroup } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { FullscreenController } from \"./controllers/Fullscreen\";\nimport { IdleController } from \"./controllers/Idle\";\nimport { KeyboardController } from \"./controllers/Keyboard\";\nimport { emit } from \"../../helpers/event\";\nimport { Action, MuxParams, DRMOptions } from \"../../types\";\nimport { watch } from \"../../decorators/watch\";\nimport styles from \"./Video-player.styles.css?inline\";\n\nimport \"../video-controls\";\nimport \"../video-container\";\nimport \"../video-chromecast\";\nimport \"../video-errors-manager\";\n\n@customElement(\"video-player\")\nexport class VideoPlayer extends LitElement {\n  static styles?: CSSResultGroup = unsafeCSS(styles);\n\n  protected idleManager = new IdleController(this, this.handleIdleUpdate);\n  protected keyboardManager = new KeyboardController(this);\n\n  public command = createCommand(this);\n  public state = createState(this);\n  public fullscreen = new FullscreenController(this);\n\n  /**\n   * The ID of the element to be used as the fullscreen container.\n   */\n  @property({ type: String, attribute: \"fullscreen-element\" })\n  fullscreenContainer: string;\n\n  /**\n   * Indicates whether the player is in idle mode.\n   */\n  @property({ type: Boolean, reflect: true })\n  idle = false;\n\n  /**\n   * Parameters to be passed to Mux for analytics.\n   */\n  @property({ type: Object, attribute: \"mux-data\" })\n  muxData: MuxParams;\n\n  /**\n   * Indicates whether the player should automatically focus on load.\n   */\n  @property({ type: Boolean })\n  autofocus = false;\n\n  /**\n   * The duration of inactivity before the player enters idle mode (in milliseconds).\n   */\n  @property({ type: Number, attribute: \"idle-timeout\" })\n  idleTimeout = 9000;\n\n  /**\n   * The tabindex of the player for keyboard navigation.\n   */\n  @property({ type: Number, attribute: true, reflect: true })\n  tabindex = 0;\n\n  /**\n   * The key used for storing player state in local storage.\n   */\n  @property({ type: String, attribute: \"storage-key\" })\n  storageKey: string;\n\n  /**\n   * The time offset (in seconds) to seek the video to.\n   */\n  @property({ type: Number })\n  offset: number;\n\n  /**\n   * DRM options\n   */\n  @property({ type: Object, attribute: \"drm-options\" })\n  drmOptions?: DRMOptions\n\n  @listen(Types.Command.toggleFullscreen)\n  toggleFullscreen = () => {\n    if (this.state.value.isFullscreen) {\n      this.fullscreen.exit();\n      emit(this, \"exit-fullscreen\");\n    } else {\n      this.fullscreen.enter();\n      emit(this, \"enter-fullscreen\");\n    }\n  };\n\n  @watch(\"offset\")\n  handleOffsetChange() {\n    // We have to wait before all the command listeners will be registered\n    requestAnimationFrame(() => {\n      this.command(Types.Command.seek, { time: this.offset });\n    });\n  }\n\n  handleIdleUpdate(idle: boolean) {\n    if (this.idle === idle) return;\n    if (!this.state.value.isPlaying && idle) {\n      dispatch(this, Types.Action.idle, { idle: false });\n    }\n    this.idle = idle;\n    dispatch(this, Types.Action.idle, { idle });\n  }\n\n  handleClick = () => {\n    dispatch(this, Types.Action.interacted);\n    document.removeEventListener(\"click\", this.handleClick);\n    document.removeEventListener(\"touch\", this.handleClick);\n    document.removeEventListener(\"keydown\", this.handleClick);\n  };\n\n  handleMove = () => {\n    this.idleManager.reset();\n  };\n\n  connectedCallback(): void {\n    super.connectedCallback();\n    document.addEventListener(\"click\", this.handleClick, { once: true });\n    document.addEventListener(\"touch\", this.handleClick, { once: true });\n    document.addEventListener(\"keydown\", this.handleClick, { once: true });\n    this.addEventListener(\"touchstart\", this.handleMove, { passive: true });\n    this.addEventListener(\"mousemove\", this.handleMove);\n    this.addEventListener(\"mouseleave\", this.handleMove);\n\n    if (this.muxData?.env_key) {\n      this.state.setState(Action.setMuxParams, { muxData: this.muxData });\n    }\n\n    if (this.drmOptions) {\n      this.state.setState(Action.setDRMOptions, { drmOptions: this.drmOptions });\n    }\n  }\n\n  disconnectedCallback(): void {\n    document.removeEventListener(\"click\", this.handleClick);\n    document.removeEventListener(\"touch\", this.handleClick);\n    this.removeEventListener(\"touchstart\", this.handleMove);\n    this.removeEventListener(\"mousemove\", this.handleMove);\n    this.removeEventListener(\"mouseleave\", this.handleMove);\n  }\n\n  render() {\n    return html`\n      <video-container storage-key=${this.storageKey}>\n        <slot name=\"video\"></slot>\n        <slot name=\"chromecast\"></slot>\n        <slot name=\"errors\">\n          <video-errors-manager></video-errors-manager>\n        </slot>\n      </video-container>\n      <slot></slot>\n    `;\n  }\n}\n","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport styles from \"./Video-progress.styles.css?inline\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\n\n@customElement(\"video-progress\")\nexport class VideoProgress extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * The current value of the progress bar.\n   * Should be a number between 0 and 100.\n   */\n  @property({ type: Number })\n  value = 0;\n\n  /**\n   * Indicates whether the progress bar is in a loading state.\n   */\n  @property({ type: Boolean })\n  loading = false;\n\n  render() {\n    const value = Math.min(Math.max(Number(this.value), 0), 100).toFixed(3);\n    return html`\n      <progress\n        min=\"0\"\n        max=\"100\"\n        value=${ifDefined(this.loading ? undefined : value)}\n        role=\"progressbar\"\n        area-hidden=\"true\"\n        ?inactive=${this.value <= 0}\n      >\n        <slot></slot>\n      </progress>\n    `;\n  }\n}\n","export const isDeepAssigned = (element: HTMLSlotElement): boolean => {\n  const [children] = element.assignedNodes();\n  if (!children) return false;\n  if (children instanceof HTMLSlotElement) return isDeepAssigned(children);\n  return true;\n};\n","import { unsafeCSS, LitElement, html, PropertyValueMap } from \"lit\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport styles from \"./Video-slider.styles.css?inline\";\nimport { emit } from \"../../helpers/event\";\nimport { watch } from \"../../decorators/watch\";\nimport {\n  createPopper,\n  Instance as PopperInstance,\n  VirtualElement,\n} from \"@popperjs/core\";\nimport { closestElement } from \"../../helpers/closest\";\nimport { when } from \"lit/directives/when.js\";\nimport { isDeepAssigned } from \"../../helpers/slot\";\n\ntype CombinedEventType = PointerEvent &\n  TouchEvent & { target: HTMLInputElement };\n\nconst generateGetBoundingClientRect =\n  (x = 0, y = 0) =>\n  () =>\n    new DOMRect(x, y, 0, 0);\n\n@customElement(\"video-slider\")\nexport class VideoSlider extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * The current value of the slider\n   */\n  @property({ type: Number })\n  value = 0;\n\n  /**\n   * The maximum value allowed on the slider\n   */\n  @property({ type: Number })\n  max = 1;\n\n  /**\n   * Indicates whether the slider is disabled.\n   */\n  @property({ type: Boolean, reflect: true })\n  disabled = false;\n\n  /**\n   * Indicates whether the slider should take up full width.\n   */\n  @property({ type: Boolean, reflect: true })\n  full = false;\n\n  /**\n   * Indicates whether the slider is in a loading state.\n   */\n  @property({ type: Boolean, reflect: true })\n  loading = false;\n\n  /**\n   * Text to display as the value of the slider.\n   */\n  @property({ attribute: \"value-text\" })\n  valueText = \"\";\n\n  /**\n   * Text to display in the tooltip.\n   */\n  @property({ attribute: \"tooltip-text\" })\n  tooltipText = \"\";\n\n  /**\n   * Determines whether the slider should have a tooltip.\n   */\n  @property({ type: Boolean, attribute: \"with-tooltip\" })\n  withTooltip = false;\n\n  /**\n   * Offset for positioning the tooltip relative to the slider.\n   */\n  @property({ type: Number, attribute: \"tooltip-offset\" })\n  tooltipOffset = -11;\n\n  @property({ type: Boolean, reflect: true, attribute: \"hovered\" })\n  isHovered = false;\n\n  @state()\n  currentValue?: number;\n\n  @state()\n  hasCustomTooltip = false;\n\n  hoverPosition = \"0\";\n\n  @query(\".tooltip\")\n  tooltip: HTMLElement;\n\n  @query(\".slider\")\n  slider: HTMLInputElement;\n\n  isChanging = false;\n  isPendingUpdate = false;\n\n  tooltipPopper: PopperInstance;\n  overTimeout: number;\n\n  virtualPopper: VirtualElement;\n\n  @watch(\"value\")\n  handleValueChange() {\n    this.currentValue = this.value;\n  }\n\n  protected firstUpdated(\n    _changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>,\n  ): void {\n    if (!this.withTooltip) return;\n    this.tooltipPopper?.destroy();\n    this.addEventListener(\"mouseover\", this.handlePointerOver);\n    this.addEventListener(\"mouseleave\", this.handlePointerLeave);\n    this.addEventListener(\"mousemove\", this.handlePointerMove);\n    this.addEventListener(\"touchstart\", this.handlePointerOver);\n    this.addEventListener(\"touchend\", this.handlePointerLeave);\n    this.addEventListener(\"touchmove\", this.handlePointerMove);\n  }\n\n  disconnectedCallback(): void {\n    this.tooltipPopper?.destroy();\n    this.removeEventListener(\"mouseover\", this.handlePointerOver);\n    this.removeEventListener(\"mouseleave\", this.handlePointerLeave);\n    this.removeEventListener(\"mousemove\", this.handlePointerMove);\n    this.removeEventListener(\"touchstart\", this.handlePointerOver);\n    this.removeEventListener(\"touchend\", this.handlePointerLeave);\n    this.removeEventListener(\"touchmove\", this.handlePointerMove);\n    super.disconnectedCallback();\n  }\n\n  handleInput(e: InputEvent & { target: HTMLInputElement }) {\n    this.currentValue = this.max * (Number.parseFloat(e.target.value) / 100);\n    emit(this, \"inputing\", { value: this.currentValue })\n  }\n\n  handleChange() {\n    emit(this, \"changed\", { value: this.currentValue });\n  }\n\n  handlePointerOver(e: CombinedEventType) {\n    if (!this.withTooltip || this.disabled) return;\n\n    const [x, y, percents] = this.getCursorPosition(e);\n    this.isHovered = true;\n    this.hoverPosition = percents;\n    this.tooltipPopper = this.createPopper(this.tooltip);\n    this.virtualPopper.getBoundingClientRect = generateGetBoundingClientRect(\n      x,\n      y,\n    );\n\n    if (this.overTimeout) {\n      window.clearTimeout(this.overTimeout);\n    }\n\n    this.overTimeout = setTimeout(() => {\n      if (!this.isHovered || !this.matches(\":hover\")) return;\n      this.tooltipPopper?.destroy();\n      emit(this, \"hoverend\");\n      this.isHovered = false;\n    }, 5000);\n\n    emit(this, \"hovering\", { position: percents });\n  }\n\n  handlePointerLeave() {\n    if (!this.withTooltip) return;\n    this.tooltipPopper?.destroy();\n    emit(this, \"hoverend\");\n    this.isHovered = false;\n  }\n\n  handlePointerMove = (e: CombinedEventType) => {\n    window.clearTimeout(this.overTimeout);\n    if (!this.withTooltip || !this.isHovered) return;\n    const [x, y, percents] = this.getCursorPosition(e);\n\n    if (percents === this.hoverPosition) return;\n\n    this.hoverPosition = percents;\n    this.virtualPopper.getBoundingClientRect = generateGetBoundingClientRect(\n      x,\n      y,\n    );\n    this.tooltipPopper.update();\n    emit(this, \"hovering\", { position: percents });\n  };\n\n  handleSlotChange = (e: Event & { target: HTMLSlotElement }) => {\n    this.hasCustomTooltip = isDeepAssigned(e.target);\n  };\n\n  getCursorPosition(e: CombinedEventType): [number, number, string] {\n    const { clientX, target, touches } = e;\n    const { y, x, width } = target.getBoundingClientRect();\n    const xPosition = touches?.[0]?.clientX || clientX;\n    const percents = Number(((100 / width) * (xPosition - x)).toFixed(3));\n    return [\n      Math.min(width + x, Math.max(x, xPosition)),\n      y,\n      String(Math.min(100, Math.max(0, percents))),\n    ];\n  }\n\n  createPopper(element: HTMLElement) {\n    this.virtualPopper = {\n      getBoundingClientRect: generateGetBoundingClientRect(),\n      contextElement: this,\n    };\n\n    return createPopper(this.virtualPopper, element, {\n      placement: \"top\",\n      modifiers: [\n        {\n          name: \"flip\",\n          enabled: false,\n        },\n        {\n          name: \"preventOverflow\",\n          options: {\n            boundary: closestElement(\"video-player\", this),\n            padding: 10,\n          },\n        },\n        {\n          name: \"offset\",\n          options: {\n            offset: [0, this.tooltipOffset],\n          },\n        },\n      ],\n    });\n  }\n\n  render() {\n    return html`\n      <div class=\"container\">\n        <input\n          part=\"slider\"\n          class=\"slider\"\n          type=\"range\"\n          min=\"0\"\n          max=\"100\"\n          step=\"0.001\"\n          role=\"slider\"\n          ?disabled=${this.disabled}\n          .value=${this.positionInPercents}\n          .aria-valuenow=${this.currentValue}\n          aria-valuemin=\"0\"\n          aria-valuemax=\"1\"\n          autocomplete=\"off\"\n          aria-valuetext=${this.valueText}\n          .style=\"--value: ${this.positionInPercents}%\"\n          @input=${this.handleInput}\n          @change=${this.handleChange}\n        />\n        ${when(\n          this.withTooltip && !this.disabled,\n          () => html`\n            <div class=\"tooltip\" part=\"tooltip\">\n              <slot name=\"tooltip\" @slotchange=${this.handleSlotChange}></slot>\n              ${when(\n                !this.hasCustomTooltip,\n                () => html` <div class=\"inner\">${this.tooltipText}</div> `,\n              )}\n            </div>\n          `,\n        )}\n        <slot></slot>\n      </div>\n    `;\n  }\n\n  get positionInPercents() {\n    const value = (100 / this.max) * this.currentValue;\n    return isNaN(value) ? \"0\" : value.toFixed(3);\n  }\n}\n","const pad = (num: number, size: number) => `000${num}`.slice(size * -1);\n\nexport const timeAsString = (timeInSeconds: number) => {\n  const time = Math.abs(\n    Number((isNaN(timeInSeconds) ? 0 : timeInSeconds).toFixed(3)),\n  );\n  const hours = Math.floor(time / 60 / 60);\n  const minutes = Math.floor(time / 60) % 60;\n  const seconds = Math.floor(time - minutes * 60);\n\n  return hours > 0\n    ? `${pad(hours, 2)}:${pad(minutes, 2)}:${pad(seconds, 2)}`\n    : `${pad(minutes, 2)}:${pad(seconds, 2)}`;\n};\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nfunction*o(o,f){if(void 0!==o){let i=0;for(const t of o)yield f(t,i++)}}export{o as map};\n//# sourceMappingURL=map.js.map\n","import { unsafeCSS, LitElement, html, nothing } from \"lit\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport styles from \"./Video-timeline.styles.css?inline\";\nimport { connect, createCommand } from \"../../state\";\nimport { Command } from \"../../types\";\nimport { DependentPropsMixin } from \"../../mixins/DependentProps\";\nimport { timeAsString } from \"../../helpers/time\";\nimport { VideoSlider } from \"../video-slider\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { map } from \"lit/directives/map.js\";\nimport { watch } from \"../../decorators/watch\";\nimport { when } from \"lit/directives/when.js\";\n\nimport \"../video-progress\";\nimport \"../video-slider\";\n\nconst segmentConverter = (v: string) => {\n  const values = v\n    .split(\",\")\n    .map(Number)\n    .sort((a, b) => a - b);\n  return values[0] ? [0, ...values] : values;\n};\n\n/**\n * @slot - Video-timeline main content\n * */\n@customElement(\"video-timeline\")\nexport class VideoTimeline extends DependentPropsMixin(LitElement) {\n  static styles = unsafeCSS(styles);\n  public command = createCommand(this);\n\n  /**\n   * Indicates whether the video timeline is disabled or not.\n   */\n  @property({ type: Boolean })\n  disabled = false;\n\n  /**\n   * The segments property provides a flexible\n   * mechanism for dividing the video timeline into distinct segments,\n   * enabling enhanced visualization and navigation of the video content\n   * based on different temporal divisions or events.\n   */\n  @property({ type: Array, converter: segmentConverter })\n  segments: number[] = [0];\n\n  @connect(\"live\")\n  live: boolean;\n\n  @connect(\"duration\")\n  duration: number = 0;\n\n  @connect(\"buffered\")\n  buffered: number;\n\n  @connect(\"canPlay\")\n  canPlay: boolean;\n\n  @connect(\"isFullscreen\")\n  @property({ type: Boolean, reflect: true })\n  fullscreen: boolean;\n\n  @property({ type: Boolean, attribute: \"full-width\", reflect: true })\n  fullWidth = false;\n\n  @query(\"video-slider\")\n  sliderNode: VideoSlider;\n\n  @connect(\"currentTime\")\n  @state()\n  currentTime = 0;\n\n  @connect('played')\n  played: boolean\n\n  @state()\n  currentValue = 0;\n\n  @state()\n  isHovering = false;\n\n  @state()\n  hoverText = \"\";\n\n  @state()\n  isChanging?: boolean;\n\n  @state()\n  isPendingUpdate?: boolean;\n\n  @state()\n  hoverPosition = -1;\n\n  @watch(\"currentTime\")\n  handleTimeChange() {\n    if (this.isChanging) return;\n    if (this.isPendingUpdate) {\n      setTimeout(() => {\n        this.isPendingUpdate = false;\n      }, 200);\n      return;\n    }\n    this.currentValue = this.currentTime;\n  }\n\n  handleInput(e: { detail: { value: number } }) {\n    this.currentValue = e.detail.value;\n    this.isChanging = this.isPendingUpdate = true;\n  }\n\n  handleChanged(e: { detail: { value: number } }) {\n    const time = this.hoverPosition > 0\n      ? this.hoverPosition\n      : e.detail.value;\n    this.command(Command.seek, { time });\n    this.isChanging = false;\n  }\n\n  handleHover = (\n    e: CustomEvent & { target: VideoSlider; detail: { position: number } },\n  ) => {\n    this.isHovering = true;\n    const hoveredTime = this.duration * (e.detail.position / 100);\n    this.hoverPosition = hoveredTime;\n    const text = timeAsString(hoveredTime);\n    if (text === this.hoverText) return;\n    this.hoverText = text;\n  };\n\n  handleHoverEnd = () => {\n    this.isHovering = false;\n  };\n\n  render() {\n    const disabled = this.disabled || !this.canPlay || this.duration === Infinity;\n\n    if (this.duration === Infinity && this.played) return nothing\n\n    return html`\n      <video-slider\n        with-tooltip\n        .value=${this.currentValue}\n        .max=${this.duration}\n        .valueText=\"${timeAsString(this.currentValue)} of ${timeAsString(\n          this.duration,\n        )}\"\n        .tooltipText=\"${this.isHovering\n          ? this.hoverText\n          : timeAsString(this.currentValue)}\"\n        ?disabled=${disabled}\n        ?full=${this.live}\n        ?loading=${!this.canPlay || this.duration === Infinity}\n        @changed=${this.handleChanged}\n        @hovering=${this.handleHover}\n        @hoverend=${this.handleHoverEnd}\n        @inputing=${this.handleInput}\n      >\n        ${when(!this.disabled, this.renderBars)}\n        <slot name=\"tooltip\" slot=\"tooltip\"></slot>\n      </video-slider>\n      <slot></slot>\n    `;\n  }\n\n  renderBars = () => {\n    const sliderLength = 100 / this.sliderNode?.clientWidth;\n    const segmentShift = sliderLength * 2;\n    const thumbSift =\n      (((sliderLength * 16) / 2) *\n        (50 - (100 / this.duration) * this.currentValue)) /\n      50;\n    const duration = this.duration || 1;\n\n    return html`\n      <div class=\"progress-container\" part=\"progress-container\">\n        ${map(this.segments, (segment, index) => {\n          const next = this.segments[index + 1] || duration;\n          const length = next - segment;\n          return html`\n            <div\n              style=\"--width: ${(100 / duration) * length}%\"\n              class=\"${classMap({\n                fraction: true,\n                active:\n                  this.hoverPosition < next && this.hoverPosition > segment,\n              })}\"\n            >\n              <video-progress\n                class=\"buffered\"\n                .value=${this.live ? 100 : (100 / length) * (this.buffered - segment) -\n                segmentShift * index}\n              ></video-progress>\n              <video-progress\n                class=\"progress\"\n                .value=${this.live ? 100 : (100 / length) * (this.currentValue - segment) -\n                segmentShift * index +\n                thumbSift}\n              ></video-progress>\n            </div>\n          `;\n        })}\n      </div>\n    `;\n  };\n}\n","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport styles from \"./Video-timer.styles.css?inline\";\nimport { connect } from \"../../state\";\nimport { timeAsString } from \"../../helpers/time\";\n\n@customElement(\"video-timer\")\nexport class VideoTimer extends LitElement {\n  static styles = unsafeCSS(styles);\n\n  /**\n   * Specifies the format in which the time information should be displayed by the video timer component.\n   * `left`: Displays the time remaining until the end of the video.\n   * `past`: Displays the time elapsed since the beginning of the video.\n   * `total`: Displays the total duration of the video.\n   */\n  @property()\n  format: \"left\" | \"past\" | \"total\" = \"left\";\n\n  @connect(\"duration\")\n  duration: number;\n\n  @connect(\"currentTime\")\n  currentTime: number;\n\n  get time() {\n    if (this.duration === Infinity) return 0\n    if (this.format === \"left\") return this.duration - this.currentTime;\n    if (this.format === \"past\") return this.currentTime;\n    return this.duration;\n  }\n\n  render() {\n    return html` ${timeAsString(this.time)} `;\n  }\n}\n","import { unsafeCSS, LitElement, html } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport styles from \"./Video-volume-control.styles.css?inline\";\nimport { connect, createCommand, Types } from \"../../state\";\n\nimport \"../video-slider\";\n\n@customElement(\"video-volume-control\")\nexport class VideoVolumeControl extends LitElement {\n  static styles = unsafeCSS(styles);\n  public command = createCommand(this);\n\n  @connect(\"isMuted\")\n  isMuted: boolean;\n\n  @connect(\"volume\")\n  @state()\n  volume: number;\n\n  @connect(\"isIos\")\n  isIos: boolean;\n\n  handleVolumeChange(e: CustomEvent & { detail: number }) {\n    this.volume = Number(e.detail.value.toFixed(2));\n    this.command(Types.Command.setVolume, { volume: this.volume });\n  }\n\n  render() {\n    if (this.isIos) return null;\n    return html`\n      <video-slider\n        .value=${this.isMuted ? 0 : this.volume}\n        @changed=${this.handleVolumeChange}\n      ></video-slider>\n    `;\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M5 4C3.34315 4 2 5.34315 2 7V16C2 17.6569 3.34315 19 5 19H6C6.55228 19 7 18.5523 7 18C7 17.4477 6.55228 17 6 17H5C4.44772 17 4 16.5523 4 16V7C4 6.44772 4.44772 6 5 6H19C19.5523 6 20 6.44772 20 7V16C20 16.5523 19.5523 17 19 17H18C17.4477 17 17 17.4477 17 18C17 18.5523 17.4477 19 18 19H19C20.6569 19 22 17.6569 22 16V7C22 5.34315 20.6569 4 19 4H5Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M8.36687 19.3598L11.2318 15.9219C11.6316 15.4421 12.3685 15.4421 12.7683 15.9219L15.6332 19.3598C16.176 20.0112 15.7128 21 14.865 21H9.13509C8.28725 21 7.8241 20.0112 8.36687 19.3598Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport _airplayIcon from \"../../icons/airplay-outline.svg?raw\";\nconst airplayIcon = unsafeSVG(_airplayIcon);\n\n@customElement(\"video-airplay-button\")\nexport class AirplayButton extends VideoButton {\n  @connect(\"airplayAvailable\")\n  airplayAvailable: boolean;\n\n  @connect(\"airplayActivated\")\n  airplayActivated: boolean;\n\n  override handleClick() {\n    this.command(Types.Command.requestAirplay);\n  }\n\n  override renderContent() {\n    if (!this.airplayAvailable) return null;\n    return html`\n      <slot name=\"icon:${this.airplayActivated ? \"enabled\" : \"disabled\"}\">\n        ${airplayIcon}\n      </slot>\n    `;\n  }\n\n  override renderTooltip() {\n    return html`\n      <span slot=\"tooltip:${this.airplayActivated ? \"enabled\" : \"disabled\"}\">\n        ${this.airplayActivated ? \"Disable Airplay\" : \"Enable Airplay\"}\n      </span>\n    `;\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M12.7071 1.29289C12.3166 0.902369 11.6834 0.902369 11.2929 1.29289L9.29289 3.29289C8.90237 3.68342 8.90237 4.31658 9.29289 4.70711L11.2929 6.70711C11.6834 7.09763 12.3166 7.09763 12.7071 6.70711C13.0976 6.31658 13.0976 5.68342 12.7071 5.29289L12.427 5.01281C16.0942 5.23349 19 8.2774 19 12C19 15.866 15.866 19 12 19C8.13401 19 5 15.866 5 12C5 11.4477 4.55229 11 4 11C3.44772 11 3 11.4477 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.16524 17.1877 3.22089 12.4053 3.00896L12.7071 2.70711C13.0976 2.31658 13.0976 1.68342 12.7071 1.29289Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.5355 12.1023C16.5327 14.0284 15.5497 15.162 13.9674 15.1591C12.3821 15.1563 11.3935 14.0199 11.3992 12.1023C11.4049 10.1818 12.3821 9.10229 13.9674 9.10229C15.5497 9.10229 16.5384 10.1875 16.5355 12.1023ZM13.0355 12.1023C13.0299 13.3267 13.4219 13.875 13.9674 13.875C14.5128 13.875 14.902 13.3267 14.8992 12.1023C14.8963 10.9063 14.5128 10.375 13.9674 10.375C13.4219 10.375 13.0412 10.9063 13.0355 12.1023Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M8.78411 9.18184H10.2387V15H8.65911V10.6364H8.62502L7.35229 11.3977V10.0568L8.78411 9.18184Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport _backwardIcon from \"../../icons/backward-solid.svg?raw\";\nconst backwardIcon = unsafeSVG(_backwardIcon);\n\n@customElement(\"video-backward-button\")\nexport class BackwardButton extends VideoButton {\n  override handleClick() {\n    this.command(Types.Command.backward);\n  }\n\n  override renderContent() {\n    return html`<slot name=\"icon\">${backwardIcon}</slot>`;\n  }\n\n  override renderTooltip() {\n    return html`<slot name=\"tooltip\">Backward</slot>`;\n  }\n}\n","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport _castIcon from \"../../icons/chrome-cast-outline.svg?raw\";\nconst castIcon = unsafeSVG(_castIcon);\n\n@customElement(\"video-chromecast-button\")\nexport class ChromeCastButton extends VideoButton {\n  @connect(\"castAvailable\")\n  available: boolean;\n\n  @connect(\"castActivated\")\n  activated: boolean;\n\n  override handleClick() {\n    this.command(Types.Command.requestCast);\n  }\n\n  override renderContent() {\n    if (!this.available) return null;\n    return html`\n      <slot name=\"icon:${this.activated ? \"enabled\" : \"disabled\"}\">\n        ${castIcon}\n      </slot>\n    `;\n  }\n\n  override renderTooltip() {\n    return html`\n      <slot name=\"tooltip:${this.activated ? \"enabled\" : \"disabled\"}\">\n        ${this.activated ? \"Disable Cast\" : \"Enable Chrome Cast\"}\n      </slot>\n    `;\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M12.7071 1.29289C12.3166 0.902369 11.6834 0.902369 11.2929 1.29289C10.9024 1.68342 10.9024 2.31658 11.2929 2.70711L11.5947 3.00896C6.81226 3.22089 3 7.16524 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 11.4477 20.5523 11 20 11C19.4477 11 19 11.4477 19 12C19 15.866 15.866 19 12 19C8.13401 19 5 15.866 5 12C5 8.2774 7.90584 5.23349 11.573 5.01281L11.2929 5.29289C10.9024 5.68342 10.9024 6.31658 11.2929 6.70711C11.6834 7.09763 12.3166 7.09763 12.7071 6.70711L14.7071 4.70711C15.0976 4.31658 15.0976 3.68342 14.7071 3.29289L12.7071 1.29289Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M16.5355 12.1023C16.5327 14.0284 15.5497 15.162 13.9674 15.1591C12.3821 15.1563 11.3935 14.0199 11.3992 12.1023C11.4049 10.1818 12.3821 9.10229 13.9674 9.10229C15.5497 9.10229 16.5384 10.1875 16.5355 12.1023ZM13.0355 12.1023C13.0299 13.3267 13.4219 13.875 13.9674 13.875C14.5128 13.875 14.902 13.3267 14.8992 12.1023C14.8963 10.9063 14.5128 10.375 13.9674 10.375C13.4219 10.375 13.0412 10.9063 13.0355 12.1023Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M8.78411 9.18184H10.2387V15H8.65911V10.6364H8.62502L7.35229 11.3977V10.0568L8.78411 9.18184Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport _forwardIcon from \"../../icons/forward-solid.svg?raw\";\n\nconst forwardIcon = unsafeSVG(_forwardIcon);\n\n@customElement(\"video-forward-button\")\nexport class ForwardButton extends VideoButton {\n  override handleClick() {\n    this.command(Types.Command.forward);\n  }\n\n  override renderContent() {\n    return html`<slot name=\"icon\">${forwardIcon}</slot>`;\n  }\n\n  override renderTooltip() {\n    return html`<slot name=\"tooltip\">Forward</slot>`;\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M13.5 5.5C13.5 6.05228 13.9477 6.5 14.5 6.5H16.0858L13.7929 8.79289C13.4024 9.18342 13.4024 9.81658 13.7929 10.2071C14.1834 10.5976 14.8166 10.5976 15.2071 10.2071L17.5 7.91421V9.5C17.5 10.0523 17.9477 10.5 18.5 10.5C19.0523 10.5 19.5 10.0523 19.5 9.5V5.5C19.5 4.94772 19.0523 4.5 18.5 4.5H14.5C13.9477 4.5 13.5 4.94772 13.5 5.5Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M6.5 14.5C6.5 13.9477 6.05228 13.5 5.5 13.5C4.94772 13.5 4.5 13.9477 4.5 14.5V18.5C4.5 19.0523 4.94772 19.5 5.5 19.5H9.5C10.0523 19.5 10.5 19.0523 10.5 18.5C10.5 17.9477 10.0523 17.5 9.5 17.5H7.91421L10.2071 15.2071C10.5976 14.8166 10.5976 14.1834 10.2071 13.7929C9.81658 13.4024 9.18342 13.4024 8.79289 13.7929L6.5 16.0858V14.5Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M17 4C17 3.44772 16.5523 3 16 3C15.4477 3 15 3.44772 15 4V8C15 8.55228 15.4477 9 16 9H20C20.5523 9 21 8.55228 21 8C21 7.44772 20.5523 7 20 7H18.4142L20.7071 4.70711C21.0976 4.31658 21.0976 3.68342 20.7071 3.29289C20.3166 2.90237 19.6834 2.90237 19.2929 3.29289L17 5.58579V4Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M3 16C3 16.5523 3.44772 17 4 17H5.58579L3.29289 19.2929C2.90237 19.6834 2.90237 20.3166 3.29289 20.7071C3.68342 21.0976 4.31658 21.0976 4.70711 20.7071L7 18.4142V20C7 20.5523 7.44772 21 8 21C8.55228 21 9 20.5523 9 20V16C9 15.4477 8.55228 15 8 15H4C3.44772 15 3 15.4477 3 16Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport enterIcon from \"../../icons/fullscreen-enter-solid.svg?raw\";\nimport outIcon from \"../../icons/fullscreen-out-solid.svg?raw\";\n\nconst icons = {\n  in: unsafeSVG(enterIcon),\n  out: unsafeSVG(outIcon),\n};\n\n@customElement(\"video-fullscreen-button\")\nexport class FullscreenButton extends VideoButton {\n  @connect(\"isFullscreen\")\n  isFullscreen: boolean;\n\n  override handleClick() {\n    this.command(Types.Command.toggleFullscreen);\n  }\n\n  override renderContent() {\n    return html`\n      <slot name=\"icon:${this.isFullscreen ? \"enabled\" : \"disabled\"}\">\n        ${this.isFullscreen ? icons.out : icons.in}\n      </slot>\n    `;\n  }\n\n  override renderTooltip() {\n    return html`\n      <slot name=\"tooltip:${this.isFullscreen ? \"enabled\" : \"disabled\"}\">\n        ${this.isFullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\"}\n      </slot>\n    `;\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M11 13C11 12.4477 11.4477 12 12 12H18C18.5523 12 19 12.4477 19 13V17C19 17.5523 18.5523 18 18 18H12C11.4477 18 11 17.5523 11 17V13ZM13 16V14H17V16H13Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M5 4C3.34315 4 2 5.34315 2 7V18C2 19.6569 3.34315 21 5 21H19C20.6569 21 22 19.6569 22 18V7C22 5.34315 20.6569 4 19 4H5ZM4 7C4 6.44772 4.44772 6 5 6H19C19.5523 6 20 6.44772 20 7V18C20 18.5523 19.5523 19 19 19H5C4.44772 19 4 18.5523 4 18V7Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M2 7C2 5.34315 3.34315 4 5 4H19C20.6569 4 22 5.34315 22 7V18C22 19.6569 20.6569 21 19 21H5C3.34315 21 2 19.6569 2 18V7ZM12 13C11.4477 13 11 13.4477 11 14V17C11 17.5523 11.4477 18 12 18H18C18.5523 18 19 17.5523 19 17V14C19 13.4477 18.5523 13 18 13H12Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport _pipIcon from \"../../icons/play-in-window-outline.svg?raw\";\nimport _pipActiveIcon from \"../../icons/play-in-window-solid.svg?raw\";\n\nconst pipIcon = unsafeSVG(_pipIcon);\nconst pipActiveIcon = unsafeSVG(_pipActiveIcon);\n\n@customElement(\"video-pip-button\")\nexport class PipButton extends VideoButton {\n  @connect(\"pipAvailable\")\n  pipAvailable: boolean;\n\n  @connect(\"pipActivated\")\n  pipActivated: boolean;\n\n  override handleClick() {\n    this.command(Types.Command.togglePip);\n  }\n\n  override renderContent() {\n    if (!this.pipAvailable) return null;\n    return html`\n      <slot name=\"icon:${this.pipActivated ? \"enabled\" : \"disabled\"}\">\n        ${this.pipActivated ? pipActiveIcon : pipIcon}\n      </slot>\n    `;\n  }\n\n  override renderTooltip() {\n    return html`\n      <slot name=\"tooltip:${this.pipActivated ? \"enabled\" : \"disabled\"}\">\n        ${this.pipActivated\n          ? \"Disable picture in picture\"\n          : \"Enable picture in picture\"}\n      </slot>\n    `;\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M9.86439 20.8563L9.2914 19.1374C8.51836 18.8438 7.80539 18.4283 7.176 17.9142L5.39854 18.278C4.97685 18.3643 4.54725 18.171 4.33203 17.7983L3.14477 15.7419C2.92956 15.3691 2.97702 14.9005 3.2626 14.5784L4.46554 13.2218C4.40153 12.824 4.36827 12.4159 4.36827 12C4.36827 11.5842 4.40153 11.1761 4.46553 10.7783L3.26255 9.42166C2.97697 9.09961 2.92951 8.63095 3.14473 8.25819L4.33198 6.2018C4.5472 5.82904 4.9768 5.63581 5.39849 5.7221L7.17599 6.08584C7.80539 5.57182 8.51836 5.15627 9.2914 4.8627L9.86439 3.14373C10.0005 2.73539 10.3826 2.45996 10.8131 2.45996H13.1876C13.618 2.45996 14.0002 2.73539 14.1363 3.14373L14.7093 4.8627C15.4823 5.15627 16.1953 5.57182 16.8247 6.08585L18.6022 5.72212C19.0239 5.63582 19.4535 5.82905 19.6687 6.20181L20.8559 8.2582C21.0711 8.63097 21.0237 9.09962 20.7381 9.42167L19.5351 10.7783C19.5991 11.1761 19.6324 11.5842 19.6324 12C19.6324 12.4159 19.5991 12.824 19.5351 13.2218L20.7381 14.5784C21.0236 14.9005 21.0711 15.3691 20.8559 15.7419L19.6686 17.7983C19.4534 18.171 19.0238 18.3643 18.6021 18.278L16.8247 17.9142C16.1953 18.4283 15.4823 18.8438 14.7093 19.1374L14.1363 20.8563C14.0002 21.2647 13.618 21.5401 13.1876 21.5401H10.8131C10.3826 21.5401 10.0005 21.2647 9.86439 20.8563ZM15.8163 12C15.8163 14.1076 14.1078 15.816 12.0003 15.816C9.89275 15.816 8.18425 14.1076 8.18425 12C8.18425 9.89248 9.89275 8.18399 12.0003 8.18399C14.1078 8.18399 15.8163 9.89248 15.8163 12Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M18.7071 7.29289C19.0976 7.68342 19.0976 8.31658 18.7071 8.70711L10.7071 16.7071C10.3166 17.0976 9.68342 17.0976 9.29289 16.7071L5.29289 12.7071C4.90237 12.3166 4.90237 11.6834 5.29289 11.2929C5.68342 10.9024 6.31658 10.9024 6.70711 11.2929L10 14.5858L17.2929 7.29289C17.6834 6.90237 18.3166 6.90237 18.7071 7.29289Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M14.6247 6.21917C15.056 6.56418 15.1259 7.19347 14.7809 7.62474L11.2806 12L14.7809 16.3753C15.1259 16.8066 15.056 17.4359 14.6247 17.7809C14.1934 18.1259 13.5641 18.056 13.2191 17.6247L9.21913 12.6247C8.92696 12.2595 8.92696 11.7405 9.21913 11.3753L13.2191 6.37534C13.5641 5.94408 14.1934 5.87416 14.6247 6.21917Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\nimport _settingsIcon from \"../../icons/settings-solid.svg?raw\";\nimport _checkmarkIcon from \"../../icons/checkmark.svg?raw\";\nimport _chevronIcon from \"../../icons/chevron-left.svg?raw\";\nimport \"../video-menu\";\nimport type { VideoMenu } from \"../video-menu\";\nimport { emit } from \"../../helpers/event\";\n\nconst icons = {\n  settings: unsafeSVG(_settingsIcon),\n  check: unsafeSVG(_checkmarkIcon),\n  chevron: unsafeSVG(_chevronIcon),\n};\n\ntype Menu = \"shortcuts\" | \"rate\" | \"quality\" | \"audio\";\n\n@customElement(\"video-settings-button\")\nexport class SubtitlesButton extends VideoButton {\n  @property({\n    type: Array,\n    converter: (v) => v.split(\",\").map((v) => v.trim()),\n  })\n  settings: Menu[] = [\"shortcuts\", \"rate\", \"quality\", \"audio\"];\n\n  @property({ type: Object })\n  translation: Record<string, any> = {};\n\n  @connect(\"playbackRate\")\n  playbackRate: number;\n\n  @connect(\"activeQualityLevel\")\n  qualityLevel: number;\n\n  @connect(\"qualityLevels\")\n  qualityLevels: Types.State[\"qualityLevels\"];\n\n  @connect(\"audioTracks\")\n  audioTracks: Types.State[\"audioTracks\"];\n\n  @connect(\"activeAudioTrackId\")\n  activeAudioTrackId: Types.State[\"activeAudioTrackId\"];\n\n  @state()\n  activeMenu: Menu;\n\n  connectedCallback() {\n    super.connectedCallback();\n    if (this.isSingleMenuItem) {\n      this.activeMenu = this.settings[0];\n    }\n  }\n\n  playbackRates = [0.5, 0.75, 1, 1.25, 1.5, 2];\n\n  shortcuts = [\n    {\n      label: \"Play/Pause\",\n      value: \"toggle-play\",\n      iconAfter: html`<code>Space</code>`,\n    },\n    {\n      label: \"Enter fullscreen\",\n      value: \"enter-fullscreen\",\n      iconAfter: html`<code>Enter</code>`,\n    },\n    {\n      label: \"Exit fullscreen\",\n      value: \"exit-fullscreen\",\n      iconAfter: html`<code>Esc</code>`,\n    },\n    {\n      label: \"Rewind\",\n      value: \"rewind\",\n      iconAfter: html`<code>←</code><code>→</code>`,\n    },\n    {\n      label: \"Change volume\",\n      value: \"volume\",\n      iconAfter: html`<code>↓</code><code>↑</code>`,\n    },\n    {\n      label: \"Mute\",\n      value: \"mute\",\n      iconAfter: html`<code>M</code>`,\n    },\n  ];\n\n  override handleClick = () => {\n    if (this.menuPopper) return this.destroyMenu();\n    this.destroyTooltip();\n    this.createMenu();\n    document.addEventListener(\"click\", this.removeMenu);\n  };\n\n  override renderContent() {\n    return html` <slot name=\"icon\"> ${icons.settings} </slot> `;\n  }\n\n  override renderTooltip() {\n    return html`<slot name=\"tooltip\">Settings</slot>`;\n  }\n\n  override renderMenu = () => {\n    return html`\n      <slot name=\"menu\">\n        <video-menu\n          title=${this.selectedMenuLabel}\n          @menu-item-click=${this.handleItemClick}\n          .items=${this.translateLabels(this.renderMenuItems())}\n        >\n        </video-menu>\n      </slot>\n    `;\n  };\n\n  removeMenu = (e?: PointerEvent) => {\n    if (!e || e.target !== this) {\n      this.destroyMenu();\n      this.selectMenu();\n      document.removeEventListener(\"click\", this.removeMenu);\n    }\n  };\n\n  handleItemClick = ({ detail }: CustomEvent<{ value: any }>) => {\n    const value = detail.value;\n    if (value === \"back\") return this.selectMenu();\n    switch (this.activeMenu) {\n      case \"rate\":\n        return this.selectRate(value);\n      case \"quality\":\n        return this.setQuality(value);\n      case \"audio\":\n        return this.selectAudio(value);\n      default:\n        return this.selectMenu(value);\n    }\n  };\n\n  translateLabels(items: any[]) {\n    return items.map((i: any) => {\n      if (!this.translation[i.value]) return i;\n      return {\n        ...i,\n        label: this.translation[i.value],\n      };\n    });\n  }\n\n  renderMenuItems = (): any => {\n    switch (this.activeMenu) {\n      case \"rate\":\n        return this.rateMenuItems;\n      case \"shortcuts\":\n        return this.shortcutsMenuItems;\n      case \"quality\":\n        return this.qualityMenuItems;\n      case \"audio\":\n        return this.audioMenuItems;\n      default:\n        return this.mainMenuItems;\n    }\n  };\n\n  selectRate = (playbackRate: number) => {\n    this.command(Types.Command.setPlaybackRate, { playbackRate });\n    this.removeMenu();\n  };\n\n  setQuality = (level: string) => {\n    this.command(Types.Command.setQualityLevel, { level: Number(level) });\n    this.removeMenu();\n  };\n\n  selectAudio = (id: string) => {\n    this.command(Types.Command.enableAudioTrack, { trackId: id });\n    this.removeMenu();\n  }\n\n  selectMenu(menu?: Menu) {\n    this.activeMenu = this.isSingleMenuItem ? this.settings[0] : menu;\n\n    // We need to trigger resize event to update the menu position\n    Promise.resolve().then(() => emit(this, \"resize\"));\n  }\n\n\n  get isSingleMenuItem() {\n    return this.settings.length === 1;\n  }\n\n  get rateMenuItems(): any {\n    const items = this.playbackRates.map((rate) => ({\n      label: `${rate}x`,\n      value: rate,\n      iconAfter: this.playbackRate === rate ? icons.check : undefined,\n      isActive: this.playbackRate === rate,\n    }));\n    if (this.isSingleMenuItem) return items;\n    return [\n      {\n        label: \"back\",\n        iconBefore: icons.chevron,\n        value: \"back\",\n      },\n      ...items,\n    ];\n  }\n\n  get mainMenuItems() {\n    const menu: VideoMenu[\"items\"] = [];\n    if (this.settings.includes(\"shortcuts\"))\n      menu.push({\n        label: \"Shortcuts\",\n        value: \"shortcuts\",\n      });\n    if (this.settings.includes(\"rate\"))\n      menu.push({\n        label: \"Playback Rate\",\n        value: \"rate\",\n        iconAfter: `${this.playbackRate}x`,\n      });\n\n    if (this.settings.includes(\"audio\") && this.audioTracks?.length && this.activeAudioTrackId) {\n      menu.push({\n        label: \"Audio\",\n        value: \"audio\",\n        iconAfter: this.audioTracks.find(t => t.id === this.activeAudioTrackId)?.label,\n      });\n    }\n\n    if (this.settings.includes(\"quality\") && this.qualityLevels?.length)\n      menu.push({\n        label: \"Quality\",\n        value: \"quality\",\n        iconAfter: this.qualityLevel,\n      });\n\n\n    return menu;\n  }\n\n  get selectedMenuLabel() {\n    if (!this.activeMenu || !this.isSingleMenuItem) return \"\";\n    return this.mainMenuItems.find((m) => m.value === this.activeMenu).label;\n  }\n\n  get shortcutsMenuItems(): any {\n    if (this.isSingleMenuItem) return this.shortcuts;\n    return [\n      {\n        label: \"back\",\n        iconBefore: icons.chevron,\n        value: \"back\",\n      },\n      ...this.shortcuts,\n    ];\n  }\n\n  get qualityMenuItems(): any {\n    const items = [\n      {\n        label: \"auto\",\n        iconAfter: this.qualityLevel === -1 ? icons.check : undefined,\n        isActive: this.qualityLevel === -1,\n        value: -1,\n      },\n      ...this.qualityLevels.map((level) => ({\n        label: `${level.name}p`,\n        value: level.name,\n        iconAfter:\n          this.qualityLevel === Number(level.name) ? icons.check : undefined,\n        isActive: this.qualityLevel === Number(level.name),\n      })),\n    ];\n    if (this.isSingleMenuItem) return items;\n    return [\n      {\n        label: \"back\",\n        iconBefore: icons.chevron,\n        value: \"back\",\n      },\n      ...items,\n    ];\n  }\n\n  get audioMenuItems(): any {\n    const items = this.audioTracks.map((track) => ({\n      label: track.label,\n      value: track.id,\n      iconAfter: this.activeAudioTrackId === track.id ? icons.check : undefined,\n      isActive: this.activeAudioTrackId === track.id,\n    }));\n    if (this.isSingleMenuItem) return items;\n    return [\n      {\n        label: \"back\",\n        iconBefore: icons.chevron,\n        value: \"back\",\n      },\n      ...items,\n    ];\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M20 4H4C2.89543 4 2 4.89543 2 6V18C2 19.1046 2.89543 20 4 20H20C21.1046 20 22 19.1046 22 18V6C22 4.89543 21.1046 4 20 4ZM6 10H9V12H6V10ZM18 14H15V16H18V14ZM11 10H18V12H11V10ZM13 14H6V16H13V14Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M6 10H9V12H6V10Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M18 14H15V16H18V14Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M11 10H18V12H11V10Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M13 14H6V16H13V14Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M4 4H20C21.1046 4 22 4.89543 22 6V18C22 19.1046 21.1046 20 20 20H4C2.89543 20 2 19.1046 2 18V6C2 4.89543 2.89543 4 4 4ZM20 6H4V18H20V6Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { connect, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\nimport { State } from \"../../types\";\nimport solidIcon from \"../../icons/subtitles-solid.svg?raw\";\nimport outlineIcon from \"../../icons/subtitles-outline.svg?raw\";\nimport checkIcon from \"../../icons/checkmark.svg?raw\";\n\nimport \"../video-menu\";\n\nconst icons = {\n  outline: unsafeSVG(outlineIcon),\n  solid: unsafeSVG(solidIcon),\n  check: unsafeSVG(checkIcon),\n};\n\n@customElement(\"video-subtitles-button\")\nexport class SubtitlesButton extends VideoButton {\n  @connect(\"activeTextTrackId\")\n  activeTrackId: string;\n\n  @connect(\"textTracks\")\n  textTracks: State[\"textTracks\"];\n\n  @property({ type: Object })\n  translation: Record<string, string> = {};\n\n  override handleClick = () => {\n    if (this.menuPopper) return this.destroyMenu();\n    this.destroyTooltip();\n    this.createMenu();\n    document.addEventListener(\"click\", this.removeMenu);\n  };\n\n  override renderContent() {\n    if (!this.textTracks?.length) return null;\n\n    return html`\n      <slot name=\"icon:${this.activeTrackId ? \"enabled\" : \"disabled\"}\">\n        ${this.activeTrackId ? icons.solid : icons.outline}\n      </slot>\n    `;\n  }\n\n  override renderTooltip() {\n    return html` <slot name=\"tooltip\"> Subtitles </slot> `;\n  }\n\n  override renderMenu = () => {\n    return html`\n      <slot name=\"menu\">\n        <video-menu\n          @menu-item-click=${this.handleItemClick}\n          .items=${this.translateLabels(this.getMenuItems)}\n        >\n        </video-menu>\n      </slot>\n    `;\n  };\n\n  translateLabels(items: any[]) {\n    return items.map((i: any) => {\n      if (!this.translation[i.label]) return i;\n      i.label = this.translation[i.label];\n      return i;\n    });\n  }\n\n  removeMenu = (e?: PointerEvent) => {\n    if (!e || e.target !== this) {\n      this.destroyMenu();\n      document.removeEventListener(\"click\", this.removeMenu);\n    }\n  };\n\n  handleItemClick = (e: any) => {\n    const trackId = e.detail.value;\n    this.command(Types.Command.enableTextTrack, {\n      trackId: trackId === \"off\" ? \"\" : trackId,\n    });\n    this.removeMenu();\n  };\n\n  get getMenuItems(): any {\n    const active = this.activeTrackId || \"off\";\n    return [{ label: \"Off\", lang: \"\", id: \"off\" }, ...(this.textTracks || [])].map(\n      (track) => ({\n        ...track,\n        value: track.id,\n        isActive: active === track.id,\n        iconAfter: active === track.id ? icons.check : null,\n      }),\n    );\n  }\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M10.2567 3.93705C10.8698 3.25583 12 3.68953 12 4.60602V19.3941C12 20.3106 10.8698 20.7443 10.2567 20.0631L7 16.4445H3C2.44772 16.4445 2 15.9968 2 15.4445V8.55561C2 8.00333 2.44772 7.55561 3 7.55561H7L10.2567 3.93705Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M16.2 7.71522C15.8057 7.3286 15.1725 7.33489 14.7859 7.72928C14.3993 8.12366 14.4056 8.7568 14.8 9.14342C15.5417 9.87055 16 10.8809 16 12C16 13.1192 15.5417 14.1295 14.8 14.8567C14.4056 15.2433 14.3993 15.8764 14.7859 16.2708C15.1725 16.6652 15.8057 16.6715 16.2 16.2849C17.3097 15.1971 18 13.6783 18 12C18 10.3218 17.3097 8.80301 16.2 7.71522Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M12 4.60602C12 3.68953 10.8698 3.25583 10.2567 3.93705L7 7.55561H3C2.44772 7.55561 2 8.00333 2 8.55561V15.4445C2 15.9968 2.44772 16.4445 3 16.4445H7L10.2567 20.0631C10.8698 20.7443 12 20.3106 12 19.3941V4.60602Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M10.2567 3.93705C10.8698 3.25583 12 3.68953 12 4.60602V19.3941C12 20.3106 10.8698 20.7443 10.2567 20.0631L7 16.4445H3C2.44772 16.4445 2 15.9968 2 15.4445V8.55561C2 8.00333 2.44772 7.55561 3 7.55561H7L10.2567 3.93705Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M17.7071 9.29295C17.3166 8.90243 16.6834 8.90243 16.2929 9.29295C15.9024 9.68348 15.9024 10.3166 16.2929 10.7072L17.5858 12.0001L16.2929 13.293C15.9024 13.6835 15.9024 14.3166 16.2929 14.7072C16.6834 15.0977 17.3166 15.0977 17.7071 14.7072L19 13.4143L20.2929 14.7072C20.6834 15.0977 21.3166 15.0977 21.7071 14.7072C22.0976 14.3166 22.0976 13.6835 21.7071 13.293L20.4142 12.0001L21.7071 10.7072C22.0976 10.3166 22.0976 9.68348 21.7071 9.29295C21.3166 8.90243 20.6834 8.90243 20.2929 9.29295L19 10.5858L17.7071 9.29295Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<path d=\\\"M12 4.60602C12 3.68953 10.8698 3.25583 10.2567 3.93705L7 7.55561H3C2.44772 7.55561 2 8.00333 2 8.55561V15.4445C2 15.9968 2.44772 16.4445 3 16.4445H7L10.2567 20.0631C10.8698 20.7443 12 20.3106 12 19.3941V4.60602Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M17.5028 4.8083C17.8849 4.40948 18.5179 4.39589 18.9167 4.77793C20.8156 6.59697 22 9.16105 22 12.0001C22 14.6833 20.9418 17.1216 19.2221 18.9168C18.8401 19.3156 18.2071 19.3292 17.8082 18.9472C17.4094 18.5651 17.3958 17.9321 17.7779 17.5333C19.1553 16.0954 20 14.1474 20 12.0001C20 9.72861 19.0547 7.67965 17.5332 6.22219C17.1344 5.84014 17.1208 5.20712 17.5028 4.8083Z\\\" fill=\\\"Currentcolor\\\"/>\\n<path d=\\\"M16.2 7.71522C15.8057 7.3286 15.1725 7.33489 14.7859 7.72928C14.3993 8.12366 14.4056 8.7568 14.8 9.14342C15.5417 9.87055 16 10.8809 16 12C16 13.1192 15.5417 14.1295 14.8 14.8567C14.4056 15.2433 14.3993 15.8764 14.7859 16.2708C15.1725 16.6652 15.8057 16.6715 16.2 16.2849C17.3097 15.1971 18 13.6783 18 12C18 10.3218 17.3097 8.80301 16.2 7.71522Z\\\" fill=\\\"Currentcolor\\\"/>\\n</svg>\\n\"","import { html } from \"lit\";\nimport { unsafeSVG } from \"lit/directives/unsafe-svg.js\";\nimport { customElement } from \"lit/decorators.js\";\nimport { connect, createCommand, Types } from \"../../state\";\nimport { VideoButton } from \"../video-button\";\n\nimport _midIcon from \"../../icons/volume-mid-solid.svg?raw\";\nimport _minIcon from \"../../icons/volume-min-solid.svg?raw\";\nimport _muteIcon from \"../../icons/volume-mute-solid.svg?raw\";\nimport _maxIcon from \"../../icons/volume-max-solid.svg?raw\";\n\nconst icons = {\n  mid: unsafeSVG(_midIcon),\n  min: unsafeSVG(_minIcon),\n  muted: unsafeSVG(_muteIcon),\n  max: unsafeSVG(_maxIcon),\n};\n\n@customElement(\"video-volume-button\")\nexport class VolumeButton extends VideoButton {\n  public command = createCommand(this);\n\n  @connect(\"volume\")\n  volume: number;\n\n  @connect(\"isMuted\")\n  isMuted: boolean;\n\n  override handleClick() {\n    this.command(Types.Command.toggleMuted);\n  }\n\n  override renderContent() {\n    const level = this.getVolumeLevel();\n    return html` <slot name=\"icon:${level}\"> ${icons[level]} </slot> `;\n  }\n\n  override renderTooltip() {\n    return html`\n      <slot name=\"tooltip:${this.isMuted ? \"unmute\" : \"mute\"}\">\n        ${this.isMuted ? \"Unmute\" : \"Mute\"}\n      </slot>\n    `;\n  }\n\n  getVolumeLevel() {\n    const { volume, isMuted } = this;\n\n    if (isMuted) return \"muted\";\n    if (volume > 0.7) return \"max\";\n    if (volume > 0.3) return \"mid\";\n    return \"min\";\n  }\n}\n","export * as types from \"./types\";\nexport const components = import.meta.glob(\"./components/**/*.component.ts\", {\n  eager: true,\n});\nexport const buttons = import.meta.glob(\"./components/buttons/*.ts\", {\n  eager: true,\n});\n"],"names":["t","o","e","s","n$6","r","n","S","c","i","h","a","l","p","d","u","f","y","b","_a","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","node","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","state","name","style","attributes","value","effect","_ref2","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","max","min","round","getUAString","uaData","item","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","width","height","getLayoutRect","contains","parent","child","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","v","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","key","toPaddingObject","padding","arrow","_state$modifiersData$","options","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","position","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","target","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","data","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","result","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","debounce","fn","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","closestElement","selector","base","__Closest","el","found","_","g","$","w","T","A","E","C","P","V","k","H","I","R","N","_b","M","L","Z","e$4","isEqual","ContextConsumer","host","context","field","event","ContextEvent","unsubscribe","_host","connectConsumer","protoOrTarget","nameOrContext","Command","Action","Event","KeySystems","stateMapper","params","initialState","ms","val","type","parse","fmtLong","fmtShort","str","match","msAbs","plural","isPlural","setup","env","createDebug","coerce","disable","enable","enabled","require$$0","destroy","selectColor","namespace","prevTime","enableOverride","namespacesCache","enabledCache","debug","self","curr","format","formatter","extend","delimiter","newDebug","namespaces","split","toNamespace","regexp","common","exports","formatArgs","save","load","useColors","localstorage","warned","module","lastC","formatters","error","commandDebug","_debug","stateDebug","mapState","action","CachedCommand","cache","command","dependencies","callback","meta","res","StateController","ContextProvider","prevState","cmd","CommandRegisterEvent","Types.Event","CommandEvent","debugCommand","EventListener","reject","fx","createCommand","_command","createCommandListener","requirements","protoOrValue","isIos","device","ua","isWebkit","isMobileSafari","dispatch","connect","listen","createState","eventCode","codes","code","emit","detail","isMobile","VideoButton","LitElement","content","tooltip","menu","ifDefined","when","unsafeCSS","styles","__decorateClass","query","customElement","i$1","e$2","_castIcon","castIcon","unsafeSVG","VideoChromecast","tries","time","volume","session","media","request","track","subtitlesLanguageIdx","id","_c","err","script","comparatorsRegexp","operatorRegexp","typeValue","createCompare","comparator","needed","VideoCondition","string","compare","isEq","getBufferedEnd","video","buffered","currentTime","connectMuxData","initFairPlayDRM","videoElement","fairPlayOptions","certificateUrl","licenseServerUrl","fairPlayCertificate","loadFairPlayCertificate","fairplayEncryptedCallback","initDataType","initData","message","response","getLicenseResponse","createProvider","playIcon","pauseIcon","icons","PlayButton","Types.Command","getCueText","wrapper","mapCueListToState","cueList","cue","func","wait","timeout","subtitlesDebug","buildTrackId","buildHlsTrackId","videoTextTtracksManager","hls","trackElements","langToSrcMapping","isTrackNative","getTracks","pageLanguageCode","aMatches","bMatches","trackId","subtitlesController","defaultTextTrackId","activeTextTrackId","tracksManager","onCueChange","targetTrackId","Types.Action","cues","updateTracksListSate","onTextTrackAdded","activeTrack","sourcesController","sources","supportedSource","activeSource","audiosDebug","buildNativeAudioTrackId","nativeController","activeAudioTrackId","enableAudioTrack","onTrackAdded","audioTracks","onTracksChanged","buildHlsAudioTrackId","hlsController","newHlsTrackId","audiosController","INIT_NATIVE_HLS_RE","getVideoDuration","VideoContainer","seekable","playbackRate","level","qualityLevelIdx","HLS","_d","_e","levels","activeQualityLevel","duration","currentVal","savedSettings","isSourceSupported","autoplay","muted","poster","title","xPercentage","queryAssignedElements","eventOptions","parseValue","dashSeparatorRe","formatName","parsePropNameValue","prop","DependentPropsMixin","superClass","WithDependentPropsElement","dependency","linkedProps","depName","depValue","parsedLinkedProps","propName","propVal","_changedProps","dependencyProp","linkedProp","VideoControls","entries","entry","blockSize","_changedProperties","VideoCues","unsafeStatic","VideoErrorsManager","persist","attempts","ok","VideoLiveSign","classMap","VideoMenu","FullscreenController","isFullscreen","prefix","fullscreenContainer","_document","IdleController","KeyboardController","props","watch","resolvedOptions","proto","decoratedFnName","update","propNameKey","changedProps","oldValue","newValue","VideoPlayer","idle","VideoProgress","isDeepAssigned","children","generateGetBoundingClientRect","VideoSlider","percents","clientX","touches","xPosition","pad","num","size","timeAsString","timeInSeconds","hours","minutes","seconds","segmentConverter","values","VideoTimeline","hoveredTime","text","sliderLength","segmentShift","thumbSift","segment","length","disabled","nothing","VideoTimer","VideoVolumeControl","_airplayIcon","airplayIcon","AirplayButton","_backwardIcon","backwardIcon","BackwardButton","ChromeCastButton","_forwardIcon","forwardIcon","ForwardButton","enterIcon","outIcon","FullscreenButton","_pipIcon","_pipActiveIcon","pipIcon","pipActiveIcon","PipButton","_settingsIcon","checkIcon","_chevronIcon","_checkmarkIcon","SubtitlesButton","items","rate","SubtitlesButton$1","solidIcon","outlineIcon","active","_midIcon","_minIcon","_muteIcon","_maxIcon","VolumeButton","isMuted","components","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","buttons","__vite_glob_1_0","__vite_glob_1_1","__vite_glob_1_2","__vite_glob_1_3","__vite_glob_1_4","__vite_glob_1_5","__vite_glob_1_6","__vite_glob_1_7","__vite_glob_1_8","__vite_glob_1_9"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,66,67,68,69,70,75,76,77,87,88,89,110,113,125]}