import{d3 as W}from"./index-Cq8aT7Ma.js";const L="https://player.twitch.tv",x=/(?:www\.|go\.)?twitch\.tv\/(?:videos?\/|\?video=)(\d+)($|\?)/,U=/(?:www\.|go\.)?twitch\.tv\/([a-zA-Z0-9_]+)($|\?)/,N={IDLE:"Idle",ENDED:"Ended"},v={PAUSE:2,PLAY:3,SEEK:4,SET_MUTED:10,SET_VOLUME:11};function k(e,t={}){const i={src:D(e,t),frameborder:"0",width:"100%",height:"100%",allow:"accelerometer; fullscreen; autoplay; encrypted-media; picture-in-picture;",sandbox:"allow-modals allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox",scrolling:"no"};return t.config&&(i["data-config"]=JSON.stringify(t.config)),`
    <style>
      :host {
        display: inline-block;
        min-width: 300px;
        min-height: 150px;
        position: relative;
      }
      iframe {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
      }
      :host(:not([controls])) {
        pointer-events: none;
      }
    </style>
    <iframe${B(i)}></iframe>
  `}function D(e,t){var i;if(!e.src)return;const n=e.src.match(x),l=e.src.match(U),u={parent:(i=globalThis.location)==null?void 0:i.hostname,controls:e.controls===""?null:!1,autoplay:e.autoplay===""?null:!1,muted:e.muted,preload:e.preload,...t.config};if(n){const r=n[1];return`${L}/?video=v${r}&${C(u)}`}else if(l){const r=l[1];return`${L}/?channel=${r}&${C(u)}`}return""}class $ extends(globalThis.HTMLElement??class{}){static getTemplateHTML=k;static shadowRootOptions={mode:"open"};static observedAttributes=["autoplay","controls","loop","muted","playsinline","preload","src"];loadComplete=new H;#o;#r;#e;#t={};#u=0;#c=!1;#h=1;#a=!this.autoplay;#n=!1;#s=0;#l=null;constructor(){super(),this.#f("config")}get config(){return this.#l}set config(t){this.#l=t}async load(){if(this.#o)return;this.shadowRoot||this.attachShadow({mode:"open"});const t=!this.#r;if(this.#r&&(this.loadComplete=new H),this.#r=!0,await(this.#o=Promise.resolve()),this.#o=null,this.#s=0,this.dispatchEvent(new Event("emptied")),!this.src){this.shadowRoot.innerHTML="",globalThis.removeEventListener("message",this.#d);return}this.dispatchEvent(new Event("loadstart"));let i=this.shadowRoot.querySelector("iframe");const n=j(this.attributes);t&&i&&(this.#l=JSON.parse(i.getAttribute("data-config")||"{}")),(!i?.src||i.src!==D(n,this))&&(this.shadowRoot.innerHTML=k(n,this),i=this.shadowRoot.querySelector("iframe")),this.#e=i,globalThis.addEventListener("message",this.#d)}attributeChangedCallback(t,i,n){if(i!==n)switch(t){case"src":case"controls":{this.load();break}}}get src(){return this.getAttribute("src")}set src(t){this.setAttribute("src",t)}get readyState(){return this.#s}get seeking(){return this.#n}get buffered(){var t,i;return F(0,((i=(t=this.#t.stats)==null?void 0:t.videoStats)==null?void 0:i.bufferSize)??0)}get paused(){return this.#t.playback?this.#t.playback===N.IDLE:this.#a}get ended(){return this.#t.playback?this.#t.playback===N.ENDED:!1}get duration(){return this.#t.duration??NaN}get autoplay(){return this.hasAttribute("autoplay")}set autoplay(t){this.autoplay!=t&&this.toggleAttribute("autoplay",!!t)}get controls(){return this.hasAttribute("controls")}set controls(t){this.controls!=t&&this.toggleAttribute("controls",!!t)}get currentTime(){return this.#t.currentTime?this.#t.currentTime:this.#u}set currentTime(t){this.#u=t,this.loadComplete.then(()=>{this.#i(v.SEEK,t)})}get defaultMuted(){return this.hasAttribute("muted")}set defaultMuted(t){this.toggleAttribute("muted",!!t)}get loop(){return this.hasAttribute("loop")}set loop(t){this.toggleAttribute("loop",!!t)}get muted(){return this.#c}set muted(t){this.#c=t,this.loadComplete.then(()=>{this.#i(v.SET_MUTED,t)})}get volume(){return this.#h}set volume(t){this.#h=t,this.loadComplete.then(()=>{this.#i(v.SET_VOLUME,t)})}get playsInline(){return this.hasAttribute("playsinline")}set playsInline(t){this.toggleAttribute("playsinline",!!t)}play(){this.#a=!1,this.#i(v.PLAY)}pause(){this.#a=!0,this.#i(v.PAUSE)}#d=async t=>{var i,n,l,u;if(!this.#e.contentWindow)return;const{data:r,source:y}=t;if(y===this.#e.contentWindow){if(r.namespace==="twitch-embed")await new Promise(p=>setTimeout(p,10)),r.eventName==="ready"?(this.dispatchEvent(new Event("loadcomplete")),this.loadComplete.resolve(),this.#s=1,this.dispatchEvent(new Event("loadedmetadata"))):r.eventName==="seek"?(this.#n=!0,this.dispatchEvent(new Event("seeking"))):r.eventName==="playing"?(this.#n&&(this.#n=!1,this.dispatchEvent(new Event("seeked"))),this.#s=3,this.dispatchEvent(new Event("playing"))):this.dispatchEvent(new Event(r.eventName));else if(r.namespace==="twitch-embed-player-proxy"&&r.eventName==="UPDATE_STATE"){const p=this.#t.duration,g=this.#t.currentTime,d=this.#t.volume,w=this.#t.muted,E=(n=(i=this.#t.stats)==null?void 0:i.videoStats)==null?void 0:n.bufferSize;this.#t={...this.#t,...r.params},p!==this.#t.duration&&this.dispatchEvent(new Event("durationchange")),g!==this.#t.currentTime&&this.dispatchEvent(new Event("timeupdate")),(d!==this.#t.volume||w!==this.#t.muted)&&this.dispatchEvent(new Event("volumechange")),E!==((u=(l=this.#t.stats)==null?void 0:l.videoStats)==null?void 0:u.bufferSize)&&this.dispatchEvent(new Event("progress"))}}};#i(t,i){if(!this.#e.contentWindow)return;const n={eventName:t,params:i,namespace:"twitch-embed-player-proxy"};this.#e.contentWindow.postMessage(n,L)}#f(t){if(Object.prototype.hasOwnProperty.call(this,t)){const i=this[t];delete this[t],this[t]=i}}}function j(e){let t={};for(let i of e)t[i.name]=i.value;return t}function B(e){let t="";for(const i in e){const n=e[i];n===""?t+=` ${M(i)}`:t+=` ${M(i)}="${M(`${n}`)}"`}return t}function M(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/`/g,"&#x60;")}function C(e){return String(new URLSearchParams(z(e)))}function z(e){let t={};for(let i in e){let n=e[i];n===!0||n===""?t[i]=!0:n===!1?t[i]=!1:n!=null&&(t[i]=n)}return t}class H extends Promise{constructor(t=()=>{}){let i,n;super((l,u)=>{t(l,u),i=l,n=u}),this.resolve=i,this.reject=n}}function F(e,t){return Array.isArray(e)?_(e):t==null||t===0?_([[0,0]]):_([[e,t]])}function _(e){return Object.defineProperties(e,{start:{value:t=>e[t][0]},end:{value:t=>e[t][1]}}),e}globalThis.customElements&&!globalThis.customElements.get("twitch-video")&&globalThis.customElements.define("twitch-video",$);var q=$,V=new Set(["style","children","ref","key","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML"]),J={className:"class",htmlFor:"for"};function I(e){return e.toLowerCase()}function R(e){if(typeof e=="boolean")return e?"":void 0;if(typeof e!="function"&&!(typeof e=="object"&&e!==null))return e}function K({react:e,tagName:t,elementClass:i,events:n,displayName:l,defaultProps:u,toAttributeName:r=I,toAttributeValue:y=R}){const T=Number.parseInt(e.version)>=19,p=e.forwardRef((g,d)=>{var w,E;const c=e.useRef(null),A=e.useRef(new Map),S={},P={},f={},b={};for(const[s,o]of Object.entries(g)){if(V.has(s)){f[s]=o;continue}const a=r(J[s]??s);if(s in i.prototype&&!(s in(((w=globalThis.HTMLElement)==null?void 0:w.prototype)??{}))&&!((E=i.observedAttributes)!=null&&E.some(m=>m===a))){b[s]=o;continue}if(s.startsWith("on")){S[s]=o;continue}const h=y(o);if(a&&h!=null&&(P[a]=String(h),T||(f[a]=h)),a&&T){const m=R(o);h!==m?f[a]=h:f[a]=o}}if(typeof window<"u"){for(const s in S){const o=S[s],a=s.endsWith("Capture"),h=(n?.[s]??s.slice(2).toLowerCase()).slice(0,a?-7:void 0);e.useLayoutEffect(()=>{const m=c?.current;if(!(!m||typeof o!="function"))return m.addEventListener(h,o,a),()=>{m.removeEventListener(h,o,a)}},[c?.current,o])}e.useLayoutEffect(()=>{if(c.current===null)return;const s=new Map;for(const o in b)O(c.current,o,b[o]),A.current.delete(o),s.set(o,b[o]);for(const[o,a]of A.current)O(c.current,o,void 0);A.current=s})}if(typeof window>"u"&&i?.getTemplateHTML&&i?.shadowRootOptions){const{mode:s,delegatesFocus:o}=i.shadowRootOptions,a=e.createElement("template",{shadowrootmode:s,shadowrootdelegatesfocus:o,dangerouslySetInnerHTML:{__html:i.getTemplateHTML(P,g)}});f.children=[a,f.children]}return e.createElement(t,{...u,...f,ref:e.useCallback(s=>{c.current=s,typeof d=="function"?d(s):d!==null&&(d.current=s)},[d])})});return p.displayName=l??i.name,p}function O(e,t,i){var n;e[t]=i,i==null&&t in(((n=globalThis.HTMLElement)==null?void 0:n.prototype)??{})&&e.removeAttribute(t)}var Z=K({react:W,tagName:"twitch-video",elementClass:q,toAttributeName(e){return e==="muted"?"":e==="defaultMuted"?"muted":I(e)}});/*! Bundled license information:

ce-la-react/dist/ce-la-react.js:
  (**
   * @license
   * Copyright 2018 Google LLC
   * SPDX-License-Identifier: BSD-3-Clause
   *
   * Modified version of `@lit/react` for vanilla custom elements with support for SSR.
   *)
*/export{Z as default};
