platypush/platypush/backend/http/webapp/dist/static/js/7816.72e88390.js.map

1 line
111 KiB
Plaintext

{"version":3,"file":"static/js/7816.72e88390.js","mappings":"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","sources":["webpack://platypush/./src/components/panels/Media/Index.vue","webpack://platypush/./src/components/panels/Media/Header.vue","webpack://platypush/./src/components/panels/Media/Players.vue","webpack://platypush/./src/components/panels/Media/Players/Chromecast.vue","webpack://platypush/./src/components/panels/Media/Players/Mixin.vue","webpack://platypush/./src/components/panels/Media/Players/Mixin.vue?8a34","webpack://platypush/./src/components/panels/Media/Players/Chromecast.vue?c107","webpack://platypush/./src/components/panels/Media/Players/Kodi.vue","webpack://platypush/./src/components/panels/Media/Players/Kodi.vue?6dfd","webpack://platypush/./src/components/panels/Media/Players/Mplayer.vue","webpack://platypush/./src/components/panels/Media/Players/Mplayer.vue?eab0","webpack://platypush/./src/components/panels/Media/Players/Mpv.vue","webpack://platypush/./src/components/panels/Media/Players/Mpv.vue?06ab","webpack://platypush/./src/components/panels/Media/Players/Omxplayer.vue","webpack://platypush/./src/components/panels/Media/Players/Omxplayer.vue?69bd","webpack://platypush/./src/components/panels/Media/Players/Vlc.vue","webpack://platypush/./src/components/panels/Media/Players/Vlc.vue?4868","webpack://platypush/./src/components/panels/Media/Players.vue?c223","webpack://platypush/./src/components/panels/Media/Header.vue?b895","webpack://platypush/./src/components/panels/Media/Info.vue","webpack://platypush/./src/components/panels/Media/MediaImage.vue","webpack://platypush/./src/components/panels/Media/MediaImage.vue?fc5b","webpack://platypush/./src/components/panels/Media/Info.vue?c19c","webpack://platypush/./src/components/panels/Media/Nav.vue","webpack://platypush/./src/components/panels/Media/Nav.vue?bae0","webpack://platypush/./src/components/panels/Media/Results.vue","webpack://platypush/./src/components/panels/Media/Results.vue?23d6","webpack://platypush/./src/components/panels/Media/Subtitles.vue","webpack://platypush/./src/components/panels/Media/Subtitles.vue?17fa","webpack://platypush/./src/components/File/Browser.vue","webpack://platypush/./src/components/File/Browser.vue?8abf","webpack://platypush/./src/components/panels/Media/Index.vue?1f2c","webpack://platypush/./src/components/panels/Torrent/View.vue","webpack://platypush/./src/components/panels/Torrent/View.vue?80df"],"sourcesContent":["<template>\n <keep-alive>\n <div class=\"media-plugin fade-in\">\n <Loading v-if=\"loading\" />\n\n <MediaView :plugin-name=\"pluginName\" :status=\"selectedPlayer?.status || {}\" :track=\"selectedPlayer?.status || {}\"\n :buttons=\"mediaButtons\" @play=\"pause\" @pause=\"pause\" @stop=\"stop\" @set-volume=\"setVolume\"\n @seek=\"seek\" @search=\"search\" @mute=\"toggleMute\" @unmute=\"toggleMute\">\n <main>\n <div class=\"nav-container from tablet\" :style=\"navContainerStyle\">\n <Nav :selected-view=\"selectedView\" @input=\"selectedView = $event\"\n @toggle=\"forceShowNav = !forceShowNav\" />\n </div>\n\n <div class=\"view-container\">\n <Header :plugin-name=\"pluginName\"\n :selected-view=\"selectedView\"\n :has-subtitles-plugin=\"hasSubtitlesPlugin\"\n :sources=\"sources\"\n :selected-item=\"selectedItem\"\n :selected-subtitles=\"selectedSubtitles\"\n :browser-filter=\"browserFilter\"\n :show-nav-button=\"!forceShowNav\"\n ref=\"header\"\n @search=\"search\"\n @select-player=\"selectedPlayer = $event\"\n @player-status=\"onStatusUpdate\"\n @torrent-add=\"downloadTorrent($event)\"\n @show-subtitles=\"showSubtitlesModal = !showSubtitlesModal\"\n @play-url=\"showPlayUrlModal\"\n @filter=\"browserFilter = $event\"\n @toggle-nav=\"forceShowNav = !forceShowNav\"\n @source-toggle=\"sources[$event] = !sources[$event]\" />\n\n <div class=\"body-container\" :class=\"{'expanded-header': $refs.header?.filterVisible}\">\n <Results :results=\"results\" :selected-result=\"selectedResult\" @select=\"onResultSelect($event)\"\n @play=\"play\" @info=\"$refs.mediaInfo.isVisible = true\" @view=\"view\" @download=\"download\"\n :sources=\"sources\" v-if=\"selectedView === 'search'\" />\n\n <TorrentView :plugin-name=\"torrentPlugin\" :is-media=\"true\" @play=\"play\"\n v-else-if=\"selectedView === 'torrents'\" />\n\n <Browser :plugin-name=\"torrentPlugin\" :is-media=\"true\" :filter=\"browserFilter\"\n @path-change=\"browserFilter = ''\" @play=\"play($event)\" v-else-if=\"selectedView === 'browser'\" />\n </div>\n </div>\n </main>\n </MediaView>\n\n <div class=\"media-info-container\">\n <Modal title=\"Media info\" ref=\"mediaInfo\">\n <Info :item=\"results[selectedResult]\" v-if=\"selectedResult != null\" />\n </Modal>\n </div>\n\n <div class=\"subtitles-container\">\n <Modal title=\"Available subtitles\" :visible=\"showSubtitlesModal\" ref=\"subtitlesSelector\"\n @close=\"showSubtitlesModal = false\">\n <div class=\"subtitles-content\" v-if=\"showSubtitlesModal && selectedResult != null\" >\n <Subtitles :item=\"selectedPlayer && selectedPlayer.status &&\n (selectedPlayer.status.state === 'play' || selectedPlayer.status.state === 'pause')\n ? selectedPlayer.status : results[selectedResult]\" @select-subs=\"selectSubtitles($event)\" />\n </div>\n </Modal>\n </div>\n\n <div class=\"play-url-container\">\n <Modal title=\"Play URL\" ref=\"playUrlModal\" @open=\"$refs.playUrlInput.focus()\">\n <form @submit.prevent=\"playUrl(urlPlay)\">\n <div class=\"row\">\n <label>\n Play URL (use the file:// prefix for local files)\n <input type=\"text\" v-model=\"urlPlay\" ref=\"playUrlInput\" autofocus />\n </label>\n </div>\n\n <div class=\"row footer\">\n <button type=\"submit\" :disabled=\"!urlPlay?.length\">\n <i class=\"fa fa-play\"></i> Play\n </button>\n </div>\n </form>\n </Modal>\n </div>\n </div>\n </keep-alive>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport Modal from \"@/components/Modal\";\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport MediaView from \"@/components/Media/View\";\nimport Header from \"@/components/panels/Media/Header\";\nimport Info from \"@/components/panels/Media/Info\";\nimport Nav from \"@/components/panels/Media/Nav\";\nimport Results from \"@/components/panels/Media/Results\";\nimport Subtitles from \"@/components/panels/Media/Subtitles\";\nimport TorrentView from \"@/components/panels/Torrent/View\";\nimport Browser from \"@/components/File/Browser\";\n\nexport default {\n name: \"Media\",\n mixins: [Utils, MediaUtils],\n components: {Browser, Loading, MediaView, Header, Results, Modal, Info, Nav, TorrentView, Subtitles},\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n\n mediaButtons: {\n type: Object,\n default: () => {\n return {\n previous: false,\n next: false,\n stop: true,\n }\n }\n }\n },\n\n data() {\n return {\n loading: false,\n results: [],\n selectedResult: null,\n selectedPlayer: null,\n selectedView: 'search',\n selectedSubtitles: null,\n showSubtitlesModal: false,\n forceShowNav: false,\n awaitingPlayTorrent: null,\n urlPlay: null,\n browserFilter: null,\n torrentPlugin: null,\n torrentPlugins: [\n 'torrent',\n 'rtorrent',\n ],\n\n sources: {\n 'file': true,\n 'youtube': true,\n 'torrent': true,\n },\n }\n },\n\n computed: {\n hasSubtitlesPlugin() {\n return 'media.subtitles' in this.$root.config\n },\n\n navContainerStyle() {\n if (this.forceShowNav)\n return {\n display: 'flex !important',\n }\n\n return {}\n },\n\n selectedItem() {\n if (\n this.selectedPlayer && this.selectedPlayer.status &&\n (\n this.selectedPlayer.status.state === 'play' ||\n this.selectedPlayer.status.state === 'pause'\n )\n )\n return this.selectedPlayer.status\n\n return this.results[this.selectedResult]\n },\n },\n\n methods: {\n async search(event) {\n this.loading = true\n\n try {\n this.results = await this.request(`${this.pluginName}.search`, event)\n } finally {\n this.loading = false\n }\n },\n\n async play(item) {\n if (item?.type === 'torrent') {\n this.awaitingPlayTorrent = item.url\n await this.download(item)\n return\n }\n\n if (!this.selectedPlayer.component.supports(item))\n item = await this.startStreaming(item, this.pluginName)\n\n await this.selectedPlayer.component.play(item, this.selectedSubtitles, this.selectedPlayer)\n await this.refresh()\n },\n\n async pause() {\n await this.selectedPlayer.component.pause(this.selectedPlayer)\n await this.refresh()\n },\n\n async stop() {\n await this.selectedPlayer.component.stop(this.selectedPlayer)\n await this.refresh()\n },\n\n async setVolume(volume) {\n await this.selectedPlayer.component.setVolume(volume, this.selectedPlayer)\n await this.refresh()\n },\n\n async toggleMute() {\n await this.selectedPlayer.component.toggleMute(this.selectedPlayer)\n await this.refresh()\n },\n\n async seek(position) {\n await this.selectedPlayer.component.seek(position, this.selectedPlayer)\n await this.refresh()\n },\n\n async view(item) {\n const ret = await this.startStreaming(item, this.pluginName, true)\n window.open(ret.url, '_blank')\n },\n\n async download(item) {\n if (item?.type === 'torrent') {\n await this.downloadTorrent(item)\n }\n },\n\n async refresh() {\n this.selectedPlayer.status = await this.selectedPlayer.component.status(this.selectedPlayer)\n },\n\n onStatusUpdate(status) {\n if (!this.selectedPlayer)\n return\n\n this.selectedPlayer.status = status\n },\n\n onTorrentQueued(event) {\n this.notify({\n title: 'Torrent queued for download',\n text: event.name,\n image: {\n iconClass: 'fa fa-magnet',\n }\n })\n },\n\n onTorrentMetadata(event) {\n this.notify({\n title: 'Torrent metadata downloaded',\n text: event.name,\n image: {\n iconClass: 'fa fa-info',\n }\n })\n },\n\n onTorrentDownloadStart(event) {\n this.notify({\n title: 'Torrent download started',\n text: event.name,\n image: {\n iconClass: 'fa fa-download',\n }\n })\n },\n\n onTorrentDownloadCompleted(event) {\n this.notify({\n title: 'Torrent download completed',\n text: event.name,\n image: {\n iconClass: 'fa fa-check',\n }\n })\n },\n\n getTorrentPlugin() {\n const pluginConf = this.$root.config[this.pluginName] || {}\n let torrentPlugin = pluginConf.torrent_plugin\n if (!torrentPlugin) {\n for (let plugin of this.torrentPlugins) {\n if (plugin in this.$root.config) {\n torrentPlugin = plugin\n break\n }\n }\n }\n\n return torrentPlugin\n },\n\n async downloadTorrent(item) {\n const torrentPlugin = this.getTorrentPlugin()\n if (!torrentPlugin) {\n this.notify({\n text: 'No torrent plugins configured',\n error: true,\n })\n\n return\n }\n\n return await this.request(`${torrentPlugin}.download`, {torrent: item?.url || item})\n },\n\n async selectSubtitles(item) {\n this.$refs.subtitlesSelector.close()\n if (!item) {\n this.selectedSubtitles = null\n return\n }\n\n this.notify({\n text: 'Downloading subtitles track',\n image: {\n iconClass: 'fa fa-download',\n }\n })\n\n const subs = await this.request('media.subtitles.download', {link: item.SubDownloadLink})\n this.selectedSubtitles = subs.filename\n\n this.notify({\n text: 'Subtitles track downloaded',\n image: {\n iconClass: 'fa fa-check',\n }\n })\n },\n\n onResultSelect(result) {\n if (this.selectedResult == null || this.selectedResult !== result) {\n this.selectedResult = result\n this.selectedSubtitles = null\n }\n },\n\n showPlayUrlModal() {\n this.$refs.playUrlModal.show()\n this.$refs.playUrlInput.value = ''\n this.$nextTick(() => {\n this.$refs.playUrlInput.value = ''\n this.$refs.playUrlInput.focus()\n })\n },\n\n async playUrl(url) {\n this.loading = true\n\n try {\n await this.play({\n url: url,\n })\n\n this.$refs.playUrlModal.close()\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.$watch(() => this.selectedPlayer, (player) => {\n if (player)\n this.refresh()\n })\n\n this.$watch(() => this.selectedSubtitles, (subs) => {\n if (new Set(['play', 'pause']).has(this.selectedPlayer?.status?.state)) {\n if (subs)\n this.selectedPlayer.component.addSubtitles(subs)\n else\n this.selectedPlayer.component.removeSubtitles()\n }\n })\n\n this.torrentPlugin = this.getTorrentPlugin()\n this.subscribe(this.onTorrentQueued,'notify-on-torrent-queued',\n 'platypush.message.event.torrent.TorrentQueuedEvent')\n this.subscribe(this.onTorrentMetadata,'on-torrent-metadata',\n 'platypush.message.event.torrent.TorrentDownloadedMetadataEvent')\n this.subscribe(this.onTorrentDownloadStart,'notify-on-torrent-download-start',\n 'platypush.message.event.torrent.TorrentDownloadStartEvent')\n this.subscribe(this.onTorrentDownloadCompleted,'notify-on-torrent-download-completed',\n 'platypush.message.event.torrent.TorrentDownloadCompletedEvent')\n\n if ('media.plex' in this.$root.config)\n this.sources.plex = true\n\n if ('media.jellyfin' in this.$root.config)\n this.sources.jellyfin = true\n },\n\n destroy() {\n this.unsubscribe('notify-on-torrent-queued')\n this.unsubscribe('on-torrent-metadata')\n this.unsubscribe('notify-on-torrent-download-start')\n this.unsubscribe('notify-on-torrent-download-completed')\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"vars\";\n@import \"~@/components/Media/vars\";\n\n.media-plugin {\n width: 100%;\n\n main {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: row-reverse;\n\n .view-container {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n overflow: auto;\n background: $background-color;\n }\n\n .body-container {\n height: calc(100% - #{$media-header-height} - #{$media-ctrl-panel-height});\n padding-top: .1em;\n overflow: auto;\n\n &.expanded-header {\n height: calc(100% - #{$media-header-height} - #{$filter-header-height} - #{$media-ctrl-panel-height});\n }\n }\n }\n}\n\n:deep(.loading) {\n z-index: 10;\n}\n\n:deep(.media-info-container) {\n .modal-container {\n .body {\n max-width: calc(100vw - 2px);\n padding: 0;\n overflow: auto;\n }\n }\n}\n\n:deep(.subtitles-container) {\n .body {\n padding: 0 !important;\n\n .item {\n padding: 1em;\n }\n }\n}\n\n:deep(.play-url-container) {\n .body {\n padding: 1em !important;\n }\n\n form {\n padding: 0;\n margin: 0;\n border: none;\n border-radius: 0;\n box-shadow: none;\n }\n\n input[type=text] {\n width: 100%;\n }\n\n [type=submit] {\n background: initial;\n border-color: initial;\n border-radius: 1.5em;\n\n &:hover {\n color: $default-hover-fg-2;\n }\n }\n\n .footer {\n display: flex;\n justify-content: right;\n padding: 0;\n margin-top: 1em;\n }\n}\n\n:deep(.media-info-container) {\n .modal {\n max-width: 70em;\n }\n}\n</style>\n","<template>\n <div class=\"header\" :class=\"{'with-filter': filterVisible}\">\n <div class=\"row\">\n <div class=\"col-s-8 col-m-7 left side\" v-if=\"selectedView === 'search'\">\n <button title=\"Filter\" class=\"filter-btn\" :class=\"{selected: filterVisible}\"\n @click=\"filterVisible = !filterVisible\">\n <i class=\"fa fa-filter\" />\n </button>\n\n <form @submit.prevent=\"search\">\n <label class=\"search-box\">\n <input type=\"search\" placeholder=\"Search\" v-model=\"query\">\n </label>\n </form>\n </div>\n\n <div class=\"col-s-8 col-m-7 left side\" v-else-if=\"selectedView === 'torrents'\">\n <form @submit.prevent=\"$emit('torrent-add', torrentURL)\">\n <label class=\"search-box\">\n <input type=\"search\" placeholder=\"Add torrent URL\" v-model=\"torrentURL\">\n </label>\n </form>\n </div>\n\n <div class=\"col-s-8 col-m-7 left side\" v-else-if=\"selectedView === 'browser'\">\n <label class=\"search-box\">\n <input type=\"search\" placeholder=\"Filter\" :value=\"browserFilter\" @change=\"$emit('filter', $event.target.value)\"\n @keyup=\"$emit('filter', $event.target.value)\">\n </label>\n </div>\n\n <div class=\"col-s-4 col-m-5 right side\">\n <button class=\"mobile\" title=\"Menu\" @click=\"$emit('toggle-nav')\" v-if=\"showNavButton\">\n <i class=\"fas fa-bars\" />\n </button>\n\n <button title=\"Select subtitles\" class=\"captions-btn\" :class=\"{selected: selectedSubtitles != null}\"\n @click=\"$emit('show-subtitles')\" v-if=\"hasSubtitlesPlugin && selectedItem &&\n (selectedItem.type === 'file' || (selectedItem.url || '').startsWith('file://'))\">\n <i class=\"fas fa-closed-captioning\" />\n </button>\n\n <Players :plugin-name=\"pluginName\" @select=\"$emit('select-player', $event)\"\n @status=\"$emit('player-status', $event)\" />\n\n <button title=\"Play URL\" @click=\"$emit('play-url')\">\n <i class=\"fas fa-play\" />\n </button>\n </div>\n </div>\n\n <div class=\"row filter fade-in\" :class=\"{hidden: !filterVisible}\">\n <label v-for=\"source in Object.keys(sources)\" :key=\"source\">\n <input type=\"checkbox\" :checked=\"sources[source]\" @change=\"$emit('source-toggle', source)\" />\n {{ source }}\n </label>\n </div>\n </div>\n</template>\n\n<script>\nimport Players from \"@/components/panels/Media/Players\";\nexport default {\n name: \"Header\",\n components: {Players},\n emits: [\n 'filter',\n 'play-url',\n 'player-status',\n 'search',\n 'select-player',\n 'show-subtitles',\n 'source-toggle',\n 'toggle-nav',\n 'torrent-add',\n ],\n\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n\n selectedView: {\n type: String,\n required: true,\n },\n\n selectedSubtitles: {\n type: String,\n },\n\n selectedItem: {\n type: Object,\n },\n\n hasSubtitlesPlugin: {\n type: Boolean,\n default: false,\n },\n\n showNavButton: {\n type: Boolean,\n },\n\n browserFilter: {\n type: String,\n default: '',\n },\n\n sources: {\n type: Object,\n default: () => {},\n }\n },\n\n data() {\n return {\n filterVisible: false,\n query: '',\n torrentURL: '',\n }\n },\n\n methods: {\n search() {\n const types = Object.keys(this.sources).filter((source) => this.sources[source])\n if (!this.query?.length || !types?.length)\n return\n\n this.$emit('search', {\n query: this.query,\n types: types,\n })\n },\n },\n\n mounted() {\n this.$watch(() => this.selectedView, () => {\n this.$emit('filter', '')\n this.torrentURL = ''\n this.query = ''\n })\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"vars\";\n\n.header {\n width: 100%;\n height: $media-header-height;\n position: relative;\n background: $menu-panel-bg;\n padding: .5em;\n box-shadow: $border-shadow-bottom;\n\n .filter-btn.selected {\n color: $selected-fg;\n }\n\n .row {\n display: flex;\n align-items: center;\n }\n\n &.with-filter {\n height: calc(#{$media-header-height} + #{$filter-header-height});\n padding-bottom: 0;\n }\n\n .side {\n display: inline-flex;\n align-items: center;\n\n &.right {\n justify-content: right;\n direction: rtl;\n }\n }\n\n :deep(button) {\n background: none;\n padding: 0 .5em;\n border: 0;\n\n &:hover {\n color: $default-hover-fg-2;\n }\n }\n\n form {\n width: 100%;\n padding: 0;\n border: 0;\n border-radius: 0;\n box-shadow: none;\n background: initial;\n }\n\n .search-box {\n width: 100%;\n margin-left: .5em;\n\n input[type=search] {\n width: 100%;\n }\n }\n\n .filter {\n width: 100%;\n height: $filter-header-height;\n margin-top: .5em;\n\n label {\n display: inline-flex;\n flex-direction: row;\n margin-right: 1em;\n\n input {\n margin-right: .5em;\n }\n }\n }\n\n .captions-btn {\n margin-right: .5em;\n\n &.selected {\n color: $selected-fg;\n }\n }\n}\n</style>\n","<template>\n <div class=\"plugins\">\n <Chromecast :player=\"selectedPlayer?.pluginName === 'media.chromecast' ? selectedPlayer : null\"\n ref=\"chromecastPlugin\" @status=\"$emit('status', $event)\" />\n <Kodi :player=\"selectedPlayer?.pluginName === 'media.kodi' ? selectedPlayer : null\" ref=\"kodiPlugin\"\n @status=\"$emit('status', $event)\" />\n <Mplayer :player=\"selectedPlayer?.pluginName === 'media.mplayer' ? selectedPlayer : null\" ref=\"mplayerPlugin\"\n @status=\"$emit('status', $event)\" />\n <Mpv :player=\"selectedPlayer?.pluginName === 'media.mpv' ? selectedPlayer : null\" ref=\"mpvPlugin\"\n @status=\"$emit('status', $event)\" />\n <Omxplayer :player=\"selectedPlayer?.pluginName === 'media.omxplayer' ? selectedPlayer : null\" ref=\"omxplayerPlugin\"\n @status=\"$emit('status', $event)\" />\n <Vlc :player=\"selectedPlayer?.pluginName === 'media.vlc' ? selectedPlayer : null\" ref=\"vlcPlugin\"\n @status=\"$emit('status', $event)\" />\n </div>\n\n <div class=\"players\">\n <Dropdown :title=\"selectedPlayer?.name || 'Players'\"\n :icon-class=\"selectedPlayer ? selectedPlayer.iconClass : 'fab fa-chromecast'\">\n <Loading v-if=\"loading\" />\n\n <div class=\"refresh\">\n <DropdownItem text=\"Refresh\" icon-class=\"fa fa-sync-alt\" @click=\"refresh\" />\n </div>\n\n <div class=\"no-results\" v-if=\"!players?.length\">No players found</div>\n\n <div class=\"player\" v-for=\"(player, i) in players\" :key=\"i\"\n :class=\"{selected: selectedPlayer != null && selectedPlayer.pluginName === player.pluginName\n && selectedPlayer.name === player.name}\">\n <DropdownItem :text=\"player.name\" :icon-class=\"player.iconClass\" @click=\"select(player)\" />\n </div>\n </Dropdown>\n </div>\n</template>\n\n<script>\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\nimport Loading from \"@/components/Loading\";\n\nimport Chromecast from \"@/components/panels/Media/Players/Chromecast\"\nimport Kodi from \"@/components/panels/Media/Players/Kodi\";\nimport Mplayer from \"@/components/panels/Media/Players/Mplayer\";\nimport Mpv from \"@/components/panels/Media/Players/Mpv\";\nimport Omxplayer from \"@/components/panels/Media/Players/Omxplayer\";\nimport Vlc from \"@/components/panels/Media/Players/Vlc\";\n\nexport default {\n name: \"Players\",\n components: {Loading, DropdownItem, Dropdown, Chromecast, Kodi, Mplayer, Mpv, Omxplayer, Vlc},\n emits: ['select', 'status'],\n\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n },\n\n data() {\n return {\n loading: false,\n players: [],\n selectedPlayer: null,\n config: {},\n plugins: [],\n }\n },\n\n methods: {\n loadPlugins() {\n this.plugins = Object.entries(this.$refs).filter((p) => p[0].endsWith('Plugin')).map((p) => p[1])\n },\n\n async refresh() {\n this.players = []\n this.loading = true\n const config = this.$root.config\n\n try {\n await Promise.all(this.plugins.map(async (plugin) => {\n if (!(plugin.pluginName in config))\n return\n\n const players = await plugin.getPlayers()\n this.players.push(...players)\n\n if (this.selectedPlayer == null && plugin.pluginName === this.pluginName && players.length > 0) {\n this.select(players[0])\n }\n }))\n } finally {\n this.loading = false\n }\n },\n\n select(player) {\n this.selectedPlayer = player\n this.$emit('select', player)\n },\n },\n\n async mounted() {\n await this.loadPlugins()\n await this.refresh()\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.plugins {\n display: none;\n}\n\n.no-results {\n padding: 1em;\n}\n\n.players {\n :deep(.dropdown) {\n direction: ltr;\n .item {\n padding: .5em;\n }\n\n .icon {\n margin-right: 1em !important;\n }\n }\n\n :deep(.refresh) {\n font-weight: bold;\n font-size: .8em;\n opacity: .7;\n }\n\n :deep(.player.selected) {\n color: $selected-fg;\n }\n}\n</style>\n","<template>\n <div />\n</template>\n\n<script>\nimport Mixin from \"@/components/panels/Media/Players/Mixin\";\n\nexport default {\n name: \"Chromecast\",\n mixins: [Mixin],\n data() {\n return {\n name: 'Chromecast',\n pluginName: 'media.chromecast',\n iconClass: 'fab fa-chromecast',\n }\n },\n\n methods: {\n async getPlayers() {\n const devices = await this.request(`${this.pluginName}.get_chromecasts`)\n return Promise.all(devices.map(async (device) => {\n return {\n ...device,\n iconClass: device.type === 'audio' ? 'fa fa-volume-up' : 'fab fa-chromecast',\n pluginName: this.pluginName,\n status: this.request(`${this.pluginName}.status`, {chromecast: device.name}),\n component: this,\n }\n }))\n },\n\n getPlayerName(player) {\n if (typeof player === 'string')\n return player\n\n if (!player)\n return this.player?.name\n\n return player?.name\n },\n\n async status(player) {\n return await this.request(`${this.pluginName}.status`, {chromecast: this.getPlayerName(player)})\n },\n\n async play(resource, player) {\n if (!resource) {\n return await this.pause(player)\n }\n\n return await this.request(`${this.pluginName}.play`, {resource: resource.url, chromecast: this.getPlayerName(player)})\n },\n\n async pause(player) {\n return await this.request(`${this.pluginName}.pause`, {chromecast: this.getPlayerName(player)})\n },\n\n async stop(player) {\n return await this.request(`${this.pluginName}.quit`, {chromecast: this.getPlayerName(player)})\n },\n\n async setVolume(volume, player) {\n return await this.request(`${this.pluginName}.set_volume`, {volume: volume, chromecast: this.getPlayerName(player)})\n },\n\n async seek(position, player) {\n return await this.request(`${this.pluginName}.seek`, {position: position, chromecast: this.getPlayerName(player)})\n },\n\n async onMediaEvent(event) {\n if (event.plugin !== this.pluginName)\n return false\n\n this.$emit('status', await this.status(event.player))\n return true\n },\n\n supports(resource) {\n return resource?.type === 'youtube' ||\n (resource.url || resource).startsWith('http://') || (resource.url || resource).startsWith('https://')\n },\n },\n}\n</script>\n","<script>\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils\";\n\nexport default {\n name: \"Mixin\",\n mixins: [Utils, MediaUtils],\n emits: ['status'],\n\n props: {\n player: {\n type: Object,\n },\n },\n\n data() {\n return {\n iconClass: null,\n name: null,\n pluginName: null,\n }\n },\n\n methods: {\n async getPlayers() {\n return [{\n iconClass: this.iconClass,\n name: this.name,\n pluginName: this.pluginName,\n component: this,\n status: await this.status(),\n }]\n },\n\n async status() {\n return await this.request(`${this.pluginName}.status`)\n },\n\n async play(resource, subs) {\n if (!resource) {\n return await this.pause()\n }\n\n return await this.request(`${this.pluginName}.play`, {resource: resource.url, subtitles: subs})\n },\n\n async pause() {\n return await this.request(`${this.pluginName}.pause`)\n },\n\n async stop() {\n return await this.request(`${this.pluginName}.stop`)\n },\n\n async setVolume(volume) {\n return await this.request(`${this.pluginName}.set_volume`, {volume: volume})\n },\n\n async toggleMute() {\n return await this.request(`${this.pluginName}.mute`)\n },\n\n async seek(position) {\n return await this.request(`${this.pluginName}.seek`, {position: position})\n },\n\n async onNewMedia(event) {\n const isMine = await this.onMediaEvent(event)\n\n if (isMine && event.title) {\n this.notify({\n title: event.player || event.device || this.player?.name || this.name || this.pluginName,\n text: event.title,\n image: {\n iconClass: this.iconClass || 'fa fa-play',\n }\n })\n }\n },\n\n async onMediaEvent(event) {\n if (event.plugin !== this.pluginName)\n return false\n\n this.$emit('status', await this.status())\n return true\n },\n\n async addSubtitles(subs) {\n await this.request(`${this.pluginName}.add_subtitles`, {filename: subs})\n await this.request(`${this.pluginName}.toggle_subtitles`, {visible: true})\n },\n\n async removeSubtitles() {\n await this.request(`${this.pluginName}.toggle_subtitles`, {visible: false})\n },\n\n supports(resource) {\n return resource?.type === 'file' || resource?.type === 'youtube' ||\n (resource.url || resource).startsWith('file://') || (resource.url || resource).startsWith('http://') ||\n (resource.url || resource).startsWith('https://')\n },\n },\n\n mounted() {\n this.subscribe(this.onNewMedia, `on-new-media-${this.pluginName}`,\n 'platypush.message.event.media.NewPlayingMediaEvent')\n\n this.subscribe(this.onMediaEvent, `on-media-event-${this.pluginName}`,\n 'platypush.message.event.media.MediaPlayEvent',\n 'platypush.message.event.media.MediaStopEvent',\n 'platypush.message.event.media.MediaPauseEvent',\n 'platypush.message.event.media.MediaSeekEvent',\n 'platypush.message.event.media.MediaVolumeChangedEvent',\n 'platypush.message.event.media.MediaMuteChangedEvent')\n },\n\n destroy() {\n this.unsubscribe(`on-media-event-${this.pluginName}`)\n },\n}\n</script>\n","import script from \"./Mixin.vue?vue&type=script&lang=js\"\nexport * from \"./Mixin.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { render } from \"./Chromecast.vue?vue&type=template&id=55476f3a\"\nimport script from \"./Chromecast.vue?vue&type=script&lang=js\"\nexport * from \"./Chromecast.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div />\n</template>\n\n<script>\nimport Mixin from \"@/components/panels/Media/Players/Mixin\";\n\nexport default {\n name: \"Kodi\",\n mixins: [Mixin],\n data() {\n return {\n iconClass: 'fa fa-kodi',\n name: 'Kodi',\n pluginName: 'media.kodi',\n }\n },\n\n methods: {\n async getPlayers() {\n return [{\n iconClass: this.iconClass,\n pluginName: this.pluginName,\n name: this.$root.config['media.kodi']?.host || this.name,\n component: this,\n status: await this.request(`${this.pluginName}.status`)\n }]\n },\n\n supports(resource) {\n return resource?.type === 'youtube' || (resource.url || resource).startsWith('http://') ||\n (resource.url || resource).startsWith('https://')\n },\n },\n}\n</script>\n","import { render } from \"./Kodi.vue?vue&type=template&id=25a1a1cf\"\nimport script from \"./Kodi.vue?vue&type=script&lang=js\"\nexport * from \"./Kodi.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div />\n</template>\n\n<script>\nimport Mixin from \"@/components/panels/Media/Players/Mixin\";\n\nexport default {\n name: \"Mplayer\",\n mixins: [Mixin],\n data() {\n return {\n iconClass: 'fa fa-tv',\n name: 'MPlayer',\n pluginName: 'media.mplayer',\n }\n },\n}\n</script>\n","import { render } from \"./Mplayer.vue?vue&type=template&id=0caf2d73\"\nimport script from \"./Mplayer.vue?vue&type=script&lang=js\"\nexport * from \"./Mplayer.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div />\n</template>\n\n<script>\nimport Mixin from \"@/components/panels/Media/Players/Mixin\";\n\nexport default {\n name: \"Mpv\",\n mixins: [Mixin],\n data() {\n return {\n iconClass: 'fa fa-tv',\n name: 'mpv',\n pluginName: 'media.mpv',\n }\n },\n}\n</script>\n","import { render } from \"./Mpv.vue?vue&type=template&id=3b3bb533\"\nimport script from \"./Mpv.vue?vue&type=script&lang=js\"\nexport * from \"./Mpv.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div />\n</template>\n\n<script>\nimport Mixin from \"@/components/panels/Media/Players/Mixin\";\n\nexport default {\n name: \"Omxplayer\",\n mixins: [Mixin],\n data() {\n return {\n iconClass: 'fa fa-tv',\n name: 'OMXPlayer',\n pluginName: 'media.omxplayer',\n }\n },\n}\n</script>\n","import { render } from \"./Omxplayer.vue?vue&type=template&id=0f086473\"\nimport script from \"./Omxplayer.vue?vue&type=script&lang=js\"\nexport * from \"./Omxplayer.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div />\n</template>\n\n<script>\nimport Mixin from \"@/components/panels/Media/Players/Mixin\";\n\nexport default {\n name: \"Vlc\",\n mixins: [Mixin],\n data() {\n return {\n iconClass: 'fa fa-tv',\n name: 'VLC',\n pluginName: 'media.vlc',\n }\n },\n}\n</script>\n","import { render } from \"./Vlc.vue?vue&type=template&id=5b5bcdd3\"\nimport script from \"./Vlc.vue?vue&type=script&lang=js\"\nexport * from \"./Vlc.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./Players.vue?vue&type=template&id=f3388e1c&scoped=true\"\nimport script from \"./Players.vue?vue&type=script&lang=js\"\nexport * from \"./Players.vue?vue&type=script&lang=js\"\n\nimport \"./Players.vue?vue&type=style&index=0&id=f3388e1c&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-f3388e1c\"]])\n\nexport default __exports__","import { render } from \"./Header.vue?vue&type=template&id=39ee4bbe&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=39ee4bbe&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-39ee4bbe\"]])\n\nexport default __exports__","<template>\n <div class=\"media-info\">\n <div class=\"row header\">\n <MediaImage :item=\"item\" />\n\n <div class=\"title\">\n <a :href=\"item.url\" target=\"_blank\" v-if=\"item.url\" v-text=\"item.title\" />\n <span v-else v-text=\"item.title\" />\n </div>\n </div>\n\n <div class=\"row\" v-if=\"item?.series\">\n <div class=\"left side\">TV Series</div>\n <div class=\"right side\" v-text=\"item.series\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.season\">\n <div class=\"left side\">Season</div>\n <div class=\"right side\" v-text=\"item.season\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.episode\">\n <div class=\"left side\">Episode</div>\n <div class=\"right side\" v-text=\"item.episode\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.num_seasons\">\n <div class=\"left side\">Number of seasons</div>\n <div class=\"right side\" v-text=\"item.num_seasons\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.synopsis\">\n <div class=\"left side\">Synopsis</div>\n <div class=\"right side\" v-text=\"item.synopsis\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.description\">\n <div class=\"left side\">Description</div>\n <div class=\"right side\" v-text=\"item.description\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.summary\">\n <div class=\"left side\">Summary</div>\n <div class=\"right side\" v-text=\"item.summary\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.overview\">\n <div class=\"left side\">Overview</div>\n <div class=\"right side\" v-text=\"item.overview\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.country\">\n <div class=\"left side\">Country</div>\n <div class=\"right side\" v-text=\"item.country\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.network\">\n <div class=\"left side\">Network</div>\n <div class=\"right side\" v-text=\"item.network\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.status\">\n <div class=\"left side\">Status</div>\n <div class=\"right side\" v-text=\"item.status\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.rating\">\n <div class=\"left side\">Rating</div>\n <div class=\"right side\" v-text=\"item.rating.percentage\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.rating\">\n <div class=\"left side\">Votes</div>\n <div class=\"right side\" v-text=\"item.rating.votes\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.genres\">\n <div class=\"left side\">Genres</div>\n <div class=\"right side\" v-text=\"item.genres.join(', ')\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.channelId\">\n <div class=\"left side\">Channel</div>\n <div class=\"right side\">\n <a :href=\"`https://www.youtube.com/channel/${item.channelId}`\" target=\"_blank\"\n v-text=\"item.channelTitle || `https://www.youtube.com/channel/${item.channelId}`\" />\n </div>\n </div>\n\n <div class=\"row\" v-if=\"item?.year\">\n <div class=\"left side\">Year</div>\n <div class=\"right side\" v-text=\"item.year\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.publishedAt\">\n <div class=\"left side\">Published at</div>\n <div class=\"right side\" v-text=\"formatDate(item.publishedAt, true)\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.file\">\n <div class=\"left side\">File</div>\n <div class=\"right side\" v-text=\"item.file\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.trailer\">\n <div class=\"left side\">Trailer</div>\n <div class=\"right side url\">\n <a :href=\"item.trailer\" target=\"_blank\" v-text=\"item.trailer\" />\n </div>\n </div>\n\n <div class=\"row\" v-if=\"item?.size\">\n <div class=\"left side\">Size</div>\n <div class=\"right side\" v-text=\"convertSize(item.size)\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.quality\">\n <div class=\"left side\">Quality</div>\n <div class=\"right side\" v-text=\"item.quality\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.seeds\">\n <div class=\"left side\">Seeds</div>\n <div class=\"right side\" v-text=\"item.seeds\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.peers\">\n <div class=\"left side\">Peers</div>\n <div class=\"right side\" v-text=\"item.peers\" />\n </div>\n\n <div class=\"row\" v-if=\"item?.language\">\n <div class=\"left side\">Language</div>\n <div class=\"right side\" v-text=\"item.language\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport MediaImage from \"./MediaImage\";\n\nexport default {\n name: \"Info\",\n components: {MediaImage},\n mixins: [Utils, MediaUtils],\n props: {\n item: {\n type: Object,\n default: () => {},\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"vars\";\n\n.media-info {\n width: 100%;\n\n @include from($tablet) {\n width: 640px;\n }\n}\n\n.row {\n display: flex;\n min-height: 3em;\n padding: .5em 1em;\n\n @include until ($tablet) {\n flex-direction: column;\n }\n\n @include from ($tablet) {\n align-items: center;\n }\n\n &:not(:last-child) {\n border-bottom: $default-border-2;\n }\n\n &:hover {\n background: $hover-bg;\n border-radius: .5em;\n }\n\n .side {\n align-items: center;\n display: inline-flex;\n\n &.url {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n @include until ($tablet) {\n display: flex;\n\n &.left {\n font-weight: bold;\n }\n\n &.right {\n justify-content: left;\n }\n }\n\n @include from ($tablet) {\n display: inline-flex;\n\n &.left {\n width: 22%;\n margin-right: 3%;\n }\n\n &.right {\n width: 75%;\n justify-content: right;\n }\n }\n }\n}\n\n.header {\n width: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n\n .title {\n width: 100%;\n font-size: 1.5em;\n font-weight: bold;\n margin-top: 0.5em;\n text-align: center;\n overflow-wrap: break-word;\n }\n\n &:hover {\n background: initial;\n }\n}\n</style>\n","<template>\n <div class=\"image-container\">\n <img class=\"image\" :src=\"item.image\" :alt=\"item.title\" v-if=\"item?.image\" />\n <div class=\"image\" v-else>\n <div class=\"inner\">\n <i class=\"fas fa-play\" />\n </div>\n </div>\n\n <span class=\"imdb-link\" v-if=\"item?.imdb_id\">\n <a :href=\"`https://www.imdb.com/title/${item.imdb_id}`\" target=\"_blank\">\n <i class=\"fab fa-imdb\" />\n </a>\n </span>\n\n <span class=\"duration\" v-if=\"item?.duration != null\"\n v-text=\"convertTime(item.duration)\" />\n </div>\n</template>\n\n<script>\nimport MediaUtils from \"@/components/Media/Utils\";\n\nexport default {\n mixins: [MediaUtils],\n props: {\n item: {\n type: Object,\n default: () => {},\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"vars\";\n\n.imdb-link {\n position: absolute;\n top: 0;\n right: 0;\n height: 1em;\n font-size: 2em;\n\n &:hover {\n color: $default-hover-fg;\n }\n\n i {\n background: #ffff00;\n border-radius: 0.25em;\n }\n}\n\n.duration {\n position: absolute;\n bottom: 0;\n right: 0;\n font-size: 0.9em;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n padding: 0.25em 0.5em;\n border-radius: 0.25em;\n}\n\n.image-container {\n width: 100%;\n min-height: 240px;\n position: relative;\n\n img {\n @include from($tablet) {\n height: 480px;\n }\n }\n}\n\ndiv.image {\n height: 400px;\n color: $default-media-img-fg;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .inner {\n width: calc(100% - 20px);\n height: calc(100% - 20px);\n min-height: 240px;\n background: $default-media-img-bg;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 1em;\n }\n}\n</style>\n","import { render } from \"./MediaImage.vue?vue&type=template&id=8f4d3bb8&scoped=true\"\nimport script from \"./MediaImage.vue?vue&type=script&lang=js\"\nexport * from \"./MediaImage.vue?vue&type=script&lang=js\"\n\nimport \"./MediaImage.vue?vue&type=style&index=0&id=8f4d3bb8&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-8f4d3bb8\"]])\n\nexport default __exports__","import { render } from \"./Info.vue?vue&type=template&id=79111024&scoped=true\"\nimport script from \"./Info.vue?vue&type=script&lang=js\"\nexport * from \"./Info.vue?vue&type=script&lang=js\"\n\nimport \"./Info.vue?vue&type=style&index=0&id=79111024&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-79111024\"]])\n\nexport default __exports__","<template>\n <nav>\n <button class=\"menu-button mobile\" @click=\"$emit('toggle')\">\n <i class=\"fa fa-bars\" />\n </button>\n\n <li v-for=\"(view, name) in views\" :key=\"name\" :title=\"view.displayName\"\n :class=\"{selected: name === selectedView}\" @click=\"$emit('input', name)\">\n <i :class=\"view.iconClass\" />\n </li>\n </nav>\n</template>\n\n<script>\nexport default {\n emits: ['input', 'toggle'],\n props: {\n selectedView: {\n type: String,\n },\n\n collapsed: {\n type: Boolean,\n default: false,\n },\n\n views: {\n type: Object,\n default: () => {\n return {\n search: {\n iconClass: 'fa fa-search',\n displayName: 'Search',\n },\n\n browser: {\n iconClass: 'fa fa-folder',\n displayName: 'Browser',\n },\n\n torrents: {\n iconClass: 'fa fa-magnet',\n displayName: 'Torrents',\n },\n }\n }\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import 'vars.scss';\n\nnav {\n width: $media-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 position: relative;\n box-shadow: 2.5px 0 4.5px 2px $nav-collapsed-fg;\n margin-left: 2.5px;\n overflow: hidden;\n\n .menu-button {\n position: absolute;\n top: 0.75em;\n left: 0;\n width: 100%;\n display: inline-flex;\n justify-content: center;\n padding: 0;\n margin: 0;\n font-size: 1.2em;\n border: 0;\n background: none;\n cursor: pointer;\n z-index: 1;\n\n &:hover {\n color: $default-hover-fg;\n }\n }\n\n li {\n display: flex;\n align-items: center;\n font-size: 1.2em;\n cursor: pointer;\n list-style: none;\n padding: .6em;\n opacity: 0.7;\n\n &.selected,\n &:hover {\n border-radius: 1.2em;\n margin: 0 0.2em;\n }\n\n &:hover {\n background: $nav-entry-collapsed-hover-bg;\n }\n\n &.selected {\n background: $nav-entry-collapsed-selected-bg;\n }\n\n }\n}\n</style>\n","import { render } from \"./Nav.vue?vue&type=template&id=f4632602&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=f4632602&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-f4632602\"]])\n\nexport default __exports__","<template>\n <div class=\"media-results\">\n <div class=\"no-content\" v-if=\"!results?.length\">\n No search results\n </div>\n\n <div class=\"row item\" :class=\"{selected: selectedResult === i, hidden: !sources[result.type]}\"\n v-for=\"(result, i) in results\" :key=\"i\" @click=\"$emit('select', i)\">\n <div class=\"col-10 left side\">\n <div class=\"icon\">\n <i :class=\"typeIcons[result.type]\" />\n </div>\n <div class=\"title\" v-text=\"result.title\" />\n </div>\n\n <div class=\"col-2 right side\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\" @click=\"$emit('select', i)\">\n <DropdownItem icon-class=\"fa fa-play\" text=\"Play\" @click=\"$emit('play', result)\"\n v-if=\"result?.type !== 'torrent'\" />\n <DropdownItem icon-class=\"fa fa-download\" text=\"Download\" @click=\"$emit('download', result)\"\n v-if=\"result?.type === 'torrent'\" />\n <DropdownItem icon-class=\"fa fa-window-maximize\" text=\"View in browser\" @click=\"$emit('view', result)\"\n v-if=\"result?.type === 'file'\" />\n <DropdownItem icon-class=\"fa fa-info\" text=\"Info\" @click=\"$emit('info', result)\" />\n </Dropdown>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\n\nexport default {\n name: \"Results\",\n components: {Dropdown, DropdownItem},\n emits: ['select', 'info', 'play', 'view', 'download'],\n props: {\n results: {\n type: Array,\n default: () => [],\n },\n\n selectedResult: {\n type: Number,\n },\n\n sources: {\n type: Object,\n default: () => {},\n },\n },\n\n data() {\n return {\n typeIcons: {\n 'file': 'fa fa-hdd',\n 'torrent': 'fa fa-magnet',\n 'youtube': 'fab fa-youtube',\n 'plex': 'fa fa-plex',\n 'jellyfin': 'fa fa-jellyfin',\n },\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"src/style/items\";\n\n.media-results {\n width: 100%;\n height: 100%;\n background: $background-color;\n overflow: auto;\n\n .item {\n display: flex;\n align-items: center;\n\n &.selected {\n background: $selected-bg;\n }\n\n .side {\n display: inline-flex;\n align-items: center;\n\n &.left {\n overflow: hidden;\n text-overflow: \" [...]\";\n }\n\n &.right {\n justify-content: flex-end;\n margin-right: .5em;\n }\n\n :deep(.dropdown-container) {\n .item {\n box-shadow: none;\n }\n\n button {\n border: 0;\n padding: 0;\n background: none;\n opacity: .7;\n\n &:hover {\n color: $default-hover-fg-2;\n }\n }\n }\n }\n }\n\n .no-content {\n height: 100%;\n }\n\n .icon {\n .fa-youtube {\n color: #d21;\n }\n }\n}\n</style>\n","import { render } from \"./Results.vue?vue&type=template&id=f13a5640&scoped=true\"\nimport script from \"./Results.vue?vue&type=script&lang=js\"\nexport * from \"./Results.vue?vue&type=script&lang=js\"\n\nimport \"./Results.vue?vue&type=style&index=0&id=f13a5640&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-f13a5640\"]])\n\nexport default __exports__","<template>\n <div class=\"subtitles-container\">\n <div class=\"items\">\n <Loading v-if=\"loading\" />\n <div class=\"row item\" :class=\"{selected: selectedItem == null}\" @click=\"selectedItem = null\">\n <div class=\"col-1 icon\">\n <i class=\"fa fa-ban\" />\n </div>\n\n <div class=\"col-11 title\">None</div>\n </div>\n\n <div class=\"row item\" :class=\"{selected: selectedItem === i}\" v-for=\"(sub, i) in items\" :key=\"i\"\n @click=\"selectedItem = i\">\n <div class=\"col-1 icon\">\n <i class=\"fa fa-file\" v-if=\"sub.IsLocal\" />\n <i class=\"flag-icon\" :class=\"`flag-icon-${sub.ISO639}`\" v-else-if=\"sub.ISO639\" />\n <i class=\"fa fa-closed-captioning\" v-else />\n </div>\n {{ sub.SubFileName }}\n </div>\n </div>\n\n <div class=\"footer\">\n <button @click=\"$emit('select-subs', selectedItem == null ? null : items[selectedItem])\">Select</button>\n </div>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\"\nimport Utils from \"@/Utils\";\n\nexport default {\n name: \"Subtitles\",\n mixins: [Utils],\n components: {Loading},\n emits: ['select-subs'],\n props: {\n item: {\n type: Object,\n default: () => {},\n },\n },\n\n data() {\n return {\n loading: false,\n items: [],\n selectedItem: null,\n }\n },\n\n methods: {\n async refresh() {\n this.loading = true\n\n try {\n this.items = await this.request('media.subtitles.search', {resource: this.item.url, language: 'all'})\n } finally {\n this.loading = false\n }\n }\n },\n\n mounted() {\n this.refresh()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"src/style/items\";\n@import \"~@/style/flag-icons.css\";\n\n.subtitles-container {\n .items {\n overflow: auto;\n }\n\n .footer {\n display: flex;\n justify-content: right;\n padding: 1em;\n background: $default-bg-6;\n box-shadow: $border-shadow-top;\n }\n}\n</style>\n","import { render } from \"./Subtitles.vue?vue&type=template&id=77ae3705&scoped=true\"\nimport script from \"./Subtitles.vue?vue&type=script&lang=js\"\nexport * from \"./Subtitles.vue?vue&type=script&lang=js\"\n\nimport \"./Subtitles.vue?vue&type=style&index=0&id=77ae3705&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-77ae3705\"]])\n\nexport default __exports__","<template>\n <div class=\"browser-container\">\n <Loading v-if=\"loading\" />\n\n <div class=\"row item\" @click=\"path = (path || '') + '/..'\" v-if=\"path?.length && path !== '/'\">\n <div class=\"col-10 left side\">\n <i class=\"icon fa fa-folder\" />\n <span class=\"name\">..</span>\n </div>\n </div>\n\n <div class=\"row item\" v-for=\"(file, i) in filteredFiles\" :key=\"i\" @click=\"path = file.path\">\n <div class=\"col-10\">\n <i class=\"icon fa\" :class=\"{'fa-file': file.type !== 'directory', 'fa-folder': file.type === 'directory'}\" />\n <span class=\"name\">\n {{ file.name }}\n </span>\n </div>\n\n <div class=\"col-2 actions\">\n <Dropdown>\n <DropdownItem icon-class=\"fa fa-play\" text=\"Play\"\n @click=\"$emit('play', {type: 'file', url: `file://${file.path}`})\"\n v-if=\"isMedia && mediaExtensions.has(file.name.split('.').pop())\" />\n </Dropdown>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils\";\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\n\nexport default {\n name: \"Browser\",\n components: {DropdownItem, Dropdown, Loading},\n mixins: [Utils, MediaUtils],\n emits: ['path-change'],\n\n props: {\n initialPath: {\n type: String,\n },\n\n isMedia: {\n type: Boolean,\n },\n\n filter: {\n type: String,\n default: '',\n },\n },\n\n data() {\n return {\n loading: false,\n path: this.initialPath,\n files: [],\n }\n },\n\n computed: {\n filteredFiles() {\n if (!this.filter?.length)\n return this.files\n\n return this.files.filter((file) => (file?.name || '').toLowerCase().indexOf(this.filter.toLowerCase()) >= 0)\n },\n },\n\n methods: {\n async refresh() {\n this.loading = true\n\n try {\n this.files = await this.request('file.list', {path: this.path})\n this.$emit('path-change', this.path)\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.$watch(() => this.path, () => this.refresh())\n this.refresh()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"src/style/items\";\n\n.browser-container {\n .item {\n .actions {\n display: inline-flex;\n justify-content: right;\n }\n }\n}\n</style>\n","import { render } from \"./Browser.vue?vue&type=template&id=a2e5c946&scoped=true\"\nimport script from \"./Browser.vue?vue&type=script&lang=js\"\nexport * from \"./Browser.vue?vue&type=script&lang=js\"\n\nimport \"./Browser.vue?vue&type=style&index=0&id=a2e5c946&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-a2e5c946\"]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=68cf0316&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=68cf0316&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-68cf0316\"]])\n\nexport default __exports__","<template>\n <Loading v-if=\"loading\" />\n\n <div class=\"torrent-transfers fade-in\" v-else>\n <div class=\"no-content\" v-if=\"!Object.keys(transfers).length\">No torrent transfers in progress</div>\n\n <div class=\"row item\" :class=\"{selected: selectedItem === i}\" v-for=\"(torrent, i) in transfers\" :key=\"i\"\n @click=\"selectedItem = i\">\n <div class=\"col-8 left side\">\n <i class=\"icon fa\" :class=\"{\n 'fa-check': torrent.finish_date != null,\n 'fa-play': !torrent.finish_date && torrent.state === 'downloading',\n 'fa-pause': !torrent.finish_date && torrent.state === 'paused',\n 'fa-stop': !torrent.finish_date && torrent.state === 'stopped',\n }\" />\n <div class=\"title\" v-text=\"torrent.name || torrent.hash || torrent.url\" />\n </div>\n\n <div class=\"col-2 right side\">\n <span v-text=\"`${torrent.progress}%`\" />\n </div>\n\n <div class=\"col-2 right side\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\" @click=\"selectedItem = i\">\n <DropdownItem icon-class=\"fa fa-pause\" text=\"Pause transfer\" @click=\"pause(torrentId(torrent))\"\n v-if=\"torrent.state === 'downloading'\" />\n <DropdownItem icon-class=\"fa fa-play\" text=\"Resume transfer\" @click=\"resume(torrentId(torrent))\"\n v-if=\"torrent.state === 'paused'\" />\n <DropdownItem icon-class=\"fa fa-trash\" text=\"Remove transfer\" @click=\"remove(torrentId(torrent))\" />\n <DropdownItem icon-class=\"fa fa-folder\" text=\"View files\" @click=\"$refs.torrentFiles.isVisible = true\" />\n <DropdownItem icon-class=\"fa fa-info\" text=\"Torrent info\" @click=\"$refs.torrentInfo.isVisible = true\" />\n </Dropdown>\n </div>\n </div>\n\n <Modal ref=\"torrentInfo\" title=\"Torrent info\" width=\"80%\">\n <div class=\"modal-body torrent-info\" v-if=\"selectedItem != null && transfers[selectedItem]\">\n <div class=\"row\" v-if=\"transfers[selectedItem].name\">\n <div class=\"attr\">Name</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].name\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].state\">\n <div class=\"attr\">State</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].state\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">Progress</div>\n <div class=\"value\" v-text=\"`${transfers[selectedItem].progress || 0}%`\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">DL rate</div>\n <div class=\"value\" v-text=\"`${convertSize(transfers[selectedItem].download_rate || 0)}/s`\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">UL rate</div>\n <div class=\"value\" v-text=\"`${convertSize(transfers[selectedItem].upload_rate || 0)}/s`\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">Size</div>\n <div class=\"value\" v-text=\"convertSize(transfers[selectedItem].size || 0)\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].remaining_bytes\">\n <div class=\"attr\">Remaining</div>\n <div class=\"value\" v-text=\"convertSize(transfers[selectedItem].remaining_bytes)\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">URL</div>\n <div class=\"value nowrap\">\n <a :href=\"transfers[selectedItem].url\" target=\"_blank\" v-text=\"transfers[selectedItem].url\" />\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">Peers</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].peers || 0\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].start_date\">\n <div class=\"attr\">Started</div>\n <div class=\"value\" v-text=\"formatDateTime(transfers[selectedItem].start_date)\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].finish_date\">\n <div class=\"attr\">Finished</div>\n <div class=\"value\" v-text=\"formatDateTime(transfers[selectedItem].finish_date)\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].save_path\">\n <div class=\"attr\">Save path</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].save_path\" />\n </div>\n </div>\n </Modal>\n\n <Modal ref=\"torrentFiles\" title=\"Torrent files\" width=\"80%\">\n <div class=\"modal-body torrent-files\" v-if=\"selectedItem != null && transfers[selectedItem]\">\n <div class=\"row\" v-for=\"(file, i) in relativeFiles\" :key=\"file\">\n <div class=\"col-1 icon\">\n <Dropdown v-if=\"isMedia && mediaExtensions.has(file.split('.').pop())\">\n <DropdownItem icon-class=\"fa fa-play\" text=\"Play\"\n @click=\"$emit('play', {url: `file://${transfers[selectedItem].files[i]}`, type: 'file'})\" />\n </Dropdown>\n\n <i class=\"fa fa-file\" v-else />\n </div>\n <div class=\"col-11 name\" v-text=\"file\" />\n </div>\n </div>\n </Modal>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils.vue\"\nimport Modal from \"@/components/Modal\";\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\n\nexport default {\n name: \"View\",\n emits: ['play', 'play-with-captions'],\n components: {Dropdown, DropdownItem, Loading, Modal},\n mixins: [Utils, MediaUtils],\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n\n isMedia: {\n type: Boolean,\n default: false,\n },\n },\n\n data() {\n return {\n loading: false,\n transfers: {},\n selectedItem: null,\n }\n },\n\n computed: {\n relativeFiles() {\n if (this.selectedItem == null || !this.transfers[this.selectedItem]?.files?.length)\n return []\n\n return this.transfers[this.selectedItem].files.map((file) => file.split('/').pop())\n },\n },\n\n methods: {\n torrentId(torrent) {\n if (torrent?.hash && torrent.hash.length)\n return torrent.hash\n\n return torrent.url\n },\n\n async refresh() {\n this.loading = true\n\n try {\n this.transfers = Object.values(await this.request(`${this.pluginName}.status`) || {})\n .reduce((obj, torrent) => {\n obj[this.torrentId(torrent)] = torrent\n return obj\n }, {})\n } finally {\n this.loading = false\n }\n },\n\n async pause(torrent) {\n await this.request(`${this.pluginName}.pause`, {torrent: torrent})\n await this.refresh()\n },\n\n async resume(torrent) {\n await this.request(`${this.pluginName}.resume`, {torrent: torrent})\n await this.refresh()\n },\n\n async remove(torrent) {\n await this.request(`${this.pluginName}.remove`, {torrent: torrent})\n await this.refresh()\n },\n\n onTorrentUpdate(torrent) {\n this.transfers[this.torrentId(torrent)] = torrent\n },\n\n onTorrentRemove(torrent) {\n const torrentId = this.torrentId(torrent)\n if (torrentId in this.transfers)\n delete this.transfers[torrentId]\n },\n },\n\n mounted() {\n this.refresh()\n\n this.subscribe(\n this.onTorrentUpdate,'on-torrent-update',\n 'platypush.message.event.torrent.TorrentQueuedEvent',\n 'platypush.message.event.torrent.TorrentDownloadedMetadataEvent',\n 'platypush.message.event.torrent.TorrentDownloadStartEvent',\n 'platypush.message.event.torrent.TorrentDownloadProgressEvent',\n 'platypush.message.event.torrent.TorrentResumedEvent',\n 'platypush.message.event.torrent.TorrentPausedEvent',\n 'platypush.message.event.torrent.TorrentSeedingStartEvent',\n 'platypush.message.event.torrent.TorrentStateChangeEvent',\n 'platypush.message.event.torrent.TorrentDownloadStopEvent',\n 'platypush.message.event.torrent.TorrentDownloadCompletedEvent')\n\n this.subscribe(this.onTorrentRemove,'on-torrent-remove',\n 'platypush.message.event.torrent.TorrentRemovedEvent')\n },\n\n destroy() {\n this.unsubscribe('on-torrent-update')\n this.unsubscribe('on-torrent-remove')\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"src/style/items\";\n\n.torrent-transfers {\n height: 100%;\n background: $background-color;\n\n .no-content {\n height: 100%;\n }\n}\n\n:deep(.modal-body) {\n .row {\n display: flex;\n border-bottom: $default-border;\n padding: .5em .25em;\n border-radius: .5em;\n\n &:hover {\n background-color: $hover-bg;\n }\n\n .attr {\n @extend .col-3;\n display: inline-flex;\n }\n\n .value {\n @extend .col-9;\n display: inline-flex;\n justify-content: right;\n\n &.nowrap {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: clip;\n }\n }\n }\n}\n\n:deep(.modal-body) {\n .dropdown-container {\n .row {\n box-shadow: none;\n border: none;\n }\n\n button {\n border: none;\n background: none;\n\n &:hover {\n color: $default-hover-fg;\n }\n }\n }\n}\n</style>\n","import { render } from \"./View.vue?vue&type=template&id=7351a8a4&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=7351a8a4&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-7351a8a4\"]])\n\nexport default __exports__"],"names":["class","_createElementVNode","_createBlock","_KeepAlive","_hoisted_1","$data","loading","_component_Loading","key","_createVNode","_component_MediaView","$props","pluginName","status","selectedPlayer","track","buttons","mediaButtons","onPlay","$options","pause","onPause","onStop","stop","onSetVolume","setVolume","onSeek","seek","onSearch","search","onMute","toggleMute","onUnmute","style","_normalizeStyle","navContainerStyle","_component_Nav","selectedView","onInput","_cache","$event","onToggle","forceShowNav","_hoisted_2","_component_Header","hasSubtitlesPlugin","sources","selectedItem","selectedSubtitles","browserFilter","ref","onSelectPlayer","onPlayerStatus","onStatusUpdate","onTorrentAdd","downloadTorrent","onShowSubtitles","showSubtitlesModal","onPlayUrl","showPlayUrlModal","onFilter","onToggleNav","onSourceToggle","_normalizeClass","_ctx","$refs","header","filterVisible","_component_Results","results","selectedResult","onSelect","onResultSelect","play","onInfo","mediaInfo","isVisible","onView","view","onDownload","download","_component_TorrentView","torrentPlugin","_component_Browser","filter","onPathChange","_hoisted_3","_component_Modal","title","_component_Info","item","_hoisted_4","visible","onClose","_createElementBlock","_hoisted_5","_component_Subtitles","state","onSelectSubs","selectSubtitles","_hoisted_6","onOpen","playUrlInput","focus","onSubmit","_withModifiers","playUrl","urlPlay","_hoisted_7","type","autofocus","_hoisted_8","disabled","length","_hoisted_10","_hoisted_12","_hoisted_14","_hoisted_16","selected","onClick","args","placeholder","query","$emit","torrentURL","_hoisted_9","value","onChange","target","onKeyup","_hoisted_11","showNavButton","url","startsWith","_component_Players","onStatus","hidden","_Fragment","_renderList","Object","keys","source","checked","_toDisplayString","_component_Chromecast","player","_component_Kodi","_component_Mplayer","_component_Mpv","_component_Omxplayer","_component_Vlc","_component_Dropdown","name","iconClass","_component_DropdownItem","text","refresh","players","i","select","mixins","Utils","MediaUtils","emits","props","data","methods","getPlayers","this","component","request","resource","subs","subtitles","volume","position","onNewMedia","event","isMine","onMediaEvent","notify","device","image","plugin","addSubtitles","filename","removeSubtitles","supports","mounted","subscribe","destroy","unsubscribe","__exports__","Mixin","devices","Promise","all","map","async","chromecast","getPlayerName","$root","config","host","components","Loading","DropdownItem","Dropdown","Chromecast","Kodi","Mplayer","Mpv","Omxplayer","Vlc","String","required","plugins","loadPlugins","entries","p","endsWith","push","Players","Boolean","default","types","$watch","_component_MediaImage","href","series","season","episode","_hoisted_13","num_seasons","_hoisted_15","synopsis","_hoisted_18","_hoisted_19","description","_hoisted_21","_hoisted_22","summary","_hoisted_24","_hoisted_25","overview","_hoisted_27","_hoisted_28","country","_hoisted_30","_hoisted_31","network","_hoisted_33","_hoisted_34","_hoisted_36","_hoisted_37","rating","_hoisted_39","_hoisted_40","percentage","_hoisted_42","_hoisted_43","votes","genres","_hoisted_45","_hoisted_46","join","channelId","_hoisted_48","_hoisted_49","_hoisted_50","channelTitle","year","_hoisted_52","_hoisted_53","publishedAt","_hoisted_55","_hoisted_56","formatDate","file","_hoisted_58","_hoisted_59","trailer","_hoisted_61","_hoisted_62","_hoisted_63","size","_hoisted_65","_hoisted_66","convertSize","quality","_hoisted_68","_hoisted_69","seeds","_hoisted_71","_hoisted_72","peers","_hoisted_74","_hoisted_75","language","_hoisted_77","_hoisted_78","src","alt","imdb_id","duration","convertTime","MediaImage","views","displayName","collapsed","browser","torrents","result","typeIcons","Array","Number","items","sub","IsLocal","ISO639","SubFileName","path","filteredFiles","isMedia","mediaExtensions","has","split","pop","initialPath","files","computed","toLowerCase","indexOf","Browser","MediaView","Header","Results","Modal","Info","Nav","TorrentView","Subtitles","previous","next","awaitingPlayTorrent","torrentPlugins","display","startStreaming","ret","window","open","onTorrentQueued","onTorrentMetadata","onTorrentDownloadStart","onTorrentDownloadCompleted","getTorrentPlugin","pluginConf","torrent_plugin","torrent","error","subtitlesSelector","close","link","SubDownloadLink","playUrlModal","show","$nextTick","Set","plex","jellyfin","render","transfers","finish_date","hash","progress","torrentId","resume","remove","torrentFiles","torrentInfo","width","_hoisted_17","_hoisted_20","download_rate","_hoisted_23","upload_rate","_hoisted_26","remaining_bytes","_hoisted_29","_hoisted_32","_hoisted_35","start_date","_hoisted_38","formatDateTime","_hoisted_41","save_path","_hoisted_44","_hoisted_47","relativeFiles","values","reduce","obj","onTorrentUpdate","onTorrentRemove"],"sourceRoot":""}