platypush/platypush/backend/http/webapp/dist/static/js/4196-legacy.89b93a84.js.map

1 line
89 KiB
Plaintext

{"version":3,"file":"static/js/4196-legacy.89b93a84.js","mappings":"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","sources":["webpack://platypush/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://platypush/./node_modules/core-js/internals/not-a-regexp.js","webpack://platypush/./node_modules/core-js/modules/es.string.ends-with.js","webpack://platypush/./node_modules/core-js/modules/es.string.starts-with.js","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/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"],"sourcesContent":["var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return un$EndsWith\n ? un$EndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return un$StartsWith\n ? un$StartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n","<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\">\n <main>\n <div class=\"nav-container\">\n <Nav :selected-view=\"selectedView\" @input=\"selectedView = $event\" />\n </div>\n\n <div class=\"view-container\">\n <Header :plugin-name=\"pluginName\" :selected-view=\"selectedView\" :has-subtitles-plugin=\"hasSubtitlesPlugin\"\n ref=\"header\" :sources=\"sources\" :selected-item=\"selectedPlayer && selectedPlayer.status &&\n (selectedPlayer.status.state === 'play' || selectedPlayer.status.state === 'pause')\n ? selectedPlayer.status : results[selectedResult]\" :selected-subtitles=\"selectedSubtitles\"\n :browser-filter=\"browserFilter\" @search=\"search\" @select-player=\"selectedPlayer = $event\"\n @player-status=\"onStatusUpdate\" @torrent-add=\"downloadTorrent($event)\"\n @show-subtitles=\"showSubtitlesModal = !showSubtitlesModal\" @play-url=\"$refs.playUrlModal.show()\"\n @filter=\"browserFilter = $event\" @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 <tt>file://</tt> 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\">Play</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 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\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)\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 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, 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 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::v-deep(.loading) {\n z-index: 10;\n}\n\n::v-deep(.media-info-container) {\n .modal-container {\n .content {\n max-width: 75%;\n }\n\n .body {\n padding: 1em .5em;\n overflow: auto;\n }\n }\n}\n\n::v-deep(.subtitles-container) {\n .body {\n padding: 0 !important;\n\n .item {\n padding: 1em;\n }\n }\n}\n\n::v-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 }\n}\n</style>\n","<template>\n <div class=\"header\" :class=\"{'with-filter': filterVisible}\">\n <div class=\"row\">\n <div class=\"col-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-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-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-5 right side\">\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=\"fa fa-plus-circle\" />\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: ['search', 'select-player', 'player-status', 'torrent-add', 'show-subtitles', 'play-url', 'filter',\n 'source-toggle'],\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 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 ::v-deep(button) {\n background: none;\n padding: 0 .25em;\n border: 0;\n margin-right: .25em;\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 ::v-deep(.dropdown) {\n direction: ltr;\n .item {\n padding: .5em;\n }\n\n .icon {\n margin-right: 1em !important;\n }\n }\n\n ::v-deep(.refresh) {\n font-weight: bold;\n font-size: .8em;\n opacity: .7;\n }\n\n ::v-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 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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/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=27e87a29&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=27e87a29&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-27e87a29\"]])\n\nexport default __exports__","import { render } from \"./Header.vue?vue&type=template&id=37a493ac&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=37a493ac&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-37a493ac\"]])\n\nexport default __exports__","<template>\n <div class=\"row\" v-if=\"item?.title\">\n <div class=\"left side\">Title</div>\n <div class=\"right side\">\n <a :href=\"`https://www.imdb.com/title/${item.imdb_id}`\" target=\"_blank\" v-if=\"item.imdb_id\"\n 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?.duration\">\n <div class=\"left side\">Duration</div>\n <div class=\"right side\" v-text=\"convertTime(item.duration)\" />\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?.url\">\n <div class=\"left side\">URL</div>\n <div class=\"right side url\">\n <a :href=\"item.url\" target=\"_blank\" v-text=\"item.url\" />\n </div>\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</template>\n\n<script>\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils\";\n\nexport default {\n name: \"Info\",\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.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</style>\n","import { render } from \"./Info.vue?vue&type=template&id=28611e6c&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=28611e6c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28611e6c\"]])\n\nexport default __exports__","<template>\n <nav>\n <li v-for=\"(view, name) in views\" :key=\"name\" :title=\"view.displayName\"\n :class=\"{selected: name === selectedView}\" @click=\"$emit('input', name)\">\n <i :class=\"view.iconClass\" />\n </li>\n </nav>\n</template>\n\n<script>\nexport default {\n name: \"Nav\",\n emits: ['input'],\n props: {\n selectedView: {\n type: String,\n },\n\n collapsed: {\n type: Boolean,\n default: false,\n },\n\n views: {\n type: Object,\n default: () => {\n return {\n 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 box-shadow: 2.5px 0 4.5px 2px $nav-collapsed-fg;\n margin-left: 2.5px;\n overflow: hidden;\n\n li {\n display: flex;\n align-items: center;\n font-size: 1.2em;\n cursor: pointer;\n list-style: none;\n padding: .6em;\n opacity: 0.7;\n\n &.selected,\n &:hover {\n border-radius: 1.2em;\n margin: 0 0.2em;\n }\n\n &:hover {\n background: $nav-entry-collapsed-hover-bg;\n }\n\n &.selected {\n background: $nav-entry-collapsed-selected-bg;\n }\n\n }\n}\n</style>\n","import { render } from \"./Nav.vue?vue&type=template&id=4597e14d&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=4597e14d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4597e14d\"]])\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 &.right {\n justify-content: flex-end;\n margin-right: .5em;\n }\n\n ::v-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=28f7c518&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=28f7c518&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-28f7c518\"]])\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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-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 \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a2e5c946\"]])\n\nexport default __exports__","import { render } from \"./Index.vue?vue&type=template&id=040b2676&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=040b2676&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-040b2676\"]])\n\nexport default __exports__"],"names":["wellKnownSymbol","MATCH","module","exports","METHOD_NAME","regexp","error1","error2","global","isRegExp","TypeError","it","$","uncurryThis","getOwnPropertyDescriptor","toLength","toString","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","un$EndsWith","endsWith","slice","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","prototype","writable","target","proto","forced","searchString","that","this","endPosition","arguments","length","undefined","len","end","search","un$StartsWith","startsWith","stringSlice","index","class","loading","pluginName","status","selectedPlayer","track","buttons","mediaButtons","pause","stop","setVolume","seek","selectedView","$event","hasSubtitlesPlugin","ref","sources","selectedSubtitles","browserFilter","onStatusUpdate","downloadTorrent","showSubtitlesModal","$refs","playUrlModal","show","header","filterVisible","results","selectedResult","onResultSelect","play","mediaInfo","isVisible","view","download","torrentPlugin","filter","title","item","visible","selectSubtitles","playUrlInput","focus","playUrl","urlPlay","type","autofocus","disabled","placeholder","query","$emit","torrentURL","value","selectedItem","Object","keys","source","key","checked","player","name","iconClass","text","refresh","players","i","select","mixins","Utils","emits","props","data","methods","getPlayers","component","request","resource","subs","url","subtitles","volume","position","onNewMedia","event","onMediaEvent","isMine","notify","device","image","plugin","addSubtitles","filename","removeSubtitles","supports","mounted","subscribe","destroy","unsubscribe","__exports__","Mixin","devices","Promise","all","map","chromecast","getPlayerName","$root","config","host","components","Loading","DropdownItem","Dropdown","Chromecast","Kodi","Mplayer","Mpv","Omxplayer","Vlc","required","plugins","loadPlugins","entries","p","push","Players","Boolean","default","types","$watch","imdb_id","href","series","season","episode","num_seasons","synopsis","description","summary","overview","duration","country","network","rating","percentage","votes","genres","join","channelId","channelTitle","year","publishedAt","file","trailer","size","quality","seeds","peers","language","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","startStreaming","ret","window","open","onTorrentQueued","onTorrentMetadata","onTorrentDownloadStart","onTorrentDownloadCompleted","getTorrentPlugin","pluginConf","torrent_plugin","error","torrent","subtitlesSelector","close","link","SubDownloadLink","Set","state","plex","jellyfin","render"],"sourceRoot":""}