platypush/platypush/backend/http/webapp/dist/static/js/3083.8440bfa8.js.map

1 line
28 KiB
Plaintext

{"version":3,"file":"static/js/3083.8440bfa8.js","mappings":"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","sources":["webpack://platypush/./src/components/panels/Music/Common.vue","webpack://platypush/./src/components/panels/Music/Common.vue?bedc","webpack://platypush/./src/components/panels/MusicMpd/Index.vue","webpack://platypush/./src/components/panels/MusicMpd/Index.vue?9486","webpack://platypush/./src/mixins/Music/Status.vue","webpack://platypush/./src/mixins/Music/Status.vue?daf1"],"sourcesContent":["<template>\n <Loading v-if=\"loading\" />\n <MusicPlugin :plugin-name=\"pluginName\"\n :config=\"config\"\n :edited-playlist-tracks=\"editedPlaylistTracks\"\n :edited-playlist=\"editedPlaylist\"\n :images=\"images\"\n :library-results=\"libraryResults\"\n :loading=\"loading\"\n :path=\"path\"\n :playlists=\"playlists\"\n :search-results=\"searchResults\"\n :status=\"status\"\n :track=\"track\"\n :track-info=\"trackInfo\"\n :tracks=\"tracks\"\n @add-to-playlist=\"addToPlaylist\"\n @add-to-tracklist-from-edited-playlist=\"addToTracklistFromEditedPlaylist\"\n @add-to-tracklist=\"addToTracklist\"\n @cd=\"cd\"\n @clear=\"clear\"\n @consume=\"consume\"\n @info=\"trackInfo = $event\"\n @load-playlist=\"loadPlaylist\"\n @new-playing-track=\"refreshStatus(true, true, $event)\"\n @next=\"next\"\n @pause=\"pause\"\n @play-playlist=\"playPlaylist\"\n @play=\"play\"\n @playlist-add=\"playlistAdd\"\n @playlist-edit=\"playlistEditChanged\"\n @playlist-track-move=\"playlistTrackMove\"\n @playlist-update=\"refresh(true)\"\n @previous=\"previous\"\n @random=\"random\"\n @remove-from-playlist=\"removeFromPlaylist\"\n @remove-from-tracklist=\"removeFromTracklist\"\n @remove-playlist=\"removePlaylist\"\n @repeat=\"repeat\"\n @search-clear=\"searchResults = []\"\n @search=\"search\"\n @seek=\"seek\"\n @set-volume=\"setVolume\"\n @status-update=\"refreshStatus(true, true, $event)\"\n @stop=\"stop\"\n @swap-tracks=\"swapTracks\"\n @tracklist-move=\"moveTracklistTracks\"\n @tracklist-save=\"saveToPlaylist\" />\n</template>\n\n<script>\nimport MusicPlugin from \"@/components/panels/Music/Index\"\nimport Utils from \"@/Utils\"\nimport Loading from \"@/components/Loading\"\nimport Status from \"@/mixins/Music/Status\";\nimport { bus } from \"@/bus\";\n\nexport default {\n components: {Loading, MusicPlugin},\n mixins: [Status, Utils],\n props: {\n config: {\n type: Object,\n default: () => {},\n },\n\n pluginName: {\n type: String,\n required: true,\n },\n\n fetchStatusOnUpdate: {\n type: Boolean,\n default: true,\n },\n },\n\n data() {\n return {\n loading: false,\n tracks: [],\n playlists: [],\n status_: {},\n images: {},\n editedPlaylist: null,\n editedPlaylistTracks: [],\n trackInfo: null,\n searchResults: [],\n libraryResults: [],\n path: [],\n }\n },\n\n computed: {\n status() {\n const status = {...this.status_}\n // This is the standard case for new integrations, where elapsed isn't\n // reported and time is not a string in the format `elapsed:duration`.\n // In this case, time is elapsed time.\n if (!status.elapsed && !isNaN(parseFloat(status.time)))\n status.elapsed = status.time\n\n return status\n },\n\n track() {\n let pos = null\n if (this.status?.playingPos != null)\n pos = this.status.playingPos\n else if (this.status?.track?.pos != null)\n pos = this.status.track.pos\n\n if (pos == null)\n return null\n\n return this.tracks[pos]\n }\n },\n\n methods: {\n async refreshTracks(background) {\n if (!background)\n this.loading = true\n\n try {\n this.tracks = await this.request(`${this.pluginName}.get_tracks`)\n } finally {\n this.loading = false\n }\n },\n\n setStatusFromEvent(event) {\n if (!event)\n return\n\n if (event.status)\n this.status_ = this.parseStatus(event.status)\n },\n\n async refreshStatus(background, isStatusUpdate, event) {\n if (isStatusUpdate && !this.fetchStatusOnUpdate) {\n this.setStatusFromEvent(event)\n } else {\n if (!background)\n this.loading = true\n\n try {\n this.status_ = this.parseStatus(await this.request(`${this.pluginName}.status`))\n } finally {\n this.loading = false\n }\n }\n\n this.refreshCurrentImage()\n },\n\n async refreshCurrentImage() {\n const curTrack = this.track?.uri || this.track?.file\n if (!curTrack || curTrack in this.images)\n return\n\n await this.refreshImages([this.track])\n },\n\n async refreshImages(tracks) {\n Object.entries(\n await this.request(\n `${this.pluginName}.get_images`, {\n resources: [\n ...new Set(\n tracks\n .map((track) => track.uri || track.file)\n .filter((uri) => uri && !(uri in this.images))\n )\n ]\n }\n )\n ).forEach(([uri, image]) => {\n this.images[uri] = image\n })\n },\n\n async refreshPlaylists(background) {\n if (!background)\n this.loading = true\n\n try {\n this.playlists = (await this.request(`${this.pluginName}.get_playlists`)).map((playlist) => {\n return {\n ...playlist,\n lastModified: playlist.last_modified,\n }\n }).sort((a, b) => a.name.localeCompare(b.name))\n } finally {\n this.loading = false\n }\n },\n\n async refresh(background) {\n if (!background)\n this.loading = true\n\n try {\n await Promise.all([\n this.refreshTracks(background),\n this.refreshStatus(background),\n this.refreshPlaylists(background),\n ])\n } finally {\n this.loading = false\n }\n },\n\n async play(event) {\n if (event?.pos != null) {\n await this.request(`${this.pluginName}.play_pos`, {pos: event.pos})\n } else if (event?.file) {\n await this.request(`${this.pluginName}.play`, {resource: event.file})\n } else {\n await this.request(`${this.pluginName}.play`)\n }\n\n await this.refreshStatus(true)\n },\n\n async pause() {\n await this.request(`${this.pluginName}.pause`)\n await this.refreshStatus(true)\n },\n\n async stop() {\n await this.request(`${this.pluginName}.stop`)\n await this.refreshStatus(true)\n },\n\n async previous() {\n await this.request(`${this.pluginName}.previous`)\n await this.refreshStatus(true)\n },\n\n async next() {\n await this.request(`${this.pluginName}.next`)\n await this.refreshStatus(true)\n },\n\n async clear() {\n await this.request(`${this.pluginName}.clear`)\n await Promise.all([this.refreshStatus(true), this.refreshTracks(true)])\n },\n\n async setVolume(volume) {\n if (volume === this.status.volume)\n return\n\n await this.request(`${this.pluginName}.set_volume`, {volume: volume})\n await this.refreshStatus(true)\n },\n\n async seek(pos) {\n await this.request(`${this.pluginName}.seek`, {position: pos})\n await this.refreshStatus(true)\n },\n\n async repeat(value) {\n await this.request(`${this.pluginName}.repeat`, {value: !!parseInt(+value)})\n await this.refreshStatus(true)\n },\n\n async random(value) {\n await this.request(`${this.pluginName}.random`, {value: !!parseInt(+value)})\n await this.refreshStatus(true)\n },\n\n async consume(value) {\n await this.request(`${this.pluginName}.consume`, {value: !!parseInt(+value)})\n await this.refreshStatus(true)\n },\n\n async addToTracklist(resource) {\n if (resource.file)\n resource = resource.file\n\n await this.request(`${this.pluginName}.add`, {resource: resource})\n await this.refresh(true)\n },\n\n async addToTracklistFromEditedPlaylist(event) {\n const tracks = event?.tracks?.map(\n (pos) => this.editedPlaylistTracks[pos]\n )?.filter((track) => track?.file)?.map((track) => track.file)\n\n if (!tracks?.length)\n return\n\n await Promise.all(tracks.map((track) => this.request(`${this.pluginName}.add`, {resource: track})))\n await this.refresh(true)\n\n if (event.play)\n await this.request(`${this.pluginName}.play_pos`, {pos: this.tracks.length - tracks.length})\n },\n\n async removeFromPlaylist(positions) {\n await this.request(\n `${this.pluginName}.remove_from_playlist`,\n {resources: positions, playlist: this.playlists[this.editedPlaylist].name}\n )\n await this.playlistEditChanged(this.editedPlaylist)\n },\n\n async removeFromTracklist(positions) {\n await this.request(`${this.pluginName}.delete`, {positions: positions.sort()})\n await this.refresh(true)\n },\n\n async swapTracks(positions) {\n await this.request(`${this.pluginName}.move`, {from_pos: positions[0], to_pos: positions[1]})\n await this.refresh(true)\n },\n\n async playPlaylist(position) {\n await this._loadPlaylist(position, true)\n },\n\n async loadPlaylist(position) {\n await this._loadPlaylist(position, false)\n },\n\n async _loadPlaylist(position, play) {\n const playlist = this.playlists[position]\n await this.request(\n `${this.pluginName}.load`, {\n playlist: (playlist.uri || playlist.name), play: play\n }\n )\n await this.refresh(true)\n },\n\n async removePlaylist(position) {\n const playlist = this.playlists[position]\n if (!confirm(`Are you REALLY sure that you want to remove the playlist ${playlist.name}?`))\n return\n\n await this.request(`${this.pluginName}.delete_playlist`, {playlist: playlist.name})\n await this.refreshPlaylists(true)\n },\n\n async saveToPlaylist(name) {\n await this.request(`${this.pluginName}.save`, {name: name})\n await this.refreshPlaylists(true)\n },\n\n splitMoveTracksIntoChunks(event) {\n // Split the selected source tracks into chunks containing consecutive\n // tracks, since the music plugin move API exposes `start`, `end` and\n // `position` parameters.\n let chunk = [];\n let offset = event.to;\n const chunks = (event?.from || [])\n .map((i) => parseInt(i))\n .sort((a, b) => a - b)\n .reduce((acc, pos, idx) => {\n if (idx === 0 || (chunk.length > 0 && pos === chunk[chunk.length - 1] + 1)) {\n chunk.push(pos)\n } else {\n acc.push(chunk)\n chunk = [pos]\n }\n\n return acc\n }, [])\n\n if (chunk.length > 0)\n chunks.push(chunk)\n\n return chunks.map((chunk) => {\n const start = chunk[0]\n const end = chunk[chunk.length - 1] === chunk[0] ? chunk[0] : chunk[chunk.length - 1] + 1\n let ret = {\n start: start,\n end: end,\n position: offset,\n }\n\n offset += chunk.length\n return ret\n })\n },\n\n async moveTracklistTracks(event) {\n for (const chunk of this.splitMoveTracksIntoChunks(event)) {\n await this.request(`${this.pluginName}.move`, chunk)\n }\n\n if (!this.fetchStatusOnUpdate)\n await this.refreshTracks(true)\n },\n\n async playlistAdd(track) {\n await this.request(\n `${this.pluginName}.add_to_playlist`,\n {resources: [track], playlist: this.playlists[this.editedPlaylist].name}\n )\n await this.playlistEditChanged(this.editedPlaylist)\n },\n\n async playlistEditChanged(playlist) {\n this.editedPlaylist = playlist\n if (playlist == null)\n return\n\n this.loading = true\n try {\n this.editedPlaylistTracks = await this.request(\n `${this.pluginName}.get_playlist`,\n {playlist: this.playlists[playlist].name}\n )\n } finally {\n this.loading = false\n }\n },\n\n async addToPlaylist(event) {\n await Promise.all(event.playlists.map(async (playlistIdx) => {\n await this.request(`${this.pluginName}.add_to_playlist`, {\n resources: [event.track.file],\n playlist: this.playlists[playlistIdx].name\n })\n\n await this.playlistEditChanged(playlistIdx)\n }))\n },\n\n async playlistTrackMove(event) {\n const playlist = this.playlists[event.playlist]\n if (!playlist)\n return\n\n for (const chunk of this.splitMoveTracksIntoChunks(event)) {\n await this.request(\n `${this.pluginName}.playlist_move`, {\n playlist: playlist.uri || playlist.name,\n start: chunk.start,\n end: chunk.end,\n position: chunk.position,\n }\n )\n }\n\n await this.playlistEditChanged(event.playlist)\n },\n\n async search(query) {\n this.loading = true\n\n try {\n this.searchResults = await this.request(`${this.pluginName}.search`, {filter: query})\n } finally {\n this.loading = false\n }\n },\n\n async cd(path) {\n this.loading = true\n\n let uri = path\n if (Array.isArray(path))\n uri = path.length === 0 ? null : path[path.length - 1]\n\n try {\n this.libraryResults = (\n await this.request(`${this.pluginName}.browse`, {uri: uri})\n ).filter((result) => !result.playlist)\n\n this.path = path\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n bus.on('connected', this.refresh)\n this.refresh()\n this.cd(this.path)\n },\n}\n</script>\n","import { render } from \"./Common.vue?vue&type=template&id=b621140e\"\nimport script from \"./Common.vue?vue&type=script&lang=js\"\nexport * from \"./Common.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <MusicPlugin plugin-name=\"music.mpd\" />\n</template>\n\n<script>\nimport MusicPlugin from \"@/components/panels/Music/Common\"\n\nexport default {\n components: {MusicPlugin},\n}\n</script>\n","import { render } from \"./Index.vue?vue&type=template&id=0bb5c46a\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<script>\nexport default {\n methods: {\n parseStatus(status) {\n return Object.entries(status).reduce((obj, [k, v]) => {\n switch (k) {\n case 'bitrate':\n case 'volume':\n obj[k] = parseInt(v)\n break\n\n case 'consume':\n case 'random':\n case 'repeat':\n case 'single':\n obj[k] = !!parseInt(+v)\n break\n\n case 'playing_pos':\n case 'song': // Legacy mpd format\n obj.playingPos = parseInt(v)\n break\n\n case 'time':\n if (v.split) { // Handle the `elapsed:duration` legacy mpd format\n v = v.split(':')\n\n if (v.length === 1) {\n obj.elapsed = parseInt(v[0])\n } else {\n obj.elapsed = parseInt(v[0])\n obj.duration = parseInt(v[1])\n }\n } else {\n obj.elapsed = v\n }\n break\n\n case 'track':\n if (v?.time != null) {\n obj.duration = v.time\n }\n\n if (v?.playlistPos != null) {\n obj.playingPos = v.pos\n }\n break\n\n case 'duration':\n obj.duration = parseInt(v)\n break\n\n case 'elapsed':\n break\n\n default:\n obj[k] = v\n break\n }\n\n return obj\n }, {})\n },\n }\n}\n</script>\n","import script from \"./Status.vue?vue&type=script&lang=js\"\nexport * from \"./Status.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__"],"names":["$data","loading","_createBlock","_component_Loading","key","_createVNode","_component_MusicPlugin","$props","pluginName","config","editedPlaylistTracks","editedPlaylist","images","libraryResults","path","playlists","searchResults","status","$options","track","trackInfo","tracks","onAddToPlaylist","addToPlaylist","onAddToTracklistFromEditedPlaylist","addToTracklistFromEditedPlaylist","onAddToTracklist","addToTracklist","onCd","cd","onClear","clear","onConsume","consume","onInfo","_cache","$event","onLoadPlaylist","loadPlaylist","onNewPlayingTrack","refreshStatus","onNext","next","onPause","pause","onPlayPlaylist","playPlaylist","onPlay","play","onPlaylistAdd","playlistAdd","onPlaylistEdit","playlistEditChanged","onPlaylistTrackMove","playlistTrackMove","onPlaylistUpdate","refresh","onPrevious","previous","onRandom","random","onRemoveFromPlaylist","removeFromPlaylist","onRemoveFromTracklist","removeFromTracklist","onRemovePlaylist","removePlaylist","onRepeat","repeat","onSearchClear","onSearch","search","onSeek","seek","onSetVolume","setVolume","onStatusUpdate","onStop","stop","onSwapTracks","swapTracks","onTracklistMove","moveTracklistTracks","onTracklistSave","saveToPlaylist","components","Loading","MusicPlugin","mixins","Status","Utils","props","type","Object","default","String","required","fetchStatusOnUpdate","Boolean","data","status_","computed","this","elapsed","isNaN","parseFloat","time","pos","playingPos","methods","refreshTracks","background","request","setStatusFromEvent","event","parseStatus","isStatusUpdate","refreshCurrentImage","curTrack","uri","file","refreshImages","entries","resources","Set","map","filter","forEach","image","refreshPlaylists","playlist","lastModified","last_modified","sort","a","b","name","localeCompare","Promise","all","resource","volume","position","value","parseInt","length","positions","from_pos","to_pos","_loadPlaylist","confirm","splitMoveTracksIntoChunks","chunk","offset","to","chunks","from","i","reduce","acc","idx","push","start","end","ret","async","playlistIdx","query","Array","isArray","result","mounted","bus","on","__exports__","render","obj","k","v","split","duration","playlistPos"],"sourceRoot":""}