platypush/platypush/backend/http/webapp/dist/static/js/2848.67bcab8e.js.map

1 line
106 KiB
Plaintext

{"version":3,"file":"static/js/2848.67bcab8e.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\" :status=\"status\" :track=\"track\" @play=\"$emit('play', $event)\"\n @pause=\"$emit('pause')\" @stop=\"$emit('stop')\" @previous=\"$emit('previous')\" @next=\"$emit('next')\"\n @set-volume=\"$emit('set-volume', $event)\" @seek=\"$emit('seek', $event)\" @consume=\"$emit('consume', $event)\"\n @repeat=\"$emit('repeat', $event)\" @random=\"$emit('random', $event)\" @search=\"search\" 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 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 :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-track=\"$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 name: \"Music\",\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 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 editedPlaylist: {\n type: Number,\n },\n\n trackInfo: {\n type: String,\n },\n\n searchResults: {\n type: Array,\n },\n\n libraryResults: {\n type: Array,\n },\n\n path: {\n type: String,\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 computed: {\n track() {\n if (this.status?.playingPos == null)\n return null\n\n return this.tracks[this.status.playingPos]\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 <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\" />\n <DropdownItem text=\"Swap tracks\" icon-class=\"fa fa-retweet\" v-if=\"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\" :disabled=\"!tracks?.length\" @click=\"$emit('clear')\" />\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 :set=\"track = tracks[i]\"\n :key=\"i\"\n :data-index=\"i\"\n :class=\"trackClass(i)\"\n @click=\"onTrackClick($event, i)\"\n @dblclick=\"$emit('play', {pos: i})\">\n <div class=\"col-10\">\n <div class=\"title\">\n {{ track.title || '[No Title]' }}\n <div class=\"playing-icon\" :class=\"{paused: status?.state === 'pause'}\"\n v-if=\"status?.playingPos === i && (status?.state === 'play' || status?.state === 'pause')\">\n <span v-for=\"i in [...Array(3).keys()]\" :key=\"i\" />\n </div>\n </div>\n\n <div class=\"artist\" v-if=\"track.artist\">\n <a :href=\"$route.fullPath\" v-text=\"track.artist\"\n @click.prevent=\"$emit('search', {artist: track.artist})\" />\n </div>\n\n <div class=\"album\" v-if=\"track.album\">\n <a :href=\"$route.fullPath\" v-text=\"track.album\"\n @click.prevent=\"$emit('search', {artist: track.artist, album: track.album})\" />\n </div>\n </div>\n\n <div class=\"col-2 right-side\">\n <span class=\"duration\" v-text=\"track.time ? convertTime(track.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=\"$emit('play', {pos: i})\" />\n <DropdownItem text=\"Add to playlist\" icon-class=\"fa fa-list-ul\" @click=\"$emit('add-to-playlist', track)\" />\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 '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\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 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 trackClass(i) {\n return {\n selected: this.selectedTracksSet.has(i),\n active: this.status?.playingPos === 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 onTrackDragStart(track) {\n this.sourcePos = track\n },\n\n onTrackDragEnd() {\n this.$refs.body.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('move', {from: this.sourcePos, to: this.targetPos})\n this.sourcePos = null\n this.targetPos = null\n },\n\n onTrackDragOver(track) {\n this.targetPos = track\n const tracks = this.$refs.body.querySelectorAll('.track')\n tracks.forEach((track) => track.classList.remove('dragover'));\n [...tracks][track].classList.add('dragover')\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\n mounted() {\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</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 display: flex;\n flex-direction: column;\n\n .header-container {\n button {\n border: 0;\n background: none;\n }\n\n .filter {\n input {\n width: 100%;\n }\n }\n\n .buttons {\n direction: rtl;\n\n .dropdown-container {\n direction: ltr;\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\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=ff0291de&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=ff0291de&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-ff0291de\"]])\n\nexport default __exports__","<template>\n <Loading v-if=\"loading\" />\n\n <div class=\"editor-container fade-in\" v-else-if=\"editedPlaylist != null\">\n <div class=\"header-container\">\n <MusicHeader ref=\"header\">\n <div class=\"col-8 filter\">\n <button class=\"back-btn\" title=\"Back\" @click=\"$emit('playlist-edit', null)\">\n <i class=\"fas fa-arrow-left\" />\n </button>\n\n <label class=\"search-box\">\n <input type=\"search\" placeholder=\"Filter\" v-model=\"trackFilter\">\n </label>\n </div>\n\n <div class=\"col-4 buttons pull-right\">\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 <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 </Dropdown>\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=\"editor\" ref=\"editor\">\n <div class=\"no-content\" v-if=\"!tracks?.length\">\n No tracks found\n </div>\n\n <div class=\"row track\" draggable=\"true\" v-for=\"(track, i) in tracks\" :key=\"i\"\n :class=\"{selected: selectedTracksSet.has(i), active: status?.playingPos === i, hidden: !displayedTracks.has(i)}\"\n @dragstart=\"onTrackDragStart(i)\" @dragend=\"onTrackDragEnd(i)\" @dragover=\"onTrackDragOver(i)\"\n @click=\"onTrackClick($event, i)\" @dblclick=\"$emit('load-track', {pos: i, play: true})\">\n <div class=\"col-10\">\n <div class=\"title\">\n {{ track.title || '[No Title]' }}\n </div>\n\n <div class=\"artist\" v-if=\"track.artist\">\n <a :href=\"$route.fullPath\" v-text=\"track.artist\" @click.prevent=\"$emit('search', {artist: track.artist})\" />\n </div>\n\n <div class=\"album\" v-if=\"track.album\">\n <a :href=\"$route.fullPath\" v-text=\"track.album\"\n @click.prevent=\"$emit('search', {artist: track.artist, album: track.album})\" />\n </div>\n </div>\n\n <div class=\"col-2 right-side\">\n <span class=\"duration\" v-text=\"track.time ? convertTime(track.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=\"$emit('load-track', {pos: i, play: true})\" />\n <DropdownItem text=\"Add to queue\" icon-class=\"fa fa-plus\" @click=\"$emit('load-track', {pos: i, play: false})\" />\n <DropdownItem text=\"Add to playlist\" icon-class=\"fa fa-list-ul\" @click=\"$emit('add-to-playlist', track)\" />\n <DropdownItem text=\"Remove\" icon-class=\"fa fa-trash\" @click=\"$emit('remove-track', [...(new Set([...selectedTracks, i]))])\" />\n <DropdownItem text=\"Info\" icon-class=\"fa fa-info\" @click.stop=\"$emit('info', tracks[i])\" />\n </Dropdown>\n </span>\n </div>\n </div>\n </div>\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\">\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\";\n\nexport default {\n name: \"Playlists\",\n mixins: [MediaUtils],\n components: {DropdownItem, Dropdown, MusicHeader, Loading},\n emits: ['play', 'load', 'remove', 'playlist-edit', 'search', 'remove-track', 'load-track', 'info',\n 'playlist-add', 'add-to-playlist', 'track-move', 'refresh-status', 'select-device'],\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 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 addTrack() {\n const track = prompt('Track path or URL')\n if (!track?.length)\n return\n\n this.$emit('playlist-add', track)\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.sourcePos, to: this.targetPos, playlist: this.editedPlaylist})\n this.sourcePos = null\n this.targetPos = null\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 &: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=84a2dd8c&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=84a2dd8c&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-84a2dd8c\"]])\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\">\n {{ result.title || '[No Title]' }}\n </div>\n\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\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\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=6596df38&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=6596df38&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-6596df38\"]])\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=\"path !== '/'\">\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=\"result.directory\" />\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=\"result.directory\" v-text=\"result.directory.split('/').pop()\" />\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: String,\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\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.results[pos].directory) {\n this.$emit('cd', this.results[pos].directory)\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 const path = this.path.split('/')\n this.$emit('cd', path.slice(0, path.length-1).join('/'))\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=31ebd80c&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=31ebd80c&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-31ebd80c\"]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=45886c9f&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=45886c9f&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-45886c9f\"]])\n\nexport default __exports__"],"names":["class","_createElementVNode","$props","loading","_createBlock","_component_Loading","key","_component_MediaView","pluginName","status","track","$options","onPlay","_cache","$event","_ctx","$emit","onPause","onStop","onPrevious","onNext","onSetVolume","onSeek","onConsume","onRepeat","onRandom","onSearch","search","$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","onLoadTrack","onRemoveTrack","onPlaylistAdd","onTrackMove","_component_Search","results","searchResults","_component_Library","libraryResults","path","onCd","_hoisted_4","_component_Modal","title","ref","trackInfo","_hoisted_5","file","_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","uri","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","filter","showNavButton","_component_Dropdown","_component_DropdownItem","text","addTrack","disabled","playlistSave","selectedTracks","selectionMode","Set","device","id","active","onScroll","displayedTrackIndices","trackClass","onDragstart","onTrackDragStart","onDragend","onTrackDragEnd","onDragover","onTrackDragOver","draggable","set","onTrackClick","onDblclick","pos","playingPos","state","paused","_hoisted_15","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","event","shiftKey","idx","ctrlKey","splice","push","has","prompt","$refs","body","querySelectorAll","classList","remove","from","to","scrollTop","bodyHeight","parseFloat","getComputedStyle","height","scrollHeight","setTimeout","parseInt","min","scrollToTrack","$nextTick","contains","scrollIntoView","block","behavior","$watch","_hoisted_8","_hoisted_28","trackFilter","displayedTracks","play","_hoisted_19","_hoisted_22","_hoisted_25","_hoisted_31","displayedPlaylists","_hoisted_35","self","editor","formCollapsed","_hoisted_12","clear","onSubmit","filteredQuery","query","any","result","selectedResults","resultClick","load","FormFooter","o","reduce","obj","k","v","size","delete","back","displayedResults","directory","split","pop","Utils","Modal","Nav","MediaView","Playlist","Playlists","Search","Library","required","config","onStatusEvent","plugin_name","onPlaylistEvent","onNewPlayingTrack","notify","html","image","playlistsModal","isVisible","subscribe","info","unmounted","unsubscribe","render"],"sourceRoot":""}