@cassette/core
Advanced tools
Comparing version 2.0.0-alpha.13 to 2.0.0-alpha.14
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.cassetteCore=t(require("react"),require("prop-types")):e.cassetteCore=t(e.React,e.PropTypes)}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=7)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"b",function(){return i});var r=console.log.bind(console),a=console.error?console.error.bind(console):r,i=console.warn?console.warn.bind(console):r},function(e,t,n){"use strict";(function(e){var r=n(0),a=n(2),i=n(6).version,s="undefined"==typeof window?e:window;s.__cassette_contexts__=s.__cassette_contexts__||{},t.a=function(e,t){void 0===t&&(t=null);var n=s.__cassette_contexts__[e];if(n)return n.packageVersion!==i&&Object(a.b)("Warning: multiple versions of "+e+" from the @cassette/core package have been loaded. v"+i+" will be ignored and v"+n.packageVersion+" will be used instead."),n;var o=Object(r.createContext)(t);return o.displayName=e,o.packageVersion=i,s.__cassette_contexts__[e]=o,o}}).call(this,n(5))},function(e,t,n){"use strict";e.exports=function(e,t,n){if("function"==typeof Array.prototype.findIndex)return e.findIndex(t,n);if("function"!=typeof t)throw new TypeError("predicate must be a function");var r=Object(e),a=r.length;if(0===a)return-1;for(var i=0;i<a;i++)if(t.call(n,r[i],i,r))return i;return-1}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e){e.exports={name:"@cassette/core",version:"2.0.0-alpha.13",description:"A simple, clean, and responsive visual wrapper for the HTML audio tag, built with React.",main:"dist/es5/cassette-core.js",scripts:{"build:clean":"rimraf dist","build:webpack":"BUILD_MODE=all webpack --progress",build:"npm run build:clean && npm run build:webpack",prepare:"npm run build",test:'echo "Error: no test specified" && exit 1'},repository:{type:"git",url:"https://github.com/benwiley4000/cassette.git"},engines:{node:">=6.0.0",npm:">=5.0.0"},keywords:["audio","video","media","ui","react","reactjs","responsive","music","player","html5","component","components"],author:{name:"Ben Wiley",email:"therealbenwiley@gmail.com",url:"http://benwiley.org/"},license:"MIT",peerDependencies:{react:"^16.3.0"},devDependencies:{"array-find-index":"^1.0.2",rimraf:"^2.5.4",webpack:"^4.17.1"},dependencies:{"prop-types":"^15.5.10"},publishConfig:{access:"public"},gitHead:"be82bd87d6134ebef4fcbb304b0701e2e84abc8e"}},function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"controlKeyword",function(){return g}),n.d(r,"control",function(){return v}),n.d(r,"crossOriginAttribute",function(){return y}),n.d(r,"repeatStrategy",function(){return b}),n.d(r,"mediaSource",function(){return k}),n.d(r,"mediaSessionAction",function(){return S}),n.d(r,"mediaSessionArtwork",function(){return E}),n.d(r,"track",function(){return w}),n.d(r,"progressDirection",function(){return x}),n.d(r,"seekMode",function(){return P}),n.d(r,"aspectRatio",function(){return T});var a=n(0),i=n.n(a),s=n(4),o=n.n(s),l=n(3),u=Object(l.a)("PlayerContext"),c=Object(l.a)("GroupContext"),d=n(1),h=n.n(d),p=["none","playlist","track"],f=n(2);function m(e,t){var n=!1;return function(r,a,i){if(a in r){!n&&t in r&&(Object(f.b)("Do not define both the '"+a+"' and '"+t+"' props."),n=!0);for(var s=arguments.length,o=new Array(s>3?s-3:0),l=3;l<s;l++)o[l-3]=arguments[l];return e.isRequired.apply(e,[r,a,i].concat(o))}if(!(t in r))return new Error("If the '"+t+"' prop is not defined, '"+a+"' must be.")}}var g=h.a.oneOf(["playpause","backskip","forwardskip","volume","mute","repeat","shuffle","progress","progressdisplay","fullscreen","spacer"]),v=h.a.oneOfType([h.a.func,g]),y=h.a.oneOf(["anonymous","use-credentials"]),b=h.a.oneOf(p),k=h.a.shape({src:h.a.string.isRequired,type:h.a.string.isRequired}),S=h.a.oneOf(["play","pause","previoustrack","nexttrack","seekbackward","seekforward"]),E=h.a.shape({src:h.a.string.isRequired,sizes:h.a.string,type:h.a.string}),w=h.a.shape({url:m(h.a.string,"sources"),sources:m(h.a.arrayOf(k.isRequired),"url"),title:h.a.string.isRequired,artist:h.a.string,album:h.a.string,artwork:h.a.arrayOf(E.isRequired),meta:h.a.object}),x=h.a.oneOf(["left","right","up","down"]),P=h.a.oneOf(["paused","immediate","onrelease"]);function T(e,t){var n=e[t];if(void 0!==n)return"string"!=typeof n||2!==n.split(":").length||n.split(":").some(isNaN)?new Error("The "+t+" prop should be a string of the form 'x:y'. Example: 16:9"):void 0}var O="loopchange",M="srcrequest";var C=function(){var e=document.createElement("video");return new MutationObserver(function(){e.dispatchEvent(new Event(O))}).observe(e,{attributes:!0,attributeFilter:["loop"]}),Object.defineProperty(e,"src",{get:function(){return e.currentSrc},set:function(t){var n=new Event(M);n.srcRequested=t,e.dispatchEvent(n)}}),e};function _(e,t,n,r){for(var a=r,i=0;i<e;i++){if(!t.length)throw _(i,n,t,a),"Moving "+e+" places was not possible!";n.push(a),a=t.pop()}return a}function I(e,t,n,r,a){var i=r;if(e.length){for(var s=1;s<=t.length;s++)if(-1!==e.indexOf(t[t.length-s]))return _(s,t,n,i);if(a){if(function(e,t){if(!e.length)return!1;for(var n=0;n<e.length;n++)if(t!==e[n])return!1;return!0}(e,i))return i;var o;do{o=e[Math.floor(Math.random()*e.length)]}while(i===o||void 0===o);return void 0!==(i=_(t.length,t,n,i))&&n.push(i),o}}}var R=function(){function e(e,t){void 0===t&&(t={}),this._list=e,this._forwardStack=[],this._backStack=[],this._currentItem=void 0,this._allowBackShuffle=Boolean(t.allowBackShuffle)}var t=e.prototype;return t.findNextItem=function(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=I(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem},t.findPreviousItem=function(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=I(this._list,this._backStack,this._forwardStack,this._currentItem,this._allowBackShuffle),this._currentItem},t.pickNextItem=function(e,t){if(void 0!==t&&this.setCurrentIndex(t),void 0!==this._list[e])return void 0!==this._currentItem&&this._backStack.push(this._currentItem),this._forwardStack.length=0,this._currentItem=this._list[e],this._currentItem},t.setList=function(e){this._list=e},t.setOptions=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++){var r=t[n];switch(r){case"allowBackShuffle":this["_"+r]=Boolean(e[r])}}},t.setCurrentIndex=function(e){var t=this._list[e];this._currentItem!==t&&(this.clear(),this._currentItem=t)},t.clear=function(){this._forwardStack.length=0,this._backStack.length=0,this._currentItem=void 0},e}();var F=function(e){return Boolean(e&&e.length)},L=[{src:""}];var j=function(e,t){if(!F(e))return L;var n=e[t],r=n.sources,a=n.url;return r?r.length?r:L:[{src:a}]};var V=function(e,t){return o()(e,function(e){return e.sources?-1!==o()(e.sources,function(e){return e.src===t}):e.url&&t===e.url})};var q=function(e){return(e||[]).map(function(t,n){return j(e,n)[0].src})};var H=function(e){for(var t=Array(e.length),n=0;n<e.length;n++)t[n]={start:e.start(n),end:e.end(n)};return t};var A=function(e,t){return e?"track":t?"playlist":"none"};var D=function(e,t,n){return t="number"==typeof t?t:-1/0,n="number"==typeof n?n:1/0,Math.max(t,Math.min(e,n))};function B(){return(B=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){U(e,t,n[t])})}return e}function U(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function W(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function G(e){if(Object(f.a)(e),"NotAllowedError"===e.name){var t="Media playback failed at "+(new Date).toLocaleTimeString()+"! (Perhaps autoplay is disabled in this browser.)";Object(f.b)(t)}}var K=["previoustrack","nexttrack","seekbackward","seekforward"],J={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,awaitingPlay:!1};function Q(e){var t=e.prevState,n=e.index,r=e.shouldPlay,a=void 0===r||r,i=e.shouldForceLoad,s=void 0!==i&&i,o=t.activeTrackIndex!==n;return{activeTrackIndex:n,trackLoading:o,currentTime:0,loop:!o&&!s&&t.loop,awaitingPlay:Boolean(a),paused:!a,awaitingForceLoad:Boolean(s)}}function X(e,t){for(var n;n=e.firstChild;)e.removeChild(n);var r=t,a=Array.isArray(r),i=0;for(r=a?r:r[Symbol.iterator]();;){var s;if(a){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var o=s,l=document.createElement("source");l.src=o.src,o.type&&(l.type=o.type),e.appendChild(l)}e.load()}var Y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state=N({},J,{activeTrackIndex:D(t.startingTrackIndex,0),trackLoading:F(t.playlist),currentTime:D(t.startingTime,0),volume:D(t.defaultVolume,0,1),muted:t.defaultMuted,loop:"track"===t.defaultRepeatStrategy,cycle:"playlist"===t.defaultRepeatStrategy,shuffle:t.defaultShuffle,playbackRate:t.defaultPlaybackRate,setVolumeInProgress:!1,awaitingPlay:t.autoplay&&F(t.playlist),awaitingForceLoad:!1,__playlist__:t.playlist},t.initialStateSnapshot?function(e,t){var n=e.__unstable__,r=n.paused,a=n.currentTime,i=n.activeTrackIndex,s=n.volume,o=n.muted,l=n.loop,u=n.cycle,c=n.shuffle,d=n.playbackRate,h=n.activeTrackSrc,p={};F(t.playlist)&&"boolean"==typeof r&&(p.awaitingPlay=!r),"number"==typeof s&&s>=0&&s<=1&&(p.volume=s),"boolean"==typeof o&&(p.muted=o),"boolean"==typeof l&&(p.loop=l),"boolean"==typeof u&&(p.cycle=u),"boolean"==typeof c&&(p.shuffle=c),"number"==typeof d&&(p.playbackRate=d);var f=!1;if("string"==typeof h&&"number"==typeof i&&i>=0){var m=t.playlist[i]&&j(t.playlist,i)[0].src;if(m&&h===m)p.activeTrackIndex=i,f=!0;else{var g=V(t.playlist,h);-1!==g&&(p.activeTrackIndex=g,f=!0)}}return f&&"number"==typeof a&&a>=0&&(p.currentTime=a),p}(t.initialStateSnapshot,t):{}),n.lastStableVolume=n.state.volume,n.shuffler=new R(q(t.playlist),{allowBackShuffle:t.allowBackShuffle}),n.media=null,n.videoHostElementList=[],n.videoHostOccupiedCallbacks=new Map,n.videoHostVacatedCallbacks=new Map,n.togglePause=n.togglePause.bind(W(W(n))),n.selectTrackIndex=n.selectTrackIndex.bind(W(W(n))),n.forwardSkip=n.forwardSkip.bind(W(W(n))),n.backSkip=n.backSkip.bind(W(W(n))),n.seekPreview=n.seekPreview.bind(W(W(n))),n.seekComplete=n.seekComplete.bind(W(W(n))),n.setVolume=n.setVolume.bind(W(W(n))),n.setVolumeComplete=n.setVolumeComplete.bind(W(W(n))),n.toggleMuted=n.toggleMuted.bind(W(W(n))),n.toggleShuffle=n.toggleShuffle.bind(W(W(n))),n.setRepeatStrategy=n.setRepeatStrategy.bind(W(W(n))),n.setPlaybackRate=n.setPlaybackRate.bind(W(W(n))),n.registerVideoHostElement=n.registerVideoHostElement.bind(W(W(n))),n.renderVideoIntoHostElement=n.renderVideoIntoHostElement.bind(W(W(n))),n.unregisterVideoHostElement=n.unregisterVideoHostElement.bind(W(W(n))),n.updateVideoHostElement=n.updateVideoHostElement.bind(W(W(n))),n.handleMediaPlay=n.handleMediaPlay.bind(W(W(n))),n.handleMediaPause=n.handleMediaPause.bind(W(W(n))),n.handleMediaSrcrequest=n.handleMediaSrcrequest.bind(W(W(n))),n.handleMediaEnded=n.handleMediaEnded.bind(W(W(n))),n.handleMediaStalled=n.handleMediaStalled.bind(W(W(n))),n.handleMediaCanplaythrough=n.handleMediaCanplaythrough.bind(W(W(n))),n.handleMediaTimeupdate=n.handleMediaTimeupdate.bind(W(W(n))),n.handleMediaLoadedmetadata=n.handleMediaLoadedmetadata.bind(W(W(n))),n.handleMediaVolumechange=n.handleMediaVolumechange.bind(W(W(n))),n.handleMediaDurationchange=n.handleMediaDurationchange.bind(W(W(n))),n.handleMediaProgress=n.handleMediaProgress.bind(W(W(n))),n.handleMediaLoopchange=n.handleMediaLoopchange.bind(W(W(n))),n.handleMediaRatechange=n.handleMediaRatechange.bind(W(W(n))),n}z(t,e);var n=t.prototype;return n.componentDidMount=function(){var e=this,t=this.media=C(),n=this.props,r=n.defaultPlaybackRate,a=n.crossOrigin,i=n.playlist,s=n.autoplayDelayInSeconds,o=n.mediaElementRef,l=n.getPosterImageForTrack,u=n.onActiveTrackUpdate,c=this.state,d=c.volume,h=c.muted,p=c.playbackRate,f=c.loop,m=c.activeTrackIndex,g=c.awaitingPlay;t.defaultPlaybackRate=r,t.crossOrigin=a,t.volume=d,t.muted=h,t.playbackRate=p,t.loop=f,t.setAttribute("playsinline",""),t.setAttribute("webkit-playsinline",""),t.setAttribute("preload","metadata"),t.setAttribute("poster",l(i[m])),t.addEventListener("play",this.handleMediaPlay),t.addEventListener("pause",this.handleMediaPause),t.addEventListener("ended",this.handleMediaEnded),t.addEventListener("stalled",this.handleMediaStalled),t.addEventListener("canplaythrough",this.handleMediaCanplaythrough),t.addEventListener("timeupdate",this.handleMediaTimeupdate),t.addEventListener("loadedmetadata",this.handleMediaLoadedmetadata),t.addEventListener("volumechange",this.handleMediaVolumechange),t.addEventListener("durationchange",this.handleMediaDurationchange),t.addEventListener("progress",this.handleMediaProgress),t.addEventListener("ratechange",this.handleMediaRatechange),t.addEventListener("srcrequest",this.handleMediaSrcrequest),t.addEventListener("loopchange",this.handleMediaLoopchange),X(t,j(i,m)),this.mediaContainer.appendChild(t),g&&(this.setState({awaitingPlay:!1}),this.delayTimeout=setTimeout(function(){e.togglePause(!1)},1e3*s)),o&&o(t),u&&u(i[m],m)},t.getDerivedStateFromProps=function(e,t){var n=e.playlist;if(n===t.__playlist__)return null;var r={__playlist__:n};if(!F(n))return N({},J,r,{activeTrackIndex:0,trackLoading:!1});var a=j(t.__playlist__,t.activeTrackIndex);if(n[t.activeTrackIndex]){var i=j(n,t.activeTrackIndex);if(a[0].src===i[0].src)return r}var s=V(n,a[0].src);return N({},r,-1!==s?{activeTrackIndex:s}:Q({prevState:t,index:0,shouldPlay:!1}))},n.componentDidUpdate=function(e,t){var n=this;this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(q(this.props.playlist)),this.shuffler.setOptions({allowBackShuffle:this.props.allowBackShuffle});var r=j(e.playlist,t.activeTrackIndex),a=j(this.props.playlist,this.state.activeTrackIndex),i=e.playlist[t.activeTrackIndex],s=this.props.playlist[this.state.activeTrackIndex];(this.state.awaitingForceLoad||r[0].src!==a[0].src)&&(X(this.media,a),this.media.setAttribute("poster",this.props.getPosterImageForTrack(s)),this.setState({awaitingForceLoad:!1}),this.state.shuffle||this.shuffler.clear()),this.props.onActiveTrackUpdate&&i!==s&&this.props.onActiveTrackUpdate(s,this.state.activeTrackIndex),e===this.props||this.media.paused||this.stealMediaSession(),this.state.awaitingPlay&&(this.setState({awaitingPlay:!1}),setTimeout(function(){n.togglePause(!1)})),clearTimeout(this.snapshotUpdateTimeout),this.snapshotUpdateTimeout=setTimeout(function(){n.props.onStateSnapshot&&n.props.onStateSnapshot(function(e){var t=e.paused,n=e.currentTime,r=e.activeTrackIndex,a=e.volume,i=e.muted,s=e.loop,o=e.cycle,l=e.shuffle,u=e.playbackRate,c=e.__playlist__;return{__unstable__:{paused:t,currentTime:n,activeTrackIndex:r,volume:a,muted:i,loop:s,cycle:o,shuffle:l,playbackRate:u,activeTrackSrc:F(c)?j(c,r)[0].src:null}}}(n.state))},100)},n.componentWillUnmount=function(){var e=this.media;e.removeEventListener("srcrequest",this.handleMediaSrcrequest),e.removeEventListener("loopchange",this.handleMediaLoopchange),clearTimeout(this.gapLengthTimeout),clearTimeout(this.delayTimeout)},n.stealMediaSession=function(){var e=this;window.MediaSession&&navigator.mediaSession instanceof MediaSession&&(navigator.mediaSession.metadata=new MediaMetadata(this.props.playlist[this.state.activeTrackIndex]),K.map(function(t){if(-1===e.props.supportedMediaSessionActions.indexOf(t))return null;var n=e.props.mediaSessionSeekLengthInSeconds;switch(t){case"play":return e.togglePause.bind(e,!1);case"pause":return e.togglePause.bind(e,!0);case"previoustrack":return e.backSkip;case"nexttrack":return e.forwardSkip;case"seekbackward":return function(){return e.media.currentTime-=n};case"seekforward":return function(){return e.media.currentTime+=n};default:return}}).forEach(function(e,t){navigator.mediaSession.setActionHandler(K[t],e)}))},n.registerVideoHostElement=function(e,t){var n=t.onHostOccupied,r=t.onHostVacated;this.videoHostElementList=this.videoHostElementList.concat(e),this.videoHostOccupiedCallbacks.set(e,n),this.videoHostVacatedCallbacks.set(e,r)},n.renderVideoIntoHostElement=function(e){var t=this;-1!==this.videoHostElementList.indexOf(e)&&(cancelAnimationFrame(this.videoHostUpdateRaf),this.videoHostUpdateRaf=requestAnimationFrame(function(){return t.updateVideoHostElement(e)}))},n.unregisterVideoHostElement=function(e){this.videoHostElementList=this.videoHostElementList.filter(function(t){return t!==e}),this.videoHostOccupiedCallbacks.delete(e),this.videoHostVacatedCallbacks.delete(e),this.media.parentNode===e&&this.updateVideoHostElement()},n.updateVideoHostElement=function(e){e?this.videoHostElementList=[e].concat(this.videoHostElementList.filter(function(t){return t!==e})):e=this.videoHostElementList[0]||this.mediaContainer;var t=!this.media.paused,n=this.media.parentNode;if(e!==n){e.appendChild(this.media),t&&this.media.paused&&this.media.play();var r=this.videoHostVacatedCallbacks.get(n);r&&r(this.media);var a=this.videoHostOccupiedCallbacks.get(e);a&&a(this.media)}},n.handleMediaPlay=function(){this.setState(function(e){return!1===e.paused?null:{paused:!1}}),this.stealMediaSession()},n.handleMediaPause=function(){this.setState(function(e){return!0===e.paused?null:{paused:!0}})},n.handleMediaSrcrequest=function(e){var t=this.props.playlist,n=j(t,this.state.activeTrackIndex);if(-1===o()(n,function(t){return t.src===e.srcRequested})){var r=V(t,e.srcRequested);-1!==r?this.selectTrackIndex(r):Object(f.a)("Source '"+e.srcRequested+"' does not exist in the loaded playlist. Make sure you've updated the 'playlist' prop to PlayerContextProvider before you select this track!")}},n.handleMediaEnded=function(){if(!this.state.seekInProgress){clearTimeout(this.gapLengthTimeout);var e=this.props,t=e.playlist,n=e.loadFirstTrackOnPlaylistComplete;if(F(t)){var r=this.state,a=r.cycle,i=r.activeTrackIndex;!a&&i+1>=t.length?n&&this.goToTrack({index:0,shouldPlay:!1,shouldForceLoad:!0}):this.gapLengthTimeout=setTimeout(this.forwardSkip,1e3*this.props.gapLengthInSeconds)}}},n.handleMediaStalled=function(){this.setState(function(e){return!0===e.stalled?null:{stalled:!0}})},n.handleMediaCanplaythrough=function(){this.setState(function(e){return!1===e.stalled?null:{stalled:!1}})},n.handleMediaTimeupdate=function(){var e=this.media,t=e.currentTime,n=e.played;this.state.trackLoading?this.media.currentTime=this.state.currentTime:this.setState({currentTime:t,playedRanges:H(n)})},n.handleMediaLoadedmetadata=function(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime),this.setState(function(e){return!1===e.trackLoading?null:{trackLoading:!1}})},n.handleMediaVolumechange=function(){var e=this.media,t=e.volume,n=e.muted;this.setState({volume:t,muted:n})},n.handleMediaDurationchange=function(){var e=this.media.duration;this.setState({duration:e})},n.handleMediaProgress=function(){this.setState({bufferedRanges:H(this.media.buffered),seekableRanges:H(this.media.seekable)})},n.handleMediaLoopchange=function(){var e=this.media.loop;this.setState(function(t){return t.loop===e?null:{loop:e}})},n.handleMediaRatechange=function(){var e=this.media.playbackRate;this.setState(function(t){return t.playbackRate===e?null:{playbackRate:e}})},n.togglePause=function(e){if(clearTimeout(this.delayTimeout),"boolean"==typeof e?e:!this.state.paused)this.media.pause();else if(this.media.currentSrc)try{var t=this.media.play();t&&"function"==typeof t.catch&&t.catch(function(e){if("AbortError"!==e.name)return Promise.reject(e)}).catch(G)}catch(e){G(e)}},n.goToTrack=function(e){clearTimeout(this.delayTimeout),this.setState(function(t){return Q(N({prevState:t},e))})},n.selectTrackIndex=function(e){var t=this.props.playlist;F(t)&&(e<0||e>t.length?Object(f.b)("Playlist index "+e+" is out of bounds!"):(this.state.shuffle&&this.shuffler.pickNextItem(e,this.state.activeTrackIndex),this.goToTrack({index:e})))},n.backSkip=function(){var e=this.props,t=e.playlist,n=e.stayOnBackSkipThreshold,r=this.media,a=this.state,i=a.cycle,s=a.activeTrackIndex,o=a.shuffle;if(!F(t)||r.currentTime>=n||!i&&s<1)r.currentTime=0;else{var l;if(o){var u=this.shuffler.findPreviousItem(s);if(void 0===u)return void(r.currentTime=0);l=V(t,u)}else(l=s-1)<0&&(l=t.length-1);this.goToTrack({index:l,shouldForceLoad:!0})}},n.forwardSkip=function(){var e,t=this.props.playlist,n=this.state,r=n.cycle,a=n.activeTrackIndex,i=n.shuffle;!F(t)||!r&&a+1>=t.length||(i?e=V(t,this.shuffler.findNextItem(a)):(e=a+1)>=t.length&&(e=0),this.goToTrack({index:e,shouldForceLoad:!0}))},n.seekPreview=function(e){if(F(this.props.playlist)){var t={seekPreviewTime:e,seekInProgress:!0};switch(this.props.seekMode){case"paused":this.setState(function(e){var n=e.paused,r=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||r})}),this.media.currentTime=e,this.state.paused||this.togglePause(!0);break;case"immediate":this.setState(function(e){var n=e.paused,r=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||r})}),this.media.currentTime=e,this.state.awaitingResumeOnSeekComplete&&!this.media.ended&&this.togglePause(!1);break;case"onrelease":this.setState(t)}}},n.seekComplete=function(e){var t=this.state,n=t.seekPreviewTime,r=t.awaitingResumeOnSeekComplete,a={seekInProgress:!1,awaitingResumeOnSeekComplete:!1},i="number"==typeof e?e:n;isNaN(i)?this.setState(a):(this.setState(N({},a,{currentTime:i})),this.media.currentTime=i,r&&(this.media.ended?this.forwardSkip():this.togglePause(!1)))},n.setVolume=function(e,t){void 0===t&&(t=!0),t&&!this.state.setVolumeInProgress&&this.setState({setVolumeInProgress:!0});var n=D(e,0,1);this.media.muted=0===n,this.media.volume=n},n.setVolumeComplete=function(e){"number"==typeof e&&this.setVolume(e,!1),this.setState({setVolumeInProgress:!1}),this.media.muted||(this.lastStableVolume=this.media.volume)},n.toggleMuted=function(e){var t="boolean"==typeof e?e:!this.state.muted;this.media.muted=t,t||(this.media.volume=this.lastStableVolume)},n.toggleShuffle=function(e){var t="boolean"==typeof e?e:!this.state.shuffle;this.setState({shuffle:t})},n.setRepeatStrategy=function(e){if(-1!==p.indexOf(e))switch(e){case"track":this.media.loop=!0;break;case"playlist":this.setState({loop:!1,cycle:!0}),this.media.loop=!1;break;case"none":this.setState({loop:!1,cycle:!1}),this.media.loop=!1}else Object(f.b)('repeatStrategy "'+e+'" is not one of: '+p.split(", ")+".")},n.setPlaybackRate=function(e){this.media.playbackRate=e},n.getControlProps=function(){var e=this.props,t=this.state,n={playlist:e.playlist,activeTrackIndex:t.activeTrackIndex,trackLoading:t.trackLoading,paused:t.paused,currentTime:t.currentTime,seekPreviewTime:t.seekPreviewTime,seekInProgress:t.seekInProgress,awaitingResumeOnSeekComplete:t.awaitingResumeOnSeekComplete,duration:t.duration,bufferedRanges:t.bufferedRanges,playedRanges:t.playedRanges,seekableRanges:t.seekableRanges,volume:t.volume,muted:t.muted,shuffle:t.shuffle,stalled:t.stalled,playbackRate:t.playbackRate,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:A(t.loop,t.cycle),registerVideoHostElement:this.registerVideoHostElement,renderVideoIntoHostElement:this.renderVideoIntoHostElement,unregisterVideoHostElement:this.unregisterVideoHostElement,onTogglePause:this.togglePause,onSelectTrackIndex:this.selectTrackIndex,onBackSkip:this.backSkip,onForwardSkip:this.forwardSkip,onSeekPreview:this.seekPreview,onSeekComplete:this.seekComplete,onSetVolume:this.setVolume,onSetVolumeComplete:this.setVolumeComplete,onToggleMuted:this.toggleMuted,onToggleShuffle:this.toggleShuffle,onSetRepeatStrategy:this.setRepeatStrategy,onSetPlaybackRate:this.setPlaybackRate};if(this.playerContext)for(var r=Object.keys(this.playerContext),a=0;a<r.length;a++){var i=r[a];if(n[i]!==this.playerContext[i]){this.playerContext=n;break}}else this.playerContext=n;return this.playerContext},n.render=function(){var e=this,t=this.getControlProps();return i.a.createElement(a.Fragment,null,i.a.createElement("div",{ref:function(t){return e.mediaContainer=t},hidden:!0}),i.a.createElement(u.Provider,{value:t},"function"==typeof this.props.children?this.props.children(t):this.props.children))},t}(a.Component);Y.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,startingTime:0,startingTrackIndex:0,loadFirstTrackOnPlaylistComplete:!0,seekMode:"immediate",maintainPlaybackRate:!1,allowBackShuffle:!1,stayOnBackSkipThreshold:5,supportedMediaSessionActions:["play","pause","previoustrack","nexttrack"],mediaSessionSeekLengthInSeconds:10,getPosterImageForTrack:function(e){return e&&e.artwork?e.artwork[0].src:""}};var Z=function(e){function t(){return e.apply(this,arguments)||this}z(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.groupContext.registerMediaElement(this.mediaElement)},n.componentWillUnmount=function(){this.props.groupContext.unregisterMediaElement(this.mediaElement)},n.render=function(){var e=this,t=this.props,n=t.groupContext,r=t.props,a=r.mediaElementRef,s=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(r,["mediaElementRef"]);return i.a.createElement(Y,B({},n.groupProps,s,{mediaElementRef:function(t){a&&a(t),e.mediaElement=t}}))},t}(a.Component);var $=function(e){return i.a.createElement(c.Consumer,null,function(t){return t?Object(a.createElement)(Z,{groupContext:t,props:e}):Object(a.createElement)(Y,e)})};function ee(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){te(e,t,n[t])})}return e}function te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ne(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var re=function(e){function t(t){var n;return(n=e.call(this,t)||this).registerMediaElement=n.registerMediaElement.bind(ne(ne(n))),n.unregisterMediaElement=n.unregisterMediaElement.bind(ne(ne(n))),n.enforceOneMediaSourceOnly=n.enforceOneMediaSourceOnly.bind(ne(ne(n))),n.mediaElements=[],n}!function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(t,e);var n=t.prototype;return n.registerMediaElement=function(e){this.mediaElements=this.mediaElements.concat(e),e.addEventListener("play",this.enforceOneMediaSourceOnly,!0),e.addEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)},n.unregisterMediaElement=function(e){this.mediaElements=this.mediaElements.filter(function(t){return e!==t}),e.removeEventListener("play",this.enforceOneMediaSourceOnly,!0),e.removeEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)},n.enforceOneMediaSourceOnly=function(e){var t=e.target,n=t.paused,r=t.muted;if(!n&&!r){var a=this.mediaElements,i=Array.isArray(a),s=0;for(a=i?a:a[Symbol.iterator]();;){var o;if(i){if(s>=a.length)break;o=a[s++]}else{if((s=a.next()).done)break;o=s.value}var l=o;l===t||l.muted||l.pause()}}},n.render=function(){var e=this;return i.a.createElement(c.Consumer,null,function(t){var n=t?ee({},t,{groupProps:ee({},t.groupProps,e.props)}):{groupProps:e.props,registerMediaElement:e.registerMediaElement,unregisterMediaElement:e.unregisterMediaElement};return i.a.createElement(c.Provider,{value:n},e.props.children)})},t}(a.Component),ae=Object(l.a)("FullscreenContext",{fullscreen:!1,requestFullscreen:function(){Object(f.b)("Fullscreen request ignored since there is no FullscreenContextProvider ancestor.")},requestExitFullscreen:function(){Object(f.b)("Exit fullscreen request ignored since there is no FullscreenContextProvider ancestor.")}});function ie(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var se={width:"100%",height:"100%"},oe=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={fullscreen:!1},n.requestFullscreen=n.requestFullscreen.bind(ie(ie(n))),n.requestExitFullscreen=n.requestExitFullscreen.bind(ie(ie(n))),n.handleFullscreenChange=n.handleFullscreenChange.bind(ie(ie(n))),n.fullscreenElement=null,n}!function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(t,e);var n=t.prototype;return n.componentDidMount=function(){document.addEventListener("fullscreenchange",this.handleFullscreenChange),document.addEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.addEventListener("mozfullscreenchange",this.handleFullscreenChange),document.addEventListener("msfullscreenchange",this.handleFullscreenChange)},n.componentWillUnmount=function(){document.removeEventListener("fullscreenchange",this.handleFullscreenChange),document.removeEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.removeEventListener("mozfullscreenchange",this.handleFullscreenChange),document.removeEventListener("msfullscreenchange",this.handleFullscreenChange)},n.requestFullscreen=function(){this.props.fullscreenEnabled&&(this.fullscreenElement.requestFullscreen?this.fullscreenElement.requestFullscreen():this.fullscreenElement.webkitRequestFullscreen?this.fullscreenElement.webkitRequestFullscreen():this.fullscreenElement.mozRequestFullscreen?this.fullscreenElement.mozRequestFullScreen():this.fullscreenElement.msRequestFullscreen&&this.fullscreenElement.msRequestFullscreen())},n.requestExitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.mozExitFullscreen()},n.handleFullscreenChange=function(){var e=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;this.setState({fullscreen:e===this.fullscreenElement})},n.getFullscreenContext=function(){var e={fullscreen:this.state.fullscreen,requestFullscreen:this.requestFullscreen,requestExitFullscreen:this.requestExitFullscreen};return this.fullscreenContext&&e.fullscreen===this.fullscreenContext.fullscreen?this.fullscreenContext:this.fullscreenContext=e},n.render=function(){var e=this,t=this.getFullscreenContext();return i.a.createElement("div",{ref:function(t){return e.fullscreenElement=t},style:this.state.fullscreen?se:void 0},i.a.createElement(ae.Provider,{value:t},"function"==typeof this.props.children?this.props.children(t):this.props.children))},t}(a.PureComponent);oe.defaultProps={fullscreenEnabled:!0};var le=oe;function ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ce=function(e,t){var n={},r=e.displayName||e.name;function s(s){return i.a.createElement(ae.Consumer,null,function(o){return i.a.createElement(u.Consumer,null,function(i){var l=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){ue(e,t,n[t])})}return e}({},s),u=t,c=Array.isArray(u),d=0;for(u=c?u:u[Symbol.iterator]();;){var h;if(c){if(d>=u.length)break;h=u[d++]}else{if((d=u.next()).done)break;h=d.value}var p=h;i.hasOwnProperty(p)?l[p]=i[p]:o.hasOwnProperty(p)?l[p]=o[p]:n[p]||(Object(f.b)("Prop '"+p+"' for component "+r+" not found in playerContext or fullscreenContext."),n[p]=!0)}return Object(a.createElement)(e,l)})})}return r&&(s.displayName="PlayerContextFilter("+r+")"),s};n.d(t,"PlayerContextConsumer",function(){return de}),n.d(t,"FullscreenContextConsumer",function(){return he}),n.d(t,"PlayerContextProvider",function(){return $}),n.d(t,"PlayerContextGroup",function(){return re}),n.d(t,"FullscreenContextProvider",function(){return le}),n.d(t,"playerContextFilter",function(){return ce}),n.d(t,"PlayerPropTypes",function(){return r}),n.d(t,"logError",function(){return f.a}),n.d(t,"logWarning",function(){return f.b}),n.d(t,"convertToNumberWithinIntervalBounds",function(){return D}),n.d(t,"isPlaylistValid",function(){return F}),n.d(t,"repeatStrategyOptions",function(){return p});var de=u.Consumer,he=ae.Consumer}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.cassetteCore=t(require("react"),require("prop-types")):e.cassetteCore=t(e.React,e.PropTypes)}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=7)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"b",function(){return i});var r=console.log.bind(console),a=console.error?console.error.bind(console):r,i=console.warn?console.warn.bind(console):r},function(e,t,n){"use strict";(function(e){var r=n(0),a=n(2),i=n(6).version,s="undefined"==typeof window?e:window;s.__cassette_contexts__=s.__cassette_contexts__||{},t.a=function(e,t){void 0===t&&(t=null);var n=s.__cassette_contexts__[e];if(n)return n.packageVersion!==i&&Object(a.b)("Warning: multiple versions of "+e+" from the @cassette/core package have been loaded. v"+i+" will be ignored and v"+n.packageVersion+" will be used instead."),n;var o=Object(r.createContext)(t);return o.displayName=e,o.packageVersion=i,s.__cassette_contexts__[e]=o,o}}).call(this,n(5))},function(e,t,n){"use strict";e.exports=function(e,t,n){if("function"==typeof Array.prototype.findIndex)return e.findIndex(t,n);if("function"!=typeof t)throw new TypeError("predicate must be a function");var r=Object(e),a=r.length;if(0===a)return-1;for(var i=0;i<a;i++)if(t.call(n,r[i],i,r))return i;return-1}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e){e.exports={name:"@cassette/core",version:"2.0.0-alpha.14",description:"A simple, clean, and responsive visual wrapper for the HTML audio tag, built with React.",main:"dist/es5/cassette-core.js",scripts:{"build:clean":"rimraf dist","build:webpack":"BUILD_MODE=all webpack --progress",build:"npm run build:clean && npm run build:webpack",prepare:"npm run build",test:'echo "Error: no test specified" && exit 1'},repository:{type:"git",url:"https://github.com/benwiley4000/cassette.git"},engines:{node:">=6.0.0",npm:">=5.0.0"},keywords:["audio","video","media","ui","react","reactjs","responsive","music","player","html5","component","components"],author:{name:"Ben Wiley",email:"therealbenwiley@gmail.com",url:"http://benwiley.org/"},license:"MIT",peerDependencies:{react:"^16.3.0"},devDependencies:{"array-find-index":"^1.0.2",rimraf:"^2.5.4",webpack:"^4.17.1"},dependencies:{"prop-types":"^15.5.10"},publishConfig:{access:"public"},gitHead:"c0ab091641fe16f7a54d1e5e86084c43a65789df"}},function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"controlKeyword",function(){return v}),n.d(r,"control",function(){return g}),n.d(r,"crossOriginAttribute",function(){return y}),n.d(r,"repeatStrategy",function(){return b}),n.d(r,"mediaSource",function(){return k}),n.d(r,"mediaSessionAction",function(){return S}),n.d(r,"mediaSessionArtwork",function(){return E}),n.d(r,"track",function(){return w}),n.d(r,"progressDirection",function(){return x}),n.d(r,"seekMode",function(){return P}),n.d(r,"aspectRatio",function(){return T});var a=n(0),i=n.n(a),s=n(4),o=n.n(s),l=n(3),u=Object(l.a)("PlayerContext"),c=Object(l.a)("GroupContext"),d=n(1),h=n.n(d),p=["none","playlist","track"],f=n(2);function m(e,t){var n=!1;return function(r,a,i){if(a in r){!n&&t in r&&(Object(f.b)("Do not define both the '"+a+"' and '"+t+"' props."),n=!0);for(var s=arguments.length,o=new Array(s>3?s-3:0),l=3;l<s;l++)o[l-3]=arguments[l];return e.isRequired.apply(e,[r,a,i].concat(o))}if(!(t in r))return new Error("If the '"+t+"' prop is not defined, '"+a+"' must be.")}}var v=h.a.oneOf(["playpause","backskip","forwardskip","volume","mute","repeat","shuffle","progress","progressdisplay","fullscreen","spacer"]),g=h.a.oneOfType([h.a.func,v]),y=h.a.oneOf(["anonymous","use-credentials"]),b=h.a.oneOf(p),k=h.a.shape({src:h.a.string.isRequired,type:h.a.string.isRequired}),S=h.a.oneOf(["play","pause","previoustrack","nexttrack","seekbackward","seekforward"]),E=h.a.shape({src:h.a.string.isRequired,sizes:h.a.string,type:h.a.string}),w=h.a.shape({url:m(h.a.string,"sources"),sources:m(h.a.arrayOf(k.isRequired),"url"),title:h.a.string.isRequired,artist:h.a.string,album:h.a.string,artwork:h.a.arrayOf(E.isRequired),meta:h.a.object}),x=h.a.oneOf(["left","right","up","down"]),P=h.a.oneOf(["paused","immediate","onrelease"]);function T(e,t){var n=e[t];if(void 0!==n)return"string"!=typeof n||2!==n.split(":").length||n.split(":").some(isNaN)?new Error("The "+t+" prop should be a string of the form 'x:y'. Example: 16:9"):void 0}var M="loopchange",O="srcrequest";var C=function(){var e=document.createElement("video");return new MutationObserver(function(){e.dispatchEvent(new Event(M))}).observe(e,{attributes:!0,attributeFilter:["loop"]}),Object.defineProperty(e,"src",{get:function(){return e.currentSrc},set:function(t){var n=new Event(O);n.srcRequested=t,e.dispatchEvent(n)}}),e};function _(e,t,n,r){for(var a=r,i=0;i<e;i++){if(!t.length)throw _(i,n,t,a),"Moving "+e+" places was not possible!";n.push(a),a=t.pop()}return a}function I(e,t,n,r,a){var i=r;if(e.length){for(var s=1;s<=t.length;s++)if(-1!==e.indexOf(t[t.length-s]))return _(s,t,n,i);if(a){if(function(e,t){if(!e.length)return!1;for(var n=0;n<e.length;n++)if(t!==e[n])return!1;return!0}(e,i))return i;var o;do{o=e[Math.floor(Math.random()*e.length)]}while(i===o||void 0===o);return void 0!==(i=_(t.length,t,n,i))&&n.push(i),o}}}var R=function(){function e(e,t){void 0===t&&(t={}),this._list=e,this._forwardStack=[],this._backStack=[],this._currentItem=void 0,this._allowBackShuffle=Boolean(t.allowBackShuffle)}var t=e.prototype;return t.findNextItem=function(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=I(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem},t.findPreviousItem=function(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=I(this._list,this._backStack,this._forwardStack,this._currentItem,this._allowBackShuffle),this._currentItem},t.pickNextItem=function(e,t){if(void 0!==t&&this.setCurrentIndex(t),void 0!==this._list[e])return void 0!==this._currentItem&&this._backStack.push(this._currentItem),this._forwardStack.length=0,this._currentItem=this._list[e],this._currentItem},t.setList=function(e){this._list=e},t.setOptions=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++){var r=t[n];switch(r){case"allowBackShuffle":this["_"+r]=Boolean(e[r])}}},t.setCurrentIndex=function(e){var t=this._list[e];this._currentItem!==t&&(this.clear(),this._currentItem=t)},t.clear=function(){this._forwardStack.length=0,this._backStack.length=0,this._currentItem=void 0},e}();var L=function(e){return Boolean(e&&e.length)},F=[{src:""}];var j=function(e,t){if(!L(e))return F;var n=e[t],r=n.sources,a=n.url;return r?r.length?r:F:[{src:a}]};var V=function(e,t){return o()(e,function(e){return e.sources?-1!==o()(e.sources,function(e){return e.src===t}):e.url&&t===e.url})};var q=function(e){return(e||[]).map(function(t,n){return j(e,n)[0].src})};var H=function(e){for(var t=Array(e.length),n=0;n<e.length;n++)t[n]={start:e.start(n),end:e.end(n)};return t};var A=function(e,t){return e?"track":t?"playlist":"none"};var D=function(e,t,n){return t="number"==typeof t?t:-1/0,n="number"==typeof n?n:1/0,Math.max(t,Math.min(e,n))};function B(){return(B=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){U(e,t,n[t])})}return e}function U(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function W(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function G(e){if(Object(f.a)(e),"NotAllowedError"===e.name){var t="Media playback failed at "+(new Date).toLocaleTimeString()+"! (Perhaps autoplay is disabled in this browser.)";Object(f.b)(t)}}var K=["previoustrack","nexttrack","seekbackward","seekforward"],J={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,awaitingPlay:!1};function Q(e){var t=e.prevState,n=e.index,r=e.shouldPlay,a=void 0===r||r,i=e.shouldForceLoad,s=void 0!==i&&i,o=t.activeTrackIndex!==n;return{activeTrackIndex:n,trackLoading:o,currentTime:0,loop:!o&&!s&&t.loop,awaitingPlay:Boolean(a),paused:!a,awaitingForceLoad:Boolean(s)}}function X(e,t){for(var n;n=e.firstChild;)e.removeChild(n);var r=t,a=Array.isArray(r),i=0;for(r=a?r:r[Symbol.iterator]();;){var s;if(a){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var o=s,l=document.createElement("source");l.src=o.src,o.type&&(l.type=o.type),e.appendChild(l)}e.load()}var Y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state=N({},J,{activeTrackIndex:D(t.startingTrackIndex,0),trackLoading:L(t.playlist),currentTime:D(t.startingTime,0),volume:D(t.defaultVolume,0,1),muted:t.defaultMuted,loop:"track"===t.defaultRepeatStrategy,cycle:"playlist"===t.defaultRepeatStrategy,shuffle:t.defaultShuffle,playbackRate:t.defaultPlaybackRate,setVolumeInProgress:!1,awaitingPlay:t.autoplay&&L(t.playlist),awaitingForceLoad:!1,__playlist__:t.playlist},t.initialStateSnapshot?function(e,t){var n=e.__unstable__,r=n.paused,a=n.currentTime,i=n.activeTrackIndex,s=n.volume,o=n.muted,l=n.loop,u=n.cycle,c=n.shuffle,d=n.playbackRate,h=n.activeTrackSrc,p={};L(t.playlist)&&"boolean"==typeof r&&(p.awaitingPlay=!r),"number"==typeof s&&s>=0&&s<=1&&(p.volume=s),"boolean"==typeof o&&(p.muted=o),"boolean"==typeof l&&(p.loop=l),"boolean"==typeof u&&(p.cycle=u),"boolean"==typeof c&&(p.shuffle=c),"number"==typeof d&&(p.playbackRate=d);var f=!1;if("string"==typeof h&&"number"==typeof i&&i>=0){var m=t.playlist[i]&&j(t.playlist,i)[0].src;if(m&&h===m)p.activeTrackIndex=i,f=!0;else{var v=V(t.playlist,h);-1!==v&&(p.activeTrackIndex=v,f=!0)}}return f&&"number"==typeof a&&a>=0&&(p.currentTime=a),p}(t.initialStateSnapshot,t):{}),n.lastStableVolume=n.state.volume,n.shuffler=new R(q(t.playlist),{allowBackShuffle:t.allowBackShuffle}),n.media=null,n.videoHostElementList=[],n.videoHostOccupiedCallbacks=new Map,n.videoHostVacatedCallbacks=new Map,n.togglePause=n.togglePause.bind(W(W(n))),n.selectTrackIndex=n.selectTrackIndex.bind(W(W(n))),n.forwardSkip=n.forwardSkip.bind(W(W(n))),n.backSkip=n.backSkip.bind(W(W(n))),n.seekPreview=n.seekPreview.bind(W(W(n))),n.seekComplete=n.seekComplete.bind(W(W(n))),n.setVolume=n.setVolume.bind(W(W(n))),n.setVolumeComplete=n.setVolumeComplete.bind(W(W(n))),n.toggleMuted=n.toggleMuted.bind(W(W(n))),n.toggleShuffle=n.toggleShuffle.bind(W(W(n))),n.setRepeatStrategy=n.setRepeatStrategy.bind(W(W(n))),n.setPlaybackRate=n.setPlaybackRate.bind(W(W(n))),n.registerVideoHostElement=n.registerVideoHostElement.bind(W(W(n))),n.renderVideoIntoHostElement=n.renderVideoIntoHostElement.bind(W(W(n))),n.unregisterVideoHostElement=n.unregisterVideoHostElement.bind(W(W(n))),n.updateVideoHostElement=n.updateVideoHostElement.bind(W(W(n))),n.handleMediaPlay=n.handleMediaPlay.bind(W(W(n))),n.handleMediaPause=n.handleMediaPause.bind(W(W(n))),n.handleMediaSrcrequest=n.handleMediaSrcrequest.bind(W(W(n))),n.handleMediaEnded=n.handleMediaEnded.bind(W(W(n))),n.handleMediaStalled=n.handleMediaStalled.bind(W(W(n))),n.handleMediaCanplaythrough=n.handleMediaCanplaythrough.bind(W(W(n))),n.handleMediaTimeupdate=n.handleMediaTimeupdate.bind(W(W(n))),n.handleMediaLoadedmetadata=n.handleMediaLoadedmetadata.bind(W(W(n))),n.handleMediaVolumechange=n.handleMediaVolumechange.bind(W(W(n))),n.handleMediaDurationchange=n.handleMediaDurationchange.bind(W(W(n))),n.handleMediaProgress=n.handleMediaProgress.bind(W(W(n))),n.handleMediaLoopchange=n.handleMediaLoopchange.bind(W(W(n))),n.handleMediaRatechange=n.handleMediaRatechange.bind(W(W(n))),n}z(t,e);var n=t.prototype;return n.componentDidMount=function(){var e=this,t=this.media=C(),n=this.props,r=n.defaultPlaybackRate,a=n.crossOrigin,i=n.playlist,s=n.autoplayDelayInSeconds,o=n.mediaElementRef,l=n.getPosterImageForTrack,u=n.onActiveTrackUpdate,c=this.state,d=c.volume,h=c.muted,p=c.playbackRate,f=c.loop,m=c.activeTrackIndex,v=c.awaitingPlay;t.defaultPlaybackRate=r,t.crossOrigin=a,t.volume=d,t.muted=h,t.playbackRate=p,t.loop=f,t.setAttribute("playsinline",""),t.setAttribute("webkit-playsinline",""),t.setAttribute("preload","metadata"),t.setAttribute("poster",l(i[m])),t.addEventListener("play",this.handleMediaPlay),t.addEventListener("pause",this.handleMediaPause),t.addEventListener("ended",this.handleMediaEnded),t.addEventListener("stalled",this.handleMediaStalled),t.addEventListener("canplaythrough",this.handleMediaCanplaythrough),t.addEventListener("timeupdate",this.handleMediaTimeupdate),t.addEventListener("loadedmetadata",this.handleMediaLoadedmetadata),t.addEventListener("volumechange",this.handleMediaVolumechange),t.addEventListener("durationchange",this.handleMediaDurationchange),t.addEventListener("progress",this.handleMediaProgress),t.addEventListener("ratechange",this.handleMediaRatechange),t.addEventListener("srcrequest",this.handleMediaSrcrequest),t.addEventListener("loopchange",this.handleMediaLoopchange),X(t,j(i,m)),this.mediaContainer.appendChild(t),v&&(this.setState({awaitingPlay:!1}),this.delayTimeout=setTimeout(function(){e.togglePause(!1)},1e3*s)),o&&o(t),u&&u(i[m],m)},t.getDerivedStateFromProps=function(e,t){var n=e.playlist;if(n===t.__playlist__)return null;var r={__playlist__:n};if(!L(n))return N({},J,r,{activeTrackIndex:0,trackLoading:!1});var a=j(t.__playlist__,t.activeTrackIndex);if(n[t.activeTrackIndex]){var i=j(n,t.activeTrackIndex);if(a[0].src===i[0].src)return r}var s=V(n,a[0].src);return N({},r,-1!==s?{activeTrackIndex:s}:Q({prevState:t,index:0,shouldPlay:!1}))},n.componentDidUpdate=function(e,t){var n=this;this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(q(this.props.playlist)),this.shuffler.setOptions({allowBackShuffle:this.props.allowBackShuffle});var r=j(e.playlist,t.activeTrackIndex),a=j(this.props.playlist,this.state.activeTrackIndex),i=e.playlist[t.activeTrackIndex],s=this.props.playlist[this.state.activeTrackIndex];(this.state.awaitingForceLoad||r[0].src!==a[0].src)&&(X(this.media,a),this.media.setAttribute("poster",this.props.getPosterImageForTrack(s)),this.setState({awaitingForceLoad:!1}),this.state.shuffle||this.shuffler.clear()),this.props.onActiveTrackUpdate&&i!==s&&this.props.onActiveTrackUpdate(s,this.state.activeTrackIndex),e===this.props||this.media.paused||this.stealMediaSession(),this.state.awaitingPlay&&(this.setState({awaitingPlay:!1}),setTimeout(function(){n.togglePause(!1)})),clearTimeout(this.snapshotUpdateTimeout),this.snapshotUpdateTimeout=setTimeout(function(){n.props.onStateSnapshot&&n.props.onStateSnapshot(function(e){var t=e.paused,n=e.currentTime,r=e.activeTrackIndex,a=e.volume,i=e.muted,s=e.loop,o=e.cycle,l=e.shuffle,u=e.playbackRate,c=e.__playlist__;return{__unstable__:{paused:t,currentTime:n,activeTrackIndex:r,volume:a,muted:i,loop:s,cycle:o,shuffle:l,playbackRate:u,activeTrackSrc:L(c)?j(c,r)[0].src:null}}}(n.state))},100)},n.componentWillUnmount=function(){var e=this.media;e.removeEventListener("play",this.handleMediaPlay),e.removeEventListener("pause",this.handleMediaPause),e.removeEventListener("ended",this.handleMediaEnded),e.removeEventListener("stalled",this.handleMediaStalled),e.removeEventListener("canplaythrough",this.handleMediaCanplaythrough),e.removeEventListener("timeupdate",this.handleMediaTimeupdate),e.removeEventListener("loadedmetadata",this.handleMediaLoadedmetadata),e.removeEventListener("volumechange",this.handleMediaVolumechange),e.removeEventListener("durationchange",this.handleMediaDurationchange),e.removeEventListener("progress",this.handleMediaProgress),e.removeEventListener("ratechange",this.handleMediaRatechange),e.removeEventListener("srcrequest",this.handleMediaSrcrequest),e.removeEventListener("loopchange",this.handleMediaLoopchange),clearTimeout(this.gapLengthTimeout),clearTimeout(this.delayTimeout)},n.stealMediaSession=function(){var e=this;window.MediaSession&&navigator.mediaSession instanceof MediaSession&&(navigator.mediaSession.metadata=new MediaMetadata(this.props.playlist[this.state.activeTrackIndex]),K.map(function(t){if(-1===e.props.supportedMediaSessionActions.indexOf(t))return null;var n=e.props.mediaSessionSeekLengthInSeconds;switch(t){case"play":return e.togglePause.bind(e,!1);case"pause":return e.togglePause.bind(e,!0);case"previoustrack":return e.backSkip;case"nexttrack":return e.forwardSkip;case"seekbackward":return function(){return e.media.currentTime-=n};case"seekforward":return function(){return e.media.currentTime+=n};default:return}}).forEach(function(e,t){navigator.mediaSession.setActionHandler(K[t],e)}))},n.registerVideoHostElement=function(e,t){var n=t.onHostOccupied,r=t.onHostVacated;this.videoHostElementList=this.videoHostElementList.concat(e),this.videoHostOccupiedCallbacks.set(e,n),this.videoHostVacatedCallbacks.set(e,r)},n.renderVideoIntoHostElement=function(e){var t=this;-1!==this.videoHostElementList.indexOf(e)&&(cancelAnimationFrame(this.videoHostUpdateRaf),this.videoHostUpdateRaf=requestAnimationFrame(function(){return t.updateVideoHostElement(e)}))},n.unregisterVideoHostElement=function(e){this.videoHostElementList=this.videoHostElementList.filter(function(t){return t!==e}),this.videoHostOccupiedCallbacks.delete(e),this.videoHostVacatedCallbacks.delete(e),this.media.parentNode===e&&this.updateVideoHostElement()},n.updateVideoHostElement=function(e){e?this.videoHostElementList=[e].concat(this.videoHostElementList.filter(function(t){return t!==e})):e=this.videoHostElementList[0]||this.mediaContainer;var t=!this.media.paused,n=this.media.parentNode;if(e!==n){e.appendChild(this.media),t&&this.media.paused&&this.media.play();var r=this.videoHostVacatedCallbacks.get(n);r&&r(this.media);var a=this.videoHostOccupiedCallbacks.get(e);a&&a(this.media)}},n.handleMediaPlay=function(){this.setState(function(e){return!1===e.paused?null:{paused:!1}}),this.stealMediaSession()},n.handleMediaPause=function(){this.setState(function(e){return!0===e.paused?null:{paused:!0}})},n.handleMediaSrcrequest=function(e){var t=this.props.playlist,n=j(t,this.state.activeTrackIndex);if(-1===o()(n,function(t){return t.src===e.srcRequested})){var r=V(t,e.srcRequested);-1!==r?this.selectTrackIndex(r):Object(f.a)("Source '"+e.srcRequested+"' does not exist in the loaded playlist. Make sure you've updated the 'playlist' prop to PlayerContextProvider before you select this track!")}},n.handleMediaEnded=function(){if(!this.state.seekInProgress){clearTimeout(this.gapLengthTimeout);var e=this.props,t=e.playlist,n=e.loadFirstTrackOnPlaylistComplete;if(L(t)){var r=this.state,a=r.cycle,i=r.activeTrackIndex;!a&&i+1>=t.length?n&&this.goToTrack({index:0,shouldPlay:!1,shouldForceLoad:!0}):this.gapLengthTimeout=setTimeout(this.forwardSkip,1e3*this.props.gapLengthInSeconds)}}},n.handleMediaStalled=function(){this.setState(function(e){return!0===e.stalled?null:{stalled:!0}})},n.handleMediaCanplaythrough=function(){this.setState(function(e){return!1===e.stalled?null:{stalled:!1}})},n.handleMediaTimeupdate=function(){var e=this.media,t=e.currentTime,n=e.played;this.state.trackLoading?this.media.currentTime=this.state.currentTime:this.setState({currentTime:t,playedRanges:H(n)})},n.handleMediaLoadedmetadata=function(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime),this.setState(function(e){return!1===e.trackLoading?null:{trackLoading:!1}})},n.handleMediaVolumechange=function(){var e=this.media,t=e.volume,n=e.muted;this.setState({volume:t,muted:n})},n.handleMediaDurationchange=function(){var e=this.media.duration;this.setState({duration:e})},n.handleMediaProgress=function(){this.setState({bufferedRanges:H(this.media.buffered),seekableRanges:H(this.media.seekable)})},n.handleMediaLoopchange=function(){var e=this.media.loop;this.setState(function(t){return t.loop===e?null:{loop:e}})},n.handleMediaRatechange=function(){var e=this.media.playbackRate;this.setState(function(t){return t.playbackRate===e?null:{playbackRate:e}})},n.togglePause=function(e){if(clearTimeout(this.delayTimeout),"boolean"==typeof e?e:!this.state.paused)this.media.pause();else if(this.media.currentSrc)try{var t=this.media.play();t&&"function"==typeof t.catch&&t.catch(function(e){if("AbortError"!==e.name)return Promise.reject(e)}).catch(G)}catch(e){G(e)}},n.goToTrack=function(e){clearTimeout(this.delayTimeout),this.setState(function(t){return Q(N({prevState:t},e))})},n.selectTrackIndex=function(e){var t=this.props.playlist;L(t)&&(e<0||e>t.length?Object(f.b)("Playlist index "+e+" is out of bounds!"):(this.state.shuffle&&this.shuffler.pickNextItem(e,this.state.activeTrackIndex),this.goToTrack({index:e})))},n.backSkip=function(){var e=this.props,t=e.playlist,n=e.stayOnBackSkipThreshold,r=this.media,a=this.state,i=a.cycle,s=a.activeTrackIndex,o=a.shuffle;if(!L(t)||r.currentTime>=n||!i&&s<1)r.currentTime=0;else{var l;if(o){var u=this.shuffler.findPreviousItem(s);if(void 0===u)return void(r.currentTime=0);l=V(t,u)}else(l=s-1)<0&&(l=t.length-1);this.goToTrack({index:l,shouldForceLoad:!0})}},n.forwardSkip=function(){var e,t=this.props.playlist,n=this.state,r=n.cycle,a=n.activeTrackIndex,i=n.shuffle;!L(t)||!r&&a+1>=t.length||(i?e=V(t,this.shuffler.findNextItem(a)):(e=a+1)>=t.length&&(e=0),this.goToTrack({index:e,shouldForceLoad:!0}))},n.seekPreview=function(e){if(L(this.props.playlist)){var t={seekPreviewTime:e,seekInProgress:!0};switch(this.props.seekMode){case"paused":this.setState(function(e){var n=e.paused,r=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||r})}),this.media.currentTime=e,this.state.paused||this.togglePause(!0);break;case"immediate":this.setState(function(e){var n=e.paused,r=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||r})}),this.media.currentTime=e,this.state.awaitingResumeOnSeekComplete&&!this.media.ended&&this.togglePause(!1);break;case"onrelease":this.setState(t)}}},n.seekComplete=function(e){var t=this.state,n=t.seekPreviewTime,r=t.awaitingResumeOnSeekComplete,a={seekInProgress:!1,awaitingResumeOnSeekComplete:!1},i="number"==typeof e?e:n;isNaN(i)?this.setState(a):(this.setState(N({},a,{currentTime:i})),this.media.currentTime=i,r&&(this.media.ended?this.forwardSkip():this.togglePause(!1)))},n.setVolume=function(e,t){void 0===t&&(t=!0),t&&!this.state.setVolumeInProgress&&this.setState({setVolumeInProgress:!0});var n=D(e,0,1);this.media.muted=0===n,this.media.volume=n},n.setVolumeComplete=function(e){"number"==typeof e&&this.setVolume(e,!1),this.setState({setVolumeInProgress:!1}),this.media.muted||(this.lastStableVolume=this.media.volume)},n.toggleMuted=function(e){var t="boolean"==typeof e?e:!this.state.muted;this.media.muted=t,t||(this.media.volume=this.lastStableVolume)},n.toggleShuffle=function(e){var t="boolean"==typeof e?e:!this.state.shuffle;this.setState({shuffle:t})},n.setRepeatStrategy=function(e){if(-1!==p.indexOf(e))switch(e){case"track":this.media.loop=!0;break;case"playlist":this.setState({loop:!1,cycle:!0}),this.media.loop=!1;break;case"none":this.setState({loop:!1,cycle:!1}),this.media.loop=!1}else Object(f.b)('repeatStrategy "'+e+'" is not one of: '+p.split(", ")+".")},n.setPlaybackRate=function(e){this.media.playbackRate=e},n.getControlProps=function(){var e=this.props,t=this.state,n={playlist:e.playlist,activeTrackIndex:t.activeTrackIndex,trackLoading:t.trackLoading,paused:t.paused,currentTime:t.currentTime,seekPreviewTime:t.seekPreviewTime,seekInProgress:t.seekInProgress,awaitingResumeOnSeekComplete:t.awaitingResumeOnSeekComplete,duration:t.duration,bufferedRanges:t.bufferedRanges,playedRanges:t.playedRanges,seekableRanges:t.seekableRanges,volume:t.volume,muted:t.muted,shuffle:t.shuffle,stalled:t.stalled,playbackRate:t.playbackRate,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:A(t.loop,t.cycle),registerVideoHostElement:this.registerVideoHostElement,renderVideoIntoHostElement:this.renderVideoIntoHostElement,unregisterVideoHostElement:this.unregisterVideoHostElement,onTogglePause:this.togglePause,onSelectTrackIndex:this.selectTrackIndex,onBackSkip:this.backSkip,onForwardSkip:this.forwardSkip,onSeekPreview:this.seekPreview,onSeekComplete:this.seekComplete,onSetVolume:this.setVolume,onSetVolumeComplete:this.setVolumeComplete,onToggleMuted:this.toggleMuted,onToggleShuffle:this.toggleShuffle,onSetRepeatStrategy:this.setRepeatStrategy,onSetPlaybackRate:this.setPlaybackRate};if(this.playerContext)for(var r=Object.keys(this.playerContext),a=0;a<r.length;a++){var i=r[a];if(n[i]!==this.playerContext[i]){this.playerContext=n;break}}else this.playerContext=n;return this.playerContext},n.render=function(){var e=this,t=this.getControlProps();return i.a.createElement(a.Fragment,null,i.a.createElement("div",{ref:function(t){return e.mediaContainer=t},hidden:!0}),i.a.createElement(u.Provider,{value:t},"function"==typeof this.props.children?this.props.children(t):this.props.children))},t}(a.Component);Y.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,startingTime:0,startingTrackIndex:0,loadFirstTrackOnPlaylistComplete:!0,seekMode:"immediate",maintainPlaybackRate:!1,allowBackShuffle:!1,stayOnBackSkipThreshold:5,supportedMediaSessionActions:["play","pause","previoustrack","nexttrack"],mediaSessionSeekLengthInSeconds:10,getPosterImageForTrack:function(e){return e&&e.artwork?e.artwork[0].src:""}};var Z=function(e){function t(){return e.apply(this,arguments)||this}z(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.groupContext.registerMediaElement(this.mediaElement)},n.componentWillUnmount=function(){this.props.groupContext.unregisterMediaElement(this.mediaElement)},n.render=function(){var e=this,t=this.props,n=t.groupContext,r=t.props,a=r.mediaElementRef,s=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(r,["mediaElementRef"]);return i.a.createElement(Y,B({},n.groupProps,s,{mediaElementRef:function(t){a&&a(t),e.mediaElement=t}}))},t}(a.Component);var $=function(e){return i.a.createElement(c.Consumer,null,function(t){return t?Object(a.createElement)(Z,{groupContext:t,props:e}):Object(a.createElement)(Y,e)})};function ee(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){te(e,t,n[t])})}return e}function te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ne(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var re=function(e){function t(t){var n;return(n=e.call(this,t)||this).registerMediaElement=n.registerMediaElement.bind(ne(ne(n))),n.unregisterMediaElement=n.unregisterMediaElement.bind(ne(ne(n))),n.enforceOneMediaSourceOnly=n.enforceOneMediaSourceOnly.bind(ne(ne(n))),n.mediaElements=[],n}!function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(t,e);var n=t.prototype;return n.registerMediaElement=function(e){this.mediaElements=this.mediaElements.concat(e),e.addEventListener("play",this.enforceOneMediaSourceOnly,!0),e.addEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)},n.unregisterMediaElement=function(e){this.mediaElements=this.mediaElements.filter(function(t){return e!==t}),e.removeEventListener("play",this.enforceOneMediaSourceOnly,!0),e.removeEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)},n.enforceOneMediaSourceOnly=function(e){var t=e.target,n=t.paused,r=t.muted;if(!n&&!r){var a=this.mediaElements,i=Array.isArray(a),s=0;for(a=i?a:a[Symbol.iterator]();;){var o;if(i){if(s>=a.length)break;o=a[s++]}else{if((s=a.next()).done)break;o=s.value}var l=o;l===t||l.muted||l.pause()}}},n.render=function(){var e=this;return i.a.createElement(c.Consumer,null,function(t){var n=t?ee({},t,{groupProps:ee({},t.groupProps,e.props)}):{groupProps:e.props,registerMediaElement:e.registerMediaElement,unregisterMediaElement:e.unregisterMediaElement};return i.a.createElement(c.Provider,{value:n},e.props.children)})},t}(a.Component),ae=Object(l.a)("FullscreenContext",{fullscreen:!1,requestFullscreen:function(){Object(f.b)("Fullscreen request ignored since there is no FullscreenContextProvider ancestor.")},requestExitFullscreen:function(){Object(f.b)("Exit fullscreen request ignored since there is no FullscreenContextProvider ancestor.")}});function ie(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var se={width:"100%",height:"100%"},oe=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={fullscreen:!1},n.requestFullscreen=n.requestFullscreen.bind(ie(ie(n))),n.requestExitFullscreen=n.requestExitFullscreen.bind(ie(ie(n))),n.handleFullscreenChange=n.handleFullscreenChange.bind(ie(ie(n))),n.fullscreenElement=null,n}!function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(t,e);var n=t.prototype;return n.componentDidMount=function(){document.addEventListener("fullscreenchange",this.handleFullscreenChange),document.addEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.addEventListener("mozfullscreenchange",this.handleFullscreenChange),document.addEventListener("msfullscreenchange",this.handleFullscreenChange)},n.componentWillUnmount=function(){document.removeEventListener("fullscreenchange",this.handleFullscreenChange),document.removeEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.removeEventListener("mozfullscreenchange",this.handleFullscreenChange),document.removeEventListener("msfullscreenchange",this.handleFullscreenChange)},n.requestFullscreen=function(){this.props.fullscreenEnabled&&(this.fullscreenElement.requestFullscreen?this.fullscreenElement.requestFullscreen():this.fullscreenElement.webkitRequestFullscreen?this.fullscreenElement.webkitRequestFullscreen():this.fullscreenElement.mozRequestFullscreen?this.fullscreenElement.mozRequestFullScreen():this.fullscreenElement.msRequestFullscreen&&this.fullscreenElement.msRequestFullscreen())},n.requestExitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.mozExitFullscreen()},n.handleFullscreenChange=function(){var e=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;this.setState({fullscreen:e===this.fullscreenElement})},n.getFullscreenContext=function(){var e={fullscreen:this.state.fullscreen,requestFullscreen:this.requestFullscreen,requestExitFullscreen:this.requestExitFullscreen};return this.fullscreenContext&&e.fullscreen===this.fullscreenContext.fullscreen?this.fullscreenContext:this.fullscreenContext=e},n.render=function(){var e=this,t=this.getFullscreenContext();return i.a.createElement("div",{ref:function(t){return e.fullscreenElement=t},style:this.state.fullscreen?se:void 0},i.a.createElement(ae.Provider,{value:t},"function"==typeof this.props.children?this.props.children(t):this.props.children))},t}(a.PureComponent);oe.defaultProps={fullscreenEnabled:!0};var le=oe;function ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ce=function(e,t){var n={},r=e.displayName||e.name;function s(s){return i.a.createElement(ae.Consumer,null,function(o){return i.a.createElement(u.Consumer,null,function(i){var l=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){ue(e,t,n[t])})}return e}({},s),u=t,c=Array.isArray(u),d=0;for(u=c?u:u[Symbol.iterator]();;){var h;if(c){if(d>=u.length)break;h=u[d++]}else{if((d=u.next()).done)break;h=d.value}var p=h;i.hasOwnProperty(p)?l[p]=i[p]:o.hasOwnProperty(p)?l[p]=o[p]:n[p]||(Object(f.b)("Prop '"+p+"' for component "+r+" not found in playerContext or fullscreenContext."),n[p]=!0)}return Object(a.createElement)(e,l)})})}return r&&(s.displayName="PlayerContextFilter("+r+")"),s};n.d(t,"PlayerContextConsumer",function(){return de}),n.d(t,"FullscreenContextConsumer",function(){return he}),n.d(t,"PlayerContextProvider",function(){return $}),n.d(t,"PlayerContextGroup",function(){return re}),n.d(t,"FullscreenContextProvider",function(){return le}),n.d(t,"playerContextFilter",function(){return ce}),n.d(t,"PlayerPropTypes",function(){return r}),n.d(t,"logError",function(){return f.a}),n.d(t,"logWarning",function(){return f.b}),n.d(t,"convertToNumberWithinIntervalBounds",function(){return D}),n.d(t,"isPlaylistValid",function(){return L}),n.d(t,"repeatStrategyOptions",function(){return p});var de=u.Consumer,he=ae.Consumer}])}); | ||
//# sourceMappingURL=cassette-core.min.js.map |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.cassetteCore=t(require("react"),require("prop-types")):e.cassetteCore=t(e.React,e.PropTypes)}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=7)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return a});const s=console.log.bind(console),i=console.error?console.error.bind(console):s,a=console.warn?console.warn.bind(console):s},function(e,t,n){"use strict";(function(e){var s=n(0),i=n(2);const a=n(6).version,r="undefined"==typeof window?e:window;r.__cassette_contexts__=r.__cassette_contexts__||{},t.a=function(e,t){void 0===t&&(t=null);const n=r.__cassette_contexts__[e];if(n)return n.packageVersion!==a&&Object(i.b)(`Warning: multiple versions of ${e} from the @cassette/core`+` package have been loaded. v${a} will be ignored and`+` v${n.packageVersion} will be used instead.`),n;const o=Object(s.createContext)(t);return o.displayName=e,o.packageVersion=a,r.__cassette_contexts__[e]=o,o}}).call(this,n(5))},function(e,t,n){"use strict";e.exports=function(e,t,n){if("function"==typeof Array.prototype.findIndex)return e.findIndex(t,n);if("function"!=typeof t)throw new TypeError("predicate must be a function");var s=Object(e),i=s.length;if(0===i)return-1;for(var a=0;a<i;a++)if(t.call(n,s[a],a,s))return a;return-1}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e){e.exports={name:"@cassette/core",version:"2.0.0-alpha.13",description:"A simple, clean, and responsive visual wrapper for the HTML audio tag, built with React.",main:"dist/es5/cassette-core.js",scripts:{"build:clean":"rimraf dist","build:webpack":"BUILD_MODE=all webpack --progress",build:"npm run build:clean && npm run build:webpack",prepare:"npm run build",test:'echo "Error: no test specified" && exit 1'},repository:{type:"git",url:"https://github.com/benwiley4000/cassette.git"},engines:{node:">=6.0.0",npm:">=5.0.0"},keywords:["audio","video","media","ui","react","reactjs","responsive","music","player","html5","component","components"],author:{name:"Ben Wiley",email:"therealbenwiley@gmail.com",url:"http://benwiley.org/"},license:"MIT",peerDependencies:{react:"^16.3.0"},devDependencies:{"array-find-index":"^1.0.2",rimraf:"^2.5.4",webpack:"^4.17.1"},dependencies:{"prop-types":"^15.5.10"},publishConfig:{access:"public"},gitHead:"be82bd87d6134ebef4fcbb304b0701e2e84abc8e"}},function(e,t,n){"use strict";n.r(t);var s={};n.r(s),n.d(s,"controlKeyword",function(){return g}),n.d(s,"control",function(){return y}),n.d(s,"crossOriginAttribute",function(){return b}),n.d(s,"repeatStrategy",function(){return k}),n.d(s,"mediaSource",function(){return v}),n.d(s,"mediaSessionAction",function(){return S}),n.d(s,"mediaSessionArtwork",function(){return E}),n.d(s,"track",function(){return w}),n.d(s,"progressDirection",function(){return x}),n.d(s,"seekMode",function(){return P}),n.d(s,"aspectRatio",function(){return T});var i=n(0),a=n.n(i),r=n(4),o=n.n(r),l=n(3),c=Object(l.a)("PlayerContext"),u=Object(l.a)("GroupContext"),d=n(1),h=n.n(d);const p=["none","playlist","track"];var m=n(2);function f(e,t){let n=!1;return function(s,i,a){if(i in s){!n&&t in s&&(Object(m.b)(`Do not define both the '${i}' and '${t}' props.`),n=!0);for(var r=arguments.length,o=new Array(r>3?r-3:0),l=3;l<r;l++)o[l-3]=arguments[l];return e.isRequired(s,i,a,...o)}if(!(t in s))return new Error(`If the '${t}' prop is not defined, '${i}' must be.`)}}const g=h.a.oneOf(["playpause","backskip","forwardskip","volume","mute","repeat","shuffle","progress","progressdisplay","fullscreen","spacer"]),y=h.a.oneOfType([h.a.func,g]),b=h.a.oneOf(["anonymous","use-credentials"]),k=h.a.oneOf(p),v=h.a.shape({src:h.a.string.isRequired,type:h.a.string.isRequired}),S=h.a.oneOf(["play","pause","previoustrack","nexttrack","seekbackward","seekforward"]),E=h.a.shape({src:h.a.string.isRequired,sizes:h.a.string,type:h.a.string}),w=h.a.shape({url:f(h.a.string,"sources"),sources:f(h.a.arrayOf(v.isRequired),"url"),title:h.a.string.isRequired,artist:h.a.string,album:h.a.string,artwork:h.a.arrayOf(E.isRequired),meta:h.a.object}),x=h.a.oneOf(["left","right","up","down"]),P=h.a.oneOf(["paused","immediate","onrelease"]);function T(e,t){const n=e[t];if(void 0!==n)return"string"!=typeof n||2!==n.split(":").length||n.split(":").some(isNaN)?new Error(`The ${t} prop should be a string of the form 'x:y'. Example: 16:9`):void 0}const O="loopchange",M="srcrequest";var C=function(){const e=document.createElement("video");return new MutationObserver(()=>{e.dispatchEvent(new Event(O))}).observe(e,{attributes:!0,attributeFilter:["loop"]}),Object.defineProperty(e,"src",{get:()=>e.currentSrc,set:t=>{const n=new Event(M);n.srcRequested=t,e.dispatchEvent(n)}}),e};function I(e,t,n,s){let i=s;for(let s=0;s<e;s++){if(!t.length)throw I(s,n,t,i),`Moving ${e} places was not possible!`;n.push(i),i=t.pop()}return i}function _(e,t,n,s,i){let a,r=s;if(e.length){for(let s=1;s<=t.length;s++)if(-1!==e.indexOf(t[t.length-s]))return I(s,t,n,r);if(i){if(function(e,t){if(!e.length)return!1;for(let n=0;n<e.length;n++)if(t!==e[n])return!1;return!0}(e,r))return r;do{a=e[Math.floor(Math.random()*e.length)]}while(r===a||void 0===a);return void 0!==(r=I(t.length,t,n,r))&&n.push(r),a}}}var R=class{constructor(e,t){void 0===t&&(t={}),this._list=e,this._forwardStack=[],this._backStack=[],this._currentItem=void 0,this._allowBackShuffle=Boolean(t.allowBackShuffle)}findNextItem(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=_(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem}findPreviousItem(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=_(this._list,this._backStack,this._forwardStack,this._currentItem,this._allowBackShuffle),this._currentItem}pickNextItem(e,t){if(void 0!==t&&this.setCurrentIndex(t),void 0!==this._list[e])return void 0!==this._currentItem&&this._backStack.push(this._currentItem),this._forwardStack.length=0,this._currentItem=this._list[e],this._currentItem}setList(e){this._list=e}setOptions(e){for(const t of Object.keys(e))switch(t){case"allowBackShuffle":this[`_${t}`]=Boolean(e[t])}}setCurrentIndex(e){const t=this._list[e];this._currentItem!==t&&(this.clear(),this._currentItem=t)}clear(){this._forwardStack.length=0,this._backStack.length=0,this._currentItem=void 0}};var F=function(e){return Boolean(e&&e.length)};const L=[{src:""}];var V=function(e,t){if(!F(e))return L;const n=e[t],s=n.sources,i=n.url;return s?s.length?s:L:[{src:i}]};var j=function(e,t){return o()(e,e=>e.sources?-1!==o()(e.sources,e=>e.src===t):e.url&&t===e.url)};var q=function(e){return(e||[]).map((t,n)=>V(e,n)[0].src)};var H=function(e){const t=Array(e.length);for(let n=0;n<e.length;n++)t[n]={start:e.start(n),end:e.end(n)};return t};var A=function(e,t){return e?"track":t?"playlist":"none"};var D=function(e,t,n){return t="number"==typeof t?t:-1/0,n="number"==typeof n?n:1/0,Math.max(t,Math.min(e,n))};function B(){return(B=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),s.forEach(function(t){$(e,t,n[t])})}return e}function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function U(e){if(Object(m.a)(e),"NotAllowedError"===e.name){const e="Media playback failed at "+(new Date).toLocaleTimeString()+"! (Perhaps autoplay is disabled in this browser.)";Object(m.b)(e)}}const z=["previoustrack","nexttrack","seekbackward","seekforward"],W={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,awaitingPlay:!1};function G(e){let t=e.prevState,n=e.index,s=e.shouldPlay,i=void 0===s||s,a=e.shouldForceLoad,r=void 0!==a&&a;const o=t.activeTrackIndex!==n;return{activeTrackIndex:n,trackLoading:o,currentTime:0,loop:!o&&!r&&t.loop,awaitingPlay:Boolean(i),paused:!i,awaitingForceLoad:Boolean(r)}}function K(e,t){let n;for(;n=e.firstChild;)e.removeChild(n);for(const n of t){const t=document.createElement("source");t.src=n.src,n.type&&(t.type=n.type),e.appendChild(t)}e.load()}class J extends i.Component{constructor(e){super(e),this.state=N({},W,{activeTrackIndex:D(e.startingTrackIndex,0),trackLoading:F(e.playlist),currentTime:D(e.startingTime,0),volume:D(e.defaultVolume,0,1),muted:e.defaultMuted,loop:"track"===e.defaultRepeatStrategy,cycle:"playlist"===e.defaultRepeatStrategy,shuffle:e.defaultShuffle,playbackRate:e.defaultPlaybackRate,setVolumeInProgress:!1,awaitingPlay:e.autoplay&&F(e.playlist),awaitingForceLoad:!1,__playlist__:e.playlist},e.initialStateSnapshot?function(e,t){const n=e.__unstable__,s=n.paused,i=n.currentTime,a=n.activeTrackIndex,r=n.volume,o=n.muted,l=n.loop,c=n.cycle,u=n.shuffle,d=n.playbackRate,h=n.activeTrackSrc,p={};F(t.playlist)&&"boolean"==typeof s&&(p.awaitingPlay=!s),"number"==typeof r&&r>=0&&r<=1&&(p.volume=r),"boolean"==typeof o&&(p.muted=o),"boolean"==typeof l&&(p.loop=l),"boolean"==typeof c&&(p.cycle=c),"boolean"==typeof u&&(p.shuffle=u),"number"==typeof d&&(p.playbackRate=d);let m=!1;if("string"==typeof h&&"number"==typeof a&&a>=0){const e=t.playlist[a]&&V(t.playlist,a)[0].src;if(e&&h===e)p.activeTrackIndex=a,m=!0;else{const e=j(t.playlist,h);-1!==e&&(p.activeTrackIndex=e,m=!0)}}return m&&"number"==typeof i&&i>=0&&(p.currentTime=i),p}(e.initialStateSnapshot,e):{}),this.lastStableVolume=this.state.volume,this.shuffler=new R(q(e.playlist),{allowBackShuffle:e.allowBackShuffle}),this.media=null,this.videoHostElementList=[],this.videoHostOccupiedCallbacks=new Map,this.videoHostVacatedCallbacks=new Map,this.togglePause=this.togglePause.bind(this),this.selectTrackIndex=this.selectTrackIndex.bind(this),this.forwardSkip=this.forwardSkip.bind(this),this.backSkip=this.backSkip.bind(this),this.seekPreview=this.seekPreview.bind(this),this.seekComplete=this.seekComplete.bind(this),this.setVolume=this.setVolume.bind(this),this.setVolumeComplete=this.setVolumeComplete.bind(this),this.toggleMuted=this.toggleMuted.bind(this),this.toggleShuffle=this.toggleShuffle.bind(this),this.setRepeatStrategy=this.setRepeatStrategy.bind(this),this.setPlaybackRate=this.setPlaybackRate.bind(this),this.registerVideoHostElement=this.registerVideoHostElement.bind(this),this.renderVideoIntoHostElement=this.renderVideoIntoHostElement.bind(this),this.unregisterVideoHostElement=this.unregisterVideoHostElement.bind(this),this.updateVideoHostElement=this.updateVideoHostElement.bind(this),this.handleMediaPlay=this.handleMediaPlay.bind(this),this.handleMediaPause=this.handleMediaPause.bind(this),this.handleMediaSrcrequest=this.handleMediaSrcrequest.bind(this),this.handleMediaEnded=this.handleMediaEnded.bind(this),this.handleMediaStalled=this.handleMediaStalled.bind(this),this.handleMediaCanplaythrough=this.handleMediaCanplaythrough.bind(this),this.handleMediaTimeupdate=this.handleMediaTimeupdate.bind(this),this.handleMediaLoadedmetadata=this.handleMediaLoadedmetadata.bind(this),this.handleMediaVolumechange=this.handleMediaVolumechange.bind(this),this.handleMediaDurationchange=this.handleMediaDurationchange.bind(this),this.handleMediaProgress=this.handleMediaProgress.bind(this),this.handleMediaLoopchange=this.handleMediaLoopchange.bind(this),this.handleMediaRatechange=this.handleMediaRatechange.bind(this)}componentDidMount(){const e=this.media=C(),t=this.props,n=t.defaultPlaybackRate,s=t.crossOrigin,i=t.playlist,a=t.autoplayDelayInSeconds,r=t.mediaElementRef,o=t.getPosterImageForTrack,l=t.onActiveTrackUpdate,c=this.state,u=c.volume,d=c.muted,h=c.playbackRate,p=c.loop,m=c.activeTrackIndex,f=c.awaitingPlay;e.defaultPlaybackRate=n,e.crossOrigin=s,e.volume=u,e.muted=d,e.playbackRate=h,e.loop=p,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline",""),e.setAttribute("preload","metadata"),e.setAttribute("poster",o(i[m])),e.addEventListener("play",this.handleMediaPlay),e.addEventListener("pause",this.handleMediaPause),e.addEventListener("ended",this.handleMediaEnded),e.addEventListener("stalled",this.handleMediaStalled),e.addEventListener("canplaythrough",this.handleMediaCanplaythrough),e.addEventListener("timeupdate",this.handleMediaTimeupdate),e.addEventListener("loadedmetadata",this.handleMediaLoadedmetadata),e.addEventListener("volumechange",this.handleMediaVolumechange),e.addEventListener("durationchange",this.handleMediaDurationchange),e.addEventListener("progress",this.handleMediaProgress),e.addEventListener("ratechange",this.handleMediaRatechange),e.addEventListener("srcrequest",this.handleMediaSrcrequest),e.addEventListener("loopchange",this.handleMediaLoopchange),K(e,V(i,m)),this.mediaContainer.appendChild(e),f&&(this.setState({awaitingPlay:!1}),this.delayTimeout=setTimeout(()=>{this.togglePause(!1)},1e3*a)),r&&r(e),l&&l(i[m],m)}static getDerivedStateFromProps(e,t){const n=e.playlist;if(n===t.__playlist__)return null;const s={__playlist__:n};if(!F(n))return N({},W,s,{activeTrackIndex:0,trackLoading:!1});const i=V(t.__playlist__,t.activeTrackIndex);if(n[t.activeTrackIndex]){const e=V(n,t.activeTrackIndex);if(i[0].src===e[0].src)return s}const a=j(n,i[0].src);return N({},s,-1!==a?{activeTrackIndex:a}:G({prevState:t,index:0,shouldPlay:!1}))}componentDidUpdate(e,t){this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(q(this.props.playlist)),this.shuffler.setOptions({allowBackShuffle:this.props.allowBackShuffle});const n=V(e.playlist,t.activeTrackIndex),s=V(this.props.playlist,this.state.activeTrackIndex),i=e.playlist[t.activeTrackIndex],a=this.props.playlist[this.state.activeTrackIndex];(this.state.awaitingForceLoad||n[0].src!==s[0].src)&&(K(this.media,s),this.media.setAttribute("poster",this.props.getPosterImageForTrack(a)),this.setState({awaitingForceLoad:!1}),this.state.shuffle||this.shuffler.clear()),this.props.onActiveTrackUpdate&&i!==a&&this.props.onActiveTrackUpdate(a,this.state.activeTrackIndex),e===this.props||this.media.paused||this.stealMediaSession(),this.state.awaitingPlay&&(this.setState({awaitingPlay:!1}),setTimeout(()=>{this.togglePause(!1)})),clearTimeout(this.snapshotUpdateTimeout),this.snapshotUpdateTimeout=setTimeout(()=>{this.props.onStateSnapshot&&this.props.onStateSnapshot(function(e){const t=e.paused,n=e.currentTime,s=e.activeTrackIndex,i=e.volume,a=e.muted,r=e.loop,o=e.cycle,l=e.shuffle,c=e.playbackRate,u=e.__playlist__;return{__unstable__:{paused:t,currentTime:n,activeTrackIndex:s,volume:i,muted:a,loop:r,cycle:o,shuffle:l,playbackRate:c,activeTrackSrc:F(u)?V(u,s)[0].src:null}}}(this.state))},100)}componentWillUnmount(){const e=this.media;e.removeEventListener("srcrequest",this.handleMediaSrcrequest),e.removeEventListener("loopchange",this.handleMediaLoopchange),clearTimeout(this.gapLengthTimeout),clearTimeout(this.delayTimeout)}stealMediaSession(){window.MediaSession&&navigator.mediaSession instanceof MediaSession&&(navigator.mediaSession.metadata=new MediaMetadata(this.props.playlist[this.state.activeTrackIndex]),z.map(e=>{if(-1===this.props.supportedMediaSessionActions.indexOf(e))return null;const t=this.props.mediaSessionSeekLengthInSeconds;switch(e){case"play":return this.togglePause.bind(this,!1);case"pause":return this.togglePause.bind(this,!0);case"previoustrack":return this.backSkip;case"nexttrack":return this.forwardSkip;case"seekbackward":return()=>this.media.currentTime-=t;case"seekforward":return()=>this.media.currentTime+=t;default:return}}).forEach((e,t)=>{navigator.mediaSession.setActionHandler(z[t],e)}))}registerVideoHostElement(e,t){let n=t.onHostOccupied,s=t.onHostVacated;this.videoHostElementList=this.videoHostElementList.concat(e),this.videoHostOccupiedCallbacks.set(e,n),this.videoHostVacatedCallbacks.set(e,s)}renderVideoIntoHostElement(e){-1!==this.videoHostElementList.indexOf(e)&&(cancelAnimationFrame(this.videoHostUpdateRaf),this.videoHostUpdateRaf=requestAnimationFrame(()=>this.updateVideoHostElement(e)))}unregisterVideoHostElement(e){this.videoHostElementList=this.videoHostElementList.filter(t=>t!==e),this.videoHostOccupiedCallbacks.delete(e),this.videoHostVacatedCallbacks.delete(e),this.media.parentNode===e&&this.updateVideoHostElement()}updateVideoHostElement(e){e?this.videoHostElementList=[e].concat(this.videoHostElementList.filter(t=>t!==e)):e=this.videoHostElementList[0]||this.mediaContainer;const t=!this.media.paused,n=this.media.parentNode;if(e===n)return;e.appendChild(this.media),t&&this.media.paused&&this.media.play();const s=this.videoHostVacatedCallbacks.get(n);s&&s(this.media);const i=this.videoHostOccupiedCallbacks.get(e);i&&i(this.media)}handleMediaPlay(){this.setState(e=>!1===e.paused?null:{paused:!1}),this.stealMediaSession()}handleMediaPause(){this.setState(e=>!0===e.paused?null:{paused:!0})}handleMediaSrcrequest(e){const t=this.props.playlist,n=V(t,this.state.activeTrackIndex);if(-1!==o()(n,t=>t.src===e.srcRequested))return;const s=j(t,e.srcRequested);-1!==s?this.selectTrackIndex(s):Object(m.a)(`Source '${e.srcRequested}' does not exist in the loaded playlist. `+"Make sure you've updated the 'playlist' prop to PlayerContextProvider before you select this track!")}handleMediaEnded(){if(this.state.seekInProgress)return;clearTimeout(this.gapLengthTimeout);const e=this.props,t=e.playlist,n=e.loadFirstTrackOnPlaylistComplete;if(!F(t))return;const s=this.state,i=s.cycle,a=s.activeTrackIndex;!i&&a+1>=t.length?n&&this.goToTrack({index:0,shouldPlay:!1,shouldForceLoad:!0}):this.gapLengthTimeout=setTimeout(this.forwardSkip,1e3*this.props.gapLengthInSeconds)}handleMediaStalled(){this.setState(e=>!0===e.stalled?null:{stalled:!0})}handleMediaCanplaythrough(){this.setState(e=>!1===e.stalled?null:{stalled:!1})}handleMediaTimeupdate(){const e=this.media,t=e.currentTime,n=e.played;this.state.trackLoading?this.media.currentTime=this.state.currentTime:this.setState({currentTime:t,playedRanges:H(n)})}handleMediaLoadedmetadata(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime),this.setState(e=>!1===e.trackLoading?null:{trackLoading:!1})}handleMediaVolumechange(){const e=this.media,t=e.volume,n=e.muted;this.setState({volume:t,muted:n})}handleMediaDurationchange(){const e=this.media.duration;this.setState({duration:e})}handleMediaProgress(){this.setState({bufferedRanges:H(this.media.buffered),seekableRanges:H(this.media.seekable)})}handleMediaLoopchange(){const e=this.media.loop;this.setState(t=>t.loop===e?null:{loop:e})}handleMediaRatechange(){const e=this.media.playbackRate;this.setState(t=>t.playbackRate===e?null:{playbackRate:e})}togglePause(e){if(clearTimeout(this.delayTimeout),"boolean"==typeof e?e:!this.state.paused)this.media.pause();else if(this.media.currentSrc)try{const e=this.media.play();e&&"function"==typeof e.catch&&e.catch(e=>{if("AbortError"!==e.name)return Promise.reject(e)}).catch(U)}catch(e){U(e)}}goToTrack(e){clearTimeout(this.delayTimeout),this.setState(t=>G(N({prevState:t},e)))}selectTrackIndex(e){const t=this.props.playlist;F(t)&&(e<0||e>t.length?Object(m.b)(`Playlist index ${e} is out of bounds!`):(this.state.shuffle&&this.shuffler.pickNextItem(e,this.state.activeTrackIndex),this.goToTrack({index:e})))}backSkip(){const e=this.props,t=e.playlist,n=e.stayOnBackSkipThreshold,s=this.media,i=this.state,a=i.cycle,r=i.activeTrackIndex,o=i.shuffle;if(!F(t)||s.currentTime>=n||!a&&r<1)return void(s.currentTime=0);let l;if(o){const e=this.shuffler.findPreviousItem(r);if(void 0===e)return void(s.currentTime=0);l=j(t,e)}else(l=r-1)<0&&(l=t.length-1);this.goToTrack({index:l,shouldForceLoad:!0})}forwardSkip(){const e=this.props.playlist,t=this.state,n=t.cycle,s=t.activeTrackIndex,i=t.shuffle;if(!F(e)||!n&&s+1>=e.length)return;let a;i?a=j(e,this.shuffler.findNextItem(s)):(a=s+1)>=e.length&&(a=0),this.goToTrack({index:a,shouldForceLoad:!0})}seekPreview(e){if(!F(this.props.playlist))return;const t={seekPreviewTime:e,seekInProgress:!0};switch(this.props.seekMode){case"paused":this.setState(e=>{let n=e.paused,s=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||s})}),this.media.currentTime=e,this.state.paused||this.togglePause(!0);break;case"immediate":this.setState(e=>{let n=e.paused,s=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||s})}),this.media.currentTime=e,this.state.awaitingResumeOnSeekComplete&&!this.media.ended&&this.togglePause(!1);break;case"onrelease":this.setState(t)}}seekComplete(e){const t=this.state,n=t.seekPreviewTime,s=t.awaitingResumeOnSeekComplete,i={seekInProgress:!1,awaitingResumeOnSeekComplete:!1},a="number"==typeof e?e:n;isNaN(a)?this.setState(i):(this.setState(N({},i,{currentTime:a})),this.media.currentTime=a,s&&(this.media.ended?this.forwardSkip():this.togglePause(!1)))}setVolume(e,t){void 0===t&&(t=!0),t&&!this.state.setVolumeInProgress&&this.setState({setVolumeInProgress:!0});const n=D(e,0,1);this.media.muted=0===n,this.media.volume=n}setVolumeComplete(e){"number"==typeof e&&this.setVolume(e,!1),this.setState({setVolumeInProgress:!1}),this.media.muted||(this.lastStableVolume=this.media.volume)}toggleMuted(e){const t="boolean"==typeof e?e:!this.state.muted;this.media.muted=t,t||(this.media.volume=this.lastStableVolume)}toggleShuffle(e){const t="boolean"==typeof e?e:!this.state.shuffle;this.setState({shuffle:t})}setRepeatStrategy(e){if(-1!==p.indexOf(e))switch(e){case"track":this.media.loop=!0;break;case"playlist":this.setState({loop:!1,cycle:!0}),this.media.loop=!1;break;case"none":this.setState({loop:!1,cycle:!1}),this.media.loop=!1}else Object(m.b)('repeatStrategy "'+e+'" is not one of: '+p.split(", ")+".")}setPlaybackRate(e){this.media.playbackRate=e}getControlProps(){const e=this.props,t=this.state,n={playlist:e.playlist,activeTrackIndex:t.activeTrackIndex,trackLoading:t.trackLoading,paused:t.paused,currentTime:t.currentTime,seekPreviewTime:t.seekPreviewTime,seekInProgress:t.seekInProgress,awaitingResumeOnSeekComplete:t.awaitingResumeOnSeekComplete,duration:t.duration,bufferedRanges:t.bufferedRanges,playedRanges:t.playedRanges,seekableRanges:t.seekableRanges,volume:t.volume,muted:t.muted,shuffle:t.shuffle,stalled:t.stalled,playbackRate:t.playbackRate,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:A(t.loop,t.cycle),registerVideoHostElement:this.registerVideoHostElement,renderVideoIntoHostElement:this.renderVideoIntoHostElement,unregisterVideoHostElement:this.unregisterVideoHostElement,onTogglePause:this.togglePause,onSelectTrackIndex:this.selectTrackIndex,onBackSkip:this.backSkip,onForwardSkip:this.forwardSkip,onSeekPreview:this.seekPreview,onSeekComplete:this.seekComplete,onSetVolume:this.setVolume,onSetVolumeComplete:this.setVolumeComplete,onToggleMuted:this.toggleMuted,onToggleShuffle:this.toggleShuffle,onSetRepeatStrategy:this.setRepeatStrategy,onSetPlaybackRate:this.setPlaybackRate};if(this.playerContext){for(const e of Object.keys(this.playerContext))if(n[e]!==this.playerContext[e]){this.playerContext=n;break}}else this.playerContext=n;return this.playerContext}render(){const e=this.getControlProps();return a.a.createElement(i.Fragment,null,a.a.createElement("div",{ref:e=>this.mediaContainer=e,hidden:!0}),a.a.createElement(c.Provider,{value:e},"function"==typeof this.props.children?this.props.children(e):this.props.children))}}J.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,startingTime:0,startingTrackIndex:0,loadFirstTrackOnPlaylistComplete:!0,seekMode:"immediate",maintainPlaybackRate:!1,allowBackShuffle:!1,stayOnBackSkipThreshold:5,supportedMediaSessionActions:["play","pause","previoustrack","nexttrack"],mediaSessionSeekLengthInSeconds:10,getPosterImageForTrack:e=>e&&e.artwork?e.artwork[0].src:""};class Q extends i.Component{componentDidMount(){this.props.groupContext.registerMediaElement(this.mediaElement)}componentWillUnmount(){this.props.groupContext.unregisterMediaElement(this.mediaElement)}render(){const e=this.props,t=e.groupContext,n=e.props,s=n.mediaElementRef,i=function(e,t){if(null==e)return{};var n,s,i={},a=Object.keys(e);for(s=0;s<a.length;s++)n=a[s],t.indexOf(n)>=0||(i[n]=e[n]);return i}(n,["mediaElementRef"]);return a.a.createElement(J,B({},t.groupProps,i,{mediaElementRef:e=>{s&&s(e),this.mediaElement=e}}))}}var X=function(e){return a.a.createElement(u.Consumer,null,t=>t?Object(i.createElement)(Q,{groupContext:t,props:e}):Object(i.createElement)(J,e))};function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),s.forEach(function(t){Z(e,t,n[t])})}return e}function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee=class extends i.Component{constructor(e){super(e),this.registerMediaElement=this.registerMediaElement.bind(this),this.unregisterMediaElement=this.unregisterMediaElement.bind(this),this.enforceOneMediaSourceOnly=this.enforceOneMediaSourceOnly.bind(this),this.mediaElements=[]}registerMediaElement(e){this.mediaElements=this.mediaElements.concat(e),e.addEventListener("play",this.enforceOneMediaSourceOnly,!0),e.addEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)}unregisterMediaElement(e){this.mediaElements=this.mediaElements.filter(t=>e!==t),e.removeEventListener("play",this.enforceOneMediaSourceOnly,!0),e.removeEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)}enforceOneMediaSourceOnly(e){const t=e.target,n=t.paused,s=t.muted;if(!n&&!s)for(const e of this.mediaElements)e===t||e.muted||e.pause()}render(){return a.a.createElement(u.Consumer,null,e=>{const t=e?Y({},e,{groupProps:Y({},e.groupProps,this.props)}):{groupProps:this.props,registerMediaElement:this.registerMediaElement,unregisterMediaElement:this.unregisterMediaElement};return a.a.createElement(u.Provider,{value:t},this.props.children)})}},te=Object(l.a)("FullscreenContext",{fullscreen:!1,requestFullscreen(){Object(m.b)("Fullscreen request ignored since there is no FullscreenContextProvider ancestor.")},requestExitFullscreen(){Object(m.b)("Exit fullscreen request ignored since there is no FullscreenContextProvider ancestor.")}});const ne={width:"100%",height:"100%"};class se extends i.PureComponent{constructor(e){super(e),this.state={fullscreen:!1},this.requestFullscreen=this.requestFullscreen.bind(this),this.requestExitFullscreen=this.requestExitFullscreen.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.fullscreenElement=null}componentDidMount(){document.addEventListener("fullscreenchange",this.handleFullscreenChange),document.addEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.addEventListener("mozfullscreenchange",this.handleFullscreenChange),document.addEventListener("msfullscreenchange",this.handleFullscreenChange)}componentWillUnmount(){document.removeEventListener("fullscreenchange",this.handleFullscreenChange),document.removeEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.removeEventListener("mozfullscreenchange",this.handleFullscreenChange),document.removeEventListener("msfullscreenchange",this.handleFullscreenChange)}requestFullscreen(){this.props.fullscreenEnabled&&(this.fullscreenElement.requestFullscreen?this.fullscreenElement.requestFullscreen():this.fullscreenElement.webkitRequestFullscreen?this.fullscreenElement.webkitRequestFullscreen():this.fullscreenElement.mozRequestFullscreen?this.fullscreenElement.mozRequestFullScreen():this.fullscreenElement.msRequestFullscreen&&this.fullscreenElement.msRequestFullscreen())}requestExitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.mozExitFullscreen()}handleFullscreenChange(){const e=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;this.setState({fullscreen:e===this.fullscreenElement})}getFullscreenContext(){const e={fullscreen:this.state.fullscreen,requestFullscreen:this.requestFullscreen,requestExitFullscreen:this.requestExitFullscreen};return this.fullscreenContext&&e.fullscreen===this.fullscreenContext.fullscreen?this.fullscreenContext:this.fullscreenContext=e}render(){const e=this.getFullscreenContext();return a.a.createElement("div",{ref:e=>this.fullscreenElement=e,style:this.state.fullscreen?ne:void 0},a.a.createElement(te.Provider,{value:e},"function"==typeof this.props.children?this.props.children(e):this.props.children))}}se.defaultProps={fullscreenEnabled:!0};var ie=se;function ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var re=function(e,t){const n={},s=e.displayName||e.name;function r(r){return a.a.createElement(te.Consumer,null,o=>a.a.createElement(c.Consumer,null,a=>{const l=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),s.forEach(function(t){ae(e,t,n[t])})}return e}({},r);for(const e of t)a.hasOwnProperty(e)?l[e]=a[e]:o.hasOwnProperty(e)?l[e]=o[e]:n[e]||(Object(m.b)("Prop '"+e+"' for component "+s+" not found in playerContext or fullscreenContext."),n[e]=!0);return Object(i.createElement)(e,l)}))}return s&&(r.displayName=`PlayerContextFilter(${s})`),r};n.d(t,"PlayerContextConsumer",function(){return oe}),n.d(t,"FullscreenContextConsumer",function(){return le}),n.d(t,"PlayerContextProvider",function(){return X}),n.d(t,"PlayerContextGroup",function(){return ee}),n.d(t,"FullscreenContextProvider",function(){return ie}),n.d(t,"playerContextFilter",function(){return re}),n.d(t,"PlayerPropTypes",function(){return s}),n.d(t,"logError",function(){return m.a}),n.d(t,"logWarning",function(){return m.b}),n.d(t,"convertToNumberWithinIntervalBounds",function(){return D}),n.d(t,"isPlaylistValid",function(){return F}),n.d(t,"repeatStrategyOptions",function(){return p});const oe=c.Consumer,le=te.Consumer}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.cassetteCore=t(require("react"),require("prop-types")):e.cassetteCore=t(e.React,e.PropTypes)}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=7)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return a});const s=console.log.bind(console),i=console.error?console.error.bind(console):s,a=console.warn?console.warn.bind(console):s},function(e,t,n){"use strict";(function(e){var s=n(0),i=n(2);const a=n(6).version,r="undefined"==typeof window?e:window;r.__cassette_contexts__=r.__cassette_contexts__||{},t.a=function(e,t){void 0===t&&(t=null);const n=r.__cassette_contexts__[e];if(n)return n.packageVersion!==a&&Object(i.b)(`Warning: multiple versions of ${e} from the @cassette/core`+` package have been loaded. v${a} will be ignored and`+` v${n.packageVersion} will be used instead.`),n;const o=Object(s.createContext)(t);return o.displayName=e,o.packageVersion=a,r.__cassette_contexts__[e]=o,o}}).call(this,n(5))},function(e,t,n){"use strict";e.exports=function(e,t,n){if("function"==typeof Array.prototype.findIndex)return e.findIndex(t,n);if("function"!=typeof t)throw new TypeError("predicate must be a function");var s=Object(e),i=s.length;if(0===i)return-1;for(var a=0;a<i;a++)if(t.call(n,s[a],a,s))return a;return-1}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e){e.exports={name:"@cassette/core",version:"2.0.0-alpha.14",description:"A simple, clean, and responsive visual wrapper for the HTML audio tag, built with React.",main:"dist/es5/cassette-core.js",scripts:{"build:clean":"rimraf dist","build:webpack":"BUILD_MODE=all webpack --progress",build:"npm run build:clean && npm run build:webpack",prepare:"npm run build",test:'echo "Error: no test specified" && exit 1'},repository:{type:"git",url:"https://github.com/benwiley4000/cassette.git"},engines:{node:">=6.0.0",npm:">=5.0.0"},keywords:["audio","video","media","ui","react","reactjs","responsive","music","player","html5","component","components"],author:{name:"Ben Wiley",email:"therealbenwiley@gmail.com",url:"http://benwiley.org/"},license:"MIT",peerDependencies:{react:"^16.3.0"},devDependencies:{"array-find-index":"^1.0.2",rimraf:"^2.5.4",webpack:"^4.17.1"},dependencies:{"prop-types":"^15.5.10"},publishConfig:{access:"public"},gitHead:"c0ab091641fe16f7a54d1e5e86084c43a65789df"}},function(e,t,n){"use strict";n.r(t);var s={};n.r(s),n.d(s,"controlKeyword",function(){return g}),n.d(s,"control",function(){return y}),n.d(s,"crossOriginAttribute",function(){return b}),n.d(s,"repeatStrategy",function(){return v}),n.d(s,"mediaSource",function(){return k}),n.d(s,"mediaSessionAction",function(){return S}),n.d(s,"mediaSessionArtwork",function(){return E}),n.d(s,"track",function(){return w}),n.d(s,"progressDirection",function(){return x}),n.d(s,"seekMode",function(){return P}),n.d(s,"aspectRatio",function(){return T});var i=n(0),a=n.n(i),r=n(4),o=n.n(r),l=n(3),c=Object(l.a)("PlayerContext"),d=Object(l.a)("GroupContext"),u=n(1),h=n.n(u);const p=["none","playlist","track"];var m=n(2);function f(e,t){let n=!1;return function(s,i,a){if(i in s){!n&&t in s&&(Object(m.b)(`Do not define both the '${i}' and '${t}' props.`),n=!0);for(var r=arguments.length,o=new Array(r>3?r-3:0),l=3;l<r;l++)o[l-3]=arguments[l];return e.isRequired(s,i,a,...o)}if(!(t in s))return new Error(`If the '${t}' prop is not defined, '${i}' must be.`)}}const g=h.a.oneOf(["playpause","backskip","forwardskip","volume","mute","repeat","shuffle","progress","progressdisplay","fullscreen","spacer"]),y=h.a.oneOfType([h.a.func,g]),b=h.a.oneOf(["anonymous","use-credentials"]),v=h.a.oneOf(p),k=h.a.shape({src:h.a.string.isRequired,type:h.a.string.isRequired}),S=h.a.oneOf(["play","pause","previoustrack","nexttrack","seekbackward","seekforward"]),E=h.a.shape({src:h.a.string.isRequired,sizes:h.a.string,type:h.a.string}),w=h.a.shape({url:f(h.a.string,"sources"),sources:f(h.a.arrayOf(k.isRequired),"url"),title:h.a.string.isRequired,artist:h.a.string,album:h.a.string,artwork:h.a.arrayOf(E.isRequired),meta:h.a.object}),x=h.a.oneOf(["left","right","up","down"]),P=h.a.oneOf(["paused","immediate","onrelease"]);function T(e,t){const n=e[t];if(void 0!==n)return"string"!=typeof n||2!==n.split(":").length||n.split(":").some(isNaN)?new Error(`The ${t} prop should be a string of the form 'x:y'. Example: 16:9`):void 0}const M="loopchange",O="srcrequest";var C=function(){const e=document.createElement("video");return new MutationObserver(()=>{e.dispatchEvent(new Event(M))}).observe(e,{attributes:!0,attributeFilter:["loop"]}),Object.defineProperty(e,"src",{get:()=>e.currentSrc,set:t=>{const n=new Event(O);n.srcRequested=t,e.dispatchEvent(n)}}),e};function I(e,t,n,s){let i=s;for(let s=0;s<e;s++){if(!t.length)throw I(s,n,t,i),`Moving ${e} places was not possible!`;n.push(i),i=t.pop()}return i}function _(e,t,n,s,i){let a,r=s;if(e.length){for(let s=1;s<=t.length;s++)if(-1!==e.indexOf(t[t.length-s]))return I(s,t,n,r);if(i){if(function(e,t){if(!e.length)return!1;for(let n=0;n<e.length;n++)if(t!==e[n])return!1;return!0}(e,r))return r;do{a=e[Math.floor(Math.random()*e.length)]}while(r===a||void 0===a);return void 0!==(r=I(t.length,t,n,r))&&n.push(r),a}}}var R=class{constructor(e,t){void 0===t&&(t={}),this._list=e,this._forwardStack=[],this._backStack=[],this._currentItem=void 0,this._allowBackShuffle=Boolean(t.allowBackShuffle)}findNextItem(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=_(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem}findPreviousItem(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=_(this._list,this._backStack,this._forwardStack,this._currentItem,this._allowBackShuffle),this._currentItem}pickNextItem(e,t){if(void 0!==t&&this.setCurrentIndex(t),void 0!==this._list[e])return void 0!==this._currentItem&&this._backStack.push(this._currentItem),this._forwardStack.length=0,this._currentItem=this._list[e],this._currentItem}setList(e){this._list=e}setOptions(e){for(const t of Object.keys(e))switch(t){case"allowBackShuffle":this[`_${t}`]=Boolean(e[t])}}setCurrentIndex(e){const t=this._list[e];this._currentItem!==t&&(this.clear(),this._currentItem=t)}clear(){this._forwardStack.length=0,this._backStack.length=0,this._currentItem=void 0}};var L=function(e){return Boolean(e&&e.length)};const F=[{src:""}];var V=function(e,t){if(!L(e))return F;const n=e[t],s=n.sources,i=n.url;return s?s.length?s:F:[{src:i}]};var j=function(e,t){return o()(e,e=>e.sources?-1!==o()(e.sources,e=>e.src===t):e.url&&t===e.url)};var q=function(e){return(e||[]).map((t,n)=>V(e,n)[0].src)};var H=function(e){const t=Array(e.length);for(let n=0;n<e.length;n++)t[n]={start:e.start(n),end:e.end(n)};return t};var A=function(e,t){return e?"track":t?"playlist":"none"};var D=function(e,t,n){return t="number"==typeof t?t:-1/0,n="number"==typeof n?n:1/0,Math.max(t,Math.min(e,n))};function B(){return(B=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e}).apply(this,arguments)}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),s.forEach(function(t){$(e,t,n[t])})}return e}function $(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function U(e){if(Object(m.a)(e),"NotAllowedError"===e.name){const e="Media playback failed at "+(new Date).toLocaleTimeString()+"! (Perhaps autoplay is disabled in this browser.)";Object(m.b)(e)}}const z=["previoustrack","nexttrack","seekbackward","seekforward"],W={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,awaitingPlay:!1};function G(e){let t=e.prevState,n=e.index,s=e.shouldPlay,i=void 0===s||s,a=e.shouldForceLoad,r=void 0!==a&&a;const o=t.activeTrackIndex!==n;return{activeTrackIndex:n,trackLoading:o,currentTime:0,loop:!o&&!r&&t.loop,awaitingPlay:Boolean(i),paused:!i,awaitingForceLoad:Boolean(r)}}function K(e,t){let n;for(;n=e.firstChild;)e.removeChild(n);for(const n of t){const t=document.createElement("source");t.src=n.src,n.type&&(t.type=n.type),e.appendChild(t)}e.load()}class J extends i.Component{constructor(e){super(e),this.state=N({},W,{activeTrackIndex:D(e.startingTrackIndex,0),trackLoading:L(e.playlist),currentTime:D(e.startingTime,0),volume:D(e.defaultVolume,0,1),muted:e.defaultMuted,loop:"track"===e.defaultRepeatStrategy,cycle:"playlist"===e.defaultRepeatStrategy,shuffle:e.defaultShuffle,playbackRate:e.defaultPlaybackRate,setVolumeInProgress:!1,awaitingPlay:e.autoplay&&L(e.playlist),awaitingForceLoad:!1,__playlist__:e.playlist},e.initialStateSnapshot?function(e,t){const n=e.__unstable__,s=n.paused,i=n.currentTime,a=n.activeTrackIndex,r=n.volume,o=n.muted,l=n.loop,c=n.cycle,d=n.shuffle,u=n.playbackRate,h=n.activeTrackSrc,p={};L(t.playlist)&&"boolean"==typeof s&&(p.awaitingPlay=!s),"number"==typeof r&&r>=0&&r<=1&&(p.volume=r),"boolean"==typeof o&&(p.muted=o),"boolean"==typeof l&&(p.loop=l),"boolean"==typeof c&&(p.cycle=c),"boolean"==typeof d&&(p.shuffle=d),"number"==typeof u&&(p.playbackRate=u);let m=!1;if("string"==typeof h&&"number"==typeof a&&a>=0){const e=t.playlist[a]&&V(t.playlist,a)[0].src;if(e&&h===e)p.activeTrackIndex=a,m=!0;else{const e=j(t.playlist,h);-1!==e&&(p.activeTrackIndex=e,m=!0)}}return m&&"number"==typeof i&&i>=0&&(p.currentTime=i),p}(e.initialStateSnapshot,e):{}),this.lastStableVolume=this.state.volume,this.shuffler=new R(q(e.playlist),{allowBackShuffle:e.allowBackShuffle}),this.media=null,this.videoHostElementList=[],this.videoHostOccupiedCallbacks=new Map,this.videoHostVacatedCallbacks=new Map,this.togglePause=this.togglePause.bind(this),this.selectTrackIndex=this.selectTrackIndex.bind(this),this.forwardSkip=this.forwardSkip.bind(this),this.backSkip=this.backSkip.bind(this),this.seekPreview=this.seekPreview.bind(this),this.seekComplete=this.seekComplete.bind(this),this.setVolume=this.setVolume.bind(this),this.setVolumeComplete=this.setVolumeComplete.bind(this),this.toggleMuted=this.toggleMuted.bind(this),this.toggleShuffle=this.toggleShuffle.bind(this),this.setRepeatStrategy=this.setRepeatStrategy.bind(this),this.setPlaybackRate=this.setPlaybackRate.bind(this),this.registerVideoHostElement=this.registerVideoHostElement.bind(this),this.renderVideoIntoHostElement=this.renderVideoIntoHostElement.bind(this),this.unregisterVideoHostElement=this.unregisterVideoHostElement.bind(this),this.updateVideoHostElement=this.updateVideoHostElement.bind(this),this.handleMediaPlay=this.handleMediaPlay.bind(this),this.handleMediaPause=this.handleMediaPause.bind(this),this.handleMediaSrcrequest=this.handleMediaSrcrequest.bind(this),this.handleMediaEnded=this.handleMediaEnded.bind(this),this.handleMediaStalled=this.handleMediaStalled.bind(this),this.handleMediaCanplaythrough=this.handleMediaCanplaythrough.bind(this),this.handleMediaTimeupdate=this.handleMediaTimeupdate.bind(this),this.handleMediaLoadedmetadata=this.handleMediaLoadedmetadata.bind(this),this.handleMediaVolumechange=this.handleMediaVolumechange.bind(this),this.handleMediaDurationchange=this.handleMediaDurationchange.bind(this),this.handleMediaProgress=this.handleMediaProgress.bind(this),this.handleMediaLoopchange=this.handleMediaLoopchange.bind(this),this.handleMediaRatechange=this.handleMediaRatechange.bind(this)}componentDidMount(){const e=this.media=C(),t=this.props,n=t.defaultPlaybackRate,s=t.crossOrigin,i=t.playlist,a=t.autoplayDelayInSeconds,r=t.mediaElementRef,o=t.getPosterImageForTrack,l=t.onActiveTrackUpdate,c=this.state,d=c.volume,u=c.muted,h=c.playbackRate,p=c.loop,m=c.activeTrackIndex,f=c.awaitingPlay;e.defaultPlaybackRate=n,e.crossOrigin=s,e.volume=d,e.muted=u,e.playbackRate=h,e.loop=p,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline",""),e.setAttribute("preload","metadata"),e.setAttribute("poster",o(i[m])),e.addEventListener("play",this.handleMediaPlay),e.addEventListener("pause",this.handleMediaPause),e.addEventListener("ended",this.handleMediaEnded),e.addEventListener("stalled",this.handleMediaStalled),e.addEventListener("canplaythrough",this.handleMediaCanplaythrough),e.addEventListener("timeupdate",this.handleMediaTimeupdate),e.addEventListener("loadedmetadata",this.handleMediaLoadedmetadata),e.addEventListener("volumechange",this.handleMediaVolumechange),e.addEventListener("durationchange",this.handleMediaDurationchange),e.addEventListener("progress",this.handleMediaProgress),e.addEventListener("ratechange",this.handleMediaRatechange),e.addEventListener("srcrequest",this.handleMediaSrcrequest),e.addEventListener("loopchange",this.handleMediaLoopchange),K(e,V(i,m)),this.mediaContainer.appendChild(e),f&&(this.setState({awaitingPlay:!1}),this.delayTimeout=setTimeout(()=>{this.togglePause(!1)},1e3*a)),r&&r(e),l&&l(i[m],m)}static getDerivedStateFromProps(e,t){const n=e.playlist;if(n===t.__playlist__)return null;const s={__playlist__:n};if(!L(n))return N({},W,s,{activeTrackIndex:0,trackLoading:!1});const i=V(t.__playlist__,t.activeTrackIndex);if(n[t.activeTrackIndex]){const e=V(n,t.activeTrackIndex);if(i[0].src===e[0].src)return s}const a=j(n,i[0].src);return N({},s,-1!==a?{activeTrackIndex:a}:G({prevState:t,index:0,shouldPlay:!1}))}componentDidUpdate(e,t){this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(q(this.props.playlist)),this.shuffler.setOptions({allowBackShuffle:this.props.allowBackShuffle});const n=V(e.playlist,t.activeTrackIndex),s=V(this.props.playlist,this.state.activeTrackIndex),i=e.playlist[t.activeTrackIndex],a=this.props.playlist[this.state.activeTrackIndex];(this.state.awaitingForceLoad||n[0].src!==s[0].src)&&(K(this.media,s),this.media.setAttribute("poster",this.props.getPosterImageForTrack(a)),this.setState({awaitingForceLoad:!1}),this.state.shuffle||this.shuffler.clear()),this.props.onActiveTrackUpdate&&i!==a&&this.props.onActiveTrackUpdate(a,this.state.activeTrackIndex),e===this.props||this.media.paused||this.stealMediaSession(),this.state.awaitingPlay&&(this.setState({awaitingPlay:!1}),setTimeout(()=>{this.togglePause(!1)})),clearTimeout(this.snapshotUpdateTimeout),this.snapshotUpdateTimeout=setTimeout(()=>{this.props.onStateSnapshot&&this.props.onStateSnapshot(function(e){const t=e.paused,n=e.currentTime,s=e.activeTrackIndex,i=e.volume,a=e.muted,r=e.loop,o=e.cycle,l=e.shuffle,c=e.playbackRate,d=e.__playlist__;return{__unstable__:{paused:t,currentTime:n,activeTrackIndex:s,volume:i,muted:a,loop:r,cycle:o,shuffle:l,playbackRate:c,activeTrackSrc:L(d)?V(d,s)[0].src:null}}}(this.state))},100)}componentWillUnmount(){const e=this.media;e.removeEventListener("play",this.handleMediaPlay),e.removeEventListener("pause",this.handleMediaPause),e.removeEventListener("ended",this.handleMediaEnded),e.removeEventListener("stalled",this.handleMediaStalled),e.removeEventListener("canplaythrough",this.handleMediaCanplaythrough),e.removeEventListener("timeupdate",this.handleMediaTimeupdate),e.removeEventListener("loadedmetadata",this.handleMediaLoadedmetadata),e.removeEventListener("volumechange",this.handleMediaVolumechange),e.removeEventListener("durationchange",this.handleMediaDurationchange),e.removeEventListener("progress",this.handleMediaProgress),e.removeEventListener("ratechange",this.handleMediaRatechange),e.removeEventListener("srcrequest",this.handleMediaSrcrequest),e.removeEventListener("loopchange",this.handleMediaLoopchange),clearTimeout(this.gapLengthTimeout),clearTimeout(this.delayTimeout)}stealMediaSession(){window.MediaSession&&navigator.mediaSession instanceof MediaSession&&(navigator.mediaSession.metadata=new MediaMetadata(this.props.playlist[this.state.activeTrackIndex]),z.map(e=>{if(-1===this.props.supportedMediaSessionActions.indexOf(e))return null;const t=this.props.mediaSessionSeekLengthInSeconds;switch(e){case"play":return this.togglePause.bind(this,!1);case"pause":return this.togglePause.bind(this,!0);case"previoustrack":return this.backSkip;case"nexttrack":return this.forwardSkip;case"seekbackward":return()=>this.media.currentTime-=t;case"seekforward":return()=>this.media.currentTime+=t;default:return}}).forEach((e,t)=>{navigator.mediaSession.setActionHandler(z[t],e)}))}registerVideoHostElement(e,t){let n=t.onHostOccupied,s=t.onHostVacated;this.videoHostElementList=this.videoHostElementList.concat(e),this.videoHostOccupiedCallbacks.set(e,n),this.videoHostVacatedCallbacks.set(e,s)}renderVideoIntoHostElement(e){-1!==this.videoHostElementList.indexOf(e)&&(cancelAnimationFrame(this.videoHostUpdateRaf),this.videoHostUpdateRaf=requestAnimationFrame(()=>this.updateVideoHostElement(e)))}unregisterVideoHostElement(e){this.videoHostElementList=this.videoHostElementList.filter(t=>t!==e),this.videoHostOccupiedCallbacks.delete(e),this.videoHostVacatedCallbacks.delete(e),this.media.parentNode===e&&this.updateVideoHostElement()}updateVideoHostElement(e){e?this.videoHostElementList=[e].concat(this.videoHostElementList.filter(t=>t!==e)):e=this.videoHostElementList[0]||this.mediaContainer;const t=!this.media.paused,n=this.media.parentNode;if(e===n)return;e.appendChild(this.media),t&&this.media.paused&&this.media.play();const s=this.videoHostVacatedCallbacks.get(n);s&&s(this.media);const i=this.videoHostOccupiedCallbacks.get(e);i&&i(this.media)}handleMediaPlay(){this.setState(e=>!1===e.paused?null:{paused:!1}),this.stealMediaSession()}handleMediaPause(){this.setState(e=>!0===e.paused?null:{paused:!0})}handleMediaSrcrequest(e){const t=this.props.playlist,n=V(t,this.state.activeTrackIndex);if(-1!==o()(n,t=>t.src===e.srcRequested))return;const s=j(t,e.srcRequested);-1!==s?this.selectTrackIndex(s):Object(m.a)(`Source '${e.srcRequested}' does not exist in the loaded playlist. `+"Make sure you've updated the 'playlist' prop to PlayerContextProvider before you select this track!")}handleMediaEnded(){if(this.state.seekInProgress)return;clearTimeout(this.gapLengthTimeout);const e=this.props,t=e.playlist,n=e.loadFirstTrackOnPlaylistComplete;if(!L(t))return;const s=this.state,i=s.cycle,a=s.activeTrackIndex;!i&&a+1>=t.length?n&&this.goToTrack({index:0,shouldPlay:!1,shouldForceLoad:!0}):this.gapLengthTimeout=setTimeout(this.forwardSkip,1e3*this.props.gapLengthInSeconds)}handleMediaStalled(){this.setState(e=>!0===e.stalled?null:{stalled:!0})}handleMediaCanplaythrough(){this.setState(e=>!1===e.stalled?null:{stalled:!1})}handleMediaTimeupdate(){const e=this.media,t=e.currentTime,n=e.played;this.state.trackLoading?this.media.currentTime=this.state.currentTime:this.setState({currentTime:t,playedRanges:H(n)})}handleMediaLoadedmetadata(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime),this.setState(e=>!1===e.trackLoading?null:{trackLoading:!1})}handleMediaVolumechange(){const e=this.media,t=e.volume,n=e.muted;this.setState({volume:t,muted:n})}handleMediaDurationchange(){const e=this.media.duration;this.setState({duration:e})}handleMediaProgress(){this.setState({bufferedRanges:H(this.media.buffered),seekableRanges:H(this.media.seekable)})}handleMediaLoopchange(){const e=this.media.loop;this.setState(t=>t.loop===e?null:{loop:e})}handleMediaRatechange(){const e=this.media.playbackRate;this.setState(t=>t.playbackRate===e?null:{playbackRate:e})}togglePause(e){if(clearTimeout(this.delayTimeout),"boolean"==typeof e?e:!this.state.paused)this.media.pause();else if(this.media.currentSrc)try{const e=this.media.play();e&&"function"==typeof e.catch&&e.catch(e=>{if("AbortError"!==e.name)return Promise.reject(e)}).catch(U)}catch(e){U(e)}}goToTrack(e){clearTimeout(this.delayTimeout),this.setState(t=>G(N({prevState:t},e)))}selectTrackIndex(e){const t=this.props.playlist;L(t)&&(e<0||e>t.length?Object(m.b)(`Playlist index ${e} is out of bounds!`):(this.state.shuffle&&this.shuffler.pickNextItem(e,this.state.activeTrackIndex),this.goToTrack({index:e})))}backSkip(){const e=this.props,t=e.playlist,n=e.stayOnBackSkipThreshold,s=this.media,i=this.state,a=i.cycle,r=i.activeTrackIndex,o=i.shuffle;if(!L(t)||s.currentTime>=n||!a&&r<1)return void(s.currentTime=0);let l;if(o){const e=this.shuffler.findPreviousItem(r);if(void 0===e)return void(s.currentTime=0);l=j(t,e)}else(l=r-1)<0&&(l=t.length-1);this.goToTrack({index:l,shouldForceLoad:!0})}forwardSkip(){const e=this.props.playlist,t=this.state,n=t.cycle,s=t.activeTrackIndex,i=t.shuffle;if(!L(e)||!n&&s+1>=e.length)return;let a;i?a=j(e,this.shuffler.findNextItem(s)):(a=s+1)>=e.length&&(a=0),this.goToTrack({index:a,shouldForceLoad:!0})}seekPreview(e){if(!L(this.props.playlist))return;const t={seekPreviewTime:e,seekInProgress:!0};switch(this.props.seekMode){case"paused":this.setState(e=>{let n=e.paused,s=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||s})}),this.media.currentTime=e,this.state.paused||this.togglePause(!0);break;case"immediate":this.setState(e=>{let n=e.paused,s=e.awaitingResumeOnSeekComplete;return N({},t,{awaitingResumeOnSeekComplete:!n||s})}),this.media.currentTime=e,this.state.awaitingResumeOnSeekComplete&&!this.media.ended&&this.togglePause(!1);break;case"onrelease":this.setState(t)}}seekComplete(e){const t=this.state,n=t.seekPreviewTime,s=t.awaitingResumeOnSeekComplete,i={seekInProgress:!1,awaitingResumeOnSeekComplete:!1},a="number"==typeof e?e:n;isNaN(a)?this.setState(i):(this.setState(N({},i,{currentTime:a})),this.media.currentTime=a,s&&(this.media.ended?this.forwardSkip():this.togglePause(!1)))}setVolume(e,t){void 0===t&&(t=!0),t&&!this.state.setVolumeInProgress&&this.setState({setVolumeInProgress:!0});const n=D(e,0,1);this.media.muted=0===n,this.media.volume=n}setVolumeComplete(e){"number"==typeof e&&this.setVolume(e,!1),this.setState({setVolumeInProgress:!1}),this.media.muted||(this.lastStableVolume=this.media.volume)}toggleMuted(e){const t="boolean"==typeof e?e:!this.state.muted;this.media.muted=t,t||(this.media.volume=this.lastStableVolume)}toggleShuffle(e){const t="boolean"==typeof e?e:!this.state.shuffle;this.setState({shuffle:t})}setRepeatStrategy(e){if(-1!==p.indexOf(e))switch(e){case"track":this.media.loop=!0;break;case"playlist":this.setState({loop:!1,cycle:!0}),this.media.loop=!1;break;case"none":this.setState({loop:!1,cycle:!1}),this.media.loop=!1}else Object(m.b)('repeatStrategy "'+e+'" is not one of: '+p.split(", ")+".")}setPlaybackRate(e){this.media.playbackRate=e}getControlProps(){const e=this.props,t=this.state,n={playlist:e.playlist,activeTrackIndex:t.activeTrackIndex,trackLoading:t.trackLoading,paused:t.paused,currentTime:t.currentTime,seekPreviewTime:t.seekPreviewTime,seekInProgress:t.seekInProgress,awaitingResumeOnSeekComplete:t.awaitingResumeOnSeekComplete,duration:t.duration,bufferedRanges:t.bufferedRanges,playedRanges:t.playedRanges,seekableRanges:t.seekableRanges,volume:t.volume,muted:t.muted,shuffle:t.shuffle,stalled:t.stalled,playbackRate:t.playbackRate,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:A(t.loop,t.cycle),registerVideoHostElement:this.registerVideoHostElement,renderVideoIntoHostElement:this.renderVideoIntoHostElement,unregisterVideoHostElement:this.unregisterVideoHostElement,onTogglePause:this.togglePause,onSelectTrackIndex:this.selectTrackIndex,onBackSkip:this.backSkip,onForwardSkip:this.forwardSkip,onSeekPreview:this.seekPreview,onSeekComplete:this.seekComplete,onSetVolume:this.setVolume,onSetVolumeComplete:this.setVolumeComplete,onToggleMuted:this.toggleMuted,onToggleShuffle:this.toggleShuffle,onSetRepeatStrategy:this.setRepeatStrategy,onSetPlaybackRate:this.setPlaybackRate};if(this.playerContext){for(const e of Object.keys(this.playerContext))if(n[e]!==this.playerContext[e]){this.playerContext=n;break}}else this.playerContext=n;return this.playerContext}render(){const e=this.getControlProps();return a.a.createElement(i.Fragment,null,a.a.createElement("div",{ref:e=>this.mediaContainer=e,hidden:!0}),a.a.createElement(c.Provider,{value:e},"function"==typeof this.props.children?this.props.children(e):this.props.children))}}J.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,startingTime:0,startingTrackIndex:0,loadFirstTrackOnPlaylistComplete:!0,seekMode:"immediate",maintainPlaybackRate:!1,allowBackShuffle:!1,stayOnBackSkipThreshold:5,supportedMediaSessionActions:["play","pause","previoustrack","nexttrack"],mediaSessionSeekLengthInSeconds:10,getPosterImageForTrack:e=>e&&e.artwork?e.artwork[0].src:""};class Q extends i.Component{componentDidMount(){this.props.groupContext.registerMediaElement(this.mediaElement)}componentWillUnmount(){this.props.groupContext.unregisterMediaElement(this.mediaElement)}render(){const e=this.props,t=e.groupContext,n=e.props,s=n.mediaElementRef,i=function(e,t){if(null==e)return{};var n,s,i={},a=Object.keys(e);for(s=0;s<a.length;s++)n=a[s],t.indexOf(n)>=0||(i[n]=e[n]);return i}(n,["mediaElementRef"]);return a.a.createElement(J,B({},t.groupProps,i,{mediaElementRef:e=>{s&&s(e),this.mediaElement=e}}))}}var X=function(e){return a.a.createElement(d.Consumer,null,t=>t?Object(i.createElement)(Q,{groupContext:t,props:e}):Object(i.createElement)(J,e))};function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),s.forEach(function(t){Z(e,t,n[t])})}return e}function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ee=class extends i.Component{constructor(e){super(e),this.registerMediaElement=this.registerMediaElement.bind(this),this.unregisterMediaElement=this.unregisterMediaElement.bind(this),this.enforceOneMediaSourceOnly=this.enforceOneMediaSourceOnly.bind(this),this.mediaElements=[]}registerMediaElement(e){this.mediaElements=this.mediaElements.concat(e),e.addEventListener("play",this.enforceOneMediaSourceOnly,!0),e.addEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)}unregisterMediaElement(e){this.mediaElements=this.mediaElements.filter(t=>e!==t),e.removeEventListener("play",this.enforceOneMediaSourceOnly,!0),e.removeEventListener("volumechange",this.enforceOneMediaSourceOnly,!0)}enforceOneMediaSourceOnly(e){const t=e.target,n=t.paused,s=t.muted;if(!n&&!s)for(const e of this.mediaElements)e===t||e.muted||e.pause()}render(){return a.a.createElement(d.Consumer,null,e=>{const t=e?Y({},e,{groupProps:Y({},e.groupProps,this.props)}):{groupProps:this.props,registerMediaElement:this.registerMediaElement,unregisterMediaElement:this.unregisterMediaElement};return a.a.createElement(d.Provider,{value:t},this.props.children)})}},te=Object(l.a)("FullscreenContext",{fullscreen:!1,requestFullscreen(){Object(m.b)("Fullscreen request ignored since there is no FullscreenContextProvider ancestor.")},requestExitFullscreen(){Object(m.b)("Exit fullscreen request ignored since there is no FullscreenContextProvider ancestor.")}});const ne={width:"100%",height:"100%"};class se extends i.PureComponent{constructor(e){super(e),this.state={fullscreen:!1},this.requestFullscreen=this.requestFullscreen.bind(this),this.requestExitFullscreen=this.requestExitFullscreen.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.fullscreenElement=null}componentDidMount(){document.addEventListener("fullscreenchange",this.handleFullscreenChange),document.addEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.addEventListener("mozfullscreenchange",this.handleFullscreenChange),document.addEventListener("msfullscreenchange",this.handleFullscreenChange)}componentWillUnmount(){document.removeEventListener("fullscreenchange",this.handleFullscreenChange),document.removeEventListener("webkitfullscreenchange",this.handleFullscreenChange),document.removeEventListener("mozfullscreenchange",this.handleFullscreenChange),document.removeEventListener("msfullscreenchange",this.handleFullscreenChange)}requestFullscreen(){this.props.fullscreenEnabled&&(this.fullscreenElement.requestFullscreen?this.fullscreenElement.requestFullscreen():this.fullscreenElement.webkitRequestFullscreen?this.fullscreenElement.webkitRequestFullscreen():this.fullscreenElement.mozRequestFullscreen?this.fullscreenElement.mozRequestFullScreen():this.fullscreenElement.msRequestFullscreen&&this.fullscreenElement.msRequestFullscreen())}requestExitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.mozExitFullscreen()}handleFullscreenChange(){const e=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;this.setState({fullscreen:e===this.fullscreenElement})}getFullscreenContext(){const e={fullscreen:this.state.fullscreen,requestFullscreen:this.requestFullscreen,requestExitFullscreen:this.requestExitFullscreen};return this.fullscreenContext&&e.fullscreen===this.fullscreenContext.fullscreen?this.fullscreenContext:this.fullscreenContext=e}render(){const e=this.getFullscreenContext();return a.a.createElement("div",{ref:e=>this.fullscreenElement=e,style:this.state.fullscreen?ne:void 0},a.a.createElement(te.Provider,{value:e},"function"==typeof this.props.children?this.props.children(e):this.props.children))}}se.defaultProps={fullscreenEnabled:!0};var ie=se;function ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var re=function(e,t){const n={},s=e.displayName||e.name;function r(r){return a.a.createElement(te.Consumer,null,o=>a.a.createElement(c.Consumer,null,a=>{const l=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),s.forEach(function(t){ae(e,t,n[t])})}return e}({},r);for(const e of t)a.hasOwnProperty(e)?l[e]=a[e]:o.hasOwnProperty(e)?l[e]=o[e]:n[e]||(Object(m.b)("Prop '"+e+"' for component "+s+" not found in playerContext or fullscreenContext."),n[e]=!0);return Object(i.createElement)(e,l)}))}return s&&(r.displayName=`PlayerContextFilter(${s})`),r};n.d(t,"PlayerContextConsumer",function(){return oe}),n.d(t,"FullscreenContextConsumer",function(){return le}),n.d(t,"PlayerContextProvider",function(){return X}),n.d(t,"PlayerContextGroup",function(){return ee}),n.d(t,"FullscreenContextProvider",function(){return ie}),n.d(t,"playerContextFilter",function(){return re}),n.d(t,"PlayerPropTypes",function(){return s}),n.d(t,"logError",function(){return m.a}),n.d(t,"logWarning",function(){return m.b}),n.d(t,"convertToNumberWithinIntervalBounds",function(){return D}),n.d(t,"isPlaylistValid",function(){return L}),n.d(t,"repeatStrategyOptions",function(){return p});const oe=c.Consumer,le=te.Consumer}])}); | ||
//# sourceMappingURL=cassette-core.min.js.map |
{ | ||
"name": "@cassette/core", | ||
"version": "2.0.0-alpha.13", | ||
"version": "2.0.0-alpha.14", | ||
"description": "A simple, clean, and responsive visual wrapper for the HTML audio tag, built with React.", | ||
@@ -55,3 +55,3 @@ "main": "dist/es5/cassette-core.js", | ||
}, | ||
"gitHead": "be82bd87d6134ebef4fcbb304b0701e2e84abc8e" | ||
"gitHead": "c0ab091641fe16f7a54d1e5e86084c43a65789df" | ||
} |
@@ -415,2 +415,14 @@ import React, { Component, Fragment, createElement } from 'react'; | ||
const { media } = this; | ||
// remove listeners for media events | ||
media.removeEventListener('play', this.handleMediaPlay); | ||
media.removeEventListener('pause', this.handleMediaPause); | ||
media.removeEventListener('ended', this.handleMediaEnded); | ||
media.removeEventListener('stalled', this.handleMediaStalled); | ||
media.removeEventListener('canplaythrough', this.handleMediaCanplaythrough); | ||
media.removeEventListener('timeupdate', this.handleMediaTimeupdate); | ||
media.removeEventListener('loadedmetadata', this.handleMediaLoadedmetadata); | ||
media.removeEventListener('volumechange', this.handleMediaVolumechange); | ||
media.removeEventListener('durationchange', this.handleMediaDurationchange); | ||
media.removeEventListener('progress', this.handleMediaProgress); | ||
media.removeEventListener('ratechange', this.handleMediaRatechange); | ||
// remove special event listeners on the media element | ||
@@ -417,0 +429,0 @@ media.removeEventListener('srcrequest', this.handleMediaSrcrequest); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
939692
5618