platypush/platypush/backend/http/webapp/dist/static/js/3553.125dc216.js.map

1 line
112 KiB
Plaintext

{"version":3,"file":"static/js/3553.125dc216.js","mappings":"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","sources":["webpack://platypush/./src/components/panels/Music/Index.vue","webpack://platypush/./src/components/elements/FormFooter.vue","webpack://platypush/./src/components/elements/FormFooter.vue?94ab","webpack://platypush/./src/components/panels/Music/Nav.vue","webpack://platypush/./src/components/panels/Music/Nav.vue?b815","webpack://platypush/./src/components/panels/Music/Playlist.vue","webpack://platypush/./src/components/panels/Music/Header.vue","webpack://platypush/./src/components/panels/Music/Header.vue?7826","webpack://platypush/./src/components/panels/Music/Playlist.vue?b3da","webpack://platypush/./src/components/panels/Music/Playlists.vue","webpack://platypush/./src/components/panels/Music/Playlists.vue?6fa1","webpack://platypush/./src/components/panels/Music/Search.vue","webpack://platypush/./src/components/panels/Music/Search.vue?7e62","webpack://platypush/./src/components/panels/Music/Library.vue","webpack://platypush/./src/components/panels/Music/Library.vue?ee0e","webpack://platypush/./src/components/panels/Music/Index.vue?aab7"],"sourcesContent":["<template>\n <Loading v-if=\"loading\" />\n\n <MediaView :plugin-name=\"pluginName\"\n :image=\"images[track?.uri || track?.file]\"\n :status=\"status\"\n :track=\"track\"\n @next=\"$emit('next')\"\n @pause=\"$emit('pause')\"\n @play=\"$emit('play', $event)\"\n @previous=\"$emit('previous')\"\n @random=\"$emit('random', $event)\"\n @repeat=\"$emit('repeat', $event)\"\n @search=\"search\"\n @seek=\"$emit('seek', $event)\" @consume=\"$emit('consume', $event)\"\n @set-volume=\"$emit('set-volume', $event)\"\n @stop=\"$emit('stop')\"\n v-else>\n <main>\n <div class=\"nav-container mobile\" v-if=\"navVisible\">\n <Nav :selected-view=\"selectedView\"\n @input=\"selectedView = $event\"\n @toggle=\"navVisible = !navVisible\" />\n </div>\n\n <div class=\"nav-container from tablet\">\n <Nav :selected-view=\"selectedView\"\n @input=\"selectedView = $event\"\n @toggle=\"navVisible = !navVisible\" />\n </div>\n\n <div class=\"view-container\">\n <Playlist :tracks=\"tracks\"\n :status=\"status\"\n :loading=\"loading\"\n :devices=\"devices\"\n :selected-device=\"selectedDevice\"\n :active-device=\"activeDevice\"\n :show-nav-button=\"!navVisible\"\n :with-clear=\"true\"\n :with-save=\"true\"\n :with-swap=\"true\"\n v-if=\"selectedView === 'playing'\"\n @play=\"$emit('play', $event)\"\n @clear=\"$emit('clear')\"\n @swap=\"$emit('swap-tracks', $event)\"\n @add=\"$emit('add-to-tracklist', $event)\"\n @remove=\"$emit('remove-from-tracklist', $event)\"\n @move=\"$emit('tracklist-move', $event)\"\n @save=\"$emit('tracklist-save', $event)\"\n @info=\"$emit('info', $event)\"\n @add-to-playlist=\"openAddToPlaylist\"\n @search=\"search\"\n @toggle-nav=\"navVisible = !navVisible\"\n @refresh-status=\"refreshStatus\"\n @select-device=\"selectDevice\" />\n\n <Playlists :playlists=\"playlists\"\n :loading=\"loading\"\n :devices=\"devices\"\n :status=\"status\"\n :selected-device=\"selectedDevice\"\n :active-device=\"activeDevice\"\n :edited-playlist=\"editedPlaylist\"\n :tracks=\"editedPlaylistTracks\"\n :show-nav-button=\"!navVisible\"\n v-else-if=\"selectedView === 'playlists'\"\n @play=\"$emit('play-playlist', $event)\"\n @load=\"$emit('load-playlist', $event)\"\n @remove=\"$emit('remove-playlist', $event)\"\n @playlist-edit=\"$emit('playlist-edit', $event)\"\n @load-tracks=\"$emit('add-to-tracklist-from-edited-playlist', $event)\"\n @remove-track=\"$emit('remove-from-playlist', $event)\"\n @info=\"$emit('info', $event)\"\n @playlist-add=\"$emit('playlist-add', $event)\"\n @add-to-playlist=\"openAddToPlaylist\"\n @track-move=\"$emit('playlist-track-move', $event)\"\n @search=\"search\"\n @toggle-nav=\"navVisible = !navVisible\"\n @refresh-status=\"refreshStatus\"\n @select-device=\"selectDevice\" />\n\n <Search :loading=\"loading\"\n :results=\"searchResults\"\n :devices=\"devices\"\n :selected-device=\"selectedDevice\"\n :active-device=\"activeDevice\"\n :show-nav-button=\"!navVisible\"\n v-else-if=\"selectedView === 'search'\"\n @search=\"search\"\n @clear=\"$emit('search-clear')\"\n @info=\"$emit('info', $event)\"\n @play=\"$emit('play', $event)\"\n @load=\"$emit('add-to-tracklist', $event)\"\n @add-to-playlist=\"openAddToPlaylist\"\n @refresh-status=\"refreshStatus\"\n @toggle-nav=\"navVisible = !navVisible\"\n @select-device=\"selectDevice\" />\n\n <Library :loading=\"loading\"\n :results=\"libraryResults\"\n :path=\"path\"\n :devices=\"devices\"\n :selected-device=\"selectedDevice\"\n :active-device=\"activeDevice\"\n :show-nav-button=\"!navVisible\"\n v-else-if=\"selectedView === 'library'\"\n @search=\"search\"\n @clear=\"$emit('search-clear')\"\n @info=\"$emit('info', $event)\"\n @play=\"$emit('play', $event)\"\n @load=\"$emit('add-to-tracklist', $event)\"\n @add-to-playlist=\"openAddToPlaylist\"\n @cd=\"$emit('cd', $event)\"\n @toggle-nav=\"navVisible = !navVisible\"\n @refresh-status=\"refreshStatus\"\n @select-device=\"selectDevice\" />\n </div>\n </main>\n </MediaView>\n\n <div class=\"track-info-container\">\n <Modal title=\"Track info\" ref=\"trackInfo\">\n <div class=\"track-info-content\" v-if=\"trackInfo\">\n <div class=\"row file\" v-if=\"trackInfo.file\">\n <div class=\"col-3 attr\">File</div>\n <div class=\"col-9 value\" v-text=\"trackInfo.file\" />\n </div>\n\n <div class=\"row artist\" v-if=\"trackInfo.artist\">\n <div class=\"col-3 attr\">Artist</div>\n <div class=\"col-9 value\">\n <a :href=\"$route.fullPath\" v-text=\"trackInfo.artist\" @click.prevent=\"search({artist: trackInfo.artist})\" />\n </div>\n </div>\n\n <div class=\"row track-title\" v-if=\"trackInfo.title\">\n <div class=\"col-3 attr\">Title</div>\n <div class=\"col-9 value\" v-text=\"trackInfo.title\" />\n </div>\n\n <div class=\"row album\" v-if=\"trackInfo.album\">\n <div class=\"col-3 attr\">Album</div>\n <div class=\"col-9 value\">\n <a :href=\"$route.fullPath\" v-text=\"trackInfo.album\"\n @click.prevent=\"search({artist: trackInfo.artist, album: trackInfo.album})\" />\n </div>\n </div>\n\n <div class=\"row date\" v-if=\"trackInfo.date\">\n <div class=\"col-3 attr\">Date</div>\n <div class=\"col-9 value\" v-text=\"trackInfo.date\" />\n </div>\n\n <div class=\"row duration\" v-if=\"trackInfo.time\">\n <div class=\"col-3 attr\">Duration</div>\n <div class=\"col-9 value\" v-text=\"convertTime(trackInfo.time)\" />\n </div>\n\n <div class=\"row track\" v-if=\"trackInfo.track\">\n <div class=\"col-3 attr\">Track</div>\n <div class=\"col-9 value\" v-text=\"trackInfo.track\" />\n </div>\n\n <div class=\"row disc\" v-if=\"trackInfo.disc\">\n <div class=\"col-3 attr\">Disc</div>\n <div class=\"col-9 value\" v-text=\"trackInfo.disc\" />\n </div>\n\n <div class=\"row url\" v-if=\"trackInfo.url\">\n <div class=\"col-3 attr\">URL</div>\n <div class=\"col-9 value\">\n <a :href=\"trackInfo.url\" v-text=\"trackInfo.uri || trackInfo.url\" target=\"_blank\" />\n </div>\n </div>\n </div>\n </Modal>\n </div>\n\n <div class=\"playlists-modal-container\">\n <Modal title=\"Playlists\" ref=\"playlistsModal\" @close=\"addToPlaylistTrack = null\"\n @open=\"selectedPlaylists = [...Array(playlists.length).keys()].map(() => false)\">\n <div class=\"filter\">\n <label>\n <input type=\"search\" placeholder=\"Filter\" v-model=\"playlistFilter\">\n </label>\n </div>\n\n <div class=\"playlists\">\n <label class=\"row playlist\" v-for=\"(playlist, i) in playlists\" :key=\"i\"\n :class=\"{hidden: playlistFilter?.length > 0 && playlist.name.toLowerCase().indexOf(playlistFilter.toLowerCase()) < 0}\">\n <input type=\"checkbox\" :checked=\"selectedPlaylists[i]\"\n @change=\"selectedPlaylists[i] = $event.target.checked\" />\n <span class=\"name\" v-text=\"playlist.name\" />\n </label>\n </div>\n\n <FormFooter>\n <button @click=\"addToPlaylist\">\n <i class=\"fa fa-plus\" /> &nbsp; Add\n </button>\n </FormFooter>\n </Modal>\n </div>\n</template>\n\n<script>\nimport FormFooter from \"@/components/elements/FormFooter\";\nimport Loading from \"@/components/Loading\";\nimport Modal from \"@/components/Modal\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport MediaView from \"@/components/Media/View\";\nimport Nav from \"@/components/panels/Music/Nav\";\nimport Playlist from \"@/components/panels/Music/Playlist\";\nimport Playlists from \"@/components/panels/Music/Playlists\";\nimport Search from \"@/components/panels/Music/Search\";\nimport Library from \"@/components/panels/Music/Library\";\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: [\n 'add-to-playlist',\n 'add-to-tracklist',\n 'add-to-tracklist-from-edited-playlist',\n 'cd',\n 'clear',\n 'consume',\n 'info',\n 'load-playlist',\n 'new-playing-track',\n 'next',\n 'pause',\n 'play',\n 'play-playlist',\n 'playlist-add',\n 'playlist-edit',\n 'playlist-track-move',\n 'playlist-update',\n 'previous',\n 'random',\n 'refresh-status',\n 'remove-from-playlist',\n 'remove-from-tracklist',\n 'remove-playlist',\n 'repeat',\n 'search',\n 'search-clear',\n 'seek',\n 'select-device',\n 'set-volume',\n 'status-update',\n 'stop',\n 'swap-tracks',\n 'tracklist-move',\n 'tracklist-save',\n ],\n\n mixins: [Utils, MediaUtils],\n components: {Loading, Modal, Nav, MediaView, Playlist, Playlists, FormFooter, Search, Library},\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n\n loading: {\n type: Boolean,\n default: false,\n },\n\n config: {\n type: Object,\n default: () => {},\n },\n\n tracks: {\n type: Array,\n default: () => [],\n },\n\n images: {\n type: Object,\n default: () => {},\n },\n\n editedPlaylistTracks: {\n type: Array,\n default: () => [],\n },\n\n playlists: {\n type: Array,\n default: () => [],\n },\n\n status: {\n type: Object,\n default: () => {},\n },\n\n track: {\n type: Object,\n default: null,\n },\n\n editedPlaylist: {\n type: Number,\n },\n\n trackInfo: {\n type: Object,\n default: () => {},\n },\n\n searchResults: {\n type: Array,\n },\n\n libraryResults: {\n type: Array,\n },\n\n path: {\n type: Array,\n default: () => [],\n },\n\n devices: {\n type: Object,\n },\n\n activeDevice: {\n type: String,\n },\n\n selectedDevice: {\n type: String,\n },\n },\n\n data() {\n return {\n selectedView: 'playing',\n selectedPlaylists: [],\n addToPlaylistTrack: null,\n playlistFilter: '',\n navVisible: false,\n }\n },\n\n methods: {\n async onStatusEvent(event) {\n if (event.plugin_name !== this.pluginName)\n return\n\n this.$emit('status-update', event)\n },\n\n async onPlaylistEvent(event) {\n if (event.plugin_name !== this.pluginName)\n return\n\n this.$emit('playlist-update', event)\n },\n\n async onNewPlayingTrack(event) {\n if (event.plugin_name !== this.pluginName)\n return\n\n this.notify({\n html: `<b>${event.track?.artist}</b><br>${event.track?.title}`,\n image: {\n iconClass: 'fa fa-play',\n },\n })\n\n this.$emit('new-playing-track', event)\n },\n\n async openAddToPlaylist(track) {\n this.addToPlaylistTrack = track\n this.$refs.playlistsModal.isVisible = true\n },\n\n async addToPlaylist() {\n this.$emit('add-to-playlist', {\n track: this.addToPlaylistTrack,\n playlists: [...Array(this.selectedPlaylists.length).keys()].filter((i) => this.selectedPlaylists[i])\n })\n\n this.$refs.playlistsModal.isVisible = false\n this.addToPlaylistTrack = null\n this.playlistFilter = ''\n },\n\n async search(filter) {\n this.$emit('search', filter)\n this.$refs.trackInfo.isVisible = false\n this.selectedView = 'search'\n },\n\n selectDevice(id) {\n this.$emit('select-device', id)\n },\n\n refreshStatus() {\n this.$emit('refresh-status')\n },\n },\n\n mounted() {\n this.subscribe(this.onStatusEvent, 'on-status-update',\n 'platypush.message.event.music.MusicPlayEvent',\n 'platypush.message.event.music.MusicPauseEvent',\n 'platypush.message.event.music.MusicStopEvent',\n 'platypush.message.event.music.SeekChangeEvent',\n 'platypush.message.event.music.VolumeChangeEvent',\n 'platypush.message.event.music.MuteChangeEvent',\n 'platypush.message.event.music.PlaybackRepeatModeChangeEvent',\n 'platypush.message.event.music.PlaybackRandomModeChangeEvent',\n 'platypush.message.event.music.PlaybackConsumeModeChangeEvent',\n 'platypush.message.event.music.PlaybackSingleModeChangeEvent',\n )\n\n this.subscribe(this.onPlaylistEvent, 'on-playlist-update',\n 'platypush.message.event.music.PlaylistChangeEvent')\n\n this.subscribe(this.onNewPlayingTrack, 'on-new-playing-track',\n 'platypush.message.event.music.NewPlayingTrackEvent')\n\n this.$watch(() => this.trackInfo, (info) => {\n if (info != null)\n this.$refs.trackInfo.isVisible = true\n })\n },\n\n unmounted() {\n this.unsubscribe('on-status-update')\n this.unsubscribe('on-playlist-update')\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\nmain {\n height: 100%;\n background: $background-color;\n display: flex;\n flex-direction: row-reverse;\n\n .view-container {\n display: flex;\n flex-grow: 1;\n overflow: auto;\n }\n\n :deep(button) {\n background: none;\n padding: .5em .75em;\n border: 0;\n\n &:hover {\n border: 0;\n color: $default-hover-fg;\n }\n }\n\n :deep(a) {\n color: $default-fg;\n opacity: 0.65;\n\n &:hover {\n opacity: 0.75;\n border-bottom: 1px dotted;\n }\n }\n}\n\n.playlists-modal-container {\n :deep(.body) {\n display: flex;\n flex-direction: column;\n padding: 0 !important;\n }\n\n :deep(.filter) {\n padding: .33em;\n background-color: $default-bg-6;\n border-bottom: $default-border-2;\n\n input {\n width: 90%;\n }\n }\n\n :deep(.playlists) {\n overflow: auto;\n padding: 1.5em;\n\n label {\n display: flex;\n align-items: center;\n\n &:not(:last-child) {\n margin-bottom: .5em;\n }\n\n .name {\n margin-left: .5em;\n }\n }\n }\n}\n\n.track-info-container {\n :deep(.body) {\n height: 15em;\n overflow: auto;\n\n @include until($tablet) {\n width: 25em;\n }\n\n @include from($tablet) {\n width: 35em;\n }\n\n .file {\n user-select: text;\n }\n }\n}\n</style>\n","<template>\n <div class=\"form-footer\">\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n name: \"FormFooter\"\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.form-footer {\n height: 5em;\n padding: 1em;\n text-align: right;\n border-top: $default-border-2;\n}\n</style>\n","import { render } from \"./FormFooter.vue?vue&type=template&id=2495ce8a&scoped=true\"\nimport script from \"./FormFooter.vue?vue&type=script&lang=js\"\nexport * from \"./FormFooter.vue?vue&type=script&lang=js\"\n\nimport \"./FormFooter.vue?vue&type=style&index=0&id=2495ce8a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2495ce8a\"]])\n\nexport default __exports__","<template>\n <nav>\n <button class=\"menu-button mobile\" @click=\"$emit('toggle')\">\n <i class=\"fa fa-bars\" />\n </button>\n\n <li v-for=\"(view, name) in views\" :key=\"name\" :title=\"view.displayName\"\n :class=\"{selected: name === selectedView}\" @click=\"$emit('input', name)\">\n <i :class=\"view.iconClass\" />\n </li>\n </nav>\n</template>\n\n<script>\nexport default {\n name: \"Nav\",\n emits: ['input', 'toggle'],\n props: {\n selectedView: {\n type: String,\n },\n\n collapsed: {\n type: Boolean,\n default: false,\n },\n\n views: {\n type: Object,\n default: () => {\n return {\n playing: {\n iconClass: 'fas fa-play',\n displayName: 'Queue',\n },\n\n search: {\n iconClass: 'fas fa-search',\n displayName: 'Search',\n },\n\n playlists: {\n iconClass: 'fas fa-list-ul',\n displayName: 'Playlists',\n },\n\n library: {\n iconClass: 'fas fa-compact-disc',\n displayName: 'Library',\n },\n }\n }\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n\nnav {\n width: $music-nav-width;\n height: 100%;\n position: relative;\n background: $nav-collapsed-bg;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n box-shadow: 2.5px 0 4.5px 2px $nav-collapsed-fg;\n margin-left: 2.5px;\n overflow: hidden;\n\n .menu-button {\n position: absolute;\n top: 0.75em;\n left: 0;\n width: 100%;\n display: inline-flex;\n justify-content: center;\n padding: 0;\n margin: 0;\n font-size: 1.2em;\n border: 0;\n background: none;\n cursor: pointer;\n z-index: 1;\n\n &:hover {\n color: $default-hover-fg;\n }\n }\n\n li {\n display: flex;\n align-items: center;\n font-size: 1.2em;\n cursor: pointer;\n list-style: none;\n padding: .6em;\n opacity: 0.7;\n\n &.selected,\n &:hover {\n border-radius: 1.2em;\n margin: 0 0.2em;\n }\n\n &:hover {\n background: $nav-entry-collapsed-hover-bg;\n }\n\n &.selected {\n background: $nav-entry-collapsed-selected-bg;\n }\n\n }\n}\n</style>\n","import { render } from \"./Nav.vue?vue&type=template&id=0896abbc&scoped=true\"\nimport script from \"./Nav.vue?vue&type=script&lang=js\"\nexport * from \"./Nav.vue?vue&type=script&lang=js\"\n\nimport \"./Nav.vue?vue&type=style&index=0&id=0896abbc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0896abbc\"]])\n\nexport default __exports__","<template>\n <Loading v-if=\"loading\" />\n\n <div class=\"playlist fade-in\" v-else>\n <div class=\"header-container\">\n <MusicHeader ref=\"header\">\n <div class=\"col-7 filter\">\n <button class=\"back-btn\" title=\"Back\" @click=\"$emit('back')\" v-if=\"withBack\">\n <i class=\"fas fa-arrow-left\" />\n </button>\n\n <label>\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n </div>\n\n <div class=\"col-5 buttons\">\n <button class=\"mobile\" title=\"Menu\" @click=\"$emit('toggle-nav')\" v-if=\"showNavButton\">\n <i class=\"fas fa-bars\" />\n </button>\n\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\">\n <DropdownItem text=\"Add track\" icon-class=\"fa fa-plus\" @click=\"addTrack\" />\n <DropdownItem text=\"Refresh status\" icon-class=\"fa fa-sync\" @click=\"$emit('refresh-status')\" v-if=\"devices != null\" />\n <DropdownItem text=\"Save as playlist\" icon-class=\"fa fa-save\" :disabled=\"!tracks?.length\"\n @click=\"playlistSave\" v-if=\"withSave\" />\n <DropdownItem text=\"Swap tracks\" icon-class=\"fa fa-retweet\"\n v-if=\"withSwap && selectedTracks?.length === 2\"\n @click=\"$emit('swap', selectedTracks)\" />\n <DropdownItem :text=\"selectionMode ? 'End selection' : 'Start selection'\" icon-class=\"far fa-check-square\"\n :disabled=\"!tracks?.length\" @click=\"selectionMode = !selectionMode\" />\n <DropdownItem :text=\"selectedTracks?.length === tracks?.length ? 'Unselect all' : 'Select all'\"\n icon-class=\"fa fa-check-double\" :disabled=\"!tracks?.length\"\n @click=\"selectedTracks = selectedTracks.length === tracks.length ? [] : [...Array(tracks.length).keys()]\" />\n <DropdownItem :text=\"'Remove track' + (selectedTracks.length > 1 ? 's' : '')\"\n icon-class=\"fa fa-trash\" v-if=\"selectedTracks.length > 0\"\n @click=\"$emit('remove', [...(new Set(selectedTracks))])\" />\n <DropdownItem text=\"Clear playlist\" icon-class=\"fa fa-ban\"\n :disabled=\"!tracks?.length\" @click=\"$emit('clear')\" v-if=\"withClear\" />\n </Dropdown>\n\n <Dropdown title=\"Players\" icon-class=\"fa fa-volume-up\" v-if=\"Object.keys(devices || {}).length\">\n <DropdownItem v-for=\"(device, id) in devices\" :key=\"id\" v-text=\"device.name\"\n :item-class=\"{active: activeDevice === id, selected: selectedDevice === id}\"\n icon-class=\"fa fa-volume-up\" @click=\"$emit('select-device', id)\" />\n </Dropdown>\n </div>\n </MusicHeader>\n </div>\n\n <div class=\"body\" ref=\"body\" @scroll=\"onScroll\">\n <div class=\"no-content\" v-if=\"!tracks?.length\">\n No tracks are loaded\n </div>\n\n <div class=\"row track\"\n @dragstart=\"onTrackDragStart(i)\"\n @dragend=\"onTrackDragEnd(i)\"\n @dragover=\"onTrackDragOver(i)\"\n draggable=\"true\"\n v-for=\"i in displayedTrackIndices\"\n :key=\"i\"\n :data-index=\"i\"\n :class=\"trackClass(i)\"\n @click.left=\"onTrackClick($event, i)\"\n @click.right.prevent=\"$refs['menu' + i][0].toggle($event)\"\n @dblclick=\"$emit('play', {pos: i})\">\n <div class=\"col-10\">\n <div class=\"title\">\n {{ tracks[i].title || '[No Title]' }}\n <div class=\"playing-icon\" :class=\"{paused: status?.state === 'pause'}\" v-if=\"isPlayingTrack(i)\">\n <span v-for=\"i in [...Array(3).keys()]\" :key=\"i\" />\n </div>\n </div>\n\n <div class=\"artist\" v-if=\"tracks[i].artist\">\n <a v-text=\"tracks[i].artist\" @click.prevent=\"searchArtist(tracks[i])\" />\n </div>\n\n <div class=\"album\" v-if=\"tracks[i].album\">\n <a v-text=\"tracks[i].album\" @click.prevent=\"searchAlbum(tracks[i])\" />\n </div>\n </div>\n\n <div class=\"col-2 right-side\">\n <span class=\"duration\" v-text=\"tracks[i].time ? convertTime(tracks[i].time) : '-:--'\" />\n\n <span class=\"actions\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\" :ref=\"'menu' + i\">\n <DropdownItem text=\"Play\" icon-class=\"fa fa-play\" @click=\"onMenuPlay(i)\" />\n <DropdownItem text=\"Add to queue\" icon-class=\"fa fa-plus\"\n @click=\"$emit('add-to-queue', [...(new Set([...selectedTracks, i]))])\" v-if=\"withAddToQueue\" />\n <DropdownItem text=\"Add to playlist\" icon-class=\"fa fa-list-ul\" @click=\"$emit('add-to-playlist', tracks[i])\" />\n <DropdownItem text=\"Remove\" icon-class=\"fa fa-trash\" @click=\"$emit('remove', [...(new Set([...selectedTracks, i]))])\" />\n <DropdownItem text=\"Info\" icon-class=\"fa fa-info\" @click=\"$emit('info', tracks[i])\" />\n </Dropdown>\n </span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport MusicHeader from \"@/components/panels/Music/Header\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\nimport Loading from \"@/components/Loading\";\n\nexport default {\n name: \"Playlist\",\n mixins: [MediaUtils],\n components: {DropdownItem, Dropdown, MusicHeader, Loading},\n emits: [\n 'add',\n 'add-to-playlist',\n 'add-to-queue',\n 'add-to-queue-and-play',\n 'back',\n 'clear',\n 'info',\n 'move',\n 'play',\n 'refresh-status',\n 'remove',\n 'save',\n 'search',\n 'select-device',\n 'swap',\n 'toggle-nav',\n ],\n\n props: {\n tracks: {\n type: Array,\n default: () => [],\n },\n\n loading: {\n type: Boolean,\n default: false,\n },\n\n status: {\n type: Object,\n default: () => {},\n },\n\n devices: {\n type: Object,\n },\n\n selectedDevice: {\n type: String,\n },\n\n activeDevice: {\n type: String,\n },\n\n maxVisibleTracks: {\n type: Number,\n default: 100,\n },\n\n showNavButton: {\n type: Boolean,\n default: false,\n },\n\n withAddToQueue: {\n type: Boolean,\n default: false,\n },\n\n withBack: {\n type: Boolean,\n default: false,\n },\n\n withClear: {\n type: Boolean,\n default: false,\n },\n\n withSave: {\n type: Boolean,\n default: false,\n },\n\n withSwap: {\n type: Boolean,\n default: false,\n },\n },\n\n data() {\n return {\n selectionMode: false,\n selectedTracks: [],\n filter: '',\n infoTrack: null,\n sourcePos: null,\n targetPos: null,\n centerPos: 0,\n mounted: false,\n scrollTimeout: null,\n }\n },\n\n computed: {\n selectedTracksSet() {\n return new Set(this.selectedTracks)\n },\n\n trackIndicesByToken() {\n const indices = {}\n this.tracks.forEach((track, i) => {\n const token = [track?.artist, track?.album, track?.title]\n .filter((field) => field?.trim()?.length)\n .map((field) => field.trim().toLowerCase())\n .join(' ')\n\n if (!indices[token])\n indices[token] = new Set()\n indices[token].add(i)\n })\n\n return indices\n },\n\n displayedTrackIndices() {\n let positions = [...Array(this.tracks.length).keys()]\n\n if (this.filter?.length) {\n const filter = this.filter?.trim()?.replace(/\\s+/g, ' ').toLowerCase()\n const matchingPositions = new Set()\n Object.entries(this.trackIndicesByToken).forEach(([key, positions]) => {\n if (key.indexOf(filter) < 0)\n return\n\n matchingPositions.add(...positions)\n })\n\n positions = [...matchingPositions]\n positions.sort()\n }\n\n if (positions.length > this.maxVisibleTracks) {\n const offset = Math.max(0, this.centerPos - Math.floor(this.maxVisibleTracks / 2))\n positions = positions.slice(offset, offset + this.maxVisibleTracks)\n }\n\n return positions\n },\n },\n\n methods: {\n getTrackElements() {\n return this.$refs.body.querySelectorAll('.track')\n },\n\n onTrackClick(event, pos) {\n if (event.shiftKey) {\n const selectedTracks = this.selectedTracks.sort()\n if (!selectedTracks.length) {\n this.selectedTracks = [pos]\n } else if (pos < selectedTracks[0]) {\n this.selectedTracks = [\n ...this.selectedTracks,\n ...[...Array(selectedTracks[0] - pos).keys()].map((i) => i + pos)\n ]\n } else if (pos > selectedTracks[selectedTracks.length - 1]) {\n this.selectedTracks = [\n ...this.selectedTracks,\n ...[...Array(pos - selectedTracks[selectedTracks.length - 1] + 1).keys()].\n map((i) => i + selectedTracks[selectedTracks.length - 1])\n ]\n }\n } else {\n const idx = this.selectedTracks.indexOf(pos)\n if (this.selectionMode || event.ctrlKey) {\n if (idx >= 0)\n this.selectedTracks.splice(idx, 1)\n else\n this.selectedTracks.push(pos)\n } else {\n if (idx >= 0)\n this.selectedTracks = []\n else\n this.selectedTracks = [pos]\n }\n }\n },\n\n isPlayingTrack(i) {\n // If the state is not play or pause, then no track is playing.\n if (this.status?.state !== 'play' && this.status?.state !== 'pause')\n return false\n\n // If withAddToQueue is not enabled, then we are on the tracklist view.\n // The playing track is only highlighted if the track is playing.\n return (\n !this.withAddToQueue &&\n this.status?.playingPos === i\n )\n },\n\n trackClass(i) {\n return {\n selected: this.selectedTracksSet.has(i),\n active: this.isPlayingTrack(i),\n }\n },\n\n addTrack() {\n const track = prompt('Item path or URL')\n if (!track?.length)\n return\n\n this.$emit('add', track)\n },\n\n onMenuPlay(i) {\n if (this.withAddToQueue)\n this.$emit('add-to-queue-and-play', [...(new Set([...this.selectedTracks, i]))])\n else\n this.$emit('play', {pos: i})\n },\n\n onTrackDragStart(track) {\n this.sourcePos = track\n if (!this.selectedTracksSet.has(track))\n this.selectedTracks = [track]\n\n this.$nextTick(() => {\n const selectedTracks = [...this.getTrackElements()].filter(\n (_, i) => this.selectedTracksSet.has(i)\n )\n\n selectedTracks.forEach((track) => track.classList.add('dragging'))\n })\n },\n\n onTrackDragEnd() {\n this.getTrackElements().forEach((track) => {\n track.classList.remove('dragover')\n track.classList.remove('top')\n track.classList.remove('bottom')\n })\n\n if (!(this.sourcePos == null || this.targetPos == null || this.sourcePos === this.targetPos)) {\n const from = this.selectedTracks.length ? this.selectedTracks : [this.sourcePos]\n this.$emit('move', {from: from, to: this.targetPos})\n }\n\n this.sourcePos = null\n this.targetPos = null\n this.selectedTracks = []\n this.getTrackElements().forEach((track) => track.classList.remove('dragging'))\n },\n\n onTrackDragOver(track) {\n this.targetPos = track\n const tracks = this.getTrackElements()\n const trackEl = [...tracks].find((t) => parseInt(t.dataset.index || -1) === track)\n const minSelected = Math.min(...this.selectedTracks)\n\n tracks.forEach((track) => {\n track.classList.remove('dragover')\n track.classList.remove('top')\n track.classList.remove('bottom')\n })\n\n if (track === minSelected)\n return\n\n trackEl.classList.add('dragover')\n track > minSelected ? trackEl.classList.add('bottom') : trackEl.classList.add('top')\n },\n\n onScroll() {\n const offset = this.$refs.body.scrollTop\n const bodyHeight = parseFloat(getComputedStyle(this.$refs.body).height)\n const scrollHeight = this.$refs.body.scrollHeight\n\n if (offset < 5) {\n if (this.scrollTimeout)\n return\n\n this.scrollTimeout = setTimeout(() => {\n this.centerPos = Math.max(0, parseInt(this.centerPos - (this.maxVisibleTracks / 1.5)))\n this.$refs.body.scrollTop = 6\n this.scrollTimeout = null\n }, 250)\n } else if (offset >= (scrollHeight - bodyHeight - 5)) {\n if (this.scrollTimeout)\n return\n\n this.scrollTimeout = setTimeout(() => {\n this.centerPos = Math.min(this.tracks.length - 1, parseInt(this.centerPos + (this.maxVisibleTracks / 1.5)))\n this.scrollTimeout = null\n }, 250)\n }\n },\n\n playlistSave() {\n const name = prompt('Playlist name')\n if (!name?.length)\n return\n\n this.$emit('save', name)\n },\n\n scrollToTrack(pos) {\n this.centerPos = pos || this.status?.playingPos || 0\n this.$nextTick(() => {\n if (!this.$refs.body) {\n this.$watch(() => this.$refs.body, () => {\n if (!this.mounted)\n this.scrollToTrack(pos)\n })\n\n return\n }\n\n [...this.$refs.body.querySelectorAll('.track')]\n .filter((track) => track.classList.contains('active'))\n .forEach((track) => track.scrollIntoView({block: 'center', behavior: 'smooth'}))\n\n this.mounted = true\n })\n },\n\n searchArtist(track) {\n const args = {}\n if (track.artist_uri)\n args.uris = [track.artist_uri]\n\n if (track.artist)\n args.artist = track.artist\n else {\n console.warn('No artist information available')\n console.debug(track)\n return\n }\n\n this.$emit('search', args)\n },\n\n searchAlbum(track) {\n const args = {}\n if (track.album_uri)\n args.uris = [track.album_uri]\n\n if (track.artist && track.album) {\n args.artist = track.artist\n args.album = track.album\n } else {\n console.warn('No artist/album information available')\n console.debug(track)\n return\n }\n\n this.$emit('search', args)\n },\n },\n\n mounted() {\n // Add the scrolling listeners only if we are on the queue view.\n if (!this.withAddToQueue) {\n this.scrollToTrack()\n this.$watch(() => this.status, () => this.scrollToTrack())\n this.$watch(() => this.filter, (filter) => {\n if (!filter?.length)\n this.scrollToTrack()\n })\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n@import 'track.scss';\n@import '../../Media/vars.scss';\n\n.playlist {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .header-container {\n button {\n border: 0;\n background: none;\n }\n\n .filter {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n label {\n flex-grow: 1;\n\n input[type=\"search\"] {\n width: 100%;\n }\n }\n }\n\n .buttons {\n direction: rtl;\n\n .dropdown-container {\n direction: ltr;\n }\n }\n }\n\n :deep(.header) {\n .back-btn {\n padding-left: .25em;\n }\n }\n\n .body {\n height: calc(100% - #{$music-header-height} - #{$media-ctrl-panel-height});\n overflow: auto;\n }\n\n .no-content {\n height: 100%;\n }\n}\n\n.playing-icon {\n display: inline-block;\n position: relative;\n margin-left: .75em;\n width: 1.5em;\n height: 1em;\n\n @keyframes playing_bar {\n 0% {\n height: 0\n }\n 12.5% {\n height: 75%\n }\n 25% {\n height: 100%\n }\n 37.5% {\n height: 10%\n }\n 50% {\n height: 40%\n }\n 62.5% {\n height: 50%\n }\n 75% {\n height: 30%\n }\n 87.5% {\n height: 55%\n }\n 100% {\n height: 0\n }\n }\n\n span {\n @include animation(0.2s);\n display: block;\n position: absolute;\n bottom: 0;\n width: .25em;\n height: 100%;\n background: $default-hover-fg-2;\n animation-name: playing_bar;\n animation-iteration-count: infinite;\n\n &:nth-child(1){\n left: 0;\n animation-duration: 2s;\n }\n\n &:nth-child(2){\n left: 6px;\n animation-duration: 4s;\n }\n\n &:nth-child(3){\n left: 12px;\n animation-duration: 1s;\n }\n }\n\n &.paused {\n span {\n animation-play-state: paused;\n }\n }\n}\n\n:deep(.track-info-content) {\n .attr {\n opacity: 0.75;\n }\n\n .value {\n text-align: right;\n }\n}\n</style>\n","<template>\n <div class=\"header\">\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n name: \"Header\",\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n\n.header {\n width: 100%;\n height: $music-header-height;\n background: $menu-panel-bg;\n padding: .5em;\n box-shadow: $border-shadow-bottom;\n\n :deep(.dropdown) {\n .item.active {\n color: $default-hover-fg;\n }\n\n .item.selected {\n font-weight: bold;\n }\n }\n}\n</style>\n","import { render } from \"./Header.vue?vue&type=template&id=7e4bd102&scoped=true\"\nimport script from \"./Header.vue?vue&type=script&lang=js\"\nexport * from \"./Header.vue?vue&type=script&lang=js\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=7e4bd102&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7e4bd102\"]])\n\nexport default __exports__","import { render } from \"./Playlist.vue?vue&type=template&id=1c4503ee&scoped=true\"\nimport script from \"./Playlist.vue?vue&type=script&lang=js\"\nexport * from \"./Playlist.vue?vue&type=script&lang=js\"\n\nimport \"./Playlist.vue?vue&type=style&index=0&id=1c4503ee&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c4503ee\"]])\n\nexport default __exports__","<template>\n <Loading v-if=\"loading\" />\n\n <div class=\"editor-container fade-in\" v-else-if=\"editedPlaylist != null\">\n <Playlist\n :tracks=\"tracks || []\"\n :status=\"status\"\n :devices=\"devices\"\n :selected-device=\"selectedDevice\"\n :active-device=\"activeDevice\"\n :show-nav-button=\"showNavButton\"\n :with-add-to-queue=\"true\"\n :with-back=\"true\"\n @add=\"$emit('playlist-add', $event)\"\n @add-to-playlist=\"$emit('add-to-playlist', $event)\"\n @add-to-queue=\"$emit('load-tracks', {tracks: $event, play: false})\"\n @add-to-queue-and-play=\"$emit('load-tracks', {tracks: $event, play: true})\"\n @back=\"$emit('playlist-edit', null)\"\n @info=\"$emit('info', $event)\"\n @move=\"$emit('track-move', {...$event, playlist: editedPlaylist})\"\n @play=\"$emit('load-tracks', {tracks: [$event], play: true})\"\n @refresh-status=\"$emit('refresh-status')\"\n @remove=\"$emit('remove-track', $event)\"\n @search=\"$emit('search', $event)\"\n @select-device=\"$emit('select-device', $event)\"\n @toggle-nav=\"$emit('toggle-nav')\" />\n </div>\n\n <div class=\"playlists fade-in\" v-else>\n <div class=\"header-container\">\n <MusicHeader ref=\"header\">\n <div class=\"col-7 filter\">\n <label>\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n </div>\n\n <div class=\"col-5 buttons\">\n <Dropdown title=\"Players\" icon-class=\"fa fa-volume-up\" v-if=\"Object.keys(devices || {}).length\">\n <DropdownItem v-for=\"(device, id) in devices\" :key=\"id\" v-text=\"device.name\"\n :item-class=\"{active: activeDevice === id, selected: selectedDevice === id}\"\n icon-class=\"fa fa-volume-up\" @click=\"$emit('select-device', id)\" />\n </Dropdown>\n\n <button title=\"Refresh status\" @click=\"$emit('refresh-status')\" v-if=\"devices != null\">\n <i class=\"fa fa-sync\"></i>\n </button>\n\n <button class=\"mobile\" title=\"Menu\" @click=\"$emit('toggle-nav')\" v-if=\"showNavButton\">\n <i class=\"fas fa-bars\" />\n </button>\n </div>\n </MusicHeader>\n </div>\n\n <div class=\"body\" ref=\"body\">\n <div class=\"no-content\" v-if=\"!playlists?.length\">\n No playlists found\n </div>\n\n <div class=\"row playlist\" :class=\"{hidden: !displayedPlaylists.has(i)}\"\n v-for=\"(playlist, i) in playlists\" :key=\"i\" @click=\"$emit('playlist-edit', i)\"\n @dblclick=\"$emit('load', i)\">\n <div class=\"col-10 name-container\">\n <div class=\"icon\">\n <i class=\"fa fa-list\" />\n </div>\n <div class=\"name\" v-text=\"playlist.name || '[No Name]'\" />\n </div>\n\n <div class=\"col-2 right-side\">\n <span class=\"actions\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\">\n <DropdownItem text=\"Play\" icon-class=\"fa fa-play\" @click.stop=\"$emit('play', i)\" />\n <DropdownItem text=\"Load\" icon-class=\"fa fa-list-ul\" @click.stop=\"$emit('load', i)\" />\n <DropdownItem text=\"Edit\" icon-class=\"fa fa-edit\" @click.stop=\"$emit('playlist-edit', i)\" />\n <DropdownItem text=\"Remove\" icon-class=\"fa fa-trash\" @click.stop=\"$emit('remove', i)\" />\n </Dropdown>\n </span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport MusicHeader from \"@/components/panels/Music/Header\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\nimport Loading from \"@/components/Loading\";\nimport Playlist from \"./Playlist\";\n\nexport default {\n name: \"Playlists\",\n mixins: [MediaUtils],\n components: {\n Dropdown,\n DropdownItem,\n MusicHeader,\n Loading,\n Playlist,\n },\n\n emits: [\n 'add-to-playlist',\n 'info',\n 'load',\n 'load-tracks',\n 'play',\n 'playlist-add',\n 'playlist-edit',\n 'refresh-status',\n 'remove',\n 'remove-track',\n 'search',\n 'select-device',\n 'track-move',\n ],\n\n props: {\n playlists: {\n type: Array,\n default: () => [],\n },\n\n loading: {\n type: Boolean,\n default: false,\n },\n\n tracks: {\n type: Array,\n default: () => [],\n },\n\n editedPlaylist: {\n type: Number,\n },\n\n devices: {\n type: Object,\n },\n\n status: {\n type: Object,\n default: () => {},\n },\n\n selectedDevice: {\n type: String,\n },\n\n activeDevice: {\n type: String,\n },\n\n showNavButton: {\n type: Boolean,\n default: false,\n },\n },\n\n data() {\n return {\n selectedTracks: [],\n filter: '',\n trackFilter: '',\n sourcePos: null,\n targetPos: null,\n }\n },\n\n computed: {\n selectedTracksSet() {\n return new Set(this.selectedTracks)\n },\n\n displayedPlaylists() {\n const positions = [...Array(this.playlists.length).keys()]\n if (!this.filter?.length)\n return new Set(positions)\n\n const self = this\n const filter = (self.filter || '').toLowerCase()\n\n return new Set(\n positions.filter((pos) => {\n const track = this.playlists[pos]\n return (track?.name || '').toLowerCase().indexOf(filter) >= 0\n })\n )\n },\n\n displayedTracks() {\n const positions = [...Array(this.tracks.length).keys()]\n if (!this.trackFilter?.length)\n return new Set(positions)\n\n const self = this\n const filter = (self.trackFilter || '').toLowerCase()\n\n return new Set(\n positions.filter((pos) => {\n const track = this.tracks[pos]\n return (track?.artist || '').toLowerCase().indexOf(filter) >= 0\n || (track?.title || '').toLowerCase().indexOf(filter) >= 0\n || (track?.album || '').toLowerCase().indexOf(filter) >= 0\n })\n )\n },\n },\n\n methods: {\n onTrackClick(event, pos) {\n if (event.shiftKey) {\n const selectedTracks = this.selectedTracks.sort()\n if (!selectedTracks.length) {\n this.selectedTracks = [pos]\n } else if (pos < selectedTracks[0]) {\n this.selectedTracks = [\n ...this.selectedTracks,\n ...[...Array(selectedTracks[0] - pos).keys()].map((i) => i + pos)\n ]\n } else if (pos > selectedTracks[selectedTracks.length - 1]) {\n this.selectedTracks = [\n ...this.selectedTracks,\n ...[...Array(pos - selectedTracks[selectedTracks.length - 1] + 1).keys()].\n map((i) => i + selectedTracks[selectedTracks.length - 1])\n ]\n }\n } else {\n const idx = this.selectedTracks.indexOf(pos)\n if (event.ctrlKey) {\n if (idx >= 0)\n this.selectedTracks.splice(idx, 1)\n else\n this.selectedTracks.push(pos)\n } else {\n if (idx >= 0)\n this.selectedTracks = []\n else\n this.selectedTracks = [pos]\n }\n }\n },\n\n onTrackDragStart(track) {\n this.sourcePos = track\n },\n\n onTrackDragEnd() {\n this.$refs.editor.querySelectorAll('.track').forEach((track) => track.classList.remove('dragover'));\n if (this.sourcePos == null || this.targetPos == null || this.sourcePos === this.targetPos)\n return\n\n this.$emit('track-move', {from: this.selectedTracks, to: this.targetPos, playlist: this.editedPlaylist})\n this.sourcePos = null\n this.targetPos = null\n this.selectedTracks = []\n },\n\n onTrackDragOver(track) {\n this.targetPos = track\n const tracks = this.$refs.editor.querySelectorAll('.track')\n tracks.forEach((track) => track.classList.remove('dragover'));\n [...tracks][track].classList.add('dragover')\n },\n\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n@import 'track.scss';\n@import '../../Media/vars.scss';\n\n.playlists {\n width: 100%;\n display: flex;\n flex-direction: column;\n\n .header-container {\n .filter {\n input {\n width: 100%;\n }\n }\n }\n\n .body {\n height: calc(100% - #{$music-header-height} - #{$media-ctrl-panel-height});\n overflow: auto;\n }\n\n .no-content {\n height: 100%;\n }\n\n .playlist {\n display: flex;\n justify-content: center;\n padding: .75em .25em .25em .25em;\n box-shadow: 0 2.5px 2px -1px $default-shadow-color;\n cursor: pointer;\n\n .name-container {\n display: flex;\n align-items: center;\n\n .icon {\n margin-right: .5em;\n opacity: .85;\n }\n\n .name {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n &:hover {\n background: $hover-bg;\n }\n\n &.active {\n background: $active-bg;\n }\n\n &.selected {\n background: $selected-bg;\n }\n\n .right-side {\n display: flex;\n justify-content: flex-end;\n }\n }\n\n .header {\n .buttons {\n display: flex;\n align-items: flex-end;\n justify-content: flex-end;\n }\n }\n}\n\n.editor-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n\n .header-container {\n width: 100%;\n }\n\n :deep(.header) {\n .back-btn {\n padding-left: .25em;\n }\n\n .search-box {\n input {\n width: 65%;\n }\n }\n }\n\n .editor {\n width: 100%;\n height: calc(100% - #{$music-header-height} - #{$media-ctrl-panel-height});\n display: flex;\n flex-direction: column;\n overflow: auto;\n }\n}\n</style>\n","import { render } from \"./Playlists.vue?vue&type=template&id=be680816&scoped=true\"\nimport script from \"./Playlists.vue?vue&type=script&lang=js\"\nexport * from \"./Playlists.vue?vue&type=script&lang=js\"\n\nimport \"./Playlists.vue?vue&type=style&index=0&id=be680816&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-be680816\"]])\n\nexport default __exports__","<template>\n <div class=\"search fade-in\" :class=\"{'form-collapsed': formCollapsed}\">\n <button class=\"nav-toggler mobile floating\" title=\"Menu\" @click=\"$emit('toggle-nav')\" v-if=\"showNavButton && !formCollapsed\">\n <i class=\"fas fa-bars\" />\n </button>\n\n <div class=\"form-container\" v-if=\"!formCollapsed\" @submit.prevent=\"$emit('search', filteredQuery)\">\n <form class=\"search-form\">\n <div class=\"row\">\n <label>\n <input type=\"text\" placeholder=\"Any\" v-model=\"query.any\" />\n </label>\n </div>\n\n <div class=\"row\">\n <label>\n <input type=\"text\" placeholder=\"Artist\" v-model=\"query.artist\" />\n </label>\n </div>\n\n <div class=\"row\">\n <label>\n <input type=\"text\" placeholder=\"Title\" v-model=\"query.title\" />\n </label>\n </div>\n\n <div class=\"row\">\n <label>\n <input type=\"text\" placeholder=\"Album\" v-model=\"query.album\" />\n </label>\n </div>\n\n <FormFooter>\n <button @click=\"clear\">\n <i class=\"icon fa fa-times\" />\n <span class=\"btn-title\">Clear</span>\n </button>\n\n <button type=\"submit\">\n <i class=\"icon fa fa-search\" />\n <span class=\"btn-title\">Search</span>\n </button>\n </FormFooter>\n </form>\n </div>\n\n <MusicHeader v-else>\n <label class=\"col-10 search-box\">\n <button class=\"back-btn\" title=\"Back\" @click=\"clear\">\n <i class=\"fas fa-arrow-left\" />\n </button>\n\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n\n <span class=\"col-2 buttons\">\n <button class=\"mobile\" title=\"Menu\" @click=\"$emit('toggle-nav')\" v-if=\"showNavButton\">\n <i class=\"fas fa-bars\" />\n </button>\n </span>\n </MusicHeader>\n\n <div class=\"results\">\n <div class=\"row track\" :class=\"{selected: selectedResults.has(i), hidden: !displayedTracks.has(i)}\"\n v-for=\"(result, i) in results\" :key=\"i\" @click=\"resultClick(i, $event)\">\n <div class=\"col-10\">\n <div class=\"title-container\">\n <div class=\"type\" :title=\"result.type\" v-if=\"result.type\">\n <i class=\"fa fa-user\" v-if=\"result.type === 'artist'\" />\n <i class=\"fa fa-compact-disc\" v-else-if=\"result.type === 'album'\" />\n <i class=\"fa fa-list\" v-else-if=\"result.type === 'playlist'\" />\n <i class=\"fa fa-music\" v-else />\n </div>\n\n <div class=\"title\">\n <span v-if=\"result.type === 'playlist'\">{{ result.name || result.title || '[No Name]' }}</span>\n <span v-else-if=\"result.type === 'artist'\">{{ result.name || result.title || result.artist || '[No Name]' }}</span>\n <span v-else-if=\"result.type === 'album'\">{{ result.name || result.title || result.album || '[No Title]' }}</span>\n <span v-else>{{ result.title || '[No Title]' }}</span>\n </div>\n </div>\n\n <div class=\"artist\" v-text=\"result.artist\" v-if=\"result.artist?.length && result.type !== 'artist'\" />\n <div class=\"album\" v-text=\"result.album\" v-if=\"result.album?.length && result.type !== 'album'\" />\n </div>\n\n <div class=\"col-2 right-side\">\n <span class=\"duration\" v-text=\"result.time && parseInt(result.time) ? convertTime(result.time) : '-:--'\" />\n\n <span class=\"actions\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\">\n <DropdownItem text=\"Play\" icon-class=\"fa fa-play\" @click=\"play(i)\" />\n <DropdownItem text=\"Add to queue\" icon-class=\"fa fa-plus\" @click=\"load(i)\" />\n <DropdownItem text=\"Add to playlist\" icon-class=\"fa fa-list-ul\" @click=\"$emit('add-to-playlist', result)\" />\n <DropdownItem text=\"Info\" icon-class=\"fa fa-info\" @click=\"$emit('info', result)\" />\n </Dropdown>\n </span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\nimport FormFooter from \"@/components/elements/FormFooter\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport MusicHeader from \"@/components/panels/Music/Header\";\n\nexport default {\n name: \"Search\",\n components: {Dropdown, DropdownItem, FormFooter, MusicHeader},\n mixins: [MediaUtils],\n emits: [\n 'add-to-playlist',\n 'clear',\n 'info',\n 'load',\n 'play',\n 'refresh-status',\n 'search',\n 'select-device',\n 'toggle-nav',\n ],\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n\n results: {\n type: Array,\n },\n\n devices: {\n type: Object,\n },\n\n selectedDevice: {\n type: String,\n },\n\n activeDevice: {\n type: String,\n },\n\n showNavButton: {\n type: Boolean,\n default: false,\n },\n },\n\n data() {\n return {\n selectedResults: new Set(),\n filter: '',\n query: {\n any: '',\n artist: '',\n title: '',\n album: '',\n },\n }\n },\n\n computed: {\n formCollapsed() {\n return this.results?.length > 0\n },\n\n filteredQuery() {\n return Object.entries(this.query).filter((o) => o[1]?.length).reduce((obj, [k, v]) => {\n obj[k] = v\n return obj\n }, {})\n },\n\n displayedTracks() {\n return new Set([...Array(this.results?.length || 0).keys()].filter((i) => {\n const result = this.results[i]\n if (!this.filter?.length)\n return result\n\n const filter = this.filter.toLowerCase()\n return (result?.artist || '').toLowerCase().indexOf(filter) >= 0 ||\n (result?.title || '').toLowerCase().indexOf(filter) >= 0 ||\n (result?.album || '').toLowerCase().indexOf(filter) >= 0\n }))\n },\n },\n\n methods: {\n clear() {\n this.$emit('clear')\n this.selectedResults = new Set()\n },\n\n resultClick(pos, event) {\n if (event.shiftKey) {\n if (this.selectedResults.size > 0 && !this.selectedResults.has(pos)) {\n const results = [...this.selectedResults]\n const min = Math.min(Math.min(results), pos)\n const max = Math.max(Math.max(results), pos)\n this.selectedResults = new Set([...Array(max-min+1).keys()].map((i) => i+min))\n }\n } else {\n if (!event.ctrlKey)\n this.selectedResults = new Set()\n if (this.selectedResults.has(pos))\n this.selectedResults.delete(pos)\n else\n this.selectedResults.add(pos)\n }\n },\n\n play(pos) {\n this.$emit('play', this.results[pos])\n if (this.selectedResults.size)\n this.selectedResults.forEach((result) => {\n this.$emit('load', result)\n })\n },\n\n load(pos) {\n if (!this.selectedResults.has(pos))\n this.selectedResults.add(pos)\n\n this.selectedResults.forEach((i) => {\n this.$emit('load', this.results[i])\n })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n@import 'track.scss';\n@import '../../Media/vars.scss';\n\n.search {\n width: 100%;\n height: calc(100% - #{$media-ctrl-panel-height});\n display: flex;\n flex-direction: column;\n position: relative;\n\n .nav-toggler.floating {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n }\n\n &:not(.form-collapsed) {\n justify-content: center;\n align-items: center;\n }\n\n .form-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n }\n\n form {\n width: calc(100% - 2em);\n max-width: 30em;\n height: 17em;\n background: $default-bg-5;\n display: flex;\n flex-direction: column;\n padding: 2em;\n border-radius: 1.5em;\n\n .row {\n margin: .25em 0;\n }\n\n input[type=text] {\n width: 100%;\n }\n\n :deep(.form-footer) {\n height: 3em;\n padding-right: 0;\n border: 0;\n }\n\n :deep(button) {\n border: 0;\n\n &[type=submit] {\n background: none;\n }\n\n &:hover {\n border: 0;\n color: $default-hover-fg-2;\n }\n }\n }\n\n .results {\n height: calc(100% - #{$music-header-height});\n flex-grow: 1;\n overflow: auto;\n\n .title-container {\n display: flex;\n align-items: center;\n \n .type {\n opacity: .85;\n margin-right: .5em;\n }\n }\n }\n\n :deep(.header) {\n display: flex;\n width: 100%;\n align-items: center;\n\n .search-box {\n width: 70%;\n display: flex;\n align-items: center;\n\n .back-btn {\n margin-left: 0;\n padding-left: 0;\n }\n\n input[type=search] {\n width: 100%;\n }\n }\n\n .buttons {\n width: 30%;\n display: inline-flex;\n justify-content: flex-end;\n margin: 0;\n }\n }\n}\n</style>\n","import { render } from \"./Search.vue?vue&type=template&id=897f30f2&scoped=true\"\nimport script from \"./Search.vue?vue&type=script&lang=js\"\nexport * from \"./Search.vue?vue&type=script&lang=js\"\n\nimport \"./Search.vue?vue&type=style&index=0&id=897f30f2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-897f30f2\"]])\n\nexport default __exports__","<template>\n <div class=\"library fade-in\">\n <Loading v-if=\"loading\" />\n\n <MusicHeader>\n <label class=\"col-10 search-box\">\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n\n <div class=\"col-2 buttons\">\n <button class=\"mobile\" title=\"Menu\" @click=\"$emit('toggle-nav')\" v-if=\"showNavButton\">\n <i class=\"fas fa-bars\" />\n </button>\n </div>\n </MusicHeader>\n\n <div class=\"results\">\n <div class=\"row track back-track\" @click=\"back\" v-if=\"!isRoot\">\n <div class=\"icon-container\">\n <i class=\"icon fa fa-folder\" />\n </div>\n <div class=\"result-container\">\n <div class=\"title\">..</div>\n </div>\n </div>\n\n <div class=\"row track\" :class=\"{selected: selectedResults.has(i), hidden: !displayedResults.has(i)}\"\n v-for=\"(result, i) in results\" :key=\"i\" @click=\"resultClick(i, $event)\">\n <div class=\"col-10 left-side\">\n <div class=\"icon-container\">\n <i class=\"icon fa fa-folder\" v-if=\"isDirectory(i)\" />\n <i class=\"icon fa fa-user\" v-else-if=\"isArtist(i)\" />\n <i class=\"icon fa fa-compact-disc\" v-else-if=\"isAlbum(i)\" />\n <i class=\"icon fa fa-list\" v-else-if=\"isPlaylist(i)\" />\n <i class=\"icon fa fa-music\" v-else-if=\"result.file\" />\n </div>\n\n <div class=\"info\">\n <div class=\"title\">\n <span v-if=\"isDirectory(i)\" v-text=\"result.name || result.directory.split('/').pop()\" />\n <span v-else-if=\"isArtist(i)\" v-text=\"result.name || result.artist\" />\n <span v-else-if=\"isAlbum(i)\" v-text=\"result.name || result.album\" />\n <span v-else-if=\"isPlaylist(i)\" v-text=\"result.name || result.playlist\" />\n <span v-else-if=\"result.title\" v-text=\"result.title\" />\n </div>\n\n <div class=\"artist-album\">\n <div class=\"artist\" v-text=\"result.artist\" v-if=\"result.artist?.length\" />\n <div class=\"album\" v-text=\"result.album\" v-if=\"result.album?.length\" />\n </div>\n </div>\n </div>\n\n <div class=\"col-2 right-side\">\n <span class=\"duration\" v-text=\"result.time && parseInt(result.time) ? convertTime(result.time) : '-:--'\" />\n\n <span class=\"actions\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\">\n <DropdownItem text=\"Play\" icon-class=\"fa fa-play\" @click=\"play(i)\" />\n <DropdownItem text=\"Add to queue\" icon-class=\"fa fa-plus\" @click=\"load(i)\" />\n <DropdownItem text=\"Add to playlist\" icon-class=\"fa fa-list-ul\" @click=\"$emit('add-to-playlist', result)\" />\n <DropdownItem text=\"Info\" icon-class=\"fa fa-info\" @click=\"$emit('info', result)\" />\n </Dropdown>\n </span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport MusicHeader from \"@/components/panels/Music/Header\";\n\nexport default {\n name: \"Library\",\n components: {Dropdown, DropdownItem, MusicHeader, Loading},\n mixins: [MediaUtils],\n emits: [\n 'add-to-playlist',\n 'cd',\n 'info',\n 'load',\n 'play',\n 'refresh-status',\n 'search',\n 'select-device',\n 'toggle-nav',\n ],\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n\n results: {\n type: Array,\n },\n\n path: {\n type: Array,\n default: () => [],\n },\n\n devices: {\n type: Object,\n },\n\n selectedDevice: {\n type: String,\n },\n\n activeDevice: {\n type: String,\n },\n\n showNavButton: {\n type: Boolean,\n default: false,\n },\n },\n\n data() {\n return {\n selectedResults: new Set(),\n filter: '',\n query: {\n any: '',\n artist: '',\n title: '',\n album: '',\n },\n }\n },\n\n computed: {\n displayedResults() {\n return new Set([...Array(this.results?.length || 0).keys()].filter((i) => {\n const result = this.results[i]\n if (!this.filter?.length)\n return result\n\n const filter = this.filter.toLowerCase()\n return (result?.artist || '').toLowerCase().indexOf(filter) >= 0 ||\n (result?.title || '').toLowerCase().indexOf(filter) >= 0 ||\n (result?.album || '').toLowerCase().indexOf(filter) >= 0 ||\n (result?.directory || '').toLowerCase().indexOf(filter) >= 0\n }))\n },\n\n isRoot() {\n return !this.path?.length || !this.path[0]?.length || this.path[0] === '/'\n },\n },\n\n methods: {\n resultClick(pos, event) {\n if (event.shiftKey) {\n if (this.selectedResults.size > 0 && !this.selectedResults.has(pos)) {\n const results = [...this.selectedResults]\n const min = Math.min(Math.min(results), pos)\n const max = Math.max(Math.max(results), pos)\n this.selectedResults = new Set([...Array(max-min+1).keys()].map((i) => i+min))\n }\n } else if (event.ctrlKey) {\n if (this.selectedResults.has(pos))\n this.selectedResults.delete(pos)\n else\n this.selectedResults.add(pos)\n } else {\n if (this.isDirectory(pos) || this.isArtist(pos) || this.isAlbum(pos) || this.isPlaylist(pos)) {\n const dir = this.results[pos].uri || this.results[pos].directory\n this.$emit('cd', [...this.path, dir])\n } else {\n this.selectedResults = new Set()\n if (this.selectedResults.has(pos))\n this.selectedResults.delete(pos)\n else\n this.selectedResults.add(pos)\n }\n }\n },\n\n play(pos) {\n this.$emit('play', this.results[pos])\n if (this.selectedResults.size)\n this.selectedResults.forEach((result) => {\n this.$emit('load', result)\n })\n },\n\n load(pos) {\n if (!this.selectedResults.has(pos))\n this.selectedResults.add(pos)\n\n this.selectedResults.forEach((i) => {\n this.$emit('load', this.results[i])\n })\n },\n\n back() {\n if (this.isRoot)\n return\n\n this.$emit('cd', this.path.slice(0, -1))\n },\n\n isDirectory(i) {\n return this.results[i].directory || this.results[i].type === 'directory'\n },\n\n isArtist(i) {\n return this.results[i].type === 'artist'\n },\n\n isAlbum(i) {\n return this.results[i].type === 'album'\n },\n\n isPlaylist(i) {\n return this.results[i].type === 'playlist'\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'track.scss';\n\n.library {\n width: 100%;\n display: flex;\n flex-direction: column;\n\n .results {\n overflow: auto;\n height: 100%;\n\n .track {\n display: flex;\n align-items: center;\n justify-content: left;\n\n .left-side {\n display: inline-flex;\n align-items: center;\n }\n }\n\n .icon {\n opacity: .5;\n margin-right: .75em;\n }\n }\n\n :deep(.header) {\n display: flex;\n width: 100%;\n align-items: center;\n\n .search-box {\n width: 70%;\n\n input[type=search] {\n width: 100%;\n }\n }\n\n .buttons {\n width: 30%;\n display: inline-flex;\n justify-content: right;\n margin: 0;\n }\n }\n}\n</style>\n","import { render } from \"./Library.vue?vue&type=template&id=163c27b3&scoped=true\"\nimport script from \"./Library.vue?vue&type=script&lang=js\"\nexport * from \"./Library.vue?vue&type=script&lang=js\"\n\nimport \"./Library.vue?vue&type=style&index=0&id=163c27b3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-163c27b3\"]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=5a75ab98&scoped=true\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport \"./Index.vue?vue&type=style&index=0&id=5a75ab98&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5a75ab98\"]])\n\nexport default __exports__"],"names":["class","_createElementVNode","$props","loading","_createBlock","_component_Loading","key","_component_MediaView","pluginName","image","images","track","uri","file","status","onNext","_cache","$event","_ctx","$emit","onPause","onPlay","onPrevious","onRandom","onRepeat","onSearch","$options","search","onSeek","onConsume","onSetVolume","onStop","$data","navVisible","_createElementBlock","_hoisted_1","_createVNode","_component_Nav","selectedView","onInput","onToggle","_hoisted_2","_hoisted_3","_component_Playlist","tracks","devices","selectedDevice","activeDevice","onClear","onSwap","onAdd","onRemove","onMove","onSave","onInfo","onAddToPlaylist","openAddToPlaylist","onToggleNav","onRefreshStatus","refreshStatus","onSelectDevice","selectDevice","_component_Playlists","playlists","editedPlaylist","editedPlaylistTracks","onLoad","onPlaylistEdit","onLoadTracks","onRemoveTrack","onPlaylistAdd","onTrackMove","_component_Search","results","searchResults","_component_Library","libraryResults","path","onCd","_hoisted_4","_component_Modal","title","ref","trackInfo","_hoisted_5","_hoisted_6","_hoisted_7","_toDisplayString","artist","_hoisted_9","_hoisted_10","_hoisted_11","href","$route","fullPath","onClick","_withModifiers","_hoisted_13","_hoisted_14","album","_hoisted_16","_hoisted_17","_hoisted_18","date","_hoisted_20","_hoisted_21","time","_hoisted_23","_hoisted_24","convertTime","_hoisted_26","_hoisted_27","disc","_hoisted_29","_hoisted_30","url","_hoisted_32","_hoisted_33","_hoisted_34","target","_hoisted_36","onClose","addToPlaylistTrack","onOpen","selectedPlaylists","Array","length","keys","map","_hoisted_37","type","placeholder","playlistFilter","_hoisted_38","_Fragment","_renderList","playlist","i","_normalizeClass","hidden","name","toLowerCase","indexOf","checked","onChange","_component_FormFooter","args","addToPlaylist","_hoisted_41","_renderSlot","$slots","undefined","__exports__","views","view","displayName","selected","iconClass","emits","props","String","collapsed","Boolean","default","Object","playing","library","_component_MusicHeader","withBack","filter","showNavButton","_component_Dropdown","_component_DropdownItem","text","addTrack","withSave","disabled","playlistSave","withSwap","selectedTracks","selectionMode","Set","withClear","device","id","active","onScroll","displayedTrackIndices","trackClass","onDragstart","onTrackDragStart","onDragend","onTrackDragEnd","onDragover","onTrackDragOver","draggable","onTrackClick","$refs","toggle","onDblclick","pos","_hoisted_12","isPlayingTrack","paused","state","searchArtist","_hoisted_15","searchAlbum","_hoisted_19","onMenuPlay","withAddToQueue","mixins","MediaUtils","components","DropdownItem","Dropdown","MusicHeader","Loading","maxVisibleTracks","Number","data","infoTrack","sourcePos","targetPos","centerPos","mounted","scrollTimeout","computed","selectedTracksSet","this","trackIndicesByToken","indices","forEach","token","field","trim","join","add","positions","replace","matchingPositions","entries","sort","offset","Math","max","floor","slice","methods","getTrackElements","body","querySelectorAll","event","shiftKey","idx","ctrlKey","splice","push","playingPos","has","prompt","$nextTick","_","classList","remove","from","to","trackEl","find","t","parseInt","dataset","index","minSelected","min","scrollTop","bodyHeight","parseFloat","getComputedStyle","height","scrollHeight","setTimeout","scrollToTrack","contains","scrollIntoView","block","behavior","$watch","artist_uri","uris","console","warn","debug","album_uri","_hoisted_8","onAddToQueue","play","onAddToQueueAndPlay","onBack","displayedPlaylists","Playlist","trackFilter","self","displayedTracks","editor","formCollapsed","clear","onSubmit","filteredQuery","query","any","result","selectedResults","resultClick","_hoisted_25","_hoisted_28","_hoisted_31","load","FormFooter","o","reduce","obj","k","v","size","delete","isRoot","back","displayedResults","isDirectory","isArtist","isAlbum","isPlaylist","directory","split","pop","dir","Utils","Modal","Nav","MediaView","Playlists","Search","Library","required","config","onStatusEvent","plugin_name","onPlaylistEvent","onNewPlayingTrack","notify","html","playlistsModal","isVisible","subscribe","info","unmounted","unsubscribe","render"],"sourceRoot":""}