platypush/platypush/backend/http/webapp/dist/static/js/6833-legacy.72c66805.js.map

1 line
94 KiB
Plaintext

{"version":3,"file":"static/js/6833-legacy.72c66805.js","mappings":"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","sources":["webpack://platypush/./node_modules/core-js/modules/es.array.splice.js","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":["'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","<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\">\n <Nav :selected-view=\"selectedView\" @input=\"selectedView = $event\" />\n </div>\n\n <div class=\"view-container\">\n <Playlist :tracks=\"tracks\" :status=\"status\" :loading=\"loading\" :devices=\"devices\"\n :selected-device=\"selectedDevice\" :active-device=\"activeDevice\" v-if=\"selectedView === 'playing'\"\n @play=\"$emit('play', $event)\" @clear=\"$emit('clear')\" @swap=\"$emit('swap-tracks', $event)\"\n @add=\"$emit('add-to-tracklist', $event)\" @remove=\"$emit('remove-from-tracklist', $event)\"\n @move=\"$emit('tracklist-move', $event)\" @save=\"$emit('tracklist-save', $event)\"\n @info=\"$emit('info', $event)\" @add-to-playlist=\"openAddToPlaylist\" @search=\"search\"\n @refresh-status=\"refreshStatus\" @select-device=\"selectDevice\" />\n\n <Playlists :playlists=\"playlists\" :loading=\"loading\" :devices=\"devices\"\n :selected-device=\"selectedDevice\" :active-device=\"activeDevice\" v-else-if=\"selectedView === 'playlists'\"\n :edited-playlist=\"editedPlaylist\" :tracks=\"editedPlaylistTracks\"\n @play=\"$emit('play-playlist', $event)\" @load=\"$emit('load-playlist', $event)\"\n @remove=\"$emit('remove-playlist', $event)\" @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)\" @info=\"$emit('info', $event)\"\n @playlist-add=\"$emit('playlist-add', $event)\" @add-to-playlist=\"openAddToPlaylist\"\n @track-move=\"$emit('playlist-track-move', $event)\" @search=\"search\"\n @refresh-status=\"refreshStatus\" @select-device=\"selectDevice\" />\n\n <Search :loading=\"loading\" v-else-if=\"selectedView === 'search'\" :devices=\"devices\"\n :selected-device=\"selectedDevice\" :active-device=\"activeDevice\" @search=\"search\"\n :results=\"searchResults\" @clear=\"$emit('search-clear')\" @info=\"$emit('info', $event)\"\n @play=\"$emit('play', $event)\" @load=\"$emit('add-to-tracklist', $event)\"\n @add-to-playlist=\"openAddToPlaylist\" @refresh-status=\"refreshStatus\" @select-device=\"selectDevice\" />\n\n <Library :loading=\"loading\" v-else-if=\"selectedView === 'library'\" :devices=\"devices\"\n :selected-device=\"selectedDevice\" :active-device=\"activeDevice\" @search=\"search\"\n :results=\"libraryResults\" :path=\"path\" @clear=\"$emit('search-clear')\" @info=\"$emit('info', $event)\"\n @play=\"$emit('play', $event)\" @load=\"$emit('add-to-tracklist', $event)\"\n @add-to-playlist=\"openAddToPlaylist\" @cd=\"$emit('cd', $event)\" @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: ['play', 'pause', 'stop', 'clear', 'previous', 'next', 'set-volume', 'seek', 'consume', 'repeat', 'random',\n 'status-update', 'playlist-update', 'new-playing-track', 'add-to-tracklist', 'remove-from-tracklist',\n 'swap-tracks', 'play-playlist', 'load-playlist', 'remove-playlist', 'tracklist-move', 'tracklist-save',\n 'add-to-tracklist-from-edited-playlist', 'remove-from-playlist', 'info', 'playlist-add', 'add-to-playlist',\n 'playlist-track-move', 'search', 'search-clear', 'cd', 'refresh-status', 'select-device'],\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 }\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 ::v-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 ::v-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 ::v-deep(.body) {\n display: flex;\n flex-direction: column;\n padding: 0 !important;\n }\n\n ::v-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 ::v-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 ::v-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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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 <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'],\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 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 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=edee6494&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=edee6494&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-edee6494\"]])\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-8 filter\">\n <label>\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n </div>\n\n <div class=\"col-4 buttons\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\">\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 <button title=\"Add track\" @click=\"addTrack\">\n <i class=\"fa fa-plus\"></i>\n </button>\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 <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\">\n <div class=\"no-content\" v-if=\"!tracks?.length\">\n No tracks are loaded\n </div>\n\n <div class=\"row track\" @dragstart=\"onTrackDragStart(i)\" @dragend=\"onTrackDragEnd(i)\"\n @dragover=\"onTrackDragOver(i)\" draggable=\"true\"\n :class=\"{selected: selectedTracksSet.has(i), active: status?.playingPos === i, hidden: !displayedTracks.has(i)}\"\n v-for=\"(track, i) in tracks\" :key=\"i\" @click=\"onTrackClick($event, i)\" @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: ['play', 'clear', 'add', 'remove', 'swap', 'search', 'move', 'save', 'info', 'refresh-status',\n 'select-device'],\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\n data() {\n return {\n selectionMode: false,\n selectedTracks: [],\n filter: '',\n infoTrack: null,\n sourcePos: null,\n targetPos: null,\n }\n },\n\n computed: {\n selectedTracksSet() {\n return new Set(this.selectedTracks)\n },\n\n displayedTracks() {\n const positions = [...Array(this.tracks.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.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 (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 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 playlistSave() {\n const name = prompt('Playlist name')\n if (!name?.length)\n return\n\n this.$emit('save', name)\n },\n },\n\n mounted() {\n const self = this\n this.$watch(() => self.status?.playingPos, (pos) => {\n if (pos == null)\n return\n\n const trackElement = [...self.$refs.body.querySelectorAll('.track')][pos]\n const offset = trackElement.offsetTop - parseFloat(getComputedStyle(self.$refs.header.$el).height)\n self.$refs.body.scrollTo(0, offset)\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::v-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 ::v-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=8beb55c6&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=8beb55c6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8beb55c6\"]])\n\nexport default __exports__","import { render } from \"./Playlist.vue?vue&type=template&id=ee1cc6f4&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=ee1cc6f4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ee1cc6f4\"]])\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=\"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 <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=\"add-btn\" title=\"Add track\" @click=\"addTrack\">\n <i class=\"fas fa-plus\" />\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-8 filter\">\n <label>\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n </div>\n\n <div class=\"col-4 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 </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\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 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 ::v-deep(.header) {\n .back-btn {\n padding-left: .25em;\n }\n\n .add-btn {\n float: right;\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=c01651b6&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=c01651b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c01651b6\"]])\n\nexport default __exports__","<template>\n <div class=\"search fade-in\" :class=\"{'form-collapsed': formCollapsed}\">\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=\"search-box\">\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\n\n <span class=\"buttons\">\n <button @click=\"clear\">\n <i class=\"icon fa fa-times\" />\n <span class=\"btn-title\">Clear</span>\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: ['search', 'clear', 'play', 'load', 'add-to-playlist', 'info', 'refresh-status', 'select-device'],\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\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\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 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 ::v-deep(.form-footer) {\n height: 3em;\n padding-right: 0;\n border: 0;\n }\n\n ::v-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 ::v-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: flex-end;\n margin: 0;\n }\n }\n}\n</style>\n","import { render } from \"./Search.vue?vue&type=template&id=6fe42598&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=6fe42598&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6fe42598\"]])\n\nexport default __exports__","<template>\n <div class=\"library fade-in\">\n <Loading v-if=\"loading\" />\n\n <MusicHeader>\n <label class=\"search-box\">\n <input type=\"search\" placeholder=\"Filter\" v-model=\"filter\">\n </label>\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: ['search', 'play', 'load', 'add-to-playlist', 'info', 'cd', 'refresh-status', 'select-device'],\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\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 ::v-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=c3245ea8&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=c3245ea8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c3245ea8\"]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=2cd8b8d5&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=2cd8b8d5&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2cd8b8d5\"]])\n\nexport default __exports__"],"names":["$","global","toAbsoluteIndex","toIntegerOrInfinity","lengthOfArrayLike","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","TypeError","max","Math","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","target","proto","forced","splice","start","deleteCount","insertCount","actualDeleteCount","A","k","from","to","O","this","len","actualStart","argumentsLength","arguments","length","class","loading","pluginName","status","track","$emit","$event","search","selectedView","tracks","devices","selectedDevice","activeDevice","openAddToPlaylist","refreshStatus","selectDevice","playlists","editedPlaylist","editedPlaylistTracks","results","searchResults","libraryResults","path","title","ref","trackInfo","file","artist","href","$route","fullPath","album","date","time","disc","url","uri","addToPlaylistTrack","selectedPlaylists","Array","keys","map","type","placeholder","playlistFilter","playlist","i","name","toLowerCase","indexOf","key","checked","addToPlaylist","__exports__","views","view","displayName","iconClass","emits","props","String","collapsed","Boolean","default","Object","playing","library","filter","text","disabled","playlistSave","selectedTracks","selectionMode","Set","addTrack","device","id","selectedTracksSet","has","playingPos","displayedTracks","onTrackDragStart","onTrackDragEnd","onTrackDragOver","draggable","onTrackClick","state","convertTime","mixins","components","DropdownItem","Dropdown","MusicHeader","Loading","data","infoTrack","sourcePos","targetPos","computed","positions","self","pos","methods","event","shiftKey","sort","idx","ctrlKey","push","prompt","$refs","body","querySelectorAll","forEach","classList","remove","add","mounted","$watch","trackElement","offset","offsetTop","parseFloat","getComputedStyle","header","$el","height","scrollTo","trackFilter","displayedPlaylists","Number","editor","formCollapsed","clear","filteredQuery","query","any","result","selectedResults","resultClick","parseInt","play","load","FormFooter","entries","o","reduce","obj","v","size","delete","back","displayedResults","directory","split","pop","slice","join","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":""}