platypush/platypush/backend/http/webapp/dist/static/js/6123.e1e59c18.js.map

1 line
15 KiB
Plaintext

{"version":3,"file":"static/js/6123.e1e59c18.js","mappings":"wLACKA,MAAM,sB,0CAAXC,EAAAA,EAAAA,IAIM,MAJNC,EAIM,EAHJC,EAAAA,EAAAA,GAEM,OAFDH,OAAKI,EAAAA,EAAAA,IAAA,CAAC,mBAAkB,CAAAC,OAAkBC,EAAAC,e,EAC7CC,EAAAA,EAAAA,IAAQC,EAAAC,OAAA,kBAAAC,GAAA,Q,CAMZ,OACEC,KAAM,UACNC,MAAO,CACLN,WAAY,CACVO,KAAMC,QACNC,SAAS,K,UCPf,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O,qGCJWlB,MAAM,U,GACJA,MAAM,U,aAINA,MAAM,O,cAEFA,MAAM,S,aAKRA,MAAM,Q,cAIJA,MAAM,e,4FApBrBC,EAAAA,EAAAA,IAgCM,OAhCDD,MAAM,wBAAyBmB,SAAMC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAH,UAAAG,EAAAH,YAAAE,K,CAC3BE,EAAAC,UAAO,WAAtBC,EAAAA,EAAAA,IAA0BC,EAAA,CAAAC,IAAA,KAEyBJ,EAAAK,UAAO,WAA1D3B,EAAAA,EAAAA,IA4BM,O,MA5BDD,MAAM,UAAWmB,SAAMC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAH,UAAAG,EAAAH,YAAAE,K,EAC5BlB,EAAAA,EAAAA,GAmBM,MAnBND,EAmBM,EAlBJC,EAAAA,EAAAA,GAEM,MAFN0B,EAEM,CAD6BN,EAAAK,SAASE,QAAQC,SAAM,WAAxD9B,EAAAA,EAAAA,IAA4D,O,MAAtD+B,IAAKT,EAAAK,QAAQE,Q,8BAGrB3B,EAAAA,EAAAA,GAaM,MAbN8B,EAaM,EAZJ9B,EAAAA,EAAAA,GAII,KAJA+B,KAAMX,EAAAK,QAAQO,IAAKC,OAAO,SAASC,IAAI,uB,EACzClC,EAAAA,EAAAA,GAEM,MAFNmC,EAEM,CAD4Bf,EAAAK,SAASW,OAAOR,SAAM,WAAtD9B,EAAAA,EAAAA,IAA0D,O,MAApD+B,IAAKT,EAAAK,QAAQW,O,oCAIvBpC,EAAAA,EAAAA,GAKM,MALNqC,EAKM,EAJJrC,EAAAA,EAAAA,GAEI,KAFDH,MAAM,QAASkC,KAAMX,EAAAK,QAAQO,IAAKC,OAAO,SAASC,IAAI,wB,QACpDd,EAAAK,SAAShB,MAAI,EAAA6B,IAElBtC,EAAAA,EAAAA,GAAyD,MAAzDuC,GAAyDC,EAAAA,EAAAA,IAA7BpB,EAAAK,SAASgB,aAAW,UAKtDC,EAAAA,EAAAA,IAKyCC,EAAA,CAL/BC,QAASxB,EAAAK,QAAQoB,MACjBC,OAAQ3C,EAAA2C,OACR,kBAAiB1B,EAAA2B,eAClBC,IAAI,UACHC,SAAMhC,EAAA,KAAAA,EAAA,GAAAiC,GAAE9B,EAAA2B,eAAiBG,GACzBC,OAAIlC,EAAA,KAAAA,EAAA,GAAAiC,GAAE5C,EAAA8C,MAAM,OAAQF,K,mHAUpC,GACEG,MAAO,CAAC,QACRC,OAAQ,CAACC,EAAAA,GACTC,WAAY,CACVC,QAAO,IACPC,QAAOA,EAAAA,GAGThD,MAAO,CACLiD,GAAI,CACFhD,KAAMiD,OACNC,UAAU,GAGZf,OAAQ,CACNnC,KAAMiD,OACN/C,QAAS,OAIbiD,IAAAA,GACE,MAAO,CACLrC,QAAS,KACTJ,SAAS,EACT0C,iBAAiB,EACjBhB,eAAgB,KAEpB,EAEAiB,SAAU,CACRC,UAAAA,GACE,OAAOC,KAAKzC,SAASoB,MAAMsB,QAAO,CAACC,EAAKC,KACtCD,EAAIC,EAAKrC,KAAOqC,EACTD,IACN,CAAC,EACN,GAGFE,QAAS,CACP,iBAAMC,GACJL,KAAK7C,SAAU,EACf,IACE6C,KAAKzC,cAAgByC,KAAKM,QAAQ,sBAAuB,CAACb,GAAIO,KAAKP,IACrE,CAAE,QACAO,KAAK7C,SAAU,CACjB,CACF,EAEA,kBAAMoD,GACJ,GAAKP,KAAKzC,SAASiD,kBAAmBR,KAAKH,gBAG3C,IACE,MAAMY,QAAiBT,KAAKM,QAC1B,sBACA,CAACb,GAAIO,KAAKP,GAAIe,gBAAiBR,KAAKzC,QAAQiD,kBAG9CR,KAAKzC,QAAQoB,MAAM+B,QAAQD,EAAS9B,MAAMC,QAAOuB,IAASH,KAAKD,WAAWI,EAAKrC,QAC/EkC,KAAKzC,QAAQiD,gBAAkBC,EAASD,gBACxCR,KAAKW,MAAMjC,QAAQkC,gBAAkBZ,KAAKW,MAAMjC,QAAQmC,eAC1D,CAAE,QACAb,KAAKH,iBAAkB,CACzB,CACF,EAEA/C,QAAAA,CAASgE,GACP,MAAMC,EAAKD,EAAE/C,OACb,IAAKgD,EACH,OAEF,MAAMC,EAAUD,EAAGE,aAAeF,EAAGG,WAAcH,EAAGI,aAAe,IAChEH,GAGLhB,KAAKO,cACP,GAGFa,OAAAA,GACEpB,KAAKK,aACP,G,UCnHF,MAAMzD,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O,qGCROlB,MAAM,+B,SACJA,MAAM,uB,SAMJA,MAAM,a,iBAKFA,MAAM,S,mBAGNA,MAAM,S,SAKZA,MAAM,qB,kHApBbC,EAAAA,EAAAA,IAuBM,MAvBNC,EAuBM,CAtBoCI,EAAAoF,kB,WAmBxCzF,EAAAA,EAAAA,IAEM,MAFNuC,EAEM,EADJK,EAAAA,EAAAA,IAAgF8C,EAAA,CAAtE7B,GAAIxD,EAAAoF,gBAAkBzC,OAAQ3C,EAAA2C,OAASK,OAAIlC,EAAA,KAAAA,EAAA,GAAAiC,GAAE5C,EAAA8C,MAAM,OAAQF,K,6BApBhB,WAAvDpD,EAAAA,EAAAA,IAiBM,MAjBN4B,EAiBM,CAhBWN,EAAAC,UAAO,WAAtBC,EAAAA,EAAAA,IAA0BC,EAAA,CAAAC,IAAA,KACgBJ,EAAAqE,UAAU7D,S,WAIpD9B,EAAAA,EAAAA,IAUM,MAVN4F,EAUM,gBATJ5F,EAAAA,EAAAA,IAQM6F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAPuBzE,EAAA0E,cAAY,CAA5BpE,EAASkC,M,WADtB7D,EAAAA,EAAAA,IAQM,OARDD,MAAM,eAEL2B,IAAKmC,EACLmC,QAAK5C,GAAE5C,EAAA8C,MAAM,SAAU3B,I,EAC3BzB,EAAAA,EAAAA,GAEM,MAFN+F,EAEM,EADJ/F,EAAAA,EAAAA,GAAgD,OAA1C6B,IAAKJ,EAAQW,MAAQ4D,IAAKvE,EAAQhB,M,aAE1CT,EAAAA,EAAAA,GAA2C,MAA3CiG,GAA2CzD,EAAAA,EAAAA,IAArBf,EAAQhB,MAAI,Y,WAZoB,WAA1Da,EAAAA,EAAAA,IAEU4E,EAAA,C,MAFA,eAAa,G,mBAAqC,IAE5D,UAF4D,2B,wDA6BlE,GACE7C,MAAO,CAAC,OAAQ,UAChBC,OAAQ,CAACC,EAAAA,GACTC,WAAY,CACV2C,QAAO,aACP1C,QAAO,IACP2C,QAAOA,EAAAA,GAGT1F,MAAO,CACL6E,gBAAiB,CACf5E,KAAMiD,OACN/C,QAAS,MAGXiC,OAAQ,CACNnC,KAAMiD,OACN/C,QAAS,OAIbiD,IAAAA,GACE,MAAO,CACL2B,SAAU,GACVpE,SAAS,EAEb,EAEA2C,SAAU,CACR6B,YAAAA,GACE,OAAO3B,KAAKuB,SACT3C,QAAOrB,IAAYyC,KAAKpB,QAAUrB,EAAQhB,KAAK4F,cAAcC,SAASpC,KAAKpB,OAAOuD,iBAClFlC,QAAO,CAACC,EAAK3C,KACZ2C,EAAI3C,EAAQkC,IAAMlC,EACX2C,IACN,CAAC,EACR,GAGFE,QAAS,CACP,uBAAMiC,GACJrC,KAAK7C,SAAU,EACf,IACE6C,KAAKuB,eAAkBvB,KAAKM,QAAQ,4BACtC,CAAE,QACAN,KAAK7C,SAAU,CACjB,CACF,GAGFiE,OAAAA,GACEpB,KAAKqC,mBACP,G,UC9EF,MAAMzF,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://platypush/./src/components/elements/NoItems.vue","webpack://platypush/./src/components/elements/NoItems.vue?70de","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/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__","<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-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","onScroll","_cache","args","$options","$data","loading","_createBlock","_component_Loading","key","channel","_hoisted_2","banner","length","src","_hoisted_4","href","url","target","rel","_hoisted_6","image","_hoisted_8","_hoisted_9","_hoisted_10","_toDisplayString","description","_createVNode","_component_Results","results","items","filter","selectedResult","ref","onSelect","$event","onPlay","$emit","emits","mixins","Utils","components","Loading","Results","id","String","required","data","loadingNextPage","computed","itemsByUrl","this","reduce","acc","item","methods","loadChannel","request","loadNextPage","next_page_token","nextPage","push","$refs","maxResultIndex","resultIndexStep","e","el","bottom","scrollHeight","scrollTop","clientHeight","mounted","selectedChannel","_component_Channel","channels","_hoisted_3","_Fragment","_renderList","channelsById","onClick","_hoisted_5","alt","_hoisted_7","_component_NoItems","Channel","NoItems","toLowerCase","includes","loadSubscriptions"],"sourceRoot":""}