platypush/platypush/backend/http/dist/static/js/chunk-53e279b3.cf489a46.js.map

1 line
No EOL
86 KiB
Text

{"version":3,"sources":["webpack:///./src/components/panels/Media/Subtitles.vue?d001","webpack:///./src/components/File/Browser.vue?386e","webpack:///./node_modules/core-js/modules/es.string.starts-with.js","webpack:///./src/components/panels/Media/Index.vue","webpack:///./src/components/panels/Media/Header.vue","webpack:///./src/components/panels/Media/Players.vue","webpack:///./src/components/panels/Media/Players/Chromecast.vue","webpack:///./src/components/panels/Media/Players/Mixin.vue","webpack:///./src/components/panels/Media/Players/Mixin.vue?1bbf","webpack:///./src/components/panels/Media/Players/Chromecast.vue?4a9f","webpack:///./src/components/panels/Media/Players/Kodi.vue","webpack:///./src/components/panels/Media/Players/Kodi.vue?8d67","webpack:///./src/components/panels/Media/Players/Mplayer.vue","webpack:///./src/components/panels/Media/Players/Mplayer.vue?8a58","webpack:///./src/components/panels/Media/Players/Mpv.vue","webpack:///./src/components/panels/Media/Players/Mpv.vue?fa03","webpack:///./src/components/panels/Media/Players/Omxplayer.vue","webpack:///./src/components/panels/Media/Players/Omxplayer.vue?8568","webpack:///./src/components/panels/Media/Players/Vlc.vue","webpack:///./src/components/panels/Media/Players/Vlc.vue?fbca","webpack:///./src/components/panels/Media/Players.vue?da2b","webpack:///./src/components/panels/Media/Header.vue?fc57","webpack:///./src/components/panels/Media/Info.vue","webpack:///./src/components/panels/Media/Info.vue?0f7a","webpack:///./src/components/panels/Media/Nav.vue","webpack:///./src/components/panels/Media/Nav.vue?5742","webpack:///./src/components/panels/Media/Results.vue","webpack:///./src/components/panels/Media/Results.vue?9afe","webpack:///./src/components/panels/Media/Subtitles.vue","webpack:///./src/components/panels/Media/Subtitles.vue?db4e","webpack:///./src/components/File/Browser.vue","webpack:///./src/components/File/Browser.vue?f3aa","webpack:///./src/components/panels/Media/Index.vue?6642","webpack:///./src/components/panels/Media/Info.vue?5b9c","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/components/panels/Media/Nav.vue?f644","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/components/panels/Media/Results.vue?7f19","webpack:///./src/components/panels/Media/Index.vue?2333","webpack:///./src/components/panels/Media/Header.vue?0ab1","webpack:///./src/components/panels/MediaOmxplayer/Index.vue","webpack:///./src/components/panels/MediaOmxplayer/Index.vue?279c","webpack:///./src/components/panels/Media/Players.vue?478a"],"names":["$","getOwnPropertyDescriptor","f","toLength","notARegExp","requireObjectCoercible","correctIsRegExpLogic","IS_PURE","nativeStartsWith","startsWith","min","Math","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","prototype","writable","target","proto","forced","searchString","that","this","index","arguments","length","undefined","search","call","slice","class","loading","plugin-name","pluginName","status","selectedPlayer","track","buttons","mediaButtons","pause","stop","setVolume","seek","selected-view","selectedView","$event","has-subtitles-plugin","hasSubtitlesPlugin","ref","sources","selected-item","selected-subtitles","selectedSubtitles","browser-filter","browserFilter","onStatusUpdate","downloadTorrent","showSubtitlesModal","$refs","playUrlModal","show","header","filterVisible","results","selected-result","selectedResult","onResultSelect","play","mediaInfo","isVisible","view","download","torrentPlugin","is-media","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","icon-class","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","Mixin","devices","Promise","all","map","chromecast","getPlayerName","render","$root","config","host","components","Loading","DropdownItem","Dropdown","Chromecast","Kodi","Mplayer","Mpv","Omxplayer","Vlc","required","plugins","loadPlugins","entries","p","endsWith","push","__scopeId","Players","Boolean","default","types","$watch","imdb_id","href","synopsis","description","summary","duration","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","isRegExp","module","exports","it","TypeError","nativeEndsWith","endPosition","len","end","wellKnownSymbol","MATCH","METHOD_NAME","regexp","error1","error2","Media"],"mappings":"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","file":"static/js/chunk-53e279b3.cf489a46.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Subtitles.vue?vue&type=style&index=0&id=77ae3705&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Browser.vue?vue&type=style&index=0&id=a2e5c946&lang=scss&scoped=true\"","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\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\nvar nativeStartsWith = ''.startsWith;\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.github.io/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 = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return nativeStartsWith\n ? nativeStartsWith.call(that, search, index)\n : that.slice(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\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 }\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 .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\nexport default script","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\"\nscript.render = render\n\nexport default script","<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\"\nscript.render = render\n\nexport default script","<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\"\nscript.render = render\n\nexport default script","<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\"\nscript.render = render\n\nexport default script","<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\"\nscript.render = render\n\nexport default script","<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\"\nscript.render = render\n\nexport default script","import { render } from \"./Players.vue?vue&type=template&id=37304dfd&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=37304dfd&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-37304dfd\"\n\nexport default script","import { render } from \"./Header.vue?vue&type=template&id=457d4016&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=457d4016&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-457d4016\"\n\nexport default script","<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?.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?.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?.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=3fc0d8f1&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=3fc0d8f1&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-3fc0d8f1\"\n\nexport default script","<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\"\nscript.render = render\nscript.__scopeId = \"data-v-4597e14d\"\n\nexport default script","<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 },\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: right;\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=acfde602&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=acfde602&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-acfde602\"\n\nexport default script","<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\"\nscript.render = render\nscript.__scopeId = \"data-v-77ae3705\"\n\nexport default script","<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\"\nscript.render = render\nscript.__scopeId = \"data-v-a2e5c946\"\n\nexport default script","import { render } from \"./Index.vue?vue&type=template&id=3055ba65&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=3055ba65&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-3055ba65\"\n\nexport default script","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Info.vue?vue&type=style&index=0&id=3fc0d8f1&lang=scss&scoped=true\"","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Nav.vue?vue&type=style&index=0&id=4597e14d&lang=scss&scoped=true\"","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\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\nvar nativeEndsWith = ''.endsWith;\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.github.io/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 = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith\n ? nativeEndsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Results.vue?vue&type=style&index=0&id=acfde602&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Index.vue?vue&type=style&index=0&id=3055ba65&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Header.vue?vue&type=style&index=0&id=457d4016&lang=scss&scoped=true\"","<template>\n <Media plugin-name=\"media.omxplayer\" />\n</template>\n\n<script>\nimport Media from '@/components/panels/Media/Index'\n\nexport default {\n name: \"MediaMpv\",\n components: {Media},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render } from \"./Index.vue?vue&type=template&id=7264d7fc&scoped=true\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\nscript.render = render\nscript.__scopeId = \"data-v-7264d7fc\"\n\nexport default script","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Players.vue?vue&type=style&index=0&id=37304dfd&lang=scss&scoped=true\""],"sourceRoot":""}