platypush/platypush/backend/http/webapp/dist/static/js/1587.10c85131.js.map

1 line
47 KiB
Plaintext

{"version":3,"file":"static/js/1587.10c85131.js","mappings":"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","sources":["webpack://platypush/./src/components/Media/ProgressBar.vue","webpack://platypush/./src/components/Media/ProgressBar.vue?32c3","webpack://platypush/./src/components/Media/Utils.vue","webpack://platypush/./src/components/Media/Utils.vue?af63","webpack://platypush/./src/components/Media/View.vue","webpack://platypush/./src/components/Media/Controls.vue","webpack://platypush/./src/components/Media/ExtraControls.vue","webpack://platypush/./src/components/Media/ExtraControls.vue?b9c1","webpack://platypush/./src/components/Media/PlayPauseButton.vue","webpack://platypush/./src/components/Media/PlayPauseButton.vue?80fd","webpack://platypush/./src/components/Media/VolumeSlider.vue","webpack://platypush/./src/components/Media/VolumeSlider.vue?4097","webpack://platypush/./src/components/Media/Controls.vue?3032","webpack://platypush/./src/components/Media/View.vue?78ca","webpack://platypush/./src/components/elements/Slider.vue","webpack://platypush/./src/components/elements/Slider.vue?787f"],"sourcesContent":["<template>\n <div class=\"progress-bar-container\">\n <div class=\"col-s-2 col-m-1 time\">\n <span class=\"elapsed-time\"\n v-text=\"elapsed != null && (status.state === 'play' || status.state === 'pause') ? convertTime(elapsed) : '-:--'\"></span>\n </div>\n <div class=\"col-s-8 col-m-10 time-bar\">\n <Slider :value=\"elapsed\" :range=\"[0, duration]\" :disabled=\"!duration || status.state === 'stop'\"\n @change=\"$emit('seek', $event.target.value)\" />\n </div>\n <div class=\"col-s-2 col-m-1 time\">\n <span class=\"total-time\"\n v-text=\"duration && status.state !== 'stop' ? convertTime(duration) : '-:--'\"></span>\n </div>\n </div>\n</template>\n\n<script>\nimport MediaUtils from \"@/components/Media/Utils\";\nimport Slider from \"@/components/elements/Slider\";\n\nexport default {\n components: {Slider},\n emits: ['seek'],\n mixins: [MediaUtils],\n\n props: {\n elapsed: {\n type: Number,\n },\n\n duration: {\n type: Number,\n },\n\n // Current player status\n status: {\n type: Object,\n default: () => ({}),\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$time-width: 2.5em;\n\n.progress-bar-container {\n width: 100%;\n display: flex;\n align-items: center;\n\n .time {\n width: $time-width;\n font-size: .7em;\n position: relative;\n margin-left: 0;\n }\n\n .elapsed-time {\n text-align: right;\n float: right;\n }\n\n .time-bar {\n width: calc(100% - #{$time-width * 2} - 2em);\n flex-grow: 1;\n margin: 0 .5em;\n }\n}\n</style>\n","import { render } from \"./ProgressBar.vue?vue&type=template&id=3894ad4d&scoped=true\"\nimport script from \"./ProgressBar.vue?vue&type=script&lang=js\"\nexport * from \"./ProgressBar.vue?vue&type=script&lang=js\"\n\nimport \"./ProgressBar.vue?vue&type=style&index=0&id=3894ad4d&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-3894ad4d\"]])\n\nexport default __exports__","<script>\nimport Utils from \"@/Utils\";\n\nexport default {\n name: \"Utils\",\n mixins: [Utils],\n\n computed: {\n audioExtensions() {\n return new Set([\n '3gp', 'aa', 'aac', 'aax', 'act', 'aiff', 'amr', 'ape', 'au',\n 'awb', 'dct', 'dss', 'dvf', 'flac', 'gsm', 'iklax', 'ivs',\n 'm4a', 'm4b', 'm4p', 'mmf', 'mp3', 'mpc', 'msv', 'nmf', 'nsf',\n 'ogg,', 'opus', 'ra,', 'raw', 'sln', 'tta', 'vox', 'wav',\n 'wma', 'wv', 'webm', '8svx',\n ])\n },\n\n videoExtensions() {\n return new Set([\n 'webm', 'mkv', 'flv', 'flv', 'vob', 'ogv', 'ogg', 'drc', 'gif',\n 'gifv', 'mng', 'avi', 'mts', 'm2ts', 'mov', 'qt', 'wmv', 'yuv',\n 'rm', 'rmvb', 'asf', 'amv', 'mp4', 'm4p', 'm4v', 'mpg', 'mp2',\n 'mpeg', 'mpe', 'mpv', 'mpg', 'mpeg', 'm2v', 'm4v', 'svi',\n '3gp', '3g2', 'mxf', 'roq', 'nsv', 'flv', 'f4v', 'f4p', 'f4a', 'f4b',\n ])\n },\n\n mediaExtensions() {\n return new Set([...this.videoExtensions, ...this.audioExtensions])\n },\n },\n\n methods: {\n convertTime(time) {\n time = parseFloat(time); // Normalize strings\n const t = {}\n t.h = '' + parseInt(time/3600)\n t.m = '' + parseInt(time/60 - t.h*60)\n t.s = '' + parseInt(time - (t.h*3600 + t.m*60))\n\n for (const attr of ['m','s']) {\n if (parseInt(t[attr]) < 10) {\n t[attr] = '0' + t[attr]\n }\n }\n\n const ret = []\n if (parseInt(t.h)) {\n ret.push(t.h)\n }\n\n ret.push(t.m, t.s)\n return ret.join(':')\n },\n\n async startStreaming(resource, pluginName, download=false) {\n let url = resource\n let subtitles = null\n\n if (resource instanceof Object) {\n url = resource.url\n subtitles = resource.subtitles\n } else {\n resource = {url: url}\n }\n\n const ret = await this.request(`${pluginName}.start_streaming`, {\n media: url,\n subtitles: subtitles,\n download: download,\n })\n\n return {...resource, ...ret}\n },\n\n async stopStreaming(mediaId, pluginName) {\n await this.request(`${pluginName}.stop_streaming`, {media_id: mediaId})\n },\n },\n}\n</script>\n","import script from \"./Utils.vue?vue&type=script&lang=js\"\nexport * from \"./Utils.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n <div class=\"media-container\">\n <div class=\"view-container\">\n <slot />\n </div>\n <div class=\"controls-container\">\n <Controls :buttons=\"buttons\"\n :image=\"image\"\n :status=\"status\"\n :track=\"track\"\n @consume=\"$emit('consume', $event)\"\n @mute=\"$emit('mute')\"\n @next=\"$emit('next')\"\n @pause=\"$emit('pause', $event)\"\n @play=\"$emit('play', $event)\"\n @previous=\"$emit('previous')\"\n @random=\"$emit('random', $event)\"\n @repeat=\"$emit('repeat', $event)\"\n @search=\"$emit('search', $event)\"\n @seek=\"$emit('seek', $event)\"\n @set-volume=\"$emit('set-volume', $event)\"\n @stop=\"$emit('stop')\"\n @unmute=\"$emit('unmute')\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Controls from \"@/components/Media/Controls\";\n\nexport default {\n name: \"View\",\n components: {Controls},\n emits: [\n 'consume',\n 'mute',\n 'next',\n 'pause',\n 'play',\n 'previous',\n 'random',\n 'repeat',\n 'search',\n 'seek',\n 'set-volume',\n 'stop',\n 'unmute',\n ],\n\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n\n status: {\n type: Object,\n default: () => {},\n },\n\n track: {\n type: Object,\n },\n\n image: {\n type: String,\n default: null,\n },\n\n buttons: {\n type: Object,\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n\n.media-container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n\n .view-container {\n height: 100%;\n }\n\n .controls-container {\n width: 100%;\n position: absolute;\n bottom: 0;\n border-top: $default-border-2;\n background: $default-bg-2;\n box-shadow: $border-shadow-top;\n }\n}\n</style>\n","<template>\n <div class=\"extension fade-in\" :class=\"{hidden: !expanded}\">\n <div class=\"image-container\"\n @click.prevent=\"searchAlbum\"\n v-if=\"status?.state !== 'stop'\">\n <div class=\"remote-image-container\" v-if=\"trackImage\">\n <img class=\"image\" :src=\"trackImage\" :alt=\"track.title\">\n </div>\n\n <div class=\"icon-container\" v-else>\n <i class=\"icon fas fa-compact-disc\"\n :class=\"{playing: status?.state === 'play'}\" />\n </div>\n </div>\n\n <div class=\"row buttons-container\">\n <div class=\"buttons\">\n <div class=\"buttons\">\n <button @click=\"$emit('previous')\" title=\"Play previous track\" v-if=\"buttons_.previous\">\n <i class=\"icon fa fa-step-backward\"></i>\n </button>\n <button @click=\"$emit('stop')\" v-if=\"buttons_.stop && status.state !== 'stop'\" title=\"Stop playback\">\n <i class=\"icon fa fa-stop\"></i>\n </button>\n <button @click=\"$emit('next')\" title=\"Play next track\" v-if=\"buttons_.next\">\n <i class=\"icon fa fa-step-forward\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <VolumeSlider\n :range=\"volumeRange\"\n :status=\"status\"\n :value=\"status.volume\"\n @mute=\"$emit('mute')\"\n @set-volume=\"$emit('set-volume', $event)\"\n @unmute=\"$emit('unmute')\" />\n\n <ExtraControls\n :buttons=\"buttons_\"\n :status=\"status\"\n @consume=\"$emit('consume', !status.consume)\"\n @random=\"$emit('random', !status.random)\"\n @repeat=\"$emit('repeat', !status.repeat)\" />\n </div>\n\n <div class=\"row\">\n <ProgressBar :elapsed=\"elapsed\" :duration=\"duration\" :status=\"status\" @seek=\"$emit('seek', $event)\" />\n </div>\n </div>\n\n <div class=\"controls\">\n <div class=\"playback-controls until tablet col-2\">\n <PlayPauseButton :status=\"status\" @play=\"$emit('play')\" @pause=\"$emit('pause')\" />\n </div>\n\n <div class=\"track-container col-s-9 col-m-9 col-l-3\">\n <div class=\"track-info\" v-if=\"track && status?.state !== 'stop'\">\n <div class=\"img-container\" v-if=\"trackImage\">\n <img class=\"image from desktop\" :src=\"trackImage\" :alt=\"track.title\">\n </div>\n\n <div class=\"title-container\">\n <div class=\"title\" v-if=\"status.state === 'play' || status.state === 'pause'\">\n <a :href=\"$route.fullPath\" v-text=\"track.title?.length ? track.title : '[No Title]'\"\n @click.prevent=\"searchAlbum\" v-if=\"track.album\"></a>\n <a v-text=\"track.title?.length ? track.title : '[No Title]'\" v-else-if=\"track.url\"></a>\n <span v-text=\"track.title?.length ? track.title : '[No Title]' \" v-else></span>\n </div>\n <div class=\"artist\" v-if=\"track.artist?.length && (status.state === 'play' || status.state === 'pause')\">\n <a v-text=\"track.artist\" @click.prevent=\"searchArtist\"></a>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"playback-controls from desktop col-6\">\n <div class=\"row buttons\">\n <button @click=\"$emit('previous')\" title=\"Play previous track\" v-if=\"buttons_.previous\">\n <i class=\"icon fa fa-step-backward\"></i>\n </button>\n <PlayPauseButton :status=\"status\" @play=\"$emit('play')\" @pause=\"$emit('pause')\" />\n <button @click=\"$emit('stop')\" v-if=\"buttons_.stop && status.state !== 'stop'\" title=\"Stop playback\">\n <i class=\"icon fa fa-stop\"></i>\n </button>\n <button @click=\"$emit('next')\" title=\"Play next track\" v-if=\"buttons_.next\">\n <i class=\"icon fa fa-step-forward\"></i>\n </button>\n </div>\n\n <div class=\"row\">\n <ProgressBar :elapsed=\"elapsed\" :duration=\"duration\" :status=\"status\" @seek=\"$emit('seek', $event)\" />\n </div>\n </div>\n\n <div class=\"col-1 until tablet right-controls\">\n <button @click=\"expanded = !expanded\" :title=\"expanded ? 'Show more controls' : 'Hide extra controls'\">\n <i class=\"fas\" :class=\"[`fa-chevron-${expanded ? 'down' : 'up'}`]\" />\n </button>\n </div>\n\n <div class=\"col-3 from desktop right-controls\">\n <VolumeSlider :value=\"status.volume\" :range=\"volumeRange\" :status=\"status\"\n @mute=\"$emit('mute')\" @unmute=\"$emit('unmute')\"\n @set-volume=\"$emit('set-volume', $event)\" />\n\n <ExtraControls :status=\"status\" :buttons=\"buttons_\"\n @consume=\"$emit('consume', !status.consume)\"\n @random=\"$emit('random', !status.random)\"\n @repeat=\"$emit('repeat', !status.repeat)\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Utils from \"@/Utils\"\nimport MediaUtils from \"@/components/Media/Utils\";\nimport ExtraControls from \"./ExtraControls\";\nimport PlayPauseButton from \"./PlayPauseButton\";\nimport ProgressBar from \"./ProgressBar\";\nimport VolumeSlider from \"./VolumeSlider\";\n\nexport default {\n components: {ExtraControls, PlayPauseButton, ProgressBar, VolumeSlider},\n mixins: [Utils, MediaUtils],\n emits: [\n 'consume',\n 'mute',\n 'next',\n 'pause',\n 'play',\n 'previous',\n 'random',\n 'repeat',\n 'search',\n 'seek',\n 'set-volume',\n 'stop',\n 'unmute',\n ],\n\n props: {\n track: {\n type: Object,\n },\n\n status: {\n type: Object,\n default: () => {},\n },\n\n image: {\n type: String,\n default: null,\n },\n\n // Enabled playback buttons\n buttons: {\n type: Object,\n default: () => {\n return {\n previous: true,\n next: true,\n stop: true,\n consume: true,\n random: true,\n repeat: true,\n }\n },\n },\n\n // Volume range\n volumeRange: {\n type: Array,\n default: () => [0, 100],\n }\n },\n\n data() {\n const buttons = Object.keys(this.buttons)?.length ? this.buttons : {\n previous: true,\n next: true,\n stop: true,\n consume: true,\n random: true,\n repeat: true,\n }\n\n return {\n expanded: false,\n lastSync: 0,\n elapsed: this.status?.elapsed || this.status?.position,\n buttons_: buttons,\n }\n },\n\n computed: {\n duration() {\n return this.status?.duration != null ? this.status.duration : this.track?.duration\n },\n\n trackImage() {\n return this.track?.image || this.image\n },\n },\n\n methods: {\n getTime() {\n return (new Date()).getTime() / 1000\n },\n\n searchAlbum() {\n if (!(this.track?.artist && this.track?.album))\n return\n\n const args = {\n artist: this.track.artist,\n album: this.track.album,\n }\n\n if (this.track.album_uri)\n args.uris = [this.track.album_uri]\n\n this.$emit('search', args)\n },\n\n searchArtist() {\n if (!this.track?.artist)\n return\n\n const args = {\n artist: this.track.artist,\n }\n\n if (this.track.artist_uri)\n args.uris = [this.track.album_uri]\n\n this.$emit('search', args)\n },\n },\n\n mounted() {\n const self = this\n this.lastSync = this.getTime()\n\n this.$watch(() => this.track, (track) => {\n if (!track || self.status?.state !== 'play')\n self.lastSync = this.getTime()\n })\n\n this.$watch(() => this.status, () => {\n self.lastSync = this.getTime()\n })\n\n setInterval(() => {\n if (self.status?.state !== 'stop') {\n self.elapsed = (self.status?.elapsed || self.status?.position || 0)\n if (self.status?.state === 'play')\n self.elapsed += Math.round(this.getTime() - self.lastSync)\n }\n }, 1000)\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n\nbutton {\n border: 0;\n background: none;\n\n &:hover {\n border: 0;\n\n .icon {\n color: $default-hover-fg;\n }\n }\n\n &.enabled {\n color: $selected-fg;\n }\n}\n\n.extension {\n background: $media-ctrl-ext-bg;\n box-shadow: $media-ctrl-ext-shadow;\n border-radius: 1em 1em 0 0;\n flex-direction: column;\n display: none;\n overflow: hidden;\n padding: .5em;\n\n @include until($desktop) {\n display: flex;\n }\n\n :deep(.extra-controls-container) {\n @extend .pull-right;\n flex: 1;\n }\n\n :deep(.progress-bar-container, .volume-slider-container) {\n font-size: 1.25em;\n }\n\n :deep(.volume-slider-container) {\n margin: 1em 0;\n }\n\n .row {\n display: flex;\n }\n\n .buttons-container {\n width: calc(100% + 1em);\n margin-left: -0.5em;\n font-size: 2em;\n justify-content: center;\n box-shadow: $border-shadow-bottom;\n\n button {\n text-align: center;\n\n &:hover {\n color: $default-hover-fg;\n }\n\n i {\n margin: auto;\n }\n }\n }\n\n .buttons {\n display: flex;\n justify-content: center;\n margin: 0;\n }\n\n .image-container {\n width: 100%;\n display: flex;\n justify-content: center;\n cursor: pointer;\n\n .remote-image-container {\n height: 30vh;\n\n .image {\n height: 100%;\n }\n }\n\n .icon-container {\n padding: 0.05em;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 15em;\n opacity: 0.5;\n border: $default-border-2;\n box-shadow: $border-shadow-bottom;\n\n &:hover {\n color: $default-hover-fg;\n opacity: 1;\n }\n }\n\n .icon {\n &.playing {\n animation-duration: 3s;\n animation-name: rotate;\n animation-iteration-count: infinite;\n }\n }\n\n @keyframes rotate {\n 0% {\n transform: rotate(0deg);\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n\n 100% {\n transform: rotate(359deg);\n opacity: 1;\n }\n }\n }\n}\n\n.controls {\n width: 100%;\n height: $media-ctrl-panel-height;\n display: flex;\n padding: 1em .5em;\n overflow: hidden;\n align-items: center;\n\n .row {\n width: 100%;\n display: flex;\n }\n\n .track-container {\n height: 100%;\n display: flex;\n align-items: center;\n margin-left: 0;\n\n @include until($desktop) {\n flex-direction: column;\n text-align: center;\n }\n\n a {\n color: initial;\n text-decoration: none;\n\n &:hover {\n color: $default-hover-fg;\n }\n }\n\n .artist, .title {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .artist {\n opacity: 0.6;\n letter-spacing: .04em;\n }\n\n .title {\n font-weight: normal;\n font-size: 1em;\n letter-spacing: .05em;\n margin-bottom: .25em;\n }\n\n .image {\n width: 5em;\n max-height: 100%;\n display: inline-flex;\n }\n }\n\n .track-info {\n height: 100%;\n display: flex;\n\n @include until($desktop) {\n flex-direction: column;\n }\n\n @include from($desktop) {\n flex-direction: row;\n align-items: center;\n\n .image {\n margin-right: 0.75em;\n }\n }\n }\n\n .playback-controls {\n .row {\n justify-content: center;\n }\n\n .buttons {\n margin-bottom: .5em;\n align-items: center;\n }\n\n button {\n padding: 0.5em;\n margin: 0 .75em;\n\n .play-pause {\n color: $play-btn-fg;\n font-size: 1.75em;\n\n &:hover {\n color: $default-hover-fg-2;\n }\n }\n }\n }\n\n .right-controls {\n @extend .pull-right;\n\n display: flex;\n flex-direction: column;\n flex: 1;\n align-items: flex-end;\n\n button {\n padding: 0.5em;\n }\n\n :deep(.extra-controls-container) {\n @extend .pull-right;\n }\n }\n\n .seek-slider {\n width: 75%;\n }\n}\n</style>\n","<template>\n <div class=\"extra-controls-container\">\n <button @click=\"$emit('consume')\" :class=\"{enabled: status.consume}\" title=\"Toggle consume mode\" v-if=\"buttons.consume\">\n <i class=\"icon fa fa-utensils\"></i>\n </button>\n <button @click=\"$emit('random')\" :class=\"{enabled: status.random}\" title=\"Toggle shuffle\" v-if=\"buttons.random\">\n <i class=\"icon fa fa-random\"></i>\n </button>\n <button @click=\"$emit('repeat')\" :class=\"{enabled: status.repeat}\" title=\"Toggle repeat\" v-if=\"buttons.repeat\">\n <i class=\"icon fa fa-redo\"></i>\n </button>\n </div>\n</template>\n\n<script>\nexport default {\n emits: ['consume', 'random', 'repeat'],\n props: {\n status: {\n type: Object,\n default: () => ({}),\n },\n\n buttons: {\n type: Object,\n default: () => ({}),\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.extra-controls-container {\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.7;\n\n button {\n margin: 0 .25em;\n padding: 0;\n background: none;\n border: 0;\n\n &.enabled {\n color: $selected-fg;\n }\n\n &:not(:disabled):hover {\n color: $default-hover-fg;\n opacity: 1;\n }\n }\n}\n</style>\n","import { render } from \"./ExtraControls.vue?vue&type=template&id=772c7a5b&scoped=true\"\nimport script from \"./ExtraControls.vue?vue&type=script&lang=js\"\nexport * from \"./ExtraControls.vue?vue&type=script&lang=js\"\n\nimport \"./ExtraControls.vue?vue&type=style&index=0&id=772c7a5b&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-772c7a5b\"]])\n\nexport default __exports__","<template>\n <button @click=\"$emit(status.state === 'play' ? 'pause' : 'play')\"\n :title=\"status.state === 'play' ? 'Pause' : 'Play'\">\n <i class=\"icon play-pause fa fa-pause\" v-if=\"status.state === 'play'\"></i>\n <i class=\"icon play-pause fa fa-play\" v-else></i>\n </button>\n</template>\n\n<script>\nexport default {\n emits: ['play', 'pause'],\n props: {\n status: {\n type: Object,\n default: () => ({}),\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\nbutton {\n font-size: 1.75em;\n background: transparent;\n color: $play-btn-fg;\n padding: 0 !important;\n border: none;\n\n &:hover {\n color: $play-btn-hover-fg;\n }\n}\n</style>\n","import { render } from \"./PlayPauseButton.vue?vue&type=template&id=a742ddb0&scoped=true\"\nimport script from \"./PlayPauseButton.vue?vue&type=script&lang=js\"\nexport * from \"./PlayPauseButton.vue?vue&type=script&lang=js\"\n\nimport \"./PlayPauseButton.vue?vue&type=style&index=0&id=a742ddb0&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-a742ddb0\"]])\n\nexport default __exports__","<template>\n <div class=\"volume-slider-container\">\n <div class=\"col-1\">\n <button\n :disabled=\"status.mute == null\"\n :title=\"status.mute ? 'Muted' : 'Unmuted'\"\n @click=\"$emit(status.mute ? 'unmute' : 'mute')\">\n <i class=\"icon fa fa-volume-xmark\" v-if=\"status.mute\" />\n <i class=\"icon fa fa-volume-up\" v-else />\n </button>\n </div>\n\n <div class=\"col-11 volume-slider\">\n <Slider :value=\"status.volume\" :range=\"volumeRange\" :disabled=\"status.volume == null\"\n @change=\"$emit('set-volume', $event.target.value)\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Slider from \"@/components/elements/Slider\";\n\nexport default {\n components: {Slider},\n emits: ['set-volume', 'mute', 'unmute'],\n\n props: {\n // Volume range\n volumeRange: {\n type: Array,\n default: () => [0, 100],\n },\n\n // Current player status\n status: {\n type: Object,\n default: () => ({}),\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n\n.volume-slider-container {\n min-width: 15em;\n max-width: 25em;\n display: inline-flex;\n align-items: center;\n flex: 1;\n\n .volume-slider {\n margin: 0;\n padding: 0 .5em 0 1em;\n flex: 1;\n }\n\n button {\n margin: 0;\n padding: 0;\n background: transparent;\n border: none;\n\n &:disabled {\n cursor: default;\n }\n\n &:not(:disabled):hover {\n color: $default-hover-fg;\n }\n }\n}\n</style>\n","import { render } from \"./VolumeSlider.vue?vue&type=template&id=662f988f&scoped=true\"\nimport script from \"./VolumeSlider.vue?vue&type=script&lang=js\"\nexport * from \"./VolumeSlider.vue?vue&type=script&lang=js\"\n\nimport \"./VolumeSlider.vue?vue&type=style&index=0&id=662f988f&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-662f988f\"]])\n\nexport default __exports__","import { render } from \"./Controls.vue?vue&type=template&id=1648255d&scoped=true\"\nimport script from \"./Controls.vue?vue&type=script&lang=js\"\nexport * from \"./Controls.vue?vue&type=script&lang=js\"\n\nimport \"./Controls.vue?vue&type=style&index=0&id=1648255d&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-1648255d\"]])\n\nexport default __exports__","import { render } from \"./View.vue?vue&type=template&id=e32f5b62&scoped=true\"\nimport script from \"./View.vue?vue&type=script&lang=js\"\nexport * from \"./View.vue?vue&type=script&lang=js\"\n\nimport \"./View.vue?vue&type=style&index=0&id=e32f5b62&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-e32f5b62\"]])\n\nexport default __exports__","<template>\n <label class=\"slider-wrapper\">\n <span class=\"range-labels\" :class=\"{'with-label': withLabel}\" v-if=\"withRange\">\n <span class=\"label left\" v-if=\"withRange\" v-text=\"range[0]\" />\n <span class=\"label right\" v-if=\"withRange\" v-text=\"range[1]\" />\n </span>\n\n <span class=\"slider-container\">\n <input class=\"slider\"\n type=\"range\"\n :class=\"{'with-label': withLabel}\"\n :min=\"range[0]\"\n :max=\"range[1]\"\n :step=\"step\"\n :disabled=\"disabled\"\n :value=\"value\"\n ref=\"range\"\n @input.stop=\"$emit('input', $event)\"\n @change.stop=\"$emit('change', $event)\">\n\n <span class=\"label\" v-if=\"withLabel\" v-text=\"value\" ref=\"label\"></span>\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n emits: ['input', 'change'],\n props: {\n value: {\n type: Number,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n range: {\n type: Array,\n default: () => [0, 100],\n },\n\n step: {\n type: Number,\n default: 1,\n },\n\n withLabel: {\n type: Boolean,\n default: false,\n },\n\n withRange: {\n type: Boolean,\n default: false,\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$label-width: 3em;\n$thumb-height: 1em;\n$slider-height: 0.5em;\n\n.slider-wrapper {\n width: 100%;\n display: flex;\n position: relative;\n flex-direction: column;\n\n .slider-container {\n width: 100%;\n display: flex;\n position: relative;\n }\n\n input.slider {\n width: 100%;\n background: none;\n height: 1.5em;\n position: relative;\n border-radius: 0.5em;\n cursor: pointer;\n outline: none;\n overflow: hidden;\n transition: all ease 100ms;\n @include appearance(none);\n\n &:active {\n filter: brightness(80%);\n cursor: grabbing;\n }\n\n &:hover {\n filter: saturate(130%);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n filter: grayscale(1);\n }\n\n /* Chrome and friends */\n &::-webkit-slider-runnable-track {\n position: relative;\n border-radius: $slider-height;\n background: linear-gradient($slider-bg 0 0) scroll no-repeat center /\n 100% calc(#{$slider-height} + 1px);\n }\n\n &::-webkit-slider-runnable-track,\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n transition: all ease 100ms;\n height: $thumb-height;\n }\n\n &::-webkit-slider-thumb {\n --clip-top: calc((#{$thumb-height} - #{$slider-height}) * 0.5);\n --clip-bottom: calc(#{$thumb-height} - var(--clip-top));\n --clip-further: calc(100% + 1px);\n\n width: $thumb-height;\n background: $slider-progress-bg;\n box-shadow: calc(-100vmax - #{$thumb-height} + 2.5px) #{$slider-height} #{$slider-height} 100vmax #{$slider-progress-bg};\n border-radius: $thumb-height;\n cursor: grab;\n\n &:hover {\n filter: brightness(130%) blur(1px);\n cursor: grab;\n }\n\n clip-path: polygon(\n 100% -1px,\n #{$slider-height} -1px,\n 0 var(--clip-top),\n -100vmax var(--clip-top),\n -100vmax var(--clip-bottom),\n 0 var(--clip-bottom),\n #{$slider-height} 100%,\n var(--clip-further) var(--clip-further)\n );\n }\n\n /* Firefox */\n &::-moz-range-track {\n background: $slider-bg;\n position: relative;\n height: $slider-height;\n border-radius: 0.5em;\n box-shadow: inset 1px 0px 3px 0 $slider-track-shadow;\n }\n\n &::-moz-range-thumb {\n $thumb-height: 1.125em;\n width: $thumb-height;\n height: $thumb-height;\n position: relative;\n background: $slider-thumb-bg;\n border-radius: 50%;\n border: none;\n cursor: grabbing;\n transition: all ease 100ms;\n @include appearance(none);\n\n &:hover {\n filter: brightness(130%) blur(1px);\n cursor: grab;\n }\n\n &:disabled {\n background: $slider-thumb-disabled-bg;\n cursor: not-allowed;\n }\n }\n\n &::-moz-range-progress {\n width: 100%;\n height: $slider-height;\n cursor: pointer;\n background: $slider-progress-bg;\n border-radius: 0.5em 0 0 0.5em;\n }\n }\n\n .range-labels {\n width: 100%;\n display: flex;\n\n .left {\n text-align: left;\n }\n\n .right {\n @extend .pull-right;\n flex-grow: 1;\n }\n }\n\n .label {\n width: $label-width;\n position: relative;\n font-weight: normal;\n text-align: center;\n }\n\n .with-label {\n width: calc(100% - $label-width);\n }\n}\n</style>\n","import { render } from \"./Slider.vue?vue&type=template&id=d90e850c&scoped=true\"\nimport script from \"./Slider.vue?vue&type=script&lang=js\"\nexport * from \"./Slider.vue?vue&type=script&lang=js\"\n\nimport \"./Slider.vue?vue&type=style&index=0&id=d90e850c&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-d90e850c\"]])\n\nexport default __exports__"],"names":["class","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","$props","elapsed","status","state","_ctx","convertTime","_hoisted_4","_createVNode","_component_Slider","value","range","duration","disabled","onChange","_cache","$event","$emit","target","_hoisted_5","components","Slider","emits","mixins","MediaUtils","props","type","Number","Object","default","__exports__","render","name","Utils","computed","audioExtensions","Set","videoExtensions","mediaExtensions","this","methods","time","parseFloat","t","h","parseInt","m","s","attr","ret","push","join","startStreaming","resource","pluginName","download","url","subtitles","request","media","stopStreaming","mediaId","media_id","_renderSlot","$slots","undefined","_hoisted_3","_component_Controls","buttons","image","track","onConsume","onMute","onNext","onPause","onPlay","onPrevious","onRandom","onRepeat","onSearch","onSeek","onSetVolume","onStop","onUnmute","_hoisted_7","_hoisted_9","_hoisted_11","_hoisted_30","_hoisted_32","_hoisted_34","_normalizeClass","hidden","$data","expanded","onClick","_withModifiers","args","$options","searchAlbum","trackImage","src","alt","title","playing","_hoisted_6","buttons_","previous","stop","next","_hoisted_13","_component_VolumeSlider","volumeRange","volume","_component_ExtraControls","consume","random","repeat","_hoisted_14","_component_ProgressBar","_hoisted_15","_hoisted_16","_component_PlayPauseButton","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_21","_hoisted_22","album","href","$route","fullPath","length","artist","_hoisted_26","searchArtist","_hoisted_28","_hoisted_29","_hoisted_36","_hoisted_37","_hoisted_39","enabled","mute","Array","ExtraControls","PlayPauseButton","ProgressBar","VolumeSlider","String","data","keys","lastSync","position","getTime","Date","album_uri","uris","artist_uri","mounted","self","$watch","setInterval","Math","round","Controls","required","withRange","withLabel","min","max","step","ref","onInput","Boolean"],"sourceRoot":""}