{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Footer.vue?0142","webpack:///./src/components/dialogs/InfoDialog.vue?ecfe","webpack:///./src/components/dialogs/ConfirmDeleteDialog.vue?1d2a","webpack:///./src/assets/site_icons/u2.png","webpack:///./src/components/dialogs/LogsDialog.vue?4076","webpack:///./src/components/dialogs/EditTrackerDialog.vue?c026","webpack:///./src/App.vue?60cb","webpack:///./src/components/Drawer.vue?d391","webpack:///./src/components/dialogs/settingsDialog/SettingsDialog.vue?7222","webpack:///./src/components/dialogs/TorrentInfo.vue?7d4d","webpack:///./src/assets/site_icons/chdbits.png","webpack:///./src/assets/site_icons sync ^\\.\\/.*\\.png$","webpack:///./src/components/dialogs/searchDialog/SearchDialogForm.vue?e30d","webpack:///./src/components/dialogs/RssRulesDialog.vue?ed90","webpack:///./node_modules/vuetify/src/locale sync ^\\.\\/.*$","webpack:///./src/components/dialogs/settingsDialog/SpeedSettings.vue?c37e","webpack:///./src/assets/site_icons/hdhome.png","webpack:///./src/App.vue?de19","webpack:///./src/assets/site_icons/keepfrds.png","webpack:///./src/components/Torrents.vue?7c1b","webpack:///./src/assets/site_icons/hdchina.png","webpack:///./src/assets/site_icons/m-team.png","webpack:///./src/components/dialogs/RssDialog.vue?6d3c","webpack:///./src/components/drawer/FilterGroup.vue?26ba","webpack:///./src/assets/site_icons/springsunday.png","webpack:///./src/components/dialogs/Panel.vue?4b13","webpack:///./src/components/drawer/DrawerFooter.vue?78bb","webpack:///./src/components/dialogs/ConfirmSetCategoryDialog.vue?4d75","webpack:///./src/components/AddForm.vue?8fde","webpack:///./src/components/dialogs/settingsDialog/RssSettings.vue?a786","webpack:///./src/components/dialogs/TorrentContent.vue?e3c6","webpack:///./src/components/GlobalDialog.vue?3a8d","webpack:///./src/components/dialogs/Peers.vue?6f43","webpack:///./src/locale/en.ts","webpack:///./src/locale/ru.ts","webpack:///./src/locale/tr.ts","webpack:///./src/locale/zh-CN.ts","webpack:///./src/locale/zh-TW.ts","webpack:///./src/store/config.ts","webpack:///./src/locale/index.ts","webpack:///./src/plugins/i18n.ts","webpack:///./src/plugins/composition-api.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/consts.ts","webpack:///./src/store/dialog.ts","webpack:///./src/store/snackBar.ts","webpack:///./src/store/addForm.ts","webpack:///./src/utils/index.ts","webpack:///./src/Api.ts","webpack:///./src/store/searchEngine.ts","webpack:///./src/utils/vue-object-merge.ts","webpack:///./src/store/index.ts","webpack:///./src/filters.ts","webpack:///./src/directives.ts","webpack:///./src/buildInfo.ts","webpack:///./src/App.vue?26fe","webpack:///./src/protocolHandler.ts","webpack:///./src/components/GlobalDialog.vue?fad5","webpack:///./src/store/types.ts","webpack:///./src/components/GlobalDialog.vue","webpack:///./src/components/GlobalDialog.vue?368a","webpack:///./src/components/GlobalDialog.vue?e3bd","webpack:///./src/components/GlobalSnackBar.vue?dd96","webpack:///src/components/GlobalSnackBar.vue","webpack:///./src/components/GlobalSnackBar.vue?12a4","webpack:///./src/components/GlobalSnackBar.vue","webpack:///./src/components/AddForm.vue?b45e","webpack:///./src/components/AddForm.vue","webpack:///./src/components/AddForm.vue?c09d","webpack:///./src/components/AddForm.vue?d11d","webpack:///./src/components/Drawer.vue?854d","webpack:///./src/components/drawer/FilterGroup.vue?f8af","webpack:///./src/components/drawer/FilterGroup.vue","webpack:///./src/components/drawer/FilterGroup.vue?6e09","webpack:///./src/components/drawer/FilterGroup.vue?9d5f","webpack:///./src/sites.ts","webpack:///./src/components/Drawer.vue","webpack:///./src/components/Drawer.vue?9c56","webpack:///./src/components/Drawer.vue?4451","webpack:///./src/components/LoginForm.vue?8435","webpack:///./src/components/LoginForm.vue","webpack:///./src/components/LoginForm.vue?28a3","webpack:///./src/components/LoginForm.vue?fe07","webpack:///./src/components/MainToolbar.vue?ce68","webpack:///./src/components/MainToolbar.vue","webpack:///./src/components/MainToolbar.vue?c2e9","webpack:///./src/components/MainToolbar.vue?9fa0","webpack:///./src/components/Torrents.vue?05dc","webpack:///./src/components/dialogs/ConfirmDeleteDialog.vue?087a","webpack:///./src/components/dialogs/ConfirmDeleteDialog.vue","webpack:///./src/components/dialogs/ConfirmDeleteDialog.vue?0859","webpack:///./src/components/dialogs/ConfirmDeleteDialog.vue?fc79","webpack:///./src/components/dialogs/ConfirmSetCategoryDialog.vue?bbe8","webpack:///./src/components/dialogs/ConfirmSetCategoryDialog.vue","webpack:///./src/components/dialogs/ConfirmSetCategoryDialog.vue?c399","webpack:///./src/components/dialogs/ConfirmSetCategoryDialog.vue?6e2f","webpack:///./src/components/dialogs/EditTrackerDialog.vue?2e89","webpack:///./src/components/dialogs/EditTrackerDialog.vue","webpack:///./src/components/dialogs/EditTrackerDialog.vue?6bfc","webpack:///./src/components/dialogs/EditTrackerDialog.vue?f44d","webpack:///./src/components/dialogs/InfoDialog.vue?40da","webpack:///./src/components/dialogs/TorrentInfo.vue?a859","webpack:///./src/mixins/hasTask.ts","webpack:///./src/components/dialogs/baseTorrentInfo.ts","webpack:///./src/components/dialogs/TorrentInfo.vue","webpack:///./src/components/dialogs/TorrentInfo.vue?cfc9","webpack:///./src/components/dialogs/TorrentInfo.vue?2aad","webpack:///./src/components/dialogs/TorrentContent.vue?2318","webpack:///./src/components/dialogs/TorrentContent.vue","webpack:///./src/components/dialogs/TorrentContent.vue?99db","webpack:///./src/components/dialogs/TorrentContent.vue?47b1","webpack:///./src/components/dialogs/Trackers.vue?628f","webpack:///./src/components/dialogs/Trackers.vue","webpack:///./src/components/dialogs/Trackers.vue?6401","webpack:///./src/components/dialogs/Trackers.vue?7dad","webpack:///./src/components/dialogs/Peers.vue?a9de","webpack:///./src/components/dialogs/Peers.vue","webpack:///./src/components/dialogs/Peers.vue?da61","webpack:///./src/components/dialogs/Peers.vue?3c05","webpack:///./src/components/dialogs/Panel.vue?3308","webpack:///./src/components/dialogs/Panel.vue","webpack:///./src/components/dialogs/Panel.vue?4e95","webpack:///./src/components/dialogs/Panel.vue?37bd","webpack:///./src/components/dialogs/InfoDialog.vue","webpack:///./src/components/dialogs/InfoDialog.vue?1d22","webpack:///./src/components/dialogs/InfoDialog.vue?5531","webpack:///./src/components/Torrents.vue","webpack:///./src/components/Torrents.vue?0b24","webpack:///./src/components/Torrents.vue?fbfa","webpack:///./src/components/Footer.vue?ba4d","webpack:///./src/components/Footer.vue","webpack:///./src/components/Footer.vue?b3e0","webpack:///./src/components/Footer.vue?6c9a","webpack:///./src/components/dialogs/LogsDialog.vue?3ba4","webpack:///./src/components/dialogs/LogsDialog.vue","webpack:///./src/components/dialogs/LogsDialog.vue?5e91","webpack:///./src/components/dialogs/LogsDialog.vue?1a5d","webpack:///./src/components/dialogs/RssDialog.vue?acb7","webpack:///./src/components/dialogs/RssRulesDialog.vue?7605","webpack:///./src/components/dialogs/RssRulesDialog.vue","webpack:///./src/components/dialogs/RssDialog.vue","webpack:///./src/components/dialogs/RssRulesDialog.vue?6e4e","webpack:///./src/components/dialogs/RssRulesDialog.vue?563c","webpack:///./src/components/dialogs/RssDialog.vue?5779","webpack:///./src/components/dialogs/RssDialog.vue?0eaf","webpack:///./src/components/dialogs/searchDialog/SearchDialog.vue?f50a","webpack:///./src/components/dialogs/searchDialog/SearchDialogForm.vue?9a81","webpack:///./src/components/dialogs/searchDialog/SearchDialogForm.vue","webpack:///./src/components/dialogs/searchDialog/SearchDialogForm.vue?6a48","webpack:///./src/components/dialogs/searchDialog/SearchDialogForm.vue?0211","webpack:///./src/components/dialogs/searchDialog/PluginsManager.vue?63fd","webpack:///./src/components/dialogs/searchDialog/PluginsManager.vue","webpack:///./src/components/dialogs/searchDialog/PluginsManager.vue?39bb","webpack:///./src/components/dialogs/searchDialog/PluginsManager.vue?e38c","webpack:///./src/components/dialogs/searchDialog/SearchDialog.vue","webpack:///./src/components/dialogs/searchDialog/SearchDialog.vue?1b7e","webpack:///./src/components/dialogs/searchDialog/SearchDialog.vue?be62","webpack:///./src/components/dialogs/settingsDialog/SettingsDialog.vue?46aa","webpack:///./src/components/dialogs/settingsDialog/DownloadSettings.vue?af0f","webpack:///./src/components/dialogs/settingsDialog/PreferenceRow.vue?b207","webpack:///./src/components/dialogs/settingsDialog/PreferenceRow.vue","webpack:///./src/components/dialogs/settingsDialog/PreferenceRow.vue?e231","webpack:///./src/components/dialogs/settingsDialog/PreferenceRow.vue?8268","webpack:///./src/components/dialogs/settingsDialog/DownloadSettings.vue","webpack:///./src/components/dialogs/settingsDialog/DownloadSettings.vue?f4e5","webpack:///./src/components/dialogs/settingsDialog/DownloadSettings.vue?761e","webpack:///./src/components/dialogs/settingsDialog/SpeedSettings.vue?9226","webpack:///./src/components/dialogs/settingsDialog/SpeedSettings.vue","webpack:///./src/components/dialogs/settingsDialog/SpeedSettings.vue?c041","webpack:///./src/components/dialogs/settingsDialog/SpeedSettings.vue?adb5","webpack:///./src/components/dialogs/settingsDialog/WebUISettings.vue?c766","webpack:///./src/components/dialogs/settingsDialog/WebUISettings.vue","webpack:///./src/components/dialogs/settingsDialog/WebUISettings.vue?c75a","webpack:///./src/components/dialogs/settingsDialog/WebUISettings.vue?eb27","webpack:///./src/components/dialogs/settingsDialog/RssSettings.vue?d44b","webpack:///./src/components/dialogs/settingsDialog/RssSettings.vue","webpack:///./src/components/dialogs/settingsDialog/RssSettings.vue?955b","webpack:///./src/components/dialogs/settingsDialog/RssSettings.vue?7f27","webpack:///./src/components/dialogs/settingsDialog/SettingsDialog.vue","webpack:///./src/components/dialogs/settingsDialog/SettingsDialog.vue?ab79","webpack:///./src/components/dialogs/settingsDialog/SettingsDialog.vue?446f","webpack:///./src/components/drawer/DrawerFooter.vue?48ee","webpack:///./src/components/drawer/DrawerFooter.vue","webpack:///./src/App.vue","webpack:///./src/components/drawer/DrawerFooter.vue?4ec3","webpack:///./src/components/drawer/DrawerFooter.vue?43bb","webpack:///./src/App.vue?0ab4","webpack:///./src/App.vue?4195","webpack:///./src/registerServiceWorker.ts","webpack:///./src/main.ts","webpack:///./src/components/dialogs/settingsDialog/DownloadSettings.vue?6c95","webpack:///./src/components/dialogs/searchDialog/SearchDialog.vue?a306","webpack:///./src/components/MainToolbar.vue?8900"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","lang","auto","close","no","yes","cancel","ok","start","stop","submit","edit","delete","todo","resume","pause","force_start","toggle_sequential","info","reset","login","search","refresh","location","rename","trigger_application_shutdown","reannounce","recheck","username","password","size","progress","status","seeds","peers","dl_speed","up_speed","eta","ratio","added_on","settings","logs","light","dark","all","category","uncategorized","others","sites","files","less","more","feed","date","query","plugin","action","search_engine","usage","plugin_manager","update_plugins","preferences","change_applied","downloads","adding_torrent","create_subfolder_enabled","start_paused_enabled","auto_delete_mode","preallocate_all","incomplete_files_ext","saving_management","auto_tmm_enabled","torrent_changed_tmm_enabled","save_path_changed_tmm_enabled","category_changed_tmm_enabled","auto_mode","manual_mode","switch_torrent_mode_to_manual","move_affected_torrent","save_path","temp_path","export_dir","export_dir_fin","speed","global_rate_limits","alternate_rate_limits","alternate_schedule_enable_time","apply_speed_limit","dl_limit","up_limit","zero_for_unlimited","schedule_from","schedule_to","scheduler_days","limit_utp_rate","limit_tcp_overhead","limit_lan_peers","connection","bittorrent","rss","rss_processing_enabled","rss_auto_downloading_enabled","rss_refresh_interval","webui","data_update_interval","webui_remote_control","ip_address","ip_port","enable_upnp","authentication","web_ui_username","web_ui_password","bypass_local_auth","bypass_auth_subnet_whitelist","web_ui_session_timeout","web_ui_max_auth_fail_count","web_ui_ban_duration","web_ui_seconds","new_password","display_speed_in_title","title","_","add_torrents","delete_torrents","set_category","edit_tracker","set_location","recheck_torrents","label","switch_to_old_ui","create_subfolder","start_torrent","skip_hash_check","in_sequential_order","first_and_last_pieces_first","also_delete_files","auto_tmm","adding","reloading","deleting","moving","moved","next","back","confirm","reannounced","rechecking","dht_nodes","base_url","msg","item_is_required","dialog","trigger_exit_qb","text","placeholder","hint","also_delete_same_name_torrents","move","also_move_same_name_torrents","switch_locale","add_feed","feed_url","auto_refresh","auto_download","delete_feeds","date_format","rss_rule","add_rule","new_rule_name","delete_rule","rule_settings","use_regex","must_contain","must_not_contain","episode_filter","smart_episode","assign_category","apply_to_feeds","category_state","downloading","seeding","completed","resumed","paused","active","inactive","errored","torrent_state","error","missingFiles","uploading","pausedUP","queuedUP","stalledUP","checkingUP","forcedUP","allocating","metaDL","pausedDL","queuedDL","stalledDL","checkingDL","forceDL","checkingResumeData","unknown","state","configKey","defaultConfig","baseUrl","updateInterval","pageOptions","itemsPerPage","filter","site","locale","darkMode","displaySpeedInTitle","saveConfig","obj","localStorage","setItem","JSON","stringify","loadConfig","tmp","getItem","parse","configStore","userConfig","mutations","updateConfig","payload","set","getters","config","translations","en","polyglot","phrases","matchLocale","navigator","languages","defaultLocale","updateLocale","extend","$t","use","split","StateType","default","locales","current","icons","iconfont","dialogStore","showDialog","closeDialog","actions","asyncShowDialog","commit","Promise","options","callback","snackBarStore","showSnackBar","closeSnackBar","addFormStore","isOpen","downloadItem","openAddForm","closeAddForm","addFormDownloadItem","AllStateTypes","Downloading","Seeding","Completed","Resumed","Paused","Active","Inactive","Errored","dlState","upState","completeState","activeState","errorState","torrentIsState","type","includes","startsWith","timeout","ms","setTimeout","magicNumber","toUpperCase","codePoints","charCodeAt","char","String","fromCodePoint","url","toString","isWindows","userAgent","findSameNamedTorrents","allTorrents","torrents","hashes","hash","t1","t2","apiEndpoint","this","axios","baseURL","withCredentials","defaults","headers","post","endsWith","normalizeBaseUrl","params","URLSearchParams","validateStatus","then","Api","handleResponse","rid","formData","FormData","entries","append","torrent","alternative_webui_enabled","setPreferences","json","idList","priority","idListStr","join","lastId","last_known_id","deleteFiles","actionTorrents","origUrl","newUrl","withData","path","itemPath","newPath","destPath","def","ruleName","ruleDef","pattern","pluginName","categoryName","body","plugins","enable","names","extra","resp","api","searchPlugins","isPluginManagerOpen","setSearchPlugins","openPluginManager","closePluginManager","allSearchPlugins","fetchSearchPlugins","dispatch","getSearchPluginsRequest","getSearchPlugins","getSearchPluginRequestSuccess","undefined","getSearchPluginRequestFailure","togglePluginAvailability","togglePluginEnableRequest","enablePlugin","enabled","enablePluginRequestSuccess","updatePluginsRequest","updateSearchPlugins","updatePluginsRequestSuccess","updatePluginsRequestFailure","stateMerge","propName","ignoreNull","prop","Store","snackBar","addForm","searchEngine","mainData","pasteUrl","needAuth","updateMainData","full_update","torrents_removed","categories_removed","updatePreferences","setPasteUrl","updateNeedAuth","allPreferences","savePath","isDataReady","allCategories","categories","torrentGroupByCategory","torrentGroupBySite","tracker","URL","hostname","torrentGroupByState","__","put","list","updatePreferencesRequest","getAppPreferences","preferenceRes","updatePreferencesRequestSuccess","updatePreferencesRequestFailure","alert","useStore","useMutations","namespace","forEach","method","_args","useState","states","toPrecision","precision","toFixed","formatSize","units","index","unit","formatDuration","minute","hour","day","year","durations","unitSize","parts","defaultOptions","maxUnitSize","dayLimit","minUnit","opt","assign","duration","Math","floor","formatTimestamp","timestamp","unix","format","formatAsDuration","Date","now","formatProgress","parseDate","str","directive","el","binding","clsName","arg","classList","toggle","buildInfo","console","log","_vm","_h","$createElement","_c","_self","ref","directives","rawName","expression","attrs","$vuetify","breakpoint","lgAndUp","scopedSlots","_u","fn","proxy","model","$$v","drawer","drawerOptions","_e","$set","on","$event","staticClass","staticRenderFns","registerProtocolHandler","origin","pathname","document","checkDownloadUrl","substring","DialogType","_b","domProps","_s","class","isInput","rules","input","_v","_l","btn","clickBtn","BUTTONS","Alert","YesNo","OkCancel","Input","DefaultDialogWidth","setup","ctx","width","root","smAndDown","btnValue","cb","v","btns","dialogType","Custom","buttons","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VDialog","VSpacer","VTextField","changed","btnText","VSnackbar","smAndUp","phoneLayout","valid","item","xsOnly","urls","setParams","selectFiles","autoTMM","categoryItems","showMore","defaultPath","userParams","savepath","skip_checking","sequentialDownload","firstLastPiecePrio","submitting","defaultParams","root_path","find","prefs","$refs","fileZone","addEventListener","onDrop","removeEventListener","addTorrents","message","form","resetValidation","file","$el","querySelector","click","transfer","dataTransfer","preventDefault","validate","deep","immediate","computed","methods","VAlert","VCheckbox","VCol","VCombobox","VContainer","VFileInput","VForm","VIcon","VRow","VTextarea","icon","child","group","selected","stopPropagation","select","isFontIcon","$store","children","some","getSiteIcon","VImg","VListGroup","VListItem","VListItemContent","VList","VListItemIcon","VListItemTitle","stateList","endItems","updateOptions","pcItems","switchUi","concat","filterGroups","totalSize","buildStateGroup","buildCategoryGroup","buildSiteGroup","switchToOldUi","reload","components","FilterGroup","_obj","indexOf","_k","keyCode","arguments","showPassword","loginError","emit","store","href","changeBaseUrl","VToolbar","VToolbarTitle","searchBarExpanded","focusedSearch","searchQuery","onSearch","$nextTick","Boolean","VAppBar","VAppBarNavIcon","hasSelected","confirmDelete","resumeTorrents","pauseTorrents","forceStartTorrents","selectedRows","showInfo","_g","setTorrentsCategory","toggleSequentialTorrents","setTorrentLocation","reannounceTorrents","editTracker","recheckTorrents","loading","footerProps","row","isSelected","_f","seq_dl","getProgressColorClass","num_seeds","num_complete","num_leechs","num_incomplete","dlspeed","upspeed","toDelete","toSetCategory","categoryToSet","toEditTracker","toShowInfo","infoTab","sameNamedTorrents","deleteSameNamed","moveSameNamed","torrentsToDelete","deleteTorrents","Array","torrentsToMove","step","replace","toEdit","currentIndex","canNext","foward","regex","RegExp","compact","calcResults","VDivider","VProgressLinear","VStepper","VStepperContent","VStepperHeader","VStepperItems","VStepperStep","dialogWidth","tabSync","tab","properties","interval","runTask","cancelTask","destroy","taskId","clearTimeout","fetchInfo","isActive","setTaskAndRun","doTask","startTask","PieceState","time_elapsed","seeding_time","nb_connections","nb_connections_limit","total_downloaded_session","total_downloaded","total_uploaded_session","total_uploaded","seeds_total","peers_total","total_wasted","share_ratio","last_seen","information","total_size","pieces_num","piece_size","pieces_have","created_by","creation_date","addition_date","completion_date","comment","pieces","canvas","getTorrentProperties","getTorrentPieceStates","clientWidth","clientHeight","height","getContext","getData","initCanvas","clearRect","partNum","offset","chunkSize","chunks","empty","Empty","downloaded","Downloaded","color","fillStyle","fillRect","EFilePriority","fileTree","selectChanged","inChanging","getRowIcon","FILE_KEY","UNWANTED_FILE","buildTree","notDownload","getTorrentFiles","sort","a","b","localeCompare","folderIndex","open","items","previous","diff","setTorrentFilePriority","normal","getFileFolder","folder","values","subTree","getFiles","VProgressCircular","VTreeview","trackers","tier","num_peers","num_leeches","num_downloaded","getTorrentTracker","getTracker","filters","formatTrackerStatus","formatTrackerNum","num","VDataTable","country","codeToFlag","country_code","ip","port","flags_desc","flags","client","uploaded","relevance","peersObj","getTorrentPeers","peers_removed","getPeers","networkSpeed","networkSize","single","_t","props","required","TorrentInfo","TorrentContent","Trackers","Peers","Panel","getStateInfo","VTab","VTabItem","VTabs","VTabsItems","q","toLowerCase","min","rowsPerPage","theme","selectedHashes","setForceStartTorrents","savePaths","oldPath","torrentHashs","toRemove","ConfirmDeleteDialog","ConfirmSetCategoryDialog","EditTrackerDialog","InfoDialog","formatNetworkSpeed","stateIcon","stateColor","isProgress","isSeqDL","VListItemAction","VMenu","VSubheader","topLayoutClass","app","version","apiVersion","free_space_on_disk","alltime_dl","alltime_ul","connection_status","speedLimited","toggleSpeedLimitsMode","speedModeBind","dl_info_speed","dl_rate_limit","dl_info_data","up_info_speed","up_rate_limit","up_info_data","getAppVersion","getApiVersion","use_alt_speed_limits","getAppInfo","connectionIcon","statusMap","connected","firewalled","disconnected","connectionIconColor","server_state","VSwitch","VTooltip","$emit","getLogs","end","scrollIntoView","formatType","1","2","4","8","typeColor","addRssItem","selectNode","deleteRssItem","renameRssItem","refreshRssItem","changePreference","showRulesDialog","rssNode","rssTree","isItemLoading","selectItem","lastBuildDate","selectArticle","sortArticles","articles","article","downloadTorrent","link","addRssRule","selectedRuleName","deleteRssRule","rssRules","selectedRule","useRegex","editRule","mustContain","mustNotContain","episodeFilter","smartFilter","assignedCategory","hasSelectSite","selectSite","uncategory","buildRssItems","affectedFeeds","rule","feeds","node","getRssRules","setRssRule","fetchRssRules","removeRssRule","old","VListItemGroup","VSelect","buildRssTree","it","reverse","isLoading","hasError","parent","escapeKey","escaped","addRssFeed","response","selectedPath","moveRssFeed","removeRssFeed","refreshRssFeed","getRssItems","torrentURL","fetchRssItems","RssRulesDialog","time","inserted","doc","contentDocument","darkCss","css","head","insertAdjacentHTML","innerHTML","update","oldValue","scrollTo","top","triggerSearch","stopSearch","grid","searchItems","descrLink","fileName","fileSize","searchForm","searchButton","plugginSelectorOpen","mobile","toggleSelectAll","fullName","availableCategories","ALL_KEY","ALL_CATEGORY","availablePlugins","hasSelectAllPlugins","divider","supportedCategories","x","VAutocomplete","VBottomSheet","VSheet","searchEngineState","updatePlugins","togglePluginAvailabilityAction","_searchId","fileUrl","nbLeechers","nbSeeders","siteUrl","sortable","loadSearchPlugins","_stopSearch","_startSearch","task","startSearch","responseId","getSearchResults","isStopped","results","SearchDialogForm","PluginManager","changeSettings","torrentMode","torrentAction","temp_path_enabled","$props","i18nKey","$slots","PreferenceRow","convertToKB","convertToBytes","alt_dl_limit","alt_up_limit","scheduler_enabled","schedule_from_hour","schedule_from_min","updateSchedulerFrom","schedule_to_hour","schedule_to_min","updateSchedulerTo","event","strings","VTimePicker","web_ui_address","web_ui_port","updateTitleSpeedConfig","bypass_auth_subnet_whitelist_enabled","preferenceUpdated","tabList","DownloadSettings","SpeedSettings","WebUISettings","RssSettings","VFadeTransition","currentLocale","darkModeIcon","currentDarkMode","triggerApplicationShutdown","AUTO_KEY","buildLocales","oldLocale","darkModes","translation","localeKey","shutdownApplication","AppFooter","appWrapEl","VExpandTransition","showLogs","showRss","showSettings","initProtocolHandler","getInitData","onPaste","getMainData","getPreferences","upInfoSpeed","dlInfoSpeed","dl","up","target","tagName","clipboardData","mql","removeListener","matchMedia","addListener","matches","AddForm","Drawer","LoginForm","Torrents","LogsDialog","MainToolbar","GlobalDialog","GlobalSnackBar","RssDialog","SearchDialog","DrawerFooter","SettingsDialog","VApp","VFooter","VMain","VNavigationDrawer","ready","registered","cached","updatefound","updated","offline","productionTip","vuetify","render","h","$mount"],"mappings":"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","file":"js/app.34a5fec3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=70be62cb&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./InfoDialog.vue?vue&type=style&index=0&id=35c58977&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./ConfirmDeleteDialog.vue?vue&type=style&index=0&id=a01eaf30&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAACm0lEQVQ4y6XQS3IbVQCF4f8++qmW3FJky/gRA+WECgMoqjJhwDYo1sRS2APzDMiACcSUUy7HVmTZLSO5W1J333v7MpB3wFnAV3V++J8Tv101fvIyZHoLTQujCGaPICIIBMxLSBT88gNMgMpDJuAB+P0e5M9fReLmM1x+2DCfPjHotYSJ4dNsTVFYUt8wCjruCwve4TY167ajuG+5vgENcDUFrwRRGjBbKCIh+e5LjcIjpMaYjqs1pImnH0Q467isNOX2GfCd49V5gsSxrkDahiYOsa3kqbb0laRUsLRg1w2J9lgV4U23AzYNvHs/5+ggZ9gL0YT8edkwnxus6PjxTcZRrri7d7z/e4uWioOxxPUCJECaKyqbcHFrMZ2gdZa7xYo4h/OjPiIQXBcNF1c1KgwZ5JJ/t1uigdwB0sNwGOPEFitACMEoTXlzmvD9a2jbjj8+rJiVNecnip/eJuznkDbsACtgsSjJI0kWW9KepFPw8dMG66Hfl2SJ5uuzlNODEG9rjid7GPMcsXzoONsPeXmSkSrH41JQrCwvBiHtRqKt5e3rIf0ckFCblMeixcbRDnh1LBlFfcqNoZGSZemxJmB/ECGsR3lFlEjapuFuZVAupFhsyE+fASlAdA7baazpkLGCsCHRGq01d08tHy8dlbXUy5ZvvxEcnmSs2+cLf916EmdIMslhP0B3Di8FKlTgBdut47GssKrH5EXG2YEkTgL+mfodEPUE1xcbxmPB0WiPJBKEQrPeCuQIjicpo1GAtbDX0wwig5WgtNgB4xzWw5gw7shyMLYjlYqbac0gsxzuJ+wRIL3D4Kk7zWLl6LxC/fqu86NDQWMCaqMZ9CTVkwAd0BvHzB4Mq0rjpKBsJUUl+LwUVBvBF8eC/wA/Ni8XXFblvgAAAABJRU5ErkJggg==\"","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./LogsDialog.vue?vue&type=style&index=0&id=25ee86f6&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./EditTrackerDialog.vue?vue&type=style&index=0&id=24122721&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=0d9d7390&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=style&index=0&id=38676a60&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SettingsDialog.vue?vue&type=style&index=0&id=3eb994fd&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./TorrentInfo.vue?vue&type=style&index=0&id=7f833448&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAUUlEQVQoz7WSWwoAIAgEZ6P7X9l+InpQaNF+yo6rqADAcEkgv7syNjY4yCbg7G5KkXEA8hBqNU/SrvKWsEZ5gXWk+6XDwP87xF+D6PP1tMddAGcxFhjSGYG/AAAAAElFTkSuQmCC\"","var map = {\n\t\"./chdbits.png\": \"3893\",\n\t\"./hdchina.png\": \"6e14\",\n\t\"./hdhome.png\": \"5918\",\n\t\"./keepfrds.png\": \"6376\",\n\t\"./m-team.png\": \"6e33\",\n\t\"./springsunday.png\": \"83eb\",\n\t\"./u2.png\": \"194e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"3c9e\";","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SearchDialogForm.vue?vue&type=style&index=0&id=50ebf5de&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./RssRulesDialog.vue?vue&type=style&index=0&id=0220a15a&lang=scss&scoped=true&\"","var map = {\n\t\"./\": \"1f11\",\n\t\"./__tests__/index.spec\": \"58dfb\",\n\t\"./__tests__/index.spec.ts\": \"58dfb\",\n\t\"./af\": \"4428\",\n\t\"./af.ts\": \"4428\",\n\t\"./ar\": \"4720\",\n\t\"./ar.ts\": \"4720\",\n\t\"./az\": \"64dc\",\n\t\"./az.ts\": \"64dc\",\n\t\"./bg\": \"3bd4\",\n\t\"./bg.ts\": \"3bd4\",\n\t\"./ca\": \"a8de\",\n\t\"./ca.ts\": \"a8de\",\n\t\"./ckb\": \"ef60\",\n\t\"./ckb.ts\": \"ef60\",\n\t\"./cs\": \"83af\",\n\t\"./cs.ts\": \"83af\",\n\t\"./de\": \"8e29\",\n\t\"./de.ts\": \"8e29\",\n\t\"./el\": \"98c0\",\n\t\"./el.ts\": \"98c0\",\n\t\"./en\": \"4b41\",\n\t\"./en.ts\": \"4b41\",\n\t\"./es\": \"f950\",\n\t\"./es.ts\": \"f950\",\n\t\"./et\": \"ead6\",\n\t\"./et.ts\": \"ead6\",\n\t\"./fa\": \"03fd\",\n\t\"./fa.ts\": \"03fd\",\n\t\"./fi\": \"43a3\",\n\t\"./fi.ts\": \"43a3\",\n\t\"./fr\": \"ea1f\",\n\t\"./fr.ts\": \"ea1f\",\n\t\"./he\": \"131b\",\n\t\"./he.ts\": \"131b\",\n\t\"./hr\": \"0924\",\n\t\"./hr.ts\": \"0924\",\n\t\"./hu\": \"573e\",\n\t\"./hu.ts\": \"573e\",\n\t\"./id\": \"6dfc\",\n\t\"./id.ts\": \"6dfc\",\n\t\"./index\": \"1f11\",\n\t\"./index.ts\": \"1f11\",\n\t\"./it\": \"c2a1\",\n\t\"./it.ts\": \"c2a1\",\n\t\"./ja\": \"1902\",\n\t\"./ja.ts\": \"1902\",\n\t\"./ko\": \"f5e4\",\n\t\"./ko.ts\": \"f5e4\",\n\t\"./lt\": \"e184\",\n\t\"./lt.ts\": \"e184\",\n\t\"./lv\": \"07ae\",\n\t\"./lv.ts\": \"07ae\",\n\t\"./nl\": \"4642\",\n\t\"./nl.ts\": \"4642\",\n\t\"./no\": \"800a\",\n\t\"./no.ts\": \"800a\",\n\t\"./pl\": \"7597\",\n\t\"./pl.ts\": \"7597\",\n\t\"./pt\": \"df7f\",\n\t\"./pt.ts\": \"df7f\",\n\t\"./ro\": \"fa37\",\n\t\"./ro.ts\": \"fa37\",\n\t\"./ru\": \"0879\",\n\t\"./ru.ts\": \"0879\",\n\t\"./sk\": \"b854\",\n\t\"./sk.ts\": \"b854\",\n\t\"./sl\": \"ae0b\",\n\t\"./sl.ts\": \"ae0b\",\n\t\"./sr-Cyrl\": \"af68\",\n\t\"./sr-Cyrl.ts\": \"af68\",\n\t\"./sr-Latn\": \"5a1b\",\n\t\"./sr-Latn.ts\": \"5a1b\",\n\t\"./sv\": \"035c\",\n\t\"./sv.ts\": \"035c\",\n\t\"./th\": \"aef1\",\n\t\"./th.ts\": \"aef1\",\n\t\"./tr\": \"659a\",\n\t\"./tr.ts\": \"659a\",\n\t\"./uk\": \"ea76\",\n\t\"./uk.ts\": \"ea76\",\n\t\"./vi\": \"18a6\",\n\t\"./vi.ts\": \"18a6\",\n\t\"./zh-Hans\": \"25a2\",\n\t\"./zh-Hans.ts\": \"25a2\",\n\t\"./zh-Hant\": \"582c\",\n\t\"./zh-Hant.ts\": \"582c\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"5493\";","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SpeedSettings.vue?vue&type=style&index=0&id=6257e5f6&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAEnUlEQVRYw8VXTWhdRRT+ztz7fpKXpkkN9adNsVKS+APBGmzEqmCDihQRjFDEUkVcSReCigsXirta6k8suuiiripUcWEFbcVuClIUopVqaqmlCZU0JmnyTF7MuzPnuJj7++68EKzQAwfuzJw559zvfDP3XBIRXE/xn/7k6jU5OLqnMzfX6NNlEwkNH579396GiKToAwWf4PuAIkKgBX/XGEf3dJITgWupQMEniYL5HsFTgFIEpQAVhisWCQJg+PBVfPZcHgl/tfGVsm/n+xQHiwKSAhpfj1OOfd8m4USAHStvDLXJDRWFOgtYrHMiACCcn9H46vfl2FYgELbPg90F3NddzPkTEZR9EuTzzCQglRZCwSfMLjPWtyv0rPNzznq6PIxOakzMG0cgoKUAbGz3MvNLgeDyPMOwRS0ttPOQJWF7RUm5ROGbWunt8vHq9tZcoHPTBu+cWmxaru61Hl7b3oqWAmEpELz53SLGZzUWakJfvpDlgWIWKAUhEhgWaJPo2StBbDj2l04l5mFwYyFjm9aLsxqX5ixCl+YMrizYZ3bUWxkGtAYCA2iHRvL52WVM1zgeP9NfRlGRc482iEn365SBNpaUzHkuKsNAXQvVA0Gg8xqJNoKD39ficWuB8OQdJeeeQAui481sx4ZdFASUsEBYoLXAmLxGwkbwy58BfphIyvJ4bwl9XZ57X5SAAMbYGARg6OBMngPMgiBwJxEnwNbRodOLqNWT+ecHWp0JRAgI27Gtv+R4oETs8Ql0YpjWOAGx48mqwZHRpBS3rvOw8/ZSbp+EEIgg46vx5o0R0FpoRQRSc1+cWcLFmeRU7Lq7FWUPTUqQRkUgDZ9fxWzhZYYtQYNmEkjNf3xqIV6rFAkvDlYy60kJkMylEsshwLw6DkQ6OlHHibF/4vWh3jLuuqmQ4wBzyl/Ig/v3T7kTCLRAB24EjMmj8+HJKhaXE5tXdqxJISA5BDhEIc2thhIgd6vFCXD+xpurMUZOVmObG9s97N5WgTYSI82S3WPJnC6BEURqTEjEVXAg0mM/1/DTRD22G95awfqKSkiYQiBGgRMiZhCwxmiSAJwJGC048M18bNdWIux9uD17D6Ttw0vpnrcnAQB+48WgIVCO9sEYS1KX/Ha5jk9PL2DXtjYAwIM9ZSwsc4xA4z4O1SZgsosCwNUpRyVoJh99W8VDvS24ucMLkVDJKdD5GEzNShBpwzE0LM4rN9K5RYN9x/IdtjQc3+S2DRGQ/DeajBGBCNa0JO1LxIGV5MSZGn78YxkDt5WSfQ4EoAAocSPAKQSe2FqJ9wxsLq2IQKSvH5nOIhB+DQ3bT7IRAoMSBFxdyltPdWJzl497t5TjuZceWYsdd7agusR4dmSyKQrjUwFGvp7D3sc6UqQjECjq1UkYGNu3oXkC/ZtK6LulkJvv22A73jQ3QLDOw9aZCPjgeBW7H2hHR0Xh0f5WvH+8Suf2dzsTpi0vjzsXTN2IGG6wzgcjZd+MKGlnzx9wB3OJz81+jTyCMEFEQGSDxsFCKAF7pC68u2nVAXMJNPtlISLyil4UI9vNpfZceO+/BwcAut6/5/8CTr58VufmCM0AAAAASUVORK5CYII=\"","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/keepfrds.e602522e.png\";","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./Torrents.vue?vue&type=style&index=0&id=514dcf17&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAgUlEQVQoz51RwQ3AIAhE4gB1Of9lB6dwB/5lua7QBw0lqTHoxRgOOTwxHecFK0AAuLkq0eDmqsuKPMVhm0JSSEzvKUIYhQQAsjcTfYN5WBBEoC7y5Mzu9DTt/MOOgFodBn7/BNQqd/HZkCXus7FaO/ynhjAL75TUlZdphU9qvDzWB/mJRjPcDSP/AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./RssDialog.vue?vue&type=style&index=0&id=763d8c6c&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./FilterGroup.vue?vue&type=style&index=0&id=26ced1bd&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,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\"","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./Panel.vue?vue&type=style&index=0&id=1e23acca&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./DrawerFooter.vue?vue&type=style&index=0&id=521b95f4&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./ConfirmSetCategoryDialog.vue?vue&type=style&index=0&id=dfcb35ec&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./AddForm.vue?vue&type=style&index=0&id=f8274abe&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./RssSettings.vue?vue&type=style&index=0&id=0418c586&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./TorrentContent.vue?vue&type=style&index=0&id=360390b3&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./GlobalDialog.vue?vue&type=style&index=0&id=299a15fc&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./Peers.vue?vue&type=style&index=0&id=a834147c&lang=scss&scoped=true&\"","/* eslint-disable @typescript-eslint/camelcase */\nexport default {\n lang: 'English',\n auto: 'Auto',\n\n close: 'Close',\n no: 'No',\n yes: 'Yes',\n cancel: 'Cancel',\n ok: 'OK',\n\n start: 'Start',\n stop: 'Stop',\n submit: 'Submit',\n edit: 'Edit',\n delete: 'Delete',\n todo: 'To Do',\n resume: 'Resume',\n pause: 'Pause',\n force_start: 'Force Start',\n toggle_sequential: 'Toggle Sequential Download',\n info: 'Info',\n reset: 'Reset',\n login: 'Login',\n search: 'Search',\n refresh: 'Refresh',\n location: 'Location',\n rename: 'Rename',\n trigger_application_shutdown: 'Exit qBittorrent',\n reannounce: 'Reannounce',\n recheck: 'Recheck',\n\n username: 'Username',\n password: 'Password',\n\n name: 'Name',\n size: 'Size',\n progress: 'Progress',\n status: 'Status',\n seeds: 'Seeds',\n peers: 'Peers',\n dl_speed: 'DL Speed',\n up_speed: 'UP Speed',\n eta: 'ETA',\n ratio: 'Ratio',\n added_on: 'Added On',\n\n settings: 'Settings',\n logs: 'Logs',\n light: 'Light',\n dark: 'Dark',\n\n all: 'All',\n category: 'Category |||| Categories',\n uncategorized: 'Uncategorized',\n others: 'Others',\n sites: 'Sites',\n files: 'Files',\n less: 'Less',\n more: 'More',\n feed: 'Feed',\n date: 'Date',\n query: 'Query',\n plugin: 'Plugin |||| Plugins',\n action: 'Action |||| Actions',\n search_engine: 'Search engine',\n usage: 'usage',\n plugin_manager: 'Plugin manager',\n update_plugins: 'Update plugins',\n\n preferences: {\n change_applied: 'New preferences saved',\n downloads: 'Downloads',\n adding_torrent: 'When adding a torrent',\n create_subfolder_enabled: 'Create subfolder for torrents with multiple files',\n start_paused_enabled: 'Do not start the download automatically',\n auto_delete_mode: 'Delete .torrent files afterwards',\n preallocate_all: 'Pre-allocate disk space for all files',\n incomplete_files_ext: 'Append .!qB extension to incomplete files',\n saving_management: 'Saving Management',\n auto_tmm_enabled: 'Default Torrent Management Mode',\n torrent_changed_tmm_enabled: 'When Torrent Category changed',\n save_path_changed_tmm_enabled: 'When Default Save Path changed',\n category_changed_tmm_enabled: 'When Category Save Path changed',\n auto_mode: 'Automatic',\n manual_mode: 'Manual',\n switch_torrent_mode_to_manual: 'Switch affected torrent to manual mode',\n move_affected_torrent: 'Relocate affected torrents',\n save_path: 'Default Save Path',\n temp_path: 'Keep incomplete torrents in',\n export_dir: 'Copy .torrent files to',\n export_dir_fin: 'Copy .torrent files for finished downloads to',\n\n speed: 'Speed',\n global_rate_limits: 'Global Rate Limits',\n alternate_rate_limits: 'Alternative Rate Limits',\n alternate_schedule_enable_time: 'Schedule the use of alternative rate limits',\n apply_speed_limit: 'Rate Limits Settings',\n dl_limit: 'Download (KiB/s)',\n up_limit: 'Upload (KiB/s)',\n zero_for_unlimited: '0 means unlimited',\n schedule_from: 'From',\n schedule_to: 'To',\n scheduler_days: 'When',\n limit_utp_rate: 'Apply rate limit to µTP protocol',\n limit_tcp_overhead: 'Apply rate limit to transport overhead',\n limit_lan_peers: 'Apply rate limit to peers on LAN',\n\n connection: 'Connections',\n bittorrent: 'BitTorrent',\n\n rss: 'RSS',\n rss_processing_enabled: 'Enable fetching RSS feeds',\n rss_auto_downloading_enabled: 'Enable auto downloading of RSS torrents',\n rss_refresh_interval: 'Feeds refresh interval',\n\n webui: 'Web UI',\n data_update_interval: 'Data Update Interval (ms)',\n webui_remote_control: 'Web User Interface (Remote control)',\n ip_address: 'IP address',\n ip_port: 'Port',\n enable_upnp: 'Use UPnP / NAT-PMP to forward the port from my router',\n authentication: 'Authentication',\n web_ui_username: 'Username',\n web_ui_password: 'Password',\n bypass_local_auth: 'Bypass authentication for clients on localhost',\n bypass_auth_subnet_whitelist: 'Bypass authentication for clients on localhost',\n web_ui_session_timeout: 'Session timeout',\n web_ui_max_auth_fail_count: 'Ban client after consecutive failures',\n web_ui_ban_duration: 'ban for',\n web_ui_seconds: 'seconds',\n new_password: 'Change current password...',\n\n display_speed_in_title: 'Display download speed in page title',\n },\n\n title: {\n _: 'Title',\n add_torrents: 'Add Torrents',\n delete_torrents: 'Delete Torrents',\n set_category: 'Set Category',\n edit_tracker: 'Edit Tracker',\n set_location: 'Set Location',\n recheck_torrents: 'Recheck Torrents',\n },\n\n label: {\n switch_to_old_ui: 'Switch to old UI',\n create_subfolder: 'Create subfolder',\n start_torrent: 'Start torrent',\n skip_hash_check: 'Skip hash check',\n in_sequential_order: 'In sequential order',\n first_and_last_pieces_first: 'First and last pieces first',\n\n also_delete_files: 'Also delete files',\n\n auto_tmm: 'Auto TMM',\n\n adding: 'Adding…',\n reloading: 'Reloading…',\n deleting: 'Deleting…',\n moving: 'Moving…',\n moved: 'Moved',\n next: 'Next',\n back: 'Back',\n confirm: 'Confirm',\n reannounced: 'Reannounced',\n rechecking: 'Rechecking…',\n dht_nodes: '%{smart_count} node |||| %{smart_count} nodes',\n base_url: 'Base URL',\n },\n\n msg: {\n item_is_required: '%{item} is required',\n },\n\n dialog: {\n trigger_exit_qb: {\n title: 'Exit qBittorrent',\n text: 'Are you sure you want to exit qBittorrent?',\n },\n add_torrents: {\n placeholder: 'Upload torrents by drop them here,\\nor click attachment button at right to select.',\n hint: 'One link per line',\n },\n delete_torrents: {\n msg: 'Are you sure to delete selected torrents from transfer list?',\n also_delete_same_name_torrents: 'Also delete one same named torrent |||| Also delete %{smart_count} same named torrents',\n },\n set_category: {\n move: 'Are you sure to move selected torrents to category %{category}?',\n reset: 'Are you sure to reset category of selected torrents?',\n also_move_same_name_torrents: 'Also move one same named torrent |||| Also move %{smart_count} same named torrents',\n },\n switch_locale: {\n msg: 'Are you sure to switch language to %{lang}?\\nThis action will reload page.',\n },\n recheck_torrents: {\n msg: 'Are you sure want to recheck torrents?',\n },\n rss: {\n add_feed: 'Add Feed',\n feed_url: 'Feed URL',\n auto_refresh: 'Auto Refresh',\n auto_download: 'Auto Download',\n delete_feeds: 'Are you sure to delete selected feeds?',\n date_format: '%{date} (%{duration} ago)',\n },\n rss_rule: {\n add_rule: 'Add Rule',\n new_rule_name: 'The name of the new rule',\n delete_rule: 'Are you sure to delete selected rule?',\n title: 'RSS Downloader',\n rule_settings: 'Rule Settings',\n\n use_regex: 'Use Regex',\n must_contain: 'Must Contain',\n must_not_contain: 'Must Not Contain',\n episode_filter: 'Episode Filter',\n smart_episode: 'Use Smart Episode Filter',\n assign_category: 'Assign Category',\n\n apply_to_feeds: 'Apply Rule to Feeds',\n },\n },\n\n category_state: {\n _: 'State',\n\n downloading: 'Downloading',\n seeding: 'Seeding',\n completed: 'Completed',\n resumed: 'Resumed',\n paused: 'Paused',\n active: 'Active',\n inactive: 'Inactive',\n errored: 'Errored',\n },\n\n torrent_state: {\n error: 'error',\n missingFiles: 'missingFiles',\n uploading: 'uploading',\n pausedUP: 'pausedUP',\n queuedUP: 'queuedUP',\n stalledUP: 'stalledUP',\n checkingUP: 'checkingUP',\n forcedUP: 'forcedUP',\n allocating: 'allocating',\n downloading: 'downloading',\n metaDL: 'metaDL',\n pausedDL: 'pausedDL',\n queuedDL: 'queuedDL',\n stalledDL: 'stalledDL',\n checkingDL: 'checkingDL',\n forceDL: 'forceDL',\n checkingResumeData: 'checkingResumeData',\n moving: 'moving',\n unknown: 'unknown',\n },\n}\n","/* eslint-disable @typescript-eslint/camelcase */\nexport default {\n lang: 'Русский',\n auto: 'Автоматически',\n\n close: 'Закрыть',\n no: 'Нет',\n yes: 'Да',\n cancel: 'Отмена',\n ok: 'ОК',\n\n start: 'Запустить',\n stop: 'Остановить',\n submit: 'Отправить',\n edit: 'Изменить',\n delete: 'Удалить',\n todo: 'Список дел',\n resume: 'Продолжить',\n pause: 'Приостановить',\n force_start: 'Запустить принудительно',\n info: 'Информация',\n reset: 'Сброс',\n login: 'Вход',\n search: 'Поиск',\n refresh: 'Обновить',\n location: 'Расположение',\n rename: 'Переименовать',\n trigger_application_shutdown: 'Выйти из qBittorrent',\n reannounce: 'Объявить повторно',\n recheck: 'Перепроверить',\n\n username: 'Имя пользователя',\n password: 'Пароль',\n\n name: 'Название',\n size: 'Размер',\n progress: 'Прогресс',\n status: 'Статус',\n seeds: 'Сиды',\n peers: 'Пиры',\n dl_speed: 'Качает',\n up_speed: 'Раздаёт',\n eta: 'Осталось',\n ratio: 'Ратио',\n added_on: 'Добавлен',\n\n settings: 'Настройки',\n logs: 'Логи',\n light: 'Светлый',\n dark: 'Тёмный',\n\n all: 'Все',\n category: 'Категория |||| Категории',\n uncategorized: 'Без категории',\n others: 'Другие',\n sites: 'Сайты',\n files: 'Файлы',\n less: 'Меньше',\n more: 'Больше',\n feed: 'Feed',\n date: 'Дата',\n query: 'Запрос',\n plugin: 'Плагин |||| Плагины',\n action: 'Действие |||| Действия',\n search_engine: 'Поисковый движок',\n usage: 'применение',\n plugin_manager: 'Управление плагинами',\n update_plugins: 'Обновить плагины',\n\n preferences: {\n change_applied: 'Настройки сохранены',\n downloads: 'Загрузки',\n adding_torrent: 'При добавлении торрента',\n create_subfolder_enabled: 'Создавать подпапку для торрентов со множеством файлов',\n start_paused_enabled: 'Не начинать загрузку автоматически',\n auto_delete_mode: 'Удалять торрент-файлы после добавления',\n preallocate_all: 'Предварительно резервировать место для всех файлов',\n incomplete_files_ext: 'Добавлять расширение .!qB к незавершённым файлам',\n saving_management: 'Управление сохранением',\n auto_tmm_enabled: 'Режим управления торрентом по умолчанию',\n torrent_changed_tmm_enabled: 'При изменении категории торрента',\n save_path_changed_tmm_enabled: 'При изменении пути сохранения по умолчанию',\n category_changed_tmm_enabled: 'При изменении пути сохранения категории',\n auto_mode: 'Автоматический',\n manual_mode: 'Ручной',\n switch_torrent_mode_to_manual: 'Переключить затронутые торренты в Ручной режим',\n move_affected_torrent: 'Переместить затронутые торренты',\n save_path: 'Путь сохранения по умолчанию',\n temp_path: 'Хранить незавершённые торренты в',\n export_dir: 'Копировать торрент-файлы в',\n export_dir_fin: 'Копировать торрент-файлы завершённых загрузок в',\n\n speed: 'Скорость',\n global_rate_limits: 'Общие ограничения скорости',\n alternate_rate_limits: 'Альтернативные ограничения скорости',\n alternate_schedule_enable_time: 'Запланировать использование особых ограничений скорости',\n dl_limit: 'Загрузка (KiB/s)',\n up_limit: 'Отдача (KiB/s)',\n zero_for_unlimited: '«0» — без ограничений',\n schedule_from: 'С',\n schedule_to: 'До',\n scheduler_days: 'Когда',\n limit_utp_rate: 'Применять ограничения скорости к протоколу µTP',\n limit_tcp_overhead: 'Применять ограничения скорости к служебному трафику',\n limit_lan_peers: 'Применять ограничения скорости к локальным пирам',\n\n webui: 'Веб-интерфейс',\n data_update_interval: 'Интервал обновления (ms)',\n webui_remote_control: 'Веб-интерфейс (удалённое управление)',\n ip_address: 'IP-адрес',\n ip_port: 'Порт',\n enable_upnp: 'Использовать UPnP / NAT-PMP для проброса порта через мой роутер',\n authentication: 'Аутентификация',\n web_ui_username: 'Имя пользователя',\n web_ui_password: 'Пароль',\n bypass_local_auth: 'Пропускать аутентификацию клиентов для localhost',\n bypass_auth_subnet_whitelist: 'Пропускать аутентификацию клиентов для разрешённых подсетей',\n web_ui_session_timeout: 'Таймаут сессии',\n web_ui_max_auth_fail_count: 'Блокировать клиента после серии сбоев',\n web_ui_ban_duration: 'заблокировать на',\n web_ui_seconds: 'секунд',\n new_password: 'Изменить текущий пароль...',\n\n display_speed_in_title: 'Показывать скорость загрузки в заголовке окна',\n },\n\n title: {\n _: 'Заголовок',\n add_torrents: 'Добавить торрент',\n delete_torrents: 'Удалить торрент',\n set_category: 'Установить категорию',\n edit_tracker: 'Изменить трекер',\n set_location: 'Установить расположение',\n recheck_torrents: 'Перепроверить торренты',\n },\n\n label: {\n switch_to_old_ui: 'Переключиться на старый интерфейс',\n create_subfolder: 'Создать подпапку',\n start_torrent: 'Запустить торрент',\n skip_hash_check: 'Пропустить проверку хеша',\n in_sequential_order: 'В последовательном порядке',\n first_and_last_pieces_first: 'Сначала первая и последняя часть',\n\n also_delete_files: 'Также удалить файлы',\n\n auto_tmm: 'Автоуправление торрентом',\n\n adding: 'Добавление…',\n reloading: 'Перезагрузка…',\n deleting: 'Удаление…',\n moving: 'Перемещение…',\n moved: 'Перемещено',\n next: 'Далее',\n back: 'Назад',\n confirm: 'Подтвердить',\n reannounced: 'Объявлен повторно',\n rechecking: 'Перепроверка…',\n dht_nodes: '%{smart_count} узел |||| Узлов: %{smart_count}',\n base_url: 'Базовый URL',\n },\n\n msg: {\n item_is_required: 'Требуется %{item}',\n },\n\n dialog: {\n trigger_exit_qb: {\n title: 'Выйти из qBittorrent',\n text: 'Выйти из qBittorrent?',\n },\n add_torrents: {\n placeholder: 'Начните скачивать торренты, переместив их сюда,\\nили нажмите кнопку вложения справа, чтобы выбрать.',\n hint: 'Одна ссылка на строку',\n },\n delete_torrents: {\n msg: 'Удалить выбранные торренты из списка передачи?',\n also_delete_same_name_torrents: 'Также удалить один торрент с тем же именем |||| Также удалить торренты с тем же именем (всего %{smart_count})',\n },\n set_category: {\n move: 'Переместить выбранные торренты в категорию %{category}?',\n reset: 'Вы уверены, что хотите сбросить категорию выбранных торрентов?',\n also_move_same_name_torrents: 'Также переместить один торрент с тем же именем |||| Также переместить торренты с тем же именем (всего %{smart_count})',\n },\n switch_locale: {\n msg: 'Переключить язык на %{lang}?\\nЭто действие перезагрузит страницу.',\n },\n recheck_torrents: {\n msg: 'Перепроверить торренты?',\n },\n rss: {\n add_feed: 'Добавить Feed',\n feed_url: 'Ссылка Feed',\n auto_refresh: 'Автообновление',\n auto_download: 'Автоскачивание',\n delete_feeds: 'Удалить выбранные каналы?',\n date_format: '%{date} (%{duration} назад)',\n },\n rss_rule: {\n add_rule: 'Добавить правило',\n new_rule_name: 'Название нового правила',\n delete_rule: 'Удалить выбранное правило?',\n title: 'Загрузчик RSS',\n rule_settings: 'Настройки правила',\n\n use_regex: 'Использовать регулярное выражение',\n must_contain: 'Должен содержать',\n must_not_contain: 'Не должен содержать',\n episode_filter: 'Фильтр эпизодов',\n smart_episode: 'Использовать умный фильтр эпизодов',\n assign_category: 'Назначить категорию',\n\n apply_to_feeds: 'Применить правило к Feed',\n },\n },\n\n category_state: {\n _: 'Статистика',\n\n downloading: 'Скачивается',\n seeding: 'Раздаётся',\n completed: 'Завершено',\n resumed: 'Возобновлён',\n paused: 'Приостановлен',\n active: 'Активный',\n inactive: 'Не активный',\n errored: 'Ошибочный',\n },\n\n torrent_state: {\n error: 'error',\n missingFiles: 'missingFiles',\n uploading: 'uploading',\n pausedUP: 'pausedUP',\n queuedUP: 'queuedUP',\n stalledUP: 'stalledUP',\n checkingUP: 'checkingUP',\n forcedUP: 'forcedUP',\n allocating: 'allocating',\n downloading: 'downloading',\n metaDL: 'metaDL',\n pausedDL: 'pausedDL',\n queuedDL: 'queuedDL',\n stalledDL: 'stalledDL',\n checkingDL: 'checkingDL',\n forceDL: 'forceDL',\n checkingResumeData: 'checkingResumeData',\n moving: 'moving',\n unknown: 'unknown',\n },\n}\n","/* eslint-disable @typescript-eslint/camelcase */\nexport default {\n lang: 'Türkçe',\n auto: 'Otomatik',\n\n close: 'Kapat',\n no: 'Hayır',\n yes: 'Evet',\n cancel: 'İptal',\n ok: 'Tamam',\n\n start: 'Başlat',\n stop: 'Durdur',\n submit: 'Tamam',\n edit: 'Düzenle',\n delete: 'Sil',\n todo: 'Yapılacak',\n resume: 'Devam Et',\n pause: 'Duraklat',\n force_start: 'Zorla Başlat',\n info: 'Bilgi',\n reset: 'Sıfırla',\n login: 'Oturum Aç',\n search: 'Ara',\n refresh: 'Yenile',\n location: 'Kaydetme yeri',\n rename: 'Yeniden adlandır',\n trigger_application_shutdown: 'qBittorrent\\'ten çık',\n reannounce: 'Yeniden Duyur',\n recheck: 'Yeniden Denetle',\n\n username: 'Kullanıcı Adı',\n password: 'Parola',\n\n name: 'Adı',\n size: 'Boyut',\n progress: 'İlerleme',\n status: 'Durum',\n seeds: 'Gönderim',\n peers: 'Kişi',\n dl_speed: 'İnd. Hızı',\n up_speed: 'Gön. Hızı',\n eta: 'TBS',\n ratio: 'Oran',\n added_on: 'Eklenme',\n\n settings: 'Ayarlar',\n logs: 'Günlükler',\n light: 'Aydınlık',\n dark: 'Karanlık',\n\n all: 'Tümü',\n category: 'Kategori |||| Kategoriler',\n uncategorized: 'Kategorilenmemiş',\n others: 'Diğerleri',\n sites: 'Siteler',\n files: 'Dosyalar',\n less: 'Daha Az',\n more: 'Daha Çok',\n feed: 'Bildirim',\n date: 'Tarih',\n query: 'Sorgu',\n plugin: 'Eklenti |||| Eklentiler',\n action: 'Eylem |||| Eylemler',\n search_engine: 'Arama motoru',\n usage: 'Kullanım',\n plugin_manager: 'Eklenti yöneticisi',\n\n title: {\n _: 'Başlık',\n add_torrents: 'Torrent ekle',\n delete_torrents: 'Torrent\\'leri sil',\n set_category: 'Kategtori ayarla',\n edit_tracker: 'İzleyicileri Düzenle',\n set_location: 'Yeri ayarla...',\n recheck_torrents: 'Torrent\\'leri yeniden denetle',\n },\n\n label: {\n switch_to_old_ui: 'Resmi Web Arayüzü\\'ne geç',\n create_subfolder: 'Alt klasör oluştur',\n start_torrent: 'Torrent\\'i başlat',\n skip_hash_check: 'Adresleme denetimini atla',\n in_sequential_order: 'Sıralı düzende indir',\n first_and_last_pieces_first: 'Önce ilk ve son parçaları indir',\n\n also_delete_files: 'Aynı zamanda sabit diskteki dosyaları da sil',\n\n auto_tmm: 'Otomatik Torrent Yönetimi',\n\n adding: 'Ekleniyor…',\n reloading: 'Yeniden yükleniyor…',\n deleting: 'Siliniyor…',\n moving: 'Taşınıyor…',\n moved: 'Taşındı.',\n next: 'İleri',\n back: 'Geri',\n confirm: 'Onayla',\n reannounced: 'Yeniden duyuruldu.',\n rechecking: 'Yeniden denetleniyor…',\n dht_nodes: '%{smart_count} düğüm |||| %{smart_count} düğüm',\n base_url: 'Ana makine URL',\n },\n\n msg: {\n item_is_required: '%{item} gerekli!',\n },\n\n dialog: {\n trigger_exit_qb: {\n title: 'qBittorrent\\'ten Çık',\n text: 'qBittorrent uygulamasından çıkmak istediğinize emin misiniz?',\n },\n add_torrents: {\n placeholder: 'Torrentleri yüklemek için\\nlinkleri buraya girin\\nveya sağdaki ataç butonuna tıklayıp seçim yapın.',\n hint: 'Her satıra sadece bir bağlantı',\n },\n delete_torrents: {\n msg: 'Seçilen torrent\\'leri aktarım listesinden silmek istediğinize emin misiniz?',\n also_delete_same_name_torrents: 'Aynı zamanda, aynı isimli bir torrenti de sil. |||| Aynı zamanda, aynı isimli %{smart_count} torrentleri de sil.',\n },\n set_category: {\n move: 'Seçilmiş torrentlerin kategorilerini, %{category} olarak değiştirmek istediğinize emin misiniz?',\n reset: 'Seçilmiş torrentlerin kategorilerini sıfırlamak istediğinize emin misiniz?',\n also_move_same_name_torrents: 'Aynı zamanda, aynı isimli bir torrenti de taşı. |||| Aynı zamanda, aynı isimli %{smart_count} torrentleri de taşı.',\n },\n switch_locale: {\n msg: 'Dili %{lang} olarak değiştirmek istediğinize emin misiniz?\\nBu eylem sayfayı yeniden yükleyecek.',\n },\n recheck_torrents: {\n msg: 'Torrentleri yeniden denetlemek istediğinize emin misiniz?',\n },\n rss: {\n add_feed: 'Bildirim ekle',\n feed_url: 'Bildirim URL\\'si',\n auto_refresh: 'Otomatik yenile',\n auto_download: 'Otomatik indir',\n delete_feeds: 'Seçilmiş bildirimlerin silmek istediğinize emin misiniz?',\n date_format: '%{date} (%{duration} önce)',\n },\n rss_rule: {\n add_rule: 'Yeni kural ekle',\n new_rule_name: 'Yeni kural adı',\n delete_rule: 'Seçilmiş kuralları silmek istediğinize emin misiniz?',\n title: 'RSS indirici',\n rule_settings: 'Kural ayarları',\n\n use_regex: 'Regex kullan',\n must_contain: 'İçermeli',\n must_not_contain: 'İçermemeli',\n episode_filter: 'Bölüm süzgeci',\n smart_episode: 'Akıllı bölüm süzgeci kullan',\n assign_category: 'Kategori ata',\n\n apply_to_feeds: 'Kuralı bildirimlere uygula',\n },\n },\n\n state: {\n _: 'Durum',\n\n downloading: 'İndiriliyor',\n seeding: 'Gönderiliyor',\n completed: 'Tamamlandı',\n resumed: 'Devam Edildi',\n paused: 'Duraklatıldı',\n active: 'Etkin',\n inactive: 'Etkin Değil',\n errored: 'Hata Oldu',\n },\n}\n","/* eslint-disable @typescript-eslint/camelcase */\nexport default {\n lang: '简体中文',\n auto: '自动',\n\n close: '关闭',\n no: '否',\n yes: '是',\n cancel: '取消',\n ok: '确定',\n\n start: '开始',\n stop: '停止',\n submit: '提交',\n edit: '编辑',\n delete: '删除',\n todo: '待办',\n resume: '恢复',\n pause: '暂停',\n force_start: '强制继续',\n info: '信息',\n reset: '重置',\n login: '登录',\n search: '搜索',\n refresh: '刷新',\n location: '位置',\n rename: '重命名',\n trigger_application_shutdown: '退出qBittorrent',\n reannounce: '重新通告',\n recheck: '重新检查',\n\n username: '用户名',\n password: '密码',\n\n name: '名称',\n size: '大小',\n progress: '进度',\n status: '状态',\n seeds: '做种',\n peers: '用户',\n dl_speed: '下载速度',\n up_speed: '上传速度',\n eta: '剩余时间',\n ratio: '比率',\n added_on: '添加时间',\n\n settings: '设置',\n\n logs: '日志',\n light: '亮色',\n dark: '暗色',\n\n all: '全部',\n category: '分类',\n uncategorized: '未分类',\n others: '其他',\n sites: '站点',\n files: '文件',\n less: '更少',\n more: '更多',\n feed: '订阅',\n date: '日期',\n query: '查询',\n plugin: '插件',\n action: '操作',\n search_engine: '搜索引擎',\n\n preferences: {\n change_applied: '配置已保存',\n downloads: '下载',\n adding_torrent: '添加 torrent 时',\n create_subfolder_enabled: '为多个文件的 Torrent 创建子目录',\n start_paused_enabled: '不要自动开始下载',\n auto_delete_mode: '完成后删除 .torrent 文件',\n preallocate_all: '为所有文件预分配磁盘空间',\n incomplete_files_ext: '为不完整的文件添加扩展名 .!qB',\n saving_management: '保存管理',\n auto_tmm_enabled: '默认 Torrent 管理模式',\n torrent_changed_tmm_enabled: '当 Torrent 分类修改时',\n save_path_changed_tmm_enabled: '当默认保存路径修改时',\n category_changed_tmm_enabled: '当分类保存路径修改时',\n auto_mode: '自动',\n manual_mode: '手动',\n switch_torrent_mode_to_manual: '切换受影响的 Torrent 至手动模式',\n move_affected_torrent: '重新定位受影响的 Torrent',\n save_path: '默认保存路径',\n temp_path: '保存未完成的 torrent 到',\n export_dir: '复制 .torrent 文件到',\n export_dir_fin: '复制下载完成的 .torrent 文件到',\n\n speed: '速度',\n global_rate_limits: '全局速度限制',\n alternate_rate_limits: '备用速度限制',\n alternate_schedule_enable_time: '设置备用速度限制的启用时间',\n apply_speed_limit: '设置速度限制',\n dl_limit: '下载 (KiB/s)',\n up_limit: '上传 (KiB/s)',\n zero_for_unlimited: '0 为无限制',\n schedule_from: '从',\n schedule_to: '到',\n scheduler_days: '时间',\n limit_utp_rate: '对 µTP 协议进行速度限制',\n limit_tcp_overhead: '对传送总开销进行速度限制',\n limit_lan_peers: '对本地网络用户进行速度限制',\n\n connection: '连接',\n bittorrent: 'BitTorrent',\n\n rss_processing_enabled: '启用自动刷新',\n rss_auto_downloading_enabled: '启用自动下载种子',\n rss_refresh_interval: '订阅刷新间隔',\n\n webui: 'Web UI',\n data_update_interval: '数据更新频率(ms)',\n webui_remote_control: 'Web 用户界面(远程控制)',\n ip_address: 'IP 地址',\n ip_port: '端口',\n enable_upnp: '使用我的路由器的 UPnP / NAT-PMP 功能来转发端口',\n authentication: '验证',\n web_ui_username: '用户名',\n web_ui_password: '密码',\n bypass_local_auth: '对本地主机上的客户端跳过身份验证',\n bypass_auth_subnet_whitelist: '对 IP 子网白名单中的客户端跳过身份验证',\n web_ui_session_timeout: '会话超时',\n web_ui_ban_duration: '禁止',\n web_ui_max_auth_fail_count: '连续失败后禁止客户端次数',\n web_ui_seconds: '秒',\n new_password: '更改当前的密码...',\n\n display_speed_in_title: '在网页标题显示当前速度',\n },\n\n title: {\n _: '标题',\n add_torrents: '添加种子',\n delete_torrents: '删除种子',\n set_category: '设置分类',\n edit_tracker: '编辑 Tracker',\n set_location: '修改文件位置',\n recheck_torrents: '重新检查种子',\n },\n\n label: {\n switch_to_old_ui: '切换到原版 UI',\n create_subfolder: '创建子文件夹',\n start_torrent: '开始种子',\n skip_hash_check: '跳过哈希校验',\n in_sequential_order: '按顺序下载',\n first_and_last_pieces_first: '先下载首尾文件块',\n\n also_delete_files: '同时删除文件',\n\n auto_tmm: '自动种子管理',\n\n adding: '添加…',\n reloading: '刷新中…',\n deleting: '删除中…',\n moving: '移动中…',\n moved: '已移动',\n next: '下一步',\n back: '返回',\n confirm: '确定',\n reannounced: '已重新通告',\n rechecking: '重新检查中…',\n dht_nodes: '%{smart_count} 节点',\n },\n\n msg: {\n 'item_is_required': '%{item}不能为空',\n },\n\n dialog: {\n trigger_exit_qb: {\n title: '退出 qBittorrent',\n text: '您确定要退出qBittorrent吗?',\n },\n add_torrents: {\n placeholder: '将种子拖到这里上传,\\n或者点击右边的附件图标来选择。',\n hint: '每行一个链接',\n },\n delete_torrents: {\n msg: '确定要删除选中的种子吗?',\n also_delete_same_name_torrents: '同时删除 %{smart_count} 个同名的种子',\n },\n set_category: {\n move: '确定要移动选中的种子到分类 %{category} 吗?',\n reset: '确定重置选中的种子的分类吗?',\n also_move_same_name_torrents: '同时移动 %{smart_count} 个同名的种子',\n },\n switch_locale: {\n msg: '确定要切换语言为 %{lang} 吗?\\n这将会刷新页面。',\n },\n recheck_torrents: {\n msg: '确定要重新检查选中的种子吗?',\n },\n rss: {\n add_feed: '添加订阅',\n feed_url: '订阅 URL',\n auto_refresh: '自动刷新',\n auto_download: '自动下载',\n delete_feeds: '确定要删除选中的订阅吗?',\n date_format: '%{date}(%{duration} 之前)',\n },\n rss_rule: {\n add_rule: '添加规则',\n new_rule_name: '新规则的名称',\n delete_rule: '确定要删除选中的规则吗?',\n title: 'RSS 自动下载',\n rule_settings: '规则设置',\n\n use_regex: '使用正则',\n must_contain: '必须包含',\n must_not_contain: '必须排除',\n episode_filter: '剧集过滤',\n smart_episode: '使用智能剧集过滤',\n assign_category: '分配分类',\n\n apply_to_feeds: '应用到订阅',\n },\n },\n\n category_state: {\n _: '状态',\n\n downloading: '下载',\n seeding: '做种',\n completed: '完成',\n resumed: '恢复',\n paused: '暂停',\n active: '活动',\n inactive: '空闲',\n errored: '错误',\n },\n\n torrent_state: {\n error: '错误',\n missingFiles: '文件丢失',\n uploading: '上传中',\n pausedUP: '完成',\n queuedUP: '排队上传',\n stalledUP: '上传',\n checkingUP: '上传校验',\n forcedUP: '强制上传',\n allocating: '分配空间',\n downloading: '下载中',\n metaDL: '获取信息',\n pausedDL: '暂停下载',\n queuedDL: '排队下载',\n stalledDL: '下载',\n checkingDL: '下载校验',\n forceDL: '强制下载',\n checkingResumeData: '快速校验',\n moving: '移动中',\n unknown: '未知',\n },\n}\n","/* eslint-disable @typescript-eslint/camelcase */\nexport default {\n lang: '繁體中文',\n auto: '自動',\n\n close: '關閉',\n no: '否',\n yes: '是',\n cancel: '取消',\n ok: '確定',\n\n start: '開始',\n stop: '停止',\n submit: '提交',\n edit: '編輯',\n delete: '刪除',\n todo: '待辦',\n resume: '恢復',\n pause: '暫停',\n force_start: '強制繼續',\n info: '資訊',\n reset: '重置',\n login: '登入',\n search: '搜索',\n refresh: '刷新',\n location: '位置',\n rename: '重新命名',\n trigger_application_shutdown: '退出qBittorrent',\n reannounce: '重新通告',\n recheck: '重新檢查',\n\n username: '使用者名稱',\n password: '密碼',\n\n name: '名稱',\n size: '大小',\n progress: '進度',\n status: '狀態',\n seeds: '做種',\n peers: '用戶',\n dl_speed: '下載速度',\n up_speed: '上傳速度',\n eta: '剩餘時間',\n ratio: '分享率',\n added_on: '添加時間',\n\n settings: '設定',\n\n logs: '日誌',\n light: '亮色',\n dark: '暗色',\n\n all: '全部',\n category: '分類',\n uncategorized: '未分類',\n others: '其他',\n sites: '站點',\n files: '文件',\n less: '更少',\n more: '更多',\n feed: '訂閱',\n date: '日期',\n query: '查詢',\n plugin: '插件',\n action: '操作',\n search_engine: '搜尋引擎',\n\n preferences: {\n change_applied: '設定已保存',\n downloads: '下載',\n adding_torrent: '添加 Torrent 時',\n create_subfolder_enabled: '為多個文件的 Torrent 創建子目錄',\n start_paused_enabled: '不要自動開始下載',\n auto_delete_mode: '完成後刪除 .torrent 文件',\n preallocate_all: '為所有文件預分配磁碟空間',\n incomplete_files_ext: '為不完整的文件添加副檔名 .!qB',\n saving_management: '保存管理',\n auto_tmm_enabled: '默認 Torrent 管理模式',\n torrent_changed_tmm_enabled: '當 Torrent 分類修改時',\n save_path_changed_tmm_enabled: '當默認保存路徑修改時',\n category_changed_tmm_enabled: '當分類保存路徑修改時',\n auto_mode: '自動',\n manual_mode: '手動',\n switch_torrent_mode_to_manual: '切換受影響的 Torrent 至手動模式',\n move_affected_torrent: '重新定位受影響的 Torrent',\n save_path: '默認保存路徑',\n temp_path: '保存未完成的 torrent 到',\n export_dir: '複製 .torrent 文件到',\n export_dir_fin: '複製下載完成的 .torrent 文件到',\n\n speed: '速度',\n global_rate_limits: '全局速度限制',\n alternate_rate_limits: '備用速度限制',\n alternate_schedule_enable_time: '設定備用速度限制的啟用時間',\n apply_speed_limit: '設定速度限制',\n dl_limit: '下載 (KiB/s)',\n up_limit: '上傳 (KiB/s)',\n zero_for_unlimited: '0 為無限制',\n schedule_from: '從',\n schedule_to: '到',\n scheduler_days: '時間',\n limit_utp_rate: '對 µTP 協議進行速度限制',\n limit_tcp_overhead: '對傳送總開銷進行速度限制',\n limit_lan_peers: '對本地網路用戶進行速度限制',\n\n connection: '連接',\n bittorrent: 'BitTorrent',\n\n webui: 'Web UI',\n data_update_interval: '數據更新頻率(ms)',\n webui_remote_control: 'Web 用戶界面(遠端控制)',\n ip_address: 'IP 地址',\n ip_port: '埠',\n enable_upnp: '使用我的路由器的 UPnP / NAT-PMP 功能來轉發埠',\n authentication: '驗證',\n web_ui_username: '使用者名稱',\n web_ui_password: '密碼',\n bypass_local_auth: '對本地主機上的用戶端跳過身份驗證',\n bypass_auth_subnet_whitelist: '對 IP 子網白名單中的用戶端跳過身份驗證',\n web_ui_session_timeout: '會話超時',\n web_ui_ban_duration: '禁止',\n web_ui_max_auth_fail_count: '連續失敗後禁止用戶端次數',\n web_ui_seconds: '秒',\n new_password: '更改當前的密碼...',\n\n display_speed_in_title: '在網頁標題顯示當前速度',\n },\n\n title: {\n _: '標題',\n add_torrents: '添加種子',\n delete_torrents: '刪除種子',\n set_category: '設定分類',\n edit_tracker: '編輯 Tracker',\n set_location: '修改檔案位置',\n recheck_torrents: '重新檢查種子',\n },\n\n label: {\n switch_to_old_ui: '切換到原版 UI',\n create_subfolder: '創建子文件夾',\n start_torrent: '開始種子',\n skip_hash_check: '跳過哈希校驗',\n in_sequential_order: '按順序下載',\n first_and_last_pieces_first: '先下載首尾文件塊',\n\n also_delete_files: '同時刪除文件',\n\n auto_tmm: '自動種子管理',\n\n adding: '添加…',\n reloading: '刷新中…',\n deleting: '刪除中…',\n moving: '移動中…',\n moved: '已移動',\n next: '下一步',\n back: '返回',\n confirm: '確定',\n reannounced: '已重新通告',\n rechecking: '重新檢查中…',\n dht_nodes: '%{smart_count} 節點',\n },\n\n msg: {\n 'item_is_required': '%{item}不能為空',\n },\n\n dialog: {\n trigger_exit_qb: {\n title: '退出 qBittorrent',\n text: '您確定要退出qBittorrent嗎?',\n },\n add_torrents: {\n placeholder: '將種子拖到這裡上傳,\\n或者點擊右邊的附件圖示來選擇。',\n hint: '每行一個連結',\n },\n delete_torrents: {\n msg: '確定要刪除選中的種子嗎?',\n also_delete_same_name_torrents: '同時刪除 %{smart_count} 個同名的種子',\n },\n set_category: {\n move: '確定要移動選中的種子到分類 %{category} 嗎?',\n reset: '確定重置選中的種子的分類嗎?',\n also_move_same_name_torrents: '同時移動 %{smart_count} 個同名的種子',\n },\n switch_locale: {\n msg: '確定要切換语言為 %{lang} 嗎?\\n這將會刷新頁面。',\n },\n recheck_torrents: {\n msg: '確定要重新檢查選中的種子嗎?',\n },\n rss: {\n add_feed: '添加訂閱',\n feed_url: '訂閱 URL',\n auto_refresh: '自動刷新',\n auto_download: '自動下載',\n delete_feeds: '確定要刪除選中的訂閱嗎?',\n date_format: '%{date}(%{duration} 之前)',\n },\n rss_rule: {\n add_rule: '添加規則',\n new_rule_name: '新規則的名稱',\n delete_rule: '確定要刪除選中的規則嗎?',\n title: 'RSS 自動下載',\n rule_settings: '規則設定',\n\n use_regex: '使用正則',\n must_contain: '必須包含',\n must_not_contain: '必須排除',\n episode_filter: '劇集過濾',\n smart_episode: '使用智慧劇集過濾',\n assign_category: '分配分類',\n\n apply_to_feeds: '應用到訂閱',\n },\n },\n\n category_state: {\n _: '狀態',\n\n downloading: '下載',\n seeding: '做種',\n completed: '完成',\n resumed: '恢復',\n paused: '暫停',\n active: '活動',\n inactive: '空閒',\n errored: '錯誤',\n },\n\n torrent_state: {\n error: '錯誤',\n missingFiles: '文件遺失',\n uploading: '上傳中',\n pausedUP: '完成',\n queuedUP: '排隊上傳',\n stalledUP: '上傳',\n checkingUP: '上傳校驗',\n forcedUP: '強制上傳',\n allocating: '分配空間',\n downloading: '下載中',\n metaDL: '獲取資訊',\n pausedDL: '暫停下載',\n queuedDL: '排隊下載',\n stalledDL: '下載',\n checkingDL: '下載校驗',\n forceDL: '強制下載',\n checkingResumeData: '快速校驗',\n moving: '移動中',\n unknown: '未知',\n },\n}\n","import { isPlainObject, merge } from 'lodash';\nimport Vue from 'vue';\nimport { Module } from 'vuex';\nimport { ConfigState, ConfigPayload } from './types';\n\nconst configKey = 'qb-config';\n\nexport interface Config {\n baseUrl: string | null;\n updateInterval: number;\n pageOptions: any;\n filter: {\n state: string | null;\n category: string | null;\n site: string | null;\n query: string | null;\n };\n locale: string | null;\n darkMode: string | null;\n displaySpeedInTitle: boolean | null;\n}\n\nconst defaultConfig = {\n baseUrl: null,\n updateInterval: 2000,\n pageOptions: {\n itemsPerPage: 50,\n },\n filter: {\n state: null,\n category: null,\n site: null,\n query: null,\n },\n locale: null,\n darkMode: null,\n displaySpeedInTitle: false,\n};\n\nfunction saveConfig(obj: any) {\n localStorage.setItem(configKey, JSON.stringify(obj));\n}\n\nexport function loadConfig(): Partial {\n const tmp = localStorage.getItem(configKey);\n if (!tmp) {\n return {};\n }\n\n return JSON.parse(tmp);\n}\n\nexport const configStore: Module = {\n state() {\n return {\n userConfig: loadConfig(),\n };\n },\n mutations: {\n updateConfig(state, payload: ConfigPayload) {\n const { key, value } = payload;\n if (isPlainObject(value)) {\n const tmp = merge({}, state.userConfig[key], value);\n Vue.set(state.userConfig, key, tmp);\n } else {\n Vue.set(state.userConfig, key, value);\n }\n\n saveConfig(state.userConfig);\n },\n },\n getters: {\n config(state) {\n return merge({}, defaultConfig, state.userConfig);\n },\n },\n};\n","import Polyglot from 'node-polyglot';\nimport langEn from './en';\nimport langRu from './ru';\nimport langTr from './tr';\nimport langZhCn from './zh-CN';\nimport langZhTw from './zh-TW';\n\nimport { loadConfig } from '@/store/config';\n\nexport const translations = {\n en: langEn,\n 'ru': langRu,\n 'tr': langTr,\n 'zh-CN': langZhCn,\n 'zh-TW': langZhTw,\n}\n\nexport type LocaleKey = keyof typeof translations | null;\n\nconst polyglot = new Polyglot({\n phrases: translations.en,\n});\n\nfunction matchLocale() {\n const { languages } = navigator;\n\n for (const code of languages) {\n if (code in translations) {\n return (code as LocaleKey)!;\n }\n }\n\n return 'en'\n}\n\nexport const defaultLocale = matchLocale()\n\nfunction updateLocale() {\n let locale = loadConfig()['locale'] as LocaleKey;\n\n if (!locale) {\n locale = defaultLocale;\n }\n\n if (locale === polyglot.locale()) {\n return;\n }\n\n polyglot.locale(locale);\n polyglot.extend(translations[locale]);\n}\n\nupdateLocale();\n\nexport default polyglot;\nexport const tr = polyglot.t.bind(polyglot);\nexport { updateLocale };\n","import Vue from 'vue';\nimport { tr } from '@/locale';\n\nclass I18n {\n static install() {\n Vue.prototype.$t = tr;\n }\n}\n\nVue.use(I18n);\n","import Vue from 'vue';\nimport VueCompositionApi from '@vue/composition-api';\n\nVue.use(VueCompositionApi);\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib';\nimport i18n from '@/locale';\n\nVue.use(Vuetify);\n\nlet locale = i18n.locale();\nswitch (locale) {\n case 'zh-CN':\n locale = 'zh-Hans';\n break;\n case 'zh-TW':\n locale = 'zh-Hant';\n break;\n default:\n locale = locale.split('-', 1)[0];\n break;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst { default: translation } = require('vuetify/src/locale/' + locale);\n\nexport default new Vuetify({\n lang: {\n locales: { [locale]: translation },\n current: locale,\n },\n icons: {\n iconfont: 'mdi',\n },\n});\n","export const enum StateType {\n Downloading = 'downloading',\n Seeding = 'seeding',\n Completed = 'completed',\n Resumed = 'resumed',\n Paused = 'pasued',\n Active = 'active',\n Inactive = 'inactive',\n Errored = 'errored',\n}\n\nexport const AllStateTypes = [\n StateType.Downloading,\n StateType.Seeding,\n StateType.Completed,\n StateType.Resumed,\n StateType.Paused,\n StateType.Active,\n StateType.Inactive,\n StateType.Errored,\n];\n","import { merge, cloneDeep } from 'lodash'\nimport { Module } from 'vuex';\nimport { DialogState } from './types';\n\nexport const dialogStore: Module = {\n state() {\n return {\n config: null,\n };\n },\n mutations: {\n showDialog(state, payload) {\n state.config = cloneDeep(payload);\n },\n closeDialog(state) {\n state.config = null;\n },\n },\n actions: {\n asyncShowDialog({ commit }, payload) {\n return new Promise((resolve) => {\n const options = merge({}, payload, {\n callback: resolve,\n })\n\n commit('showDialog', options);\n })\n },\n },\n};\n","import { cloneDeep, isString } from 'lodash';\nimport { Module } from 'vuex';\nimport { SnackBarState } from './types';\n\nexport const snackBarStore: Module = {\n state() {\n return {\n config: null,\n };\n },\n mutations: {\n showSnackBar(state, payload) {\n if (isString(payload)) {\n state.config = {\n text: payload,\n };\n } else {\n state.config = cloneDeep(payload);\n }\n },\n closeSnackBar(state) {\n state.config = null;\n },\n },\n};\n","import { Module } from 'vuex';\nimport { AddFormState } from './types';\n\nexport const addFormStore: Module = {\n state() {\n return {\n isOpen: false,\n downloadItem: null,\n };\n },\n getters: {\n isOpen(state) {\n return state.isOpen;\n },\n },\n mutations: {\n openAddForm(state) {\n state.isOpen = true;\n },\n closeAddForm(state) {\n state.isOpen = false;\n state.downloadItem = null;\n },\n addFormDownloadItem(state, payload) {\n const { downloadItem } = payload;\n state.downloadItem = downloadItem;\n },\n },\n};\n","import { StateType } from '@/consts';\nimport { Torrent } from '@/types';\n\nconst dlState = ['downloading', 'metaDL', 'stalledDL', 'checkingDL', 'pausedDL', 'queuedDL', 'forcedDL', 'allocating'];\nconst upState = ['uploading', 'stalledUP', 'checkingUP', 'queuedUP', 'forcedUP'];\nconst completeState = ['uploading', 'stalledUP', 'checkingUP', 'pausedUP', 'queuedUP', 'forcedUP'];\nconst activeState = ['metaDL', 'downloading', 'forcedDL', 'uploading', 'forcedUP', 'moving'];\nconst errorState = ['error', 'missingFiles'];\n\nexport function torrentIsState(type: StateType, state: string) {\n let result;\n switch (type) {\n case StateType.Downloading: {\n result = dlState.includes(state);\n break;\n }\n case StateType.Seeding: {\n result = upState.includes(state);\n break;\n }\n case StateType.Completed: {\n result = completeState.includes(state);\n break;\n }\n case StateType.Resumed:\n case StateType.Paused: {\n const paused = state.startsWith('paused');\n result = type === StateType.Paused ? paused : !paused;\n break;\n }\n case StateType.Active:\n case StateType.Inactive: {\n const active = activeState.includes(state);\n result = type === StateType.Active ? active : !active;\n break;\n }\n case StateType.Errored: {\n result = errorState.includes(state);\n break;\n }\n default:\n throw Error('Invalid type');\n }\n\n return result;\n}\n\nexport function timeout(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n/**\n * @deprecated renamed to `timeout`\n */\nexport const sleep = timeout;\n\nexport function codeToFlag(code: string) {\n const magicNumber = 0x1F1A5;\n\n // eslint-disable-next-line\n code = code.toUpperCase();\n const codePoints = [...code].map(c => magicNumber + c.charCodeAt(0));\n const char = String.fromCodePoint(...codePoints);\n const url = 'https://cdn.jsdelivr.net/npm/twemoji/2/svg/'\n + `${codePoints[0].toString(16)}-${codePoints[1].toString(16)}.svg`;\n\n return {\n char,\n url,\n };\n}\n\nexport const isWindows = navigator.userAgent.includes('Windows');\n\nexport function findSameNamedTorrents(allTorrents: Torrent[], torrents: Torrent[]) {\n const hashes = torrents.map(t => t.hash);\n const result = [];\n for (const t1 of torrents) {\n for (const t2 of allTorrents) {\n if (hashes.includes(t2.hash)) {\n continue;\n }\n\n if (t1.name !== t2.name) {\n continue;\n }\n\n result.push(t2);\n hashes.push(t2.hash);\n }\n }\n\n return result;\n}\n\nexport function typed(value: T): T {\n return value;\n}\n","/* eslint-disable @typescript-eslint/camelcase */\nimport Axios, { AxiosInstance, AxiosPromise, AxiosResponse } from 'axios';\nimport {\n RssNode,\n RssRule,\n SearchPlugin,\n ApiCategory,\n SearchTaskResponse,\n Preferences,\n MainData,\n} from '@/types'\n\nconst apiEndpoint = 'api/v2';\n\nclass Api {\n private axios: AxiosInstance;\n\n constructor() {\n this.axios = Axios.create({\n baseURL: apiEndpoint,\n withCredentials: true,\n });\n\n this.axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n\n private normalizeBaseUrl(baseUrl?: string) {\n if (!baseUrl) {\n return apiEndpoint;\n }\n\n if (!baseUrl.endsWith('/')) {\n baseUrl += '/';\n }\n\n return baseUrl + apiEndpoint;\n }\n\n public changeBaseUrl(baseUrl: string) {\n this.axios.defaults.baseURL = this.normalizeBaseUrl(baseUrl);\n }\n\n public getAppVersion() {\n return this.axios.get('/app/version');\n }\n\n public getApiVersion() {\n return this.axios.get('/app/webapiVersion');\n }\n\n public login(params: any, baseUrl?: string) {\n const data = new URLSearchParams(params);\n return this.axios.post('/auth/login', data, {\n validateStatus(status) {\n return status === 200 || status === 403;\n },\n baseURL: this.normalizeBaseUrl(baseUrl),\n }).then(Api.handleResponse);\n }\n\n public getGlobalTransferInfo() {\n return this.axios.get('/transfer/info');\n }\n\n public getAppPreferences(): AxiosPromise {\n return this.axios.get('/app/preferences');\n }\n\n public shutdownApplication() {\n return this.axios.post('/app/shutdown');\n }\n\n public getMainData(rid?: number): AxiosPromise {\n const params = {\n rid,\n };\n return this.axios.get('/sync/maindata', {\n params,\n });\n }\n\n public addTorrents(params: Record, torrents?: any) {\n let data: any;\n if (torrents) {\n const formData = new FormData();\n for (const [key, value] of Object.entries(params)) {\n // eslint-disable-next-line\n formData.append(key, value);\n }\n\n for (const torrent of torrents) {\n formData.append('torrents', torrent);\n }\n\n data = formData;\n } else {\n data = new URLSearchParams(params);\n }\n return this.axios.post('/torrents/add', data).then(Api.handleResponse);\n }\n\n public switchToOldUi() {\n const params = {\n alternative_webui_enabled: false,\n };\n\n return this.setPreferences(params)\n }\n\n public setPreferences(params: any) {\n const data = new URLSearchParams({\n json: JSON.stringify(params),\n });\n\n return this.axios.post('/app/setPreferences', data);\n }\n\n public setTorrentFilePriority(hash: string, idList: Array, priority: number) {\n const idListStr = idList.join('|');\n const params: any = {\n hash,\n id: idListStr,\n priority,\n }\n\n const data = new URLSearchParams(params);\n return this.axios.post(`/torrents/filePrio`, data).then(Api.handleResponse);\n }\n\n public getLogs(lastId?: number) {\n const params = {\n last_known_id: lastId,\n };\n\n return this.axios.get('/log/main', {\n params,\n }).then(Api.handleResponse);\n }\n\n public toggleSpeedLimitsMode() {\n return this.axios.post('/transfer/toggleSpeedLimitsMode');\n }\n\n public deleteTorrents(hashes: string[], deleteFiles: boolean) {\n return this.actionTorrents('delete', hashes, { deleteFiles });\n }\n\n public pauseTorrents(hashes: string[]) {\n return this.actionTorrents('pause', hashes);\n }\n\n public resumeTorrents(hashes: string[]) {\n return this.actionTorrents('resume', hashes);\n }\n\n public setForceStartTorrents(hashes: string[]) {\n return this.actionTorrents('setForceStart', hashes, { value: 'true' });\n }\n\n public toggleSequentialTorrents(hashes: string[]) {\n return this.actionTorrents('toggleSequentialDownload', hashes);\n }\n\n public reannounceTorrents(hashes: string[]) {\n return this.actionTorrents('reannounce', hashes);\n }\n\n public recheckTorrents(hashes: string[]) {\n return this.actionTorrents('recheck', hashes);\n }\n\n public setTorrentsCategory(hashes: string[], category: string) {\n return this.actionTorrents('setCategory', hashes, { category });\n }\n\n public getTorrentTracker(hash: string) {\n const params = {\n hash,\n };\n\n return this.axios.get('/torrents/trackers', {\n params,\n }).then(Api.handleResponse);\n }\n\n public getTorrentPeers(hash: string, rid?: number) {\n const params = {\n hash,\n rid,\n };\n\n return this.axios.get('/sync/torrentPeers', {\n params,\n }).then(Api.handleResponse);\n }\n\n public editTracker(hash: string, origUrl: string, newUrl: string) {\n return this.actionTorrents('editTracker', [hash], { origUrl, newUrl });\n }\n\n public setTorrentLocation(hashes: string[], location: string) {\n return this.actionTorrents('setLocation', hashes, { location });\n }\n\n public getTorrentProperties(hash: string) {\n const params = {\n hash,\n };\n\n return this.axios.get('/torrents/properties', {\n params,\n }).then(Api.handleResponse);\n }\n\n public getTorrentPieceStates(hash: string) {\n const params = {\n hash,\n };\n\n return this.axios.get('/torrents/pieceStates', {\n params,\n }).then(Api.handleResponse);\n }\n\n public getTorrentFiles(hash: string) {\n const params = {\n hash,\n };\n\n return this.axios.get('/torrents/files', {\n params,\n }).then(Api.handleResponse);\n }\n\n public getRssItems(): Promise {\n const params = {\n withData: true,\n }\n\n return this.axios.get('/rss/items', {\n params,\n }).then(Api.handleResponse);\n }\n\n public addRssFeed(url: string, path = '') {\n const params: any = {\n url,\n path,\n }\n\n const data = new URLSearchParams(params)\n return this.axios.post('/rss/addFeed', data).then(Api.handleResponse);\n }\n\n public removeRssFeed(path: string) {\n const params: any = {\n path,\n }\n\n const data = new URLSearchParams(params)\n return this.axios.post('/rss/removeItem', data).then(Api.handleResponse);\n }\n\n public refreshRssFeed(path: string) {\n const params: any = {\n itemPath: path,\n }\n\n const data = new URLSearchParams(params)\n return this.axios.post('/rss/refreshItem', data).then(Api.handleResponse);\n }\n\n public moveRssFeed(path: string, newPath: string) {\n const params: any = {\n itemPath: path,\n destPath: newPath,\n }\n\n const data = new URLSearchParams(params)\n return this.axios.post('/rss/moveItem', data).then(Api.handleResponse);\n }\n\n public getRssRules(): Promise<{ [key: string]: RssRule }> {\n return this.axios.get('/rss/rules').then(Api.handleResponse);\n }\n\n public setRssRule(name: string, def: any = {}) {\n const params: any = {\n ruleName: name,\n ruleDef: JSON.stringify(def),\n }\n\n const data = new URLSearchParams(params)\n return this.axios.post('/rss/setRule', data).then(Api.handleResponse);\n }\n\n public removeRssRule(name: string) {\n const params: any = {\n ruleName: name,\n }\n\n const data = new URLSearchParams(params)\n return this.axios.post('/rss/removeRule', data).then(Api.handleResponse);\n }\n\n // Search page\n\n public updateSearchPlugins(): Promise {\n return this.axios.post('/search/updatePlugins').then(Api.handleResponse);\n }\n\n public getSearchPlugins(): Promise {\n return this.axios.get('/search/plugins').then(Api.handleResponse);\n }\n\n /**\n * @see getSearchCategories\n * When there are no categories available/set\n * @returns a Promise<{}> instead of Promise<[]>.\n */\n public getSearchCategories(): Promise {\n return this.axios.get('/torrents/categories').then(Api.handleResponse);\n }\n\n public startSearch(pattern: string | null, pluginName: string | null, categoryName: string | null): Promise<{ id: number }> {\n const body = new URLSearchParams(\n {\n pattern: pattern || '',\n category: categoryName || 'all',\n plugins: pluginName || 'all',\n });\n return this.axios.post('/search/start', body).then(Api.handleResponse);\n }\n\n public stopSearch(id: number) {\n const body = new URLSearchParams({ id: id.toString() });\n return this.axios.post('/search/stop', body).then(Api.handleResponse)\n }\n\n public getSearchResults(id: number): Promise {\n\n return this.axios.get(`/search/results?id=${id}`).then(Api.handleResponse);\n }\n\n public enablePlugin(plugin: SearchPlugin, enable: boolean) {\n const body = new URLSearchParams({\n names: plugin.name,\n enable: JSON.stringify(enable),\n });\n\n return this.axios.post('/search/enablePlugin', body).then(Api.handleResponse);\n }\n\n private actionTorrents(action: string, hashes: string[], extra?: any) {\n const params: any = {\n hashes: hashes.join('|'),\n ...extra,\n };\n const data = new URLSearchParams(params);\n return this.axios.post(`/torrents/${action}`, data).then(Api.handleResponse);\n }\n\n private static handleResponse(resp: AxiosResponse) {\n return resp.data;\n }\n}\n\nconst api = new Api();\nexport default api;\n","import { Module } from \"vuex\";\nimport { SearchPlugin } from \"@/types\";\nimport { SearchEnginePage } from \"./types\";\nimport api from \"@/Api\";\n\nexport default {\n state: {\n searchPlugins: [],\n isPluginManagerOpen: false,\n },\n mutations: {\n setSearchPlugins(state, plugins: SearchPlugin[] | undefined | null) {\n state.searchPlugins = plugins;\n },\n openPluginManager(state) {\n state.isPluginManagerOpen = true;\n },\n closePluginManager(state) {\n state.isPluginManagerOpen = false;\n },\n },\n getters: {\n allSearchPlugins(state): SearchPlugin[] | undefined | null {\n return state.searchPlugins;\n },\n },\n actions: {\n fetchSearchPlugins({ dispatch }) {\n // semantic helper\n dispatch(\"getSearchPluginsRequest\");\n },\n async getSearchPluginsRequest({ dispatch }) {\n try {\n const searchPlugins = await api.getSearchPlugins();\n\n dispatch(\"getSearchPluginRequestSuccess\", searchPlugins);\n } catch {\n dispatch(\"getSearchPluginsRequestFailure\");\n }\n },\n getSearchPluginRequestSuccess({ commit }, searchPlugins) {\n commit(\"setSearchPlugins\", undefined);\n\n commit(\"setSearchPlugins\", searchPlugins);\n },\n getSearchPluginRequestFailure({ commit }) {\n commit(\"setSearchPlugins\", null);\n },\n togglePluginAvailability({ dispatch }, plugin) {\n dispatch(\"togglePluginEnableRequest\", plugin);\n },\n async togglePluginEnableRequest({ dispatch }, plugin: SearchPlugin) {\n try {\n await api.enablePlugin(plugin, !plugin.enabled); // switch plugin enable state\n\n dispatch(\"enablePluginRequestSuccess\", plugin);\n } catch {\n // Do nothing\n }\n },\n enablePluginRequestSuccess({ dispatch }) {\n dispatch('fetchSearchPlugins'); // refresh the plugins\n },\n async updatePluginsRequest({ dispatch }) {\n try {\n await api.updateSearchPlugins();\n\n dispatch(\"updatePluginsRequestSuccess\");\n } catch {\n dispatch(\"updatePluginsRequestFailure\");\n }\n },\n async updatePluginsRequestSuccess({ dispatch }) {\n await dispatch('getSearchPluginsRequest');\n },\n updatePluginsRequestFailure() {\n // Do nothing\n },\n },\n} as Module;\n","import Vue from 'vue';\nimport { isPlainObject } from 'lodash';\n\n// based on https://github.com/richardtallent/vue-object-merge/blob/main/index.js\n\nexport const stateMerge = function(state: any, value: any, propName?: string, ignoreNull?: boolean) {\n\tif (isPlainObject(state) && (propName == null || propName in state)) {\n\t\tconst o = propName == null ? state : state[propName];\n\t\tif (o != null && isPlainObject(value)) {\n\t\t\tfor (const prop in value) {\n\t\t\t\tstateMerge(o, value[prop], prop, ignoreNull);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\tif (!ignoreNull || value !== null) Vue.set(state, propName!, value);\n\n return state;\n};\n\nexport default stateMerge;","import { merge, map, groupBy, sortBy } from 'lodash';\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport { computed, Ref } from '@vue/composition-api';\n\nimport { configStore } from './config';\nimport { dialogStore } from './dialog';\nimport { snackBarStore } from './snackBar';\nimport { addFormStore } from './addForm';\nimport { AllStateTypes } from '../consts';\nimport { torrentIsState } from '../utils';\nimport searchEngineStore from './searchEngine';\nimport { RootState } from './types';\nimport stateMerge from '@/utils/vue-object-merge';\nimport api from '@/Api';\n\nVue.use(Vuex);\n\nconst store = new Vuex.Store({\n modules: {\n config: configStore,\n dialog: dialogStore,\n snackBar: snackBarStore,\n addForm: addFormStore,\n searchEngine: searchEngineStore,\n },\n state: {\n rid: 0,\n mainData: undefined,\n preferences: null,\n pasteUrl: null,\n needAuth: false,\n },\n mutations: {\n /* eslint-disable no-param-reassign */\n updateMainData(state, payload) {\n state.rid = payload.rid;\n delete payload.rid;\n if (payload.full_update) {\n delete payload.full_update;\n state.mainData = payload;\n } else {\n const mainData = state.mainData!;\n if (payload.torrents_removed) {\n for (const hash of payload.torrents_removed) {\n Vue.delete(mainData.torrents, hash);\n }\n delete payload.torrents_removed;\n }\n if (payload.categories_removed) {\n for (const key of payload.categories_removed) {\n Vue.delete(mainData, key);\n }\n delete payload.categories_removed;\n }\n stateMerge(mainData, payload);\n }\n },\n updatePreferences(state, payload) {\n state.preferences = payload;\n },\n setPasteUrl(state, payload) {\n const { url } = payload;\n state.pasteUrl = url;\n },\n updateNeedAuth(state, payload) {\n state.needAuth = payload;\n },\n /* eslint-enable no-param-reassign */\n },\n getters: {\n allPreferences(state) {\n return state.preferences;\n },\n savePath(state) {\n return state.preferences['save_path'];\n },\n isDataReady(state) {\n return !!state.mainData;\n },\n allTorrents(state) {\n if (!state.mainData) {\n return [];\n }\n\n return map(state.mainData.torrents, (value, key) => merge({}, value, { hash: key }));\n },\n allCategories(state) {\n if (!state.mainData) {\n return [];\n }\n\n const categories = map(state.mainData.categories,\n (value, key) => merge({}, value, { key }));\n return sortBy(categories, 'name');\n },\n torrentGroupByCategory(state, getters) {\n return groupBy(getters.allTorrents, torrent => torrent.category);\n },\n torrentGroupBySite(state, getters) {\n return groupBy(getters.allTorrents, (torrent) => {\n if (!torrent.tracker) {\n return '';\n }\n\n const url = new URL(torrent.tracker);\n return url.hostname;\n });\n },\n torrentGroupByState(__, getters) {\n const result: any = {};\n const put = (state: any, torrent: any) => {\n let list: any[] = result[state];\n if (!list) {\n list = [];\n result[state] = list;\n }\n list.push(torrent);\n };\n\n for (const torrent of getters.allTorrents) {\n for (const type of AllStateTypes) {\n if (torrentIsState(type, torrent.state)) {\n put(type, torrent);\n }\n }\n }\n\n return result;\n },\n },\n actions: {\n async updatePreferencesRequest({ dispatch }, preferences) {\n try {\n await api.setPreferences(preferences);\n //setPreference api return a empty response. Need to update preference by another request.\n const preferenceRes = await api.getAppPreferences();\n dispatch(\"updatePreferencesRequestSuccess\", preferenceRes.data);\n } catch {\n dispatch(\"updatePreferencesRequestFailure\");\n }\n },\n updatePreferencesRequestSuccess({ commit }, preferences) {\n commit(\"updatePreferences\", preferences);\n },\n updatePreferencesRequestFailure() {\n alert('Preferences failed to update');\n },\n },\n});\n\nexport default store;\n\nexport function useStore() {\n return store;\n}\n\nexport function useMutations(mutations: [string], namespace?: string) {\n const result: {[key: string]: () => any} = {};\n\n mutations.forEach((m) => {\n const method = namespace ? `${namespace}/${m}` : m;\n result[m] = (..._args) => store.commit(method, ..._args);\n });\n\n return result;\n}\n\nexport function useState(states: [string], namespace?: string) {\n const state = namespace ? (store.state as any)[namespace] : store.state;\n\n const result: {[key: string]: Readonly>>} = {};\n\n states.forEach((s) => {\n result[s] = computed(() => state[s]);\n });\n\n return result;\n}\n","import dayjs from 'dayjs';\nimport Vue from 'vue';\n\n/* eslint-disable no-param-reassign */\nexport function toPrecision(value: number, precision: number) {\n if (value >= (10 ** precision)) {\n return value.toString();\n } if (value >= 1) {\n return value.toPrecision(precision);\n }\n\n return value.toFixed(precision - 1);\n}\n\nexport function formatSize(value: number): string {\n const units = 'KMGTP';\n let index = -1;\n\n while (value >= 1000) {\n value /= 1024;\n index++;\n }\n\n const unit = index < 0 ? 'B' : `${units[index]}iB`;\n\n if (index < 0) {\n return `${value} ${unit}`;\n }\n return `${toPrecision(value, 3)} ${unit}`;\n}\n\nVue.filter('formatSize', formatSize);\nVue.filter('size', formatSize);\n\nexport interface DurationOptions {\n dayLimit?: number;\n maxUnitSize?: number;\n minUnit?: number;\n}\n\nexport function formatDuration(value: number, options?: DurationOptions) {\n const minute = 60;\n const hour = minute * 60;\n const day = hour * 24;\n const year = day * 365;\n\n const durations = [year, day, hour, minute, 1];\n const units = 'ydhms';\n\n let index = 0;\n let unitSize = 0;\n const parts = [];\n\n const defaultOptions: DurationOptions = {\n maxUnitSize: 2,\n dayLimit: 0,\n minUnit: 0,\n };\n\n const opt = options ? Object.assign(defaultOptions, options) : defaultOptions;\n\n if (opt.dayLimit && value >= opt.dayLimit * day) {\n return '∞';\n }\n\n while ((!opt.maxUnitSize || unitSize !== opt.maxUnitSize) && index !== durations.length) {\n const duration = durations[index];\n if (value < duration) {\n index++;\n continue;\n } else if (opt.minUnit && (durations.length - index) <= opt.minUnit) {\n break\n }\n\n const result = Math.floor(value / duration);\n parts.push(result + units[index]);\n\n // eslint-disable-next-line\n value %= duration;\n index++;\n unitSize++;\n }\n\n // if (unitSize < 2 && index !== durations.length) {\n // const result = Math.floor(value / durations[index]);\n // parts.push(result + units[index]);\n // }\n\n if (!parts.length) {\n return '0' + units[durations.length - 1 - opt.minUnit!];\n }\n\n return parts.join(' ');\n}\n\nVue.filter('formatDuration', formatDuration);\n\nexport function formatTimestamp(timestamp: number | null) {\n if (timestamp == null || timestamp === -1) {\n return '';\n }\n\n const m = dayjs.unix(timestamp);\n return m.format('YYYY-MM-DD HH:mm:ss');\n}\n\nVue.filter('formatTimestamp', formatTimestamp);\n\nexport function formatAsDuration(timestamp: number, options?: DurationOptions) {\n const duration = (Date.now() / 1000) - timestamp;\n return formatDuration(duration, options);\n}\n\nVue.filter('formatAsDuration', formatAsDuration);\n\nexport function formatProgress(progress: number) {\n // eslint-disable-next-line\n progress *= 100;\n return `${toPrecision(progress, 3)}%`;\n}\n\nVue.filter('progress', formatProgress);\n\nexport function parseDate(str: string) {\n if (!str) {\n return null\n }\n\n return Date.parse(str) / 1000\n}\n\nVue.filter('parseDate', parseDate)\n","import Vue from 'vue';\n\nVue.directive('class', (el, binding) => {\n const clsName = binding.arg!;\n el.classList.toggle(clsName, binding.value);\n});\n","let buildInfo = process.env.GIT_TAG\n\nif (!buildInfo) {\n buildInfo = 'dev'\n}\n\n// eslint-disable-next-line no-console\nconsole.log(`%c qb-web Build %c ${buildInfo} `, \n 'background-color: #555; color: #fff; border-radius: 3px 0 0 3px;',\n 'background-color: #1976d2; color: #fff; border-radius: 0 3px 3px 0;',\n)\n\nexport default buildInfo","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',{ref:\"app\"},[_c('v-navigation-drawer',{directives:[{name:\"class\",rawName:\"v-class:phone-layout\",value:(_vm.phoneLayout),expression:\"phoneLayout\",arg:\"phone-layout\"}],attrs:{\"app\":\"\",\"clipped\":_vm.$vuetify.breakpoint.lgAndUp,\"width\":\"300\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('DrawerFooter')]},proxy:true}]),model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('drawer',{model:{value:(_vm.drawerOptions),callback:function ($$v) {_vm.drawerOptions=$$v},expression:\"drawerOptions\"}})],1),_c('main-toolbar',{model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}}),_c('v-main',[_c('torrents')],1),(_vm.preferences)?_c('add-form'):_vm._e(),(_vm.needAuth)?_c('login-form'):_vm._e(),(_vm.drawerOptions.showLogs)?_c('logs-dialog',{model:{value:(_vm.drawerOptions.showLogs),callback:function ($$v) {_vm.$set(_vm.drawerOptions, \"showLogs\", $$v)},expression:\"drawerOptions.showLogs\"}}):_vm._e(),(_vm.drawerOptions.showRss)?_c('RssDialog',{on:{\"download-torrent\":function($event){return _vm.setPasteUrl({url: $event})}},model:{value:(_vm.drawerOptions.showRss),callback:function ($$v) {_vm.$set(_vm.drawerOptions, \"showRss\", $$v)},expression:\"drawerOptions.showRss\"}}):_vm._e(),(_vm.drawerOptions.showSearch)?_c('SearchDialog',{model:{value:(_vm.drawerOptions.showSearch),callback:function ($$v) {_vm.$set(_vm.drawerOptions, \"showSearch\", $$v)},expression:\"drawerOptions.showSearch\"}}):_vm._e(),(_vm.drawerOptions.showSettings)?_c('SettingsDialog',{model:{value:(_vm.drawerOptions.showSettings),callback:function ($$v) {_vm.$set(_vm.drawerOptions, \"showSettings\", $$v)},expression:\"drawerOptions.showSettings\"}}):_vm._e(),(_vm.$vuetify.breakpoint.smAndUp)?_c('v-footer',{staticClass:\"elevation-4\",attrs:{\"app\":\"\",\"padless\":\"\"}},[_c('app-footer')],1):_vm._e(),_c('GlobalDialog'),_c('GlobalSnackBar')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import debug from 'debug';\n\nconst log = debug('app:protocolHandler');\n\nfunction registerProtocolHandler() {\n if (!('registerProtocolHandler' in navigator)) {\n return;\n }\n\n const baseUrl = location.origin + location.pathname;\n\n try {\n navigator.registerProtocolHandler('magnet', baseUrl + '#download=%s', document.title);\n } catch (e) {\n log('Register protocol handler failed.', e);\n }\n}\n\nfunction checkDownloadUrl() {\n if (!location.hash) {\n return null\n }\n\n const params = new URLSearchParams(location.hash.substring(1));\n const url = params.get('download')\n if (!url) {\n return null;\n }\n\n params.delete('download');\n location.hash = '#' + params.toString()\n return url\n}\n\nexport { registerProtocolHandler, checkDownloadUrl };\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',_vm._b({model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},'v-dialog',_vm.config ? _vm.config.dialog : null,false),[(!!_vm.config)?_c('v-card',[_c('v-card-title',{domProps:{\"textContent\":_vm._s(_vm.config.title)}}),_c('v-card-text',{staticClass:\"content\",class:{'is-input': _vm.isInput}},[(_vm.isInput)?_c('v-text-field',{attrs:{\"label\":_vm.config.text,\"rules\":_vm.config.rules,\"placeholder\":_vm.config.placeholder,\"hide-details\":!_vm.config.rules,\"autofocus\":\"\"},model:{value:(_vm.input),callback:function ($$v) {_vm.input=$$v},expression:\"input\"}}):[_vm._v(\" \"+_vm._s(_vm.config.text)+\" \")]],2),_c('v-card-actions',[_c('v-spacer'),_vm._l((_vm.btns),function(btn,index){return _c('v-btn',{key:index,attrs:{\"color\":\"info\",\"text\":\"\"},on:{\"click\":function($event){return _vm.clickBtn(btn[1])}}},[_vm._v(\" \"+_vm._s(btn[0])+\" \")])})],2)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { MainData, SearchPlugin } from '@/types';\nimport { Config } from './config';\n\nexport interface RootState {\n rid: number;\n mainData?: MainData;\n preferences: any;\n pasteUrl: string | null;\n needAuth: boolean;\n}\n\nexport interface SearchEnginePage {\n searchPlugins: SearchPlugin[] | null | undefined;\n isPluginManagerOpen: boolean;\n}\n\nexport interface AddFormState {\n isOpen: boolean;\n downloadItem: {\n title: string;\n url: string;\n } | null;\n}\n\nexport interface TorrentFilter {\n state: string;\n category: string;\n site: string;\n query: string;\n}\n\nexport interface ConfigState {\n userConfig: any;\n}\n\nexport interface ConfigPayload {\n key: keyof Config;\n value: any;\n}\n\nexport enum DialogType {\n Alert,\n YesNo,\n OkCancel,\n Input,\n Custom,\n}\n\nexport interface DialogConfig {\n dialog?: any;\n\n title?: string;\n text: string;\n callback?: CallableFunction;\n type?: DialogType;\n buttons?: any;\n\n rules?: CallableFunction[];\n placeholder?: string;\n value?: string;\n}\n\nexport interface DialogState {\n config: DialogConfig | null;\n}\n\nexport interface SnackBarConfig {\n text: string;\n btnText?: string;\n callback?: CallableFunction;\n}\n\nexport interface SnackBarState {\n config: SnackBarConfig | null;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { computed, ref, watch } from '@vue/composition-api';\n\nimport { tr } from '@/locale';\nimport { DialogType, DialogConfig } from '@/store/types';\nimport { useMutations, useState } from '@/store';\n\nconst BUTTONS = {\n [DialogType.Alert]: [\n [tr('close'), false],\n ],\n [DialogType.YesNo]: [\n [tr('no'), false],\n [tr('yes'), true],\n ],\n [DialogType.OkCancel]: [\n [tr('cancel'), false],\n [tr('ok'), true],\n ],\n [DialogType.Input]: [\n [tr('cancel'), false],\n [tr('ok'), true],\n ],\n};\n\nconst DefaultDialogWidth = '25%'\n\nexport default {\n setup(_: any, ctx: any) {\n const mutations = useMutations(['closeDialog']);\n const { config: userConfig } = useState(['config'], 'dialog');\n const config = computed(() => {\n if (!userConfig.value) {\n return null;\n }\n const o = Object.assign({dialog: {}}, userConfig.value) as DialogConfig;\n\n if (!('width' in o.dialog)) {\n o.dialog.width = ctx.root.$vuetify.breakpoint.smAndDown ? null : DefaultDialogWidth\n }\n\n return o\n });\n const value = ref();\n const input = ref();\n\n const isInput = computed(() => {\n const type = config.value!.type\n return type === DialogType.Input\n })\n\n async function clickBtn(btnValue: any) {\n const cb = config.value!.callback;\n\n if (cb) {\n if (isInput.value) {\n cb(btnValue ? input.value : undefined)\n } else {\n cb(btnValue);\n }\n }\n\n mutations.closeDialog();\n }\n\n watch(config, (v) => {\n value.value = !!v;\n if (!v) {\n input.value = undefined\n } else {\n input.value = v.value\n }\n });\n watch(value, (v) => {\n if (v || !config.value) {\n return\n }\n\n clickBtn(null);\n });\n\n const btns = computed(() => {\n const c = config.value;\n const dialogType = (c && c.type) ? c.type : DialogType.Alert;\n\n if (dialogType === DialogType.Custom) {\n return c!.buttons;\n }\n\n return BUTTONS[dialogType];\n });\n\n return {\n config,\n value,\n input,\n isInput,\n btns,\n clickBtn,\n };\n },\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GlobalDialog.vue?vue&type=template&id=299a15fc&scoped=true&\"\nimport script from \"./GlobalDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./GlobalDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GlobalDialog.vue?vue&type=style&index=0&id=299a15fc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"299a15fc\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-snackbar',_vm._b({attrs:{\"value\":_vm.config},on:{\"input\":_vm.changed}},'v-snackbar',_vm.config,false),[(_vm.config)?[_vm._v(\" \"+_vm._s(_vm.config.text)+\" \"),(_vm.config.callback)?_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"info\"},on:{\"click\":_vm.clickBtn}},[_vm._v(\" \"+_vm._s(_vm.config.btnText ? _vm.config.btnText : _vm.$t('close'))+\" \")]):_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalSnackBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalSnackBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GlobalSnackBar.vue?vue&type=template&id=047403fe&\"\nimport script from \"./GlobalSnackBar.vue?vue&type=script&lang=js&\"\nexport * from \"./GlobalSnackBar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\ninstallComponents(component, {VBtn,VSnackbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"add-form\"},[_c('v-btn',{staticClass:\"btn-add\",class:{'with-footer': _vm.$vuetify.breakpoint.smAndUp},attrs:{\"fab\":\"\",\"bottom\":\"\",\"color\":\"primary\",\"fixed\":\"\",\"right\":\"\",\"small\":\"\"},on:{\"click\":_vm.openAddForm}},[_c('v-icon',[_vm._v(\"mdi-link-plus\")])],1),_c('v-dialog',{attrs:{\"eager\":\"\",\"persistent\":\"\",\"scrollable\":\"\",\"width\":_vm.phoneLayout ? '100%' : '40em'},model:{value:(_vm.state.isOpen),callback:function ($$v) {_vm.$set(_vm.state, \"isOpen\", $$v)},expression:\"state.isOpen\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-link-plus\")]),_c('span',[_vm._v(_vm._s(_vm.state.downloadItem && _vm.state.downloadItem.title || _vm.$t('title.add_torrents')))])],1),_c('v-card-text',{staticClass:\"pb-0\"},[_c('v-form',{ref:\"form\",model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-container',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{ref:\"fileZone\"},[_c('v-file-input',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.files.length),expression:\"files.length\"}],ref:\"file\",attrs:{\"multiple\":\"\",\"chips\":\"\",\"outlined\":\"\",\"label\":_vm.$t('files')},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}}),_c('v-textarea',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.files.length),expression:\"!files.length\"}],attrs:{\"label\":\"URL\",\"hint\":_vm.$t('dialog.add_torrents.hint'),\"placeholder\":_vm.$t('dialog.add_torrents.placeholder'),\"prepend-icon\":\"mdi-link\",\"append-outer-icon\":\"mdi-attachment\",\"rules\":[function (v) { return (!!_vm.files.length || !!v || _vm.$t('msg.item_is_required', { item: 'URL' })); }],\"rows\":_vm.$vuetify.breakpoint.xsOnly ? 1 : 3,\"required\":\"\",\"autofocus\":!_vm.phoneLayout,\"value\":_vm.params.urls,\"readonly\":_vm.state.downloadItem !== null},on:{\"input\":function($event){return _vm.setParams('urls', $event)},\"click:append-outer\":_vm.selectFiles}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[(_vm.showMore)?[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"prepend-icon\":\"mdi-file-tree\",\"label\":_vm.$t('label.create_subfolder'),\"input-value\":true},on:{\"change\":function($event){return _vm.setParams('root_path', $event)}}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"prepend-icon\":\"mdi-car-shift-pattern\",\"label\":_vm.$t('label.auto_tmm'),\"input-value\":_vm.params.autoTMM},on:{\"change\":function($event){return _vm.setParams('autoTMM', $event)}}})],1)]:_vm._e(),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-combobox',{attrs:{\"label\":_vm.$t('category', 1),\"prepend-icon\":\"mdi-folder\",\"clearable\":\"\",\"hide-no-data\":\"\",\"items\":_vm.categoryItems,\"value\":_vm.params.category,\"return-object\":false},on:{\"input\":function($event){return _vm.setParams('category', $event)}}})],1),(!_vm.phoneLayout || _vm.showMore)?_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('location'),\"prepend-icon\":\"mdi-folder-marker\",\"clearable\":\"\",\"disabled\":_vm.params.autoTMM,\"placeholder\":_vm.defaultPath,\"value\":_vm.params.autoTMM ? null : _vm.userParams.savepath},on:{\"change\":function($event){return _vm.setParams('savepath', $event)}}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('label.start_torrent'),\"prepend-icon\":\"mdi-play-pause\",\"input-value\":!_vm.params.paused},on:{\"change\":function($event){return _vm.setParams('paused', !$event)}}})],1),(!_vm.phoneLayout || _vm.showMore)?_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"prepend-icon\":\"mdi-progress-check\",\"label\":_vm.$t('label.skip_hash_check'),\"input-value\":_vm.params.skip_checking},on:{\"change\":function($event){return _vm.setParams('skip_checking', $event)}}})],1):_vm._e(),(_vm.showMore)?[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('label.in_sequential_order'),\"prepend-icon\":\"mdi-sort-descending\",\"ipnut-value\":_vm.params.sequentialDownload},on:{\"change\":function($event){return _vm.setParams('sequentialDownload', $event)}}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"prepend-icon\":\"mdi-ray-start-end\",\"label\":_vm.$t('label.first_and_last_pieces_first'),\"input-value\":_vm.params.firstLastPiecePrio},on:{\"change\":function($event){return _vm.setParams('firstLastPiecePrio', $event)}}})],1)]:_vm._e()],2)],1)],1),_c('v-alert',{attrs:{\"type\":\"warning\",\"value\":_vm.error},domProps:{\"textContent\":_vm._s(_vm.error)}})],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\"},domProps:{\"textContent\":_vm._s(_vm.showMore ? _vm.$t('less') : _vm.$t('more'))},on:{\"click\":function($event){_vm.showMore = !_vm.showMore}}}),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.closeAddForm}},[_vm._v(\" \"+_vm._s(_vm.$t('cancel'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\",\"disabled\":!_vm.valid,\"loading\":_vm.submitting},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('submit'))+\" \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { isNil } from 'lodash';\nimport Vue from 'vue';\nimport { mapState, mapGetters, mapMutations } from 'vuex';\n\nimport api from '../Api';\nimport Component from 'vue-class-component';\nimport { Watch } from 'vue-property-decorator';\nimport { Preferences, Category } from '../types';\nimport { AddFormState } from '@/store/types';\n\n/* eslint-disable @typescript-eslint/camelcase */\nconst defaultParams = {\n urls: '',\n category: '',\n paused: false,\n savepath: '',\n skip_checking: false,\n root_path: false,\n sequentialDownload: false,\n firstLastPiecePrio: false,\n autoTMM: false,\n};\n/* eslint-enable @typescript-eslint/camelcase */\n\n@Component({\n computed: {\n ...mapState({\n pasteUrl: 'pasteUrl',\n prefs: 'preferences',\n state: 'addForm',\n }),\n ...mapGetters({\n allCategories: 'allCategories',\n }),\n },\n methods: {\n ...mapMutations([\n 'closeAddForm',\n 'openAddForm',\n ]),\n },\n})\nexport default class AddForm extends Vue {\n valid = false\n files: FileList | [] = []\n defaultParams = defaultParams\n userParams = {}\n error: string | null = null\n submitting = false\n showMore = false\n\n state!: AddFormState;\n pasteUrl!: string | null\n prefs!: Preferences\n allCategories!: Category[]\n\n $refs!: {\n form: any;\n file: any;\n fileZone: HTMLElement;\n }\n\n openAddForm!: () => void;\n closeAddForm!: () => void;\n\n get params() {\n return Object.assign({}, defaultParams, this.userParams);\n }\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n get categoryItems() {\n return this.allCategories.map(c => ({ text: c.name, value: c.key }));\n }\n get defaultPath() {\n if (this.params.autoTMM && this.params.category) {\n const category = this.allCategories.find(c => {\n return c.key === this.params.category;\n });\n \n if (!category) {\n return this.params.category;\n }\n\n return category.savePath || category.name\n }\n\n return this.defaultParams.savepath;\n }\n\n created() {\n defaultParams.paused = this.prefs.start_paused_enabled;\n /* eslint-disable-next-line @typescript-eslint/camelcase */\n defaultParams.root_path = this.prefs.create_subfolder_enabled;\n defaultParams.savepath = this.prefs.save_path;\n defaultParams.autoTMM = this.prefs.auto_tmm_enabled;\n }\n\n mounted() {\n this.$refs.fileZone.addEventListener('drop', this.onDrop, true);\n }\n\n @Watch('state', {deep: true})\n onStateUpdate(state: AddFormState) {\n if (state.downloadItem) {\n this.setParams('urls', state.downloadItem.url);\n }\n }\n\n beforeDestroy() {\n this.$refs.fileZone.removeEventListener('drop', this.onDrop, true);\n }\n\n setParams(key: keyof typeof defaultParams, value: any) {\n if (isNil(value) || value === defaultParams[key]) {\n Vue.delete(this.userParams, key);\n } else {\n Vue.set(this.userParams, key, value);\n }\n }\n\n async submit() {\n if (this.submitting) {\n return;\n }\n\n this.submitting = true;\n this.error = null;\n let files;\n if (this.files.length) {\n ({ files } = this);\n Vue.delete(this.userParams, 'urls');\n } else {\n files = null;\n }\n\n try {\n const resp = await api.addTorrents(this.userParams, files);\n\n if (resp !== 'Ok.') {\n this.error = resp;\n }\n } catch (e) {\n this.error = e.message;\n }\n\n this.submitting = false;\n\n if (this.error) {\n return;\n }\n\n this.closeAddForm();\n\n Vue.delete(this.userParams, 'urls');\n this.files = [];\n\n this.$refs.form.resetValidation();\n }\n\n selectFiles() {\n const input = this.$refs.file.$el.querySelector('input[type=file]');\n input.click();\n }\n\n onDrop(e: DragEvent) {\n const transfer = e.dataTransfer!;\n const { files } = transfer;\n if (!files.length) {\n return;\n }\n\n e.preventDefault();\n this.files = files;\n }\n\n @Watch('pasteUrl', {immediate: true})\n onPasteUrl(v: string) {\n if (!v) {\n return;\n }\n\n if (!this.state.isOpen) {\n Vue.set(this.userParams, 'urls', v);\n this.openAddForm();\n }\n }\n\n @Watch('files')\n onFilesChange() {\n this.$refs.form.validate();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddForm.vue?vue&type=template&id=f8274abe&scoped=true&\"\nimport script from \"./AddForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AddForm.vue?vue&type=style&index=0&id=f8274abe&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f8274abe\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCardTitle,VCheckbox,VCol,VCombobox,VContainer,VDialog,VFileInput,VForm,VIcon,VRow,VSpacer,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-list',{staticClass:\"drawer\",attrs:{\"dense\":\"\",\"expand\":\"\"}},[_vm._l((_vm.items),function(item){return [(item.children)?_c('v-list-group',{key:item.title,attrs:{\"prepend-icon\":item.model ? item.icon : item['icon-alt'],\"append-icon\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.title)+\" \")])],1)]},proxy:true}],null,true),model:{value:(item.model),callback:function ($$v) {_vm.$set(item, \"model\", $$v)},expression:\"item.model\"}},_vm._l((item.children),function(child,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){item.click ? item.click(child.value) : null}}},[(child.icon)?_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(child.icon))])],1):_vm._e(),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(child.title)+\" \")])],1)],1)}),1):(item.filterGroups)?_vm._l((item.filterGroups),function(child,i){return _c('filter-group',{key:i,attrs:{\"group\":child}})}):_c('v-list-item',{key:item.title,on:{\"click\":function($event){item.click ? item.click() : null}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.title)+\" \")])],1)],1)]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-list-group',{staticClass:\"filter-group\",attrs:{\"prepend-icon\":_vm.model ? _vm.group.icon : _vm.group['icon-alt']},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-content',[_c('v-list-item-title',{directives:[{name:\"class\",rawName:\"v-class:primary--text\",value:(_vm.selected !== null),expression:\"selected !== null\",arg:\"primary--text\"}]},[_vm._v(\" \"+_vm._s(_vm.group.title)+\" \")])],1)]},proxy:true}]),model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}},_vm._l((_vm.group.children),function(child,i){return _c('v-list-item',{directives:[{name:\"class\",rawName:\"v-class:v-list-item--active\",value:(_vm.selected === child.key),expression:\"selected === child.key\",arg:\"v-list-item--active\"}],key:i,on:{\"click\":function($event){$event.stopPropagation();return _vm.select(child.key)}}},[_c('v-list-item-icon',[(_vm.isFontIcon(child.icon))?_c('v-icon',[_vm._v(\" \"+_vm._s(child.icon)+\" \")]):_c('div',[_c('v-img',{attrs:{\"src\":child.icon,\"width\":\"20px\",\"height\":\"20px\"}})],1)],1),_c('v-list-item-content',[_c('v-list-item-title',[(child.append)?[_c('div',{staticClass:\"d-flex\"},[_vm._v(\" \"+_vm._s(child.title)+\" \"),_c('v-spacer'),_vm._v(\" \"+_vm._s(child.append)+\" \")],1)]:[_vm._v(\" \"+_vm._s(child.title)+\" \")]],2)],1)],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport Component from 'vue-class-component';\nimport { Prop } from 'vue-property-decorator';\nimport { Group } from '../types'\n\n@Component\nexport default class FilterGroup extends Vue {\n @Prop()\n readonly group!: Group\n\n model = this.group.model\n selected: string | null = null\n\n created() {\n const s = this.$store.getters.config.filter[this.group.select];\n if (this.group.children.some(child => child.key === s)) {\n this.selected = s;\n } else {\n this.select(null);\n }\n if (this.model == null) {\n this.model = this.selected != null;\n }\n }\n\n select(key: string | null) {\n this.selected = this.selected === key ? null : key;\n this.$store.commit('updateConfig', {\n key: 'filter',\n value: {\n [this.group.select]: this.selected,\n },\n });\n }\n\n isFontIcon(icon: string) {\n return icon.startsWith('mdi-');\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterGroup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FilterGroup.vue?vue&type=template&id=26ced1bd&scoped=true&\"\nimport script from \"./FilterGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilterGroup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilterGroup.vue?vue&type=style&index=0&id=26ced1bd&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26ced1bd\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListGroup } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VIcon,VImg,VListGroup,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VSpacer})\n","function getSiteIcon(name: string): string {\n return require(`@/assets/site_icons/${name}.png`);\n}\n\nexport interface SiteInfo {\n name: string;\n icon: string;\n}\n\nconst sites: {[key: string]: SiteInfo} = {\n 'tracker.m-team.cc': {\n name: 'M-Team',\n icon: getSiteIcon('m-team'),\n },\n 'tracker.keepfrds.com': {\n name: 'FRDS',\n icon: getSiteIcon('keepfrds'),\n },\n 'springsunday.net': {\n name: 'SSD',\n icon: getSiteIcon('springsunday'),\n },\n 'hdchina.org': {\n name: 'HDChina',\n icon: getSiteIcon('hdchina'),\n },\n 'chdbits.co': {\n name: 'CHDBits',\n icon: getSiteIcon('chdbits'),\n },\n 'hdhome.org': {\n name: 'HDHome',\n icon: getSiteIcon('hdhome'),\n },\n 'u2.dmhy.org': {\n name: 'U2',\n icon: getSiteIcon('u2'),\n },\n};\n\nexport default sites;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { sortBy, sumBy, defaultTo, isUndefined } from 'lodash';\nimport Vue from 'vue';\nimport { mapGetters } from 'vuex';\n\nimport { tr } from '@/locale';\nimport { Torrent, Category } from '@/types';\nimport FilterGroup from './drawer/FilterGroup.vue';\nimport api from '../Api';\nimport { formatSize } from '@/filters';\nimport { StateType } from '@/consts';\nimport SiteMap from '@/sites'\nimport Component from 'vue-class-component';\nimport { Prop, Emit } from 'vue-property-decorator';\n\nconst stateList = [\n {\n title: tr('category_state.downloading'),\n state: StateType.Downloading,\n icon: 'download',\n },\n {\n title: tr('category_state.seeding'),\n state: StateType.Seeding,\n icon: 'upload',\n },\n {\n title: tr('category_state.completed'),\n state: StateType.Completed,\n icon: 'check',\n },\n {\n title: tr('category_state.resumed'),\n state: StateType.Resumed,\n icon: 'play',\n },\n {\n title: tr('category_state.paused'),\n state: StateType.Paused,\n icon: 'pause',\n },\n {\n title: tr('category_state.active'),\n state: StateType.Active,\n icon: 'filter',\n },\n {\n title: tr('category_state.inactive'),\n state: StateType.Inactive,\n icon: 'filter-outline',\n },\n {\n title: tr('category_state.errored'),\n state: StateType.Errored,\n icon: 'alert',\n },\n];\n\ninterface MenuItem {\n icon: string;\n 'icon-alt'?: string;\n title: string;\n model?: boolean | null;\n select?: string;\n click?: () => void;\n children?: MenuChildrenItem[];\n}\n\ninterface MenuChildrenItem extends MenuItem {\n key: string | null;\n append?: string;\n}\n\n@Component({\n components: {\n FilterGroup,\n },\n computed: {\n ...mapGetters([\n 'isDataReady',\n 'allTorrents',\n 'allCategories',\n 'torrentGroupByCategory',\n 'torrentGroupBySite',\n 'torrentGroupByState',\n ]),\n },\n})\nexport default class Drawer extends Vue {\n @Prop()\n readonly value: any\n\n endItems: MenuItem[] = [\n { icon: 'mdi-delta', title: tr('logs'), click: () => this.updateOptions('showLogs', true) },\n { icon: 'mdi-card-search-outline', title: tr('search'), click: () => this.updateOptions('showSearch', true) },\n ]\n\n pcItems: MenuItem[] = [\n { icon: 'mdi-rss-box', title: 'RSS', click: () => this.updateOptions('showRss', true) },\n { icon: 'mdi-cog-box', title: tr('settings'), click: () => this.updateOptions('showSettings', true) },\n { icon: 'mdi-history', title: tr('label.switch_to_old_ui'), click: this.switchUi },\n ]\n\n isDataReady!: boolean\n allTorrents!: Torrent[]\n allCategories!: Category[]\n torrentGroupByCategory!: {[category: string]: Torrent[]}\n torrentGroupBySite!: {[site: string]: Torrent[]}\n torrentGroupByState!: {[state: string]: Torrent[]}\n\n created() {\n if (this.phoneLayout) {\n return;\n }\n\n this.endItems = this.endItems.concat(this.pcItems)\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.smAndDown;\n }\n\n buildStateGroup(): MenuChildrenItem[] {\n return stateList.map((item) => {\n let value = this.torrentGroupByState[item.state];\n if (isUndefined(value)) {\n value = [];\n }\n const size = formatSize(sumBy(value, 'size'));\n const title = `${item.title} (${value.length})`;\n const append = `[${size}]`;\n return {\n icon: `mdi-${item.icon}`, title, key: item.state, append,\n };\n })\n }\n\n buildCategoryGroup(): MenuChildrenItem[] {\n return [{\n key: '',\n name: tr('uncategorized'),\n }].concat(this.allCategories).map((category) => {\n let value = this.torrentGroupByCategory[category.key];\n if (isUndefined(value)) {\n value = [];\n }\n const size = formatSize(sumBy(value, 'size'));\n const title = `${category.name} (${value.length})`;\n const append = `[${size}]`;\n return {\n icon: 'mdi-folder', title, key: category.key, append,\n };\n });\n }\n\n buildSiteGroup(): MenuChildrenItem[] {\n return sortBy(Object.entries(this.torrentGroupBySite).map(([key, value]) => {\n const size = formatSize(sumBy(value, 'size'));\n const site = SiteMap[key];\n const title = `${site ? site.name : (key || tr('others'))} (${value.length})`;\n const icon = defaultTo(site ? site.icon : null, 'mdi-server');\n const append = `[${size}]`;\n return {\n icon, title, key, append,\n };\n }), 'title');\n }\n\n get items() {\n if (!this.isDataReady) {\n return this.endItems\n }\n\n const filterGroups: MenuItem[] = [];\n const totalSize = formatSize(sumBy(this.allTorrents, 'size'));\n\n filterGroups.push({\n icon: 'mdi-menu-up',\n 'icon-alt': 'mdi-menu-down',\n title: tr('category_state._'),\n model: null,\n select: 'state',\n children: [\n {\n icon: 'mdi-filter-remove', title: `${tr('all')} (${this.allTorrents.length})`, key: null, append: `[${totalSize}]`,\n },\n ...this.buildStateGroup(),\n ],\n });\n\n filterGroups.push({\n icon: 'mdi-menu-up',\n 'icon-alt': 'mdi-menu-down',\n title: tr('category', 0),\n model: null,\n select: 'category',\n children: [\n {\n icon: 'mdi-folder', title: `${tr('all')} (${this.allTorrents.length})`, key: null, append: `[${totalSize}]`,\n },\n ...this.buildCategoryGroup(),\n ],\n });\n\n filterGroups.push({\n icon: 'mdi-menu-up',\n 'icon-alt': 'mdi-menu-down',\n title: tr('sites'),\n model: null,\n select: 'site',\n children: [\n {\n icon: 'mdi-server', title: `${tr('all')} (${this.allTorrents.length})`, key: null, append: `[${totalSize}]`,\n },\n ...this.buildSiteGroup(),\n ],\n });\n\n return ([] as MenuItem[]).concat([{filterGroups}] as any, this.endItems);\n }\n\n async switchUi() {\n await api.switchToOldUi();\n\n window.location.reload(true);\n }\n\n @Emit('input')\n updateOptions(key: string, value: any) {\n return Object.assign({}, this.value, { [key]: value })\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drawer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Drawer.vue?vue&type=template&id=38676a60&scoped=true&\"\nimport script from \"./Drawer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Drawer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Drawer.vue?vue&type=style&index=0&id=38676a60&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38676a60\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListGroup } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VIcon,VList,VListGroup,VListItem,VListItemContent,VListItemIcon,VListItemTitle})\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":true,\"persistent\":\"\",\"width\":\"25em\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.$t('login')))])],1),_c('v-card-text',[_c('v-form',{ref:\"form\",model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('div',_vm._b({staticClass:\"pa-0\",on:{\"!keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit.apply(null, arguments)}}},'div',( _obj = {}, _obj[(\"grid-list-\" + (_vm.$vuetify.breakpoint.name))] = true, _obj ),false),[_c('v-text-field',{attrs:{\"prepend-icon\":\"mdi-network\",\"label\":_vm.$t('label.base_url'),\"autofocus\":\"\",\"required\":\"\"},model:{value:(_vm.baseUrl),callback:function ($$v) {_vm.baseUrl=$$v},expression:\"baseUrl\"}}),_c('v-text-field',{attrs:{\"prepend-icon\":\"mdi-account\",\"label\":_vm.$t('username'),\"autofocus\":\"\",\"required\":\"\"},model:{value:(_vm.params.username),callback:function ($$v) {_vm.$set(_vm.params, \"username\", $$v)},expression:\"params.username\"}}),_c('v-text-field',{attrs:{\"prepend-icon\":\"mdi-lock\",\"append-icon\":_vm.showPassword ? 'mdi-eye' : 'mdi-eye-off',\"label\":_vm.$t('password'),\"type\":_vm.showPassword ? 'text' : 'password',\"required\":\"\"},on:{\"click:append\":function($event){_vm.showPassword = !_vm.showPassword}},model:{value:(_vm.params.password),callback:function ($$v) {_vm.$set(_vm.params, \"password\", $$v)},expression:\"params.password\"}})],1)]),_c('v-alert',{attrs:{\"type\":\"warning\",\"value\":_vm.loginError},domProps:{\"textContent\":_vm._s(_vm.loginError)}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":!_vm.valid || _vm.submitting,\"loading\":_vm.submitting},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('submit'))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, reactive, toRefs } from '@vue/composition-api';\n\nimport api from '@/Api';\nimport { useStore } from '@/store';\n\nexport default defineComponent({\n setup(_, { emit }) {\n const store = useStore();\n const data = reactive({\n valid: false,\n submitting: false,\n showPassword: false,\n loginError: null,\n baseUrl: store.getters.config.baseUrl || location.href,\n params: {\n username: '',\n password: '',\n },\n form: null,\n });\n\n const submit = async () => {\n if (data.submitting) {\n return;\n }\n\n if (!(data.form as any).validate()) {\n return;\n }\n\n data.submitting = true;\n try {\n const resp = await api.login(data.params, data.baseUrl);\n\n if (resp === 'Ok.') {\n api.changeBaseUrl(data.baseUrl);\n\n store.commit('updateConfig', {\n key: 'baseUrl',\n value: data.baseUrl,\n });\n store.commit('updateNeedAuth', false);\n\n emit('input', false);\n return;\n }\n\n data.loginError = resp;\n } catch (e) {\n data.loginError = e.message;\n }\n\n data.submitting = false;\n }\n\n return {\n ...toRefs(data),\n submit,\n }\n },\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=007a016c&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VDialog,VForm,VSpacer,VTextField,VToolbar,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app-bar',{staticClass:\"app-bar pl-2\",class:{'phone-layout': _vm.phoneLayout},attrs:{\"clipped-left\":_vm.$vuetify.breakpoint.lgAndUp,\"scroll-off-screen\":!_vm.$vuetify.breakpoint.lgAndUp,\"app\":\"\"}},[_c('v-app-bar-nav-icon',{on:{\"click\":_vm.toggle}}),_c('v-toolbar-title',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.searchBarExpanded),expression:\"!searchBarExpanded\"}],staticClass:\"bar-title\"},[_c('img',{staticClass:\"icon\",attrs:{\"src\":\"img/icons/favicon-192x192.png\"}}),_c('span',{staticClass:\"title hidden-sm-and-down ml-3 mr-5\"},[_vm._v(\" qBittorrent Web UI \")])]),(!_vm.phoneLayout)?_c('v-spacer'):_vm._e(),_c('v-text-field',{staticClass:\"search-bar\",attrs:{\"flat\":!_vm.focusedSearch,\"solo\":_vm.focusedSearch,\"solo-inverted\":!_vm.focusedSearch,\"hide-details\":\"\",\"clearable\":!_vm.phoneLayout || _vm.searchBarExpanded,\"prepend-inner-icon\":\"mdi-magnify\",\"label\":_vm.$t('search'),\"value\":_vm.searchQuery},on:{\"focus\":function($event){_vm.focusedSearch = true},\"blur\":function($event){_vm.focusedSearch = false},\"input\":_vm.onSearch}}),(!_vm.phoneLayout)?_c('v-spacer'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { throttle } from 'lodash';\nimport Vue from 'vue';\nimport { mapMutations } from 'vuex';\n\nimport Component from 'vue-class-component';\nimport { Prop, Emit } from 'vue-property-decorator';\nimport { ConfigPayload } from '@/store/types';\n\n@Component({\n methods: {\n ...mapMutations([\n 'updateConfig',\n ]),\n },\n})\nexport default class MainToolbar extends Vue {\n @Prop(Boolean)\n readonly value!: boolean\n\n updateConfig!: (_: ConfigPayload) => void\n\n focusedSearch = false\n\n get searchQuery() {\n return this.$store.getters.config.filter.query;\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.smAndDown;\n }\n\n get searchBarExpanded() {\n return this.phoneLayout && (this.focusedSearch || !!this.searchQuery);\n }\n\n @Emit('input')\n toggle() {\n return !this.value;\n }\n\n onSearch = throttle(async (v: string) => {\n // avoid input lag\n await this.$nextTick();\n this.updateConfig({\n key: 'filter',\n value: {\n query: v,\n },\n });\n }, 400)\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainToolbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MainToolbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MainToolbar.vue?vue&type=template&id=d37eb7d4&scoped=true&\"\nimport script from \"./MainToolbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainToolbar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MainToolbar.vue?vue&type=style&index=0&id=d37eb7d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d37eb7d4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VAppBarNavIcon,VSpacer,VTextField,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"class\",rawName:\"v-class:phone-layout\",value:(_vm.$vuetify.breakpoint.xsOnly),expression:\"$vuetify.breakpoint.xsOnly\",arg:\"phone-layout\"}],staticClass:\"torrents\"},[_c('div',{staticClass:\"toolbar-wrapper\"},[_c('div',{staticClass:\"toolbar\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('delete'),\"disabled\":!_vm.hasSelected},on:{\"click\":_vm.confirmDelete}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1),_c('v-divider',{attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('resume'),\"disabled\":!_vm.hasSelected},on:{\"click\":_vm.resumeTorrents}},[_c('v-icon',[_vm._v(\"mdi-play\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('pause'),\"disabled\":!_vm.hasSelected},on:{\"click\":_vm.pauseTorrents}},[_c('v-icon',[_vm._v(\"mdi-pause\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('force_start'),\"disabled\":!_vm.hasSelected},on:{\"click\":_vm.forceStartTorrents}},[_c('v-icon',[_vm._v(\"mdi-play-speed\")])],1),_c('v-divider',{attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('info'),\"disabled\":!_vm.hasSelected || _vm.selectedRows.length > 5},on:{\"click\":function($event){return _vm.showInfo()}}},[_c('v-icon',[_vm._v(\"mdi-alert-circle\")])],1),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"icon\":\"\",\"title\":_vm.$t('title.set_category'),\"disabled\":!_vm.hasSelected}},on),[_c('v-icon',[_vm._v(\"mdi-folder-star\")])],1)]}}])},[_c('v-list',{staticClass:\"category-actions\"},[_c('v-subheader',{on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\" \"+_vm._s(_vm.$t('title.set_category'))+\" \")]),_vm._l((_vm.allCategories),function(item,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){return _vm.setTorrentsCategory(item.key)}}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(\"mdi-folder\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.name)+\" \")])],1)],1)}),_c('v-divider'),_c('v-list-item',{on:{\"click\":function($event){return _vm.setTorrentsCategory('')}}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(\"mdi-folder-remove\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('reset'))+\" \")])],1)],1)],2)],1),(!_vm.$vuetify.breakpoint.xsOnly)?[_c('v-divider',{attrs:{\"vertical\":\"\",\"inset\":\"\"}}),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('toggle_sequential'),\"disabled\":!_vm.hasSelected},on:{\"click\":_vm.toggleSequentialTorrents}},[_c('v-icon',[_vm._v(\"mdi-transit-connection-variant\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('title.set_location'),\"disabled\":_vm.selectedRows.length === 0},on:{\"click\":_vm.setTorrentLocation}},[_c('v-icon',[_vm._v(\"mdi-folder-marker\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('reannounce')},on:{\"click\":_vm.reannounceTorrents}},[_c('v-icon',[_vm._v(\"mdi-bullhorn\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('title.edit_tracker')},on:{\"click\":_vm.editTracker}},[_c('v-icon',[_vm._v(\"mdi-server\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('recheck'),\"disabled\":_vm.selectedRows.length === 0},on:{\"click\":_vm.recheckTorrents}},[_c('v-icon',[_vm._v(\"mdi-backup-restore\")])],1)]:_vm._e()],2),_c('v-divider')],1),_c('div',{staticClass:\"table-wrapper\"},[_c('v-data-table',{directives:[{name:\"class\",rawName:\"v-class:hide-headers\",value:(_vm.hasSelected),expression:\"hasSelected\",arg:\"hide-headers\"}],attrs:{\"headers\":_vm.headers,\"items\":_vm.torrents,\"item-key\":\"hash\",\"fixed-header\":\"\",\"show-select\":\"\",\"options\":_vm.pageOptions,\"loading\":_vm.loading,\"dense\":\"\",\"footer-props\":_vm.footerProps,\"mobile-breakpoint\":0},on:{\"update:options\":function($event){_vm.pageOptions=$event}},scopedSlots:_vm._u([{key:\"item\",fn:function(row){return [_c('tr',{key:row.item.hash,on:{\"dblclick\":function($event){$event.preventDefault();return _vm.showInfo(row.item)}}},[_c('td',[_c('v-checkbox',{attrs:{\"value\":row.isSelected,\"hide-details\":\"\"},on:{\"change\":row.select}})],1),_c('td',{staticClass:\"icon-label\",attrs:{\"title\":row.item.name}},[_c('v-icon',{attrs:{\"color\":_vm._f(\"stateColor\")(row.item.state)}},[_vm._v(\" \"+_vm._s(_vm._f(\"stateIcon\")(row.item.state))+\" \")]),_c('span',{staticClass:\"torrent-title\"},[_vm._v(\" \"+_vm._s(row.item.name)+\" \")])],1),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(row.item.size)))]),_c('td',[_c('v-progress-linear',{staticClass:\"text-center ma-0\",attrs:{\"height\":\"1.4em\",\"value\":row.item.progress * 100,\"color\":_vm._f(\"stateColor\")(row.item.state,true, row.item.seq_dl)}},[_c('span',{class:_vm.getProgressColorClass(row.item.progress)},[_vm._v(\" \"+_vm._s(_vm._f(\"progress\")(row.item.progress))+\" \")])])],1),_c('td',[_vm._v(_vm._s(_vm.$t('torrent_state.' + row.item.state)))]),_c('td',[_vm._v(_vm._s(row.item.num_seeds)+\"/\"+_vm._s(row.item.num_complete))]),_c('td',[_vm._v(_vm._s(row.item.num_leechs)+\"/\"+_vm._s(row.item.num_incomplete))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatNetworkSpeed\")(row.item.dlspeed)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatNetworkSpeed\")(row.item.upspeed)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatDuration\")(row.item.eta,{dayLimit: 100})))]),_c('td',[_vm._v(_vm._s(row.item.ratio.toFixed(2)))]),_c('td',[_c('span',{attrs:{\"title\":_vm._f(\"formatTimestamp\")(row.item.added_on)}},[_vm._v(\" \"+_vm._s(_vm._f(\"formatAsDuration\")(row.item.added_on))+\" ago \")])])])]}}]),model:{value:(_vm.selectedRows),callback:function ($$v) {_vm.selectedRows=$$v},expression:\"selectedRows\"}})],1),(_vm.toDelete.length)?_c('confirm-delete-dialog',{model:{value:(_vm.toDelete),callback:function ($$v) {_vm.toDelete=$$v},expression:\"toDelete\"}}):_vm._e(),(_vm.toSetCategory.length)?_c('confirm-set-category-dialog',{attrs:{\"category\":_vm.categoryToSet},model:{value:(_vm.toSetCategory),callback:function ($$v) {_vm.toSetCategory=$$v},expression:\"toSetCategory\"}}):_vm._e(),(_vm.toEditTracker.length)?_c('edit-tracker-dialog',{model:{value:(_vm.toEditTracker),callback:function ($$v) {_vm.toEditTracker=$$v},expression:\"toEditTracker\"}}):_vm._e(),(_vm.toShowInfo.length)?_c('info-dialog',{attrs:{\"tab\":_vm.infoTab},on:{\"update:tab\":function($event){_vm.infoTab=$event}},model:{value:(_vm.toShowInfo),callback:function ($$v) {_vm.toShowInfo=$$v},expression:\"toShowInfo\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":true,\"fullscreen\":_vm.phoneLayout,\"width\":\"40em\"},on:{\"input\":_vm.closeDialog}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-delete\")]),_c('span',[_vm._v(_vm._s(_vm.$t('title.delete_torrents')))])],1),_c('v-card-text',{staticClass:\"pb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('dialog.delete_torrents.msg'))+\" \"),_c('ol',{staticClass:\"torrents pt-6\"},_vm._l((_vm.torrents),function(row,i){return _c('li',{key:i},[_vm._v(\" \"+_vm._s(row.name)+\" \")])}),0),_c('v-checkbox',{attrs:{\"prepend-icon\":\"mdi-file-cancel\",\"label\":_vm.$t('label.also_delete_files')},model:{value:(_vm.deleteFiles),callback:function ($$v) {_vm.deleteFiles=$$v},expression:\"deleteFiles\"}}),(_vm.sameNamedTorrents.length > 0)?_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"prepend-icon\":\"mdi-file-multiple\",\"label\":_vm.$t('dialog.delete_torrents.also_delete_same_name_torrents', _vm.sameNamedTorrents.length)},model:{value:(_vm.deleteSameNamed),callback:function ($$v) {_vm.deleteSameNamed=$$v},expression:\"deleteSameNamed\"}}):_vm._e()],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.closeDialog}},[_vm._v(\" \"+_vm._s(_vm.$t('cancel'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"warning\",\"disabled\":_vm.submitting,\"loading\":_vm.submitting},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('delete'))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport { mapGetters } from 'vuex';\n\nimport api from '@/Api';\nimport { findSameNamedTorrents } from '@/utils';\nimport { Torrent } from '../../types';\nimport Component from 'vue-class-component';\nimport { Emit, Prop } from 'vue-property-decorator';\n\n@Component({\n computed: {\n ...mapGetters(['allTorrents']),\n },\n})\nexport default class ConfirmDeleteDialog extends Vue {\n @Prop(Array)\n readonly value!: Torrent[]\n\n deleteFiles = false\n deleteSameNamed = false\n moveSameNamed = false\n submitting = false\n torrents: Torrent[] = []\n sameNamedTorrents: Torrent[] = []\n\n allTorrents!: Torrent[]\n\n created() {\n this.torrents = this.value;\n this.sameNamedTorrents = findSameNamedTorrents(this.allTorrents, this.torrents);\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n\n @Emit('input')\n closeDialog() {\n return []\n }\n\n async submit() {\n if (this.submitting) {\n return;\n }\n\n this.submitting = true;\n\n let torrentsToDelete;\n if (this.deleteSameNamed) {\n torrentsToDelete = this.torrents.concat(this.sameNamedTorrents);\n } else {\n torrentsToDelete = this.torrents;\n }\n const hashes = torrentsToDelete.map((t: any) => t.hash);\n await api.deleteTorrents(hashes, this.deleteFiles);\n\n this.closeDialog();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmDeleteDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmDeleteDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConfirmDeleteDialog.vue?vue&type=template&id=a01eaf30&scoped=true&\"\nimport script from \"./ConfirmDeleteDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConfirmDeleteDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ConfirmDeleteDialog.vue?vue&type=style&index=0&id=a01eaf30&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a01eaf30\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCheckbox,VDialog,VIcon,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":true,\"fullscreen\":_vm.phoneLayout,\"width\":\"40em\"},on:{\"input\":_vm.closeDialog}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-folder\")]),_c('span',[_vm._v(_vm._s(_vm.$t('title.set_category')))])],1),_c('v-card-text',{staticClass:\"pb-0\"},[(_vm.category)?[_vm._v(\" \"+_vm._s(_vm.$t('dialog.set_category.move', { category: _vm.category }))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t('dialog.set_category.reset'))+\" \")],_c('ol',{staticClass:\"torrents pt-6\"},_vm._l((_vm.torrents),function(row,i){return _c('li',{key:i},[_vm._v(\" \"+_vm._s(row.name)+\" \")])}),0),(_vm.sameNamedTorrents.length > 0)?_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"prepend-icon\":\"mdi-file-multiple\",\"label\":_vm.$t('dialog.set_category.also_move_same_name_torrents', _vm.sameNamedTorrents.length)},model:{value:(_vm.moveSameNamed),callback:function ($$v) {_vm.moveSameNamed=$$v},expression:\"moveSameNamed\"}}):_vm._e()],2),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.closeDialog}},[_vm._v(\" \"+_vm._s(_vm.$t('cancel'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"warning\",\"disabled\":_vm.submitting,\"loading\":_vm.submitting},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('submit'))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport { mapGetters } from 'vuex';\n\nimport api from '@/Api';\nimport { findSameNamedTorrents } from '@/utils';\nimport Component from 'vue-class-component';\nimport { Prop, Emit } from 'vue-property-decorator';\nimport { Torrent } from '../../types';\n\n@Component({\n computed: {\n ...mapGetters(['allTorrents']),\n },\n})\nexport default class ConfirmSetCategoryDialog extends Vue {\n @Prop(Array)\n readonly value!: Torrent[]\n\n @Prop(String)\n readonly category!: string\n\n moveSameNamed = false\n submitting = false\n torrents: Torrent[] = []\n sameNamedTorrents: Torrent[] = []\n\n allTorrents!: Torrent[]\n\n created() {\n this.torrents = this.value;\n this.sameNamedTorrents = findSameNamedTorrents(this.allTorrents, this.torrents);\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n\n @Emit('input')\n closeDialog() {\n return []\n }\n\n async submit() {\n if (this.submitting) {\n return;\n }\n\n this.submitting = true;\n\n let torrentsToMove;\n if (this.moveSameNamed) {\n torrentsToMove = this.torrents.concat(this.sameNamedTorrents);\n } else {\n torrentsToMove = this.torrents;\n }\n const hashes = torrentsToMove.map((t: any) => t.hash);\n await api.setTorrentsCategory(hashes, this.category);\n\n this.closeDialog();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmSetCategoryDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmSetCategoryDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConfirmSetCategoryDialog.vue?vue&type=template&id=dfcb35ec&scoped=true&\"\nimport script from \"./ConfirmSetCategoryDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConfirmSetCategoryDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ConfirmSetCategoryDialog.vue?vue&type=style&index=0&id=dfcb35ec&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dfcb35ec\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCheckbox,VDialog,VIcon,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":true,\"fullscreen\":_vm.phoneLayout,\"persistent\":\"\",\"width\":\"40em\"},on:{\"input\":_vm.closeDialog}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-server\")]),_c('span',[_vm._v(\"Edit tracker\")])],1),_c('v-card-text',{staticClass:\"pa-0\"},[_c('v-stepper',{model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:\"step\"}},[_c('v-stepper-header',[_c('v-stepper-step',{attrs:{\"complete\":_vm.step > 1,\"step\":\"1\"}},[_vm._v(\" Search \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"complete\":_vm.step > 2,\"step\":\"2\"}},[_vm._v(\" Preview \")]),_c('v-divider'),_c('v-stepper-step',{attrs:{\"complete\":_vm.step > 3,\"step\":\"3\"}},[_vm._v(\" Result \")])],1),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":\"1\"}},[_c('v-form',{model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"label\":\"Search\",\"rules\":[function (v) { return !!v || 'Required'; }],\"placeholder\":\"Regex format\",\"required\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('v-text-field',{attrs:{\"label\":\"Replace\"},model:{value:(_vm.replace),callback:function ($$v) {_vm.replace=$$v},expression:\"replace\"}})],1)],1),_c('v-stepper-content',{attrs:{\"step\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.toEdit.length)+\" torrent(s) to update. \"),_c('ol',{staticClass:\"torrents pt-6\"},_vm._l((_vm.toEdit),function(row,i){return _c('li',{key:i},[_vm._v(\" \"+_vm._s(row.name)+\" \"),_c('br'),_vm._v(\" \"+_vm._s(row.origUrl)+\" \"),_c('br'),_vm._v(\" \"+_vm._s(row.newUrl)+\" \")])}),0)]),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[(_vm.submitting && _vm.currentIndex != _vm.toEdit.length)?_c('v-progress-linear',{attrs:{\"value\":_vm.currentIndex / _vm.toEdit.length * 100}}):[_vm._v(\" \"+_vm._s(_vm.currentIndex)+\" torrent(s) updated. \")]],2)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),(_vm.step < 3)?_c('v-btn',{attrs:{\"text\":\"\"},domProps:{\"textContent\":_vm._s(_vm.step == 1 ? _vm.$t('cancel') : _vm.$t('back'))},on:{\"click\":_vm.back}},[_vm._v(\" Back \")]):_vm._e(),_c('v-btn',{attrs:{\"color\":\"warning\",\"disabled\":!_vm.canNext,\"loading\":_vm.submitting},domProps:{\"textContent\":_vm._s([null, _vm.$t('next'), _vm.$t('confirm'), _vm.$t('close')][_vm.step])},on:{\"click\":_vm.foward}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { chain } from 'lodash';\nimport Vue from 'vue';\nimport { mapGetters } from 'vuex';\n\nimport api from '@/Api';\nimport Component from 'vue-class-component';\nimport { Prop, Emit } from 'vue-property-decorator';\nimport { Torrent } from '../../types';\n\n\n@Component({\n computed: {\n ...mapGetters(['allTorrents']),\n },\n})\nexport default class EditTrackerDialog extends Vue {\n @Prop(Array)\n readonly value!: Torrent[]\n\n step = 1\n valid = false\n submitting = false\n torrents: Torrent[] = []\n search = ''\n replace = ''\n toEdit: any[] = []\n currentIndex = 0\n\n allTorrents!: Torrent[]\n\n created() {\n this.torrents = this.value\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n get canNext() {\n if (this.step === 1 && this.valid) {\n return true;\n }\n if (this.step === 2 && this.toEdit.length > 0) {\n return true;\n }\n if (this.step === 3 && !this.submitting) {\n return true;\n }\n return false;\n }\n\n @Emit('input')\n closeDialog() {\n return []\n }\n\n calcResults(): any[] {\n const regex = new RegExp(this.search);\n\n return chain(this.torrents)\n .map(({ tracker, hash, name }) => {\n const newUrl = tracker.replace(regex, this.replace);\n return newUrl === tracker ? null : {\n hash,\n name,\n origUrl: tracker,\n newUrl,\n };\n }).compact().value();\n }\n\n back() {\n if (this.step === 1) {\n this.closeDialog();\n return;\n }\n this.step--;\n }\n\n async foward() {\n if (this.step === 1) {\n this.toEdit = this.calcResults();\n this.step++;\n return;\n }\n if (this.step === 3) {\n this.closeDialog();\n return;\n }\n\n if (this.submitting) {\n return;\n }\n\n this.submitting = true;\n this.step++;\n\n this.currentIndex = 0;\n\n for (const item of this.toEdit) {\n await api.editTracker(item.hash, item.origUrl, item.newUrl);\n this.currentIndex++;\n }\n\n this.submitting = false;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditTrackerDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditTrackerDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditTrackerDialog.vue?vue&type=template&id=24122721&scoped=true&\"\nimport script from \"./EditTrackerDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditTrackerDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EditTrackerDialog.vue?vue&type=style&index=0&id=24122721&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24122721\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\nimport { VStepperStep } from 'vuetify/lib/components/VStepper';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VDivider,VForm,VIcon,VProgressLinear,VSpacer,VStepper,VStepperContent,VStepperHeader,VStepperItems,VStepperStep,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":true,\"width\":_vm.dialogWidth,\"fullscreen\":_vm.phoneLayout},on:{\"input\":_vm.closeDialog}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-alert-circle \")]),_c('span',{domProps:{\"textContent\":_vm._s(_vm.$t('info'))}})],1),_c('v-card-text',[_c('v-tabs',{model:{value:(_vm.tabSync),callback:function ($$v) {_vm.tabSync=$$v},expression:\"tabSync\"}},[_c('v-tab',{attrs:{\"href\":\"#general\"}},[_vm._v(\" General \")]),_c('v-tab',{attrs:{\"href\":\"#trackers\"}},[_vm._v(\" Trackers \")]),_c('v-tab',{attrs:{\"href\":\"#peers\"}},[_vm._v(\" Peers \")]),_c('v-tab',{attrs:{\"href\":\"#content\"}},[_vm._v(\" Content \")])],1),_c('v-tabs-items',{attrs:{\"value\":_vm.tab,\"touchless\":\"\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},_vm._l((_vm.torrents),function(torrent){return _c('panel',{key:torrent.hash,attrs:{\"title\":torrent.name,\"single\":_vm.torrents.length === 1}},[_c('torrent-info',{attrs:{\"torrent\":torrent,\"is-active\":_vm.tab === 'general'}})],1)}),1),_c('v-tab-item',{attrs:{\"value\":\"trackers\"}},_vm._l((_vm.torrents),function(torrent){return _c('panel',{key:torrent.hash,attrs:{\"title\":torrent.name,\"single\":_vm.torrents.length === 1}},[_c('trackers',{attrs:{\"hash\":torrent.hash,\"is-active\":_vm.tab === 'trackers'}})],1)}),1),_c('v-tab-item',{attrs:{\"value\":\"peers\"}},_vm._l((_vm.torrents),function(torrent){return _c('panel',{key:torrent.hash,attrs:{\"title\":torrent.name,\"single\":_vm.torrents.length === 1}},[_c('peers',{attrs:{\"hash\":torrent.hash,\"is-active\":_vm.tab === 'peers'}})],1)}),1),_c('v-tab-item',{attrs:{\"value\":\"content\"}},_vm._l((_vm.torrents),function(torrent){return _c('panel',{key:torrent.hash,attrs:{\"title\":torrent.name,\"single\":_vm.torrents.length === 1}},[_c('torrent-content',{attrs:{\"hash\":torrent.hash,\"is-active\":_vm.tab === 'content'}})],1)}),1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},domProps:{\"textContent\":_vm._s(_vm.$t('close'))},on:{\"click\":_vm.closeDialog}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"torrent-info\"},[_c('div',{staticClass:\"progress\"},[_c('span',[_vm._v(\"Progress:\")]),_c('canvas',{ref:\"canvas\",staticClass:\"progress-inner\"}),_c('span',[_vm._v(_vm._s(_vm._f(\"progress\")(_vm.torrent.progress)))])]),_c('fieldset',[_c('legend',[_vm._v(\"Transfer\")]),(_vm.properties)?_c('v-container',{staticClass:\"pa-1\"},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_vm._l((_vm.transfer),function(item){return [_c('v-col',{key:item.label + '_l',staticClass:\"label\",attrs:{\"cols\":\"3\",\"sm\":\"2\",\"md\":\"1\"}},[_vm._v(\" \"+_vm._s(item.label)+\": \")]),_c('v-col',{key:item.label + '_v',staticClass:\"value\",attrs:{\"cols\":\"9\",\"sm\":\"4\",\"md\":\"2\"}},[_vm._v(\" \"+_vm._s(item.value(_vm.properties))+\" \")])]})],2)],1):_vm._e()],1),_c('fieldset',[_c('legend',[_vm._v(\"Information\")]),(_vm.properties)?_c('v-container',{staticClass:\"pa-1\"},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_vm._l((_vm.information),function(item){return [_c('v-col',{key:item.label + '_l',staticClass:\"label\",attrs:{\"cols\":\"3\",\"sm\":\"2\",\"md\":\"1\"}},[_vm._v(\" \"+_vm._s(item.label)+\": \")]),_c('v-col',{key:item.label + '_v',staticClass:\"value\",attrs:{\"cols\":\"9\",\"sm\":\"4\",\"md\":\"3\"}},[_vm._v(\" \"+_vm._s(item.value(_vm.properties))+\" \")])]})],2)],1):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Component from 'vue-class-component'\n\n@Component\nexport default class HasTask extends Vue {\n destroy?: boolean\n call?: CallableFunction\n taskId?: number\n interval = 2000\n\n setTaskAndRun(call: CallableFunction, interval?: number) {\n this.call = call\n\n if (interval) {\n this.interval = interval\n }\n\n this.runTask()\n }\n\n async runTask() {\n this.cancelTask()\n\n let r = this.call!()\n if (r instanceof Promise) {\n r = await r\n }\n\n if (this.destroy || r) {\n return\n }\n\n this.taskId = setTimeout(this.runTask, this.interval)\n }\n\n cancelTask() {\n if (this.taskId) {\n clearTimeout(this.taskId);\n this.taskId = 0;\n }\n }\n\n beforeDestroy() {\n this.destroy = true;\n this.cancelTask();\n }\n}\n","import { Prop, Watch, Component } from 'vue-property-decorator'\nimport HasTask from '@/mixins/hasTask'\n\n@Component\nexport default class BaseTorrentInfo extends HasTask {\n @Prop(Boolean)\n readonly isActive!: boolean\n\n protected fetchInfo(): Promise {\n throw 'Not implement'\n }\n\n protected async doTask() {\n await this.fetchInfo()\n \n return !this.isActive\n }\n\n startTask() {\n this.setTaskAndRun(this.doTask, 5000)\n }\n\n created() {\n if (this.isActive) {\n this.startTask()\n }\n }\n\n @Watch('isActive')\n async onActived(v: boolean) {\n if (v) {\n this.startTask()\n } else {\n this.cancelTask();\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {chunk, countBy} from 'lodash'\n\nimport api from '../../Api'\nimport {formatDuration, formatSize, formatTimestamp, toPrecision} from '@/filters'\n\nimport {Torrent, TorrentProperties} from '@/types'\nimport Component from 'vue-class-component'\nimport {Prop, Watch} from 'vue-property-decorator'\nimport BaseTorrentInfo from './baseTorrentInfo'\n\ninterface Item {\n label: string;\n value: (prop: TorrentProperties) => string;\n}\n\nenum PieceState {\n Empty,\n Downloading,\n Downloaded,\n}\n\n@Component({\n\n})\nexport default class TorrentInfo extends BaseTorrentInfo {\n @Prop()\n readonly torrent!: Torrent\n\n properties: TorrentProperties | null = null\n\n transfer: Item[] = [\n {\n label: 'Time active',\n value: prop => formatDuration(prop.time_elapsed) + (prop.seeding_time ? ` (seeded ${formatDuration(prop.seeding_time)})` : ''),\n },\n { label: 'ETA', value: prop => formatDuration(prop.eta, { dayLimit: 100 }) },\n { label: 'Connections', value: prop => `${prop.nb_connections} (${prop.nb_connections_limit} max)` },\n { label: 'Downloaded', value: prop => `${formatSize(prop.total_downloaded_session)}/${formatSize(prop.total_downloaded)}` },\n { label: 'Uploaded', value: prop => `${formatSize(prop.total_uploaded_session)}/${formatSize(prop.total_uploaded)}` },\n { label: 'Seeds', value: prop => `${prop.seeds} (${prop.seeds_total} total)` },\n { label: 'DL speed', value: prop => `${formatSize(prop.dl_speed)}/s` },\n { label: 'UP speed', value: prop => `${formatSize(prop.up_speed)}/s` },\n { label: 'Peers', value: prop => `${prop.peers} (${prop.peers_total} total)` },\n { label: 'Wasted', value: prop => formatSize(prop.total_wasted) },\n { label: 'Share ratio', value: prop => toPrecision(prop.share_ratio, 3) },\n { label: 'Reannounce', value: prop => formatDuration(prop.reannounce) },\n { label: 'Last seen', value: prop => formatTimestamp(prop.last_seen) },\n ]\n\n information: Item[] = [\n { label: 'Total size', value: prop => formatSize(prop.total_size) },\n { label: 'Pieces', value: prop => `${prop.pieces_num} x ${formatSize(prop.piece_size)} (have ${prop.pieces_have})` },\n { label: 'Created by', value: prop => prop.created_by },\n { label: 'Created on', value: prop => formatTimestamp(prop.creation_date) },\n { label: 'Added on', value: prop => formatTimestamp(prop.addition_date) },\n { label: 'Completed on', value: prop => formatTimestamp(prop.completion_date) },\n { label: 'Torrent hash', value: () => this.torrent.hash },\n { label: 'Save path', value: prop => prop.save_path },\n { label: 'Comment', value: prop => prop.comment },\n ]\n pieces: PieceState[] = []\n canvas: CanvasRenderingContext2D | null = null\n\n async getData() {\n this.properties = await api.getTorrentProperties(this.torrent.hash);\n this.pieces = await api.getTorrentPieceStates(this.torrent.hash);\n }\n\n initCanvas(el: HTMLCanvasElement) {\n const { clientWidth, clientHeight } = el;\n /* eslint-disable no-param-reassign */\n el.width = clientWidth;\n el.height = clientHeight;\n /* eslint-enable no-param-reassign */\n\n return el.getContext('2d')!;\n }\n\n fetchInfo() {\n return this.getData()\n }\n\n @Watch('pieces')\n onPiecesChanged(v: PieceState[]) {\n let ctx;\n if (this.canvas) {\n ctx = this.canvas\n } else {\n ctx = this.initCanvas(this.$refs.canvas as HTMLCanvasElement)\n this.canvas = ctx\n }\n\n const { clientHeight, clientWidth } = ctx.canvas;\n ctx.clearRect(0, 0, clientWidth, clientHeight);\n\n const partNum = clientWidth / 2;\n const offset = clientWidth / partNum;\n const chunkSize = Math.floor(v.length / partNum);\n\n const chunks = chunk(v, chunkSize);\n for (let i = 0; i < partNum; i++) {\n const states = countBy(chunks[i]);\n const downloading = states[PieceState.Downloading];\n const empty = states[PieceState.Empty] || 0;\n const downloaded = states[PieceState.Downloaded];\n let color;\n if (downloading) {\n color = 'lightgreen';\n } else if (downloaded >= empty) {\n color = 'lightblue';\n } else {\n continue;\n }\n\n ctx.fillStyle = color;\n ctx.fillRect(i * offset, 0, offset, clientHeight);\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TorrentInfo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TorrentInfo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TorrentInfo.vue?vue&type=template&id=7f833448&scoped=true&\"\nimport script from \"./TorrentInfo.vue?vue&type=script&lang=ts&\"\nexport * from \"./TorrentInfo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TorrentInfo.vue?vue&type=style&index=0&id=7f833448&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f833448\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"torrent-content\"},[_c('v-treeview',{attrs:{\"open-on-click\":\"\",\"items\":_vm.fileTree,\"value\":_vm.selected,\"selectable\":\"\"},on:{\"input\":_vm.selectChanged},scopedSlots:_vm._u([{key:\"prepend\",fn:function(row){return [(_vm.inChanging.includes(row.item.id))?_c('v-progress-circular',{attrs:{\"size\":\"24\",\"width\":\"2\",\"indeterminate\":\"\"}}):_c('v-icon',{domProps:{\"textContent\":_vm._s(_vm.getRowIcon(row))}})]}},{key:\"append\",fn:function(row){return [_c('span',[_vm._v(\" [\"+_vm._s(_vm._f(\"size\")(row.item.size))+\"] \")]),_c('span',{staticClass:\"progress\"},[_vm._v(\" \"+_vm._s(_vm._f(\"progress\")(row.item.progress))+\" \")])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { groupBy, xor, sumBy } from 'lodash';\nimport api from '../../Api';\nimport BaseTorrentInfo from './baseTorrentInfo'\nimport Component from 'vue-class-component';\nimport { Prop } from 'vue-property-decorator';\n\nenum EFilePriority {\n notDownload = 0,\n normal = 1,\n high = 6,\n maximal = 7\n}\n\n/* eslint-disable camelcase */\ninterface File {\n id: number;\n name: string;\n size: number;\n progress: number;\n priority: EFilePriority;\n is_seed: boolean;\n piece_range: Array;\n availability: number;\n}\n/* eslint-disable camelcase */\n\ninterface TreeItem {\n id: number;\n name: string;\n item?: File;\n children?: Array;\n size: number;\n progress: number;\n}\n\ninterface Data {\n files: Array;\n}\n\nconst FILE_KEY = '/FILE/';\n\nconst UNWANTED_FILE = '.unwanted';\n\n@Component\nexport default class TorrentContent extends BaseTorrentInfo {\n @Prop(String)\n readonly hash!: string\n\n files: File[] = []\n folderIndex!: number\n inChanging: number[] = []\n\n get fileTree(): TreeItem[] {\n return this.buildTree(this.files, 0);\n }\n\n get selected(): number[] {\n return this.files.filter((item) => {\n return item.priority !== EFilePriority.notDownload;\n }).map(item => item.id);\n }\n\n async getFiles() {\n const files = await api.getTorrentFiles(this.hash) as File[]\n files.forEach((v, i) => v.id = i)\n files.sort((a, b) => a.name.localeCompare(b.name))\n\n this.files = files\n this.folderIndex = 0\n\n this.inChanging = [];\n }\n\n getRowIcon(row: any) {\n if (row.item.item) {\n return 'mdi-file';\n }\n\n return row.open ? 'mdi-folder-open' : 'mdi-folder';\n }\n\n async selectChanged(items: Array) {\n const previous = this.selected;\n const diff = xor(previous, items);\n\n if(diff.length == 0) return;\n\n this.inChanging.push(...diff);\n\n await api.setTorrentFilePriority(this.hash, diff, items.length > previous.length ?\n EFilePriority.normal : EFilePriority.notDownload);\n }\n\n getFileFolder(item: File, start: number) {\n const { name } = item;\n const index = name.indexOf('/', start);\n if (index === -1) {\n return FILE_KEY;\n }\n\n return name.substring(start, index);\n }\n\n buildTree(files: Array, start: number): TreeItem[] {\n if (!files.length) {\n return [];\n }\n\n const entries = groupBy(files, item => this.getFileFolder(item, start));\n\n const result = [];\n for (const [folder, values] of Object.entries(entries)) {\n // Push .unwanted file to current folder, just like original web ui\n if(folder === UNWANTED_FILE) {\n for (const item of values) {\n result.push({\n id: item.id,\n name: item.name.substring(start + folder.length + 1),\n item,\n size: item.size,\n progress: item.progress,\n });\n }\n continue;\n }\n\n if (folder !== FILE_KEY) {\n const subTree = this.buildTree(values, start + folder.length + 1);\n // Offset folder id to making sure it will not influence array content\n result.push({\n id: this.files.length + this.folderIndex++,\n name: folder,\n children: subTree,\n size: sumBy(subTree, 'size'),\n progress: sumBy(subTree, 'progress') / subTree.length,\n });\n continue;\n }\n\n for (const item of values) {\n result.push({\n id: item.id,\n name: item.name.substring(start),\n item,\n size: item.size,\n progress: item.progress,\n });\n }\n }\n\n return result;\n }\n\n fetchInfo() {\n return this.getFiles()\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TorrentContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TorrentContent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TorrentContent.vue?vue&type=template&id=360390b3&scoped=true&\"\nimport script from \"./TorrentContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./TorrentContent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TorrentContent.vue?vue&type=style&index=0&id=360390b3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"360390b3\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VTreeview } from 'vuetify/lib/components/VTreeview';\ninstallComponents(component, {VIcon,VProgressCircular,VTreeview})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.trackers,\"items-per-page\":-1,\"hide-default-footer\":true},scopedSlots:_vm._u([{key:\"item\",fn:function(row){return [_c('tr',[_c('td',[_vm._v(_vm._s(row.item.tier))]),_c('td',[_vm._v(_vm._s(row.item.url))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatTrackerStatus\")(row.item.status)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatTrackerNum\")(row.item.num_peers)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatTrackerNum\")(row.item.num_seeds)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatTrackerNum\")(row.item.num_leeches)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"formatTrackerNum\")(row.item.num_downloaded)))]),_c('td',[_vm._v(_vm._s(row.item.msg))])])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport api from '../../Api';\nimport Component from 'vue-class-component';\nimport { Prop } from 'vue-property-decorator';\nimport BaseTorrentInfo from './baseTorrentInfo';\n\n@Component({\n filters: {\n formatTrackerStatus(status: number) {\n const map = [\n 'Disabled',\n 'Not contacted',\n 'Working',\n 'Updating',\n 'Not working',\n ];\n\n return map[status];\n },\n formatTrackerNum(num: number) {\n if (num === -1) {\n return 'N/A';\n }\n\n return num.toString();\n },\n },\n})\nexport default class Trackers extends BaseTorrentInfo {\n @Prop(String)\n readonly hash!: string\n\n readonly headers = [\n { text: '#', value: 'tier' },\n { text: 'URL', value: 'url' },\n { text: 'Status', value: 'status' },\n { text: 'Peers', value: 'num_peers' },\n { text: 'Seeds', value: 'num_seeds' },\n { text: 'Leeches', value: 'num_leeches' },\n { text: 'Downloaded', value: 'num_downloaded' },\n { text: 'Message', value: 'msg' },\n ]\n\n trackers = []\n\n async getTracker() {\n this.trackers = await api.getTorrentTracker(this.hash);\n }\n\n fetchInfo() {\n return this.getTracker()\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Trackers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Trackers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Trackers.vue?vue&type=template&id=4101a5a8&\"\nimport script from \"./Trackers.vue?vue&type=script&lang=ts&\"\nexport * from \"./Trackers.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VDataTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.peers,\"items-per-page\":-1,\"hide-default-footer\":true},scopedSlots:_vm._u([{key:\"item\",fn:function(row){return [_c('tr',[_c('td',{staticClass:\"ip\"},[(row.item.country_code)?[(_vm.isWindows)?_c('img',{staticClass:\"country-flag\",attrs:{\"title\":row.item.country,\"alt\":_vm.codeToFlag(row.item.country_code).char,\"src\":_vm.codeToFlag(row.item.country_code).url}}):[_vm._v(\" \"+_vm._s(_vm.codeToFlag(row.item.country_code).char)+\" \")]]:_vm._e(),_vm._v(\" \"+_vm._s(row.item.ip)+\" \"),_c('span',{staticClass:\"grey--text\"},[_vm._v(\" :\"+_vm._s(row.item.port)+\" \")])],2),_c('td',[_vm._v(_vm._s(row.item.connection))]),_c('td',{attrs:{\"title\":row.item.flags_desc}},[_vm._v(\" \"+_vm._s(row.item.flags)+\" \")]),_c('td',[_vm._v(_vm._s(row.item.client))]),_c('td',[_vm._v(_vm._s(_vm._f(\"progress\")(row.item.progress)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"networkSpeed\")(row.item.dl_speed)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"networkSize\")(row.item.downloaded)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"networkSpeed\")(row.item.up_speed)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"networkSize\")(row.item.uploaded)))]),_c('td',[_vm._v(_vm._s(_vm._f(\"progress\")(row.item.relevance)))]),_c('td',[_vm._v(_vm._s(row.item.files))])])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { map, merge, cloneDeep } from 'lodash';\nimport { codeToFlag, isWindows } from '../../utils';\nimport api from '../../Api';\nimport { formatSize } from '../../filters';\nimport BaseTorrentInfo from './baseTorrentInfo';\nimport Component from 'vue-class-component';\nimport { Prop } from 'vue-property-decorator';\n\n@Component({\n filters: {\n networkSpeed(speed: number) {\n if (speed === 0) {\n return null;\n }\n\n return `${formatSize(speed)}/s`;\n },\n networkSize(size: number) {\n if (size === 0) {\n return null;\n }\n\n return formatSize(size);\n },\n },\n})\nexport default class Peers extends BaseTorrentInfo {\n @Prop(String)\n readonly hash!: string\n\n headers = [\n { text: 'IP', value: 'ip' },\n { text: 'Connection', value: 'connection' },\n { text: 'Flags', value: 'flags' },\n { text: 'Client', value: 'client' },\n { text: 'Progress', value: 'progress' },\n { text: 'DL Speed', value: 'dl_speed' },\n { text: 'Downloaded', value: 'downloaded' },\n { text: 'UP Speed', value: 'up_speed' },\n { text: 'Uploaded', value: 'uploaded' },\n { text: 'Relevance', value: 'relevance' },\n { text: 'Files', value: 'files' },\n ]\n\n peersObj: any = null\n rid: number | null = null\n isWindows: boolean = isWindows\n\n get peers() {\n return map(this.peersObj, (value, key) => merge({}, value, { key }));\n }\n\n codeToFlag(code: string) {\n if (code) {\n return codeToFlag(code);\n }\n\n return {};\n }\n\n async getPeers() {\n const resp = await api.getTorrentPeers(this.hash, this.rid || undefined);\n this.rid = resp.rid;\n\n if (resp.full_update) {\n this.peersObj = resp.peers;\n } else {\n const tmp: any = cloneDeep(this.peersObj);\n if (resp.peers_removed) {\n for (const key of resp.peers_removed) {\n delete tmp[key];\n }\n }\n this.peersObj = merge(tmp, resp.peers);\n }\n }\n\n fetchInfo() {\n return this.getPeers()\n }\n\n startTask() {\n this.setTaskAndRun(this.doTask, 2000)\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Peers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Peers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Peers.vue?vue&type=template&id=a834147c&scoped=true&\"\nimport script from \"./Peers.vue?vue&type=script&lang=ts&\"\nexport * from \"./Peers.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Peers.vue?vue&type=style&index=0&id=a834147c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a834147c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VDataTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.single)?_c('fieldset',{staticClass:\"panel\"},[_c('legend',{domProps:{\"textContent\":_vm._s(_vm.title)}}),_c('div',{staticClass:\"inner\"},[_vm._t(\"default\")],2)]):_c('div',{staticClass:\"inner\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\n\nexport default Vue.extend({\n props: {\n single: Boolean,\n title: {\n type: String,\n required: true,\n },\n },\n});\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Panel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Panel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Panel.vue?vue&type=template&id=1e23acca&scoped=true&\"\nimport script from \"./Panel.vue?vue&type=script&lang=ts&\"\nexport * from \"./Panel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Panel.vue?vue&type=style&index=0&id=1e23acca&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e23acca\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport TorrentInfo from './TorrentInfo.vue';\nimport TorrentContent from './TorrentContent.vue';\nimport Trackers from './Trackers.vue';\nimport Peers from './Peers.vue';\nimport Panel from './Panel.vue';\nimport Component from 'vue-class-component';\nimport { Prop, Emit, PropSync } from 'vue-property-decorator';\nimport { Torrent } from '../../types';\n\n@Component({\n components: {\n TorrentInfo,\n TorrentContent,\n Trackers,\n Peers,\n Panel,\n },\n})\nexport default class InfoDialog extends Vue {\n @Prop(Array)\n readonly value!: Torrent[]\n\n @PropSync('tab', String)\n tabSync!: string\n\n torrents!: Torrent[]\n\n created() {\n this.torrents = this.value\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n get dialogWidth() {\n return this.phoneLayout ? '100%' : '80%';\n }\n\n @Emit('input')\n closeDialog() {\n return false\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InfoDialog.vue?vue&type=template&id=35c58977&scoped=true&\"\nimport script from \"./InfoDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./InfoDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InfoDialog.vue?vue&type=style&index=0&id=35c58977&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35c58977\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VSpacer,VTab,VTabItem,VTabs,VTabsItems})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { mapState, mapGetters, mapMutations, mapActions } from 'vuex'\nimport { intersection, difference, uniqBy } from 'lodash'\n\nimport { tr } from '@/locale'\nimport ConfirmDeleteDialog from './dialogs/ConfirmDeleteDialog.vue'\nimport ConfirmSetCategoryDialog from './dialogs/ConfirmSetCategoryDialog.vue'\nimport EditTrackerDialog from './dialogs/EditTrackerDialog.vue'\nimport InfoDialog from './dialogs/InfoDialog.vue'\nimport api from '../Api'\nimport { formatSize } from '@/filters'\nimport { DialogType, TorrentFilter, ConfigPayload, DialogConfig, SnackBarConfig } from '@/store/types'\nimport Component from 'vue-class-component'\nimport { Torrent, Category } from '@/types'\nimport { Watch } from 'vue-property-decorator'\n\nfunction getStateInfo(state: string) {\n let icon;\n switch (state) {\n case 'metaDL':\n case 'allocating':\n case 'downloading':\n case 'forcedDL':\n icon = {\n icon: 'download',\n color: 'info',\n };\n break;\n case 'uploading':\n case 'forcedUP':\n icon = {\n icon: 'upload',\n color: 'info',\n };\n break;\n case 'stalledDL':\n icon = {\n icon: 'download',\n color: null,\n };\n break;\n case 'stalledUP':\n icon = {\n icon: 'upload',\n color: null,\n };\n break;\n case 'pausedDL':\n icon = {\n icon: 'pause',\n color: 'warning',\n };\n break;\n case 'pausedUP':\n icon = {\n icon: 'check',\n color: null,\n };\n break;\n case 'queuedDL':\n case 'queuedUP':\n icon = {\n icon: 'timer-sand',\n color: 'info',\n };\n break;\n case 'checkingDL':\n case 'checkingUP':\n case 'queuedForChecking':\n case 'checkingResumeData':\n case 'moving':\n icon = {\n icon: 'backup-restore',\n color: 'info',\n };\n break;\n case 'error':\n case 'unknown':\n case 'missingFiles':\n icon = {\n icon: 'alert',\n color: 'error',\n };\n break;\n default:\n throw Error('Unknown state');\n }\n\n return icon;\n}\n\n@Component({\n components: {\n ConfirmDeleteDialog,\n ConfirmSetCategoryDialog,\n EditTrackerDialog,\n InfoDialog,\n },\n computed: {\n ...mapGetters([\n 'isDataReady',\n 'allTorrents',\n 'allCategories',\n 'torrentGroupByCategory',\n 'torrentGroupBySite',\n 'torrentGroupByState',\n ]),\n ...mapState({\n filter(state, getters) {\n return getters.config.filter;\n },\n }),\n },\n filters: {\n formatNetworkSpeed(speed: number) {\n if (speed === 0) {\n return null;\n }\n\n return `${formatSize(speed)}/s`;\n },\n stateIcon(state: string) {\n const item = getStateInfo(state);\n return `mdi-${item.icon}`;\n },\n stateColor(state: string, isProgress?: boolean, isSeqDL?: boolean) {\n const item = getStateInfo(state);\n if (!isProgress) {\n return item.color;\n }\n if (isSeqDL) {\n return '#e33371' // icon.color.secondary;\n }\n\n return item.color || '#0008';\n },\n },\n methods: {\n ...mapMutations([\n 'updateConfig',\n 'showSnackBar',\n ]),\n ...mapActions([\n 'asyncShowDialog',\n ]),\n },\n})\nexport default class Torrents extends Vue {\n readonly headers = [\n { text: tr('name'), value: 'name' },\n { text: tr('size'), value: 'size' },\n { text: tr('progress'), value: 'progress' },\n { text: tr('status'), value: 'state' },\n { text: tr('seeds'), value: 'num_complete' },\n { text: tr('peers'), value: 'num_incomplete' },\n { text: tr('dl_speed'), value: 'dlspeed' },\n { text: tr('up_speed'), value: 'upspeed' },\n { text: tr('eta'), value: 'eta' },\n { text: tr('ratio'), value: 'ratio' },\n { text: tr('added_on'), value: 'added_on' },\n ]\n\n readonly footerProps = {\n 'items-per-page-options': [10, 20, 50, -1],\n }\n\n selectedRows: Torrent[] = []\n toDelete: Torrent[] = []\n toSetCategory: Torrent[] = []\n categoryToSet: string | null = null\n toShowInfo: Torrent[] = []\n toEditTracker: Torrent[] = []\n infoTab = null\n pageOptions: any = null\n\n isDataReady!: boolean\n allTorrents!: Torrent[]\n allCategories!: Category[]\n torrentGroupByCategory!: {[category: string]: Torrent[]}\n torrentGroupBySite!: {[site: string]: Torrent[]}\n torrentGroupByState!: {[state: string]: Torrent[]}\n filter!: TorrentFilter\n\n updateConfig!: (_: ConfigPayload) => void\n showSnackBar!: (_: SnackBarConfig) => void\n asyncShowDialog!: (_: DialogConfig) => Promise\n\n get loading() {\n return !this.isDataReady;\n }\n get hasSelected() {\n return !!this.selectedRows.length;\n }\n get selectedHashes() {\n return this.selectedRows.map(r => r.hash);\n }\n\n get torrents() {\n if (!this.isDataReady) {\n return [];\n }\n\n let list = this.allTorrents;\n if (this.filter.site !== null) {\n list = intersection(list, this.torrentGroupBySite[this.filter.site]);\n }\n if (this.filter.category !== null) {\n list = intersection(list, this.torrentGroupByCategory[this.filter.category]);\n }\n if (this.filter.state !== null) {\n list = intersection(list, this.torrentGroupByState[this.filter.state]);\n }\n if (this.filter.query) {\n const q = this.filter.query.toLowerCase();\n\n list = list.filter(t => {\n return t.name.toLowerCase().includes(q) ||\n t.tracker.toLowerCase().includes(q) ||\n t.category.toLowerCase().includes(q);\n });\n }\n\n return list;\n }\n\n get hasSelectedAll() {\n return this.hasSelected && this.selectedRows.length\n === Math.min(this.torrents.length, this.pageOptions.rowsPerPage);\n }\n\n getProgressColorClass(progress: number) {\n const color = (progress >= 0.5 || (this as any).$vuetify.theme.dark)\n ? 'white' : 'black';\n return `${color}--text`;\n }\n\n created() {\n this.pageOptions = this.$store.getters.config.pageOptions;\n }\n\n confirmDelete() {\n this.toDelete = this.selectedRows;\n }\n\n showInfo(row?: any) {\n this.toShowInfo = row ? [row] : this.selectedRows;\n }\n\n async resumeTorrents() {\n await api.resumeTorrents(this.selectedHashes);\n }\n\n async forceStartTorrents() {\n await api.setForceStartTorrents(this.selectedHashes);\n }\n\n async toggleSequentialTorrents() {\n await api.toggleSequentialTorrents(this.selectedHashes);\n }\n async pauseTorrents() {\n await api.pauseTorrents(this.selectedHashes);\n }\n\n async reannounceTorrents() {\n if (!this.hasSelected) {\n this.selectedRows = this.allTorrents;\n }\n\n await api.reannounceTorrents(this.selectedHashes);\n\n this.showSnackBar({text: tr('label.reannounced')});\n }\n\n async recheckTorrents() {\n const v = await this.asyncShowDialog({\n title: tr('title.recheck_torrents'),\n text: tr('dialog.recheck_torrents.msg'),\n type: DialogType.OkCancel,\n });\n\n if (!v) {\n return;\n }\n await api.recheckTorrents(this.selectedHashes);\n\n this.showSnackBar({text: tr('label.rechecking')});\n }\n\n async setTorrentLocation() {\n const savePaths = uniqBy(this.selectedRows, 'save_path');\n\n const oldPath = savePaths.length > 1 ? '' : savePaths[0].save_path\n const v = await this.asyncShowDialog({\n title: tr('title.set_location'),\n text: '',\n type: DialogType.Input,\n value: oldPath,\n });\n\n if (!v) {\n return;\n }\n\n this.showSnackBar({text: tr('label.moving')});\n\n try {\n await api.setTorrentLocation(this.selectedHashes, v);\n } catch (e) {\n this.showSnackBar({text: e});\n return;\n }\n\n this.showSnackBar({text: tr('label.moved')});\n }\n\n setTorrentsCategory(category: string) {\n this.categoryToSet = category;\n this.toSetCategory = this.selectedRows;\n }\n\n editTracker() {\n if (this.hasSelected) {\n this.selectedRows = this.allTorrents;\n }\n this.toEditTracker = this.selectedRows;\n }\n\n @Watch('pageOptions', { deep: true})\n onPageOptionsChanged() {\n this.updateConfig({\n key: 'pageOptions',\n value: this.pageOptions,\n })\n }\n\n @Watch('filter')\n onFilterChanged() {\n this.selectedRows = []\n }\n\n @Watch('torrents')\n onTorrentsChanged(v: Torrent[]) {\n if (!this.hasSelected) {\n return;\n }\n\n const torrentHashs = v.map(t => t.hash);\n const toRemove = difference(this.selectedHashes, torrentHashs);\n if (!toRemove) {\n return;\n }\n\n this.selectedRows = this.selectedRows.filter(r => !toRemove.includes(r.hash));\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Torrents.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Torrents.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Torrents.vue?vue&type=template&id=514dcf17&scoped=true&\"\nimport script from \"./Torrents.vue?vue&type=script&lang=ts&\"\nexport * from \"./Torrents.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Torrents.vue?vue&type=style&index=0&id=514dcf17&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"514dcf17\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VCheckbox,VDataTable,VDivider,VIcon,VList,VListItem,VListItemAction,VListItemContent,VListItemTitle,VMenu,VProgressLinear,VSubheader})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isDataReady)?_c('div',{staticClass:\"footer d-flex\",class:_vm.topLayoutClass},[(_vm.app)?_c('div',{staticClass:\"d-flex shrink\",class:_vm.phoneLayout ? 'flex-column' : 'align-center'},[(!_vm.phoneLayout)?_c('div',[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('span',_vm._g({},on),[_vm._v(\" qBittorrent \"+_vm._s(_vm.app.version)+\" \")])]}}],null,false,3135644960)},[_c('span',[_vm._v(\" API version: \"+_vm._s(_vm.app.apiVersion)+\" \")]),_c('br'),_c('span',[_vm._v(\" qb-web version: \"+_vm._s(_vm.buildInfo)+\" \")])])],1):_vm._e(),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),_c('div',{staticClass:\"icon-label\"},[_c('v-icon',[_vm._v(\"mdi-sprout\")]),_vm._v(\" \"+_vm._s(_vm.allTorrents.length)+\" [\"+_vm._s(_vm._f(\"formatSize\")(_vm.totalSize))+\"] \")],1),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),_c('div',{staticClass:\"icon-label\"},[_c('v-icon',[_vm._v(\"mdi-nas\")]),_vm._v(\" \"+_vm._s(_vm._f(\"formatSize\")(_vm.info.free_space_on_disk))+\" \")],1),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),(!_vm.phoneLayout)?_c('div',{staticClass:\"icon-label\"},[_c('v-icon',{staticClass:\"icon-upload-download\"},[_vm._v(\" mdi-swap-vertical-bold \")]),_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"formatSize\")(_vm.info.alltime_dl))+\"/\"+_vm._s(_vm._f(\"formatSize\")(_vm.info.alltime_ul))+\" \")])],1):_vm._e()],1):_vm._e(),(_vm.info)?_c('div',{staticClass:\"d-flex shrink\",class:_vm.phoneLayout ? 'flex-column' : 'align-center'},[(!_vm.phoneLayout)?_c('div',{staticClass:\"icon-label\"},[_c('v-icon',[_vm._v(\"mdi-lan\")]),_vm._v(\" \"+_vm._s(_vm.$t('label.dht_nodes', _vm.info.dht_nodes))+\" \")],1):_vm._e(),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),_c('div',{staticClass:\"icon-label\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g({attrs:{\"color\":_vm._f(\"connectionIconColor\")(_vm.info.connection_status)}},on),[_vm._v(\" mdi-\"+_vm._s(_vm._f(\"connectionIcon\")(_vm.info.connection_status))+\" \")]),(_vm.phoneLayout)?_c('span',[_vm._v(\" Network \"+_vm._s(_vm.info.connection_status)+\" \")]):_vm._e()]}}],null,false,452698304)},[_c('span',[_vm._v(\" Network \"+_vm._s(_vm.info.connection_status)+\" \")])])],1),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),_c('div',{staticClass:\"icon-label\"},[(_vm.phoneLayout)?_c('v-switch',{staticClass:\"mt-0 pt-0 speed-switch\",attrs:{\"hide-details\":\"\",\"value\":_vm.speedLimited,\"label\":\"Alternative speed limits\"},on:{\"change\":_vm.toggleSpeedLimitsMode},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-icon',_vm._b({},'v-icon',_vm.speedModeBind,false),[_vm._v(\" mdi-speedometer \")])]},proxy:true}],null,false,2672072414)}):_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-icon',_vm._g(_vm._b({on:{\"click\":_vm.toggleSpeedLimitsMode}},'v-icon',_vm.speedModeBind,false),on),[_vm._v(\" mdi-speedometer \")])]}}],null,false,3284983233)},[_c('span',[_vm._v(\" Alternative speed limits \"+_vm._s(_vm.speedLimited ? 'enabled' : 'disabled')+\" \")])])],1),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),_c('div',{staticClass:\"icon-label\"},[_c('v-icon',{attrs:{\"color\":_vm.info.dl_info_speed > 0 ? 'success' : null}},[_vm._v(\" mdi-download \")]),_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"formatSize\")(_vm.info.dl_info_speed))+\"/s \"),(_vm.info.dl_rate_limit)?[_vm._v(\" (\"+_vm._s(_vm._f(\"formatSize\")(_vm.info.dl_rate_limit))+\"/s) \")]:_vm._e(),(!_vm.phoneLayout)?[_vm._v(\" [\"+_vm._s(_vm._f(\"formatSize\")(_vm.info.dl_info_data))+\"] \")]:_vm._e()],2)],1),(!_vm.phoneLayout)?_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}):_vm._e(),_c('div',{staticClass:\"icon-label\"},[_c('v-icon',{attrs:{\"color\":_vm.info.up_info_speed > 0 ? 'warning' : null}},[_vm._v(\" mdi-upload \")]),_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"formatSize\")(_vm.info.up_info_speed))+\"/s \"),(_vm.info.up_rate_limit)?[_vm._v(\" (\"+_vm._s(_vm._f(\"formatSize\")(_vm.info.up_rate_limit))+\"/s) \")]:_vm._e(),(!_vm.phoneLayout)?[_vm._v(\" [\"+_vm._s(_vm._f(\"formatSize\")(_vm.info.up_info_data))+\"] \")]:_vm._e()],2)],1)],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { sumBy } from 'lodash';\nimport Vue from 'vue';\nimport { mapState, mapGetters } from 'vuex';\nimport api from '../Api';\nimport buildInfo from '@/buildInfo';\nimport Component from 'vue-class-component';\nimport { Prop, Watch } from 'vue-property-decorator';\nimport { Torrent, ServerState } from '@/types';\n\n\n@Component({\n filters: {\n connectionIcon(status: string) {\n const statusMap: any = {\n connected: 'check-network',\n firewalled: 'minus-network',\n disconnected: 'close-network',\n };\n return statusMap[status];\n },\n connectionIconColor(status: string) {\n const statusMap: any = {\n connected: 'success',\n firewalled: 'warning',\n disconnected: 'error',\n };\n return statusMap[status];\n },\n },\n computed: {\n ...mapState({\n info(state: any) {\n return this.isDataReady ? state.mainData.server_state : null;\n },\n }),\n ...mapGetters([\n 'isDataReady',\n 'allTorrents',\n ]),\n },\n})\nexport default class Footer extends Vue {\n @Prop(Boolean)\n readonly phoneLayout!: boolean\n\n app: any = null\n speedLimited = false\n\n buildInfo = buildInfo\n\n info!: ServerState\n isDataReady!: boolean\n allTorrents!: Torrent[]\n\n get totalSize() {\n return sumBy(this.allTorrents, 'size');\n }\n\n get speedModeBind() {\n if (this.speedLimited) {\n return {\n class: 'speed-limited',\n color: 'warning',\n };\n }\n\n return {\n class: null,\n color: 'success',\n };\n }\n\n get topLayoutClass() {\n const v = this.phoneLayout;\n if (v) {\n return ['in-drawer', 'flex-column'];\n }\n\n return ['mx-4', 'justify-space-between'];\n }\n\n async getAppInfo() {\n let resp = await api.getAppVersion();\n const version = resp.data;\n\n resp = await api.getApiVersion();\n const apiVersion = resp.data;\n\n this.app = {\n version, apiVersion,\n };\n }\n\n async toggleSpeedLimitsMode() {\n this.speedLimited = !this.speedLimited;\n await api.toggleSpeedLimitsMode();\n }\n\n created() {\n if (!this.isDataReady) {\n return;\n }\n\n this.speedLimited = this.info.use_alt_speed_limits;\n this.getAppInfo();\n }\n\n @Watch('isDataReady')\n onDataReady(v: boolean) {\n if (v && this.app === null) {\n this.getAppInfo();\n }\n }\n\n @Watch('info.use_alt_speed_limits')\n onSpeedLimitChanged (v: boolean) {\n this.speedLimited = v;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=70be62cb&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=70be62cb&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70be62cb\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VDivider,VIcon,VSwitch,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"scrollable\":\"\",\"fullscreen\":_vm.phoneLayout,\"width\":_vm.dialogWidth},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-delta\")]),_c('span',{domProps:{\"textContent\":_vm._s(_vm.$t('logs'))}})],1),_c('v-card-text',[(!_vm.logs.length)?_c('v-progress-linear',{staticClass:\"mt-4\",attrs:{\"indeterminate\":true}}):_vm._e(),_c('ol',{staticClass:\"logs caption\"},_vm._l((_vm.logs),function(row,i){return _c('li',{key:i,staticClass:\"log-item\",class:_vm._f(\"typeColor\")(row.type)},[_c('span',{staticClass:\"tag\"},[_vm._v(\"[\"+_vm._s(_vm._f(\"formatType\")(row.type))+\" \"+_vm._s(_vm._f(\"formatTimestamp\")(row.timestamp / 1000))+\"]\")]),_c('span',{domProps:{\"innerHTML\":_vm._s(row.message)}})])}),0),_c('div',{ref:\"end\"})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},domProps:{\"textContent\":_vm._s(_vm.$t('close'))},on:{\"click\":_vm.closeDialog}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport api from '@/Api';\nimport Component from 'vue-class-component';\nimport HasTask from '../../mixins/hasTask';\nimport { Prop, Emit } from 'vue-property-decorator';\n\n@Component({\n filters: {\n formatType(type: number) {\n const map: any = {\n 1: 'N',\n 2: 'I',\n 4: 'W',\n 8: 'C',\n };\n return map[type];\n },\n typeColor(type: number) {\n const map: any = {\n 1: null,\n 2: 'info--text',\n 4: 'warning--text',\n 8: 'error--text',\n };\n return map[type];\n },\n },\n})\nexport default class LogsDialog extends HasTask {\n @Prop(Boolean)\n readonly value!: boolean\n\n logs: any[] = []\n\n get dialogWidth() {\n return this.$vuetify.breakpoint.smAndDown ? '100%' : '70%';\n }\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n\n @Emit('input')\n closeDialog() {\n return false\n }\n\n async getLogs() {\n const lastId = this.logs.length ? this.logs[this.logs.length - 1].id : -1;\n const logs = await api.getLogs(lastId);\n\n if (this.destroy) {\n return;\n }\n\n if (logs.length) {\n this.logs = this.logs.concat(logs);\n\n await this.$nextTick();\n\n (this.$refs.end as HTMLElement).scrollIntoView();\n }\n }\n\n created() {\n this.setTaskAndRun(this.getLogs)\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LogsDialog.vue?vue&type=template&id=25ee86f6&scoped=true&\"\nimport script from \"./LogsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./LogsDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LogsDialog.vue?vue&type=style&index=0&id=25ee86f6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25ee86f6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VProgressLinear,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"fullscreen\":\"\",\"persistent\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-rss-box\")]),_c('span',[_vm._v(\"RSS\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.closeDialog}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('div',{staticClass:\"toolbar\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('dialog.rss.add_feed')},on:{\"click\":_vm.addRssItem}},[_c('v-icon',[_vm._v(\"mdi-link-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.selectNode,\"title\":_vm.$t('delete')},on:{\"click\":_vm.deleteRssItem}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.selectNode,\"title\":_vm.$t('rename')},on:{\"click\":_vm.renameRssItem}},[_c('v-icon',[_vm._v(\"mdi-file-move\")])],1),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.selectNode,\"title\":_vm.$t('refresh')},on:{\"click\":_vm.refreshRssItem}},[_c('v-icon',[_vm._v(\"mdi-refresh\")])],1),_c('v-spacer'),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.rss_processing_enabled,\"label\":_vm.$t('dialog.rss.auto_refresh'),\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.changePreference('rss_processing_enabled', $event)}}}),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.rss_auto_downloading_enabled,\"label\":_vm.$t('dialog.rss.auto_download'),\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.changePreference('rss_auto_downloading_enabled', $event)}}}),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('settings')},on:{\"click\":function($event){_vm.showRulesDialog = true}}},[_c('v-icon',[_vm._v(\"mdi-cog-box\")])],1)],1),_c('v-divider'),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"content-inner\"},[(!_vm.rssNode)?_c('div',{staticClass:\"loading\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\"}})],1):[_c('div',{staticClass:\"rss-items\"},[_c('v-treeview',{attrs:{\"open-on-click\":\"\",\"open-all\":\"\",\"items\":_vm.rssTree,\"item-key\":\"path\",\"activatable\":\"\",\"dense\":\"\"},on:{\"update:active\":function($event){_vm.selectNode = $event[0]}},scopedSlots:_vm._u([{key:\"prepend\",fn:function(row){return [(_vm.isItemLoading(row))?_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"22\",\"width\":\"2\"}}):_c('v-icon',{domProps:{\"textContent\":_vm._s(_vm.getRowIcon(row))}})]}},{key:\"label\",fn:function(row){return [_vm._v(\" \"+_vm._s(row.item.name)+\" \"),(row.item.children)?[_vm._v(\" (\"+_vm._s(row.item.children.length)+\") \")]:_vm._e()]}}])})],1),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('div',{staticClass:\"rss-details\"},[_c('div',{staticClass:\"rss-info\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('title._'))+\": \"),(_vm.selectItem)?_c('a',{attrs:{\"target\":\"_blank\",\"href\":_vm.selectItem.url}},[_vm._v(_vm._s(_vm.selectItem.title))]):_vm._e()]),_c('p',[_vm._v(_vm._s(_vm.$t('date'))+\": \"+_vm._s(_vm._f(\"date\")((_vm.selectItem ? _vm.selectItem.lastBuildDate : null))))])]),_c('v-divider'),_c('div',{staticClass:\"list-wrapper\"},[(_vm.selectItem)?_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item-group',{attrs:{\"color\":\"primary\"},model:{value:(_vm.selectArticle),callback:function ($$v) {_vm.selectArticle=$$v},expression:\"selectArticle\"}},_vm._l((_vm.sortArticles(_vm.selectItem.articles)),function(article){return _c('v-list-item',{key:article.id,attrs:{\"value\":article}},[_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{attrs:{\"title\":article.title},domProps:{\"textContent\":_vm._s(article.title)}})])],1),_c('v-list-item-action',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.downloadTorrent(article)}}},[_c('v-icon',[_vm._v(\"mdi-download\")])],1)],1)],1)}),1)],1):_vm._e()],1)],1),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('div',{staticClass:\"rss-desc\"},[_c('div',{staticClass:\"rss-info\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('title._'))+\": \"),(_vm.selectArticle)?_c('a',{attrs:{\"target\":\"_blank\",\"href\":_vm.selectArticle.link}},[_vm._v(_vm._s(_vm.selectArticle.title))]):_vm._e()]),_c('p',[_vm._v(_vm._s(((_vm.$t('category', 1)) + \": \" + (_vm.selectArticle ? _vm.selectArticle.category: ''))))]),_c('p',[_vm._v(_vm._s(_vm.$t('date'))+\": \"+_vm._s(_vm._f(\"date\")((_vm.selectArticle ? _vm.selectArticle.date: null))))])]),_c('v-divider'),(_vm.selectArticle)?_c('iframe',{directives:[{name:\"body\",rawName:\"v-body\",value:(_vm.selectArticle.description),expression:\"selectArticle.description\"}],staticClass:\"iframe\",attrs:{\"sandbox\":\"allow-same-origin\"}}):_vm._e()],1)]],2)])],1)],1),(_vm.showRulesDialog)?_c('RssRulesDialog',{attrs:{\"rss-node\":_vm.rssNode},model:{value:(_vm.showRulesDialog),callback:function ($$v) {_vm.showRulesDialog=$$v},expression:\"showRulesDialog\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"persistent\":\"\",\"width\":\"50%\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-filter\")]),_c('span',{domProps:{\"textContent\":_vm._s(_vm.$t('dialog.rss_rule.title'))}}),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.closeDialog}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('div',{staticClass:\"toolbar\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('dialog.rss_rule.add_rule')},on:{\"click\":_vm.addRssRule}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.selectedRuleName,\"title\":_vm.$t('delete')},on:{\"click\":_vm.deleteRssRule}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)],1),_c('v-divider'),_c('div',{staticClass:\"content\"},[(!_vm.rssRules)?_c('div',{staticClass:\"loading\"},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\"}})],1):[_c('div',{staticClass:\"rss-rules\"},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item-group',{attrs:{\"color\":\"primary\"},model:{value:(_vm.selectedRuleName),callback:function ($$v) {_vm.selectedRuleName=$$v},expression:\"selectedRuleName\"}},_vm._l((_vm.rssRules),function(value,key){return _c('v-list-item',{key:key,attrs:{\"value\":key}},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"dense\":\"\"},model:{value:(value.enabled),callback:function ($$v) {_vm.$set(value, \"enabled\", $$v)},expression:\"value.enabled\"}})],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(key)}})],1)],1)}),1)],1)],1),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('div',{staticClass:\"rule-details\"},[_c('v-form',{staticClass:\"rule-form\"},[_c('p',{staticClass:\"form-title\",domProps:{\"textContent\":_vm._s(_vm.$t('dialog.rss_rule.rule_settings'))}}),_c('v-checkbox',{attrs:{\"dense\":\"\",\"label\":_vm.$t('dialog.rss_rule.use_regex'),\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.useRegex},on:{\"change\":function($event){return _vm.editRule('useRegex', $event)}}}),_c('v-text-field',{attrs:{\"dense\":\"\",\"label\":_vm.$t('dialog.rss_rule.must_contain'),\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.mustContain},on:{\"change\":function($event){return _vm.editRule('mustContain', $event)}}}),_c('v-text-field',{attrs:{\"dense\":\"\",\"label\":_vm.$t('dialog.rss_rule.must_not_contain'),\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.mustNotContain},on:{\"change\":function($event){return _vm.editRule('mustNotContain', $event)}}}),_c('v-text-field',{attrs:{\"dense\":\"\",\"label\":_vm.$t('dialog.rss_rule.episode_filter'),\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.episodeFilter},on:{\"change\":function($event){return _vm.editRule('episodeFilter', $event)}}}),_c('v-checkbox',{attrs:{\"dense\":\"\",\"label\":_vm.$t('dialog.rss_rule.smart_episode'),\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.smartFilter},on:{\"change\":function($event){return _vm.editRule('smartFilter', $event)}}}),_c('v-select',{attrs:{\"dense\":\"\",\"label\":_vm.$t('dialog.rss_rule.assign_category'),\"items\":_vm.categoryItems,\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.assignedCategory},on:{\"change\":function($event){return _vm.editRule('assignedCategory', $event)}}}),_c('v-text-field',{attrs:{\"dense\":\"\",\"label\":_vm.$t('location'),\"disabled\":!_vm.selectedRule.enabled,\"value\":_vm.selectedRule.savePath},on:{\"change\":function($event){return _vm.editRule('savePath', $event)}}})],1),_c('v-divider'),_c('p',{staticClass:\"feeds-title\",domProps:{\"textContent\":_vm._s(_vm.$t('dialog.rss_rule.apply_to_feeds'))}}),(_vm.selectedRule.enabled)?_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((_vm.rssItems),function(item){return _c('v-list-item',{key:item.value},[_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"dense\":\"\",\"input-value\":_vm.hasSelectSite(item.value)},on:{\"change\":function($event){return _vm.selectSite(item.value, $event)}}})],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.text)}})],1)],1)}),1):_vm._e()],1)]],2)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { isEmpty, isEqual, pull, cloneDeep } from 'lodash'\nimport Vue from 'vue'\nimport Component from 'vue-class-component';\n\nimport { tr } from '@/locale'\nimport { Prop, Emit, Watch } from 'vue-property-decorator';\nimport { RssRule, Category, RssNode } from '../../types';\nimport api from '../../Api';\nimport { mapActions, mapMutations, mapGetters } from 'vuex';\nimport { DialogConfig, DialogType, SnackBarConfig } from '../../store/types';\n\n@Component({\n computed: {\n ...mapGetters([\n 'allCategories',\n ]),\n },\n methods: {\n ...mapMutations([\n 'showSnackBar',\n 'closeSnackBar',\n ]),\n ...mapActions([\n 'asyncShowDialog',\n ]),\n },\n})\nexport default class RssRulesDialog extends Vue {\n @Prop(Boolean)\n readonly value!: boolean\n @Prop()\n readonly rssNode!: RssNode\n\n rssRules: {[key: string]: RssRule} | null = null\n selectedRuleName: string | null = null\n\n allCategories!: Category[]\n\n asyncShowDialog!: (_: DialogConfig) => Promise\n showSnackBar!: (_: SnackBarConfig) => void\n closeSnackBar!: () => void\n\n get selectedRule(): RssRule {\n if (!this.selectedRuleName || !(this.selectedRuleName in this.rssRules!)) {\n return {} as RssRule\n }\n\n return this.rssRules![this.selectedRuleName]\n }\n set selectedRule(v: RssRule) {\n this.rssRules![this.selectedRuleName!] = v\n }\n\n get categoryItems() {\n const uncategory: Category = {\n key: '',\n name: tr('uncategorized'),\n }\n\n return [uncategory, ...this.allCategories].map(c => {\n return {\n text: c.name,\n value: c.key,\n }\n })\n }\n get rssItems() {\n return this.buildRssItems(this.rssNode)\n }\n\n hasSelectSite(url: string) {\n return this.selectedRule.affectedFeeds.includes(url)\n }\n\n selectSite(url: string, enabled: boolean) {\n const rule = cloneDeep(this.selectedRule)\n const feeds = rule.affectedFeeds\n\n if (enabled) {\n feeds.push(url)\n } else {\n pull(feeds, url)\n }\n\n this.selectedRule = rule\n }\n\n editRule(key: keyof RssRule, value: any) {\n const rule: any = cloneDeep(this.selectedRule)\n rule[key] = value\n\n this.selectedRule = rule\n }\n\n buildRssItems(node: RssNode) {\n let result: any[] = []\n\n for (const [key, value] of Object.entries(node)) {\n if ('uid' in value) {\n result.push({\n text: key,\n value: value.url,\n })\n } else {\n result = result.concat(this.buildRssItems(value))\n }\n }\n\n return result\n }\n\n async fetchRssRules() {\n this.rssRules = await api.getRssRules()\n }\n\n async addRssRule() {\n const name = await this.asyncShowDialog({\n text: tr('dialog.rss_rule.new_rule_name'),\n type: DialogType.Input,\n })\n\n if (!name) {\n return\n }\n\n this.showSnackBar({\n text: tr('label.adding'),\n })\n\n await api.setRssRule(name);\n this.fetchRssRules()\n\n this.closeSnackBar();\n }\n\n async deleteRssRule() {\n const input = await this.asyncShowDialog({\n text: tr('dialog.rss_rule.delete_rule'),\n type: DialogType.OkCancel,\n })\n\n if (!input) {\n return\n }\n\n this.showSnackBar({\n text: tr('label.deleting'),\n })\n\n await api.removeRssRule(this.selectedRuleName!);\n this.fetchRssRules()\n\n this.closeSnackBar();\n }\n\n @Emit('input')\n closeDialog() {\n return false\n }\n\n created() {\n this.fetchRssRules()\n }\n\n @Watch('selectedRule', {deep: true})\n async onSelectedRuleChanged(v: RssRule, old: RssRule) {\n if (isEmpty(old) || isEmpty(v)) {\n // just select rule\n return\n }\n\n if (isEqual(v, old)) {\n return\n }\n\n await api.setRssRule(this.selectedRuleName!, v)\n await this.fetchRssRules()\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { get, toPath, sortBy } from 'lodash'\nimport { mapActions, mapMutations, mapState } from 'vuex'\nimport Component from 'vue-class-component'\nimport { Prop, Watch, Emit } from 'vue-property-decorator'\n\nimport HasTask from '@/mixins/hasTask'\nimport api from '@/Api';\nimport { tr } from '@/locale'\nimport { RssItem, RssNode, RssTorrent } from '@/types';\nimport { DialogType, DialogConfig, SnackBarConfig } from '@/store/types'\nimport { parseDate, formatTimestamp, formatAsDuration } from '../../filters'\nimport RssRulesDialog from './RssRulesDialog.vue'\n\nlet darkMode: boolean;\n\n@Component({\n components: {\n RssRulesDialog,\n },\n computed: mapState([\n 'preferences',\n ]),\n methods: {\n ...mapActions([\n 'asyncShowDialog',\n ]),\n ...mapMutations([\n 'showSnackBar',\n 'closeSnackBar',\n ]),\n },\n filters: {\n date(str: string) {\n if (!str) {\n return null\n }\n\n const time = parseDate(str)!\n return tr('dialog.rss.date_format', {\n date: formatTimestamp(time),\n duration: formatAsDuration(time, {minUnit: 1}),\n })\n },\n },\n directives: {\n body: {\n inserted(el, binding) {\n const doc = (el as HTMLIFrameElement).contentDocument!\n\n const darkCss = darkMode ? 'body{color: #fff}' : null;\n\n const css = ``\n\n doc.head.insertAdjacentHTML('beforeend', css)\n doc.body.innerHTML = binding.value\n },\n update(el, binding) {\n if (binding.oldValue === binding.value) {\n return\n }\n\n const body = (el as HTMLIFrameElement).contentDocument!.body\n body.innerHTML = binding.value\n body.scrollTo({\n top: 0,\n })\n },\n },\n },\n})\nexport default class RssDialog extends HasTask {\n @Prop(Boolean)\n readonly value!: boolean\n\n rssNode: RssNode | null = null\n selectNode: string | null = null\n selectArticle: RssTorrent | null = null\n showRulesDialog = false\n\n preferences!: any\n asyncShowDialog!: (_: DialogConfig) => Promise\n showSnackBar!: (_: SnackBarConfig) => void\n closeSnackBar!: () => void\n\n get rssTree() {\n if (!this.rssNode) {\n return [];\n }\n\n return this.buildRssTree(this.rssNode!)\n }\n get selectItem() {\n if (!this.selectNode) {\n return null\n }\n\n const item = get(this.rssNode, this.selectNode)\n if (!item) {\n // deleted\n return null\n }\n\n if ('uid' in item) {\n return item as RssItem\n }\n\n // Folder\n return null\n }\n\n get selectedPath() {\n if (!this.selectNode) {\n return null\n }\n\n return toPath(this.selectNode!).map(p => {\n return p.replace('\\\\\\'', '\\'').replace('\\\\\\\\', '\\\\');\n }).join('\\\\');\n }\n\n sortArticles(articles: RssTorrent[]) {\n return sortBy(articles, (it) => new Date(it.date || 0)).reverse();\n }\n\n isItemLoading(row: any) {\n const item = row.item.item\n return item && item.isLoading\n }\n \n getRowIcon(row: any) {\n const item = row.item.item\n if (item) {\n if (item.isLoading) {\n return 'mdi-refresh'\n } else if (item.hasError) {\n return 'mdi-alert'\n }\n\n return 'mdi-rss'\n }\n\n return row.open ? 'mdi-folder-open' : 'mdi-folder';\n }\n\n buildRssTree(node: RssNode, parent?: string) {\n const result: any = [];\n function escapeKey(key: string) {\n const escaped = key.replace('\\\\', '\\\\\\\\').replace('\\'', '\\\\\\'');\n return `['${escaped}']`\n }\n\n for (const [key, value] of Object.entries(node)) {\n const path = parent ? (parent + escapeKey(key)) : escapeKey(key)\n\n if ('uid' in value) {\n result.push({\n path,\n name: key,\n item: value,\n })\n } else {\n result.push({\n path,\n name: key,\n children: this.buildRssTree(value, path),\n })\n }\n }\n\n return result;\n }\n\n async addRssItem() {\n const input = await this.asyncShowDialog({\n text: tr('dialog.rss.feed_url'),\n type: DialogType.Input,\n })\n\n if (!input) {\n return\n }\n\n this.showSnackBar({\n text: tr('label.adding'),\n })\n\n try {\n await api.addRssFeed(input);\n } catch (e) {\n this.showSnackBar({\n text: e.response ? e.response.data : e.message,\n })\n return\n }\n await this.runTask();\n\n this.closeSnackBar();\n }\n\n async renameRssItem() {\n const input = await this.asyncShowDialog({\n text: tr('name'),\n type: DialogType.Input,\n value: this.selectedPath!,\n })\n\n if (!input) {\n return\n }\n\n this.showSnackBar({\n text: tr('label.moving'),\n })\n\n try {\n await api.moveRssFeed(this.selectedPath!, input);\n } catch (e) {\n this.showSnackBar({\n text: e.response ? e.response.data : e.message,\n })\n return\n }\n await this.runTask();\n\n this.closeSnackBar();\n }\n\n async deleteRssItem() {\n const confirm = await this.asyncShowDialog({\n text: tr('dialog.rss.delete_feeds'),\n type: DialogType.OkCancel,\n })\n\n if (!confirm) {\n return\n }\n\n this.showSnackBar({\n text: tr('label.deleting'),\n })\n\n try {\n await api.removeRssFeed(this.selectedPath!);\n } catch (e) {\n this.showSnackBar({\n text: e.response ? e.response.data : e.message,\n })\n return\n }\n await this.runTask();\n\n this.closeSnackBar();\n }\n\n async refreshRssItem() {\n await api.refreshRssFeed(this.selectedPath!);\n await this.runTask();\n }\n\n async changePreference(key: string, value: any) {\n await api.setPreferences({\n [key]: value,\n })\n }\n\n async fetchRssItems() {\n this.rssNode = await api.getRssItems()\n }\n\n @Emit()\n downloadTorrent(article: RssTorrent) {\n return article.torrentURL\n }\n\n @Watch('selectNode')\n onSelectNodeChanged() {\n this.selectArticle = null\n }\n\n created() {\n darkMode = this.$vuetify.theme.dark\n this.setTaskAndRun(this.fetchRssItems, 5000)\n }\n\n @Emit('input')\n closeDialog() {\n return false\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RssRulesDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RssRulesDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RssRulesDialog.vue?vue&type=template&id=0220a15a&scoped=true&\"\nimport script from \"./RssRulesDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RssRulesDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RssRulesDialog.vue?vue&type=style&index=0&id=0220a15a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0220a15a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VCheckbox,VDialog,VDivider,VForm,VIcon,VList,VListItem,VListItemAction,VListItemContent,VListItemGroup,VListItemTitle,VProgressCircular,VSelect,VSpacer,VTextField})\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RssDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RssDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RssDialog.vue?vue&type=template&id=763d8c6c&scoped=true&\"\nimport script from \"./RssDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RssDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RssDialog.vue?vue&type=style&index=0&id=763d8c6c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"763d8c6c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTreeview } from 'vuetify/lib/components/VTreeview';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VDialog,VDivider,VIcon,VList,VListItem,VListItemAction,VListItemContent,VListItemGroup,VListItemTitle,VProgressCircular,VSpacer,VSwitch,VTreeview})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-dialog',{attrs:{\"value\":_vm.value,\"scrollable\":\"\",\"fullscreen\":\"\",\"persistent\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-card-search-outline\")]),_c('span',{domProps:{\"textContent\":_vm._s(_vm.$t('search'))}}),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.closeDialog}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('SearchDialogForm',{attrs:{\"loading\":_vm.loading},on:{\"triggerSearch\":_vm.triggerSearch,\"stopSearch\":_vm.stopSearch}}),_c('v-data-table',{staticClass:\"elevation-1\",attrs:{\"headers\":_vm.grid.headers,\"items\":_vm.grid.searchItems,\"items-per-page\":10,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"item.fileName\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('a',{attrs:{\"href\":item.descrLink,\"target\":\"_blank\"},domProps:{\"textContent\":_vm._s(item.fileName)}})]}},{key:\"item.fileSize\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(_vm._f(\"formatSize\")(item.fileSize))+\" \")]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-icon',{on:{\"click\":function($event){return _vm.downloadTorrent(item)}}},[_vm._v(\"mdi-download\")])]}}],null,true)})],1),_c('v-card-actions',[_c('v-btn',{on:{\"click\":_vm.openPluginManager}},[_c('v-icon',[_vm._v(\"mdi-cog\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"plugin_manager\"))+\" \")],1)],1)],1)],1),_c('PluginManager')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-form',{ref:\"form\",model:{value:(_vm.searchForm.valid),callback:function ($$v) {_vm.$set(_vm.searchForm, \"valid\", $$v)},expression:\"searchForm.valid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"col-12 col-sm-6 col-md-9\"},[_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"label\":_vm.$t('search'),\"rules\":[function (v) { return !!v || _vm.$t('msg.item_is_required', { item: _vm.$t('query') }); }],\"clearable\":\"\"},on:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.$refs.searchButton.click.apply(null, arguments)}},model:{value:(_vm.searchForm.pattern),callback:function ($$v) {_vm.$set(_vm.searchForm, \"pattern\", $$v)},expression:\"searchForm.pattern\"}}),_c('v-btn',{ref:\"searchButton\",attrs:{\"disabled\":!_vm.searchForm.valid,\"color\":_vm.loading ? 'warning' : 'primary'},on:{\"click\":function($event){_vm.loading ? _vm.stopSearch() : _vm.triggerSearch()}}},[_vm._v(\" \"+_vm._s(_vm.loading ? _vm.$t(\"stop\") : _vm.$t(\"search\"))+\" \")])],1),_c('v-col',{staticClass:\"col__plugins\"},[_c('v-btn',{staticClass:\"btn\",attrs:{\"loading\":_vm.searchPlugins === undefined,\"disabled\":_vm.searchPlugins === null,\"type\":\"button\"},on:{\"click\":function($event){_vm.plugginSelectorOpen = true}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"plugin\", 2))+\" \")]),(!this.$vuetify.breakpoint.mobile)?_c('v-dialog',{attrs:{\"max-width\":\"20rem\"},model:{value:(_vm.plugginSelectorOpen),callback:function ($$v) {_vm.plugginSelectorOpen=$$v},expression:\"plugginSelectorOpen\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"plugin\", 1))+\" \"+_vm._s(_vm.$t(\"usage\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"small\":\"\",\"color\":_vm.searchForm.plugins.length > 0 ? 'primary' : ''},on:{\"click\":_vm.toggleSelectAll}},[_vm._v(\" \"+_vm._s(_vm.$t(\"all\"))+\" \")])],1),_c('v-divider'),_c('v-card-text',_vm._l((_vm.availablePlugins),function(plugin,key){return _c('v-checkbox',{key:key,attrs:{\"label\":plugin.fullName,\"value\":plugin},model:{value:(_vm.searchForm.plugins),callback:function ($$v) {_vm.$set(_vm.searchForm, \"plugins\", $$v)},expression:\"searchForm.plugins\"}})}),1)],1)],1):_vm._e(),(this.$vuetify.breakpoint.mobile)?_c('v-bottom-sheet',{attrs:{\"scrollable\":\"\",\"inset\":\"\"},model:{value:(_vm.plugginSelectorOpen),callback:function ($$v) {_vm.plugginSelectorOpen=$$v},expression:\"plugginSelectorOpen\"}},[_c('v-sheet',{staticClass:\"text-center\"},[_c('v-card',[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t(\"plugin\", 1))+\" \"+_vm._s(_vm.$t(\"usage\"))+\" \"),_c('v-spacer'),_c('v-btn',{attrs:{\"small\":\"\",\"color\":_vm.searchForm.plugins.length > 0 ? 'primary' : ''},on:{\"click\":_vm.toggleSelectAll}},[_vm._v(\" \"+_vm._s(_vm.$t(\"all\"))+\" \")])],1),_c('v-divider'),_c('v-card-text',_vm._l((_vm.availablePlugins),function(plugin,key){return _c('v-checkbox',{key:key,attrs:{\"label\":plugin.fullName,\"value\":plugin},model:{value:(_vm.searchForm.plugins),callback:function ($$v) {_vm.$set(_vm.searchForm, \"plugins\", $$v)},expression:\"searchForm.plugins\"}})}),1)],1)],1)],1):_vm._e()],1),_c('v-col',{attrs:{\"align-self\":\"center\"}},[_c('v-autocomplete',{attrs:{\"items\":_vm.availableCategories,\"item-text\":\"name\",\"item-value\":\"key\",\"label\":_vm.$t('category', 1)},model:{value:(_vm.searchForm.category),callback:function ($$v) {_vm.$set(_vm.searchForm, \"category\", $$v)},expression:\"searchForm.category\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport { Component, Emit, Prop, Watch } from \"vue-property-decorator\";\nimport { SearchPlugin } from \"@/types\";\nimport { tr } from \"@/locale\";\nimport { intersection } from \"lodash\";\nimport { mapGetters } from \"vuex\";\nimport { SearchEnginePage } from '@/store/types';\n\nconst ALL_KEY = \"all\";\n\nconst ALL_CATEGORY: Category = {\n key: ALL_KEY,\n name: tr(\"all\"),\n};\n\ninterface Category {\n key: string;\n name: string;\n}\n\nexport interface SearchForm {\n valid: boolean;\n category: string;\n pattern: string;\n plugins: SearchPlugin[];\n}\n\n@Component({\n computed: {\n ...mapGetters({\n searchPlugins: \"allSearchPlugins\",\n }),\n },\n})\nexport default class SearchDialogForm extends Vue {\n searchEngineState!: SearchEnginePage;\n searchPlugins!: SearchPlugin[];\n\n @Prop(Boolean)\n readonly loading: boolean = false;\n\n plugginSelectorOpen = false;\n\n availablePlugins: SearchPlugin[] = [];\n\n searchForm: SearchForm = {\n valid: false,\n category: ALL_KEY,\n pattern: \"\",\n plugins: [],\n };\n\n get hasSelectAllPlugins() {\n return this.searchForm.plugins.length === this.availablePlugins?.length;\n }\n\n get availableCategories() {\n if (this.hasSelectAllPlugins) {\n return [ALL_CATEGORY];\n }\n\n const result: Category[] = [ALL_CATEGORY, { divider: true } as any];\n\n const categories = intersection(\n ...this.searchForm.plugins.map(p => p.supportedCategories),\n ).map(c => ({ key: c, name: c }));\n result.push(...categories);\n\n return result;\n }\n\n toggleSelectAll() {\n this.searchForm.plugins = this.hasSelectAllPlugins ? [] : this.availablePlugins.slice();\n }\n\n @Watch(\"searchPlugins\")\n searchPluginsUpdated(plugins: SearchPlugin[] | undefined | null) {\n if (!plugins) {\n this.availablePlugins = [];\n } else {\n this.availablePlugins = this.searchPlugins.filter(x => x.enabled);\n this.toggleSelectAll();\n }\n }\n\n @Emit(\"triggerSearch\")\n triggerSearch(): SearchForm | void {\n if (!this.searchForm.valid) {\n return;\n }\n\n const plugins = this.hasSelectAllPlugins\n ? ALL_KEY\n : this.searchForm.plugins.map(p => p.name).join(\"|\");\n\n const searchForm = Object.assign({}, this.searchForm, {\n plugins,\n });\n\n return searchForm;\n }\n\n @Emit(\"stopSearch\")\n stopSearch() {\n //\n }\n\n @Watch(\"searchForm.plugins\")\n onPluginChanged() {\n if (!this.availableCategories.find(c => c.key === this.searchForm.category)) {\n this.searchForm.category = ALL_KEY;\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchDialogForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchDialogForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchDialogForm.vue?vue&type=template&id=50ebf5de&scoped=true&\"\nimport script from \"./SearchDialogForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchDialogForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchDialogForm.vue?vue&type=style&index=0&id=50ebf5de&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50ebf5de\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VBottomSheet } from 'vuetify/lib/components/VBottomSheet';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAutocomplete,VBottomSheet,VBtn,VCard,VCardText,VCardTitle,VCheckbox,VCol,VContainer,VDialog,VDivider,VForm,VRow,VSheet,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"20rem\",\"scrollable\":\"\"},model:{value:(_vm.searchEngineState.isPluginManagerOpen),callback:function ($$v) {_vm.$set(_vm.searchEngineState, \"isPluginManagerOpen\", $$v)},expression:\"searchEngineState.isPluginManagerOpen\"}},[_c('v-card',[_c('v-card-title',[_c('v-icon',[_vm._v(\"mdi-toy-brick\")]),_vm._v(\" \"+_vm._s(_vm.$t(\"plugin_manager\"))+\" \")],1),_c('v-card-text',_vm._l((_vm.searchEngineState.searchPlugins),function(plugin,key){return _c('v-switch',{key:key,attrs:{\"input-value\":plugin.enabled,\"label\":plugin.fullName},on:{\"change\":function($event){return _vm.togglePluginAvailability(plugin)}}})}),1),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"warning\"},on:{\"click\":function($event){return _vm.updatePlugins()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"update_plugins\"))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { SearchEnginePage } from \"@/store/types\";\nimport { SearchPlugin } from \"@/types\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { mapActions, mapState } from \"vuex\";\n\n@Component({\n computed: {\n ...mapState({\n searchEngineState: \"searchEngine\",\n }),\n },\n methods: {\n ...mapActions({\n togglePluginAvailabilityAction: \"togglePluginAvailability\",\n updatePluginsRequest: \"updatePluginsRequest\",\n }),\n },\n})\nexport default class PluginsManager extends Vue {\n searchEngineState!: SearchEnginePage;\n togglePluginAvailabilityAction!: (_: any) => void;\n updatePluginsRequest!: () => void;\n\n togglePluginAvailability(plugin: SearchPlugin) {\n this.togglePluginAvailabilityAction(plugin);\n }\n\n updatePlugins() {\n this.updatePluginsRequest();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PluginsManager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PluginsManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PluginsManager.vue?vue&type=template&id=19e33dd6&\"\nimport script from \"./PluginsManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./PluginsManager.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VSwitch})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport api from \"@/Api\";\nimport HasTask from \"@/mixins/hasTask\";\nimport { Component, Prop, Emit } from \"vue-property-decorator\";\nimport { SearchTaskTorrent } from \"@/types\";\nimport { mapActions, mapGetters, mapMutations } from \"vuex\";\nimport { tr } from \"@/locale\";\nimport SearchDialogForm from \"./SearchDialogForm.vue\";\nimport PluginManager from \"./PluginsManager.vue\";\n\ninterface GridConfig {\n searchItems: SearchTaskTorrent[];\n downloadItem: SearchTaskTorrent | null;\n headers: { [key: string]: any }[];\n}\n\n@Component({\n components: {\n SearchDialogForm,\n PluginManager,\n },\n computed: {\n ...mapGetters({\n allCategories: \"allCategories\",\n preferences: \"preferences\",\n }),\n },\n methods: {\n ...mapMutations([\"openAddForm\", \"setPasteUrl\", \"addFormDownloadItem\", \"openPluginManager\"]),\n ...mapActions({\n loadSearchPlugins: 'fetchSearchPlugins',\n }),\n },\n})\nexport default class SearchDialog extends HasTask {\n private _searchId = 0;\n\n @Prop(Boolean)\n readonly value!: boolean;\n\n grid: GridConfig = {\n searchItems: [],\n downloadItem: {\n descrLink: \"\",\n fileName: \"\",\n fileSize: 0,\n fileUrl: \"\",\n nbLeechers: 0,\n nbSeeders: 0,\n siteUrl: \"\",\n },\n headers: [\n { text: tr(\"name\"), value: \"fileName\" },\n { text: tr(\"size\"), value: \"fileSize\" },\n { text: tr(\"seeds\"), value: \"nbSeeders\" },\n { text: tr(\"peers\"), value: \"nbLeechers\" },\n { text: tr(\"search_engine\"), value: \"siteUrl\" },\n { text: tr(\"action\", 2), value: \"actions\", sortable: false },\n ],\n };\n\n loading = false;\n\n setPasteUrl!: (_: any) => void;\n openAddForm!: () => void;\n addFormDownloadItem!: (_: any) => void;\n loadSearchPlugins!: () => void;\n openPluginManager!: () => void;\n\n mounted() {\n this.loadSearchPlugins(); // load the plugins so they are available in the entire module\n }\n\n async downloadTorrent(item: SearchTaskTorrent) {\n this.addFormDownloadItem({\n downloadItem: {\n title: item.fileName,\n url: item.fileUrl,\n },\n });\n this.openAddForm();\n }\n\n async stopSearch() {\n this.cancelTask();\n await this._stopSearch(this._searchId);\n this.loading = false;\n }\n\n @Emit(\"input\")\n closeDialog() {\n return false;\n }\n\n async triggerSearch(searchForm: any) { // TODO: find a good way to type the form.\n this.grid.searchItems = []; // Clear the table\n this.loading = true;\n\n try {\n const response = await this._startSearch(searchForm);\n this._searchId = response.id;\n\n this.setTaskAndRun(this.task(response.id));\n } catch {\n //\n }\n }\n\n private async _startSearch(searchForm: any): Promise<{ id: number }> {\n const result = await api.startSearch(\n searchForm.pattern,\n searchForm.plugins,\n searchForm.category,\n );\n\n return result;\n }\n\n private async _stopSearch(id: number) {\n await api.stopSearch(id);\n this._searchId = 0;\n }\n\n /**\n * Does request until the plugins return data\n */\n private task(responseId: number): CallableFunction {\n return async () => {\n const response = await api.getSearchResults(responseId);\n const isStopped = response.status === \"Stopped\";\n\n const items = this.grid.searchItems\n items.splice(items.length, 0, ...response.results.slice(items.length))\n\n if (isStopped) {\n this.loading = false;\n }\n\n return isStopped;\n };\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchDialog.vue?vue&type=template&id=2425d8a7&scoped=true&\"\nimport script from \"./SearchDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchDialog.vue?vue&type=style&index=0&id=2425d8a7&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2425d8a7\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDataTable,VDialog,VIcon,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-dialog',{attrs:{\"value\":_vm.value,\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"720px\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',[_c('v-card-title',{staticClass:\"headline\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"mdi-cog\")]),_c('span',{domProps:{\"textContent\":_vm._s(_vm.$t('settings'))}}),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.closeDialog}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('v-tabs',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.tabList),function(item){return _c('v-tab',{key:item},[_vm._v(\" \"+_vm._s(_vm.$t('preferences.' + item))+\" \")])}),1),_c('v-fade-transition',[_c('v-alert',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.preferenceUpdated),expression:\"preferenceUpdated\"}],attrs:{\"dense\":\"\",\"text\":\"\",\"type\":\"success\"}},[_vm._v(\" \"+_vm._s(_vm.$t('preferences.change_applied'))+\" \")])],1),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{key:\"downloads\"},[_c('download-settings')],1),_c('v-tab-item',{key:\"speed\"},[_c('speed-settings')],1),_c('v-tab-item',{key:\"rss\"},[_c('rss-settings')],1),_c('v-tab-item',{key:\"webui\"},[_c('web-u-i-settings')],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',[_c('h4',[_vm._v(_vm._s(_vm.$t('preferences.adding_torrent')))]),_c('v-divider'),_c('v-container',{staticClass:\"px-0\",attrs:{\"fluid\":\"\"}},[_c('v-switch',{attrs:{\"input-value\":_vm.preferences.create_subfolder_enabled,\"label\":_vm.$t('preferences.create_subfolder_enabled')},on:{\"change\":function($event){return _vm.changeSettings('create_subfolder_enabled', !_vm.preferences.create_subfolder_enabled)}}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.start_paused_enabled,\"label\":_vm.$t('preferences.start_paused_enabled')},on:{\"change\":function($event){return _vm.changeSettings('start_paused_enabled', !_vm.preferences.start_paused_enabled)}}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.auto_delete_mode,\"label\":_vm.$t('preferences.auto_delete_mode')},on:{\"change\":function($event){return _vm.changeSettings('auto_delete_mode', !_vm.preferences.auto_delete_mode)}}})],1),_c('v-divider'),_c('v-container',{staticClass:\"px-0\",attrs:{\"fluid\":\"\"}},[_c('v-switch',{attrs:{\"input-value\":_vm.preferences.preallocate_all,\"label\":_vm.$t('preferences.preallocate_all')},on:{\"change\":function($event){return _vm.changeSettings('preallocate_all', !_vm.preferences.preallocate_all)}}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.incomplete_files_ext,\"label\":_vm.$t('preferences.incomplete_files_ext')},on:{\"change\":function($event){return _vm.changeSettings('incomplete_files_ext', !_vm.preferences.incomplete_files_ext)}}})],1),_c('h4',[_vm._v(_vm._s(_vm.$t('preferences.saving_management')))]),_c('v-divider'),_c('v-container',{staticClass:\"px-0\",attrs:{\"fluid\":\"\"}},[_c('preference-row',{attrs:{\"i18n-key\":\"auto_tmm_enabled\"}},[_c('v-select',{attrs:{\"items\":_vm.torrentMode,\"value\":_vm.preferences.auto_tmm_enabled ? _vm.torrentMode[0] : _vm.torrentMode[1]},on:{\"change\":function($event){return _vm.changeSettings('auto_tmm_enabled', $event == _vm.torrentMode[0])}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"torrent_changed_tmm_enabled\"}},[_c('v-select',{attrs:{\"items\":_vm.torrentAction,\"value\":_vm.preferences.category_changed_tmm_enabled ? _vm.torrentAction[1] : _vm.torrentAction[0]},on:{\"change\":function($event){return _vm.changeSettings('torrent_changed_tmm_enabled', $event == _vm.torrentAction[1])}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"save_path_changed_tmm_enabled\"}},[_c('v-select',{attrs:{\"items\":_vm.torrentAction,\"value\":_vm.preferences.category_changed_tmm_enabled ? _vm.torrentAction[1] : _vm.torrentAction[0]},on:{\"change\":function($event){return _vm.changeSettings('save_path_changed_tmm_enabled', $event == _vm.torrentAction[1])}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"category_changed_tmm_enabled\"}},[_c('v-select',{attrs:{\"items\":_vm.torrentAction,\"value\":_vm.preferences.category_changed_tmm_enabled ? _vm.torrentAction[1] : _vm.torrentAction[0]},on:{\"change\":function($event){return _vm.changeSettings('category_changed_tmm_enabled', $event == _vm.torrentAction[1])}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"save_path\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.save_path,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('save_path', $event)}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"temp_path\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('v-checkbox',{attrs:{\"value\":_vm.preferences.temp_path_enabled},on:{\"change\":function($event){return _vm.changeSettings('temp_path_enabled', $event)}}})]},proxy:true}])},[_c('v-text-field',{attrs:{\"disabled\":!_vm.preferences.temp_path_enabled,\"value\":_vm.preferences.temp_path,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('temp_path', $event)}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"export_dir\",\"can-be-enabled\":\"true\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.export_dir,\"lazy\":\"\",\"clearable\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('export_dir', $event)}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"export_dir_fin\",\"can-be-enabled\":\"true\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.export_dir_fin,\"lazy\":\"\",\"clearable\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('export_dir_fin', $event)}}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"3\"}},[_c('v-subheader',{domProps:{\"textContent\":_vm._s(_vm.$t('preferences.' + this.$props.i18nKey))}})],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_vm._t(\"default\")],2),(_vm.$slots.header)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._t(\"header\")],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop} from 'vue-property-decorator'\nimport Vue from 'vue'\n\n@Component\nexport default class PreferenceRow extends Vue {\n @Prop(String)\n readonly i18nKey?: string\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreferenceRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreferenceRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PreferenceRow.vue?vue&type=template&id=6d08c8e6&\"\nimport script from \"./PreferenceRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./PreferenceRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VCol,VRow,VSubheader})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport {Preferences} from '@/types'\nimport {Component} from 'vue-property-decorator'\nimport {mapActions, mapGetters} from 'vuex'\nimport PreferenceRow from './PreferenceRow.vue'\nimport { tr } from '@/locale'\n\n@Component({\n components: {\n PreferenceRow,\n },\n computed: {\n ...mapGetters({\n preferences: 'allPreferences',\n }),\n },\n methods: {\n ...mapActions({\n updatePreferencesRequest: 'updatePreferencesRequest',\n }),\n },\n})\nexport default class DownloadSettings extends Vue {\n preferences!: Preferences\n torrentAction = [tr('preferences.switch_torrent_mode_to_manual'), tr('preferences.move_affected_torrent')]\n torrentMode = [tr('preferences.auto_mode'), tr('preferences.manual_mode')]\n\n updatePreferencesRequest!: (_: any) => void\n\n changeSettings(property: string, value: string | boolean) {\n this.updatePreferencesRequest({[property]: value})\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadSettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DownloadSettings.vue?vue&type=template&id=2e1e1380&scoped=true&\"\nimport script from \"./DownloadSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./DownloadSettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DownloadSettings.vue?vue&type=style&index=0&id=2e1e1380&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e1e1380\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VCheckbox,VContainer,VDivider,VSelect,VSwitch,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-container',[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.$t('preferences.global_rate_limits')))]),_c('v-text-field',{attrs:{\"label\":_vm.$t('preferences.dl_limit'),\"placeholder\":_vm.convertToKB(_vm.preferences.dl_limit),\"lazy\":\"\"},on:{\"change\":function($event){_vm.changeSettings('dl_limit', _vm.convertToBytes($event))}}}),_c('v-text-field',{attrs:{\"label\":_vm.$t('preferences.up_limit'),\"placeholder\":_vm.convertToKB(_vm.preferences.up_limit),\"lazy\":\"\"},on:{\"change\":function($event){_vm.changeSettings('up_limit', _vm.convertToBytes($event))}}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.$t('preferences.alternate_rate_limits')))]),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":_vm.$t('preferences.dl_limit'),\"placeholder\":_vm.convertToKB(_vm.preferences.alt_dl_limit),\"lazy\":\"\"},on:{\"change\":function($event){_vm.changeSettings('alt_dl_limit', _vm.convertToBytes($event))}}}),_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":_vm.$t('preferences.up_limit'),\"placeholder\":_vm.convertToKB(_vm.preferences.alt_up_limit),\"lazy\":\"\"},on:{\"change\":function($event){_vm.changeSettings('alt_up_limit', _vm.convertToBytes($event))}}}),_c('v-checkbox',{attrs:{\"label\":_vm.$t('preferences.alternate_schedule_enable_time'),\"input-value\":_vm.preferences.scheduler_enabled},on:{\"change\":function($event){return _vm.changeSettings('scheduler_enabled', $event)}}})],1)],1),(_vm.preferences.scheduler_enabled)?_c('v-row',{staticClass:\"justify-center\"},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-time-picker',{attrs:{\"value\":_vm.preferences.schedule_from_hour + ':' + _vm.preferences.schedule_from_min,\"color\":\"green lighten-1\",\"format\":\"24hr\",\"header-color\":\"primary\"},on:{\"input\":function($event){return _vm.updateSchedulerFrom($event)}}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-time-picker',{attrs:{\"value\":_vm.preferences.schedule_to_hour + ':' + _vm.preferences.schedule_to_min,\"color\":\"green lighten-1\",\"format\":\"24hr\"},on:{\"input\":function($event){return _vm.updateSchedulerTo($event)}}})],1)],1):_vm._e()],1)],1),_c('v-container',{staticClass:\"px-0\",attrs:{\"fluid\":\"\"}},[_c('v-switch',{attrs:{\"input-value\":_vm.preferences.limit_utp_rate,\"label\":_vm.$t('preferences.limit_utp_rate')},on:{\"change\":function($event){return _vm.changeSettings('limit_utp_rate', !_vm.preferences.limit_utp_rate)}}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.limit_tcp_overhead,\"label\":_vm.$t('preferences.limit_tcp_overhead')},on:{\"change\":function($event){return _vm.changeSettings('limit_tcp_overhead', !_vm.preferences.limit_tcp_overhead)}}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.limit_lan_peers,\"label\":_vm.$t('preferences.limit_lan_peers')},on:{\"change\":function($event){return _vm.changeSettings('limit_lan_peers', !_vm.preferences.limit_lan_peers)}}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport {Preferences} from '@/types'\nimport {Component} from 'vue-property-decorator'\nimport {mapActions, mapGetters} from 'vuex'\n\n@Component({\n components: {},\n computed: {\n ...mapGetters({\n preferences: 'allPreferences',\n }),\n },\n methods: {\n ...mapActions({\n updatePreferencesRequest: 'updatePreferencesRequest',\n }),\n convertToKB(value: number): string {\n return (value / 1024).toString()\n },\n convertToBytes(value: number): number {\n return value * 1024\n },\n },\n})\nexport default class SpeedSettings extends Vue {\n preferences!: Preferences\n\n updatePreferencesRequest!: (_: any) => void\n\n changeSettings(property: string, value: string | boolean | number) {\n this.updatePreferencesRequest({[property]: value})\n }\n\n updateSchedulerFrom(event: string) {\n const strings = event.split(':')\n this.updatePreferencesRequest({'schedule_from_hour': strings[0], 'schedule_from_min': strings[1]})\n }\n\n updateSchedulerTo(event: string) {\n const strings = event.split(':')\n this.updatePreferencesRequest({'schedule_to_hour': strings[0], 'schedule_to_min': strings[1]})\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpeedSettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpeedSettings.vue?vue&type=template&id=6257e5f6&scoped=true&\"\nimport script from \"./SpeedSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpeedSettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpeedSettings.vue?vue&type=style&index=0&id=6257e5f6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6257e5f6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\ninstallComponents(component, {VCheckbox,VCol,VContainer,VRow,VSwitch,VTextField,VTimePicker})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"preferences.webui_remote_control\"))+\"}\")]),_c('v-divider'),_c('v-row',{attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-subheader',[_vm._v(_vm._s(_vm.$t(\"preferences.data_update_interval\")))])],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.config.updateInterval,\"type\":\"number\",\"lazy\":\"\"},on:{\"change\":function($event){return _vm.updateConfig({key: 'updateInterval', value: $event})}}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-subheader',[_vm._v(_vm._s(_vm.$t(\"preferences.ip_address\")))])],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.web_ui_address,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('web_ui_address', $event)}}})],1),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-subheader',[_vm._v(_vm._s(_vm.$t(\"preferences.ip_port\")))])],1),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.web_ui_port,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('web_ui_port', $event)}}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-checkbox',{attrs:{\"label\":_vm.$t('preferences.display_speed_in_title'),\"input-value\":_vm.config.displaySpeedInTitle},on:{\"change\":function($event){return _vm.updateTitleSpeedConfig($event)}}})],1)],1),_c('h4',[_vm._v(_vm._s(_vm.$t(\"preferences.authentication\")))]),_c('v-divider'),_c('preference-row',{attrs:{\"i18n-key\":\"web_ui_username\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.web_ui_username,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('web_ui_username', $event)}}})],1),_c('preference-row',{attrs:{\"i18n-key\":\"web_ui_password\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.web_ui_password,\"placeholder\":_vm.$t('preferences.new_password'),\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('web_ui_password', $event)}}})],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"preferences.web_ui_max_auth_fail_count\"))+\" \")]),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.web_ui_max_auth_fail_count,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('web_ui_max_auth_fail_count', $event)}}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"preferences.web_ui_ban_duration\"))+\" \")]),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-text-field',{attrs:{\"value\":_vm.preferences.web_ui_ban_duration,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('web_ui_ban_duration', $event)}}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"preferences.web_ui_seconds\"))+\" \")])],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-checkbox',{attrs:{\"input-value\":_vm.preferences.bypass_auth_subnet_whitelist_enabled,\"label\":_vm.$t('preferences.bypass_auth_subnet_whitelist')},on:{\"change\":function($event){return _vm.changeSettings('bypass_auth_subnet_whitelist_enabled', $event)}}})],1),_c('v-col',[_c('v-checkbox',{attrs:{\"input-value\":_vm.preferences.bypass_local_auth,\"label\":_vm.$t('preferences.bypass_local_auth')},on:{\"change\":function($event){return _vm.changeSettings('bypass_local_auth', $event)}}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-textarea',{attrs:{\"value\":_vm.preferences.bypass_auth_subnet_whitelist,\"lazy\":\"\"},on:{\"change\":function($event){return _vm.changeSettings('bypass_auth_subnet_whitelist', $event)}}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport {Preferences} from '@/types'\nimport {Component} from 'vue-property-decorator'\nimport {mapActions, mapGetters, mapMutations} from 'vuex'\nimport {Config} from '@/store/config'\nimport { ConfigPayload } from '@/store/types';\nimport PreferenceRow from '@/components/dialogs/settingsDialog/PreferenceRow.vue'\n\n@Component({\n components: {PreferenceRow},\n computed: {\n ...mapGetters({\n config: 'config',\n preferences: 'allPreferences',\n }),\n },\n methods: {\n ...mapMutations([\n 'updateConfig',\n ]),\n ...mapActions({\n updatePreferencesRequest: 'updatePreferencesRequest',\n }),\n },\n})\nexport default class WebUISettings extends Vue {\n preferences!: Preferences\n config!: Config\n\n updateConfig!: (_: ConfigPayload) => void\n updatePreferencesRequest!: (_: any) => void\n\n changeSettings(property: string, value: string | boolean) {\n this.updatePreferencesRequest({[property]: value})\n }\n\n updateTitleSpeedConfig(event: boolean) {\n this.updateConfig({\n key: 'displaySpeedInTitle',\n value: event,\n })\n if(!event) {\n document.title = 'qBittorrent Web UI'\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebUISettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebUISettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebUISettings.vue?vue&type=template&id=e3db92b0&\"\nimport script from \"./WebUISettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebUISettings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VCheckbox,VCol,VContainer,VDivider,VRow,VSubheader,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',[_c('v-switch',{attrs:{\"input-value\":_vm.preferences.rss_processing_enabled,\"label\":_vm.$t('preferences.rss_processing_enabled')},on:{\"change\":function($event){return _vm.changeSettings('rss_processing_enabled', !_vm.preferences.rss_processing_enabled)}}}),_c('v-switch',{attrs:{\"input-value\":_vm.preferences.rss_auto_downloading_enabled,\"label\":_vm.$t('preferences.rss_auto_downloading_enabled')},on:{\"change\":function($event){return _vm.changeSettings('rss_auto_downloading_enabled', !_vm.preferences.rss_auto_downloading_enabled)}}}),_c('v-text-field',{attrs:{\"suffix\":\"min\",\"type\":\"number\",\"value\":_vm.preferences.rss_refresh_interval,\"label\":_vm.$t('preferences.rss_refresh_interval')},on:{\"change\":function($event){return _vm.changeSettings('rss_refresh_interval', $event)}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport {Preferences} from '@/types'\nimport {Component} from 'vue-property-decorator'\nimport {mapActions, mapGetters} from 'vuex'\n\n@Component({\n components: {},\n computed: {\n ...mapGetters({\n preferences: 'allPreferences',\n }),\n },\n methods: {\n ...mapActions({\n updatePreferencesRequest: 'updatePreferencesRequest',\n }),\n },\n})\nexport default class SpeedSettings extends Vue {\n preferences!: Preferences\n\n updatePreferencesRequest!: (_: any) => void\n\n changeSettings(property: string, value: string | boolean | number) {\n this.updatePreferencesRequest({[property]: value})\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RssSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RssSettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RssSettings.vue?vue&type=template&id=0418c586&scoped=true&\"\nimport script from \"./RssSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./RssSettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RssSettings.vue?vue&type=style&index=0&id=0418c586&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0418c586\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VContainer,VSwitch,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport {Component, Emit, Prop, Watch} from 'vue-property-decorator'\nimport DownloadSettings from './DownloadSettings.vue'\nimport SpeedSettings from './SpeedSettings.vue'\nimport {mapGetters} from 'vuex'\nimport {Preferences} from '@/types'\nimport WebUISettings from './WebUISettings.vue'\nimport RssSettings from './RssSettings.vue'\nimport {Config} from '@/store/config'\nimport { timeout } from '@/utils'\n\n@Component({\n components: {\n DownloadSettings,\n SpeedSettings,\n WebUISettings,\n RssSettings,\n },\n computed: {\n ...mapGetters({\n config: 'config',\n preferences: 'allPreferences',\n }),\n },\n methods: {},\n})\nexport default class SettingsDialog extends Vue {\n @Prop(Boolean)\n readonly value!: boolean\n preferences!: Preferences\n config!: Config\n\n preferenceUpdated = false\n tabList = ['downloads', 'speed', 'rss', 'webui']\n tab = 'download'\n\n @Watch('preferences')\n @Watch('config')\n async onPreferenceUpdate() {\n this.preferenceUpdated = true\n await timeout(3000)\n this.preferenceUpdated = false\n }\n\n @Emit('input')\n closeDialog() {\n return false\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsDialog.vue?vue&type=template&id=3eb994fd&scoped=true&\"\nimport script from \"./SettingsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SettingsDialog.vue?vue&type=style&index=0&id=3eb994fd&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eb994fd\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VFadeTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardText,VCardTitle,VDialog,VFadeTransition,VIcon,VSpacer,VTab,VTabItem,VTabs,VTabsItems})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-footer\"},[(_vm.showInfo)?_c('v-expand-transition',[_c('div',[_c('v-divider'),_c('AppFooter',{attrs:{\"phone-layout\":\"\"}})],1)]):_vm._e(),_c('v-divider'),_c('div',{staticClass:\"button-bar\"},[(_vm.phoneLayout)?[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.showInfo = !_vm.showInfo}}},[_c('v-icon',[_vm._v(\"mdi-information\")])],1)]:_vm._e(),_c('v-spacer'),_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"mdi-translate\")])],1)]}}])},[_c('v-list',[_c('v-list-item-group',{attrs:{\"color\":\"primary\"},model:{value:(_vm.currentLocale),callback:function ($$v) {_vm.currentLocale=$$v},expression:\"currentLocale\"}},_vm._l((_vm.locales),function(item){return _c('v-list-item',{key:item.value,attrs:{\"value\":item.value}},[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1)}),1)],1)],1),_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',{domProps:{\"textContent\":_vm._s(_vm.darkModeIcon)}})],1)]}}])},[_c('v-list',[_c('v-list-item-group',{attrs:{\"color\":\"primary\"},model:{value:(_vm.currentDarkMode),callback:function ($$v) {_vm.currentDarkMode=$$v},expression:\"currentDarkMode\"}},_vm._l((_vm.darkModes),function(item){return _c('v-list-item',{key:item[0],attrs:{\"value\":item[0]}},[_c('v-list-item-title',[_vm._v(_vm._s(item[1]))])],1)}),1)],1)],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.$t('trigger_application_shutdown')},on:{\"click\":_vm.triggerApplicationShutdown}},[_c('v-icon',[_vm._v(\"mdi-power-plug-off\")])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport Component from 'vue-class-component';\nimport { mapMutations, mapActions } from 'vuex';\nimport { Watch } from 'vue-property-decorator';\nimport api from '../../Api';\n\nimport { tr, translations, defaultLocale, LocaleKey } from '@/locale';\nimport { DialogType, DialogConfig, SnackBarConfig, ConfigPayload } from '@/store/types';\nimport AppFooter from '@/components/Footer.vue';\n\nconst AUTO_KEY = 'auto';\n\ntype AllLocaleKey = NonNullable | typeof AUTO_KEY;\ntype DarkModeKey = true | false | null;\n\n@Component({\n components: {\n AppFooter,\n },\n methods: {\n ...mapMutations([\n 'showSnackBar',\n 'updateConfig',\n ]),\n ...mapActions([\n 'asyncShowDialog',\n ]),\n },\n})\nexport default class DrawerFooter extends Vue {\n locales = this.buildLocales()\n currentLocale = this.$store.getters.config.locale || AUTO_KEY\n currentDarkMode = this.$store.getters.config.darkMode || AUTO_KEY\n oldLocale = this.currentLocale\n showInfo = false\n\n darkModes = [\n [false, tr('light')],\n [true, tr('dark')],\n [AUTO_KEY, tr('auto')],\n ]\n\n asyncShowDialog!: (_: DialogConfig) => Promise\n showSnackBar!: (_: SnackBarConfig) => void\n updateConfig!: (_: ConfigPayload) => void\n\n get darkModeIcon() {\n if (this.currentDarkMode == true) {\n return 'mdi-brightness-4'\n } else if (this.currentDarkMode == false) {\n return 'mdi-brightness-7'\n } else {\n return 'mdi-brightness-auto'\n }\n }\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n\n buildLocales() {\n const locales: {}[] = Object.entries(translations).map(([lang, translation]) => {\n return {\n text: translation.lang,\n value: lang,\n };\n });\n\n return [\n {\n text: tr('auto'),\n value: 'auto',\n },\n ...locales,\n ]\n }\n\n @Watch('currentLocale')\n async onCurrentLocaleChanged(locale: AllLocaleKey) {\n if (locale === this.oldLocale) {\n return;\n }\n\n const localeKey = locale === AUTO_KEY ? defaultLocale : locale\n const confirm = await this.asyncShowDialog({\n text: tr('dialog.switch_locale.msg', { lang: translations[localeKey].lang }),\n type: DialogType.OkCancel,\n });\n\n if (!confirm) {\n this.currentLocale = this.oldLocale;\n return;\n }\n\n this.updateConfig({\n key: 'locale',\n value: locale === AUTO_KEY ? null : locale,\n });\n\n this.showSnackBar({\n text: tr('label.reloading'),\n })\n\n location.reload();\n }\n\n @Watch('currentDarkMode')\n onDarkModeChanged(mode: DarkModeKey | typeof AUTO_KEY) {\n this.updateConfig({\n key: 'darkMode',\n value: mode == AUTO_KEY ? null : mode,\n });\n }\n\n async triggerApplicationShutdown() {\n const v = await this.asyncShowDialog({\n title: tr('dialog.trigger_exit_qb.title'),\n text: tr('dialog.trigger_exit_qb.text'),\n type: DialogType.OkCancel,\n });\n\n if (!v) {\n return;\n }\n await api.shutdownApplication();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport { mapGetters, mapState, mapMutations } from 'vuex';\nimport { registerProtocolHandler, checkDownloadUrl } from './protocolHandler';\n\nimport GlobalDialog from './components/GlobalDialog.vue';\nimport GlobalSnackBar from './components/GlobalSnackBar.vue';\n\nimport AddForm from './components/AddForm.vue';\nimport Drawer from './components/Drawer.vue';\nimport LoginForm from './components/LoginForm.vue';\nimport MainToolbar from './components/MainToolbar.vue';\nimport Torrents from './components/Torrents.vue';\nimport AppFooter from './components/Footer.vue';\nimport LogsDialog from './components/dialogs/LogsDialog.vue';\nimport RssDialog from './components/dialogs/RssDialog.vue';\nimport SearchDialog from './components/dialogs/searchDialog/SearchDialog.vue';\nimport SettingsDialog from './components/dialogs/settingsDialog/SettingsDialog.vue';\nimport DrawerFooter from './components/drawer/DrawerFooter.vue';\n\n\nimport api from './Api';\nimport Component from 'vue-class-component';\nimport { Watch } from 'vue-property-decorator';\nimport { MainData } from './types';\nimport { Config } from './store/config';\nimport Api from './Api';\nimport {formatSize} from '@/filters'\n\nlet appWrapEl: HTMLElement;\n\n@Component({\n components: {\n AddForm,\n Drawer,\n LoginForm,\n Torrents,\n AppFooter,\n LogsDialog,\n MainToolbar,\n GlobalDialog,\n GlobalSnackBar,\n RssDialog,\n SearchDialog,\n DrawerFooter,\n SettingsDialog,\n },\n computed: {\n ...mapState([\n 'mainData',\n 'rid',\n 'preferences',\n 'needAuth',\n ]),\n ...mapGetters(['config']),\n },\n methods: {\n ...mapMutations([\n 'updateMainData',\n 'updatePreferences',\n 'setPasteUrl',\n 'updateNeedAuth',\n ]),\n },\n})\nexport default class App extends Vue {\n drawer = !this.phoneLayout\n drawerOptions = {\n showLogs: false,\n showRss: false,\n showSettings: false,\n }\n task = 0\n mql?: MediaQueryList\n\n mainData!: MainData\n rid!: number\n preferences!: any\n config!: Config\n needAuth!: boolean\n\n updateMainData!: (_: any) => void\n updatePreferences!: (_: any) => void\n setPasteUrl!: (_: any) => void\n updateNeedAuth!: (_: boolean) => void\n\n get phoneLayout() {\n return this.$vuetify.breakpoint.xsOnly;\n }\n\n initProtocolHandler() {\n registerProtocolHandler();\n const url = checkDownloadUrl();\n\n if (url) {\n this.setPasteUrl({\n url,\n });\n }\n }\n\n async created() {\n this.initProtocolHandler();\n\n await this.getInitData();\n appWrapEl = (this.$refs.app as any).$el.querySelector('.v-application--wrap');\n appWrapEl.addEventListener('paste', this.onPaste);\n }\n\n beforeDestroy() {\n if (this.task) {\n clearTimeout(this.task);\n }\n appWrapEl.removeEventListener('paste', this.onPaste);\n }\n\n async getInitData() {\n const href = location.href;\n if (!this.config.baseUrl) {\n if (href.includes(\"czbix.github.io\") || href.includes(\"localhost\")) {\n this.updateNeedAuth(true);\n return;\n } else {\n Api.changeBaseUrl(href);\n }\n } else {\n Api.changeBaseUrl(this.config.baseUrl);\n }\n\n try {\n await this.getMainData();\n } catch (e) {\n this.updateNeedAuth(true);\n return;\n }\n\n await this.getPreferences();\n }\n\n async getPreferences() {\n const resp = await api.getAppPreferences();\n\n this.updatePreferences(resp.data);\n }\n\n async getMainData() {\n const rid = this.rid ? this.rid : undefined;\n const resp = await api.getMainData(rid);\n const mainData = resp.data;\n\n this.updateMainData(mainData);\n if(this.config.displaySpeedInTitle) {\n const upInfoSpeed = mainData.server_state.up_info_speed\n const dlInfoSpeed = mainData.server_state.dl_info_speed\n let dl = '', up = ''\n if (dlInfoSpeed > 1024) {\n dl = `D ${formatSize(dlInfoSpeed)}/s`\n }\n if (upInfoSpeed > 1024) {\n up = `U ${formatSize(upInfoSpeed)}/s`\n }\n document.title = `[${up} ${dl}] qBittorrent Web UI`\n }\n this.task = setTimeout(this.getMainData, this.config.updateInterval);\n }\n\n onPaste(e: ClipboardEvent) {\n if ((e.target as HTMLElement).tagName === 'INPUT') {\n return;\n }\n\n const text = e.clipboardData!.getData('text');\n if (text) {\n this.setPasteUrl({\n url: text,\n });\n }\n }\n\n @Watch('needAuth')\n onNeedAuth(v: boolean) {\n if (!v) {\n this.getInitData();\n }\n }\n\n @Watch('config.darkMode', {immediate: true})\n onDarkMode(mode: any) {\n const { theme } = this.$vuetify;\n\n if (mode != null) {\n if (this.mql) {\n this.mql.removeListener(null)\n this.mql = undefined\n }\n theme.dark = mode\n return\n }\n\n this.mql = window.matchMedia('(prefers-color-scheme: dark)');\n this.mql.addListener((e: MediaQueryListEvent) => {\n theme.dark = e.matches\n })\n theme.dark = this.mql.matches\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DrawerFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DrawerFooter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DrawerFooter.vue?vue&type=template&id=521b95f4&scoped=true&\"\nimport script from \"./DrawerFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./DrawerFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DrawerFooter.vue?vue&type=style&index=0&id=521b95f4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"521b95f4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpandTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VDivider,VExpandTransition,VIcon,VList,VListItem,VListItemGroup,VListItemTitle,VMenu,VSpacer})\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0d9d7390&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=0d9d7390&lang=scss&scoped=true&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d9d7390\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\ninstallComponents(component, {VApp,VFooter,VMain,VNavigationDrawer})\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready () {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB',\n )\n },\n registered () {\n console.log('Service worker has been registered.')\n },\n cached () {\n console.log('Content has been cached for offline use.')\n },\n updatefound () {\n console.log('New content is downloading.')\n },\n updated () {\n console.log('New content is available; please refresh.')\n },\n offline () {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error (error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import Vue from 'vue';\nimport './plugins/i18n';\nimport './plugins/composition-api';\nimport vuetify from './plugins/vuetify';\n\nimport store from './store';\n// import router from './router';\nimport './filters';\nimport './directives';\nimport './locale';\n\nimport './buildInfo';\n\nimport App from './App.vue';\n\nimport 'roboto-fontface/css/roboto/roboto-fontface.css';\nimport '@mdi/font/css/materialdesignicons.css';\nimport './registerServiceWorker';\n\nVue.config.productionTip = false;\n\nnew Vue({\n store,\n vuetify,\n render: h => h(App),\n}).$mount('#app');\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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./DownloadSettings.vue?vue&type=style&index=0&id=2e1e1380&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SearchDialog.vue?vue&type=style&index=0&id=2425d8a7&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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./MainToolbar.vue?vue&type=style&index=0&id=d37eb7d4&lang=scss&scoped=true&\""],"sourceRoot":""}