platypush/platypush/backend/http/webapp/dist/static/js/5962.8488ea6d.js.map

1 line
44 KiB
Plaintext

{"version":3,"file":"static/js/5962.8488ea6d.js","mappings":"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","sources":["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/ProgressBar.vue","webpack://platypush/./src/components/Media/ProgressBar.vue?32c3","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":["<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 :status=\"status\" :track=\"track\" :buttons=\"buttons\" @play=\"$emit('play', $event)\"\n @pause=\"$emit('pause', $event)\" @stop=\"$emit('stop')\" @previous=\"$emit('previous')\"\n @next=\"$emit('next')\" @seek=\"$emit('seek', $event)\" @set-volume=\"$emit('set-volume', $event)\"\n @consume=\"$emit('consume', $event)\" @repeat=\"$emit('repeat', $event)\" @random=\"$emit('random', $event)\"\n @search=\"$emit('search', $event)\" @mute=\"$emit('mute')\" @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 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=\"row\">\n <div class=\"col-3\">\n </div>\n <div class=\"col-6 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 class=\"col-3\">\n </div>\n </div>\n\n <div class=\"row\">\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\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=\"track.image\">\n <img class=\"image from desktop\" :src=\"track.image\" :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=\"$emit('search', {artist: track.artist, album: track.album})\" v-if=\"track.album\"></a>\n <a :href=\"track.url\" 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 :href=\"$route.fullPath\" v-text=\"track.artist\" @click.prevent=\"$emit('search', {artist: track.artist})\"></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 // 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\n methods: {\n getTime() {\n return (new Date()).getTime() / 1000\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 box-shadow: $border-shadow-bottom;\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 .row {\n display: flex;\n }\n\n .buttons {\n display: flex;\n justify-content: center;\n margin: 0;\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 display: flex;\n align-items: center;\n margin-left: 0;\n\n @include until($tablet) {\n align-items: 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 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=\"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 @input=\"$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=1dd8e0ae&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=1dd8e0ae&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-1dd8e0ae\"]])\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 @input=\"$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=47bd5147&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=47bd5147&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-47bd5147\"]])\n\nexport default __exports__","import { render } from \"./Controls.vue?vue&type=template&id=64249ecb&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=64249ecb&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-64249ecb\"]])\n\nexport default __exports__","import { render } from \"./View.vue?vue&type=template&id=7a861c3a&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=7a861c3a&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-7a861c3a\"]])\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=\"onUpdate\"\n @change.stop=\"onUpdate\">\n\n <div class=\"track\" :class=\"{'with-label': withLabel}\">\n <div class=\"track-inner\" ref=\"track\"></div>\n </div>\n <div class=\"thumb\" ref=\"thumb\"></div>\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 name: \"Slider\",\n emits: ['input', 'change', 'mouseup', 'mousedown', 'touchstart', 'touchend', 'keyup', 'keydown'],\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 methods: {\n onUpdate(event) {\n this.update(event.target.value)\n this.$emit(event.type, {\n ...event,\n target: {\n ...event.target,\n value: this.$refs.range.value,\n }\n })\n },\n\n update(value) {\n const sliderWidth = this.$refs.range.clientWidth\n const percent = (value - this.range[0]) / (this.range[1] - this.range[0])\n const innerWidth = percent * sliderWidth\n const thumb = this.$refs.thumb\n\n thumb.style.left = `${innerWidth - thumb.clientWidth / 2}px`\n this.$refs.thumb.style.transform = `translate(-${percent}%, -50%)`\n this.$refs.track.style.width = `${innerWidth}px`\n },\n },\n\n mounted() {\n if (this.value != null)\n this.update(this.value)\n this.$watch(() => this.value, (newValue) => this.update(newValue))\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$label-width: 3em;\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 .slider {\n width: 100%;\n cursor: pointer;\n opacity: 0;\n\n &::-ms-tooltip {\n display: none;\n }\n }\n\n .range-labels {\n width: 100%;\n display: flex;\n\n &.with-label {\n width: calc(100% - $label-width);\n }\n\n .left {\n text-align: left;\n }\n\n .right {\n @extend .pull-right;\n flex-grow: 1;\n }\n }\n\n .track {\n width: 100%;\n height: 0.75em;\n background: $slider-bg;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n border-radius: 0.5em;\n box-shadow: inset 1px 0px 3px 0 $slider-track-shadow;\n pointer-events: none;\n\n .track-inner {\n width: 0;\n height: 100%;\n background: $slider-progress-bg;\n border-radius: 0.5em 0 0 0.5em;\n }\n\n &.with-label {\n width: calc(100% - $label-width);\n }\n }\n\n .thumb {\n width: 1.25em;\n height: 1.25em;\n background: $slider-thumb-bg;\n position: absolute;\n top: 50%;\n left: 0;\n transform: translate(0%, -50%);\n border-radius: 50%;\n box-shadow: 1px 0px 2px 0 $slider-thumb-shadow;\n pointer-events: none;\n }\n\n .label {\n width: $label-width;\n position: relative;\n font-weight: normal;\n text-align: center;\n }\n}\n</style>\n","import { render } from \"./Slider.vue?vue&type=template&id=4b38623f&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=4b38623f&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-4b38623f\"]])\n\nexport default __exports__"],"names":["name","mixins","Utils","computed","audioExtensions","Set","videoExtensions","mediaExtensions","this","methods","convertTime","time","parseFloat","t","h","parseInt","m","s","attr","ret","push","join","startStreaming","resource","pluginName","download","url","subtitles","Object","request","media","stopStreaming","mediaId","media_id","__exports__","class","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_renderSlot","_ctx","$slots","undefined","_hoisted_3","_createVNode","_component_Controls","status","$props","track","buttons","onPlay","_cache","$event","$emit","onPause","onStop","onPrevious","onNext","onSeek","onSetVolume","onConsume","onRepeat","onRandom","onSearch","onMute","onUnmute","_hoisted_5","_hoisted_7","_hoisted_9","_hoisted_29","_hoisted_31","_hoisted_33","_normalizeClass","hidden","$data","expanded","_hoisted_4","buttons_","previous","onClick","title","stop","state","next","_hoisted_11","_hoisted_12","_component_VolumeSlider","value","volume","range","volumeRange","_component_ExtraControls","consume","random","repeat","_hoisted_13","_component_ProgressBar","elapsed","duration","$options","_hoisted_14","_hoisted_15","_component_PlayPauseButton","_hoisted_16","_hoisted_17","image","_hoisted_18","src","alt","_hoisted_20","_hoisted_21","album","href","$route","fullPath","_toDisplayString","length","_withModifiers","artist","_hoisted_25","_hoisted_27","_hoisted_28","_hoisted_35","_hoisted_36","_hoisted_38","_hoisted_6","enabled","emits","props","type","default","_component_Slider","disabled","onInput","target","components","Slider","MediaUtils","Number","mute","Array","ExtraControls","PlayPauseButton","ProgressBar","VolumeSlider","data","keys","lastSync","position","getTime","Date","mounted","self","$watch","setInterval","Math","round","Controls","String","required","render","ref","withRange","withLabel","min","max","step","args","onUpdate","onChange","Boolean","event","update","$refs","sliderWidth","clientWidth","percent","innerWidth","thumb","style","left","transform","width","newValue"],"sourceRoot":""}