platypush/platypush/backend/http/webapp/dist/static/js/6899.d74c1b00.js.map

1 line
25 KiB
Plaintext

{"version":3,"file":"static/js/6899.d74c1b00.js","mappings":"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","sources":["webpack://platypush/./src/components/Media/Utils.vue","webpack://platypush/./src/components/Media/Utils.vue?af63","webpack://platypush/./src/components/panels/Torrent/Panel.vue","webpack://platypush/./src/components/panels/Torrent/Header.vue","webpack://platypush/./src/components/panels/Torrent/Header.vue?da39","webpack://platypush/./src/components/panels/Torrent/Panel.vue?046c","webpack://platypush/./src/components/panels/Torrent/View.vue","webpack://platypush/./src/components/panels/Torrent/View.vue?80df"],"sourcesContent":["<script>\nimport Utils from \"@/Utils\";\n\nexport default {\n name: \"Utils\",\n mixins: [Utils],\n\n computed: {\n audioExtensions() {\n return new Set([\n '3gp', 'aa', 'aac', 'aax', 'act', 'aiff', 'amr', 'ape', 'au',\n 'awb', 'dct', 'dss', 'dvf', 'flac', 'gsm', 'iklax', 'ivs',\n 'm4a', 'm4b', 'm4p', 'mmf', 'mp3', 'mpc', 'msv', 'nmf', 'nsf',\n 'ogg,', 'opus', 'ra,', 'raw', 'sln', 'tta', 'vox', 'wav',\n 'wma', 'wv', 'webm', '8svx',\n ])\n },\n\n videoExtensions() {\n return new Set([\n 'webm', 'mkv', 'flv', 'flv', 'vob', 'ogv', 'ogg', 'drc', 'gif',\n 'gifv', 'mng', 'avi', 'mts', 'm2ts', 'mov', 'qt', 'wmv', 'yuv',\n 'rm', 'rmvb', 'asf', 'amv', 'mp4', 'm4p', 'm4v', 'mpg', 'mp2',\n 'mpeg', 'mpe', 'mpv', 'mpg', 'mpeg', 'm2v', 'm4v', 'svi',\n '3gp', '3g2', 'mxf', 'roq', 'nsv', 'flv', 'f4v', 'f4p', 'f4a', 'f4b',\n ])\n },\n\n mediaExtensions() {\n return new Set([...this.videoExtensions, ...this.audioExtensions])\n },\n },\n\n methods: {\n convertTime(time) {\n time = parseFloat(time); // Normalize strings\n const t = {}\n t.h = '' + parseInt(time/3600)\n t.m = '' + parseInt(time/60 - t.h*60)\n t.s = '' + parseInt(time - (t.h*3600 + t.m*60))\n\n for (const attr of ['m','s']) {\n if (parseInt(t[attr]) < 10) {\n t[attr] = '0' + t[attr]\n }\n }\n\n const ret = []\n if (parseInt(t.h)) {\n ret.push(t.h)\n }\n\n ret.push(t.m, t.s)\n return ret.join(':')\n },\n\n async startStreaming(resource, download=false) {\n let url = resource\n let subtitles = null\n\n if (resource instanceof Object) {\n url = resource.url\n subtitles = resource.subtitles\n } else {\n resource = {url: url}\n }\n\n const ret = await this.request(`media.start_streaming`, {\n media: url,\n subtitles: subtitles,\n download: download,\n })\n\n return {...resource, ...ret}\n },\n\n async stopStreaming(mediaId) {\n await this.request('media.stop_streaming', {media_id: mediaId})\n },\n },\n}\n</script>\n","import script from \"./Utils.vue?vue&type=script&lang=js\"\nexport * from \"./Utils.vue?vue&type=script&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n <div class=\"torrent-container\">\n <div class=\"header-container\">\n <Header @torrent-add=\"download($event)\" />\n </div>\n\n <div class=\"view-container\">\n <TorrentView :plugin-name=\"pluginName\" />\n </div>\n </div>\n</template>\n\n<script>\nimport Header from \"@/components/panels/Torrent/Header\";\nimport TorrentView from \"@/components/panels/Torrent/View\";\nimport Utils from \"@/Utils\";\n\nexport default {\n name: \"Panel\",\n components: {TorrentView, Header},\n mixins: [Utils],\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n },\n\n methods: {\n async download(torrent) {\n await this.request(`${this.pluginName}.download`, {torrent: torrent})\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"vars\";\n\n.torrent-container {\n width: 100%;\n height: calc(100% - #{$torrent-header-height});\n\n .view-container {\n height: 100%;\n overflow: auto;\n padding-top: .2em;\n }\n}\n</style>\n","<template>\n <div class=\"header\" :class=\"{'with-filter': filterVisible}\">\n <div class=\"row\">\n <div class=\"col-s-12 col-m-9 col-l-7 left side\">\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 </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"Header\",\n emits: ['torrent-add'],\n\n data() {\n return {\n torrentURL: '',\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"vars\";\n\n.header {\n width: 100%;\n height: $torrent-header-height;\n position: relative;\n background: $menu-panel-bg;\n padding: .5em;\n box-shadow: $border-shadow-bottom;\n\n .row {\n display: flex;\n align-items: center;\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</style>\n","import { render } from \"./Header.vue?vue&type=template&id=6133f14d&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=6133f14d&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6133f14d\"]])\n\nexport default __exports__","import { render } from \"./Panel.vue?vue&type=template&id=1502d8a8&scoped=true\"\nimport script from \"./Panel.vue?vue&type=script&lang=js\"\nexport * from \"./Panel.vue?vue&type=script&lang=js\"\n\nimport \"./Panel.vue?vue&type=style&index=0&id=1502d8a8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1502d8a8\"]])\n\nexport default __exports__","<template>\n <Loading v-if=\"loading\" />\n\n <div class=\"torrent-transfers fade-in\" v-else>\n <div class=\"no-content\" v-if=\"!Object.keys(transfers).length\">No torrent transfers in progress</div>\n\n <div class=\"row item\" :class=\"{selected: selectedItem === i}\" v-for=\"(torrent, i) in transfers\" :key=\"i\"\n @click=\"selectedItem = i\">\n <div class=\"col-8 left side\">\n <i class=\"icon fa\" :class=\"{\n 'fa-check': torrent.finish_date != null,\n 'fa-play': !torrent.finish_date && torrent.state === 'downloading',\n 'fa-pause': !torrent.finish_date && torrent.state === 'paused',\n 'fa-stop': !torrent.finish_date && torrent.state === 'stopped',\n }\" />\n <div class=\"title\" v-text=\"torrent.name || torrent.hash || torrent.url\" />\n </div>\n\n <div class=\"col-2 right side\">\n <span v-text=\"`${torrent.progress}%`\" />\n </div>\n\n <div class=\"col-2 right side\">\n <Dropdown title=\"Actions\" icon-class=\"fa fa-ellipsis-h\" @click=\"selectedItem = i\">\n <DropdownItem icon-class=\"fa fa-pause\" text=\"Pause transfer\" @click=\"pause(torrentId(torrent))\"\n v-if=\"torrent.state === 'downloading'\" />\n <DropdownItem icon-class=\"fa fa-play\" text=\"Resume transfer\" @click=\"resume(torrentId(torrent))\"\n v-if=\"torrent.state === 'paused'\" />\n <DropdownItem icon-class=\"fa fa-trash\" text=\"Remove transfer\" @click=\"remove(torrentId(torrent))\" />\n <DropdownItem icon-class=\"fa fa-folder\" text=\"View files\" @click=\"$refs.torrentFiles.isVisible = true\" />\n <DropdownItem icon-class=\"fa fa-info\" text=\"Torrent info\" @click=\"$refs.torrentInfo.isVisible = true\" />\n </Dropdown>\n </div>\n </div>\n\n <Modal ref=\"torrentInfo\" title=\"Torrent info\" width=\"80%\">\n <div class=\"modal-body torrent-info\" v-if=\"selectedItem != null && transfers[selectedItem]\">\n <div class=\"row\" v-if=\"transfers[selectedItem].name\">\n <div class=\"attr\">Name</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].name\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].state\">\n <div class=\"attr\">State</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].state\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">Progress</div>\n <div class=\"value\" v-text=\"`${transfers[selectedItem].progress || 0}%`\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">DL rate</div>\n <div class=\"value\" v-text=\"`${convertSize(transfers[selectedItem].download_rate || 0)}/s`\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">UL rate</div>\n <div class=\"value\" v-text=\"`${convertSize(transfers[selectedItem].upload_rate || 0)}/s`\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">Size</div>\n <div class=\"value\" v-text=\"convertSize(transfers[selectedItem].size || 0)\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].remaining_bytes\">\n <div class=\"attr\">Remaining</div>\n <div class=\"value\" v-text=\"convertSize(transfers[selectedItem].remaining_bytes)\" />\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">URL</div>\n <div class=\"value nowrap\">\n <a :href=\"transfers[selectedItem].url\" target=\"_blank\" v-text=\"transfers[selectedItem].url\" />\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"attr\">Peers</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].peers || 0\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].start_date\">\n <div class=\"attr\">Started</div>\n <div class=\"value\" v-text=\"formatDateTime(transfers[selectedItem].start_date)\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].finish_date\">\n <div class=\"attr\">Finished</div>\n <div class=\"value\" v-text=\"formatDateTime(transfers[selectedItem].finish_date)\" />\n </div>\n\n <div class=\"row\" v-if=\"transfers[selectedItem].save_path\">\n <div class=\"attr\">Save path</div>\n <div class=\"value\" v-text=\"transfers[selectedItem].save_path\" />\n </div>\n </div>\n </Modal>\n\n <Modal ref=\"torrentFiles\" title=\"Torrent files\" width=\"80%\">\n <div class=\"modal-body torrent-files\" v-if=\"selectedItem != null && transfers[selectedItem]\">\n <div class=\"row\" v-for=\"(file, i) in relativeFiles\" :key=\"file\">\n <div class=\"col-1 icon\">\n <Dropdown v-if=\"isMedia && mediaExtensions.has(file.split('.').pop())\">\n <DropdownItem icon-class=\"fa fa-play\" text=\"Play\"\n @click=\"$emit('play', {url: `file://${transfers[selectedItem].files[i]}`, type: 'file'})\" />\n </Dropdown>\n\n <i class=\"fa fa-file\" v-else />\n </div>\n <div class=\"col-11 name\" v-text=\"file\" />\n </div>\n </div>\n </Modal>\n </div>\n</template>\n\n<script>\nimport Loading from \"@/components/Loading\";\nimport Utils from \"@/Utils\";\nimport MediaUtils from \"@/components/Media/Utils.vue\"\nimport Modal from \"@/components/Modal\";\nimport Dropdown from \"@/components/elements/Dropdown\";\nimport DropdownItem from \"@/components/elements/DropdownItem\";\n\nexport default {\n name: \"View\",\n emits: ['play', 'play-with-captions'],\n components: {Dropdown, DropdownItem, Loading, Modal},\n mixins: [Utils, MediaUtils],\n props: {\n pluginName: {\n type: String,\n required: true,\n },\n\n isMedia: {\n type: Boolean,\n default: false,\n },\n },\n\n data() {\n return {\n loading: false,\n transfers: {},\n selectedItem: null,\n }\n },\n\n computed: {\n relativeFiles() {\n if (this.selectedItem == null || !this.transfers[this.selectedItem]?.files?.length)\n return []\n\n return this.transfers[this.selectedItem].files.map((file) => file.split('/').pop())\n },\n },\n\n methods: {\n torrentId(torrent) {\n if (torrent?.hash && torrent.hash.length)\n return torrent.hash\n\n return torrent.url\n },\n\n async refresh() {\n this.loading = true\n\n try {\n this.transfers = Object.values(await this.request(`${this.pluginName}.status`) || {})\n .reduce((obj, torrent) => {\n obj[this.torrentId(torrent)] = torrent\n return obj\n }, {})\n } finally {\n this.loading = false\n }\n },\n\n async pause(torrent) {\n await this.request(`${this.pluginName}.pause`, {torrent: torrent})\n await this.refresh()\n },\n\n async resume(torrent) {\n await this.request(`${this.pluginName}.resume`, {torrent: torrent})\n await this.refresh()\n },\n\n async remove(torrent) {\n await this.request(`${this.pluginName}.remove`, {torrent: torrent})\n await this.refresh()\n },\n\n onTorrentUpdate(torrent) {\n this.transfers[this.torrentId(torrent)] = torrent\n },\n\n onTorrentRemove(torrent) {\n const torrentId = this.torrentId(torrent)\n if (torrentId in this.transfers)\n delete this.transfers[torrentId]\n },\n },\n\n mounted() {\n this.refresh()\n\n this.subscribe(\n this.onTorrentUpdate,'on-torrent-update',\n 'platypush.message.event.torrent.TorrentQueuedEvent',\n 'platypush.message.event.torrent.TorrentDownloadedMetadataEvent',\n 'platypush.message.event.torrent.TorrentDownloadStartEvent',\n 'platypush.message.event.torrent.TorrentDownloadProgressEvent',\n 'platypush.message.event.torrent.TorrentResumedEvent',\n 'platypush.message.event.torrent.TorrentPausedEvent',\n 'platypush.message.event.torrent.TorrentSeedingStartEvent',\n 'platypush.message.event.torrent.TorrentStateChangeEvent',\n 'platypush.message.event.torrent.TorrentDownloadStopEvent',\n 'platypush.message.event.torrent.TorrentDownloadCompletedEvent')\n\n this.subscribe(this.onTorrentRemove,'on-torrent-remove',\n 'platypush.message.event.torrent.TorrentRemovedEvent')\n },\n\n destroy() {\n this.unsubscribe('on-torrent-update')\n this.unsubscribe('on-torrent-remove')\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"src/style/items\";\n\n.torrent-transfers {\n height: 100%;\n background: $background-color;\n\n .no-content {\n height: 100%;\n }\n}\n\n::v-deep(.modal-body) {\n .row {\n display: flex;\n border-bottom: $default-border;\n padding: .5em .25em;\n border-radius: .5em;\n\n &:hover {\n background-color: $hover-bg;\n }\n\n .attr {\n @extend .col-3;\n display: inline-flex;\n }\n\n .value {\n @extend .col-9;\n display: inline-flex;\n justify-content: right;\n\n &.nowrap {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: clip;\n }\n }\n }\n}\n\n::v-deep(.modal-body) {\n .dropdown-container {\n .row {\n box-shadow: none;\n border: none;\n }\n\n button {\n border: none;\n background: none;\n\n &:hover {\n color: $default-hover-fg;\n }\n }\n }\n}\n</style>\n","import { render } from \"./View.vue?vue&type=template&id=7eb04934&scoped=true\"\nimport script from \"./View.vue?vue&type=script&lang=js\"\nexport * from \"./View.vue?vue&type=script&lang=js\"\n\nimport \"./View.vue?vue&type=style&index=0&id=7eb04934&lang=scss&scoped=true\"\n\nimport exportComponent from \"/home/blacklight/git_tree/platypush/platypush/backend/http/webapp/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7eb04934\"]])\n\nexport default __exports__"],"names":["name","mixins","Utils","computed","audioExtensions","Set","videoExtensions","mediaExtensions","this","methods","convertTime","time","parseFloat","t","h","parseInt","m","s","attr","ret","push","join","async","resource","download","url","subtitles","Object","request","media","mediaId","media_id","__exports__","class","$event","pluginName","filterVisible","$emit","torrentURL","type","placeholder","emits","data","components","TorrentView","Header","props","String","required","torrent","render","loading","keys","transfers","length","i","selectedItem","key","hash","progress","title","state","text","pause","torrentId","resume","remove","$refs","torrentFiles","isVisible","torrentInfo","ref","width","convertSize","download_rate","upload_rate","size","remaining_bytes","href","target","peers","start_date","finish_date","save_path","relativeFiles","file","isMedia","has","split","pop","files","Dropdown","DropdownItem","Loading","Modal","Boolean","default","map","values","reduce","obj","refresh","onTorrentUpdate","onTorrentRemove","mounted","subscribe","destroy","unsubscribe"],"sourceRoot":""}