@rs1/media-player
Version:
A smart media player for React, for audio and video content.
10 lines • 126 kB
JavaScript
import e,{useRef as t,useEffect as r,useState as o,useCallback as n,createContext as a,useMemo as i,useContext as l}from"react";import{Transition as s}from"transition-hook";function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}function u(e){var t,r,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(r=u(e[t]))&&(o&&(o+=" "),o+=r);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}function d(){for(var e,t,r=0,o="";r<arguments.length;)(e=arguments[r++])&&(t=u(e))&&(o&&(o+=" "),o+=t);return o}function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:250,r=!1;return function(){if(!r)return r=!0,setTimeout((()=>{r=!1}),t),e(...arguments)}}function p(e,r){let a,i;"number"==typeof e?(a=!1,i=e):void 0===e?(a=!1,i=300):(a=e,i=null!=r?r:300);const l=t(void 0),[s,c]=o(a);return[s,n(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:250,r=void 0;return function(){for(var o=arguments.length,n=new Array(o),a=0;a<o;a++)n[a]=arguments[a];clearTimeout(r),r=setTimeout((()=>{e(...n)}),t)}}((e=>{c(null!=e?e:!a),clearTimeout(l.current),l.current=setTimeout((()=>{c(a),l.current=void 0}),i)}),i),[i,a])]}function v(e,t,n,a){const i="number"!=typeof e&&"boolean"!=typeof e&&e?e:void 0,l="number"!=typeof t&&"boolean"!=typeof t&&t?t:void 0,s="boolean"==typeof e?e:"boolean"==typeof t?t:"boolean"==typeof n&&n,c="number"==typeof e?e:"number"==typeof t?t:"number"==typeof n?n:"number"==typeof a?a:3e3,[u,d]=o(!1),[m,p]=o(s);return r((()=>{var e;if(m)return;const t=()=>{d(!0)},r=()=>d(!1),o=()=>p(!0),n=null!=i?i:null===(e=window)||void 0===e?void 0:e.document;return n.addEventListener("mousemove",o),n.addEventListener("mousedown",o),n.addEventListener("click",o),n.addEventListener("touchend",o),n.addEventListener("keydown",o),l&&(l.addEventListener("mouseenter",t),l.addEventListener("mouseleave",r)),()=>{n.removeEventListener("mousemove",o),n.removeEventListener("mousedown",o),n.removeEventListener("click",o),n.removeEventListener("touchend",o),n.removeEventListener("keydown",o),l&&(l.removeEventListener("mouseenter",t),l.removeEventListener("mouseleave",r))}}),[m,i,l]),r((()=>{m&&setTimeout((()=>p(!1)),c)}),[m,c]),m||u}function f(e){let{onDoubleTap:o,onSingleTap:a,delay:i=300}=e;const l=t(null),s=t(0),c=n((()=>{s.current+=1,2===s.current?(l.current&&clearTimeout(l.current),l.current=null,s.current=0,o()):1===s.current&&(l.current&&clearTimeout(l.current),l.current=setTimeout((()=>{l.current=null,s.current=0,null==a||a()}),i))}),[o,a,i]);return r((()=>()=>{l.current&&(clearTimeout(l.current),l.current=null)}),[]),c}function w(e,t,r){return Math.min(Math.max(e,t),r)}function g(e){const t=[...e];for(let e=t.length-1;e>0;e--){const r=Math.floor(Math.random()*(e+1));[t[e],t[r]]=[t[r],t[e]]}return t}const y={BTT:{axis:"Y",scroll:"Top",start:"top",end:"height",reverse:!1},TTB:{axis:"Y",scroll:"Top",start:"bottom",end:"height",reverse:!0},RTL:{axis:"X",scroll:"Left",start:"right",end:"width",reverse:!1},LTR:{axis:"X",scroll:"Left",start:"left",end:"width",reverse:!0}};function h(e,t){var r,o,n,a,i;const l=e.target.getBoundingClientRect(),{axis:s,scroll:c,start:u,end:d,reverse:m}=y[t],{[u]:p,[d]:v}=l;return w(0,(m?1:-1)*(("X"===s?e.x:e.y)-p+(null!==(r=null===(o=window)||void 0===o?void 0:o[`page${s}Offset`])&&void 0!==r?r:((null===(n=document)||void 0===n?void 0:n.documentElement)||(null===(a=document)||void 0===a?void 0:a.body.parentNode)||(null===(i=document)||void 0===i?void 0:i.body)||{})["scroll"+c])),v)/v}function b(){for(var e=arguments.length,a=new Array(e),i=0;i<e;i++)a[i]=arguments[i];const[l=0,s={}]=a,{direction:c="LTR",onChange:u}=s,d=t(null),[p,v]=o(l),[f,g]=o(!1);r((()=>{v(l)}),[l]);const y=n((e=>{if(!d.current)return;const t=w(h({target:d.current,...e},c),0,.99);v(t),u&&u(t)}),[c,u]),b=n((e=>{const t="touchstart"===e.type?e.touches[0]:e;d.current=e.currentTarget,g(!0);const r=e=>{const t="touchmove"===e.type?e.touches[0]:e;y({x:t.pageX,y:t.pageY})},o=()=>{d.current=null,g(!1),document.removeEventListener("mousemove",r),document.removeEventListener("touchmove",r)};document.addEventListener("mousemove",m(r,25)),document.addEventListener("touchmove",m(r,25)),document.addEventListener("mouseup",o,{once:!0}),document.addEventListener("touchend",o,{once:!0}),y({x:t.pageX,y:t.pageY})}),[y]);return{value:p,props:{onMouseDown:b,onTouchStart:b},isSliding:f}}const k={xs:0,sm:576,md:768,lg:992,xl:1200},x=e=>Object.entries(e).filter((e=>{let[,t]=e;return"number"==typeof t})).sort(((e,t)=>{let[,r]=e,[,o]=t;return o-r})),C=e=>({...k,...e});function E(t,r,o){const[n,a]=e.useState((()=>{const e="object"!=typeof t||Array.isArray(t)?"object"!=typeof r||Array.isArray(r)?void 0:r:t,n=Array.isArray(t)?t:Array.isArray(r)?r:o,a="string"==typeof t&&t in k?t:void 0;return{default:a,breakpoint:a,breakpoints:x(e||k),needed:n}}));return e.useEffect((()=>{const e="object"!=typeof t||Array.isArray(t)?"object"!=typeof r||Array.isArray(r)?void 0:r:t;a((t=>({...t,breakpoints:x(e||k)})))}),[JSON.stringify(t),JSON.stringify(r)]),e.useEffect((()=>{const e=Array.isArray(t)?t:Array.isArray(r)?r:o;a((t=>({...t,needed:e})))}),[JSON.stringify(t),JSON.stringify(r),JSON.stringify(o)]),e.useEffect((()=>{const e=()=>{var e;const t=null===(e=window)||void 0===e?void 0:e.innerWidth;let r=void 0;for(const[e,o]of n.breakpoints)if((!n.needed||n.needed.some((t=>t===e)))&&t>o){r=e;break}a((e=>{var t;return{...e,breakpoint:null!==(t=r)&&void 0!==t?t:e.default}}))};var t;(void 0===n.needed||n.needed.some((e=>n.breakpoints.some((t=>{let[r]=t;return r===e})))))&&(null===(t=window)||void 0===t||t.addEventListener("resize",e),e());return()=>{var t;null===(t=window)||void 0===t||t.removeEventListener("resize",e)}}),[n.breakpoints,n.needed]),n.breakpoint}function P(){var e;const t=null===(e=window)||void 0===e?void 0:e.document,r=t&&"fullscreenEnabled"in t?"mdn":t&&"webkitFullscreenEnabled"in t?"webkit":t&&"webkitIsFullScreen"in t?"webkit-old":t&&"mozFullScreenEnabled"in t?"firefox":t&&"msFullscreenEnabled"in t?"explorer":"mdn",o=(()=>{if(!t)return!1;switch(r){case"mdn":return t.fullscreenEnabled;case"webkit":return t.webkitFullscreenEnabled;case"webkit-old":return t.webkitIsFullScreen;case"firefox":return t.mozFullScreenEnabled;case"explorer":return t.msFullscreenEnabled;default:return!1}})(),n=(()=>{switch(r){case"webkit":case"webkit-old":return"webkitfullscreenchange";case"firefox":return"mozfullscreenchange";case"explorer":return"MSFullscreenChange";case"mdn":default:return"fullscreenchange"}})(),a=(()=>{switch(r){case"webkit":case"webkit-old":return"webkitfullscreenerror";case"firefox":return"mozfullscreenerror";case"explorer":return"MSFullscreenError";case"mdn":default:return"fullscreenerror"}})();return{document:t,currentAPI:r,isFullscreenEnabled:o,onFullscreenEvent:n,onFullscreenErrorEvent:a}}function L(){let e=null;const{document:t,currentAPI:r}=P();return t?("mdn"===r?e=t.fullscreenElement:"webkit"===r?e=t.webkitFullscreenElement:"webkit-old"===r?e=t.webkitFullScreenElement:"firefox"===r?e=t.mozFullScreenElement:"explorer"===r&&(e=t.msFullscreenElement),e):e}async function S(e,t){if(!e)return;const{currentAPI:r,isFullscreenEnabled:o}=P(),n=/iPad|iPhone|iPod/.test(navigator.userAgent);if(t&&!o&&n&&"VIDEO"===t.tagName){const e=t;return null==e?void 0:e["webkitEnterFullscreen"in e?"webkitEnterFullscreen":"enterFullscreen"]()}const a=e;return"mdn"===r?a.requestFullscreen():"webkit"===r?a.webkitRequestFullscreen():"webkit-old"===r?a.webkitRequestFullScreen():"firefox"===r?a.mozRequestFullScreen():"explorer"===r?a.msRequestFullscreen():void 0}async function T(){const{document:e,currentAPI:t}=P();if(e)return"mdn"===t?e.exitFullscreen():"webkit"===t?e.webkitExitFullscreen():"webkit-old"===t?e.webkitCancelFullScreen():"firefox"===t?e.mozCancelFullScreen():"explorer"===t?e.msExitFullscreen():void 0}async function N(e,t){if(e)return L()?T():S(e,t)}function M(){const[e,n]=o(!1),a=t({request:S,exit:T,toggle:N,element:null,enabled:!1});return r((()=>{var e,t;const{isFullscreenEnabled:r,onFullscreenEvent:o,onFullscreenErrorEvent:i}=P();a.current.enabled=r;const l=()=>{const e=L();a.current.element=e,n(null!==e)};return null===(e=document)||void 0===e||e.addEventListener(o,l),null===(t=document)||void 0===t||t.addEventListener(i,l),()=>{var e,t;null===(e=document)||void 0===e||e.removeEventListener(o,l),null===(t=document)||void 0===t||t.removeEventListener(i,l)}}),[]),[e,a.current]}function j(){let e=!1;return window&&document&&(e=!!document.pictureInPictureEnabled),{isPiPEnabled:e}}function z(){var e,t;return null!==(e=null===(t=document)||void 0===t?void 0:t.pictureInPictureElement)&&void 0!==e?e:null}async function A(e){e&&e.requestPictureInPicture()}async function Z(){z()&&document.exitPictureInPicture()}async function $(e){e&&(z()?await Z():await A(e))}function F(){const[e,n]=o(!1),a=t({request:A,exit:Z,toggle:$,element:null,enabled:!1});return r((()=>{const{isPiPEnabled:e}=j();a.current.enabled=e;const t=()=>{const e=z();a.current.element=e,n(null!==e)};return document.addEventListener("enterpictureinpicture",t),document.addEventListener("leavepictureinpicture",t),()=>{document.removeEventListener("enterpictureinpicture",t),document.removeEventListener("leavepictureinpicture",t)}}),[]),[e,a.current]}function D(t){const[r,o]=e.useState(!1),[n,a]=e.useState(!1);return e.useEffect((()=>{const e=()=>{o(!!t&&t.webkitCurrentPlaybackTargetIsWireless)};if(!window.WebKitPlaybackTargetAvailabilityEvent)return void a(!1);const r=e=>{a("available"===e.availability)};return null==t||t.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",e),null==t||t.addEventListener("webkitplaybacktargetavailabilitychanged",r),()=>{null==t||t.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",e),null==t||t.removeEventListener("webkitplaybacktargetavailabilitychanged",r)}}),[t]),{isActive:r,isAvailable:n,airPlayAPI:{showPicker:()=>async function(e){e&&e.webkitShowPlaybackTargetPicker()}(t)}}}function I(e){const[a,i]=o("disconnected"),[l,s]=o(!1),c=t(null),u=n((function(){i(this.state)}),[]),d=n((()=>{l&&e&&e.remote&&(e.remote.prompt().then((()=>{u.call(e.remote)})).catch((()=>{u.call(e.remote),s(!1)})),i("connecting"))}),[e,l]);return r((()=>{if(e&&e.remote)return c.current&&e.remote.cancelWatchAvailability(c.current),e.remote.watchAvailability((e=>{s(!!e)})).then((e=>{c.current=e})).catch((()=>{s(!1)})),e.remote.onconnecting=u,e.remote.onconnect=u,e.remote.ondisconnect=u,()=>{c.current&&e.remote.cancelWatchAvailability(c.current),e.remote.onconnecting=null,e.remote.onconnect=null,e.remote.ondisconnect=null}}),[e]),{state:a,isAvailable:l,requestRemotePlayback:d}}function R(){const e=t(null);return{initStream:n((()=>{e.current||(e.current=function(){if("undefined"==typeof window)return null;const e=window.AudioContext||window.webkitAudioContext||!1;if(!e)return null;const t=new e,r=2*t.sampleRate,o=t.createBuffer(1,r,t.sampleRate),n=o.getChannelData(0);for(let e=0;e<r;e++)n[e]=0;const a=t.createBufferSource();a.buffer=o,a.loop=!0;const i=t.createMediaStreamDestination();a.connect(i);const l=document.createElement("audio");return l.style.display="none",document.body.appendChild(l),l.srcObject=i.stream,l}())}),[]),playStream:n((()=>{e.current&&e.current.play()}),[]),stream:e.current}}const O={volume:["mute"],playback:["previous","backward10","playpause","forward10","next"],playlist:["playlist","shuffle","repeat"],metadata:["metadata"],time:["time","seekbar","remaining"],screen:["airplay","pictureinpicture","fullscreen"],state:["loading","stalled","error"]},B={extended:[[["playlist","shuffle","error"],O.playback,["stalled","repeat"]],O.time,[["mute","airplay"],"metadata",["pictureinpicture","fullscreen"]]],compact:[[O.volume,O.playback,O.screen],[O.time]],mini:[[O.metadata],["error",O.playback,"stalled"],[O.time],["mute","playlist","shuffle","repeat","airplay","pictureinpicture","fullscreen"]]},V={aspectRatio:"stretch",playerMode:"auto",playerBackground:"flat",breakpoints:k,autoHideControls:3e3,controls:{xs:B.mini,md:B.extended},controlsMetadataSeparator:" — ",autoPlay:!1,loop:!1,muted:!1,canControlWithKeyboard:!0,canShuffle:!0,canLoop:!0,canPause:!0,canSeek:!0,canMute:!0,canChangeVolume:!0,canChangePlaybackRate:!0,canFullscreen:!0,canPictureInPicture:!0,canAirPlay:!0,canRemotePlay:!0,canTapToPause:!0,canDoubleTapToSeek:!0},Y={default:V};function q(e){return{...V,..."string"==typeof e&&Object.prototype.hasOwnProperty.call(Y,e)?Y[e]:"object"==typeof e?e:{}}}const X=a(Y.base);function K(t){const{config:n={},children:a}=t,i=function(e){const[t,n]=o(q(e));return r((()=>{n(q(e))}),[JSON.stringify(e)]),t}(n);return e.createElement(X.Provider,{value:i},a)}function W(e){const r=t(null),o=t(null),{onPlaybackChange:a,onTrackChange:i,keepAlive:l=!1}=e,s=R(),c=n((e=>{e?(r.current=e,o.current={current:e,isPlaying:null!=o&&o.current?o.current.isPlaying:!e.paused,isSeeking:!1,getTime:()=>!e||isNaN(e.currentTime)?0:e.currentTime,getDuration:()=>!e||isNaN(e.duration)?0:e.duration,getProgress:()=>!e||isNaN(e.duration)||isNaN(e.currentTime)?0:e.currentTime/e.duration,getBuffered:()=>e&&e.buffered.length&&!isNaN(e.duration)?e.buffered.end(e.buffered.length-1)/e.duration:0,getMuted:()=>!!e&&(e.muted||0===e.volume),getVolume:()=>e?e.muted?0:isNaN(e.volume)?1:e.volume:1,getPlaybackRate:()=>!e||isNaN(e.playbackRate)?1:e.playbackRate,setTime:async t=>{var r,n;if(!e)return;if(o.current){const r=isNaN(e.currentTime)?0:e.currentTime;o.current.isSeeking=t>r?"forward":"backward"}e.dispatchEvent(new Event("seeking"));const a=null!==(r=null===(n=o.current)||void 0===n?void 0:n.getDuration())&&void 0!==r?r:0;e.currentTime=w(t,0,a),e.dispatchEvent(new Event("seeked"))},setProgress:async t=>{if(!e)return;const r=isNaN(e.duration)?0:e.duration;if(o.current){const n=isNaN(e.currentTime)?0:e.currentTime;o.current.isSeeking=t*r>n?"forward":"backward"}e.dispatchEvent(new Event("seeking")),e.currentTime=w(t*r,0,r),e.dispatchEvent(new Event("seeked"))},setMuted:async t=>{e&&(e.muted="function"==typeof t?t(e.muted):t)},setVolume:async t=>{if(!e)return;const r="function"==typeof t?t(e.volume):t;e.volume=w(r,0,1),e.muted=!1},setPlaybackRate:async t=>{if(!e)return;const r="function"==typeof t?t(e.playbackRate):t;e.playbackRate=w(parseFloat(""+r),.25,2)},play:async()=>{l&&(s.stream||await s.initStream(),s.playStream()),e&&await e.play(),o.current&&(o.current.isPlaying=!0),a&&a(!0)},pause:async()=>{e&&await e.pause(),o.current&&(o.current.isPlaying=!1),a&&a(!1)},wait:async()=>{e&&await e.pause()},skip:async t=>{var r,n,a,i,l;if(!e)return;const s=(null!==(r=null===(n=o.current)||void 0===n?void 0:n.getTime())&&void 0!==r?r:0)+t,c=null!==(a=null===(i=o.current)||void 0===i?void 0:i.getDuration())&&void 0!==a?a:0;var u;if(null===(l=o.current)||void 0===l||l.setTime(s),s<=.1)await(null===(u=o.current)||void 0===u?void 0:u.previous());else if(s>c-.1){var d;await(null===(d=o.current)||void 0===d?void 0:d.next())}},previous:async()=>{var t,r;if(!e)return;var n,a;if((null!==(t=null===(r=o.current)||void 0===r?void 0:r.getTime())&&void 0!==t?t:0)>10||!i)return await(null===(n=o.current)||void 0===n?void 0:n.setTime(0)),void await(null===(a=o.current)||void 0===a?void 0:a.play());i(-1)},next:async()=>{if(e)if(i)i(1);else{var t,r,n,a;const e=null!==(t=null===(r=o.current)||void 0===r?void 0:r.getDuration())&&void 0!==t?t:0;var l,s,c,u;e-(null!==(n=null===(a=o.current)||void 0===a?void 0:a.getTime())&&void 0!==n?n:0)>10?(await(null===(l=o.current)||void 0===l?void 0:l.setTime(e)),await(null===(s=o.current)||void 0===s?void 0:s.pause())):(await(null===(c=o.current)||void 0===c?void 0:c.setTime(0)),await(null===(u=o.current)||void 0===u?void 0:u.play()))}},seekTo:async e=>{var t;await(null===(t=o.current)||void 0===t?void 0:t.setTime(e))}}):(r.current=null,o.current=null)}),[a,i,l]);return[null==o?void 0:o.current,c,r]}var H;const U="undefined"!=typeof window?(null===(H=navigator.userAgentData)||void 0===H?void 0:H.platform)||navigator.platform:"",J="undefined"!=typeof window&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent),G="undefined"!=typeof window&&(/^(iPhone|iP[oa]d)(\sSimulator)?$/i.test(U)||navigator.userAgent.includes("Mac")&&"ontouchend"in document);function _(e){var t;if(!e||"string"!=typeof e)return null;const r=null===(t=e.split("?")[0].split(".").pop())||void 0===t?void 0:t.toLowerCase();if(!r)return null;switch(r){case"mp4":return"video/mp4";case"webm":return"video/webm";case"ogg":return"video/ogg";case"m4v":return"video/x-m4v";case"mov":return"video/quicktime";case"wmv":return"video/x-ms-wmv";case"avi":return"video/x-msvideo";case"flv":return"video/x-flv";case"mpg":case"mpeg":return"video/mpeg";case"3gp":return"video/3gpp";case"3g2":return"video/3gpp2";case"ts":return"video/mp2t";case"m3u8":return"application/x-mpegURL";case"m3u":return"audio/x-mpegurl";case"f4v":return"video/x-f4v";case"f4p":return"video/x-f4p";case"f4a":return"video/x-f4a";case"f4b":return"video/x-f4b";case"mp3":return"audio/mpeg";case"wav":return"audio/wav";case"aac":return"audio/aac";case"flac":return"audio/flac";case"m4a":return"audio/x-m4a";case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"gif":return"image/gif";case"svg":return"image/svg+xml";case"webp":return"image/webp";case"bmp":return"image/bmp";case"ico":return"image/vnd.microsoft.icon";case"tiff":case"tif":return"image/tiff";case"avif":return"image/avif";default:return null}}function Q(e){var t;const r={title:null==e?void 0:e.title,artist:null==e?void 0:e.artist,album:null==e?void 0:e.album,artwork:null!=e&&e.artwork?[{src:e.artwork,type:null!==(t=_(e.artwork))&&void 0!==t?t:void 0}]:[]};"undefined"!=typeof window&&(navigator.mediaSession.metadata=new window.MediaMetadata(r))}function ee(e){navigator.mediaSession.playbackState=null!=e&&e.isPlaying?"playing":"paused"}function te(e){var t;const r=(null==e?void 0:e.getDuration())||0,o=(null==e?void 0:e.getTime())||0,n=null!==(t=null==e?void 0:e.getPlaybackRate())&&void 0!==t?t:1;navigator.mediaSession.setPositionState({duration:r,position:o,playbackRate:n})}function re(e,t){var r;r={play:()=>null==e?void 0:e.play(),pause:null!=t&&t.canPause?()=>null==e?void 0:e.pause():null,stop:()=>null==e?void 0:e.pause(),seekto:null!=t&&t.canSeek?t=>{let{seekTime:r=0}=t;return null==e?void 0:e.seekTo(r)}:null,seekbackward:null!=t&&t.canSeek?(G||J)&&null!=t&&t.forPlaylist?null:t=>{let{seekOffset:r}=t;return null==e?void 0:e.skip(r||-10)}:null,seekforward:null!=t&&t.canSeek?(G||J)&&null!=t&&t.forPlaylist?null:t=>{let{seekOffset:r}=t;return null==e?void 0:e.skip(r||10)}:null,nexttrack:()=>null==e?void 0:e.next(),previoustrack:()=>null==e?void 0:e.previous()},Object.entries(r).forEach((e=>{let[t,r]=e;navigator.mediaSession.setActionHandler(t,r)}))}const oe=(e,t,r)=>{if("mediaSession"in navigator)try{Q(t),ee(e),te(e),re(e,r)}catch(e){console.error(e)}};function ne(e){return`${e<10?"0":""}${e}`}function ae(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=e<0?"-":"",o=Math[t?"ceil":"floor"](Math.abs(e)),n=Math.floor(o/3600),a=Math.floor(o%3600/60),i=o%60;return`${r}${n>0?`${n}:${ne(a)}`:a}:${ne(i)}`}const ie=a(null);function le(e,t,r){var o,n,a,i,l;const s=Array.isArray(e.src)?e.src:[e.src],c=s.reduce(((e,t,r)=>(e[r]||e.push(_(t)||""),e)),e.mimeType?Array.isArray(e.mimeType)?e.mimeType:[e.mimeType]:[]),u=(null!==(o=e.type)&&void 0!==o?o:s.length)?function(e){var t;if(!e||"string"!=typeof e)return"video";const r=null===(t=e.split("?")[0].split(".").pop())||void 0===t?void 0:t.toLowerCase();if(!r)return"video";switch(r){case"mp4":case"webm":case"ogg":case"m4v":case"mov":case"wmv":case"avi":case"flv":case"mpg":case"mpeg":case"3gp":case"3g2":case"ts":case"m3u8":case"f4v":case"f4p":case"f4a":case"f4b":return"video";case"m3u":case"mp3":case"wav":case"aac":case"flac":case"m4a":return"audio";default:return"video"}}(s[0]):"video",d=e.cover||t.cover,m=e.thumbnail||t.thumbnail,p=e.artwork||t.artwork,v=null!==(n=null!==(a=e.album)&&void 0!==a?a:t.title)&&void 0!==n?n:t.album,f=null!==(i=e.artist)&&void 0!==i?i:t.artist,w=e.title||`${v||(g=u,"string"!=typeof g?"":g.charAt(0).toUpperCase()+g.slice(1).toLowerCase())} ${ne(r+1)}`;var g;let y=void 0!==e.id?""+e.id:void 0;if(void 0===y){const e=[...s];e.sort(),y=e.join("-")}const h="string"!=typeof e.crossOrigin?!0===e.crossOrigin?"anonymous":void 0:"use-credentials"===e.crossOrigin?"use-credentials":"anonymous",b=e.prefix||t.prefix||"",k=e.suffix||t.suffix||"",x=""+(null!==(l=e.position)&&void 0!==l?l:r+1);return{...e,id:y,type:u,title:w,artist:f||"",album:v||"",cover:d||p||m,artwork:p||d||m,thumbnail:m||p||d,index:r,src:s,mimeType:c,crossOrigin:h,prefix:b,suffix:k,position:x}}function se(e,t){var r,o;const n=void 0!==e.id?""+e.id:"playlist-"+t,a=e.cover,i=e.thumbnail,l=e.artwork,s={...e,id:n,cover:a||l||i,artwork:l||a||i,thumbnail:i||l||a};return{...s,tracks:null!==(r=null===(o=e.tracks)||void 0===o?void 0:o.map(((e,t)=>le(e,s,t))))&&void 0!==r?r:[]}}function ce(t){const{children:r,playlist:a,track:s}=t,c=l(X),[u,d]=o((()=>{if(s&&!a){const e=[se({id:"playlist-0",tracks:[s]},0)];return{playlistCollection:e,queue:e[0].tracks,mode:c.loop?"repeat-one":"repeat",shuffle:!1,activeTrack:0,activePlaylist:0}}const e=(a?Array.isArray(a)?a:[a]:[]).map(se);let t=-1,r=-1;if(s){const o=le(s,{},0);t=e.findIndex((e=>e.tracks.some((e=>e.id===o.id)))),-1!==t&&(r=e[t].tracks.findIndex((e=>e.id===o.id)))}const o=e[-1!==t?t:0].tracks;return{playlistCollection:e,queue:o,mode:c.loop?"repeat-one":"repeat",shuffle:!1,activePlaylist:e.length?w(t,0,e.length-1):null,activeTrack:o.length?w(r,0,o.length-1):null}})),m=n((()=>{d((e=>({...e,mode:"repeat-one"})))}),[]),p=n((()=>{d((e=>({...e,mode:"repeat"})))}),[]),v=n((()=>{d((e=>{const t=null!==e.activePlaylist?g(e.playlistCollection[e.activePlaylist].tracks):[],r=t.length&&null!==e.activeTrack?e.queue[e.activeTrack]:null,o=r?t.findIndex((e=>e.id===r.id)):null;return{...e,queue:t,activeTrack:o,shuffle:!0}}))}),[]),f=n((()=>{d((e=>{const t=null!==e.activeTrack?e.queue[e.activeTrack]:null,r=t&&null!==e.activePlaylist?e.playlistCollection[e.activePlaylist].tracks.findIndex((e=>e.id===t.id)):null;return{...e,queue:null!==e.activePlaylist?e.playlistCollection[e.activePlaylist].tracks:[],activeTrack:null!==r&&-1!==r?r:null,shuffle:!1}}))}),[]),y=n((e=>{d((t=>{const r="function"==typeof e?e(t.playlistCollection):e,o=(Array.isArray(r)?r:[r]).map(se),n=null!==t.activePlaylist?t.playlistCollection[t.activePlaylist]:null,a=null!==t.activeTrack?t.queue[t.activeTrack]:null;let i=n?o.findIndex((e=>e.id===n.id)):null;i=-1===i?null:i;const l=null===i?[]:t.shuffle?g(o[i].tracks):o[i].tracks;let s=a&&i?l.findIndex((e=>e.id===a.id)):null;return s=-1===s?null:s,{...t,playlistCollection:o,queue:l,activePlaylist:i,activeTrack:s}}))}),[d]),h=n((function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;d((r=>{const o=null===r.activeTrack?null:r.queue[r.activeTrack],n=null===r.activePlaylist?null:r.playlistCollection[r.activePlaylist],a="function"==typeof e?e(n,o):e,i="function"==typeof t?t(n,o):t;if(a===r.activePlaylist)return r;let l=null;if("number"==typeof a)l=w(a,0,r.playlistCollection.length-1);else if("string"==typeof a){const e=r.playlistCollection.findIndex((e=>e.id===a));-1!==e&&(l=e)}else if(null!==a){const e=se(a,r.playlistCollection.length),t=r.playlistCollection.findIndex((t=>t.id===e.id));l=-1!==t?t:r.playlistCollection.length}if(null===l)return{...r,queue:[],activePlaylist:null,activeTrack:null};const s=l<r.playlistCollection.length?r.playlistCollection:[...r.playlistCollection,se(a,l)],c=s[l].tracks,u=r.shuffle?g(c):c,d=null===i?0:u.findIndex((e=>e.id===("number"==typeof e?c[w(e,0,c.length)].id:"string"==typeof e?e:e.id)));return{...r,playlistCollection:s,queue:u,activePlaylist:l,activeTrack:d}}))}),[]),b=n((e=>d((t=>{const r="function"==typeof e?e(null===t.activeTrack?null:t.queue[t.activeTrack]):e;if(null===r)return{...t,activeTrack:null};if("number"==typeof r){const e=null===t.activePlaylist?null:t.playlistCollection[t.activePlaylist].tracks[w(r,0,t.queue.length-1)];if(!e)return{...t,activeTrack:null};const o=t.queue.findIndex((t=>t.id===e.id));return{...t,activeTrack:o<0?null:o}}if("string"==typeof r){let e,o,n;if(null===t.activePlaylist?null:t.playlistCollection[t.activePlaylist].tracks.find((e=>e.id===r)))e=t.activePlaylist,n=t.queue,o=t.queue.findIndex((e=>e.id===r));else{const a=t.playlistCollection.findIndex((e=>e.tracks.find((e=>e.id===r))));if(-1===a)return{...t,activeTrack:null};e=a,n=t.playlistCollection[a].tracks,t.shuffle&&(n=g(n)),o=n.findIndex((e=>e.id===r))}return{...t,queue:n,activePlaylist:e,activeTrack:o<0?null:o}}const o=le(r,{},t.queue.length),n=t.queue.findIndex((e=>e.id===o.id));if(-1===n){const e=t.playlistCollection.findIndex((e=>e.tracks.find((e=>e.id===o.id))));if(e>=0){const r=e;let n=t.playlistCollection[e].tracks;t.shuffle&&(n=g(n));const a=n.findIndex((e=>e.id===o.id));return{...t,queue:n,activePlaylist:r,activeTrack:a<0?null:a}}const n=[...t.playlistCollection];if(null===t.activePlaylist)return{...t,activeTrack:null};const a=t.playlistCollection[t.activePlaylist];a.tracks=[...a.tracks,le(r,a,a.tracks.length)];const i=t.shuffle?g(a.tracks):a.tracks,l=i.findIndex((e=>e.id===o.id));return n[t.activePlaylist]=a,{...t,playlistCollection:n,queue:i,activeTrack:l<0?null:l}}return{...t,activeTrack:n}}))),[]),k=n((e=>{d((t=>{const r=null===t.activeTrack?0:t.activeTrack;return{...t,activeTrack:(r+e)%t.queue.length}}))}),[]),x=n((()=>k(-1)),[k]),C=n((()=>k(1)),[k]),E=i((()=>({track:[null===u.activeTrack?null:u.queue[u.activeTrack],b],playlist:[null===u.activePlaylist?null:u.playlistCollection[u.activePlaylist],h],collection:[u.playlistCollection,y],state:{mode:u.mode,shuffle:u.shuffle,queue:u.queue},controls:{shuffle:v,unshuffle:f,toggleShuffle:u.shuffle?f:v,loop:m,unloop:p,toggleLoop:"repeat-one"===u.mode?p:m,setTrack:b,skipTrackBy:k,previousTrack:x,nextTrack:C}})),[v,f,m,p,b,h,y,k,x,C,JSON.stringify(u.queue),JSON.stringify(u.playlistCollection),u.activeTrack,u.activePlaylist,u.mode,u.shuffle]);return e.createElement(ie.Provider,{value:E},r)}function ue(e){const[t,r]=o(e);return[t,n((e=>{r((t=>{const r="function"==typeof e?e(t):e,o=Object.keys(r).filter((e=>Object.keys(t).includes(e))).reduce(((e,t)=>(e[t]=r[t],e)),{}),n={...t,...o};return JSON.stringify(n)===JSON.stringify(t)?t:n}))}),[])]}const de={wasPlaying:!1,isPlaying:!1,isWaiting:!1,isSeeking:!1,isStalled:!1,isLoaded:!1,isMuted:!1,isFullscreen:!1,isPictureInPicture:!1,isImmersive:!1,isAirPlay:!1,hasError:!1,hasLoadedData:!1,hasLoadedMetadata:!1,volume:1,playbackRate:1,intrinsicSize:[0,0]},me=a(de),pe=a((()=>{}));function ve(t){const{children:o}=t,n=l(X),[a,i]=ue((()=>{var e,t,r;return{...de,isMuted:null!==(e=null==n?void 0:n.muted)&&void 0!==e?e:de.isMuted,wasPlaying:null!==(t=null==n?void 0:n.autoPlay)&&void 0!==t?t:de.wasPlaying,isPlaying:null!==(r=null==n?void 0:n.autoPlay)&&void 0!==r?r:de.isPlaying}}));r((()=>{i({isMuted:null==n?void 0:n.muted,wasPlaying:null==n?void 0:n.autoPlay,isPlaying:null==n?void 0:n.autoPlay})}),[null==n?void 0:n.muted,null==n?void 0:n.autoPlay]);const[s]=M();r((()=>{i((e=>({...e,isFullscreen:!!s})))}),[s]);const[c]=F();return r((()=>{i((e=>({...e,isPictureInPicture:!!c})))}),[c]),e.createElement(pe.Provider,{value:i},e.createElement(me.Provider,{value:a},o))}const fe={time:0,duration:0,progress:0,buffered:0},we=a(fe),ge=a((()=>{}));function ye(t){const{children:r}=t,[o,n]=ue(fe);return e.createElement(ge.Provider,{value:n},e.createElement(we.Provider,{value:o},r))}const he=a(null);function be(o){var a,s,c,u;const{children:d}=o,m=null!==(a=l(pe))&&void 0!==a?a:()=>{},p=null!==(s=l(me))&&void 0!==s?s:{},v=null!==(c=l(ge))&&void 0!==c?c:()=>{},f=l(X),{track:[w=null]=[],controls:g={},state:{queue:y=[],mode:h="repeat-all"}={}}=null!==(u=l(ie))&&void 0!==u?u:{},b=y.length>1,k=n((e=>{m({isPlaying:e})}),[]),x=n((e=>{var t;return null===(t=g.skipTrackBy)||void 0===t?void 0:t.call(g,e)}),[g.skipTrackBy]),[C,E]=W({onPlaybackChange:k,onTrackChange:b?x:void 0}),P=i((()=>{const e=w||{};return{...e.title?{title:e.title}:{},...e.artist?{artist:e.artist}:{},...e.album?{album:e.album}:{},...e.artwork?{artwork:e.artwork}:{}}}),[JSON.stringify(w)]),L=i((()=>((e,t)=>({setMetadata(e){try{Q(e)}catch(e){console.error(e)}},refreshPlaybackState(){try{ee(e)}catch(e){console.error(e)}},refreshPosition(){try{te(e)}catch(e){console.error(e)}},refreshPlaybackActions(){try{re(e,t)}catch(e){console.error(e)}}}))(C,{forPlaylist:b,canSeek:null==f?void 0:f.canSeek,canPause:null==f?void 0:f.canPause})),[C,b,null==f?void 0:f.canSeek,null==f?void 0:f.canPause]),S=i((()=>({onPlay:()=>{L.setMetadata(P),L.refreshPlaybackState(),L.refreshPosition(),L.refreshPlaybackActions(),m({isWaiting:!1,isSeeking:!1,isLoaded:!0,isStalled:!1,isPlaying:!0,wasPlaying:!0})},onPlaying:()=>{L.setMetadata(P),L.refreshPlaybackState(),m({isWaiting:!1,isSeeking:!1,isLoaded:!0,isStalled:!1,isPlaying:!0,wasPlaying:!0})},onPause:()=>{L.refreshPlaybackState(),m({isPlaying:!1,wasPlaying:!1})},onEnded:()=>{L.refreshPlaybackState(),m({isPlaying:!1,wasPlaying:!0}),"repeat-one"===h?null==C||C.seekTo(0):null==C||C.next()},onSeeking:()=>{m({isSeeking:(null==C?void 0:C.isSeeking)||!1})},onSeeked:()=>{L.refreshPosition();const e=(null==C?void 0:C.getTime())||0;m({isSeeking:!1}),v({time:e,progress:(null==C?void 0:C.getProgress())||0})},onStalled:()=>{m({isStalled:!0})},onWaiting:()=>{m({isWaiting:!0,isStalled:!0})},onCanPlay:()=>{m({isWaiting:!1,isSeeking:!1,isLoaded:!0,isStalled:!1}),p.wasPlaying&&(null==C||C.play())},onCanPlayThrough:()=>{m({isWaiting:!1,isSeeking:!1,isLoaded:!0,isStalled:!1})},onLoadStart:()=>{m({isLoaded:!1})},onLoadedData:()=>{m({isLoaded:!0,hasLoadedData:!0})},onLoadedMetadata:()=>{var e;L.refreshPlaybackActions();let t=[512,512];if("VIDEO"===(null==C||null===(e=C.current)||void 0===e?void 0:e.tagName)){const{videoWidth:e,videoHeight:r}=C.current;t=[e,r]}m({isLoaded:!0,hasLoadedMetadata:!0,intrinsicSize:t}),p.wasPlaying&&(null==C||C.play())},onError:()=>{m({hasError:"An error occurred while loading the media"})},onAbort:()=>{m({isWaiting:!1,isSeeking:!1,isLoaded:!0,hasError:!1,isStalled:!1})},onEmptied:()=>{m({isWaiting:!1,isSeeking:!1,isLoaded:!0,hasError:!1,isStalled:!1})},onTimeUpdate:()=>{L.refreshPosition(),L.setMetadata(P);const e=(null==C?void 0:C.getTime())||0;v({time:e,progress:(null==C?void 0:C.getProgress())||0}),m((t=>e>0&&t.hasError?{hasError:!1}:t));const t=(null==C?void 0:C.getDuration())||0;t>0&&e>=t-.5&&("repeat-one"===h?null==C||C.seekTo(0):null==C||C.next())},onDurationChange:()=>{var e;const t=null==C||null===(e=C.current)||void 0===e?void 0:e.duration;void 0===t||isNaN(t)||t===1/0?m({hasError:"An error occurred while loading the media"}):(L.refreshPosition(),v({duration:(null==C?void 0:C.getDuration())||0,progress:(null==C?void 0:C.getProgress())||0,buffered:(null==C?void 0:C.getBuffered())||0}))},onProgress:()=>{v({buffered:(null==C?void 0:C.getBuffered())||0}),m({isStalled:!1})},onVolumeChange:()=>{var e,t;m({volume:null!==(e=null==C?void 0:C.getVolume())&&void 0!==e?e:1,isMuted:null!==(t=null==C?void 0:C.getMuted())&&void 0!==t&&t})},onRateChange:()=>{var e;L.refreshPosition(),m({playbackRate:null!==(e=null==C?void 0:C.getPlaybackRate())&&void 0!==e?e:1})},poster:null==w?void 0:w.thumbnail,preload:"metadata",playsInline:!0,autoPlay:p.wasPlaying,muted:null==f?void 0:f.muted,"x-webkit-airplay":!1===(null==f?void 0:f.canAirPlay)?"deny":void 0,"x-webkit-wirelessvideoplaybackdisabled":!1===(null==f?void 0:f.canRemotePlay)||void 0,disableRemotePlayback:!1===(null==f?void 0:f.canRemotePlay)||void 0,disablePictureInPicture:!1===(null==f?void 0:f.canPictureInPicture)||void 0,crossOrigin:null==w?void 0:w.crossOrigin})),[C,L,null==f?void 0:f.muted,null==f?void 0:f.canAirPlay,null==f?void 0:f.canPictureInPicture,JSON.stringify(w),p.wasPlaying,h]);r((()=>{var e;null==C||null===(e=C.current)||void 0===e||e.load()}),[JSON.stringify(w)]);const T=t(null),N=n((e=>{T.current=e}),[]),j=function(e,t){const[,r]=M(),[,o]=F();return i((()=>({play:()=>null==e?void 0:e.play(),pause:()=>null==e?void 0:e.pause(),togglePlay:()=>null!=e&&e.isPlaying?e.pause():null==e?void 0:e.play(),seek:t=>null==e?void 0:e.seekTo(t),skip:t=>null==e?void 0:e.skip(t),next:()=>null==e?void 0:e.next(),previous:()=>null==e?void 0:e.previous(),enterFullscreen:()=>{var o,n;return null==r?void 0:r.request(null!==(o=t||(null==e?void 0:e.current))&&void 0!==o?o:null,null!==(n=null==e?void 0:e.current)&&void 0!==n?n:null)},exitFullscreen:()=>null==r?void 0:r.exit(),toggleFullscreen:()=>{var o,n;return null==r?void 0:r.toggle(null!==(o=t||(null==e?void 0:e.current))&&void 0!==o?o:null,null!==(n=null==e?void 0:e.current)&&void 0!==n?n:null)},enterPiP:()=>{var t;o&&"VIDEO"===(null==e||null===(t=e.current)||void 0===t?void 0:t.tagName)&&o.request(e.current)},exitPiP:()=>null==o?void 0:o.exit(),togglePiP:()=>{var t;o&&"VIDEO"===(null==e||null===(t=e.current)||void 0===t?void 0:t.tagName)&&o.toggle(e.current)},mute:()=>null==e?void 0:e.setMuted(!0),unmute:()=>null==e?void 0:e.setMuted(!1),toggleMute:()=>null==e?void 0:e.setMuted((e=>!e)),setProgress:t=>{var r;const o="function"==typeof t?t(null!==(r=null==e?void 0:e.getProgress())&&void 0!==r?r:0):t;null==e||e.setProgress(o)},setVolume:t=>{var r;const o="function"==typeof t?t(null!==(r=null==e?void 0:e.getVolume())&&void 0!==r?r:1):t;null==e||e.setVolume(o)},setPlaybackRate:t=>{var r;const o="function"==typeof t?t(null!==(r=null==e?void 0:e.getPlaybackRate())&&void 0!==r?r:1):t;null==e||e.setPlaybackRate(o)}})),[e,t,r])}(C,T.current),z=i((()=>({node:C,container:null==T?void 0:T.current,setRef:E,setContainerRef:N,props:S,controls:j})),[C,T,E,S,j]);return e.createElement(he.Provider,{value:z},d)}const ke={controlsColor:"#f5f5f5",controlsBg:"#171717",accentColor:"#ffffff",errorColor:"#ed4337",mediaBg:"#171717",textFont:"'Verdana', sans-serif",monoFont:"'Courier', monospace"},xe={dark:ke,light:{...ke,controlsColor:"#171717",controlsBg:"#f5f5f5",accentColor:"#000000",mediaBg:"#f5f5f5"}};function Ce(e){return Object.fromEntries(Object.entries(e).map((e=>{const[t,r]=e||[];return["--rmp-"+(o=t,o.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/([0-9])([a-zA-Z])/g,"$1-$2").toLowerCase()),r];var o})))}function Ee(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(xe,e)?xe[e]:"object"==typeof e?Object.fromEntries(Object.entries(e).filter((e=>{let[,t]=e;return"string"==typeof t}))):{}}function Pe(e){const t=ke;return(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,...Ee(t)})),t)}const Le=a(xe.dark);function Se(t){const{theme:n={},children:a}=t,i=function(e){const[t,n]=o(Pe(e));return r((()=>{n(Pe(e))}),[JSON.stringify(e)]),t}(n);return e.createElement(Le.Provider,{value:i},a)}const Te=t=>{let{children:r,config:o,theme:n,playlist:a=[],track:i=null,...l}=t;return e.createElement(K,{config:o},e.createElement(Se,{theme:n},e.createElement(ce,{playlist:a,track:i},e.createElement(ve,null,e.createElement(ye,null,e.createElement(be,l,r))))))},Ne=()=>{const e=l(X);if(!e)throw new Error("useMediaConfig must be used within a MediaProvider");return e},Me=()=>{const e=l(Le);if(!e)throw new Error("useMediaTheme must be used within a MediaProvider");return e},je=()=>{const e=l(ie);if(!e)throw new Error("useTrack must be used within a MediaProvider");return e.track},ze=()=>{const e=l(ie);if(!e)throw new Error("usePlaylistCollection must be used within a MediaProvider");return e.collection},Ae=()=>{const e=l(ie);if(!e)throw new Error("usePlaylist must be used within a MediaProvider");return e.playlist},Ze=()=>{const e=l(ie);if(!e)throw new Error("usePlaylistState must be used within a MediaProvider");return e.state},$e=()=>{const e=l(ie);if(!e)throw new Error("usePlaylistControls must be used within a MediaProvider");return e.controls},Fe=()=>{const e=l(me);if(!e)throw new Error("useMediaState must be used within a MediaProvider");return e},De=()=>{const e=l(we);if(!e)throw new Error("useMediaState must be used within a MediaProvider");return e},Ie=()=>{const e=l(he);if(!e)throw new Error("useMediaElement must be used within a MediaProvider");return{node:e.node,container:e.container,setRef:e.setRef,setContainerRef:e.setContainerRef,props:e.props}},Re=()=>{const e=l(he);if(!e)throw new Error("useMediaControls must be used within a MediaProvider");return e.controls};const Oe=e=>{const t=Ne(),o=Re(),n=$e();r((()=>{const r=e=>{if(function(e){return"key"in e}(e)&&!e.isComposing&&229!==e.keyCode&&!(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey))switch(e.key){case" ":t.canPause&&(e.preventDefault(),o.togglePlay());break;case"ArrowLeft":t.canSeek&&(e.preventDefault(),o.skip(-10));break;case"ArrowRight":t.canSeek&&(e.preventDefault(),o.skip(10));break;case"ArrowUp":t.canChangeVolume&&(e.preventDefault(),o.setVolume((e=>e+.05)));break;case"ArrowDown":t.canChangeVolume&&(e.preventDefault(),o.setVolume((e=>e-.05)));break;case"m":t.canMute&&(e.preventDefault(),o.toggleMute());break;case"f":t.canFullscreen&&(e.preventDefault(),o.toggleFullscreen());break;case"p":t.canPictureInPicture&&(e.preventDefault(),o.togglePiP());break;case"r":case"l":t.canLoop&&(e.preventDefault(),n.toggleLoop());break;case"s":t.canShuffle&&(e.preventDefault(),n.toggleShuffle())}},a=void 0===e?document:e.current;return a&&t.canControlWithKeyboard&&a.addEventListener("keydown",r),()=>null==a?void 0:a.removeEventListener("keydown",r)}),[e,o,n,t.canControlWithKeyboard,t.canPause,t.canSeek,t.canMute,t.canChangeVolume,t.canFullscreen,t.canPictureInPicture,t.canLoop,t.canShuffle])},Be=(e,t)=>{const{breakpoints:r}=Ne(),o=E(r,"object"!=typeof e||Array.isArray(e)?[]:Object.keys(e)),[n]=je();return i((()=>{var r;const a=null!=e?e:t,i="object"!=typeof a||Array.isArray(a)?a:o?a[o]:Object.values(a)[0],l=Array.isArray(i)?null===(r=i.find((e=>Array.isArray(e)&&e[0]===(null==n?void 0:n.type))))||void 0===r?void 0:r[1]:i;return null!=l?l:t}),[e,t,n,o])},Ve=["auto","video","artwork","vinyl","controls","artwork-mini","vinyl-mini"],Ye=()=>{const[e]=je(),{playerMode:t}=Ne(),r=Be(t,"auto");return i((()=>{if("auto"===r){if("video"===(null==e?void 0:e.type))return"video";if("audio"===(null==e?void 0:e.type))return"artwork"}else if(Ve.includes(r))return r;return"artwork"}),[r,null==e?void 0:e.type])},qe=["1:1","2:1","1:2","3:1","1:3","2:3","3:2","4:3","3:4","16:9","9:16","21:9","9:21"],Xe=qe.reduce(((e,t)=>{const[r,o]=t.split(":");return e[t]=`${r}/${o}`,e}),{});const Ke=()=>{const{aspectRatio:e}=Ne(),t=Ye(),r=Be(e,"stretch");return"auto"===r||"stretch"===r||qe.includes(r)&&"video"===t?r:"stretch"},We=()=>{const{controls:e,breakpoints:t}=Ne(),r=E(t,"object"!=typeof e||Array.isArray(e)?[]:Object.keys(e));return i((()=>{const t=e||[];return("object"!=typeof t||Array.isArray(t)?t:r?t[r]:Object.values(t)[0])||[]}),[e,r])},He=()=>{const{playerBackground:e}=Ne();return Be(e,"none")};function Ue(t){const{Component:r}=t;return e.createElement(r,null)}var Je=e.memo(Ue);function Ge(e,t,r){return e(r={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}
/**
* @license React
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/(null==t&&r.path)}},r.exports),r.exports}var _e,Qe=Symbol.for("react.element"),et=Symbol.for("react.portal"),tt=Symbol.for("react.fragment"),rt=Symbol.for("react.strict_mode"),ot=Symbol.for("react.profiler"),nt=Symbol.for("react.provider"),at=Symbol.for("react.context"),it=Symbol.for("react.server_context"),lt=Symbol.for("react.forward_ref"),st=Symbol.for("react.suspense"),ct=Symbol.for("react.suspense_list"),ut=Symbol.for("react.memo"),dt=Symbol.for("react.lazy"),mt=Symbol.for("react.offscreen");function pt(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case Qe:switch(e=e.type){case tt:case ot:case rt:case st:case ct:return e;default:switch(e=e&&e.$$typeof){case it:case at:case lt:case dt:case ut:case nt:return e;default:return t}}case et:return t}}}_e=Symbol.for("react.module.reference");var vt={ContextConsumer:at,ContextProvider:nt,Element:Qe,ForwardRef:lt,Fragment:tt,Lazy:dt,Memo:ut,Portal:et,Profiler:ot,StrictMode:rt,Suspense:st,SuspenseList:ct,isAsyncMode:function(){return!1},isConcurrentMode:function(){return!1},isContextConsumer:function(e){return pt(e)===at},isContextProvider:function(e){return pt(e)===nt},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===Qe},isForwardRef:function(e){return pt(e)===lt},isFragment:function(e){return pt(e)===tt},isLazy:function(e){return pt(e)===dt},isMemo:function(e){return pt(e)===ut},isPortal:function(e){return pt(e)===et},isProfiler:function(e){return pt(e)===ot},isStrictMode:function(e){return pt(e)===rt},isSuspense:function(e){return pt(e)===st},isSuspenseList:function(e){return pt(e)===ct},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===tt||e===ot||e===rt||e===st||e===ct||e===mt||"object"==typeof e&&null!==e&&(e.$$typeof===dt||e.$$typeof===ut||e.$$typeof===nt||e.$$typeof===at||e.$$typeof===lt||e.$$typeof===_e||void 0!==e.getModuleId)},typeOf:pt},ft=(Ge((function(e,t){0})),Ge((function(e){e.exports=vt})));var wt='<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n<svg width="100%" height="100%" viewBox="0 0 416 401" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">\n <path id="airplay-alt" d="M272,400.076L144,400.076C132.249,400.027 122.608,390.345 122.608,378.594C122.608,373.93 124.127,369.391 126.933,365.666L190.933,280.61C194.959,275.242 201.29,272.076 208,272.076C214.71,272.076 221.041,275.242 225.067,280.61L289.067,365.666C291.873,369.391 293.392,373.93 293.392,378.594C293.392,390.345 283.751,400.027 272,400.076ZM285.995,226.828C287.376,220.672 288.092,214.385 288.128,208.076C288.128,164.19 252.015,128.076 208.128,128.076C164.241,128.076 128.128,164.19 128.128,208.076C128.165,214.385 128.88,220.672 130.261,226.828C131.923,234.072 138.424,239.251 145.856,239.251C154.634,239.251 161.856,232.028 161.856,223.251C161.856,222.181 161.749,221.114 161.536,220.066C160.6,216.135 160.085,212.116 160,208.076C160,181.744 181.668,160.076 208,160.076C234.332,160.076 256,181.744 256,208.076C255.978,212.109 255.528,216.128 254.656,220.066C252.808,228.637 258.333,237.213 266.901,239.074C268.022,239.321 269.167,239.442 270.315,239.436C277.809,239.427 284.342,234.153 285.931,226.828L285.995,226.828ZM326.528,290.124C343.087,266.096 351.957,237.593 351.957,208.411C351.957,129.415 286.953,64.411 207.957,64.411C128.961,64.411 63.957,129.415 63.957,208.411C63.957,237.593 72.828,266.096 89.387,290.124C92.372,294.451 97.304,297.04 102.56,297.04C111.34,297.04 118.564,289.816 118.564,281.036C118.564,277.79 117.577,274.62 115.733,271.948C102.856,253.26 95.957,231.093 95.957,208.397C95.957,146.956 146.516,96.397 207.957,96.397C269.399,96.397 319.957,146.956 319.957,208.397C319.957,231.093 313.059,253.26 300.181,271.948C298.338,274.62 297.351,277.79 297.351,281.036C297.351,289.816 304.575,297.04 313.355,297.04C318.611,297.04 323.543,294.451 326.528,290.124ZM365.077,344.034C397.803,306.249 415.829,257.901 415.829,207.915C415.829,93.856 321.973,0 207.915,0C93.856,-0 0,93.856 0,207.915C0,207.969 0,208.022 0,208.076C-0.039,258.044 18.046,306.369 50.88,344.034C53.918,347.518 58.321,349.521 62.944,349.521C71.724,349.521 78.949,342.296 78.949,333.516C78.949,329.651 77.548,325.913 75.008,322.999C47.41,291.056 32.213,250.221 32.213,208.007C32.213,111.515 111.615,32.113 208.107,32.113C304.599,32.113 384,111.515 384,208.007C384,208.03 384,208.053 384,208.076C384.036,250.314 368.748,291.162 340.992,322.999C338.452,325.913 337.051,329.651 337.051,333.516C337.051,342.296 344.276,349.521 353.056,349.521C357.679,349.521 362.082,347.518 365.12,344.034L365.077,344.034Z" style="fill-rule:nonzero;"/>\n</svg>\n';function gt(e){const[t,r]=function(e){if(!e||"string"!=typeof e)return[0,0];const t=e.match(/viewBox="([^"]*)"/);if(!t)return[0,0];const[r,o]=t[1].split(" ").slice(2).map((e=>parseInt(e)));return[r,o]}(e);return{width:t,height:r,paths:function(e){if(!e||"string"!=typeof e)return[];const t=e.match(/<path( .*)?\/>/g);return t?t.reduce(((e,t)=>{const r=t.match(/ d="([^"]*)"/);return r&&r[1]?(e.push(r[1]),e):e}),[]):[]}(e)}}function yt(t){const{className:r,svg:o,...n}=t,{width:a,height:i,paths:l}=gt(o);return e.createElement("svg",c({className:r,viewBox:`0 0 ${a} ${i}`},n),l.map(((t,r)=>e.createElement("path",{key:r,d:t,fill:"currentColor"}))))}const ht={xs:2,sm:4,md:6,lg:8,xl:10};function bt(t){const{color:r,size:o="md"}=t;return e.createElement("div",{className:d(`w-${ht[o]} h-${ht[o]}`)},e.createElement(yt,{svg:'<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n<svg width="100%" height="100%" viewBox="0 0 486 441" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">\n <path d="M476.099,331.325L305.899,36.525C278.099,-12.175 207.799,-12.175 180.099,36.525L9.799,331.325C-18.001,380.025 16.599,440.525 72.699,440.525L412.599,440.525C468.699,440.525 503.899,379.425 476.099,331.325ZM242.899,375.125C228.099,375.125 215.799,362.825 215.799,348.025C215.799,333.225 228.099,320.925 242.899,320.925C257.699,320.925 269.999,333.225 269.399,348.725C270.099,362.825 257.099,375.125 242.899,375.125ZM267.599,199.925C266.399,220.925 265.099,241.825 263.899,262.825C263.299,269.625 263.299,275.825 263.299,282.525C262.699,293.625 253.999,302.225 242.899,302.225C231.799,302.225 223.199,294.225 222.499,283.125C220.699,250.425 218.799,218.325 216.999,185.625C216.399,177.025 215.799,168.325 215.099,159.725C215.099,145.525 223.099,133.825 236.099,130.125C249.099,127.025 261.999,133.225 267.599,145.525C269.499,149.825 270.099,154.125 270.099,159.125C269.499,172.825 268.199,186.425 267.599,199.925Z" style="fill-rule:nonzero;"/>\n</svg>\n',color:r}))}const kt={xs:2,sm:4,md:6,lg:8,xl:10};function xt(t){const{color:r,size:o="md"}=t;return e.createElement("div",{className:d("grid grid-cols-2 animate-spin",`w-${kt[o]} h-${kt[o]}`,{"gap-1":"xs"===o||"sm"===o,"gap-2":"md"===o||"lg"===o,"gap-3":"xl"===o})},Array.from({length:4}).map(((t,o)=>e.createElement("div",{key:o,className:d("rounded-full",{"bg-controls-color":!r}),style:{backgroundColor:r}}))))}const Ct={xs:2,sm:4,md:6,lg:8,xl:10},Et={xs:1,sm:3,md:5,lg:6,xl:9},Pt={xs:"xs",sm:"xs",md:"sm",lg:"sm",xl:"md"};function Lt(t,r){const{controlKey:o,label:n,icon:a,size:i="md",loading:l=!1,error:s=!1,active:u,...m}=t,p=Me(),v=`w-${Ct[i]} h-${Ct[i]}`,f=`w-${Et[i]} h-${Et[i]}`,w=o&&p[o]?p[o]:void 0;return s?e.createElement("div",{className:d("flex items-center justify-center",v)},e.createElement(bt,{color:w||(s?p.errorColor:p.controlsColor),size:i})):l?e.createElement("div",{className:d("flex items-center justify-center opacity-50",v)},e.createElement(xt,{color:w,size:Pt[i]})):e.createElement("button",c({},m,{ref:r,className:d("scale-100 transition",!a&&{"rounded-full px-2 text-sm font-bold uppercase":!0,"bg-controls-color text-controls-bg":!w,"hover:bg-accent-color":!w&&!m.disabled},a&&{"text-center":!0,"text-controls-color":!w&&!u,"hover:text-accent-color":!w&&!m.disabled&&!u,"bg-controls-color text-controls-bg":!w&&u,"hover:bg-accent-color":!w&&!m.disabled&&u,"p-0.5 rounded":u},{"hover:scale-105":!m.disabled,"opacity-50":m.disabled||!1===u&&!a},a&&v,m.className),title:a?n:void 0,style:w?{...m.style,[a&&!u?"color":"background"]:w}:m.style}),a&&("string"==typeof a?e.createElement(yt,{className:d("svg-icon",u?f:v),svg:a}):a),!a&&n)}var St=e.memo(e.forwardRef(Lt));function Tt(t){var r;const[o,n]=e.useState(!1),{canRemotePlay:a}=Ne(),{node:i}=Ie(),{isPlaying:l}=Fe(),{state:s,isAvailable:u,requestRemotePlayback:d}=I(null!==(r=null==i?void 0:i.current)&&void 0!==r?r:null);return e.useEffect((()=>{l&&n(!0)}),[l]),u&&a?e.createElement(St,c({},t,{id:"rmp-controls-cast",controlKey:"cast",size:"sm","aria-label":"disconnected"===s?"Stream to a remote device":"Stop streaming to a remote device",icon:wt,onClick:d,active:"connected"===s,disabled:"connecting"===s||"disconnected"===s&&!o,title:o?void 0:"You need to start the player before streaming to a remote device"})):null}function Nt(t){var r;const{canAirPlay:o}=Ne(),{node:n}=Ie(),{isActive:a,isAvailable:i,airPlayAPI:l}=D(null!==(r=null==n?void 0:n.current)&&void 0!==r?r:null);return i?o?e.createElement(St,c({},t,{id:"rmp-controls-airplay",controlKey:"airplay",size:"sm","aria-label":a?"Stop streaming to AirPlay device":"Stream to AirPlay device",icon:wt,onClick:null==l?void 0:l.showPicker,active:a})):null:e.createElement(Tt,t)}function Mt(t,r){const{text:o,textMap:n,separator:a,...i}=t,{controlsMetadataSeparator:l}=Ne(),s=Me(),u=a||l||" - ";return o||n?e.createElement("span",c({},i,{ref:r,className:d("text-sm text-controls-color",i.className)}),o,n&&Object.entries(n).filter((e=>{let[,t]=e;return t})).map(((t,r)=>{let[o,n]=t;return e.createElement(e.Fragment,{key:o},r>0&&e.createElement("span",{id:`${i.id}-${o}-separator`},u),e.createElement("span",{id:`${i.id}-${o}`,style:s[o]?{color:s[o]}:void 0},n))}))):null}var jt=e.memo(e.forwardRef(Mt));function zt(t){const[r]=je();return e.createElement(jt,c({},t,{id:"rmp-controls-album",text:null==r?void 0:r.album}))}functio