@cassette/core
Advanced tools
Comparing version 2.0.0-alpha.28 to 2.0.0-alpha.29
@@ -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){var t=e.displayName,n=e.defaultValue,o=void 0===n?null:n,l=e.keysWillUpdate,u=s.__cassette_contexts__[t];if(u)return u.packageVersion!==i&&Object(a.b)("Warning: multiple versions of "+t+" from the @cassette/core package have been loaded. v"+i+" will be ignored and v"+u.packageVersion+" will be used instead."),u;var c={},d=0,h=l,p=Array.isArray(h),f=0;for(h=p?h:h[Symbol.iterator]();;){var m;if(p){if(f>=h.length)break;m=h[f++]}else{if((f=h.next()).done)break;m=f.value}c[m]=1<<d++}var v=Object(r.createContext)(o,function(e,t){var n=0,r=l,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;e[o]!==t[o]&&(n|=c[o])}return n});return v.__cassetteGetObservedBits=function(e){var t=0,n=e,r=Array.isArray(n),a=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(a>=n.length)break;i=n[a++]}else{if((a=n.next()).done)break;i=a.value}t|=c[i]}return t},v.displayName=t,v.packageVersion=i,s.__cassette_contexts__[t]=v,v}}).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.28",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:"695c42335837e0ab319e02902b0f1b36364b1399"}},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 y}),n.d(r,"crossOriginAttribute",function(){return g}),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 T}),n.d(r,"progressDirection",function(){return P}),n.d(r,"seekMode",function(){return x}),n.d(r,"aspectRatio",function(){return w});var a=n(0),i=n.n(a),s=n(4),o=n.n(s),l=n(3),u=Object(l.a)({displayName:"PlayerContext",keysWillUpdate:["playlist","activeTrackIndex","trackLoading","paused","currentTime","seekPreviewTime","seekInProgress","awaitingPlayResume","duration","bufferedRanges","playedRanges","seekableRanges","volume","muted","shuffle","stalled","playbackRate","setVolumeInProgress","repeatStrategy","mediaCannotPlay"]}),c=Object(l.a)({displayName:"GroupContext",keysWillUpdate:["groupProps"]}),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"]),y=h.a.oneOfType([h.a.func,v]),g=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}),T=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),duration:h.a.oneOfType([h.a.string,h.a.number]),startingTime:h.a.number,isUnboundedStream:h.a.bool,meta:h.a.object}),P=h.a.oneOf(["left","right","up","down"]),x=h.a.oneOf(["paused","immediate","onrelease"]);function w(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 _=function(e){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 C(e,t,n,r){for(var a=r,i=0;i<e;i++){if(!t.length)throw C(i,n,t,a),"Moving "+e+" places was not possible!";n.push(a),a=t.pop()}return a}function L(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 C(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=C(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=L(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem},t.findPreviousItem=function(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=L(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 I=function(e){return Boolean(e&&e.length)},F=[{src:""}];var j=function(e,t){if(!I(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})};function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var q="__highly_unstable_snapshot_internals_which_will_break_your_app_if_you_use_them_directly__",H="__cassette_snapshot_version__",B=[function(e){var t,n=e.__unstable__;return 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){A(e,t,n[t])})}return e}({},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}(e,["__unstable__"]),((t={})[q]=n,t))}];var N=function(e){return(e||[]).map(function(t,n){return j(e,n)[0].src})};var D=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 U=function(e,t){return e?"track":t?"playlist":"none"};var W=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))};var z=function(e){return e?e.displayText?e.displayText:e.title&&e.artist?e.artist+" - "+e.title:e.title||e.artist||e.album||"":""};var K=function(e){for(var t=0,n=1,r=e.split(":").slice(-3);r.length>0;)t+=n*parseInt(r.pop(),10),n*=60;return t};function G(){return(G=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 J(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){Q(e,t,n[t])})}return e}function Q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function X(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function Y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Z(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 $=["previoustrack","nexttrack","seekbackward","seekforward"],ee={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,awaitingPlayAfterTrackLoad:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,shouldRequestPlayOnNextUpdate:!1,mediaCannotPlay:!1,maxKnownTime:0};function te(e){var t=e.prevState,n=e.index,r=e.track,a=e.shouldPlay,i=void 0===a||a,s=e.shouldForceLoad,o=void 0!==s&&s,l=t.activeTrackIndex!==n,u=Boolean(l||o),c=r.startingTime||0,d=0;return r.duration&&(d="string"==typeof r.duration?K(r.duration):r.duration),{duration:d,activeTrackIndex:n,trackLoading:u,mediaCannotPlay:t.mediaCannotPlay&&!u,currentTime:W(c,0),loop:!u&&t.loop,shouldRequestPlayOnNextUpdate:Boolean(i),awaitingPlayAfterTrackLoad:Boolean(i),awaitingForceLoad:Boolean(o),maxKnownTime:u?0:t.maxKnownTime}}var ne=function(e){function t(t){var n;n=e.call(this,t)||this;var r=0,a=W(t.startingTrackIndex,0);I(t.playlist)&&t.playlist[a]&&(r=t.playlist[a].startingTime||0);var i=t.initialStateSnapshot,s={};if(i)try{s=function(e,t){var n=B.slice(e[H]||0).reduce(function(e,t){return t(e)},e)[q],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={};I(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}(i,t)}catch(e){Object(f.b)(e),Object(f.b)("Loading Cassette state from snapshot failed."),Object(f.b)("Failed snapshot:\n"+JSON.stringify(i,null,2))}return n.state=J({},ee,{activeTrackIndex:a,trackLoading:I(t.playlist),currentTime:W(r,0),volume:W(t.defaultVolume,0,1),muted:t.defaultMuted,loop:"track"===t.defaultRepeatStrategy,cycle:"playlist"===t.defaultRepeatStrategy,shuffle:t.defaultShuffle,playbackRate:t.defaultPlaybackRate,setVolumeInProgress:!1,shouldRequestPlayOnNextUpdate:t.autoplay&&I(t.playlist),awaitingForceLoad:!1,__playlist__:t.playlist},s),n.lastStableVolume=n.state.volume,n.shuffler=new R(N(t.playlist),{allowBackShuffle:t.allowBackShuffle}),n.media=null,n.videoHostElementList=[],n.videoHostOccupiedCallbacks=new Map,n.videoHostVacatedCallbacks=new Map,n.onTrackPlaybackFailure=n.onTrackPlaybackFailure.bind(Y(Y(n))),n.togglePause=n.togglePause.bind(Y(Y(n))),n.selectTrackIndex=n.selectTrackIndex.bind(Y(Y(n))),n.forwardSkip=n.forwardSkip.bind(Y(Y(n))),n.backSkip=n.backSkip.bind(Y(Y(n))),n.seekPreview=n.seekPreview.bind(Y(Y(n))),n.seekComplete=n.seekComplete.bind(Y(Y(n))),n.setVolume=n.setVolume.bind(Y(Y(n))),n.setVolumeComplete=n.setVolumeComplete.bind(Y(Y(n))),n.toggleMuted=n.toggleMuted.bind(Y(Y(n))),n.toggleShuffle=n.toggleShuffle.bind(Y(Y(n))),n.setRepeatStrategy=n.setRepeatStrategy.bind(Y(Y(n))),n.setPlaybackRate=n.setPlaybackRate.bind(Y(Y(n))),n.registerVideoHostElement=n.registerVideoHostElement.bind(Y(Y(n))),n.renderVideoIntoHostElement=n.renderVideoIntoHostElement.bind(Y(Y(n))),n.unregisterVideoHostElement=n.unregisterVideoHostElement.bind(Y(Y(n))),n.updateVideoHostElement=n.updateVideoHostElement.bind(Y(Y(n))),n.handleMediaPlay=n.handleMediaPlay.bind(Y(Y(n))),n.handleMediaPause=n.handleMediaPause.bind(Y(Y(n))),n.handleMediaSrcrequest=n.handleMediaSrcrequest.bind(Y(Y(n))),n.handleMediaEnded=n.handleMediaEnded.bind(Y(Y(n))),n.handleMediaEmptied=n.handleMediaEmptied.bind(Y(Y(n))),n.handleMediaStalled=n.handleMediaStalled.bind(Y(Y(n))),n.handleMediaCanplaythrough=n.handleMediaCanplaythrough.bind(Y(Y(n))),n.handleMediaCanplay=n.handleMediaCanplay.bind(Y(Y(n))),n.handleMediaTimeupdate=n.handleMediaTimeupdate.bind(Y(Y(n))),n.handleMediaLoadeddata=n.handleMediaLoadeddata.bind(Y(Y(n))),n.handleMediaVolumechange=n.handleMediaVolumechange.bind(Y(Y(n))),n.handleMediaDurationchange=n.handleMediaDurationchange.bind(Y(Y(n))),n.handleMediaProgress=n.handleMediaProgress.bind(Y(Y(n))),n.handleMediaLoopchange=n.handleMediaLoopchange.bind(Y(Y(n))),n.handleMediaRatechange=n.handleMediaRatechange.bind(Y(Y(n))),n}X(t,e);var n=t.prototype;return n.componentDidMount=function(){var e=this,t=this.media=_(this.props.createMediaElement()),n=this.props,r=n.defaultPlaybackRate,a=n.crossOrigin,i=n.playlist,s=n.autoplayDelayInSeconds,o=n.mediaElementRef,l=n.getPosterImageForTrack,u=n.getMediaTitleAttributeForTrack,c=n.onActiveTrackUpdate,d=this.state,h=d.volume,p=d.muted,f=d.playbackRate,m=d.loop,v=d.activeTrackIndex,y=d.shouldRequestPlayOnNextUpdate;t.defaultPlaybackRate=r,a&&(t.crossOrigin=a),t.volume=h,t.muted=p,t.playbackRate=f,t.loop=m,t.setAttribute("playsinline",""),t.setAttribute("webkit-playsinline",""),t.setAttribute("preload","metadata"),t.setAttribute("poster",l(i[v])),t.setAttribute("title",u(i[v])),t.addEventListener("play",this.handleMediaPlay),t.addEventListener("pause",this.handleMediaPause),t.addEventListener("ended",this.handleMediaEnded),t.addEventListener("stalled",this.handleMediaStalled),t.addEventListener("emptied",this.handleMediaEmptied),t.addEventListener("canplay",this.handleMediaCanplay),t.addEventListener("canplaythrough",this.handleMediaCanplaythrough),t.addEventListener("timeupdate",this.handleMediaTimeupdate),t.addEventListener("loadeddata",this.handleMediaLoadeddata),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),this.setMediaElementSources(),this.mediaContainer.appendChild(t),y&&(this.setState({shouldRequestPlayOnNextUpdate:!1}),this.delayTimeout=setTimeout(function(){e.togglePause(!1)},1e3*s)),o&&o(t),c&&c(i[v],v)},t.getDerivedStateFromProps=function(e,t){var n=e.playlist;if(n===t.__playlist__)return null;var r={__playlist__:n};if(!I(n))return J({},ee,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-1!==s?J({},r,{activeTrackIndex:s}):J({},r,te({prevState:t,track:n[0],index:0,shouldPlay:!1,shouldForceLoad:!0}),{mediaCannotPlay:!1,awaitingPlayAfterTrackLoad:!1})},n.componentDidUpdate=function(e,t){var n=this;this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(N(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)&&(this.setMediaElementSources(),this.media.setAttribute("poster",this.props.getPosterImageForTrack(s)),this.media.setAttribute("title",this.props.getMediaTitleAttributeForTrack(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.shouldRequestPlayOnNextUpdate&&(this.setState({shouldRequestPlayOnNextUpdate:!1}),setTimeout(function(){n.togglePause(!1)})),clearTimeout(this.snapshotUpdateTimeout),this.snapshotUpdateTimeout=setTimeout(function(){n.props.onStateSnapshot&&n.props.onStateSnapshot(function(e){var t,n=e.paused,r=e.currentTime,a=e.activeTrackIndex,i=e.volume,s=e.muted,o=e.loop,l=e.cycle,u=e.shuffle,c=e.playbackRate,d=e.duration,h=e.__playlist__;return(t={})[H]=B.length,t[q]={paused:n,currentTime:d===1/0?0:r,activeTrackIndex:a,volume:i,muted:s,loop:o,cycle:l,shuffle:u,playbackRate:c,activeTrackSrc:I(h)?j(h,a)[0].src:null},t}(n.state))},100)},n.componentWillUnmount=function(){var e=this.media;if(e){e.removeEventListener("play",this.handleMediaPlay),e.removeEventListener("pause",this.handleMediaPause),e.removeEventListener("ended",this.handleMediaEnded),e.removeEventListener("stalled",this.handleMediaStalled),e.removeEventListener("emptied",this.handleMediaEmptied),e.removeEventListener("canplaythrough",this.handleMediaCanplaythrough),e.removeEventListener("canplay",this.handleMediaCanplay),e.removeEventListener("timeupdate",this.handleMediaTimeupdate),e.removeEventListener("loadeddata",this.handleMediaLoadeddata),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);var t=e.querySelectorAll("source"),n=Array.isArray(t),r=0;for(t=n?t:t[Symbol.iterator]();;){var a;if(n){if(r>=t.length)break;a=t[r++]}else{if((r=t.next()).done)break;a=r.value}a.removeEventListener("error",this.onTrackPlaybackFailure)}}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]),$.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($[t],e)}))},n.setMediaElementSources=function(){for(var e,t=this.props.playlist;e=this.media.firstChild;)this.media.removeChild(e);if(I(t)){var n=j(t,this.state.activeTrackIndex),r=Array.isArray(n),a=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(a>=n.length)break;i=n[a++]}else{if((a=n.next()).done)break;i=a.value}var s=i,o=document.createElement("source");o.src=s.src,s.type&&(o.type=s.type),o.addEventListener("error",this.onTrackPlaybackFailure),this.media.appendChild(o)}}this.media.load()},n.onTrackPlaybackFailure=function(e){this.setState({mediaCannotPlay:!0}),this.props.onTrackPlaybackFailure&&this.props.onTrackPlaybackFailure(this.props.playlist[this.state.activeTrackIndex],this.state.activeTrackIndex,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&&!1===e.awaitingPlayAfterTrackLoad?null:{paused:!1,awaitingPlayAfterTrackLoad:!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(I(t)){var r=this.state,a=r.cycle,i=r.activeTrackIndex;!a&&i+1>=t.length?n&&this.goToTrack({index:0,track:t[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.handleMediaEmptied=function(){this.setState(function(e){return!0===e.paused?null:{paused:!0}})},n.handleMediaCanplay=function(){this.setState(function(e){return!1===e.trackLoading?null:{trackLoading:!1}})},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,r=this.props,a=r.onTimeUpdate,i=r.playlist,s=this.state.activeTrackIndex;this.state.trackLoading?this.media.currentTime=this.state.currentTime:(this.setState(function(e){return{currentTime:t,playedRanges:D(n),maxKnownTime:Math.max(e.maxKnownTime,t)}}),a&&a(t,i[s],s))},n.handleMediaLoadeddata=function(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime)},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,t=this.media.duration,n=this.props.playlist[this.state.activeTrackIndex];if(t===1/0)if(n.isUnboundedStream||n===this.activeTrackAtLastDurationChange)this.setState({duration:t,currentTime:0}),this.media.currentTime=0;else{var r=this.state.paused;this.media.load(),r||setTimeout(function(){e.togglePause(!1)})}else this.setState({duration:t});this.activeTrackAtLastDurationChange=n},n.handleMediaProgress=function(){this.setState({bufferedRanges:D(this.media.buffered),seekableRanges:D(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(Z)}catch(e){Z(e)}},n.goToTrack=function(e){clearTimeout(this.delayTimeout),this.setState(function(t){return te(J({prevState:t},e))})},n.selectTrackIndex=function(e){var t=this.props.playlist;I(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,track:t[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(!I(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,track:t[l],shouldForceLoad:!0})}},n.forwardSkip=function(){var e,t=this.props.playlist,n=this.state,r=n.cycle,a=n.activeTrackIndex,i=n.shuffle;!I(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,track:t[e],shouldForceLoad:!0}))},n.seekPreview=function(e){if(I(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 J({},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 J({},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(J({},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=W(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,awaitingPlayResume:t.awaitingResumeOnSeekComplete||t.awaitingPlayAfterTrackLoad,duration:t.duration===1/0?t.maxKnownTime: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,mediaCannotPlay:t.mediaCannotPlay,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:U(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);ne.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,createMediaElement:function(){return document.createElement("video")},gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,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:""},getMediaTitleAttributeForTrack:z};var re=function(e){function t(){return e.apply(this,arguments)||this}X(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.groupContext.registerMediaElement(this.mediaElement)},n.componentWillUnmount=function(){this.mediaElement&&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(ne,G({},n.groupProps,s,{mediaElementRef:function(t){a&&a(t),e.mediaElement=t}}))},t}(a.Component);var ae=function(e){return i.a.createElement(c.Consumer,null,function(t){return t?Object(a.createElement)(re,{groupContext:t,props:e}):Object(a.createElement)(ne,e)})};var ie=function(e){for(var t=[],n=e._reactInternalFiber;n=n._debugOwner;)n.type.name&&t.push(n.type.name);return t};var se=function(e){function t(){return e.apply(this,arguments)||this}return function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(t,e),t.prototype.render=function(){var e=this.props,t=e.children,n=e.filterList;if(!n){if(!this.warnedAboutFilterList){var r="\n Please pass the filterList prop to PlayerContextConsumer in order\n to avoid unnecessarily frequent re-renders, e.g.\n\n const filterList = ['paused', 'onTogglePause'];\n // ...\n <PlayerContextConsumer filterList={filterList}>\n {({ paused, onTogglePause }) => {\n return <div>{/* ... */}</div>;\n }}\n </PlayerContextConsumer>\n ",a=ie(this),s=Array.isArray(a),o=0;for(a=s?a:a[Symbol.iterator]();;){var l;if(s){if(o>=a.length)break;l=a[o++]}else{if((o=a.next()).done)break;l=o.value}r+="\n Rendered by "+l}Object(f.b)(r),this.warnedAboutFilterList=!0}return i.a.createElement(u.Consumer,null,t)}var c=u.__cassetteGetObservedBits(n);return i.a.createElement(u.Consumer,{unstable_observedBits:c},function(e){var r={},a=n,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;e.hasOwnProperty(l)&&(r[l]=e[l])}return t(r)})},t}(a.PureComponent);function oe(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){le(e,t,n[t])})}return e}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ue(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var ce=function(e){function t(t){var n;return(n=e.call(this,t)||this).registerMediaElement=n.registerMediaElement.bind(ue(ue(n))),n.unregisterMediaElement=n.unregisterMediaElement.bind(ue(ue(n))),n.enforceOneMediaSourceOnly=n.enforceOneMediaSourceOnly.bind(ue(ue(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?oe({},t,{groupProps:oe({},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),de=Object(l.a)({displayName:"FullscreenContext",defaultValue:{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.")}},keysWillUpdate:["fullscreen"]});function he(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var pe={width:"100%",height:"100%"},fe=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={fullscreen:!1},n.requestFullscreen=n.requestFullscreen.bind(he(he(n))),n.requestExitFullscreen=n.requestExitFullscreen.bind(he(he(n))),n.handleFullscreenChange=n.handleFullscreenChange.bind(he(he(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?pe:void 0},i.a.createElement(de.Provider,{value:t},"function"==typeof this.props.children?this.props.children(t):this.props.children))},t}(a.PureComponent);fe.defaultProps={fullscreenEnabled:!0};var me=fe;function ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ye=function(e,t){var n={},r=e.displayName||e.name,s=u.__cassetteGetObservedBits(t);function o(o){return i.a.createElement(de.Consumer,null,function(l){return i.a.createElement(u.Consumer,{unstable_observedBits:s},function(i){var s=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){ve(e,t,n[t])})}return e}({},o),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)?s[p]=i[p]:l.hasOwnProperty(p)?s[p]=l[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,s)})})}return r&&(o.displayName="PlayerContextFilter("+r+")"),o};n.d(t,"FullscreenContextConsumer",function(){return ge}),n.d(t,"donotuse_PlayerContext",function(){return be}),n.d(t,"donotuse_FullscreenContext",function(){return ke}),n.d(t,"PlayerContextProvider",function(){return ae}),n.d(t,"PlayerContextConsumer",function(){return se}),n.d(t,"PlayerContextGroup",function(){return ce}),n.d(t,"FullscreenContextProvider",function(){return me}),n.d(t,"playerContextFilter",function(){return ye}),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 W}),n.d(t,"isPlaylistValid",function(){return I}),n.d(t,"getDisplayText",function(){return z}),n.d(t,"repeatStrategyOptions",function(){return p});var ge=de.Consumer,be=u,ke=de}])}); | ||
!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){var t=e.displayName,n=e.defaultValue,o=void 0===n?null:n,l=e.keysWillUpdate,u=s.__cassette_contexts__[t];if(u)return u.packageVersion!==i&&Object(a.b)("Warning: multiple versions of "+t+" from the @cassette/core package have been loaded. v"+i+" will be ignored and v"+u.packageVersion+" will be used instead."),u;var c={},d=0,h=l,p=Array.isArray(h),f=0;for(h=p?h:h[Symbol.iterator]();;){var m;if(p){if(f>=h.length)break;m=h[f++]}else{if((f=h.next()).done)break;m=f.value}c[m]=1<<d++}var v=Object(r.createContext)(o,function(e,t){var n=0,r=l,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;e[o]!==t[o]&&(n|=c[o])}return n});return v.__cassetteGetObservedBits=function(e){var t=0,n=e,r=Array.isArray(n),a=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(a>=n.length)break;i=n[a++]}else{if((a=n.next()).done)break;i=a.value}t|=c[i]}return t},v.displayName=t,v.packageVersion=i,s.__cassette_contexts__[t]=v,v}}).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.29",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:"64bdc42d5dbc72c678331309e22f01fb997c5c8b"}},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 y}),n.d(r,"crossOriginAttribute",function(){return g}),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 T}),n.d(r,"progressDirection",function(){return P}),n.d(r,"seekMode",function(){return x}),n.d(r,"aspectRatio",function(){return w});var a=n(0),i=n.n(a),s=n(4),o=n.n(s),l=n(3),u=Object(l.a)({displayName:"PlayerContext",keysWillUpdate:["playlist","activeTrackIndex","trackLoading","paused","currentTime","seekPreviewTime","seekInProgress","awaitingPlayResume","duration","bufferedRanges","playedRanges","seekableRanges","volume","muted","shuffle","stalled","playbackRate","setVolumeInProgress","repeatStrategy","mediaCannotPlay"]}),c=Object(l.a)({displayName:"GroupContext",keysWillUpdate:["groupProps"]}),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"]),y=h.a.oneOfType([h.a.func,v]),g=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}),T=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),duration:h.a.oneOfType([h.a.string,h.a.number]),startingTime:h.a.number,isUnboundedStream:h.a.bool,meta:h.a.object}),P=h.a.oneOf(["left","right","up","down"]),x=h.a.oneOf(["paused","immediate","onrelease"]);function w(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 _=function(e){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 C(e,t,n,r){for(var a=r,i=0;i<e;i++){if(!t.length)throw C(i,n,t,a),"Moving "+e+" places was not possible!";n.push(a),a=t.pop()}return a}function L(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 C(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=C(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=L(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem},t.findPreviousItem=function(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=L(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 I=function(e){return Boolean(e&&e.length)},F=[{src:""}];var j=function(e,t){if(!I(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})};function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var q="__highly_unstable_snapshot_internals_which_will_break_your_app_if_you_use_them_directly__",H="__cassette_snapshot_version__",B=[function(e){var t,n=e.__unstable__;return 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){A(e,t,n[t])})}return e}({},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}(e,["__unstable__"]),((t={})[q]=n,t))}];var N=function(e){return(e||[]).map(function(t,n){return j(e,n)[0].src})};var D=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 U=function(e,t){return e?"track":t?"playlist":"none"};var W=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))};var z=function(e){return e?e.displayText?e.displayText:e.title&&e.artist?e.artist+" - "+e.title:e.title||e.artist||e.album||"":""};var K=function(e){for(var t=0,n=1,r=e.split(":").slice(-3);r.length>0;)t+=n*parseInt(r.pop(),10),n*=60;return t};function G(){return(G=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 J(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){Q(e,t,n[t])})}return e}function Q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function X(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function Y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Z(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 $=["previoustrack","nexttrack","seekbackward","seekforward"],ee={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,awaitingPlayAfterTrackLoad:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,shouldRequestPlayOnNextUpdate:!1,mediaCannotPlay:!1,maxKnownTime:0};function te(e){var t=e.prevState,n=e.index,r=e.track,a=e.shouldPlay,i=void 0===a||a,s=e.shouldForceLoad,o=void 0!==s&&s,l=t.activeTrackIndex!==n,u=Boolean(l||o),c=r.startingTime||0,d=0;return r.duration&&(d="string"==typeof r.duration?K(r.duration):r.duration),{duration:d,activeTrackIndex:n,trackLoading:u,mediaCannotPlay:t.mediaCannotPlay&&!u,currentTime:W(c,0),loop:!u&&t.loop,shouldRequestPlayOnNextUpdate:Boolean(i),awaitingPlayAfterTrackLoad:Boolean(i),awaitingForceLoad:Boolean(o),maxKnownTime:u?0:t.maxKnownTime}}var ne=function(e){function t(t){var n;n=e.call(this,t)||this;var r=0,a=W(t.startingTrackIndex,0);I(t.playlist)&&t.playlist[a]&&(r=t.playlist[a].startingTime||0);var i=t.initialStateSnapshot,s={};if(i)try{s=function(e,t){var n=B.slice(e[H]||0).reduce(function(e,t){return t(e)},e)[q],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={};I(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}(i,t)}catch(e){Object(f.b)(e),Object(f.b)("Loading Cassette state from snapshot failed."),Object(f.b)("Failed snapshot:\n"+JSON.stringify(i,null,2))}return n.state=J({},ee,{activeTrackIndex:a,trackLoading:I(t.playlist),currentTime:W(r,0),volume:W(t.defaultVolume,0,1),muted:t.defaultMuted,loop:"track"===t.defaultRepeatStrategy,cycle:"playlist"===t.defaultRepeatStrategy,shuffle:t.defaultShuffle,playbackRate:t.defaultPlaybackRate,setVolumeInProgress:!1,shouldRequestPlayOnNextUpdate:t.autoplay&&I(t.playlist),awaitingForceLoad:!1,__playlist__:t.playlist},s),n.lastStableVolume=n.state.volume,n.shuffler=new R(N(t.playlist),{allowBackShuffle:t.allowBackShuffle}),n.media=null,n.videoHostElementList=[],n.videoHostOccupiedCallbacks=new Map,n.videoHostVacatedCallbacks=new Map,n.onTrackPlaybackFailure=n.onTrackPlaybackFailure.bind(Y(Y(n))),n.togglePause=n.togglePause.bind(Y(Y(n))),n.selectTrackIndex=n.selectTrackIndex.bind(Y(Y(n))),n.forwardSkip=n.forwardSkip.bind(Y(Y(n))),n.backSkip=n.backSkip.bind(Y(Y(n))),n.seekPreview=n.seekPreview.bind(Y(Y(n))),n.seekComplete=n.seekComplete.bind(Y(Y(n))),n.setVolume=n.setVolume.bind(Y(Y(n))),n.setVolumeComplete=n.setVolumeComplete.bind(Y(Y(n))),n.toggleMuted=n.toggleMuted.bind(Y(Y(n))),n.toggleShuffle=n.toggleShuffle.bind(Y(Y(n))),n.setRepeatStrategy=n.setRepeatStrategy.bind(Y(Y(n))),n.setPlaybackRate=n.setPlaybackRate.bind(Y(Y(n))),n.registerVideoHostElement=n.registerVideoHostElement.bind(Y(Y(n))),n.renderVideoIntoHostElement=n.renderVideoIntoHostElement.bind(Y(Y(n))),n.unregisterVideoHostElement=n.unregisterVideoHostElement.bind(Y(Y(n))),n.updateVideoHostElement=n.updateVideoHostElement.bind(Y(Y(n))),n.handleMediaPlay=n.handleMediaPlay.bind(Y(Y(n))),n.handleMediaPause=n.handleMediaPause.bind(Y(Y(n))),n.handleMediaSrcrequest=n.handleMediaSrcrequest.bind(Y(Y(n))),n.handleMediaEnded=n.handleMediaEnded.bind(Y(Y(n))),n.handleMediaEmptied=n.handleMediaEmptied.bind(Y(Y(n))),n.handleMediaStalled=n.handleMediaStalled.bind(Y(Y(n))),n.handleMediaCanplaythrough=n.handleMediaCanplaythrough.bind(Y(Y(n))),n.handleMediaCanplay=n.handleMediaCanplay.bind(Y(Y(n))),n.handleMediaTimeupdate=n.handleMediaTimeupdate.bind(Y(Y(n))),n.handleMediaLoadeddata=n.handleMediaLoadeddata.bind(Y(Y(n))),n.handleMediaVolumechange=n.handleMediaVolumechange.bind(Y(Y(n))),n.handleMediaDurationchange=n.handleMediaDurationchange.bind(Y(Y(n))),n.handleMediaProgress=n.handleMediaProgress.bind(Y(Y(n))),n.handleMediaLoopchange=n.handleMediaLoopchange.bind(Y(Y(n))),n.handleMediaRatechange=n.handleMediaRatechange.bind(Y(Y(n))),n}X(t,e);var n=t.prototype;return n.componentDidMount=function(){var e=this,t=this.media=_(this.props.createMediaElement()),n=this.props,r=n.defaultPlaybackRate,a=n.crossOrigin,i=n.playlist,s=n.autoplayDelayInSeconds,o=n.mediaElementRef,l=n.getPosterImageForTrack,u=n.getMediaTitleAttributeForTrack,c=n.onActiveTrackUpdate,d=this.state,h=d.volume,p=d.muted,f=d.playbackRate,m=d.loop,v=d.activeTrackIndex,y=d.shouldRequestPlayOnNextUpdate;t.defaultPlaybackRate=r,a&&(t.crossOrigin=a),t.volume=h,t.muted=p,t.playbackRate=f,t.loop=m,t.setAttribute("playsinline",""),t.setAttribute("webkit-playsinline",""),t.setAttribute("preload","metadata"),t.setAttribute("poster",l(i[v])),t.setAttribute("title",u(i[v])),t.addEventListener("play",this.handleMediaPlay),t.addEventListener("pause",this.handleMediaPause),t.addEventListener("ended",this.handleMediaEnded),t.addEventListener("stalled",this.handleMediaStalled),t.addEventListener("emptied",this.handleMediaEmptied),t.addEventListener("canplay",this.handleMediaCanplay),t.addEventListener("canplaythrough",this.handleMediaCanplaythrough),t.addEventListener("timeupdate",this.handleMediaTimeupdate),t.addEventListener("loadeddata",this.handleMediaLoadeddata),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),this.setMediaElementSources(),this.mediaContainer.appendChild(t),y&&(this.setState({shouldRequestPlayOnNextUpdate:!1}),this.delayTimeout=setTimeout(function(){e.togglePause(!1)},1e3*s)),o&&o(t),c&&c(i[v],v)},t.getDerivedStateFromProps=function(e,t){var n=e.playlist;if(n===t.__playlist__)return null;var r={__playlist__:n};if(!I(n))return J({},ee,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-1!==s?J({},r,{activeTrackIndex:s}):J({},r,te({prevState:t,track:n[0],index:0,shouldPlay:!1,shouldForceLoad:!0}),{mediaCannotPlay:!1,awaitingPlayAfterTrackLoad:!1})},n.componentDidUpdate=function(e,t){var n=this;this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(N(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)&&(this.setMediaElementSources(),this.media.setAttribute("poster",this.props.getPosterImageForTrack(s)),this.media.setAttribute("title",this.props.getMediaTitleAttributeForTrack(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.shouldRequestPlayOnNextUpdate&&(this.setState({shouldRequestPlayOnNextUpdate:!1}),setTimeout(function(){n.togglePause(!1)})),clearTimeout(this.snapshotUpdateTimeout),this.snapshotUpdateTimeout=setTimeout(function(){n.props.onStateSnapshot&&n.props.onStateSnapshot(function(e){var t,n=e.paused,r=e.currentTime,a=e.activeTrackIndex,i=e.volume,s=e.muted,o=e.loop,l=e.cycle,u=e.shuffle,c=e.playbackRate,d=e.duration,h=e.__playlist__;return(t={})[H]=B.length,t[q]={paused:n,currentTime:d===1/0?0:r,activeTrackIndex:a,volume:i,muted:s,loop:o,cycle:l,shuffle:u,playbackRate:c,activeTrackSrc:I(h)?j(h,a)[0].src:null},t}(n.state))},100)},n.componentWillUnmount=function(){var e=this.media;if(e){e.removeEventListener("play",this.handleMediaPlay),e.removeEventListener("pause",this.handleMediaPause),e.removeEventListener("ended",this.handleMediaEnded),e.removeEventListener("stalled",this.handleMediaStalled),e.removeEventListener("emptied",this.handleMediaEmptied),e.removeEventListener("canplaythrough",this.handleMediaCanplaythrough),e.removeEventListener("canplay",this.handleMediaCanplay),e.removeEventListener("timeupdate",this.handleMediaTimeupdate),e.removeEventListener("loadeddata",this.handleMediaLoadeddata),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);var t=e.querySelectorAll("source"),n=Array.isArray(t),r=0;for(t=n?t:t[Symbol.iterator]();;){var a;if(n){if(r>=t.length)break;a=t[r++]}else{if((r=t.next()).done)break;a=r.value}a.removeEventListener("error",this.onTrackPlaybackFailure)}}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]),$.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($[t],e)}))},n.setMediaElementSources=function(){for(var e,t=this.props.playlist;e=this.media.firstChild;)this.media.removeChild(e);if(I(t)){var n=j(t,this.state.activeTrackIndex),r=Array.isArray(n),a=0;for(n=r?n:n[Symbol.iterator]();;){var i;if(r){if(a>=n.length)break;i=n[a++]}else{if((a=n.next()).done)break;i=a.value}var s=i,o=document.createElement("source");o.src=s.src,s.type&&(o.type=s.type),o.addEventListener("error",this.onTrackPlaybackFailure),this.media.appendChild(o)}}this.media.load()},n.onTrackPlaybackFailure=function(e){this.setState({mediaCannotPlay:!0}),this.props.onTrackPlaybackFailure&&this.props.onTrackPlaybackFailure(this.props.playlist[this.state.activeTrackIndex],this.state.activeTrackIndex,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&&!1===e.awaitingPlayAfterTrackLoad?null:{paused:!1,awaitingPlayAfterTrackLoad:!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(I(t)){var r=this.state,a=r.cycle,i=r.activeTrackIndex;!a&&i+1>=t.length?n&&this.goToTrack({index:0,track:t[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.handleMediaEmptied=function(){this.setState(function(e){return!0===e.paused?null:{paused:!0}})},n.handleMediaCanplay=function(){this.setState(function(e){return!1===e.trackLoading?null:{trackLoading:!1}})},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,r=this.props,a=r.onTimeUpdate,i=r.playlist,s=this.state.activeTrackIndex;this.state.trackLoading?this.media.currentTime=this.state.currentTime:(this.setState(function(e){return{currentTime:t,playedRanges:D(n),maxKnownTime:Math.max(e.maxKnownTime,t)}}),a&&a(t,i[s],s))},n.handleMediaLoadeddata=function(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime)},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,t=this.media.duration,n=this.props.playlist[this.state.activeTrackIndex];if(t===1/0)if(n.isUnboundedStream||n===this.activeTrackAtLastDurationChange)this.setState({duration:t,currentTime:0}),this.media.currentTime=0;else{var r=this.state.paused;this.media.load(),r||setTimeout(function(){e.togglePause(!1)})}else this.setState({duration:t});this.activeTrackAtLastDurationChange=n},n.handleMediaProgress=function(){this.setState({bufferedRanges:D(this.media.buffered),seekableRanges:D(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(Z)}catch(e){Z(e)}},n.goToTrack=function(e){clearTimeout(this.delayTimeout),this.setState(function(t){return te(J({prevState:t},e))})},n.selectTrackIndex=function(e){var t=this.props.playlist;I(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,track:t[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(!I(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,track:t[l],shouldForceLoad:!0})}},n.forwardSkip=function(){var e,t=this.props.playlist,n=this.state,r=n.cycle,a=n.activeTrackIndex,i=n.shuffle;!I(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,track:t[e],shouldForceLoad:!0}))},n.seekPreview=function(e){if(I(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 J({},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 J({},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(J({},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=W(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,awaitingPlayResume:t.awaitingResumeOnSeekComplete||t.awaitingPlayAfterTrackLoad,duration:t.duration===1/0?t.maxKnownTime: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,mediaCannotPlay:t.mediaCannotPlay,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:U(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);ne.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,createMediaElement:function(){return document.createElement("video")},gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,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:""},getMediaTitleAttributeForTrack:z};var re=function(e){function t(){return e.apply(this,arguments)||this}X(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.groupContext.registerMediaElement(this.mediaElement)},n.componentWillUnmount=function(){this.mediaElement&&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(ne,G({},n.groupProps,s,{mediaElementRef:function(t){a&&a(t),e.mediaElement=t}}))},t}(a.Component);var ae=function(e){return i.a.createElement(c.Consumer,null,function(t){return t?Object(a.createElement)(re,{groupContext:t,props:e}):Object(a.createElement)(ne,e)})};var ie=function(e){for(var t=[],n=e._reactInternalFiber;n=n._debugOwner;)n.type.name&&t.push(n.type.name);return t};var se=function(e){function t(){return e.apply(this,arguments)||this}return function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(t,e),t.prototype.render=function(){var e=this.props,t=e.children,n=e.filterList;if(!n){if(!this.warnedAboutFilterList){var r="\n Please pass the filterList prop to PlayerContextConsumer in order\n to avoid unnecessarily frequent re-renders, e.g.\n\n const filterList = ['paused', 'onTogglePause'];\n // ...\n <PlayerContextConsumer filterList={filterList}>\n {({ paused, onTogglePause }) => {\n return <div>{/* ... */}</div>;\n }}\n </PlayerContextConsumer>\n ",a=ie(this),s=Array.isArray(a),o=0;for(a=s?a:a[Symbol.iterator]();;){var l;if(s){if(o>=a.length)break;l=a[o++]}else{if((o=a.next()).done)break;l=o.value}r+="\n Rendered by "+l}Object(f.b)(r),this.warnedAboutFilterList=!0}return i.a.createElement(u.Consumer,null,t)}var c=u.__cassetteGetObservedBits(n);return i.a.createElement(u.Consumer,{unstable_observedBits:c},function(e){var r={},a=n,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;e.hasOwnProperty(l)&&(r[l]=e[l])}return t(r)})},t}(a.PureComponent);function oe(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){le(e,t,n[t])})}return e}function le(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ue(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var ce=function(e){function t(t){var n;return(n=e.call(this,t)||this).registerMediaElement=n.registerMediaElement.bind(ue(ue(n))),n.unregisterMediaElement=n.unregisterMediaElement.bind(ue(ue(n))),n.enforceOneMediaSourceOnly=n.enforceOneMediaSourceOnly.bind(ue(ue(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?oe({},t,{groupProps:oe({},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),de=Object(l.a)({displayName:"FullscreenContext",defaultValue:{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.")}},keysWillUpdate:["fullscreen"]});function he(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var pe={width:"100%",height:"100%"},fe=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={fullscreen:!1},n.requestFullscreen=n.requestFullscreen.bind(he(he(n))),n.requestExitFullscreen=n.requestExitFullscreen.bind(he(he(n))),n.handleFullscreenChange=n.handleFullscreenChange.bind(he(he(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?pe:void 0},i.a.createElement(de.Provider,{value:t},"function"==typeof this.props.children?this.props.children(t):this.props.children))},t}(a.PureComponent);fe.defaultProps={fullscreenEnabled:!0};var me=fe;function ve(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ye=function(e,t){var n={},r=e.displayName||e.name,s=u.__cassetteGetObservedBits(t);function o(o){return i.a.createElement(de.Consumer,null,function(l){return i.a.createElement(u.Consumer,{unstable_observedBits:s},function(i){var s=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){ve(e,t,n[t])})}return e}({},o),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)?s[p]=i[p]:l.hasOwnProperty(p)?s[p]=l[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,s)})})}return r&&(o.displayName="PlayerContextFilter("+r+")"),o};n.d(t,"FullscreenContextConsumer",function(){return ge}),n.d(t,"donotuse_PlayerContext",function(){return be}),n.d(t,"donotuse_FullscreenContext",function(){return ke}),n.d(t,"PlayerContextProvider",function(){return ae}),n.d(t,"PlayerContextConsumer",function(){return se}),n.d(t,"PlayerContextGroup",function(){return ce}),n.d(t,"FullscreenContextProvider",function(){return me}),n.d(t,"playerContextFilter",function(){return ye}),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 W}),n.d(t,"isPlaylistValid",function(){return I}),n.d(t,"getDisplayText",function(){return z}),n.d(t,"repeatStrategyOptions",function(){return p});var ge=de.Consumer,be=u,ke=de}])}); | ||
//# 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){let t=e.displayName,n=e.defaultValue,o=void 0===n?null:n,l=e.keysWillUpdate;const c=r.__cassette_contexts__[t];if(c)return c.packageVersion!==a&&Object(i.b)(`Warning: multiple versions of ${t} from the @cassette/core`+` package have been loaded. v${a} will be ignored and`+` v${c.packageVersion} will be used instead.`),c;const d={};let u=0;for(const e of l)d[e]=1<<u++;const h=Object(s.createContext)(o,function(e,t){let n=0;for(const s of l)e[s]!==t[s]&&(n|=d[s]);return n});return h.__cassetteGetObservedBits=(e=>{let t=0;for(const n of e)t|=d[n];return t}),h.displayName=t,h.packageVersion=a,r.__cassette_contexts__[t]=h,h}}).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.28",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:"695c42335837e0ab319e02902b0f1b36364b1399"}},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 T}),n.d(s,"progressDirection",function(){return P}),n.d(s,"seekMode",function(){return x}),n.d(s,"aspectRatio",function(){return w});var i=n(0),a=n.n(i),r=n(4),o=n.n(r),l=n(3),c=Object(l.a)({displayName:"PlayerContext",keysWillUpdate:["playlist","activeTrackIndex","trackLoading","paused","currentTime","seekPreviewTime","seekInProgress","awaitingPlayResume","duration","bufferedRanges","playedRanges","seekableRanges","volume","muted","shuffle","stalled","playbackRate","setVolumeInProgress","repeatStrategy","mediaCannotPlay"]}),d=Object(l.a)({displayName:"GroupContext",keysWillUpdate:["groupProps"]}),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"]),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}),T=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),duration:h.a.oneOfType([h.a.string,h.a.number]),startingTime:h.a.number,isUnboundedStream:h.a.bool,meta:h.a.object}),P=h.a.oneOf(["left","right","up","down"]),x=h.a.oneOf(["paused","immediate","onrelease"]);function w(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(e){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 _(e,t,n,s){let i=s;for(let s=0;s<e;s++){if(!t.length)throw _(s,n,t,i),`Moving ${e} places was not possible!`;n.push(i),i=t.pop()}return i}function L(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 _(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=_(t.length,t,n,r))&&n.push(r),a}}}var I=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=L(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem}findPreviousItem(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=L(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 R=function(e){return Boolean(e&&e.length)};const F=[{src:""}];var j=function(e,t){if(!R(e))return F;const n=e[t],s=n.sources,i=n.url;return s?s.length?s:F:[{src:i}]};var V=function(e,t){return o()(e,e=>e.sources?-1!==o()(e.sources,e=>e.src===t):e.url&&t===e.url)};function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const H="__highly_unstable_snapshot_internals_which_will_break_your_app_if_you_use_them_directly__",A="__cassette_snapshot_version__",B=[e=>{const t=e.__unstable__;return 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){q(e,t,n[t])})}return e}({},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}(e,["__unstable__"]),{[H]:t})}];var N=function(e){return(e||[]).map((t,n)=>j(e,n)[0].src)};var D=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 U=function(e,t){return e?"track":t?"playlist":"none"};var $=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))};var W=function(e){return e?e.displayText?e.displayText:e.title&&e.artist?`${e.artist} - ${e.title}`:e.title||e.artist||e.album||"":""};var z=function(e){let t=0,n=1;const s=e.split(":").slice(-3);for(;s.length>0;)t+=n*parseInt(s.pop(),10),n*=60;return t};function K(){return(K=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 G(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){J(e,t,n[t])})}return e}function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(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 X=["previoustrack","nexttrack","seekbackward","seekforward"],Y={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,awaitingPlayAfterTrackLoad:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,shouldRequestPlayOnNextUpdate:!1,mediaCannotPlay:!1,maxKnownTime:0};function Z(e){let t=e.prevState,n=e.index,s=e.track,i=e.shouldPlay,a=void 0===i||i,r=e.shouldForceLoad,o=void 0!==r&&r;const l=t.activeTrackIndex!==n,c=Boolean(l||o),d=s.startingTime||0;let u=0;return s.duration&&(u="string"==typeof s.duration?z(s.duration):s.duration),{duration:u,activeTrackIndex:n,trackLoading:c,mediaCannotPlay:t.mediaCannotPlay&&!c,currentTime:$(d,0),loop:!c&&t.loop,shouldRequestPlayOnNextUpdate:Boolean(a),awaitingPlayAfterTrackLoad:Boolean(a),awaitingForceLoad:Boolean(o),maxKnownTime:c?0:t.maxKnownTime}}class ee extends i.Component{constructor(e){super(e);let t=0;const n=$(e.startingTrackIndex,0);R(e.playlist)&&e.playlist[n]&&(t=e.playlist[n].startingTime||0);const s=e.initialStateSnapshot;let i={};if(s)try{i=function(e,t){const n=B.slice(e[A]||0).reduce((e,t)=>t(e),e)[H],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={};R(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]&&j(t.playlist,a)[0].src;if(e&&h===e)p.activeTrackIndex=a,m=!0;else{const e=V(t.playlist,h);-1!==e&&(p.activeTrackIndex=e,m=!0)}}return m&&"number"==typeof i&&i>=0&&(p.currentTime=i),p}(s,e)}catch(e){Object(m.b)(e),Object(m.b)("Loading Cassette state from snapshot failed."),Object(m.b)(`Failed snapshot:\n${JSON.stringify(s,null,2)}`)}this.state=G({},Y,{activeTrackIndex:n,trackLoading:R(e.playlist),currentTime:$(t,0),volume:$(e.defaultVolume,0,1),muted:e.defaultMuted,loop:"track"===e.defaultRepeatStrategy,cycle:"playlist"===e.defaultRepeatStrategy,shuffle:e.defaultShuffle,playbackRate:e.defaultPlaybackRate,setVolumeInProgress:!1,shouldRequestPlayOnNextUpdate:e.autoplay&&R(e.playlist),awaitingForceLoad:!1,__playlist__:e.playlist},i),this.lastStableVolume=this.state.volume,this.shuffler=new I(N(e.playlist),{allowBackShuffle:e.allowBackShuffle}),this.media=null,this.videoHostElementList=[],this.videoHostOccupiedCallbacks=new Map,this.videoHostVacatedCallbacks=new Map,this.onTrackPlaybackFailure=this.onTrackPlaybackFailure.bind(this),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.handleMediaEmptied=this.handleMediaEmptied.bind(this),this.handleMediaStalled=this.handleMediaStalled.bind(this),this.handleMediaCanplaythrough=this.handleMediaCanplaythrough.bind(this),this.handleMediaCanplay=this.handleMediaCanplay.bind(this),this.handleMediaTimeupdate=this.handleMediaTimeupdate.bind(this),this.handleMediaLoadeddata=this.handleMediaLoadeddata.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(this.props.createMediaElement()),t=this.props,n=t.defaultPlaybackRate,s=t.crossOrigin,i=t.playlist,a=t.autoplayDelayInSeconds,r=t.mediaElementRef,o=t.getPosterImageForTrack,l=t.getMediaTitleAttributeForTrack,c=t.onActiveTrackUpdate,d=this.state,u=d.volume,h=d.muted,p=d.playbackRate,m=d.loop,f=d.activeTrackIndex,g=d.shouldRequestPlayOnNextUpdate;e.defaultPlaybackRate=n,s&&(e.crossOrigin=s),e.volume=u,e.muted=h,e.playbackRate=p,e.loop=m,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline",""),e.setAttribute("preload","metadata"),e.setAttribute("poster",o(i[f])),e.setAttribute("title",l(i[f])),e.addEventListener("play",this.handleMediaPlay),e.addEventListener("pause",this.handleMediaPause),e.addEventListener("ended",this.handleMediaEnded),e.addEventListener("stalled",this.handleMediaStalled),e.addEventListener("emptied",this.handleMediaEmptied),e.addEventListener("canplay",this.handleMediaCanplay),e.addEventListener("canplaythrough",this.handleMediaCanplaythrough),e.addEventListener("timeupdate",this.handleMediaTimeupdate),e.addEventListener("loadeddata",this.handleMediaLoadeddata),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),this.setMediaElementSources(),this.mediaContainer.appendChild(e),g&&(this.setState({shouldRequestPlayOnNextUpdate:!1}),this.delayTimeout=setTimeout(()=>{this.togglePause(!1)},1e3*a)),r&&r(e),c&&c(i[f],f)}static getDerivedStateFromProps(e,t){const n=e.playlist;if(n===t.__playlist__)return null;const s={__playlist__:n};if(!R(n))return G({},Y,s,{activeTrackIndex:0,trackLoading:!1});const i=j(t.__playlist__,t.activeTrackIndex);if(n[t.activeTrackIndex]){const e=j(n,t.activeTrackIndex);if(i[0].src===e[0].src)return s}const a=V(n,i[0].src);return-1!==a?G({},s,{activeTrackIndex:a}):G({},s,Z({prevState:t,track:n[0],index:0,shouldPlay:!1,shouldForceLoad:!0}),{mediaCannotPlay:!1,awaitingPlayAfterTrackLoad:!1})}componentDidUpdate(e,t){this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(N(this.props.playlist)),this.shuffler.setOptions({allowBackShuffle:this.props.allowBackShuffle});const n=j(e.playlist,t.activeTrackIndex),s=j(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)&&(this.setMediaElementSources(),this.media.setAttribute("poster",this.props.getPosterImageForTrack(a)),this.media.setAttribute("title",this.props.getMediaTitleAttributeForTrack(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.shouldRequestPlayOnNextUpdate&&(this.setState({shouldRequestPlayOnNextUpdate:!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.duration,u=e.__playlist__;return{[A]:B.length,[H]:{paused:t,currentTime:d===1/0?0:n,activeTrackIndex:s,volume:i,muted:a,loop:r,cycle:o,shuffle:l,playbackRate:c,activeTrackSrc:R(u)?j(u,s)[0].src:null}}}(this.state))},100)}componentWillUnmount(){const e=this.media;if(e){e.removeEventListener("play",this.handleMediaPlay),e.removeEventListener("pause",this.handleMediaPause),e.removeEventListener("ended",this.handleMediaEnded),e.removeEventListener("stalled",this.handleMediaStalled),e.removeEventListener("emptied",this.handleMediaEmptied),e.removeEventListener("canplaythrough",this.handleMediaCanplaythrough),e.removeEventListener("canplay",this.handleMediaCanplay),e.removeEventListener("timeupdate",this.handleMediaTimeupdate),e.removeEventListener("loadeddata",this.handleMediaLoadeddata),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);const t=e.querySelectorAll("source");for(const e of t)e.removeEventListener("error",this.onTrackPlaybackFailure)}clearTimeout(this.gapLengthTimeout),clearTimeout(this.delayTimeout)}stealMediaSession(){window.MediaSession&&navigator.mediaSession instanceof MediaSession&&(navigator.mediaSession.metadata=new MediaMetadata(this.props.playlist[this.state.activeTrackIndex]),X.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(X[t],e)}))}setMediaElementSources(){const e=this.props.playlist;let t;for(;t=this.media.firstChild;)this.media.removeChild(t);if(R(e)){const t=j(e,this.state.activeTrackIndex);for(const e of t){const t=document.createElement("source");t.src=e.src,e.type&&(t.type=e.type),t.addEventListener("error",this.onTrackPlaybackFailure),this.media.appendChild(t)}}this.media.load()}onTrackPlaybackFailure(e){this.setState({mediaCannotPlay:!0}),this.props.onTrackPlaybackFailure&&this.props.onTrackPlaybackFailure(this.props.playlist[this.state.activeTrackIndex],this.state.activeTrackIndex,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&&!1===e.awaitingPlayAfterTrackLoad?null:{paused:!1,awaitingPlayAfterTrackLoad:!1}),this.stealMediaSession()}handleMediaPause(){this.setState(e=>!0===e.paused?null:{paused:!0})}handleMediaSrcrequest(e){const t=this.props.playlist,n=j(t,this.state.activeTrackIndex);if(-1!==o()(n,t=>t.src===e.srcRequested))return;const s=V(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(!R(t))return;const s=this.state,i=s.cycle,a=s.activeTrackIndex;!i&&a+1>=t.length?n&&this.goToTrack({index:0,track:t[0],shouldPlay:!1,shouldForceLoad:!0}):this.gapLengthTimeout=setTimeout(this.forwardSkip,1e3*this.props.gapLengthInSeconds)}handleMediaStalled(){this.setState(e=>!0===e.stalled?null:{stalled:!0})}handleMediaEmptied(){this.setState(e=>!0===e.paused?null:{paused:!0})}handleMediaCanplay(){this.setState(e=>!1===e.trackLoading?null:{trackLoading:!1})}handleMediaCanplaythrough(){this.setState(e=>!1===e.stalled?null:{stalled:!1})}handleMediaTimeupdate(){const e=this.media,t=e.currentTime,n=e.played,s=this.props,i=s.onTimeUpdate,a=s.playlist,r=this.state.activeTrackIndex;this.state.trackLoading?this.media.currentTime=this.state.currentTime:(this.setState(e=>({currentTime:t,playedRanges:D(n),maxKnownTime:Math.max(e.maxKnownTime,t)})),i&&i(t,a[r],r))}handleMediaLoadeddata(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime)}handleMediaVolumechange(){const e=this.media,t=e.volume,n=e.muted;this.setState({volume:t,muted:n})}handleMediaDurationchange(){const e=this.media.duration,t=this.props.playlist[this.state.activeTrackIndex];if(e===1/0)if(t.isUnboundedStream||t===this.activeTrackAtLastDurationChange)this.setState({duration:e,currentTime:0}),this.media.currentTime=0;else{const e=this.state.paused;this.media.load(),e||setTimeout(()=>{this.togglePause(!1)})}else this.setState({duration:e});this.activeTrackAtLastDurationChange=t}handleMediaProgress(){this.setState({bufferedRanges:D(this.media.buffered),seekableRanges:D(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(Q)}catch(e){Q(e)}}goToTrack(e){clearTimeout(this.delayTimeout),this.setState(t=>Z(G({prevState:t},e)))}selectTrackIndex(e){const t=this.props.playlist;R(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,track:t[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(!R(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=V(t,e)}else(l=r-1)<0&&(l=t.length-1);this.goToTrack({index:l,track:t[l],shouldForceLoad:!0})}forwardSkip(){const e=this.props.playlist,t=this.state,n=t.cycle,s=t.activeTrackIndex,i=t.shuffle;if(!R(e)||!n&&s+1>=e.length)return;let a;i?a=V(e,this.shuffler.findNextItem(s)):(a=s+1)>=e.length&&(a=0),this.goToTrack({index:a,track:e[a],shouldForceLoad:!0})}seekPreview(e){if(!R(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 G({},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 G({},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(G({},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=$(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,awaitingPlayResume:t.awaitingResumeOnSeekComplete||t.awaitingPlayAfterTrackLoad,duration:t.duration===1/0?t.maxKnownTime: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,mediaCannotPlay:t.mediaCannotPlay,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:U(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))}}ee.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,createMediaElement:()=>document.createElement("video"),gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,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:"",getMediaTitleAttributeForTrack:W};class te extends i.Component{componentDidMount(){this.props.groupContext.registerMediaElement(this.mediaElement)}componentWillUnmount(){this.mediaElement&&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(ee,K({},t.groupProps,i,{mediaElementRef:e=>{s&&s(e),this.mediaElement=e}}))}}var ne=function(e){return a.a.createElement(d.Consumer,null,t=>t?Object(i.createElement)(te,{groupContext:t,props:e}):Object(i.createElement)(ee,e))};var se=function(e){const t=[];let n=e._reactInternalFiber;for(;n=n._debugOwner;)n.type.name&&t.push(n.type.name);return t};var ie=class extends i.PureComponent{render(){const e=this.props,t=e.children,n=e.filterList;if(!n){if(!this.warnedAboutFilterList){let e="\n Please pass the filterList prop to PlayerContextConsumer in order\n to avoid unnecessarily frequent re-renders, e.g.\n\n const filterList = ['paused', 'onTogglePause'];\n // ...\n <PlayerContextConsumer filterList={filterList}>\n {({ paused, onTogglePause }) => {\n return <div>{/* ... */}</div>;\n }}\n </PlayerContextConsumer>\n ";for(const t of se(this))e+=`\n Rendered by ${t}`;Object(m.b)(e),this.warnedAboutFilterList=!0}return a.a.createElement(c.Consumer,null,t)}const s=c.__cassetteGetObservedBits(n);return a.a.createElement(c.Consumer,{unstable_observedBits:s},e=>{const s={};for(const t of n)e.hasOwnProperty(t)&&(s[t]=e[t]);return t(s)})}};function ae(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){re(e,t,n[t])})}return e}function re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var oe=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?ae({},e,{groupProps:ae({},e.groupProps,this.props)}):{groupProps:this.props,registerMediaElement:this.registerMediaElement,unregisterMediaElement:this.unregisterMediaElement};return a.a.createElement(d.Provider,{value:t},this.props.children)})}},le=Object(l.a)({displayName:"FullscreenContext",defaultValue:{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.")}},keysWillUpdate:["fullscreen"]});const ce={width:"100%",height:"100%"};class de 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?ce:void 0},a.a.createElement(le.Provider,{value:e},"function"==typeof this.props.children?this.props.children(e):this.props.children))}}de.defaultProps={fullscreenEnabled:!0};var ue=de;function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pe=function(e,t){const n={},s=e.displayName||e.name,r=c.__cassetteGetObservedBits(t);function o(o){return a.a.createElement(le.Consumer,null,l=>a.a.createElement(c.Consumer,{unstable_observedBits:r},a=>{const r=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){he(e,t,n[t])})}return e}({},o);for(const e of t)a.hasOwnProperty(e)?r[e]=a[e]:l.hasOwnProperty(e)?r[e]=l[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,r)}))}return s&&(o.displayName=`PlayerContextFilter(${s})`),o};n.d(t,"FullscreenContextConsumer",function(){return me}),n.d(t,"donotuse_PlayerContext",function(){return fe}),n.d(t,"donotuse_FullscreenContext",function(){return ge}),n.d(t,"PlayerContextProvider",function(){return ne}),n.d(t,"PlayerContextConsumer",function(){return ie}),n.d(t,"PlayerContextGroup",function(){return oe}),n.d(t,"FullscreenContextProvider",function(){return ue}),n.d(t,"playerContextFilter",function(){return pe}),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 $}),n.d(t,"isPlaylistValid",function(){return R}),n.d(t,"getDisplayText",function(){return W}),n.d(t,"repeatStrategyOptions",function(){return p});const me=le.Consumer,fe=c,ge=le}])}); | ||
!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){let t=e.displayName,n=e.defaultValue,o=void 0===n?null:n,l=e.keysWillUpdate;const c=r.__cassette_contexts__[t];if(c)return c.packageVersion!==a&&Object(i.b)(`Warning: multiple versions of ${t} from the @cassette/core`+` package have been loaded. v${a} will be ignored and`+` v${c.packageVersion} will be used instead.`),c;const d={};let u=0;for(const e of l)d[e]=1<<u++;const h=Object(s.createContext)(o,function(e,t){let n=0;for(const s of l)e[s]!==t[s]&&(n|=d[s]);return n});return h.__cassetteGetObservedBits=(e=>{let t=0;for(const n of e)t|=d[n];return t}),h.displayName=t,h.packageVersion=a,r.__cassette_contexts__[t]=h,h}}).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.29",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:"64bdc42d5dbc72c678331309e22f01fb997c5c8b"}},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 T}),n.d(s,"progressDirection",function(){return P}),n.d(s,"seekMode",function(){return x}),n.d(s,"aspectRatio",function(){return w});var i=n(0),a=n.n(i),r=n(4),o=n.n(r),l=n(3),c=Object(l.a)({displayName:"PlayerContext",keysWillUpdate:["playlist","activeTrackIndex","trackLoading","paused","currentTime","seekPreviewTime","seekInProgress","awaitingPlayResume","duration","bufferedRanges","playedRanges","seekableRanges","volume","muted","shuffle","stalled","playbackRate","setVolumeInProgress","repeatStrategy","mediaCannotPlay"]}),d=Object(l.a)({displayName:"GroupContext",keysWillUpdate:["groupProps"]}),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"]),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}),T=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),duration:h.a.oneOfType([h.a.string,h.a.number]),startingTime:h.a.number,isUnboundedStream:h.a.bool,meta:h.a.object}),P=h.a.oneOf(["left","right","up","down"]),x=h.a.oneOf(["paused","immediate","onrelease"]);function w(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(e){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 _(e,t,n,s){let i=s;for(let s=0;s<e;s++){if(!t.length)throw _(s,n,t,i),`Moving ${e} places was not possible!`;n.push(i),i=t.pop()}return i}function L(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 _(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=_(t.length,t,n,r))&&n.push(r),a}}}var I=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=L(this._list,this._forwardStack,this._backStack,this._currentItem,!0),this._currentItem}findPreviousItem(e){return void 0!==e&&this.setCurrentIndex(e),this._currentItem=L(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 R=function(e){return Boolean(e&&e.length)};const F=[{src:""}];var j=function(e,t){if(!R(e))return F;const n=e[t],s=n.sources,i=n.url;return s?s.length?s:F:[{src:i}]};var V=function(e,t){return o()(e,e=>e.sources?-1!==o()(e.sources,e=>e.src===t):e.url&&t===e.url)};function q(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const H="__highly_unstable_snapshot_internals_which_will_break_your_app_if_you_use_them_directly__",A="__cassette_snapshot_version__",B=[e=>{const t=e.__unstable__;return 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){q(e,t,n[t])})}return e}({},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}(e,["__unstable__"]),{[H]:t})}];var N=function(e){return(e||[]).map((t,n)=>j(e,n)[0].src)};var D=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 U=function(e,t){return e?"track":t?"playlist":"none"};var $=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))};var W=function(e){return e?e.displayText?e.displayText:e.title&&e.artist?`${e.artist} - ${e.title}`:e.title||e.artist||e.album||"":""};var z=function(e){let t=0,n=1;const s=e.split(":").slice(-3);for(;s.length>0;)t+=n*parseInt(s.pop(),10),n*=60;return t};function K(){return(K=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 G(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){J(e,t,n[t])})}return e}function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(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 X=["previoustrack","nexttrack","seekbackward","seekforward"],Y={paused:!0,currentTime:0,seekPreviewTime:0,seekInProgress:!1,awaitingResumeOnSeekComplete:!1,awaitingPlayAfterTrackLoad:!1,duration:0,bufferedRanges:[],playedRanges:[],seekableRanges:[],stalled:!1,shouldRequestPlayOnNextUpdate:!1,mediaCannotPlay:!1,maxKnownTime:0};function Z(e){let t=e.prevState,n=e.index,s=e.track,i=e.shouldPlay,a=void 0===i||i,r=e.shouldForceLoad,o=void 0!==r&&r;const l=t.activeTrackIndex!==n,c=Boolean(l||o),d=s.startingTime||0;let u=0;return s.duration&&(u="string"==typeof s.duration?z(s.duration):s.duration),{duration:u,activeTrackIndex:n,trackLoading:c,mediaCannotPlay:t.mediaCannotPlay&&!c,currentTime:$(d,0),loop:!c&&t.loop,shouldRequestPlayOnNextUpdate:Boolean(a),awaitingPlayAfterTrackLoad:Boolean(a),awaitingForceLoad:Boolean(o),maxKnownTime:c?0:t.maxKnownTime}}class ee extends i.Component{constructor(e){super(e);let t=0;const n=$(e.startingTrackIndex,0);R(e.playlist)&&e.playlist[n]&&(t=e.playlist[n].startingTime||0);const s=e.initialStateSnapshot;let i={};if(s)try{i=function(e,t){const n=B.slice(e[A]||0).reduce((e,t)=>t(e),e)[H],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={};R(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]&&j(t.playlist,a)[0].src;if(e&&h===e)p.activeTrackIndex=a,m=!0;else{const e=V(t.playlist,h);-1!==e&&(p.activeTrackIndex=e,m=!0)}}return m&&"number"==typeof i&&i>=0&&(p.currentTime=i),p}(s,e)}catch(e){Object(m.b)(e),Object(m.b)("Loading Cassette state from snapshot failed."),Object(m.b)(`Failed snapshot:\n${JSON.stringify(s,null,2)}`)}this.state=G({},Y,{activeTrackIndex:n,trackLoading:R(e.playlist),currentTime:$(t,0),volume:$(e.defaultVolume,0,1),muted:e.defaultMuted,loop:"track"===e.defaultRepeatStrategy,cycle:"playlist"===e.defaultRepeatStrategy,shuffle:e.defaultShuffle,playbackRate:e.defaultPlaybackRate,setVolumeInProgress:!1,shouldRequestPlayOnNextUpdate:e.autoplay&&R(e.playlist),awaitingForceLoad:!1,__playlist__:e.playlist},i),this.lastStableVolume=this.state.volume,this.shuffler=new I(N(e.playlist),{allowBackShuffle:e.allowBackShuffle}),this.media=null,this.videoHostElementList=[],this.videoHostOccupiedCallbacks=new Map,this.videoHostVacatedCallbacks=new Map,this.onTrackPlaybackFailure=this.onTrackPlaybackFailure.bind(this),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.handleMediaEmptied=this.handleMediaEmptied.bind(this),this.handleMediaStalled=this.handleMediaStalled.bind(this),this.handleMediaCanplaythrough=this.handleMediaCanplaythrough.bind(this),this.handleMediaCanplay=this.handleMediaCanplay.bind(this),this.handleMediaTimeupdate=this.handleMediaTimeupdate.bind(this),this.handleMediaLoadeddata=this.handleMediaLoadeddata.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(this.props.createMediaElement()),t=this.props,n=t.defaultPlaybackRate,s=t.crossOrigin,i=t.playlist,a=t.autoplayDelayInSeconds,r=t.mediaElementRef,o=t.getPosterImageForTrack,l=t.getMediaTitleAttributeForTrack,c=t.onActiveTrackUpdate,d=this.state,u=d.volume,h=d.muted,p=d.playbackRate,m=d.loop,f=d.activeTrackIndex,g=d.shouldRequestPlayOnNextUpdate;e.defaultPlaybackRate=n,s&&(e.crossOrigin=s),e.volume=u,e.muted=h,e.playbackRate=p,e.loop=m,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline",""),e.setAttribute("preload","metadata"),e.setAttribute("poster",o(i[f])),e.setAttribute("title",l(i[f])),e.addEventListener("play",this.handleMediaPlay),e.addEventListener("pause",this.handleMediaPause),e.addEventListener("ended",this.handleMediaEnded),e.addEventListener("stalled",this.handleMediaStalled),e.addEventListener("emptied",this.handleMediaEmptied),e.addEventListener("canplay",this.handleMediaCanplay),e.addEventListener("canplaythrough",this.handleMediaCanplaythrough),e.addEventListener("timeupdate",this.handleMediaTimeupdate),e.addEventListener("loadeddata",this.handleMediaLoadeddata),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),this.setMediaElementSources(),this.mediaContainer.appendChild(e),g&&(this.setState({shouldRequestPlayOnNextUpdate:!1}),this.delayTimeout=setTimeout(()=>{this.togglePause(!1)},1e3*a)),r&&r(e),c&&c(i[f],f)}static getDerivedStateFromProps(e,t){const n=e.playlist;if(n===t.__playlist__)return null;const s={__playlist__:n};if(!R(n))return G({},Y,s,{activeTrackIndex:0,trackLoading:!1});const i=j(t.__playlist__,t.activeTrackIndex);if(n[t.activeTrackIndex]){const e=j(n,t.activeTrackIndex);if(i[0].src===e[0].src)return s}const a=V(n,i[0].src);return-1!==a?G({},s,{activeTrackIndex:a}):G({},s,Z({prevState:t,track:n[0],index:0,shouldPlay:!1,shouldForceLoad:!0}),{mediaCannotPlay:!1,awaitingPlayAfterTrackLoad:!1})}componentDidUpdate(e,t){this.media.defaultPlaybackRate=this.props.defaultPlaybackRate,this.media.crossOrigin=this.props.crossOrigin,this.shuffler.setList(N(this.props.playlist)),this.shuffler.setOptions({allowBackShuffle:this.props.allowBackShuffle});const n=j(e.playlist,t.activeTrackIndex),s=j(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)&&(this.setMediaElementSources(),this.media.setAttribute("poster",this.props.getPosterImageForTrack(a)),this.media.setAttribute("title",this.props.getMediaTitleAttributeForTrack(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.shouldRequestPlayOnNextUpdate&&(this.setState({shouldRequestPlayOnNextUpdate:!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.duration,u=e.__playlist__;return{[A]:B.length,[H]:{paused:t,currentTime:d===1/0?0:n,activeTrackIndex:s,volume:i,muted:a,loop:r,cycle:o,shuffle:l,playbackRate:c,activeTrackSrc:R(u)?j(u,s)[0].src:null}}}(this.state))},100)}componentWillUnmount(){const e=this.media;if(e){e.removeEventListener("play",this.handleMediaPlay),e.removeEventListener("pause",this.handleMediaPause),e.removeEventListener("ended",this.handleMediaEnded),e.removeEventListener("stalled",this.handleMediaStalled),e.removeEventListener("emptied",this.handleMediaEmptied),e.removeEventListener("canplaythrough",this.handleMediaCanplaythrough),e.removeEventListener("canplay",this.handleMediaCanplay),e.removeEventListener("timeupdate",this.handleMediaTimeupdate),e.removeEventListener("loadeddata",this.handleMediaLoadeddata),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);const t=e.querySelectorAll("source");for(const e of t)e.removeEventListener("error",this.onTrackPlaybackFailure)}clearTimeout(this.gapLengthTimeout),clearTimeout(this.delayTimeout)}stealMediaSession(){window.MediaSession&&navigator.mediaSession instanceof MediaSession&&(navigator.mediaSession.metadata=new MediaMetadata(this.props.playlist[this.state.activeTrackIndex]),X.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(X[t],e)}))}setMediaElementSources(){const e=this.props.playlist;let t;for(;t=this.media.firstChild;)this.media.removeChild(t);if(R(e)){const t=j(e,this.state.activeTrackIndex);for(const e of t){const t=document.createElement("source");t.src=e.src,e.type&&(t.type=e.type),t.addEventListener("error",this.onTrackPlaybackFailure),this.media.appendChild(t)}}this.media.load()}onTrackPlaybackFailure(e){this.setState({mediaCannotPlay:!0}),this.props.onTrackPlaybackFailure&&this.props.onTrackPlaybackFailure(this.props.playlist[this.state.activeTrackIndex],this.state.activeTrackIndex,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&&!1===e.awaitingPlayAfterTrackLoad?null:{paused:!1,awaitingPlayAfterTrackLoad:!1}),this.stealMediaSession()}handleMediaPause(){this.setState(e=>!0===e.paused?null:{paused:!0})}handleMediaSrcrequest(e){const t=this.props.playlist,n=j(t,this.state.activeTrackIndex);if(-1!==o()(n,t=>t.src===e.srcRequested))return;const s=V(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(!R(t))return;const s=this.state,i=s.cycle,a=s.activeTrackIndex;!i&&a+1>=t.length?n&&this.goToTrack({index:0,track:t[0],shouldPlay:!1,shouldForceLoad:!0}):this.gapLengthTimeout=setTimeout(this.forwardSkip,1e3*this.props.gapLengthInSeconds)}handleMediaStalled(){this.setState(e=>!0===e.stalled?null:{stalled:!0})}handleMediaEmptied(){this.setState(e=>!0===e.paused?null:{paused:!0})}handleMediaCanplay(){this.setState(e=>!1===e.trackLoading?null:{trackLoading:!1})}handleMediaCanplaythrough(){this.setState(e=>!1===e.stalled?null:{stalled:!1})}handleMediaTimeupdate(){const e=this.media,t=e.currentTime,n=e.played,s=this.props,i=s.onTimeUpdate,a=s.playlist,r=this.state.activeTrackIndex;this.state.trackLoading?this.media.currentTime=this.state.currentTime:(this.setState(e=>({currentTime:t,playedRanges:D(n),maxKnownTime:Math.max(e.maxKnownTime,t)})),i&&i(t,a[r],r))}handleMediaLoadeddata(){this.media.currentTime!==this.state.currentTime&&(this.media.currentTime=this.state.currentTime)}handleMediaVolumechange(){const e=this.media,t=e.volume,n=e.muted;this.setState({volume:t,muted:n})}handleMediaDurationchange(){const e=this.media.duration,t=this.props.playlist[this.state.activeTrackIndex];if(e===1/0)if(t.isUnboundedStream||t===this.activeTrackAtLastDurationChange)this.setState({duration:e,currentTime:0}),this.media.currentTime=0;else{const e=this.state.paused;this.media.load(),e||setTimeout(()=>{this.togglePause(!1)})}else this.setState({duration:e});this.activeTrackAtLastDurationChange=t}handleMediaProgress(){this.setState({bufferedRanges:D(this.media.buffered),seekableRanges:D(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(Q)}catch(e){Q(e)}}goToTrack(e){clearTimeout(this.delayTimeout),this.setState(t=>Z(G({prevState:t},e)))}selectTrackIndex(e){const t=this.props.playlist;R(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,track:t[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(!R(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=V(t,e)}else(l=r-1)<0&&(l=t.length-1);this.goToTrack({index:l,track:t[l],shouldForceLoad:!0})}forwardSkip(){const e=this.props.playlist,t=this.state,n=t.cycle,s=t.activeTrackIndex,i=t.shuffle;if(!R(e)||!n&&s+1>=e.length)return;let a;i?a=V(e,this.shuffler.findNextItem(s)):(a=s+1)>=e.length&&(a=0),this.goToTrack({index:a,track:e[a],shouldForceLoad:!0})}seekPreview(e){if(!R(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 G({},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 G({},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(G({},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=$(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,awaitingPlayResume:t.awaitingResumeOnSeekComplete||t.awaitingPlayAfterTrackLoad,duration:t.duration===1/0?t.maxKnownTime: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,mediaCannotPlay:t.mediaCannotPlay,setVolumeInProgress:t.setVolumeInProgress,repeatStrategy:U(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))}}ee.defaultProps={autoplay:!1,autoplayDelayInSeconds:0,createMediaElement:()=>document.createElement("video"),gapLengthInSeconds:0,defaultVolume:1,defaultMuted:!1,defaultRepeatStrategy:"playlist",defaultShuffle:!1,defaultPlaybackRate:1,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:"",getMediaTitleAttributeForTrack:W};class te extends i.Component{componentDidMount(){this.props.groupContext.registerMediaElement(this.mediaElement)}componentWillUnmount(){this.mediaElement&&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(ee,K({},t.groupProps,i,{mediaElementRef:e=>{s&&s(e),this.mediaElement=e}}))}}var ne=function(e){return a.a.createElement(d.Consumer,null,t=>t?Object(i.createElement)(te,{groupContext:t,props:e}):Object(i.createElement)(ee,e))};var se=function(e){const t=[];let n=e._reactInternalFiber;for(;n=n._debugOwner;)n.type.name&&t.push(n.type.name);return t};var ie=class extends i.PureComponent{render(){const e=this.props,t=e.children,n=e.filterList;if(!n){if(!this.warnedAboutFilterList){let e="\n Please pass the filterList prop to PlayerContextConsumer in order\n to avoid unnecessarily frequent re-renders, e.g.\n\n const filterList = ['paused', 'onTogglePause'];\n // ...\n <PlayerContextConsumer filterList={filterList}>\n {({ paused, onTogglePause }) => {\n return <div>{/* ... */}</div>;\n }}\n </PlayerContextConsumer>\n ";for(const t of se(this))e+=`\n Rendered by ${t}`;Object(m.b)(e),this.warnedAboutFilterList=!0}return a.a.createElement(c.Consumer,null,t)}const s=c.__cassetteGetObservedBits(n);return a.a.createElement(c.Consumer,{unstable_observedBits:s},e=>{const s={};for(const t of n)e.hasOwnProperty(t)&&(s[t]=e[t]);return t(s)})}};function ae(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){re(e,t,n[t])})}return e}function re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var oe=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?ae({},e,{groupProps:ae({},e.groupProps,this.props)}):{groupProps:this.props,registerMediaElement:this.registerMediaElement,unregisterMediaElement:this.unregisterMediaElement};return a.a.createElement(d.Provider,{value:t},this.props.children)})}},le=Object(l.a)({displayName:"FullscreenContext",defaultValue:{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.")}},keysWillUpdate:["fullscreen"]});const ce={width:"100%",height:"100%"};class de 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?ce:void 0},a.a.createElement(le.Provider,{value:e},"function"==typeof this.props.children?this.props.children(e):this.props.children))}}de.defaultProps={fullscreenEnabled:!0};var ue=de;function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pe=function(e,t){const n={},s=e.displayName||e.name,r=c.__cassetteGetObservedBits(t);function o(o){return a.a.createElement(le.Consumer,null,l=>a.a.createElement(c.Consumer,{unstable_observedBits:r},a=>{const r=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){he(e,t,n[t])})}return e}({},o);for(const e of t)a.hasOwnProperty(e)?r[e]=a[e]:l.hasOwnProperty(e)?r[e]=l[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,r)}))}return s&&(o.displayName=`PlayerContextFilter(${s})`),o};n.d(t,"FullscreenContextConsumer",function(){return me}),n.d(t,"donotuse_PlayerContext",function(){return fe}),n.d(t,"donotuse_FullscreenContext",function(){return ge}),n.d(t,"PlayerContextProvider",function(){return ne}),n.d(t,"PlayerContextConsumer",function(){return ie}),n.d(t,"PlayerContextGroup",function(){return oe}),n.d(t,"FullscreenContextProvider",function(){return ue}),n.d(t,"playerContextFilter",function(){return pe}),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 $}),n.d(t,"isPlaylistValid",function(){return R}),n.d(t,"getDisplayText",function(){return W}),n.d(t,"repeatStrategyOptions",function(){return p});const me=le.Consumer,fe=c,ge=le}])}); | ||
//# sourceMappingURL=cassette-core.min.js.map |
{ | ||
"name": "@cassette/core", | ||
"version": "2.0.0-alpha.28", | ||
"version": "2.0.0-alpha.29", | ||
"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": "695c42335837e0ab319e02902b0f1b36364b1399" | ||
"gitHead": "64bdc42d5dbc72c678331309e22f01fb997c5c8b" | ||
} |
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 too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1105375
55
6587