platypush/platypush/backend/http/webapp/dist/static/js/5931.5afa3453.js.map

1 line
41 KiB
Plaintext

{"version":3,"file":"static/js/5931.5afa3453.js","mappings":"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","sources":["webpack://platypush/./src/components/elements/NoItems.vue","webpack://platypush/./src/components/elements/NoItems.vue?70de","webpack://platypush/./src/components/panels/Media/Providers/Mixin.vue","webpack://platypush/./src/components/panels/Media/Providers/Mixin.vue?f2ea","webpack://platypush/./src/components/panels/Media/Providers/Nav.vue","webpack://platypush/./src/components/panels/Media/Providers/Nav.vue?d1ce","webpack://platypush/./src/components/panels/Media/Providers/YouTube.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube.vue?9856","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Channel.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Channel.vue?e8bb","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Feed.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Feed.vue?abe5","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Index.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Index.vue?bde9","webpack://platypush/./src/components/panels/Media/Providers/YouTube/NoToken.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/NoToken.vue?8e99","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Playlist.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Playlist.vue?5745","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Playlists.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Playlists.vue?1e93","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Subscriptions.vue","webpack://platypush/./src/components/panels/Media/Providers/YouTube/Subscriptions.vue?c1d5"],"sourcesContent":["<template>\n<div class=\"no-items-container\">\n <div class=\"no-items fade-in\" :class=\"{shadow: withShadow}\">\n <slot />\n </div>\n</div>\n</template>\n\n<script>\nexport default {\n name: \"NoItems\",\n props: {\n withShadow: {\n type: Boolean,\n default: true,\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.no-items-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .no-items {\n min-width: 100%;\n max-width: 100%;\n\n @include from($tablet) {\n min-width: 80%;\n }\n\n @include from($desktop) {\n min-width: 50%;\n max-width: 35em;\n }\n\n @include from($fullhd) {\n min-width: 33%;\n }\n\n background: $background-color;\n margin: 1em;\n padding: 1em;\n font-size: 1.5em;\n color: $no-items-color;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 1em;\n\n &.shadow {\n box-shadow: $border-shadow-bottom;\n }\n }\n}\n</style>\n","import { render } from \"./NoItems.vue?vue&type=template&id=4856c4d7&scoped=true\"\nimport script from \"./NoItems.vue?vue&type=script&lang=js\"\nexport * from \"./NoItems.vue?vue&type=script&lang=js\"\n\nimport \"./NoItems.vue?vue&type=style&index=0&id=4856c4d7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4856c4d7\"]])\n\nexport default __exports__","<script>\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: ['back', 'path-change', 'play'],\n mixins: [Utils],\n props: {\n filter: {\n type: String,\n default: '',\n },\n },\n\n data() {\n return {\n loading: false,\n }\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__","<template>\n <div class=\"nav\">\n <span class=\"path\">\n <span class=\"back token\" title=\"Back\" @click=\"$emit('back')\">\n <i class=\"fas fa-home\" />\n </span>\n\n <span class=\"separator\">\n <i class=\"fas fa-chevron-right\" />\n </span>\n </span>\n\n <span class=\"path\" v-for=\"(token, index) in path\" :key=\"index\">\n <span class=\"token\" :title=\"token.title\" @click=\"onClick(token)\">\n <i class=\"icon\" :class=\"icon\" v-if=\"icon = token.icon?.['class']\" />\n <span v-if=\"token.title\">{{ token.title }}</span>\n </span>\n\n <span class=\"separator\"\n v-if=\"(index > 0 || path.length > 1) && index < path.length - 1\">\n <i class=\"fas fa-chevron-right\" />\n </span>\n </span>\n </div>\n</template>\n\n<script>\nexport default {\n emit: ['back'],\n\n props: {\n path: {\n type: Array,\n default: () => [],\n },\n },\n\n methods: {\n onClick(token) {\n if (token.click)\n token.click()\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../style.scss\";\n\n.nav {\n .path .token .icon {\n margin-right: 0.5em;\n }\n}\n</style>\n","import { render } from \"./Nav.vue?vue&type=template&id=2bc923a8&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=2bc923a8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2bc923a8\"]])\n\nexport default __exports__","<template>\n <div class=\"media-youtube-browser\">\n <Loading v-if=\"loading\" />\n\n <div class=\"browser\" v-else>\n <MediaNav :path=\"computedPath\" @back=\"$emit('back')\" />\n <NoToken v-if=\"!authToken\" />\n\n <div class=\"body\" v-else>\n <Feed :filter=\"filter\"\n @play=\"$emit('play', $event)\" v-if=\"selectedView === 'feed'\" />\n <Playlists :filter=\"filter\"\n :selected-playlist=\"selectedPlaylist\"\n @play=\"$emit('play', $event)\"\n @select=\"onPlaylistSelected\"\n v-else-if=\"selectedView === 'playlists'\" />\n <Subscriptions :filter=\"filter\"\n :selected-channel=\"selectedChannel\"\n @play=\"$emit('play', $event)\"\n @select=\"onChannelSelected\"\n v-else-if=\"selectedView === 'subscriptions'\" />\n <Index @select=\"selectView\" v-else />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport MediaNav from \"./Nav\";\nimport MediaProvider from \"./Mixin\";\n\nimport Feed from \"./YouTube/Feed\";\nimport Index from \"./YouTube/Index\";\nimport NoToken from \"./YouTube/NoToken\";\nimport Playlists from \"./YouTube/Playlists\";\nimport Subscriptions from \"./YouTube/Subscriptions\";\n\nexport default {\n mixins: [MediaProvider],\n components: {\n Feed,\n Index,\n Loading,\n MediaNav,\n NoToken,\n Playlists,\n Subscriptions,\n },\n\n data() {\n return {\n youtubeConfig: null,\n selectedView: null,\n selectedPlaylist: null,\n selectedChannel: null,\n path: [],\n }\n },\n\n computed: {\n authToken() {\n return this.youtubeConfig?.auth_token\n },\n\n computedPath() {\n return [\n {\n title: 'YouTube',\n click: () => this.selectView(null),\n icon: {\n class: 'fab fa-youtube',\n },\n },\n ...this.path,\n ]\n },\n },\n\n methods: {\n async loadYoutubeConfig() {\n this.loading = true\n try {\n this.youtubeConfig = (await this.request('config.get_plugins')).youtube\n } finally {\n this.loading = false\n }\n },\n\n selectView(view) {\n this.selectedView = view\n if (view === 'playlists')\n this.selectedPlaylist = null\n else if (view === 'subscriptions')\n this.selectedChannel = null\n\n if (view?.length) {\n this.path = [\n {\n title: view.slice(0, 1).toUpperCase() + view.slice(1),\n click: () => this.selectView(view),\n },\n ]\n } else {\n this.path = []\n }\n },\n\n onPlaylistSelected(playlist) {\n this.selectedPlaylist = playlist.id\n this.path.push({\n title: playlist.name,\n })\n },\n\n onChannelSelected(channel) {\n this.selectedChannel = channel.id\n this.path.push({\n title: channel.name,\n })\n },\n },\n\n mounted() {\n this.loadYoutubeConfig()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../style.scss\";\n\n.media-youtube-browser {\n height: 100%;\n\n .browser {\n height: 100%;\n }\n\n .body {\n height: calc(100% - $media-nav-height - 2px);\n margin-top: 2px;\n }\n}\n</style>\n","import { render } from \"./YouTube.vue?vue&type=template&id=e008e860&scoped=true\"\nimport script from \"./YouTube.vue?vue&type=script&lang=js\"\nexport * from \"./YouTube.vue?vue&type=script&lang=js\"\n\nimport \"./YouTube.vue?vue&type=style&index=0&id=e008e860&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e008e860\"]])\n\nexport default __exports__","<template>\n <div class=\"media-youtube-channel\" @scroll=\"onScroll\">\n <Loading v-if=\"loading\" />\n\n <div class=\"channel\" @scroll=\"onScroll\" v-else-if=\"channel\">\n <div class=\"header\">\n <div class=\"banner\">\n <img :src=\"channel.banner\" v-if=\"channel?.banner?.length\" />\n </div>\n\n <div class=\"row\">\n <a :href=\"channel.url\" target=\"_blank\" rel=\"noopener noreferrer\">\n <div class=\"image\">\n <img :src=\"channel.image\" v-if=\"channel?.image?.length\" />\n </div>\n </a>\n\n <div class=\"info\">\n <a class=\"title\" :href=\"channel.url\" target=\"_blank\" rel=\"noopener noreferrer\">\n {{ channel?.name }}\n </a>\n <div class=\"description\">{{ channel?.description }}</div>\n </div>\n </div>\n </div>\n\n <Results :results=\"channel.items\"\n :filter=\"filter\"\n :selected-result=\"selectedResult\"\n ref=\"results\"\n @select=\"selectedResult = $event\"\n @play=\"$emit('play', $event)\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport Results from \"@/components/panels/Media/Results\";\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: ['play'],\n mixins: [Utils],\n components: {\n Loading,\n Results,\n },\n\n props: {\n id: {\n type: String,\n required: true,\n },\n\n filter: {\n type: String,\n default: null,\n },\n },\n\n data() {\n return {\n channel: null,\n loading: false,\n loadingNextPage: false,\n selectedResult: null,\n }\n },\n\n computed: {\n itemsByUrl() {\n return this.channel?.items.reduce((acc, item) => {\n acc[item.url] = item\n return acc\n }, {})\n },\n },\n\n methods: {\n async loadChannel() {\n this.loading = true\n try {\n this.channel = await this.request('youtube.get_channel', {id: this.id})\n } finally {\n this.loading = false\n }\n },\n\n async loadNextPage() {\n if (!this.channel?.next_page_token || this.loadingNextPage)\n return\n\n try {\n const nextPage = await this.request(\n 'youtube.get_channel',\n {id: this.id, next_page_token: this.channel.next_page_token}\n )\n\n this.channel.items.push(...nextPage.items.filter(item => !this.itemsByUrl[item.url]))\n this.channel.next_page_token = nextPage.next_page_token\n this.$refs.results.maxResultIndex += this.$refs.results.resultIndexStep\n } finally {\n this.loadingNextPage = false\n }\n },\n\n onScroll(e) {\n const el = e.target\n if (!el)\n return\n\n const bottom = (el.scrollHeight - el.scrollTop) <= el.clientHeight + 150\n if (!bottom)\n return\n\n this.loadNextPage()\n },\n },\n\n mounted() {\n this.loadChannel()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.media-youtube-channel {\n height: 100%;\n overflow-y: auto;\n\n .header {\n border-bottom: $default-border-2;\n padding-bottom: 0.5em;\n\n .banner {\n max-height: 200px;\n display: flex;\n justify-content: center;\n\n img {\n max-width: 100%;\n max-height: 100%;\n }\n }\n\n .image {\n height: 100px;\n margin: -2.5em 2em 0.5em 0.5em;\n\n img {\n height: 100%;\n border-radius: 50%;\n }\n }\n\n .row {\n display: flex;\n\n @include from($desktop) {\n flex-direction: row;\n }\n\n .info {\n display: flex;\n flex-direction: column;\n }\n }\n\n .title {\n color: $default-fg-2;\n font-size: 1.7em;\n font-weight: bold;\n margin: 0.5em 0;\n text-decoration: dotted;\n\n &:hover {\n color: $default-hover-fg;\n }\n }\n\n .description {\n font-size: 0.9em;\n margin-right: 0.5em;\n }\n }\n}\n</style>\n","import { render } from \"./Channel.vue?vue&type=template&id=21b0d859&scoped=true\"\nimport script from \"./Channel.vue?vue&type=script&lang=js\"\nexport * from \"./Channel.vue?vue&type=script&lang=js\"\n\nimport \"./Channel.vue?vue&type=style&index=0&id=21b0d859&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-21b0d859\"]])\n\nexport default __exports__","<template>\n <div class=\"media-youtube-feed\">\n <Loading v-if=\"loading\" />\n <NoItems :with-shadow=\"false\" v-else-if=\"!feed?.length\">\n No videos found.\n </NoItems>\n\n <Results :results=\"feed\"\n :filter=\"filter\"\n :sources=\"{'youtube': true}\"\n :selected-result=\"selectedResult\"\n @select=\"selectedResult = $event\"\n @play=\"$emit('play', $event)\"\n v-else />\n </div>\n</template>\n\n<script>\nimport NoItems from \"@/components/elements/NoItems\";\nimport Loading from \"@/components/Loading\";\nimport Results from \"@/components/panels/Media/Results\";\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: ['play'],\n mixins: [Utils],\n components: {\n Loading,\n NoItems,\n Results,\n },\n\n props: {\n filter: {\n type: String,\n default: null,\n },\n },\n\n data() {\n return {\n feed: [],\n loading: false,\n selectedResult: null,\n }\n },\n\n methods: {\n async loadFeed() {\n this.loading = true\n try {\n this.feed = (await this.request('youtube.get_feed')).map(item => ({\n ...item,\n type: 'youtube',\n }))\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.loadFeed()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.media-youtube-feed {\n height: 100%;\n}\n</style>\n","import { render } from \"./Feed.vue?vue&type=template&id=fc65dae6&scoped=true\"\nimport script from \"./Feed.vue?vue&type=script&lang=js\"\nexport * from \"./Feed.vue?vue&type=script&lang=js\"\n\nimport \"./Feed.vue?vue&type=style&index=0&id=fc65dae6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fc65dae6\"]])\n\nexport default __exports__","<template>\n <div class=\"youtube-views-browser grid\">\n <div class=\"item\" @click=\"$emit('select', 'feed')\">\n <div class=\"icon\">\n <i class=\"fas fa-rss\" />\n </div>\n <div class=\"name\">Feed</div>\n </div>\n\n <div class=\"item\" @click=\"$emit('select', 'playlists')\">\n <div class=\"icon\">\n <i class=\"fas fa-list\" />\n </div>\n <div class=\"name\">Playlists</div>\n </div>\n\n <div class=\"item\" @click=\"$emit('select', 'subscriptions')\">\n <div class=\"icon\">\n <i class=\"fas fa-user\" />\n </div>\n <div class=\"name\">Subscriptions</div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n emits: ['select'],\n}\n</script>\n","import { render } from \"./Index.vue?vue&type=template&id=c531e118\"\nimport script from \"./Index.vue?vue&type=script&lang=js\"\nexport * from \"./Index.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"no-token\">\n <div class=\"title\">\n No <code>auth_token</code> found in the YouTube configuration.\n </div>\n\n <div class=\"description\">\n This integration requires an <code>auth_token</code> to be set in the\n <code>youtube</code> section of the configuration file in order to\n access your playlists and subscriptions.<br/><br/>\n\n Piped auth tokens are currently supported. You can retrieve one through\n the following procedure:\n\n <ol>\n <li>Login to your configured Piped instance.</li>\n <li>Copy the RSS/Atom feed URL on the <i>Feed</i> tab.</li>\n <li>Copy the <code>auth_token</code> query parameter from the URL.</li>\n <li>\n Enter it in the <code>auth_token</code> field in the\n <code>youtube</code> section of the configuration file.\n </li>\n </ol>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.no-token {\n padding: 0.5em;\n\n .title {\n font-size: 1.5em;\n font-weight: bold;\n margin-bottom: 1em;\n }\n}\n</style>\n","import { render } from \"./NoToken.vue?vue&type=template&id=42457341&scoped=true\"\nconst script = {}\n\nimport \"./NoToken.vue?vue&type=style&index=0&id=42457341&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-42457341\"]])\n\nexport default __exports__","<template>\n <div class=\"media-youtube-playlist\">\n <Loading v-if=\"loading\" />\n <NoItems :with-shadow=\"false\" v-else-if=\"!items?.length\">\n No videos found.\n </NoItems>\n\n <Results :results=\"items\"\n :sources=\"{'youtube': true}\"\n :filter=\"filter\"\n :selected-result=\"selectedResult\"\n @select=\"selectedResult = $event\"\n @play=\"$emit('play', $event)\"\n v-else />\n </div>\n</template>\n\n<script>\nimport NoItems from \"@/components/elements/NoItems\";\nimport Loading from \"@/components/Loading\";\nimport Results from \"@/components/panels/Media/Results\";\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: ['play'],\n mixins: [Utils],\n components: {\n Loading,\n NoItems,\n Results,\n },\n\n props: {\n id: {\n type: String,\n required: true,\n },\n\n filter: {\n type: String,\n default: null,\n },\n },\n\n data() {\n return {\n items: [],\n loading: false,\n selectedResult: null,\n }\n },\n\n methods: {\n async loadItems() {\n this.loading = true\n try {\n this.items = (\n await this.request('youtube.get_playlist', {id: this.id})\n ).map(item => ({\n ...item,\n type: 'youtube',\n }))\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.loadItems()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.media-youtube-playlist {\n height: 100%;\n}\n</style>\n","import { render } from \"./Playlist.vue?vue&type=template&id=66236cc4&scoped=true\"\nimport script from \"./Playlist.vue?vue&type=script&lang=js\"\nexport * from \"./Playlist.vue?vue&type=script&lang=js\"\n\nimport \"./Playlist.vue?vue&type=style&index=0&id=66236cc4&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66236cc4\"]])\n\nexport default __exports__","<template>\n <div class=\"media-youtube-playlists\">\n <div class=\"playlists-index\" v-if=\"!selectedPlaylist\">\n <Loading v-if=\"loading\" />\n <NoItems :with-shadow=\"false\" v-else-if=\"!playlists?.length\">\n No playlists found.\n </NoItems>\n\n <div class=\"body grid\" v-else>\n <div class=\"playlist item\"\n v-for=\"(playlist, id) in playlistsById\"\n :key=\"id\"\n @click=\"$emit('select', playlist)\">\n <MediaImage :item=\"playlist\" :has-play=\"false\" />\n <div class=\"title\">{{ playlist.name }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"playlist-body\" v-else>\n <Playlist :id=\"selectedPlaylist\" :filter=\"filter\" @play=\"$emit('play', $event)\" />\n </div>\n </div>\n</template>\n\n<script>\nimport MediaImage from \"@/components/panels/Media/MediaImage\";\nimport NoItems from \"@/components/elements/NoItems\";\nimport Loading from \"@/components/Loading\";\nimport Playlist from \"./Playlist\";\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: ['play', 'select'],\n mixins: [Utils],\n components: {\n Loading,\n MediaImage,\n NoItems,\n Playlist,\n },\n\n props: {\n selectedPlaylist: {\n type: String,\n default: null,\n },\n\n filter: {\n type: String,\n default: null,\n },\n },\n\n data() {\n return {\n playlists: [],\n loading: false,\n }\n },\n\n computed: {\n playlistsById() {\n return this.playlists\n .filter(playlist => !this.filter || playlist.name.toLowerCase().includes(this.filter.toLowerCase()))\n .reduce((acc, playlist) => {\n acc[playlist.id] = playlist\n return acc\n }, {})\n },\n },\n\n methods: {\n async loadPlaylists() {\n this.loading = true\n try {\n this.playlists = (await this.request('youtube.get_playlists'))\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.loadPlaylists()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.media-youtube-playlists {\n height: 100%;\n\n .playlist-body {\n height: 100%;\n }\n\n :deep(.playlist.item) {\n cursor: pointer;\n\n .title {\n font-size: 1.1em;\n margin-top: 0.5em;\n }\n\n &:hover {\n text-decoration: underline;\n\n img {\n filter: contrast(70%);\n }\n }\n }\n}\n</style>\n","import { render } from \"./Playlists.vue?vue&type=template&id=4f7cc8e3&scoped=true\"\nimport script from \"./Playlists.vue?vue&type=script&lang=js\"\nexport * from \"./Playlists.vue?vue&type=script&lang=js\"\n\nimport \"./Playlists.vue?vue&type=style&index=0&id=4f7cc8e3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f7cc8e3\"]])\n\nexport default __exports__","<template>\n <div class=\"media-youtube-subscriptions\">\n <div class=\"subscriptions-index\" v-if=\"!selectedChannel\">\n <Loading v-if=\"loading\" />\n <NoItems :with-shadow=\"false\" v-else-if=\"!channels?.length\">\n No channels found.\n </NoItems>\n\n <div class=\"body grid\" v-else>\n <div class=\"channel item\"\n v-for=\"(channel, id) in channelsById\"\n :key=\"id\"\n @click=\"$emit('select', channel)\">\n <div class=\"image\">\n <img :src=\"channel.image\" :alt=\"channel.name\" />\n </div>\n <div class=\"title\">{{ channel.name }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"subscription-body\" v-else>\n <Channel :id=\"selectedChannel\" :filter=\"filter\" @play=\"$emit('play', $event)\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Channel from \"./Channel\";\nimport NoItems from \"@/components/elements/NoItems\";\nimport Loading from \"@/components/Loading\";\nimport Utils from \"@/Utils\";\n\nexport default {\n emits: ['play', 'select'],\n mixins: [Utils],\n components: {\n Channel,\n Loading,\n NoItems,\n },\n\n props: {\n selectedChannel: {\n type: String,\n default: null,\n },\n\n filter: {\n type: String,\n default: null,\n },\n },\n\n data() {\n return {\n channels: [],\n loading: false,\n }\n },\n\n computed: {\n channelsById() {\n return this.channels\n .filter(channel => !this.filter || channel.name.toLowerCase().includes(this.filter.toLowerCase()))\n .reduce((acc, channel) => {\n acc[channel.id] = channel\n return acc\n }, {})\n },\n },\n\n methods: {\n async loadSubscriptions() {\n this.loading = true\n try {\n this.channels = (await this.request('youtube.get_subscriptions'))\n } finally {\n this.loading = false\n }\n },\n },\n\n mounted() {\n this.loadSubscriptions()\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.media-youtube-subscriptions {\n height: 100%;\n\n .channel.item {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border: $default-border-2;\n box-shadow: $border-shadow-bottom;\n border-radius: 0.5em;\n cursor: pointer;\n\n .image {\n width: 100%;\n height: 10em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n width: 5em;\n height: 5em;\n border-radius: 0.5em;\n transition: filter 0.2s ease-in-out;\n }\n }\n\n .title {\n font-size: 1.1em;\n margin-top: 0.5em;\n }\n\n &:hover {\n text-decoration: underline;\n\n img {\n filter: contrast(70%);\n }\n }\n }\n\n .subscription-body {\n height: 100%;\n }\n}\n</style>\n","import { render } from \"./Subscriptions.vue?vue&type=template&id=3ff3db5a&scoped=true\"\nimport script from \"./Subscriptions.vue?vue&type=script&lang=js\"\nexport * from \"./Subscriptions.vue?vue&type=script&lang=js\"\n\nimport \"./Subscriptions.vue?vue&type=style&index=0&id=3ff3db5a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3ff3db5a\"]])\n\nexport default __exports__"],"names":["class","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","shadow","$props","withShadow","_renderSlot","_ctx","$slots","undefined","name","props","type","Boolean","default","__exports__","render","emits","mixins","Utils","filter","String","data","loading","_hoisted_3","_hoisted_9","_hoisted_2","title","onClick","_cache","$event","$emit","_hoisted_5","_Fragment","_renderList","path","token","index","key","$options","icon","_hoisted_7","_toDisplayString","length","_hoisted_8","_hoisted_10","emit","Array","methods","click","_createBlock","_component_Loading","_createVNode","_component_MediaNav","computedPath","onBack","authToken","$data","selectedView","_component_Feed","onPlay","_component_Playlists","selectedPlaylist","onSelect","onPlaylistSelected","_component_Subscriptions","selectedChannel","onChannelSelected","_component_Index","selectView","_component_NoToken","MediaProvider","components","Feed","Index","Loading","MediaNav","NoToken","Playlists","Subscriptions","youtubeConfig","computed","this","auth_token","loadYoutubeConfig","request","youtube","view","slice","toUpperCase","playlist","id","push","channel","mounted","onScroll","args","banner","src","_hoisted_4","href","url","target","rel","_hoisted_6","image","description","_component_Results","results","items","selectedResult","ref","Results","required","loadingNextPage","itemsByUrl","reduce","acc","item","loadChannel","loadNextPage","next_page_token","nextPage","$refs","maxResultIndex","resultIndexStep","e","el","bottom","scrollHeight","scrollTop","clientHeight","feed","sources","_component_NoItems","NoItems","loadFeed","map","script","loadItems","_component_Playlist","playlists","playlistsById","_component_MediaImage","MediaImage","Playlist","toLowerCase","includes","loadPlaylists","_component_Channel","channels","channelsById","alt","Channel","loadSubscriptions"],"sourceRoot":""}