From 50b66743e9107f8d650ab77fbaa7e19e9b1a22ad Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Fri, 21 Jun 2019 13:46:24 +1200 Subject: [PATCH] Production buildout --- mopidy_iris/__init__.py | 2 +- mopidy_iris/static/app.min.css | 13 +++++++++---- mopidy_iris/static/app.min.js | 6 +++--- mopidy_iris/static/index.html | 4 ++-- package.json | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/mopidy_iris/__init__.py b/mopidy_iris/__init__.py index 80da0a21..5b111540 100755 --- a/mopidy_iris/__init__.py +++ b/mopidy_iris/__init__.py @@ -12,7 +12,7 @@ from handlers import WebsocketHandler, HttpHandler from core import IrisCore logger = logging.getLogger(__name__) -__version__ = '3.38.0' +__version__ = '3.39.0' ## # Core extension class diff --git a/mopidy_iris/static/app.min.css b/mopidy_iris/static/app.min.css index 73ff097d..a29f6271 100644 --- a/mopidy_iris/static/app.min.css +++ b/mopidy_iris/static/app.min.css @@ -2732,6 +2732,8 @@ main { **/ -webkit-overflow-scrolling: touch; /* All children between
and the parallax need this to work in Firefox */ } + .notouch.wide-scrollbar main::-webkit-scrollbar { + width: 18px; } .notouch main::-webkit-scrollbar { width: 8px; height: 8px; } @@ -2794,7 +2796,8 @@ h1 { color: #FFFFFF; font-weight: 700; font-size: 3.4rem; - line-height: 3.4rem; } + line-height: 3.4rem; + letter-spacing: -0.15rem; } .light-theme h1 { color: #383734; } @@ -2803,7 +2806,8 @@ h2 { font-weight: 600; font-weight: 400; font-size: 2rem; - line-height: 2.2rem; } + line-height: 2.2rem; + letter-spacing: -0.08rem; } h2 a { color: inherit; text-decoration: none; } @@ -6874,10 +6878,11 @@ main .track-view { background: transparent; border-bottom: 2px solid #383734; border-radius: 0; + letter-spacing: -0.15rem; /* handle Safari's ridiculous non-vertical centering */ } .search-view .search-form input:not(:root:root) { - height: 4rem; - margin-top: -1rem; } + height: 4.6rem; + margin-top: -0.5rem; } .search-view .search-form input:focus, .search-view .search-form input:active { border-color: #08d58f; background: transparent; } diff --git a/mopidy_iris/static/app.min.js b/mopidy_iris/static/app.min.js index 0f1e9d8c..892f6589 100644 --- a/mopidy_iris/static/app.min.js +++ b/mopidy_iris/static/app.min.js @@ -1,4 +1,4 @@ -!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}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="",n(n.s=81)}([function(e,t,n){"use strict";e.exports=n(82)},function(e,t,n){e.exports=n(87)()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=(t.isTouchDevice=function(){return"ontouchstart"in document.documentElement},t.debounce=function(e,t,n){var r;return function(){var a=this,i=arguments,o=n&&!r;clearTimeout(r),r=setTimeout(function(){r=null,n||e.apply(a,i)},t),o&&e.apply(a,i)}},t.throttle=function(e,t){var n=0;return function(){var r=(new Date).getTime();if(!(r-n1&&void 0!==arguments[1]?arguments[1]:{};if(a){var n=a.getItem(e);return n?JSON.parse(n):t}return console.warn("localStorage not available. Using default value for '"+e+"'."),t},t.setStorage=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(a){var r=a.getItem(e);if(!r||n)var i=t;else i=Object.assign({},JSON.parse(r),t);a.setItem(e,JSON.stringify(i))}else console.warn("localStorage not available. '"+e+"'' will not perist when you close your browser.")},t.toJSON=function(e){try{return JSON.parse(e)}catch(t){if(e.constructor==={}.constructor)return e;console.error("Could not convert non-JSON",string)}return{}},t.setFavicon=function(e){var t=document.getElementsByClassName("favicon"),n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value,l=document.createElement("link");l.className=s.className,l.rel=s.rel,l.href="/iris/assets/"+e,s.type&&(l.type=s.type),document.head.removeChild(s),document.head.appendChild(l)}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}},t.isCached=function(e){var t=new Image;return t.src=e,t.complete},t.digestMopidyImages=function(e,t){for(var n=[],a=0;a0&&void 0!==arguments[0]?arguments[0]:"numeric")){var e=(new Date).valueOf().toString(),t=Math.floor(100*Math.random()).toString();return parseInt(e+t)}return"xxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})},t.getCurrentPusherConnection=function(e,t){var n=newProps.pusher.connections.find(function(e){return e.connectionid==newProps.pusher.connectionid});return n||!1},t.getTrackIcon=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t)return!1;if(!e)return!1;if(void 0===e.uri)return!1;if(void 0===t.tracks[e.uri])return!1;var n=t.tracks[e.uri];return!!n.images&&i(n.images).small},t.formatImages=function(e){var t={formatted:!0,small:null,medium:null,large:null,huge:null};if(!e)return t;if(Array.isArray(e)){if(e.length<=0)return t;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.push(u(s))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatAlbums=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done);n=!0){var l=i.value;t.push(o(l))}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return t},t.formatArtists=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var l=i.value;t.push(s(l))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatPlaylists=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.push(u(s))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatUsers=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.push(l(s))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatAlbum=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["uri","provider","name","type","added_at","release_date","listeners","play_count","wiki","wiki_publish_date","popularity","images","artists_uris","tracks_uris","artists"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return t.images&&!t.images.formatted&&(t.images=i(t.images)),e.date&&!t.date&&(t.release_date=e.date),e.album_type&&(t.type=e.album_type),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t}),s=t.formatArtist=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["uri","provider","mbid","name","type","popularity","followers","listeners","added_at","biography","biography_link","biography_publish_date","related_artists_uris","albums_uris","albums_total","albums_more","tracks_uris","tracks_total","tracks_more"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return e.images&&e.images.length>0&&(t.images=[i(e.images)]),e.followers&&void 0!==e.followers.total&&(t.followers=e.followers.total),e.bio&&(e.bio.content&&!t.biography&&(t.biography=e.bio.content),e.bio.links&&e.bio.links.link&&e.bio.links.link.href&&!t.biography_link&&(t.biography_link=e.bio.links.link.href),e.bio.published&&!t.biography_publish_date&&(t.biography_publish_date=e.bio.published)),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t},l=(t.formatPlaylist=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["uri","snapshot_id","provider","type","collaborative","public","name","description","images","popularity","followers","added_at","last_modified_date","can_edit","owner","user_uri","tracks_uris","tracks_total","tracks_more"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return t.images&&!t.images.formatted&&(t.images=i(t.images)),e.followers&&void 0!==e.followers.total&&(t.followers=e.followers.total),e.tracks&&void 0!==e.tracks.total&&(t.tracks_total=e.tracks.total),e.owner&&(t.owner={id:e.owner.id,uri:e.owner.uri,name:e.owner.display_name?e.owner.display_name:null},t.user_uri=e.owner.uri),t.uri=h(t.uri),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t},t.formatUser=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["id","uri","provider","name","images","followers","playlists_uris","playlists_total","playlists_more"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return!t.images&&e.image?t.images=i(e.image):!t.images&&e.avatar?t.images=i(e.avatar):t.images&&!t.images.formatted&&(t.images=i(t.images)),e.followers&&void 0!==e.followers.total&&(t.followers=e.followers.total),e.realname&&(t.name=e.realname),e.display_name&&!t.name&&(t.name=e.display_name),e.id&&!t.name&&(t.name=e.id),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t}),u=t.formatTrack=function(e){var t={};e&&e.track&&d(e.track)&&(e.added_by&&(e.track.added_by=e.added_by),e.added_at&&(e.track.added_at=e.added_at),e.tlid&&(e.track.tlid=e.tlid),e=e.track);var n=!0,r=!1,a=void 0;try{for(var o,s=["uri","tlid","provider","name","images","release_date","disc_number","track_number","duration","followers","popularity","userloved","is_explicit","is_local","lyrics","lyrics_path","lyrics_results","artists","album"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return e.followers&&e.followers.total&&(t.followers=e.followers.total),void 0===t.duration&&void 0!==e.duration_ms?t.duration=e.duration_ms:void 0===t.duration&&void 0!==e.length&&(t.duration=e.length),void 0===t.track_number&&void 0!==e.track_no&&(t.track_number=e.track_no),void 0===t.disc_number&&void 0!==e.disc_no&&(t.disc_number=e.disc_no),void 0===t.release_date&&void 0!==e.date&&(t.release_date=e.date),void 0===t.explicit&&void 0!==e.explicit&&(t.is_explicit=e.explicit),e.album&&e.album.images&&(void 0!==t.images&&t.images.formatted||(t.images=i(e.album.images))),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t},c=(t.formatClient=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var i,o=["id","connected","name","host_name","volume","mute","latency","power_on_command","power_off_command"][Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;e.hasOwnProperty(s)&&(t[s]=e[s])}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return e.config&&(void 0===t.latency&&void 0!==e.config.latency&&(t.latency=e.config.latency),!t.name&&e.config.name&&(t.name=e.config.name),e.config.volume&&(e.config.volume.percent&&(t.volume=e.config.volume.percent),e.config.volume.muted&&(t.mute=e.config.volume.muted))),void 0===t.name&&e.host&&e.host.name&&(t.name=e.host.name),t},t.formatGroup=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var i,o=["id","name","mute","stream_id","clients_ids"][Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;e.hasOwnProperty(s)&&(t[s]=e[s])}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return void 0!==t.name&&""!==t.name||(t.name="Group "+e.id.substring(0,3)),void 0===t.mute&&void 0!==e.mute&&(t.mute=e.mute),t},t.collate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==(e=Object.assign({},e)).artists_uris&&(e.artists=[]),void 0!==e.albums_uris&&(e.albums=[]),void 0!==e.tracks_uris&&(e.tracks=[]),void 0!==e.users_uris&&(e.users=[]),void 0!==e.playlists_uris&&(e.playlists=[]),void 0!==e.related_artists_uris&&(e.related_artists=[]),void 0!==e.clients_ids&&(e.clients=[]),t.artists){if(e.artists_uris){var n=!0,r=!1,a=void 0;try{for(var i,o=e.artists_uris[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.artists[s]&&e.artists.push(t.artists[s])}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}}if(e.related_artists_uris){var l=!0,u=!1,c=void 0;try{for(var p,d=e.related_artists_uris[Symbol.iterator]();!(l=(p=d.next()).done);l=!0){s=p.value;t.artists[s]&&e.related_artists.push(t.artists[s])}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}}e.artist_uri&&t.artists[e.artist_uri]&&(e.artist=t.artists[e.artist_uri])}if(t.albums){if(e.albums_uris){var f=!0,h=!1,m=void 0;try{for(var y,_=e.albums_uris[Symbol.iterator]();!(f=(y=_.next()).done);f=!0){s=y.value;t.albums[s]&&e.albums.push(t.albums[s])}}catch(e){h=!0,m=e}finally{try{!f&&_.return&&_.return()}finally{if(h)throw m}}}e.album_uri&&t.albums[e.album_uri]&&(e.album=t.albums[e.album_uri])}if(t.tracks){if(e.tracks_uris){var v=!0,b=!1,g=void 0;try{for(var E,k=e.tracks_uris[Symbol.iterator]();!(v=(E=k.next()).done);v=!0){s=E.value;t.tracks[s]&&e.tracks.push(t.tracks[s])}}catch(e){b=!0,g=e}finally{try{!v&&k.return&&k.return()}finally{if(b)throw g}}}e.track_uri&&t.tracks[e.track_uri]&&(e.track=t.tracks[e.track_uri])}if(t.users){if(e.users_uris){var O=!0,w=!1,S=void 0;try{for(var T,A=e.users_uris[Symbol.iterator]();!(O=(T=A.next()).done);O=!0){s=T.value;t.users[s]&&e.users.push(t.users[s])}}catch(e){w=!0,S=e}finally{try{!O&&A.return&&A.return()}finally{if(w)throw S}}}e.user_uri&&t.users[e.user_uri]&&(e.user=t.users[e.user_uri])}if(t.playlists){if(e.playlists_uris){var C=!0,P=!1,x=void 0;try{for(var R,N=e.playlists_uris[Symbol.iterator]();!(C=(R=N.next()).done);C=!0){s=R.value;t.playlists[s]&&e.playlists.push(t.playlists[s])}}catch(e){P=!0,x=e}finally{try{!C&&N.return&&N.return()}finally{if(P)throw x}}}e.playlist_uri&&t.playlists[e.playlist_uri]&&(e.playlist=t.playlists[e.playlist_uri])}if(t.clients&&e.clients_ids){var M=!0,L=!1,D=void 0;try{for(var I,j=e.clients_ids[Symbol.iterator]();!(M=(I=j.next()).done);M=!0){var U=I.value;t.clients[U]&&e.clients.push(t.clients[U])}}catch(e){L=!0,D=e}finally{try{!M&&j.return&&j.return()}finally{if(L)throw D}}}return e},t.uriSource=function(e){return!!e&&e.split(":")[0]}),p=t.uriType=function(e){if(!e)return null;var t=e.split(":");if("m3u"==t[0])return"playlist";if("iris"==t[0])switch(t[1]){case"search":case"discover":case"browse":return t[1]}switch(t[1]){case"track":case"artist":case"album":case"playlist":case"genre":return t[1];case"user":return t.length>3&&"playlist"==t[3]?"playlist":t[1]}},d=(t.sourceIcon=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(e&&(t=c(e)),t){case"local":case"m3u":return"folder";case"gmusic":return"google";case"podcast":case"podcast+file":case"podcast+http":case"podcast+https":case"podcast+itunes":return"podcast";case"tunein":case"somafm":case"dirble":return"microphone";default:return t}},t.getFromUri=function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(":");t[0];switch(e){case"mbid":var n=t.indexOf("mbid");if(n>-1)return t[n+1];break;case"artistid":if("artist"==t[1])return t[2];break;case"albumid":if("album"==t[1])return t[2];break;case"playlistid":if("playlist"==t[1])return t[2];if("user"==t[1]&&"playlist"==t[3])return t[4];break;case"playlistowner":if("user"==t[1]&&"playlist"==t[3])return t[2];break;case"trackid":if("track"==t[1])return t[2];break;case"userid":if("user"==t[1])return t[2];break;case"genreid":if("genre"==t[1])return t[2];break;case"seeds":if("discover"==t[1])return t[2];break;case"searchtype":if("search"==t[0])return t[1];break;case"searchterm":if("search"==t[0])return t[2]}return null},t.buildLink=function(e){var t="/"+p(e)+"/";return t+=e=encodeURIComponent(e)},t.arrayOf=function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;void 0!==l[e]&&null!=l[e]&&n.push(l[e])}}catch(e){a=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(a)throw i}}return n},t.mergeDuplicates=function(e,t){var n=[],r={};for(var a in e){var i=e[a];i[t]in r&&(i=Object.assign({},r[i[t]],i)),r[i[t]]=i}for(a in r)n.push(r[a]);return n},t.removeDuplicates=function(e){var t=[];for(var n in e)t.indexOf(e[n])<=-1&&t.push(e[n]);return t},t.applyFilter=function(e,t,n){for(var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=[],i=0;i2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(!e||e.length<=0)return[];function a(e){var n=t.split("."),r=!0,a=!1,i=void 0;try{for(var o,s=n[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;if("first"==l){if(Array.isArray(e)&&e.length>0){e=e[0];continue}return null}if("length"==l)return Array.isArray(e)?e.length:0;if(void 0===e[l])return null;e=e[l]}}catch(e){a=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(a)throw i}}return e}var i=Object.assign([],e.sort(function(e,n){var i=a(e),o=a(n);if("uri"==t&&(i=c(i),o=c(o)),!r)return"boolean"==typeof i&&"boolean"==typeof o?i&&!o?-1:!i&&o?1:0:"number"==typeof i&&"number"==typeof o?null==i&&null==o?0:null==i?-1:null==o?1:parseInt(i)>parseInt(o)?1:parseInt(i)o.toLowerCase()?1:i.toLowerCase()l?-1:void 0}));return n&&i.reverse(),i},t.shuffle=function(e){var t,n,r;for(r=e.length-1;r>0;r--)t=Math.floor(Math.random()*(r+1)),n=e[r],e[r]=e[t],e[t]=n;return e},t.isNumeric=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},t.isObject=function(e){return e instanceof Object&&e.constructor===Object}),f=(t.isLoading=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(var n in e)if(e.hasOwnProperty(n))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:["jaedb.github.io"],t=window.location.hostname;return e.includes(t)},t.getIndexedRecords=function(e,t){var n=[];!t instanceof Array&&(t=[t]);for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=document.getElementById("main");if(t||n.classList.remove("smooth-scroll"),e&&Number.isInteger(e))"function"==typeof n.scrollTo&&(n.scrollTop=e);else if(e){var r=null;"#"==e.charAt(0)?r=document.getElementById(e.substring(1)):"."==e.charAt(0)?(r=document.getElementsByClassName(e.substring(1))).length>0&&(r=r[0]):console.error("Invalid target type '"+e+"'. Must start with '#' or '.'."),r&&"function"==typeof r.scrollIntoView&&r.scrollIntoView()}else n.scrollTop=0;t||n.classList.add("smooth-scroll")},t.upgradeSpotifyPlaylistUris=function(e){var t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;s.includes("spotify:user:")&&(s=s.replace(/spotify:user:([^:]*?):/i,"spotify:")),t.push(s)}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t}),h=t.upgradeSpotifyPlaylistUri=function(e){return f([e])[0]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setWindowTitle=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"SET_WINDOW_TITLE",title:e,play_state:t}},t.setCurrentTrackTransition=function(e){return{type:"SET_CURRENT_TRACK_TRANSITION",current_track_transition:e}},t.setSelectedTracks=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"==typeof e&&(e=[e]);return{type:"SET_SELECTED_TRACKS",keys:e}},t.showContextMenu=function(e){e.e.changedTouches?(e.position_x=e.e.changedTouches[0].clientX,e.position_y=e.e.changedTouches[0].clientY):e.e.touches?(e.position_x=e.e.touches[0].clientX,e.position_y=e.e.touches[0].clientY):(e.position_x=e.e.clientX,e.position_y=e.e.clientY);return{type:"SHOW_CONTEXT_MENU",data:e}},t.setSlimMode=function(e){return{type:"SET_SLIM_MODE",slim_mode:e}},t.setWindowFocus=function(e){return{type:"SET_WINDOW_FOCUS",window_focus:e}},t.hideContextMenu=function(){return{type:"HIDE_CONTEXT_MENU"}},t.removeContextMenu=function(){return{type:"REMOVE_CONTEXT_MENU"}},t.showTouchContextMenu=function(e){return{type:"SHOW_TOUCH_CONTEXT_MENU",data:e}},t.hideTouchContextMenu=function(){return{type:"HIDE_TOUCH_CONTEXT_MENU"}},t.removeTouchContextMenu=function(){return{type:"REMOVE_TOUCH_CONTEXT_MENU"}},t.lazyLoading=function(e){return{type:"LAZY_LOADING",start:e}},t.toggleSidebar=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"toggle",t={type:"TOGGLE_SIDEBAR"};"toggle"!=e&&(t.new_state=e);return t},t.dragStart=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;return{type:"DRAG_START",context:t,from_uri:n,victims:r,victims_indexes:a,start_x:e.clientX,start_y:e.clientY}},t.dragActive=function(){return{type:"DRAG_ACTIVE"}},t.dragEnd=function(){return{type:"DRAG_END"}},t.set=function(e){return{type:"UI_SET",data:e}},t.installPrompt=function(e){return{type:"INSTALL_PROMPT",event:e}},t.createBrowserNotification=function(e){return{type:"BROWSER_NOTIFICATION",data:e}},t.createNotification=function(e){e.message&&(e.content=e.message);"shortcut"==e.type&&(e.duration=.4);return{type:"CREATE_NOTIFICATION",notification:Object.assign({key:r.generateGuid(),duration:5,type:"default",title:null,content:null,description:null,sticky:!1,closing:!1,render_content:!1},e)}},t.closeNotification=function(e){return{type:"CLOSE_NOTIFICATION",key:e}},t.removeNotification=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"REMOVE_NOTIFICATION",key:e,manual:t}},t.startLoading=function(e,t){return{type:"START_LOADING",source:t,key:e}},t.stopLoading=function(e){return{type:"STOP_LOADING",key:e}},t.startProcess=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return{type:"START_PROCESS",key:e,message:t,data:n}},t.resumeProcess=function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{type:"RESUME_PROCESS",key:e}},t.updateProcess=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return{type:"UPDATE_PROCESS",key:e,message:t,data:n}},t.runProcess=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{type:e,data:t}},t.cancelProcess=function(e){return{type:"CANCEL_PROCESS",key:e}},t.processCancelled=function(e){return{type:"PROCESS_CANCELLED",key:e}},t.processFinishing=function(e){return{type:"PROCESS_FINISHING",key:e}},t.processFinished=function(e){return{type:"PROCESS_FINISHED",key:e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2))},function(e,t,n){"use strict";n.r(t),n.d(t,"createStore",function(){return s}),n.d(t,"combineReducers",function(){return u}),n.d(t,"bindActionCreators",function(){return p}),n.d(t,"applyMiddleware",function(){return h}),n.d(t,"compose",function(){return f}),n.d(t,"__DO_NOT_USE__ActionTypes",function(){return i});var r=n(68),a=function(){return Math.random().toString(36).substring(7).split("").join(".")},i={INIT:"@@redux/INIT"+a(),REPLACE:"@@redux/REPLACE"+a(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+a()}};function o(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function s(e,t,n){var a;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function");if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(s)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var l=e,u=t,c=[],p=c,d=!1;function f(){p===c&&(p=c.slice())}function h(){if(d)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return u}function m(e){if("function"!=typeof e)throw new Error("Expected the listener to be a function.");if(d)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return f(),p.push(e),function(){if(t){if(d)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,f();var n=p.indexOf(e);p.splice(n,1)}}}function y(e){if(!o(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(d)throw new Error("Reducers may not dispatch actions.");try{d=!0,u=l(u,e)}finally{d=!1}for(var t=c=p,n=0;n=0||(a[n]=e[n]);return a}var f=n(67),h=n.n(f),m=n(12),y=n.n(m),_=n(66);function v(e,t){void 0===t&&(t={});var n=t,o=n.getDisplayName,s=void 0===o?function(e){return"ConnectAdvanced("+e+")"}:o,u=n.methodName,c=void 0===u?"connectAdvanced":u,f=n.renderCountProp,m=void 0===f?void 0:f,v=n.shouldHandleStateChanges,b=void 0===v||v,g=n.storeKey,E=void 0===g?"store":g,k=n.withRef,O=void 0!==k&&k,w=n.forwardRef,S=void 0!==w&&w,T=n.context,A=void 0===T?l:T,C=d(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);y()(void 0===m,"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension"),y()(!O,"withRef is removed. To access the wrapped instance, use a ref on the connected component");var P="To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: . You may also pass a {context : MyContext} option to connect";y()("store"===E,"storeKey has been removed and does not do anything. "+P);var x=A;return function(t){var n=t.displayName||t.name||"Component",o=s(n),l=Object(p.a)({},C,{getDisplayName:s,methodName:c,renderCountProp:m,shouldHandleStateChanges:b,storeKey:E,displayName:o,wrappedComponentName:n,WrappedComponent:t}),u=C.pure,d=a.Component;u&&(d=a.PureComponent);var f=function(n){function a(t){var r,a,o,s,l,c,d,f,h,m,_;return r=n.call(this,t)||this,y()(S?!t.wrapperProps[E]:!t[E],"Passing redux store in props has been removed and does not do anything. "+P),r.selectDerivedProps=function(t,n,r,i){if(u&&a===n&&o===t)return s;r===l&&c===i||(l=r,c=i,d=e(r.dispatch,i)),a=n,o=t;var p=d(t,n);return s=p},r.selectChildElement=function(e,t,n){return t===f&&n===h&&_===e||(f=t,h=n,_=e,m=i.a.createElement(e,Object(p.a)({},t,{ref:n}))),m},r.indirectRenderWrappedComponent=r.indirectRenderWrappedComponent.bind(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r)),r}r(a,n);var s=a.prototype;return s.indirectRenderWrappedComponent=function(e){return this.renderWrappedComponent(e)},s.renderWrappedComponent=function(e){y()(e,'Could not find "store" in the context of "'+o+'". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to '+o+" in connect options.");var n,r=e.storeState,a=e.store,i=this.props;S&&(i=this.props.wrapperProps,n=this.props.forwardedRef);var s=this.selectDerivedProps(r,i,a,l);return this.selectChildElement(t,s,n)},s.render=function(){var e=this.props.context&&this.props.context.Consumer&&Object(_.isContextConsumer)(i.a.createElement(this.props.context.Consumer,null))?this.props.context:x;return i.a.createElement(e.Consumer,null,this.indirectRenderWrappedComponent)},a}(d);if(f.WrappedComponent=t,f.displayName=o,S){var v=i.a.forwardRef(function(e,t){return i.a.createElement(f,{wrapperProps:e,forwardedRef:t})});return v.displayName=o,v.WrappedComponent=t,h()(v,t)}return h()(f,t)}}var b=Object.prototype.hasOwnProperty;function g(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function E(e,t){if(g(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var a=0;a=0;r--){var a=t[r](e);if(a)return a}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function L(e,t){return e===t}var D,I,j,U,Y,F,H,z,B,q,G,W,V=(j=(I=void 0===D?{}:D).connectHOC,U=void 0===j?v:j,Y=I.mapStateToPropsFactories,F=void 0===Y?A:Y,H=I.mapDispatchToPropsFactories,z=void 0===H?T:H,B=I.mergePropsFactories,q=void 0===B?P:B,G=I.selectorFactory,W=void 0===G?N:G,function(e,t,n,r){void 0===r&&(r={});var a=r,i=a.pure,o=void 0===i||i,s=a.areStatesEqual,l=void 0===s?L:s,u=a.areOwnPropsEqual,c=void 0===u?E:u,f=a.areStatePropsEqual,h=void 0===f?E:f,m=a.areMergedPropsEqual,y=void 0===m?E:m,_=d(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),v=M(e,F,"mapStateToProps"),b=M(t,z,"mapDispatchToProps"),g=M(n,q,"mergeProps");return U(W,Object(p.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:v,initMapDispatchToProps:b,initMergeProps:g,pure:o,areStatesEqual:l,areOwnPropsEqual:c,areStatePropsEqual:h,areMergedPropsEqual:y},_))});n.d(t,"Provider",function(){return c}),n.d(t,"connectAdvanced",function(){return v}),n.d(t,"ReactReduxContext",function(){return l}),n.d(t,"connect",function(){return V})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),a=o(r),i=o(n(135));function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.memo)(function(e){if(!e.name||""===e.name)return null;var t="icon icon--"+(e.type?e.type:"material");switch(e.className&&(t+=" "+e.className),e.type){case"svg":return a.default.createElement("img",{className:t,src:"/iris/assets/icons/"+e.name+".svg",onClick:function(t){return e.onClick?e.onClick(t):null}});case"gif":return a.default.createElement("img",{className:t,src:"/iris/assets/icons/"+e.name+".gif",onClick:function(t){return e.onClick?e.onClick(t):null}});case"fontawesome":return a.default.createElement(i.default,{className:t,type:"fontawesome",name:e.name,onClick:function(t){return e.onClick?e.onClick(t):null}});case"css":switch(e.name){case"playing":return a.default.createElement("i",{className:t+" icon--playing"},a.default.createElement("span",null),a.default.createElement("span",null),a.default.createElement("span",null))}default:return a.default.createElement("i",{className:t,onClick:function(t){return e.onClick?e.onClick(t):null}},e.name)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.set=function(e){return{type:"MOPIDY_SET",data:e}},t.request=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{type:"MOPIDY_REQUEST",method:e,params:t,response_callback:n,error_callback:r}},t.connect=function(){return{type:"MOPIDY_CONNECT"}},t.connecting=function(){return{type:"MOPIDY_CONNECTING"}},t.disconnect=function(){return{type:"MOPIDY_DISCONNECT"}},t.debug=function(e,t){return{type:"MOPIDY_DEBUG",call:e,value:t}},t.restartStarted=function(){return{type:"MOPIDY_RESTART_STARTED"}},t.restartFinished=function(){return{type:"MOPIDY_RESTART_FINISHED"}},t.upgradeStarted=function(){return{type:"MOPIDY_UPGRADE_STARTED"}},t.upgradeFinished=function(){return{type:"MOPIDY_UPGRADE_FINISHED"}},t.localScanStarted=function(){return{type:"MOPIDY_LOCAL_SCAN_STARTED"}},t.localScanFinished=function(){return{type:"MOPIDY_LOCAL_SCAN_FINISHED"}},t.getPlayState=function(){return{type:"MOPIDY_GET_PLAY_STATE"}},t.play=function(){return{type:"MOPIDY_PLAY"}},t.pause=function(){return{type:"MOPIDY_PAUSE"}},t.stop=function(){return{type:"MOPIDY_STOP"}},t.next=function(){return{type:"MOPIDY_NEXT"}},t.previous=function(){return{type:"MOPIDY_PREVIOUS"}},t.getMute=function(){return{type:"MOPIDY_GET_MUTE"}},t.setMute=function(e){return{type:"MOPIDY_SET_MUTE",mute:e}},t.getVolume=function(){return{type:"MOPIDY_GET_VOLUME"}},t.setVolume=function(e){return{type:"MOPIDY_SET_VOLUME",volume:e}},t.getConsume=function(){return{type:"MOPIDY_GET_CONSUME"}},t.setConsume=function(e){return{type:"MOPIDY_SET_CONSUME",consume:e}},t.getRepeat=function(){return{type:"MOPIDY_GET_REPEAT"}},t.setRepeat=function(e){return{type:"MOPIDY_SET_REPEAT",repeat:e}},t.getRandom=function(){return{type:"MOPIDY_GET_RANDOM"}},t.setRandom=function(e){return{type:"MOPIDY_SET_RANDOM",random:e}},t.getTimePosition=function(){return{type:"MOPIDY_GET_TIME_POSITION"}},t.setTimePosition=function(e){return{type:"MOPIDY_SET_TIME_POSITION",time_position:parseInt(e)}},t.timePosition=function(e){return{type:"MOPIDY_TIME_POSITION",time_position:parseInt(e)}},t.getUriSchemes=function(){return{type:"MOPIDY_GET_URI_SCHEMES"}},t.getCurrentTrack=function(){return{type:"MOPIDY_GET_CURRENT_TRACK"}},t.currentTrackLoaded=function(e){return{type:"MOPIDY_CURRENT_TRACK_LOADED",tl_track:e}},t.getNextTrack=function(){return{type:"MOPIDY_GET_NEXT_TRACK"}},t.clearCurrentTrack=function(){return{type:"CLEAR_CURRENT_TRACK"}},t.getQueue=function(){return{type:"MOPIDY_GET_QUEUE"}},t.changeTrack=function(e){return{type:"MOPIDY_CHANGE_TRACK",tlid:e}},t.playURIs=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{type:"MOPIDY_PLAY_URIS",uris:e,from_uri:t}},t.playAlbum=function(e){return{type:"MOPIDY_PLAY_ALBUM",uri:e}},t.playPlaylist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"MOPIDY_PLAY_PLAYLIST",uri:e,shuffle:t}},t.enqueueURIs=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return{type:"MOPIDY_ENQUEUE_URIS",uris:e,from_uri:t,at_position:r,play_next:n,offset:a}},t.enqueueAlbum=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:"MOPIDY_ENQUEUE_ALBUM",uri:e,next:t,at_position:n}},t.enqueuePlaylist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:"MOPIDY_ENQUEUE_PLAYLIST",uri:e,play_next:t,at_position:n}},t.enqueueURIsBatchDone=function(){return{type:"MOPIDY_ENQUEUE_URIS_BATCH_DONE"}},t.removeTracks=function(e){return{type:"MOPIDY_REMOVE_TRACKS",tlids:e}},t.reorderTracklist=function(e,t){var n=r.createRange(e);t>n.start&&(t-=n.length);return{type:"MOPIDY_REORDER_TRACKLIST",range_start:n.start,range_length:n.length,insert_before:t}},t.clearTracklist=function(){return{type:"MOPIDY_CLEAR_TRACKLIST"}},t.getImages=function(e,t){return{type:"MOPIDY_GET_IMAGES",context:e,uris:t}},t.createPlaylist=function(e,t){return{type:"MOPIDY_CREATE_PLAYLIST",name:e,scheme:t}},t.deletePlaylist=function(e){return{type:"MOPIDY_DELETE_PLAYLIST",uri:e}},t.getLibraryPlaylists=function(){return{type:"MOPIDY_GET_LIBRARY_PLAYLISTS"}},t.getPlaylist=function(e){return{type:"MOPIDY_GET_PLAYLIST",data:{uri:e}}},t.getPlaylists=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"MOPIDY_GET_PLAYLISTS",uris:e,processor:t}},t.getDirectory=function(e){return{type:"MOPIDY_GET_DIRECTORY",data:{uri:e}}},t.getTrack=function(e){return{type:"MOPIDY_GET_TRACK",data:{uri:e}}},t.getLibraryArtists=function(){return{type:"MOPIDY_GET_LIBRARY_ARTISTS",uri:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},t.clearLibraryArtists=function(){return{type:"MOPIDY_CLEAR_LIBRARY_ARTISTS"}},t.getArtist=function(e){return{type:"MOPIDY_GET_ARTIST",data:{uri:e}}},t.getArtists=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"MOPIDY_GET_ARTISTS",uris:e,processor:t}},t.getAlbum=function(e){return{type:"MOPIDY_GET_ALBUM",data:{uri:e}}},t.getAlbums=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"MOPIDY_GET_ALBUMS",uris:e,processor:t}},t.getLibraryAlbums=function(){return{type:"MOPIDY_GET_LIBRARY_ALBUMS",uri:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},t.clearLibraryAlbums=function(){return{type:"MOPIDY_CLEAR_LIBRARY_ALBUMS"}},t.runProcessor=function(e){return{type:e}},t.cancelProcessor=function(e){return{type:e+"_CANCEL"}},t.clearSearchResults=function(){return{type:"MOPIDY_CLEAR_SEARCH_RESULTS"}},t.getSearchResults=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;return{type:"MOPIDY_GET_SEARCH_RESULTS",context:e,query:t,limit:n}},t.getQueueHistory=function(){return{type:"MOPIDY_GET_QUEUE_HISTORY"}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t2&&void 0!==arguments[2]&&arguments[2];return function(r,a){c(r,a,e).then(function(e){r({type:t,key:n,data:e})},function(e){r(i.handleException("Could not load URL",e))})}},t.getMore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return function(r,a){c(r,a,e).then(function(e){t?r(i.loadedMore(t.parent_type,t.parent_key,t.records_type,e)):n?(n.data=e,r(n)):r(i.handleException("No callback handler for loading more items"))},function(e){r(i.handleException("Could not load more "+callback_action.parent_type+" "+callback_action.records_type+"s",e))})}},t.clearSearchResults=function(){return{type:"SPOTIFY_CLEAR_SEARCH_RESULTS"}},t.getSearchResults=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return function(a,s){a(o.startProcess("SPOTIFY_GET_SEARCH_RESULTS_PROCESSOR","Searching Spotify")),"all"==(e=e.replace(/s+$/,""))&&(e="album,artist,playlist,track");var l="search?q="+t;l+="&type="+e,l+="&country="+s().spotify.country,l+="&limit="+n,c(a,s,l+="&offset="+r).then(function(e){if(void 0!==e.tracks&&a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"tracks",results:u.formatTracks(e.tracks.items),more:e.tracks.next}),void 0!==e.artists&&(a({type:"ARTISTS_LOADED",artists:e.artists.items}),a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"artists",results:u.arrayOf("uri",e.artists.items),more:e.artists.next})),void 0!==e.albums&&(a({type:"ALBUMS_LOADED",albums:e.albums.items}),a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"albums",results:u.arrayOf("uri",e.albums.items),more:e.albums.next})),void 0!==e.playlists){var t=[],n=!0,r=!1,i=void 0;try{for(var l,c=e.playlists.items[Symbol.iterator]();!(n=(l=c.next()).done);n=!0){var p=l.value;t.push(Object.assign({},u.formatPlaylist(p),{can_edit:s().spotify.me&&p.owner.id==s().spotify.me.id,tracks_total:p.tracks.total}))}}catch(e){r=!0,i=e}finally{try{!n&&c.return&&c.return()}finally{if(r)throw i}}a({type:"PLAYLISTS_LOADED",playlists:t}),a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"playlists",results:u.arrayOf("uri",t),more:e.playlists.next})}a(o.processFinishing("SPOTIFY_GET_SEARCH_RESULTS_PROCESSOR"))},function(e){a(i.handleException("Could not load search results",e))})}},t.getAutocompleteResults=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:["album","artist","playlist","track"];return function(r,a){r({type:"SPOTIFY_AUTOCOMPLETE_LOADING",field_id:e});var o=n.includes("genre");if(o){var s=n.indexOf("genre");n.splice(s,1)}var l="search?q="+t;l+="&type="+n.join(","),l+="&country="+a().spotify.country,c(r,a,l).then(function(n){var s=[];if(o){var l=a().spotify.genres;if(l)for(var u=0;u0&&void 0!==arguments[0]?arguments[0]:null}},t.following=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";return function(n,a){if("PUT"==t)var o=!0;if("DELETE"==t)var o=!1;var s,l,p=u.uriType(e);switch(p){case"track":s="GET"==t?"me/tracks/contains/?ids="+u.getFromUri("trackid",e):"me/tracks/?ids="+u.getFromUri("trackid",e);break;case"album":s="GET"==t?"me/albums/contains/?ids="+u.getFromUri("albumid",e):"me/albums/?ids="+u.getFromUri("albumid",e);break;case"artist":"GET"==t?s="me/following/contains?type=artist&ids="+u.getFromUri("artistid",e):(s="me/following?type=artist&ids="+u.getFromUri("artistid",e),l={});break;case"user":"GET"==t?s="me/following/contains?type=user&ids="+u.getFromUri("userid",e):(s="me/following?type=user&ids="+u.getFromUri("userid",e),l={});break;case"playlist":s="GET"==t?"playlists/"+u.getFromUri("playlistid",e)+"/followers/contains?ids="+a().spotify.me.id:"playlists/"+u.getFromUri("playlistid",e)+"/followers"}c(n,a,s,t,l).then(function(t){t&&(o=t),"object"===(void 0===o?"undefined":r(o))&&(o=o[0]),n({type:"SPOTIFY_LIBRARY_"+p.toUpperCase()+"_CHECK",key:e,in_library:o})},function(e){n(i.handleException("Could not follow/unfollow",e))})}},t.resolveRadioSeeds=function(e){return function(t,n){if(e.seed_artists.length>0){for(var r="",a=0;a0&&(r+=","),r+=u.getFromUri("artistid",e.seed_artists[a]);c(t,n,"artists?ids="+r).then(function(e){e&&e.artists?t({type:"ARTISTS_LOADED",artists:e.artists}):console.error("No Spotify artists returned",r)},function(e){t(i.handleException("Could not resolve radio artist seeds",e))})}if(e.seed_tracks.length>0){for(var o="",a=0;a0&&(o+=","),o+=u.getFromUri("trackid",e.seed_tracks[a]);c(t,n,"tracks?ids="+o).then(function(e){t({type:"TRACKS_LOADED",tracks:e.tracks})},function(e){t(i.handleException("Could not load radio track seeds",e))})}}},t.getFavorites=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"long_term";return function(r,a){r({type:"SPOTIFY_FAVORITES_LOADED",artists:[],tracks:[]}),e.when(c(r,a,"me/top/artists?limit="+t+"&time_range="+n),c(r,a,"me/top/tracks?limit="+t+"&time_range="+n)).then(function(e,t){r({type:"SPOTIFY_FAVORITES_LOADED",artists:e.items,tracks:t.items})},function(e,t){r(i.handleException("Could not load favorites",Object.assign({},e,t)))})}},t.getRecommendations=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return function(r,a){r({type:"CLEAR_SPOTIFY_RECOMMENDATIONS"});for(var o=[],s=[],l=[],p=0;p1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;return function(s,l){s(o.startProcess("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR","Loading playlist tracks",{uri:e,next:"playlists/"+u.getFromUri("playlistid",e)+"/tracks?market="+l().spotify.country,shuffle:t,play_next:r,at_position:a,offset:i,callback_action:n}))}},t.getAllPlaylistTracksProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(r){if(void 0!==n().ui.processes.SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR){var i=n().ui.processes.SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR;if("cancelling"==i.status)return t(o.processCancelled("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR")),!1}var l=[],c=[],p=!0,d=!1,f=void 0;try{for(var h,m=r.items[Symbol.iterator]();!(p=(h=m.next()).done);p=!0){var y=h.value;y.track&&c.push(y.track.uri)}}catch(e){d=!0,f=e}finally{try{!p&&m.return&&m.return()}finally{if(d)throw f}}l=e.uris?[].concat(a(e.uris),c):c,r.next?(t(o.updateProcess("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR","Loading "+(r.total-l.length)+" playlist tracks",Object.assign({},e,{next:r.next,total:r.total,remaining:r.total-l.length}))),t(o.runProcess("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR",Object.assign({},e,{next:r.next,uris:l})))):(e.shuffle&&(l=u.shuffle(l)),t(o.processFinished("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR")),"enqueue"==e.callback_action?t(s.enqueueURIs(l,e.uri,e.play_next,e.at_position,e.offset)):t(s.playURIs(l,e.uri)))},function(e){t(i.handleException("Could not load tracks to play playlist",e))})}},t.toggleFollowingPlaylist=function(e,t){if("PUT"==t)var n=1;if("DELETE"==t)var n=0;return function(r,a){c(r,a,"playlists/"+u.getFromUri("playlistid",e)+"/followers",t).then(function(t){r({type:"SPOTIFY_PLAYLIST_FOLLOWING_LOADED",key:e,is_following:n})},function(e){r(i.handleException("Could not add/remove library playlist",e))})}},t.addTracksToPlaylist=function(e,t){return function(n,r){c(n,r,"playlists/"+u.getFromUri("playlistid",e)+"/tracks","POST",{uris:t}).then(function(r){n({type:"PLAYLIST_TRACKS_ADDED",key:e,tracks_uris:t,snapshot_id:r.snapshot_id})},function(e){n(i.handleException("Could not add tracks to playlist",e))})}},t.deleteTracksFromPlaylist=function(e,t,n){return function(r,a){c(r,a,"playlists/"+u.getFromUri("playlistid",e)+"/tracks","DELETE",{snapshot_id:t,positions:n}).then(function(t){r({type:"PLAYLIST_TRACKS_REMOVED",key:e,tracks_indexes:n,snapshot_id:t.snapshot_id})},function(e){r(i.handleException("Could not remove tracks from playlist",e))})}},t.reorderPlaylistTracks=function(e,t,n,r,a){return function(o,s){c(o,s,"playlists/"+u.getFromUri("playlistid",e)+"/tracks","PUT",{uri:e,range_start:t,range_length:n,insert_before:r,snapshot_id:a}).then(function(a){o({type:"PLAYLIST_TRACKS_REORDERED",key:e,range_start:t,range_length:n,insert_before:r,snapshot_id:a.snapshot_id})},function(e){o(i.handleException("Could not reorder playlist tracks",e))})}},t.flushLibrary=function(){return{type:"SPOTIFY_FLUSH_LIBRARY"}},t.getLibraryPlaylists=function(){return function(e,t){var n=t().ui.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR;n?"cancelled"==n.status?e(o.resumeProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR")):"finished"!=n.status||t().spotify.library_playlists_loaded_all||e(o.startProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR","Loading Spotify playlists",{next:"me/playlists?limit=50"})):e(o.startProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR","Loading Spotify playlists",{next:"me/playlists?limit=50"}))}},t.getLibraryPlaylistsProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(e){if(t({type:"SPOTIFY_LIBRARY_PLAYLISTS_LOADED",playlists:e.items}),void 0!==n().ui.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR){var r=n().ui.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR;if("cancelling"==r.status)return t(o.processCancelled("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR")),!1}if(e.next){var a=e.total,i=n().spotify.library_playlists.length,s=a-i;t(o.updateProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR","Loading "+s+" Spotify playlists",{next:e.next,total:e.total,remaining:s})),t(o.runProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR",{next:e.next}))}else t(o.processFinishing("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR")),t({type:"SPOTIFY_LIBRARY_PLAYLISTS_LOADED_ALL"})},function(e){t(i.handleException("Could not load library playlists",e))})}},t.getLibraryArtists=function(){return function(e,t){var n=t().ui.processes.SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR;n?"cancelled"==n.status?e(o.resumeProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR")):"finished"!=n.status||t().spotify.library_artists_loaded_all||e(o.startProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR","Loading Spotify artists",{next:"me/following?type=artist&limit=50"})):e(o.startProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR","Loading Spotify artists",{next:"me/following?type=artist&limit=50"}))}},t.getLibraryArtistsProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(e){if(t({type:"SPOTIFY_LIBRARY_ARTISTS_LOADED",artists:e.artists.items}),void 0!==n().ui.processes.SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR){var r=n().ui.processes.SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR;if("cancelling"==r.status)return t(o.processCancelled("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR")),!1}if(e.artists.next){var a=e.artists.total,i=n().spotify.library_artists.length,s=a-i;t(o.updateProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR","Loading "+s+" Spotify artists",{next:e.artists.next,total:e.artists.total,remaining:s})),t(o.runProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR",{next:e.artists.next}))}else t(o.processFinishing("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR"))},function(e){t(i.handleException("Could not load library artists",e))})}},t.getLibraryAlbums=function(){return function(e,t){var n=t().ui.processes.SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR;n?"cancelled"==n.status?e(o.updateProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading Spotify albums",{next:"me/albums?limit=50"})):"finished"!=n.status||t().spotify.library_albums_loaded_all||e(o.startProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading Spotify albums",{next:"me/albums?limit=50"})):e(o.startProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading Spotify albums",{next:"me/albums?limit=50"}))}},t.getLibraryAlbumsProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(e){if(t({type:"SPOTIFY_LIBRARY_ALBUMS_LOADED",albums:e.items}),void 0!==n().ui.processes.SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR){var r=n().ui.processes.SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR;if("cancelling"==r.status)return t(o.processCancelled("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR")),!1}if(e.next){var a=e.total,i=n().spotify.library_albums.length,s=a-i;t(o.updateProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading "+s+" Spotify albums",{next:e.next,total:e.total,remaining:s})),t(o.runProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR",{next:e.next}))}else t(o.processFinishing("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR"))},function(e){t(i.handleException("Could not load library albums",e))})}};var i=n(10),o=n(3),s=n(7),l=n(17),u=n(2),c=function(t,n,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"GET",s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],l=u.generateGuid();return t(o.startLoading(l,"spotify_"+r)),new Promise(function(u,c){(function e(t,n){return new Promise(function(r,a){n().spotify.token_expiry&&(new Date).getTime()1&&void 0!==arguments[1]&&arguments[1];return function(r,a){var o={},s=[c(r,a,"artists/"+u.getFromUri("artistid",t)).then(function(e){Object.assign(o,e)},function(e){r(i.handleException("Could not load artist",e))})];n&&(s.push(c(r,a,"artists/"+u.getFromUri("artistid",t)+"/top-tracks?country="+a().spotify.country).then(function(e){Object.assign(o,e)},function(e){r(i.handleException("Could not load artist's top tracks",e))})),s.push(c(r,a,"artists/"+u.getFromUri("artistid",t)+"/related-artists").then(function(e){r(i.artistsLoaded(e.artists)),Object.assign(o,{related_artists_uris:u.arrayOf("uri",e.artists)})},function(e){r(i.handleException("Could not load artist's related artists",e))}))),e.when.apply(e,s).then(function(){o.musicbrainz_id?r(l.getArtist(o.uri,!1,o.musicbrainz_id)):r(l.getArtist(o.uri,o.name.replace("&","and"))),r(i.artistLoaded(o)),n&&c(r,a,"artists/"+u.getFromUri("artistid",t)+"/albums?market="+a().spotify.country).then(function(e){r({type:"SPOTIFY_ARTIST_ALBUMS_LOADED",artist_uri:t,data:e})},function(e){r(i.handleException("Could not load artist's albums",e))})})}}}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2];return{type:"SEARCH_STARTED",search_type:e,query:t,only_mopidy:n}},t.handleException=o,t.debugResponse=function(e){return{type:"DEBUG",response:e}},t.set=function(e){return{type:"CORE_SET",data:e}},t.clearCurrentTrack=function(){return{type:"CLEAR_CURRENT_TRACK"}},t.cachebustHttpStream=function(){return{type:"CACHEBUST_HTTP_STREAM"}},t.loadTrack=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_TRACK",uri:e,force_reload:t}},t.loadAlbum=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_ALBUM",uri:e,force_reload:t}},t.loadArtist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_ARTIST",uri:e,force_reload:t}},t.loadPlaylist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_PLAYLIST",uri:e,force_reload:t}},t.loadUser=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_USER",uri:e,force_reload:t}},t.loadUserPlaylists=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_USER_PLAYLISTS",uri:e,force_reload:t}},t.trackLoaded=function(e){return s([e])},t.tracksLoaded=s,t.artistLoaded=function(e){return l([e])},t.artistsLoaded=l,t.albumLoaded=function(e){return u([e])},t.albumsLoaded=u,t.playlistLoaded=function(e){return c([e])},t.playlistsLoaded=c,t.userLoaded=function(e){return p([e])},t.usersLoaded=p,t.userPlaylistsLoaded=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{type:"USER_PLAYLISTS_LOADED",uri:e,playlists:t,more:n,total:r}},t.loadedMore=function(e,t,n,r){return{type:"LOADED_MORE",parent_type:e,parent_key:t,records_type:n,records_data:r}},t.removeFromIndex=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:"REMOVE_FROM_INDEX",index_name:e,key:t,new_key:n}},t.reorderPlaylistTracks=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=r.createRange(t);switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_REORDER_PLAYLIST_TRACKS",key:e,range_start:i.start,range_length:i.length,insert_before:n,snapshot_id:a};case"m3u":return{type:"MOPIDY_REORDER_PLAYLIST_TRACKS",key:e,range_start:i.start,range_length:i.length,insert_before:n}}},t.savePlaylist=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_SAVE_PLAYLIST",key:e,name:t,description:""==n?null:n,image:o,is_public:a,is_collaborative:i};case"m3u":return{type:"MOPIDY_SAVE_PLAYLIST",key:e,name:t}}return!1},t.createPlaylist=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];switch(e){case"spotify":return""==n&&(n=null),a.createPlaylist(t,n,r,o);default:return i.createPlaylist(t,e)}return!1},t.deletePlaylist=function(e){switch(r.uriSource(e)){case"spotify":return a.following(e,"DELETE");default:return i.deletePlaylist(e)}return!1},t.removeTracksFromPlaylist=function(e,t){switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_REMOVE_PLAYLIST_TRACKS",key:e,tracks_indexes:t};case"m3u":return{type:"MOPIDY_REMOVE_PLAYLIST_TRACKS",key:e,tracks_indexes:t}}},t.addTracksToPlaylist=function(e,t){switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_ADD_PLAYLIST_TRACKS",key:e,tracks_uris:t};case"m3u":return{type:"MOPIDY_ADD_PLAYLIST_TRACKS",key:e,tracks_uris:t}}},t.getLibraryPlaylists=function(){return{type:"GET_LIBRARY_PLAYLISTS"}},t.getLibraryAlbums=function(){return{type:"GET_LIBRARY_ALBUMS"}},t.getLibraryArtists=function(){return{type:"GET_LIBRARY_ARTISTS"}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2));var a=n(8),i=n(7);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return!e&&t.message?e=t.message:!e&&t.error.message&&(e=t.error.message),!n&&t.description?n=t.description:!n&&t.error&&t.error.description&&(n=t.error.description),{type:"HANDLE_EXCEPTION",message:e,description:n,data:t,show_notification:r}}function s(e){return{type:"TRACKS_LOADED",tracks:e}}function l(e){return{type:"ARTISTS_LOADED",artists:e}}function u(e){return{type:"ALBUMS_LOADED",albums:e}}function c(e){return{type:"PLAYLISTS_LOADED",playlists:e}}function p(e){return{type:"USERS_LOADED",users:e}}}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),a=s(r),i=s(n(9)),o=s(n(6));function s(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.memo)(function(e){var t=function(){if(e.image)return e.image;if(e.images){var t=e.images;Array.isArray(t)&&t.length>0&&(t=t[0]);var n="medium";if(e.size&&(n=e.size),t[n])return t[n]}return null}(),n="thumbnail thumbnail--loaded";e.size&&(n+=" thumbnail--"+e.size),e.circle&&(n+=" thumbnail--circle"),e.className&&(n+=" "+e.className);var r=null;return e.canZoom&&t&&(r=a.default.createElement(i.default,{className:"thumbnail__zoom",to:"/image-zoom?url="+t},a.default.createElement(o.default,{name:"search"}))),a.default.createElement("div",{className:n},a.default.createElement("div",{className:"thumbnail__image",style:{backgroundImage:'url("'+(t||"/iris/assets/no-image.svg")+'")'}}),r)})},function(e,t,n){"use strict";e.exports=function(e,t,n,r,a,i,o,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,i,o,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setPort=function(e){return{type:"PUSHER_SET_PORT",port:e}},t.setUsername=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"PUSHER_SET_USERNAME",username:e.replace(/[\W_]+/g,""),force:t}},t.connect=function(){return{type:"PUSHER_CONNECT"}},t.disconnect=function(){return{type:"PUSHER_DISCONNECT"}},t.upgrade=function(){return{type:"PUSHER_UPGRADE"}},t.reload=function(){return{type:"PUSHER_RELOAD"}},t.restart=function(){return{type:"PUSHER_RESTART"}},t.localScan=function(){return{type:"PUSHER_LOCAL_SCAN"}},t.getConnections=function(){return{type:"PUSHER_GET_CONNECTIONS"}},t.connectionAdded=function(e){return{type:"PUSHER_CONNECTION_ADDED",connection:e}},t.updateConnection=function(e){return{type:"PUSHER_UPDATE_CONNECTION",connection:e}},t.connectionChanged=function(e){return{type:"PUSHER_CONNECTION_CHANGED",connection:e}},t.connectionRemoved=function(e){return{type:"PUSHER_CONNECTION_REMOVED",connection:e}},t.request=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{type:"PUSHER_REQUEST",method:e,params:t,response_callback:n,error_callback:r}},t.getConfig=function(){return{type:"PUSHER_GET_CONFIG"}},t.getVersion=function(){return{type:"PUSHER_GET_VERSION"}},t.deliverBroadcast=function(e,t){return{type:"PUSHER_DELIVER_BROADCAST",data:{method:e,params:t}}},t.deliverMessage=function(e,t,n){return{type:"PUSHER_DELIVER_MESSAGE",data:{recipient:e,method:t,params:n}}},t.getRadio=function(){return{type:"PUSHER_GET_RADIO"}},t.startRadio=function(e){return{type:"PUSHER_START_RADIO",uris:e}},t.updateRadio=function(e){return{type:"PUSHER_UPDATE_RADIO",uris:e}},t.stopRadio=function(){return{type:"PUSHER_STOP_RADIO"}},t.radioStarted=function(e){return{type:"PUSHER_RADIO_STARTED",radio:e}},t.radioChanged=function(e){return{type:"PUSHER_RADIO_CHANGED",radio:e}},t.radioStopped=function(){return{type:"PUSHER_RADIO_STOPPED"}},t.debug=function(){return{type:"PUSHER_DEBUG",message:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},t.getQueueMetadata=function(){return{type:"PUSHER_GET_QUEUE_METADATA"}},t.queueMetadataChanged=function(e){return{type:"PUSHER_QUEUE_METADATA_CHANGED",queue_metadata:e}},t.addQueueMetadata=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"PUSHER_ADD_QUEUE_METADATA",tlids:e,from_uri:t}},t.getCommands=function(){return{type:"PUSHER_GET_COMMANDS"}},t.setCommand=function(e){return{type:"PUSHER_SET_COMMAND",command:e}},t.setCommands=function(e){return{type:"PUSHER_SET_COMMANDS",commands:e}},t.removeCommand=function(e){return{type:"PUSHER_REMOVE_COMMAND",id:e}},t.runCommand=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"PUSHER_RUN_COMMAND",id:e,notify:t}},t.commandsUpdated=function(e){return{type:"PUSHER_COMMANDS_UPDATED",commands:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2];return function(a,i){if(n)var s="method=artist.getInfo&mbid="+n;else{t=t.replace("&","and");var s="method=artist.getInfo&artist="+(t=encodeURIComponent(t))}o(a,i,s).then(function(t){if(t.artist){var n={uri:e,mbid:t.artist.mbid,biography:t.artist.bio.content,biography_publish_date:t.artist.bio.published,biography_link:t.artist.bio.links.link.href,listeners:parseInt(t.artist.stats.listeners)};a(r.artistLoaded(n))}},function(e){})}},t.getAlbum=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(i,s){if(a)var l="method=album.getInfo&mbid="+a;else{t=encodeURIComponent(t);var l="method=album.getInfo&album="+(n=encodeURIComponent(n))+"&artist="+t}o(i,s,l).then(function(t){if(t.album){var n=s().core.albums[e],a={uri:e,images:t.album.image,listeners:parseInt(t.album.listeners),play_count:parseInt(t.album.playcount),mbid:t.album.mbid,wiki:t.album.wiki?t.album.wiki.content:null,wiki_publish_date:t.album.wiki?t.album.wiki.published:null};n&&n.images&&delete a.images,i(r.albumLoaded(a))}},function(e){})}},t.getImages=function(e,t){return function(n,a){var s=a().core[e][t];if(s)switch(e){case"tracks":if(s.mbid)var l="method=album.getInfo&mbid="+s.mbid;else if(s.artists&&s.artists.length>0&&s.album)var u=encodeURIComponent(s.artists[0].name),c=encodeURIComponent(s.album.name),l="method=album.getInfo&album="+c+"&artist="+u;l&&o(n,a,l).then(function(e){if(e.album){var a=i.formatImages(e.album.image);n(r.trackLoaded({uri:t,images:a}))}});break;case"albums":if(s.mbid)var l="method=album.getInfo&mbid="+s.mbid;else if(s.artists&&s.artists.length>0)var u=encodeURIComponent(s.artists[0].name),c=encodeURIComponent(s.name),l="method=album.getInfo&album="+c+"&artist="+u;l&&o(n,a,l).then(function(e){e.album&&(s=Object.assign({},s,{images:e.album.image}),n(r.albumLoaded(s)))})}}},t.loveTrack=function(e){return function(t,n){if(void 0!==n().core.tracks[e]){var a=n().core.tracks[e];if(a.artists){var i=encodeURIComponent(a.artists[0].name),o="method=track.love&track="+a.name+"&artist="+i;s(t,n,o).then(function(e){a=Object.assign({},a,{userloved:!0}),t({type:"TRACKS_LOADED",tracks:[a]})})}else t(r.handleException("Could not love LastFM track",a,"Track has no artists"))}else t(r.handleException("Could not love LastFM track",a,"Could not find track in index"))}},t.unloveTrack=function(e){return function(t,n){if(void 0!==n().core.tracks[e]){var a=n().core.tracks[e];if(a.artists){var i=encodeURIComponent(a.artists[0].name),o="method=track.unlove&track="+a.name+"&artist="+i;s(t,n,o).then(function(e){a=Object.assign({},a,{userloved:!1}),t({type:"TRACKS_LOADED",tracks:[a]})})}else t(r.handleException("Could not unlove LastFM track",a,"Track has no artists"))}else t(r.handleException("Could not unlove LastFM track",a,"Could not find track in index"))}},t.scrobble=function(e){return function(t,n){var a=e.name,i="Unknown";e.artists&&(i=e.artists[0].name);var i=encodeURIComponent(i),o="method=track.scrobble";o+="&track="+a+"&artist="+i,o+="×tamp="+Math.floor(Date.now()/1e3),s(t,n,o).then(function(e){},function(e){t(r.handleException("Could not scrobble LastFM track",e,e.description?e.description:null))})}};var r=n(10),a=n(3),i=n(2);var o=function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return new Promise(function(n,s){var l=i.generateGuid(),u=r.substring(r.indexOf("method=")+7,r.length);u=u.substring(0,u.indexOf("&")),t(a.startLoading(l,"lastfm_"+u));var c={method:"GET",cache:!0,timeout:3e4,url:"https://ws.audioscrobbler.com/2.0/?format=json&"+r};o?c.method="POST":c.url+="&api_key=4320a3ef51c9b3d69de552ac083c55e3",e.ajax(c).then(function(e){t(a.stopLoading(l)),e.error?s({config:c,error:e}):n(e)},function(e,n,r){t(a.stopLoading(l));var i=null;e&&e.responseJSON&&e.responseJSON.message&&(i=e.responseJSON.message),s({config:c,error:r,description:i,status:n,xhr:e})})})},s=function(t,n,r){return new Promise(function(s,l){n().lastfm.authorization||l({params:r,error:"No active LastFM authorization (session)"});var u=i.generateGuid(),c=r.substring(r.indexOf("method=")+7,r.length);c=c.substring(0,c.indexOf("&")),t(a.startLoading(u,"lastfm_"+c)),r+="&sk="+n().lastfm.authorization.key;var p={method:"GET",cache:!1,timeout:3e4,url:n().lastfm.authorization_url+"?action=sign_request&"+r};e.ajax(p).then(function(e){t(a.stopLoading(u)),o(t,n,e.params,!0).then(function(e){s(e)},function(e){l(e)})},function(e,n,r){t(a.stopLoading(u)),l(r)})})}}).call(this,n(19))},function(e,t,n){"use strict";var r=n(25);function a(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,a=e.length;r1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],r=t&&t.split("/")||[],o=e&&a(e),s=t&&a(t),l=o||s;if(e&&a(e)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";var u=void 0;if(r.length){var c=r[r.length-1];u="."===c||".."===c||""===c}else u=!1;for(var p=0,d=r.length;d>=0;d--){var f=r[d];"."===f?i(r,d):".."===f?(i(r,d),p++):p&&(i(r,d),p--)}if(!l)for(;p--;p)r.unshift("..");!l||""===r[0]||r[0]&&a(r[0])||r.unshift("");var h=r.join("/");return u&&"/"!==h.substr(-1)&&(h+="/"),h},s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every(function(t,r){return e(t,n[r])});var r=void 0===t?"undefined":s(t);if(r!==(void 0===n?"undefined":s(n)))return!1;if("object"===r){var a=t.valueOf(),i=n.valueOf();if(a!==t||i!==n)return e(a,i);var o=Object.keys(t),l=Object.keys(n);return o.length===l.length&&o.every(function(r){return e(t[r],n[r])})}return!1},u=!0,c="Invariant failed";var p=function(e,t){if(!e)throw u?new Error(c):new Error(c+": "+(t||""))};function d(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function h(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function m(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function y(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function _(e,t,n,a){var i;"string"==typeof e?(i=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(i.key=n),a?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=o(i.pathname,a.pathname)):i.pathname=a.pathname:i.pathname||(i.pathname="/"),i}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,a):a(!0):a(!1!==i)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r=0?t:0)+"#"+e)}function x(e){void 0===e&&(e={}),g||p(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,i=void 0===a?E:a,o=n.hashType,s=void 0===o?"slash":o,l=e.basename?m(d(e.basename)):"",u=A[s],c=u.encodePath,f=u.decodePath;function k(){var e=f(C());return l&&(e=h(e,l)),_(e)}var O=b();function w(e){Object(r.a)(F,e),F.length=t.length,O.notifyListeners(F.location,F.action)}var S=!1,x=null;function R(){var e=C(),t=c(e);if(e!==t)P(t);else{var n=k(),r=F.location;if(!S&&v(r,n))return;if(x===y(n))return;x=null,function(e){if(S)S=!1,w();else{O.confirmTransitionTo(e,"POP",i,function(t){t?w({action:"POP",location:e}):function(e){var t=F.location,n=D.lastIndexOf(y(t));-1===n&&(n=0);var r=D.lastIndexOf(y(e));-1===r&&(r=0);var a=n-r;a&&(S=!0,I(a))}(e)})}}(n)}}var N=C(),M=c(N);N!==M&&P(M);var L=k(),D=[y(L)];function I(e){t.go(e)}var j=0;function U(e){1===(j+=e)&&1===e?window.addEventListener(T,R):0===j&&window.removeEventListener(T,R)}var Y=!1;var F={length:t.length,action:"POP",location:L,createHref:function(e){return"#"+c(l+y(e))},push:function(e,t){var n=_(e,void 0,void 0,F.location);O.confirmTransitionTo(n,"PUSH",i,function(e){if(e){var t=y(n),r=c(l+t);if(C()!==r){x=t,function(e){window.location.hash=e}(r);var a=D.lastIndexOf(y(F.location)),i=D.slice(0,-1===a?0:a+1);i.push(t),D=i,w({action:"PUSH",location:n})}else w()}})},replace:function(e,t){var n=_(e,void 0,void 0,F.location);O.confirmTransitionTo(n,"REPLACE",i,function(e){if(e){var t=y(n),r=c(l+t);C()!==r&&(x=t,P(r));var a=D.indexOf(y(F.location));-1!==a&&(D[a]=t),w({action:"REPLACE",location:n})}})},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return Y||(U(1),Y=!0),function(){return Y&&(Y=!1,U(-1)),t()}},listen:function(e){var t=O.appendListener(e);return U(1),function(){U(-1),t()}}};return F}function R(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,i=void 0===a?["/"]:a,o=t.initialIndex,s=void 0===o?0:o,l=t.keyLength,u=void 0===l?6:l,c=b();function p(e){Object(r.a)(g,e),g.length=g.entries.length,c.notifyListeners(g.location,g.action)}function d(){return Math.random().toString(36).substr(2,u)}var f=R(s,0,i.length-1),h=i.map(function(e){return _(e,void 0,"string"==typeof e?d():e.key||d())}),m=y;function v(e){var t=R(g.index+e,0,g.entries.length-1),r=g.entries[t];c.confirmTransitionTo(r,"POP",n,function(e){e?p({action:"POP",location:r,index:t}):p()})}var g={length:h.length,action:"POP",location:h[f],index:f,entries:h,createHref:m,push:function(e,t){var r=_(e,t,d(),g.location);c.confirmTransitionTo(r,"PUSH",n,function(e){if(e){var t=g.index+1,n=g.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),p({action:"PUSH",location:r,index:t,entries:n})}})},replace:function(e,t){var r=_(e,t,d(),g.location);c.confirmTransitionTo(r,"REPLACE",n,function(e){e&&(g.entries[g.index]=r,p({action:"REPLACE",location:r}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=g.index+e;return t>=0&&t1&&void 0!==arguments[1]?arguments[1]:{};if(a){var n=a.getItem(e);return n?JSON.parse(n):t}return console.warn("localStorage not available. Using default value for '"+e+"'."),t},t.setStorage=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(a){var r=a.getItem(e);if(!r||n)var i=t;else i=Object.assign({},JSON.parse(r),t);a.setItem(e,JSON.stringify(i))}else console.warn("localStorage not available. '"+e+"'' will not perist when you close your browser.")},t.toJSON=function(e){try{return JSON.parse(e)}catch(t){if(e.constructor==={}.constructor)return e;console.error("Could not convert non-JSON",string)}return{}},t.setFavicon=function(e){var t=document.getElementsByClassName("favicon"),n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value,l=document.createElement("link");l.className=s.className,l.rel=s.rel,l.href="/iris/assets/"+e,s.type&&(l.type=s.type),document.head.removeChild(s),document.head.appendChild(l)}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}},t.isCached=function(e){var t=new Image;return t.src=e,t.complete},t.digestMopidyImages=function(e,t){for(var n=[],a=0;a0&&void 0!==arguments[0]?arguments[0]:"numeric")){var e=(new Date).valueOf().toString(),t=Math.floor(100*Math.random()).toString();return parseInt(e+t)}return"xxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})},t.getCurrentPusherConnection=function(e,t){var n=newProps.pusher.connections.find(function(e){return e.connectionid==newProps.pusher.connectionid});return n||!1},t.getTrackIcon=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t)return!1;if(!e)return!1;if(void 0===e.uri)return!1;if(void 0===t.tracks[e.uri])return!1;var n=t.tracks[e.uri];return!!n.images&&i(n.images).small},t.formatImages=function(e){var t={formatted:!0,small:null,medium:null,large:null,huge:null};if(!e)return t;if(Array.isArray(e)){if(e.length<=0)return t;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.push(u(s))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatAlbums=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(n=(i=s.next()).done);n=!0){var l=i.value;t.push(o(l))}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return t},t.formatArtists=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var l=i.value;t.push(s(l))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatPlaylists=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.push(u(s))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatUsers=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.push(l(s))}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t},t.formatAlbum=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["uri","provider","name","type","added_at","release_date","listeners","play_count","wiki","wiki_publish_date","popularity","images","artists_uris","tracks_uris","artists"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return t.images&&!t.images.formatted&&(t.images=i(t.images)),e.date&&!t.date&&(t.release_date=e.date),e.album_type&&(t.type=e.album_type),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t}),s=t.formatArtist=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["uri","provider","mbid","name","type","popularity","followers","listeners","added_at","biography","biography_link","biography_publish_date","related_artists_uris","albums_uris","albums_total","albums_more","tracks_uris","tracks_total","tracks_more"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return e.images&&e.images.length>0&&(t.images=[i(e.images)]),e.followers&&void 0!==e.followers.total&&(t.followers=e.followers.total),e.bio&&(e.bio.content&&!t.biography&&(t.biography=e.bio.content),e.bio.links&&e.bio.links.link&&e.bio.links.link.href&&!t.biography_link&&(t.biography_link=e.bio.links.link.href),e.bio.published&&!t.biography_publish_date&&(t.biography_publish_date=e.bio.published)),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t},l=(t.formatPlaylist=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["uri","snapshot_id","provider","type","collaborative","public","name","description","images","popularity","followers","added_at","last_modified_date","can_edit","owner","user_uri","tracks_uris","tracks_total","tracks_more"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return t.images&&!t.images.formatted&&(t.images=i(t.images)),e.followers&&void 0!==e.followers.total&&(t.followers=e.followers.total),e.tracks&&void 0!==e.tracks.total&&(t.tracks_total=e.tracks.total),e.owner&&(t.owner={id:e.owner.id,uri:e.owner.uri,name:e.owner.display_name?e.owner.display_name:null},t.user_uri=e.owner.uri),t.uri=h(t.uri),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t},t.formatUser=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var o,s=["id","uri","provider","name","images","followers","playlists_uris","playlists_total","playlists_more"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return!t.images&&e.image?t.images=i(e.image):!t.images&&e.avatar?t.images=i(e.avatar):t.images&&!t.images.formatted&&(t.images=i(t.images)),e.followers&&void 0!==e.followers.total&&(t.followers=e.followers.total),e.realname&&(t.name=e.realname),e.display_name&&!t.name&&(t.name=e.display_name),e.id&&!t.name&&(t.name=e.id),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t}),u=t.formatTrack=function(e){var t={};e&&e.track&&d(e.track)&&(e.added_by&&(e.track.added_by=e.added_by),e.added_at&&(e.track.added_at=e.added_at),e.tlid&&(e.track.tlid=e.tlid),e=e.track);var n=!0,r=!1,a=void 0;try{for(var o,s=["uri","tlid","provider","name","images","release_date","disc_number","track_number","duration","followers","popularity","userloved","is_explicit","is_local","lyrics","lyrics_path","lyrics_results","artists","album"][Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;e.hasOwnProperty(l)&&(t[l]=e[l])}}catch(e){r=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return e.followers&&e.followers.total&&(t.followers=e.followers.total),void 0===t.duration&&void 0!==e.duration_ms?t.duration=e.duration_ms:void 0===t.duration&&void 0!==e.length&&(t.duration=e.length),void 0===t.track_number&&void 0!==e.track_no&&(t.track_number=e.track_no),void 0===t.disc_number&&void 0!==e.disc_no&&(t.disc_number=e.disc_no),void 0===t.release_date&&void 0!==e.date&&(t.release_date=e.date),void 0===t.explicit&&void 0!==e.explicit&&(t.is_explicit=e.explicit),e.album&&e.album.images&&(void 0!==t.images&&t.images.formatted||(t.images=i(e.album.images))),void 0===t.provider&&void 0!==t.uri&&(t.provider=c(t.uri)),t},c=(t.formatClient=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var i,o=["id","connected","name","host_name","volume","mute","latency","power_on_command","power_off_command"][Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;e.hasOwnProperty(s)&&(t[s]=e[s])}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return e.config&&(void 0===t.latency&&void 0!==e.config.latency&&(t.latency=e.config.latency),!t.name&&e.config.name&&(t.name=e.config.name),e.config.volume&&(e.config.volume.percent&&(t.volume=e.config.volume.percent),e.config.volume.muted&&(t.mute=e.config.volume.muted))),void 0===t.name&&e.host&&e.host.name&&(t.name=e.host.name),t},t.formatGroup=function(e){var t={},n=!0,r=!1,a=void 0;try{for(var i,o=["id","name","mute","stream_id","clients_ids"][Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;e.hasOwnProperty(s)&&(t[s]=e[s])}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return void 0!==t.name&&""!==t.name||(t.name="Group "+e.id.substring(0,3)),void 0===t.mute&&void 0!==e.mute&&(t.mute=e.mute),t},t.collate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==(e=Object.assign({},e)).artists_uris&&(e.artists=[]),void 0!==e.albums_uris&&(e.albums=[]),void 0!==e.tracks_uris&&(e.tracks=[]),void 0!==e.users_uris&&(e.users=[]),void 0!==e.playlists_uris&&(e.playlists=[]),void 0!==e.related_artists_uris&&(e.related_artists=[]),void 0!==e.clients_ids&&(e.clients=[]),t.artists){if(e.artists_uris){var n=!0,r=!1,a=void 0;try{for(var i,o=e.artists_uris[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;t.artists[s]&&e.artists.push(t.artists[s])}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}}if(e.related_artists_uris){var l=!0,u=!1,c=void 0;try{for(var p,d=e.related_artists_uris[Symbol.iterator]();!(l=(p=d.next()).done);l=!0){s=p.value;t.artists[s]&&e.related_artists.push(t.artists[s])}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}}e.artist_uri&&t.artists[e.artist_uri]&&(e.artist=t.artists[e.artist_uri])}if(t.albums){if(e.albums_uris){var f=!0,h=!1,m=void 0;try{for(var y,_=e.albums_uris[Symbol.iterator]();!(f=(y=_.next()).done);f=!0){s=y.value;t.albums[s]&&e.albums.push(t.albums[s])}}catch(e){h=!0,m=e}finally{try{!f&&_.return&&_.return()}finally{if(h)throw m}}}e.album_uri&&t.albums[e.album_uri]&&(e.album=t.albums[e.album_uri])}if(t.tracks){if(e.tracks_uris){var v=!0,b=!1,g=void 0;try{for(var E,k=e.tracks_uris[Symbol.iterator]();!(v=(E=k.next()).done);v=!0){s=E.value;t.tracks[s]&&e.tracks.push(t.tracks[s])}}catch(e){b=!0,g=e}finally{try{!v&&k.return&&k.return()}finally{if(b)throw g}}}e.track_uri&&t.tracks[e.track_uri]&&(e.track=t.tracks[e.track_uri])}if(t.users){if(e.users_uris){var O=!0,w=!1,S=void 0;try{for(var T,A=e.users_uris[Symbol.iterator]();!(O=(T=A.next()).done);O=!0){s=T.value;t.users[s]&&e.users.push(t.users[s])}}catch(e){w=!0,S=e}finally{try{!O&&A.return&&A.return()}finally{if(w)throw S}}}e.user_uri&&t.users[e.user_uri]&&(e.user=t.users[e.user_uri])}if(t.playlists){if(e.playlists_uris){var C=!0,P=!1,x=void 0;try{for(var R,N=e.playlists_uris[Symbol.iterator]();!(C=(R=N.next()).done);C=!0){s=R.value;t.playlists[s]&&e.playlists.push(t.playlists[s])}}catch(e){P=!0,x=e}finally{try{!C&&N.return&&N.return()}finally{if(P)throw x}}}e.playlist_uri&&t.playlists[e.playlist_uri]&&(e.playlist=t.playlists[e.playlist_uri])}if(t.clients&&e.clients_ids){var M=!0,L=!1,D=void 0;try{for(var I,j=e.clients_ids[Symbol.iterator]();!(M=(I=j.next()).done);M=!0){var U=I.value;t.clients[U]&&e.clients.push(t.clients[U])}}catch(e){L=!0,D=e}finally{try{!M&&j.return&&j.return()}finally{if(L)throw D}}}return e},t.uriSource=function(e){return!!e&&e.split(":")[0]}),p=t.uriType=function(e){if(!e)return null;var t=e.split(":");if("m3u"==t[0])return"playlist";if("iris"==t[0])switch(t[1]){case"search":case"discover":case"browse":return t[1]}switch(t[1]){case"track":case"artist":case"album":case"playlist":case"genre":return t[1];case"user":return t.length>3&&"playlist"==t[3]?"playlist":t[1]}},d=(t.sourceIcon=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(e&&(t=c(e)),t){case"local":case"m3u":return"folder";case"gmusic":return"google";case"podcast":case"podcast+file":case"podcast+http":case"podcast+https":case"podcast+itunes":return"podcast";case"tunein":case"somafm":case"dirble":return"microphone";default:return t}},t.getFromUri=function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(":");t[0];switch(e){case"mbid":var n=t.indexOf("mbid");if(n>-1)return t[n+1];break;case"artistid":if("artist"==t[1])return t[2];break;case"albumid":if("album"==t[1])return t[2];break;case"playlistid":if("playlist"==t[1])return t[2];if("user"==t[1]&&"playlist"==t[3])return t[4];break;case"playlistowner":if("user"==t[1]&&"playlist"==t[3])return t[2];break;case"trackid":if("track"==t[1])return t[2];break;case"userid":if("user"==t[1])return t[2];break;case"genreid":if("genre"==t[1])return t[2];break;case"seeds":if("discover"==t[1])return t[2];break;case"searchtype":if("search"==t[0])return t[1];break;case"searchterm":if("search"==t[0])return t[2]}return null},t.buildLink=function(e){var t="/"+p(e)+"/";return t+=e=encodeURIComponent(e)},t.arrayOf=function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;void 0!==l[e]&&null!=l[e]&&n.push(l[e])}}catch(e){a=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(a)throw i}}return n},t.mergeDuplicates=function(e,t){var n=[],r={};for(var a in e){var i=e[a];i[t]in r&&(i=Object.assign({},r[i[t]],i)),r[i[t]]=i}for(a in r)n.push(r[a]);return n},t.removeDuplicates=function(e){var t=[];for(var n in e)t.indexOf(e[n])<=-1&&t.push(e[n]);return t},t.applyFilter=function(e,t,n){for(var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=[],i=0;i2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(!e||e.length<=0)return[];function a(e){var n=t.split("."),r=!0,a=!1,i=void 0;try{for(var o,s=n[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;if("first"==l){if(Array.isArray(e)&&e.length>0){e=e[0];continue}return null}if("length"==l)return Array.isArray(e)?e.length:0;if(void 0===e[l])return null;e=e[l]}}catch(e){a=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(a)throw i}}return e}var i=Object.assign([],e.sort(function(e,n){var i=a(e),o=a(n);if("uri"==t&&(i=c(i),o=c(o)),!r)return"boolean"==typeof i&&"boolean"==typeof o?i&&!o?-1:!i&&o?1:0:"number"==typeof i&&"number"==typeof o?null==i&&null==o?0:null==i?-1:null==o?1:parseInt(i)>parseInt(o)?1:parseInt(i)o.toLowerCase()?1:i.toLowerCase()l?-1:void 0}));return n&&i.reverse(),i},t.shuffle=function(e){var t,n,r;for(r=e.length-1;r>0;r--)t=Math.floor(Math.random()*(r+1)),n=e[r],e[r]=e[t],e[t]=n;return e},t.isNumeric=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},t.isObject=function(e){return e instanceof Object&&e.constructor===Object}),f=(t.isLoading=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];for(var n in e)if(e.hasOwnProperty(n))for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:["jaedb.github.io"],t=window.location.hostname;return e.includes(t)},t.getIndexedRecords=function(e,t){var n=[];!t instanceof Array&&(t=[t]);for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=document.getElementById("main");if(t||n.classList.remove("smooth-scroll"),e&&Number.isInteger(e))"function"==typeof n.scrollTo&&(n.scrollTop=e);else if(e){var r=null;"#"==e.charAt(0)?r=document.getElementById(e.substring(1)):"."==e.charAt(0)?(r=document.getElementsByClassName(e.substring(1))).length>0&&(r=r[0]):console.error("Invalid target type '"+e+"'. Must start with '#' or '.'."),r&&"function"==typeof r.scrollIntoView&&r.scrollIntoView()}else n.scrollTop=0;t||n.classList.add("smooth-scroll")},t.upgradeSpotifyPlaylistUris=function(e){var t=[],n=!0,r=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;s.includes("spotify:user:")&&(s=s.replace(/spotify:user:([^:]*?):/i,"spotify:")),t.push(s)}}catch(e){r=!0,a=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw a}}return t}),h=t.upgradeSpotifyPlaylistUri=function(e){return f([e])[0]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setWindowTitle=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"SET_WINDOW_TITLE",title:e,play_state:t}},t.setCurrentTrackTransition=function(e){return{type:"SET_CURRENT_TRACK_TRANSITION",current_track_transition:e}},t.setSelectedTracks=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];"string"==typeof e&&(e=[e]);return{type:"SET_SELECTED_TRACKS",keys:e}},t.showContextMenu=function(e){e.e.changedTouches?(e.position_x=e.e.changedTouches[0].clientX,e.position_y=e.e.changedTouches[0].clientY):e.e.touches?(e.position_x=e.e.touches[0].clientX,e.position_y=e.e.touches[0].clientY):(e.position_x=e.e.clientX,e.position_y=e.e.clientY);return{type:"SHOW_CONTEXT_MENU",data:e}},t.setSlimMode=function(e){return{type:"SET_SLIM_MODE",slim_mode:e}},t.setWindowFocus=function(e){return{type:"SET_WINDOW_FOCUS",window_focus:e}},t.hideContextMenu=function(){return{type:"HIDE_CONTEXT_MENU"}},t.removeContextMenu=function(){return{type:"REMOVE_CONTEXT_MENU"}},t.showTouchContextMenu=function(e){return{type:"SHOW_TOUCH_CONTEXT_MENU",data:e}},t.hideTouchContextMenu=function(){return{type:"HIDE_TOUCH_CONTEXT_MENU"}},t.removeTouchContextMenu=function(){return{type:"REMOVE_TOUCH_CONTEXT_MENU"}},t.lazyLoading=function(e){return{type:"LAZY_LOADING",start:e}},t.toggleSidebar=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"toggle",t={type:"TOGGLE_SIDEBAR"};"toggle"!=e&&(t.new_state=e);return t},t.dragStart=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;return{type:"DRAG_START",context:t,from_uri:n,victims:r,victims_indexes:a,start_x:e.clientX,start_y:e.clientY}},t.dragActive=function(){return{type:"DRAG_ACTIVE"}},t.dragEnd=function(){return{type:"DRAG_END"}},t.set=function(e){return{type:"UI_SET",data:e}},t.installPrompt=function(e){return{type:"INSTALL_PROMPT",event:e}},t.createBrowserNotification=function(e){return{type:"BROWSER_NOTIFICATION",data:e}},t.createNotification=function(e){e.message&&(e.content=e.message);"shortcut"==e.type&&(e.duration=.4);return{type:"CREATE_NOTIFICATION",notification:Object.assign({key:r.generateGuid(),duration:5,type:"default",title:null,content:null,description:null,sticky:!1,closing:!1,render_content:!1},e)}},t.closeNotification=function(e){return{type:"CLOSE_NOTIFICATION",key:e}},t.removeNotification=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"REMOVE_NOTIFICATION",key:e,manual:t}},t.startLoading=function(e,t){return{type:"START_LOADING",source:t,key:e}},t.stopLoading=function(e){return{type:"STOP_LOADING",key:e}},t.startProcess=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return{type:"START_PROCESS",key:e,message:t,data:n}},t.resumeProcess=function(e,t){arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{type:"RESUME_PROCESS",key:e}},t.updateProcess=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return{type:"UPDATE_PROCESS",key:e,message:t,data:n}},t.runProcess=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{type:e,data:t}},t.cancelProcess=function(e){return{type:"CANCEL_PROCESS",key:e}},t.processCancelled=function(e){return{type:"PROCESS_CANCELLED",key:e}},t.processFinishing=function(e){return{type:"PROCESS_FINISHING",key:e}},t.processFinished=function(e){return{type:"PROCESS_FINISHED",key:e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2))},function(e,t,n){"use strict";n.r(t),n.d(t,"createStore",function(){return s}),n.d(t,"combineReducers",function(){return u}),n.d(t,"bindActionCreators",function(){return p}),n.d(t,"applyMiddleware",function(){return h}),n.d(t,"compose",function(){return f}),n.d(t,"__DO_NOT_USE__ActionTypes",function(){return i});var r=n(68),a=function(){return Math.random().toString(36).substring(7).split("").join(".")},i={INIT:"@@redux/INIT"+a(),REPLACE:"@@redux/REPLACE"+a(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+a()}};function o(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function s(e,t,n){var a;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function");if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(s)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var l=e,u=t,c=[],p=c,d=!1;function f(){p===c&&(p=c.slice())}function h(){if(d)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return u}function m(e){if("function"!=typeof e)throw new Error("Expected the listener to be a function.");if(d)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var t=!0;return f(),p.push(e),function(){if(t){if(d)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");t=!1,f();var n=p.indexOf(e);p.splice(n,1)}}}function y(e){if(!o(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(d)throw new Error("Reducers may not dispatch actions.");try{d=!0,u=l(u,e)}finally{d=!1}for(var t=c=p,n=0;n=0||(a[n]=e[n]);return a}var f=n(67),h=n.n(f),m=n(12),y=n.n(m),_=n(66);function v(e,t){void 0===t&&(t={});var n=t,o=n.getDisplayName,s=void 0===o?function(e){return"ConnectAdvanced("+e+")"}:o,u=n.methodName,c=void 0===u?"connectAdvanced":u,f=n.renderCountProp,m=void 0===f?void 0:f,v=n.shouldHandleStateChanges,b=void 0===v||v,g=n.storeKey,E=void 0===g?"store":g,k=n.withRef,O=void 0!==k&&k,w=n.forwardRef,S=void 0!==w&&w,T=n.context,A=void 0===T?l:T,C=d(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);y()(void 0===m,"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension"),y()(!O,"withRef is removed. To access the wrapped instance, use a ref on the connected component");var P="To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: . You may also pass a {context : MyContext} option to connect";y()("store"===E,"storeKey has been removed and does not do anything. "+P);var x=A;return function(t){var n=t.displayName||t.name||"Component",o=s(n),l=Object(p.a)({},C,{getDisplayName:s,methodName:c,renderCountProp:m,shouldHandleStateChanges:b,storeKey:E,displayName:o,wrappedComponentName:n,WrappedComponent:t}),u=C.pure,d=a.Component;u&&(d=a.PureComponent);var f=function(n){function a(t){var r,a,o,s,l,c,d,f,h,m,_;return r=n.call(this,t)||this,y()(S?!t.wrapperProps[E]:!t[E],"Passing redux store in props has been removed and does not do anything. "+P),r.selectDerivedProps=function(t,n,r,i){if(u&&a===n&&o===t)return s;r===l&&c===i||(l=r,c=i,d=e(r.dispatch,i)),a=n,o=t;var p=d(t,n);return s=p},r.selectChildElement=function(e,t,n){return t===f&&n===h&&_===e||(f=t,h=n,_=e,m=i.a.createElement(e,Object(p.a)({},t,{ref:n}))),m},r.indirectRenderWrappedComponent=r.indirectRenderWrappedComponent.bind(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r)),r}r(a,n);var s=a.prototype;return s.indirectRenderWrappedComponent=function(e){return this.renderWrappedComponent(e)},s.renderWrappedComponent=function(e){y()(e,'Could not find "store" in the context of "'+o+'". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to '+o+" in connect options.");var n,r=e.storeState,a=e.store,i=this.props;S&&(i=this.props.wrapperProps,n=this.props.forwardedRef);var s=this.selectDerivedProps(r,i,a,l);return this.selectChildElement(t,s,n)},s.render=function(){var e=this.props.context&&this.props.context.Consumer&&Object(_.isContextConsumer)(i.a.createElement(this.props.context.Consumer,null))?this.props.context:x;return i.a.createElement(e.Consumer,null,this.indirectRenderWrappedComponent)},a}(d);if(f.WrappedComponent=t,f.displayName=o,S){var v=i.a.forwardRef(function(e,t){return i.a.createElement(f,{wrapperProps:e,forwardedRef:t})});return v.displayName=o,v.WrappedComponent=t,h()(v,t)}return h()(f,t)}}var b=Object.prototype.hasOwnProperty;function g(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function E(e,t){if(g(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var a=0;a=0;r--){var a=t[r](e);if(a)return a}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function L(e,t){return e===t}var D,I,j,U,Y,F,H,z,B,q,G,W,V=(j=(I=void 0===D?{}:D).connectHOC,U=void 0===j?v:j,Y=I.mapStateToPropsFactories,F=void 0===Y?A:Y,H=I.mapDispatchToPropsFactories,z=void 0===H?T:H,B=I.mergePropsFactories,q=void 0===B?P:B,G=I.selectorFactory,W=void 0===G?N:G,function(e,t,n,r){void 0===r&&(r={});var a=r,i=a.pure,o=void 0===i||i,s=a.areStatesEqual,l=void 0===s?L:s,u=a.areOwnPropsEqual,c=void 0===u?E:u,f=a.areStatePropsEqual,h=void 0===f?E:f,m=a.areMergedPropsEqual,y=void 0===m?E:m,_=d(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),v=M(e,F,"mapStateToProps"),b=M(t,z,"mapDispatchToProps"),g=M(n,q,"mergeProps");return U(W,Object(p.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:v,initMapDispatchToProps:b,initMergeProps:g,pure:o,areStatesEqual:l,areOwnPropsEqual:c,areStatePropsEqual:h,areMergedPropsEqual:y},_))});n.d(t,"Provider",function(){return c}),n.d(t,"connectAdvanced",function(){return v}),n.d(t,"ReactReduxContext",function(){return l}),n.d(t,"connect",function(){return V})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),a=o(r),i=o(n(135));function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.memo)(function(e){if(!e.name||""===e.name)return null;var t="icon icon--"+(e.type?e.type:"material");switch(e.className&&(t+=" "+e.className),e.type){case"svg":return a.default.createElement("img",{className:t,src:"/iris/assets/icons/"+e.name+".svg",onClick:function(t){return e.onClick?e.onClick(t):null}});case"gif":return a.default.createElement("img",{className:t,src:"/iris/assets/icons/"+e.name+".gif",onClick:function(t){return e.onClick?e.onClick(t):null}});case"fontawesome":return a.default.createElement(i.default,{className:t,type:"fontawesome",name:e.name,onClick:function(t){return e.onClick?e.onClick(t):null}});case"css":switch(e.name){case"playing":return a.default.createElement("i",{className:t+" icon--playing"},a.default.createElement("span",null),a.default.createElement("span",null),a.default.createElement("span",null))}default:return a.default.createElement("i",{className:t,onClick:function(t){return e.onClick?e.onClick(t):null}},e.name)}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.set=function(e){return{type:"MOPIDY_SET",data:e}},t.request=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{type:"MOPIDY_REQUEST",method:e,params:t,response_callback:n,error_callback:r}},t.connect=function(){return{type:"MOPIDY_CONNECT"}},t.connecting=function(){return{type:"MOPIDY_CONNECTING"}},t.disconnect=function(){return{type:"MOPIDY_DISCONNECT"}},t.debug=function(e,t){return{type:"MOPIDY_DEBUG",call:e,value:t}},t.restartStarted=function(){return{type:"MOPIDY_RESTART_STARTED"}},t.restartFinished=function(){return{type:"MOPIDY_RESTART_FINISHED"}},t.upgradeStarted=function(){return{type:"MOPIDY_UPGRADE_STARTED"}},t.upgradeFinished=function(){return{type:"MOPIDY_UPGRADE_FINISHED"}},t.localScanStarted=function(){return{type:"MOPIDY_LOCAL_SCAN_STARTED"}},t.localScanFinished=function(){return{type:"MOPIDY_LOCAL_SCAN_FINISHED"}},t.getPlayState=function(){return{type:"MOPIDY_GET_PLAY_STATE"}},t.play=function(){return{type:"MOPIDY_PLAY"}},t.pause=function(){return{type:"MOPIDY_PAUSE"}},t.stop=function(){return{type:"MOPIDY_STOP"}},t.next=function(){return{type:"MOPIDY_NEXT"}},t.previous=function(){return{type:"MOPIDY_PREVIOUS"}},t.getMute=function(){return{type:"MOPIDY_GET_MUTE"}},t.setMute=function(e){return{type:"MOPIDY_SET_MUTE",mute:e}},t.getVolume=function(){return{type:"MOPIDY_GET_VOLUME"}},t.setVolume=function(e){return{type:"MOPIDY_SET_VOLUME",volume:e}},t.getConsume=function(){return{type:"MOPIDY_GET_CONSUME"}},t.setConsume=function(e){return{type:"MOPIDY_SET_CONSUME",consume:e}},t.getRepeat=function(){return{type:"MOPIDY_GET_REPEAT"}},t.setRepeat=function(e){return{type:"MOPIDY_SET_REPEAT",repeat:e}},t.getRandom=function(){return{type:"MOPIDY_GET_RANDOM"}},t.setRandom=function(e){return{type:"MOPIDY_SET_RANDOM",random:e}},t.getTimePosition=function(){return{type:"MOPIDY_GET_TIME_POSITION"}},t.setTimePosition=function(e){return{type:"MOPIDY_SET_TIME_POSITION",time_position:parseInt(e)}},t.timePosition=function(e){return{type:"MOPIDY_TIME_POSITION",time_position:parseInt(e)}},t.getUriSchemes=function(){return{type:"MOPIDY_GET_URI_SCHEMES"}},t.getCurrentTrack=function(){return{type:"MOPIDY_GET_CURRENT_TRACK"}},t.currentTrackLoaded=function(e){return{type:"MOPIDY_CURRENT_TRACK_LOADED",tl_track:e}},t.getNextTrack=function(){return{type:"MOPIDY_GET_NEXT_TRACK"}},t.clearCurrentTrack=function(){return{type:"CLEAR_CURRENT_TRACK"}},t.getQueue=function(){return{type:"MOPIDY_GET_QUEUE"}},t.changeTrack=function(e){return{type:"MOPIDY_CHANGE_TRACK",tlid:e}},t.playURIs=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{type:"MOPIDY_PLAY_URIS",uris:e,from_uri:t}},t.playAlbum=function(e){return{type:"MOPIDY_PLAY_ALBUM",uri:e}},t.playPlaylist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"MOPIDY_PLAY_PLAYLIST",uri:e,shuffle:t}},t.enqueueURIs=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return{type:"MOPIDY_ENQUEUE_URIS",uris:e,from_uri:t,at_position:r,play_next:n,offset:a}},t.enqueueAlbum=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:"MOPIDY_ENQUEUE_ALBUM",uri:e,next:t,at_position:n}},t.enqueuePlaylist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:"MOPIDY_ENQUEUE_PLAYLIST",uri:e,play_next:t,at_position:n}},t.enqueueURIsBatchDone=function(){return{type:"MOPIDY_ENQUEUE_URIS_BATCH_DONE"}},t.removeTracks=function(e){return{type:"MOPIDY_REMOVE_TRACKS",tlids:e}},t.reorderTracklist=function(e,t){var n=r.createRange(e);t>n.start&&(t-=n.length);return{type:"MOPIDY_REORDER_TRACKLIST",range_start:n.start,range_length:n.length,insert_before:t}},t.clearTracklist=function(){return{type:"MOPIDY_CLEAR_TRACKLIST"}},t.getImages=function(e,t){return{type:"MOPIDY_GET_IMAGES",context:e,uris:t}},t.createPlaylist=function(e,t){return{type:"MOPIDY_CREATE_PLAYLIST",name:e,scheme:t}},t.deletePlaylist=function(e){return{type:"MOPIDY_DELETE_PLAYLIST",uri:e}},t.getLibraryPlaylists=function(){return{type:"MOPIDY_GET_LIBRARY_PLAYLISTS"}},t.getPlaylist=function(e){return{type:"MOPIDY_GET_PLAYLIST",data:{uri:e}}},t.getPlaylists=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"MOPIDY_GET_PLAYLISTS",uris:e,processor:t}},t.getDirectory=function(e){return{type:"MOPIDY_GET_DIRECTORY",data:{uri:e}}},t.getTrack=function(e){return{type:"MOPIDY_GET_TRACK",data:{uri:e}}},t.getLibraryArtists=function(){return{type:"MOPIDY_GET_LIBRARY_ARTISTS",uri:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},t.clearLibraryArtists=function(){return{type:"MOPIDY_CLEAR_LIBRARY_ARTISTS"}},t.getArtist=function(e){return{type:"MOPIDY_GET_ARTIST",data:{uri:e}}},t.getArtists=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"MOPIDY_GET_ARTISTS",uris:e,processor:t}},t.getAlbum=function(e){return{type:"MOPIDY_GET_ALBUM",data:{uri:e}}},t.getAlbums=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"MOPIDY_GET_ALBUMS",uris:e,processor:t}},t.getLibraryAlbums=function(){return{type:"MOPIDY_GET_LIBRARY_ALBUMS",uri:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},t.clearLibraryAlbums=function(){return{type:"MOPIDY_CLEAR_LIBRARY_ALBUMS"}},t.runProcessor=function(e){return{type:e}},t.cancelProcessor=function(e){return{type:e+"_CANCEL"}},t.clearSearchResults=function(){return{type:"MOPIDY_CLEAR_SEARCH_RESULTS"}},t.getSearchResults=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;return{type:"MOPIDY_GET_SEARCH_RESULTS",context:e,query:t,limit:n}},t.getQueueHistory=function(){return{type:"MOPIDY_GET_QUEUE_HISTORY"}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t2&&void 0!==arguments[2]&&arguments[2];return function(r,a){c(r,a,e).then(function(e){r({type:t,key:n,data:e})},function(e){r(i.handleException("Could not load URL",e))})}},t.getMore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return function(r,a){c(r,a,e).then(function(e){t?r(i.loadedMore(t.parent_type,t.parent_key,t.records_type,e)):n?(n.data=e,r(n)):r(i.handleException("No callback handler for loading more items"))},function(e){r(i.handleException("Could not load more "+callback_action.parent_type+" "+callback_action.records_type+"s",e))})}},t.clearSearchResults=function(){return{type:"SPOTIFY_CLEAR_SEARCH_RESULTS"}},t.getSearchResults=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:50,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return function(a,s){a(o.startProcess("SPOTIFY_GET_SEARCH_RESULTS_PROCESSOR","Searching Spotify")),"all"==(e=e.replace(/s+$/,""))&&(e="album,artist,playlist,track");var l="search?q="+t;l+="&type="+e,l+="&country="+s().spotify.country,l+="&limit="+n,c(a,s,l+="&offset="+r).then(function(e){if(void 0!==e.tracks&&a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"tracks",query:t,results:u.formatTracks(e.tracks.items),more:e.tracks.next}),void 0!==e.artists&&(a({type:"ARTISTS_LOADED",artists:e.artists.items}),a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"artists",query:t,results:u.arrayOf("uri",e.artists.items),more:e.artists.next})),void 0!==e.albums&&(a({type:"ALBUMS_LOADED",albums:e.albums.items}),a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"albums",query:t,results:u.arrayOf("uri",e.albums.items),more:e.albums.next})),void 0!==e.playlists){var n=[],r=!0,i=!1,l=void 0;try{for(var c,p=e.playlists.items[Symbol.iterator]();!(r=(c=p.next()).done);r=!0){var d=c.value;n.push(Object.assign({},u.formatPlaylist(d),{can_edit:s().spotify.me&&d.owner.id==s().spotify.me.id,tracks_total:d.tracks.total}))}}catch(e){i=!0,l=e}finally{try{!r&&p.return&&p.return()}finally{if(i)throw l}}a({type:"PLAYLISTS_LOADED",playlists:n}),a({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"playlists",query:t,results:u.arrayOf("uri",n),more:e.playlists.next})}a(o.processFinishing("SPOTIFY_GET_SEARCH_RESULTS_PROCESSOR"))},function(e){a(i.handleException("Could not load search results",e))})}},t.getAutocompleteResults=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:["album","artist","playlist","track"];return function(r,a){r({type:"SPOTIFY_AUTOCOMPLETE_LOADING",field_id:e});var o=n.includes("genre");if(o){var s=n.indexOf("genre");n.splice(s,1)}var l="search?q="+t;l+="&type="+n.join(","),l+="&country="+a().spotify.country,c(r,a,l).then(function(n){var s=[];if(o){var l=a().spotify.genres;if(l)for(var u=0;u0&&void 0!==arguments[0]?arguments[0]:null}},t.following=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET";return function(n,a){if("PUT"==t)var o=!0;if("DELETE"==t)var o=!1;var s,l,p=u.uriType(e);switch(p){case"track":s="GET"==t?"me/tracks/contains/?ids="+u.getFromUri("trackid",e):"me/tracks/?ids="+u.getFromUri("trackid",e);break;case"album":s="GET"==t?"me/albums/contains/?ids="+u.getFromUri("albumid",e):"me/albums/?ids="+u.getFromUri("albumid",e);break;case"artist":"GET"==t?s="me/following/contains?type=artist&ids="+u.getFromUri("artistid",e):(s="me/following?type=artist&ids="+u.getFromUri("artistid",e),l={});break;case"user":"GET"==t?s="me/following/contains?type=user&ids="+u.getFromUri("userid",e):(s="me/following?type=user&ids="+u.getFromUri("userid",e),l={});break;case"playlist":s="GET"==t?"playlists/"+u.getFromUri("playlistid",e)+"/followers/contains?ids="+a().spotify.me.id:"playlists/"+u.getFromUri("playlistid",e)+"/followers"}c(n,a,s,t,l).then(function(t){t&&(o=t),"object"===(void 0===o?"undefined":r(o))&&(o=o[0]),n({type:"SPOTIFY_LIBRARY_"+p.toUpperCase()+"_CHECK",key:e,in_library:o})},function(e){n(i.handleException("Could not follow/unfollow",e))})}},t.resolveRadioSeeds=function(e){return function(t,n){if(e.seed_artists.length>0){for(var r="",a=0;a0&&(r+=","),r+=u.getFromUri("artistid",e.seed_artists[a]);c(t,n,"artists?ids="+r).then(function(e){e&&e.artists?t({type:"ARTISTS_LOADED",artists:e.artists}):console.error("No Spotify artists returned",r)},function(e){t(i.handleException("Could not resolve radio artist seeds",e))})}if(e.seed_tracks.length>0){for(var o="",a=0;a0&&(o+=","),o+=u.getFromUri("trackid",e.seed_tracks[a]);c(t,n,"tracks?ids="+o).then(function(e){t({type:"TRACKS_LOADED",tracks:e.tracks})},function(e){t(i.handleException("Could not load radio track seeds",e))})}}},t.getFavorites=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"long_term";return function(r,a){r({type:"SPOTIFY_FAVORITES_LOADED",artists:[],tracks:[]}),e.when(c(r,a,"me/top/artists?limit="+t+"&time_range="+n),c(r,a,"me/top/tracks?limit="+t+"&time_range="+n)).then(function(e,t){r({type:"SPOTIFY_FAVORITES_LOADED",artists:e.items,tracks:t.items})},function(e,t){r(i.handleException("Could not load favorites",Object.assign({},e,t)))})}},t.getRecommendations=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return function(r,a){r({type:"CLEAR_SPOTIFY_RECOMMENDATIONS"});for(var o=[],s=[],l=[],p=0;p1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;return function(s,l){s(o.startProcess("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR","Loading playlist tracks",{uri:e,next:"playlists/"+u.getFromUri("playlistid",e)+"/tracks?market="+l().spotify.country,shuffle:t,play_next:r,at_position:a,offset:i,callback_action:n}))}},t.getAllPlaylistTracksProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(r){if(void 0!==n().ui.processes.SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR){var i=n().ui.processes.SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR;if("cancelling"==i.status)return t(o.processCancelled("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR")),!1}var l=[],c=[],p=!0,d=!1,f=void 0;try{for(var h,m=r.items[Symbol.iterator]();!(p=(h=m.next()).done);p=!0){var y=h.value;y.track&&c.push(y.track.uri)}}catch(e){d=!0,f=e}finally{try{!p&&m.return&&m.return()}finally{if(d)throw f}}l=e.uris?[].concat(a(e.uris),c):c,r.next?(t(o.updateProcess("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR","Loading "+(r.total-l.length)+" playlist tracks",Object.assign({},e,{next:r.next,total:r.total,remaining:r.total-l.length}))),t(o.runProcess("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR",Object.assign({},e,{next:r.next,uris:l})))):(e.shuffle&&(l=u.shuffle(l)),t(o.processFinished("SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR")),"enqueue"==e.callback_action?t(s.enqueueURIs(l,e.uri,e.play_next,e.at_position,e.offset)):t(s.playURIs(l,e.uri)))},function(e){t(i.handleException("Could not load tracks to play playlist",e))})}},t.toggleFollowingPlaylist=function(e,t){if("PUT"==t)var n=1;if("DELETE"==t)var n=0;return function(r,a){c(r,a,"playlists/"+u.getFromUri("playlistid",e)+"/followers",t).then(function(t){r({type:"SPOTIFY_PLAYLIST_FOLLOWING_LOADED",key:e,is_following:n})},function(e){r(i.handleException("Could not add/remove library playlist",e))})}},t.addTracksToPlaylist=function(e,t){return function(n,r){c(n,r,"playlists/"+u.getFromUri("playlistid",e)+"/tracks","POST",{uris:t}).then(function(r){n({type:"PLAYLIST_TRACKS_ADDED",key:e,tracks_uris:t,snapshot_id:r.snapshot_id})},function(e){n(i.handleException("Could not add tracks to playlist",e))})}},t.deleteTracksFromPlaylist=function(e,t,n){return function(r,a){c(r,a,"playlists/"+u.getFromUri("playlistid",e)+"/tracks","DELETE",{snapshot_id:t,positions:n}).then(function(t){r({type:"PLAYLIST_TRACKS_REMOVED",key:e,tracks_indexes:n,snapshot_id:t.snapshot_id})},function(e){r(i.handleException("Could not remove tracks from playlist",e))})}},t.reorderPlaylistTracks=function(e,t,n,r,a){return function(o,s){c(o,s,"playlists/"+u.getFromUri("playlistid",e)+"/tracks","PUT",{uri:e,range_start:t,range_length:n,insert_before:r,snapshot_id:a}).then(function(a){o({type:"PLAYLIST_TRACKS_REORDERED",key:e,range_start:t,range_length:n,insert_before:r,snapshot_id:a.snapshot_id})},function(e){o(i.handleException("Could not reorder playlist tracks",e))})}},t.flushLibrary=function(){return{type:"SPOTIFY_FLUSH_LIBRARY"}},t.getLibraryPlaylists=function(){return function(e,t){var n=t().ui.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR;n?"cancelled"==n.status?e(o.resumeProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR")):"finished"!=n.status||t().spotify.library_playlists_loaded_all||e(o.startProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR","Loading Spotify playlists",{next:"me/playlists?limit=50"})):e(o.startProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR","Loading Spotify playlists",{next:"me/playlists?limit=50"}))}},t.getLibraryPlaylistsProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(e){if(t({type:"SPOTIFY_LIBRARY_PLAYLISTS_LOADED",playlists:e.items}),void 0!==n().ui.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR){var r=n().ui.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR;if("cancelling"==r.status)return t(o.processCancelled("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR")),!1}if(e.next){var a=e.total,i=n().spotify.library_playlists.length,s=a-i;t(o.updateProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR","Loading "+s+" Spotify playlists",{next:e.next,total:e.total,remaining:s})),t(o.runProcess("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR",{next:e.next}))}else t(o.processFinishing("SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR")),t({type:"SPOTIFY_LIBRARY_PLAYLISTS_LOADED_ALL"})},function(e){t(i.handleException("Could not load library playlists",e))})}},t.getLibraryArtists=function(){return function(e,t){var n=t().ui.processes.SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR;n?"cancelled"==n.status?e(o.resumeProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR")):"finished"!=n.status||t().spotify.library_artists_loaded_all||e(o.startProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR","Loading Spotify artists",{next:"me/following?type=artist&limit=50"})):e(o.startProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR","Loading Spotify artists",{next:"me/following?type=artist&limit=50"}))}},t.getLibraryArtistsProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(e){if(t({type:"SPOTIFY_LIBRARY_ARTISTS_LOADED",artists:e.artists.items}),void 0!==n().ui.processes.SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR){var r=n().ui.processes.SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR;if("cancelling"==r.status)return t(o.processCancelled("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR")),!1}if(e.artists.next){var a=e.artists.total,i=n().spotify.library_artists.length,s=a-i;t(o.updateProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR","Loading "+s+" Spotify artists",{next:e.artists.next,total:e.artists.total,remaining:s})),t(o.runProcess("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR",{next:e.artists.next}))}else t(o.processFinishing("SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR"))},function(e){t(i.handleException("Could not load library artists",e))})}},t.getLibraryAlbums=function(){return function(e,t){var n=t().ui.processes.SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR;n?"cancelled"==n.status?e(o.updateProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading Spotify albums",{next:"me/albums?limit=50"})):"finished"!=n.status||t().spotify.library_albums_loaded_all||e(o.startProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading Spotify albums",{next:"me/albums?limit=50"})):e(o.startProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading Spotify albums",{next:"me/albums?limit=50"}))}},t.getLibraryAlbumsProcessor=function(e){return function(t,n){c(t,n,e.next).then(function(e){if(t({type:"SPOTIFY_LIBRARY_ALBUMS_LOADED",albums:e.items}),void 0!==n().ui.processes.SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR){var r=n().ui.processes.SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR;if("cancelling"==r.status)return t(o.processCancelled("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR")),!1}if(e.next){var a=e.total,i=n().spotify.library_albums.length,s=a-i;t(o.updateProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR","Loading "+s+" Spotify albums",{next:e.next,total:e.total,remaining:s})),t(o.runProcess("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR",{next:e.next}))}else t(o.processFinishing("SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR"))},function(e){t(i.handleException("Could not load library albums",e))})}};var i=n(10),o=n(3),s=n(7),l=n(17),u=n(2),c=function(t,n,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"GET",s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],l=u.generateGuid();return t(o.startLoading(l,"spotify_"+r)),new Promise(function(u,c){(function e(t,n){return new Promise(function(r,a){n().spotify.token_expiry&&(new Date).getTime()1&&void 0!==arguments[1]&&arguments[1];return function(r,a){var o={},s=[c(r,a,"artists/"+u.getFromUri("artistid",t)).then(function(e){Object.assign(o,e)},function(e){r(i.handleException("Could not load artist",e))})];n&&(s.push(c(r,a,"artists/"+u.getFromUri("artistid",t)+"/top-tracks?country="+a().spotify.country).then(function(e){Object.assign(o,e)},function(e){r(i.handleException("Could not load artist's top tracks",e))})),s.push(c(r,a,"artists/"+u.getFromUri("artistid",t)+"/related-artists").then(function(e){r(i.artistsLoaded(e.artists)),Object.assign(o,{related_artists_uris:u.arrayOf("uri",e.artists)})},function(e){r(i.handleException("Could not load artist's related artists",e))}))),e.when.apply(e,s).then(function(){o.musicbrainz_id?r(l.getArtist(o.uri,!1,o.musicbrainz_id)):r(l.getArtist(o.uri,o.name.replace("&","and"))),r(i.artistLoaded(o)),n&&c(r,a,"artists/"+u.getFromUri("artistid",t)+"/albums?market="+a().spotify.country).then(function(e){r({type:"SPOTIFY_ARTIST_ALBUMS_LOADED",artist_uri:t,data:e})},function(e){r(i.handleException("Could not load artist's albums",e))})})}}}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2];return{type:"SEARCH_STARTED",search_type:e,query:t,only_mopidy:n}},t.handleException=o,t.debugResponse=function(e){return{type:"DEBUG",response:e}},t.set=function(e){return{type:"CORE_SET",data:e}},t.clearCurrentTrack=function(){return{type:"CLEAR_CURRENT_TRACK"}},t.cachebustHttpStream=function(){return{type:"CACHEBUST_HTTP_STREAM"}},t.loadTrack=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_TRACK",uri:e,force_reload:t}},t.loadAlbum=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_ALBUM",uri:e,force_reload:t}},t.loadArtist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_ARTIST",uri:e,force_reload:t}},t.loadPlaylist=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_PLAYLIST",uri:e,force_reload:t}},t.loadUser=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_USER",uri:e,force_reload:t}},t.loadUserPlaylists=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"LOAD_USER_PLAYLISTS",uri:e,force_reload:t}},t.trackLoaded=function(e){return s([e])},t.tracksLoaded=s,t.artistLoaded=function(e){return l([e])},t.artistsLoaded=l,t.albumLoaded=function(e){return u([e])},t.albumsLoaded=u,t.playlistLoaded=function(e){return c([e])},t.playlistsLoaded=c,t.userLoaded=function(e){return p([e])},t.usersLoaded=p,t.userPlaylistsLoaded=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{type:"USER_PLAYLISTS_LOADED",uri:e,playlists:t,more:n,total:r}},t.loadedMore=function(e,t,n,r){return{type:"LOADED_MORE",parent_type:e,parent_key:t,records_type:n,records_data:r}},t.removeFromIndex=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:"REMOVE_FROM_INDEX",index_name:e,key:t,new_key:n}},t.reorderPlaylistTracks=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=r.createRange(t);switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_REORDER_PLAYLIST_TRACKS",key:e,range_start:i.start,range_length:i.length,insert_before:n,snapshot_id:a};case"m3u":return{type:"MOPIDY_REORDER_PLAYLIST_TRACKS",key:e,range_start:i.start,range_length:i.length,insert_before:n}}},t.savePlaylist=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_SAVE_PLAYLIST",key:e,name:t,description:""==n?null:n,image:o,is_public:a,is_collaborative:i};case"m3u":return{type:"MOPIDY_SAVE_PLAYLIST",key:e,name:t}}return!1},t.createPlaylist=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];switch(e){case"spotify":return""==n&&(n=null),a.createPlaylist(t,n,r,o);default:return i.createPlaylist(t,e)}return!1},t.deletePlaylist=function(e){switch(r.uriSource(e)){case"spotify":return a.following(e,"DELETE");default:return i.deletePlaylist(e)}return!1},t.removeTracksFromPlaylist=function(e,t){switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_REMOVE_PLAYLIST_TRACKS",key:e,tracks_indexes:t};case"m3u":return{type:"MOPIDY_REMOVE_PLAYLIST_TRACKS",key:e,tracks_indexes:t}}},t.addTracksToPlaylist=function(e,t){switch(r.uriSource(e)){case"spotify":return{type:"SPOTIFY_ADD_PLAYLIST_TRACKS",key:e,tracks_uris:t};case"m3u":return{type:"MOPIDY_ADD_PLAYLIST_TRACKS",key:e,tracks_uris:t}}},t.getLibraryPlaylists=function(){return{type:"GET_LIBRARY_PLAYLISTS"}},t.getLibraryAlbums=function(){return{type:"GET_LIBRARY_ALBUMS"}},t.getLibraryArtists=function(){return{type:"GET_LIBRARY_ARTISTS"}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2));var a=n(8),i=n(7);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return!e&&t.message?e=t.message:!e&&t.error.message&&(e=t.error.message),!n&&t.description?n=t.description:!n&&t.error&&t.error.description&&(n=t.error.description),{type:"HANDLE_EXCEPTION",message:e,description:n,data:t,show_notification:r}}function s(e){return{type:"TRACKS_LOADED",tracks:e}}function l(e){return{type:"ARTISTS_LOADED",artists:e}}function u(e){return{type:"ALBUMS_LOADED",albums:e}}function c(e){return{type:"PLAYLISTS_LOADED",playlists:e}}function p(e){return{type:"USERS_LOADED",users:e}}}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),a=s(r),i=s(n(9)),o=s(n(6));function s(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.memo)(function(e){var t=function(){if(e.image)return e.image;if(e.images){var t=e.images;Array.isArray(t)&&t.length>0&&(t=t[0]);var n="medium";if(e.size&&(n=e.size),t[n])return t[n]}return null}(),n="thumbnail thumbnail--loaded";e.size&&(n+=" thumbnail--"+e.size),e.circle&&(n+=" thumbnail--circle"),e.className&&(n+=" "+e.className);var r=null;return e.canZoom&&t&&(r=a.default.createElement(i.default,{className:"thumbnail__zoom",to:"/image-zoom?url="+t},a.default.createElement(o.default,{name:"search"}))),a.default.createElement("div",{className:n},a.default.createElement("div",{className:"thumbnail__image",style:{backgroundImage:'url("'+(t||"/iris/assets/no-image.svg")+'")'}}),r)})},function(e,t,n){"use strict";e.exports=function(e,t,n,r,a,i,o,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,i,o,s],c=0;(l=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setPort=function(e){return{type:"PUSHER_SET_PORT",port:e}},t.setUsername=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"PUSHER_SET_USERNAME",username:e.replace(/[\W_]+/g,""),force:t}},t.connect=function(){return{type:"PUSHER_CONNECT"}},t.disconnect=function(){return{type:"PUSHER_DISCONNECT"}},t.upgrade=function(){return{type:"PUSHER_UPGRADE"}},t.reload=function(){return{type:"PUSHER_RELOAD"}},t.restart=function(){return{type:"PUSHER_RESTART"}},t.localScan=function(){return{type:"PUSHER_LOCAL_SCAN"}},t.getConnections=function(){return{type:"PUSHER_GET_CONNECTIONS"}},t.connectionAdded=function(e){return{type:"PUSHER_CONNECTION_ADDED",connection:e}},t.updateConnection=function(e){return{type:"PUSHER_UPDATE_CONNECTION",connection:e}},t.connectionChanged=function(e){return{type:"PUSHER_CONNECTION_CHANGED",connection:e}},t.connectionRemoved=function(e){return{type:"PUSHER_CONNECTION_REMOVED",connection:e}},t.request=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return{type:"PUSHER_REQUEST",method:e,params:t,response_callback:n,error_callback:r}},t.getConfig=function(){return{type:"PUSHER_GET_CONFIG"}},t.getVersion=function(){return{type:"PUSHER_GET_VERSION"}},t.deliverBroadcast=function(e,t){return{type:"PUSHER_DELIVER_BROADCAST",data:{method:e,params:t}}},t.deliverMessage=function(e,t,n){return{type:"PUSHER_DELIVER_MESSAGE",data:{recipient:e,method:t,params:n}}},t.getRadio=function(){return{type:"PUSHER_GET_RADIO"}},t.startRadio=function(e){return{type:"PUSHER_START_RADIO",uris:e}},t.updateRadio=function(e){return{type:"PUSHER_UPDATE_RADIO",uris:e}},t.stopRadio=function(){return{type:"PUSHER_STOP_RADIO"}},t.radioStarted=function(e){return{type:"PUSHER_RADIO_STARTED",radio:e}},t.radioChanged=function(e){return{type:"PUSHER_RADIO_CHANGED",radio:e}},t.radioStopped=function(){return{type:"PUSHER_RADIO_STOPPED"}},t.debug=function(){return{type:"PUSHER_DEBUG",message:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},t.getQueueMetadata=function(){return{type:"PUSHER_GET_QUEUE_METADATA"}},t.queueMetadataChanged=function(e){return{type:"PUSHER_QUEUE_METADATA_CHANGED",queue_metadata:e}},t.addQueueMetadata=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:"PUSHER_ADD_QUEUE_METADATA",tlids:e,from_uri:t}},t.getCommands=function(){return{type:"PUSHER_GET_COMMANDS"}},t.setCommand=function(e){return{type:"PUSHER_SET_COMMAND",command:e}},t.setCommands=function(e){return{type:"PUSHER_SET_COMMANDS",commands:e}},t.removeCommand=function(e){return{type:"PUSHER_REMOVE_COMMAND",id:e}},t.runCommand=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:"PUSHER_RUN_COMMAND",id:e,notify:t}},t.commandsUpdated=function(e){return{type:"PUSHER_COMMANDS_UPDATED",commands:e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2];return function(a,i){if(n)var s="method=artist.getInfo&mbid="+n;else{t=t.replace("&","and");var s="method=artist.getInfo&artist="+(t=encodeURIComponent(t))}o(a,i,s).then(function(t){if(t.artist){var n={uri:e,mbid:t.artist.mbid,biography:t.artist.bio.content,biography_publish_date:t.artist.bio.published,biography_link:t.artist.bio.links.link.href,listeners:parseInt(t.artist.stats.listeners)};a(r.artistLoaded(n))}},function(e){})}},t.getAlbum=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(i,s){if(a)var l="method=album.getInfo&mbid="+a;else{t=encodeURIComponent(t);var l="method=album.getInfo&album="+(n=encodeURIComponent(n))+"&artist="+t}o(i,s,l).then(function(t){if(t.album){var n=s().core.albums[e],a={uri:e,images:t.album.image,listeners:parseInt(t.album.listeners),play_count:parseInt(t.album.playcount),mbid:t.album.mbid,wiki:t.album.wiki?t.album.wiki.content:null,wiki_publish_date:t.album.wiki?t.album.wiki.published:null};n&&n.images&&delete a.images,i(r.albumLoaded(a))}},function(e){})}},t.getImages=function(e,t){return function(n,a){var s=a().core[e][t];if(s)switch(e){case"tracks":if(s.mbid)var l="method=album.getInfo&mbid="+s.mbid;else if(s.artists&&s.artists.length>0&&s.album)var u=encodeURIComponent(s.artists[0].name),c=encodeURIComponent(s.album.name),l="method=album.getInfo&album="+c+"&artist="+u;l&&o(n,a,l).then(function(e){if(e.album){var a=i.formatImages(e.album.image);n(r.trackLoaded({uri:t,images:a}))}});break;case"albums":if(s.mbid)var l="method=album.getInfo&mbid="+s.mbid;else if(s.artists&&s.artists.length>0)var u=encodeURIComponent(s.artists[0].name),c=encodeURIComponent(s.name),l="method=album.getInfo&album="+c+"&artist="+u;l&&o(n,a,l).then(function(e){e.album&&(s=Object.assign({},s,{images:e.album.image}),n(r.albumLoaded(s)))})}}},t.loveTrack=function(e){return function(t,n){if(void 0!==n().core.tracks[e]){var a=n().core.tracks[e];if(a.artists){var i=encodeURIComponent(a.artists[0].name),o="method=track.love&track="+a.name+"&artist="+i;s(t,n,o).then(function(e){a=Object.assign({},a,{userloved:!0}),t({type:"TRACKS_LOADED",tracks:[a]})})}else t(r.handleException("Could not love LastFM track",a,"Track has no artists"))}else t(r.handleException("Could not love LastFM track",a,"Could not find track in index"))}},t.unloveTrack=function(e){return function(t,n){if(void 0!==n().core.tracks[e]){var a=n().core.tracks[e];if(a.artists){var i=encodeURIComponent(a.artists[0].name),o="method=track.unlove&track="+a.name+"&artist="+i;s(t,n,o).then(function(e){a=Object.assign({},a,{userloved:!1}),t({type:"TRACKS_LOADED",tracks:[a]})})}else t(r.handleException("Could not unlove LastFM track",a,"Track has no artists"))}else t(r.handleException("Could not unlove LastFM track",a,"Could not find track in index"))}},t.scrobble=function(e){return function(t,n){var a=e.name,i="Unknown";e.artists&&(i=e.artists[0].name);var i=encodeURIComponent(i),o="method=track.scrobble";o+="&track="+a+"&artist="+i,o+="×tamp="+Math.floor(Date.now()/1e3),s(t,n,o).then(function(e){},function(e){t(r.handleException("Could not scrobble LastFM track",e,e.description?e.description:null))})}};var r=n(10),a=n(3),i=n(2);var o=function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return new Promise(function(n,s){var l=i.generateGuid(),u=r.substring(r.indexOf("method=")+7,r.length);u=u.substring(0,u.indexOf("&")),t(a.startLoading(l,"lastfm_"+u));var c={method:"GET",cache:!0,timeout:3e4,url:"https://ws.audioscrobbler.com/2.0/?format=json&"+r};o?c.method="POST":c.url+="&api_key=4320a3ef51c9b3d69de552ac083c55e3",e.ajax(c).then(function(e){t(a.stopLoading(l)),e.error?s({config:c,error:e}):n(e)},function(e,n,r){t(a.stopLoading(l));var i=null;e&&e.responseJSON&&e.responseJSON.message&&(i=e.responseJSON.message),s({config:c,error:r,description:i,status:n,xhr:e})})})},s=function(t,n,r){return new Promise(function(s,l){n().lastfm.authorization||l({params:r,error:"No active LastFM authorization (session)"});var u=i.generateGuid(),c=r.substring(r.indexOf("method=")+7,r.length);c=c.substring(0,c.indexOf("&")),t(a.startLoading(u,"lastfm_"+c)),r+="&sk="+n().lastfm.authorization.key;var p={method:"GET",cache:!1,timeout:3e4,url:n().lastfm.authorization_url+"?action=sign_request&"+r};e.ajax(p).then(function(e){t(a.stopLoading(u)),o(t,n,e.params,!0).then(function(e){s(e)},function(e){l(e)})},function(e,n,r){t(a.stopLoading(u)),l(r)})})}}).call(this,n(19))},function(e,t,n){"use strict";var r=n(25);function a(e){return"/"===e.charAt(0)}function i(e,t){for(var n=t,r=n+1,a=e.length;r1&&void 0!==arguments[1]?arguments[1]:"",n=e&&e.split("/")||[],r=t&&t.split("/")||[],o=e&&a(e),s=t&&a(t),l=o||s;if(e&&a(e)?r=n:n.length&&(r.pop(),r=r.concat(n)),!r.length)return"/";var u=void 0;if(r.length){var c=r[r.length-1];u="."===c||".."===c||""===c}else u=!1;for(var p=0,d=r.length;d>=0;d--){var f=r[d];"."===f?i(r,d):".."===f?(i(r,d),p++):p&&(i(r,d),p--)}if(!l)for(;p--;p)r.unshift("..");!l||""===r[0]||r[0]&&a(r[0])||r.unshift("");var h=r.join("/");return u&&"/"!==h.substr(-1)&&(h+="/"),h},s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every(function(t,r){return e(t,n[r])});var r=void 0===t?"undefined":s(t);if(r!==(void 0===n?"undefined":s(n)))return!1;if("object"===r){var a=t.valueOf(),i=n.valueOf();if(a!==t||i!==n)return e(a,i);var o=Object.keys(t),l=Object.keys(n);return o.length===l.length&&o.every(function(r){return e(t[r],n[r])})}return!1},u=!0,c="Invariant failed";var p=function(e,t){if(!e)throw u?new Error(c):new Error(c+": "+(t||""))};function d(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function h(e,t){return function(e,t){return new RegExp("^"+t+"(\\/|\\?|#|$)","i").test(e)}(e,t)?e.substr(t.length):e}function m(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function y(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function _(e,t,n,a){var i;"string"==typeof e?(i=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(i.key=n),a?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=o(i.pathname,a.pathname)):i.pathname=a.pathname:i.pathname||(i.pathname="/"),i}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,a):a(!0):a(!1!==i)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r=0?t:0)+"#"+e)}function x(e){void 0===e&&(e={}),g||p(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,i=void 0===a?E:a,o=n.hashType,s=void 0===o?"slash":o,l=e.basename?m(d(e.basename)):"",u=A[s],c=u.encodePath,f=u.decodePath;function k(){var e=f(C());return l&&(e=h(e,l)),_(e)}var O=b();function w(e){Object(r.a)(F,e),F.length=t.length,O.notifyListeners(F.location,F.action)}var S=!1,x=null;function R(){var e=C(),t=c(e);if(e!==t)P(t);else{var n=k(),r=F.location;if(!S&&v(r,n))return;if(x===y(n))return;x=null,function(e){if(S)S=!1,w();else{O.confirmTransitionTo(e,"POP",i,function(t){t?w({action:"POP",location:e}):function(e){var t=F.location,n=D.lastIndexOf(y(t));-1===n&&(n=0);var r=D.lastIndexOf(y(e));-1===r&&(r=0);var a=n-r;a&&(S=!0,I(a))}(e)})}}(n)}}var N=C(),M=c(N);N!==M&&P(M);var L=k(),D=[y(L)];function I(e){t.go(e)}var j=0;function U(e){1===(j+=e)&&1===e?window.addEventListener(T,R):0===j&&window.removeEventListener(T,R)}var Y=!1;var F={length:t.length,action:"POP",location:L,createHref:function(e){return"#"+c(l+y(e))},push:function(e,t){var n=_(e,void 0,void 0,F.location);O.confirmTransitionTo(n,"PUSH",i,function(e){if(e){var t=y(n),r=c(l+t);if(C()!==r){x=t,function(e){window.location.hash=e}(r);var a=D.lastIndexOf(y(F.location)),i=D.slice(0,-1===a?0:a+1);i.push(t),D=i,w({action:"PUSH",location:n})}else w()}})},replace:function(e,t){var n=_(e,void 0,void 0,F.location);O.confirmTransitionTo(n,"REPLACE",i,function(e){if(e){var t=y(n),r=c(l+t);C()!==r&&(x=t,P(r));var a=D.indexOf(y(F.location));-1!==a&&(D[a]=t),w({action:"REPLACE",location:n})}})},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=O.setPrompt(e);return Y||(U(1),Y=!0),function(){return Y&&(Y=!1,U(-1)),t()}},listen:function(e){var t=O.appendListener(e);return U(1),function(){U(-1),t()}}};return F}function R(e,t,n){return Math.min(Math.max(e,t),n)}function N(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,i=void 0===a?["/"]:a,o=t.initialIndex,s=void 0===o?0:o,l=t.keyLength,u=void 0===l?6:l,c=b();function p(e){Object(r.a)(g,e),g.length=g.entries.length,c.notifyListeners(g.location,g.action)}function d(){return Math.random().toString(36).substr(2,u)}var f=R(s,0,i.length-1),h=i.map(function(e){return _(e,void 0,"string"==typeof e?d():e.key||d())}),m=y;function v(e){var t=R(g.index+e,0,g.entries.length-1),r=g.entries[t];c.confirmTransitionTo(r,"POP",n,function(e){e?p({action:"POP",location:r,index:t}):p()})}var g={length:h.length,action:"POP",location:h[f],index:f,entries:h,createHref:m,push:function(e,t){var r=_(e,t,d(),g.location);c.confirmTransitionTo(r,"PUSH",n,function(e){if(e){var t=g.index+1,n=g.entries.slice(0);n.length>t?n.splice(t,n.length-t,r):n.push(r),p({action:"PUSH",location:r,index:t,entries:n})}})},replace:function(e,t){var r=_(e,t,d(),g.location);c.confirmTransitionTo(r,"REPLACE",n,function(e){e&&(g.entries[g.index]=r,p({action:"REPLACE",location:r}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=g.index+e;return t>=0&&t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"CORE_SET":return Object.assign({},e,t.data);case"CACHEBUST_HTTP_STREAM":return Object.assign({},e,{http_streaming_cachebuster:(new Date).getTime()});case"CURRENT_TRACK_LOADED":return Object.assign({},e,{current_track:t.track,current_track_uri:t.uri});case"CLEAR_CURRENT_TRACK":return Object.assign({},e,{current_track:null,current_track_uri:null});case"NEXT_TRACK_LOADED":return Object.assign({},e,{next_track_uri:t.uri});case"QUEUE_LOADED":return Object.assign({},e,{queue:t.tracks});case"PUSHER_QUEUE_METADATA":case"PUSHER_QUEUE_METADATA_CHANGED":for(var n=Object.assign([],e.current_tracklist),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"LAZY_LOADING":return Object.assign({},e,{lazy_loading:t.start});case"SET_SLIM_MODE":return Object.assign({},e,{slim_mode:t.slim_mode});case"SET_WINDOW_FOCUS":return Object.assign({},e,{window_focus:t.window_focus});case"DEBUG":return Object.assign({},e,{debug_response:t.response});case"UI_SET":return Object.assign({},e,t.data);case"SET_WINDOW_TITLE":return t.title?Object.assign({},e,{window_title:t.title}):e;case"TOGGLE_SIDEBAR":var n=!e.sidebar_open;return void 0!==t.new_state&&(n=t.new_state),Object.assign({},e,{sidebar_open:n});case"SET_CURRENT_TRACK_TRANSITION":return Object.assign({},e,{current_track_transition:t.current_track_transition});case"SET_SELECTED_TRACKS":return Object.assign({},e,{selected_tracks:Object.assign([],t.keys)});case"ICON_LOADED":var r=Object.assign({},e.icons);return r[t.key]=t.icon,Object.assign({},e,{icons:r});case"INSTALL_PROMPT":return Object.assign({},e,{install_prompt:t.event});case"SHOW_CONTEXT_MENU":return Object.assign({},e,{context_menu:t.data});case"HIDE_CONTEXT_MENU":return Object.assign({},e,{context_menu:Object.assign({},e.context_menu,{closing:!0})});case"REMOVE_CONTEXT_MENU":return Object.assign({},e,{context_menu:null});case"SHOW_TOUCH_CONTEXT_MENU":return Object.assign({},e,{touch_context_menu:t.data});case"HIDE_TOUCH_CONTEXT_MENU":return Object.assign({},e,{touch_context_menu:Object.assign({},e.touch_context_menu,{closing:!0})});case"REMOVE_TOUCH_CONTEXT_MENU":return Object.assign({},e,{touch_context_menu:null});case"DRAG_START":return Object.assign({},e,{dragger:{dragging:!0,active:!1,context:t.context,from_uri:t.from_uri,victims:t.victims,victims_indexes:t.victims_indexes,start_x:t.start_x,start_y:t.start_y}});case"DRAG_ACTIVE":var a=Object.assign({},e.dragger,{active:!0});return Object.assign({},e,{dragger:a});case"DRAG_END":return Object.assign({},e,{dragger:!1});case"OPEN_MODAL":return Object.assign({},e,{modal:t.modal});case"CLOSE_MODAL":return Object.assign({},e,{modal:!1});case"CREATE_NOTIFICATION":var i=Object.assign({},e.notifications);return i[t.notification.key]=t.notification,Object.assign({},e,{notifications:i});case"CLOSE_NOTIFICATION":var i=Object.assign({},e.notifications);return i[t.key]&&(i[t.key].closing=!0),Object.assign({},e,{notifications:i});case"REMOVE_NOTIFICATION":var i=Object.assign({},e.notifications);return delete i[t.key],Object.assign({},e,{notifications:i});case"START_LOADING":var o=Object.assign({},e.load_queue?e.load_queue:{});return o[t.key]=t.source,Object.assign({},e,{load_queue:o});case"STOP_LOADING":var o=Object.assign({},e.load_queue?e.load_queue:{});return o[t.key]&&delete o[t.key],Object.assign({},e,{load_queue:o});case"START_PROCESS":case"UPDATE_PROCESS":var s=Object.assign({},e.processes?e.processes:[]);if(s[t.key])var l=Object.assign({},s[t.key].data,t.data);else var l=t.data;return s[t.key]={key:t.key,message:t.message,status:"running",data:l},Object.assign({},e,{processes:s});case"RESUME_PROCESS":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"running"})),Object.assign({},e,{processes:s});case"CANCEL_PROCESS":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"cancelling"})),Object.assign({},e,{processes:s});case"PROCESS_CANCELLED":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"cancelled"})),Object.assign({},e,{processes:s});case"PROCESS_FINISHING":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{closing:!0})),Object.assign({},e,{processes:s});case"PROCESS_FINISHED":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"finished",closing:!1})),Object.assign({},e,{processes:s});default:return e}};!function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);t.default=e}(n(2))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"PUSHER_CONNECT":case"PUSHER_CONNECTING":return Object.assign({},e,{connected:!1,connecting:!0});case"PUSHER_CONNECTED":return Object.assign({},e,{connected:!0,connecting:!1,connection_id:t.connection_id,client_id:t.client_id,username:t.username});case"PUSHER_DISCONNECTED":return Object.assign({},e,{connected:!1,connecting:!1});case"PUSHER_SET_PORT":return Object.assign({},e,{port:t.port});case"PUSHER_SET_USERNAME":return Object.assign({},e,{username:t.username});case"PUSHER_CONNECTIONS":for(var n={},r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"MOPIDY_SET":return Object.assign({},e,t.data);case"MOPIDY_CONNECT":case"MOPIDY_CONNECTING":return Object.assign({},e,{connected:!1,connecting:!0});case"MOPIDY_CONNECTED":return Object.assign({},e,{connected:!0,connecting:!1,restart_running:!1,upgrade_running:!1});case"MOPIDY_DISCONNECTED":return Object.assign({},e,{connected:!1,connecting:!1});case"MOPIDY_CHANGE_TRACK":return Object.assign({},e,{tlid:t.tlid});case"MOPIDY_URI_SCHEMES":return Object.assign({},e,{uri_schemes:t.uri_schemes});case"MOPIDY_RESTART_STARTED":return Object.assign({},e,{restart_running:!0});case"MOPIDY_RESTART_FINISHED":return Object.assign({},e,{restart_running:!1});case"MOPIDY_UPGRADE_STARTED":return Object.assign({},e,{upgrade_running:!0});case"MOPIDY_UPGRADE_FINISHED":return Object.assign({},e,{upgrade_running:!1});case"MOPIDY_LOCAL_SCAN_STARTED":return Object.assign({},e,{local_scan_running:!0});case"MOPIDY_LOCAL_SCAN_FINISHED":return Object.assign({},e,{local_scan_running:!1});case"MOPIDY_PLAY_STATE":return Object.assign({},e,{play_state:t.play_state});case"MOPIDY_CONSUME":return Object.assign({},e,{consume:t.consume});case"MOPIDY_RANDOM":return Object.assign({},e,{random:t.random});case"MOPIDY_REPEAT":return Object.assign({},e,{repeat:t.repeat});case"MOPIDY_VOLUME":return Object.assign({},e,{volume:t.volume});case"MOPIDY_MUTE":return Object.assign({},e,{mute:t.mute});case"MOPIDY_TIME_POSITION":return Object.assign({},e,{time_position:t.time_position});case"MOPIDY_QUEUE_HISTORY":for(var n=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"LASTFM_CONNECT":case"LASTFM_CONNECTING":return Object.assign({},e,{connected:!1,connecting:!0});case"LASTFM_CONNECTED":return Object.assign({},e,{connected:!0,connecting:!1});case"LASTFM_SET":return Object.assign({},e,t.data);case"LASTFM_ME_LOADED":return Object.assign({},e,{me:t.me});case"LASTFM_AUTHORIZATION_GRANTED":return Object.assign({},e,{authorizing:!1,authorization:t.data.session});case"LASTFM_AUTHORIZATION_REVOKED":return Object.assign({},e,{authorizing:!1,authorization:!1,me:null});case"LASTFM_IMPORT_AUTHORIZATION":return Object.assign({},e,{authorizing:!1,authorization:t.authorization,me:null});default:return e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"SPOTIFY_SET":return Object.assign({},e,t.data);case"PUSHER_SPOTIFY_TOKEN":return e.authorization?e:Object.assign({},e,{authorizing:!1,authorization:!1,access_token:t.data.access_token,token_expiry:t.data.token_expiry});case"SPOTIFY_AUTHORIZATION_GRANTED":return Object.assign({},e,{enabled:!0,authorizing:!1,authorization:t.data,access_token:t.data.access_token,refresh_token:t.data.refresh_token,token_expiry:t.data.token_expiry});case"SPOTIFY_AUTHORIZATION_REVOKED":return Object.assign({},e,{authorizing:!1,authorization:!1,access_token:!1,refresh_token:!1,token_expiry:0,me:!1});case"SPOTIFY_IMPORT_AUTHORIZATION":return Object.assign({},e,{authorizing:!1,authorization:t.authorization,access_token:t.authorization.access_token,refresh_token:t.authorization.refresh_token,token_expiry:t.authorization.token_expiry,me:t.me});case"SPOTIFY_TOKEN_REFRESHING":return Object.assign({},e,{refreshing_token:!0});case"SPOTIFY_TOKEN_REFRESHED":return Object.assign({},e,{refreshing_token:!1,access_token:t.data.access_token,token_expiry:t.data.token_expiry});case"SPOTIFY_TOKEN_CHANGED":return Object.assign({},e,{access_token:t.spotify_token.access_token,token_expiry:t.spotify_token.token_expiry});case"SPOTIFY_ME_LOADED":return Object.assign({},e,{me:t.me});case"SPOTIFY_FEATURED_PLAYLISTS_LOADED":return Object.assign({},e,{featured_playlists:t.data});case"SPOTIFY_NEW_RELEASES_LOADED":var n=[];return e.new_releases&&(n=Object.assign([],e.new_releases)),Object.assign({},e,{new_releases:r.removeDuplicates([].concat(a(n),a(t.uris))),new_releases_more:t.more,new_releases_total:t.total});case"SPOTIFY_DISCOVER_LOADED":return t.data?Object.assign({},e,{discover:[].concat(a(e.discover),[t.data])}):Object.assign({},e,{discover:[]});case"CLEAR_SPOTIFY_RECOMMENDATIONS":return Object.assign({},e,{recommendations:{artists_uris:[],albums_uris:[],tracks_uris:[]}});case"SPOTIFY_RECOMMENDATIONS_LOADED":return Object.assign({},e,{recommendations:{artists_uris:t.artists_uris,albums_uris:t.albums_uris,tracks_uris:t.tracks_uris}});case"SPOTIFY_FAVORITES_LOADED":return Object.assign({},e,{favorite_artists:t.artists_uris,favorite_tracks:t.tracks_uris});case"SPOTIFY_AUTOCOMPLETE_LOADING":var i=e.autocomplete_results;return i[t.field_id]={loading:!0},Object.assign({},e,{autocomplete_results:i});case"SPOTIFY_AUTOCOMPLETE_LOADED":var i=e.autocomplete_results;return i[t.field_id]=t.results,i[t.field_id].loading=!1,Object.assign({},e,{autocomplete_results:i});case"SPOTIFY_AUTOCOMPLETE_CLEAR":var i=e.autocomplete_results;return void 0!==i[t.field_id]&&delete i[t.field_id],Object.assign({},e,{autocomplete_results:i});case"SPOTIFY_GENRES_LOADED":return Object.assign({},e,{genres:t.genres});case"SPOTIFY_CATEGORIES_LOADED":var o=Object.assign({},e.categories),s=!0,l=!1,u=void 0;try{for(var c,p=t.categories[Symbol.iterator]();!(s=(c=p.next()).done);s=!0){var d=c.value;o[d.uri]=d}}catch(e){l=!0,u=e}finally{try{!s&&p.return&&p.return()}finally{if(l)throw u}}return Object.assign({},e,{categories:o});case"SPOTIFY_CATEGORY_PLAYLISTS_LOADED":var o=Object.assign({},e.categories),f=[];o[t.uri].playlists_uris&&(f=o[t.uri].playlists_uris);var d=Object.assign({},o[t.uri],{playlists_uris:[].concat(a(f),a(t.uris)),playlists_more:t.more,playlists_total:t.total});return o[t.uri]=d,Object.assign({},e,{categories:o});case"SPOTIFY_FLUSH_LIBRARY":return Object.assign({},e,{library_playlists:null,library_playlists_loaded_all:null,library_playlists_status:null,library_albums:null,library_albums_status:null,library_albums_loaded_all:null,library_artists:null,library_artists_status:null,library_artists_loaded_all:null,library_tracks:null,library_tracks_status:null,library_tracks_loaded_all:null});case"SPOTIFY_LIBRARY_PLAYLISTS_LOADED":if(e.library_playlists)var h=[].concat(a(e.library_playlists),a(t.uris));else var h=t.uris;return Object.assign({},e,{library_playlists:r.removeDuplicates(h)});case"SPOTIFY_LIBRARY_ARTISTS_LOADED":if(e.library_artists)var h=[].concat(a(e.library_artists),a(t.uris));else var h=t.uris;return Object.assign({},e,{library_artists:r.removeDuplicates(h)});case"SPOTIFY_LIBRARY_ALBUMS_LOADED":if(e.library_albums)var h=[].concat(a(e.library_albums),a(t.uris));else var h=t.uris;return Object.assign({},e,{library_albums:r.removeDuplicates(h)});case"SPOTIFY_LIBRARY_TRACKS_LOADED":case"SPOTIFY_LIBRARY_TRACKS_LOADED_MORE":var m=t.data.items,h=[];return m&&(m=r.formatTracks(m),h=r.arrayOf("uri",m),e.library_tracks&&(h=[].concat(a(e.library_tracks),a(h)))),Object.assign({},e,{library_tracks:r.removeDuplicates(h),library_tracks_more:t.data.next});case"SPOTIFY_LIBRARY_PLAYLISTS_LOADED_ALL":return Object.assign({},e,{library_playlists_loaded_all:!0});case"SPOTIFY_LIBRARY_PLAYLISTS_CLEAR":return Object.assign({},e,{library_playlists:[]});case"SPOTIFY_LIBRARY_ARTISTS_CLEAR":return Object.assign({},e,{library_artists:[]});case"SPOTIFY_LIBRARY_ALBUMS_CLEAR":return Object.assign({},e,{library_albums:[]});case"SPOTIFY_LIBRARY_ALBUM_CHECK":var y=Object.assign([],e.library_albums),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_albums:y});case"SPOTIFY_LIBRARY_ARTIST_CHECK":var y=Object.assign([],e.library_artists),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_artists:y});case"SPOTIFY_LIBRARY_PLAYLIST_CHECK":var y=Object.assign([],e.library_playlists),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_playlists:y});case"SPOTIFY_LIBRARY_TRACK_CHECK":var y=Object.assign([],e.library_tracks),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_tracks:y});case"SPOTIFY_CLEAR_SEARCH_RESULTS":return Object.assign({},e,{search_results:{}});case"SPOTIFY_SEARCH_RESULTS_LOADED":if(e.search_results)var v=Object.assign({},e.search_results);else var v={};return v.results?v[t.context]=[].concat(a(v[t.context]),a(t.results)):v[t.context]=t.results,t.more?v[t.context+"_more"]=t.more:v[t.context+"_more"]=null,Object.assign({},e,{search_results:v});default:return e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2));function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"SNAPCAST_SERVER_LOADED":var n=Object.assign({},t.server);return Object.assign({},e,{server:n});case"SNAPCAST_CLIENTS_LOADED":if(t.flush)var r={};else var r=Object.assign({},e.clients);var a=!0,i=!1,o=void 0;try{for(var s,l=t.clients[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var u=s.value;r[u.id]=u}}catch(e){i=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(i)throw o}}return Object.assign({},e,{clients:r});case"SNAPCAST_GROUPS_LOADED":if(t.flush)var c={};else var c=Object.assign({},e.groups);var p=!0,d=!1,f=void 0;try{for(var h,m=t.groups[Symbol.iterator]();!(p=(h=m.next()).done);p=!0){var y=h.value;c[y.id]=y}}catch(e){d=!0,f=e}finally{try{!p&&m.return&&m.return()}finally{if(d)throw f}}return Object.assign({},e,{groups:c});case"SNAPCAST_STREAMS_LOADED":if(t.flush)var _={};else var _=Object.assign({},e.streams);var v=!0,b=!1,g=void 0;try{for(var E,k=t.streams[Symbol.iterator]();!(v=(E=k.next()).done);v=!0){var O=E.value;_[O.id]=O}}catch(e){b=!0,g=e}finally{try{!v&&k.return&&k.return()}finally{if(b)throw g}}return Object.assign({},e,{streams:_});default:return e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"GOOGLE_SET":return Object.assign({},e,t.data);case"GOOGLE_LIBRARY_ARTISTS_LOADED":if(e.library_artists)var n=[].concat(a(e.library_artists),a(t.uris));else var n=t.uris;return Object.assign({},e,{library_artists:r.removeDuplicates(n)});case"GOOGLE_CLEAR_LIBRARY_ARTISTS":return Object.assign({},e,{library_artists:null});case"GOOGLE_LIBRARY_ALBUMS_LOADED":if(e.library_albums)var n=[].concat(a(e.library_albums),a(t.uris));else var n=t.uris;return Object.assign({},e,{library_albums:r.removeDuplicates(n)});case"GOOGLE_CLEAR_LIBRARY_ALBUMS":return Object.assign({},e,{library_albums:null});default:return e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2));function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"GENIUS_SET":return Object.assign({},e,t.data);case"GENIUS_ME_LOADED":return Object.assign({},e,{me:t.me});case"GENIUS_AUTHORIZATION_GRANTED":return Object.assign({},e,{authorizing:!1,authorization:t.data,authorization_code:t.data.authorization_code,access_token:t.data.access_token});case"GENIUS_AUTHORIZATION_REVOKED":return Object.assign({},e,{authorizing:!1,authorization:null,authorization_code:null,access_token:null,me:null});case"GENIUS_IMPORT_AUTHORIZATION":return Object.assign({},e,{authorizing:!1,authorization:t.authorization,authorization_code:t.authorization.authorization_code,access_token:t.authorization.access_token,me:null});default:return e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return void 0!==e.ui.shortkeys_enabled&&(e.ui.hotkeys_enabled=e.ui.shortkeys_enabled),e}},function(e,t,n){"use strict";function r(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(a){return"function"==typeof a?a(n,r,e):t(a)}}}}n.r(t);var a=r();a.withExtraArgument=r,t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=n(20),i=(r=a)&&r.__esModule?r:{default:r};function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t-1&&b.push(v[g]);n.only_mopidy||h.ui.search_settings&&!h.ui.search_settings.spotify||e.dispatch(c.getSearchResults(n.query)),h.mopidy.connected&&e.dispatch(u.getSearchResults(n.search_type,n.query,100,b));break;case"GET_LIBRARY_PLAYLISTS":e.getState().spotify.connected&&e.dispatch(c.getLibraryPlaylists()),e.getState().mopidy.connected&&e.dispatch(u.getLibraryPlaylists()),t(n);break;case"GET_LIBRARY_ALBUMS":e.getState().spotify.connected&&e.dispatch(c.getLibraryAlbums()),e.getState().mopidy.connected&&e.dispatch(u.getLibraryAlbums()),t(n);break;case"GET_LIBRARY_ARTISTS":e.getState().spotify.connected&&e.dispatch(c.getLibraryArtists()),e.getState().mopidy.connected&&e.dispatch(u.getLibraryArtists()),t(n);break;case"RESTART":location.reload();break;case"PLAYLIST_TRACKS":var E=p.formatTracks(n.tracks);n.tracks_uris=p.arrayOf("uri",E),e.dispatch({type:"TRACKS_LOADED",tracks:E}),t(n);break;case"PLAYLIST_TRACKS_ADDED":switch(e.dispatch(l.createNotification({type:"info",content:"Added "+n.tracks_uris.length+" tracks to playlist"})),p.uriSource(n.key)){case"spotify":e.dispatch(c.getPlaylist(n.key));break;case"m3u":e.getState().mopidy.connected&&e.dispatch(u.getPlaylist(n.key))}t(n);break;case"PLAYLIST_TRACKS_REORDERED":var k=Object.assign({},r.playlists),O=Object.assign({},k[n.key]),w=Object.assign([],O.tracks_uris),S=n.insert_before;S>n.range_start&&(S-=n.range_length);var T=w.splice(n.range_start,n.range_length);for(T.reverse(),g=0;g0){ie.artists=[];var H=!0,z=!1,B=void 0;try{for(var q,G=F.artists[Symbol.iterator]();!(H=(q=G.next()).done);H=!0){var W=q.value;ie.artists.push(p.formatSimpleObject(W)),x[W.uri]||M.push(W)}}catch(e){z=!0,B=e}finally{try{!H&&G.return&&G.return()}finally{if(z)throw B}}}N.push(ie)}}catch(e){I=!0,j=e}finally{try{!D&&Y.return&&Y.return()}finally{if(I)throw j}}n.tracks=N,M.length>0&&e.dispatch(s.artistsLoaded(M)),L.length>0&&e.dispatch(s.albumsLoaded(L)),t(n);break;case"ALBUMS_LOADED":R=Object.assign({},r.albums),L=[],M=[],N=[];var V=!0,K=!1,X=void 0;try{for(var $,Q=n.albums[Symbol.iterator]();!(V=($=Q.next()).done);V=!0){var J=$.value,Z=p.formatAlbum(J);if(R[Z.uri]&&(Z=Object.assign({},R[Z.uri],Z)),J.tracks){Z.tracks_uris=[];var ee=!0,te=!1,ne=void 0;try{for(var re,ae=J.tracks[Symbol.iterator]();!(ee=(re=ae.next()).done);ee=!0){var ie;(ie=re.value).album||(ie.album=p.formatSimpleObject(Z)),Z.tracks_uris.push(ie.uri),N.push(ie)}}catch(e){te=!0,ne=e}finally{try{!ee&&ae.return&&ae.return()}finally{if(te)throw ne}}}J.artists&&(Z.artists_uris=p.arrayOf("uri",J.artists),M=[].concat(o(M),o(J.artists))),L.push(Z)}}catch(e){K=!0,X=e}finally{try{!V&&Q.return&&Q.return()}finally{if(K)throw X}}n.albums=L,M.length>0&&e.dispatch(s.artistsLoaded(M)),N.length>0&&e.dispatch(s.tracksLoaded(N)),t(n);break;case"ARTISTS_LOADED":x=Object.assign({},r.artists),M=[],N=[];var oe=!0,se=!1,le=void 0;try{for(var ue,ce=n.artists[Symbol.iterator]();!(oe=(ue=ce.next()).done);oe=!0){var pe=ue.value;if(x[(W=p.formatArtist(pe)).uri]){if(x[W.uri].images&&W.images){var de=x[W.uri].images,fe=!0,he=!0,me=!1,ye=void 0;try{for(var _e,ve=de[Symbol.iterator]();!(he=(_e=ve.next()).done);he=!0)_e.value.huge==W.images[0].huge&&(fe=!1)}catch(e){me=!0,ye=e}finally{try{!he&&ve.return&&ve.return()}finally{if(me)throw ye}}fe&&(W.images=Object.assign([],[].concat(o(de),o(W.images))))}W=Object.assign({},x[W.uri],W)}pe.tracks&&(E=p.formatTracks(pe.tracks),w=p.arrayOf("uri",E),W.tracks_uris=w,N=[].concat(o(N),o(E))),M.push(W)}}catch(e){se=!0,le=e}finally{try{!oe&&ce.return&&ce.return()}finally{if(se)throw le}}n.artists=M,N.length>0&&e.dispatch(s.tracksLoaded(N)),t(n);break;case"PLAYLISTS_LOADED":var be=Object.assign({},r.playlists),ge=[],Ee=(N=[],!0),ke=!1,Oe=void 0;try{for(var we,Se=n.playlists[Symbol.iterator]();!(Ee=(we=Se.next()).done);Ee=!0){switch(O=we.value,O=p.formatPlaylist(O),p.uriSource(O.uri)){case"m3u":O.can_edit=!0;break;case"spotify":e.getState().spotify.authorization&&e.getState().spotify.me&&(O.can_edit=O.owner.id==e.getState().spotify.me.id)}be[O.uri]&&void 0===(O=Object.assign({},be[O.uri],O)).tracks_uris&&(O.tracks_uris=[]),O.tracks&&(E=p.formatTracks(O.tracks),w=p.arrayOf("uri",E),O.tracks_uris=w,delete O.tracks,N=[].concat(o(N),o(E))),ge.push(O)}}catch(e){ke=!0,Oe=e}finally{try{!Ee&&Se.return&&Se.return()}finally{if(ke)throw Oe}}n.playlists=ge,N.length>0&&e.dispatch(s.tracksLoaded(N)),t(n);break;case"USERS_LOADED":var Te=Object.assign({},r.users),Ae=[],Ce=!0,Pe=!1,xe=void 0;try{for(var Re,Ne=n.users[Symbol.iterator]();!(Ce=(Re=Ne.next()).done);Ce=!0){var Me=Re.value;Te[(Me=p.formatUser(Me)).uri]&&(Me=Object.assign({},Te[Me.uri],Me)),Ae.push(Me)}}catch(e){Pe=!0,xe=e}finally{try{!Ce&&Ne.return&&Ne.return()}finally{if(Pe)throw xe}}n.users=Ae,t(n);break;case"USER_PLAYLISTS_LOADED":e.dispatch(s.playlistsLoaded(n.playlists)),t(n);break;case"LOADED_MORE":var Le=n.parent_type+"s",De=Object.assign({},r[n.parent_type+"s"]),Ie=Object.assign({},De[n.parent_key]);if(void 0!==n.records_data.items)var je=n.records_data.items;else je=void 0!==n.records_data.tracks?n.records_data.tracks:void 0!==n.records_data.artists?n.records_data.artists:void 0!==n.records_data.albums?n.records_data.albums:void 0!==n.records_data.playlists?n.records_data.playlists:n.records_data;"track"==n.records_type&&(je=p.formatTracks(je));var Ue=n.records_type+"s",Ye=p.arrayOf("uri",je);"playlist"==n.records_type&&(Ye=p.upgradeSpotifyPlaylistUris(Ye));var Fe=Ye;void 0!==Ie[Ue+"_uris"]&&(Fe=[].concat(o(Ie[Ue+"_uris"]),o(Fe))),Ie[Ue+"_uris"]=Fe,void 0!==n.records_data.next&&(Ie[Ue+"_more"]=n.records_data.next);var He={type:Le.toUpperCase()+"_LOADED"};He[Le]=[Ie],e.dispatch(He);var ze={type:Ue.toUpperCase()+"_LOADED"};ze[Ue]=je,e.dispatch(ze),t(n);break;default:return t(n)}}}};t.default=d},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(20),o=(r=i)&&r.__esModule?r:{default:r};!function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);t.default=e}(n(2));var s=n(3),l=(n(7),function(t){return function(n){return function(r){switch(r.type){case"MOPIDY_STATE":var i=t.getState().core.tracks,l=t.getState().core.current_track;void 0!==i[l]&&i[l],n(r);break;case"SET_WINDOW_TITLE":if(r.play_state?r.play_state:t.getState().mopidy.play_state,r.title)var u=r.title;else u=t.getState().ui.window_title;document.title=" "+u,n(r);break;case"OPEN_MODAL":t.getState().ui.allow_reporting&&o.default.event({category:"Modal",action:"Opened",label:r.modal.name}),e("body").addClass("modal-open"),t.dispatch(s.hideContextMenu()),t.dispatch(s.hideTouchContextMenu()),n(r);break;case"CLOSE_MODAL":t.getState().ui.allow_reporting&&o.default.event({category:"Modal",action:"Closed",label:null}),e("body").removeClass("modal-open"),n(r);break;case"HIDE_CONTEXT_MENU":t.getState().ui.context_menu&&(setTimeout(function(){t.dispatch(s.removeContextMenu())},200),n(r));break;case"HIDE_TOUCH_CONTEXT_MENU":t.getState().ui.context_menu&&(setTimeout(function(){t.dispatch(s.removeTouchContextMenu())},200),n(r));break;case"BROWSER_NOTIFICATION":if(void 0===(d=window.Notification||window.mozNotification||window.webkitNotification))return!1;void 0!==d&&d.requestPermission(function(e){});var c={};a(r.data)&&(c=r.data),a(c.data)&&(c=Object.assign({},c,c.data)),u="";var p={body:"",dir:"auto",lang:"EN",tag:"iris"};c.title&&(u=c.title),c.body&&(p.body=c.body),c.icon&&(p.icon=c.icon);var d=new d(u,p);break;case"CREATE_NOTIFICATION":r.notification.sticky||setTimeout(function(){t.dispatch(s.closeNotification(r.notification.key))},1e3*r.notification.duration),n(r);break;case"CLOSE_NOTIFICATION":var f=Object.assign({},t.getState().ui.notifications);setTimeout(function(){t.dispatch(s.removeNotification(r.key))},200),n(r);break;case"REMOVE_NOTIFICATION":r.manual&&(f=Object.assign({},t.getState().ui.notifications))[r.key]&&"broadcast"==f[r.key].type&&t.dispatch({type:"SUPPRESS_BROADCAST",key:r.key}),n(r);break;case"BROADCASTS_LOADED":var h=[];void 0!==t.getState().ui.suppressed_broadcasts&&(h=t.getState().ui.suppressed_broadcasts);for(var m=0;m2&&void 0!==arguments[2]?arguments[2]:null;return new Promise(function(i,o){var l=s.generateGuid(),c={jsonrpc:"2.0",id:l,method:r};a&&(c.params=a),e.getState().ui.log_pusher&&console.log("Pusher log (outgoing)",c),t.send(JSON.stringify(c)),e.dispatch(u.startLoading(l,"pusher_"+r));setTimeout(function(){e.dispatch(u.stopLoading(l)),o({id:l,code:32300,message:"Request timed out"})},3e4);n[l]={resolve:i,reject:o}})};return function(i){return function(m){return function(y){var _=i.getState().pusher;switch(y.type){case"PUSHER_CONNECT":null!=t&&t.close(),i.dispatch({type:"PUSHER_CONNECTING"});var v=i.getState();(t=new WebSocket("ws"+("https:"===window.location.protocol?"s":"")+"://"+v.mopidy.host+":"+v.mopidy.port+"/iris/ws/")).onopen=function(){i.dispatch({type:"PUSHER_CONNECTED"})},t.onclose=function(e){i.dispatch({type:"PUSHER_DISCONNECTED"}),setTimeout(function(){i.dispatch(c.connect())},5e3)},t.onerror=function(e){1==t.readyState&&i.dispatch(l.handleException("Pusher websocket error",e,e.type))},t.onmessage=function(e){e=JSON.parse(e.data);!function(e,t,r){t.getState().ui.log_pusher&&console.log("Pusher log (incoming)",r);var a=null;if(r.id?a=r.id:r.error&&r.error.id&&(a=r.error.id),a)void 0!==n[a]?(t.dispatch(u.stopLoading(a)),void 0!==r.error?n[a].reject(r.error):n[a].resolve(r.result)):t.dispatch(l.handleException("Pusher: Response received with no matching request",r));else if(void 0!==r.error)t.dispatch(l.handleException("Pusher: "+r.error.message,r,void 0!==r.error.data&&void 0!==r.error.data.description?r.error.data.description:null));else{switch(r.method){case"connection_added":t.dispatch(c.connectionAdded(r.params.connection));break;case"connection_changed":t.dispatch(c.connectionChanged(r.params.connection));break;case"connection_removed":t.dispatch(c.connectionRemoved(r.params.connection));break;case"queue_metadata_changed":t.dispatch(c.queueMetadataChanged(r.params.queue_metadata));break;case"spotify_token_changed":t.dispatch(f.tokenChanged(r.params.spotify_token));break;case"share_configuration_received":t.dispatch(u.createNotification({type:"share-configuration-received",configuration:r.params,sticky:!0}));break;case"notification":t.dispatch(u.createNotification(r.params.notification));break;case"radio_started":t.dispatch(c.radioStarted(r.params.radio));break;case"radio_changed":t.dispatch(c.radioChanged(r.params.radio));break;case"radio_stopped":t.dispatch(c.radioStopped());break;case"commands_changed":t.dispatch(c.commandsUpdated(r.params.commands));break;case"reload":window.location.reload(!0);break;case"local_scan_started":t.dispatch(u.updateProcess("local_scan","Scanning local library"));break;case"local_scan_finished":t.dispatch(u.processFinished("local_scan")),t.dispatch(u.createNotification({key:"local_scan",type:"info",content:"Local scan finished",description:r.params.output}));break;case"local_scan_error":t.dispatch(u.processFinished("local_scan")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}));break;case"upgrade_started":t.dispatch(u.updateProcess("upgrade","Upgrading"));break;case"upgrade_finished":t.dispatch(u.updateProcess("upgrade","Restarting to complete upgrade"));break;case"upgrade_error":t.dispatch(u.processFinished("upgrade")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}));break;case"restart_started":t.dispatch(u.processFinished("upgrade")),t.dispatch(u.createNotification({type:"info",content:"Restarting server..."}));break;case"restart_error":t.dispatch(u.processFinished("upgrade")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}));break;case"test_started":t.dispatch(u.updateProcess("test","Running test"));break;case"test_finished":t.dispatch(u.processFinished("test")),t.dispatch(u.createNotification({type:"info",content:"Test finished",description:r.params.output}));break;case"test_error":t.dispatch(u.processFinished("test")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}))}r.method.startsWith("snapcast_")&&t.dispatch(h.eventReceived(r))}}(0,i,e)};break;case"PUSHER_CONNECTED":i.getState().ui.allow_reporting&&o.default.event({category:"Pusher",action:"Connected",label:y.username}),i.dispatch(c.updateConnection()),i.dispatch(c.getConfig()),i.dispatch(c.getRadio()),i.dispatch(c.getCommands()),i.dispatch(c.getQueueMetadata()),setTimeout(function(){i.dispatch(c.getVersion())},500),m(y);break;case"PUSHER_REQUEST":r(i,y.method,y.params).then(function(t){y.response_callback&&y.response_callback.call(e,t)},function(t){y.error_callback?y.error_callback.call(e,t):i.dispatch(l.handleException("Pusher request failed",t,y.method,y))});break;case"PUSHER_DELIVER_MESSAGE":r(i,"send_message",y.data).then(function(e){i.dispatch(u.createNotification({type:"info",content:"Message delivered"}))},function(e){i.dispatch(l.handleException("Could not deliver message",e))});break;case"PUSHER_DELIVER_BROADCAST":r(i,"broadcast",y.data);break;case"PUSHER_SET_USERNAME":i.dispatch(c.updateConnection({username:y.username})),m(y);break;case"PUSHER_UPDATE_CONNECTION":var b=a({username:i.getState().pusher.username,client_id:i.getState().pusher.client_id},y.connection?y.connection:{});r(i,"update_connection",b).then(function(e){e.type="PUSHER_CONNECTION_UPDATED",i.dispatch(e)},function(e){i.dispatch(l.handleException("Could not update connection",e))}),m(y);break;case"PUSHER_GET_QUEUE_METADATA":r(i,"get_queue_metadata").then(function(e){e.type="PUSHER_QUEUE_METADATA",i.dispatch(e)},function(e){i.dispatch(l.handleException("Could not load queue metadata",e))});break;case"PUSHER_ADD_QUEUE_METADATA":r(i,"add_queue_metadata",{tlids:y.tlids,added_from:y.from_uri,added_by:_.username});break;case"PUSHER_GET_VERSION":r(i,"get_version").then(function(e){i.dispatch({type:"PUSHER_VERSION",version:e.version})},function(e){i.dispatch(l.handleException("Could not load version",e))});break;case"PUSHER_GET_CONFIG":r(i,"get_config").then(function(e){i.dispatch({type:"PUSHER_CONFIG",config:e.config})},function(e){i.dispatch(l.handleException("Could not load config",e))});break;case"PUSHER_GET_CONNECTIONS":return r(i,"get_connections").then(function(e){i.dispatch({type:"PUSHER_CONNECTIONS",connections:e.connections})},function(e){i.dispatch(l.handleException("Could not load connections",e))}),m(y);case"PUSHER_GET_COMMANDS":r(i,"get_commands").then(function(e){i.dispatch(c.commandsUpdated(e.commands))},function(e){}),m(y);break;case"PUSHER_SET_COMMAND":var g=Object.assign({},_.commands);if(g[y.command.id])var E=Object.assign({},g[y.command.id],y.command);else E=y.command;g[y.command.id]=E,i.dispatch(c.setCommands(g));break;case"PUSHER_SET_COMMANDS":r(i,"set_commands",{commands:y.commands}).then(function(e){},function(e){i.dispatch(l.handleException("Could not set commands",e))}),m(y);break;case"PUSHER_REMOVE_COMMAND":var k=Object.assign({},_.commands);delete k[y.id],r(i,"set_commands",{commands:k}).then(function(e){},function(e){i.dispatch(l.handleException("Could not remove command",e))}),m(y);break;case"PUSHER_RUN_COMMAND":E=Object.assign({},_.commands[y.id]);var O="command_"+y.id;y.notify&&i.dispatch(u.startProcess(O,"Running command")),r(i,"run_command",{id:y.id}).then(function(e){i.dispatch(u.processFinished(O)),y.notify&&i.dispatch(u.createNotification({key:O,type:"info",content:"Command sent"}))},function(e){i.dispatch(u.processFinished(O)),i.dispatch(l.handleException("Could not run command",e))});break;case"PUSHER_GET_RADIO":r(i,"get_radio").then(function(e){i.dispatch({type:"PUSHER_RADIO_LOADED",radio:e.radio})},function(e){i.dispatch(l.handleException("Could not load radio",e))});break;case"PUSHER_START_RADIO":case"PUSHER_UPDATE_RADIO":i.getState().ui.allow_reporting&&o.default.event({category:"Pusher",action:"Start radio",label:y.uris.join()}),"PUSHER_UPDATE_RADIO"==y.type?i.dispatch(u.startProcess("PUSHER_RADIO_PROCESS","Updating radio")):i.dispatch(u.startProcess("PUSHER_RADIO_PROCESS","Starting radio"));for(var w={reset:"PUSHER_START_RADIO"==y.type,seed_artists:[],seed_genres:[],seed_tracks:[]},S=0;S3&&void 0!==arguments[3]?arguments[3]:{};if(!t.getState().mopidy.connected)return!1;var a=n.split("."),i=a[0],s=a[1];return new Promise(function(a,l){if(s in e[i])var u=e[i][s],d=s;else u=e[i],d=i;if(!u||"function"!=typeof u){var f={message:"Call to an invalid object. Check you are calling a valid Mopidy object.",call:n,value:r};t.dispatch(c.handleException("Mopidy: "+f.message,f)),l(f)}var h=o.generateGuid();t.dispatch(p.startLoading(h,"mopidy_"+d));var m=setTimeout(function(){t.dispatch(p.stopLoading(h)),l({message:"Request timed out",call:n,value:r})},3e4);u(r).then(function(e){clearTimeout(m),t.dispatch(p.stopLoading(h)),a(e)},function(e){clearTimeout(m),t.dispatch(p.stopLoading(h)),l(e)})})};return function(_){return function(v){return function(b){switch(b.type){case"MOPIDY_CONNECT":null!=t&&t.close(),_.dispatch({type:"MOPIDY_CONNECTING"});var g=_.getState();(t=new a.default({webSocketUrl:"ws"+("https:"===window.location.protocol?"s":"")+"://"+g.mopidy.host+":"+g.mopidy.port+"/mopidy/ws/",callingConvention:"by-position-or-by-name"})).on(function(e,t){return function(e,t,r,a){switch(t.getState().ui.log_mopidy,r){case"state:online":t.dispatch({type:"MOPIDY_CONNECTED"}),t.dispatch(u.getPlayState()),t.dispatch(u.getVolume()),t.dispatch(u.getMute()),t.dispatch(u.getConsume()),t.dispatch(u.getRandom()),t.dispatch(u.getRepeat()),t.dispatch(u.getQueue()),t.dispatch(u.getCurrentTrack()),t.dispatch(u.getTimePosition()),t.dispatch(u.getUriSchemes()),n=setInterval(function(){"playing"==t.getState().mopidy.play_state&&(s%5==0&&!0===t.getState().ui.window_focus?t.dispatch(u.getTimePosition()):t.dispatch(u.timePosition(t.getState().mopidy.time_position+1e3)),s++)},1e3);break;case"state:offline":t.dispatch({type:"MOPIDY_DISCONNECTED"}),t.dispatch(u.clearCurrentTrack()),clearInterval(n),s=0;break;case"event:tracklistChanged":t.dispatch(u.getQueue()),setTimeout(function(){t.dispatch(u.getNextTrack())},1e3);break;case"event:playbackStateChanged":t.dispatch({type:"MOPIDY_PLAY_STATE",play_state:a.new_state}),t.dispatch(u.getTimePosition());break;case"event:seeked":t.dispatch({type:"MOPIDY_TIME_POSITION",time_position:a.time_position});break;case"event:trackPlaybackEnded":t.dispatch(u.clearCurrentTrack()),t.dispatch({type:"MOPIDY_TIME_POSITION",time_position:0});break;case"event:trackPlaybackStarted":t.dispatch(u.currentTrackLoaded(a.tl_track)),setTimeout(function(){t.dispatch(u.getNextTrack())},1e3);break;case"event:volumeChanged":t.dispatch({type:"MOPIDY_VOLUME",volume:a.volume});break;case"event:muteChanged":t.dispatch({type:"MOPIDY_MUTE",mute:a.mute});break;case"event:optionsChanged":t.dispatch(u.getConsume()),t.dispatch(u.getRandom()),t.dispatch(u.getRepeat())}}(0,_,e,t)});break;case"MOPIDY_CONNECTED":if(_.getState().ui.allow_reporting){var E=(0,i.sha256)(window.location.hostname);r.default.event({category:"Mopidy",action:"Connected",label:E})}_.dispatch(p.createNotification({content:"Mopidy connected"})),v(b);break;case"MOPIDY_DISCONNECT":null!=t&&t.close(),t=null,_.dispatch({type:"MOPIDY_DISCONNECTED"});break;case"MOPIDY_DISCONNECTED":_.dispatch(p.createNotification({type:"bad",content:"Mopidy disconnected"})),o.setFavicon("favicon_error.png");break;case"MOPIDY_DEBUG":y(t,_,b.call,b.value).then(function(e){_.dispatch({type:"DEBUG",response:e})});break;case"SET_WINDOW_FOCUS":!0===b.window_focus&&(_.dispatch(u.getPlayState()),_.dispatch(u.getVolume()),_.dispatch(u.getMute()),_.dispatch(u.getConsume()),_.dispatch(u.getRandom()),_.dispatch(u.getRepeat()),_.dispatch(u.getCurrentTrack()),_.dispatch(u.getTimePosition()));break;case"MOPIDY_REQUEST":y(t,_,b.method,b.params).then(function(t){b.response_callback&&_.dispatch(b.response_callback.call(e,t))},function(t){b.error_callback?_.dispatch(b.error_callback.call(e,t)):_.dispatch(c.handleException("Mopidy request failed",t,b.method,b))});break;case"MOPIDY_PLAY_STATE":_.dispatch(p.setWindowTitle(null,b.play_state)),"playing"==b.play_state?o.setFavicon("favicon.png"):o.setFavicon("favicon_paused.png"),v(b);break;case"MOPIDY_GET_PLAY_STATE":y(t,_,"playback.getState").then(function(e){_.dispatch({type:"MOPIDY_PLAY_STATE",play_state:e})});break;case"MOPIDY_PLAY":y(t,_,"playback.play").then(function(e){_.dispatch({type:"MOPIDY_PLAY_STATE",play_state:"playing"})}),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+("paused"==_.getState().mopidy.play_state?" resumed":" started")+" playback",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}));break;case"MOPIDY_PAUSE":y(t,_,"playback.pause").then(function(e){_.dispatch({type:"MOPIDY_PLAY_STATE",play_state:"paused"}),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" paused playback",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}))});break;case"MOPIDY_PREVIOUS":_.dispatch(p.setCurrentTrackTransition("previous")),y(t,_,"playback.previous");break;case"MOPIDY_NEXT":_.dispatch(p.setCurrentTrackTransition("next")),y(t,_,"playback.next").then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+' skipped "'+_.getState().core.current_track.name+'"',icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}))});break;case"MOPIDY_STOP":y(t,_,"playback.stop").then(function(e){_.dispatch(u.clearCurrentTrack()),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" stopped playback",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}))});break;case"MOPIDY_CHANGE_TRACK":y(t,_,"playback.play",{tlid:b.tlid}).then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" changed track"}}))});break;case"MOPIDY_REMOVE_TRACKS":y(t,_,"tracklist.remove",{tlid:b.tlids}).then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" removed "+b.tlids.length+" tracks"}}))});break;case"MOPIDY_GET_REPEAT":y(t,_,"tracklist.getRepeat").then(function(e){_.dispatch({type:"MOPIDY_REPEAT",repeat:e})});break;case"MOPIDY_SET_REPEAT":y(t,_,"tracklist.setRepeat",[b.repeat]);break;case"MOPIDY_GET_RANDOM":y(t,_,"tracklist.getRandom").then(function(e){_.dispatch({type:"MOPIDY_RANDOM",random:e})});break;case"MOPIDY_SET_RANDOM":y(t,_,"tracklist.setRandom",[b.random]);break;case"MOPIDY_GET_CONSUME":y(t,_,"tracklist.getConsume").then(function(e){_.dispatch({type:"MOPIDY_CONSUME",consume:e})});break;case"MOPIDY_SET_CONSUME":y(t,_,"tracklist.setConsume",[b.consume]);break;case"MOPIDY_GET_MUTE":y(t,_,"mixer.getMute").then(function(e){_.dispatch({type:"MOPIDY_MUTE",mute:e})});break;case"MOPIDY_SET_MUTE":y(t,_,"mixer.setMute",[b.mute]).then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+(b.mute?" muted":" unmuted")+" playback"}}))});break;case"MOPIDY_GET_VOLUME":y(t,_,"playback.getVolume").then(function(e){_.dispatch({type:"MOPIDY_VOLUME",volume:e})});break;case"MOPIDY_SET_VOLUME":y(t,_,"playback.setVolume",{volume:b.volume}).then(function(e){_.dispatch({type:"MOPIDY_VOLUME",volume:b.volume})});break;case"MOPIDY_SET_TIME_POSITION":y(t,_,"playback.seek",{time_position:b.time_position}).then(function(e){_.dispatch({type:"MOPIDY_TIME_POSITION",time_position:b.time_position})});break;case"MOPIDY_GET_TIME_POSITION":y(t,_,"playback.getTimePosition").then(function(e){_.dispatch({type:"MOPIDY_TIME_POSITION",time_position:e})});break;case"MOPIDY_GET_URI_SCHEMES":y(t,_,"getUriSchemes").then(function(e){for(var t=e,n=["http","https","mms","rtmp","rtmps","rtsp","sc","yt"],r=0;r-1&&t.splice(a,1)}for(r=0;r0){if(k.tracks_total==k.tracks_uris.length){_.dispatch(u.playURIs(k.tracks_uris,b.uri,b.shuffle));break}if("spotify"==k.provider){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"play"));break}}else if("spotify"==o.uriSource(b.uri)&&_.getState().spotify.enabled){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"play"));break}y(t,_,"playlists.lookup",{uri:b.uri}).then(function(e){if(e&&void 0!==e.tracks&&e.tracks){var t=o.arrayOf("uri",e.tracks);b.shuffle&&(t=o.shuffle(t)),_.dispatch(u.playURIs(t,b.uri))}else _.dispatch(p.createNotification({content:"Failed to load playlist tracks",type:"bad"}))},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Lookup failed"),e))});break;case"MOPIDY_ENQUEUE_PLAYLIST":var k;if((k=_.getState().core.playlists[b.uri])&&k.tracks_uris&&k.tracks_uris.length>0){if(k.tracks_total==k.tracks_uris.length){var O=Object.assign([],k.tracks_uris);b.shuffle&&(O=o.shuffle(O)),_.dispatch(u.enqueueURIs(O,b.uri,b.play_next,b.at_position,b.offset));break}if("spotify"==k.provider){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"enqueue",b.play_next));break}}else if("spotify"==o.uriSource(b.uri)&&_.getState().spotify.enabled){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"enqueue",b.play_next));break}y(t,_,"playlists.lookup",{uri:b.uri}).then(function(e){if(void 0===e.tracks)_.dispatch(p.createNotification({content:"Failed to load playlist tracks",type:"bad"}));else{var t=o.arrayOf("uri",e.tracks);b.shuffle&&(t=o.shuffle(t)),_.dispatch(u.enqueueURIs(t,b.uri,b.play_next,b.at_position,b.offset))}},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Lookup failed"),e))});break;case"MOPIDY_ENQUEUE_URIS":if(!b.uris||b.uris.length<=0){e.props.uiActions.createNotification({content:"No URIs to enqueue",type:"warning"});break}_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" is adding "+b.uris.length+" URIs to queue",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}));for(var w=Object.assign([],b.uris),S=[];w.length>0;)S.push({uris:w.splice(0,5),at_position:b.at_position,play_next:b.play_next,offset:b.offset+5*S.length,from_uri:b.from_uri});b.batches=S,v(b),_.dispatch(p.startProcess("MOPIDY_ENQUEUE_URIS_PROCESSOR","Adding "+b.uris.length+" URI(s)",{batches:S,remaining:b.uris.length,total:b.uris.length}));break;case"MOPIDY_ENQUEUE_URIS_PROCESSOR":if((K=_.getState().ui.processes.MOPIDY_ENQUEUE_URIS_PROCESSOR)&&"cancelling"==K.status)return void _.dispatch(p.processCancelled("MOPIDY_ENQUEUE_URIS_PROCESSOR"));if(!(b.data.batches&&b.data.batches.length>0)){_.dispatch(p.processFinishing("MOPIDY_ENQUEUE_URIS_PROCESSOR"));break}for(var T=(S=Object.assign([],b.data.batches))[0],A=0,C=0;C-1?R+T.offset+1:0+T.offset:T.at_position&&(N.at_position=T.at_position+T.offset),y(t,_,"tracklist.add",N).then(function(e){for(var t=[],n=0;n0){_.dispatch(u.changeTrack(e[0].tlid));for(var t=[],n=0;n0&&setTimeout(function(){_.dispatch(u.enqueueURIs(b.uris,b.from_uri,null,1))},100)},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Adding tracks failed"),e))});break;case"MOPIDY_REORDER_TRACKLIST":y(t,_,"tracklist.move",{start:b.range_start,end:b.range_start+b.range_length,to_position:b.insert_before}).then(function(e){},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Reorder failed"),e))});break;case"MOPIDY_CLEAR_TRACKLIST":y(t,_,"tracklist.clear").then(function(e){_.dispatch(c.clearCurrentTrack()),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" cleared queue"}}))});break;case"MOPIDY_GET_SEARCH_RESULTS":_.dispatch({type:"MOPIDY_CLEAR_SEARCH_RESULTS"});var D=["spotify:"],I=Object.assign([],_.getState().ui.uri_schemes_search_enabled);for(C=0;C0){var t=[];if(e[0].albums&&(t=[].concat(l(e[0].albums),l(t))),e[0].tracks)for(var n=0;n0){var t=[];if(e[0].artists)for(var n=0;n0){for(var t=[],n=0;n0&&void 0!==e[0].tracks){var t=e[0].tracks;_.dispatch({type:"MOPIDY_SEARCH_RESULTS_LOADED",context:b.data.context,results:o.formatTracks(t)})}H()},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Search failed"),e)),H()});break;case"all":default:var z=function(){var e=_.getState().ui.processes.MOPIDY_GET_SEARCH_RESULTS_PROCESSOR;e&&"cancelling"==e.status?_.dispatch(p.processCancelled("MOPIDY_GET_SEARCH_RESULTS_PROCESSOR")):(_.dispatch(p.updateProcess("MOPIDY_GET_SEARCH_RESULTS_PROCESSOR","Searching "+b.data.uri_scheme.replace(":","")+" albums",{remaining:b.data.uri_schemes.length+.75})),y(t,_,"library.search",{query:{album:[b.data.query]},uris:[b.data.uri_scheme]}).then(function(e){if(e.length>0){var t=[];if(e[0].albums&&(t=[].concat(l(e[0].albums),l(t))),e[0].tracks)for(var n=0;n0){var t=[];if(e[0].artists)for(var n=0;n0){for(var t=[],n=0;n0&&void 0!==e[0].tracks){var t=e[0].tracks;_.dispatch({type:"MOPIDY_SEARCH_RESULTS_LOADED",context:"tracks",results:o.formatTracks(t)})}z()},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Search failed"),e)),z()}))}()}break;case"MOPIDY_GET_LIBRARY_PLAYLISTS":y(t,_,"playlists.asList").then(function(e){for(var n=o.arrayOf("uri",e),r=[],a=0;a0&&_.dispatch({type:"MOPIDY_RESOLVE_PLAYLIST_TRACKS",tracks:t.tracks,key:t.uri}),_.dispatch(c.playlistLoaded(t))});break;case"MOPIDY_RESOLVE_PLAYLIST_TRACKS":var W=Object.assign([],b.tracks);w=o.arrayOf("uri",W);y(t,_,"library.lookup",{uris:w}).then(function(e){for(var t in e)if(e.hasOwnProperty(t)){var n=e[t][0];if(n)for(var r=W.filter(function(e){return n.uri==e.uri}),a=0;ai&&(s-=o);for(var l=0;l0?(_.dispatch(p.updateProcess("MOPIDY_LIBRARY_ALBUMS_PROCESSOR","Loading "+w.length+" local albums",{uris:w,remaining:w.length})),_.dispatch(u.getAlbums(X,{name:"MOPIDY_LIBRARY_ALBUMS_PROCESSOR",data:{uris:w}}))):_.dispatch(p.processFinishing("MOPIDY_LIBRARY_ALBUMS_PROCESSOR"));break;case"MOPIDY_GET_ALBUMS":y(t,_,"library.lookup",{uris:b.uris}).then(function(e){if(!(e.length<=0)){var t=[],n=[],r=[];for(var a in e)if(e.hasOwnProperty(a)&&e[a].length>0&&e[a][0].album){var i=e[a],o=[];if(i[0].artists){var s=!0,l=!1,u=void 0;try{for(var d,f=e[a][0].artists[Symbol.iterator]();!(s=(d=f.next()).done);s=!0){var h=d.value;o.push(h.uri),n.push(h)}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}}var m=[],y=!0,v=!1,g=void 0;try{for(var E,k=i[Symbol.iterator]();!(y=(E=k.next()).done);y=!0){var O=E.value;m.push(O.uri),r.push(O)}}catch(e){v=!0,g=e}finally{try{!y&&k.return&&k.return()}finally{if(v)throw g}}var w=Object.assign({},{source:"local",artists_uris:o,tracks_uris:m,tracks_total:m.length},i[0].album);t.push(w)}_.dispatch(c.albumsLoaded(t)),_.dispatch(c.artistsLoaded(n)),_.dispatch(c.tracksLoaded(r)),b.processor&&setTimeout(function(){_.dispatch(p.runProcess(b.processor.name,b.processor.data))},10)}});break;case"MOPIDY_GET_ALBUM":y(t,_,"library.lookup",b.data).then(function(e){if(e&&!(e.length<=0)){var n=[];if(e[0].artists){var r=!0,a=!1,i=void 0;try{for(var s,l=e[0].artists[Symbol.iterator]();!(r=(s=l.next()).done);r=!0){var u=s.value;n.push(u)}}catch(e){a=!0,i=e}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}}var p=Object.assign({},e[0].album,{source:"local",artists_uris:o.arrayOf("uri",n),tracks_uris:o.arrayOf("uri",e),tracks_total:e.length});if(_.dispatch(c.albumLoaded(p)),_.dispatch(c.artistsLoaded(n)),!e[0].album.images){var d=o.getFromUri("mbid",p.uri);d?_.dispatch(m.getAlbum(p.uri,!1,!1,d)):n&&n.length>0&&_.dispatch(m.getAlbum(p.uri,n[0].name,p.name))}y(t,_,"library.lookup",{uris:p.tracks_uris}).then(function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(e[n][0]);_.dispatch(c.tracksLoaded(t))})}});break;case"MOPIDY_GET_LIBRARY_ARTISTS":y(t,_,"library.browse",{uri:_.getState().mopidy.library_artists_uri}).then(function(e){if(!(e.length<=0)){for(var t=[],n=0;n0&&e[n][0].artists){var r=Object.assign({},e?e[n][0].artists[0]:{},{provider:"mopidy"});t.push(r)}_.dispatch(c.artistsLoaded(t)),b.processor&&setTimeout(function(){_.dispatch(p.runProcess(b.processor.name,b.processor.data))},100)}});break;case"MOPIDY_GET_QUEUE":y(t,_,"tracklist.getTlTracks").then(function(e){_.dispatch({type:"QUEUE_LOADED",tracks:e})});break;case"MOPIDY_GET_QUEUE_HISTORY":y(t,_,"history.getHistory").then(function(e){_.dispatch({type:"MOPIDY_QUEUE_HISTORY",tracks:e})});break;case"MOPIDY_GET_CURRENT_TRACK":y(t,_,"playback.getCurrentTlTrack").then(function(e){e&&e.track&&_.dispatch(u.currentTrackLoaded(e))});break;case"MOPIDY_CURRENT_TRACK_LOADED":_.dispatch(p.setCurrentTrackTransition(!1));var $=o.formatTrack(b.tl_track);$.uri&&(_.dispatch({type:"CURRENT_TRACK_LOADED",track:$,uri:$.uri}),void 0!==_.getState().core.tracks[$.uri]&&void 0!==_.getState().core.tracks[$.uri].images||(_.getState().spotify.enabled&&"spotify"==o.uriSource($.uri)?_.dispatch(d.getTrack($.uri)):_.dispatch(u.getImages("tracks",[$.uri]))));break;case"MOPIDY_GET_NEXT_TRACK":y(t,_,"tracklist.getNextTlid").then(function(e){if(e&&e>=0){var t=o.applyFilter("tlid",e,_.getState().core.queue,!0);t&&t.uri&&(_.dispatch({type:"NEXT_TRACK_LOADED",uri:t.uri}),void 0!==_.getState().core.tracks[t.uri]&&void 0!==_.getState().core.tracks[t.uri].images||(_.getState().spotify.enabled&&"spotify"==o.uriSource(t.uri)?_.dispatch(d.getTrack(t.uri)):_.dispatch(u.getImages("tracks",[t.uri]))))}});break;case"MOPIDY_GET_TRACK":y(t,_,"library.lookup",b.data).then(function(e){if(e.length>0){var t=Object.assign({},e[0]);_.dispatch(c.trackLoaded(t))}},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Could not get track"),e))});break;case"MOPIDY_GET_IMAGES":b.uris&&y(t,_,"library.getImages",{uris:b.uris}).then(function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];(r=o.digestMopidyImages(_.getState().mopidy,r))&&r.length>0?t.push({uri:n,images:r}):_.dispatch(m.getImages(b.context,n))}var a={type:(b.context+"_LOADED").toUpperCase()};a[b.context]=t,_.dispatch(a)}),v(b);break;case"MOPIDY_GET_DIRECTORY":_.dispatch({type:"MOPIDY_DIRECTORY_FLUSH"}),y(t,_,"library.browse",b.data).then(function(e){var n=[],r=[],a=!0,i=!1,s=void 0;try{for(var l,u=e[Symbol.iterator]();!(a=(l=u.next()).done);a=!0){var c=l.value;"track"===c.type?n.push(c.uri):r.push(c)}}catch(e){i=!0,s=e}finally{try{!a&&u.return&&u.return()}finally{if(i)throw s}}n.length>0?y(t,_,"library.lookup",{uris:n}).then(function(e){if(!(e.length<=0)){var t=[];for(var n in e)e.hasOwnProperty(n)&&e[n].length>0&&t.push(o.formatTrack(e[n][0]));_.dispatch({type:"MOPIDY_DIRECTORY_LOADED",directory:{tracks:t,subdirectories:r}})}}):_.dispatch({type:"MOPIDY_DIRECTORY_LOADED",directory:{tracks:W,subdirectories:r}})});break;case"MOPIDY_DIRECTORY":_.getState().ui.allow_reporting&&b.data&&r.default.event({category:"Directory",action:"Load",label:b.data.uri}),v(b);break;default:return v(b)}}}}}();t.default=y},function(e,t,n){var r,a=n(109),i=n(110),o=n(111);function s(e){if(!(this instanceof s))return new s(e);this._console=this._getConsole(e||{}),this._settings=this._configure(e||{}),this._backoffDelay=this._settings.backoffDelayMin,this._pendingRequests={},this._webSocket=null,a.createEventEmitter(this),this._delegateEvents(),this._settings.autoConnect&&this.connect()}s.ConnectionError=function(e){this.name="ConnectionError",this.message=e},s.ConnectionError.prototype=Object.create(Error.prototype),s.ConnectionError.prototype.constructor=s.ConnectionError,s.ServerError=function(e){this.name="ServerError",this.message=e},s.ServerError.prototype=Object.create(Error.prototype),s.ServerError.prototype.constructor=s.ServerError,s.WebSocket=i.Client,s.when=o,s.prototype._getConsole=function(e){if(void 0!==e.console)return e.console;var t="undefined"!=typeof console&&console||{};return t.log=t.log||function(){},t.warn=t.warn||function(){},t.error=t.error||function(){},t},s.prototype._configure=function(e){var t="undefined"!=typeof document&&"https:"===document.location.protocol?"wss://":"ws://",n="undefined"!=typeof document&&document.location.host||"localhost";return e.webSocketUrl=e.webSocketUrl||t+n+"/mopidy/ws",!1!==e.autoConnect&&(e.autoConnect=!0),e.backoffDelayMin=e.backoffDelayMin||1e3,e.backoffDelayMax=e.backoffDelayMax||64e3,void 0===e.callingConvention&&this._console.warn("Mopidy.js is using the default calling convention. The default will change in the future. You should explicitly specify which calling convention you use."),e.callingConvention=e.callingConvention||"by-position-only",e},s.prototype._delegateEvents=function(){this.off("websocket:close"),this.off("websocket:error"),this.off("websocket:incomingMessage"),this.off("websocket:open"),this.off("state:offline"),this.on("websocket:close",this._cleanup),this.on("websocket:error",this._handleWebSocketError),this.on("websocket:incomingMessage",this._handleMessage),this.on("websocket:open",this._resetBackoffDelay),this.on("websocket:open",this._getApiSpec),this.on("state:offline",this._reconnect)},s.prototype.connect=function(){if(this._webSocket){if(this._webSocket.readyState===s.WebSocket.OPEN)return;this._webSocket.close()}this._webSocket=this._settings.webSocket||new s.WebSocket(this._settings.webSocketUrl),this._webSocket.onclose=function(e){this.emit("websocket:close",e)}.bind(this),this._webSocket.onerror=function(e){this.emit("websocket:error",e)}.bind(this),this._webSocket.onopen=function(){this.emit("websocket:open")}.bind(this),this._webSocket.onmessage=function(e){this.emit("websocket:incomingMessage",e)}.bind(this)},s.prototype._cleanup=function(e){Object.keys(this._pendingRequests).forEach(function(t){var n=this._pendingRequests[t];delete this._pendingRequests[t];var r=new s.ConnectionError("WebSocket closed");r.closeEvent=e,n.reject(r)}.bind(this)),this.emit("state:offline")},s.prototype._reconnect=function(){this.emit("reconnectionPending",{timeToAttempt:this._backoffDelay}),setTimeout(function(){this.emit("reconnecting"),this.connect()}.bind(this),this._backoffDelay),this._backoffDelay=2*this._backoffDelay,this._backoffDelay>this._settings.backoffDelayMax&&(this._backoffDelay=this._settings.backoffDelayMax)},s.prototype._resetBackoffDelay=function(){this._backoffDelay=this._settings.backoffDelayMin},s.prototype.close=function(){this.off("state:offline",this._reconnect),this._webSocket.close()},s.prototype._handleWebSocketError=function(e){this._console.warn("WebSocket error:",e.stack||e)},s.prototype._send=function(e){switch(this._webSocket.readyState){case s.WebSocket.CONNECTING:return o.reject(new s.ConnectionError("WebSocket is still connecting"));case s.WebSocket.CLOSING:return o.reject(new s.ConnectionError("WebSocket is closing"));case s.WebSocket.CLOSED:return o.reject(new s.ConnectionError("WebSocket is closed"));default:var t=o.defer();return e.jsonrpc="2.0",e.id=this._nextRequestId(),this._pendingRequests[e.id]=t.resolver,this._webSocket.send(JSON.stringify(e)),this.emit("websocket:outgoingMessage",e),t.promise}},s.prototype._nextRequestId=(r=-1,function(){return r+=1}),s.prototype._handleMessage=function(e){try{var t=JSON.parse(e.data);t.hasOwnProperty("id")?this._handleResponse(t):t.hasOwnProperty("event")?this._handleEvent(t):this._console.warn("Unknown message type received. Message was: "+e.data)}catch(t){if(!(t instanceof SyntaxError))throw t;this._console.warn("WebSocket message parsing failed. Message was: "+e.data)}},s.prototype._handleResponse=function(e){if(this._pendingRequests.hasOwnProperty(e.id)){var t,n=this._pendingRequests[e.id];delete this._pendingRequests[e.id],e.hasOwnProperty("result")?n.resolve(e.result):e.hasOwnProperty("error")?((t=new s.ServerError(e.error.message)).code=e.error.code,t.data=e.error.data,n.reject(t),this._console.warn("Server returned error:",e.error)):((t=new Error("Response without 'result' or 'error' received")).data={response:e},n.reject(t),this._console.warn("Response without 'result' or 'error' received. Message was:",e))}else this._console.warn("Unexpected response received. Message was:",e)},s.prototype._handleEvent=function(e){var t=e.event,n=e;delete n.event,this.emit("event:"+this._snakeToCamel(t),n)},s.prototype._getApiSpec=function(){return this._send({method:"core.describe"}).then(this._createApi.bind(this)).catch(this._handleWebSocketError)},s.prototype._createApi=function(e){var t="by-position-or-by-name"===this._settings.callingConvention,n=function(e){return function(){var n={method:e};return 0===arguments.length?this._send(n):t?arguments.length>1?o.reject(new Error("Expected zero arguments, a single array, or a single object.")):Array.isArray(arguments[0])||arguments[0]===Object(arguments[0])?(n.params=arguments[0],this._send(n)):o.reject(new TypeError("Expected an array or an object.")):(n.params=Array.prototype.slice.call(arguments),this._send(n))}.bind(this)}.bind(this),r=function(e){var t=this;return e.forEach(function(e){e=this._snakeToCamel(e),t[e]=t[e]||{},t=t[e]}.bind(this)),t}.bind(this),a=function(t){var a,i=((a=t.split(".")).length>=1&&"core"===a[0]&&(a=a.slice(1)),a),o=this._snakeToCamel(i.slice(-1)[0]),s=r(i.slice(0,-1));s[o]=n(t),s[o].description=e[t].description,s[o].params=e[t].params}.bind(this);Object.keys(e).forEach(a),this.emit("state:online")},s.prototype._snakeToCamel=function(e){return e.replace(/(_[a-z])/g,function(e){return e.toUpperCase().replace("_","")})},e.exports=s},function(e,t,n){var r,a;(function(i){void 0===(a="function"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=a)}||function(t){e.exports=t()}||function(e){this.bane=e()})(function(){"use strict";var e=Array.prototype.slice;function t(e){if("function"!=typeof e)throw new TypeError("Listener is not function");return e}function n(e){return e.supervisors||(e.supervisors=[]),e.supervisors}function r(e,t){return e.listeners||(e.listeners={}),t&&!e.listeners[t]&&(e.listeners[t]=[]),t?e.listeners[t]:e.listeners}function a(e){return e.errbacks||(e.errbacks=[]),e.errbacks}function i(i){function o(e,t,n){try{t.listener.apply(t.thisp||i,n)}catch(t){!function(e,t,n){var r,a=n.length;if(a>0)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"CORE_SET":return Object.assign({},e,t.data);case"CACHEBUST_HTTP_STREAM":return Object.assign({},e,{http_streaming_cachebuster:(new Date).getTime()});case"CURRENT_TRACK_LOADED":return Object.assign({},e,{current_track:t.track,current_track_uri:t.uri});case"CLEAR_CURRENT_TRACK":return Object.assign({},e,{current_track:null,current_track_uri:null});case"NEXT_TRACK_LOADED":return Object.assign({},e,{next_track_uri:t.uri});case"QUEUE_LOADED":return Object.assign({},e,{queue:t.tracks});case"PUSHER_QUEUE_METADATA":case"PUSHER_QUEUE_METADATA_CHANGED":for(var n=Object.assign([],e.current_tracklist),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"LAZY_LOADING":return Object.assign({},e,{lazy_loading:t.start});case"SET_SLIM_MODE":return Object.assign({},e,{slim_mode:t.slim_mode});case"SET_WINDOW_FOCUS":return Object.assign({},e,{window_focus:t.window_focus});case"DEBUG":return Object.assign({},e,{debug_response:t.response});case"UI_SET":return Object.assign({},e,t.data);case"SET_WINDOW_TITLE":return t.title?Object.assign({},e,{window_title:t.title}):e;case"TOGGLE_SIDEBAR":var n=!e.sidebar_open;return void 0!==t.new_state&&(n=t.new_state),Object.assign({},e,{sidebar_open:n});case"SET_CURRENT_TRACK_TRANSITION":return Object.assign({},e,{current_track_transition:t.current_track_transition});case"SET_SELECTED_TRACKS":return Object.assign({},e,{selected_tracks:Object.assign([],t.keys)});case"ICON_LOADED":var r=Object.assign({},e.icons);return r[t.key]=t.icon,Object.assign({},e,{icons:r});case"INSTALL_PROMPT":return Object.assign({},e,{install_prompt:t.event});case"SHOW_CONTEXT_MENU":return Object.assign({},e,{context_menu:t.data});case"HIDE_CONTEXT_MENU":return Object.assign({},e,{context_menu:Object.assign({},e.context_menu,{closing:!0})});case"REMOVE_CONTEXT_MENU":return Object.assign({},e,{context_menu:null});case"SHOW_TOUCH_CONTEXT_MENU":return Object.assign({},e,{touch_context_menu:t.data});case"HIDE_TOUCH_CONTEXT_MENU":return Object.assign({},e,{touch_context_menu:Object.assign({},e.touch_context_menu,{closing:!0})});case"REMOVE_TOUCH_CONTEXT_MENU":return Object.assign({},e,{touch_context_menu:null});case"DRAG_START":return Object.assign({},e,{dragger:{dragging:!0,active:!1,context:t.context,from_uri:t.from_uri,victims:t.victims,victims_indexes:t.victims_indexes,start_x:t.start_x,start_y:t.start_y}});case"DRAG_ACTIVE":var a=Object.assign({},e.dragger,{active:!0});return Object.assign({},e,{dragger:a});case"DRAG_END":return Object.assign({},e,{dragger:!1});case"OPEN_MODAL":return Object.assign({},e,{modal:t.modal});case"CLOSE_MODAL":return Object.assign({},e,{modal:!1});case"CREATE_NOTIFICATION":var i=Object.assign({},e.notifications);return i[t.notification.key]=t.notification,Object.assign({},e,{notifications:i});case"CLOSE_NOTIFICATION":var i=Object.assign({},e.notifications);return i[t.key]&&(i[t.key].closing=!0),Object.assign({},e,{notifications:i});case"REMOVE_NOTIFICATION":var i=Object.assign({},e.notifications);return delete i[t.key],Object.assign({},e,{notifications:i});case"START_LOADING":var o=Object.assign({},e.load_queue?e.load_queue:{});return o[t.key]=t.source,Object.assign({},e,{load_queue:o});case"STOP_LOADING":var o=Object.assign({},e.load_queue?e.load_queue:{});return o[t.key]&&delete o[t.key],Object.assign({},e,{load_queue:o});case"START_PROCESS":case"UPDATE_PROCESS":var s=Object.assign({},e.processes?e.processes:[]);if(s[t.key])var l=Object.assign({},s[t.key].data,t.data);else var l=t.data;return s[t.key]={key:t.key,message:t.message,status:"running",data:l},Object.assign({},e,{processes:s});case"RESUME_PROCESS":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"running"})),Object.assign({},e,{processes:s});case"CANCEL_PROCESS":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"cancelling"})),Object.assign({},e,{processes:s});case"PROCESS_CANCELLED":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"cancelled"})),Object.assign({},e,{processes:s});case"PROCESS_FINISHING":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{closing:!0})),Object.assign({},e,{processes:s});case"PROCESS_FINISHED":var s=Object.assign({},e.processes?e.processes:{});return s[t.key]&&(s[t.key]=Object.assign({},s[t.key],{status:"finished",closing:!1})),Object.assign({},e,{processes:s});default:return e}};!function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);t.default=e}(n(2))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"PUSHER_CONNECT":case"PUSHER_CONNECTING":return Object.assign({},e,{connected:!1,connecting:!0});case"PUSHER_CONNECTED":return Object.assign({},e,{connected:!0,connecting:!1,connection_id:t.connection_id,client_id:t.client_id,username:t.username});case"PUSHER_DISCONNECTED":return Object.assign({},e,{connected:!1,connecting:!1});case"PUSHER_SET_PORT":return Object.assign({},e,{port:t.port});case"PUSHER_SET_USERNAME":return Object.assign({},e,{username:t.username});case"PUSHER_CONNECTIONS":for(var n={},r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"MOPIDY_SET":return Object.assign({},e,t.data);case"MOPIDY_CONNECT":case"MOPIDY_CONNECTING":return Object.assign({},e,{connected:!1,connecting:!0});case"MOPIDY_CONNECTED":return Object.assign({},e,{connected:!0,connecting:!1,restart_running:!1,upgrade_running:!1});case"MOPIDY_DISCONNECTED":return Object.assign({},e,{connected:!1,connecting:!1});case"MOPIDY_CHANGE_TRACK":return Object.assign({},e,{tlid:t.tlid});case"MOPIDY_URI_SCHEMES":return Object.assign({},e,{uri_schemes:t.uri_schemes});case"MOPIDY_RESTART_STARTED":return Object.assign({},e,{restart_running:!0});case"MOPIDY_RESTART_FINISHED":return Object.assign({},e,{restart_running:!1});case"MOPIDY_UPGRADE_STARTED":return Object.assign({},e,{upgrade_running:!0});case"MOPIDY_UPGRADE_FINISHED":return Object.assign({},e,{upgrade_running:!1});case"MOPIDY_LOCAL_SCAN_STARTED":return Object.assign({},e,{local_scan_running:!0});case"MOPIDY_LOCAL_SCAN_FINISHED":return Object.assign({},e,{local_scan_running:!1});case"MOPIDY_PLAY_STATE":return Object.assign({},e,{play_state:t.play_state});case"MOPIDY_CONSUME":return Object.assign({},e,{consume:t.consume});case"MOPIDY_RANDOM":return Object.assign({},e,{random:t.random});case"MOPIDY_REPEAT":return Object.assign({},e,{repeat:t.repeat});case"MOPIDY_VOLUME":return Object.assign({},e,{volume:t.volume});case"MOPIDY_MUTE":return Object.assign({},e,{mute:t.mute});case"MOPIDY_TIME_POSITION":return Object.assign({},e,{time_position:t.time_position});case"MOPIDY_QUEUE_HISTORY":for(var n=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"LASTFM_CONNECT":case"LASTFM_CONNECTING":return Object.assign({},e,{connected:!1,connecting:!0});case"LASTFM_CONNECTED":return Object.assign({},e,{connected:!0,connecting:!1});case"LASTFM_SET":return Object.assign({},e,t.data);case"LASTFM_ME_LOADED":return Object.assign({},e,{me:t.me});case"LASTFM_AUTHORIZATION_GRANTED":return Object.assign({},e,{authorizing:!1,authorization:t.data.session});case"LASTFM_AUTHORIZATION_REVOKED":return Object.assign({},e,{authorizing:!1,authorization:!1,me:null});case"LASTFM_IMPORT_AUTHORIZATION":return Object.assign({},e,{authorizing:!1,authorization:t.authorization,me:null});default:return e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"SPOTIFY_SET":return Object.assign({},e,t.data);case"PUSHER_SPOTIFY_TOKEN":return e.authorization?e:Object.assign({},e,{authorizing:!1,authorization:!1,access_token:t.data.access_token,token_expiry:t.data.token_expiry});case"SPOTIFY_AUTHORIZATION_GRANTED":return Object.assign({},e,{enabled:!0,authorizing:!1,authorization:t.data,access_token:t.data.access_token,refresh_token:t.data.refresh_token,token_expiry:t.data.token_expiry});case"SPOTIFY_AUTHORIZATION_REVOKED":return Object.assign({},e,{authorizing:!1,authorization:!1,access_token:!1,refresh_token:!1,token_expiry:0,me:!1});case"SPOTIFY_IMPORT_AUTHORIZATION":return Object.assign({},e,{authorizing:!1,authorization:t.authorization,access_token:t.authorization.access_token,refresh_token:t.authorization.refresh_token,token_expiry:t.authorization.token_expiry,me:t.me});case"SPOTIFY_TOKEN_REFRESHING":return Object.assign({},e,{refreshing_token:!0});case"SPOTIFY_TOKEN_REFRESHED":return Object.assign({},e,{refreshing_token:!1,access_token:t.data.access_token,token_expiry:t.data.token_expiry});case"SPOTIFY_TOKEN_CHANGED":return Object.assign({},e,{access_token:t.spotify_token.access_token,token_expiry:t.spotify_token.token_expiry});case"SPOTIFY_ME_LOADED":return Object.assign({},e,{me:t.me});case"SPOTIFY_FEATURED_PLAYLISTS_LOADED":return Object.assign({},e,{featured_playlists:t.data});case"SPOTIFY_NEW_RELEASES_LOADED":var n=[];return e.new_releases&&(n=Object.assign([],e.new_releases)),Object.assign({},e,{new_releases:r.removeDuplicates([].concat(a(n),a(t.uris))),new_releases_more:t.more,new_releases_total:t.total});case"SPOTIFY_DISCOVER_LOADED":return t.data?Object.assign({},e,{discover:[].concat(a(e.discover),[t.data])}):Object.assign({},e,{discover:[]});case"CLEAR_SPOTIFY_RECOMMENDATIONS":return Object.assign({},e,{recommendations:{artists_uris:[],albums_uris:[],tracks_uris:[]}});case"SPOTIFY_RECOMMENDATIONS_LOADED":return Object.assign({},e,{recommendations:{artists_uris:t.artists_uris,albums_uris:t.albums_uris,tracks_uris:t.tracks_uris}});case"SPOTIFY_FAVORITES_LOADED":return Object.assign({},e,{favorite_artists:t.artists_uris,favorite_tracks:t.tracks_uris});case"SPOTIFY_AUTOCOMPLETE_LOADING":var i=e.autocomplete_results;return i[t.field_id]={loading:!0},Object.assign({},e,{autocomplete_results:i});case"SPOTIFY_AUTOCOMPLETE_LOADED":var i=e.autocomplete_results;return i[t.field_id]=t.results,i[t.field_id].loading=!1,Object.assign({},e,{autocomplete_results:i});case"SPOTIFY_AUTOCOMPLETE_CLEAR":var i=e.autocomplete_results;return void 0!==i[t.field_id]&&delete i[t.field_id],Object.assign({},e,{autocomplete_results:i});case"SPOTIFY_GENRES_LOADED":return Object.assign({},e,{genres:t.genres});case"SPOTIFY_CATEGORIES_LOADED":var o=Object.assign({},e.categories),s=!0,l=!1,u=void 0;try{for(var c,p=t.categories[Symbol.iterator]();!(s=(c=p.next()).done);s=!0){var d=c.value;o[d.uri]=d}}catch(e){l=!0,u=e}finally{try{!s&&p.return&&p.return()}finally{if(l)throw u}}return Object.assign({},e,{categories:o});case"SPOTIFY_CATEGORY_PLAYLISTS_LOADED":var o=Object.assign({},e.categories),f=[];o[t.uri].playlists_uris&&(f=o[t.uri].playlists_uris);var d=Object.assign({},o[t.uri],{playlists_uris:[].concat(a(f),a(t.uris)),playlists_more:t.more,playlists_total:t.total});return o[t.uri]=d,Object.assign({},e,{categories:o});case"SPOTIFY_FLUSH_LIBRARY":return Object.assign({},e,{library_playlists:null,library_playlists_loaded_all:null,library_playlists_status:null,library_albums:null,library_albums_status:null,library_albums_loaded_all:null,library_artists:null,library_artists_status:null,library_artists_loaded_all:null,library_tracks:null,library_tracks_status:null,library_tracks_loaded_all:null});case"SPOTIFY_LIBRARY_PLAYLISTS_LOADED":if(e.library_playlists)var h=[].concat(a(e.library_playlists),a(t.uris));else var h=t.uris;return Object.assign({},e,{library_playlists:r.removeDuplicates(h)});case"SPOTIFY_LIBRARY_ARTISTS_LOADED":if(e.library_artists)var h=[].concat(a(e.library_artists),a(t.uris));else var h=t.uris;return Object.assign({},e,{library_artists:r.removeDuplicates(h)});case"SPOTIFY_LIBRARY_ALBUMS_LOADED":if(e.library_albums)var h=[].concat(a(e.library_albums),a(t.uris));else var h=t.uris;return Object.assign({},e,{library_albums:r.removeDuplicates(h)});case"SPOTIFY_LIBRARY_TRACKS_LOADED":case"SPOTIFY_LIBRARY_TRACKS_LOADED_MORE":var m=t.data.items,h=[];return m&&(m=r.formatTracks(m),h=r.arrayOf("uri",m),e.library_tracks&&(h=[].concat(a(e.library_tracks),a(h)))),Object.assign({},e,{library_tracks:r.removeDuplicates(h),library_tracks_more:t.data.next});case"SPOTIFY_LIBRARY_PLAYLISTS_LOADED_ALL":return Object.assign({},e,{library_playlists_loaded_all:!0});case"SPOTIFY_LIBRARY_PLAYLISTS_CLEAR":return Object.assign({},e,{library_playlists:[]});case"SPOTIFY_LIBRARY_ARTISTS_CLEAR":return Object.assign({},e,{library_artists:[]});case"SPOTIFY_LIBRARY_ALBUMS_CLEAR":return Object.assign({},e,{library_albums:[]});case"SPOTIFY_LIBRARY_ALBUM_CHECK":var y=Object.assign([],e.library_albums),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_albums:y});case"SPOTIFY_LIBRARY_ARTIST_CHECK":var y=Object.assign([],e.library_artists),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_artists:y});case"SPOTIFY_LIBRARY_PLAYLIST_CHECK":var y=Object.assign([],e.library_playlists),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_playlists:y});case"SPOTIFY_LIBRARY_TRACK_CHECK":var y=Object.assign([],e.library_tracks),_=y.indexOf(t.key);return _>-1&&!t.in_library?y.splice(_,1):_<0&&t.in_library&&y.push(t.key),Object.assign({},e,{library_tracks:y});case"SPOTIFY_CLEAR_SEARCH_RESULTS":return Object.assign({},e,{search_results:{}});case"SPOTIFY_SEARCH_RESULTS_LOADED":if(e.search_results)var v=Object.assign({},e.search_results);else var v={};return v.query=t.query,v.results?v[t.context]=[].concat(a(v[t.context]),a(t.results)):v[t.context]=t.results,t.more?v[t.context+"_more"]=t.more:v[t.context+"_more"]=null,Object.assign({},e,{search_results:v});default:return e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2));function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"SNAPCAST_SERVER_LOADED":var n=Object.assign({},t.server);return Object.assign({},e,{server:n});case"SNAPCAST_CLIENTS_LOADED":if(t.flush)var r={};else var r=Object.assign({},e.clients);var a=!0,i=!1,o=void 0;try{for(var s,l=t.clients[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var u=s.value;r[u.id]=u}}catch(e){i=!0,o=e}finally{try{!a&&l.return&&l.return()}finally{if(i)throw o}}return Object.assign({},e,{clients:r});case"SNAPCAST_GROUPS_LOADED":if(t.flush)var c={};else var c=Object.assign({},e.groups);var p=!0,d=!1,f=void 0;try{for(var h,m=t.groups[Symbol.iterator]();!(p=(h=m.next()).done);p=!0){var y=h.value;c[y.id]=y}}catch(e){d=!0,f=e}finally{try{!p&&m.return&&m.return()}finally{if(d)throw f}}return Object.assign({},e,{groups:c});case"SNAPCAST_STREAMS_LOADED":if(t.flush)var _={};else var _=Object.assign({},e.streams);var v=!0,b=!1,g=void 0;try{for(var E,k=t.streams[Symbol.iterator]();!(v=(E=k.next()).done);v=!0){var O=E.value;_[O.id]=O}}catch(e){b=!0,g=e}finally{try{!v&&k.return&&k.return()}finally{if(b)throw g}}return Object.assign({},e,{streams:_});default:return e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"GOOGLE_SET":return Object.assign({},e,t.data);case"GOOGLE_LIBRARY_ARTISTS_LOADED":if(e.library_artists)var n=[].concat(a(e.library_artists),a(t.uris));else var n=t.uris;return Object.assign({},e,{library_artists:r.removeDuplicates(n)});case"GOOGLE_CLEAR_LIBRARY_ARTISTS":return Object.assign({},e,{library_artists:null});case"GOOGLE_LIBRARY_ALBUMS_LOADED":if(e.library_albums)var n=[].concat(a(e.library_albums),a(t.uris));else var n=t.uris;return Object.assign({},e,{library_albums:r.removeDuplicates(n)});case"GOOGLE_CLEAR_LIBRARY_ALBUMS":return Object.assign({},e,{library_albums:null});default:return e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(2));function a(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];switch(t.type){case"GENIUS_SET":return Object.assign({},e,t.data);case"GENIUS_ME_LOADED":return Object.assign({},e,{me:t.me});case"GENIUS_AUTHORIZATION_GRANTED":return Object.assign({},e,{authorizing:!1,authorization:t.data,authorization_code:t.data.authorization_code,access_token:t.data.access_token});case"GENIUS_AUTHORIZATION_REVOKED":return Object.assign({},e,{authorizing:!1,authorization:null,authorization_code:null,access_token:null,me:null});case"GENIUS_IMPORT_AUTHORIZATION":return Object.assign({},e,{authorizing:!1,authorization:t.authorization,authorization_code:t.authorization.authorization_code,access_token:t.authorization.access_token,me:null});default:return e}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return void 0!==e.ui.shortkeys_enabled&&(e.ui.hotkeys_enabled=e.ui.shortkeys_enabled),e}},function(e,t,n){"use strict";function r(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(a){return"function"==typeof a?a(n,r,e):t(a)}}}}n.r(t);var a=r();a.withExtraArgument=r,t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=n(20),i=(r=a)&&r.__esModule?r:{default:r};function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t-1&&b.push(v[g]);n.only_mopidy||h.ui.search_settings&&!h.ui.search_settings.spotify||e.dispatch(c.getSearchResults(n.query)),h.mopidy.connected&&e.dispatch(u.getSearchResults(n.search_type,n.query,100,b));break;case"GET_LIBRARY_PLAYLISTS":e.getState().spotify.connected&&e.dispatch(c.getLibraryPlaylists()),e.getState().mopidy.connected&&e.dispatch(u.getLibraryPlaylists()),t(n);break;case"GET_LIBRARY_ALBUMS":e.getState().spotify.connected&&e.dispatch(c.getLibraryAlbums()),e.getState().mopidy.connected&&e.dispatch(u.getLibraryAlbums()),t(n);break;case"GET_LIBRARY_ARTISTS":e.getState().spotify.connected&&e.dispatch(c.getLibraryArtists()),e.getState().mopidy.connected&&e.dispatch(u.getLibraryArtists()),t(n);break;case"RESTART":location.reload();break;case"PLAYLIST_TRACKS":var E=p.formatTracks(n.tracks);n.tracks_uris=p.arrayOf("uri",E),e.dispatch({type:"TRACKS_LOADED",tracks:E}),t(n);break;case"PLAYLIST_TRACKS_ADDED":switch(e.dispatch(l.createNotification({type:"info",content:"Added "+n.tracks_uris.length+" tracks to playlist"})),p.uriSource(n.key)){case"spotify":e.dispatch(c.getPlaylist(n.key));break;case"m3u":e.getState().mopidy.connected&&e.dispatch(u.getPlaylist(n.key))}t(n);break;case"PLAYLIST_TRACKS_REORDERED":var k=Object.assign({},r.playlists),O=Object.assign({},k[n.key]),w=Object.assign([],O.tracks_uris),S=n.insert_before;S>n.range_start&&(S-=n.range_length);var T=w.splice(n.range_start,n.range_length);for(T.reverse(),g=0;g0){ie.artists=[];var H=!0,z=!1,B=void 0;try{for(var q,G=F.artists[Symbol.iterator]();!(H=(q=G.next()).done);H=!0){var W=q.value;ie.artists.push(p.formatSimpleObject(W)),x[W.uri]||M.push(W)}}catch(e){z=!0,B=e}finally{try{!H&&G.return&&G.return()}finally{if(z)throw B}}}N.push(ie)}}catch(e){I=!0,j=e}finally{try{!D&&Y.return&&Y.return()}finally{if(I)throw j}}n.tracks=N,M.length>0&&e.dispatch(s.artistsLoaded(M)),L.length>0&&e.dispatch(s.albumsLoaded(L)),t(n);break;case"ALBUMS_LOADED":R=Object.assign({},r.albums),L=[],M=[],N=[];var V=!0,K=!1,X=void 0;try{for(var $,Q=n.albums[Symbol.iterator]();!(V=($=Q.next()).done);V=!0){var J=$.value,Z=p.formatAlbum(J);if(R[Z.uri]&&(Z=Object.assign({},R[Z.uri],Z)),J.tracks){Z.tracks_uris=[];var ee=!0,te=!1,ne=void 0;try{for(var re,ae=J.tracks[Symbol.iterator]();!(ee=(re=ae.next()).done);ee=!0){var ie;(ie=re.value).album||(ie.album=p.formatSimpleObject(Z)),Z.tracks_uris.push(ie.uri),N.push(ie)}}catch(e){te=!0,ne=e}finally{try{!ee&&ae.return&&ae.return()}finally{if(te)throw ne}}}J.artists&&(Z.artists_uris=p.arrayOf("uri",J.artists),M=[].concat(o(M),o(J.artists))),L.push(Z)}}catch(e){K=!0,X=e}finally{try{!V&&Q.return&&Q.return()}finally{if(K)throw X}}n.albums=L,M.length>0&&e.dispatch(s.artistsLoaded(M)),N.length>0&&e.dispatch(s.tracksLoaded(N)),t(n);break;case"ARTISTS_LOADED":x=Object.assign({},r.artists),M=[],N=[];var oe=!0,se=!1,le=void 0;try{for(var ue,ce=n.artists[Symbol.iterator]();!(oe=(ue=ce.next()).done);oe=!0){var pe=ue.value;if(x[(W=p.formatArtist(pe)).uri]){if(x[W.uri].images&&W.images){var de=x[W.uri].images,fe=!0,he=!0,me=!1,ye=void 0;try{for(var _e,ve=de[Symbol.iterator]();!(he=(_e=ve.next()).done);he=!0)_e.value.huge==W.images[0].huge&&(fe=!1)}catch(e){me=!0,ye=e}finally{try{!he&&ve.return&&ve.return()}finally{if(me)throw ye}}fe&&(W.images=Object.assign([],[].concat(o(de),o(W.images))))}W=Object.assign({},x[W.uri],W)}pe.tracks&&(E=p.formatTracks(pe.tracks),w=p.arrayOf("uri",E),W.tracks_uris=w,N=[].concat(o(N),o(E))),M.push(W)}}catch(e){se=!0,le=e}finally{try{!oe&&ce.return&&ce.return()}finally{if(se)throw le}}n.artists=M,N.length>0&&e.dispatch(s.tracksLoaded(N)),t(n);break;case"PLAYLISTS_LOADED":var be=Object.assign({},r.playlists),ge=[],Ee=(N=[],!0),ke=!1,Oe=void 0;try{for(var we,Se=n.playlists[Symbol.iterator]();!(Ee=(we=Se.next()).done);Ee=!0){switch(O=we.value,O=p.formatPlaylist(O),p.uriSource(O.uri)){case"m3u":O.can_edit=!0;break;case"spotify":e.getState().spotify.authorization&&e.getState().spotify.me&&(O.can_edit=O.owner.id==e.getState().spotify.me.id)}be[O.uri]&&void 0===(O=Object.assign({},be[O.uri],O)).tracks_uris&&(O.tracks_uris=[]),O.tracks&&(E=p.formatTracks(O.tracks),w=p.arrayOf("uri",E),O.tracks_uris=w,delete O.tracks,N=[].concat(o(N),o(E))),ge.push(O)}}catch(e){ke=!0,Oe=e}finally{try{!Ee&&Se.return&&Se.return()}finally{if(ke)throw Oe}}n.playlists=ge,N.length>0&&e.dispatch(s.tracksLoaded(N)),t(n);break;case"USERS_LOADED":var Te=Object.assign({},r.users),Ae=[],Ce=!0,Pe=!1,xe=void 0;try{for(var Re,Ne=n.users[Symbol.iterator]();!(Ce=(Re=Ne.next()).done);Ce=!0){var Me=Re.value;Te[(Me=p.formatUser(Me)).uri]&&(Me=Object.assign({},Te[Me.uri],Me)),Ae.push(Me)}}catch(e){Pe=!0,xe=e}finally{try{!Ce&&Ne.return&&Ne.return()}finally{if(Pe)throw xe}}n.users=Ae,t(n);break;case"USER_PLAYLISTS_LOADED":e.dispatch(s.playlistsLoaded(n.playlists)),t(n);break;case"LOADED_MORE":var Le=n.parent_type+"s",De=Object.assign({},r[n.parent_type+"s"]),Ie=Object.assign({},De[n.parent_key]);if(void 0!==n.records_data.items)var je=n.records_data.items;else je=void 0!==n.records_data.tracks?n.records_data.tracks:void 0!==n.records_data.artists?n.records_data.artists:void 0!==n.records_data.albums?n.records_data.albums:void 0!==n.records_data.playlists?n.records_data.playlists:n.records_data;"track"==n.records_type&&(je=p.formatTracks(je));var Ue=n.records_type+"s",Ye=p.arrayOf("uri",je);"playlist"==n.records_type&&(Ye=p.upgradeSpotifyPlaylistUris(Ye));var Fe=Ye;void 0!==Ie[Ue+"_uris"]&&(Fe=[].concat(o(Ie[Ue+"_uris"]),o(Fe))),Ie[Ue+"_uris"]=Fe,void 0!==n.records_data.next&&(Ie[Ue+"_more"]=n.records_data.next);var He={type:Le.toUpperCase()+"_LOADED"};He[Le]=[Ie],e.dispatch(He);var ze={type:Ue.toUpperCase()+"_LOADED"};ze[Ue]=je,e.dispatch(ze),t(n);break;default:return t(n)}}}};t.default=d},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r,a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(20),o=(r=i)&&r.__esModule?r:{default:r};!function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);t.default=e}(n(2));var s=n(3),l=(n(7),function(t){return function(n){return function(r){switch(r.type){case"MOPIDY_STATE":var i=t.getState().core.tracks,l=t.getState().core.current_track;void 0!==i[l]&&i[l],n(r);break;case"SET_WINDOW_TITLE":if(r.play_state?r.play_state:t.getState().mopidy.play_state,r.title)var u=r.title;else u=t.getState().ui.window_title;document.title=" "+u,n(r);break;case"OPEN_MODAL":t.getState().ui.allow_reporting&&o.default.event({category:"Modal",action:"Opened",label:r.modal.name}),e("body").addClass("modal-open"),t.dispatch(s.hideContextMenu()),t.dispatch(s.hideTouchContextMenu()),n(r);break;case"CLOSE_MODAL":t.getState().ui.allow_reporting&&o.default.event({category:"Modal",action:"Closed",label:null}),e("body").removeClass("modal-open"),n(r);break;case"HIDE_CONTEXT_MENU":t.getState().ui.context_menu&&(setTimeout(function(){t.dispatch(s.removeContextMenu())},200),n(r));break;case"HIDE_TOUCH_CONTEXT_MENU":t.getState().ui.context_menu&&(setTimeout(function(){t.dispatch(s.removeTouchContextMenu())},200),n(r));break;case"BROWSER_NOTIFICATION":if(void 0===(d=window.Notification||window.mozNotification||window.webkitNotification))return!1;void 0!==d&&d.requestPermission(function(e){});var c={};a(r.data)&&(c=r.data),a(c.data)&&(c=Object.assign({},c,c.data)),u="";var p={body:"",dir:"auto",lang:"EN",tag:"iris"};c.title&&(u=c.title),c.body&&(p.body=c.body),c.icon&&(p.icon=c.icon);var d=new d(u,p);break;case"CREATE_NOTIFICATION":r.notification.sticky||setTimeout(function(){t.dispatch(s.closeNotification(r.notification.key))},1e3*r.notification.duration),n(r);break;case"CLOSE_NOTIFICATION":var f=Object.assign({},t.getState().ui.notifications);setTimeout(function(){t.dispatch(s.removeNotification(r.key))},200),n(r);break;case"REMOVE_NOTIFICATION":r.manual&&(f=Object.assign({},t.getState().ui.notifications))[r.key]&&"broadcast"==f[r.key].type&&t.dispatch({type:"SUPPRESS_BROADCAST",key:r.key}),n(r);break;case"BROADCASTS_LOADED":var h=[];void 0!==t.getState().ui.suppressed_broadcasts&&(h=t.getState().ui.suppressed_broadcasts);for(var m=0;m2&&void 0!==arguments[2]?arguments[2]:null;return new Promise(function(i,o){var l=s.generateGuid(),c={jsonrpc:"2.0",id:l,method:r};a&&(c.params=a),e.getState().ui.log_pusher&&console.log("Pusher log (outgoing)",c),t.send(JSON.stringify(c)),e.dispatch(u.startLoading(l,"pusher_"+r));setTimeout(function(){e.dispatch(u.stopLoading(l)),o({id:l,code:32300,message:"Request timed out"})},3e4);n[l]={resolve:i,reject:o}})};return function(i){return function(m){return function(y){var _=i.getState().pusher;switch(y.type){case"PUSHER_CONNECT":null!=t&&t.close(),i.dispatch({type:"PUSHER_CONNECTING"});var v=i.getState();(t=new WebSocket("ws"+("https:"===window.location.protocol?"s":"")+"://"+v.mopidy.host+":"+v.mopidy.port+"/iris/ws/")).onopen=function(){i.dispatch({type:"PUSHER_CONNECTED"})},t.onclose=function(e){i.dispatch({type:"PUSHER_DISCONNECTED"}),setTimeout(function(){i.dispatch(c.connect())},5e3)},t.onerror=function(e){1==t.readyState&&i.dispatch(l.handleException("Pusher websocket error",e,e.type))},t.onmessage=function(e){e=JSON.parse(e.data);!function(e,t,r){t.getState().ui.log_pusher&&console.log("Pusher log (incoming)",r);var a=null;if(r.id?a=r.id:r.error&&r.error.id&&(a=r.error.id),a)void 0!==n[a]?(t.dispatch(u.stopLoading(a)),void 0!==r.error?n[a].reject(r.error):n[a].resolve(r.result)):t.dispatch(l.handleException("Pusher: Response received with no matching request",r));else if(void 0!==r.error)t.dispatch(l.handleException("Pusher: "+r.error.message,r,void 0!==r.error.data&&void 0!==r.error.data.description?r.error.data.description:null));else{switch(r.method){case"connection_added":t.dispatch(c.connectionAdded(r.params.connection));break;case"connection_changed":t.dispatch(c.connectionChanged(r.params.connection));break;case"connection_removed":t.dispatch(c.connectionRemoved(r.params.connection));break;case"queue_metadata_changed":t.dispatch(c.queueMetadataChanged(r.params.queue_metadata));break;case"spotify_token_changed":t.dispatch(f.tokenChanged(r.params.spotify_token));break;case"share_configuration_received":t.dispatch(u.createNotification({type:"share-configuration-received",configuration:r.params,sticky:!0}));break;case"notification":t.dispatch(u.createNotification(r.params.notification));break;case"radio_started":t.dispatch(c.radioStarted(r.params.radio));break;case"radio_changed":t.dispatch(c.radioChanged(r.params.radio));break;case"radio_stopped":t.dispatch(c.radioStopped());break;case"commands_changed":t.dispatch(c.commandsUpdated(r.params.commands));break;case"reload":window.location.reload(!0);break;case"local_scan_started":t.dispatch(u.updateProcess("local_scan","Scanning local library"));break;case"local_scan_finished":t.dispatch(u.processFinished("local_scan")),t.dispatch(u.createNotification({key:"local_scan",type:"info",content:"Local scan finished",description:r.params.output}));break;case"local_scan_error":t.dispatch(u.processFinished("local_scan")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}));break;case"upgrade_started":t.dispatch(u.updateProcess("upgrade","Upgrading"));break;case"upgrade_finished":t.dispatch(u.updateProcess("upgrade","Restarting to complete upgrade"));break;case"upgrade_error":t.dispatch(u.processFinished("upgrade")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}));break;case"restart_started":t.dispatch(u.processFinished("upgrade")),t.dispatch(u.createNotification({type:"info",content:"Restarting server..."}));break;case"restart_error":t.dispatch(u.processFinished("upgrade")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}));break;case"test_started":t.dispatch(u.updateProcess("test","Running test"));break;case"test_finished":t.dispatch(u.processFinished("test")),t.dispatch(u.createNotification({type:"info",content:"Test finished",description:r.params.output}));break;case"test_error":t.dispatch(u.processFinished("test")),t.dispatch(u.createNotification({type:"bad",content:r.params.message,description:r.params.description}))}r.method.startsWith("snapcast_")&&t.dispatch(h.eventReceived(r))}}(0,i,e)};break;case"PUSHER_CONNECTED":i.getState().ui.allow_reporting&&o.default.event({category:"Pusher",action:"Connected",label:y.username}),i.dispatch(c.updateConnection()),i.dispatch(c.getConfig()),i.dispatch(c.getRadio()),i.dispatch(c.getCommands()),i.dispatch(c.getQueueMetadata()),setTimeout(function(){i.dispatch(c.getVersion())},500),m(y);break;case"PUSHER_REQUEST":r(i,y.method,y.params).then(function(t){y.response_callback&&y.response_callback.call(e,t)},function(t){y.error_callback?y.error_callback.call(e,t):i.dispatch(l.handleException("Pusher request failed",t,y.method,y))});break;case"PUSHER_DELIVER_MESSAGE":r(i,"send_message",y.data).then(function(e){i.dispatch(u.createNotification({type:"info",content:"Message delivered"}))},function(e){i.dispatch(l.handleException("Could not deliver message",e))});break;case"PUSHER_DELIVER_BROADCAST":r(i,"broadcast",y.data);break;case"PUSHER_SET_USERNAME":i.dispatch(c.updateConnection({username:y.username})),m(y);break;case"PUSHER_UPDATE_CONNECTION":var b=a({username:i.getState().pusher.username,client_id:i.getState().pusher.client_id},y.connection?y.connection:{});r(i,"update_connection",b).then(function(e){e.type="PUSHER_CONNECTION_UPDATED",i.dispatch(e)},function(e){i.dispatch(l.handleException("Could not update connection",e))}),m(y);break;case"PUSHER_GET_QUEUE_METADATA":r(i,"get_queue_metadata").then(function(e){e.type="PUSHER_QUEUE_METADATA",i.dispatch(e)},function(e){i.dispatch(l.handleException("Could not load queue metadata",e))});break;case"PUSHER_ADD_QUEUE_METADATA":r(i,"add_queue_metadata",{tlids:y.tlids,added_from:y.from_uri,added_by:_.username});break;case"PUSHER_GET_VERSION":r(i,"get_version").then(function(e){i.dispatch({type:"PUSHER_VERSION",version:e.version})},function(e){i.dispatch(l.handleException("Could not load version",e))});break;case"PUSHER_GET_CONFIG":r(i,"get_config").then(function(e){i.dispatch({type:"PUSHER_CONFIG",config:e.config})},function(e){i.dispatch(l.handleException("Could not load config",e))});break;case"PUSHER_GET_CONNECTIONS":return r(i,"get_connections").then(function(e){i.dispatch({type:"PUSHER_CONNECTIONS",connections:e.connections})},function(e){i.dispatch(l.handleException("Could not load connections",e))}),m(y);case"PUSHER_GET_COMMANDS":r(i,"get_commands").then(function(e){i.dispatch(c.commandsUpdated(e.commands))},function(e){}),m(y);break;case"PUSHER_SET_COMMAND":var g=Object.assign({},_.commands);if(g[y.command.id])var E=Object.assign({},g[y.command.id],y.command);else E=y.command;g[y.command.id]=E,i.dispatch(c.setCommands(g));break;case"PUSHER_SET_COMMANDS":r(i,"set_commands",{commands:y.commands}).then(function(e){},function(e){i.dispatch(l.handleException("Could not set commands",e))}),m(y);break;case"PUSHER_REMOVE_COMMAND":var k=Object.assign({},_.commands);delete k[y.id],r(i,"set_commands",{commands:k}).then(function(e){},function(e){i.dispatch(l.handleException("Could not remove command",e))}),m(y);break;case"PUSHER_RUN_COMMAND":E=Object.assign({},_.commands[y.id]);var O="command_"+y.id;y.notify&&i.dispatch(u.startProcess(O,"Running command")),r(i,"run_command",{id:y.id}).then(function(e){i.dispatch(u.processFinished(O)),y.notify&&i.dispatch(u.createNotification({key:O,type:"info",content:"Command sent"}))},function(e){i.dispatch(u.processFinished(O)),i.dispatch(l.handleException("Could not run command",e))});break;case"PUSHER_GET_RADIO":r(i,"get_radio").then(function(e){i.dispatch({type:"PUSHER_RADIO_LOADED",radio:e.radio})},function(e){i.dispatch(l.handleException("Could not load radio",e))});break;case"PUSHER_START_RADIO":case"PUSHER_UPDATE_RADIO":i.getState().ui.allow_reporting&&o.default.event({category:"Pusher",action:"Start radio",label:y.uris.join()}),"PUSHER_UPDATE_RADIO"==y.type?i.dispatch(u.startProcess("PUSHER_RADIO_PROCESS","Updating radio")):i.dispatch(u.startProcess("PUSHER_RADIO_PROCESS","Starting radio"));for(var w={reset:"PUSHER_START_RADIO"==y.type,seed_artists:[],seed_genres:[],seed_tracks:[]},S=0;S3&&void 0!==arguments[3]?arguments[3]:{};if(!t.getState().mopidy.connected)return!1;var a=n.split("."),i=a[0],s=a[1];return new Promise(function(a,l){if(s in e[i])var u=e[i][s],d=s;else u=e[i],d=i;if(!u||"function"!=typeof u){var f={message:"Call to an invalid object. Check you are calling a valid Mopidy object.",call:n,value:r};t.dispatch(c.handleException("Mopidy: "+f.message,f)),l(f)}var h=o.generateGuid();t.dispatch(p.startLoading(h,"mopidy_"+d));var m=setTimeout(function(){t.dispatch(p.stopLoading(h)),l({message:"Request timed out",call:n,value:r})},3e4);u(r).then(function(e){clearTimeout(m),t.dispatch(p.stopLoading(h)),a(e)},function(e){clearTimeout(m),t.dispatch(p.stopLoading(h)),l(e)})})};return function(_){return function(v){return function(b){switch(b.type){case"MOPIDY_CONNECT":null!=t&&t.close(),_.dispatch({type:"MOPIDY_CONNECTING"});var g=_.getState();(t=new a.default({webSocketUrl:"ws"+("https:"===window.location.protocol?"s":"")+"://"+g.mopidy.host+":"+g.mopidy.port+"/mopidy/ws/",callingConvention:"by-position-or-by-name"})).on(function(e,t){return function(e,t,r,a){switch(t.getState().ui.log_mopidy,r){case"state:online":t.dispatch({type:"MOPIDY_CONNECTED"}),t.dispatch(u.getPlayState()),t.dispatch(u.getVolume()),t.dispatch(u.getMute()),t.dispatch(u.getConsume()),t.dispatch(u.getRandom()),t.dispatch(u.getRepeat()),t.dispatch(u.getQueue()),t.dispatch(u.getCurrentTrack()),t.dispatch(u.getTimePosition()),t.dispatch(u.getUriSchemes()),n=setInterval(function(){"playing"==t.getState().mopidy.play_state&&(s%5==0&&!0===t.getState().ui.window_focus?t.dispatch(u.getTimePosition()):t.dispatch(u.timePosition(t.getState().mopidy.time_position+1e3)),s++)},1e3);break;case"state:offline":t.dispatch({type:"MOPIDY_DISCONNECTED"}),t.dispatch(u.clearCurrentTrack()),clearInterval(n),s=0;break;case"event:tracklistChanged":t.dispatch(u.getQueue()),setTimeout(function(){t.dispatch(u.getNextTrack())},1e3);break;case"event:playbackStateChanged":t.dispatch({type:"MOPIDY_PLAY_STATE",play_state:a.new_state}),t.dispatch(u.getTimePosition());break;case"event:seeked":t.dispatch({type:"MOPIDY_TIME_POSITION",time_position:a.time_position});break;case"event:trackPlaybackEnded":t.dispatch(u.clearCurrentTrack()),t.dispatch({type:"MOPIDY_TIME_POSITION",time_position:0});break;case"event:trackPlaybackStarted":t.dispatch(u.currentTrackLoaded(a.tl_track)),setTimeout(function(){t.dispatch(u.getNextTrack())},1e3);break;case"event:volumeChanged":t.dispatch({type:"MOPIDY_VOLUME",volume:a.volume});break;case"event:muteChanged":t.dispatch({type:"MOPIDY_MUTE",mute:a.mute});break;case"event:optionsChanged":t.dispatch(u.getConsume()),t.dispatch(u.getRandom()),t.dispatch(u.getRepeat())}}(0,_,e,t)});break;case"MOPIDY_CONNECTED":if(_.getState().ui.allow_reporting){var E=(0,i.sha256)(window.location.hostname);r.default.event({category:"Mopidy",action:"Connected",label:E})}_.dispatch(p.createNotification({content:"Mopidy connected"})),v(b);break;case"MOPIDY_DISCONNECT":null!=t&&t.close(),t=null,_.dispatch({type:"MOPIDY_DISCONNECTED"});break;case"MOPIDY_DISCONNECTED":_.dispatch(p.createNotification({type:"bad",content:"Mopidy disconnected"})),o.setFavicon("favicon_error.png");break;case"MOPIDY_DEBUG":y(t,_,b.call,b.value).then(function(e){_.dispatch({type:"DEBUG",response:e})});break;case"SET_WINDOW_FOCUS":!0===b.window_focus&&(_.dispatch(u.getPlayState()),_.dispatch(u.getVolume()),_.dispatch(u.getMute()),_.dispatch(u.getConsume()),_.dispatch(u.getRandom()),_.dispatch(u.getRepeat()),_.dispatch(u.getCurrentTrack()),_.dispatch(u.getTimePosition()));break;case"MOPIDY_REQUEST":y(t,_,b.method,b.params).then(function(t){b.response_callback&&_.dispatch(b.response_callback.call(e,t))},function(t){b.error_callback?_.dispatch(b.error_callback.call(e,t)):_.dispatch(c.handleException("Mopidy request failed",t,b.method,b))});break;case"MOPIDY_PLAY_STATE":_.dispatch(p.setWindowTitle(null,b.play_state)),"playing"==b.play_state?o.setFavicon("favicon.png"):o.setFavicon("favicon_paused.png"),v(b);break;case"MOPIDY_GET_PLAY_STATE":y(t,_,"playback.getState").then(function(e){_.dispatch({type:"MOPIDY_PLAY_STATE",play_state:e})});break;case"MOPIDY_PLAY":y(t,_,"playback.play").then(function(e){_.dispatch({type:"MOPIDY_PLAY_STATE",play_state:"playing"})}),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+("paused"==_.getState().mopidy.play_state?" resumed":" started")+" playback",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}));break;case"MOPIDY_PAUSE":y(t,_,"playback.pause").then(function(e){_.dispatch({type:"MOPIDY_PLAY_STATE",play_state:"paused"}),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" paused playback",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}))});break;case"MOPIDY_PREVIOUS":_.dispatch(p.setCurrentTrackTransition("previous")),y(t,_,"playback.previous");break;case"MOPIDY_NEXT":_.dispatch(p.setCurrentTrackTransition("next")),y(t,_,"playback.next").then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+' skipped "'+_.getState().core.current_track.name+'"',icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}))});break;case"MOPIDY_STOP":y(t,_,"playback.stop").then(function(e){_.dispatch(u.clearCurrentTrack()),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" stopped playback",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}))});break;case"MOPIDY_CHANGE_TRACK":y(t,_,"playback.play",{tlid:b.tlid}).then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" changed track"}}))});break;case"MOPIDY_REMOVE_TRACKS":y(t,_,"tracklist.remove",{tlid:b.tlids}).then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" removed "+b.tlids.length+" tracks"}}))});break;case"MOPIDY_GET_REPEAT":y(t,_,"tracklist.getRepeat").then(function(e){_.dispatch({type:"MOPIDY_REPEAT",repeat:e})});break;case"MOPIDY_SET_REPEAT":y(t,_,"tracklist.setRepeat",[b.repeat]);break;case"MOPIDY_GET_RANDOM":y(t,_,"tracklist.getRandom").then(function(e){_.dispatch({type:"MOPIDY_RANDOM",random:e})});break;case"MOPIDY_SET_RANDOM":y(t,_,"tracklist.setRandom",[b.random]);break;case"MOPIDY_GET_CONSUME":y(t,_,"tracklist.getConsume").then(function(e){_.dispatch({type:"MOPIDY_CONSUME",consume:e})});break;case"MOPIDY_SET_CONSUME":y(t,_,"tracklist.setConsume",[b.consume]);break;case"MOPIDY_GET_MUTE":y(t,_,"mixer.getMute").then(function(e){_.dispatch({type:"MOPIDY_MUTE",mute:e})});break;case"MOPIDY_SET_MUTE":y(t,_,"mixer.setMute",[b.mute]).then(function(e){_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+(b.mute?" muted":" unmuted")+" playback"}}))});break;case"MOPIDY_GET_VOLUME":y(t,_,"playback.getVolume").then(function(e){_.dispatch({type:"MOPIDY_VOLUME",volume:e})});break;case"MOPIDY_SET_VOLUME":y(t,_,"playback.setVolume",{volume:b.volume}).then(function(e){_.dispatch({type:"MOPIDY_VOLUME",volume:b.volume})});break;case"MOPIDY_SET_TIME_POSITION":y(t,_,"playback.seek",{time_position:b.time_position}).then(function(e){_.dispatch({type:"MOPIDY_TIME_POSITION",time_position:b.time_position})});break;case"MOPIDY_GET_TIME_POSITION":y(t,_,"playback.getTimePosition").then(function(e){_.dispatch({type:"MOPIDY_TIME_POSITION",time_position:e})});break;case"MOPIDY_GET_URI_SCHEMES":y(t,_,"getUriSchemes").then(function(e){for(var t=e,n=["http","https","mms","rtmp","rtmps","rtsp","sc","yt"],r=0;r-1&&t.splice(a,1)}for(r=0;r0){if(k.tracks_total==k.tracks_uris.length){_.dispatch(u.playURIs(k.tracks_uris,b.uri,b.shuffle));break}if("spotify"==k.provider){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"play"));break}}else if("spotify"==o.uriSource(b.uri)&&_.getState().spotify.enabled){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"play"));break}y(t,_,"playlists.lookup",{uri:b.uri}).then(function(e){if(e&&void 0!==e.tracks&&e.tracks){var t=o.arrayOf("uri",e.tracks);b.shuffle&&(t=o.shuffle(t)),_.dispatch(u.playURIs(t,b.uri))}else _.dispatch(p.createNotification({content:"Failed to load playlist tracks",type:"bad"}))},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Lookup failed"),e))});break;case"MOPIDY_ENQUEUE_PLAYLIST":var k;if((k=_.getState().core.playlists[b.uri])&&k.tracks_uris&&k.tracks_uris.length>0){if(k.tracks_total==k.tracks_uris.length){var O=Object.assign([],k.tracks_uris);b.shuffle&&(O=o.shuffle(O)),_.dispatch(u.enqueueURIs(O,b.uri,b.play_next,b.at_position,b.offset));break}if("spotify"==k.provider){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"enqueue",b.play_next));break}}else if("spotify"==o.uriSource(b.uri)&&_.getState().spotify.enabled){_.dispatch(d.getAllPlaylistTracks(b.uri,b.shuffle,"enqueue",b.play_next));break}y(t,_,"playlists.lookup",{uri:b.uri}).then(function(e){if(void 0===e.tracks)_.dispatch(p.createNotification({content:"Failed to load playlist tracks",type:"bad"}));else{var t=o.arrayOf("uri",e.tracks);b.shuffle&&(t=o.shuffle(t)),_.dispatch(u.enqueueURIs(t,b.uri,b.play_next,b.at_position,b.offset))}},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Lookup failed"),e))});break;case"MOPIDY_ENQUEUE_URIS":if(!b.uris||b.uris.length<=0){e.props.uiActions.createNotification({content:"No URIs to enqueue",type:"warning"});break}_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" is adding "+b.uris.length+" URIs to queue",icon:!!_.getState().core.current_track&&o.getTrackIcon(_.getState().core.current_track,_.getState().core)}}));for(var w=Object.assign([],b.uris),S=[];w.length>0;)S.push({uris:w.splice(0,5),at_position:b.at_position,play_next:b.play_next,offset:b.offset+5*S.length,from_uri:b.from_uri});b.batches=S,v(b),_.dispatch(p.startProcess("MOPIDY_ENQUEUE_URIS_PROCESSOR","Adding "+b.uris.length+" URI(s)",{batches:S,remaining:b.uris.length,total:b.uris.length}));break;case"MOPIDY_ENQUEUE_URIS_PROCESSOR":if((K=_.getState().ui.processes.MOPIDY_ENQUEUE_URIS_PROCESSOR)&&"cancelling"==K.status)return void _.dispatch(p.processCancelled("MOPIDY_ENQUEUE_URIS_PROCESSOR"));if(!(b.data.batches&&b.data.batches.length>0)){_.dispatch(p.processFinishing("MOPIDY_ENQUEUE_URIS_PROCESSOR"));break}for(var T=(S=Object.assign([],b.data.batches))[0],A=0,C=0;C-1?R+T.offset+1:0+T.offset:T.at_position&&(N.at_position=T.at_position+T.offset),y(t,_,"tracklist.add",N).then(function(e){for(var t=[],n=0;n0){_.dispatch(u.changeTrack(e[0].tlid));for(var t=[],n=0;n0&&setTimeout(function(){_.dispatch(u.enqueueURIs(b.uris,b.from_uri,null,1))},100)},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Adding tracks failed"),e))});break;case"MOPIDY_REORDER_TRACKLIST":y(t,_,"tracklist.move",{start:b.range_start,end:b.range_start+b.range_length,to_position:b.insert_before}).then(function(e){},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Reorder failed"),e))});break;case"MOPIDY_CLEAR_TRACKLIST":y(t,_,"tracklist.clear").then(function(e){_.dispatch(c.clearCurrentTrack()),_.dispatch(f.deliverBroadcast("notification",{notification:{content:_.getState().pusher.username+" cleared queue"}}))});break;case"MOPIDY_GET_SEARCH_RESULTS":_.dispatch({type:"MOPIDY_CLEAR_SEARCH_RESULTS"});var D=["spotify:"],I=Object.assign([],_.getState().ui.uri_schemes_search_enabled);for(C=0;C0){var t=[];if(e[0].albums&&(t=[].concat(l(e[0].albums),l(t))),e[0].tracks)for(var n=0;n0){var t=[];if(e[0].artists)for(var n=0;n0){for(var t=[],n=0;n0&&void 0!==e[0].tracks){var t=e[0].tracks;_.dispatch({type:"MOPIDY_SEARCH_RESULTS_LOADED",query:b.data.query,context:b.data.context,results:o.formatTracks(t)})}H()},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Search failed"),e)),H()});break;case"all":default:var z=function(){var e=_.getState().ui.processes.MOPIDY_GET_SEARCH_RESULTS_PROCESSOR;e&&"cancelling"==e.status?_.dispatch(p.processCancelled("MOPIDY_GET_SEARCH_RESULTS_PROCESSOR")):(_.dispatch(p.updateProcess("MOPIDY_GET_SEARCH_RESULTS_PROCESSOR","Searching "+b.data.uri_scheme.replace(":","")+" albums",{remaining:b.data.uri_schemes.length+.75})),y(t,_,"library.search",{query:{album:[b.data.query]},uris:[b.data.uri_scheme]}).then(function(e){if(e.length>0){var t=[];if(e[0].albums&&(t=[].concat(l(e[0].albums),l(t))),e[0].tracks)for(var n=0;n0){var t=[];if(e[0].artists)for(var n=0;n0){for(var t=[],n=0;n0&&void 0!==e[0].tracks){var t=e[0].tracks;_.dispatch({type:"MOPIDY_SEARCH_RESULTS_LOADED",query:b.data.query,context:"tracks",results:o.formatTracks(t)})}z()},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Search failed"),e)),z()}))}()}break;case"MOPIDY_GET_LIBRARY_PLAYLISTS":y(t,_,"playlists.asList").then(function(e){for(var n=o.arrayOf("uri",e),r=[],a=0;a0&&_.dispatch({type:"MOPIDY_RESOLVE_PLAYLIST_TRACKS",tracks:t.tracks,key:t.uri}),_.dispatch(c.playlistLoaded(t))});break;case"MOPIDY_RESOLVE_PLAYLIST_TRACKS":var W=Object.assign([],b.tracks);w=o.arrayOf("uri",W);y(t,_,"library.lookup",{uris:w}).then(function(e){for(var t in e)if(e.hasOwnProperty(t)){var n=e[t][0];if(n)for(var r=W.filter(function(e){return n.uri==e.uri}),a=0;ai&&(s-=o);for(var l=0;l0?(_.dispatch(p.updateProcess("MOPIDY_LIBRARY_ALBUMS_PROCESSOR","Loading "+w.length+" local albums",{uris:w,remaining:w.length})),_.dispatch(u.getAlbums(X,{name:"MOPIDY_LIBRARY_ALBUMS_PROCESSOR",data:{uris:w}}))):_.dispatch(p.processFinishing("MOPIDY_LIBRARY_ALBUMS_PROCESSOR"));break;case"MOPIDY_GET_ALBUMS":y(t,_,"library.lookup",{uris:b.uris}).then(function(e){if(!(e.length<=0)){var t=[],n=[],r=[];for(var a in e)if(e.hasOwnProperty(a)&&e[a].length>0&&e[a][0].album){var i=e[a],o=[];if(i[0].artists){var s=!0,l=!1,u=void 0;try{for(var d,f=e[a][0].artists[Symbol.iterator]();!(s=(d=f.next()).done);s=!0){var h=d.value;o.push(h.uri),n.push(h)}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}}var m=[],y=!0,v=!1,g=void 0;try{for(var E,k=i[Symbol.iterator]();!(y=(E=k.next()).done);y=!0){var O=E.value;m.push(O.uri),r.push(O)}}catch(e){v=!0,g=e}finally{try{!y&&k.return&&k.return()}finally{if(v)throw g}}var w=Object.assign({},{source:"local",artists_uris:o,tracks_uris:m,tracks_total:m.length},i[0].album);t.push(w)}_.dispatch(c.albumsLoaded(t)),_.dispatch(c.artistsLoaded(n)),_.dispatch(c.tracksLoaded(r)),b.processor&&setTimeout(function(){_.dispatch(p.runProcess(b.processor.name,b.processor.data))},10)}});break;case"MOPIDY_GET_ALBUM":y(t,_,"library.lookup",b.data).then(function(e){if(e&&!(e.length<=0)){var n=[];if(e[0].artists){var r=!0,a=!1,i=void 0;try{for(var s,l=e[0].artists[Symbol.iterator]();!(r=(s=l.next()).done);r=!0){var u=s.value;n.push(u)}}catch(e){a=!0,i=e}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}}var p=Object.assign({},e[0].album,{source:"local",artists_uris:o.arrayOf("uri",n),tracks_uris:o.arrayOf("uri",e),tracks_total:e.length});if(_.dispatch(c.albumLoaded(p)),_.dispatch(c.artistsLoaded(n)),!e[0].album.images){var d=o.getFromUri("mbid",p.uri);d?_.dispatch(m.getAlbum(p.uri,!1,!1,d)):n&&n.length>0&&_.dispatch(m.getAlbum(p.uri,n[0].name,p.name))}y(t,_,"library.lookup",{uris:p.tracks_uris}).then(function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(e[n][0]);_.dispatch(c.tracksLoaded(t))})}});break;case"MOPIDY_GET_LIBRARY_ARTISTS":y(t,_,"library.browse",{uri:_.getState().mopidy.library_artists_uri}).then(function(e){if(!(e.length<=0)){for(var t=[],n=0;n0&&e[n][0].artists){var r=Object.assign({},e?e[n][0].artists[0]:{},{provider:"mopidy"});t.push(r)}_.dispatch(c.artistsLoaded(t)),b.processor&&setTimeout(function(){_.dispatch(p.runProcess(b.processor.name,b.processor.data))},100)}});break;case"MOPIDY_GET_QUEUE":y(t,_,"tracklist.getTlTracks").then(function(e){_.dispatch({type:"QUEUE_LOADED",tracks:e})});break;case"MOPIDY_GET_QUEUE_HISTORY":y(t,_,"history.getHistory").then(function(e){_.dispatch({type:"MOPIDY_QUEUE_HISTORY",tracks:e})});break;case"MOPIDY_GET_CURRENT_TRACK":y(t,_,"playback.getCurrentTlTrack").then(function(e){e&&e.track&&_.dispatch(u.currentTrackLoaded(e))});break;case"MOPIDY_CURRENT_TRACK_LOADED":_.dispatch(p.setCurrentTrackTransition(!1));var $=o.formatTrack(b.tl_track);$.uri&&(_.dispatch({type:"CURRENT_TRACK_LOADED",track:$,uri:$.uri}),void 0!==_.getState().core.tracks[$.uri]&&void 0!==_.getState().core.tracks[$.uri].images||(_.getState().spotify.enabled&&"spotify"==o.uriSource($.uri)?_.dispatch(d.getTrack($.uri)):_.dispatch(u.getImages("tracks",[$.uri]))));break;case"MOPIDY_GET_NEXT_TRACK":y(t,_,"tracklist.getNextTlid").then(function(e){if(e&&e>=0){var t=o.applyFilter("tlid",e,_.getState().core.queue,!0);t&&t.uri&&(_.dispatch({type:"NEXT_TRACK_LOADED",uri:t.uri}),void 0!==_.getState().core.tracks[t.uri]&&void 0!==_.getState().core.tracks[t.uri].images||(_.getState().spotify.enabled&&"spotify"==o.uriSource(t.uri)?_.dispatch(d.getTrack(t.uri)):_.dispatch(u.getImages("tracks",[t.uri]))))}});break;case"MOPIDY_GET_TRACK":y(t,_,"library.lookup",b.data).then(function(e){if(e.length>0){var t=Object.assign({},e[0]);_.dispatch(c.trackLoaded(t))}},function(e){_.dispatch(c.handleException("Mopidy: "+(e.message?e.message:"Could not get track"),e))});break;case"MOPIDY_GET_IMAGES":b.uris&&y(t,_,"library.getImages",{uris:b.uris}).then(function(e){var t=[];for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];(r=o.digestMopidyImages(_.getState().mopidy,r))&&r.length>0?t.push({uri:n,images:r}):_.dispatch(m.getImages(b.context,n))}var a={type:(b.context+"_LOADED").toUpperCase()};a[b.context]=t,_.dispatch(a)}),v(b);break;case"MOPIDY_GET_DIRECTORY":_.dispatch({type:"MOPIDY_DIRECTORY_FLUSH"}),y(t,_,"library.browse",b.data).then(function(e){var n=[],r=[],a=!0,i=!1,s=void 0;try{for(var l,u=e[Symbol.iterator]();!(a=(l=u.next()).done);a=!0){var c=l.value;"track"===c.type?n.push(c.uri):r.push(c)}}catch(e){i=!0,s=e}finally{try{!a&&u.return&&u.return()}finally{if(i)throw s}}n.length>0?y(t,_,"library.lookup",{uris:n}).then(function(e){if(!(e.length<=0)){var t=[];for(var n in e)e.hasOwnProperty(n)&&e[n].length>0&&t.push(o.formatTrack(e[n][0]));_.dispatch({type:"MOPIDY_DIRECTORY_LOADED",directory:{tracks:t,subdirectories:r}})}}):_.dispatch({type:"MOPIDY_DIRECTORY_LOADED",directory:{tracks:W,subdirectories:r}})});break;case"MOPIDY_DIRECTORY":_.getState().ui.allow_reporting&&b.data&&r.default.event({category:"Directory",action:"Load",label:b.data.uri}),v(b);break;default:return v(b)}}}}}();t.default=y},function(e,t,n){var r,a=n(109),i=n(110),o=n(111);function s(e){if(!(this instanceof s))return new s(e);this._console=this._getConsole(e||{}),this._settings=this._configure(e||{}),this._backoffDelay=this._settings.backoffDelayMin,this._pendingRequests={},this._webSocket=null,a.createEventEmitter(this),this._delegateEvents(),this._settings.autoConnect&&this.connect()}s.ConnectionError=function(e){this.name="ConnectionError",this.message=e},s.ConnectionError.prototype=Object.create(Error.prototype),s.ConnectionError.prototype.constructor=s.ConnectionError,s.ServerError=function(e){this.name="ServerError",this.message=e},s.ServerError.prototype=Object.create(Error.prototype),s.ServerError.prototype.constructor=s.ServerError,s.WebSocket=i.Client,s.when=o,s.prototype._getConsole=function(e){if(void 0!==e.console)return e.console;var t="undefined"!=typeof console&&console||{};return t.log=t.log||function(){},t.warn=t.warn||function(){},t.error=t.error||function(){},t},s.prototype._configure=function(e){var t="undefined"!=typeof document&&"https:"===document.location.protocol?"wss://":"ws://",n="undefined"!=typeof document&&document.location.host||"localhost";return e.webSocketUrl=e.webSocketUrl||t+n+"/mopidy/ws",!1!==e.autoConnect&&(e.autoConnect=!0),e.backoffDelayMin=e.backoffDelayMin||1e3,e.backoffDelayMax=e.backoffDelayMax||64e3,void 0===e.callingConvention&&this._console.warn("Mopidy.js is using the default calling convention. The default will change in the future. You should explicitly specify which calling convention you use."),e.callingConvention=e.callingConvention||"by-position-only",e},s.prototype._delegateEvents=function(){this.off("websocket:close"),this.off("websocket:error"),this.off("websocket:incomingMessage"),this.off("websocket:open"),this.off("state:offline"),this.on("websocket:close",this._cleanup),this.on("websocket:error",this._handleWebSocketError),this.on("websocket:incomingMessage",this._handleMessage),this.on("websocket:open",this._resetBackoffDelay),this.on("websocket:open",this._getApiSpec),this.on("state:offline",this._reconnect)},s.prototype.connect=function(){if(this._webSocket){if(this._webSocket.readyState===s.WebSocket.OPEN)return;this._webSocket.close()}this._webSocket=this._settings.webSocket||new s.WebSocket(this._settings.webSocketUrl),this._webSocket.onclose=function(e){this.emit("websocket:close",e)}.bind(this),this._webSocket.onerror=function(e){this.emit("websocket:error",e)}.bind(this),this._webSocket.onopen=function(){this.emit("websocket:open")}.bind(this),this._webSocket.onmessage=function(e){this.emit("websocket:incomingMessage",e)}.bind(this)},s.prototype._cleanup=function(e){Object.keys(this._pendingRequests).forEach(function(t){var n=this._pendingRequests[t];delete this._pendingRequests[t];var r=new s.ConnectionError("WebSocket closed");r.closeEvent=e,n.reject(r)}.bind(this)),this.emit("state:offline")},s.prototype._reconnect=function(){this.emit("reconnectionPending",{timeToAttempt:this._backoffDelay}),setTimeout(function(){this.emit("reconnecting"),this.connect()}.bind(this),this._backoffDelay),this._backoffDelay=2*this._backoffDelay,this._backoffDelay>this._settings.backoffDelayMax&&(this._backoffDelay=this._settings.backoffDelayMax)},s.prototype._resetBackoffDelay=function(){this._backoffDelay=this._settings.backoffDelayMin},s.prototype.close=function(){this.off("state:offline",this._reconnect),this._webSocket.close()},s.prototype._handleWebSocketError=function(e){this._console.warn("WebSocket error:",e.stack||e)},s.prototype._send=function(e){switch(this._webSocket.readyState){case s.WebSocket.CONNECTING:return o.reject(new s.ConnectionError("WebSocket is still connecting"));case s.WebSocket.CLOSING:return o.reject(new s.ConnectionError("WebSocket is closing"));case s.WebSocket.CLOSED:return o.reject(new s.ConnectionError("WebSocket is closed"));default:var t=o.defer();return e.jsonrpc="2.0",e.id=this._nextRequestId(),this._pendingRequests[e.id]=t.resolver,this._webSocket.send(JSON.stringify(e)),this.emit("websocket:outgoingMessage",e),t.promise}},s.prototype._nextRequestId=(r=-1,function(){return r+=1}),s.prototype._handleMessage=function(e){try{var t=JSON.parse(e.data);t.hasOwnProperty("id")?this._handleResponse(t):t.hasOwnProperty("event")?this._handleEvent(t):this._console.warn("Unknown message type received. Message was: "+e.data)}catch(t){if(!(t instanceof SyntaxError))throw t;this._console.warn("WebSocket message parsing failed. Message was: "+e.data)}},s.prototype._handleResponse=function(e){if(this._pendingRequests.hasOwnProperty(e.id)){var t,n=this._pendingRequests[e.id];delete this._pendingRequests[e.id],e.hasOwnProperty("result")?n.resolve(e.result):e.hasOwnProperty("error")?((t=new s.ServerError(e.error.message)).code=e.error.code,t.data=e.error.data,n.reject(t),this._console.warn("Server returned error:",e.error)):((t=new Error("Response without 'result' or 'error' received")).data={response:e},n.reject(t),this._console.warn("Response without 'result' or 'error' received. Message was:",e))}else this._console.warn("Unexpected response received. Message was:",e)},s.prototype._handleEvent=function(e){var t=e.event,n=e;delete n.event,this.emit("event:"+this._snakeToCamel(t),n)},s.prototype._getApiSpec=function(){return this._send({method:"core.describe"}).then(this._createApi.bind(this)).catch(this._handleWebSocketError)},s.prototype._createApi=function(e){var t="by-position-or-by-name"===this._settings.callingConvention,n=function(e){return function(){var n={method:e};return 0===arguments.length?this._send(n):t?arguments.length>1?o.reject(new Error("Expected zero arguments, a single array, or a single object.")):Array.isArray(arguments[0])||arguments[0]===Object(arguments[0])?(n.params=arguments[0],this._send(n)):o.reject(new TypeError("Expected an array or an object.")):(n.params=Array.prototype.slice.call(arguments),this._send(n))}.bind(this)}.bind(this),r=function(e){var t=this;return e.forEach(function(e){e=this._snakeToCamel(e),t[e]=t[e]||{},t=t[e]}.bind(this)),t}.bind(this),a=function(t){var a,i=((a=t.split(".")).length>=1&&"core"===a[0]&&(a=a.slice(1)),a),o=this._snakeToCamel(i.slice(-1)[0]),s=r(i.slice(0,-1));s[o]=n(t),s[o].description=e[t].description,s[o].params=e[t].params}.bind(this);Object.keys(e).forEach(a),this.emit("state:online")},s.prototype._snakeToCamel=function(e){return e.replace(/(_[a-z])/g,function(e){return e.toUpperCase().replace("_","")})},e.exports=s},function(e,t,n){var r,a;(function(i){void 0===(a="function"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=a)}||function(t){e.exports=t()}||function(e){this.bane=e()})(function(){"use strict";var e=Array.prototype.slice;function t(e){if("function"!=typeof e)throw new TypeError("Listener is not function");return e}function n(e){return e.supervisors||(e.supervisors=[]),e.supervisors}function r(e,t){return e.listeners||(e.listeners={}),t&&!e.listeners[t]&&(e.listeners[t]=[]),t?e.listeners[t]:e.listeners}function a(e){return e.errbacks||(e.errbacks=[]),e.errbacks}function i(i){function o(e,t,n){try{t.listener.apply(t.thisp||i,n)}catch(t){!function(e,t,n){var r,a=n.length;if(a>0)for(r=0;r>>0,s=o,l=[],u=0;u0){i.become(n),e._visitRemaining(t,u,n);break}n.visit(i,c,p)}else--s;0===s&&i.reject(new RangeError("any(): array must not be empty"));return a;function c(e){l=null,this.resolve(e)}function p(e){this.resolved||(l.push(e),0==--s&&this.reject(l))}},e.some=function(t,n){var r,a,i,o=e._defer(),s=o._handler,l=[],u=[],c=t.length>>>0,p=0;for(i=0;ip?s.reject(new RangeError("some(): array must contain at least "+n+" item(s), but had "+p)):0===p&&s.resolve(l);for(i=0;i2?o.call(e,c(t),arguments[2]):o.call(e,c(t))},e.reduceRight=function(e,t){return arguments.length>2?s.call(e,c(t),arguments[2]):s.call(e,c(t))},e.prototype.spread=function(e){return this.then(i).then(function(t){return e.apply(this,t)})},e;function u(n){var r;return n instanceof e&&(r=n._handler.join()),r&&0===r.state()||!r?a(n).then(t.fulfilled,t.rejected):(r._unreport(),t.inspect(r))}function c(e){return function(t,r,a){return n(e,void 0,[t,r,a])}}}}.call(t,n,t,e))||(e.exports=r)}(n(16))},function(e,t,n){var r;/** @license MIT License (c) copyright 2010-2014 original author or authors */ /** @license MIT License (c) copyright 2010-2014 original author or authors */ @@ -109,7 +109,7 @@ Object.defineProperty(t,"__esModule",{value:!0});var n=null,r=!1,a=3,i=-1,o=-1,s !function(a){"use strict";void 0===(r=function(){return{formatError:function(t){var n="object"==typeof t&&null!==t&&(t.stack||t.message)?t.stack||t.message:e(t);return t instanceof Error?n:n+" (WARNING: non-Error used)"},formatObject:e,tryStringify:t};function e(e){var n=String(e);return"[object Object]"===n&&"undefined"!=typeof JSON&&(n=t(e,n)),n}function t(e,t){try{return JSON.stringify(e)}catch(e){return t}}}.call(t,n,t,e))||(e.exports=r)}(n(16))},function(e,t,n){var r;/** @license MIT License (c) copyright 2010-2014 original author or authors */ /** @license MIT License (c) copyright 2010-2014 original author or authors */ !function(a){"use strict";void 0===(r=function(e){return n(124)({scheduler:new(n(125))(n(55).asap)})}.call(t,n,t,e))||(e.exports=r)}(n(16))},function(e,t,n){(function(r){var a;/** @license MIT License (c) copyright 2010-2014 original author or authors */ /** @license MIT License (c) copyright 2010-2014 original author or authors */ !function(i){"use strict";void 0===(a=function(){return function(e){var t=e.scheduler,n=function(){if(null!=r&&"function"==typeof r.emit)return function(e,t){return"unhandledRejection"===e?r.emit(e,t.value,t):r.emit(e,t)};if("undefined"!=typeof self&&function(){if("function"==typeof CustomEvent)try{var e=new CustomEvent("unhandledRejection");return e instanceof CustomEvent}catch(e){}return!1}())return function(e,t){return function(n,r){var a=new t(n,{detail:{reason:r.value,key:r},bubbles:!1,cancelable:!0});return!e.dispatchEvent(a)}}(self,CustomEvent);if("undefined"!=typeof self&&function(){if("undefined"!=typeof document&&"function"==typeof document.createEvent)try{var e=document.createEvent("CustomEvent");return e.initCustomEvent("eventType",!1,!0,{}),!0}catch(e){}return!1}())return function(e,t){return function(n,r){var a=t.createEvent("CustomEvent");return a.initCustomEvent(n,!1,!0,{reason:r.value,key:r}),!e.dispatchEvent(a)}}(self,document);return Y}(),a=Object.create||function(e){function t(){}return t.prototype=e,new t};function i(e,t){this._handler=e===m?t:function(e){var t=new v;try{e(function(e){t.resolve(e)},n,function(e){t.notify(e)})}catch(e){n(e)}return t;function n(e){t.reject(e)}}(e)}function o(e){return N(e)?e:new i(m,new b(f(e)))}function s(e){return new i(m,new b(new O(e)))}function l(){return A}function u(e,t,n){for(var r,a="function"==typeof t?function(r,a,i){i.resolved||c(n,p,r,e(t,a,r),i)}:p,o=new v,s=n.length>>>0,l=new Array(s),u=0;u0?t(n,i.value,a):(a.become(i),p(e,n+1,i))}else t(n,r,a)}function p(e,t,n){for(var r=t;r0||"function"!=typeof t&&a<0)return new this.constructor(m,r);var i=this._beget(),o=i._handler;return r.chain(o,r.receiver,e,t,n),i},i.prototype.catch=function(e){return this.then(void 0,e)},i.prototype._beget=function(){return function(e,t){var n=new v(e.receiver,e.join().context);return new t(m,n)}(this._handler,this.constructor)},i.all=function(e){return u(U,null,e)},i.race=function(e){if("object"!=typeof e||null===e)return s(new TypeError("non-iterable passed to race()"));return 0===e.length?l():1===e.length?o(e[0]):function(e){var t,n,r,a=new v;for(t=0;t0&&(e.dispatch({type:"ARTISTS_LOADED",artists:n.artists}),n.artists_uris=s.arrayOf("uri",n.artists)),n.tracks.length>0&&(e.dispatch({type:"TRACKS_LOADED",tracks:n.tracks}),n.tracks_uris=s.arrayOf("uri",n.tracks)),t(n);break;case"SPOTIFY_LIBRARY_TRACKS_LOADED":case"SPOTIFY_LIBRARY_TRACKS_LOADED_MORE":n.data&&e.dispatch({type:"TRACKS_LOADED",tracks:n.data.items}),t(n);break;case"SPOTIFY_TRACK_LOADED":e.dispatch({type:"TRACKS_LOADED",tracks:[n.data]}),t(n);break;case"SEARCH_STARTED":e.dispatch({type:"SPOTIFY_CLEAR_SEARCH_RESULTS"}),t(n);break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_TRACKS":e.dispatch({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"tracks",results:s.formatTracks(n.data.tracks.items),more:n.data.tracks.next});break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ARTISTS":e.dispatch({type:"ARTISTS_LOADED",artists:n.data.artists.items}),e.dispatch({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"artists",results:s.arrayOf("uri",n.data.playlists.items),more:n.data.playlists.next});break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ALBUMS":e.dispatch({type:"ALBUMS_LOADED",albums:n.data.albums.items}),e.dispatch({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"playlists",results:s.arrayOf("uri",n.data.albums.items),more:n.data.albums.next});break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_PLAYLISTS":for(p=[],d=0;d2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;e.dispatch(l.request(t,n,r,a))},function(e){return function(t){return function(n){switch(e.getState().google,n.type){case"GOOGLE_GET_LIBRARY_ALBUMS":var r=e.getState().ui.processes.GOOGLE_LIBRARY_ALBUMS_PROCESSOR;r?"cancelled"==r.status?e.dispatch(u.resumeProcess("GOOGLE_LIBRARY_ALBUMS_PROCESSOR")):r.status:i(e,"library.browse",{uri:"gmusic:album"},function(t){if(!(t.length<=0)){var n=o.arrayOf("uri",t);e.dispatch({type:"GOOGLE_LIBRARY_ALBUMS_LOADED",uris:n}),e.dispatch(u.startProcess("GOOGLE_LIBRARY_ALBUMS_PROCESSOR","Loading "+n.length+" Google albums",{uris:n,total:n.length,remaining:n.length}))}});break;case"GOOGLE_LIBRARY_ALBUMS_PROCESSOR":if(void 0!==e.getState().ui.processes.GOOGLE_LIBRARY_ALBUMS_PROCESSOR&&"cancelling"==e.getState().ui.processes.GOOGLE_LIBRARY_ALBUMS_PROCESSOR.status)return e.dispatch(u.processCancelled("GOOGLE_LIBRARY_ALBUMS_PROCESSOR")),!1;var a=Object.assign([],n.data.uris),c=a.splice(0,50);c.length>0?(e.dispatch(u.updateProcess("GOOGLE_LIBRARY_ALBUMS_PROCESSOR","Loading "+a.length+" Google albums",{uris:a,remaining:a.length})),e.dispatch(l.getAlbums(c,{name:"GOOGLE_LIBRARY_ALBUMS_PROCESSOR",data:{uris:a}}))):e.dispatch(u.processFinishing("GOOGLE_LIBRARY_ALBUMS_PROCESSOR"));break;case"GOOGLE_GET_LIBRARY_ARTISTS":i(e,"library.browse",{uri:"gmusic:artist"},function(t){if(!(t.length<=0)){for(var n=[],r=0;r1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e.dispatch(u.request("snapcast",t,n,r))},function(e){return function(t){return function(n){var r=e.getState().snapcast;switch(n.type){case"SNAPCAST_GET_SERVER":o(e,{method:"Server.GetStatus"},function(t){e.dispatch(c.serverLoaded(t.server))},function(t){e.dispatch(l.handleException("Could not get server",t))});break;case"SNAPCAST_SERVER_LOADED":e.dispatch(c.groupsLoaded(n.server.groups,!0)),e.dispatch(c.streamsLoaded(n.server.streams,!0)),n.server=n.server.server,t(n);break;case"SNAPCAST_GROUPS_LOADED":var a=Object.assign({},r.groups),u=[],p=[],d=!0,f=!1,h=void 0;try{for(var m,y=n.groups[Symbol.iterator]();!(d=(m=y.next()).done);d=!0){var _=m.value;a[(P=s.formatGroup(_)).id]&&(P=Object.assign({},a[P.id],P)),_.clients&&(P.clients_ids=s.arrayOf("id",_.clients),p=[].concat(i(p),i(_.clients))),u.push(P)}}catch(e){f=!0,h=e}finally{try{!d&&y.return&&y.return()}finally{if(f)throw h}}n.groups=u,p.length>0&&e.dispatch(c.clientsLoaded(p,n.flush)),t(n);break;case"SNAPCAST_CLIENTS_LOADED":var v=Object.assign({},r.clients),b=(p=[],!0),g=!1,E=void 0;try{for(var k,O=n.clients[Symbol.iterator]();!(b=(k=O.next()).done);b=!0){var w=k.value;v[(S=s.formatClient(w)).id]&&(S=Object.assign({},v[S.id],S)),p.push(S)}}catch(e){g=!0,E=e}finally{try{!b&&O.return&&O.return()}finally{if(g)throw E}}n.clients=p,t(n);break;case"SNAPCAST_SET_CLIENT_NAME":var S=r.clients[n.id],T={method:"Client.SetName",params:{id:n.id,name:n.name}};o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,name:t.name}))});break;case"SNAPCAST_SET_CLIENT_MUTE":S=e.getState().snapcast.clients[n.id],T={method:"Client.SetVolume",params:{id:n.id,volume:{muted:n.mute,percent:S.volume}}},o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,volume:t.volume.percent,mute:t.volume.muted}))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_CLIENT_VOLUME":S=r.clients[n.id],T={method:"Client.SetVolume",params:{id:n.id,volume:{muted:S.mute,percent:n.volume}}},o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,volume:t.volume.percent}))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_CLIENT_LATENCY":S=e.getState().snapcast.clients[n.id],T={method:"Client.SetLatency",params:{id:n.id,latency:n.latency}},o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,latency:t.latency}))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_CLIENT_GROUP":var A=(P=r.groups[n.group_id]).clients_ids,C=A.indexOf(n.id);C<=-1?A.push(n.id):A.splice(C,1),T={method:"Group.SetClients",params:{id:n.group_id,clients:A}},o(e,T,function(t){e.dispatch(c.serverLoaded(t.server))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_DELETE_CLIENT":T={method:"Server.DeleteClient",params:{id:n.id}},o(e,T,function(t){e.dispatch({type:"SNAPCAST_CLIENT_REMOVED",key:n.data.params.id})},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_GROUP_STREAM":var P=e.getState().snapcast.groups[n.id];T={method:"Group.SetStream",params:{id:n.id,stream_id:n.stream_id}},o(e,T,function(t){e.dispatch(c.groupLoaded({id:n.id,stream_id:n.stream_id}))},function(t){e.dispatch(l.handleException("Could not change stream",t,t.message))});break;case"SNAPCAST_SET_GROUP_MUTE":P=e.getState().snapcast.groups[n.id],T={method:"Group.SetMute",params:{id:n.id,mute:n.mute}},o(e,T,function(t){e.dispatch(c.groupLoaded({id:n.id,muted:t.mute}))},function(t){e.dispatch(l.handleException("Could not toggle mute",t,t.message))});break;case"SNAPCAST_SET_GROUP_VOLUME":var x=[],R=(P=r.groups[n.id],n.percent-n.old_percent),N=!0,M=!1,L=void 0;try{for(var D,I=P.clients_ids[Symbol.iterator]();!(N=(D=I.next()).done);N=!0){var j=D.value,U=(S=r.clients[j]).volume,Y=U+R;(R>0&&U<100||R<0&&U>0)&&x.push({id:S.id,volume:Y})}}catch(e){M=!0,L=e}finally{try{!N&&I.return&&I.return()}finally{if(M)throw L}}var F=!0,H=!1,z=void 0;try{for(var B,q=x[Symbol.iterator]();!(F=(B=q.next()).done);F=!0){var G=B.value,W=G.volume+(P.clients_ids.length-x.length)*R;W<0?W=0:W>100&&(W=100),e.dispatch(c.setClientVolume(G.id,W))}}catch(e){H=!0,z=e}finally{try{!F&&q.return&&q.return()}finally{if(H)throw z}}break;case"SNAPCAST_EVENT_RECEIVED":switch(n.method=n.method.replace("snapcast_",""),n.method){case"Client.OnConnect":e.dispatch(c.clientLoaded({id:n.params.client.id,name:n.params.client.name,volume:n.params.client.volume.percent,mute:n.params.client.volume.muted,connected:n.params.client.connected}));break;case"Client.OnDisconnect":e.dispatch(c.clientLoaded({id:n.params.client.id,connected:n.params.client.connected}));break;case"Client.OnVolumeChanged":e.dispatch(c.clientLoaded({id:n.params.id,mute:n.params.volume.muted,volume:n.params.volume.percent}));break;case"Client.OnLatencyChanged":e.dispatch(c.clientLoaded({id:n.params.id,latency:n.params.latency}));break;case"Client.OnNameChanged":e.dispatch(c.clientLoaded({id:n.params.id,name:n.params.name}));break;case"Group.OnMute":e.dispatch(c.groupLoaded({id:n.params.id,mute:n.params.mute}));break;case"Server.OnUpdate":e.dispatch(c.serverLoaded(n.params))}break;default:return t(n)}}}});t.default=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),a=function(e){return function(t){return function(n){switch(t(n),window._store=e,e.getState().ui.log_actions&&(["START_LOADING","STOP_LOADING"].includes(n.type)||console.log(n)),n.type){case"PUSHER_CONNECTED":r.setStorage("pusher",{connection_id:n.connection_id});break;case"PUSHER_SET_PORT":r.setStorage("pusher",{port:n.port});break;case"PUSHER_SET_USERNAME":r.setStorage("pusher",{username:n.username});break;case"MOPIDY_URISCHEMES_FILTERED":r.setStorage("mopidy",{uri_schemes:n.data});break;case"SPOTIFY_AUTHORIZATION_GRANTED":if(void 0!==n.authorization)var a=n.authorization;else n.data&&(a=n.data);r.setStorage("spotify",{authorization:a,access_token:a.access_token,refresh_token:a.refresh_token,token_expiry:a.token_expiry});break;case"SPOTIFY_IMPORT_AUTHORIZATION":r.setStorage("spotify",{authorization:n.authorization,access_token:n.authorization.access_token,refresh_token:n.authorization.refresh_token,token_expiry:n.authorization.token_expiry,me:null});break;case"SPOTIFY_AUTHORIZATION_REVOKED":r.setStorage("spotify",{authorization:null,access_token:null,refresh_token:null,token_expiry:null,me:null});break;case"SPOTIFY_TOKEN_REFRESHED":r.setStorage("spotify",{access_token:n.data.access_token,token_expiry:n.data.token_expiry,provider:n.provider});break;case"SPOTIFY_ME_LOADED":r.setStorage("spotify",{me:n.me});break;case"LASTFM_ME_LOADED":r.setStorage("lastfm",{me:n.me});break;case"LASTFM_AUTHORIZATION_GRANTED":r.setStorage("lastfm",{authorization:n.data.session});break;case"LASTFM_AUTHORIZATION_REVOKED":r.setStorage("lastfm",{authorization:null,me:null});break;case"LASTFM_IMPORT_AUTHORIZATION":r.setStorage("lastfm",{authorization:n.authorization,me:null});break;case"GENIUS_ME_LOADED":r.setStorage("genius",{me:n.me});break;case"GENIUS_AUTHORIZATION_GRANTED":r.setStorage("genius",{authorization:n.data,authorization_code:n.data.authorization_code,access_token:n.data.access_token});break;case"GENIUS_AUTHORIZATION_REVOKED":r.setStorage("genius",{me:null,authorization:null,authorization_code:null,access_token:null});break;case"GENIUS_IMPORT_AUTHORIZATION":r.setStorage("genius",{authorization:n.authorization,authorization_code:n.authorization.authorization_code,access_token:n.authorization.access_token,me:null});break;case"CORE_SET":r.setStorage("core",n.data);break;case"UI_SET":r.setStorage("ui",n.data);break;case"MOPIDY_SET":r.setStorage("mopidy",n.data);break;case"SPOTIFY_SET":r.setStorage("spotify",n.data);break;case"SNAPCAST_COMMANDS_UPDATED":r.setStorage("snapcast",{commands:n.commands});break;case"SUPPRESS_BROADCAST":var i=r.getStorage("ui");if(void 0!==i.suppressed_broadcasts)var o=i.suppressed_broadcasts;else o=[];o.push(n.key),r.setStorage("ui",{suppressed_broadcasts:o})}}}};t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.App=void 0;var r=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["border","cssModule","className","fixedWidth","flip","inverse","name","pulse","rotate","size","spin","stack","tag","ariaLabel"]),g=[];return n?(g.push(n.fa),g.push(n["fa-"+c]),f&&g.push(n["fa-"+f]),h&&g.push(n["fa-spin"]),p&&g.push(n["fa-pulse"]),t&&g.push(n["fa-border"]),o&&g.push(n["fa-fw"]),u&&g.push(n["fa-inverse"]),l&&g.push(n["fa-flip-"+l]),d&&g.push(n["fa-rotate-"+d]),m&&g.push(n["fa-stack-"+m])):(g.push("fa"),g.push("fa-"+c),f&&g.push("fa-"+f),h&&g.push("fa-spin"),p&&g.push("fa-pulse"),t&&g.push("fa-border"),o&&g.push("fa-fw"),u&&g.push("fa-inverse"),l&&g.push("fa-flip-"+l),d&&g.push("fa-rotate-"+d),m&&g.push("fa-stack-"+m)),a&&g.push(a),i.default.createElement(_,r({},b,{"aria-hidden":!0,className:g.join(" ")}),v?i.default.createElement("span",{style:s.default},v):null)}}]),t}();u.propTypes={ariaLabel:o.default.string,border:o.default.bool,className:o.default.string,cssModule:o.default.object,fixedWidth:o.default.bool,flip:o.default.oneOf(["horizontal","vertical"]),inverse:o.default.bool,name:o.default.string.isRequired,pulse:o.default.bool,rotate:o.default.oneOf([90,180,270]),size:o.default.oneOf(["lg","2x","3x","4x","5x"]),spin:o.default.bool,stack:o.default.oneOf(["1x","2x"]),tag:o.default.string},t.default=u,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={position:"absolute",width:"1px",height:"1px",padding:"0px",margin:"-1px",overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",border:"0px"},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props;if(this.stream?this.stream.src=null:this.stream=new Audio,!e.http_streaming_enabled||!e.http_streaming_url)return!1;this.stream.src=e.http_streaming_url+"?cb="+e.http_streaming_cachebuster,this.stream.muted=e.http_streaming_mute,this.stream.volume=e.http_streaming_volume/100,this.stream.play()}},{key:"componentWillReceiveProps",value:function(e){this.props.http_streaming_cachebuster!==e.http_streaming_cachebuster&&this.playStream(e),!this.props.http_streaming_enabled&&e.http_streaming_enabled&&this.playStream(e),this.stream&&(this.props.http_streaming_mute!==e.http_streaming_mute&&(this.stream.muted=e.http_streaming_mute),this.props.http_streaming_volume!==e.http_streaming_volume&&(this.stream.volume=e.http_streaming_volume/100),e.http_streaming_enabled||(this.stream=null)),(!this.props.current_track&&e.current_track||this.props.current_track&&!e.current_track)&&this.setState({current_track:e.current_track}),this.props.current_track&&e.current_track&&this.props.current_track.uri!==e.current_track.uri&&this.setState({current_track:e.current_track}),this.props.current_track&&e.current_track&&(this.props.current_track.images&&!e.current_track.images||!this.props.current_track.images&&e.current_track.images)&&this.setState({current_track:e.current_track})}},{key:"handleTouchStart",value:function(t){e(t.target);var n=Math.floor(Date.now());return this.start_time=n,this.start_position={x:t.touches[0].clientX},!1}},{key:"handleTouchEnd",value:function(t){e(t.target);var n=Math.floor(Date.now()),r=t.changedTouches[0].clientX;if(this.start_time+200r&&this.start_position.x-10r&&(this.setTransition("next"),this.props.mopidyActions.next()),this.end_time=n}},{key:"setTransition",value:function(e){var t=this;this.setState({current_track:null,transition_track:this.state.current_track,transition_direction:e});setTimeout(function(){t.setState({transition_track:null,transition_direction:null})},250)}},{key:"renderPlayButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control play",onClick:function(){return e.props.mopidyActions.play()}},a.default.createElement(m.default,{name:"play_circle_filled",type:"material"}));return"playing"==this.props.play_state&&(t=a.default.createElement("button",{className:"control play",onClick:function(){return e.props.mopidyActions.pause()}},a.default.createElement(m.default,{name:"pause_circle_filled",type:"material"}))),t}},{key:"renderConsumeButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control tooltip",onClick:function(){return e.props.mopidyActions.setConsume(!0)}},a.default.createElement(m.default,{name:"restaurant",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Consume"));return this.props.consume&&(t=a.default.createElement("button",{className:"control control--active tooltip",onClick:function(){return e.props.mopidyActions.setConsume(!1)}},a.default.createElement(m.default,{name:"restaurant",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Consume"))),t}},{key:"renderRandomButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control tooltip",onClick:function(){return e.props.mopidyActions.setRandom(!0)}},a.default.createElement(m.default,{name:"shuffle",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Shuffle"));return this.props.random&&(t=a.default.createElement("button",{className:"control control--active tooltip",onClick:function(){return e.props.mopidyActions.setRandom(!1)}},a.default.createElement(m.default,{name:"shuffle",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Shuffle"))),t}},{key:"renderRepeatButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control tooltip",onClick:function(){return e.props.mopidyActions.setRepeat(!0)}},a.default.createElement(m.default,{name:"repeat"}),a.default.createElement("span",{className:"tooltip__content"},"Repeat"));return this.props.repeat&&(t=a.default.createElement("button",{className:"control control--active tooltip",onClick:function(){return e.props.mopidyActions.setRepeat(!1)}},a.default.createElement(m.default,{name:"repeat"}),a.default.createElement("span",{className:"tooltip__content"},"Repeat"))),t}},{key:"render",value:function(){var e=this,t=!1;return this.state.current_track&&this.state.current_track.images&&(t=this.state.current_track.images),a.default.createElement("div",{className:this.state.expanded?"playback-controls--expanded playback-controls":"playback-controls"},this.props.next_track&&this.props.next_track.images?a.default.createElement(h.default,{className:"hide",size:"large",images:this.props.next_track.images}):null,this.state.transition_track&&this.state.transition_direction?a.default.createElement("div",{className:"current-track current-track__transition current-track__transition--"+this.state.transition_direction},a.default.createElement("div",{className:"text"},a.default.createElement("div",{className:"title"},this.state.transition_track.name),a.default.createElement("div",{className:"artist"},a.default.createElement(f.default,{artists:this.state.transition_track.artists,nolinks:!0})))):null,a.default.createElement("div",{className:this.state.transition_track&&this.state.transition_direction?"current-track current-track--transitioning":"current-track",onTouchStart:function(t){return e.handleTouchStart(t)},onTouchEnd:function(t){return e.handleTouchEnd(t)}},a.default.createElement(s.default,{className:"thumbnail-wrapper",to:"/kiosk-mode"},a.default.createElement(h.default,{size:"small",images:t})),a.default.createElement("div",{className:"text"},a.default.createElement("div",{className:"title"},this.state.current_track?this.state.current_track.name:a.default.createElement("span",null,"-")),a.default.createElement("div",{className:"artist"},this.state.current_track?a.default.createElement(f.default,{artists:this.state.current_track.artists,nolinks:this.props.slim_mode}):a.default.createElement(f.default,null)))),a.default.createElement("section",{className:"playback"},a.default.createElement("button",{className:"control previous",onClick:function(){return e.props.mopidyActions.previous()}},a.default.createElement(m.default,{name:"skip_previous",type:"material"})),this.renderPlayButton(),a.default.createElement("button",{className:"control stop",onClick:function(){return e.props.mopidyActions.stop()}},a.default.createElement(m.default,{name:"stop",type:"material"})),a.default.createElement("button",{className:"control next",onClick:function(){return e.props.mopidyActions.next()}},a.default.createElement(m.default,{name:"skip_next",type:"material"}))),a.default.createElement("section",{className:"progress"},a.default.createElement(l.default,null),a.default.createElement("span",{className:"current"},this.props.time_position?a.default.createElement(d.default,{type:"length",data:this.props.time_position}):"-"),a.default.createElement("span",{className:"total"},this.state.current_track?a.default.createElement(d.default,{type:"length",data:this.state.current_track.duration}):"-")),a.default.createElement("section",{className:"settings"},this.renderConsumeButton(),this.renderRandomButton(),this.renderRepeatButton(),a.default.createElement(p.default,{force_expanded:this.state.expanded})),a.default.createElement("section",{className:"volume"},a.default.createElement(c.default,{mute:this.props.mute,onMuteChange:function(t){return e.props.mopidyActions.setMute(t)}}),a.default.createElement(u.default,{scrollWheel:!0,volume:this.props.volume,mute:this.props.mute,onVolumeChange:function(t){return e.props.mopidyActions.setVolume(t)}})),a.default.createElement("section",{className:"triggers"},a.default.createElement("button",{className:"control expanded-controls",onClick:function(t){return e.setState({expanded:!e.state.expanded})}},this.state.expanded?a.default.createElement(m.default,{name:"expand_more",type:"material"}):a.default.createElement(m.default,{name:"expand_less",type:"material"})),a.default.createElement("button",{className:"control sidebar-toggle"+(this.props.sidebar_open?" open":""),onClick:function(t){return e.props.uiActions.toggleSidebar()}},a.default.createElement(m.default,{className:"open",name:"menu",type:"material"}))))}}]),n}();t.default=(0,i.connect)(function(e,t){return{snapcast_enabled:e.pusher.config.snapcast_enabled,http_streaming_enabled:e.core.http_streaming_enabled,http_streaming_volume:e.core.http_streaming_volume?e.core.http_streaming_volume:50,http_streaming_mute:!!e.core.http_streaming_mute&&e.core.http_streaming_mute,http_streaming_url:e.core.http_streaming_url?e.core.http_streaming_url:null,http_streaming_cachebuster:e.core.http_streaming_cachebuster,current_track:e.core.current_track&&void 0!==e.core.tracks[e.core.current_track.uri]?e.core.tracks[e.core.current_track.uri]:null,next_track:e.core.next_track_uri&&void 0!==e.core.tracks[e.core.next_track_uri]?e.core.tracks[e.core.next_track_uri]:null,radio_enabled:!(!e.ui.radio||!e.ui.radio.enabled),play_state:e.mopidy.play_state,time_position:e.mopidy.time_position,consume:e.mopidy.consume,repeat:e.mopidy.repeat,random:e.mopidy.random,volume:e.mopidy.volume,mute:e.mopidy.mute,sidebar_open:e.ui.sidebar_open,slim_mode:e.ui.slim_mode}},function(e){return{coreActions:(0,o.bindActionCreators)(v,e),uiActions:(0,o.bindActionCreators)(_,e),mopidyActions:(0,o.bindActionCreators)(b,e)}})(k)}).call(this,n(19))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:!this.state.expanded,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.props;e?(this.setState({expanded:e}),window.addEventListener("click",this.handleClick,!1),t.pusher_connected&&t.snapcast_enabled&&this.props.snapcastActions.getServer()):(this.setState({expanded:e}),window.removeEventListener("click",this.handleClick,!1))}},{key:"renderOutputs",value:function(){var e=this,t=!1,n=[];for(var r in this.props.snapcast_clients)if(this.props.snapcast_clients.hasOwnProperty(r)){var i=this.props.snapcast_clients[r];(i.connected||this.props.show_disconnected_clients)&&n.push(i)}var o=null;n.length>0&&(t=!0,o=a.default.createElement("div",null,n.map(function(t){return a.default.createElement("div",{className:"output-control__item outputs__item--snapcast",key:t.id},a.default.createElement("div",{className:"output-control__item__name"},t.name),a.default.createElement("div",{className:"output-control__item__controls"},a.default.createElement(l.default,{className:"output-control__item__mute",noTooltip:!0,mute:t.mute,onMuteChange:function(n){return e.props.snapcastActions.setClientMute(t.id,n)}}),a.default.createElement(s.default,{className:"output-control__item__volume",volume:t.volume,mute:t.mute,onVolumeChange:function(n){return e.props.snapcastActions.setClientVolume(t.id,n)}})))})));var p=null;this.props.http_streaming_enabled&&(t=!0,p=a.default.createElement("div",{className:"output-control__item outputs__item--icecast"},a.default.createElement("div",{className:"output-control__item__actions"},a.default.createElement("span",{className:"output-control__item__action",onClick:function(t){return e.props.coreActions.cachebustHttpStream()}},a.default.createElement(u.default,{name:"refresh"}))),a.default.createElement("div",{className:"output-control__item__name"},"Local browser"),a.default.createElement("div",{className:"output-control__item__details"},a.default.createElement(s.default,{className:"output-control__item__volume",volume:this.props.http_streaming_volume,mute:this.props.http_streaming_mute,onVolumeChange:function(t){return e.props.coreActions.set({http_streaming_volume:t})},onMuteChange:function(t){return e.props.coreActions.set({http_streaming_mute:t})}}))));var d=null;if(this.props.pusher_commands){var f=[];for(var r in this.props.pusher_commands)this.props.pusher_commands.hasOwnProperty(r)&&f.push(this.props.pusher_commands[r]);(f=c.sortItems(f,"sort_order")).length>0&&(t=!0,d=a.default.createElement("div",{className:"output-control__item output-control__item--commands commands"},f.map(function(t){return a.default.createElement("div",{key:t.id,className:"commands__item commands__item--interactive",onClick:function(n){return e.props.pusherActions.runCommand(t.id)}},a.default.createElement(u.default,{className:"commands__item__icon",name:t.icon}),a.default.createElement("span",{className:t.colour+"-background commands__item__background"}))})))}return t?a.default.createElement("div",{className:"output-control__items"},d,p,o):a.default.createElement("div",{className:"output-control__items output-control__items--no-results"},a.default.createElement("p",{className:"no-results"},"No outputs"))}},{key:"render",value:function(){var e=this;return this.state.expanded?a.default.createElement("span",{className:"output-control"},a.default.createElement("button",{className:"control speakers active",onClick:function(t){return e.setExpanded()}},a.default.createElement(u.default,{name:"speaker"})),this.renderOutputs()):this.props.http_streaming_enabled||this.props.snapcast_enabled||this.props.pusher_commands?a.default.createElement("span",{className:"output-control"},a.default.createElement("button",{className:"control speakers",onClick:function(t){return e.setExpanded()}},a.default.createElement(u.default,{name:"speaker"}))):a.default.createElement("span",{className:"output-control disabled"},a.default.createElement("button",{className:"control speakers"},a.default.createElement(u.default,{name:"speaker"})))}}]),n}();t.default=(0,i.connect)(function(e,t){return{http_streaming_enabled:e.core.http_streaming_enabled,http_streaming_volume:e.core.http_streaming_volume,http_streaming_mute:e.core.http_streaming_mute,pusher_connected:e.pusher.connected,snapcast_enabled:e.pusher.config?e.pusher.config.snapcast_enabled:null,show_disconnected_clients:void 0!==e.ui.snapcast_show_disconnected_clients&&e.ui.snapcast_show_disconnected_clients,snapcast_clients:e.snapcast.clients,pusher_commands:e.pusher.commands?e.pusher.commands:{}}},function(e){return{coreActions:(0,o.bindActionCreators)(p,e),snapcastActions:(0,o.bindActionCreators)(f,e),pusherActions:(0,o.bindActionCreators)(d,e)}})(y)}).call(this,n(19))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props,t={name:null,nice_name:"Unknown",is_track:!1};if(e.menu&&e.menu.context){switch(t.name=e.menu.context,t.nice_name=e.menu.context,e.menu.context){case"playlist":case"editable-playlist":t.nice_name="playlist";break;case"track":case"queue-track":case"playlist-track":case"editable-playlist-track":t.nice_name="track",t.is_track=!0}if(e.menu.items&&e.menu.items.length>0){var n=e.menu.items[0];t.item=n,t.items_count=e.menu.items.length,t.source=p.uriSource(n.uri),t.type=p.uriType(n.uri),t.in_library=this.inLibrary(n),t.is_loved=this.isLoved(n)}}return t}},{key:"inLibrary",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return!1;switch(p.uriType(e.uri)){case"artist":return this.props.spotify_library_artists&&this.props.spotify_library_artists.indexOf(e.uri)>-1;case"album":return this.props.spotify_library_albums&&this.props.spotify_library_albums.indexOf(e.uri)>-1;case"playlist":return this.props.spotify_library_playlists&&this.props.spotify_library_playlists.indexOf(e.uri)>-1;case"track":return this.props.spotify_library_tracks&&this.props.spotify_library_tracks.indexOf(e.uri)>-1}return!1}},{key:"isLoved",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return!1;if(void 0===this.props.tracks[e.uri])return!1;var t=this.props.tracks[e.uri];return void 0!==t.userloved&&"1"==t.userloved}},{key:"canBeInLibrary",value:function(){return!!this.props.spotify_authorized&&"spotify"==p.uriSource(this.props.menu.items[0].uri)}},{key:"toggleInLibrary",value:function(e,t){this.props.uiActions.hideContextMenu(),t?this.props.spotifyActions.following(this.props.menu.items[0].uri,"DELETE"):this.props.spotifyActions.following(this.props.menu.items[0].uri,"PUT")}},{key:"playQueueItem",value:function(e){this.props.uiActions.hideContextMenu();var t=this.props.menu.items;this.props.mopidyActions.changeTrack(t[0].tlid)}},{key:"removeFromQueue",value:function(e){this.props.uiActions.hideContextMenu();for(var t=this.props.menu.items,n=[],r=0;r1&&void 0!==arguments[1]&&arguments[1];this.props.uiActions.hideContextMenu(),this.props.mopidyActions.enqueuePlaylist(this.props.menu.uris[0],t)}},{key:"shufflePlayPlaylist",value:function(e){this.props.uiActions.hideContextMenu(),this.props.mopidyActions.playPlaylist(this.props.menu.uris[0],!0)}},{key:"playArtistTopTracks",value:function(e){this.props.uiActions.hideContextMenu(),this.props.spotifyActions.playArtistTopTracks(this.props.menu.uris[0])}},{key:"addToQueue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.props.uiActions.hideContextMenu(),this.props.mopidyActions.enqueueURIs(this.props.menu.uris,this.props.menu.tracklist_uri,t)}},{key:"addTracksToPlaylist",value:function(e,t){this.props.uiActions.hideContextMenu(),this.props.coreActions.addTracksToPlaylist(t,this.props.menu.uris)}},{key:"toggleLoved",value:function(e,t){this.props.uiActions.hideContextMenu(),t?this.props.lastfmActions.unloveTrack(this.props.menu.items[0].uri):this.props.lastfmActions.loveTrack(this.props.menu.items[0].uri)}},{key:"unloveTrack",value:function(e){this.props.uiActions.hideContextMenu(),this.props.lastfmActions.unloveTrack(this.props.menu.items[0])}},{key:"removeFromPlaylist",value:function(e){this.props.uiActions.hideContextMenu(),this.props.coreActions.removeTracksFromPlaylist(this.props.menu.tracklist_uri,this.props.menu.indexes)}},{key:"deletePlaylist",value:function(e){this.props.uiActions.hideContextMenu(),this.props.coreActions.deletePlaylist(this.props.menu.uris[0])}},{key:"startRadio",value:function(e){this.props.uiActions.hideContextMenu(),this.props.pusherActions.startRadio(this.props.menu.uris)}},{key:"goToRecommendations",value:function(e){this.props.uiActions.hideContextMenu();var t=p.arrayOf("uri",this.props.menu.items).join(",");this.props.history.push("/discover/recommendations/"+t)}},{key:"goToArtist",value:function(e){if(!this.props.menu.items||this.props.menu.items.length<=0||!this.props.menu.items[0].artists_uris||this.props.menu.items[0].artists_uris.length<=0)return null;this.props.uiActions.hideContextMenu(),this.props.history.push(p.buildLink(this.props.menu.items[0].artists_uris[0]))}},{key:"goToUser",value:function(e){if(!this.props.menu.items||this.props.menu.items.length<=0||!this.props.menu.items[0].user_uri)return null;this.props.uiActions.hideContextMenu(),this.props.history.push(p.buildLink(this.props.menu.items[0].user_uri))}},{key:"goToTrack",value:function(e){if(!this.props.menu.items||this.props.menu.items.length<=0)return null;this.props.uiActions.hideContextMenu(),this.props.history.push(p.buildLink(this.props.menu.items[0].uri))}},{key:"copyURIs",value:function(t){var n=e("");e("body").append(n),n.val(this.props.menu.uris.join(",")).select(),document.execCommand("copy"),n.remove(),this.props.uiActions.createNotification({content:"Copied "+this.props.menu.uris.length+" URIs"}),this.props.uiActions.hideContextMenu()}},{key:"renderTitle",value:function(){var e=this,t=this.getContext();if(t.items_count>1)return a.default.createElement("div",{className:"context-menu__title"},a.default.createElement("div",{className:"context-menu__title__text"},t.items_count," ",t.nice_name,t.items_count>1?"s":null," selected ",a.default.createElement("span",{className:"context-menu__title__deselect",onClick:function(t){e.props.uiActions.setSelectedTracks([]),e.props.uiActions.hideContextMenu()}},a.default.createElement(u.default,{name:"close"}))));if(1==t.items_count&&"queue-track"==t.name&&void 0!==t.item&&void 0!==this.props.queue_metadata["tlid_"+t.item.tlid]){var n=this.props.queue_metadata["tlid_"+t.item.tlid];if(n.added_from&&n.added_by){var r=n.added_from?p.uriType(n.added_from):null;switch(r){case"discover":var i=a.default.createElement(c.default,{type:"recommendations",uri:p.getFromUri("seeds",n.added_from)},"discover");break;case"browse":i=a.default.createElement(c.default,{type:"browse",uri:n.added_from.replace("iris:browse:","")},"browse");break;case"search":i=a.default.createElement(c.default,{type:"search",uri:n.added_from.replace("iris:","")},"search");break;default:i=a.default.createElement(c.default,{type:r,uri:n.added_from},r)}return a.default.createElement("div",{className:"context-menu__title"},a.default.createElement("div",{className:"context-menu__title__text"},n.added_by," added from ",i))}}return"custom"==t.name?this.props.menu.title?a.default.createElement("div",{className:"context-menu__title"},a.default.createElement("div",{className:"context-menu__title__text"},this.props.menu.title)):null:void 0}},{key:"setSubmenu",value:function(e){this.state.submenu!==e&&"add-to-playlist"==e&&(this.props.spotify_library_playlists_loaded_all||this.props.spotifyActions.getLibraryPlaylists(),this.props.mopidy_library_playlists_loaded_all||this.props.mopidyActions.getLibraryPlaylists()),this.setState({submenu:e})}},{key:"renderSubmenu",value:function(){var e=this,t=null,n=null;switch(this.state.submenu){case"add-to-playlist":var r=[];for(var i in this.props.playlists)this.props.playlists[i].can_edit&&r.push(this.props.playlists[i]);r=p.sortItems(r,"name"),this.props.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR&&"running"==this.props.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR.status&&(n=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("div",{className:"context-menu__item mini-loader loading"},a.default.createElement("div",{className:"loader"})))),t=a.default.createElement("span",{className:"context-menu__item"},a.default.createElement("span",{className:"context-menu__item mid_grey-text"},"No writable playlists")),r.length>0&&(t=r.map(function(t){return a.default.createElement("span",{className:"context-menu__item",key:t.uri},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.addTracksToPlaylist(n,t.uri)}},a.default.createElement("span",{className:"context-menu__item__label"},t.name)))}))}return a.default.createElement("div",{className:"context-menu__section context-menu__section--submenu"},a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link context-menu__item__link--close-submenu",onClick:function(t){return e.setState({submenu:null})}},a.default.createElement("span",{className:"context-menu__item__label"},a.default.createElement(u.default,{name:"arrow_back"})," Back"))),t,n)}},{key:"renderItems",value:function(){var e=this,t=this.getContext(),n=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playURIs(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play"))),r=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playPlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play"))),i=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.shufflePlayPlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Shuffle play"))),o=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playQueueItem(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play"))),s=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.addToQueue(t,!0)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play next"))),c=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playArtistTopTracks(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play top tracks"))),d=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.addToQueue(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Add to queue"))),f=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.enqueuePlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Add to queue"))),h=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.enqueuePlaylist(t,!0)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play next"))),m=a.default.createElement("div",{className:"context-menu__item context-menu__item--has-submenu"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.setSubmenu("add-to-playlist")}},a.default.createElement("span",{className:"context-menu__item__label"},"Add to playlist"),a.default.createElement(u.default,{className:"submenu-icon",name:"arrow_forward"}))),y=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.toggleInLibrary(n,t.in_library)}},a.default.createElement("span",{className:"context-menu__item__label"},t.in_library?"Remove from library":"Add to library")));if(this.props.spotify_authorized)if(p.isLoading(this.props.load_queue,["spotify_me/tracks/contains","spotify_me/playlists/contains","spotify_me/albums/contains","spotify_me/artists/contains"]))y=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link"},a.default.createElement("span",{className:"context-menu__item__label mid_grey-text"},"Add to library")));else y=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.toggleInLibrary(n,t.in_library)}},a.default.createElement("span",{className:"context-menu__item__label"},t.in_library?"Remove from library":"Add to library")));else var y=null;if(this.props.lastfm_authorized)if(p.isLoading(this.props.load_queue,["lastfm_track.getInfo"]))_=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link"},a.default.createElement("span",{className:"context-menu__item__label mid_grey-text"},"Love track")));else _=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.toggleLoved(n,t.is_loved)}},a.default.createElement("span",{className:"context-menu__item__label"},t.is_loved?"Unlove":"Love"," track")));else var _=null;var v=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToArtist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Go to artist"))),b=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToUser(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Go to user"))),g=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToTrack(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Track info"))),E=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToRecommendations(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Discover similar"))),k=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.startRadio(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Start radio"))),O=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.removeFromQueue(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Remove"))),w=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.removeFromPlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Remove"))),S=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement(l.default,{className:"context-menu__item__link",to:"/playlist/"+t.item.uri+"/edit"},a.default.createElement("span",{className:"context-menu__item__label"},"Edit"))),T=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.deletePlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Delete"))),A=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.copyURIs(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Copy URI",t.items_count>1?"s":"")));switch(t.name){case"album":return a.default.createElement("div",null,n,s,d,this.canBeInLibrary()?a.default.createElement("div",{className:"context-menu__divider"}):null,this.canBeInLibrary()?y:null,a.default.createElement("div",{className:"context-menu__divider"}),v,A);case"artist":return a.default.createElement("div",null,"spotify"==t.source?c:null,"spotify"==t.source?k:null,this.canBeInLibrary()?a.default.createElement("div",{className:"context-menu__divider"}):null,this.canBeInLibrary()?y:null,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source?E:null,A);case"playlist":return a.default.createElement("div",null,r,h,i,f,this.canBeInLibrary()?a.default.createElement("div",{className:"context-menu__divider"}):null,this.canBeInLibrary()?y:null,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source?b:null,A,1==t.items_count&&t.item.can_edit?a.default.createElement("div",null,a.default.createElement("div",{className:"context-menu__divider"}),S,T):null);case"queue-track":return a.default.createElement("div",null,1==t.items_count?o:null,a.default.createElement("div",{className:"context-menu__divider"}),m,this.canBeInLibrary()?y:null,_,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source&&t.items_count<=5?E:null,1==t.items_count?g:null,A,a.default.createElement("div",{className:"context-menu__divider"}),O);case"editable-playlist-track":return a.default.createElement("div",null,n,s,d,"spotify"==t.source&&1==t.items_count?k:null,a.default.createElement("div",{className:"context-menu__divider"}),m,this.canBeInLibrary()?y:null,_,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source&&t.items_count<=5?E:null,1==t.items_count?g:null,A,a.default.createElement("div",{className:"context-menu__divider"}),w);default:return a.default.createElement("div",null,n,s,d,"spotify"==t.source&&1==t.items_count?k:null,a.default.createElement("div",{className:"context-menu__divider"}),m,this.canBeInLibrary()?y:null,_,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source&&t.items_count<=5?E:null,1==t.items_count?g:null,a.default.createElement("div",{className:"context-menu__divider"}),A)}}},{key:"render",value:function(){var e=this;if(!this.props.menu)return null;var t={left:this.props.menu.position_x,top:this.props.menu.position_y},n="context-menu "+this.props.menu.context;return this.state.submenu&&(n+=" context-menu--submenu-expanded"),this.props.menu.closing&&(n+=" context-menu--closing"),this.props.menu.position_x>window.innerWidth-174&&(t.left="auto",t.right=10),this.props.menu.position_y>window.innerHeight-200&&(t.top="auto",t.bottom=10),a.default.createElement("div",{id:"context-menu",className:n,style:t},a.default.createElement("div",{className:"context-menu__section context-menu__section--items"},this.renderTitle(),"custom"==this.props.menu.context?this.props.menu.options:this.renderItems()),this.renderSubmenu(),a.default.createElement("div",{className:"context-menu__background",onClick:function(t){return e.props.uiActions.hideContextMenu()}}))}}]),n}();t.default=(0,i.connect)(function(e,t){return{menu:e.ui.context_menu,load_queue:e.ui.load_queue,processes:e.ui.processes,current_track:e.core.current_track,current_tracklist:e.core.current_tracklist,queue_metadata:e.core.queue_metadata,spotify_library_playlists:e.spotify.library_playlists,spotify_library_playlists_loaded_all:e.spotify.library_playlists_loaded_all,mopidy_library_playlists:e.mopidy.library_playlists,mopidy_library_playlists_loaded_all:e.mopidy.library_playlists_loaded_all,spotify_library_artists:e.spotify.library_artists,mopidy_library_artists:e.mopidy.library_artists,spotify_library_albums:e.spotify.library_albums,mopidy_library_albums:e.mopidy.library_albums,spotify_library_tracks:e.spotify.library_tracks,playlists:e.core.playlists,tracks:e.core.tracks,spotify_authorized:e.spotify.authorization,lastfm_authorized:e.lastfm.authorization}},function(e){return{coreActions:(0,o.bindActionCreators)(d,e),uiActions:(0,o.bindActionCreators)(f,e),pusherActions:(0,o.bindActionCreators)(h,e),spotifyActions:(0,o.bindActionCreators)(_,e),lastfmActions:(0,o.bindActionCreators)(y,e),mopidyActions:(0,o.bindActionCreators)(m,e)}})((0,s.withRouter)(g))}).call(this,n(19))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;nn+5||t.pageXr+5||t.pageYa&&this.start_position.x-10i&&this.start_position.y-100&&r-this.end_time<=300)return this.props.handleDoubleTap(t),t.preventDefault(),!1;this.props.handleTap(t)}this.end_time=r}},{key:"render",value:function(){var e=this;if(!this.props.track)return null;var t=this.props.track,n="list__item list__item--track mouse-draggable mouse-selectable mouse-contextable",r=[];if(t.artists&&r.push(a.default.createElement("li",{className:"details__item details__item--artists",key:"artists"},t.artists?a.default.createElement(o.default,{artists:t.artists}):"-")),t.album){if(t.album.uri)var d=a.default.createElement(l.default,{type:"album",uri:t.album.uri},t.album.name);else d=a.default.createElement("span",null,t.album.name);r.push(a.default.createElement("li",{className:"details__item details__item--album",key:"album"},d))}if("history"==this.props.track_context)var f=a.default.createElement("div",{className:"list__item__column__item list__item__column__item--played_at"},t.played_at?a.default.createElement("span",null,a.default.createElement(s.default,{type:"ago",data:t.played_at})," ago"):"-");else if("queue"==this.props.track_context)if(t.added_from&&t.added_by){var h=t.added_from?p.uriType(t.added_from):null;switch(h){case"discover":var m=a.default.createElement(l.default,{type:"recommendations",uri:p.getFromUri("seeds",t.added_from)},"discover");break;case"browse":m=a.default.createElement(l.default,{type:"browse",uri:t.added_from.replace("iris:browse:","")},"browse");break;case"search":m=a.default.createElement(l.default,{type:"search",uri:t.added_from.replace("iris:","")},"search");break;default:m=a.default.createElement(l.default,{type:h,uri:t.added_from},h)}f=a.default.createElement("div",{className:"list__item__column__item list__item__column__item--added"},a.default.createElement("span",{className:"by"},t.added_by," "),a.default.createElement("span",{className:"from"},"from ",m))}else if(t.added_by)f=a.default.createElement("div",{className:"list__item__column__item list__item__column__item--added"},a.default.createElement("span",{className:"by"},t.added_by));var y=null;return p.isTouchDevice()&&this.props.can_sort&&(n+=" list__item--has-drag-zone",y=a.default.createElement("span",{className:"list__item__column__item list__item__column__item--drag-zone drag-zone touch-draggable mouse-draggable",key:"drag-zone"},a.default.createElement(i.default,{name:"drag_indicator"}))),this.props.selected&&(n+=" list__item--selected"),this.props.can_sort&&(n+=" list__item--can-sort"),void 0!==t.type&&(n+=" list__item--"+t.type),t.playing&&(n+=" list__item--playing"),this.state.hover&&(n+=" list__item--hover"),f&&(n+=" list__item--has-middle-column"),r.length>0&&(n+=" list__item--has-details"),a.default.createElement(c.default,null,a.default.createElement("div",{className:n,onMouseEnter:function(t){return e.handleMouseEnter(t)},onMouseLeave:function(t){return e.handleMouseLeave(t)},onMouseDown:function(t){return e.handleMouseDown(t)},onMouseUp:function(t){return e.handleMouseUp(t)},onMouseMove:function(t){return e.handleMouseMove(t)},onDoubleClick:function(t){return e.handleDoubleClick(t)},onContextMenu:function(t){return e.props.handleContextMenu(t)},onTouchStart:function(t){return e.handleTouchStart(t)},onTouchEnd:function(t){return e.handleTouchEnd(t)}},a.default.createElement("div",{className:"list__item__column list__item__column--right"},y,a.default.createElement("span",{className:"list__item__column__item list__item__column__item--duration"},t.duration?a.default.createElement(s.default,{type:"length",data:t.duration}):"-"),this.props.show_source_icon?a.default.createElement("span",{className:"list__item__column__item list__item__column__item--source"},a.default.createElement(i.default,{type:"fontawesome",name:p.sourceIcon(t.uri),fixedWidth:!0})):null,a.default.createElement(u.default,{className:"list__item__column__item--context-menu-trigger subtle",onTrigger:function(t){return e.props.handleContextMenu(t)}})),a.default.createElement("div",{className:"list__item__column list__item__column--name"},a.default.createElement("div",{className:"list__item__column__item--name"},t.name?t.name:a.default.createElement("span",{className:"mid_grey-text"},t.uri),t.explicit?a.default.createElement("span",{className:"flag dark"},"EXPLICIT"):null,t.playing?a.default.createElement(i.default,{className:"js--"+this.props.play_state,name:"playing",type:"css"}):null),r?a.default.createElement("ul",{className:"list__item__column__item--details"},r):null),f?a.default.createElement("div",{className:"list__item__column list__item__column--middle"},f):null))}}]),n}();t.default=f}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;nthis.props.dragger.start_x+10||e.clientXthis.props.dragger.start_y+10||e.clientY0){var r="loading ";return r+=t>20?"high":t>5?"medium":"low",a.default.createElement("div",{className:r})}return null}},{key:"render",value:function(){return a.default.createElement("div",{className:"notifications"},this.renderLoader(),this.renderNotifications(),this.renderProcesses())}}]),t}();t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){window.addEventListener("resize",t,!1);var t=function(t){Math.max(document.documentElement.clientWidth,window.innerWidth||0)<=800?e.slim_mode||e.uiActions.setSlimMode(!0):e.slim_mode&&e.uiActions.setSlimMode(!1)};return null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;n-1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)){var t=!1;switch(e.key.toLowerCase()){case" ":"playing"==this.props.play_state?(this.props.mopidyActions.pause(),this.props.uiActions.createNotification({content:"pause",type:"shortcut"})):(this.props.mopidyActions.play(),this.props.uiActions.createNotification({content:"play_arrow",type:"shortcut"})),t=!0;break;case"escape":this.props.dragging?(this.props.uiActions.dragEnd(),t=!0):this.props.modal&&(window.history.back(),t=!0);break;case"s":this.props.history.push("/search"),t=!0;break;case"q":this.props.history.push("/queue"),t=!0;break;case"k":this.props.history.push("/kiosk-mode"),t=!0;break;case",":window.history.back(),t=!0;break;case".":window.history.forward(),t=!0;break;case"=":"false"!==(n=this.props.volume)&&((n+=5)>100&&(n=100),this.props.mopidyActions.setVolume(n),this.props.mute&&this.props.mopidyActions.setMute(!1),this.props.uiActions.createNotification({content:"volume_up",type:"shortcut"})),t=!0;break;case"-":var n;"false"!==(n=this.props.volume)&&((n-=5)<0&&(n=0),this.props.mopidyActions.setVolume(n),this.props.mute&&this.props.mopidyActions.setMute(!1)),this.props.uiActions.createNotification({content:"volume_down",type:"shortcut"}),t=!0;break;case"0":this.props.mute?(this.props.mopidyActions.setMute(!1),this.props.uiActions.createNotification({content:"volume_up",type:"shortcut"})):(this.props.mopidyActions.setMute(!0),this.props.uiActions.createNotification({content:"volume_off",type:"shortcut"})),t=!0;break;case";":var r=this.props.play_time_position-3e4;r<0&&(r=0),this.props.mopidyActions.setTimePosition(r),this.props.uiActions.createNotification({content:"fast_rewind",type:"shortcut"}),t=!0;break;case"'":this.props.mopidyActions.setTimePosition(this.props.play_time_position+3e4),this.props.uiActions.createNotification({content:"fast_forward",type:"shortcut"}),t=!0;break;case"[":this.props.mopidyActions.previous(),this.props.uiActions.createNotification({content:"skip_previous",type:"shortcut"}),t=!0;break;case"]":this.props.mopidyActions.next(),this.props.uiActions.createNotification({content:"skip_next",type:"shortcut"}),t=!0}return t?(e.preventDefault(),!1):void 0}}},{key:"render",value:function(){return null}}]),t}();t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;n0?o.default.createElement("div",{className:"debug-info-item"},t):o.default.createElement("div",{className:"debug-info-item mid_grey-text"},"Nothing loading")}},{key:"render",value:function(){var e=this.localStorageSize();return o.default.createElement("div",{className:"debug-info"},o.default.createElement("div",{className:"debug-info-section"},o.default.createElement("h5",null,"Indexes"),o.default.createElement("div",{className:"debug-info-item"},"Albums: ",this.props.core.albums?Object.keys(this.props.core.albums).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Artists: ",this.props.core.artists?Object.keys(this.props.core.artists).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Playlists: ",this.props.core.playlists?Object.keys(this.props.core.playlists).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Tracks: ",this.props.core.tracks?Object.keys(this.props.core.tracks).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Users: ",this.props.core.users?Object.keys(this.props.core.users).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Notifications: ",this.props.ui.notifications?Object.keys(this.props.ui.notifications).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Processes: ",this.props.ui.processes?Object.keys(this.props.ui.processes).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Enqueue batches: ",this.props.mopidy.enqueue_uris_batches?this.props.mopidy.enqueue_uris_batches.length:"0")),o.default.createElement("div",{className:"debug-info-section"},o.default.createElement("h5",null,"Config"),o.default.createElement("div",{className:"debug-info-item"},"Slim mode: ",this.props.ui.slim_mode?"on":"off"),o.default.createElement("div",{className:"debug-info-item"},"Test mode: ",this.props.ui.test_mode?"on":"off"),o.default.createElement("div",{className:"debug-info-item"},"Touch: ",u.isTouchDevice()?"on":"off"),o.default.createElement("div",{className:"debug-info-item"},"LocalStorage usage: ",e.used,"kb (~",e.percent,"%)"),o.default.createElement("div",{className:"debug-info-item"},"Selected tracks: ",this.props.ui.selected_tracks.length,o.default.createElement("br",null),this.props.ui.selected_tracks.map(function(e,t){return o.default.createElement("div",{key:e+"_"+t},e)}))),o.default.createElement("div",{className:"debug-info-section"},o.default.createElement("h5",null,"Load queue"),this.renderLoadQueue()))}}]),t}();t.default=(0,s.connect)(function(e,t){return{core:e.core,ui:e.ui,mopidy:e.mopidy}},function(e){return{uiActions:(0,l.bindActionCreators)(c,e)}})(d)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Album=void 0;var r=function(){function e(e,t){for(var n=0;n0&&this.props.lastfmActions.getAlbum(e.album.uri,e.album.artists[0].name,e.album.name),!this.props.album&&e.album&&this.setWindowTitle(e.album)}},{key:"setWindowTitle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.album;if(e){var t="";if(e.artists_uris&&this.props.artists)for(var n=0;n-1}},{key:"render",value:function(){var e=this;if(!this.props.album)return v.isLoading(this.props.load_queue,["spotify_albums/"+v.getFromUri("albumid",this.props.uri)])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(s.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find album with URI "',encodeURIComponent(this.props.uri),'"'));var t=v.collate(this.props.album,{tracks:this.props.tracks,artists:this.props.artists});if(!t.tracks_uris||t.tracks_uris&&!t.tracks||t.tracks_uris.length!==t.tracks.length)var n=!0;else n=!1;return a.default.createElement("div",{className:"view album-view content-wrapper preserve-3d"},"dark"==this.props.theme&&a.default.createElement(c.default,{image:t.images?t.images.huge:null,blur:!0}),a.default.createElement("div",{className:"thumbnail-wrapper"},a.default.createElement(u.default,{size:"large",canZoom:!0,images:t.images})),a.default.createElement("div",{className:"title"},a.default.createElement("h1",null,t.name),a.default.createElement("ul",{className:"details"},this.props.slim_mode?null:a.default.createElement("li",{className:"source"},a.default.createElement(_.default,{type:"fontawesome",name:v.sourceIcon(t.uri)})),t.artists&&t.artists.length>0?a.default.createElement("li",null,a.default.createElement(p.default,{artists:t.artists})):null,t.release_date?a.default.createElement("li",null,a.default.createElement(h.default,{type:"date",data:t.release_date})):null,t.tracks?a.default.createElement("li",null,t.tracks.length," tracks"):null,!this.props.slim_mode&&t.tracks?a.default.createElement("li",null,a.default.createElement(h.default,{type:"total-time",data:t.tracks})):null,!this.props.slim_mode&&t.play_count?a.default.createElement("li",null,a.default.createElement(f.default,{value:t.play_count})," plays"):null,!this.props.slim_mode&&t.listeners?a.default.createElement("li",null,a.default.createElement(f.default,{value:t.listeners})," listeners"):null)),a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),"spotify"==v.uriSource(this.props.uri)?a.default.createElement(d.default,{className:"secondary",uri:this.props.uri,addText:"Add to library",removeText:"Remove from library",is_following:this.inLibrary()}):null,a.default.createElement(y.default,{onTrigger:function(t){return e.handleContextMenu(t)}})),a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(l.default,{className:"album-track-list",tracks:t.tracks,uri:t.uri}),a.default.createElement(m.default,{loadKey:t.tracks_more,showLoader:n,loadMore:function(){return e.loadMore()}})),t.wiki?a.default.createElement("section",{className:"wiki"},a.default.createElement("h4",{className:"wiki__title"},"About"),a.default.createElement("div",{className:"wiki__text"},a.default.createElement("p",null,t.wiki),a.default.createElement("br",null),a.default.createElement("div",{className:"mid_grey-text"},"Published: ",t.wiki_publish_date))):null)}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n,slim_mode:e.ui.slim_mode,theme:e.ui.theme,load_queue:e.ui.load_queue,tracks:e.core.tracks,artists:e.core.artists,album:!(!e.core.albums||void 0===e.core.albums[n])&&e.core.albums[n],albums:e.core.albums,spotify_library_albums:e.spotify.library_albums,local_library_albums:e.mopidy.library_albums,spotify_authorized:e.spotify.authorization,mopidy_connected:e.mopidy.connected}},function(e){return{coreActions:(0,o.bindActionCreators)(b,e),uiActions:(0,o.bindActionCreators)(g,e),mopidyActions:(0,o.bindActionCreators)(E,e),spotifyActions:(0,o.bindActionCreators)(k,e),lastfmActions:(0,o.bindActionCreators)(O,e)}})(T)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.artist;e?this.props.uiActions.setWindowTitle(e.name+" (artist)"):this.props.uiActions.setWindowTitle("Artist")}},{key:"handleContextMenu",value:function(e){var t={e:e,context:"artist",items:[this.props.artist],uris:[this.props.uri]};this.props.uiActions.showContextMenu(t)}},{key:"loadMore",value:function(){this.props.spotifyActions.getMore(this.props.artist.albums_more,{parent_type:"artist",parent_key:this.props.uri,records_type:"album"})}},{key:"inLibrary",value:function(){var e=E.uriSource(this.props.uri)+"_library_artists";return this.props[e]&&this.props[e].indexOf(this.props.uri)>-1}},{key:"setSort",value:function(e){var t=!1;null!==e&&this.props.sort==e&&(t=!this.props.sort_reverse);var n={artist_albums_sort_reverse:t,artist_albums_sort:e};this.props.uiActions.set(n)}},{key:"setFilter",value:function(e){this.props.uiActions.set({artist_albums_filter:e})}},{key:"renderOverview",value:function(){var e=this,t=E.collate(this.props.artist,{artists:this.props.artists,albums:this.props.albums,tracks:this.props.tracks});this.props.sort&&t.albums&&(t.albums=E.sortItems(t.albums,this.props.sort,this.props.sort_reverse)),this.props.filter&&t.albums&&(t.albums=E.applyFilter("type",this.props.filter,t.albums));if(!t.tracks_uris||t.tracks_uris&&!t.tracks||t.tracks_uris.length!==t.tracks.length)var n=!0;else n=!1;return a.default.createElement("div",{className:"body overview"},a.default.createElement("div",{className:"top-tracks col col--w"+(t.related_artists&&t.related_artists.length>0?"70":"100")},t.tracks?a.default.createElement("h4",null,"Top tracks"):null,a.default.createElement("div",{className:"list-wrapper"},a.default.createElement(p.default,{className:"artist-track-list",uri:t.uri,tracks:t.tracks?t.tracks.splice(0,10):[]}),a.default.createElement(c.default,{showLoader:n}))),a.default.createElement("div",{className:"col col--w5"}),t.related_artists&&t.related_artists.length>0?a.default.createElement("div",{className:"col col--w25 related-artists"},a.default.createElement("h4",null,"Related artists"),a.default.createElement("div",{className:"list-wrapper"},a.default.createElement(y.default,{artists:t.related_artists.slice(0,6)})),a.default.createElement(u.default,{to:"/artist/"+encodeURIComponent(this.props.uri)+"/related-artists",scrollTo:"#sub-views-menu",className:"button button--default"},"All related artists")):null,a.default.createElement("div",{className:"cf"}),t.albums?a.default.createElement("div",{className:"albums"},a.default.createElement("h4",null,"Albums",a.default.createElement(b.default,{icon:"sort",name:"Sort",value:this.props.sort,options:[{value:null,label:"Default"},{value:"name",label:"Name"},{value:"release_date",label:"Date"},{value:"tracks_uris.length",label:"Tracks"}],selected_icon:this.props.sort?this.props.sort_reverse?"keyboard_arrow_up":"keyboard_arrow_down":null,handleChange:function(t){e.setSort(t),e.props.uiActions.hideContextMenu()}}),a.default.createElement(b.default,{icon:"filter_list",name:"Filter",value:this.props.filter,options:[{value:null,label:"All"},{value:"album",label:"Albums"},{value:"single",label:"Singles"},{value:"compilation",label:"Compilations"}],handleChange:function(t){e.setFilter(t),e.props.uiActions.hideContextMenu()}}),this.props.sort||this.props.filter?a.default.createElement("a",{className:"button button--discrete button--small",onClick:function(t){e.setFilter(null),e.setSort(null)}},a.default.createElement(g.default,{name:"clear"}),"Reset"):null),a.default.createElement("section",{className:"grid-wrapper no-top-padding"},a.default.createElement(d.default,{albums:t.albums}),a.default.createElement(c.default,{loadKey:t.albums_more,showLoader:t.albums_more,loadMore:function(){return e.loadMore()}}))):null)}},{key:"renderTracks",value:function(){var e=E.collate(this.props.artist,{artists:this.props.artists,tracks:this.props.tracks});if(!e.tracks_uris||e.tracks_uris&&!e.tracks||e.tracks_uris.length!==e.tracks.length)var t=!0;else t=!1;return a.default.createElement("div",{className:"body related-artists"},a.default.createElement("section",{className:"list-wrapper no-top-padding"},a.default.createElement(p.default,{className:"artist-track-list",uri:e.uri,tracks:e.tracks}),a.default.createElement(c.default,{showLoader:t})))}},{key:"renderRelatedArtists",value:function(){var e=E.collate(this.props.artist,{artists:this.props.artists});return a.default.createElement("div",{className:"body related-artists"},a.default.createElement("section",{className:"grid-wrapper no-top-padding"},a.default.createElement(m.default,{artists:e.related_artists})))}},{key:"renderAbout",value:function(){var e=E.collate(this.props.artist,{artists:this.props.artists}),t=[];if(e.images&&e.images.length>0){var n=!0,r=!1,i=void 0;try{for(var o,s=e.images[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;l.huge&&t.push(a.default.createElement("div",{className:"tile thumbnail-wrapper",key:l.huge},a.default.createElement(f.default,{size:"huge",canZoom:!0,images:l})))}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}}return a.default.createElement("div",{className:"body about"},a.default.createElement("div",{className:"col col--w40 tiles artist-stats"},t,e.followers?a.default.createElement("div",{className:"tile"},a.default.createElement("span",{className:"content"},a.default.createElement(g.default,{type:"fontawesome",name:"users"}),e.followers.toLocaleString()," followers")):null,e.popularity?a.default.createElement("div",{className:"tile"},a.default.createElement("span",{className:"content"},a.default.createElement(g.default,{type:"fontawesome",name:"fire"}),e.popularity,"% popularity")):null,e.listeners?a.default.createElement("div",{className:"tile"},a.default.createElement("span",{className:"content"},a.default.createElement(g.default,{type:"fontawesome",name:"headphones"}),e.listeners.toLocaleString()," listeners")):null),a.default.createElement("div",{className:"col col--w60 biography"},a.default.createElement("section",null,e.biography?a.default.createElement("div",{className:"biography-text"},a.default.createElement("p",null,e.biography),a.default.createElement("br",null),a.default.createElement("div",{className:"mid_grey-text"},"Published: ",e.biography_publish_date),a.default.createElement("div",{className:"mid_grey-text"},"Origin: ",a.default.createElement("a",{href:e.biography_link,target:"_blank"},e.biography_link))):null)))}},{key:"render",value:function(){var e=this,t=E.uriSource(this.props.uri);if(!this.props.artist)return E.isLoading(this.props.load_queue,["spotify_artists/"+E.getFromUri("artistid",this.props.uri),"lastfm_method=artist.getInfo"])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(l.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find artist with URI "',encodeURIComponent(this.props.uri),'"'));if(this.props.artist&&this.props.artist.images&&this.props.artist.images.length>0)var n=this.props.artist.images[0].huge;else n=null;var r="spotify"==t;if(this.props.artist.tracks_uris&&this.props.artist.tracks_uris.length>0)var i=this.props.artist.tracks_uris;else i=this.props.artist.albums_uris;return a.default.createElement("div",{className:"view artist-view preserve-3d"},a.default.createElement("div",{className:"intro preserve-3d"},a.default.createElement(h.default,{image:n,fixedHeight:!0}),a.default.createElement("div",{className:"liner"},a.default.createElement("h1",null,this.props.artist?this.props.artist.name:null),a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.props.mopidyActions.playURIs(i,e.props.artist.uri)}},"Play"),r?a.default.createElement(_.default,{uri:this.props.uri,removeText:"Remove from library",addText:"Add to library",is_following:this.inLibrary()}):null,a.default.createElement(v.default,{className:"white",onTrigger:function(t){return e.handleContextMenu(t)}})),a.default.createElement("div",{className:"sub-views",id:"sub-views-menu"},a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri),scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"Overview")),this.props.artist.tracks_uris&&this.props.artist.tracks_uris.length>10?a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri)+"/tracks",scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"Tracks")):null,this.props.artist.related_artists_uris?a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri)+"/related-artists",scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"Related artists")):null,a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri)+"/about",scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"About"))))),a.default.createElement("div",{className:"content-wrapper"},a.default.createElement(s.Switch,null,a.default.createElement(s.Route,{exact:!0,path:"/artist/:id/related-artists"},this.renderRelatedArtists()),a.default.createElement(s.Route,{exact:!0,path:"/artist/:id/tracks"},this.renderTracks()),a.default.createElement(s.Route,{exact:!0,path:"/artist/:id/about"},this.renderAbout()),a.default.createElement(s.Route,{exact:!0,path:"/artist/:id"},this.renderOverview()))))}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n,theme:e.ui.theme,slim_mode:e.ui.slim_mode,load_queue:e.ui.load_queue,artist:void 0!==e.core.artists[n]&&e.core.artists[n],tracks:e.core.tracks,artists:e.core.artists,spotify_library_artists:e.spotify.library_artists,local_library_artists:e.mopidy.library_artists,albums:e.core.albums?e.core.albums:[],filter:e.ui.artist_albums_filter?e.ui.artist_albums_filter:null,sort:e.ui.artist_albums_sort?e.ui.artist_albums_sort:null,sort_reverse:!!e.ui.artist_albums_sort_reverse,spotify_authorized:e.spotify.authorization,mopidy_connected:e.mopidy.connected}},function(e){return{coreActions:(0,o.bindActionCreators)(k,e),uiActions:(0,o.bindActionCreators)(O,e),mopidyActions:(0,o.bindActionCreators)(w,e),pusherActions:(0,o.bindActionCreators)(S,e),lastfmActions:(0,o.bindActionCreators)(T,e),spotifyActions:(0,o.bindActionCreators)(A,e)}})(x)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.playlist;e?this.props.uiActions.setWindowTitle(e.name+" (playlist)"):this.props.uiActions.setWindowTitle("Playlist")}},{key:"loadMore",value:function(){this.props.spotifyActions.getMore(this.props.playlist.tracks_more,{parent_type:"playlist",parent_key:this.props.playlist.uri,records_type:"track"})}},{key:"handleContextMenu",value:function(e){var t={e:e,context:"playlist",items:[this.props.playlist],uris:[this.props.uri]};this.props.uiActions.showContextMenu(t)}},{key:"play",value:function(){this.props.mopidyActions.playPlaylist(this.props.playlist.uri)}},{key:"follow",value:function(){this.props.allow_reporting&&s.default.event({category:"Playlist",action:"Follow",label:this.props.playlist.uri}),this.props.spotifyActions.toggleFollowingPlaylist(this.props.playlist.uri,"PUT")}},{key:"unfollow",value:function(){this.props.allow_reporting&&s.default.event({category:"Playlist",action:"Unfollow",label:this.props.playlist.uri}),this.props.spotifyActions.toggleFollowingPlaylist(this.props.playlist.uri,"DELETE")}},{key:"delete",value:function(){this.props.mopidyActions.deletePlaylist(this.props.playlist.uri)}},{key:"reorderTracks",value:function(e,t){this.props.coreActions.reorderPlaylistTracks(this.props.playlist.uri,e,t,this.props.playlist.snapshot_id)}},{key:"removeTracks",value:function(e){this.props.coreActions.removeTracksFromPlaylist(this.props.playlist.uri,e)}},{key:"inLibrary",value:function(){var e=g.uriSource(this.props.uri)+"_library_playlists";return this.props[e]&&this.props[e].indexOf(this.props.uri)>-1}},{key:"renderActions",value:function(){var e=this;switch(g.uriSource(this.props.uri)){case"m3u":return a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(u.default,{className:"button button--default",to:"/playlist/"+encodeURIComponent(this.props.uri)+"/edit"},"Edit"),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}}));case"spotify":return this.props.playlist.can_edit?a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(u.default,{className:"button button--default",to:"/playlist/"+encodeURIComponent(this.props.uri)+"/edit"},"Edit"),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}})):a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(y.default,{uri:this.props.uri,addText:"Add to library",removeText:"Remove from library",is_following:this.inLibrary()}),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}}));default:return a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}}))}}},{key:"render",value:function(){var e=this,t=g.getFromUri("playlistid",this.props.uri);if(!this.props.playlist)return g.isLoading(this.props.load_queue,["spotify_playlists/"+t+"?"])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(l.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find playlist with URI "',encodeURIComponent(this.props.uri),'"'));var n=g.collate(this.props.playlist,{tracks:this.props.tracks,users:this.props.users}),r="playlist";if(n.can_edit&&(r="editable-playlist"),0===n.tracks_total||n.tracks_uris&&(!n.tracks_uris||n.tracks)&&n.tracks_uris.length===n.tracks.length)i=!1;else var i=!0;return a.default.createElement("div",{className:"view playlist-view content-wrapper preserve-3d"},"dark"==this.props.theme&&a.default.createElement(d.default,{image:n.images?n.images.huge:null,blur:!0}),a.default.createElement("div",{className:"thumbnail-wrapper"},a.default.createElement(p.default,{size:"large",canZoom:!0,images:n.images})),a.default.createElement("div",{className:"title"},a.default.createElement("h1",null,n.name),n.description?a.default.createElement("h2",{className:"description mid_grey-text",dangerouslySetInnerHTML:{__html:n.description}}):null,a.default.createElement("ul",{className:"details"},this.props.slim_mode?null:a.default.createElement("li",{className:"source"},a.default.createElement(b.default,{type:"fontawesome",name:g.sourceIcon(n.uri)})),n.user_uri?a.default.createElement("li",null,a.default.createElement(v.default,{type:"user",uri:n.user_uri},n.user?n.user.name:g.getFromUri("userid",n.user_uri))):null,a.default.createElement("li",null,n.tracks_total?n.tracks_total:"0"," tracks"),!this.props.slim_mode&&n.tracks&&n.tracks_total>0?a.default.createElement("li",null,a.default.createElement(h.default,{type:"total-time",data:n.tracks})):null,this.props.slim_mode||void 0===n.followers?null:a.default.createElement("li",null,a.default.createElement(f.default,{value:n.followers})," followers"),!this.props.slim_mode&&n.last_modified_date?a.default.createElement("li",null,"Edited ",a.default.createElement(h.default,{type:"ago",data:n.last_modified_date})):null)),this.renderActions(),a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(c.default,{uri:n.uri,className:"playlist-track-list",track_context:r,tracks:n.tracks,removeTracks:function(t){return e.removeTracks(t)},reorderTracks:function(t,n){return e.reorderTracks(t,n)}}),a.default.createElement(m.default,{loadKey:n.tracks_more,showLoader:i||n.tracks_more,loadMore:function(){return e.loadMore()}})))}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n=(n=(n=(n=(n=(n=n.replace(/\s/g,"%20")).replace(/\[/g,"%5B")).replace(/\]/g,"%5D")).replace(/\(/g,"%28")).replace(/\)/g,"%29")).replace(/\#/g,"%23"),allow_reporting:e.ui.allow_reporting,slim_mode:e.ui.slim_mode,theme:e.ui.theme,load_queue:e.ui.load_queue,users:e.core.users,tracks:e.core.tracks,playlist:void 0!==e.core.playlists[n]&&e.core.playlists[n],spotify_library_playlists:e.spotify.library_playlists,local_library_playlists:e.mopidy.library_playlists,mopidy_connected:e.mopidy.connected,spotify_authorized:e.spotify.authorization,spotify_userid:e.spotify.me&&e.spotify.me.id?e.spotify.me.id:null}},function(e){return{coreActions:(0,o.bindActionCreators)(E,e),uiActions:(0,o.bindActionCreators)(k,e),mopidyActions:(0,o.bindActionCreators)(O,e),spotifyActions:(0,o.bindActionCreators)(w,e)}})(A)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.user;e?this.props.uiActions.setWindowTitle(e.name+" (user)"):this.props.uiActions.setWindowTitle("User")}},{key:"loadMore",value:function(){this.props.spotifyActions.getMore(this.props.user.playlists_more,{parent_type:"user",parent_key:this.props.uri,records_type:"playlist"})}},{key:"isMe",value:function(){var e=h.getFromUri("userid",this.props.uri);return this.props.me&&this.props.me.id&&this.props.me.id==e}},{key:"render",value:function(){var e=this,t=h.getFromUri("userid",this.props.uri);if(!this.props.user)return h.isLoading(this.props.load_queue,["spotify_users/"+t,"spotify_users/"+t+"/playlists/?"])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(s.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find user with URI "',encodeURIComponent(this.props.uri),'"'));var n=h.collate(this.props.user,{playlists:this.props.playlists});if(n&&n.images)var r=n.images.huge;else r=null;return a.default.createElement("div",{className:"view user-view preserve-3d"},a.default.createElement("div",{className:"intro preserve-3d"},a.default.createElement(p.default,{image:r,fixedHeight:!0}),a.default.createElement("div",{className:"liner"},a.default.createElement("h1",null,n.name),a.default.createElement("h2",null,a.default.createElement("ul",{className:"details"},this.props.slim_mode?null:a.default.createElement("li",{className:"source"},a.default.createElement(f.default,{type:"fontawesome",name:h.sourceIcon(n.uri)})),n.playlists_total?a.default.createElement("li",null,a.default.createElement(d.default,{value:n.playlists_total})," playlists"):null,n.followers?a.default.createElement("li",null,a.default.createElement(d.default,{value:n.followers})," followers"):null,this.isMe()?a.default.createElement("li",null,a.default.createElement("span",{className:"blue-text"},"You")):null)),a.default.createElement("div",{className:"actions"},a.default.createElement(u.default,{className:"primary",uri:n.uri,addText:"Follow",removeText:"Unfollow"})))),a.default.createElement("div",{className:"content-wrapper"},a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement("h4",null,"Playlists"),a.default.createElement(l.default,{playlists:n.playlists}),a.default.createElement(c.default,{loadKey:n.playlists_more,showLoader:n.playlists_more,loadMore:function(){return e.loadMore()}}))))}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n,me:e.spotify.me,load_queue:e.ui.load_queue,spotify_authorized:e.spotify.authorization,playlists:e.core.playlists,user:void 0!==e.core.users[n]&&e.core.users[n]}},function(e){return{coreActions:(0,o.bindActionCreators)(m,e),uiActions:(0,o.bindActionCreators)(y,e),spotifyActions:(0,o.bindActionCreators)(_,e)}})(g)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.track;if(e){for(var t="",n=0;n0&&this.props.mopidyActions.removeTracks(t)}},{key:"playTrack",value:function(e){this.props.mopidyActions.changeTrack(e.tlid)}},{key:"playTracks",value:function(e){this.props.mopidyActions.changeTrack(e[0].tlid)}},{key:"reorderTracks",value:function(e,t){this.props.mopidyActions.reorderTracklist(e,t)}},{key:"renderQueueStats",value:function(){return a.default.createElement("div",{className:"queue-stats mid_grey-text"},a.default.createElement("span",null,this.props.current_tracklist.length," tracks"),"  |  ",this.props.current_tracklist.length>0?a.default.createElement(p.default,{type:"total-time",data:this.props.current_tracklist}):a.default.createElement("span",null,"0 mins"))}},{key:"renderArtwork",value:function(e){if(!e)return a.default.createElement("span",{className:this.props.radio_enabled?"artwork radio-enabled":"artwork"},this.props.radio_enabled?a.default.createElement("img",{className:"radio-overlay",src:"/iris/assets/radio-overlay.png"}):null,a.default.createElement(f.default,{circle:this.props.radio_enabled}));var t=null;return this.props.current_track.album&&this.props.current_track.album.uri&&(t=this.props.current_track.album.uri),a.default.createElement(m.default,{className:this.props.radio_enabled?"artwork radio-enabled":"artwork",type:"album",uri:t},this.props.radio_enabled?a.default.createElement("img",{className:"radio-overlay",src:"/iris/assets/radio-overlay.png"}):null,a.default.createElement(f.default,{image:e,circle:this.props.radio_enabled}))}},{key:"render",value:function(){var e=this,t=null,n=[];if(this.props.queue&&this.props.tracks)for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:this.props).mopidy_connected&&this.props.mopidyActions.getQueueHistory()}},{key:"render",value:function(){for(var e=this,t=a.default.createElement("a",{className:"button button--no-hover",onClick:function(t){return e.props.history.push("/queue")}},a.default.createElement(u.default,{name:"keyboard_backspace"}),"  Back"),n=[],r=0;r0&&void 0!==arguments[0]?arguments[0]:this.props;e.type&&e.term&&(this.setState({type:e.type,term:e.term}),this.search(e.type,e.term))}},{key:"search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state.type,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state.term,n=arguments[2];this.props.uiActions.setWindowTitle("Search: "+t),this.props.mopidyActions.clearSearchResults(),this.props.spotifyActions.clearSearchResults(),e&&t&&(("mopidy"==n||this.props.mopidy_connected&&this.props.uri_schemes_search_enabled)&&this.props.mopidyActions.getSearchResults(e,t),("spotify"==n||this.props.mopidy_connected&&this.props.uri_schemes_search_enabled&&this.props.uri_schemes_search_enabled.includes("spotify:"))&&this.props.spotifyActions.getSearchResults(e,t))}},{key:"loadMore",value:function(e){alert("load more: "+e)}},{key:"setSort",value:function(e){var t=!1;this.props.sort==e&&(t=!this.props.sort_reverse);var n={search_results_sort_reverse:t,search_results_sort:e};this.props.uiActions.set(n)}},{key:"renderArtists",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Artists"),a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement(d.default,{artists:e,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.artists_more&&t,loadMore:function(){return n.loadMore("artists")}})))}},{key:"renderAlbums",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Albums"),a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement(f.default,{albums:e,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.albums_more&&t,loadMore:function(){return n.loadMore("albums")}})))}},{key:"renderPlaylists",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Playlists"),a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement(h.default,{playlists:e,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.playlists_more&&t,loadMore:function(){return n.loadMore("playlists")}})))}},{key:"renderTracks",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Tracks"),a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(p.default,{tracks:e,uri:"iris:search:"+this.state.type+":"+this.state.term,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.tracks_more&&t,loadMore:function(){return n.loadMore("tracks")}})))}},{key:"renderAll",value:function(e,t,n,r,i){var o=this;if(e.length>0)var s=a.default.createElement("section",null,a.default.createElement("div",{className:"inner"},a.default.createElement(_.default,{type:"search",uri:"search:artist:"+this.state.term},a.default.createElement("h4",null,"Artists")),a.default.createElement(d.default,{mini:!0,show_source_icon:!0,artists:e.slice(0,6)}),e.length>=6?a.default.createElement(_.default,{type:"search",uri:"search:artist:"+this.state.term,className:"button button--default"},"All artists (",e.length,")"):null));else s=null;if(t.length>0)var l=a.default.createElement("section",null,a.default.createElement("div",{className:"inner"},a.default.createElement(_.default,{type:"search",uri:"search:album:"+this.state.term},a.default.createElement("h4",null,"Albums")),a.default.createElement(f.default,{mini:!0,show_source_icon:!0,albums:t.slice(0,6)}),t.length>=6?a.default.createElement(_.default,{type:"search",uri:"search:album:"+this.state.term,className:"button button--default"},"All albums (",t.length,")"):null));else l=null;if(n.length>0)var u=a.default.createElement("section",null,a.default.createElement("div",{className:"inner"},a.default.createElement(_.default,{type:"search",uri:"search:playlist:"+this.state.term},a.default.createElement("h4",null,"Playlists")),a.default.createElement(h.default,{mini:!0,show_source_icon:!0,playlists:n.slice(0,6)}),n.length>=6?a.default.createElement(_.default,{type:"search",uri:"search:playlist:"+this.state.term,className:"button button--default"},"All playlists (",n.length,")"):null));else u=null;if(r.length>0)var c=a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(p.default,{tracks:r,uri:"iris:search:"+this.state.type+":"+this.state.term,show_source_icon:!0}),a.default.createElement(m.default,{loading:this.props.tracks_more&&i,loadMore:function(){return o.loadMore("tracks")}}));else c=null;return a.default.createElement("div",null,a.default.createElement("div",{className:"search-result-sections cf"},s,l,u),c)}},{key:"render",value:function(){for(var e=this,t=[],n=0;n-1?t[l]=this.props.uri_schemes[r]:n.push(this.props.uri_schemes[r])}for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,t){for(var n=0;n0&&(e.dispatch({type:"ARTISTS_LOADED",artists:n.artists}),n.artists_uris=s.arrayOf("uri",n.artists)),n.tracks.length>0&&(e.dispatch({type:"TRACKS_LOADED",tracks:n.tracks}),n.tracks_uris=s.arrayOf("uri",n.tracks)),t(n);break;case"SPOTIFY_LIBRARY_TRACKS_LOADED":case"SPOTIFY_LIBRARY_TRACKS_LOADED_MORE":n.data&&e.dispatch({type:"TRACKS_LOADED",tracks:n.data.items}),t(n);break;case"SPOTIFY_TRACK_LOADED":e.dispatch({type:"TRACKS_LOADED",tracks:[n.data]}),t(n);break;case"SEARCH_STARTED":e.dispatch({type:"SPOTIFY_CLEAR_SEARCH_RESULTS"}),t(n);break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_TRACKS":e.dispatch({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"tracks",results:s.formatTracks(n.data.tracks.items),more:n.data.tracks.next});break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ARTISTS":e.dispatch({type:"ARTISTS_LOADED",artists:n.data.artists.items}),e.dispatch({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"artists",results:s.arrayOf("uri",n.data.playlists.items),more:n.data.playlists.next});break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ALBUMS":e.dispatch({type:"ALBUMS_LOADED",albums:n.data.albums.items}),e.dispatch({type:"SPOTIFY_SEARCH_RESULTS_LOADED",context:"playlists",results:s.arrayOf("uri",n.data.albums.items),more:n.data.albums.next});break;case"SPOTIFY_SEARCH_RESULTS_LOADED_MORE_PLAYLISTS":for(p=[],d=0;d2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;e.dispatch(l.request(t,n,r,a))},function(e){return function(t){return function(n){switch(e.getState().google,n.type){case"GOOGLE_GET_LIBRARY_ALBUMS":var r=e.getState().ui.processes.GOOGLE_LIBRARY_ALBUMS_PROCESSOR;r?"cancelled"==r.status?e.dispatch(u.resumeProcess("GOOGLE_LIBRARY_ALBUMS_PROCESSOR")):r.status:i(e,"library.browse",{uri:"gmusic:album"},function(t){if(!(t.length<=0)){var n=o.arrayOf("uri",t);e.dispatch({type:"GOOGLE_LIBRARY_ALBUMS_LOADED",uris:n}),e.dispatch(u.startProcess("GOOGLE_LIBRARY_ALBUMS_PROCESSOR","Loading "+n.length+" Google albums",{uris:n,total:n.length,remaining:n.length}))}});break;case"GOOGLE_LIBRARY_ALBUMS_PROCESSOR":if(void 0!==e.getState().ui.processes.GOOGLE_LIBRARY_ALBUMS_PROCESSOR&&"cancelling"==e.getState().ui.processes.GOOGLE_LIBRARY_ALBUMS_PROCESSOR.status)return e.dispatch(u.processCancelled("GOOGLE_LIBRARY_ALBUMS_PROCESSOR")),!1;var a=Object.assign([],n.data.uris),c=a.splice(0,50);c.length>0?(e.dispatch(u.updateProcess("GOOGLE_LIBRARY_ALBUMS_PROCESSOR","Loading "+a.length+" Google albums",{uris:a,remaining:a.length})),e.dispatch(l.getAlbums(c,{name:"GOOGLE_LIBRARY_ALBUMS_PROCESSOR",data:{uris:a}}))):e.dispatch(u.processFinishing("GOOGLE_LIBRARY_ALBUMS_PROCESSOR"));break;case"GOOGLE_GET_LIBRARY_ARTISTS":i(e,"library.browse",{uri:"gmusic:artist"},function(t){if(!(t.length<=0)){for(var n=[],r=0;r1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e.dispatch(u.request("snapcast",t,n,r))},function(e){return function(t){return function(n){var r=e.getState().snapcast;switch(n.type){case"SNAPCAST_GET_SERVER":o(e,{method:"Server.GetStatus"},function(t){e.dispatch(c.serverLoaded(t.server))},function(t){e.dispatch(l.handleException("Could not get server",t))});break;case"SNAPCAST_SERVER_LOADED":e.dispatch(c.groupsLoaded(n.server.groups,!0)),e.dispatch(c.streamsLoaded(n.server.streams,!0)),n.server=n.server.server,t(n);break;case"SNAPCAST_GROUPS_LOADED":var a=Object.assign({},r.groups),u=[],p=[],d=!0,f=!1,h=void 0;try{for(var m,y=n.groups[Symbol.iterator]();!(d=(m=y.next()).done);d=!0){var _=m.value;a[(P=s.formatGroup(_)).id]&&(P=Object.assign({},a[P.id],P)),_.clients&&(P.clients_ids=s.arrayOf("id",_.clients),p=[].concat(i(p),i(_.clients))),u.push(P)}}catch(e){f=!0,h=e}finally{try{!d&&y.return&&y.return()}finally{if(f)throw h}}n.groups=u,p.length>0&&e.dispatch(c.clientsLoaded(p,n.flush)),t(n);break;case"SNAPCAST_CLIENTS_LOADED":var v=Object.assign({},r.clients),b=(p=[],!0),g=!1,E=void 0;try{for(var k,O=n.clients[Symbol.iterator]();!(b=(k=O.next()).done);b=!0){var w=k.value;v[(S=s.formatClient(w)).id]&&(S=Object.assign({},v[S.id],S)),p.push(S)}}catch(e){g=!0,E=e}finally{try{!b&&O.return&&O.return()}finally{if(g)throw E}}n.clients=p,t(n);break;case"SNAPCAST_SET_CLIENT_NAME":var S=r.clients[n.id],T={method:"Client.SetName",params:{id:n.id,name:n.name}};o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,name:t.name}))});break;case"SNAPCAST_SET_CLIENT_MUTE":S=e.getState().snapcast.clients[n.id],T={method:"Client.SetVolume",params:{id:n.id,volume:{muted:n.mute,percent:S.volume}}},o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,volume:t.volume.percent,mute:t.volume.muted}))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_CLIENT_VOLUME":S=r.clients[n.id],T={method:"Client.SetVolume",params:{id:n.id,volume:{muted:S.mute,percent:n.volume}}},o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,volume:t.volume.percent}))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_CLIENT_LATENCY":S=e.getState().snapcast.clients[n.id],T={method:"Client.SetLatency",params:{id:n.id,latency:n.latency}},o(e,T,function(t){e.dispatch(c.clientLoaded({id:n.id,latency:t.latency}))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_CLIENT_GROUP":var A=(P=r.groups[n.group_id]).clients_ids,C=A.indexOf(n.id);C<=-1?A.push(n.id):A.splice(C,1),T={method:"Group.SetClients",params:{id:n.group_id,clients:A}},o(e,T,function(t){e.dispatch(c.serverLoaded(t.server))},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_DELETE_CLIENT":T={method:"Server.DeleteClient",params:{id:n.id}},o(e,T,function(t){e.dispatch({type:"SNAPCAST_CLIENT_REMOVED",key:n.data.params.id})},function(t){e.dispatch(l.handleException("Error",t,t.message))});break;case"SNAPCAST_SET_GROUP_STREAM":var P=e.getState().snapcast.groups[n.id];T={method:"Group.SetStream",params:{id:n.id,stream_id:n.stream_id}},o(e,T,function(t){e.dispatch(c.groupLoaded({id:n.id,stream_id:n.stream_id}))},function(t){e.dispatch(l.handleException("Could not change stream",t,t.message))});break;case"SNAPCAST_SET_GROUP_MUTE":P=e.getState().snapcast.groups[n.id],T={method:"Group.SetMute",params:{id:n.id,mute:n.mute}},o(e,T,function(t){e.dispatch(c.groupLoaded({id:n.id,muted:t.mute}))},function(t){e.dispatch(l.handleException("Could not toggle mute",t,t.message))});break;case"SNAPCAST_SET_GROUP_VOLUME":var x=[],R=(P=r.groups[n.id],n.percent-n.old_percent),N=!0,M=!1,L=void 0;try{for(var D,I=P.clients_ids[Symbol.iterator]();!(N=(D=I.next()).done);N=!0){var j=D.value,U=(S=r.clients[j]).volume,Y=U+R;(R>0&&U<100||R<0&&U>0)&&x.push({id:S.id,volume:Y})}}catch(e){M=!0,L=e}finally{try{!N&&I.return&&I.return()}finally{if(M)throw L}}var F=!0,H=!1,z=void 0;try{for(var B,q=x[Symbol.iterator]();!(F=(B=q.next()).done);F=!0){var G=B.value,W=G.volume+(P.clients_ids.length-x.length)*R;W<0?W=0:W>100&&(W=100),e.dispatch(c.setClientVolume(G.id,W))}}catch(e){H=!0,z=e}finally{try{!F&&q.return&&q.return()}finally{if(H)throw z}}break;case"SNAPCAST_EVENT_RECEIVED":switch(n.method=n.method.replace("snapcast_",""),n.method){case"Client.OnConnect":e.dispatch(c.clientLoaded({id:n.params.client.id,name:n.params.client.name,volume:n.params.client.volume.percent,mute:n.params.client.volume.muted,connected:n.params.client.connected}));break;case"Client.OnDisconnect":e.dispatch(c.clientLoaded({id:n.params.client.id,connected:n.params.client.connected}));break;case"Client.OnVolumeChanged":e.dispatch(c.clientLoaded({id:n.params.id,mute:n.params.volume.muted,volume:n.params.volume.percent}));break;case"Client.OnLatencyChanged":e.dispatch(c.clientLoaded({id:n.params.id,latency:n.params.latency}));break;case"Client.OnNameChanged":e.dispatch(c.clientLoaded({id:n.params.id,name:n.params.name}));break;case"Group.OnMute":e.dispatch(c.groupLoaded({id:n.params.id,mute:n.params.mute}));break;case"Server.OnUpdate":e.dispatch(c.serverLoaded(n.params))}break;default:return t(n)}}}});t.default=p},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),a=function(e){return function(t){return function(n){switch(t(n),window._store=e,e.getState().ui.log_actions&&(["START_LOADING","STOP_LOADING"].includes(n.type)||console.log(n)),n.type){case"PUSHER_CONNECTED":r.setStorage("pusher",{connection_id:n.connection_id});break;case"PUSHER_SET_PORT":r.setStorage("pusher",{port:n.port});break;case"PUSHER_SET_USERNAME":r.setStorage("pusher",{username:n.username});break;case"MOPIDY_URISCHEMES_FILTERED":r.setStorage("mopidy",{uri_schemes:n.data});break;case"SPOTIFY_AUTHORIZATION_GRANTED":if(void 0!==n.authorization)var a=n.authorization;else n.data&&(a=n.data);r.setStorage("spotify",{authorization:a,access_token:a.access_token,refresh_token:a.refresh_token,token_expiry:a.token_expiry});break;case"SPOTIFY_IMPORT_AUTHORIZATION":r.setStorage("spotify",{authorization:n.authorization,access_token:n.authorization.access_token,refresh_token:n.authorization.refresh_token,token_expiry:n.authorization.token_expiry,me:null});break;case"SPOTIFY_AUTHORIZATION_REVOKED":r.setStorage("spotify",{authorization:null,access_token:null,refresh_token:null,token_expiry:null,me:null});break;case"SPOTIFY_TOKEN_REFRESHED":r.setStorage("spotify",{access_token:n.data.access_token,token_expiry:n.data.token_expiry,provider:n.provider});break;case"SPOTIFY_ME_LOADED":r.setStorage("spotify",{me:n.me});break;case"LASTFM_ME_LOADED":r.setStorage("lastfm",{me:n.me});break;case"LASTFM_AUTHORIZATION_GRANTED":r.setStorage("lastfm",{authorization:n.data.session});break;case"LASTFM_AUTHORIZATION_REVOKED":r.setStorage("lastfm",{authorization:null,me:null});break;case"LASTFM_IMPORT_AUTHORIZATION":r.setStorage("lastfm",{authorization:n.authorization,me:null});break;case"GENIUS_ME_LOADED":r.setStorage("genius",{me:n.me});break;case"GENIUS_AUTHORIZATION_GRANTED":r.setStorage("genius",{authorization:n.data,authorization_code:n.data.authorization_code,access_token:n.data.access_token});break;case"GENIUS_AUTHORIZATION_REVOKED":r.setStorage("genius",{me:null,authorization:null,authorization_code:null,access_token:null});break;case"GENIUS_IMPORT_AUTHORIZATION":r.setStorage("genius",{authorization:n.authorization,authorization_code:n.authorization.authorization_code,access_token:n.authorization.access_token,me:null});break;case"CORE_SET":r.setStorage("core",n.data);break;case"UI_SET":r.setStorage("ui",n.data);break;case"MOPIDY_SET":r.setStorage("mopidy",n.data);break;case"SPOTIFY_SET":r.setStorage("spotify",n.data);break;case"SNAPCAST_COMMANDS_UPDATED":r.setStorage("snapcast",{commands:n.commands});break;case"SUPPRESS_BROADCAST":var i=r.getStorage("ui");if(void 0!==i.suppressed_broadcasts)var o=i.suppressed_broadcasts;else o=[];o.push(n.key),r.setStorage("ui",{suppressed_broadcasts:o})}}}};t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.App=void 0;var r=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["border","cssModule","className","fixedWidth","flip","inverse","name","pulse","rotate","size","spin","stack","tag","ariaLabel"]),g=[];return n?(g.push(n.fa),g.push(n["fa-"+c]),f&&g.push(n["fa-"+f]),h&&g.push(n["fa-spin"]),p&&g.push(n["fa-pulse"]),t&&g.push(n["fa-border"]),o&&g.push(n["fa-fw"]),u&&g.push(n["fa-inverse"]),l&&g.push(n["fa-flip-"+l]),d&&g.push(n["fa-rotate-"+d]),m&&g.push(n["fa-stack-"+m])):(g.push("fa"),g.push("fa-"+c),f&&g.push("fa-"+f),h&&g.push("fa-spin"),p&&g.push("fa-pulse"),t&&g.push("fa-border"),o&&g.push("fa-fw"),u&&g.push("fa-inverse"),l&&g.push("fa-flip-"+l),d&&g.push("fa-rotate-"+d),m&&g.push("fa-stack-"+m)),a&&g.push(a),i.default.createElement(_,r({},b,{"aria-hidden":!0,className:g.join(" ")}),v?i.default.createElement("span",{style:s.default},v):null)}}]),t}();u.propTypes={ariaLabel:o.default.string,border:o.default.bool,className:o.default.string,cssModule:o.default.object,fixedWidth:o.default.bool,flip:o.default.oneOf(["horizontal","vertical"]),inverse:o.default.bool,name:o.default.string.isRequired,pulse:o.default.bool,rotate:o.default.oneOf([90,180,270]),size:o.default.oneOf(["lg","2x","3x","4x","5x"]),spin:o.default.bool,stack:o.default.oneOf(["1x","2x"]),tag:o.default.string},t.default=u,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={position:"absolute",width:"1px",height:"1px",padding:"0px",margin:"-1px",overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",border:"0px"},e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props;if(this.stream?this.stream.src=null:this.stream=new Audio,!e.http_streaming_enabled||!e.http_streaming_url)return!1;this.stream.src=e.http_streaming_url+"?cb="+e.http_streaming_cachebuster,this.stream.muted=e.http_streaming_mute,this.stream.volume=e.http_streaming_volume/100,this.stream.play()}},{key:"componentWillReceiveProps",value:function(e){this.props.http_streaming_cachebuster!==e.http_streaming_cachebuster&&this.playStream(e),!this.props.http_streaming_enabled&&e.http_streaming_enabled&&this.playStream(e),this.stream&&(this.props.http_streaming_mute!==e.http_streaming_mute&&(this.stream.muted=e.http_streaming_mute),this.props.http_streaming_volume!==e.http_streaming_volume&&(this.stream.volume=e.http_streaming_volume/100),e.http_streaming_enabled||(this.stream=null)),(!this.props.current_track&&e.current_track||this.props.current_track&&!e.current_track)&&this.setState({current_track:e.current_track}),this.props.current_track&&e.current_track&&this.props.current_track.uri!==e.current_track.uri&&this.setState({current_track:e.current_track}),this.props.current_track&&e.current_track&&(this.props.current_track.images&&!e.current_track.images||!this.props.current_track.images&&e.current_track.images)&&this.setState({current_track:e.current_track})}},{key:"handleTouchStart",value:function(t){e(t.target);var n=Math.floor(Date.now());return this.start_time=n,this.start_position={x:t.touches[0].clientX},!1}},{key:"handleTouchEnd",value:function(t){e(t.target);var n=Math.floor(Date.now()),r=t.changedTouches[0].clientX;if(this.start_time+200r&&this.start_position.x-10r&&(this.setTransition("next"),this.props.mopidyActions.next()),this.end_time=n}},{key:"setTransition",value:function(e){var t=this;this.setState({current_track:null,transition_track:this.state.current_track,transition_direction:e});setTimeout(function(){t.setState({transition_track:null,transition_direction:null})},250)}},{key:"renderPlayButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control play",onClick:function(){return e.props.mopidyActions.play()}},a.default.createElement(m.default,{name:"play_circle_filled",type:"material"}));return"playing"==this.props.play_state&&(t=a.default.createElement("button",{className:"control play",onClick:function(){return e.props.mopidyActions.pause()}},a.default.createElement(m.default,{name:"pause_circle_filled",type:"material"}))),t}},{key:"renderConsumeButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control tooltip",onClick:function(){return e.props.mopidyActions.setConsume(!0)}},a.default.createElement(m.default,{name:"restaurant",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Consume"));return this.props.consume&&(t=a.default.createElement("button",{className:"control control--active tooltip",onClick:function(){return e.props.mopidyActions.setConsume(!1)}},a.default.createElement(m.default,{name:"restaurant",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Consume"))),t}},{key:"renderRandomButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control tooltip",onClick:function(){return e.props.mopidyActions.setRandom(!0)}},a.default.createElement(m.default,{name:"shuffle",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Shuffle"));return this.props.random&&(t=a.default.createElement("button",{className:"control control--active tooltip",onClick:function(){return e.props.mopidyActions.setRandom(!1)}},a.default.createElement(m.default,{name:"shuffle",type:"material"}),a.default.createElement("span",{className:"tooltip__content"},"Shuffle"))),t}},{key:"renderRepeatButton",value:function(){var e=this,t=a.default.createElement("button",{className:"control tooltip",onClick:function(){return e.props.mopidyActions.setRepeat(!0)}},a.default.createElement(m.default,{name:"repeat"}),a.default.createElement("span",{className:"tooltip__content"},"Repeat"));return this.props.repeat&&(t=a.default.createElement("button",{className:"control control--active tooltip",onClick:function(){return e.props.mopidyActions.setRepeat(!1)}},a.default.createElement(m.default,{name:"repeat"}),a.default.createElement("span",{className:"tooltip__content"},"Repeat"))),t}},{key:"render",value:function(){var e=this,t=!1;return this.state.current_track&&this.state.current_track.images&&(t=this.state.current_track.images),a.default.createElement("div",{className:this.state.expanded?"playback-controls--expanded playback-controls":"playback-controls"},this.props.next_track&&this.props.next_track.images?a.default.createElement(h.default,{className:"hide",size:"large",images:this.props.next_track.images}):null,this.state.transition_track&&this.state.transition_direction?a.default.createElement("div",{className:"current-track current-track__transition current-track__transition--"+this.state.transition_direction},a.default.createElement("div",{className:"text"},a.default.createElement("div",{className:"title"},this.state.transition_track.name),a.default.createElement("div",{className:"artist"},a.default.createElement(f.default,{artists:this.state.transition_track.artists,nolinks:!0})))):null,a.default.createElement("div",{className:this.state.transition_track&&this.state.transition_direction?"current-track current-track--transitioning":"current-track",onTouchStart:function(t){return e.handleTouchStart(t)},onTouchEnd:function(t){return e.handleTouchEnd(t)}},a.default.createElement(s.default,{className:"thumbnail-wrapper",to:"/kiosk-mode"},a.default.createElement(h.default,{size:"small",images:t})),a.default.createElement("div",{className:"text"},a.default.createElement("div",{className:"title"},this.state.current_track?this.state.current_track.name:a.default.createElement("span",null,"-")),a.default.createElement("div",{className:"artist"},this.state.current_track?a.default.createElement(f.default,{artists:this.state.current_track.artists,nolinks:this.props.slim_mode}):a.default.createElement(f.default,null)))),a.default.createElement("section",{className:"playback"},a.default.createElement("button",{className:"control previous",onClick:function(){return e.props.mopidyActions.previous()}},a.default.createElement(m.default,{name:"skip_previous",type:"material"})),this.renderPlayButton(),a.default.createElement("button",{className:"control stop",onClick:function(){return e.props.mopidyActions.stop()}},a.default.createElement(m.default,{name:"stop",type:"material"})),a.default.createElement("button",{className:"control next",onClick:function(){return e.props.mopidyActions.next()}},a.default.createElement(m.default,{name:"skip_next",type:"material"}))),a.default.createElement("section",{className:"progress"},a.default.createElement(l.default,null),a.default.createElement("span",{className:"current"},this.props.time_position?a.default.createElement(d.default,{type:"length",data:this.props.time_position}):"-"),a.default.createElement("span",{className:"total"},this.state.current_track?a.default.createElement(d.default,{type:"length",data:this.state.current_track.duration}):"-")),a.default.createElement("section",{className:"settings"},this.renderConsumeButton(),this.renderRandomButton(),this.renderRepeatButton(),a.default.createElement(p.default,{force_expanded:this.state.expanded})),a.default.createElement("section",{className:"volume"},a.default.createElement(c.default,{mute:this.props.mute,onMuteChange:function(t){return e.props.mopidyActions.setMute(t)}}),a.default.createElement(u.default,{scrollWheel:!0,volume:this.props.volume,mute:this.props.mute,onVolumeChange:function(t){return e.props.mopidyActions.setVolume(t)}})),a.default.createElement("section",{className:"triggers"},a.default.createElement("button",{className:"control expanded-controls",onClick:function(t){return e.setState({expanded:!e.state.expanded})}},this.state.expanded?a.default.createElement(m.default,{name:"expand_more",type:"material"}):a.default.createElement(m.default,{name:"expand_less",type:"material"})),a.default.createElement("button",{className:"control sidebar-toggle"+(this.props.sidebar_open?" open":""),onClick:function(t){return e.props.uiActions.toggleSidebar()}},a.default.createElement(m.default,{className:"open",name:"menu",type:"material"}))))}}]),n}();t.default=(0,i.connect)(function(e,t){return{snapcast_enabled:e.pusher.config.snapcast_enabled,http_streaming_enabled:e.core.http_streaming_enabled,http_streaming_volume:e.core.http_streaming_volume?e.core.http_streaming_volume:50,http_streaming_mute:!!e.core.http_streaming_mute&&e.core.http_streaming_mute,http_streaming_url:e.core.http_streaming_url?e.core.http_streaming_url:null,http_streaming_cachebuster:e.core.http_streaming_cachebuster,current_track:e.core.current_track&&void 0!==e.core.tracks[e.core.current_track.uri]?e.core.tracks[e.core.current_track.uri]:null,next_track:e.core.next_track_uri&&void 0!==e.core.tracks[e.core.next_track_uri]?e.core.tracks[e.core.next_track_uri]:null,radio_enabled:!(!e.ui.radio||!e.ui.radio.enabled),play_state:e.mopidy.play_state,time_position:e.mopidy.time_position,consume:e.mopidy.consume,repeat:e.mopidy.repeat,random:e.mopidy.random,volume:e.mopidy.volume,mute:e.mopidy.mute,sidebar_open:e.ui.sidebar_open,slim_mode:e.ui.slim_mode}},function(e){return{coreActions:(0,o.bindActionCreators)(v,e),uiActions:(0,o.bindActionCreators)(_,e),mopidyActions:(0,o.bindActionCreators)(b,e)}})(k)}).call(this,n(19))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:!this.state.expanded,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.props;e?(this.setState({expanded:e}),window.addEventListener("click",this.handleClick,!1),t.pusher_connected&&t.snapcast_enabled&&this.props.snapcastActions.getServer()):(this.setState({expanded:e}),window.removeEventListener("click",this.handleClick,!1))}},{key:"renderOutputs",value:function(){var e=this,t=!1,n=[];for(var r in this.props.snapcast_clients)if(this.props.snapcast_clients.hasOwnProperty(r)){var i=this.props.snapcast_clients[r];(i.connected||this.props.show_disconnected_clients)&&n.push(i)}var o=null;n.length>0&&(t=!0,o=a.default.createElement("div",null,n.map(function(t){return a.default.createElement("div",{className:"output-control__item outputs__item--snapcast",key:t.id},a.default.createElement("div",{className:"output-control__item__name"},t.name),a.default.createElement("div",{className:"output-control__item__controls"},a.default.createElement(l.default,{className:"output-control__item__mute",noTooltip:!0,mute:t.mute,onMuteChange:function(n){return e.props.snapcastActions.setClientMute(t.id,n)}}),a.default.createElement(s.default,{className:"output-control__item__volume",volume:t.volume,mute:t.mute,onVolumeChange:function(n){return e.props.snapcastActions.setClientVolume(t.id,n)}})))})));var p=null;this.props.http_streaming_enabled&&(t=!0,p=a.default.createElement("div",{className:"output-control__item outputs__item--icecast"},a.default.createElement("div",{className:"output-control__item__actions"},a.default.createElement("span",{className:"output-control__item__action",onClick:function(t){return e.props.coreActions.cachebustHttpStream()}},a.default.createElement(u.default,{name:"refresh"}))),a.default.createElement("div",{className:"output-control__item__name"},"Local browser"),a.default.createElement("div",{className:"output-control__item__details"},a.default.createElement(s.default,{className:"output-control__item__volume",volume:this.props.http_streaming_volume,mute:this.props.http_streaming_mute,onVolumeChange:function(t){return e.props.coreActions.set({http_streaming_volume:t})},onMuteChange:function(t){return e.props.coreActions.set({http_streaming_mute:t})}}))));var d=null;if(this.props.pusher_commands){var f=[];for(var r in this.props.pusher_commands)this.props.pusher_commands.hasOwnProperty(r)&&f.push(this.props.pusher_commands[r]);(f=c.sortItems(f,"sort_order")).length>0&&(t=!0,d=a.default.createElement("div",{className:"output-control__item output-control__item--commands commands"},f.map(function(t){return a.default.createElement("div",{key:t.id,className:"commands__item commands__item--interactive",onClick:function(n){return e.props.pusherActions.runCommand(t.id)}},a.default.createElement(u.default,{className:"commands__item__icon",name:t.icon}),a.default.createElement("span",{className:t.colour+"-background commands__item__background"}))})))}return t?a.default.createElement("div",{className:"output-control__items"},d,p,o):a.default.createElement("div",{className:"output-control__items output-control__items--no-results"},a.default.createElement("p",{className:"no-results"},"No outputs"))}},{key:"render",value:function(){var e=this;return this.state.expanded?a.default.createElement("span",{className:"output-control"},a.default.createElement("button",{className:"control speakers active",onClick:function(t){return e.setExpanded()}},a.default.createElement(u.default,{name:"speaker"})),this.renderOutputs()):this.props.http_streaming_enabled||this.props.snapcast_enabled||this.props.pusher_commands?a.default.createElement("span",{className:"output-control"},a.default.createElement("button",{className:"control speakers",onClick:function(t){return e.setExpanded()}},a.default.createElement(u.default,{name:"speaker"}))):a.default.createElement("span",{className:"output-control disabled"},a.default.createElement("button",{className:"control speakers"},a.default.createElement(u.default,{name:"speaker"})))}}]),n}();t.default=(0,i.connect)(function(e,t){return{http_streaming_enabled:e.core.http_streaming_enabled,http_streaming_volume:e.core.http_streaming_volume,http_streaming_mute:e.core.http_streaming_mute,pusher_connected:e.pusher.connected,snapcast_enabled:e.pusher.config?e.pusher.config.snapcast_enabled:null,show_disconnected_clients:void 0!==e.ui.snapcast_show_disconnected_clients&&e.ui.snapcast_show_disconnected_clients,snapcast_clients:e.snapcast.clients,pusher_commands:e.pusher.commands?e.pusher.commands:{}}},function(e){return{coreActions:(0,o.bindActionCreators)(p,e),snapcastActions:(0,o.bindActionCreators)(f,e),pusherActions:(0,o.bindActionCreators)(d,e)}})(y)}).call(this,n(19))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props,t={name:null,nice_name:"Unknown",is_track:!1};if(e.menu&&e.menu.context){switch(t.name=e.menu.context,t.nice_name=e.menu.context,e.menu.context){case"playlist":case"editable-playlist":t.nice_name="playlist";break;case"track":case"queue-track":case"playlist-track":case"editable-playlist-track":t.nice_name="track",t.is_track=!0}if(e.menu.items&&e.menu.items.length>0){var n=e.menu.items[0];t.item=n,t.items_count=e.menu.items.length,t.source=p.uriSource(n.uri),t.type=p.uriType(n.uri),t.in_library=this.inLibrary(n),t.is_loved=this.isLoved(n)}}return t}},{key:"inLibrary",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return!1;switch(p.uriType(e.uri)){case"artist":return this.props.spotify_library_artists&&this.props.spotify_library_artists.indexOf(e.uri)>-1;case"album":return this.props.spotify_library_albums&&this.props.spotify_library_albums.indexOf(e.uri)>-1;case"playlist":return this.props.spotify_library_playlists&&this.props.spotify_library_playlists.indexOf(e.uri)>-1;case"track":return this.props.spotify_library_tracks&&this.props.spotify_library_tracks.indexOf(e.uri)>-1}return!1}},{key:"isLoved",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return!1;if(void 0===this.props.tracks[e.uri])return!1;var t=this.props.tracks[e.uri];return void 0!==t.userloved&&"1"==t.userloved}},{key:"canBeInLibrary",value:function(){return!!this.props.spotify_authorized&&"spotify"==p.uriSource(this.props.menu.items[0].uri)}},{key:"toggleInLibrary",value:function(e,t){this.props.uiActions.hideContextMenu(),t?this.props.spotifyActions.following(this.props.menu.items[0].uri,"DELETE"):this.props.spotifyActions.following(this.props.menu.items[0].uri,"PUT")}},{key:"playQueueItem",value:function(e){this.props.uiActions.hideContextMenu();var t=this.props.menu.items;this.props.mopidyActions.changeTrack(t[0].tlid)}},{key:"removeFromQueue",value:function(e){this.props.uiActions.hideContextMenu();for(var t=this.props.menu.items,n=[],r=0;r1&&void 0!==arguments[1]&&arguments[1];this.props.uiActions.hideContextMenu(),this.props.mopidyActions.enqueuePlaylist(this.props.menu.uris[0],t)}},{key:"shufflePlayPlaylist",value:function(e){this.props.uiActions.hideContextMenu(),this.props.mopidyActions.playPlaylist(this.props.menu.uris[0],!0)}},{key:"playArtistTopTracks",value:function(e){this.props.uiActions.hideContextMenu(),this.props.spotifyActions.playArtistTopTracks(this.props.menu.uris[0])}},{key:"addToQueue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.props.uiActions.hideContextMenu(),this.props.mopidyActions.enqueueURIs(this.props.menu.uris,this.props.menu.tracklist_uri,t)}},{key:"addTracksToPlaylist",value:function(e,t){this.props.uiActions.hideContextMenu(),this.props.coreActions.addTracksToPlaylist(t,this.props.menu.uris)}},{key:"toggleLoved",value:function(e,t){this.props.uiActions.hideContextMenu(),t?this.props.lastfmActions.unloveTrack(this.props.menu.items[0].uri):this.props.lastfmActions.loveTrack(this.props.menu.items[0].uri)}},{key:"unloveTrack",value:function(e){this.props.uiActions.hideContextMenu(),this.props.lastfmActions.unloveTrack(this.props.menu.items[0])}},{key:"removeFromPlaylist",value:function(e){this.props.uiActions.hideContextMenu(),this.props.coreActions.removeTracksFromPlaylist(this.props.menu.tracklist_uri,this.props.menu.indexes)}},{key:"deletePlaylist",value:function(e){this.props.uiActions.hideContextMenu(),this.props.coreActions.deletePlaylist(this.props.menu.uris[0])}},{key:"startRadio",value:function(e){this.props.uiActions.hideContextMenu(),this.props.pusherActions.startRadio(this.props.menu.uris)}},{key:"goToRecommendations",value:function(e){this.props.uiActions.hideContextMenu();var t=p.arrayOf("uri",this.props.menu.items).join(",");this.props.history.push("/discover/recommendations/"+t)}},{key:"goToArtist",value:function(e){if(!this.props.menu.items||this.props.menu.items.length<=0||!this.props.menu.items[0].artists_uris||this.props.menu.items[0].artists_uris.length<=0)return null;this.props.uiActions.hideContextMenu(),this.props.history.push(p.buildLink(this.props.menu.items[0].artists_uris[0]))}},{key:"goToUser",value:function(e){if(!this.props.menu.items||this.props.menu.items.length<=0||!this.props.menu.items[0].user_uri)return null;this.props.uiActions.hideContextMenu(),this.props.history.push(p.buildLink(this.props.menu.items[0].user_uri))}},{key:"goToTrack",value:function(e){if(!this.props.menu.items||this.props.menu.items.length<=0)return null;this.props.uiActions.hideContextMenu(),this.props.history.push(p.buildLink(this.props.menu.items[0].uri))}},{key:"copyURIs",value:function(t){var n=e("");e("body").append(n),n.val(this.props.menu.uris.join(",")).select(),document.execCommand("copy"),n.remove(),this.props.uiActions.createNotification({content:"Copied "+this.props.menu.uris.length+" URIs"}),this.props.uiActions.hideContextMenu()}},{key:"renderTitle",value:function(){var e=this,t=this.getContext();if(t.items_count>1)return a.default.createElement("div",{className:"context-menu__title"},a.default.createElement("div",{className:"context-menu__title__text"},t.items_count," ",t.nice_name,t.items_count>1?"s":null," selected ",a.default.createElement("span",{className:"context-menu__title__deselect",onClick:function(t){e.props.uiActions.setSelectedTracks([]),e.props.uiActions.hideContextMenu()}},a.default.createElement(u.default,{name:"close"}))));if(1==t.items_count&&"queue-track"==t.name&&void 0!==t.item&&void 0!==this.props.queue_metadata["tlid_"+t.item.tlid]){var n=this.props.queue_metadata["tlid_"+t.item.tlid];if(n.added_from&&n.added_by){var r=n.added_from?p.uriType(n.added_from):null;switch(r){case"discover":var i=a.default.createElement(c.default,{type:"recommendations",uri:p.getFromUri("seeds",n.added_from)},"discover");break;case"browse":i=a.default.createElement(c.default,{type:"browse",uri:n.added_from.replace("iris:browse:","")},"browse");break;case"search":i=a.default.createElement(c.default,{type:"search",uri:n.added_from.replace("iris:","")},"search");break;default:i=a.default.createElement(c.default,{type:r,uri:n.added_from},r)}return a.default.createElement("div",{className:"context-menu__title"},a.default.createElement("div",{className:"context-menu__title__text"},n.added_by," added from ",i))}}return"custom"==t.name?this.props.menu.title?a.default.createElement("div",{className:"context-menu__title"},a.default.createElement("div",{className:"context-menu__title__text"},this.props.menu.title)):null:void 0}},{key:"setSubmenu",value:function(e){this.state.submenu!==e&&"add-to-playlist"==e&&(this.props.spotify_library_playlists_loaded_all||this.props.spotifyActions.getLibraryPlaylists(),this.props.mopidy_library_playlists_loaded_all||this.props.mopidyActions.getLibraryPlaylists()),this.setState({submenu:e})}},{key:"renderSubmenu",value:function(){var e=this,t=null,n=null;switch(this.state.submenu){case"add-to-playlist":var r=[];for(var i in this.props.playlists)this.props.playlists[i].can_edit&&r.push(this.props.playlists[i]);r=p.sortItems(r,"name"),this.props.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR&&"running"==this.props.processes.SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR.status&&(n=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("div",{className:"context-menu__item mini-loader loading"},a.default.createElement("div",{className:"loader"})))),t=a.default.createElement("span",{className:"context-menu__item"},a.default.createElement("span",{className:"context-menu__item mid_grey-text"},"No writable playlists")),r.length>0&&(t=r.map(function(t){return a.default.createElement("span",{className:"context-menu__item",key:t.uri},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.addTracksToPlaylist(n,t.uri)}},a.default.createElement("span",{className:"context-menu__item__label"},t.name)))}))}return a.default.createElement("div",{className:"context-menu__section context-menu__section--submenu"},a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link context-menu__item__link--close-submenu",onClick:function(t){return e.setState({submenu:null})}},a.default.createElement("span",{className:"context-menu__item__label"},a.default.createElement(u.default,{name:"arrow_back"})," Back"))),t,n)}},{key:"renderItems",value:function(){var e=this,t=this.getContext(),n=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playURIs(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play"))),r=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playPlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play"))),i=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.shufflePlayPlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Shuffle play"))),o=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playQueueItem(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play"))),s=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.addToQueue(t,!0)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play next"))),c=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.playArtistTopTracks(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play top tracks"))),d=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.addToQueue(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Add to queue"))),f=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.enqueuePlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Add to queue"))),h=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.enqueuePlaylist(t,!0)}},a.default.createElement("span",{className:"context-menu__item__label"},"Play next"))),m=a.default.createElement("div",{className:"context-menu__item context-menu__item--has-submenu"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.setSubmenu("add-to-playlist")}},a.default.createElement("span",{className:"context-menu__item__label"},"Add to playlist"),a.default.createElement(u.default,{className:"submenu-icon",name:"arrow_forward"}))),y=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.toggleInLibrary(n,t.in_library)}},a.default.createElement("span",{className:"context-menu__item__label"},t.in_library?"Remove from library":"Add to library")));if(this.props.spotify_authorized)if(p.isLoading(this.props.load_queue,["spotify_me/tracks/contains","spotify_me/playlists/contains","spotify_me/albums/contains","spotify_me/artists/contains"]))y=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link"},a.default.createElement("span",{className:"context-menu__item__label mid_grey-text"},"Add to library")));else y=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.toggleInLibrary(n,t.in_library)}},a.default.createElement("span",{className:"context-menu__item__label"},t.in_library?"Remove from library":"Add to library")));else var y=null;if(this.props.lastfm_authorized)if(p.isLoading(this.props.load_queue,["lastfm_track.getInfo"]))_=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link"},a.default.createElement("span",{className:"context-menu__item__label mid_grey-text"},"Love track")));else _=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(n){return e.toggleLoved(n,t.is_loved)}},a.default.createElement("span",{className:"context-menu__item__label"},t.is_loved?"Unlove":"Love"," track")));else var _=null;var v=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToArtist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Go to artist"))),b=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToUser(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Go to user"))),g=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToTrack(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Track info"))),E=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.goToRecommendations(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Discover similar"))),k=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.startRadio(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Start radio"))),O=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.removeFromQueue(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Remove"))),w=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.removeFromPlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Remove"))),S=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement(l.default,{className:"context-menu__item__link",to:"/playlist/"+t.item.uri+"/edit"},a.default.createElement("span",{className:"context-menu__item__label"},"Edit"))),T=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.deletePlaylist(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Delete"))),A=a.default.createElement("div",{className:"context-menu__item"},a.default.createElement("a",{className:"context-menu__item__link",onClick:function(t){return e.copyURIs(t)}},a.default.createElement("span",{className:"context-menu__item__label"},"Copy URI",t.items_count>1?"s":"")));switch(t.name){case"album":return a.default.createElement("div",null,n,s,d,this.canBeInLibrary()?a.default.createElement("div",{className:"context-menu__divider"}):null,this.canBeInLibrary()?y:null,a.default.createElement("div",{className:"context-menu__divider"}),v,A);case"artist":return a.default.createElement("div",null,"spotify"==t.source?c:null,"spotify"==t.source?k:null,this.canBeInLibrary()?a.default.createElement("div",{className:"context-menu__divider"}):null,this.canBeInLibrary()?y:null,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source?E:null,A);case"playlist":return a.default.createElement("div",null,r,h,i,f,this.canBeInLibrary()?a.default.createElement("div",{className:"context-menu__divider"}):null,this.canBeInLibrary()?y:null,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source?b:null,A,1==t.items_count&&t.item.can_edit?a.default.createElement("div",null,a.default.createElement("div",{className:"context-menu__divider"}),S,T):null);case"queue-track":return a.default.createElement("div",null,1==t.items_count?o:null,a.default.createElement("div",{className:"context-menu__divider"}),m,this.canBeInLibrary()?y:null,_,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source&&t.items_count<=5?E:null,1==t.items_count?g:null,A,a.default.createElement("div",{className:"context-menu__divider"}),O);case"editable-playlist-track":return a.default.createElement("div",null,n,s,d,"spotify"==t.source&&1==t.items_count?k:null,a.default.createElement("div",{className:"context-menu__divider"}),m,this.canBeInLibrary()?y:null,_,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source&&t.items_count<=5?E:null,1==t.items_count?g:null,A,a.default.createElement("div",{className:"context-menu__divider"}),w);default:return a.default.createElement("div",null,n,s,d,"spotify"==t.source&&1==t.items_count?k:null,a.default.createElement("div",{className:"context-menu__divider"}),m,this.canBeInLibrary()?y:null,_,a.default.createElement("div",{className:"context-menu__divider"}),"spotify"==t.source&&t.items_count<=5?E:null,1==t.items_count?g:null,a.default.createElement("div",{className:"context-menu__divider"}),A)}}},{key:"render",value:function(){var e=this;if(!this.props.menu)return null;var t={left:this.props.menu.position_x,top:this.props.menu.position_y},n="context-menu "+this.props.menu.context;return this.state.submenu&&(n+=" context-menu--submenu-expanded"),this.props.menu.closing&&(n+=" context-menu--closing"),this.props.menu.position_x>window.innerWidth-174&&(t.left="auto",t.right=10),this.props.menu.position_y>window.innerHeight-200&&(t.top="auto",t.bottom=10),a.default.createElement("div",{id:"context-menu",className:n,style:t},a.default.createElement("div",{className:"context-menu__section context-menu__section--items"},this.renderTitle(),"custom"==this.props.menu.context?this.props.menu.options:this.renderItems()),this.renderSubmenu(),a.default.createElement("div",{className:"context-menu__background",onClick:function(t){return e.props.uiActions.hideContextMenu()}}))}}]),n}();t.default=(0,i.connect)(function(e,t){return{menu:e.ui.context_menu,load_queue:e.ui.load_queue,processes:e.ui.processes,current_track:e.core.current_track,current_tracklist:e.core.current_tracklist,queue_metadata:e.core.queue_metadata,spotify_library_playlists:e.spotify.library_playlists,spotify_library_playlists_loaded_all:e.spotify.library_playlists_loaded_all,mopidy_library_playlists:e.mopidy.library_playlists,mopidy_library_playlists_loaded_all:e.mopidy.library_playlists_loaded_all,spotify_library_artists:e.spotify.library_artists,mopidy_library_artists:e.mopidy.library_artists,spotify_library_albums:e.spotify.library_albums,mopidy_library_albums:e.mopidy.library_albums,spotify_library_tracks:e.spotify.library_tracks,playlists:e.core.playlists,tracks:e.core.tracks,spotify_authorized:e.spotify.authorization,lastfm_authorized:e.lastfm.authorization}},function(e){return{coreActions:(0,o.bindActionCreators)(d,e),uiActions:(0,o.bindActionCreators)(f,e),pusherActions:(0,o.bindActionCreators)(h,e),spotifyActions:(0,o.bindActionCreators)(_,e),lastfmActions:(0,o.bindActionCreators)(y,e),mopidyActions:(0,o.bindActionCreators)(m,e)}})((0,s.withRouter)(g))}).call(this,n(19))},function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;nn+5||t.pageXr+5||t.pageYa&&this.start_position.x-10i&&this.start_position.y-100&&r-this.end_time<=300)return this.props.handleDoubleTap(t),t.preventDefault(),!1;this.props.handleTap(t)}this.end_time=r}},{key:"render",value:function(){var e=this;if(!this.props.track)return null;var t=this.props.track,n="list__item list__item--track mouse-draggable mouse-selectable mouse-contextable",r=[];if(t.artists&&r.push(a.default.createElement("li",{className:"details__item details__item--artists",key:"artists"},t.artists?a.default.createElement(o.default,{artists:t.artists}):"-")),t.album){if(t.album.uri)var d=a.default.createElement(l.default,{type:"album",uri:t.album.uri},t.album.name);else d=a.default.createElement("span",null,t.album.name);r.push(a.default.createElement("li",{className:"details__item details__item--album",key:"album"},d))}if("history"==this.props.track_context)var f=a.default.createElement("div",{className:"list__item__column__item list__item__column__item--played_at"},t.played_at?a.default.createElement("span",null,a.default.createElement(s.default,{type:"ago",data:t.played_at})," ago"):"-");else if("queue"==this.props.track_context)if(t.added_from&&t.added_by){var h=t.added_from?p.uriType(t.added_from):null;switch(h){case"discover":var m=a.default.createElement(l.default,{type:"recommendations",uri:p.getFromUri("seeds",t.added_from)},"discover");break;case"browse":m=a.default.createElement(l.default,{type:"browse",uri:t.added_from.replace("iris:browse:","")},"browse");break;case"search":m=a.default.createElement(l.default,{type:"search",uri:t.added_from.replace("iris:","")},"search");break;default:m=a.default.createElement(l.default,{type:h,uri:t.added_from},h)}f=a.default.createElement("div",{className:"list__item__column__item list__item__column__item--added"},a.default.createElement("span",{className:"by"},t.added_by," "),a.default.createElement("span",{className:"from"},"from ",m))}else if(t.added_by)f=a.default.createElement("div",{className:"list__item__column__item list__item__column__item--added"},a.default.createElement("span",{className:"by"},t.added_by));var y=null;return p.isTouchDevice()&&this.props.can_sort&&(n+=" list__item--has-drag-zone",y=a.default.createElement("span",{className:"list__item__column__item list__item__column__item--drag-zone drag-zone touch-draggable mouse-draggable",key:"drag-zone"},a.default.createElement(i.default,{name:"drag_indicator"}))),this.props.selected&&(n+=" list__item--selected"),this.props.can_sort&&(n+=" list__item--can-sort"),void 0!==t.type&&(n+=" list__item--"+t.type),t.playing&&(n+=" list__item--playing"),this.state.hover&&(n+=" list__item--hover"),f&&(n+=" list__item--has-middle-column"),r.length>0&&(n+=" list__item--has-details"),a.default.createElement(c.default,null,a.default.createElement("div",{className:n,onMouseEnter:function(t){return e.handleMouseEnter(t)},onMouseLeave:function(t){return e.handleMouseLeave(t)},onMouseDown:function(t){return e.handleMouseDown(t)},onMouseUp:function(t){return e.handleMouseUp(t)},onMouseMove:function(t){return e.handleMouseMove(t)},onDoubleClick:function(t){return e.handleDoubleClick(t)},onContextMenu:function(t){return e.props.handleContextMenu(t)},onTouchStart:function(t){return e.handleTouchStart(t)},onTouchEnd:function(t){return e.handleTouchEnd(t)}},a.default.createElement("div",{className:"list__item__column list__item__column--right"},y,a.default.createElement("span",{className:"list__item__column__item list__item__column__item--duration"},t.duration?a.default.createElement(s.default,{type:"length",data:t.duration}):"-"),this.props.show_source_icon?a.default.createElement("span",{className:"list__item__column__item list__item__column__item--source"},a.default.createElement(i.default,{type:"fontawesome",name:p.sourceIcon(t.uri),fixedWidth:!0})):null,a.default.createElement(u.default,{className:"list__item__column__item--context-menu-trigger subtle",onTrigger:function(t){return e.props.handleContextMenu(t)}})),a.default.createElement("div",{className:"list__item__column list__item__column--name"},a.default.createElement("div",{className:"list__item__column__item--name"},t.name?t.name:a.default.createElement("span",{className:"mid_grey-text"},t.uri),t.explicit?a.default.createElement("span",{className:"flag dark"},"EXPLICIT"):null,t.playing?a.default.createElement(i.default,{className:"js--"+this.props.play_state,name:"playing",type:"css"}):null),r?a.default.createElement("ul",{className:"list__item__column__item--details"},r):null),f?a.default.createElement("div",{className:"list__item__column list__item__column--middle"},f):null))}}]),n}();t.default=f}).call(this,n(19))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;nthis.props.dragger.start_x+10||e.clientXthis.props.dragger.start_y+10||e.clientY0){var r="loading ";return r+=t>20?"high":t>5?"medium":"low",a.default.createElement("div",{className:r})}return null}},{key:"render",value:function(){return a.default.createElement("div",{className:"notifications"},this.renderLoader(),this.renderNotifications(),this.renderProcesses())}}]),t}();t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){window.addEventListener("resize",t,!1);var t=function(t){Math.max(document.documentElement.clientWidth,window.innerWidth||0)<=800?e.slim_mode||e.uiActions.setSlimMode(!0):e.slim_mode&&e.uiActions.setSlimMode(!1)};return null}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;n-1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)){var t=!1;switch(e.key.toLowerCase()){case" ":case"p":"playing"==this.props.play_state?(this.props.mopidyActions.pause(),this.props.uiActions.createNotification({content:"pause",type:"shortcut"})):(this.props.mopidyActions.play(),this.props.uiActions.createNotification({content:"play_arrow",type:"shortcut"})),t=!0;break;case"escape":this.props.dragging?(this.props.uiActions.dragEnd(),t=!0):this.props.modal&&(window.history.back(),t=!0);break;case"s":this.props.history.push("/search"),t=!0;break;case"q":this.props.history.push("/queue"),t=!0;break;case"k":this.props.history.push("/kiosk-mode"),t=!0;break;case",":window.history.back(),t=!0;break;case".":window.history.forward(),t=!0;break;case"=":"false"!==(n=this.props.volume)&&((n+=5)>100&&(n=100),this.props.mopidyActions.setVolume(n),this.props.mute&&this.props.mopidyActions.setMute(!1),this.props.uiActions.createNotification({content:"volume_up",type:"shortcut"})),t=!0;break;case"-":var n;"false"!==(n=this.props.volume)&&((n-=5)<0&&(n=0),this.props.mopidyActions.setVolume(n),this.props.mute&&this.props.mopidyActions.setMute(!1)),this.props.uiActions.createNotification({content:"volume_down",type:"shortcut"}),t=!0;break;case"0":this.props.mute?(this.props.mopidyActions.setMute(!1),this.props.uiActions.createNotification({content:"volume_up",type:"shortcut"})):(this.props.mopidyActions.setMute(!0),this.props.uiActions.createNotification({content:"volume_off",type:"shortcut"})),t=!0;break;case";":var r=this.props.play_time_position-3e4;r<0&&(r=0),this.props.mopidyActions.setTimePosition(r),this.props.uiActions.createNotification({content:"fast_rewind",type:"shortcut"}),t=!0;break;case"'":this.props.mopidyActions.setTimePosition(this.props.play_time_position+3e4),this.props.uiActions.createNotification({content:"fast_forward",type:"shortcut"}),t=!0;break;case"[":this.props.mopidyActions.previous(),this.props.uiActions.createNotification({content:"skip_previous",type:"shortcut"}),t=!0;break;case"]":this.props.mopidyActions.next(),this.props.uiActions.createNotification({content:"skip_next",type:"shortcut"}),t=!0}return t?(e.preventDefault(),!1):void 0}}},{key:"render",value:function(){return null}}]),t}();t.default=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,a=function(){function e(e,t){for(var n=0;n0?o.default.createElement("div",{className:"debug-info-item"},t):o.default.createElement("div",{className:"debug-info-item mid_grey-text"},"Nothing loading")}},{key:"render",value:function(){var e=this.localStorageSize();return o.default.createElement("div",{className:"debug-info"},o.default.createElement("div",{className:"debug-info-section"},o.default.createElement("h5",null,"Indexes"),o.default.createElement("div",{className:"debug-info-item"},"Albums: ",this.props.core.albums?Object.keys(this.props.core.albums).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Artists: ",this.props.core.artists?Object.keys(this.props.core.artists).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Playlists: ",this.props.core.playlists?Object.keys(this.props.core.playlists).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Tracks: ",this.props.core.tracks?Object.keys(this.props.core.tracks).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Users: ",this.props.core.users?Object.keys(this.props.core.users).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Notifications: ",this.props.ui.notifications?Object.keys(this.props.ui.notifications).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Processes: ",this.props.ui.processes?Object.keys(this.props.ui.processes).length:"0"),o.default.createElement("div",{className:"debug-info-item"},"Enqueue batches: ",this.props.mopidy.enqueue_uris_batches?this.props.mopidy.enqueue_uris_batches.length:"0")),o.default.createElement("div",{className:"debug-info-section"},o.default.createElement("h5",null,"Config"),o.default.createElement("div",{className:"debug-info-item"},"Slim mode: ",this.props.ui.slim_mode?"on":"off"),o.default.createElement("div",{className:"debug-info-item"},"Test mode: ",this.props.ui.test_mode?"on":"off"),o.default.createElement("div",{className:"debug-info-item"},"Touch: ",u.isTouchDevice()?"on":"off"),o.default.createElement("div",{className:"debug-info-item"},"LocalStorage usage: ",e.used,"kb (~",e.percent,"%)"),o.default.createElement("div",{className:"debug-info-item"},"Selected tracks: ",this.props.ui.selected_tracks.length,o.default.createElement("br",null),this.props.ui.selected_tracks.map(function(e,t){return o.default.createElement("div",{key:e+"_"+t},e)}))),o.default.createElement("div",{className:"debug-info-section"},o.default.createElement("h5",null,"Load queue"),this.renderLoadQueue()))}}]),t}();t.default=(0,s.connect)(function(e,t){return{core:e.core,ui:e.ui,mopidy:e.mopidy}},function(e){return{uiActions:(0,l.bindActionCreators)(c,e)}})(d)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Album=void 0;var r=function(){function e(e,t){for(var n=0;n0&&this.props.lastfmActions.getAlbum(e.album.uri,e.album.artists[0].name,e.album.name),!this.props.album&&e.album&&this.setWindowTitle(e.album)}},{key:"setWindowTitle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.album;if(e){var t="";if(e.artists_uris&&this.props.artists)for(var n=0;n-1}},{key:"render",value:function(){var e=this;if(!this.props.album)return v.isLoading(this.props.load_queue,["spotify_albums/"+v.getFromUri("albumid",this.props.uri)])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(s.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find album with URI "',encodeURIComponent(this.props.uri),'"'));var t=v.collate(this.props.album,{tracks:this.props.tracks,artists:this.props.artists});if(!t.tracks_uris||t.tracks_uris&&!t.tracks||t.tracks_uris.length!==t.tracks.length)var n=!0;else n=!1;return a.default.createElement("div",{className:"view album-view content-wrapper preserve-3d"},"dark"==this.props.theme&&a.default.createElement(c.default,{image:t.images?t.images.huge:null,blur:!0}),a.default.createElement("div",{className:"thumbnail-wrapper"},a.default.createElement(u.default,{size:"large",canZoom:!0,images:t.images})),a.default.createElement("div",{className:"title"},a.default.createElement("h1",null,t.name),a.default.createElement("ul",{className:"details"},this.props.slim_mode?null:a.default.createElement("li",{className:"source"},a.default.createElement(_.default,{type:"fontawesome",name:v.sourceIcon(t.uri)})),t.artists&&t.artists.length>0?a.default.createElement("li",null,a.default.createElement(p.default,{artists:t.artists})):null,t.release_date?a.default.createElement("li",null,a.default.createElement(h.default,{type:"date",data:t.release_date})):null,t.tracks?a.default.createElement("li",null,t.tracks.length," tracks"):null,!this.props.slim_mode&&t.tracks?a.default.createElement("li",null,a.default.createElement(h.default,{type:"total-time",data:t.tracks})):null,!this.props.slim_mode&&t.play_count?a.default.createElement("li",null,a.default.createElement(f.default,{value:t.play_count})," plays"):null,!this.props.slim_mode&&t.listeners?a.default.createElement("li",null,a.default.createElement(f.default,{value:t.listeners})," listeners"):null)),a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),"spotify"==v.uriSource(this.props.uri)?a.default.createElement(d.default,{className:"secondary",uri:this.props.uri,addText:"Add to library",removeText:"Remove from library",is_following:this.inLibrary()}):null,a.default.createElement(y.default,{onTrigger:function(t){return e.handleContextMenu(t)}})),a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(l.default,{className:"album-track-list",tracks:t.tracks,uri:t.uri}),a.default.createElement(m.default,{loadKey:t.tracks_more,showLoader:n,loadMore:function(){return e.loadMore()}})),t.wiki?a.default.createElement("section",{className:"wiki"},a.default.createElement("h4",{className:"wiki__title"},"About"),a.default.createElement("div",{className:"wiki__text"},a.default.createElement("p",null,t.wiki),a.default.createElement("br",null),a.default.createElement("div",{className:"mid_grey-text"},"Published: ",t.wiki_publish_date))):null)}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n,slim_mode:e.ui.slim_mode,theme:e.ui.theme,load_queue:e.ui.load_queue,tracks:e.core.tracks,artists:e.core.artists,album:!(!e.core.albums||void 0===e.core.albums[n])&&e.core.albums[n],albums:e.core.albums,spotify_library_albums:e.spotify.library_albums,local_library_albums:e.mopidy.library_albums,spotify_authorized:e.spotify.authorization,mopidy_connected:e.mopidy.connected}},function(e){return{coreActions:(0,o.bindActionCreators)(b,e),uiActions:(0,o.bindActionCreators)(g,e),mopidyActions:(0,o.bindActionCreators)(E,e),spotifyActions:(0,o.bindActionCreators)(k,e),lastfmActions:(0,o.bindActionCreators)(O,e)}})(T)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.artist;e?this.props.uiActions.setWindowTitle(e.name+" (artist)"):this.props.uiActions.setWindowTitle("Artist")}},{key:"handleContextMenu",value:function(e){var t={e:e,context:"artist",items:[this.props.artist],uris:[this.props.uri]};this.props.uiActions.showContextMenu(t)}},{key:"loadMore",value:function(){this.props.spotifyActions.getMore(this.props.artist.albums_more,{parent_type:"artist",parent_key:this.props.uri,records_type:"album"})}},{key:"inLibrary",value:function(){var e=E.uriSource(this.props.uri)+"_library_artists";return this.props[e]&&this.props[e].indexOf(this.props.uri)>-1}},{key:"setSort",value:function(e){var t=!1;null!==e&&this.props.sort==e&&(t=!this.props.sort_reverse);var n={artist_albums_sort_reverse:t,artist_albums_sort:e};this.props.uiActions.set(n)}},{key:"setFilter",value:function(e){this.props.uiActions.set({artist_albums_filter:e})}},{key:"renderOverview",value:function(){var e=this,t=E.collate(this.props.artist,{artists:this.props.artists,albums:this.props.albums,tracks:this.props.tracks});this.props.sort&&t.albums&&(t.albums=E.sortItems(t.albums,this.props.sort,this.props.sort_reverse)),this.props.filter&&t.albums&&(t.albums=E.applyFilter("type",this.props.filter,t.albums));if(!t.tracks_uris||t.tracks_uris&&!t.tracks||t.tracks_uris.length!==t.tracks.length)var n=!0;else n=!1;return a.default.createElement("div",{className:"body overview"},a.default.createElement("div",{className:"top-tracks col col--w"+(t.related_artists&&t.related_artists.length>0?"70":"100")},t.tracks?a.default.createElement("h4",null,"Top tracks"):null,a.default.createElement("div",{className:"list-wrapper"},a.default.createElement(p.default,{className:"artist-track-list",uri:t.uri,tracks:t.tracks?t.tracks.splice(0,10):[]}),a.default.createElement(c.default,{showLoader:n}))),a.default.createElement("div",{className:"col col--w5"}),t.related_artists&&t.related_artists.length>0?a.default.createElement("div",{className:"col col--w25 related-artists"},a.default.createElement("h4",null,"Related artists"),a.default.createElement("div",{className:"list-wrapper"},a.default.createElement(y.default,{artists:t.related_artists.slice(0,6)})),a.default.createElement(u.default,{to:"/artist/"+encodeURIComponent(this.props.uri)+"/related-artists",scrollTo:"#sub-views-menu",className:"button button--default"},"All related artists")):null,a.default.createElement("div",{className:"cf"}),t.albums?a.default.createElement("div",{className:"albums"},a.default.createElement("h4",null,"Albums",a.default.createElement(b.default,{icon:"sort",name:"Sort",value:this.props.sort,options:[{value:null,label:"Default"},{value:"name",label:"Name"},{value:"release_date",label:"Date"},{value:"tracks_uris.length",label:"Tracks"}],selected_icon:this.props.sort?this.props.sort_reverse?"keyboard_arrow_up":"keyboard_arrow_down":null,handleChange:function(t){e.setSort(t),e.props.uiActions.hideContextMenu()}}),a.default.createElement(b.default,{icon:"filter_list",name:"Filter",value:this.props.filter,options:[{value:null,label:"All"},{value:"album",label:"Albums"},{value:"single",label:"Singles"},{value:"compilation",label:"Compilations"}],handleChange:function(t){e.setFilter(t),e.props.uiActions.hideContextMenu()}}),this.props.sort||this.props.filter?a.default.createElement("a",{className:"button button--discrete button--small",onClick:function(t){e.setFilter(null),e.setSort(null)}},a.default.createElement(g.default,{name:"clear"}),"Reset"):null),a.default.createElement("section",{className:"grid-wrapper no-top-padding"},a.default.createElement(d.default,{albums:t.albums}),a.default.createElement(c.default,{loadKey:t.albums_more,showLoader:t.albums_more,loadMore:function(){return e.loadMore()}}))):null)}},{key:"renderTracks",value:function(){var e=E.collate(this.props.artist,{artists:this.props.artists,tracks:this.props.tracks});if(!e.tracks_uris||e.tracks_uris&&!e.tracks||e.tracks_uris.length!==e.tracks.length)var t=!0;else t=!1;return a.default.createElement("div",{className:"body related-artists"},a.default.createElement("section",{className:"list-wrapper no-top-padding"},a.default.createElement(p.default,{className:"artist-track-list",uri:e.uri,tracks:e.tracks}),a.default.createElement(c.default,{showLoader:t})))}},{key:"renderRelatedArtists",value:function(){var e=E.collate(this.props.artist,{artists:this.props.artists});return a.default.createElement("div",{className:"body related-artists"},a.default.createElement("section",{className:"grid-wrapper no-top-padding"},a.default.createElement(m.default,{artists:e.related_artists})))}},{key:"renderAbout",value:function(){var e=E.collate(this.props.artist,{artists:this.props.artists}),t=[];if(e.images&&e.images.length>0){var n=!0,r=!1,i=void 0;try{for(var o,s=e.images[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value;l.huge&&t.push(a.default.createElement("div",{className:"tile thumbnail-wrapper",key:l.huge},a.default.createElement(f.default,{size:"huge",canZoom:!0,images:l})))}}catch(e){r=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw i}}}return a.default.createElement("div",{className:"body about"},a.default.createElement("div",{className:"col col--w40 tiles artist-stats"},t,e.followers?a.default.createElement("div",{className:"tile"},a.default.createElement("span",{className:"content"},a.default.createElement(g.default,{type:"fontawesome",name:"users"}),e.followers.toLocaleString()," followers")):null,e.popularity?a.default.createElement("div",{className:"tile"},a.default.createElement("span",{className:"content"},a.default.createElement(g.default,{type:"fontawesome",name:"fire"}),e.popularity,"% popularity")):null,e.listeners?a.default.createElement("div",{className:"tile"},a.default.createElement("span",{className:"content"},a.default.createElement(g.default,{type:"fontawesome",name:"headphones"}),e.listeners.toLocaleString()," listeners")):null),a.default.createElement("div",{className:"col col--w60 biography"},a.default.createElement("section",null,e.biography?a.default.createElement("div",{className:"biography-text"},a.default.createElement("p",null,e.biography),a.default.createElement("br",null),a.default.createElement("div",{className:"mid_grey-text"},"Published: ",e.biography_publish_date),a.default.createElement("div",{className:"mid_grey-text"},"Origin: ",a.default.createElement("a",{href:e.biography_link,target:"_blank"},e.biography_link))):null)))}},{key:"render",value:function(){var e=this,t=E.uriSource(this.props.uri);if(!this.props.artist)return E.isLoading(this.props.load_queue,["spotify_artists/"+E.getFromUri("artistid",this.props.uri),"lastfm_method=artist.getInfo"])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(l.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find artist with URI "',encodeURIComponent(this.props.uri),'"'));if(this.props.artist&&this.props.artist.images&&this.props.artist.images.length>0)var n=this.props.artist.images[0].huge;else n=null;var r="spotify"==t;if(this.props.artist.tracks_uris&&this.props.artist.tracks_uris.length>0)var i=this.props.artist.tracks_uris;else i=this.props.artist.albums_uris;return a.default.createElement("div",{className:"view artist-view preserve-3d"},a.default.createElement("div",{className:"intro preserve-3d"},a.default.createElement(h.default,{image:n,fixedHeight:!0}),a.default.createElement("div",{className:"liner"},a.default.createElement("h1",null,this.props.artist?this.props.artist.name:null),a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.props.mopidyActions.playURIs(i,e.props.artist.uri)}},"Play"),r?a.default.createElement(_.default,{uri:this.props.uri,removeText:"Remove from library",addText:"Add to library",is_following:this.inLibrary()}):null,a.default.createElement(v.default,{className:"white",onTrigger:function(t){return e.handleContextMenu(t)}})),a.default.createElement("div",{className:"sub-views",id:"sub-views-menu"},a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri),scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"Overview")),this.props.artist.tracks_uris&&this.props.artist.tracks_uris.length>10?a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri)+"/tracks",scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"Tracks")):null,this.props.artist.related_artists_uris?a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri)+"/related-artists",scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"Related artists")):null,a.default.createElement(u.default,{exact:!0,history:this.props.history,activeClassName:"sub-views__option--active",className:"sub-views__option",to:"/artist/"+encodeURIComponent(this.props.uri)+"/about",scrollTo:"#sub-views-menu"},a.default.createElement("h4",null,"About"))))),a.default.createElement("div",{className:"content-wrapper"},a.default.createElement(s.Switch,null,a.default.createElement(s.Route,{exact:!0,path:"/artist/:id/related-artists"},this.renderRelatedArtists()),a.default.createElement(s.Route,{exact:!0,path:"/artist/:id/tracks"},this.renderTracks()),a.default.createElement(s.Route,{exact:!0,path:"/artist/:id/about"},this.renderAbout()),a.default.createElement(s.Route,{exact:!0,path:"/artist/:id"},this.renderOverview()))))}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n,theme:e.ui.theme,slim_mode:e.ui.slim_mode,load_queue:e.ui.load_queue,artist:void 0!==e.core.artists[n]&&e.core.artists[n],tracks:e.core.tracks,artists:e.core.artists,spotify_library_artists:e.spotify.library_artists,local_library_artists:e.mopidy.library_artists,albums:e.core.albums?e.core.albums:[],filter:e.ui.artist_albums_filter?e.ui.artist_albums_filter:null,sort:e.ui.artist_albums_sort?e.ui.artist_albums_sort:null,sort_reverse:!!e.ui.artist_albums_sort_reverse,spotify_authorized:e.spotify.authorization,mopidy_connected:e.mopidy.connected}},function(e){return{coreActions:(0,o.bindActionCreators)(k,e),uiActions:(0,o.bindActionCreators)(O,e),mopidyActions:(0,o.bindActionCreators)(w,e),pusherActions:(0,o.bindActionCreators)(S,e),lastfmActions:(0,o.bindActionCreators)(T,e),spotifyActions:(0,o.bindActionCreators)(A,e)}})(x)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.playlist;e?this.props.uiActions.setWindowTitle(e.name+" (playlist)"):this.props.uiActions.setWindowTitle("Playlist")}},{key:"loadMore",value:function(){this.props.spotifyActions.getMore(this.props.playlist.tracks_more,{parent_type:"playlist",parent_key:this.props.playlist.uri,records_type:"track"})}},{key:"handleContextMenu",value:function(e){var t={e:e,context:"playlist",items:[this.props.playlist],uris:[this.props.uri]};this.props.uiActions.showContextMenu(t)}},{key:"play",value:function(){this.props.mopidyActions.playPlaylist(this.props.playlist.uri)}},{key:"follow",value:function(){this.props.allow_reporting&&s.default.event({category:"Playlist",action:"Follow",label:this.props.playlist.uri}),this.props.spotifyActions.toggleFollowingPlaylist(this.props.playlist.uri,"PUT")}},{key:"unfollow",value:function(){this.props.allow_reporting&&s.default.event({category:"Playlist",action:"Unfollow",label:this.props.playlist.uri}),this.props.spotifyActions.toggleFollowingPlaylist(this.props.playlist.uri,"DELETE")}},{key:"delete",value:function(){this.props.mopidyActions.deletePlaylist(this.props.playlist.uri)}},{key:"reorderTracks",value:function(e,t){this.props.coreActions.reorderPlaylistTracks(this.props.playlist.uri,e,t,this.props.playlist.snapshot_id)}},{key:"removeTracks",value:function(e){this.props.coreActions.removeTracksFromPlaylist(this.props.playlist.uri,e)}},{key:"inLibrary",value:function(){var e=g.uriSource(this.props.uri)+"_library_playlists";return this.props[e]&&this.props[e].indexOf(this.props.uri)>-1}},{key:"renderActions",value:function(){var e=this;switch(g.uriSource(this.props.uri)){case"m3u":return a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(u.default,{className:"button button--default",to:"/playlist/"+encodeURIComponent(this.props.uri)+"/edit"},"Edit"),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}}));case"spotify":return this.props.playlist.can_edit?a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(u.default,{className:"button button--default",to:"/playlist/"+encodeURIComponent(this.props.uri)+"/edit"},"Edit"),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}})):a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(y.default,{uri:this.props.uri,addText:"Add to library",removeText:"Remove from library",is_following:this.inLibrary()}),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}}));default:return a.default.createElement("div",{className:"actions"},a.default.createElement("button",{className:"button button--primary",onClick:function(t){return e.play()}},"Play"),a.default.createElement(_.default,{onTrigger:function(t){return e.handleContextMenu(t)}}))}}},{key:"render",value:function(){var e=this,t=g.getFromUri("playlistid",this.props.uri);if(!this.props.playlist)return g.isLoading(this.props.load_queue,["spotify_playlists/"+t+"?"])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(l.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find playlist with URI "',encodeURIComponent(this.props.uri),'"'));var n=g.collate(this.props.playlist,{tracks:this.props.tracks,users:this.props.users}),r="playlist";if(n.can_edit&&(r="editable-playlist"),0===n.tracks_total||n.tracks_uris&&(!n.tracks_uris||n.tracks)&&n.tracks_uris.length===n.tracks.length)i=!1;else var i=!0;return a.default.createElement("div",{className:"view playlist-view content-wrapper preserve-3d"},"dark"==this.props.theme&&a.default.createElement(d.default,{image:n.images?n.images.huge:null,blur:!0}),a.default.createElement("div",{className:"thumbnail-wrapper"},a.default.createElement(p.default,{size:"large",canZoom:!0,images:n.images})),a.default.createElement("div",{className:"title"},a.default.createElement("h1",null,n.name),n.description?a.default.createElement("h2",{className:"description mid_grey-text",dangerouslySetInnerHTML:{__html:n.description}}):null,a.default.createElement("ul",{className:"details"},this.props.slim_mode?null:a.default.createElement("li",{className:"source"},a.default.createElement(b.default,{type:"fontawesome",name:g.sourceIcon(n.uri)})),n.user_uri?a.default.createElement("li",null,a.default.createElement(v.default,{type:"user",uri:n.user_uri},n.user?n.user.name:g.getFromUri("userid",n.user_uri))):null,a.default.createElement("li",null,n.tracks_total?n.tracks_total:"0"," tracks"),!this.props.slim_mode&&n.tracks&&n.tracks_total>0?a.default.createElement("li",null,a.default.createElement(h.default,{type:"total-time",data:n.tracks})):null,this.props.slim_mode||void 0===n.followers?null:a.default.createElement("li",null,a.default.createElement(f.default,{value:n.followers})," followers"),!this.props.slim_mode&&n.last_modified_date?a.default.createElement("li",null,"Edited ",a.default.createElement(h.default,{type:"ago",data:n.last_modified_date})):null)),this.renderActions(),a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(c.default,{uri:n.uri,className:"playlist-track-list",track_context:r,tracks:n.tracks,removeTracks:function(t){return e.removeTracks(t)},reorderTracks:function(t,n){return e.reorderTracks(t,n)}}),a.default.createElement(m.default,{loadKey:n.tracks_more,showLoader:i||n.tracks_more,loadMore:function(){return e.loadMore()}})))}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n=(n=(n=(n=(n=(n=n.replace(/\s/g,"%20")).replace(/\[/g,"%5B")).replace(/\]/g,"%5D")).replace(/\(/g,"%28")).replace(/\)/g,"%29")).replace(/\#/g,"%23"),allow_reporting:e.ui.allow_reporting,slim_mode:e.ui.slim_mode,theme:e.ui.theme,load_queue:e.ui.load_queue,users:e.core.users,tracks:e.core.tracks,playlist:void 0!==e.core.playlists[n]&&e.core.playlists[n],spotify_library_playlists:e.spotify.library_playlists,local_library_playlists:e.mopidy.library_playlists,mopidy_connected:e.mopidy.connected,spotify_authorized:e.spotify.authorization,spotify_userid:e.spotify.me&&e.spotify.me.id?e.spotify.me.id:null}},function(e){return{coreActions:(0,o.bindActionCreators)(E,e),uiActions:(0,o.bindActionCreators)(k,e),mopidyActions:(0,o.bindActionCreators)(O,e),spotifyActions:(0,o.bindActionCreators)(w,e)}})(A)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.user;e?this.props.uiActions.setWindowTitle(e.name+" (user)"):this.props.uiActions.setWindowTitle("User")}},{key:"loadMore",value:function(){this.props.spotifyActions.getMore(this.props.user.playlists_more,{parent_type:"user",parent_key:this.props.uri,records_type:"playlist"})}},{key:"isMe",value:function(){var e=h.getFromUri("userid",this.props.uri);return this.props.me&&this.props.me.id&&this.props.me.id==e}},{key:"render",value:function(){var e=this,t=h.getFromUri("userid",this.props.uri);if(!this.props.user)return h.isLoading(this.props.load_queue,["spotify_users/"+t,"spotify_users/"+t+"/playlists/?"])?a.default.createElement("div",{className:"body-loader loading"},a.default.createElement("div",{className:"loader"})):a.default.createElement(s.default,{type:"not-found",title:"Not found"},a.default.createElement("p",null,'Could not find user with URI "',encodeURIComponent(this.props.uri),'"'));var n=h.collate(this.props.user,{playlists:this.props.playlists});if(n&&n.images)var r=n.images.huge;else r=null;return a.default.createElement("div",{className:"view user-view preserve-3d"},a.default.createElement("div",{className:"intro preserve-3d"},a.default.createElement(p.default,{image:r,fixedHeight:!0}),a.default.createElement("div",{className:"liner"},a.default.createElement("h1",null,n.name),a.default.createElement("h2",null,a.default.createElement("ul",{className:"details"},this.props.slim_mode?null:a.default.createElement("li",{className:"source"},a.default.createElement(f.default,{type:"fontawesome",name:h.sourceIcon(n.uri)})),n.playlists_total?a.default.createElement("li",null,a.default.createElement(d.default,{value:n.playlists_total})," playlists"):null,n.followers?a.default.createElement("li",null,a.default.createElement(d.default,{value:n.followers})," followers"):null,this.isMe()?a.default.createElement("li",null,a.default.createElement("span",{className:"blue-text"},"You")):null)),a.default.createElement("div",{className:"actions"},a.default.createElement(u.default,{className:"primary",uri:n.uri,addText:"Follow",removeText:"Unfollow"})))),a.default.createElement("div",{className:"content-wrapper"},a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement("h4",null,"Playlists"),a.default.createElement(l.default,{playlists:n.playlists}),a.default.createElement(c.default,{loadKey:n.playlists_more,showLoader:n.playlists_more,loadMore:function(){return e.loadMore()}}))))}}]),t}();t.default=(0,i.connect)(function(e,t){var n=decodeURIComponent(t.match.params.uri);return{uri:n,me:e.spotify.me,load_queue:e.ui.load_queue,spotify_authorized:e.spotify.authorization,playlists:e.core.playlists,user:void 0!==e.core.users[n]&&e.core.users[n]}},function(e){return{coreActions:(0,o.bindActionCreators)(m,e),uiActions:(0,o.bindActionCreators)(y,e),spotifyActions:(0,o.bindActionCreators)(_,e)}})(g)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:this.props.track;if(e){for(var t="",n=0;n0&&this.props.mopidyActions.removeTracks(t)}},{key:"playTrack",value:function(e){this.props.mopidyActions.changeTrack(e.tlid)}},{key:"playTracks",value:function(e){this.props.mopidyActions.changeTrack(e[0].tlid)}},{key:"reorderTracks",value:function(e,t){this.props.mopidyActions.reorderTracklist(e,t)}},{key:"renderQueueStats",value:function(){return a.default.createElement("div",{className:"queue-stats mid_grey-text"},a.default.createElement("span",null,this.props.current_tracklist.length," tracks"),"  |  ",this.props.current_tracklist.length>0?a.default.createElement(p.default,{type:"total-time",data:this.props.current_tracklist}):a.default.createElement("span",null,"0 mins"))}},{key:"renderArtwork",value:function(e){if(!e)return a.default.createElement("span",{className:this.props.radio_enabled?"artwork radio-enabled":"artwork"},this.props.radio_enabled?a.default.createElement("img",{className:"radio-overlay",src:"/iris/assets/radio-overlay.png"}):null,a.default.createElement(f.default,{circle:this.props.radio_enabled}));var t=null;return this.props.current_track.album&&this.props.current_track.album.uri&&(t=this.props.current_track.album.uri),a.default.createElement(m.default,{className:this.props.radio_enabled?"artwork radio-enabled":"artwork",type:"album",uri:t},this.props.radio_enabled?a.default.createElement("img",{className:"radio-overlay",src:"/iris/assets/radio-overlay.png"}):null,a.default.createElement(f.default,{image:e,circle:this.props.radio_enabled}))}},{key:"render",value:function(){var e=this,t=null,n=[];if(this.props.queue&&this.props.tracks)for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:this.props).mopidy_connected&&this.props.mopidyActions.getQueueHistory()}},{key:"render",value:function(){for(var e=this,t=a.default.createElement("a",{className:"button button--no-hover",onClick:function(t){return e.props.history.push("/queue")}},a.default.createElement(u.default,{name:"keyboard_backspace"}),"  Back"),n=[],r=0;r0&&void 0!==arguments[0]?arguments[0]:this.props;e.type&&e.term?(this.setState({type:e.type,term:e.term}),this.search(e.type,e.term)):e.term&&""!=e.term||(this.props.spotifyActions.clearSearchResults(),this.props.mopidyActions.clearSearchResults())}},{key:"search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.state.type,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state.term,n=arguments[2];this.props.uiActions.setWindowTitle("Search: "+t),e&&t&&(("mopidy"==n||this.props.mopidy_connected&&this.props.uri_schemes_search_enabled)&&(void 0!==this.props.mopidy_search_results.query&&this.props.mopidy_search_results.query==t||(this.props.mopidyActions.clearSearchResults(),this.props.mopidyActions.getSearchResults(e,t))),("spotify"==n||this.props.mopidy_connected&&this.props.uri_schemes_search_enabled&&this.props.uri_schemes_search_enabled.includes("spotify:"))&&(void 0!==this.props.spotify_search_results.query&&this.props.spotify_search_results.query==t||(this.props.spotifyActions.clearSearchResults(),this.props.spotifyActions.getSearchResults(e,t))))}},{key:"loadMore",value:function(e){alert("load more: "+e)}},{key:"setSort",value:function(e){var t=!1;this.props.sort==e&&(t=!this.props.sort_reverse);var n={search_results_sort_reverse:t,search_results_sort:e};this.props.uiActions.set(n)}},{key:"renderArtists",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Artists"),a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement(d.default,{artists:e,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.artists_more&&t,loadMore:function(){return n.loadMore("artists")}})))}},{key:"renderAlbums",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Albums"),a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement(f.default,{albums:e,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.albums_more&&t,loadMore:function(){return n.loadMore("albums")}})))}},{key:"renderPlaylists",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Playlists"),a.default.createElement("section",{className:"grid-wrapper"},a.default.createElement(h.default,{playlists:e,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.playlists_more&&t,loadMore:function(){return n.loadMore("playlists")}})))}},{key:"renderTracks",value:function(e,t){var n=this;return a.default.createElement("div",null,a.default.createElement("h4",null,a.default.createElement(_.default,{type:"search",uri:"search:all:"+this.state.term},"Search"),"  ",a.default.createElement(u.default,{type:"fontawesome",name:"angle-right"}),"  Tracks"),a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(p.default,{tracks:e,uri:"iris:search:"+this.state.type+":"+this.state.term,show_source_icon:!0}),a.default.createElement(m.default,{enabled:this.props.tracks_more&&t,loadMore:function(){return n.loadMore("tracks")}})))}},{key:"renderAll",value:function(e,t,n,r,i){var o=this;if(e.length>0)var s=a.default.createElement("section",null,a.default.createElement("div",{className:"inner"},a.default.createElement(_.default,{type:"search",uri:"search:artist:"+this.state.term},a.default.createElement("h4",null,"Artists")),a.default.createElement(d.default,{mini:!0,show_source_icon:!0,artists:e.slice(0,6)}),e.length>=6?a.default.createElement(_.default,{type:"search",uri:"search:artist:"+this.state.term,className:"button button--default"},"All artists (",e.length,")"):null));else s=null;if(t.length>0)var l=a.default.createElement("section",null,a.default.createElement("div",{className:"inner"},a.default.createElement(_.default,{type:"search",uri:"search:album:"+this.state.term},a.default.createElement("h4",null,"Albums")),a.default.createElement(f.default,{mini:!0,show_source_icon:!0,albums:t.slice(0,6)}),t.length>=6?a.default.createElement(_.default,{type:"search",uri:"search:album:"+this.state.term,className:"button button--default"},"All albums (",t.length,")"):null));else l=null;if(n.length>0)var u=a.default.createElement("section",null,a.default.createElement("div",{className:"inner"},a.default.createElement(_.default,{type:"search",uri:"search:playlist:"+this.state.term},a.default.createElement("h4",null,"Playlists")),a.default.createElement(h.default,{mini:!0,show_source_icon:!0,playlists:n.slice(0,6)}),n.length>=6?a.default.createElement(_.default,{type:"search",uri:"search:playlist:"+this.state.term,className:"button button--default"},"All playlists (",n.length,")"):null));else u=null;if(r.length>0)var c=a.default.createElement("section",{className:"list-wrapper"},a.default.createElement(p.default,{tracks:r,uri:"iris:search:"+this.state.type+":"+this.state.term,show_source_icon:!0}),a.default.createElement(m.default,{loading:this.props.tracks_more&&i,loadMore:function(){return o.loadMore("tracks")}}));else c=null;return a.default.createElement("div",null,a.default.createElement("div",{className:"search-result-sections cf"},s,l,u),c)}},{key:"render",value:function(){for(var e=this,t=[],n=0;n-1?t[l]=this.props.uri_schemes[r]:n.push(this.props.uri_schemes[r])}for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,t){for(var n=0;n diff --git a/mopidy_iris/static/index.html b/mopidy_iris/static/index.html index de1be151..2f21a127 100644 --- a/mopidy_iris/static/index.html +++ b/mopidy_iris/static/index.html @@ -100,8 +100,8 @@ // Release details // These are automatically injected to built HTML - var build = "1560716947"; - var version = "3.38.0"; + var build = "1561081538"; + var version = "3.39.0"; // Construct the script tag var js = document.createElement("script"); diff --git a/package.json b/package.json index 045f0c51..4affefe5 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mopidy-iris", - "version": "3.38.0", + "version": "3.39.0", "description": "Mopidy HTTP interface", "repository": "https://github.com/jaedb/iris", "author": "James Barnsley ",