diff --git a/themes-default/slim/test/specs/app-link.spec.js b/themes-default/slim/test/specs/app-link.spec.js
index 7e9a5c281f..934d15241d 100644
--- a/themes-default/slim/test/specs/app-link.spec.js
+++ b/themes-default/slim/test/specs/app-link.spec.js
@@ -48,10 +48,10 @@ describe('AppLink.test.js', () => {
expect(wrapper.element).toMatchSnapshot();
expect(wrapper.attributes().href).toEqual('https://google.com');
expect(wrapper.attributes().target).toEqual('_blank');
- expect(wrapper.attributes().rel).toEqual('noreferrer');
+ expect(wrapper.attributes().rel).toEqual('noreferrer noopener');
});
- it('renders anonymised external link', () => {
+ it.skip('renders anonymised external link', () => {
const wrapper = mount(AppLink, {
localVue,
store,
diff --git a/themes-default/slim/views/addShows_addExistingShow.mako b/themes-default/slim/views/addShows_addExistingShow.mako
deleted file mode 100644
index 9c7fe5ee21..0000000000
--- a/themes-default/slim/views/addShows_addExistingShow.mako
+++ /dev/null
@@ -1,306 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- import json
-
- from medusa import app
- from medusa.indexers.api import indexerApi
- from medusa.indexers.config import indexerConfig
-
- from six import iteritems, text_type as str
-%>
-<%block name="scripts">
-
-
-%block>
-<%block name="content">
-
-
-%block>
diff --git a/themes-default/slim/views/addShows_newShow.mako b/themes-default/slim/views/addShows_newShow.mako
deleted file mode 100644
index 45ae0e41a3..0000000000
--- a/themes-default/slim/views/addShows_newShow.mako
+++ /dev/null
@@ -1,632 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- import json
-
- from medusa import app
- from medusa.indexers.api import indexerApi
- from medusa.indexers.config import indexerConfig
-
- from six import iteritems, text_type
-%>
-<%block name="scripts">
-<%
- valid_indexers = {
- '0': {
- 'name': 'All Indexers'
- }
- }
- valid_indexers.update({
- text_type(indexer): {
- 'name': config['name'],
- 'showUrl': config['show_url'],
- 'icon': config['icon'],
- 'identifier': config['identifier']
- }
- for indexer, config in iteritems(indexerConfig)
- if config.get('enabled', None)
- })
-%>
-
-%block>
-<%block name="content">
-
-
-
-
-
-
-
Adding show {{showPathPreposition}}
-
-
-
-
-
-
-
({{ otherShows.length }} more {{ otherShows.length > 1 ? 'shows' : 'show' }} left)
-
(last show)
-
-
-
-
-%block>
diff --git a/themes-default/slim/views/addShows_recommended.mako b/themes-default/slim/views/addShows_recommended.mako
deleted file mode 100644
index 73e5482803..0000000000
--- a/themes-default/slim/views/addShows_recommended.mako
+++ /dev/null
@@ -1,170 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%block name="scripts">
-% if enable_anime_options:
-
-% endif
-
-%block>
-<%block name="content">
-
-
-
-
-
-
-
-
- Configure Show Options
-
-
- Recommended shows will be added using your default options. Use this if you want to change the options for that show.
-
-
-
-
-
-
-
- Manage Directories
- Customize Options
-
-
-
-
-
-
- <%include file="/inc_addShowOptions.mako"/>
-
-
-
-
-
-
-
-
-
- Sort By:
-
- Name
- Original
- Votes
- % Rating
- % Rating > Votes
-
-
-
-
- Sort Order:
-
- Asc
- Desc
-
-
-
-
-
-
-
-
- % if not recommended_shows:
-
-
Fetching of Recommender Data failed.
- Exception:
-
${exception}
-
- % else:
-
- % if not context.get('trakt_blacklist'):
- <% trakt_b = False %>
- % else:
- <% trakt_b = context.get('trakt_blacklist') %>
- % endif
-
- % if not context.get('removed_from_medusa'):
- <% removed_from_medusa = [] %>
- % else:
- <% removed_from_medusa = context.get('removed_from_medusa') %>
- % endif
-
- % for cur_show in recommended_shows:
-
- <% cur_rating = 0 %>
- <% cur_votes = 0 %>
-
- % if cur_show.rating:
- <% cur_rating = cur_show.rating %>
- % endif
-
- % if cur_show.votes:
- <% cur_votes = cur_show.votes %>
- % endif
-
-
-
-
-
-
-
-
-
-
-
- ${cur_show.title}
-
-
-
-
${int(float(cur_rating)*10)}%
- % if cur_show.is_anime and cur_show.ids.get('aid'):
-
-
-
- % endif
-
-
${cur_votes} votes
-
-
- % if cur_show.show_in_list:
-
In List
- % else:
-
Add
- % endif
- % if cur_show.mapped_series_id in removed_from_medusa:
-
Watched
- % endif
- % if trakt_b and not (cur_show.show_in_list or cur_show.mapped_series_id in removed_from_medusa):
-
Blacklist
- % endif
-
-
-
-
- % endfor
- % endif
-
-
-
-%block>
diff --git a/themes-default/slim/views/addShows_trendingShows.mako b/themes-default/slim/views/addShows_trendingShows.mako
deleted file mode 100644
index b9f09135f0..0000000000
--- a/themes-default/slim/views/addShows_trendingShows.mako
+++ /dev/null
@@ -1,110 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- from medusa import app
-%>
-<%block name="scripts">
-% if enable_anime_options:
-
-% endif
-
-%block>
-<%block name="content">
-
-
-
-
-
-
-
-
- Configure Show Options
-
-
- Recommended shows will be added using your default options. Use this if you want to change the options for that show.
-
-
-
-
-
-
-
- Manage Directories
- Customize Options
-
-
-
-
-
-
- <%include file="/inc_addShowOptions.mako"/>
-
-
-
-
-
-
-
-
- Sort By:
-
- Name
- Original
- Votes
- % Rating
- % Rating > Votes
-
- Sort Order:
-
-
-
- Asc
- Desc
-
-
-
- Select Trakt List:
-
- Most Anticipated
- New Shows
- Season Premieres
- Trending
- Popular
- Most Watched
- Most Played
- Most Collected
- % if app.TRAKT_ACCESS_TOKEN:
- Recommended
- % endif
-
-
-
-
-
-
-
-% if traktList:
-
-% endif
-%block>
diff --git a/themes-default/slim/views/config_providers.mako b/themes-default/slim/views/config_providers.mako
deleted file mode 100644
index e8978de881..0000000000
--- a/themes-default/slim/views/config_providers.mako
+++ /dev/null
@@ -1,1735 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- from medusa import app
- from medusa.providers import sorted_provider_list
- from medusa.providers.generic_provider import GenericProvider
- from medusa.providers.torrent.torznab.torznab import TorznabProvider
-%>
-<%block name="scripts">
-
-%block>
-<%block name="content">
-
-
-%block>
diff --git a/themes-default/slim/views/history.mako b/themes-default/slim/views/history.mako
deleted file mode 100644
index 9f3cbb9adc..0000000000
--- a/themes-default/slim/views/history.mako
+++ /dev/null
@@ -1,219 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- from medusa import app
- import os.path
- from datetime import datetime
- import re
- import time
- from random import choice
- from medusa import providers
- from medusa.sbdatetime import sbdatetime
- from medusa.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED, DOWNLOADED, SUBTITLED
- from medusa.common import statusStrings
- from medusa.show.history import History
- from medusa.providers.generic_provider import GenericProvider
-%>
-<%block name="scripts">
-
-
-%block>
diff --git a/themes-default/slim/views/home_postprocess.mako b/themes-default/slim/views/home_postprocess.mako
deleted file mode 100644
index 087dbaf740..0000000000
--- a/themes-default/slim/views/home_postprocess.mako
+++ /dev/null
@@ -1,124 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- import pkgutil
- from medusa import app
-%>
-<%block name="scripts">
-
-
-%block>
diff --git a/themes-default/slim/views/inc_addShowOptions.mako b/themes-default/slim/views/inc_addShowOptions.mako
deleted file mode 100644
index abc9185e95..0000000000
--- a/themes-default/slim/views/inc_addShowOptions.mako
+++ /dev/null
@@ -1,93 +0,0 @@
-<%
- from medusa import app
- from medusa.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED
- from medusa.common import Quality, qualityPresets, qualityPresetStrings, statusStrings
- from medusa import subtitles
-%>
-
-
- Quality
-
-
-
-
-
- % if app.USE_SUBTITLES:
-
-
- Subtitles
-
-
- Download subtitles for this show?
-
-
-
- % endif
-
-
- Status for previously aired episodes
-
-
- % for cur_status in [SKIPPED, WANTED, IGNORED]:
- ${statusStrings[cur_status]}
- % endfor
-
-
-
-
-
-
- Status for all future episodes
-
-
- % for cur_status in [SKIPPED, WANTED, IGNORED]:
- ${statusStrings[cur_status]}
- % endfor
-
-
-
-
-
-
- Season Folders
-
-
- Group episodes by season folder?
-
-
-
-% if enable_anime_options:
-
-
- Anime
-
-
- Is this show an Anime?
-
-
-
-% endif
-
-
- Scene Numbering
-
-
- Is this show scene numbered?
-
-
-
-
-
-
-
-
- Use current values as the defaults
-
-
-
-% if enable_anime_options:
- <% import medusa.black_and_white_list %>
- <%include file="/inc_blackwhitelist.mako"/>
-% else:
-
-% endif
diff --git a/themes-default/slim/views/inc_blackwhitelist.mako b/themes-default/slim/views/inc_blackwhitelist.mako
deleted file mode 100644
index 28110acd69..0000000000
--- a/themes-default/slim/views/inc_blackwhitelist.mako
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
Fansub Groups:
-
-
Select your preferred fansub groups from the Available Groups and add them to the Whitelist . Add groups to the Blacklist to ignore them.
-
The Whitelist is checked before the Blacklist .
-
Groups are shown as Name | Rating | Number of subbed episodes .
-
You may also add any fansub group not listed to either list manually.
-
When doing this please note that you can only use groups listed on anidb for this anime.
- If a group is not listed on anidb but subbed this anime, please correct anidb's data.
-
-
-
diff --git a/themes-default/slim/views/layouts/main.mako b/themes-default/slim/views/layouts/main.mako
index 88968a83cd..899845ab56 100644
--- a/themes-default/slim/views/layouts/main.mako
+++ b/themes-default/slim/views/layouts/main.mako
@@ -100,11 +100,6 @@
-
-
-
-
-
diff --git a/themes-default/slim/views/partials/home/poster.mako b/themes-default/slim/views/partials/home/poster.mako
deleted file mode 100644
index 69c0bf6c41..0000000000
--- a/themes-default/slim/views/partials/home/poster.mako
+++ /dev/null
@@ -1,179 +0,0 @@
-<%!
- import calendar
- import re
-
- from medusa import app
- from medusa import sbdatetime
- from medusa import network_timezones
- from medusa.helpers import remove_article
- from medusa.helper.common import pretty_file_size
- from medusa.scene_numbering import get_xem_numbering_for_show
-%>
-
-
-
-% for cur_show_list in show_lists:
- <% cur_list_type = cur_show_list[0] %>
- <% my_show_list = list(cur_show_list[1]) %>
- % if app.ANIME_SPLIT_HOME and app.ANIME_SPLIT_HOME_IN_TABS:
-
- % endif
-
- % if not (app.ANIME_SPLIT_HOME and app.ANIME_SPLIT_HOME_IN_TABS):
- % if len(show_lists) > 1:
-
- % endif
- % endif
-
- % for cur_loading_show in app.show_queue_scheduler.action.loadingShowList:
- % if cur_loading_show.show is None:
-
-
-
-
Loading... (${cur_loading_show.show_name})
-
-
- % endif
- % endfor
- <%
- def titler(x):
- return (remove_article(x), x)[not x or app.SORT_ARTICLE]
-
- my_show_list.sort(key=lambda x: titler(x.name).lower())
- %>
- % for cur_show in my_show_list:
- <%
- cur_airs_next = ''
- cur_snatched = 0
- cur_downloaded = 0
- cur_total = 0
- download_stat_tip = ''
- display_status = cur_show.status
- if None is not display_status:
- if re.search(r'(?i)(?:new|returning)\s*series', cur_show.status):
- display_status = 'Continuing'
- elif re.search(r'(?i)(?:nded)', cur_show.status):
- display_status = 'Ended'
- if (cur_show.indexer, cur_show.series_id) in show_stat:
- series = (cur_show.indexer, cur_show.series_id)
- cur_airs_next = show_stat[series]['ep_airs_next']
- cur_snatched = show_stat[series]['ep_snatched']
- if not cur_snatched:
- cur_snatched = 0
- cur_downloaded = show_stat[series]['ep_downloaded']
- if not cur_downloaded:
- cur_downloaded = 0
- cur_total = show_stat[series]['ep_total']
- if not cur_total:
- cur_total = 0
- download_stat = str(cur_downloaded)
- download_stat_tip = "Downloaded: " + str(cur_downloaded)
- if cur_snatched:
- download_stat = download_stat + "+" + str(cur_snatched)
- download_stat_tip = download_stat_tip + "
" + "Snatched: " + str(cur_snatched)
- download_stat = download_stat + " / " + str(cur_total)
- download_stat_tip = download_stat_tip + "
" + "Total: " + str(cur_total)
- nom = cur_downloaded
- if cur_total:
- den = cur_total
- else:
- den = 1
- download_stat_tip = "Unaired"
- progressbar_percent = nom * 100 // den
- data_date = '6000000000.0'
- if cur_airs_next:
- data_date = calendar.timegm(sbdatetime.sbdatetime.convert_to_setting(network_timezones.parse_date_time(cur_airs_next, cur_show.airs, cur_show.network)).timetuple())
- elif None is not display_status:
- if 'nded' not in display_status and 1 == int(cur_show.paused):
- data_date = '5000000500.0'
- elif 'ontinu' in display_status:
- data_date = '5000000000.0'
- elif 'nded' in display_status:
- data_date = '5000000100.0'
- %>
-
-
-
-
-
-
-
-
-
- % endfor
-
-
- % if app.ANIME_SPLIT_HOME and app.ANIME_SPLIT_HOME_IN_TABS:
-
- % endif
-% endfor
-
diff --git a/themes-default/slim/views/partials/schedule/banner.mako b/themes-default/slim/views/partials/schedule/banner.mako
deleted file mode 100644
index ec0d191954..0000000000
--- a/themes-default/slim/views/partials/schedule/banner.mako
+++ /dev/null
@@ -1,157 +0,0 @@
-<%!
- import datetime
-
- from medusa import app
- from medusa.indexers.api import indexerApi
- from medusa.indexers.utils import indexer_id_to_name
- from medusa.sbdatetime import sbdatetime
-%>
-
-<%
- cur_segment = None
- too_late_header = False
- missed_header = False
- today_header = False
- show_div = 'ep_listing listing-default'
-%>
-
-% if app.COMING_EPS_SORT == 'show':
-
-% endif
-% for cur_result in results:
-<%
- cur_indexer = int(cur_result['indexer'])
- if bool(cur_result['paused']) and not app.COMING_EPS_DISPLAY_PAUSED:
- continue
- run_time = cur_result['runtime']
- cur_ep_airdate = cur_result['localtime'].date()
- if run_time:
- cur_ep_enddate = cur_result['localtime'] + datetime.timedelta(minutes = run_time)
- else:
- cur_ep_enddate = cur_result['localtime']
-%>
- % if app.COMING_EPS_SORT == 'network':
- <% show_network = ('no network', cur_result['network'])[bool(cur_result['network'])] %>
- % if cur_segment != show_network:
-
-
${show_network}
-
- <% cur_segment = cur_result['network'] %>
- % endif
- % if cur_ep_enddate < today:
- <% show_div = 'ep_listing listing-overdue' %>
- % elif cur_ep_airdate >= next_week.date():
- <% show_div = 'ep_listing listing-toofar' %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
- <% show_div = 'ep_listing listing-current' %>
- % else:
- <% show_div = 'ep_listing listing-default' %>
- % endif
- % endif
- % elif app.COMING_EPS_SORT == 'date':
- % if cur_segment != cur_ep_airdate:
- % if cur_ep_enddate < today and cur_ep_airdate != today.date() and not missed_header:
-
Missed
- <% missed_header = True %>
- % elif cur_ep_airdate >= next_week.date() and not too_late_header:
-
Later
- <% too_late_header = True %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
-
${sbdatetime.sbftime(dt=cur_ep_airdate, t_preset='%A').capitalize()}[Today]
- <% today_header = True %>
- % else:
-
${sbdatetime.sbftime(dt=cur_ep_airdate, t_preset='%A').capitalize()}
- % endif
- % endif
- <% cur_segment = cur_ep_airdate %>
- % endif
- % if cur_ep_airdate == today.date() and not today_header:
-
-
${sbdatetime.sbftime(dt=cur_ep_airdate, t_preset='%A').capitalize()} [Today]
-
- <% today_header = True %>
- % endif
- % if cur_ep_enddate < today:
- <% show_div = 'ep_listing listing-overdue' %>
- % elif cur_ep_airdate >= next_week.date():
- <% show_div = 'ep_listing listing-toofar' %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
- <% show_div = 'ep_listing listing-current' %>
- % else:
- <% show_div = 'ep_listing listing-default'%>
- % endif
- % endif
- % elif app.COMING_EPS_SORT == 'show':
- % if cur_ep_enddate < today:
- <% show_div = 'ep_listing listing-overdue listingradius' %>
- % elif cur_ep_airdate >= next_week.date():
- <% show_div = 'ep_listing listing-toofar listingradius' %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
- <% show_div = 'ep_listing listing-current listingradius' %>
- % else:
- <% show_div = 'ep_listing listing-default listingradius' %>
- % endif
- % endif
- % endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${cur_result['show_name']}${('', ' [paused] ')[bool(cur_result['paused'])]}
-
-
-
-% if cur_result['imdb_id']:
-
-
-
-% endif
-
-
-
-
-
- Next Episode: ${'S%02iE%02i' % (int(cur_result['season']), int(cur_result['episode']))} - ${cur_result['name']}
-
- Airs: ${sbdatetime.sbfdatetime(cur_result['localtime'])} ${('', ' on %s ' % cur_result['network'])[bool(cur_result['network'])]}
-
-
- Quality:
-
-
- ##
- ##
- ##
- ##
-
-% if cur_result['description']:
-
Plot:
-
${cur_result['description']}
-% else:
-
Plot:
-
-% endif
-
-
-
-
-
-
-
-% endfor
-
diff --git a/themes-default/slim/views/partials/schedule/calendar.mako b/themes-default/slim/views/partials/schedule/calendar.mako
deleted file mode 100644
index dd88c8e472..0000000000
--- a/themes-default/slim/views/partials/schedule/calendar.mako
+++ /dev/null
@@ -1,64 +0,0 @@
-<%!
- import datetime
- import time
- import re
-
- from medusa import app
- from medusa.indexers.utils import indexer_id_to_name
- from medusa.sbdatetime import sbdatetime
-%>
-
-<% dates = [today.date() + datetime.timedelta(days = i) for i in range(7)] %>
-<% tbl_day = 0 %>
-
-
- % for day in dates:
- <% tbl_day += 1 %>
-
- ${sbdatetime.sbftime(dt=day, t_preset='%A').capitalize()}
-
- <% day_has_show = False %>
- % for cur_result in results:
- % if bool(cur_result['paused']) and not app.COMING_EPS_DISPLAY_PAUSED:
- <% continue %>
- % endif
- <% cur_indexer = int(cur_result['indexer']) %>
- <% run_time = cur_result['runtime'] %>
- <% airday = cur_result['localtime'].date() %>
- % if airday == day:
- % try:
- <% day_has_show = True %>
- <% airtime = sbdatetime.fromtimestamp(time.mktime(cur_result['localtime'].timetuple())).sbftime() %>
- % if app.TRIM_ZERO:
- <% airtime = re.sub(r'0(\d:\d\d)', r'\1', airtime, 0, re.IGNORECASE | re.MULTILINE) %>
- % endif
- % except OverflowError:
- <% airtime = "Invalid" %>
- % endtry
-
-
-
-
-
- ${airtime} on ${cur_result["network"]}
-
-
- ${'S%02iE%02i' % (int(cur_result['season']), int(cur_result['episode']))} - ${cur_result['name']}
-
-
-
-
- % endif
- % endfor
- % if not day_has_show:
- No shows for this day
- % endif
-
-
- % endfor
-
-
diff --git a/themes-default/slim/views/partials/schedule/list.mako b/themes-default/slim/views/partials/schedule/list.mako
deleted file mode 100644
index 2b0b61aae2..0000000000
--- a/themes-default/slim/views/partials/schedule/list.mako
+++ /dev/null
@@ -1,103 +0,0 @@
-<%!
- import datetime
-
- from medusa import app, sbdatetime
- from medusa.indexers.api import indexerApi
- from medusa.indexers.utils import indexer_id_to_name
-%>
-
-<% show_div = 'listing-default' %>
-
-
-
- Airdate (${('local', 'network')[app.TIMEZONE_DISPLAY == 'network']})
- Ends
- Show
- Next Ep
- Next Ep Name
- Network
- Run time
- Quality
- Indexers
- Search
-
-
-
-% for cur_result in results:
-<%
- cur_indexer = int(cur_result['indexer'])
- run_time = cur_result['runtime']
- if bool(cur_result['paused']) and not app.COMING_EPS_DISPLAY_PAUSED:
- continue
- cur_ep_airdate = cur_result['localtime'].date()
- if run_time:
- cur_ep_enddate = cur_result['localtime'] + datetime.timedelta(minutes = run_time)
- if cur_ep_enddate < today:
- show_div = 'listing-overdue'
- elif cur_ep_airdate >= next_week.date():
- show_div = 'listing-toofar'
- elif cur_ep_airdate >= today.date() and cur_ep_airdate < next_week.date():
- if cur_ep_airdate == today.date():
- show_div = 'listing-current'
- else:
- show_div = 'listing-default'
- else:
- cur_ep_enddate = cur_result['localtime']
-%>
-
-
- <% airDate = sbdatetime.sbdatetime.convert_to_setting(cur_result['localtime']) %>
- ${sbdatetime.sbdatetime.sbfdatetime(airDate)}
-
-
- <% ends = sbdatetime.sbdatetime.convert_to_setting(cur_ep_enddate) %>
- ${sbdatetime.sbdatetime.sbfdatetime(ends)}
-
- ${cur_result['show_name']}
-% if bool(cur_result['paused']):
- [paused]
-% endif
-
-
- ${'S%02iE%02i' % (int(cur_result['season']), int(cur_result['episode']))}
-
-
-
- ${cur_result['name']}
-
-
- ${cur_result['network']}
-
-
- ${run_time}min
-
-
-
-
-
- % if cur_result['imdb_id']:
-
-
-
- % endif
-
-
-
-
-
-
-
-
-
-% endfor
-
-
-
-  
-
-
-
-
\ No newline at end of file
diff --git a/themes-default/slim/views/partials/schedule/poster.mako b/themes-default/slim/views/partials/schedule/poster.mako
deleted file mode 100644
index ad22fba4dc..0000000000
--- a/themes-default/slim/views/partials/schedule/poster.mako
+++ /dev/null
@@ -1,155 +0,0 @@
-<%!
- import datetime
-
- from medusa import app
- from medusa.indexers.api import indexerApi
- from medusa.indexers.utils import indexer_id_to_name
- from medusa.sbdatetime import sbdatetime
-%>
-
-<%
- cur_segment = None
- too_late_header = False
- missed_header = False
- today_header = False
- show_div = 'ep_listing listing-default'
-%>
-
-% if app.COMING_EPS_SORT == 'show':
-
-% endif
-% for cur_result in results:
-<%
- cur_indexer = int(cur_result['indexer'])
- if bool(cur_result['paused']) and not app.COMING_EPS_DISPLAY_PAUSED:
- continue
- run_time = cur_result['runtime']
- cur_ep_airdate = cur_result['localtime'].date()
- if run_time:
- cur_ep_enddate = cur_result['localtime'] + datetime.timedelta(minutes = run_time)
- else:
- cur_ep_enddate = cur_result['localtime']
-%>
- % if app.COMING_EPS_SORT == 'network':
- <% show_network = ('no network', cur_result['network'])[bool(cur_result['network'])] %>
- % if cur_segment != show_network:
-
-
${show_network}
-
- <% cur_segment = cur_result['network'] %>
- % endif
- % if cur_ep_enddate < today:
- <% show_div = 'ep_listing listing-overdue' %>
- % elif cur_ep_airdate >= next_week.date():
- <% show_div = 'ep_listing listing-toofar' %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
- <% show_div = 'ep_listing listing-current' %>
- % else:
- <% show_div = 'ep_listing listing-default' %>
- % endif
- % endif
- % elif app.COMING_EPS_SORT == 'date':
- % if cur_segment != cur_ep_airdate:
- % if cur_ep_enddate < today and cur_ep_airdate != today.date() and not missed_header:
-
Missed
- <% missed_header = True %>
- % elif cur_ep_airdate >= next_week.date() and not too_late_header:
-
Later
- <% too_late_header = True %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
-
${sbdatetime.sbftime(dt=cur_ep_airdate, t_preset='%A').capitalize()}[Today]
- <% today_header = True %>
- % else:
-
${sbdatetime.sbftime(dt=cur_ep_airdate, t_preset='%A').capitalize()}
- % endif
- % endif
- <% cur_segment = cur_ep_airdate %>
- % endif
- % if cur_ep_airdate == today.date() and not today_header:
-
-
${sbdatetime.sbftime(dt=cur_ep_airdate, t_preset='%A').capitalize()} [Today]
-
- <% today_header = True %>
- % endif
- % if cur_ep_enddate < today:
- <% show_div = 'ep_listing listing-overdue' %>
- % elif cur_ep_airdate >= next_week.date():
- <% show_div = 'ep_listing listing-toofar' %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
- <% show_div = 'ep_listing listing-current' %>
- % else:
- <% show_div = 'ep_listing listing-default'%>
- % endif
- % endif
- % elif app.COMING_EPS_SORT == 'show':
- % if cur_ep_enddate < today:
- <% show_div = 'ep_listing listing-overdue listingradius' %>
- % elif cur_ep_airdate >= next_week.date():
- <% show_div = 'ep_listing listing-toofar listingradius' %>
- % elif cur_ep_enddate >= today and cur_ep_airdate < next_week.date():
- % if cur_ep_airdate == today.date():
- <% show_div = 'ep_listing listing-current listingradius' %>
- % else:
- <% show_div = 'ep_listing listing-default listingradius' %>
- % endif
- % endif
- % endif
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${('', '[paused] ')[bool(cur_result['paused'])]}
-
-
-
-% if cur_result['imdb_id']:
-
-
-
-% endif
-
-
-
-
-
- Next Episode: ${'S%02iE%02i' % (int(cur_result['season']), int(cur_result['episode']))} - ${cur_result['name']}
-
- Airs: ${sbdatetime.sbfdatetime(cur_result['localtime'])} ${('', ' on %s ' % cur_result['network'])[bool(cur_result['network'])]}
-
-
- Quality:
-
-
- ##
- ##
- ##
- ##
-
-% if cur_result['description']:
-
Plot:
-
${cur_result['description']}
-% else:
-
Plot:
-
-% endif
-
-
-
-
-
-
-
-% endfor
-
diff --git a/themes-default/slim/views/schedule.mako b/themes-default/slim/views/schedule.mako
deleted file mode 100644
index cc045cd0f7..0000000000
--- a/themes-default/slim/views/schedule.mako
+++ /dev/null
@@ -1,87 +0,0 @@
-<%inherit file="/layouts/main.mako"/>
-<%!
- from random import choice
-
- from medusa import app
-%>
-<%block name="scripts">
-
-
-
-
-%block>
\ No newline at end of file
diff --git a/themes-default/slim/yarn.lock b/themes-default/slim/yarn.lock
index 919b398e26..2b48d26d7e 100644
--- a/themes-default/slim/yarn.lock
+++ b/themes-default/slim/yarn.lock
@@ -1299,6 +1299,13 @@
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.35"
+"@fortawesome/free-regular-svg-icons@5.15.3":
+ version "5.15.3"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.3.tgz#1ec4f2410ff638db549c5c5484fc60b66407dbe6"
+ integrity sha512-q4/p8Xehy9qiVTdDWHL4Z+o5PCLRChePGZRTXkl+/Z7erDVL8VcZUuqzJjs6gUz6czss4VIPBRdCz6wP37/zMQ==
+ dependencies:
+ "@fortawesome/fontawesome-common-types" "^0.2.35"
+
"@fortawesome/free-solid-svg-icons@5.15.3":
version "5.15.3"
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz#52eebe354f60dc77e0bde934ffc5c75ffd04f9d8"
@@ -11615,6 +11622,11 @@ value-or-function@^3.0.0:
resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
+vanilla-lazyload@12.0.0:
+ version "12.0.0"
+ resolved "https://registry.yarnpkg.com/vanilla-lazyload/-/vanilla-lazyload-12.0.0.tgz#5673fd80dfa20c554afe46891b3450f596f953b1"
+ integrity sha512-KlcDPYUHRKXp4Ighh3294xzGZiZxeFeddNBRtD5TCD7+x0A1jzeaO0IO7eLFjWgD7gDS+qfL3qo8tWOGhLER/A==
+
vendors@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
@@ -11773,6 +11785,11 @@ vue-js-toggle-button@1.3.3:
resolved "https://registry.yarnpkg.com/vue-js-toggle-button/-/vue-js-toggle-button-1.3.3.tgz#d603089039e41d45e607355ad2e0478c6a52aceb"
integrity sha512-0b920oztgK+1SqlYF26MPiT28hAieL5aAQE7u21XEym5ryfzD4EMer4hLkgDC/1sWsCHb22GvV+t1Kb4AI6QFw==
+vue-lazyload@1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/vue-lazyload/-/vue-lazyload-1.3.3.tgz#4df50a271bde9b74c3caf7a228d6e0af50d5682f"
+ integrity sha512-uHnq0FTEeNmqnbBC2aRKlmtd9LofMZ6Q3mWvgfLa+i9vhxU8fDK+nGs9c1iVT85axSua/AUnMttIq3xPaU9G3A==
+
vue-loader@15.9.7:
version "15.9.7"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.7.tgz#15b05775c3e0c38407679393c2ce6df673b01044"
diff --git a/themes/dark/assets/css/style.css b/themes/dark/assets/css/style.css
index 0d57feff5d..6c4cd47235 100644
--- a/themes/dark/assets/css/style.css
+++ b/themes/dark/assets/css/style.css
@@ -667,6 +667,8 @@ div.xem {
max-width: 100%;
overflow: hidden;
border: 1px solid rgb(136, 136, 136);
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
}
.background-image img {
@@ -934,6 +936,15 @@ div.buttontext p {
home_newShow.mako
========================================================================== */
+.addshowoptions {
+ margin-bottom: 2px;
+}
+
+.addshowoptions button {
+ float: right;
+ margin: 0 4px 2px 2px;
+}
+
#addShowForm,
#recommendedShowsForm {
max-width: 800px;
@@ -943,6 +954,21 @@ home_newShow.mako
font-size: 13px;
}
+.show-rating,
+.show-votes {
+ margin-left: 4px;
+ float: left;
+}
+
+.show-votes > i {
+ font-size: 11px !important;
+}
+
+select.rec-show-select {
+ font-size: 12px;
+ margin: 2px 2px 2px 4px;
+}
+
#addShowForm > div {
width: 100% !important;
}
@@ -1076,6 +1102,7 @@ home_recommendedShows.mako
.recommended-container p {
padding-top: 2px;
+ margin: 0;
}
.recommended-container p img {
@@ -1094,7 +1121,7 @@ div.recommended-image {
filter: grayscale(100%);
}
-.show-in-list div#check-overlay {
+.show-in-list .check-overlay {
opacity: 0.8;
background-image: url("../images/green-check.png");
background-repeat: no-repeat;
@@ -1112,7 +1139,6 @@ div.recommended-image {
white-space: nowrap;
font-size: 12px;
overflow: hidden;
- margin: 0;
text-decoration: none;
color: rgb(255, 255, 255);
}
@@ -1120,7 +1146,7 @@ div.recommended-image {
.recommended-container {
left: -4px;
position: relative;
- margin: 12px;
+ margin: 5px;
width: 188px;
background-color: rgb(223, 218, 207);
border: 1px solid rgb(17, 17, 17);
@@ -1135,13 +1161,14 @@ div.recommended-image {
border-bottom: 1px solid rgb(17, 17, 17);
}
-.recommended-container .anidb-url {
+.recommended-container .recommended-show-url {
float: right;
padding-right: 4px;
}
-.anidb-inline {
+.recommended-show-link-inline {
height: 16px;
+ padding-bottom: 1px;
}
.recommended-container .default-poster {
@@ -4313,6 +4340,17 @@ CSS helper classes
display: block;
}
+/** Bootstrap fix to get rows without padding **/
+.row-no-padding {
+ margin-left: 0;
+ margin-right: 0;
+
+ [class*="col-"] {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+}
+
/* Style multiselect components */
.multiselect,
.multiselect__tags,
diff --git a/themes/dark/assets/css/themed.css b/themes/dark/assets/css/themed.css
index 8529dc1b95..bedaf1cce4 100644
--- a/themes/dark/assets/css/themed.css
+++ b/themes/dark/assets/css/themed.css
@@ -290,11 +290,8 @@ home_recommendedShows.mako
========================================================================== */
.recommended-container {
- margin: 12px;
- width: 188px;
background-color: rgb(51, 51, 51);
border: 1px solid rgb(17, 17, 17);
- border-radius: 6px;
}
/* =======================================================================
diff --git a/themes/dark/assets/js/index.js b/themes/dark/assets/js/index.js
index b6ae975cb9..68dc82d959 100644
--- a/themes/dark/assets/js/index.js
+++ b/themes/dark/assets/js/index.js
@@ -15,7 +15,7 @@
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/npm.js\");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var bootstrap_dist_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! bootstrap/dist/css/bootstrap.min.css */ \"./node_modules/bootstrap/dist/css/bootstrap.min.css\");\n/* harmony import */ var vue_snotify_styles_material_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-snotify/styles/material.css */ \"./node_modules/vue-snotify/styles/material.css\");\n/* harmony import */ var _vendor_js_tablesorter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../vendor/js/tablesorter */ \"./vendor/js/tablesorter.js\");\n/* harmony import */ var _vendor_css_open_sans_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../vendor/css/open-sans.css */ \"./vendor/css/open-sans.css\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./store */ \"./src/store/index.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./router */ \"./src/router/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./api */ \"./src/api.js\");\n/* harmony import */ var _global_vue_shim__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./global-vue-shim */ \"./src/global-vue-shim.js\");\n/* eslint-disable import/no-unassigned-import */\n\n\n\n\n\n\n/* eslint-enable import/no-unassigned-import */\n\n\n\n\n\n\n\n\n\n\n\nif (window) {\n // @TODO: Remove this before v1.0.0\n window.globalVueShim = _global_vue_shim__WEBPACK_IMPORTED_MODULE_12__.default; // Adding libs to window so mako files can use them\n\n window.$ = (jquery__WEBPACK_IMPORTED_MODULE_0___default());\n window.jQuery = (jquery__WEBPACK_IMPORTED_MODULE_0___default());\n window.Vue = vue__WEBPACK_IMPORTED_MODULE_13__.default;\n window.Vuex = vuex__WEBPACK_IMPORTED_MODULE_14__.default;\n window.ToggleButton = vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6__.ToggleButton;\n window.axios = (axios__WEBPACK_IMPORTED_MODULE_7___default());\n window._ = {\n debounce: (lodash_debounce__WEBPACK_IMPORTED_MODULE_8___default())\n };\n window.store = _store__WEBPACK_IMPORTED_MODULE_9__.default;\n window.router = _router__WEBPACK_IMPORTED_MODULE_10__.default;\n window.apiRoute = _api__WEBPACK_IMPORTED_MODULE_11__.apiRoute;\n window.apiv1 = _api__WEBPACK_IMPORTED_MODULE_11__.apiv1;\n window.api = _api__WEBPACK_IMPORTED_MODULE_11__.api;\n window.MEDUSA = {\n common: {},\n config: {\n general: {},\n layout: {}\n },\n home: {},\n addShows: {}\n };\n window.webRoot = _api__WEBPACK_IMPORTED_MODULE_11__.webRoot;\n window.apiKey = _api__WEBPACK_IMPORTED_MODULE_11__.apiKey; // Push x-template components to this array to register them globally\n\n window.components = [];\n}\n\nconst UTIL = {\n exec(controller, action) {\n const ns = MEDUSA;\n action = action === undefined ? 'init' : action;\n\n if (controller !== '' && ns[controller] && typeof ns[controller][action] === 'function') {\n ns[controller][action]();\n }\n },\n\n init() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[v-cloak]').removeAttr('v-cloak');\n const {\n body\n } = document;\n const controller = body.getAttribute('data-controller');\n const action = body.getAttribute('data-action');\n UTIL.exec('common'); // Load common\n\n UTIL.exec(controller); // Load MEDUSA[controller]\n\n UTIL.exec(controller, action); // Load MEDUSA[controller][action]\n\n window.dispatchEvent(new Event('medusa-loaded'));\n }\n\n};\nconst {\n pathname\n} = window.location;\n\nif (!pathname.includes('/login') && !pathname.includes('/apibuilder')) {\n const configLoaded = event => {\n const {\n general,\n layout\n } = event.detail;\n MEDUSA.config.general = { ...MEDUSA.config.general,\n ...general\n };\n const themeSpinner = layout.themeName === 'dark' ? '-dark' : '';\n MEDUSA.config.layout = { ...MEDUSA.config.layout,\n ...layout,\n themeSpinner,\n loading: '
'\n };\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(UTIL.init);\n };\n\n window.addEventListener('medusa-config-loaded', configLoaded, {\n once: true\n });\n}\n\n//# sourceURL=webpack://slim/./src/index.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/npm.js\");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var bootstrap_dist_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! bootstrap/dist/css/bootstrap.min.css */ \"./node_modules/bootstrap/dist/css/bootstrap.min.css\");\n/* harmony import */ var vue_snotify_styles_material_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-snotify/styles/material.css */ \"./node_modules/vue-snotify/styles/material.css\");\n/* harmony import */ var _vendor_js_tablesorter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../vendor/js/tablesorter */ \"./vendor/js/tablesorter.js\");\n/* harmony import */ var _vendor_css_open_sans_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../vendor/css/open-sans.css */ \"./vendor/css/open-sans.css\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var vueisotope__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vueisotope */ \"./node_modules/vueisotope/dist/vue_isotope.min.js\");\n/* harmony import */ var vueisotope__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(vueisotope__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./store */ \"./src/store/index.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./router */ \"./src/router/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./api */ \"./src/api.js\");\n/* harmony import */ var _global_vue_shim__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./global-vue-shim */ \"./src/global-vue-shim.js\");\n/* eslint-disable import/no-unassigned-import */\n\n\n\n\n\n\n/* eslint-enable import/no-unassigned-import */\n\n\n\n\n\n\n\n\n\n\n\n\nif (window) {\n // @TODO: Remove this before v1.0.0\n window.globalVueShim = _global_vue_shim__WEBPACK_IMPORTED_MODULE_13__.default; // Adding libs to window so mako files can use them\n\n window.$ = (jquery__WEBPACK_IMPORTED_MODULE_0___default());\n window.jQuery = (jquery__WEBPACK_IMPORTED_MODULE_0___default());\n window.Vue = vue__WEBPACK_IMPORTED_MODULE_14__.default;\n window.Vuex = vuex__WEBPACK_IMPORTED_MODULE_15__.default;\n window.ToggleButton = vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_6__.ToggleButton;\n window.axios = (axios__WEBPACK_IMPORTED_MODULE_7___default());\n window._ = {\n debounce: (lodash_debounce__WEBPACK_IMPORTED_MODULE_8___default())\n };\n window.store = _store__WEBPACK_IMPORTED_MODULE_10__.default;\n window.router = _router__WEBPACK_IMPORTED_MODULE_11__.default;\n window.apiRoute = _api__WEBPACK_IMPORTED_MODULE_12__.apiRoute;\n window.apiv1 = _api__WEBPACK_IMPORTED_MODULE_12__.apiv1;\n window.api = _api__WEBPACK_IMPORTED_MODULE_12__.api;\n window.MEDUSA = {\n common: {},\n config: {\n general: {},\n layout: {}\n },\n home: {},\n addShows: {}\n };\n window.webRoot = _api__WEBPACK_IMPORTED_MODULE_12__.webRoot;\n window.apiKey = _api__WEBPACK_IMPORTED_MODULE_12__.apiKey; // Push x-template components to this array to register them globally\n\n window.components = [];\n window.components.push((vueisotope__WEBPACK_IMPORTED_MODULE_9___default()));\n}\n\nconst UTIL = {\n exec(controller, action) {\n const ns = MEDUSA;\n action = action === undefined ? 'init' : action;\n\n if (controller !== '' && ns[controller] && typeof ns[controller][action] === 'function') {\n ns[controller][action]();\n }\n },\n\n init() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[v-cloak]').removeAttr('v-cloak');\n const {\n body\n } = document;\n const controller = body.getAttribute('data-controller');\n const action = body.getAttribute('data-action');\n UTIL.exec('common'); // Load common\n\n UTIL.exec(controller); // Load MEDUSA[controller]\n\n UTIL.exec(controller, action); // Load MEDUSA[controller][action]\n\n window.dispatchEvent(new Event('medusa-loaded'));\n }\n\n};\nconst {\n pathname\n} = window.location;\n\nif (!pathname.includes('/login') && !pathname.includes('/apibuilder')) {\n const configLoaded = event => {\n const {\n general,\n layout\n } = event.detail;\n MEDUSA.config.general = { ...MEDUSA.config.general,\n ...general\n };\n const themeSpinner = layout.themeName === 'dark' ? '-dark' : '';\n MEDUSA.config.layout = { ...MEDUSA.config.layout,\n ...layout,\n themeSpinner,\n loading: '
'\n };\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(UTIL.init);\n };\n\n window.addEventListener('medusa-config-loaded', configLoaded, {\n once: true\n });\n}\n\n//# sourceURL=webpack://slim/./src/index.js?");
/***/ })
diff --git a/themes/dark/assets/js/medusa-runtime.js b/themes/dark/assets/js/medusa-runtime.js
index e0f7113c6a..f66db1dd99 100644
--- a/themes/dark/assets/js/medusa-runtime.js
+++ b/themes/dark/assets/js/medusa-runtime.js
@@ -114,7 +114,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api.js */ \"./src/api.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony import */ var _utils_core_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/core.js */ \"./src/utils/core.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-multiselect */ \"./node_modules/vue-multiselect/dist/vue-multiselect.min.js\");\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var vue_multiselect_dist_vue_multiselect_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-multiselect/dist/vue-multiselect.min.css */ \"./node_modules/vue-multiselect/dist/vue-multiselect.min.css\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! v-tooltip */ \"./node_modules/v-tooltip/dist/v-tooltip.esm.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config-general',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_2__.AppLink,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigTemplate,\n ConfigTextbox: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigTextbox,\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigTextboxNumber,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigToggleSlider,\n CustomLogs: _helpers__WEBPACK_IMPORTED_MODULE_2__.CustomLogs,\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_2__.LanguageSelect,\n Multiselect: (vue_multiselect__WEBPACK_IMPORTED_MODULE_5___default()),\n SortedSelectList: _helpers__WEBPACK_IMPORTED_MODULE_2__.SortedSelectList,\n VPopover: v_tooltip__WEBPACK_IMPORTED_MODULE_7__.VPopover,\n StateSwitch: _helpers__WEBPACK_IMPORTED_MODULE_2__.StateSwitch,\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4__.ToggleButton,\n RootDirs: _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__.default\n },\n directives: {\n tooltip: v_tooltip__WEBPACK_IMPORTED_MODULE_7__.VTooltip\n },\n\n data() {\n const defaultPageOptions = [{\n value: 'home',\n text: 'Shows'\n }, {\n value: 'schedule',\n text: 'Schedule'\n }, {\n value: 'history',\n text: 'History'\n }, {\n value: 'news',\n text: 'News'\n }, {\n value: 'IRC',\n text: 'IRC'\n }];\n const privacyLevelOptions = [{\n value: 'high',\n text: 'HIGH'\n }, {\n value: 'normal',\n text: 'NORMAL'\n }, {\n value: 'low',\n text: 'LOW'\n }];\n return {\n defaultPageOptions,\n privacyLevelOptions,\n resetBranchSelected: null,\n saving: false,\n selectedBranch: '',\n checkoutBranchMessage: ''\n };\n },\n\n beforeMount() {\n // Wait for the next tick, so the component is rendered\n this.$nextTick(() => {\n $('#config-components').tabs();\n });\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapState)({\n general: state => state.config.general,\n configLoaded: state => state.config.consts.statuses.length > 0,\n layout: state => state.config.layout,\n statuses: state => state.config.consts.statuses,\n indexers: state => state.config.indexers,\n system: state => state.config.system,\n gitRemoteBranches: state => state.config.system.gitRemoteBranches // We need the reactivity on this.\n\n }),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)(['getStatus']),\n indexerDefault: {\n get() {\n const {\n general\n } = this;\n const {\n indexerDefault\n } = general;\n return indexerDefault || 0;\n },\n\n set(indexer) {\n // TODO: commit instead\n this.general.indexerDefault = indexer;\n }\n\n },\n\n indexerListOptions() {\n const {\n indexers\n } = this;\n const allIndexers = [{\n text: 'All Indexers',\n value: 0\n }];\n const indexerOptions = Object.values(indexers.indexers).map(indexer => ({\n value: indexer.id,\n text: indexer.name\n }));\n return [...allIndexers, ...indexerOptions];\n },\n\n datePresetOptions() {\n const {\n general\n } = this;\n const {\n datePresets\n } = general;\n const systemDefault = [{\n value: '%x',\n text: 'Use System Default'\n }];\n const formattedDatePresets = datePresets.map(preset => ({\n value: preset,\n text: (0,date_fns_format__WEBPACK_IMPORTED_MODULE_9__.default)(new Date(), (0,_utils_core_js__WEBPACK_IMPORTED_MODULE_3__.convertDateFormat)(preset))\n }));\n return [...systemDefault, ...formattedDatePresets];\n },\n\n timePresetOptions() {\n const {\n general\n } = this;\n const {\n timePresets\n } = general;\n const systemDefault = [{\n value: '%x',\n text: 'Use System Default'\n }];\n const formattedTimePresets = timePresets.map(preset => ({\n value: preset,\n text: (0,date_fns_format__WEBPACK_IMPORTED_MODULE_9__.default)(new Date(), (0,_utils_core_js__WEBPACK_IMPORTED_MODULE_3__.convertDateFormat)(preset))\n }));\n return [...systemDefault, ...formattedTimePresets];\n },\n\n availableThemesOptions() {\n const {\n general\n } = this;\n const {\n availableThemes\n } = general;\n\n if (!availableThemes) {\n return [];\n }\n\n return availableThemes.map(theme => ({\n value: theme.name,\n text: `${theme.name} (${theme.version})`\n }));\n },\n\n cpuPresetOptions() {\n const {\n system\n } = this;\n const {\n cpuPresets\n } = system;\n\n if (!cpuPresets) {\n return [];\n }\n\n return Object.keys(cpuPresets).map(key => ({\n value: key,\n text: key\n }));\n },\n\n defaultDeletedEpOptions() {\n const {\n general,\n getStatus\n } = this;\n let status = [];\n\n if (general.skipRemovedFiles) {\n status = ['skipped', 'ignored'].map(key => getStatus({\n key\n }));\n } else {\n // Get status objects, when skip removed files is enabled\n status = ['skipped', 'ignored', 'archived'].map(key => getStatus({\n key\n }));\n }\n\n if (status.every(x => x !== undefined)) {\n return status.map(status => ({\n text: status.name,\n value: status.value\n }));\n }\n\n return [];\n },\n\n githubRemoteBranchesOptions() {\n const {\n general,\n getGitRemoteBranches,\n gitRemoteBranches\n } = this;\n const {\n username,\n password,\n token\n } = general.git;\n\n if (!gitRemoteBranches.length > 0) {\n getGitRemoteBranches();\n }\n\n let filteredBranches = [];\n\n if ((username && password || token) && general.developer) {\n filteredBranches = gitRemoteBranches;\n } else if (username && password || token) {\n filteredBranches = gitRemoteBranches.filter(branch => ['master', 'develop'].includes(branch));\n } else {\n filteredBranches = gitRemoteBranches.filter(branch => ['master'].includes(branch));\n }\n\n return filteredBranches.map(branch => ({\n text: branch,\n value: branch\n }));\n },\n\n githubTokenPopover() {\n const {\n general\n } = this;\n return '
Copy the generated token and paste it in the token input box.
' + `
` + '
';\n }\n\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapActions)({\n setConfig: 'setConfig',\n setTheme: 'setTheme',\n getApiKey: 'getApiKey',\n setLayoutShow: 'setLayoutShow',\n getGitRemoteBranches: 'getGitRemoteBranches'\n }),\n\n async generateApiKey() {\n const {\n getApiKey,\n save\n } = this;\n\n try {\n await getApiKey();\n this.$snotify.success('Saving and reloading the page, to utilize the new api key', 'Warning', {\n timeout: 5000\n });\n setTimeout(() => {\n // Save the new apiKey. No choice to reload because of /src/api.js\n save();\n }, 500);\n setTimeout(() => {\n // For now we reload the page since the layouts use python still\n location.reload();\n }, 500);\n } catch (error) {\n this.$snotify.error('Error while trying to get a new api key', `Error: ${error}`);\n }\n },\n\n async changeTheme(themeName) {\n const {\n setTheme\n } = this;\n\n try {\n await setTheme({\n themeName\n });\n this.$snotify.success('Saving and reloading the page', 'Saving', {\n timeout: 5000\n });\n setTimeout(() => {\n // Reload the page as we need to reload static content.\n (0,_utils_core_js__WEBPACK_IMPORTED_MODULE_3__.forceBrowserReload)();\n }, 1000);\n } catch (error) {\n this.$snotify.error('Error while trying to change the theme', `Error: ${error}`);\n }\n },\n\n async save() {\n const {\n general,\n layout,\n setConfig\n } = this; // Disable the save button until we're done.\n\n this.saving = true;\n const {\n availableThemes,\n backlogOverview,\n datePresets,\n loggingLevels,\n logs,\n timePresets,\n randomShowSlug,\n recentShows,\n themeName,\n ...filteredConfig\n } = general;\n const {\n local,\n ...filteredLayout\n } = layout;\n const configMain = {\n section: 'main',\n config: { ...filteredConfig,\n ...{\n layout: filteredLayout\n },\n ...{\n logs: {\n debug: general.logs.debug,\n dbDebug: general.logs.dbDebug,\n actualLogDir: general.logs.actualLogDir,\n nr: general.logs.nr,\n size: general.logs.size,\n subliminalLog: general.logs.subliminalLog,\n privacyLevel: general.logs.privacyLevel\n }\n }\n }\n };\n\n try {\n await setConfig(configMain);\n this.$snotify.success('Saved general config', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error('Error while trying to save general config', `Error: ${error}`);\n } finally {\n this.saving = false;\n }\n },\n\n saveShowListOrder(value) {\n const {\n layout,\n setLayoutShow\n } = this;\n const mergedShowLayout = { ...layout.show,\n ...{\n showListOrder: value.map(item => item.value)\n }\n };\n setLayoutShow(mergedShowLayout);\n },\n\n async compareDBUpgrade() {\n const {\n checkoutBranch,\n selectedBranch\n } = this;\n\n try {\n this.checkoutBranchMessage = 'Checking if the checkout requires a database upgrade / downgrade';\n const result = await _api_js__WEBPACK_IMPORTED_MODULE_0__.apiRoute.get('home/getDBcompare');\n\n if (result.data.status === 'success') {\n if (result.data.message === 'equal') {\n // Checkout Branch\n checkoutBranch();\n }\n\n if (result.data.message === 'upgrade') {\n this.$modal.show('query-upgrade-database', {\n selectedBranch\n });\n }\n\n if (result.data.message === 'downgrade') {\n this.$snotify.error('Can\\'t switch branch as this will result in a database downgrade.', 'Error');\n }\n } else {\n this.$snotify.error('Error while trying to compare db versions for checkout', `Error: ${result.data.status}`);\n }\n } catch (error) {\n console.log(error);\n }\n },\n\n /**\n * Validate if we need a compareDb, or directly checkout.\n *\n * If whe're running a master or develop branch, we check for database changes.\n * This to prepare the user, by showing a few modals.\n * If the user is running another branch like, a feature branch. We asume the user knows what he's doing.\n *\n */\n validateCheckoutBranch() {\n const {\n compareDBUpgrade,\n selectedBranch\n } = this;\n\n if (!selectedBranch) {\n return;\n }\n\n compareDBUpgrade();\n },\n\n async checkoutBranch() {\n const {\n selectedBranch\n } = this;\n this.checkoutBranchMessage = `Checking out branch ${selectedBranch}`;\n await _api_js__WEBPACK_IMPORTED_MODULE_0__.api.post('system/operation', {\n type: 'CHECKOUT_BRANCH',\n branch: selectedBranch\n }, {\n timeout: 120000\n });\n this.checkoutBranchMessage = `Finished checking out branch ${selectedBranch}`;\n setTimeout(() => {\n this.checkoutBranchMessage = '';\n }, 4000);\n this.$modal.show('query-restart');\n },\n\n cancelCheckout() {\n this.checkoutBranchMessage = '';\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/config-general.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api.js */ \"./src/api.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony import */ var _utils_core_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/core.js */ \"./src/utils/core.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/esm/format/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-multiselect */ \"./node_modules/vue-multiselect/dist/vue-multiselect.min.js\");\n/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var vue_multiselect_dist_vue_multiselect_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue-multiselect/dist/vue-multiselect.min.css */ \"./node_modules/vue-multiselect/dist/vue-multiselect.min.css\");\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! v-tooltip */ \"./node_modules/v-tooltip/dist/v-tooltip.esm.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config-general',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_2__.AppLink,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigTemplate,\n ConfigTextbox: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigTextbox,\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigTextboxNumber,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_2__.ConfigToggleSlider,\n CustomLogs: _helpers__WEBPACK_IMPORTED_MODULE_2__.CustomLogs,\n LanguageSelect: _helpers__WEBPACK_IMPORTED_MODULE_2__.LanguageSelect,\n Multiselect: (vue_multiselect__WEBPACK_IMPORTED_MODULE_5___default()),\n SortedSelectList: _helpers__WEBPACK_IMPORTED_MODULE_2__.SortedSelectList,\n VPopover: v_tooltip__WEBPACK_IMPORTED_MODULE_7__.VPopover,\n SelectTraktLists: _helpers__WEBPACK_IMPORTED_MODULE_2__.SelectTraktLists,\n StateSwitch: _helpers__WEBPACK_IMPORTED_MODULE_2__.StateSwitch,\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_4__.ToggleButton,\n RootDirs: _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__.default\n },\n directives: {\n tooltip: v_tooltip__WEBPACK_IMPORTED_MODULE_7__.VTooltip\n },\n\n data() {\n const defaultPageOptions = [{\n value: 'home',\n text: 'Shows'\n }, {\n value: 'schedule',\n text: 'Schedule'\n }, {\n value: 'history',\n text: 'History'\n }, {\n value: 'news',\n text: 'News'\n }, {\n value: 'IRC',\n text: 'IRC'\n }];\n const privacyLevelOptions = [{\n value: 'high',\n text: 'HIGH'\n }, {\n value: 'normal',\n text: 'NORMAL'\n }, {\n value: 'low',\n text: 'LOW'\n }];\n return {\n defaultPageOptions,\n privacyLevelOptions,\n resetBranchSelected: null,\n saving: false,\n selectedBranch: '',\n checkoutBranchMessage: ''\n };\n },\n\n beforeMount() {\n // Wait for the next tick, so the component is rendered\n this.$nextTick(() => {\n $('#config-components').tabs();\n });\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapState)({\n general: state => state.config.general,\n configLoaded: state => state.config.consts.statuses.length > 0,\n layout: state => state.config.layout,\n statuses: state => state.config.consts.statuses,\n indexers: state => state.config.indexers,\n system: state => state.config.system,\n gitRemoteBranches: state => state.config.system.gitRemoteBranches // We need the reactivity on this.\n\n }),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapGetters)(['getStatus']),\n indexerDefault: {\n get() {\n const {\n general\n } = this;\n const {\n indexerDefault\n } = general;\n return indexerDefault || 0;\n },\n\n set(indexer) {\n // TODO: commit instead\n this.general.indexerDefault = indexer;\n }\n\n },\n\n indexerListOptions() {\n const {\n indexers\n } = this;\n const allIndexers = [{\n text: 'All Indexers',\n value: 0\n }];\n const indexerOptions = Object.values(indexers.indexers).map(indexer => ({\n value: indexer.id,\n text: indexer.name\n }));\n return [...allIndexers, ...indexerOptions];\n },\n\n datePresetOptions() {\n const {\n general\n } = this;\n const {\n datePresets\n } = general;\n const systemDefault = [{\n value: '%x',\n text: 'Use System Default'\n }];\n const formattedDatePresets = datePresets.map(preset => ({\n value: preset,\n text: (0,date_fns_format__WEBPACK_IMPORTED_MODULE_9__.default)(new Date(), (0,_utils_core_js__WEBPACK_IMPORTED_MODULE_3__.convertDateFormat)(preset))\n }));\n return [...systemDefault, ...formattedDatePresets];\n },\n\n timePresetOptions() {\n const {\n general\n } = this;\n const {\n timePresets\n } = general;\n const systemDefault = [{\n value: '%x',\n text: 'Use System Default'\n }];\n const formattedTimePresets = timePresets.map(preset => ({\n value: preset,\n text: (0,date_fns_format__WEBPACK_IMPORTED_MODULE_9__.default)(new Date(), (0,_utils_core_js__WEBPACK_IMPORTED_MODULE_3__.convertDateFormat)(preset))\n }));\n return [...systemDefault, ...formattedTimePresets];\n },\n\n availableThemesOptions() {\n const {\n general\n } = this;\n const {\n availableThemes\n } = general;\n\n if (!availableThemes) {\n return [];\n }\n\n return availableThemes.map(theme => ({\n value: theme.name,\n text: `${theme.name} (${theme.version})`\n }));\n },\n\n cpuPresetOptions() {\n const {\n system\n } = this;\n const {\n cpuPresets\n } = system;\n\n if (!cpuPresets) {\n return [];\n }\n\n return Object.keys(cpuPresets).map(key => ({\n value: key,\n text: key\n }));\n },\n\n defaultDeletedEpOptions() {\n const {\n general,\n getStatus\n } = this;\n let status = [];\n\n if (general.skipRemovedFiles) {\n status = ['skipped', 'ignored'].map(key => getStatus({\n key\n }));\n } else {\n // Get status objects, when skip removed files is enabled\n status = ['skipped', 'ignored', 'archived'].map(key => getStatus({\n key\n }));\n }\n\n if (status.every(x => x !== undefined)) {\n return status.map(status => ({\n text: status.name,\n value: status.value\n }));\n }\n\n return [];\n },\n\n githubRemoteBranchesOptions() {\n const {\n general,\n getGitRemoteBranches,\n gitRemoteBranches\n } = this;\n const {\n username,\n password,\n token\n } = general.git;\n\n if (!gitRemoteBranches.length > 0) {\n getGitRemoteBranches();\n }\n\n let filteredBranches = [];\n\n if ((username && password || token) && general.developer) {\n filteredBranches = gitRemoteBranches;\n } else if (username && password || token) {\n filteredBranches = gitRemoteBranches.filter(branch => ['master', 'develop'].includes(branch));\n } else {\n filteredBranches = gitRemoteBranches.filter(branch => ['master'].includes(branch));\n }\n\n return filteredBranches.map(branch => ({\n text: branch,\n value: branch\n }));\n },\n\n githubTokenPopover() {\n const {\n general\n } = this;\n return '
Copy the generated token and paste it in the token input box.
' + `
` + '
';\n }\n\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_8__.mapActions)({\n setConfig: 'setConfig',\n setTheme: 'setTheme',\n getApiKey: 'getApiKey',\n setLayoutShow: 'setLayoutShow',\n getGitRemoteBranches: 'getGitRemoteBranches'\n }),\n\n async generateApiKey() {\n const {\n getApiKey,\n save\n } = this;\n\n try {\n await getApiKey();\n this.$snotify.success('Saving and reloading the page, to utilize the new api key', 'Warning', {\n timeout: 5000\n });\n setTimeout(() => {\n // Save the new apiKey. No choice to reload because of /src/api.js\n save();\n }, 500);\n setTimeout(() => {\n // For now we reload the page since the layouts use python still\n location.reload();\n }, 500);\n } catch (error) {\n this.$snotify.error('Error while trying to get a new api key', `Error: ${error}`);\n }\n },\n\n async changeTheme(themeName) {\n const {\n setTheme\n } = this;\n\n try {\n await setTheme({\n themeName\n });\n this.$snotify.success('Saving and reloading the page', 'Saving', {\n timeout: 5000\n });\n setTimeout(() => {\n // Reload the page as we need to reload static content.\n (0,_utils_core_js__WEBPACK_IMPORTED_MODULE_3__.forceBrowserReload)();\n }, 1000);\n } catch (error) {\n this.$snotify.error('Error while trying to change the theme', `Error: ${error}`);\n }\n },\n\n async save() {\n const {\n general,\n layout,\n setConfig\n } = this; // Disable the save button until we're done.\n\n this.saving = true;\n const {\n availableThemes,\n backlogOverview,\n datePresets,\n loggingLevels,\n logs,\n timePresets,\n randomShowSlug,\n recentShows,\n themeName,\n recommended,\n ...filteredConfig\n } = general;\n const {\n local,\n ...filteredLayout\n } = layout;\n const configMain = {\n section: 'main',\n config: { ...filteredConfig,\n ...{\n layout: filteredLayout\n },\n ...{\n logs: {\n debug: general.logs.debug,\n dbDebug: general.logs.dbDebug,\n actualLogDir: general.logs.actualLogDir,\n nr: general.logs.nr,\n size: general.logs.size,\n subliminalLog: general.logs.subliminalLog,\n privacyLevel: general.logs.privacyLevel\n }\n },\n ...{\n recommended: {\n cache: general.recommended.cache,\n trakt: {\n selectedLists: general.recommended.trakt.selectedLists\n }\n }\n }\n }\n };\n\n try {\n await setConfig(configMain);\n this.$snotify.success('Saved general config', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error('Error while trying to save general config', `Error: ${error}`);\n } finally {\n this.saving = false;\n }\n },\n\n saveShowListOrder(value) {\n const {\n layout,\n setLayoutShow\n } = this;\n const mergedShowLayout = { ...layout.show,\n ...{\n showListOrder: value.map(item => item.value)\n }\n };\n setLayoutShow(mergedShowLayout);\n },\n\n async compareDBUpgrade() {\n const {\n checkoutBranch,\n selectedBranch\n } = this;\n\n try {\n this.checkoutBranchMessage = 'Checking if the checkout requires a database upgrade / downgrade';\n const result = await _api_js__WEBPACK_IMPORTED_MODULE_0__.apiRoute.get('home/getDBcompare');\n\n if (result.data.status === 'success') {\n if (result.data.message === 'equal') {\n // Checkout Branch\n checkoutBranch();\n }\n\n if (result.data.message === 'upgrade') {\n this.$modal.show('query-upgrade-database', {\n selectedBranch\n });\n }\n\n if (result.data.message === 'downgrade') {\n this.$snotify.error('Can\\'t switch branch as this will result in a database downgrade.', 'Error');\n }\n } else {\n this.$snotify.error('Error while trying to compare db versions for checkout', `Error: ${result.data.status}`);\n }\n } catch (error) {\n console.log(error);\n }\n },\n\n /**\n * Validate if we need a compareDb, or directly checkout.\n *\n * If whe're running a master or develop branch, we check for database changes.\n * This to prepare the user, by showing a few modals.\n * If the user is running another branch like, a feature branch. We asume the user knows what he's doing.\n *\n */\n validateCheckoutBranch() {\n const {\n compareDBUpgrade,\n selectedBranch\n } = this;\n\n if (!selectedBranch) {\n return;\n }\n\n compareDBUpgrade();\n },\n\n async checkoutBranch() {\n const {\n selectedBranch\n } = this;\n this.checkoutBranchMessage = `Checking out branch ${selectedBranch}`;\n await _api_js__WEBPACK_IMPORTED_MODULE_0__.api.post('system/operation', {\n type: 'CHECKOUT_BRANCH',\n branch: selectedBranch\n }, {\n timeout: 120000\n });\n this.checkoutBranchMessage = `Finished checking out branch ${selectedBranch}`;\n setTimeout(() => {\n this.checkoutBranchMessage = '';\n }, 4000);\n this.$modal.show('query-restart');\n },\n\n cancelCheckout() {\n this.checkoutBranchMessage = '';\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/config-general.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -213,7 +213,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../router */ \"./src/router/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'app-link',\n props: {\n to: [String, Object],\n href: String,\n indexerId: {\n type: String\n },\n placeholder: {\n type: String,\n default: 'indexer-to-name'\n }\n },\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n general: state => state.config.general\n }),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapGetters)(['indexerIdToName']),\n\n indexerName() {\n // Returns `undefined` if not found\n const {\n indexerId,\n indexerIdToName\n } = this;\n return indexerIdToName(indexerId);\n },\n\n computedBase() {\n return document.querySelector('base').getAttribute('href');\n },\n\n computedHref() {\n const {\n href,\n indexerId,\n placeholder,\n indexerName\n } = this;\n\n if (indexerId && placeholder) {\n return href.replace(placeholder, indexerName);\n }\n\n return href;\n },\n\n isIRC() {\n if (!this.computedHref) {\n return;\n }\n\n return this.computedHref.startsWith('irc://');\n },\n\n isAbsolute() {\n const href = this.computedHref;\n\n if (!href) {\n return;\n }\n\n return /^[a-z][\\d+.a-z-]*:/.test(href);\n },\n\n isExternal() {\n const base = this.computedBase;\n const href = this.computedHref;\n\n if (!href) {\n return;\n }\n\n return !href.startsWith(base) && !href.startsWith('webcal://');\n },\n\n isHashPath() {\n if (!this.computedHref) {\n return;\n }\n\n return this.computedHref.startsWith('#');\n },\n\n anonymisedHref() {\n const {\n anonRedirect\n } = this.general;\n const href = this.computedHref;\n\n if (!href) {\n return;\n }\n\n return anonRedirect ? anonRedirect + href : href;\n },\n\n matchingVueRoute() {\n const {\n isAbsolute,\n isExternal,\n computedHref\n } = this;\n\n if (isAbsolute && isExternal) {\n return;\n }\n\n const {\n route\n } = _router__WEBPACK_IMPORTED_MODULE_0__.default.resolve(_router__WEBPACK_IMPORTED_MODULE_0__.base + computedHref);\n\n if (!route.name) {\n return;\n }\n\n return route;\n },\n\n linkProperties() {\n const {\n to,\n isIRC,\n isAbsolute,\n isExternal,\n isHashPath,\n anonymisedHref,\n matchingVueRoute\n } = this;\n const base = this.computedBase;\n const href = this.computedHref; // Return normal router-link\n\n if (to) {\n return {\n is: 'router-link',\n to\n };\n } // Just return a boring link with other attrs\n // @NOTE: This is for scroll anchors as it uses the id\n\n\n if (!href) {\n return {\n is: 'a',\n // Only tag this as a \"false-link\" if we passed a name in the props\n falseLink: Boolean(this.$attrs.name) || undefined\n };\n } // If current page and next page are both vue routes return router-link\n\n\n if (matchingVueRoute && this.$route && matchingVueRoute.meta.converted && this.$route.meta.converted) {\n // Allows us to skip when we're in a test\n if (window.loadMainApp) {\n return {\n is: 'router-link',\n to: matchingVueRoute.fullPath,\n // Add a `href` attribute to enable native mouse navigation (middle click, ctrl+click, etc.)\n href: new URL(matchingVueRoute.fullPath, base).href\n };\n }\n }\n\n return {\n is: 'a',\n target: isAbsolute && isExternal ? '_blank' : '_self',\n href: (() => {\n if (isHashPath) {\n const {\n location\n } = window;\n\n if (location.hash.length === 0) {\n // Current location might be `url#`\n const newHash = location.href.endsWith('#') ? href.slice(1) : href;\n return location.href + newHash;\n }\n\n return location.href.replace(location.hash, '') + href;\n }\n\n if (isIRC) {\n return href;\n }\n\n if (isAbsolute) {\n if (isExternal) {\n return anonymisedHref;\n }\n\n return href;\n }\n\n return new URL(href, base).href;\n })(),\n rel: isAbsolute && isExternal ? 'noreferrer' : undefined\n };\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/app-link.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../router */ \"./src/router/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'app-link',\n props: {\n to: [String, Object],\n href: String,\n indexerId: {\n type: String\n },\n placeholder: {\n type: String,\n default: 'indexer-to-name'\n }\n },\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n general: state => state.config.general\n }),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapGetters)(['indexerIdToName']),\n\n indexerName() {\n // Returns `undefined` if not found\n const {\n indexerId,\n indexerIdToName\n } = this;\n return indexerIdToName(indexerId);\n },\n\n computedBase() {\n return document.querySelector('base').getAttribute('href');\n },\n\n computedHref() {\n const {\n href,\n indexerId,\n placeholder,\n indexerName\n } = this;\n\n if (indexerId && placeholder) {\n return href.replace(placeholder, indexerName);\n }\n\n return href;\n },\n\n isIRC() {\n if (!this.computedHref) {\n return;\n }\n\n return this.computedHref.startsWith('irc://');\n },\n\n isAbsolute() {\n const href = this.computedHref;\n\n if (!href) {\n return;\n }\n\n return /^[a-z][\\d+.a-z-]*:/.test(href);\n },\n\n isExternal() {\n const base = this.computedBase;\n const href = this.computedHref;\n\n if (!href) {\n return;\n }\n\n return !href.startsWith(base) && !href.startsWith('webcal://');\n },\n\n isHashPath() {\n if (!this.computedHref) {\n return;\n }\n\n return this.computedHref.startsWith('#');\n },\n\n /**\n * Not used for now as derefer.org is down and there are no suitable replacements.\n * @returns {string} - de-refer service'd url.\n */\n anonymisedHref() {\n const {\n anonRedirect\n } = this.general;\n const href = this.computedHref;\n\n if (!href) {\n return;\n }\n\n return anonRedirect ? anonRedirect + href : href;\n },\n\n matchingVueRoute() {\n const {\n isAbsolute,\n isExternal,\n computedHref\n } = this;\n\n if (isAbsolute && isExternal) {\n return;\n }\n\n const {\n route\n } = _router__WEBPACK_IMPORTED_MODULE_0__.default.resolve(_router__WEBPACK_IMPORTED_MODULE_0__.base + computedHref);\n\n if (!route.name) {\n return;\n }\n\n return route;\n },\n\n linkProperties() {\n const {\n to,\n isIRC,\n isAbsolute,\n isExternal,\n isHashPath,\n matchingVueRoute\n } = this;\n const base = this.computedBase;\n const href = this.computedHref; // Return normal router-link\n\n if (to) {\n return {\n is: 'router-link',\n to\n };\n } // Just return a boring link with other attrs\n // @NOTE: This is for scroll anchors as it uses the id\n\n\n if (!href) {\n return {\n is: 'a',\n // Only tag this as a \"false-link\" if we passed a name in the props\n falseLink: Boolean(this.$attrs.name) || undefined\n };\n } // If current page and next page are both vue routes return router-link\n\n\n if (matchingVueRoute && this.$route && matchingVueRoute.meta.converted && this.$route.meta.converted) {\n // Allows us to skip when we're in a test\n if (window.loadMainApp) {\n return {\n is: 'router-link',\n to: matchingVueRoute.fullPath,\n // Add a `href` attribute to enable native mouse navigation (middle click, ctrl+click, etc.)\n href: new URL(matchingVueRoute.fullPath, base).href\n };\n }\n }\n\n return {\n is: 'a',\n target: isAbsolute && isExternal ? '_blank' : '_self',\n href: (() => {\n if (isHashPath) {\n const {\n location\n } = window;\n\n if (location.hash.length === 0) {\n // Current location might be `url#`\n const newHash = location.href.endsWith('#') ? href.slice(1) : href;\n return location.href + newHash;\n }\n\n return location.href.replace(location.hash, '') + href;\n }\n\n if (isIRC || isAbsolute) {\n return href;\n }\n\n return new URL(href, base).href;\n })(),\n rel: isAbsolute && isExternal ? 'noreferrer noopener' : undefined\n };\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/app-link.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -224,7 +224,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony import */ var _lazy_image_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lazy-image.vue */ \"./src/components/helpers/lazy-image.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'asset',\n components: {\n AppLink: _app_link_vue__WEBPACK_IMPORTED_MODULE_1__.default,\n LazyImage: _lazy_image_vue__WEBPACK_IMPORTED_MODULE_2__.default\n },\n props: {\n showSlug: {\n type: String\n },\n type: {\n type: String,\n required: true\n },\n defaultSrc: {\n type: String,\n required: true\n },\n link: {\n type: Boolean,\n default: false\n },\n cls: {\n type: String\n },\n imgWidth: {\n type: Number\n },\n lazy: Boolean\n },\n\n data() {\n return {\n error: false\n };\n },\n\n computed: {\n src() {\n const {\n defaultSrc,\n error,\n showSlug,\n type\n } = this;\n\n if (error || !showSlug || !type) {\n return defaultSrc;\n }\n\n return `${_api__WEBPACK_IMPORTED_MODULE_0__.webRoot}/api/v2/series/${showSlug}/asset/${type}?api_key=${_api__WEBPACK_IMPORTED_MODULE_0__.apiKey}`;\n },\n\n href() {\n const {\n link,\n src\n } = this; // Compute a link to the full asset, if applicable\n\n if (link) {\n return src.replace('Thumb', '');\n }\n\n return undefined;\n },\n\n newCls() {\n const {\n cls,\n imgWidth\n } = this;\n let newClass = cls;\n\n if (imgWidth) {\n newClass += ` width-${imgWidth}`;\n }\n\n return newClass;\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/asset.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony import */ var _lazy_image_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lazy-image.vue */ \"./src/components/helpers/lazy-image.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'asset',\n components: {\n AppLink: _app_link_vue__WEBPACK_IMPORTED_MODULE_1__.default,\n LazyImage: _lazy_image_vue__WEBPACK_IMPORTED_MODULE_2__.default\n },\n props: {\n showSlug: String,\n type: {\n type: String,\n required: true\n },\n defaultSrc: {\n type: String,\n required: true\n },\n link: {\n type: Boolean,\n default: false\n },\n cls: String,\n imgWidth: Number,\n lazy: Boolean,\n imgStyle: String\n },\n\n data() {\n return {\n error: false\n };\n },\n\n computed: {\n src() {\n const {\n defaultSrc,\n error,\n showSlug,\n type\n } = this;\n\n if (error || !showSlug || !type) {\n return defaultSrc;\n }\n\n return `${_api__WEBPACK_IMPORTED_MODULE_0__.webRoot}/api/v2/series/${showSlug}/asset/${type}?api_key=${_api__WEBPACK_IMPORTED_MODULE_0__.apiKey}`;\n },\n\n href() {\n const {\n link,\n src\n } = this; // Compute a link to the full asset, if applicable\n\n if (link) {\n return src.replace('Thumb', '');\n }\n\n return undefined;\n },\n\n newCls() {\n const {\n cls,\n imgWidth\n } = this;\n let newClass = cls;\n\n if (imgWidth) {\n newClass += ` width-${imgWidth}`;\n }\n\n return newClass;\n },\n\n newStyle() {\n const {\n imgWidth,\n imgStyle\n } = this;\n let tempStyle = '';\n\n if (imgStyle) {\n tempStyle = imgStyle;\n }\n\n if (imgWidth) {\n tempStyle += `;width=${imgWidth}px`;\n }\n\n return tempStyle;\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/asset.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -389,7 +389,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lozad */ \"./node_modules/lozad/dist/lozad.min.js\");\n/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lozad__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'lazy-image',\n props: {\n height: {\n type: Number,\n default: null\n },\n lazySrc: {\n type: String,\n default: null\n },\n lazySrcset: {\n type: String,\n default: null\n },\n lazyDefaultSrc: {\n type: String,\n default: null\n },\n lazyCls: {\n type: String,\n default: ''\n },\n width: {\n type: Number,\n default: null\n }\n },\n\n data() {\n return {\n loading: true,\n error: false\n };\n },\n\n computed: {\n aspectRatio() {\n // Calculate the aspect ratio of the image\n // if the width and the height are given.\n if (!this.width || !this.height) {\n return null;\n }\n\n return this.height / this.width * 100;\n },\n\n style() {\n const style = {};\n\n if (this.width) {\n style.width = `${this.width}px`;\n } // If the image is still loading and an\n // aspect ratio could be calculated, we\n // apply the calculated aspect ratio by\n // using padding top.\n\n\n const applyAspectRatio = this.loading && this.aspectRatio;\n\n if (applyAspectRatio) {\n // Prevent flash of unstyled image\n // after the image is loaded.\n style.height = 0; // Scale the image container according\n // to the aspect ratio.\n\n style.paddingTop = `${this.aspectRatio}%`;\n }\n\n return style;\n }\n\n },\n\n mounted() {\n // As soon as the
element triggers\n // the `load` event, the loading state is\n // set to `false`, which removes the apsect\n // ratio we've applied earlier.\n const setLoadingState = () => {\n this.loading = false;\n };\n\n this.$el.addEventListener('load', setLoadingState); // We remove the event listener as soon as\n // the component is destroyed to prevent\n // potential memory leaks.\n\n this.$once('hook:destroyed', () => {\n this.$el.removeEventListener('load', setLoadingState);\n }); // We initialize Lozad.js on the root\n // element of our component.\n\n const observer = lozad__WEBPACK_IMPORTED_MODULE_0___default()(this.$el, {\n loaded: el => {\n el.classList.add('loaded');\n const img = new Image();\n img.src = el.getAttribute('data-src');\n img.addEventListener('error', () => {\n el.classList.add('error');\n\n if (this.lazyDefaultSrc) {\n el.setAttribute('src', this.lazyDefaultSrc);\n }\n }, false);\n }\n });\n observer.observe();\n },\n\n methods: {\n observe() {\n // We initialize Lozad.js on the root\n // element of our component.\n const observer = lozad__WEBPACK_IMPORTED_MODULE_0___default()(this.$el);\n observer.observe();\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/lazy-image.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lozad */ \"./node_modules/lozad/dist/lozad.min.js\");\n/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lozad__WEBPACK_IMPORTED_MODULE_0__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'lazy-image',\n props: {\n lazyWidth: {\n type: Number,\n default: null\n },\n lazyHeight: {\n type: Number,\n default: null\n },\n lazySrc: {\n type: String,\n default: null\n },\n lazySrcset: {\n type: String,\n default: null\n },\n lazyDefaultSrc: {\n type: String,\n default: null\n },\n lazyCls: {\n type: String,\n default: ''\n }\n },\n\n data() {\n return {\n loading: true,\n error: false\n };\n },\n\n computed: {\n aspectRatio() {\n // Calculate the aspect ratio of the image\n // if the width and the height are given.\n if (!this.width || !this.height) {\n return null;\n }\n\n return this.height / this.width * 100;\n },\n\n style() {\n const style = {};\n const {\n lazyWidth\n } = this;\n\n if (lazyWidth) {\n style.width = `${lazyWidth}px`;\n } // If the image is still loading and an\n // aspect ratio could be calculated, we\n // apply the calculated aspect ratio by\n // using padding top.\n\n\n const applyAspectRatio = this.loading && this.aspectRatio;\n\n if (applyAspectRatio) {\n // Prevent flash of unstyled image\n // after the image is loaded.\n style.height = 0; // Scale the image container according\n // to the aspect ratio.\n\n style.paddingTop = `${this.aspectRatio}%`;\n }\n\n return style;\n }\n\n },\n\n mounted() {\n // As soon as the
element triggers\n // the `load` event, the loading state is\n // set to `false`, which removes the apsect\n // ratio we've applied earlier.\n const setLoadingState = () => {\n this.loading = false;\n };\n\n this.$el.addEventListener('load', setLoadingState); // We remove the event listener as soon as\n // the component is destroyed to prevent\n // potential memory leaks.\n\n this.$once('hook:destroyed', () => {\n this.$el.removeEventListener('load', setLoadingState);\n }); // We initialize Lozad.js on the root\n // element of our component.\n\n const observer = lozad__WEBPACK_IMPORTED_MODULE_0___default()(this.$el, {\n loaded: el => {\n el.classList.add('loaded');\n const img = new Image();\n img.src = el.getAttribute('data-src');\n img.addEventListener('error', () => {\n el.classList.add('error');\n\n if (this.lazyDefaultSrc) {\n el.setAttribute('src', this.lazyDefaultSrc);\n }\n }, false);\n }\n });\n observer.observe();\n },\n\n methods: {\n observe() {\n // We initialize Lozad.js on the root\n // element of our component.\n const observer = lozad__WEBPACK_IMPORTED_MODULE_0___default()(this.$el);\n observer.observe();\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/lazy-image.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -503,6 +503,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=script&lang=js&":
+/*!*****************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=script&lang=js& ***!
+ \*****************************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'select-trakt-list',\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_0__.mapState)({\n availableLists: state => state.config.general.recommended.trakt.availableLists,\n selectedLists: state => state.config.general.recommended.trakt.selectedLists,\n general: state => state.config.general\n })\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_0__.mapActions)(['setTraktSelectedLists']),\n\n saveLists(event, currentList) {\n const {\n selectedLists,\n setTraktSelectedLists\n } = this;\n const isChecked = event.currentTarget.checked; // Add to list\n\n if (isChecked && !selectedLists.includes(currentList)) {\n selectedLists.push(currentList);\n } // Remove from list\n\n\n const newList = selectedLists.filter(list => list !== currentList || currentList && isChecked);\n setTraktSelectedLists(newList);\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/show-selector.vue?vue&type=script&lang=js&":
/*!************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/show-selector.vue?vue&type=script&lang=js& ***!
@@ -547,6 +558,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/trakt-authentication.vue?vue&type=script&lang=js&":
+/*!*******************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/trakt-authentication.vue?vue&type=script&lang=js& ***!
+ \*******************************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ \"./src/components/helpers/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n ConfigToggleSlider: ___WEBPACK_IMPORTED_MODULE_0__.ConfigToggleSlider,\n ConfigTemplate: ___WEBPACK_IMPORTED_MODULE_0__.ConfigTemplate,\n ConfigTextboxNumber: ___WEBPACK_IMPORTED_MODULE_0__.ConfigTextboxNumber,\n ConfigTextbox: ___WEBPACK_IMPORTED_MODULE_0__.ConfigTextbox\n },\n props: {\n authOnly: Boolean\n },\n\n data() {\n return {\n traktRequestSend: false,\n traktRequestAuthenticated: false,\n traktUserCode: '',\n traktRequestMessage: '',\n traktMethodOptions: [{\n text: 'Skip all',\n value: 0\n }, {\n text: 'Download pilot only',\n value: 1\n }, {\n text: 'Get whole show',\n value: 2\n }],\n saving: false,\n testTraktResult: 'Click below to test.',\n traktBlacklistClass: ''\n };\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapState)({\n indexers: state => state.config.indexers,\n trakt: state => state.config.notifiers.trakt\n }),\n\n traktIndexersOptions() {\n const {\n indexers\n } = this;\n const {\n traktIndexers\n } = indexers.main;\n const validTraktIndexer = Object.keys(indexers.indexers).filter(k => traktIndexers[k]);\n return validTraktIndexer.map(indexer => {\n return {\n text: indexer,\n value: indexers.indexers[indexer].id\n };\n });\n }\n\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapActions)(['setConfig']),\n\n async TraktRequestDeviceCode() {\n this.traktUserCode = '';\n this.traktRequestAuthenticated = false;\n const response = await (0,_api__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/requestTraktDeviceCodeOauth');\n\n if (response.data) {\n this.traktVerificationUrl = response.data.verification_url;\n window.open(response.data.verification_url, 'popUp', 'toolbar=no, scrollbars=no, resizable=no, top=200, left=200, width=650, height=550');\n this.traktRequestSend = true;\n this.traktUserCode = response.data.user_code;\n this.checkTraktAuthenticated();\n }\n },\n\n checkTraktAuthenticated() {\n let counter = 0;\n const i = setInterval(() => {\n (0,_api__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/checkTrakTokenOauth').then(response => {\n if (response.data) {\n this.traktRequestMessage = response.data.result;\n\n if (!response.data.error) {\n clearInterval(i);\n this.traktRequestAuthenticated = true;\n this.traktUserCode = '';\n }\n }\n });\n counter++;\n\n if (counter === 12) {\n clearInterval(i);\n this.traktRequestAuthenticated = false;\n this.traktUserCode = '';\n }\n }, 5000);\n },\n\n testTrakt() {\n const {\n trakt\n } = this;\n const {\n blacklistName\n } = trakt;\n\n if (/\\s/g.test(blacklistName)) {\n this.testTraktResult = 'Check blacklist name; the value needs to be a trakt slug';\n this.traktBlacklistClass = 'warning';\n return;\n }\n\n this.traktBlacklistClass = ''; // $('#testTrakt-result').html(MEDUSA.config.layout.loading);\n\n (0,_api__WEBPACK_IMPORTED_MODULE_1__.apiRoute)(`home/testTrakt?blacklist_name=${blacklistName}`).then(result => {\n this.testTraktResult = result.data; // $('#testTrakt').prop('disabled', false);\n });\n },\n\n traktForceSync() {\n // $('#testTrakt-result').html(MEDUSA.config.layout.loading);\n $.getJSON('home/forceTraktSync', data => {\n this.testTraktResult = data.result;\n });\n },\n\n async save() {\n const {\n trakt,\n setConfig\n } = this; // Disable the save button until we're done.\n\n this.saving = true;\n const section = 'main';\n const config = {\n notifiers: {\n trakt\n }\n };\n\n try {\n await setConfig({\n section,\n config\n });\n this.$snotify.success('Saved Trakt config', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error('Error while trying to save Trakt config', 'Error');\n } finally {\n this.saving = false;\n }\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/helpers/trakt-authentication.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/history-compact.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/history-compact.vue?vue&type=script&lang=js& ***!
@@ -642,7 +664,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api */ \"./src/api.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'manage-searches',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_1__.AppLink\n },\n\n data() {\n return {\n sceneExceptions: [{\n id: 'local',\n name: \"Medusa's\",\n url: 'https://github.com/pymedusa/Medusa/wiki/Scene-exceptions-and-numbering',\n lastRefresh: ''\n }, {\n id: 'xem',\n name: 'XEM',\n url: 'http://thexem.de',\n lastRefresh: ''\n }, {\n id: 'anidb',\n name: 'AniDB',\n url: '',\n lastRefresh: ''\n }],\n sceneRefresh: {\n inProgress: true,\n showSpinner: false,\n message: ''\n }\n };\n },\n\n computed: { // @TODO: Replace with mapState\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapState)({\n general: state => state.config.general,\n system: state => state.config.system,\n search: state => state.config.search,\n queueItems: state => state.queue.queueitems\n }),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)({\n getQueueItemsByName: 'getQueueItemsByName'\n }),\n\n spinnerSrc() {\n const {\n general\n } = this;\n const {\n themeName\n } = general;\n const themeSpinner = themeName === 'dark' ? '-dark' : '';\n return 'images/loading32' + themeSpinner + '.gif';\n },\n\n schedulerStatus() {\n const {\n getQueueItemsByName,\n system\n } = this;\n const {\n schedulers\n } = system;\n\n if (schedulers.length === 0) {\n return;\n }\n\n const backlog = schedulers.find(scheduler => scheduler.key === 'backlog');\n const daily = schedulers.find(scheduler => scheduler.key === 'dailySearch');\n const proper = schedulers.find(scheduler => scheduler.key === 'properFinder');\n const search = schedulers.find(scheduler => scheduler.key === 'searchQueue');\n const forcedSearch = schedulers.find(scheduler => scheduler.key === 'forcedSearchQueue');\n const subtitles = schedulers.find(scheduler => scheduler.key === 'subtitlesFinder');\n const downloadHandler = schedulers.find(scheduler => scheduler.key === 'downloadHandler');\n const downloadHanlderQueueItems = getQueueItemsByName('DOWNLOADHANDLER');\n\n if (downloadHanlderQueueItems.length > 0) {\n // Found a queueitem from the DOWNLOADHANDLER. Check last item for an isActive state.\n const lastItem = downloadHanlderQueueItems.slice(-1);\n downloadHandler.isActive = lastItem[0].isActive;\n }\n\n return {\n backlogPaused: backlog.isEnabled === 'Paused',\n backlogRunning: backlog.isActive,\n dailySearchStatus: daily.isActive,\n searchQueueLength: search.queueLength,\n forcedSearchQueueLength: forcedSearch.queueLength,\n subtitlesFinderStatus: subtitles.isActive,\n properSearchStatus: proper.isActive,\n downloadHandlerStatus: downloadHandler.isActive\n };\n }\n\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapActions)({\n getConfig: 'getConfig'\n }),\n\n /**\n * Trigger the force refresh of all the exception types.\n */\n forceSceneExceptionRefresh() {\n const {\n updateExceptionData,\n sceneRefresh\n } = this; // Start a spinner.\n\n sceneRefresh.showSpinner = true;\n sceneRefresh.inProgress = true;\n sceneRefresh.message = 'Retrieving scene exceptions...';\n _api__WEBPACK_IMPORTED_MODULE_0__.api.post('alias-source/all/operation', {\n type: 'REFRESH'\n }, {\n timeout: 60000\n }).then(() => {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.get('alias-source').then(response => {\n updateExceptionData(response.data);\n }).catch(error => {\n console.error('Trying to get scene exceptions failed with error: ' + error);\n sceneRefresh.showSpinner = false;\n sceneRefresh.inProgress = false;\n sceneRefresh.message = 'Trying to get scene exceptions failed with error: ' + error;\n });\n sceneRefresh.message = 'Finished updating scene exceptions.';\n }).catch(error => {\n console.error('Trying to update scene exceptions failed with error: ' + error);\n sceneRefresh.message = 'Trying to update scene exceptions failed with error: ' + error;\n sceneRefresh.inProgress = false;\n }).finally(() => {\n sceneRefresh.showSpinner = false;\n });\n },\n\n /**\n * Get total number current scene exceptions per source. Will request medusa, xem and anidb name exceptions.\n * @param {Object[]} exceptions - A list of exception types with their last updates.\n * @param {string} exceptions[].id - The name of the scene exception source.\n * @param {number} exceptions[].lastRefresh - The last update of the scene exception source as a timestamp.\n */\n updateExceptionData(exceptions) {\n const {\n sceneExceptions,\n sceneRefresh\n } = this;\n\n for (const type of ['local', 'xem', 'anidb']) {\n const data = exceptions.find(obj => obj.id === type);\n const exception = sceneExceptions.find(item => item.id === type);\n exception.lastRefresh = new Date(data.lastRefresh * 1000).toLocaleDateString();\n }\n\n sceneRefresh.inProgress = false;\n },\n\n forceBacklog() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/backlog');\n },\n\n forceDaily() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/daily');\n },\n\n forceFindPropers() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/proper');\n },\n\n forceSubtitlesFinder() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/subtitles');\n },\n\n toggleBacklog() {\n const {\n schedulerStatus\n } = this;\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/backlog', {\n options: {\n paused: !schedulerStatus.backlogPaused\n }\n }); // eslint-disable-line no-undef\n },\n\n forceDownloadHandler() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.post('system/operation', {\n type: 'FORCEADH'\n });\n }\n\n },\n\n mounted() {\n // Initially load the exception types last updates on page load.\n const {\n updateExceptionData\n } = this;\n _api__WEBPACK_IMPORTED_MODULE_0__.api.get('alias-source').then(response => {\n updateExceptionData(response.data);\n }).catch(error => {\n console.error('Trying to get scene exceptions failed with error: ' + error);\n });\n },\n\n watch: {\n queueItems() {\n const {\n getConfig\n } = this;\n getConfig('system');\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api */ \"./src/api.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'manage-searches',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_1__.AppLink\n },\n\n data() {\n return {\n sceneExceptions: [{\n id: 'local',\n name: \"Medusa's\",\n url: 'https://github.com/pymedusa/Medusa/wiki/Scene-exceptions-and-numbering',\n lastRefresh: ''\n }, {\n id: 'xem',\n name: 'XEM',\n url: 'http://thexem.de',\n lastRefresh: ''\n }, {\n id: 'anidb',\n name: 'AniDB',\n url: '',\n lastRefresh: ''\n }],\n sceneRefresh: {\n inProgress: true,\n showSpinner: false,\n message: ''\n }\n };\n },\n\n computed: { // @TODO: Replace with mapState\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapState)({\n general: state => state.config.general,\n system: state => state.config.system,\n search: state => state.config.search,\n queueItems: state => state.queue.queueitems\n }),\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)({\n getQueueItemsByName: 'getQueueItemsByName'\n }),\n\n spinnerSrc() {\n const {\n general\n } = this;\n const {\n themeName\n } = general;\n const themeSpinner = themeName === 'dark' ? '-dark' : '';\n return 'images/loading32' + themeSpinner + '.gif';\n },\n\n schedulerStatus() {\n const {\n getQueueItemsByName,\n system\n } = this;\n const {\n schedulers\n } = system;\n\n if (schedulers.length === 0) {\n return;\n }\n\n const backlog = schedulers.find(scheduler => scheduler.key === 'backlog');\n const daily = schedulers.find(scheduler => scheduler.key === 'dailySearch');\n const proper = schedulers.find(scheduler => scheduler.key === 'properFinder');\n const search = schedulers.find(scheduler => scheduler.key === 'searchQueue');\n const forcedSearch = schedulers.find(scheduler => scheduler.key === 'forcedSearchQueue');\n const subtitles = schedulers.find(scheduler => scheduler.key === 'subtitlesFinder');\n const downloadHandler = schedulers.find(scheduler => scheduler.key === 'downloadHandler');\n const downloadHanlderQueueItems = getQueueItemsByName('DOWNLOADHANDLER');\n\n if (downloadHanlderQueueItems.length > 0) {\n // Found a queueitem from the DOWNLOADHANDLER. Check last item for an isActive state.\n const lastItem = downloadHanlderQueueItems.slice(-1);\n downloadHandler.isActive = lastItem[0].isActive;\n }\n\n return {\n backlogPaused: backlog.isEnabled === 'Paused',\n backlogRunning: backlog.isActive,\n dailySearchStatus: daily.isActive,\n searchQueueLength: search.queueLength,\n forcedSearchQueueLength: forcedSearch.queueLength,\n subtitlesFinderStatus: subtitles.isActive,\n properSearchStatus: proper.isActive,\n downloadHandlerStatus: downloadHandler.isActive\n };\n }\n\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapActions)({\n getConfig: 'getConfig'\n }),\n\n /**\n * Trigger the force refresh of all the exception types.\n */\n forceSceneExceptionRefresh() {\n const {\n updateExceptionData,\n sceneRefresh\n } = this; // Start a spinner.\n\n sceneRefresh.showSpinner = true;\n sceneRefresh.inProgress = true;\n sceneRefresh.message = 'Retrieving scene exceptions...';\n _api__WEBPACK_IMPORTED_MODULE_0__.api.post('alias-source/all/operation', {\n type: 'REFRESH'\n }, {\n timeout: 60000\n }).then(() => {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.get('alias-source').then(response => {\n updateExceptionData(response.data);\n }).catch(error => {\n console.error('Trying to get scene exceptions failed with error: ' + error);\n sceneRefresh.showSpinner = false;\n sceneRefresh.inProgress = false;\n sceneRefresh.message = 'Trying to get scene exceptions failed with error: ' + error;\n });\n sceneRefresh.message = 'Finished updating scene exceptions.';\n }).catch(error => {\n console.error('Trying to update scene exceptions failed with error: ' + error);\n sceneRefresh.message = 'Trying to update scene exceptions failed with error: ' + error;\n sceneRefresh.inProgress = false;\n }).finally(() => {\n sceneRefresh.showSpinner = false;\n });\n },\n\n /**\n * Get total number current scene exceptions per source. Will request medusa, xem and anidb name exceptions.\n * @param {Object[]} exceptions - A list of exception types with their last updates.\n * @param {string} exceptions[].id - The name of the scene exception source.\n * @param {number} exceptions[].lastRefresh - The last update of the scene exception source as a timestamp.\n */\n updateExceptionData(exceptions) {\n const {\n sceneExceptions,\n sceneRefresh\n } = this;\n\n for (const type of ['local', 'xem', 'anidb']) {\n const data = exceptions.find(obj => obj.id === type);\n const exception = sceneExceptions.find(item => item.id === type);\n exception.lastRefresh = new Date(data.lastRefresh * 1000).toLocaleDateString();\n }\n\n sceneRefresh.inProgress = false;\n },\n\n forceBacklog() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/backlog');\n },\n\n forceDaily() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/daily');\n },\n\n forceFindPropers() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/proper');\n },\n\n forceSubtitlesFinder() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/subtitles');\n },\n\n toggleBacklog() {\n const {\n schedulerStatus\n } = this;\n _api__WEBPACK_IMPORTED_MODULE_0__.api.put('search/backlog', {\n options: {\n paused: !schedulerStatus.backlogPaused\n }\n }); // eslint-disable-line no-undef\n },\n\n forceDownloadHandler() {\n _api__WEBPACK_IMPORTED_MODULE_0__.api.post('system/operation', {\n type: 'FORCEADH'\n });\n },\n\n async searchRecommendedShows(source) {\n try {\n await _api__WEBPACK_IMPORTED_MODULE_0__.api.post(`recommended/${source}`);\n this.$snotify.success('Started search for new recommended shows', `Searching ${source}`);\n } catch (error) {\n if (error.response.status === 409) {\n this.$snotify.error(error.response.data.error, 'Error');\n }\n }\n }\n\n },\n\n mounted() {\n // Initially load the exception types last updates on page load.\n const {\n updateExceptionData\n } = this;\n _api__WEBPACK_IMPORTED_MODULE_0__.api.get('alias-source').then(response => {\n updateExceptionData(response.data);\n }).catch(error => {\n console.error('Trying to get scene exceptions failed with error: ' + error);\n });\n },\n\n watch: {\n queueItems() {\n const {\n getConfig\n } = this;\n getConfig('system');\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -686,7 +708,29 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api */ \"./src/api.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"./src/components/index.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony import */ var vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-nav-tabs/dist/vue-tabs.js */ \"./node_modules/vue-nav-tabs/dist/vue-tabs.js\");\n/* harmony import */ var vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5__);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n AddShowOptions: ___WEBPACK_IMPORTED_MODULE_2__.AddShowOptions,\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_3__.AppLink,\n RootDirs: _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__.default,\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5__.ToggleButton,\n VTab: vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__.VTab,\n VueTabs: vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__.VueTabs\n },\n\n data() {\n return {\n // @FIXME: Python conversions (fix when config is loaded before routes)\n // indexers: ${json.dumps(indexers)},\n isLoading: false,\n requestTimeout: 3 * 60 * 1000,\n errorMessage: '',\n rootDirs: [],\n dirList: [],\n useCustomizeOptions: false,\n promptForSettings: false,\n enableAnimeOptions: true,\n presetShowOptions: {\n subtitles: null,\n status: null,\n statusAfter: null,\n seasonFolders: null,\n anime: null,\n scene: null,\n release: {\n blacklist: [],\n whitelist: []\n },\n quality: {\n allowed: [],\n preferred: []\n },\n showLists: []\n },\n addShowComponents: {},\n // An array of mounted new-show.vue components.\n addedShowQueueItems: []\n };\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapState)({\n config: state => state.config.general,\n // Used by `inc_addShowOptions.mako`\n indexers: state => state.config.indexers,\n indexerDefault: state => state.config.general.indexerDefault,\n queueitems: state => state.shows.queueitems\n }),\n\n selectedRootDirs() {\n return this.rootDirs.filter(rd => rd.selected);\n },\n\n filteredDirList() {\n return this.dirList.filter(dir => !dir.alreadyAdded);\n },\n\n displayPaths() {\n // Mark the root dir as bold in the path\n const appendSepChar = path => {\n const sepChar = (() => {\n if (path.includes('\\\\')) {\n return '\\\\';\n }\n\n if (path.includes('/')) {\n return '/';\n }\n\n return '';\n })();\n\n return path.slice(-1) === sepChar ? path : path + sepChar;\n };\n\n return this.filteredDirList.map(dir => {\n const rootDirObj = this.rootDirs.find(rd => dir.path.startsWith(rd.path));\n\n if (!rootDirObj) {\n return dir.path;\n }\n\n const rootDir = appendSepChar(rootDirObj.path);\n const rdEndIndex = dir.path.indexOf(rootDir) + rootDir.length;\n return '
' + dir.path.slice(0, rdEndIndex) + ' ' + dir.path.slice(rdEndIndex);\n });\n },\n\n showTable() {\n const {\n isLoading,\n selectedRootDirs,\n errorMessage\n } = this;\n return !isLoading && selectedRootDirs.length !== 0 && errorMessage === '';\n },\n\n checkAll: {\n get() {\n const selectedDirList = this.filteredDirList.filter(dir => dir.selected);\n\n if (selectedDirList.length === 0) {\n return false;\n }\n\n return selectedDirList.length === this.filteredDirList.length;\n },\n\n set(newValue) {\n this.dirList = this.dirList.map(dir => {\n dir.selected = newValue;\n return dir;\n });\n }\n\n },\n\n indexerListOptions() {\n const {\n indexers\n } = this;\n const allIndexers = [{\n text: 'All Indexers',\n value: 0\n }];\n const indexerOptions = Object.values(indexers.indexers).map(indexer => ({\n value: indexer.id,\n text: indexer.name\n }));\n return [...allIndexers, ...indexerOptions];\n }\n\n },\n methods: {\n indexExist(index) {\n return this.addShowComponents[`curdirindex-${index}`] === undefined;\n },\n\n /**\n * Transform root dirs paths array, and select all the paths.\n * @param {string[]} paths - The root dir paths\n */\n rootDirsPathsUpdated(paths) {\n this.rootDirs = paths.map(path => {\n return {\n selected: true,\n path\n };\n });\n },\n\n update() {\n const {\n indexerDefault\n } = this;\n\n if (this.isLoading) {\n return;\n }\n\n this.isLoading = true;\n this.errorMessage = '';\n const indices = this.rootDirs.reduce((indices, rd, index) => {\n if (rd.selected) {\n indices.push(index);\n }\n\n return indices;\n }, []);\n\n if (indices.length === 0) {\n this.dirList = [];\n this.isLoading = false;\n return;\n }\n\n const config = {\n params: {\n rootDirs: indices.join(',')\n },\n timeout: this.requestTimeout\n };\n _api__WEBPACK_IMPORTED_MODULE_0__.api.get('internal/existingSeries', config).then(response => {\n const {\n data\n } = response;\n this.dirList = data.map(dir => {\n // Pre-select all dirs not already added\n dir.selected = !dir.alreadyAdded;\n dir.selectedIndexer = dir.metadata.indexer || indexerDefault;\n return dir;\n });\n this.isLoading = false;\n this.$nextTick(() => {\n $('#addRootDirTable').tablesorter({\n widgets: ['zebra'],\n // This fixes the checkAll checkbox getting unbound because this code changes the innerHTML of the
\n // https://github.com/Mottie/tablesorter/blob/v2.28.1/js/jquery.tablesorter.js#L566\n headerTemplate: '',\n headers: {\n 0: {\n sorter: false\n },\n 3: {\n sorter: false\n }\n }\n }) // Fixes tablesorter not working after root dirs are refreshed\n .trigger('updateAll');\n });\n }).catch(error => {\n this.errorMessage = error.message;\n this.dirList = [];\n this.isLoading = false;\n });\n },\n\n seriesIndexerUrl(curDir) {\n const {\n showUrl\n } = Object.values(this.indexers.indexers).find(indexer => indexer.id === curDir.metadata.indexer);\n return `${showUrl}${curDir.metadata.seriesId}`;\n },\n\n /**\n * Loop through the selected shows and open an add-show dialog, if needed.\n * Or add unattended if possible.\n *\n * @returns {void}\n */\n submitSeriesDirs() {\n const dirList = this.filteredDirList.filter(dir => dir.selected);\n\n if (dirList.length === 0) {\n return false;\n }\n\n for (const [curDirIndex] of dirList.entries()) {\n // Loop through the existing shows.\n this.openAddNewShow(curDirIndex, true);\n }\n },\n\n updateOptions(options) {\n // Update seleted options from add-show-options.vue @change event.\n this.presetShowOptions.subtitles = options.subtitles;\n this.presetShowOptions.status = options.status;\n this.presetShowOptions.statusAfter = options.statusAfter;\n this.presetShowOptions.seasonFolders = options.seasonFolders;\n this.presetShowOptions.anime = options.anime;\n this.presetShowOptions.scene = options.scene;\n this.presetShowOptions.release.blacklist = options.release.blacklist;\n this.presetShowOptions.release.whitelist = options.release.whitelist;\n this.presetShowOptions.quality.allowed = options.quality.allowed;\n this.presetShowOptions.quality.preferred = options.quality.preferred;\n this.presetShowOptions.showLists = options.showLists;\n },\n\n /**\n * Mount the new-show.vue component and provide nfo info if available.\n * @param {number} curDirIndex - Index of the looped filteredDirList array.\n * @param {boolean} unattended - true if shows should be added without prompting for show options.\n */\n openAddNewShow(curDirIndex, unattended = false) {\n const {\n addShowComponents,\n filteredDirList,\n presetShowOptions,\n promptForSettings\n } = this;\n const curDir = filteredDirList[curDirIndex];\n const providedInfo = {\n use: false,\n showId: 0,\n showName: '',\n showDir: curDir.path,\n indexerId: 0,\n indexerLanguage: 'en',\n curDirIndex,\n // Add so we can return it with the matching queueitem. This allows us to keep track.\n // If promptForSettings is enabled, negate out the unattended flag if enabled.\n unattended: unattended && !promptForSettings // Passed as a flag, to auto add the show if enabled.\n\n };\n\n if (curDir.metadata.indexer) {\n providedInfo.indexerId = curDir.metadata.indexer;\n }\n\n if (curDir.metadata.seriesId) {\n providedInfo.showId = curDir.metadata.seriesId;\n }\n\n if (curDir.metadata.seriesName) {\n providedInfo.showName = curDir.metadata.seriesName;\n }\n\n providedInfo.use = Boolean(providedInfo.indexerId !== 0 && providedInfo.showId !== 0 && providedInfo.showName);\n const propsData = {\n providedInfo\n };\n\n if (this.useCustomizeOptions) {\n // Is useCustomizeOptions is enabled. The preset options are used.\n propsData.presetShowOptions = presetShowOptions;\n propsData.presetShowOptions.use = true;\n }\n\n const NewShowClass = vue__WEBPACK_IMPORTED_MODULE_7__.default.extend(___WEBPACK_IMPORTED_MODULE_2__.NewShow);\n const instance = new NewShowClass({\n propsData,\n parent: this\n }); // Bind the 'added' event, as through that we receive the addShow queueitem.\n\n instance.$on('added', queueitem => {\n this.addedShowQueueItems.push(queueitem);\n this.closeAddShowComponent(queueitem.providedInfo.curDirIndex);\n }); // Need these, because we want it to span the width of the parent table row.\n\n const row = document.createElement('tr');\n row.style.columnSpan = 'all';\n const cell = document.createElement('td');\n cell.setAttribute('colspan', '9999');\n const wrapper = document.createElement('div'); // Just used to mount on.\n\n row.append(cell);\n cell.append(wrapper);\n this.$refs[`curdirindex-${curDirIndex}`][0].after(row);\n instance.$mount(wrapper);\n vue__WEBPACK_IMPORTED_MODULE_7__.default.set(addShowComponents, `curdirindex-${curDirIndex}`, instance);\n },\n\n closeAddShowComponent(index) {\n const {\n addShowComponents\n } = this;\n addShowComponents[`curdirindex-${index}`].$destroy(); // Remove the element from the DOM\n\n addShowComponents[`curdirindex-${index}`].$el.closest('tr').remove();\n vue__WEBPACK_IMPORTED_MODULE_7__.default.set(addShowComponents, `curdirindex-${index}`, undefined);\n }\n\n },\n watch: {\n selectedRootDirs() {\n this.update();\n },\n\n queueitems(queueItem) {\n const {\n addedShowQueueItems\n } = this;\n\n for (const [index, addedItem] of addedShowQueueItems.entries()) {\n const foundItem = queueItem.find(item => item.identifier === addedItem.identifier);\n\n if (foundItem) {\n // Merge the data\n vue__WEBPACK_IMPORTED_MODULE_7__.default.set(this.addedShowQueueItems, index, { ...addedItem,\n ...foundItem\n });\n }\n }\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/new-shows-existing.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api */ \"./src/api.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"./src/components/index.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony import */ var vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-nav-tabs/dist/vue-tabs.js */ \"./node_modules/vue-nav-tabs/dist/vue-tabs.js\");\n/* harmony import */ var vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5__);\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n AddShowOptions: ___WEBPACK_IMPORTED_MODULE_2__.AddShowOptions,\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_3__.AppLink,\n RootDirs: _root_dirs_vue__WEBPACK_IMPORTED_MODULE_1__.default,\n ToggleButton: vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_5__.ToggleButton,\n VTab: vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__.VTab,\n VueTabs: vue_nav_tabs_dist_vue_tabs_js__WEBPACK_IMPORTED_MODULE_4__.VueTabs\n },\n\n data() {\n return {\n isLoading: false,\n requestTimeout: 3 * 60 * 1000,\n errorMessage: '',\n rootDirs: [],\n dirList: [],\n useCustomizeOptions: false,\n promptForSettings: false,\n enableAnimeOptions: true,\n presetShowOptions: {\n subtitles: null,\n status: null,\n statusAfter: null,\n seasonFolders: null,\n anime: null,\n scene: null,\n release: {\n blacklist: [],\n whitelist: []\n },\n quality: {\n allowed: [],\n preferred: []\n },\n showLists: []\n },\n addShowComponents: {},\n // An array of mounted new-show.vue components.\n addedShowQueueItems: []\n };\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_6__.mapState)({\n indexers: state => state.config.indexers,\n indexerDefault: state => state.config.general.indexerDefault,\n queueitems: state => state.shows.queueitems\n }),\n\n selectedRootDirs() {\n return this.rootDirs.filter(rd => rd.selected);\n },\n\n filteredDirList() {\n return this.dirList.filter(dir => !dir.alreadyAdded);\n },\n\n displayPaths() {\n // Mark the root dir as bold in the path\n const appendSepChar = path => {\n const sepChar = (() => {\n if (path.includes('\\\\')) {\n return '\\\\';\n }\n\n if (path.includes('/')) {\n return '/';\n }\n\n return '';\n })();\n\n return path.slice(-1) === sepChar ? path : path + sepChar;\n };\n\n return this.filteredDirList.map(dir => {\n const rootDirObj = this.rootDirs.find(rd => dir.path.startsWith(rd.path));\n\n if (!rootDirObj) {\n return dir.path;\n }\n\n const rootDir = appendSepChar(rootDirObj.path);\n const rdEndIndex = dir.path.indexOf(rootDir) + rootDir.length;\n return '' + dir.path.slice(0, rdEndIndex) + ' ' + dir.path.slice(rdEndIndex);\n });\n },\n\n showTable() {\n const {\n isLoading,\n selectedRootDirs,\n errorMessage\n } = this;\n return !isLoading && selectedRootDirs.length !== 0 && errorMessage === '';\n },\n\n checkAll: {\n get() {\n const selectedDirList = this.filteredDirList.filter(dir => dir.selected);\n\n if (selectedDirList.length === 0) {\n return false;\n }\n\n return selectedDirList.length === this.filteredDirList.length;\n },\n\n set(newValue) {\n this.dirList = this.dirList.map(dir => {\n dir.selected = newValue;\n return dir;\n });\n }\n\n },\n\n indexerListOptions() {\n const {\n indexers\n } = this;\n const allIndexers = [{\n text: 'All Indexers',\n value: 0\n }];\n const indexerOptions = Object.values(indexers.indexers).map(indexer => ({\n value: indexer.id,\n text: indexer.name\n }));\n return [...allIndexers, ...indexerOptions];\n }\n\n },\n methods: {\n indexExist(index) {\n return this.addShowComponents[`curdirindex-${index}`] === undefined;\n },\n\n /**\n * Transform root dirs paths array, and select all the paths.\n * @param {string[]} paths - The root dir paths\n */\n rootDirsPathsUpdated(paths) {\n this.rootDirs = paths.map(path => {\n return {\n selected: true,\n path\n };\n });\n },\n\n update() {\n const {\n indexerDefault\n } = this;\n\n if (this.isLoading) {\n return;\n }\n\n this.isLoading = true;\n this.errorMessage = '';\n const indices = this.rootDirs.reduce((indices, rd, index) => {\n if (rd.selected) {\n indices.push(index);\n }\n\n return indices;\n }, []);\n\n if (indices.length === 0) {\n this.dirList = [];\n this.isLoading = false;\n return;\n }\n\n const config = {\n params: {\n rootDirs: indices.join(',')\n },\n timeout: this.requestTimeout\n };\n _api__WEBPACK_IMPORTED_MODULE_0__.api.get('internal/existingSeries', config).then(response => {\n const {\n data\n } = response;\n this.dirList = data.map(dir => {\n // Pre-select all dirs not already added\n dir.selected = !dir.alreadyAdded;\n dir.selectedIndexer = dir.metadata.indexer || indexerDefault;\n return dir;\n });\n this.isLoading = false;\n this.$nextTick(() => {\n $('#addRootDirTable').tablesorter({\n widgets: ['zebra'],\n // This fixes the checkAll checkbox getting unbound because this code changes the innerHTML of the \n // https://github.com/Mottie/tablesorter/blob/v2.28.1/js/jquery.tablesorter.js#L566\n headerTemplate: '',\n headers: {\n 0: {\n sorter: false\n },\n 3: {\n sorter: false\n }\n }\n }) // Fixes tablesorter not working after root dirs are refreshed\n .trigger('updateAll');\n });\n }).catch(error => {\n this.errorMessage = error.message;\n this.dirList = [];\n this.isLoading = false;\n });\n },\n\n seriesIndexerUrl(curDir) {\n const {\n showUrl\n } = Object.values(this.indexers.indexers).find(indexer => indexer.id === curDir.metadata.indexer);\n return `${showUrl}${curDir.metadata.seriesId}`;\n },\n\n /**\n * Loop through the selected shows and open an add-show dialog, if needed.\n * Or add unattended if possible.\n *\n * @returns {void}\n */\n submitSeriesDirs() {\n const dirList = this.filteredDirList.filter(dir => dir.selected);\n\n if (dirList.length === 0) {\n return false;\n }\n\n for (const [curDirIndex] of dirList.entries()) {\n // Loop through the existing shows.\n this.openAddNewShow(curDirIndex, true);\n }\n },\n\n updateOptions(options) {\n // Update seleted options from add-show-options.vue @change event.\n this.presetShowOptions.subtitles = options.subtitles;\n this.presetShowOptions.status = options.status;\n this.presetShowOptions.statusAfter = options.statusAfter;\n this.presetShowOptions.seasonFolders = options.seasonFolders;\n this.presetShowOptions.anime = options.anime;\n this.presetShowOptions.scene = options.scene;\n this.presetShowOptions.release.blacklist = options.release.blacklist;\n this.presetShowOptions.release.whitelist = options.release.whitelist;\n this.presetShowOptions.quality.allowed = options.quality.allowed;\n this.presetShowOptions.quality.preferred = options.quality.preferred;\n this.presetShowOptions.showLists = options.showLists;\n },\n\n /**\n * Mount the new-show.vue component and provide nfo info if available.\n * @param {number} curDirIndex - Index of the looped filteredDirList array.\n * @param {boolean} unattended - true if shows should be added without prompting for show options.\n */\n openAddNewShow(curDirIndex, unattended = false) {\n const {\n addShowComponents,\n filteredDirList,\n presetShowOptions,\n promptForSettings\n } = this;\n const curDir = filteredDirList[curDirIndex];\n const providedInfo = {\n use: false,\n showId: 0,\n showName: '',\n showDir: curDir.path,\n indexerId: 0,\n indexerLanguage: 'en',\n curDirIndex,\n // Add so we can return it with the matching queueitem. This allows us to keep track.\n // If promptForSettings is enabled, negate out the unattended flag if enabled.\n unattended: unattended && !promptForSettings // Passed as a flag, to auto add the show if enabled.\n\n };\n\n if (curDir.metadata.indexer) {\n providedInfo.indexerId = curDir.metadata.indexer;\n }\n\n if (curDir.metadata.seriesId) {\n providedInfo.showId = curDir.metadata.seriesId;\n }\n\n if (curDir.metadata.seriesName) {\n providedInfo.showName = curDir.metadata.seriesName;\n }\n\n providedInfo.use = Boolean(providedInfo.indexerId !== 0 && providedInfo.showId !== 0 && providedInfo.showName);\n const propsData = {\n providedInfo\n };\n\n if (this.useCustomizeOptions) {\n // Is useCustomizeOptions is enabled. The preset options are used.\n propsData.presetShowOptions = presetShowOptions;\n propsData.presetShowOptions.use = true;\n }\n\n const NewShowClass = vue__WEBPACK_IMPORTED_MODULE_7__.default.extend(___WEBPACK_IMPORTED_MODULE_2__.NewShow);\n const instance = new NewShowClass({\n propsData,\n parent: this\n }); // Bind the 'added' event, as through that we receive the addShow queueitem.\n\n instance.$on('added', queueitem => {\n this.addedShowQueueItems.push(queueitem);\n this.closeAddShowComponent(queueitem.providedInfo.curDirIndex);\n }); // Need these, because we want it to span the width of the parent table row.\n\n const row = document.createElement('tr');\n row.style.columnSpan = 'all';\n const cell = document.createElement('td');\n cell.setAttribute('colspan', '9999');\n const wrapper = document.createElement('div'); // Just used to mount on.\n\n row.append(cell);\n cell.append(wrapper);\n this.$refs[`curdirindex-${curDirIndex}`][0].after(row);\n instance.$mount(wrapper);\n vue__WEBPACK_IMPORTED_MODULE_7__.default.set(addShowComponents, `curdirindex-${curDirIndex}`, instance);\n },\n\n closeAddShowComponent(index) {\n const {\n addShowComponents\n } = this;\n addShowComponents[`curdirindex-${index}`].$destroy(); // Remove the element from the DOM\n\n addShowComponents[`curdirindex-${index}`].$el.closest('tr').remove();\n vue__WEBPACK_IMPORTED_MODULE_7__.default.set(addShowComponents, `curdirindex-${index}`, undefined);\n }\n\n },\n watch: {\n selectedRootDirs() {\n this.update();\n },\n\n queueitems(queueItem) {\n const {\n addedShowQueueItems\n } = this;\n\n for (const [index, addedItem] of addedShowQueueItems.entries()) {\n const foundItem = queueItem.find(item => item.identifier === addedItem.identifier);\n\n if (foundItem) {\n // Merge the data\n vue__WEBPACK_IMPORTED_MODULE_7__.default.set(this.addedShowQueueItems, index, { ...addedItem,\n ...foundItem\n });\n }\n }\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/new-shows-existing.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
+/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=script&lang=js&":
+/*!*********************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=script&lang=js& ***!
+ \*********************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api */ \"./src/api.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'recommended-poster',\n components: {\n Asset: _helpers__WEBPACK_IMPORTED_MODULE_1__.Asset,\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_1__.AppLink\n },\n props: {\n show: {\n type: Object,\n required: true\n }\n },\n\n data() {\n return {\n displayPlot: false,\n selectedAddShowOption: 'search'\n };\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapState)({\n traktConfig: state => state.recommended.trakt,\n externals: state => state.recommended.externals\n })\n },\n methods: {\n addShow(show) {\n const {\n selectedAddShowOption\n } = this;\n\n if (selectedAddShowOption === 'search') {\n // Route to the add-new-show.vue component, with the show's title.\n this.$router.push({\n name: 'addNewShow',\n params: {\n providedInfo: {\n showName: show.title\n }\n }\n });\n return;\n }\n\n let showId = null;\n\n if (Object.keys(show.externals).length !== 0 && show.externals[selectedAddShowOption + '_id']) {\n showId = {\n [selectedAddShowOption]: show.externals[selectedAddShowOption + '_id']\n };\n }\n\n if (this.addShowById(showId)) {\n show.showInLibrary = true;\n }\n },\n\n /**\n * Add by show id.\n * @param {number} showId - Show id.\n */\n async addShowById(showId) {\n const {\n enableShowOptions,\n selectedShowOptions\n } = this;\n const options = {};\n\n if (enableShowOptions) {\n options.options = selectedShowOptions;\n }\n\n try {\n await _api__WEBPACK_IMPORTED_MODULE_0__.api.post('series', {\n id: showId,\n options\n });\n this.$snotify.success('Adding new show to library', 'Saved', {\n timeout: 20000\n });\n return true;\n } catch (error) {\n this.$snotify.error('Error while trying to add new show', 'Error');\n }\n\n return false;\n },\n\n blacklistTrakt(show) {\n show.trakt.blacklisted = true;\n (0,_api__WEBPACK_IMPORTED_MODULE_0__.apiRoute)(`addShows/addShowToBlacklist?seriesid=${show.externals.tvdb_id}`);\n },\n\n addShowOptions(show) {\n const {\n externals\n } = show;\n\n if (show.isAnime) {\n return [{\n text: 'Tvdb',\n value: 'tvdb_id'\n }];\n }\n\n const options = []; // Add through the add-new-show.vue component\n\n options.push({\n text: 'search show',\n value: 'search'\n });\n\n for (const external in externals) {\n if (['tvdb_id', 'tmdb_id', 'tvmaze_id'].includes(external)) {\n const externalName = external.split('_')[0];\n options.push({\n text: externalName,\n value: externalName\n });\n }\n }\n\n return options;\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
+/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=script&lang=js&":
+/*!**************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=script&lang=js& ***!
+ \**************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vanilla-lazyload */ \"./node_modules/vanilla-lazyload/dist/lazyload.min.js\");\n/* harmony import */ var vanilla_lazyload__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vanilla_lazyload__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../api.js */ \"./src/api.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* harmony import */ var _recommended_poster_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./recommended-poster.vue */ \"./src/components/recommended-poster.vue\");\n/* harmony import */ var vueisotope__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vueisotope */ \"./node_modules/vueisotope/dist/vue_isotope.min.js\");\n/* harmony import */ var vueisotope__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(vueisotope__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _fortawesome_vue_fontawesome__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/vue-fontawesome */ \"./node_modules/@fortawesome/vue-fontawesome/index.es.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'recommended',\n components: {\n AddShowOptions: _add_show_options_vue__WEBPACK_IMPORTED_MODULE_2__.default,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_3__.ConfigTemplate,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_3__.ConfigToggleSlider,\n FontAwesomeIcon: _fortawesome_vue_fontawesome__WEBPACK_IMPORTED_MODULE_6__.FontAwesomeIcon,\n RecommendedPoster: _recommended_poster_vue__WEBPACK_IMPORTED_MODULE_4__.default,\n TraktAuthentication: _helpers__WEBPACK_IMPORTED_MODULE_3__.TraktAuthentication,\n Isotope: (vueisotope__WEBPACK_IMPORTED_MODULE_5___default())\n },\n\n metaInfo() {\n if (!this.show || !this.show.title) {\n return {\n title: 'Medusa'\n };\n }\n\n const {\n title\n } = this.show;\n return {\n title,\n titleTemplate: '%s | Medusa'\n };\n },\n\n data() {\n const IMDB = 10;\n const ANIDB = 11;\n const TRAKT = 12;\n const ANILIST = 13;\n const externals = {\n IMDB,\n ANIDB,\n TRAKT,\n ANILIST\n };\n const sourceToString = {\n [externals.IMDB]: 'imdb',\n [externals.ANIDB]: 'anidb',\n [externals.TRAKT]: 'trakt',\n [externals.ANILIST]: 'anilist'\n };\n const sortOptions = [{\n text: 'Name',\n value: 'name'\n }, {\n text: 'Original',\n value: 'original'\n }, {\n text: 'Votes',\n value: 'votes'\n }, {\n text: '% Rating',\n value: 'rating'\n }, {\n text: '% Rating > Votes',\n value: 'rating_votes'\n }];\n const sortDirectionOptions = [{\n text: 'Ascending',\n value: 'asc'\n }, {\n text: 'Descending',\n value: 'desc'\n }];\n return {\n externals,\n sourceToString,\n sortOptions,\n sortDirectionOptions,\n sortOptionsValue: 'original',\n sortDirectionOptionsValue: 'desc',\n filterOption: null,\n filterShows: '',\n configLoaded: false,\n rootDirs: [],\n enableShowOptions: false,\n selectedShowOptions: {\n subtitles: null,\n status: null,\n statusAfter: null,\n seasonFolders: null,\n anime: null,\n scene: null,\n release: {\n blacklist: [],\n whitelist: []\n },\n quality: {\n allowed: [],\n preferred: []\n }\n },\n sourceOptions: [{\n text: 'Anidb',\n value: externals.ANIDB\n }, {\n text: 'IMDB',\n value: externals.IMDB\n }, {\n text: 'Trakt',\n value: externals.TRAKT\n }, {\n text: 'AniList',\n value: externals.ANILIST\n }, {\n text: 'all',\n value: -1\n }],\n selectedSource: 10,\n selectedList: '',\n // Isotope stuff\n selected: null,\n option: {\n getSortData: {\n id: 'seriesId',\n title: itemElem => {\n return itemElem.title.toLowerCase();\n },\n rating: 'rating',\n votes: 'votes'\n },\n getFilterData: {\n filterByText: itemElem => {\n return itemElem.title.toLowerCase().includes(this.filterShows.toLowerCase());\n }\n },\n sortBy: 'votes',\n layoutMode: 'fitRows',\n sortAscending: false\n },\n showTraktAuthDialog: false,\n traktWarning: false,\n traktWarningMessage: '',\n showsLoaded: false\n };\n },\n\n mounted() {\n const {\n getRecommendedShows\n } = this;\n getRecommendedShows().then(() => {\n this.showsLoaded = true;\n this.$nextTick(() => {\n this.isotopeLayout();\n });\n });\n this.$once('loaded', () => {\n this.configLoaded = true;\n });\n this.$watch('recommendedLists', () => {\n this.setSelectedList(this.selectedSource);\n });\n },\n\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapState)({\n config: state => state.config,\n trakt: state => state.config.notifiers.trakt,\n recommendedShows: state => state.recommended.shows,\n traktConfig: state => state.recommended.trakt,\n recommendedLists: state => state.recommended.categories,\n queueitems: state => state.queue.queueitems\n }),\n\n filteredShowsByList() {\n const {\n imgLazyLoad,\n recommendedShows,\n selectedSource,\n selectedList\n } = this;\n let filteredList = null;\n\n if (selectedSource === -1) {\n return recommendedShows;\n }\n\n filteredList = recommendedShows.filter(show => show.source === selectedSource);\n\n if (selectedList) {\n filteredList = filteredList.filter(show => show.subcat === selectedList);\n }\n\n this.$nextTick(() => {\n // This is needed for now.\n imgLazyLoad.update();\n });\n return filteredList;\n },\n\n imgLazyLoad() {\n console.log('imgLazyLoad object constructud!');\n return new (vanilla_lazyload__WEBPACK_IMPORTED_MODULE_0___default())({\n // Example of options object -> see options section\n threshold: 500\n });\n },\n\n listOptions() {\n const {\n recommendedLists,\n selectedSource\n } = this;\n const sourceLists = recommendedLists[selectedSource] || [];\n return sourceLists.map(list => ({\n text: list,\n value: list\n }));\n }\n\n },\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapActions)({\n getRecommendedShows: 'getRecommendedShows'\n }),\n\n containerClass(show) {\n let classes = 'recommended-container default-poster show-row';\n const {\n traktConfig\n } = this;\n const {\n removedFromMedusa\n } = traktConfig;\n\n if (show.showInLibrary) {\n classes += ' show-in-list';\n }\n\n if (removedFromMedusa.includes(show.externals.tvdb_id)) {\n classes += ' removed-from-medusa';\n }\n\n return classes;\n },\n\n isotopeLayout() {\n const {\n imgLazyLoad\n } = this;\n console.log('isotope Layout loaded');\n imgLazyLoad.update();\n },\n\n updateOptions(options) {\n // Update seleted options from add-show-options.vue @change event.\n const {\n anime,\n scene,\n seasonFolders,\n status,\n subtitles,\n statusAfter,\n release,\n quality\n } = options;\n const {\n blacklist,\n whitelist\n } = release;\n const {\n allowed,\n preferred\n } = quality;\n this.selectedShowOptions.subtitles = subtitles;\n this.selectedShowOptions.status = status;\n this.selectedShowOptions.statusAfter = statusAfter;\n this.selectedShowOptions.seasonFolders = seasonFolders;\n this.selectedShowOptions.anime = anime;\n this.selectedShowOptions.scene = scene;\n this.selectedShowOptions.release.blacklist = blacklist;\n this.selectedShowOptions.release.whitelist = whitelist;\n this.selectedShowOptions.quality.allowed = allowed;\n this.selectedShowOptions.quality.preferred = preferred;\n },\n\n sort() {\n const mapped = {\n original: 'original-order',\n rating: 'rating',\n votes: 'votes',\n name: 'title',\n rating_votes: ['rating', 'votes'] // eslint-disable-line camelcase\n\n };\n const {\n option: isotopeOptions,\n sortOptionsValue\n } = this;\n this.option.sortBy = mapped[sortOptionsValue];\n this.$refs.filteredShows.arrange(isotopeOptions);\n },\n\n filter(key) {\n this.$refs.filteredShows.filter(key);\n this.filterOption = key;\n },\n\n sortDirection() {\n const {\n option: isotopeOptions,\n sortDirectionOptionsValue\n } = this;\n this.option.sortAscending = sortDirectionOptionsValue === 'asc';\n this.$refs.filteredShows.arrange(isotopeOptions);\n },\n\n setSelectedList(selectedSource) {\n const {\n recommendedLists,\n selectedList\n } = this;\n const listOptions = recommendedLists[selectedSource];\n\n if (!listOptions) {\n return;\n }\n\n if (selectedList === '' || !listOptions.includes(selectedList)) {\n this.selectedList = listOptions[0];\n }\n },\n\n async searchRecommendedShows() {\n const {\n sourceToString,\n selectedSource\n } = this;\n const source = sourceToString[selectedSource];\n\n try {\n await _api_js__WEBPACK_IMPORTED_MODULE_1__.api.post(`recommended/${source}`);\n this.$snotify.success('Started search for new recommended shows', `Searching ${source}`);\n } catch (error) {\n if (error.response.status === 409) {\n this.$snotify.error(error.response.data.error, 'Error');\n }\n }\n }\n\n },\n watch: {\n selectedSource(newValue) {\n this.setSelectedList(newValue);\n\n if (newValue === this.externals.TRAKT) {\n const {\n trakt\n } = this;\n\n if (!trakt.enabled) {\n this.traktWarning = true;\n this.traktWarningMessage = 'You havent enabled trakt yet.';\n return;\n }\n\n (0,_api_js__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/testTrakt').then(result => {\n if (result.data !== 'Test notice sent successfully to Trakt') {\n // Ask user if he wants to setup trakt authentication.\n this.traktWarning = true;\n this.traktWarningMessage = 'We could not authenticate to trakt. Do you want to set this up now?';\n }\n });\n }\n },\n\n queueitems(queueItems) {\n // Check for a new recommended show queue item and refresh results.\n if (queueItems.filter(item => item.name.includes('UPDATE-RECOMMENDED'))) {\n this.getRecommendedShows();\n }\n }\n\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -939,7 +983,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"AppLink\": () => (/* reexport safe */ _app_link_vue__WEBPACK_IMPORTED_MODULE_0__.default),\n/* harmony export */ \"Asset\": () => (/* reexport safe */ _asset_vue__WEBPACK_IMPORTED_MODULE_1__.default),\n/* harmony export */ \"ConfigSceneExceptions\": () => (/* reexport safe */ _config_scene_exceptions_vue__WEBPACK_IMPORTED_MODULE_2__.default),\n/* harmony export */ \"ConfigTemplate\": () => (/* reexport safe */ _config_template_vue__WEBPACK_IMPORTED_MODULE_3__.default),\n/* harmony export */ \"ConfigTextbox\": () => (/* reexport safe */ _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__.default),\n/* harmony export */ \"ConfigTextboxNumber\": () => (/* reexport safe */ _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_5__.default),\n/* harmony export */ \"ConfigToggleSlider\": () => (/* reexport safe */ _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_6__.default),\n/* harmony export */ \"ConfigCustomNewznab\": () => (/* reexport safe */ _config_custom_newznab_vue__WEBPACK_IMPORTED_MODULE_7__.default),\n/* harmony export */ \"ConfigCustomProwlarr\": () => (/* reexport safe */ _config_custom_prowlarr_vue__WEBPACK_IMPORTED_MODULE_8__.default),\n/* harmony export */ \"ConfigCustomTorrentrss\": () => (/* reexport safe */ _config_custom_torrentrss_vue__WEBPACK_IMPORTED_MODULE_9__.default),\n/* harmony export */ \"ConfigCustomTorznab\": () => (/* reexport safe */ _config_custom_torznab_vue__WEBPACK_IMPORTED_MODULE_10__.default),\n/* harmony export */ \"ConfigProviderNzb\": () => (/* reexport safe */ _config_provider_nzb_vue__WEBPACK_IMPORTED_MODULE_11__.default),\n/* harmony export */ \"ConfigProviderTorrent\": () => (/* reexport safe */ _config_provider_torrent_vue__WEBPACK_IMPORTED_MODULE_12__.default),\n/* harmony export */ \"CustomLogs\": () => (/* reexport safe */ _custom_logs_vue__WEBPACK_IMPORTED_MODULE_13__.default),\n/* harmony export */ \"FileBrowser\": () => (/* reexport safe */ _file_browser_vue__WEBPACK_IMPORTED_MODULE_14__.default),\n/* harmony export */ \"LanguageSelect\": () => (/* reexport safe */ _language_select_vue__WEBPACK_IMPORTED_MODULE_15__.default),\n/* harmony export */ \"LoadProgressBar\": () => (/* reexport safe */ _load_progress_bar_vue__WEBPACK_IMPORTED_MODULE_16__.default),\n/* harmony export */ \"NamePattern\": () => (/* reexport safe */ _name_pattern_vue__WEBPACK_IMPORTED_MODULE_17__.default),\n/* harmony export */ \"PlotInfo\": () => (/* reexport safe */ _plot_info_vue__WEBPACK_IMPORTED_MODULE_18__.default),\n/* harmony export */ \"ProgressBar\": () => (/* reexport safe */ _progress_bar_vue__WEBPACK_IMPORTED_MODULE_19__.default),\n/* harmony export */ \"PosterSizeSlider\": () => (/* reexport safe */ _poster_size_slider_vue__WEBPACK_IMPORTED_MODULE_20__.default),\n/* harmony export */ \"QualityChooser\": () => (/* reexport safe */ _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_21__.default),\n/* harmony export */ \"QualityPill\": () => (/* reexport safe */ _quality_pill_vue__WEBPACK_IMPORTED_MODULE_22__.default),\n/* harmony export */ \"ScrollButtons\": () => (/* reexport safe */ _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_23__.default),\n/* harmony export */ \"Search\": () => (/* reexport safe */ _search_vue__WEBPACK_IMPORTED_MODULE_24__.default),\n/* harmony export */ \"SelectList\": () => (/* reexport safe */ _select_list_vue__WEBPACK_IMPORTED_MODULE_25__.default),\n/* harmony export */ \"ShowSelector\": () => (/* reexport safe */ _show_selector_vue__WEBPACK_IMPORTED_MODULE_26__.default),\n/* harmony export */ \"SortedSelectList\": () => (/* reexport safe */ _sorted_select_list_vue__WEBPACK_IMPORTED_MODULE_27__.default),\n/* harmony export */ \"StateSwitch\": () => (/* reexport safe */ _state_switch_vue__WEBPACK_IMPORTED_MODULE_28__.default),\n/* harmony export */ \"TestProvider\": () => (/* reexport safe */ _test_provider_vue__WEBPACK_IMPORTED_MODULE_29__.default)\n/* harmony export */ });\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony import */ var _asset_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./asset.vue */ \"./src/components/helpers/asset.vue\");\n/* harmony import */ var _config_scene_exceptions_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config-scene-exceptions.vue */ \"./src/components/helpers/config-scene-exceptions.vue\");\n/* harmony import */ var _config_template_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config-template.vue */ \"./src/components/helpers/config-template.vue\");\n/* harmony import */ var _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config-textbox.vue */ \"./src/components/helpers/config-textbox.vue\");\n/* harmony import */ var _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config-textbox-number.vue */ \"./src/components/helpers/config-textbox-number.vue\");\n/* harmony import */ var _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./config-toggle-slider.vue */ \"./src/components/helpers/config-toggle-slider.vue\");\n/* harmony import */ var _config_custom_newznab_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config-custom-newznab.vue */ \"./src/components/helpers/config-custom-newznab.vue\");\n/* harmony import */ var _config_custom_prowlarr_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config-custom-prowlarr.vue */ \"./src/components/helpers/config-custom-prowlarr.vue\");\n/* harmony import */ var _config_custom_torrentrss_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-custom-torrentrss.vue */ \"./src/components/helpers/config-custom-torrentrss.vue\");\n/* harmony import */ var _config_custom_torznab_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-custom-torznab.vue */ \"./src/components/helpers/config-custom-torznab.vue\");\n/* harmony import */ var _config_provider_nzb_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-provider-nzb.vue */ \"./src/components/helpers/config-provider-nzb.vue\");\n/* harmony import */ var _config_provider_torrent_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./config-provider-torrent.vue */ \"./src/components/helpers/config-provider-torrent.vue\");\n/* harmony import */ var _custom_logs_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./custom-logs.vue */ \"./src/components/helpers/custom-logs.vue\");\n/* harmony import */ var _file_browser_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./file-browser.vue */ \"./src/components/helpers/file-browser.vue\");\n/* harmony import */ var _language_select_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./language-select.vue */ \"./src/components/helpers/language-select.vue\");\n/* harmony import */ var _load_progress_bar_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./load-progress-bar.vue */ \"./src/components/helpers/load-progress-bar.vue\");\n/* harmony import */ var _name_pattern_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./name-pattern.vue */ \"./src/components/helpers/name-pattern.vue\");\n/* harmony import */ var _plot_info_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./plot-info.vue */ \"./src/components/helpers/plot-info.vue\");\n/* harmony import */ var _progress_bar_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./progress-bar.vue */ \"./src/components/helpers/progress-bar.vue\");\n/* harmony import */ var _poster_size_slider_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./poster-size-slider.vue */ \"./src/components/helpers/poster-size-slider.vue\");\n/* harmony import */ var _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./quality-chooser.vue */ \"./src/components/helpers/quality-chooser.vue\");\n/* harmony import */ var _quality_pill_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./quality-pill.vue */ \"./src/components/helpers/quality-pill.vue\");\n/* harmony import */ var _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./scroll-buttons.vue */ \"./src/components/helpers/scroll-buttons.vue\");\n/* harmony import */ var _search_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./search.vue */ \"./src/components/helpers/search.vue\");\n/* harmony import */ var _select_list_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./select-list.vue */ \"./src/components/helpers/select-list.vue\");\n/* harmony import */ var _show_selector_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./show-selector.vue */ \"./src/components/helpers/show-selector.vue\");\n/* harmony import */ var _sorted_select_list_vue__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./sorted-select-list.vue */ \"./src/components/helpers/sorted-select-list.vue\");\n/* harmony import */ var _state_switch_vue__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./state-switch.vue */ \"./src/components/helpers/state-switch.vue\");\n/* harmony import */ var _test_provider_vue__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./test-provider.vue */ \"./src/components/helpers/test-provider.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/index.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"AppLink\": () => (/* reexport safe */ _app_link_vue__WEBPACK_IMPORTED_MODULE_0__.default),\n/* harmony export */ \"Asset\": () => (/* reexport safe */ _asset_vue__WEBPACK_IMPORTED_MODULE_1__.default),\n/* harmony export */ \"ConfigSceneExceptions\": () => (/* reexport safe */ _config_scene_exceptions_vue__WEBPACK_IMPORTED_MODULE_2__.default),\n/* harmony export */ \"ConfigTemplate\": () => (/* reexport safe */ _config_template_vue__WEBPACK_IMPORTED_MODULE_3__.default),\n/* harmony export */ \"ConfigTextbox\": () => (/* reexport safe */ _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__.default),\n/* harmony export */ \"ConfigTextboxNumber\": () => (/* reexport safe */ _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_5__.default),\n/* harmony export */ \"ConfigToggleSlider\": () => (/* reexport safe */ _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_6__.default),\n/* harmony export */ \"ConfigCustomNewznab\": () => (/* reexport safe */ _config_custom_newznab_vue__WEBPACK_IMPORTED_MODULE_7__.default),\n/* harmony export */ \"ConfigCustomProwlarr\": () => (/* reexport safe */ _config_custom_prowlarr_vue__WEBPACK_IMPORTED_MODULE_8__.default),\n/* harmony export */ \"ConfigCustomTorrentrss\": () => (/* reexport safe */ _config_custom_torrentrss_vue__WEBPACK_IMPORTED_MODULE_9__.default),\n/* harmony export */ \"ConfigCustomTorznab\": () => (/* reexport safe */ _config_custom_torznab_vue__WEBPACK_IMPORTED_MODULE_10__.default),\n/* harmony export */ \"ConfigProviderNzb\": () => (/* reexport safe */ _config_provider_nzb_vue__WEBPACK_IMPORTED_MODULE_11__.default),\n/* harmony export */ \"ConfigProviderTorrent\": () => (/* reexport safe */ _config_provider_torrent_vue__WEBPACK_IMPORTED_MODULE_12__.default),\n/* harmony export */ \"CustomLogs\": () => (/* reexport safe */ _custom_logs_vue__WEBPACK_IMPORTED_MODULE_13__.default),\n/* harmony export */ \"FileBrowser\": () => (/* reexport safe */ _file_browser_vue__WEBPACK_IMPORTED_MODULE_14__.default),\n/* harmony export */ \"LanguageSelect\": () => (/* reexport safe */ _language_select_vue__WEBPACK_IMPORTED_MODULE_15__.default),\n/* harmony export */ \"LoadProgressBar\": () => (/* reexport safe */ _load_progress_bar_vue__WEBPACK_IMPORTED_MODULE_16__.default),\n/* harmony export */ \"NamePattern\": () => (/* reexport safe */ _name_pattern_vue__WEBPACK_IMPORTED_MODULE_17__.default),\n/* harmony export */ \"PlotInfo\": () => (/* reexport safe */ _plot_info_vue__WEBPACK_IMPORTED_MODULE_18__.default),\n/* harmony export */ \"ProgressBar\": () => (/* reexport safe */ _progress_bar_vue__WEBPACK_IMPORTED_MODULE_19__.default),\n/* harmony export */ \"PosterSizeSlider\": () => (/* reexport safe */ _poster_size_slider_vue__WEBPACK_IMPORTED_MODULE_20__.default),\n/* harmony export */ \"QualityChooser\": () => (/* reexport safe */ _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_21__.default),\n/* harmony export */ \"QualityPill\": () => (/* reexport safe */ _quality_pill_vue__WEBPACK_IMPORTED_MODULE_22__.default),\n/* harmony export */ \"ScrollButtons\": () => (/* reexport safe */ _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_23__.default),\n/* harmony export */ \"Search\": () => (/* reexport safe */ _search_vue__WEBPACK_IMPORTED_MODULE_24__.default),\n/* harmony export */ \"SelectList\": () => (/* reexport safe */ _select_list_vue__WEBPACK_IMPORTED_MODULE_25__.default),\n/* harmony export */ \"SelectTraktLists\": () => (/* reexport safe */ _select_trakt_lists_vue__WEBPACK_IMPORTED_MODULE_26__.default),\n/* harmony export */ \"ShowSelector\": () => (/* reexport safe */ _show_selector_vue__WEBPACK_IMPORTED_MODULE_27__.default),\n/* harmony export */ \"SortedSelectList\": () => (/* reexport safe */ _sorted_select_list_vue__WEBPACK_IMPORTED_MODULE_28__.default),\n/* harmony export */ \"StateSwitch\": () => (/* reexport safe */ _state_switch_vue__WEBPACK_IMPORTED_MODULE_29__.default),\n/* harmony export */ \"TestProvider\": () => (/* reexport safe */ _test_provider_vue__WEBPACK_IMPORTED_MODULE_30__.default),\n/* harmony export */ \"TraktAuthentication\": () => (/* reexport safe */ _trakt_authentication_vue__WEBPACK_IMPORTED_MODULE_31__.default)\n/* harmony export */ });\n/* harmony import */ var _app_link_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-link.vue */ \"./src/components/helpers/app-link.vue\");\n/* harmony import */ var _asset_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./asset.vue */ \"./src/components/helpers/asset.vue\");\n/* harmony import */ var _config_scene_exceptions_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config-scene-exceptions.vue */ \"./src/components/helpers/config-scene-exceptions.vue\");\n/* harmony import */ var _config_template_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config-template.vue */ \"./src/components/helpers/config-template.vue\");\n/* harmony import */ var _config_textbox_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config-textbox.vue */ \"./src/components/helpers/config-textbox.vue\");\n/* harmony import */ var _config_textbox_number_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config-textbox-number.vue */ \"./src/components/helpers/config-textbox-number.vue\");\n/* harmony import */ var _config_toggle_slider_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./config-toggle-slider.vue */ \"./src/components/helpers/config-toggle-slider.vue\");\n/* harmony import */ var _config_custom_newznab_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config-custom-newznab.vue */ \"./src/components/helpers/config-custom-newznab.vue\");\n/* harmony import */ var _config_custom_prowlarr_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config-custom-prowlarr.vue */ \"./src/components/helpers/config-custom-prowlarr.vue\");\n/* harmony import */ var _config_custom_torrentrss_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-custom-torrentrss.vue */ \"./src/components/helpers/config-custom-torrentrss.vue\");\n/* harmony import */ var _config_custom_torznab_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-custom-torznab.vue */ \"./src/components/helpers/config-custom-torznab.vue\");\n/* harmony import */ var _config_provider_nzb_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-provider-nzb.vue */ \"./src/components/helpers/config-provider-nzb.vue\");\n/* harmony import */ var _config_provider_torrent_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./config-provider-torrent.vue */ \"./src/components/helpers/config-provider-torrent.vue\");\n/* harmony import */ var _custom_logs_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./custom-logs.vue */ \"./src/components/helpers/custom-logs.vue\");\n/* harmony import */ var _file_browser_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./file-browser.vue */ \"./src/components/helpers/file-browser.vue\");\n/* harmony import */ var _language_select_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./language-select.vue */ \"./src/components/helpers/language-select.vue\");\n/* harmony import */ var _load_progress_bar_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./load-progress-bar.vue */ \"./src/components/helpers/load-progress-bar.vue\");\n/* harmony import */ var _name_pattern_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./name-pattern.vue */ \"./src/components/helpers/name-pattern.vue\");\n/* harmony import */ var _plot_info_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./plot-info.vue */ \"./src/components/helpers/plot-info.vue\");\n/* harmony import */ var _progress_bar_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./progress-bar.vue */ \"./src/components/helpers/progress-bar.vue\");\n/* harmony import */ var _poster_size_slider_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./poster-size-slider.vue */ \"./src/components/helpers/poster-size-slider.vue\");\n/* harmony import */ var _quality_chooser_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./quality-chooser.vue */ \"./src/components/helpers/quality-chooser.vue\");\n/* harmony import */ var _quality_pill_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./quality-pill.vue */ \"./src/components/helpers/quality-pill.vue\");\n/* harmony import */ var _scroll_buttons_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./scroll-buttons.vue */ \"./src/components/helpers/scroll-buttons.vue\");\n/* harmony import */ var _search_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./search.vue */ \"./src/components/helpers/search.vue\");\n/* harmony import */ var _select_list_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./select-list.vue */ \"./src/components/helpers/select-list.vue\");\n/* harmony import */ var _select_trakt_lists_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./select-trakt-lists.vue */ \"./src/components/helpers/select-trakt-lists.vue\");\n/* harmony import */ var _show_selector_vue__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./show-selector.vue */ \"./src/components/helpers/show-selector.vue\");\n/* harmony import */ var _sorted_select_list_vue__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./sorted-select-list.vue */ \"./src/components/helpers/sorted-select-list.vue\");\n/* harmony import */ var _state_switch_vue__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./state-switch.vue */ \"./src/components/helpers/state-switch.vue\");\n/* harmony import */ var _test_provider_vue__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./test-provider.vue */ \"./src/components/helpers/test-provider.vue\");\n/* harmony import */ var _trakt_authentication_vue__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./trakt-authentication.vue */ \"./src/components/helpers/trakt-authentication.vue\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/index.js?");
/***/ }),
@@ -961,7 +1005,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"AddRecommended\": () => (/* reexport safe */ _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__.default),\n/* harmony export */ \"AddShowOptions\": () => (/* reexport safe */ _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__.default),\n/* harmony export */ \"AddShows\": () => (/* reexport safe */ _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__.default),\n/* harmony export */ \"AnidbReleaseGroupUi\": () => (/* reexport safe */ _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__.default),\n/* harmony export */ \"App\": () => (/* reexport safe */ _app_vue__WEBPACK_IMPORTED_MODULE_4__.default),\n/* harmony export */ \"AppFooter\": () => (/* reexport safe */ _app_footer_vue__WEBPACK_IMPORTED_MODULE_5__.default),\n/* harmony export */ \"AppHeader\": () => (/* reexport safe */ _app_header_vue__WEBPACK_IMPORTED_MODULE_6__.default),\n/* harmony export */ \"Backstretch\": () => (/* reexport safe */ _backstretch_vue__WEBPACK_IMPORTED_MODULE_7__.default),\n/* harmony export */ \"Config\": () => (/* reexport safe */ _config_vue__WEBPACK_IMPORTED_MODULE_8__.default),\n/* harmony export */ \"ConfigAnime\": () => (/* reexport safe */ _config_anime_vue__WEBPACK_IMPORTED_MODULE_9__.default),\n/* harmony export */ \"ConfigGeneral\": () => (/* reexport safe */ _config_general_vue__WEBPACK_IMPORTED_MODULE_10__.default),\n/* harmony export */ \"ConfigPostProcessing\": () => (/* reexport safe */ _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_11__.default),\n/* harmony export */ \"ConfigProviders\": () => (/* reexport safe */ _config_providers_vue__WEBPACK_IMPORTED_MODULE_12__.default),\n/* harmony export */ \"ConfigNotifications\": () => (/* reexport safe */ _config_notifications_vue__WEBPACK_IMPORTED_MODULE_13__.default),\n/* harmony export */ \"ConfigSearch\": () => (/* reexport safe */ _config_search_vue__WEBPACK_IMPORTED_MODULE_14__.default),\n/* harmony export */ \"DisplayShow\": () => (/* reexport safe */ _display_show_vue__WEBPACK_IMPORTED_MODULE_15__.default),\n/* harmony export */ \"CurrentDownloads\": () => (/* reexport safe */ _current_downloads_vue__WEBPACK_IMPORTED_MODULE_16__.default),\n/* harmony export */ \"EditShow\": () => (/* reexport safe */ _edit_show_vue__WEBPACK_IMPORTED_MODULE_17__.default),\n/* harmony export */ \"History\": () => (/* reexport safe */ _history_vue__WEBPACK_IMPORTED_MODULE_18__.default),\n/* harmony export */ \"HistoryCompact\": () => (/* reexport safe */ _history_compact_vue__WEBPACK_IMPORTED_MODULE_19__.default),\n/* harmony export */ \"HistoryDetailed\": () => (/* reexport safe */ _history_detailed_vue__WEBPACK_IMPORTED_MODULE_20__.default),\n/* harmony export */ \"Home\": () => (/* reexport safe */ _home_vue__WEBPACK_IMPORTED_MODULE_21__.default),\n/* harmony export */ \"IRC\": () => (/* reexport safe */ _irc_vue__WEBPACK_IMPORTED_MODULE_22__.default),\n/* harmony export */ \"Login\": () => (/* reexport safe */ _login_vue__WEBPACK_IMPORTED_MODULE_23__.default),\n/* harmony export */ \"Logs\": () => (/* reexport safe */ _logs_vue__WEBPACK_IMPORTED_MODULE_24__.default),\n/* harmony export */ \"manageSearches\": () => (/* reexport safe */ _manage_searches_vue__WEBPACK_IMPORTED_MODULE_25__.default),\n/* harmony export */ \"ManualPostProcess\": () => (/* reexport safe */ _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_26__.default),\n/* harmony export */ \"NewShow\": () => (/* reexport safe */ _new_show_vue__WEBPACK_IMPORTED_MODULE_27__.default),\n/* harmony export */ \"NewShowsExisting\": () => (/* reexport safe */ _new_shows_existing_vue__WEBPACK_IMPORTED_MODULE_28__.default),\n/* harmony export */ \"Restart\": () => (/* reexport safe */ _restart_vue__WEBPACK_IMPORTED_MODULE_29__.default),\n/* harmony export */ \"RootDirs\": () => (/* reexport safe */ _root_dirs_vue__WEBPACK_IMPORTED_MODULE_30__.default),\n/* harmony export */ \"Schedule\": () => (/* reexport safe */ _schedule_vue__WEBPACK_IMPORTED_MODULE_31__.default),\n/* harmony export */ \"ShowHeader\": () => (/* reexport safe */ _show_header_vue__WEBPACK_IMPORTED_MODULE_32__.default),\n/* harmony export */ \"ShowHistory\": () => (/* reexport safe */ _show_history_vue__WEBPACK_IMPORTED_MODULE_33__.default),\n/* harmony export */ \"ShowResults\": () => (/* reexport safe */ _show_results_vue__WEBPACK_IMPORTED_MODULE_34__.default),\n/* harmony export */ \"SnatchSelection\": () => (/* reexport safe */ _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_35__.default),\n/* harmony export */ \"Status\": () => (/* reexport safe */ _status_vue__WEBPACK_IMPORTED_MODULE_36__.default),\n/* harmony export */ \"SubMenu\": () => (/* reexport safe */ _sub_menu_vue__WEBPACK_IMPORTED_MODULE_37__.default),\n/* harmony export */ \"SubtitleSearch\": () => (/* reexport safe */ _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_38__.default),\n/* harmony export */ \"Update\": () => (/* reexport safe */ _update_vue__WEBPACK_IMPORTED_MODULE_39__.default),\n/* harmony export */ \"NotFound\": () => (/* reexport safe */ _http__WEBPACK_IMPORTED_MODULE_40__.NotFound),\n/* harmony export */ \"AppLink\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.AppLink),\n/* harmony export */ \"Asset\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.Asset),\n/* harmony export */ \"ConfigCustomNewznab\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigCustomNewznab),\n/* harmony export */ \"ConfigCustomProwlarr\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigCustomProwlarr),\n/* harmony export */ \"ConfigCustomTorrentrss\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigCustomTorrentrss),\n/* harmony export */ \"ConfigCustomTorznab\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigCustomTorznab),\n/* harmony export */ \"ConfigProviderNzb\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigProviderNzb),\n/* harmony export */ \"ConfigProviderTorrent\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigProviderTorrent),\n/* harmony export */ \"ConfigSceneExceptions\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigSceneExceptions),\n/* harmony export */ \"ConfigTemplate\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigTemplate),\n/* harmony export */ \"ConfigTextbox\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigTextbox),\n/* harmony export */ \"ConfigTextboxNumber\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigTextboxNumber),\n/* harmony export */ \"ConfigToggleSlider\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ConfigToggleSlider),\n/* harmony export */ \"CustomLogs\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.CustomLogs),\n/* harmony export */ \"FileBrowser\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.FileBrowser),\n/* harmony export */ \"LanguageSelect\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.LanguageSelect),\n/* harmony export */ \"LoadProgressBar\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.LoadProgressBar),\n/* harmony export */ \"NamePattern\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.NamePattern),\n/* harmony export */ \"PlotInfo\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.PlotInfo),\n/* harmony export */ \"PosterSizeSlider\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.PosterSizeSlider),\n/* harmony export */ \"ProgressBar\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ProgressBar),\n/* harmony export */ \"QualityChooser\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.QualityChooser),\n/* harmony export */ \"QualityPill\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.QualityPill),\n/* harmony export */ \"ScrollButtons\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ScrollButtons),\n/* harmony export */ \"Search\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.Search),\n/* harmony export */ \"SelectList\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.SelectList),\n/* harmony export */ \"ShowSelector\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.ShowSelector),\n/* harmony export */ \"SortedSelectList\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.SortedSelectList),\n/* harmony export */ \"StateSwitch\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.StateSwitch),\n/* harmony export */ \"TestProvider\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_41__.TestProvider)\n/* harmony export */ });\n/* harmony import */ var _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-recommended.vue */ \"./src/components/add-recommended.vue\");\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony import */ var _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-shows.vue */ \"./src/components/add-shows.vue\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _app_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app.vue */ \"./src/components/app.vue\");\n/* harmony import */ var _app_footer_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app-footer.vue */ \"./src/components/app-footer.vue\");\n/* harmony import */ var _app_header_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./app-header.vue */ \"./src/components/app-header.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _config_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config.vue */ \"./src/components/config.vue\");\n/* harmony import */ var _config_anime_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-anime.vue */ \"./src/components/config-anime.vue\");\n/* harmony import */ var _config_general_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-general.vue */ \"./src/components/config-general.vue\");\n/* harmony import */ var _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-post-processing.vue */ \"./src/components/config-post-processing.vue\");\n/* harmony import */ var _config_providers_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./config-providers.vue */ \"./src/components/config-providers.vue\");\n/* harmony import */ var _config_notifications_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./config-notifications.vue */ \"./src/components/config-notifications.vue\");\n/* harmony import */ var _config_search_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./config-search.vue */ \"./src/components/config-search.vue\");\n/* harmony import */ var _display_show_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./display-show.vue */ \"./src/components/display-show.vue\");\n/* harmony import */ var _current_downloads_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./current-downloads.vue */ \"./src/components/current-downloads.vue\");\n/* harmony import */ var _edit_show_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./edit-show.vue */ \"./src/components/edit-show.vue\");\n/* harmony import */ var _history_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./history.vue */ \"./src/components/history.vue\");\n/* harmony import */ var _history_compact_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./history-compact.vue */ \"./src/components/history-compact.vue\");\n/* harmony import */ var _history_detailed_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./history-detailed.vue */ \"./src/components/history-detailed.vue\");\n/* harmony import */ var _home_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./home.vue */ \"./src/components/home.vue\");\n/* harmony import */ var _irc_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./irc.vue */ \"./src/components/irc.vue\");\n/* harmony import */ var _login_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./login.vue */ \"./src/components/login.vue\");\n/* harmony import */ var _logs_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./logs.vue */ \"./src/components/logs.vue\");\n/* harmony import */ var _manage_searches_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./manage-searches.vue */ \"./src/components/manage-searches.vue\");\n/* harmony import */ var _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./manual-post-process.vue */ \"./src/components/manual-post-process.vue\");\n/* harmony import */ var _new_show_vue__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./new-show.vue */ \"./src/components/new-show.vue\");\n/* harmony import */ var _new_shows_existing_vue__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./new-shows-existing.vue */ \"./src/components/new-shows-existing.vue\");\n/* harmony import */ var _restart_vue__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./restart.vue */ \"./src/components/restart.vue\");\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony import */ var _schedule_vue__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./schedule.vue */ \"./src/components/schedule.vue\");\n/* harmony import */ var _show_header_vue__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./show-header.vue */ \"./src/components/show-header.vue\");\n/* harmony import */ var _show_history_vue__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./show-history.vue */ \"./src/components/show-history.vue\");\n/* harmony import */ var _show_results_vue__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./show-results.vue */ \"./src/components/show-results.vue\");\n/* harmony import */ var _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./snatch-selection.vue */ \"./src/components/snatch-selection.vue\");\n/* harmony import */ var _status_vue__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./status.vue */ \"./src/components/status.vue\");\n/* harmony import */ var _sub_menu_vue__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./sub-menu.vue */ \"./src/components/sub-menu.vue\");\n/* harmony import */ var _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./subtitle-search.vue */ \"./src/components/subtitle-search.vue\");\n/* harmony import */ var _update_vue__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./update.vue */ \"./src/components/update.vue\");\n/* harmony import */ var _http__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./http */ \"./src/components/http/index.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://slim/./src/components/index.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"AddRecommended\": () => (/* reexport safe */ _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__.default),\n/* harmony export */ \"AddShowOptions\": () => (/* reexport safe */ _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__.default),\n/* harmony export */ \"AddShows\": () => (/* reexport safe */ _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__.default),\n/* harmony export */ \"AnidbReleaseGroupUi\": () => (/* reexport safe */ _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__.default),\n/* harmony export */ \"App\": () => (/* reexport safe */ _app_vue__WEBPACK_IMPORTED_MODULE_4__.default),\n/* harmony export */ \"AppFooter\": () => (/* reexport safe */ _app_footer_vue__WEBPACK_IMPORTED_MODULE_5__.default),\n/* harmony export */ \"AppHeader\": () => (/* reexport safe */ _app_header_vue__WEBPACK_IMPORTED_MODULE_6__.default),\n/* harmony export */ \"Backstretch\": () => (/* reexport safe */ _backstretch_vue__WEBPACK_IMPORTED_MODULE_7__.default),\n/* harmony export */ \"Config\": () => (/* reexport safe */ _config_vue__WEBPACK_IMPORTED_MODULE_8__.default),\n/* harmony export */ \"ConfigAnime\": () => (/* reexport safe */ _config_anime_vue__WEBPACK_IMPORTED_MODULE_9__.default),\n/* harmony export */ \"ConfigGeneral\": () => (/* reexport safe */ _config_general_vue__WEBPACK_IMPORTED_MODULE_10__.default),\n/* harmony export */ \"ConfigPostProcessing\": () => (/* reexport safe */ _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_11__.default),\n/* harmony export */ \"ConfigProviders\": () => (/* reexport safe */ _config_providers_vue__WEBPACK_IMPORTED_MODULE_12__.default),\n/* harmony export */ \"ConfigNotifications\": () => (/* reexport safe */ _config_notifications_vue__WEBPACK_IMPORTED_MODULE_13__.default),\n/* harmony export */ \"ConfigSearch\": () => (/* reexport safe */ _config_search_vue__WEBPACK_IMPORTED_MODULE_14__.default),\n/* harmony export */ \"DisplayShow\": () => (/* reexport safe */ _display_show_vue__WEBPACK_IMPORTED_MODULE_15__.default),\n/* harmony export */ \"CurrentDownloads\": () => (/* reexport safe */ _current_downloads_vue__WEBPACK_IMPORTED_MODULE_16__.default),\n/* harmony export */ \"EditShow\": () => (/* reexport safe */ _edit_show_vue__WEBPACK_IMPORTED_MODULE_17__.default),\n/* harmony export */ \"History\": () => (/* reexport safe */ _history_vue__WEBPACK_IMPORTED_MODULE_18__.default),\n/* harmony export */ \"HistoryCompact\": () => (/* reexport safe */ _history_compact_vue__WEBPACK_IMPORTED_MODULE_19__.default),\n/* harmony export */ \"HistoryDetailed\": () => (/* reexport safe */ _history_detailed_vue__WEBPACK_IMPORTED_MODULE_20__.default),\n/* harmony export */ \"Home\": () => (/* reexport safe */ _home_vue__WEBPACK_IMPORTED_MODULE_21__.default),\n/* harmony export */ \"IRC\": () => (/* reexport safe */ _irc_vue__WEBPACK_IMPORTED_MODULE_22__.default),\n/* harmony export */ \"Login\": () => (/* reexport safe */ _login_vue__WEBPACK_IMPORTED_MODULE_23__.default),\n/* harmony export */ \"Logs\": () => (/* reexport safe */ _logs_vue__WEBPACK_IMPORTED_MODULE_24__.default),\n/* harmony export */ \"manageSearches\": () => (/* reexport safe */ _manage_searches_vue__WEBPACK_IMPORTED_MODULE_25__.default),\n/* harmony export */ \"ManualPostProcess\": () => (/* reexport safe */ _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_26__.default),\n/* harmony export */ \"NewShow\": () => (/* reexport safe */ _new_show_vue__WEBPACK_IMPORTED_MODULE_27__.default),\n/* harmony export */ \"NewShowsExisting\": () => (/* reexport safe */ _new_shows_existing_vue__WEBPACK_IMPORTED_MODULE_28__.default),\n/* harmony export */ \"Recommended\": () => (/* reexport safe */ _recommended_vue__WEBPACK_IMPORTED_MODULE_29__.default),\n/* harmony export */ \"RecommendedPoster\": () => (/* reexport safe */ _recommended_poster_vue__WEBPACK_IMPORTED_MODULE_30__.default),\n/* harmony export */ \"Restart\": () => (/* reexport safe */ _restart_vue__WEBPACK_IMPORTED_MODULE_31__.default),\n/* harmony export */ \"RootDirs\": () => (/* reexport safe */ _root_dirs_vue__WEBPACK_IMPORTED_MODULE_32__.default),\n/* harmony export */ \"Schedule\": () => (/* reexport safe */ _schedule_vue__WEBPACK_IMPORTED_MODULE_33__.default),\n/* harmony export */ \"ShowHeader\": () => (/* reexport safe */ _show_header_vue__WEBPACK_IMPORTED_MODULE_34__.default),\n/* harmony export */ \"ShowHistory\": () => (/* reexport safe */ _show_history_vue__WEBPACK_IMPORTED_MODULE_35__.default),\n/* harmony export */ \"ShowResults\": () => (/* reexport safe */ _show_results_vue__WEBPACK_IMPORTED_MODULE_36__.default),\n/* harmony export */ \"SnatchSelection\": () => (/* reexport safe */ _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_37__.default),\n/* harmony export */ \"Status\": () => (/* reexport safe */ _status_vue__WEBPACK_IMPORTED_MODULE_38__.default),\n/* harmony export */ \"SubMenu\": () => (/* reexport safe */ _sub_menu_vue__WEBPACK_IMPORTED_MODULE_39__.default),\n/* harmony export */ \"SubtitleSearch\": () => (/* reexport safe */ _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_40__.default),\n/* harmony export */ \"Update\": () => (/* reexport safe */ _update_vue__WEBPACK_IMPORTED_MODULE_41__.default),\n/* harmony export */ \"NotFound\": () => (/* reexport safe */ _http__WEBPACK_IMPORTED_MODULE_42__.NotFound),\n/* harmony export */ \"AppLink\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.AppLink),\n/* harmony export */ \"Asset\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.Asset),\n/* harmony export */ \"ConfigCustomNewznab\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigCustomNewznab),\n/* harmony export */ \"ConfigCustomProwlarr\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigCustomProwlarr),\n/* harmony export */ \"ConfigCustomTorrentrss\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigCustomTorrentrss),\n/* harmony export */ \"ConfigCustomTorznab\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigCustomTorznab),\n/* harmony export */ \"ConfigProviderNzb\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigProviderNzb),\n/* harmony export */ \"ConfigProviderTorrent\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigProviderTorrent),\n/* harmony export */ \"ConfigSceneExceptions\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigSceneExceptions),\n/* harmony export */ \"ConfigTemplate\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigTemplate),\n/* harmony export */ \"ConfigTextbox\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigTextbox),\n/* harmony export */ \"ConfigTextboxNumber\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigTextboxNumber),\n/* harmony export */ \"ConfigToggleSlider\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ConfigToggleSlider),\n/* harmony export */ \"CustomLogs\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.CustomLogs),\n/* harmony export */ \"FileBrowser\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.FileBrowser),\n/* harmony export */ \"LanguageSelect\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.LanguageSelect),\n/* harmony export */ \"LoadProgressBar\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.LoadProgressBar),\n/* harmony export */ \"NamePattern\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.NamePattern),\n/* harmony export */ \"PlotInfo\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.PlotInfo),\n/* harmony export */ \"PosterSizeSlider\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.PosterSizeSlider),\n/* harmony export */ \"ProgressBar\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ProgressBar),\n/* harmony export */ \"QualityChooser\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.QualityChooser),\n/* harmony export */ \"QualityPill\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.QualityPill),\n/* harmony export */ \"ScrollButtons\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ScrollButtons),\n/* harmony export */ \"Search\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.Search),\n/* harmony export */ \"SelectList\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.SelectList),\n/* harmony export */ \"SelectTraktLists\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.SelectTraktLists),\n/* harmony export */ \"ShowSelector\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.ShowSelector),\n/* harmony export */ \"SortedSelectList\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.SortedSelectList),\n/* harmony export */ \"StateSwitch\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.StateSwitch),\n/* harmony export */ \"TestProvider\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.TestProvider),\n/* harmony export */ \"TraktAuthentication\": () => (/* reexport safe */ _helpers__WEBPACK_IMPORTED_MODULE_43__.TraktAuthentication)\n/* harmony export */ });\n/* harmony import */ var _add_recommended_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-recommended.vue */ \"./src/components/add-recommended.vue\");\n/* harmony import */ var _add_show_options_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-show-options.vue */ \"./src/components/add-show-options.vue\");\n/* harmony import */ var _add_shows_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-shows.vue */ \"./src/components/add-shows.vue\");\n/* harmony import */ var _anidb_release_group_ui_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./anidb-release-group-ui.vue */ \"./src/components/anidb-release-group-ui.vue\");\n/* harmony import */ var _app_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app.vue */ \"./src/components/app.vue\");\n/* harmony import */ var _app_footer_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app-footer.vue */ \"./src/components/app-footer.vue\");\n/* harmony import */ var _app_header_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./app-header.vue */ \"./src/components/app-header.vue\");\n/* harmony import */ var _backstretch_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./backstretch.vue */ \"./src/components/backstretch.vue\");\n/* harmony import */ var _config_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./config.vue */ \"./src/components/config.vue\");\n/* harmony import */ var _config_anime_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config-anime.vue */ \"./src/components/config-anime.vue\");\n/* harmony import */ var _config_general_vue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config-general.vue */ \"./src/components/config-general.vue\");\n/* harmony import */ var _config_post_processing_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config-post-processing.vue */ \"./src/components/config-post-processing.vue\");\n/* harmony import */ var _config_providers_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./config-providers.vue */ \"./src/components/config-providers.vue\");\n/* harmony import */ var _config_notifications_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./config-notifications.vue */ \"./src/components/config-notifications.vue\");\n/* harmony import */ var _config_search_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./config-search.vue */ \"./src/components/config-search.vue\");\n/* harmony import */ var _display_show_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./display-show.vue */ \"./src/components/display-show.vue\");\n/* harmony import */ var _current_downloads_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./current-downloads.vue */ \"./src/components/current-downloads.vue\");\n/* harmony import */ var _edit_show_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./edit-show.vue */ \"./src/components/edit-show.vue\");\n/* harmony import */ var _history_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./history.vue */ \"./src/components/history.vue\");\n/* harmony import */ var _history_compact_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./history-compact.vue */ \"./src/components/history-compact.vue\");\n/* harmony import */ var _history_detailed_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./history-detailed.vue */ \"./src/components/history-detailed.vue\");\n/* harmony import */ var _home_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./home.vue */ \"./src/components/home.vue\");\n/* harmony import */ var _irc_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./irc.vue */ \"./src/components/irc.vue\");\n/* harmony import */ var _login_vue__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./login.vue */ \"./src/components/login.vue\");\n/* harmony import */ var _logs_vue__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./logs.vue */ \"./src/components/logs.vue\");\n/* harmony import */ var _manage_searches_vue__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./manage-searches.vue */ \"./src/components/manage-searches.vue\");\n/* harmony import */ var _manual_post_process_vue__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./manual-post-process.vue */ \"./src/components/manual-post-process.vue\");\n/* harmony import */ var _new_show_vue__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./new-show.vue */ \"./src/components/new-show.vue\");\n/* harmony import */ var _new_shows_existing_vue__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./new-shows-existing.vue */ \"./src/components/new-shows-existing.vue\");\n/* harmony import */ var _recommended_vue__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./recommended.vue */ \"./src/components/recommended.vue\");\n/* harmony import */ var _recommended_poster_vue__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./recommended-poster.vue */ \"./src/components/recommended-poster.vue\");\n/* harmony import */ var _restart_vue__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./restart.vue */ \"./src/components/restart.vue\");\n/* harmony import */ var _root_dirs_vue__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./root-dirs.vue */ \"./src/components/root-dirs.vue\");\n/* harmony import */ var _schedule_vue__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./schedule.vue */ \"./src/components/schedule.vue\");\n/* harmony import */ var _show_header_vue__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./show-header.vue */ \"./src/components/show-header.vue\");\n/* harmony import */ var _show_history_vue__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./show-history.vue */ \"./src/components/show-history.vue\");\n/* harmony import */ var _show_results_vue__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./show-results.vue */ \"./src/components/show-results.vue\");\n/* harmony import */ var _snatch_selection_vue__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./snatch-selection.vue */ \"./src/components/snatch-selection.vue\");\n/* harmony import */ var _status_vue__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./status.vue */ \"./src/components/status.vue\");\n/* harmony import */ var _sub_menu_vue__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./sub-menu.vue */ \"./src/components/sub-menu.vue\");\n/* harmony import */ var _subtitle_search_vue__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./subtitle-search.vue */ \"./src/components/subtitle-search.vue\");\n/* harmony import */ var _update_vue__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./update.vue */ \"./src/components/update.vue\");\n/* harmony import */ var _http__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./http */ \"./src/components/http/index.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://slim/./src/components/index.js?");
/***/ }),
@@ -983,7 +1027,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerGlobalComponents\": () => (/* binding */ registerGlobalComponents),\n/* harmony export */ \"registerPlugins\": () => (/* binding */ registerPlugins),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vue_async_computed__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-async-computed */ \"./node_modules/vue-async-computed/dist/vue-async-computed.esm.js\");\n/* harmony import */ var vue_meta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-meta */ \"./node_modules/vue-meta/dist/vue-meta.esm.js\");\n/* harmony import */ var vue_snotify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-snotify */ \"./node_modules/vue-snotify/vue-snotify.esm.js\");\n/* harmony import */ var vue_cookies__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-cookies */ \"./node_modules/vue-cookies/vue-cookies.js\");\n/* harmony import */ var vue_cookies__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_cookies__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue_js_modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-js-modal */ \"./node_modules/vue-js-modal/dist/index.js\");\n/* harmony import */ var vue_js_modal__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_js_modal__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! v-tooltip */ \"./node_modules/v-tooltip/dist/v-tooltip.esm.js\");\n/* harmony import */ var _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-svg-core */ \"./node_modules/@fortawesome/fontawesome-svg-core/index.es.js\");\n/* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fortawesome/free-solid-svg-icons */ \"./node_modules/@fortawesome/free-solid-svg-icons/index.es.js\");\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components */ \"./src/components/index.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./store */ \"./src/store/index.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/core */ \"./src/utils/core.js\");\n// @TODO: Remove this file before v1.0.0\n\n\n\n\n\n\n\n\n\n_fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_6__.library.add([_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__.faAlignJustify, _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__.faImages]);\n\n\n\n/**\n * Register global components and x-template components.\n */\n\nconst registerGlobalComponents = () => {\n // Start with the x-template components\n let {\n components = []\n } = window; // Add global components (in use by `main.mako`)\n // @TODO: These should be registered in an `App.vue` component when possible,\n // along with some of the `main.mako` template\n\n components = components.concat([_components__WEBPACK_IMPORTED_MODULE_8__.App, _components__WEBPACK_IMPORTED_MODULE_8__.AppFooter, _components__WEBPACK_IMPORTED_MODULE_8__.AppHeader, _components__WEBPACK_IMPORTED_MODULE_8__.ScrollButtons, _components__WEBPACK_IMPORTED_MODULE_8__.SubMenu]); // Add global components (in use by pages/components that are not SFCs yet)\n // Use this when it's not possible to use `components: { ... }` in a component's definition.\n // If a component that uses any of these is a SFC, please use the `components` key when defining it.\n // @TODO: Instead of globally registering these,\n // they should be registered in each component that uses them\n\n components = components.concat([_components__WEBPACK_IMPORTED_MODULE_8__.AddShowOptions, _components__WEBPACK_IMPORTED_MODULE_8__.AnidbReleaseGroupUi, _components__WEBPACK_IMPORTED_MODULE_8__.AppLink, _components__WEBPACK_IMPORTED_MODULE_8__.Asset, _components__WEBPACK_IMPORTED_MODULE_8__.Backstretch, _components__WEBPACK_IMPORTED_MODULE_8__.ConfigTemplate, _components__WEBPACK_IMPORTED_MODULE_8__.ConfigTextbox, _components__WEBPACK_IMPORTED_MODULE_8__.ConfigTextboxNumber, _components__WEBPACK_IMPORTED_MODULE_8__.ConfigToggleSlider, _components__WEBPACK_IMPORTED_MODULE_8__.FileBrowser, _components__WEBPACK_IMPORTED_MODULE_8__.LanguageSelect, _components__WEBPACK_IMPORTED_MODULE_8__.LoadProgressBar, _components__WEBPACK_IMPORTED_MODULE_8__.PlotInfo, _components__WEBPACK_IMPORTED_MODULE_8__.QualityChooser, _components__WEBPACK_IMPORTED_MODULE_8__.QualityPill, // @FIXME: (sharkykh) Used in a hack/workaround in `static/js/ajax-episode-search.js`\n _components__WEBPACK_IMPORTED_MODULE_8__.RootDirs, _components__WEBPACK_IMPORTED_MODULE_8__.SelectList, _components__WEBPACK_IMPORTED_MODULE_8__.ShowSelector, _components__WEBPACK_IMPORTED_MODULE_8__.StateSwitch]); // Add components for pages that use `pageComponent`\n // @TODO: These need to be converted to Vue SFCs\n\n components = components.concat([_components__WEBPACK_IMPORTED_MODULE_8__.Schedule]); // Register the components globally\n\n components.forEach(component => {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_10__.isDevelopment) {\n console.debug(`Registering ${component.name}`);\n }\n\n vue__WEBPACK_IMPORTED_MODULE_11__.default.component(component.name, component);\n });\n};\n/**\n * Register plugins.\n */\n\nconst registerPlugins = () => {\n vue__WEBPACK_IMPORTED_MODULE_11__.default.use(vue_async_computed__WEBPACK_IMPORTED_MODULE_0__.default);\n vue__WEBPACK_IMPORTED_MODULE_11__.default.use(vue_meta__WEBPACK_IMPORTED_MODULE_1__.default);\n vue__WEBPACK_IMPORTED_MODULE_11__.default.use(vue_snotify__WEBPACK_IMPORTED_MODULE_2__.default);\n vue__WEBPACK_IMPORTED_MODULE_11__.default.use((vue_cookies__WEBPACK_IMPORTED_MODULE_3___default()));\n vue__WEBPACK_IMPORTED_MODULE_11__.default.use((vue_js_modal__WEBPACK_IMPORTED_MODULE_4___default()), {\n dynamicDefault: {\n height: 'auto'\n }\n });\n vue__WEBPACK_IMPORTED_MODULE_11__.default.use(v_tooltip__WEBPACK_IMPORTED_MODULE_5__.VTooltip); // Set default cookie expire time\n\n vue__WEBPACK_IMPORTED_MODULE_11__.default.$cookies.config('10y');\n};\n/**\n * Apply the global Vue shim.\n */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => {\n const warningTemplate = (name, state) => `${name} is using the global Vuex '${state}' state, ` + `please replace that with a local one using: mapState(['${state}'])`;\n\n vue__WEBPACK_IMPORTED_MODULE_11__.default.mixin({\n data() {\n // These are only needed for the root Vue\n if (this.$root === this) {\n return {\n globalLoading: true,\n pageComponent: false,\n showsLoading: false\n };\n }\n\n return {};\n },\n\n mounted() {\n if (this.$root === this && !window.location.pathname.includes('/login')) {\n const {\n username\n } = window;\n Promise.all([\n /* This is used by the `app-header` component\n to only show the logout button if a username is set */\n _store__WEBPACK_IMPORTED_MODULE_9__.default.dispatch('login', {\n username\n }), _store__WEBPACK_IMPORTED_MODULE_9__.default.dispatch('getConfig'), _store__WEBPACK_IMPORTED_MODULE_9__.default.dispatch('getStats')]).then(([_, config]) => {\n this.$root.$emit('loaded'); // Legacy - send config.general to jQuery (received by index.js)\n\n const event = new CustomEvent('medusa-config-loaded', {\n detail: {\n general: config.main,\n layout: config.layout\n }\n });\n window.dispatchEvent(event);\n }).catch(error => {\n console.debug(error);\n alert('Unable to connect to Medusa!'); // eslint-disable-line no-alert\n });\n }\n\n this.$root.$once('loaded', () => {\n this.$root.globalLoading = false;\n });\n },\n\n // Make auth and config accessible to all components\n // @TODO: Remove this completely\n computed: {\n // Deprecate the global `Vuex.mapState(['auth', 'config'])`\n auth() {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_10__.isDevelopment && !this.__VUE_DEVTOOLS_UID__) {\n console.warn(warningTemplate(this._name, 'auth'));\n }\n\n return this.$store.state.auth;\n },\n\n config() {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_10__.isDevelopment && !this.__VUE_DEVTOOLS_UID__) {\n console.warn(warningTemplate(this._name, 'config'));\n }\n\n return this.$store.state.config;\n }\n\n }\n });\n\n if (_utils_core__WEBPACK_IMPORTED_MODULE_10__.isDevelopment) {\n console.debug('Loading local Vue');\n }\n\n registerPlugins();\n registerGlobalComponents();\n});\n\n//# sourceURL=webpack://slim/./src/global-vue-shim.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerGlobalComponents\": () => (/* binding */ registerGlobalComponents),\n/* harmony export */ \"registerPlugins\": () => (/* binding */ registerPlugins),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vue_async_computed__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-async-computed */ \"./node_modules/vue-async-computed/dist/vue-async-computed.esm.js\");\n/* harmony import */ var vue_meta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-meta */ \"./node_modules/vue-meta/dist/vue-meta.esm.js\");\n/* harmony import */ var vue_snotify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-snotify */ \"./node_modules/vue-snotify/vue-snotify.esm.js\");\n/* harmony import */ var vue_cookies__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-cookies */ \"./node_modules/vue-cookies/vue-cookies.js\");\n/* harmony import */ var vue_cookies__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_cookies__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue_js_modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-js-modal */ \"./node_modules/vue-js-modal/dist/index.js\");\n/* harmony import */ var vue_js_modal__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_js_modal__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! v-tooltip */ \"./node_modules/v-tooltip/dist/v-tooltip.esm.js\");\n/* harmony import */ var _fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @fortawesome/fontawesome-svg-core */ \"./node_modules/@fortawesome/fontawesome-svg-core/index.es.js\");\n/* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fortawesome/free-solid-svg-icons */ \"./node_modules/@fortawesome/free-solid-svg-icons/index.es.js\");\n/* harmony import */ var _fortawesome_free_regular_svg_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fortawesome/free-regular-svg-icons */ \"./node_modules/@fortawesome/free-regular-svg-icons/index.es.js\");\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components */ \"./src/components/index.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./store */ \"./src/store/index.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/core */ \"./src/utils/core.js\");\n// @TODO: Remove this file before v1.0.0\n\n\n\n\n\n\n\n\n\n\n_fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_6__.library.add([_fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__.faAlignJustify, _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__.faImages, _fortawesome_free_regular_svg_icons__WEBPACK_IMPORTED_MODULE_8__.faTimesCircle]);\n\n\n\n/**\n * Register global components and x-template components.\n */\n\nconst registerGlobalComponents = () => {\n // Start with the x-template components\n let {\n components = []\n } = window; // Add global components (in use by `main.mako`)\n // @TODO: These should be registered in an `App.vue` component when possible,\n // along with some of the `main.mako` template\n\n components = components.concat([_components__WEBPACK_IMPORTED_MODULE_9__.App, _components__WEBPACK_IMPORTED_MODULE_9__.AppFooter, _components__WEBPACK_IMPORTED_MODULE_9__.AppHeader, _components__WEBPACK_IMPORTED_MODULE_9__.ScrollButtons, _components__WEBPACK_IMPORTED_MODULE_9__.SubMenu]); // Add global components (in use by pages/components that are not SFCs yet)\n // Use this when it's not possible to use `components: { ... }` in a component's definition.\n // If a component that uses any of these is a SFC, please use the `components` key when defining it.\n // @TODO: Instead of globally registering these,\n // they should be registered in each component that uses them\n\n components = components.concat([_components__WEBPACK_IMPORTED_MODULE_9__.AddShowOptions, _components__WEBPACK_IMPORTED_MODULE_9__.AnidbReleaseGroupUi, _components__WEBPACK_IMPORTED_MODULE_9__.AppLink, _components__WEBPACK_IMPORTED_MODULE_9__.Asset, _components__WEBPACK_IMPORTED_MODULE_9__.Backstretch, _components__WEBPACK_IMPORTED_MODULE_9__.ConfigTemplate, _components__WEBPACK_IMPORTED_MODULE_9__.ConfigTextbox, _components__WEBPACK_IMPORTED_MODULE_9__.ConfigTextboxNumber, _components__WEBPACK_IMPORTED_MODULE_9__.ConfigToggleSlider, _components__WEBPACK_IMPORTED_MODULE_9__.FileBrowser, _components__WEBPACK_IMPORTED_MODULE_9__.LanguageSelect, _components__WEBPACK_IMPORTED_MODULE_9__.LoadProgressBar, _components__WEBPACK_IMPORTED_MODULE_9__.PlotInfo, _components__WEBPACK_IMPORTED_MODULE_9__.QualityChooser, _components__WEBPACK_IMPORTED_MODULE_9__.QualityPill, // @FIXME: (sharkykh) Used in a hack/workaround in `static/js/ajax-episode-search.js`\n _components__WEBPACK_IMPORTED_MODULE_9__.RootDirs, _components__WEBPACK_IMPORTED_MODULE_9__.SelectList, _components__WEBPACK_IMPORTED_MODULE_9__.ShowSelector, _components__WEBPACK_IMPORTED_MODULE_9__.StateSwitch]); // Add components for pages that use `pageComponent`\n // @TODO: These need to be converted to Vue SFCs\n\n components = components.concat([_components__WEBPACK_IMPORTED_MODULE_9__.Schedule]); // Register the components globally\n\n components.forEach(component => {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_11__.isDevelopment) {\n console.debug(`Registering ${component.name}`);\n }\n\n vue__WEBPACK_IMPORTED_MODULE_12__.default.component(component.name, component);\n });\n};\n/**\n * Register plugins.\n */\n\nconst registerPlugins = () => {\n vue__WEBPACK_IMPORTED_MODULE_12__.default.use(vue_async_computed__WEBPACK_IMPORTED_MODULE_0__.default);\n vue__WEBPACK_IMPORTED_MODULE_12__.default.use(vue_meta__WEBPACK_IMPORTED_MODULE_1__.default);\n vue__WEBPACK_IMPORTED_MODULE_12__.default.use(vue_snotify__WEBPACK_IMPORTED_MODULE_2__.default);\n vue__WEBPACK_IMPORTED_MODULE_12__.default.use((vue_cookies__WEBPACK_IMPORTED_MODULE_3___default()));\n vue__WEBPACK_IMPORTED_MODULE_12__.default.use((vue_js_modal__WEBPACK_IMPORTED_MODULE_4___default()), {\n dynamicDefault: {\n height: 'auto'\n }\n });\n vue__WEBPACK_IMPORTED_MODULE_12__.default.use(v_tooltip__WEBPACK_IMPORTED_MODULE_5__.VTooltip); // Set default cookie expire time\n\n vue__WEBPACK_IMPORTED_MODULE_12__.default.$cookies.config('10y');\n};\n/**\n * Apply the global Vue shim.\n */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => {\n const warningTemplate = (name, state) => `${name} is using the global Vuex '${state}' state, ` + `please replace that with a local one using: mapState(['${state}'])`;\n\n vue__WEBPACK_IMPORTED_MODULE_12__.default.mixin({\n data() {\n // These are only needed for the root Vue\n if (this.$root === this) {\n return {\n globalLoading: true,\n pageComponent: false,\n showsLoading: false\n };\n }\n\n return {};\n },\n\n mounted() {\n if (this.$root === this && !window.location.pathname.includes('/login')) {\n const {\n username\n } = window;\n Promise.all([\n /* This is used by the `app-header` component\n to only show the logout button if a username is set */\n _store__WEBPACK_IMPORTED_MODULE_10__.default.dispatch('login', {\n username\n }), _store__WEBPACK_IMPORTED_MODULE_10__.default.dispatch('getConfig'), _store__WEBPACK_IMPORTED_MODULE_10__.default.dispatch('getStats')]).then(([_, config]) => {\n this.$root.$emit('loaded'); // Legacy - send config.general to jQuery (received by index.js)\n\n const event = new CustomEvent('medusa-config-loaded', {\n detail: {\n general: config.main,\n layout: config.layout\n }\n });\n window.dispatchEvent(event);\n }).catch(error => {\n console.debug(error);\n alert('Unable to connect to Medusa!'); // eslint-disable-line no-alert\n });\n }\n\n this.$root.$once('loaded', () => {\n this.$root.globalLoading = false;\n });\n },\n\n // Make auth and config accessible to all components\n // @TODO: Remove this completely\n computed: {\n // Deprecate the global `Vuex.mapState(['auth', 'config'])`\n auth() {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_11__.isDevelopment && !this.__VUE_DEVTOOLS_UID__) {\n console.warn(warningTemplate(this._name, 'auth'));\n }\n\n return this.$store.state.auth;\n },\n\n config() {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_11__.isDevelopment && !this.__VUE_DEVTOOLS_UID__) {\n console.warn(warningTemplate(this._name, 'config'));\n }\n\n return this.$store.state.config;\n }\n\n }\n });\n\n if (_utils_core__WEBPACK_IMPORTED_MODULE_11__.isDevelopment) {\n console.debug('Loading local Vue');\n }\n\n registerPlugins();\n registerGlobalComponents();\n});\n\n//# sourceURL=webpack://slim/./src/global-vue-shim.js?");
/***/ }),
@@ -1027,7 +1071,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _sub_menus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sub-menus */ \"./src/router/sub-menus.js\");\n\n/** @type {import('.').Route[]} */\n\nconst homeRoutes = [{\n path: '/home',\n name: 'home',\n meta: {\n title: 'Home',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/home.vue */ \"./src/components/home.vue\"))\n}, {\n path: '/home/editShow',\n name: 'editShow',\n meta: {\n topMenu: 'home',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.showSubMenu,\n converted: true,\n nocache: true // Use this flag, to have the router-view use :key=\"$route.fullPath\"\n\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/edit-show.vue */ \"./src/components/edit-show.vue\"))\n}, {\n path: '/home/displayShow',\n name: 'show',\n meta: {\n topMenu: 'home',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.showSubMenu,\n converted: true,\n nocache: true // Use this flag, to have the router-view use :key=\"$route.fullPath\"\n\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/display-show.vue */ \"./src/components/display-show.vue\"))\n}, {\n path: '/home/snatchSelection',\n name: 'snatchSelection',\n meta: {\n topMenu: 'home',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.showSubMenu,\n converted: true,\n nocache: true // Use this flag, to have the router-view use :key=\"$route.fullPath\"\n\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/snatch-selection.vue */ \"./src/components/snatch-selection.vue\"))\n}, {\n path: '/home/testRename',\n name: 'testRename',\n meta: {\n title: 'Preview Rename',\n header: 'Preview Rename',\n topMenu: 'home'\n }\n}, {\n path: '/home/postprocess',\n name: 'postprocess',\n meta: {\n title: 'Manual Post-Processing',\n header: 'Manual Post-Processing',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/manual-post-process.vue */ \"./src/components/manual-post-process.vue\"))\n}, {\n path: '/home/status',\n name: 'status',\n meta: {\n title: 'Status',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/status.vue */ \"./src/components/status.vue\"))\n}, {\n path: '/home/restart',\n name: 'restart',\n meta: {\n title: 'Restarting...',\n header: 'Performing Restart',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/restart.vue */ \"./src/components/restart.vue\"))\n}, {\n path: '/home/shutdown',\n name: 'shutdown',\n meta: {\n header: 'Shutting down',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/restart.vue */ \"./src/components/restart.vue\")),\n props: {\n shutdown: true\n }\n}, {\n path: '/home/update',\n name: 'update',\n meta: {\n header: 'Update Medusa',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/update.vue */ \"./src/components/update.vue\"))\n}];\n/** @type {import('.').Route[]} */\n\nconst configRoutes = [{\n path: '/config',\n name: 'config',\n meta: {\n title: 'Help & Info',\n header: 'Medusa Configuration',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config.vue */ \"./src/components/config.vue\"))\n}, {\n path: '/config/anime',\n name: 'configAnime',\n meta: {\n title: 'Config - Anime',\n header: 'Anime',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-anime.vue */ \"./src/components/config-anime.vue\"))\n}, {\n path: '/config/backuprestore',\n name: 'configBackupRestore',\n meta: {\n title: 'Config - Backup/Restore',\n header: 'Backup/Restore',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu\n }\n}, {\n path: '/config/general',\n name: 'configGeneral',\n meta: {\n title: 'Config - General',\n header: 'General Configuration',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-general.vue */ \"./src/components/config-general.vue\"))\n}, {\n path: '/config/notifications',\n name: 'configNotifications',\n meta: {\n title: 'Config - Notifications',\n header: 'Notifications',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-notifications.vue */ \"./src/components/config-notifications.vue\"))\n}, {\n path: '/config/postProcessing',\n name: 'configPostProcessing',\n meta: {\n title: 'Config - Post-Processing',\n header: 'Post-Processing',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-post-processing.vue */ \"./src/components/config-post-processing.vue\"))\n}, {\n path: '/config/providers',\n name: 'configSearchProviders',\n meta: {\n title: 'Config - Providers',\n header: 'Search Providers',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-providers.vue */ \"./src/components/config-providers.vue\"))\n}, {\n path: '/config/search',\n name: 'configSearchSettings',\n meta: {\n title: 'Config - Episode Search',\n header: 'Search Settings',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-search.vue */ \"./src/components/config-search.vue\"))\n}, {\n path: '/config/subtitles',\n name: 'configSubtitles',\n meta: {\n title: 'Config - Subtitles',\n header: 'Subtitles',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu\n }\n}];\n/** @type {import('.').Route[]} */\n\nconst addShowRoutes = [{\n path: '/addShows',\n name: 'addShows',\n meta: {\n title: 'Add Shows',\n header: 'Add Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/add-shows.vue */ \"./src/components/add-shows.vue\"))\n}, {\n path: '/addShows/existingShows',\n name: 'addExistingShows',\n meta: {\n title: 'Add Existing Shows',\n header: 'Add Existing Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/new-shows-existing.vue */ \"./src/components/new-shows-existing.vue\"))\n}, {\n path: '/addShows/newShow',\n name: 'addNewShow',\n meta: {\n title: 'Add New Show',\n header: 'Add New Show',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/new-show.vue */ \"./src/components/new-show.vue\"))\n}, {\n path: '/addShows/trendingShows',\n name: 'addTrendingShows',\n meta: {\n topMenu: 'home'\n }\n}, {\n path: '/addShows/popularShows',\n name: 'addPopularShows',\n meta: {\n title: 'Popular Shows',\n header: 'Popular Shows',\n topMenu: 'home'\n }\n}, {\n path: '/addShows/popularAnime',\n name: 'addPopularAnime',\n meta: {\n title: 'Popular Anime Shows',\n header: 'Popular Anime Shows',\n topMenu: 'home'\n }\n}];\n/** @type {import('.').Route} */\n\nconst loginRoute = {\n path: '/login',\n name: 'login',\n meta: {\n title: 'Login'\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/login.vue */ \"./src/components/login.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst addRecommendedRoute = {\n path: '/addRecommended',\n name: 'addRecommended',\n meta: {\n title: 'Add Recommended Shows',\n header: 'Add Recommended Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/add-recommended.vue */ \"./src/components/add-recommended.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst scheduleRoute = {\n path: '/schedule',\n name: 'schedule',\n meta: {\n title: 'Schedule',\n header: 'Schedule',\n topMenu: 'schedule',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/schedule.vue */ \"./src/components/schedule.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst historyRoute = {\n path: '/history',\n name: 'history',\n meta: {\n title: 'History',\n header: 'History',\n topMenu: 'history',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.historySubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/history.vue */ \"./src/components/history.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst downloadsRoute = {\n path: '/downloads',\n name: 'downloads',\n meta: {\n title: 'Downloads',\n header: 'Downloads',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/current-downloads.vue */ \"./src/components/current-downloads.vue\"))\n};\n/** @type {import('.').Route[]} */\n\nconst manageRoutes = [{\n path: '/manage',\n name: 'manage',\n meta: {\n title: 'Mass Update',\n header: 'Mass Update',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/backlogOverview',\n name: 'manageBacklogOverview',\n meta: {\n title: 'Backlog Overview',\n header: 'Backlog Overview',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/episodeStatuses',\n name: 'manageEpisodeOverview',\n meta: {\n title: 'Episode Overview',\n header: 'Episode Overview',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/failedDownloads',\n name: 'manageFailedDownloads',\n meta: {\n title: 'Failed Downloads',\n header: 'Failed Downloads',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/manageSearches',\n name: 'manageManageSearches',\n meta: {\n title: 'Manage Searches',\n header: 'Manage Searches',\n topMenu: 'manage',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/manage-searches.vue */ \"./src/components/manage-searches.vue\"))\n}, {\n path: '/manage/massEdit',\n name: 'manageMassEdit',\n meta: {\n title: 'Mass Edit',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/subtitleMissed',\n name: 'manageSubtitleMissed',\n meta: {\n title: 'Missing Subtitles',\n header: 'Missing Subtitles',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/subtitleMissedPP',\n name: 'manageSubtitleMissedPP',\n meta: {\n title: 'Missing Subtitles in Post-Process folder',\n header: 'Missing Subtitles in Post-Process folder',\n topMenu: 'manage'\n }\n}];\n/** @type {import('.').Route[]} */\n\nconst errorLogsRoutes = [{\n path: '/errorlogs',\n name: 'errorlogs',\n meta: {\n title: 'Logs & Errors',\n topMenu: 'system',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.errorlogsSubMenu\n }\n}, {\n path: '/errorlogs/viewlog',\n name: 'viewlog',\n meta: {\n title: 'Logs',\n header: 'Log File',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/logs.vue */ \"./src/components/logs.vue\"))\n}];\n/** @type {import('.').Route} */\n\nconst newsRoute = {\n path: '/news',\n name: 'news',\n meta: {\n title: 'News',\n header: 'News',\n topMenu: 'system'\n }\n};\n/** @type {import('.').Route} */\n\nconst changesRoute = {\n path: '/changes',\n name: 'changes',\n meta: {\n title: 'Changelog',\n header: 'Changelog',\n topMenu: 'system'\n }\n};\n/** @type {import('.').Route} */\n\nconst ircRoute = {\n path: '/IRC',\n name: 'IRC',\n meta: {\n title: 'IRC',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/irc.vue */ \"./src/components/irc.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst notFoundRoute = {\n path: '/not-found',\n name: 'not-found',\n meta: {\n title: '404',\n header: '404 - page not found'\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/http/404.vue */ \"./src/components/http/404.vue\"))\n}; // @NOTE: Redirect can only be added once all routes are vue\n\n/*\n/** @type {import('.').Route} *-/\nconst notFoundRedirect = {\n path: '*',\n redirect: '/not-found'\n};\n*/\n\n/** @type {import('.').Route[]} */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([...homeRoutes, ...configRoutes, ...addShowRoutes, loginRoute, addRecommendedRoute, scheduleRoute, historyRoute, downloadsRoute, ...manageRoutes, ...errorLogsRoutes, newsRoute, changesRoute, ircRoute, notFoundRoute]);\n\n//# sourceURL=webpack://slim/./src/router/routes.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _sub_menus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sub-menus */ \"./src/router/sub-menus.js\");\n\n/** @type {import('.').Route[]} */\n\nconst homeRoutes = [{\n path: '/home',\n name: 'home',\n meta: {\n title: 'Home',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/home.vue */ \"./src/components/home.vue\"))\n}, {\n path: '/home/editShow',\n name: 'editShow',\n meta: {\n topMenu: 'home',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.showSubMenu,\n converted: true,\n nocache: true // Use this flag, to have the router-view use :key=\"$route.fullPath\"\n\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/edit-show.vue */ \"./src/components/edit-show.vue\"))\n}, {\n path: '/home/displayShow',\n name: 'show',\n meta: {\n topMenu: 'home',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.showSubMenu,\n converted: true,\n nocache: true // Use this flag, to have the router-view use :key=\"$route.fullPath\"\n\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/display-show.vue */ \"./src/components/display-show.vue\"))\n}, {\n path: '/home/snatchSelection',\n name: 'snatchSelection',\n meta: {\n topMenu: 'home',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.showSubMenu,\n converted: true,\n nocache: true // Use this flag, to have the router-view use :key=\"$route.fullPath\"\n\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/snatch-selection.vue */ \"./src/components/snatch-selection.vue\"))\n}, {\n path: '/home/testRename',\n name: 'testRename',\n meta: {\n title: 'Preview Rename',\n header: 'Preview Rename',\n topMenu: 'home'\n }\n}, {\n path: '/home/postprocess',\n name: 'postprocess',\n meta: {\n title: 'Manual Post-Processing',\n header: 'Manual Post-Processing',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/manual-post-process.vue */ \"./src/components/manual-post-process.vue\"))\n}, {\n path: '/home/status',\n name: 'status',\n meta: {\n title: 'Status',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/status.vue */ \"./src/components/status.vue\"))\n}, {\n path: '/home/restart',\n name: 'restart',\n meta: {\n title: 'Restarting...',\n header: 'Performing Restart',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/restart.vue */ \"./src/components/restart.vue\"))\n}, {\n path: '/home/shutdown',\n name: 'shutdown',\n meta: {\n header: 'Shutting down',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/restart.vue */ \"./src/components/restart.vue\")),\n props: {\n shutdown: true\n }\n}, {\n path: '/home/update',\n name: 'update',\n meta: {\n header: 'Update Medusa',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/update.vue */ \"./src/components/update.vue\"))\n}];\n/** @type {import('.').Route[]} */\n\nconst configRoutes = [{\n path: '/config',\n name: 'config',\n meta: {\n title: 'Help & Info',\n header: 'Medusa Configuration',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config.vue */ \"./src/components/config.vue\"))\n}, {\n path: '/config/anime',\n name: 'configAnime',\n meta: {\n title: 'Config - Anime',\n header: 'Anime',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-anime.vue */ \"./src/components/config-anime.vue\"))\n}, {\n path: '/config/backuprestore',\n name: 'configBackupRestore',\n meta: {\n title: 'Config - Backup/Restore',\n header: 'Backup/Restore',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu\n }\n}, {\n path: '/config/general',\n name: 'configGeneral',\n meta: {\n title: 'Config - General',\n header: 'General Configuration',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-general.vue */ \"./src/components/config-general.vue\"))\n}, {\n path: '/config/notifications',\n name: 'configNotifications',\n meta: {\n title: 'Config - Notifications',\n header: 'Notifications',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-notifications.vue */ \"./src/components/config-notifications.vue\"))\n}, {\n path: '/config/postProcessing',\n name: 'configPostProcessing',\n meta: {\n title: 'Config - Post-Processing',\n header: 'Post-Processing',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-post-processing.vue */ \"./src/components/config-post-processing.vue\"))\n}, {\n path: '/config/providers',\n name: 'configSearchProviders',\n meta: {\n title: 'Config - Providers',\n header: 'Search Providers',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-providers.vue */ \"./src/components/config-providers.vue\"))\n}, {\n path: '/config/search',\n name: 'configSearchSettings',\n meta: {\n title: 'Config - Episode Search',\n header: 'Search Settings',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/config-search.vue */ \"./src/components/config-search.vue\"))\n}, {\n path: '/config/subtitles',\n name: 'configSubtitles',\n meta: {\n title: 'Config - Subtitles',\n header: 'Subtitles',\n topMenu: 'config',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.configSubMenu\n }\n}];\n/** @type {import('.').Route[]} */\n\nconst addShowRoutes = [{\n path: '/addShows',\n name: 'addShows',\n meta: {\n title: 'Add Shows',\n header: 'Add Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/add-shows.vue */ \"./src/components/add-shows.vue\"))\n}, {\n path: '/addShows/existingShows',\n name: 'addExistingShows',\n meta: {\n title: 'Add Existing Shows',\n header: 'Add Existing Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/new-shows-existing.vue */ \"./src/components/new-shows-existing.vue\"))\n}, {\n path: '/addShows/newShow',\n name: 'addNewShow',\n meta: {\n title: 'Add New Show',\n header: 'Add New Show',\n topMenu: 'home',\n converted: true\n },\n props: route => ({ ...route.params\n }),\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/new-show.vue */ \"./src/components/new-show.vue\"))\n}, {\n path: '/addShows/trendingShows',\n name: 'addTrendingShows',\n meta: {\n topMenu: 'home'\n }\n}, {\n path: '/addShows/popularShows',\n name: 'addPopularShows',\n meta: {\n title: 'Popular Shows',\n header: 'Popular Shows',\n topMenu: 'home'\n }\n}, {\n path: '/addShows/popularAnime',\n name: 'addPopularAnime',\n meta: {\n title: 'Popular Anime Shows',\n header: 'Popular Anime Shows',\n topMenu: 'home'\n }\n}];\n/** @type {import('.').Route} */\n\nconst loginRoute = {\n path: '/login',\n name: 'login',\n meta: {\n title: 'Login'\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/login.vue */ \"./src/components/login.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst addRecommendedRoute = {\n path: '/addRecommended',\n name: 'addRecommended',\n meta: {\n title: 'Add Recommended Shows',\n header: 'Add Recommended Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/recommended.vue */ \"./src/components/recommended.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst scheduleRoute = {\n path: '/schedule',\n name: 'schedule',\n meta: {\n title: 'Schedule',\n header: 'Schedule',\n topMenu: 'schedule',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/schedule.vue */ \"./src/components/schedule.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst historyRoute = {\n path: '/history',\n name: 'history',\n meta: {\n title: 'History',\n header: 'History',\n topMenu: 'history',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.historySubMenu,\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/history.vue */ \"./src/components/history.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst downloadsRoute = {\n path: '/downloads',\n name: 'downloads',\n meta: {\n title: 'Downloads',\n header: 'Downloads',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/current-downloads.vue */ \"./src/components/current-downloads.vue\"))\n};\n/** @type {import('.').Route[]} */\n\nconst manageRoutes = [{\n path: '/manage',\n name: 'manage',\n meta: {\n title: 'Mass Update',\n header: 'Mass Update',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/backlogOverview',\n name: 'manageBacklogOverview',\n meta: {\n title: 'Backlog Overview',\n header: 'Backlog Overview',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/episodeStatuses',\n name: 'manageEpisodeOverview',\n meta: {\n title: 'Episode Overview',\n header: 'Episode Overview',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/failedDownloads',\n name: 'manageFailedDownloads',\n meta: {\n title: 'Failed Downloads',\n header: 'Failed Downloads',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/manageSearches',\n name: 'manageManageSearches',\n meta: {\n title: 'Manage Searches',\n header: 'Manage Searches',\n topMenu: 'manage',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/manage-searches.vue */ \"./src/components/manage-searches.vue\"))\n}, {\n path: '/manage/massEdit',\n name: 'manageMassEdit',\n meta: {\n title: 'Mass Edit',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/subtitleMissed',\n name: 'manageSubtitleMissed',\n meta: {\n title: 'Missing Subtitles',\n header: 'Missing Subtitles',\n topMenu: 'manage'\n }\n}, {\n path: '/manage/subtitleMissedPP',\n name: 'manageSubtitleMissedPP',\n meta: {\n title: 'Missing Subtitles in Post-Process folder',\n header: 'Missing Subtitles in Post-Process folder',\n topMenu: 'manage'\n }\n}];\n/** @type {import('.').Route[]} */\n\nconst errorLogsRoutes = [{\n path: '/errorlogs',\n name: 'errorlogs',\n meta: {\n title: 'Logs & Errors',\n topMenu: 'system',\n subMenu: _sub_menus__WEBPACK_IMPORTED_MODULE_0__.errorlogsSubMenu\n }\n}, {\n path: '/errorlogs/viewlog',\n name: 'viewlog',\n meta: {\n title: 'Logs',\n header: 'Log File',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/logs.vue */ \"./src/components/logs.vue\"))\n}];\n/** @type {import('.').Route} */\n\nconst newsRoute = {\n path: '/news',\n name: 'news',\n meta: {\n title: 'News',\n header: 'News',\n topMenu: 'system'\n }\n};\n/** @type {import('.').Route} */\n\nconst changesRoute = {\n path: '/changes',\n name: 'changes',\n meta: {\n title: 'Changelog',\n header: 'Changelog',\n topMenu: 'system'\n }\n};\n/** @type {import('.').Route} */\n\nconst ircRoute = {\n path: '/IRC',\n name: 'IRC',\n meta: {\n title: 'IRC',\n topMenu: 'system',\n converted: true\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/irc.vue */ \"./src/components/irc.vue\"))\n};\n/** @type {import('.').Route} */\n\nconst notFoundRoute = {\n path: '/not-found',\n name: 'not-found',\n meta: {\n title: '404',\n header: '404 - page not found'\n },\n component: () => Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../components/http/404.vue */ \"./src/components/http/404.vue\"))\n}; // @NOTE: Redirect can only be added once all routes are vue\n\n/*\n/** @type {import('.').Route} *-/\nconst notFoundRedirect = {\n path: '*',\n redirect: '/not-found'\n};\n*/\n\n/** @type {import('.').Route[]} */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([...homeRoutes, ...configRoutes, ...addShowRoutes, loginRoute, addRecommendedRoute, scheduleRoute, historyRoute, downloadsRoute, ...manageRoutes, ...errorLogsRoutes, newsRoute, changesRoute, ircRoute, notFoundRoute]);\n\n//# sourceURL=webpack://slim/./src/router/routes.js?");
/***/ }),
@@ -1049,7 +1093,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_native_websocket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-native-websocket */ \"./node_modules/vue-native-websocket/dist/build.js\");\n/* harmony import */ var vue_native_websocket__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_native_websocket__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules */ \"./src/store/modules/index.js\");\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutation-types */ \"./src/store/mutation-types.js\");\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_3__.default.use(vuex__WEBPACK_IMPORTED_MODULE_4__.default);\nconst store = new vuex__WEBPACK_IMPORTED_MODULE_4__.Store({\n modules: {\n auth: _modules__WEBPACK_IMPORTED_MODULE_1__.auth,\n config: _modules__WEBPACK_IMPORTED_MODULE_1__.config,\n defaults: _modules__WEBPACK_IMPORTED_MODULE_1__.defaults,\n history: _modules__WEBPACK_IMPORTED_MODULE_1__.history,\n notifications: _modules__WEBPACK_IMPORTED_MODULE_1__.notifications,\n provider: _modules__WEBPACK_IMPORTED_MODULE_1__.provider,\n schedule: _modules__WEBPACK_IMPORTED_MODULE_1__.schedule,\n shows: _modules__WEBPACK_IMPORTED_MODULE_1__.shows,\n socket: _modules__WEBPACK_IMPORTED_MODULE_1__.socket,\n stats: _modules__WEBPACK_IMPORTED_MODULE_1__.stats,\n queue: _modules__WEBPACK_IMPORTED_MODULE_1__.queue\n },\n state: {},\n mutations: {},\n getters: {},\n actions: {}\n}); // Keep as a non-arrow function for `this` context.\n\nconst passToStoreHandler = function (eventName, event, next) {\n const target = eventName.toUpperCase();\n const eventData = event.data;\n\n if (target === 'SOCKET_ONMESSAGE') {\n const message = JSON.parse(eventData);\n const {\n data,\n event\n } = message; // Show the notification to the user\n\n if (event === 'notification') {\n const {\n body,\n hash,\n type,\n title\n } = data;\n window.displayNotification(type, title, body, hash);\n } else if (event === 'configUpdated') {\n const {\n section,\n config\n } = data;\n this.store.dispatch('updateConfig', {\n section,\n config\n });\n } else if (event === 'showUpdated' || event === 'showAdded') {\n this.store.dispatch('updateShow', data);\n } else if (event === 'addManualSearchResult') {\n this.store.dispatch('addManualSearchResult', data);\n } else if (event === 'QueueItemUpdate') {\n this.store.dispatch('updateQueueItem', data);\n } else if (event === 'QueueItemShowAdd') {\n this.store.dispatch('updateShowQueueItem', data);\n } else if (event === 'QueueItemShowRemove') {\n this.store.dispatch('removeShow', data);\n } else if (event === 'historyUpdate') {\n this.store.dispatch('updateHistory', data);\n } else {\n window.displayNotification('info', event, data);\n }\n } // Resume normal 'passToStore' handling\n\n\n next(eventName, event);\n};\n\nconst websocketUrl = (() => {\n const {\n protocol,\n host\n } = window.location;\n const proto = protocol === 'https:' ? 'wss:' : 'ws:';\n const WSMessageUrl = '/ui';\n const webRoot = document.body.getAttribute('web-root');\n return `${proto}//${host}${webRoot}/ws${WSMessageUrl}`;\n})();\n\nvue__WEBPACK_IMPORTED_MODULE_3__.default.use((vue_native_websocket__WEBPACK_IMPORTED_MODULE_0___default()), websocketUrl, {\n store,\n format: 'json',\n reconnection: true,\n // (Boolean) whether to reconnect automatically (false)\n reconnectionAttempts: 2,\n // (Number) number of reconnection attempts before giving up (Infinity),\n reconnectionDelay: 1000,\n // (Number) how long to initially wait before attempting a new (1000)\n passToStoreHandler,\n // (Function|) Handler for events triggered by the WebSocket (false)\n mutations: {\n SOCKET_ONOPEN: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONOPEN,\n SOCKET_ONCLOSE: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONCLOSE,\n SOCKET_ONERROR: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONERROR,\n SOCKET_ONMESSAGE: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONMESSAGE,\n SOCKET_RECONNECT: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_RECONNECT,\n SOCKET_RECONNECT_ERROR: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_RECONNECT_ERROR\n }\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (store);\n\n//# sourceURL=webpack://slim/./src/store/index.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_native_websocket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-native-websocket */ \"./node_modules/vue-native-websocket/dist/build.js\");\n/* harmony import */ var vue_native_websocket__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_native_websocket__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules */ \"./src/store/modules/index.js\");\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutation-types */ \"./src/store/mutation-types.js\");\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_3__.default.use(vuex__WEBPACK_IMPORTED_MODULE_4__.default);\nconst store = new vuex__WEBPACK_IMPORTED_MODULE_4__.Store({\n modules: {\n auth: _modules__WEBPACK_IMPORTED_MODULE_1__.auth,\n config: _modules__WEBPACK_IMPORTED_MODULE_1__.config,\n defaults: _modules__WEBPACK_IMPORTED_MODULE_1__.defaults,\n history: _modules__WEBPACK_IMPORTED_MODULE_1__.history,\n notifications: _modules__WEBPACK_IMPORTED_MODULE_1__.notifications,\n provider: _modules__WEBPACK_IMPORTED_MODULE_1__.provider,\n recommended: _modules__WEBPACK_IMPORTED_MODULE_1__.recommended,\n schedule: _modules__WEBPACK_IMPORTED_MODULE_1__.schedule,\n shows: _modules__WEBPACK_IMPORTED_MODULE_1__.shows,\n socket: _modules__WEBPACK_IMPORTED_MODULE_1__.socket,\n stats: _modules__WEBPACK_IMPORTED_MODULE_1__.stats,\n queue: _modules__WEBPACK_IMPORTED_MODULE_1__.queue\n },\n state: {},\n mutations: {},\n getters: {},\n actions: {}\n}); // Keep as a non-arrow function for `this` context.\n\nconst passToStoreHandler = function (eventName, event, next) {\n const target = eventName.toUpperCase();\n const eventData = event.data;\n\n if (target === 'SOCKET_ONMESSAGE') {\n const message = JSON.parse(eventData);\n const {\n data,\n event\n } = message; // Show the notification to the user\n\n if (event === 'notification') {\n const {\n body,\n hash,\n type,\n title\n } = data;\n window.displayNotification(type, title, body, hash);\n } else if (event === 'configUpdated') {\n const {\n section,\n config\n } = data;\n this.store.dispatch('updateConfig', {\n section,\n config\n });\n } else if (event === 'showUpdated' || event === 'showAdded') {\n this.store.dispatch('updateShow', data);\n } else if (event === 'addManualSearchResult') {\n this.store.dispatch('addManualSearchResult', data);\n } else if (event === 'QueueItemUpdate') {\n this.store.dispatch('updateQueueItem', data);\n } else if (event === 'QueueItemShowAdd') {\n this.store.dispatch('updateShowQueueItem', data);\n } else if (event === 'QueueItemShowRemove') {\n this.store.dispatch('removeShow', data);\n } else if (event === 'historyUpdate') {\n this.store.dispatch('updateHistory', data);\n } else {\n window.displayNotification('info', event, data);\n }\n } // Resume normal 'passToStore' handling\n\n\n next(eventName, event);\n};\n\nconst websocketUrl = (() => {\n const {\n protocol,\n host\n } = window.location;\n const proto = protocol === 'https:' ? 'wss:' : 'ws:';\n const WSMessageUrl = '/ui';\n const webRoot = document.body.getAttribute('web-root');\n return `${proto}//${host}${webRoot}/ws${WSMessageUrl}`;\n})();\n\nvue__WEBPACK_IMPORTED_MODULE_3__.default.use((vue_native_websocket__WEBPACK_IMPORTED_MODULE_0___default()), websocketUrl, {\n store,\n format: 'json',\n reconnection: true,\n // (Boolean) whether to reconnect automatically (false)\n reconnectionAttempts: 2,\n // (Number) number of reconnection attempts before giving up (Infinity),\n reconnectionDelay: 1000,\n // (Number) how long to initially wait before attempting a new (1000)\n passToStoreHandler,\n // (Function|) Handler for events triggered by the WebSocket (false)\n mutations: {\n SOCKET_ONOPEN: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONOPEN,\n SOCKET_ONCLOSE: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONCLOSE,\n SOCKET_ONERROR: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONERROR,\n SOCKET_ONMESSAGE: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_ONMESSAGE,\n SOCKET_RECONNECT: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_RECONNECT,\n SOCKET_RECONNECT_ERROR: _mutation_types__WEBPACK_IMPORTED_MODULE_2__.SOCKET_RECONNECT_ERROR\n }\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (store);\n\n//# sourceURL=webpack://slim/./src/store/index.js?");
/***/ }),
@@ -1104,7 +1148,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../api */ \"./src/api.js\");\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/core */ \"./src/utils/core.js\");\n\n\n\nconst state = {\n addTitleWithYear: null,\n wikiUrl: null,\n donationsUrl: null,\n namingForceFolders: null,\n sourceUrl: null,\n rootDirs: [],\n subtitles: {\n enabled: null\n },\n brokenProviders: [],\n logs: {\n debug: null,\n dbDebug: null,\n loggingLevels: {},\n numErrors: null,\n numWarnings: null,\n actualLogDir: null,\n nr: null,\n size: null,\n subliminalLog: null,\n privacyLevel: null,\n custom: {}\n },\n cpuPreset: null,\n subtitlesMulti: null,\n anonRedirect: null,\n recentShows: [],\n randomShowSlug: null,\n // @TODO: Recreate this in Vue when the webapp has a reliable list of shows to choose from.\n showDefaults: {\n status: null,\n statusAfter: null,\n quality: null,\n subtitles: null,\n seasonFolders: null,\n anime: null,\n scene: null,\n showLists: null\n },\n launchBrowser: null,\n defaultPage: null,\n trashRemoveShow: null,\n indexerDefaultLanguage: null,\n showUpdateHour: null,\n indexerTimeout: null,\n indexerDefault: null,\n plexFallBack: {\n enable: null,\n notifications: null,\n timeout: null\n },\n versionNotify: null,\n autoUpdate: null,\n updateFrequency: null,\n notifyOnUpdate: null,\n availableThemes: null,\n timePresets: [],\n datePresets: [],\n webInterface: {\n apiKey: null,\n log: null,\n username: null,\n password: null,\n port: null,\n host: null,\n notifyOnLogin: null,\n ipv6: null,\n httpsEnable: null,\n httpsCert: null,\n httpsKey: null,\n handleReverseProxy: null\n },\n sslVerify: null,\n sslCaBundle: null,\n noRestart: null,\n encryptionVersion: null,\n calendarUnprotected: null,\n calendarIcons: null,\n proxySetting: null,\n proxyProviders: null,\n proxyClients: null,\n proxyIndexers: null,\n proxyOthers: null,\n skipRemovedFiles: null,\n epDefaultDeletedStatus: null,\n developer: null,\n experimental: null,\n git: {\n username: null,\n password: null,\n token: null,\n authType: null,\n remote: null,\n path: null,\n org: null,\n reset: null,\n resetBranches: null,\n url: null\n },\n // Remove backlogOverview after manage_backlogOverview.mako is gone.\n backlogOverview: {\n status: null,\n period: null\n },\n // Remove themeName when we get fully rid of MEDUSA.config.\n themeName: null,\n providers: {\n prowlarr: {\n url: null,\n apikey: null\n }\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG](state, {\n section,\n config\n }) {\n if (section === 'main') {\n state = Object.assign(state, config);\n }\n },\n\n addRecentShow(state, {\n show\n }) {\n state.recentShows = state.recentShows.filter(filterShow => !(filterShow.showSlug === show.showSlug && filterShow.name === show.name));\n state.recentShows.unshift(show); // Add the new show object to the start of the array.\n\n state.recentShows = state.recentShows.slice(0, 5); // Cut the array of at 5 items.\n }\n\n};\nconst getters = {\n effectiveIgnored: (state, _, rootState) => series => {\n const seriesIgnored = series.config.release.ignoredWords.map(x => x.toLowerCase());\n const globalIgnored = rootState.config.search.filters.ignored.map(x => x.toLowerCase());\n\n if (!series.config.release.ignoredWordsExclude) {\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayUnique)(globalIgnored.concat(seriesIgnored));\n }\n\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayExclude)(globalIgnored, seriesIgnored);\n },\n effectiveRequired: (state, _, rootState) => series => {\n const seriesRequired = series.config.release.requiredWords.map(x => x.toLowerCase());\n const globalRequired = rootState.config.search.filters.required.map(x => x.toLowerCase());\n\n if (!series.config.release.requiredWordsExclude) {\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayUnique)(globalRequired.concat(seriesRequired));\n }\n\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayExclude)(globalRequired, seriesRequired);\n }\n};\nconst actions = {\n getConfig(context, section) {\n const {\n commit\n } = context;\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.get('/config/' + (section || '')).then(res => {\n if (section) {\n const config = res.data;\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n return config;\n }\n\n const sections = res.data;\n Object.keys(sections).forEach(section => {\n const config = sections[section];\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n });\n return sections;\n });\n },\n\n setConfig(context, {\n section,\n config\n }) {\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch(`config/${section}`, config);\n },\n\n updateConfig(context, {\n section,\n config\n }) {\n const {\n commit\n } = context;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n },\n\n getApiKey(context) {\n const {\n commit\n } = context;\n const section = 'main';\n const config = {\n webInterface: {\n apiKey: ''\n }\n };\n return _api__WEBPACK_IMPORTED_MODULE_0__.apiRoute.get('config/general/generate_api_key').then(response => {\n config.webInterface.apiKey = response.data;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n });\n },\n\n setRecentShow({\n commit,\n state\n }, show) {\n commit('addRecentShow', {\n show\n });\n const config = {\n recentShows: state.recentShows\n };\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch('config/main', config);\n },\n\n setCustomLogs({\n commit\n }, logs) {\n // Convert back to object.\n const reducedLogs = logs.reduce((obj, item) => ({ ...obj,\n [item.identifier]: item.level\n }), {});\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch('config/main', {\n logs: {\n custom: logs\n }\n }).then(() => {\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section: 'main',\n config: {\n logs: {\n custom: reducedLogs\n }\n }\n });\n });\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/general.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../api */ \"./src/api.js\");\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/core */ \"./src/utils/core.js\");\n\n\n\nconst state = {\n addTitleWithYear: null,\n wikiUrl: null,\n donationsUrl: null,\n namingForceFolders: null,\n sourceUrl: null,\n rootDirs: [],\n subtitles: {\n enabled: null\n },\n brokenProviders: [],\n logs: {\n debug: null,\n dbDebug: null,\n loggingLevels: {},\n numErrors: null,\n numWarnings: null,\n actualLogDir: null,\n nr: null,\n size: null,\n subliminalLog: null,\n privacyLevel: null,\n custom: {}\n },\n cpuPreset: null,\n subtitlesMulti: null,\n anonRedirect: null,\n recentShows: [],\n randomShowSlug: null,\n // @TODO: Recreate this in Vue when the webapp has a reliable list of shows to choose from.\n showDefaults: {\n status: null,\n statusAfter: null,\n quality: null,\n subtitles: null,\n seasonFolders: null,\n anime: null,\n scene: null,\n showLists: null\n },\n launchBrowser: null,\n defaultPage: null,\n trashRemoveShow: null,\n indexerDefaultLanguage: null,\n showUpdateHour: null,\n indexerTimeout: null,\n indexerDefault: null,\n plexFallBack: {\n enable: null,\n notifications: null,\n timeout: null\n },\n recommended: {\n cache: {\n shows: null,\n trakt: null,\n imdb: null,\n anidb: null,\n anilist: null\n },\n trakt: {\n selectedLists: [],\n availableLists: []\n }\n },\n versionNotify: null,\n autoUpdate: null,\n updateFrequency: null,\n notifyOnUpdate: null,\n availableThemes: null,\n timePresets: [],\n datePresets: [],\n webInterface: {\n apiKey: null,\n log: null,\n username: null,\n password: null,\n port: null,\n host: null,\n notifyOnLogin: null,\n ipv6: null,\n httpsEnable: null,\n httpsCert: null,\n httpsKey: null,\n handleReverseProxy: null\n },\n sslVerify: null,\n sslCaBundle: null,\n noRestart: null,\n encryptionVersion: null,\n calendarUnprotected: null,\n calendarIcons: null,\n proxySetting: null,\n proxyProviders: null,\n proxyClients: null,\n proxyIndexers: null,\n proxyOthers: null,\n skipRemovedFiles: null,\n epDefaultDeletedStatus: null,\n developer: null,\n experimental: null,\n git: {\n username: null,\n password: null,\n token: null,\n authType: null,\n remote: null,\n path: null,\n org: null,\n reset: null,\n resetBranches: null,\n url: null\n },\n // Remove backlogOverview after manage_backlogOverview.mako is gone.\n backlogOverview: {\n status: null,\n period: null\n },\n // Remove themeName when we get fully rid of MEDUSA.config.\n themeName: null,\n providers: {\n prowlarr: {\n url: null,\n apikey: null\n }\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG](state, {\n section,\n config\n }) {\n if (section === 'main') {\n state = Object.assign(state, config);\n }\n },\n\n addRecentShow(state, {\n show\n }) {\n state.recentShows = state.recentShows.filter(filterShow => !(filterShow.showSlug === show.showSlug && filterShow.name === show.name));\n state.recentShows.unshift(show); // Add the new show object to the start of the array.\n\n state.recentShows = state.recentShows.slice(0, 5); // Cut the array of at 5 items.\n },\n\n updateTraktSelectedLists(state, selectedLists) {\n state.recommended.trakt.selectedLists = selectedLists;\n }\n\n};\nconst getters = {\n effectiveIgnored: (state, _, rootState) => series => {\n const seriesIgnored = series.config.release.ignoredWords.map(x => x.toLowerCase());\n const globalIgnored = rootState.config.search.filters.ignored.map(x => x.toLowerCase());\n\n if (!series.config.release.ignoredWordsExclude) {\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayUnique)(globalIgnored.concat(seriesIgnored));\n }\n\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayExclude)(globalIgnored, seriesIgnored);\n },\n effectiveRequired: (state, _, rootState) => series => {\n const seriesRequired = series.config.release.requiredWords.map(x => x.toLowerCase());\n const globalRequired = rootState.config.search.filters.required.map(x => x.toLowerCase());\n\n if (!series.config.release.requiredWordsExclude) {\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayUnique)(globalRequired.concat(seriesRequired));\n }\n\n return (0,_utils_core__WEBPACK_IMPORTED_MODULE_2__.arrayExclude)(globalRequired, seriesRequired);\n }\n};\nconst actions = {\n getConfig(context, section) {\n const {\n commit\n } = context;\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.get('/config/' + (section || '')).then(res => {\n if (section) {\n const config = res.data;\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n return config;\n }\n\n const sections = res.data;\n Object.keys(sections).forEach(section => {\n const config = sections[section];\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n });\n return sections;\n });\n },\n\n setConfig(context, {\n section,\n config\n }) {\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch(`config/${section}`, config);\n },\n\n updateConfig(context, {\n section,\n config\n }) {\n const {\n commit\n } = context;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n },\n\n getApiKey(context) {\n const {\n commit\n } = context;\n const section = 'main';\n const config = {\n webInterface: {\n apiKey: ''\n }\n };\n return _api__WEBPACK_IMPORTED_MODULE_0__.apiRoute.get('config/general/generate_api_key').then(response => {\n config.webInterface.apiKey = response.data;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section,\n config\n });\n });\n },\n\n setRecentShow({\n commit,\n state\n }, show) {\n commit('addRecentShow', {\n show\n });\n const config = {\n recentShows: state.recentShows\n };\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch('config/main', config);\n },\n\n setCustomLogs({\n commit\n }, logs) {\n // Convert back to object.\n const reducedLogs = logs.reduce((obj, item) => ({ ...obj,\n [item.identifier]: item.level\n }), {});\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch('config/main', {\n logs: {\n custom: logs\n }\n }).then(() => {\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_CONFIG, {\n section: 'main',\n config: {\n logs: {\n custom: reducedLogs\n }\n }\n });\n });\n },\n\n setTraktSelectedLists({\n commit\n }, selectedLists) {\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.patch('config/main', {\n recommended: {\n trakt: {\n selectedLists\n }\n }\n }).then(() => {\n return commit('updateTraktSelectedLists', selectedLists);\n });\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/general.js?");
/***/ }),
@@ -1126,7 +1170,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n\nconst state = {\n main: {\n externalMappings: {},\n statusMap: {},\n traktIndexers: {},\n validLanguages: [],\n langabbvToId: {}\n },\n indexers: {\n tvdb: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null,\n // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n },\n tmdb: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null,\n // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n },\n tvmaze: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null,\n // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n }\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, {\n section,\n config\n }) {\n if (section === 'indexers') {\n state = Object.assign(state, config);\n }\n }\n\n};\nconst getters = {\n // Get an indexer's name using its ID.\n indexerIdToName: state => indexerId => {\n if (!indexerId) {\n return undefined;\n }\n\n const {\n indexers\n } = state;\n return Object.keys(indexers).find(name => indexers[name].id === Number.parseInt(indexerId, 10));\n },\n // Get an indexer's ID using its name.\n indexerNameToId: state => indexerName => {\n const {\n indexers\n } = state;\n\n if (!indexerName || !indexers) {\n return undefined;\n }\n\n return indexers[indexerName].id;\n },\n\n /**\n * Return the indexers showUrl.\n * @param {object} state - State object.\n * @returns {string|undefined} Indexers show url or undefined if not found.\n */\n getIndexer: state => indexerId => {\n return Object.values(state.indexers).find(indexer => indexer.id === indexerId);\n }\n};\nconst actions = {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/indexers.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n\nconst state = {\n main: {\n externalMappings: {},\n statusMap: {},\n traktIndexers: {},\n validLanguages: [],\n langabbvToId: {},\n recommendedLists: {}\n },\n indexers: {\n tvdb: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null,\n // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n },\n tmdb: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null,\n // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n },\n tvmaze: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null,\n // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n }\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, {\n section,\n config\n }) {\n if (section === 'indexers') {\n state = Object.assign(state, config);\n }\n }\n\n};\nconst getters = {\n // Get an indexer's name using its ID.\n indexerIdToName: state => indexerId => {\n if (!indexerId) {\n return undefined;\n }\n\n const {\n indexers\n } = state;\n return Object.keys(indexers).find(name => indexers[name].id === Number.parseInt(indexerId, 10));\n },\n // Get an indexer's ID using its name.\n indexerNameToId: state => indexerName => {\n const {\n indexers\n } = state;\n\n if (!indexerName || !indexers) {\n return undefined;\n }\n\n return indexers[indexerName].id;\n },\n\n /**\n * Return the indexers showUrl.\n * @param {object} state - State object.\n * @returns {string|undefined} Indexers show url or undefined if not found.\n */\n getIndexer: state => indexerId => {\n return Object.values(state.indexers).find(indexer => indexer.id === indexerId);\n }\n};\nconst actions = {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/indexers.js?");
/***/ }),
@@ -1478,7 +1522,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"auth\": () => (/* reexport safe */ _auth__WEBPACK_IMPORTED_MODULE_0__.default),\n/* harmony export */ \"defaults\": () => (/* reexport safe */ _defaults__WEBPACK_IMPORTED_MODULE_1__.default),\n/* harmony export */ \"history\": () => (/* reexport safe */ _history__WEBPACK_IMPORTED_MODULE_2__.default),\n/* harmony export */ \"notifications\": () => (/* reexport safe */ _notifications__WEBPACK_IMPORTED_MODULE_3__.default),\n/* harmony export */ \"provider\": () => (/* reexport safe */ _provider__WEBPACK_IMPORTED_MODULE_4__.default),\n/* harmony export */ \"shows\": () => (/* reexport safe */ _shows__WEBPACK_IMPORTED_MODULE_5__.default),\n/* harmony export */ \"schedule\": () => (/* reexport safe */ _schedule__WEBPACK_IMPORTED_MODULE_6__.default),\n/* harmony export */ \"socket\": () => (/* reexport safe */ _socket__WEBPACK_IMPORTED_MODULE_7__.default),\n/* harmony export */ \"stats\": () => (/* reexport safe */ _stats__WEBPACK_IMPORTED_MODULE_8__.default),\n/* harmony export */ \"config\": () => (/* reexport safe */ _config__WEBPACK_IMPORTED_MODULE_9__.default),\n/* harmony export */ \"queue\": () => (/* reexport safe */ _queue__WEBPACK_IMPORTED_MODULE_10__.default)\n/* harmony export */ });\n/* harmony import */ var _auth__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./auth */ \"./src/store/modules/auth.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaults */ \"./src/store/modules/defaults.js\");\n/* harmony import */ var _history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./history */ \"./src/store/modules/history.js\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./notifications */ \"./src/store/modules/notifications.js\");\n/* harmony import */ var _provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./provider */ \"./src/store/modules/provider.js\");\n/* harmony import */ var _shows__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shows */ \"./src/store/modules/shows.js\");\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./schedule */ \"./src/store/modules/schedule.js\");\n/* harmony import */ var _socket__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./socket */ \"./src/store/modules/socket.js\");\n/* harmony import */ var _stats__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./stats */ \"./src/store/modules/stats.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./config */ \"./src/store/modules/config/index.js\");\n/* harmony import */ var _queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./queue */ \"./src/store/modules/queue.js\");\n\n\n\n\n\n\n\n\n\n\n // Export * from './configs/index.js';\n\n//# sourceURL=webpack://slim/./src/store/modules/index.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"auth\": () => (/* reexport safe */ _auth__WEBPACK_IMPORTED_MODULE_0__.default),\n/* harmony export */ \"defaults\": () => (/* reexport safe */ _defaults__WEBPACK_IMPORTED_MODULE_1__.default),\n/* harmony export */ \"history\": () => (/* reexport safe */ _history__WEBPACK_IMPORTED_MODULE_2__.default),\n/* harmony export */ \"notifications\": () => (/* reexport safe */ _notifications__WEBPACK_IMPORTED_MODULE_3__.default),\n/* harmony export */ \"provider\": () => (/* reexport safe */ _provider__WEBPACK_IMPORTED_MODULE_4__.default),\n/* harmony export */ \"recommended\": () => (/* reexport safe */ _recommended__WEBPACK_IMPORTED_MODULE_5__.default),\n/* harmony export */ \"shows\": () => (/* reexport safe */ _shows__WEBPACK_IMPORTED_MODULE_6__.default),\n/* harmony export */ \"schedule\": () => (/* reexport safe */ _schedule__WEBPACK_IMPORTED_MODULE_7__.default),\n/* harmony export */ \"socket\": () => (/* reexport safe */ _socket__WEBPACK_IMPORTED_MODULE_8__.default),\n/* harmony export */ \"stats\": () => (/* reexport safe */ _stats__WEBPACK_IMPORTED_MODULE_9__.default),\n/* harmony export */ \"config\": () => (/* reexport safe */ _config__WEBPACK_IMPORTED_MODULE_10__.default),\n/* harmony export */ \"queue\": () => (/* reexport safe */ _queue__WEBPACK_IMPORTED_MODULE_11__.default)\n/* harmony export */ });\n/* harmony import */ var _auth__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./auth */ \"./src/store/modules/auth.js\");\n/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaults */ \"./src/store/modules/defaults.js\");\n/* harmony import */ var _history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./history */ \"./src/store/modules/history.js\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./notifications */ \"./src/store/modules/notifications.js\");\n/* harmony import */ var _provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./provider */ \"./src/store/modules/provider.js\");\n/* harmony import */ var _recommended__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./recommended */ \"./src/store/modules/recommended.js\");\n/* harmony import */ var _shows__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shows */ \"./src/store/modules/shows.js\");\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./schedule */ \"./src/store/modules/schedule.js\");\n/* harmony import */ var _socket__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./socket */ \"./src/store/modules/socket.js\");\n/* harmony import */ var _stats__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./stats */ \"./src/store/modules/stats.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config */ \"./src/store/modules/config/index.js\");\n/* harmony import */ var _queue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./queue */ \"./src/store/modules/queue.js\");\n\n\n\n\n\n\n\n\n\n\n\n // Export * from './configs/index.js';\n\n//# sourceURL=webpack://slim/./src/store/modules/index.js?");
/***/ }),
@@ -1515,6 +1559,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/store/modules/recommended.js":
+/*!******************************************!*\
+ !*** ./src/store/modules/recommended.js ***!
+ \******************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api */ \"./src/api.js\");\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../mutation-types */ \"./src/store/mutation-types.js\");\n\n\n\nconst IMDB = 10;\nconst ANIDB = 11;\nconst TRAKT = 12;\nconst ANILIST = 13;\nconst state = {\n shows: [],\n trakt: {\n removedFromMedusa: [],\n blacklistEnabled: false,\n availableLists: []\n },\n categories: {},\n externals: {\n IMDB,\n ANIDB,\n TRAKT,\n ANILIST\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_1__.ADD_RECOMMENDED_SHOW](state, show) {\n const existingShow = state.shows.find(({\n seriesId,\n source\n }) => Number(show.seriesId[show.source]) === Number(seriesId[source]));\n\n if (!existingShow) {\n console.debug(`Adding ${show.title || show.source + String(show.seriesId)} as it wasn't found in the shows array`, show);\n state.shows.push(show);\n return;\n } // Merge new recommended show object over old one\n // this allows detailed queries to update the record\n // without the non-detailed removing the extra data\n\n\n console.debug(`Found ${show.title || show.source + String(show.seriesId)} in shows array attempting merge`);\n const newShow = { ...existingShow,\n ...show\n }; // Update state\n\n vue__WEBPACK_IMPORTED_MODULE_2__.default.set(state.shows, state.shows.indexOf(existingShow), newShow);\n console.debug(`Merged ${newShow.title || newShow.source + String(newShow.seriesId)}`, newShow);\n },\n\n [_mutation_types__WEBPACK_IMPORTED_MODULE_1__.SET_RECOMMENDED_SHOWS](state, data) {\n state.trakt.removedFromMedusa = data.trakt.removedFromMedusa;\n state.trakt.blacklistEnabled = data.trakt.blacklistEnabled;\n state.trakt.availableLists = data.trakt.availableLists;\n state.categories = data.categories;\n state.shows = data.shows;\n }\n\n};\nconst getters = {};\nconst actions = {\n /**\n * Get recommended shows from API and commit them to the store.\n *\n * @param {*} context - The store context.\n * @param {String} identifier - Identifier for the recommended shows list.\n * @Param {String} params - Filter params, for getting a specific recommended list type.\n * @returns {(undefined|Promise)} undefined if `shows` was provided or the API response if not.\n */\n getRecommendedShows({\n commit\n }, identifier, params) {\n params = {};\n identifier = identifier ? identifier : '';\n return _api__WEBPACK_IMPORTED_MODULE_0__.api.get(`/recommended/${identifier}`, {\n params\n }).then(response => {\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_1__.SET_RECOMMENDED_SHOWS, response.data);\n });\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/recommended.js?");
+
+/***/ }),
+
/***/ "./src/store/modules/schedule.js":
/*!***************************************!*\
!*** ./src/store/modules/schedule.js ***!
@@ -1566,7 +1621,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LOGIN_PENDING\": () => (/* binding */ LOGIN_PENDING),\n/* harmony export */ \"LOGIN_SUCCESS\": () => (/* binding */ LOGIN_SUCCESS),\n/* harmony export */ \"LOGIN_FAILED\": () => (/* binding */ LOGIN_FAILED),\n/* harmony export */ \"LOGOUT\": () => (/* binding */ LOGOUT),\n/* harmony export */ \"REFRESH_TOKEN\": () => (/* binding */ REFRESH_TOKEN),\n/* harmony export */ \"REMOVE_AUTH_ERROR\": () => (/* binding */ REMOVE_AUTH_ERROR),\n/* harmony export */ \"SOCKET_ONOPEN\": () => (/* binding */ SOCKET_ONOPEN),\n/* harmony export */ \"SOCKET_ONCLOSE\": () => (/* binding */ SOCKET_ONCLOSE),\n/* harmony export */ \"SOCKET_ONERROR\": () => (/* binding */ SOCKET_ONERROR),\n/* harmony export */ \"SOCKET_ONMESSAGE\": () => (/* binding */ SOCKET_ONMESSAGE),\n/* harmony export */ \"SOCKET_RECONNECT\": () => (/* binding */ SOCKET_RECONNECT),\n/* harmony export */ \"SOCKET_RECONNECT_ERROR\": () => (/* binding */ SOCKET_RECONNECT_ERROR),\n/* harmony export */ \"NOTIFICATIONS_ENABLED\": () => (/* binding */ NOTIFICATIONS_ENABLED),\n/* harmony export */ \"NOTIFICATIONS_DISABLED\": () => (/* binding */ NOTIFICATIONS_DISABLED),\n/* harmony export */ \"ADD_CONFIG\": () => (/* binding */ ADD_CONFIG),\n/* harmony export */ \"UPDATE_LAYOUT_LOCAL\": () => (/* binding */ UPDATE_LAYOUT_LOCAL),\n/* harmony export */ \"ADD_HISTORY\": () => (/* binding */ ADD_HISTORY),\n/* harmony export */ \"ADD_HISTORY_ROW\": () => (/* binding */ ADD_HISTORY_ROW),\n/* harmony export */ \"ADD_SHOW\": () => (/* binding */ ADD_SHOW),\n/* harmony export */ \"ADD_SHOW_CONFIG\": () => (/* binding */ ADD_SHOW_CONFIG),\n/* harmony export */ \"ADD_SHOWS\": () => (/* binding */ ADD_SHOWS),\n/* harmony export */ \"ADD_SHOW_EPISODE\": () => (/* binding */ ADD_SHOW_EPISODE),\n/* harmony export */ \"ADD_STATS\": () => (/* binding */ ADD_STATS),\n/* harmony export */ \"ADD_REMOTE_BRANCHES\": () => (/* binding */ ADD_REMOTE_BRANCHES),\n/* harmony export */ \"SET_STATS\": () => (/* binding */ SET_STATS),\n/* harmony export */ \"SET_MAX_DOWNLOAD_COUNT\": () => (/* binding */ SET_MAX_DOWNLOAD_COUNT),\n/* harmony export */ \"ADD_SHOW_SCENE_EXCEPTION\": () => (/* binding */ ADD_SHOW_SCENE_EXCEPTION),\n/* harmony export */ \"REMOVE_SHOW_SCENE_EXCEPTION\": () => (/* binding */ REMOVE_SHOW_SCENE_EXCEPTION),\n/* harmony export */ \"ADD_SHOW_HISTORY\": () => (/* binding */ ADD_SHOW_HISTORY),\n/* harmony export */ \"ADD_SHOW_EPISODE_HISTORY\": () => (/* binding */ ADD_SHOW_EPISODE_HISTORY),\n/* harmony export */ \"ADD_PROVIDER\": () => (/* binding */ ADD_PROVIDER),\n/* harmony export */ \"ADD_PROVIDERS\": () => (/* binding */ ADD_PROVIDERS),\n/* harmony export */ \"ADD_PROVIDER_CACHE\": () => (/* binding */ ADD_PROVIDER_CACHE),\n/* harmony export */ \"ADD_SEARCH_RESULTS\": () => (/* binding */ ADD_SEARCH_RESULTS),\n/* harmony export */ \"ADD_QUEUE_ITEM\": () => (/* binding */ ADD_QUEUE_ITEM),\n/* harmony export */ \"ADD_SHOW_QUEUE_ITEM\": () => (/* binding */ ADD_SHOW_QUEUE_ITEM),\n/* harmony export */ \"REMOVE_SHOW\": () => (/* binding */ REMOVE_SHOW),\n/* harmony export */ \"REMOVE_PROVIDER\": () => (/* binding */ REMOVE_PROVIDER),\n/* harmony export */ \"UPDATE_SHOWLIST_DEFAULT\": () => (/* binding */ UPDATE_SHOWLIST_DEFAULT),\n/* harmony export */ \"ADD_SCHEDULE\": () => (/* binding */ ADD_SCHEDULE)\n/* harmony export */ });\nconst LOGIN_PENDING = '🔒 Logging in';\nconst LOGIN_SUCCESS = '🔒 ✅ Login Successful';\nconst LOGIN_FAILED = '🔒 ❌ Login Failed';\nconst LOGOUT = '🔒 Logout';\nconst REFRESH_TOKEN = '🔒 Refresh Token';\nconst REMOVE_AUTH_ERROR = '🔒 Remove Auth Error';\nconst SOCKET_ONOPEN = '🔗 ✅ WebSocket connected';\nconst SOCKET_ONCLOSE = '🔗 ❌ WebSocket disconnected';\nconst SOCKET_ONERROR = '🔗 ❌ WebSocket error';\nconst SOCKET_ONMESSAGE = '🔗 ✉️ 📥 WebSocket message received';\nconst SOCKET_RECONNECT = '🔗 🔃 WebSocket reconnecting';\nconst SOCKET_RECONNECT_ERROR = '🔗 🔃 ❌ WebSocket reconnection attempt failed';\nconst NOTIFICATIONS_ENABLED = '🔔 Notifications Enabled';\nconst NOTIFICATIONS_DISABLED = '🔔 Notifications Disabled';\nconst ADD_CONFIG = '⚙️ Config added to store';\nconst UPDATE_LAYOUT_LOCAL = '⚙️ Local layout updated in store';\nconst ADD_REMOTE_BRANCHES = '⚙️ Add git remote branches to store';\nconst ADD_SHOW = '📺 Show added to store';\nconst ADD_SHOW_CONFIG = '📺 Show config updated in store';\nconst ADD_SHOWS = '📺 Multiple Shows added to store in bulk';\nconst ADD_SHOW_EPISODE = '📺 Shows season with episodes added to store';\nconst ADD_STATS = 'ℹ️ Statistics added to store';\nconst SET_STATS = 'SET_STATS';\nconst SET_MAX_DOWNLOAD_COUNT = 'SET_MAX_DOWNLOAD_COUNT';\nconst ADD_SHOW_SCENE_EXCEPTION = '📺 Add a scene exception';\nconst REMOVE_SHOW_SCENE_EXCEPTION = '📺 Remove a scene exception';\nconst ADD_HISTORY = '📺 History added to store';\nconst ADD_HISTORY_ROW = '📺 History row added to store';\nconst ADD_SHOW_HISTORY = '📺 Show specific History added to store';\nconst ADD_SHOW_EPISODE_HISTORY = \"📺 Show's episode specific History added to store\";\nconst ADD_PROVIDER = '⛽ Provider added to store';\nconst ADD_PROVIDERS = '⛽ Provider list added to store';\nconst ADD_PROVIDER_CACHE = '⛽ Provider cache results added to store';\nconst ADD_SEARCH_RESULTS = '⛽ New search results added for provider';\nconst ADD_QUEUE_ITEM = '🔍 Search queue item updated';\nconst ADD_SHOW_QUEUE_ITEM = '📺 Show queue item added to store';\nconst REMOVE_SHOW = '📺 Show removed from store';\nconst REMOVE_PROVIDER = '⛽ Provider removed';\nconst UPDATE_SHOWLIST_DEFAULT = '⚙️ Anime config showlist default updated';\nconst ADD_SCHEDULE = '📅 Schedule information added';\n\n\n//# sourceURL=webpack://slim/./src/store/mutation-types.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LOGIN_PENDING\": () => (/* binding */ LOGIN_PENDING),\n/* harmony export */ \"LOGIN_SUCCESS\": () => (/* binding */ LOGIN_SUCCESS),\n/* harmony export */ \"LOGIN_FAILED\": () => (/* binding */ LOGIN_FAILED),\n/* harmony export */ \"LOGOUT\": () => (/* binding */ LOGOUT),\n/* harmony export */ \"REFRESH_TOKEN\": () => (/* binding */ REFRESH_TOKEN),\n/* harmony export */ \"REMOVE_AUTH_ERROR\": () => (/* binding */ REMOVE_AUTH_ERROR),\n/* harmony export */ \"SOCKET_ONOPEN\": () => (/* binding */ SOCKET_ONOPEN),\n/* harmony export */ \"SOCKET_ONCLOSE\": () => (/* binding */ SOCKET_ONCLOSE),\n/* harmony export */ \"SOCKET_ONERROR\": () => (/* binding */ SOCKET_ONERROR),\n/* harmony export */ \"SOCKET_ONMESSAGE\": () => (/* binding */ SOCKET_ONMESSAGE),\n/* harmony export */ \"SOCKET_RECONNECT\": () => (/* binding */ SOCKET_RECONNECT),\n/* harmony export */ \"SOCKET_RECONNECT_ERROR\": () => (/* binding */ SOCKET_RECONNECT_ERROR),\n/* harmony export */ \"NOTIFICATIONS_ENABLED\": () => (/* binding */ NOTIFICATIONS_ENABLED),\n/* harmony export */ \"NOTIFICATIONS_DISABLED\": () => (/* binding */ NOTIFICATIONS_DISABLED),\n/* harmony export */ \"ADD_CONFIG\": () => (/* binding */ ADD_CONFIG),\n/* harmony export */ \"UPDATE_LAYOUT_LOCAL\": () => (/* binding */ UPDATE_LAYOUT_LOCAL),\n/* harmony export */ \"ADD_HISTORY\": () => (/* binding */ ADD_HISTORY),\n/* harmony export */ \"ADD_HISTORY_ROW\": () => (/* binding */ ADD_HISTORY_ROW),\n/* harmony export */ \"ADD_SHOW\": () => (/* binding */ ADD_SHOW),\n/* harmony export */ \"ADD_STATS\": () => (/* binding */ ADD_STATS),\n/* harmony export */ \"ADD_SHOW_CONFIG\": () => (/* binding */ ADD_SHOW_CONFIG),\n/* harmony export */ \"ADD_RECOMMENDED_SHOW\": () => (/* binding */ ADD_RECOMMENDED_SHOW),\n/* harmony export */ \"SET_RECOMMENDED_SHOWS\": () => (/* binding */ SET_RECOMMENDED_SHOWS),\n/* harmony export */ \"ADD_SHOWS\": () => (/* binding */ ADD_SHOWS),\n/* harmony export */ \"ADD_SHOW_EPISODE\": () => (/* binding */ ADD_SHOW_EPISODE),\n/* harmony export */ \"ADD_REMOTE_BRANCHES\": () => (/* binding */ ADD_REMOTE_BRANCHES),\n/* harmony export */ \"SET_STATS\": () => (/* binding */ SET_STATS),\n/* harmony export */ \"SET_MAX_DOWNLOAD_COUNT\": () => (/* binding */ SET_MAX_DOWNLOAD_COUNT),\n/* harmony export */ \"ADD_SHOW_SCENE_EXCEPTION\": () => (/* binding */ ADD_SHOW_SCENE_EXCEPTION),\n/* harmony export */ \"REMOVE_SHOW_SCENE_EXCEPTION\": () => (/* binding */ REMOVE_SHOW_SCENE_EXCEPTION),\n/* harmony export */ \"ADD_SHOW_HISTORY\": () => (/* binding */ ADD_SHOW_HISTORY),\n/* harmony export */ \"ADD_SHOW_EPISODE_HISTORY\": () => (/* binding */ ADD_SHOW_EPISODE_HISTORY),\n/* harmony export */ \"ADD_PROVIDER\": () => (/* binding */ ADD_PROVIDER),\n/* harmony export */ \"ADD_PROVIDERS\": () => (/* binding */ ADD_PROVIDERS),\n/* harmony export */ \"ADD_PROVIDER_CACHE\": () => (/* binding */ ADD_PROVIDER_CACHE),\n/* harmony export */ \"ADD_SEARCH_RESULTS\": () => (/* binding */ ADD_SEARCH_RESULTS),\n/* harmony export */ \"ADD_QUEUE_ITEM\": () => (/* binding */ ADD_QUEUE_ITEM),\n/* harmony export */ \"ADD_SHOW_QUEUE_ITEM\": () => (/* binding */ ADD_SHOW_QUEUE_ITEM),\n/* harmony export */ \"REMOVE_SHOW\": () => (/* binding */ REMOVE_SHOW),\n/* harmony export */ \"REMOVE_PROVIDER\": () => (/* binding */ REMOVE_PROVIDER),\n/* harmony export */ \"UPDATE_SHOWLIST_DEFAULT\": () => (/* binding */ UPDATE_SHOWLIST_DEFAULT),\n/* harmony export */ \"ADD_SCHEDULE\": () => (/* binding */ ADD_SCHEDULE)\n/* harmony export */ });\nconst LOGIN_PENDING = '🔒 Logging in';\nconst LOGIN_SUCCESS = '🔒 ✅ Login Successful';\nconst LOGIN_FAILED = '🔒 ❌ Login Failed';\nconst LOGOUT = '🔒 Logout';\nconst REFRESH_TOKEN = '🔒 Refresh Token';\nconst REMOVE_AUTH_ERROR = '🔒 Remove Auth Error';\nconst SOCKET_ONOPEN = '🔗 ✅ WebSocket connected';\nconst SOCKET_ONCLOSE = '🔗 ❌ WebSocket disconnected';\nconst SOCKET_ONERROR = '🔗 ❌ WebSocket error';\nconst SOCKET_ONMESSAGE = '🔗 ✉️ 📥 WebSocket message received';\nconst SOCKET_RECONNECT = '🔗 🔃 WebSocket reconnecting';\nconst SOCKET_RECONNECT_ERROR = '🔗 🔃 ❌ WebSocket reconnection attempt failed';\nconst NOTIFICATIONS_ENABLED = '🔔 Notifications Enabled';\nconst NOTIFICATIONS_DISABLED = '🔔 Notifications Disabled';\nconst ADD_CONFIG = '⚙️ Config added to store';\nconst UPDATE_LAYOUT_LOCAL = '⚙️ Local layout updated in store';\nconst ADD_REMOTE_BRANCHES = '⚙️ Add git remote branches to store';\nconst ADD_SHOW = '📺 Show added to store';\nconst ADD_SHOW_CONFIG = '📺 Show config updated in store';\nconst ADD_SHOWS = '📺 Multiple Shows added to store in bulk';\nconst ADD_SHOW_EPISODE = '📺 Shows season with episodes added to store';\nconst ADD_STATS = 'ℹ️ Statistics added to store';\nconst ADD_RECOMMENDED_SHOW = '📺 Recommended Show added to store';\nconst SET_RECOMMENDED_SHOWS = '📺 Recommended Shows added to store';\nconst SET_STATS = 'SET_STATS';\nconst SET_MAX_DOWNLOAD_COUNT = 'SET_MAX_DOWNLOAD_COUNT';\nconst ADD_SHOW_SCENE_EXCEPTION = '📺 Add a scene exception';\nconst REMOVE_SHOW_SCENE_EXCEPTION = '📺 Remove a scene exception';\nconst ADD_HISTORY = '📺 History added to store';\nconst ADD_HISTORY_ROW = '📺 History row added to store';\nconst ADD_SHOW_HISTORY = '📺 Show specific History added to store';\nconst ADD_SHOW_EPISODE_HISTORY = \"📺 Show's episode specific History added to store\";\nconst ADD_PROVIDER = '⛽ Provider added to store';\nconst ADD_PROVIDERS = '⛽ Provider list added to store';\nconst ADD_PROVIDER_CACHE = '⛽ Provider cache results added to store';\nconst ADD_SEARCH_RESULTS = '⛽ New search results added for provider';\nconst ADD_QUEUE_ITEM = '🔍 Search queue item updated';\nconst ADD_SHOW_QUEUE_ITEM = '📺 Show queue item added to store';\nconst REMOVE_SHOW = '📺 Show removed from store';\nconst REMOVE_PROVIDER = '⛽ Provider removed';\nconst UPDATE_SHOWLIST_DEFAULT = '⚙️ Anime config showlist default updated';\nconst ADD_SCHEDULE = '📅 Schedule information added';\n\n\n//# sourceURL=webpack://slim/./src/store/mutation-types.js?");
/***/ }),
@@ -1659,7 +1714,7 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
\****************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
-eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/*\\n@NOTE: This fixes the header blocking elements when using a hash link\\ne.g. displayShow?showslug=tvdb83462#season-5\\n*/\\n[false-link]::before {\\n content: '';\\n display: block;\\n position: absolute;\\n height: 100px;\\n margin-top: -100px;\\n z-index: -100;\\n}\\n.router-link,\\n.router-link-active {\\n cursor: pointer;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/app-link.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3%5B0%5D.rules%5B0%5D.use%5B1%5D!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/*\\n@NOTE: This fixes the header blocking elements when using a hash link\\ne.g. displayShow?showslug=tvdb83462#season-5\\n*/\\n[false-link]::before {\\n content: '';\\n display: block;\\n position: absolute;\\n height: 100px;\\n margin-top: -100px;\\n z-index: -100;\\n}\\n.router-link,\\n.router-link-active {\\n cursor: pointer;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/app-link.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3%5B0%5D.rules%5B0%5D.use%5B1%5D!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -1863,6 +1918,16 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
/***/ }),
+/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css&":
+/*!**************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css& ***!
+ \**************************************************************************************************************************************************************************************************************************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nul[data-v-38f4c8dd] {\\n padding-left: 0;\\n}\\nli[data-v-38f4c8dd] {\\n list-style-type: none;\\n}\\n.trakt-list-group[data-v-38f4c8dd] {\\n display: inline-flex;\\n height: 25px;\\n}\\ninput[data-v-38f4c8dd] {\\n display: inline-block;\\n box-sizing: border-box;\\n}\\ninput.available-list[data-v-38f4c8dd] {\\n height: 22px;\\n}\\ninput[type=checkbox][data-v-38f4c8dd] {\\n width: 20px;\\n height: 20px;\\n}\\n.max-width[data-v-38f4c8dd] {\\n max-width: 450px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3%5B0%5D.rules%5B0%5D.use%5B1%5D!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/show-selector.vue?vue&type=style&index=0&lang=css&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/show-selector.vue?vue&type=style&index=0&lang=css& ***!
@@ -1943,6 +2008,16 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
/***/ }),
+/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css&":
+/*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css& ***!
+ \***************************************************************************************************************************************************************************************************************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.recommended-list span[data-v-30b442de] {\\n cursor: pointer;\\n color: #337ab7;\\n text-decoration: none;\\n}\\n.recommended-list span[data-v-30b442de]:focus,\\n.recommended-list span[data-v-30b442de]:hover {\\n text-decoration: underline;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3%5B0%5D.rules%5B0%5D.use%5B1%5D!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/modals/existing-show-dialog.vue?vue&type=style&index=0&id=a2035302&scoped=true&lang=css&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/modals/existing-show-dialog.vue?vue&type=style&index=0&id=a2035302&scoped=true&lang=css& ***!
@@ -1973,6 +2048,26 @@ eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../.
/***/ }),
+/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css&":
+/*!******************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css& ***!
+ \******************************************************************************************************************************************************************************************************************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.tag-container[data-v-61ca7b8f] {\\n opacity: 0;\\n position: absolute;\\n top: 3px;\\n right: 0;\\n -webkit-transition: opacity 0.2s ease-in-out;\\n -moz-transition: opacity 0.2s ease-in-out;\\n -ms-transition: opacity 0.2s ease-in-out;\\n -o-transition: opacity 0.2s ease-in-out;\\n transition: opacity 0.2s ease-in-out;\\n}\\n.recommended-image[data-v-61ca7b8f]:hover {\\n opacity: 0.9;\\n}\\n.recommended-image:hover .tag-container[data-v-61ca7b8f] {\\n display: block;\\n opacity: 0.9;\\n}\\nul.genre-tags[data-v-61ca7b8f] {\\n margin-right: 2px;\\n}\\nul.genre-tags > li[data-v-61ca7b8f] {\\n margin-right: 1px;\\n margin-bottom: 2px;\\n padding: 2px 4px;\\n background: rgb(21, 82, 143);\\n border-radius: 1px;\\n border: 1px solid rgb(17, 17, 17);\\n color: rgb(255, 255, 255);\\n font: 14px/18px \\\"Open Sans\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, Geneva, sans-serif;\\n text-shadow: 0 1px rgb(0 0 0 / 80%);\\n float: right;\\n list-style: none;\\n}\\nselect.max-width[data-v-61ca7b8f] {\\n max-width: 430px;\\n}\\n.plot-overlay[data-v-61ca7b8f] {\\n opacity: 0.9;\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n bottom: 0;\\n overflow-y: auto;\\n background-color: rgb(51, 51, 51);\\n scrollbar-color: rgb(65, 0, 181) darkgrey;\\n scrollbar-width: thin;\\n}\\n.plot-overlay > span[data-v-61ca7b8f] {\\n padding: 2px 5px;\\n height: 100%;\\n display: block;\\n font-size: 11px;\\n}\\n.plot-overlay[data-v-61ca7b8f]::-webkit-scrollbar {\\n width: 6px; /* width of the entire scrollbar */\\n}\\n.plot-overlay[data-v-61ca7b8f]::-webkit-scrollbar-track {\\n background: darkgrey; /* color of the tracking area */\\n}\\n.plot-overlay[data-v-61ca7b8f]::-webkit-scrollbar-thumb {\\n background-color: rgb(65, 0, 181); /* color of the scroll thumb */\\n border-radius: 1px; /* roundness of the scroll thumb */\\n border: 0 solid rgb(5, 36, 249); /* creates padding around scroll thumb */\\n}\\n.recommended-image[data-v-61ca7b8f] {\\n position: relative;\\n overflow: hidden;\\n}\\n.recommended-image[data-v-61ca7b8f] .show-image {\\n height: 100%;\\n}\\n.show-image[data-v-61ca7b8f] {\\n height: 100%;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n}\\n.toggle-plot[data-v-61ca7b8f] {\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: 9999;\\n text-decoration: underline;\\n cursor: pointer;\\n background-color: rgb(51, 51, 51);\\n padding: 0 2px;\\n}\\n.plot-enter-active[data-v-61ca7b8f],\\n.plot-leave-active[data-v-61ca7b8f] {\\n -moz-transition-duration: 0.3s;\\n -webkit-transition-duration: 0.3s;\\n -o-transition-duration: 0.3s;\\n transition-duration: 0.3s;\\n -moz-transition-timing-function: ease-in;\\n -webkit-transition-timing-function: ease-in;\\n -o-transition-timing-function: ease-in;\\n transition-timing-function: ease-in;\\n}\\n.plot-enter-to[data-v-61ca7b8f],\\n.plot-leave[data-v-61ca7b8f] {\\n bottom: 0;\\n}\\n.plot-enter[data-v-61ca7b8f],\\n.plot-leave-to[data-v-61ca7b8f] {\\n bottom: -100%;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n\n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3%5B0%5D.rules%5B0%5D.use%5B1%5D!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
+/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css&":
+/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css& ***!
+ \***********************************************************************************************************************************************************************************************************************************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.trakt-auth-container[data-v-7226820a] {\\n padding: 10px;\\n border: 1px solid rgb(255 255 255);\\n box-shadow: 5px 5px dimgrey;\\n}\\n.trakt-auth-container > .close-container[data-v-7226820a] {\\n position: absolute;\\n top: -24px;\\n right: 15px;\\n color: red;\\n}\\nspan.trakt-warning[data-v-7226820a] {\\n margin: 0 0 14px 0;\\n display: block;\\n color: red;\\n}\\n\\n\", \"\"]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___;\n\n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3%5B0%5D.rules%5B0%5D.use%5B1%5D!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/root-dirs.vue?vue&type=style&index=0&lang=css&":
/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/root-dirs.vue?vue&type=style&index=0&lang=css& ***!
@@ -2619,6 +2714,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/helpers/select-trakt-lists.vue":
+/*!*******************************************************!*\
+ !*** ./src/components/helpers/select-trakt-lists.vue ***!
+ \*******************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _select_trakt_lists_vue_vue_type_template_id_38f4c8dd_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true& */ \"./src/components/helpers/select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true&\");\n/* harmony import */ var _select_trakt_lists_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./select-trakt-lists.vue?vue&type=script&lang=js& */ \"./src/components/helpers/select-trakt-lists.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _select_trakt_lists_vue_vue_type_style_index_0_id_38f4c8dd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css& */ \"./src/components/helpers/select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__.default)(\n _select_trakt_lists_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _select_trakt_lists_vue_vue_type_template_id_38f4c8dd_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _select_trakt_lists_vue_vue_type_template_id_38f4c8dd_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"38f4c8dd\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/helpers/select-trakt-lists.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?");
+
+/***/ }),
+
/***/ "./src/components/helpers/show-selector.vue":
/*!**************************************************!*\
!*** ./src/components/helpers/show-selector.vue ***!
@@ -2663,6 +2769,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/helpers/trakt-authentication.vue":
+/*!*********************************************************!*\
+ !*** ./src/components/helpers/trakt-authentication.vue ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _trakt_authentication_vue_vue_type_template_id_cd53d81a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true& */ \"./src/components/helpers/trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true&\");\n/* harmony import */ var _trakt_authentication_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./trakt-authentication.vue?vue&type=script&lang=js& */ \"./src/components/helpers/trakt-authentication.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__.default)(\n _trakt_authentication_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _trakt_authentication_vue_vue_type_template_id_cd53d81a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _trakt_authentication_vue_vue_type_template_id_cd53d81a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"cd53d81a\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/helpers/trakt-authentication.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://slim/./src/components/helpers/trakt-authentication.vue?");
+
+/***/ }),
+
/***/ "./src/components/history-compact.vue":
/*!********************************************!*\
!*** ./src/components/history-compact.vue ***!
@@ -2758,7 +2875,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _manage_searches_vue_vue_type_template_id_30b442de_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./manage-searches.vue?vue&type=template&id=30b442de&scoped=true& */ \"./src/components/manage-searches.vue?vue&type=template&id=30b442de&scoped=true&\");\n/* harmony import */ var _manage_searches_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./manage-searches.vue?vue&type=script&lang=js& */ \"./src/components/manage-searches.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n;\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__.default)(\n _manage_searches_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _manage_searches_vue_vue_type_template_id_30b442de_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _manage_searches_vue_vue_type_template_id_30b442de_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"30b442de\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/manage-searches.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _manage_searches_vue_vue_type_template_id_30b442de_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./manage-searches.vue?vue&type=template&id=30b442de&scoped=true& */ \"./src/components/manage-searches.vue?vue&type=template&id=30b442de&scoped=true&\");\n/* harmony import */ var _manage_searches_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./manage-searches.vue?vue&type=script&lang=js& */ \"./src/components/manage-searches.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _manage_searches_vue_vue_type_style_index_0_id_30b442de_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css& */ \"./src/components/manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__.default)(\n _manage_searches_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _manage_searches_vue_vue_type_template_id_30b442de_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _manage_searches_vue_vue_type_template_id_30b442de_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"30b442de\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/manage-searches.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?");
/***/ }),
@@ -2806,6 +2923,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/recommended-poster.vue":
+/*!***********************************************!*\
+ !*** ./src/components/recommended-poster.vue ***!
+ \***********************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _recommended_poster_vue_vue_type_template_id_61ca7b8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true& */ \"./src/components/recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true&\");\n/* harmony import */ var _recommended_poster_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recommended-poster.vue?vue&type=script&lang=js& */ \"./src/components/recommended-poster.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _recommended_poster_vue_vue_type_style_index_0_id_61ca7b8f_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css& */ \"./src/components/recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__.default)(\n _recommended_poster_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _recommended_poster_vue_vue_type_template_id_61ca7b8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _recommended_poster_vue_vue_type_template_id_61ca7b8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"61ca7b8f\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/recommended-poster.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?");
+
+/***/ }),
+
+/***/ "./src/components/recommended.vue":
+/*!****************************************!*\
+ !*** ./src/components/recommended.vue ***!
+ \****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _recommended_vue_vue_type_template_id_7226820a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./recommended.vue?vue&type=template&id=7226820a&scoped=true& */ \"./src/components/recommended.vue?vue&type=template&id=7226820a&scoped=true&\");\n/* harmony import */ var _recommended_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recommended.vue?vue&type=script&lang=js& */ \"./src/components/recommended.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _recommended_vue_vue_type_style_index_0_id_7226820a_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css& */ \"./src/components/recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n;\n\n\n/* normalize component */\n\nvar component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__.default)(\n _recommended_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__.default,\n _recommended_vue_vue_type_template_id_7226820a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render,\n _recommended_vue_vue_type_template_id_7226820a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,\n false,\n null,\n \"7226820a\",\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/components/recommended.vue\"\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports);\n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?");
+
+/***/ }),
+
/***/ "./src/components/restart.vue":
/*!************************************!*\
!*** ./src/components/restart.vue ***!
@@ -3532,6 +3671,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/helpers/select-trakt-lists.vue?vue&type=script&lang=js&":
+/*!********************************************************************************!*\
+ !*** ./src/components/helpers/select-trakt-lists.vue?vue&type=script&lang=js& ***!
+ \********************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-trakt-lists.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=script&lang=js&\");\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.default); \n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?");
+
+/***/ }),
+
/***/ "./src/components/helpers/show-selector.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
!*** ./src/components/helpers/show-selector.vue?vue&type=script&lang=js& ***!
@@ -3576,6 +3726,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/helpers/trakt-authentication.vue?vue&type=script&lang=js&":
+/*!**********************************************************************************!*\
+ !*** ./src/components/helpers/trakt-authentication.vue?vue&type=script&lang=js& ***!
+ \**********************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_trakt_authentication_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./trakt-authentication.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/trakt-authentication.vue?vue&type=script&lang=js&\");\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_trakt_authentication_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.default); \n\n//# sourceURL=webpack://slim/./src/components/helpers/trakt-authentication.vue?");
+
+/***/ }),
+
/***/ "./src/components/history-compact.vue?vue&type=script&lang=js&":
/*!*********************************************************************!*\
!*** ./src/components/history-compact.vue?vue&type=script&lang=js& ***!
@@ -3719,6 +3880,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/recommended-poster.vue?vue&type=script&lang=js&":
+/*!************************************************************************!*\
+ !*** ./src/components/recommended-poster.vue?vue&type=script&lang=js& ***!
+ \************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./recommended-poster.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=script&lang=js&\");\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.default); \n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?");
+
+/***/ }),
+
+/***/ "./src/components/recommended.vue?vue&type=script&lang=js&":
+/*!*****************************************************************!*\
+ !*** ./src/components/recommended.vue?vue&type=script&lang=js& ***!
+ \*****************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./recommended.vue?vue&type=script&lang=js& */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-1[0].rules[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=script&lang=js&\");\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_1_0_rules_0_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__.default); \n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?");
+
+/***/ }),
+
/***/ "./src/components/restart.vue?vue&type=script&lang=js&":
/*!*************************************************************!*\
!*** ./src/components/restart.vue?vue&type=script&lang=js& ***!
@@ -4445,6 +4628,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/helpers/select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true&":
+/*!**************************************************************************************************!*\
+ !*** ./src/components/helpers/select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true& ***!
+ \**************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_template_id_38f4c8dd_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render),\n/* harmony export */ \"staticRenderFns\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_template_id_38f4c8dd_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)\n/* harmony export */ });\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_template_id_38f4c8dd_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true&\");\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?");
+
+/***/ }),
+
/***/ "./src/components/helpers/show-selector.vue?vue&type=template&id=6e81af76&":
/*!*********************************************************************************!*\
!*** ./src/components/helpers/show-selector.vue?vue&type=template&id=6e81af76& ***!
@@ -4489,6 +4683,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/helpers/trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true&":
+/*!****************************************************************************************************!*\
+ !*** ./src/components/helpers/trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true& ***!
+ \****************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_trakt_authentication_vue_vue_type_template_id_cd53d81a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render),\n/* harmony export */ \"staticRenderFns\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_trakt_authentication_vue_vue_type_template_id_cd53d81a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)\n/* harmony export */ });\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_trakt_authentication_vue_vue_type_template_id_cd53d81a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true&\");\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/trakt-authentication.vue?");
+
+/***/ }),
+
/***/ "./src/components/history-compact.vue?vue&type=template&id=899ba7ec&scoped=true&":
/*!***************************************************************************************!*\
!*** ./src/components/history-compact.vue?vue&type=template&id=899ba7ec&scoped=true& ***!
@@ -4632,6 +4837,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./src/components/recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true&":
+/*!******************************************************************************************!*\
+ !*** ./src/components/recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true& ***!
+ \******************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_template_id_61ca7b8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render),\n/* harmony export */ \"staticRenderFns\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_template_id_61ca7b8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)\n/* harmony export */ });\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_template_id_61ca7b8f_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true&\");\n\n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?");
+
+/***/ }),
+
+/***/ "./src/components/recommended.vue?vue&type=template&id=7226820a&scoped=true&":
+/*!***********************************************************************************!*\
+ !*** ./src/components/recommended.vue?vue&type=template&id=7226820a&scoped=true& ***!
+ \***********************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_template_id_7226820a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.render),\n/* harmony export */ \"staticRenderFns\": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_template_id_7226820a_scoped_true___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns)\n/* harmony export */ });\n/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_template_id_7226820a_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./recommended.vue?vue&type=template&id=7226820a&scoped=true& */ \"./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=template&id=7226820a&scoped=true&\");\n\n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?");
+
+/***/ }),
+
/***/ "./src/components/restart.vue?vue&type=template&id=625a88af&":
/*!*******************************************************************!*\
!*** ./src/components/restart.vue?vue&type=template&id=625a88af& ***!
@@ -5149,6 +5376,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
/***/ }),
+/***/ "./src/components/helpers/select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css&":
+/*!****************************************************************************************************************!*\
+ !*** ./src/components/helpers/select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css& ***!
+ \****************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_style_index_0_id_38f4c8dd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css& */ \"./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=style&index=0&id=38f4c8dd&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_style_index_0_id_38f4c8dd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_style_index_0_id_38f4c8dd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_style_index_0_id_38f4c8dd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_select_trakt_lists_vue_vue_type_style_index_0_id_38f4c8dd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?");
+
+/***/ }),
+
/***/ "./src/components/helpers/show-selector.vue?vue&type=style&index=0&lang=css&":
/*!***********************************************************************************!*\
!*** ./src/components/helpers/show-selector.vue?vue&type=style&index=0&lang=css& ***!
@@ -5237,6 +5475,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
/***/ }),
+/***/ "./src/components/manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css&":
+/*!*****************************************************************************************************!*\
+ !*** ./src/components/manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css& ***!
+ \*****************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_manage_searches_vue_vue_type_style_index_0_id_30b442de_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css& */ \"./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/manage-searches.vue?vue&type=style&index=0&id=30b442de&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_manage_searches_vue_vue_type_style_index_0_id_30b442de_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_manage_searches_vue_vue_type_style_index_0_id_30b442de_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_manage_searches_vue_vue_type_style_index_0_id_30b442de_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_manage_searches_vue_vue_type_style_index_0_id_30b442de_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?");
+
+/***/ }),
+
/***/ "./src/components/modals/existing-show-dialog.vue?vue&type=style&index=0&id=a2035302&scoped=true&lang=css&":
/*!*****************************************************************************************************************!*\
!*** ./src/components/modals/existing-show-dialog.vue?vue&type=style&index=0&id=a2035302&scoped=true&lang=css& ***!
@@ -5270,6 +5519,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
/***/ }),
+/***/ "./src/components/recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css&":
+/*!********************************************************************************************************!*\
+ !*** ./src/components/recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css& ***!
+ \********************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_style_index_0_id_61ca7b8f_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css& */ \"./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=style&index=0&id=61ca7b8f&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_style_index_0_id_61ca7b8f_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_style_index_0_id_61ca7b8f_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_style_index_0_id_61ca7b8f_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_poster_vue_vue_type_style_index_0_id_61ca7b8f_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?");
+
+/***/ }),
+
+/***/ "./src/components/recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css&":
+/*!*************************************************************************************************!*\
+ !*** ./src/components/recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css& ***!
+ \*************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_style_index_0_id_7226820a_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css& */ \"./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-3[0].rules[0].use[1]!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=style&index=0&id=7226820a&scoped=true&lang=css&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_style_index_0_id_7226820a_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_style_index_0_id_7226820a_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_style_index_0_id_7226820a_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_clonedRuleSet_3_0_rules_0_use_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_recommended_vue_vue_type_style_index_0_id_7226820a_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?");
+
+/***/ }),
+
/***/ "./src/components/root-dirs.vue?vue&type=style&index=0&lang=css&":
/*!***********************************************************************!*\
!*** ./src/components/root-dirs.vue?vue&type=style&index=0&lang=css& ***!
@@ -5519,7 +5790,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-genaral\" } },\n [\n _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"form\",\n {\n attrs: { id: \"configForm\", method: \"post\" },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.save()\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#misc\" } }, [\n _vm._v(\"Misc\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#interface\" } }, [\n _vm._v(\"Interface\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#advanced-settings\" } }, [\n _vm._v(\"Advanced Settings\")\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"misc\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Launch browser\",\n id: \"launch_browser\"\n },\n model: {\n value: _vm.general.launchBrowser,\n callback: function($$v) {\n _vm.$set(_vm.general, \"launchBrowser\", $$v)\n },\n expression: \"general.launchBrowser\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"open the Medusa home page on startup\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"default_page\",\n label: \"Initial page\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.defaultPage,\n expression: \"general.defaultPage\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"default_page\",\n name: \"default_page\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general,\n \"defaultPage\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.defaultPageOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\"when launching Medusa interface\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"trash_remove_show\",\n label: \"Send to trash for actions\"\n }\n },\n [\n _c(\n \"label\",\n {\n staticClass: \"nextline-block\",\n attrs: { for: \"trash_remove_show\" }\n },\n [\n _c(\"toggle-button\", {\n attrs: {\n width: 45,\n height: 22,\n id: \"trash_remove_show\",\n name: \"trash_remove_show\",\n sync: \"\"\n },\n model: {\n value: _vm.general.trashRemoveShow,\n callback: function($$v) {\n _vm.$set(\n _vm.general,\n \"trashRemoveShow\",\n $$v\n )\n },\n expression: \"general.trashRemoveShow\"\n }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n 'when using show \"Remove\" and delete files'\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n staticClass: \"nextline-block\",\n attrs: { for: \"trash_rotate_logs\" }\n },\n [\n _c(\"toggle-button\", {\n attrs: {\n width: 45,\n height: 22,\n id: \"trash_rotate_logs\",\n name: \"trash_rotate_logs\",\n sync: \"\"\n },\n model: {\n value: _vm.general.trashRotateLogs,\n callback: function($$v) {\n _vm.$set(\n _vm.general,\n \"trashRotateLogs\",\n $$v\n )\n },\n expression: \"general.trashRotateLogs\"\n }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"on scheduled deletes of the oldest log files\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"selected actions use trash (recycle bin) instead of the default permanent delete\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"config-textbox\", {\n attrs: {\n label: \"Location for Log files\",\n id: \"log_id\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.general.logs.actualLogDir,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"actualLogDir\", $$v)\n },\n expression: \"general.logs.actualLogDir\"\n }\n }),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Number of Log files saved\",\n id: \"log_nr\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.logs.nr,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"nr\", $$v)\n },\n expression: \"general.logs.nr\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"number of log files saved when rotating logs (default: 5) \"\n ),\n _c(\"b\", [_vm._v(\"(REQUIRES RESTART)\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Size of Log files saved\",\n id: \"log_size\",\n min: 0.5,\n step: 0.1\n },\n model: {\n value: _vm.general.logs.size,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"size\", $$v)\n },\n expression: \"general.logs.size\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"maximum size in MB of the log file (default: 1MB) \"\n ),\n _c(\"b\", [_vm._v(\"(REQUIRES RESTART)\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"show_root_dir\",\n label: \"Show root directories\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"where the files of shows are located\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"These changes are automatically saved!\")\n ]),\n _vm._v(\" \"),\n _c(\"root-dirs\")\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Append (year) to each show title\",\n id: \"add_title_year\"\n },\n model: {\n value: _vm.general.addTitleWithYear,\n callback: function($$v) {\n _vm.$set(_vm.general, \"addTitleWithYear\", $$v)\n },\n expression: \"general.addTitleWithYear\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Make sure that each show title is added with (year) appended to it\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The show title with year is only used for show folder creation as representation in the UI.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"show_root_dir\",\n label: \"Default Indexer Language\"\n }\n },\n [\n _c(\"language-select\", {\n ref: \"indexerLanguage\",\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n language: _vm.general.indexerDefaultLanguage,\n available: _vm.indexers.main.validLanguages.join(\n \",\"\n )\n },\n on: {\n \"update-language\": function($event) {\n _vm.general.indexerDefaultLanguage = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\"for adding shows and metadata providers\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Choose hour to update shows\",\n id: \"showupdate_hour\",\n min: 0,\n max: 23,\n step: 1\n },\n model: {\n value: _vm.general.showUpdateHour,\n callback: function($$v) {\n _vm.$set(_vm.general, \"showUpdateHour\", $$v)\n },\n expression: \"general.showUpdateHour\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"with information such as next air dates, show ended, etc. Use 15 for 3pm, 4 for 4am etc.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" minutes are randomized each time Medusa is started\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Timeout show indexer at\",\n id: \"indexer_timeout\",\n min: 10,\n step: 1\n },\n model: {\n value: _vm.general.indexerTimeout,\n callback: function($$v) {\n _vm.$set(_vm.general, \"indexerTimeout\", $$v)\n },\n expression: \"general.indexerTimeout\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"seconds of inactivity when finding new shows (default:20)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexer_default\",\n label: \"Use initial indexer set to\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.indexerDefault,\n expression: \"indexerDefault\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"indexer_default\",\n name: \"indexer_default\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.indexerDefault = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.indexerListOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable fallback to plex\",\n id: \"fallback_plex_enable\"\n },\n model: {\n value: _vm.general.plexFallBack.enable,\n callback: function($$v) {\n _vm.$set(\n _vm.general.plexFallBack,\n \"enable\",\n $$v\n )\n },\n expression: \"general.plexFallBack.enable\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Plex provides a tvdb mirror, that can be utilized when Tvdb's api is unavailable.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable fallback notifications\",\n id: \"fallback_plex_notifications\"\n },\n model: {\n value: _vm.general.plexFallBack.notifications,\n callback: function($$v) {\n _vm.$set(\n _vm.general.plexFallBack,\n \"notifications\",\n $$v\n )\n },\n expression: \"general.plexFallBack.notifications\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"When this settings has been enabled, you may receive frequent notifications when falling back to the plex mirror.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Timeout show indexer at\",\n id: \"Fallback duration\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.plexFallBack.timeout,\n callback: function($$v) {\n _vm.$set(\n _vm.general.plexFallBack,\n \"timeout\",\n $$v\n )\n },\n expression: \"general.plexFallBack.timeout\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Amount of hours after we try to revert back to the thetvdb.com api url (default:3).\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Check software updates\",\n id: \"version_notify\"\n },\n model: {\n value: _vm.general.versionNotify,\n callback: function($$v) {\n _vm.$set(_vm.general, \"versionNotify\", $$v)\n },\n expression: \"general.versionNotify\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"and display notifications when updates are available.\\n Checks are run on startup and at the frequency set below*\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Automatically update\",\n id: \"auto_update\"\n },\n model: {\n value: _vm.general.autoUpdate,\n callback: function($$v) {\n _vm.$set(_vm.general, \"autoUpdate\", $$v)\n },\n expression: \"general.autoUpdate\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"fetch and install software updates.\\n Updates are run on startup and in the background at the frequency set below*\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Check the server every*\",\n id: \"update_frequency duration\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.updateFrequency,\n callback: function($$v) {\n _vm.$set(_vm.general, \"updateFrequency\", $$v)\n },\n expression: \"general.updateFrequency\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"hours for software updates (default:1)\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Notify on software update\",\n id: \"notify_on_update\"\n },\n model: {\n value: _vm.general.notifyOnUpdate,\n callback: function($$v) {\n _vm.$set(_vm.general, \"notifyOnUpdate\", $$v)\n },\n expression: \"general.notifyOnUpdate\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"send a message to all enabled notifiers when Medusa has been updated\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"interface\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"theme_name\",\n label: \"Display theme\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.themeName,\n expression: \"layout.themeName\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: { id: \"theme_name\", name: \"theme_name\" },\n on: {\n change: [\n function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.layout,\n \"themeName\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n },\n function($event) {\n return _vm.changeTheme(\n _vm.layout.themeName\n )\n }\n ]\n }\n },\n _vm._l(_vm.availableThemesOptions, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use wider layout\",\n id: \"layout_wide\"\n },\n model: {\n value: _vm.layout.wide,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"wide\", $$v)\n },\n expression: \"layout.wide\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"uses all available space in the page\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Show fanart in the background\",\n id: \"fanart_background\"\n },\n model: {\n value: _vm.layout.fanartBackground,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"fanartBackground\", $$v)\n },\n expression: \"layout.fanartBackground\"\n }\n },\n [_c(\"p\", [_vm._v(\"on the show summary page\")])]\n ),\n _vm._v(\" \"),\n _vm.layout.fanartBackground\n ? _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Fanart transparency\",\n id: \"fanart_background_opacity duration\",\n step: 0.1,\n min: 0.1,\n max: 1.0\n },\n model: {\n value: _vm.layout.fanartBackgroundOpacity,\n callback: function($$v) {\n _vm.$set(\n _vm.layout,\n \"fanartBackgroundOpacity\",\n $$v\n )\n },\n expression: \"layout.fanartBackgroundOpacity\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Transparency of the fanart in the background\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Sort with 'The' 'A', 'An'\",\n id: \"sort_article\"\n },\n model: {\n value: _vm.layout.sortArticle,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"sortArticle\", $$v)\n },\n expression: \"layout.sortArticle\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'include articles (\"The\", \"A\", \"An\") when sorting show lists'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"show_list_order\",\n label: \"show lists\"\n }\n },\n [\n _c(\"sorted-select-list\", {\n attrs: {\n \"list-items\": _vm.layout.show.showListOrder\n },\n on: { change: _vm.saveShowListOrder }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Create and order different categories for your shows.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Split home in tabs\",\n id: \"split_home_in_tabs\"\n },\n model: {\n value: _vm.layout.splitHomeInTabs,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"splitHomeInTabs\", $$v)\n },\n expression: \"layout.splitHomeInTabs\"\n }\n },\n [\n _c(\"span\", { staticClass: \"component-desc\" }, [\n _vm._v(\"Use tabs when splitting show lists\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Missed episodes range\",\n id: \"coming_eps_missed_range duration\",\n step: 1,\n min: 7\n },\n model: {\n value: _vm.layout.comingEps.missedRange,\n callback: function($$v) {\n _vm.$set(\n _vm.layout.comingEps,\n \"missedRange\",\n $$v\n )\n },\n expression: \"layout.comingEps.missedRange\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Set the range in days of the missed episodes in the Schedule page\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Display fuzzy dates\",\n id: \"fuzzy_dating\"\n },\n model: {\n value: _vm.layout.fuzzyDating,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"fuzzyDating\", $$v)\n },\n expression: \"layout.fuzzyDating\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'move absolute dates into tooltips and display e.g. \"Last Thu\", \"On Tue\"'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Trim zero padding\",\n id: \"trim_zero\"\n },\n model: {\n value: _vm.layout.trimZero,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"trimZero\", $$v)\n },\n expression: \"layout.trimZero\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'remove the leading number \"0\" shown on hour of day, and date of month'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"date_preset\",\n label: \"Date style\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.dateStyle,\n expression: \"layout.dateStyle\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"date_preset\",\n name: \"date_preset\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.layout,\n \"dateStyle\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.datePresetOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"time_preset\",\n label: \"Time style\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.timeStyle,\n expression: \"layout.timeStyle\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"time_preset\",\n name: \"time_preset\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.layout,\n \"timeStyle\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.timePresetOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" seconds are only shown on the History page\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"timezone_display\",\n label: \"Timezone\"\n }\n },\n [\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.timezoneDisplay,\n expression: \"layout.timezoneDisplay\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"timezone_display_local\",\n id: \"timezone_display_local\",\n value: \"local\"\n },\n domProps: {\n checked: _vm._q(\n _vm.layout.timezoneDisplay,\n \"local\"\n )\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.layout,\n \"timezoneDisplay\",\n \"local\"\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"local\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.timezoneDisplay,\n expression: \"layout.timezoneDisplay\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"timezone_display_network\",\n id: \"timezone_display_network\",\n value: \"network\"\n },\n domProps: {\n checked: _vm._q(\n _vm.layout.timezoneDisplay,\n \"network\"\n )\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.layout,\n \"timezoneDisplay\",\n \"network\"\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"network\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"display dates and times in either your timezone or the shows network timezone\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Use local timezone to start searching for episodes minutes after show ends (depends on your dailysearch frequency)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Use table pagination\",\n id: \"show_pagination\"\n },\n model: {\n value: _vm.layout.show.pagination.enable,\n callback: function($$v) {\n _vm.$set(\n _vm.layout.show.pagination,\n \"enable\",\n $$v\n )\n },\n expression: \"layout.show.pagination.enable\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"API key\",\n id: \"api_key\",\n readonly: \"readonly\"\n },\n model: {\n value: _vm.general.webInterface.apiKey,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"apiKey\",\n $$v\n )\n },\n expression: \"general.webInterface.apiKey\"\n }\n },\n [\n _c(\"input\", {\n staticClass: \"btn-medusa btn-inline\",\n attrs: {\n type: \"button\",\n id: \"generate_new_apikey\",\n value: \"Generate\"\n },\n on: { click: _vm.generateApiKey }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"used to give 3rd party programs limited access to Medusa\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n [\n _vm._v(\n \"you can try all the features of the legacy API (v1) \"\n ),\n _c(\n \"app-link\",\n { attrs: { href: \"apibuilder/\" } },\n [_vm._v(\"here\")]\n )\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"HTTP logs\", id: \"web_log\" },\n model: {\n value: _vm.general.webInterface.log,\n callback: function($$v) {\n _vm.$set(_vm.general.webInterface, \"log\", $$v)\n },\n expression: \"general.webInterface.log\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable logs from the internal Tornado web server\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTP username\",\n id: \"web_username\",\n autocomplete: \"no\"\n },\n model: {\n value: _vm.general.webInterface.username,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"username\",\n $$v\n )\n },\n expression: \"general.webInterface.username\"\n }\n },\n [_c(\"p\", [_vm._v(\"set blank for no login\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTP password\",\n id: \"web_password\",\n type: \"password\",\n autocomplete: \"no\"\n },\n model: {\n value: _vm.general.webInterface.password,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"password\",\n $$v\n )\n },\n expression: \"general.webInterface.password\"\n }\n },\n [_c(\"p\", [_vm._v(\"blank = no authentication\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"HTTP port\",\n id: \"web_port\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.webInterface.port,\n callback: function($$v) {\n _vm.$set(_vm.general.webInterface, \"port\", $$v)\n },\n expression: \"general.webInterface.port\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"web port to browse and access Medusa (default:8081)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Notify on login\",\n id: \"notify_on_login\"\n },\n model: {\n value: _vm.general.webInterface.notifyOnLogin,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"notifyOnLogin\",\n $$v\n )\n },\n expression: \"general.webInterface.notifyOnLogin\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable to be notified when a new login happens in webserver\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Listen on IPv6\", id: \"web_ipv6\" },\n model: {\n value: _vm.general.webInterface.ipv6,\n callback: function($$v) {\n _vm.$set(_vm.general.webInterface, \"ipv6\", $$v)\n },\n expression: \"general.webInterface.ipv6\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable to be notified when a new login happens in webserver\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable HTTPS\",\n id: \"enable_https\"\n },\n model: {\n value: _vm.general.webInterface.httpsEnable,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"httpsEnable\",\n $$v\n )\n },\n expression: \"general.webInterface.httpsEnable\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable access to the web interface using a HTTPS address\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.webInterface.httpsEnable\n ? _c(\n \"div\",\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTPS certificate\",\n id: \"https_cert\"\n },\n model: {\n value: _vm.general.webInterface.httpsCert,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"httpsCert\",\n $$v\n )\n },\n expression:\n \"general.webInterface.httpsCert\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"file name or path to HTTPS certificate\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTPS key\",\n id: \"https_key\"\n },\n model: {\n value: _vm.general.webInterface.httpsKey,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"httpsKey\",\n $$v\n )\n },\n expression:\n \"general.webInterface.httpsKey\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"file name or path to HTTPS key\")\n ])\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Reverse proxy headers\",\n id: \"handle_reverse_proxy\"\n },\n model: {\n value:\n _vm.general.webInterface.handleReverseProxy,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"handleReverseProxy\",\n $$v\n )\n },\n expression:\n \"general.webInterface.handleReverseProxy\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"accept the following reverse proxy headers (advanced)...\"\n ),\n _c(\"br\"),\n _vm._v(\n \"(X-Forwarded-For, X-Forwarded-Host, and X-Forwarded-Proto)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTP web root\",\n id: \"web_root\",\n autocomplete: \"no\"\n },\n model: {\n value: _vm.general.webRoot,\n callback: function($$v) {\n _vm.$set(_vm.general, \"webRoot\", $$v)\n },\n expression: \"general.webRoot\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Set a base URL, for use in reverse proxies.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"blank = disabled\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Must restart to have effect. Keep in mind that any previously configured base URLs won't work, after this change.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"advanced-settings\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(5),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"cpu_presets\",\n label: \"CPU throttling\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.cpuPreset,\n expression: \"general.cpuPreset\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"cpu_presets\",\n name: \"cpu_presets\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general,\n \"cpuPreset\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.cpuPresetOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Normal (default). High is lower and Low is higher CPU use\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"Anonymous redirect\",\n id: \"anon_redirect\"\n },\n model: {\n value: _vm.general.anonRedirect,\n callback: function($$v) {\n _vm.$set(_vm.general, \"anonRedirect\", $$v)\n },\n expression: \"general.anonRedirect\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'backlink protection via anonymizer service, must end in \"?\"'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Verify SSL Certs\",\n id: \"ssl_verify\"\n },\n model: {\n value: _vm.general.sslVerify,\n callback: function($$v) {\n _vm.$set(_vm.general, \"sslVerify\", $$v)\n },\n expression: \"general.sslVerify\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Verify SSL Certificates (Disable this for broken SSL installs (Like QNAP))\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"SSL CA Bundle\",\n id: \"ssl_ca_bundle\"\n },\n model: {\n value: _vm.general.sslCaBundle,\n callback: function($$v) {\n _vm.$set(_vm.general, \"sslCaBundle\", $$v)\n },\n expression: \"general.sslCaBundle\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Path to an SSL CA Bundle. Will replace default bundle(certifi) with the one specified.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" This only apply to call made using Medusa's Requests implementation.\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"No Restart\", id: \"no_restart\" },\n model: {\n value: _vm.general.noRestart,\n callback: function($$v) {\n _vm.$set(_vm.general, \"noRestart\", $$v)\n },\n expression: \"general.noRestart\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Only shutdown when restarting Medusa.\\n Only select this when you have external software restarting Medusa automatically when it stops (like FireDaemon)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Encrypt passwords\",\n id: \"encryption_version\"\n },\n model: {\n value: _vm.general.encryptionVersion,\n callback: function($$v) {\n _vm.$set(_vm.general, \"encryptionVersion\", $$v)\n },\n expression: \"general.encryptionVersion\"\n }\n },\n [\n _c(\n \"p\",\n [\n _vm._v(\"in the \"),\n _c(\"code\", [_vm._v(\"config.ini\")]),\n _vm._v(\n \" file.\\n \"\n ),\n _c(\"b\", [_vm._v(\"Warning:\")]),\n _vm._v(\" Passwords must only contain \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters\"\n }\n },\n [_vm._v(\"ASCII characters\")]\n )\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Unprotected calendar\",\n id: \"calendar_unprotected\"\n },\n model: {\n value: _vm.general.calendarUnprotected,\n callback: function($$v) {\n _vm.$set(\n _vm.general,\n \"calendarUnprotected\",\n $$v\n )\n },\n expression: \"general.calendarUnprotected\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"allow subscribing to the calendar without user and password.\\n Some services like Google Calendar only work this way\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Google Calendar Icons\",\n id: \"calendar_icons\"\n },\n model: {\n value: _vm.general.calendarIcons,\n callback: function($$v) {\n _vm.$set(_vm.general, \"calendarIcons\", $$v)\n },\n expression: \"general.calendarIcons\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"show an icon next to exported calendar events in Google Calendar.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: { label: \"Proxy host\", id: \"proxy_setting\" },\n model: {\n value: _vm.general.proxySetting,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxySetting\", $$v)\n },\n expression: \"general.proxySetting\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"blank to disable or proxy to use when connecting to providers\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for providers\",\n id: \"proxy_providers\"\n },\n model: {\n value: _vm.general.proxyProviders,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyProviders\", $$v)\n },\n expression: \"general.proxyProviders\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting to providers (torrent & nzb)\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for indexers\",\n id: \"proxy_indexers\"\n },\n model: {\n value: _vm.general.proxyIndexers,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyIndexers\", $$v)\n },\n expression: \"general.proxyIndexers\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting to indexers (thetvdb, tmdb or tvmaze)\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for clients\",\n id: \"proxy_clients\"\n },\n model: {\n value: _vm.general.proxyClients,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyClients\", $$v)\n },\n expression: \"general.proxyClients\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting torrent or usenet clients (nzbGet excluded)\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for other sites\",\n id: \"proxy_others\"\n },\n model: {\n value: _vm.general.proxyOthers,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyOthers\", $$v)\n },\n expression: \"general.proxyOthers\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting to other sites.\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Skip Remove Detection\",\n id: \"skip_removed_files\"\n },\n model: {\n value: _vm.general.skipRemovedFiles,\n callback: function($$v) {\n _vm.$set(_vm.general, \"skipRemovedFiles\", $$v)\n },\n expression: \"general.skipRemovedFiles\"\n }\n },\n [\n _c(\"span\", [\n _c(\"p\", [\n _vm._v(\n \"Skip detection of removed files. If disabled the episode will be set to the default deleted status\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" This may mean Medusa misses renames as well\\n \"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"ep_default_deleted_status\",\n label: \"Default deleted episode status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.epDefaultDeletedStatus,\n expression: \"general.epDefaultDeletedStatus\"\n }\n ],\n staticClass:\n \"form-control input-sm margin-bottom-5\",\n attrs: {\n id: \"ep_default_deleted_status\",\n name: \"ep_default_deleted_status\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general,\n \"epDefaultDeletedStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n [\n _c(\n \"option\",\n { attrs: { disabled: \"\", value: \"\" } },\n [_vm._v(\"Please select a default status\")]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.defaultDeletedEpOptions, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Define the status to be set for media file that has been deleted.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Archived option will keep previous downloaded quality\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Example: Downloaded (1080p WEB-DL) ==> Archived (1080p WEB-DL)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable experimental features\",\n id: \"experimental\"\n },\n model: {\n value: _vm.general.experimental,\n callback: function($$v) {\n _vm.$set(_vm.general, \"experimental\", $$v)\n },\n expression: \"general.experimental\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"allow for using experimental features\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(6),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Enable debug\", id: \"debug\" },\n model: {\n value: _vm.general.logs.debug,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"debug\", $$v)\n },\n expression: \"general.logs.debug\"\n }\n },\n [_c(\"p\", [_vm._v(\"Enable debug logs\")])]\n ),\n _vm._v(\" \"),\n _vm.general.developer\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable DB debug\",\n id: \"dbdebug\"\n },\n model: {\n value: _vm.general.logs.dbDebug,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"dbDebug\", $$v)\n },\n expression: \"general.logs.dbDebug\"\n }\n },\n [_c(\"p\", [_vm._v(\"Enable DB debug logs\")])]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Subliminal logs\",\n id: \"subliminal_log\"\n },\n model: {\n value: _vm.general.logs.subliminalLog,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"subliminalLog\", $$v)\n },\n expression: \"general.logs.subliminalLog\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable logs from subliminal library (subtitles)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"privacy_level\",\n label: \"Privacy\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.logs.privacyLevel,\n expression: \"general.logs.privacyLevel\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"privacy_level\",\n name: \"privacy_level\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general.logs,\n \"privacyLevel\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.privacyLevelOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"\\n Set the level of log-filtering.\\n Normal (default).\\n \"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"custom_logs\",\n label:\n \"Overwrite log levels for overwritable logs\"\n }\n },\n [_c(\"custom-logs\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(7),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"github_remote_branches\",\n label: \"Branch version\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedBranch,\n expression: \"selectedBranch\"\n }\n ],\n staticClass:\n \"form-control input-sm margin-bottom-5\",\n attrs: {\n id: \"github_remote_branches\",\n name: \"github_remote_branches\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedBranch = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n [\n _c(\n \"option\",\n { attrs: { disabled: \"\", value: \"\" } },\n [_vm._v(\"Please select a branch\")]\n ),\n _vm._v(\" \"),\n _vm._l(\n _vm.githubRemoteBranchesOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }\n )\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa btn-inline\",\n staticStyle: { \"margin-left\": \"6px\" },\n attrs: {\n disabled: !_vm.gitRemoteBranches.length > 0,\n type: \"button\",\n id: \"branchCheckout\",\n value: \"Checkout Branch\"\n },\n on: { click: _vm.validateCheckoutBranch }\n }),\n _vm._v(\" \"),\n !_vm.gitRemoteBranches.length > 0\n ? _c(\n \"span\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _c(\"p\", [\n _vm._v(\"Error: No branches found.\")\n ])\n ]\n )\n : _c(\"p\", [\n _vm._v(\n \"select branch to use (restart required)\"\n )\n ]),\n _vm._v(\" \"),\n _vm.checkoutBranchMessage\n ? _c(\n \"p\",\n [\n _c(\"state-switch\", {\n attrs: {\n state: \"loading\",\n theme: _vm.layout.themeName\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(_vm._s(_vm.checkoutBranchMessage))\n ])\n ],\n 1\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"date_presets\",\n label: \"GitHub authentication type\"\n }\n },\n [\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.git.authType,\n expression: \"general.git.authType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"git_auth_type_basic\",\n id: \"git_auth_type_basic\"\n },\n domProps: {\n value: 0,\n checked: _vm._q(_vm.general.git.authType, 0)\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.general.git,\n \"authType\",\n 0\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"Username and password\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.git.authType,\n expression: \"general.git.authType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"git_auth_type_token\",\n id: \"git_auth_type_token\"\n },\n domProps: {\n value: 1,\n checked: _vm._q(_vm.general.git.authType, 1)\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.general.git,\n \"authType\",\n 1\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"Personal access token\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n 'You must use a personal access token if you\\'re using \"two-factor authentication\" on GitHub.'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.general.git.authType === 0,\n expression: \"general.git.authType === 0\"\n }\n ]\n },\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub username\",\n id: \"git_username\"\n },\n model: {\n value: _vm.general.git.username,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"username\", $$v)\n },\n expression: \"general.git.username\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"*** (REQUIRED FOR SUBMITTING ISSUES) ***\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub password\",\n id: \"git_password\",\n type: \"password\"\n },\n model: {\n value: _vm.general.git.password,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"password\", $$v)\n },\n expression: \"general.git.password\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"*** (REQUIRED FOR SUBMITTING ISSUES) ***\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.general.git.authType !== 0,\n expression: \"general.git.authType !== 0\"\n }\n ]\n },\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub personal access token\",\n id: \"git_token\",\n \"input-class\":\n \"display-inline margin-bottom-5\"\n },\n nativeOn: {\n focus: function($event) {\n return $event.target.select()\n }\n },\n model: {\n value: _vm.general.git.token,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"token\", $$v)\n },\n expression: \"general.git.token\"\n }\n },\n [\n _vm.general.git.token === \"\"\n ? [\n _c(\n \"v-popover\",\n {\n attrs: {\n trigger: \"click\",\n offset: \"16\",\n placement: \"right\",\n popoverBaseClass: \"tooltip-base\",\n popoverClass:\n \"tooltip-themed\" +\n (_vm.layout.themeName === \"dark\"\n ? \"-dark\"\n : \"-light\")\n }\n },\n [\n _c(\"input\", {\n staticClass:\n \"btn-medusa btn-inline\",\n attrs: {\n type: \"button\",\n id: \"create_access_token\",\n value: \"Generate Token\"\n }\n }),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"popover\" }, [\n _c(\n \"div\",\n { staticClass: \"tooltip-title\" },\n [_vm._v(\"Github Token\")]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"tooltip-content\"\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Copy the generated token and paste it in the token input box.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\n \"a\",\n {\n attrs: {\n href:\n (_vm.general\n .anonRedirect ||\n \"\") +\n \"https://github.com/settings/tokens/new?description=Medusa&scopes=gist,public_repo\",\n target: \"_blank\"\n }\n },\n [\n _c(\"input\", {\n staticClass:\n \"btn-medusa\",\n attrs: {\n type: \"button\",\n value:\n \"Continue to Github...\"\n }\n })\n ]\n )\n ]),\n _c(\"br\")\n ]\n )\n ])\n ],\n 2\n )\n ]\n : [\n _c(\n \"a\",\n {\n attrs: {\n href:\n (_vm.general.anonRedirect || \"\") +\n \"https://github.com/settings/tokens\",\n target: \"_blank\"\n }\n },\n [\n _c(\"input\", {\n staticClass:\n \"btn-medusa btn-inline\",\n attrs: {\n type: \"button\",\n id: \"manage_tokens\",\n value: \"Manage Tokens\"\n }\n })\n ]\n )\n ],\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"*** (REQUIRED FOR SUBMITTING ISSUES) ***\"\n )\n ])\n ],\n 2\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub remote for branch\",\n id: \"git_remote\"\n },\n model: {\n value: _vm.general.git.remote,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"remote\", $$v)\n },\n expression: \"general.git.remote\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"default:origin. Access repo configured remotes (save then refresh browser)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"Git executable path\",\n id: \"git_path\"\n },\n model: {\n value: _vm.general.git.path,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"path\", $$v)\n },\n expression: \"general.git.path\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"only needed if OS is unable to locate git from env\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.developer\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Git reset\", id: \"git_reset\" },\n model: {\n value: _vm.general.git.reset,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"reset\", $$v)\n },\n expression: \"general.git.reset\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"removes untracked files and performs a hard reset on git branch automatically to help resolve update issues\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.developer\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"git_reset_branches\",\n label: \"Branches to reset\"\n }\n },\n [\n _c(\"multiselect\", {\n attrs: {\n multiple: true,\n options: _vm.gitRemoteBranches\n },\n model: {\n value: _vm.general.git.resetBranches,\n callback: function($$v) {\n _vm.$set(\n _vm.general.git,\n \"resetBranches\",\n $$v\n )\n },\n expression: \"general.git.resetBranches\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa btn-inline\",\n staticStyle: { \"margin-left\": \"6px\" },\n attrs: {\n type: \"button\",\n id: \"branch_force_update\",\n value: \"Update Branches\"\n },\n on: {\n click: function($event) {\n return _vm.gitRemoteBranches()\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Empty selection means that any branch could be reset.\"\n )\n ])\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"h6\", { staticClass: \"pull-right\" }, [\n _c(\"b\", [\n _vm._v(\"All non-absolute folder locations are relative to \"),\n _c(\"span\", { staticClass: \"path\" }, [\n _vm._v(_vm._s(_vm.system.dataDir))\n ])\n ])\n ])\n ])\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"modal\",\n {\n attrs: {\n name: \"query-upgrade-database\",\n height: \"auto\",\n width: \"80%\"\n }\n },\n [\n _c(\"transition\", { attrs: { name: \"modal\" } }, [\n _c(\"div\", { staticClass: \"modal-mask\" }, [\n _c(\"div\", { staticClass: \"modal-wrapper\" }, [\n _c(\"div\", { staticClass: \"modal-content\" }, [\n _c(\"div\", { staticClass: \"modal-header\" }, [\n _vm._v(\n \"\\n Upgrade database model?\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-body\" }, [\n _c(\"p\", [\n _vm._v(\"Changing branch will upgrade your database\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"You won't be able to downgrade afterward.\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Do you want to continue?\")])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-footer\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-danger\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.$modal.hide(\"query-upgrade-database\")\n _vm.checkoutBranchMessage = \"\"\n }\n }\n },\n [_vm._v(\"No\")]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-success\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.checkoutBranch()\n _vm.$modal.hide(\"query-upgrade-database\")\n }\n }\n },\n [_vm._v(\"Yes\")]\n )\n ])\n ])\n ])\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"modal\",\n { attrs: { name: \"query-restart\", height: \"auto\", width: \"80%\" } },\n [\n _c(\"transition\", { attrs: { name: \"modal\" } }, [\n _c(\"div\", { staticClass: \"modal-mask\" }, [\n _c(\"div\", { staticClass: \"modal-wrapper\" }, [\n _c(\"div\", { staticClass: \"modal-content\" }, [\n _c(\"div\", { staticClass: \"modal-header\" }, [\n _vm._v(\n \"\\n Checking out a branch requires a restart\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-body\" }, [\n _c(\"p\", [\n _vm._v(\"Would you like to start a restart of medusa now?\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-footer\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-danger\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.$modal.hide(\"query-restart\")\n _vm.checkoutBranchMessage = \"\"\n }\n }\n },\n [_vm._v(\"No\")]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-success\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.$modal.hide(\"query-restart\")\n _vm.$router.push({ name: \"restart\" })\n }\n }\n },\n [_vm._v(\"Yes\")]\n )\n ])\n ])\n ])\n ])\n ])\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Misc\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Startup options. Indexer options. Log and show file locations.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [\n _vm._v(\"Some options may require a manual restart to take effect.\")\n ])\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Indexer\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for controlling the show indexers.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Updates\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for software updates.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"User Interface\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for visual appearance.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Web Interface\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"It is recommended that you enable a username and password to secure Medusa from being tampered with remotely.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [\n _vm._v(\"These options require a manual restart to take effect.\")\n ])\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [_c(\"h3\", [_vm._v(\"Advanced Settings\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [_c(\"h3\", [_vm._v(\"Logging\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"GitHub\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for github related features.\")])\n ]\n )\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config-general.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"config-genaral\" } },\n [\n _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"form\",\n {\n attrs: { id: \"configForm\", method: \"post\" },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.save()\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#misc\" } }, [\n _vm._v(\"Misc\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#interface\" } }, [\n _vm._v(\"Interface\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#advanced-settings\" } }, [\n _vm._v(\"Advanced Settings\")\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"misc\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Launch browser\",\n id: \"launch_browser\"\n },\n model: {\n value: _vm.general.launchBrowser,\n callback: function($$v) {\n _vm.$set(_vm.general, \"launchBrowser\", $$v)\n },\n expression: \"general.launchBrowser\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"open the Medusa home page on startup\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"default_page\",\n label: \"Initial page\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.defaultPage,\n expression: \"general.defaultPage\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"default_page\",\n name: \"default_page\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general,\n \"defaultPage\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.defaultPageOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\"when launching Medusa interface\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"trash_remove_show\",\n label: \"Send to trash for actions\"\n }\n },\n [\n _c(\n \"label\",\n {\n staticClass: \"nextline-block\",\n attrs: { for: \"trash_remove_show\" }\n },\n [\n _c(\"toggle-button\", {\n attrs: {\n width: 45,\n height: 22,\n id: \"trash_remove_show\",\n name: \"trash_remove_show\",\n sync: \"\"\n },\n model: {\n value: _vm.general.trashRemoveShow,\n callback: function($$v) {\n _vm.$set(\n _vm.general,\n \"trashRemoveShow\",\n $$v\n )\n },\n expression: \"general.trashRemoveShow\"\n }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n 'when using show \"Remove\" and delete files'\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n staticClass: \"nextline-block\",\n attrs: { for: \"trash_rotate_logs\" }\n },\n [\n _c(\"toggle-button\", {\n attrs: {\n width: 45,\n height: 22,\n id: \"trash_rotate_logs\",\n name: \"trash_rotate_logs\",\n sync: \"\"\n },\n model: {\n value: _vm.general.trashRotateLogs,\n callback: function($$v) {\n _vm.$set(\n _vm.general,\n \"trashRotateLogs\",\n $$v\n )\n },\n expression: \"general.trashRotateLogs\"\n }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"on scheduled deletes of the oldest log files\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"selected actions use trash (recycle bin) instead of the default permanent delete\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"config-textbox\", {\n attrs: {\n label: \"Location for Log files\",\n id: \"log_id\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.general.logs.actualLogDir,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"actualLogDir\", $$v)\n },\n expression: \"general.logs.actualLogDir\"\n }\n }),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Number of Log files saved\",\n id: \"log_nr\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.logs.nr,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"nr\", $$v)\n },\n expression: \"general.logs.nr\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"number of log files saved when rotating logs (default: 5) \"\n ),\n _c(\"b\", [_vm._v(\"(REQUIRES RESTART)\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Size of Log files saved\",\n id: \"log_size\",\n min: 0.5,\n step: 0.1\n },\n model: {\n value: _vm.general.logs.size,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"size\", $$v)\n },\n expression: \"general.logs.size\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"maximum size in MB of the log file (default: 1MB) \"\n ),\n _c(\"b\", [_vm._v(\"(REQUIRES RESTART)\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"show_root_dir\",\n label: \"Show root directories\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"where the files of shows are located\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"These changes are automatically saved!\")\n ]),\n _vm._v(\" \"),\n _c(\"root-dirs\")\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Append (year) to each show title\",\n id: \"add_title_year\"\n },\n model: {\n value: _vm.general.addTitleWithYear,\n callback: function($$v) {\n _vm.$set(_vm.general, \"addTitleWithYear\", $$v)\n },\n expression: \"general.addTitleWithYear\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Make sure that each show title is added with (year) appended to it\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The show title with year is only used for show folder creation as representation in the UI.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Cache recommended shows\",\n id: \"cache_rec_shows\"\n },\n model: {\n value: _vm.general.recommended.cache.shows,\n callback: function($$v) {\n _vm.$set(\n _vm.general.recommended.cache,\n \"shows\",\n $$v\n )\n },\n expression: \"general.recommended.cache.shows\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Enabling recommended shows, will cache recommended shows on a daily interval.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.recommended.cache.shows\n ? [\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Cache Trakt lists\",\n id: \"cache_rec_trakt\"\n },\n model: {\n value: _vm.general.recommended.cache.trakt,\n callback: function($$v) {\n _vm.$set(\n _vm.general.recommended.cache,\n \"trakt\",\n $$v\n )\n },\n expression: \"general.recommended.cache.trakt\"\n }\n }),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"trakt_selected_lists\",\n label: \"Trakt enabled lists\"\n }\n },\n [\n _vm.general.recommended.cache.trakt\n ? _c(\"select-trakt-lists\")\n : _vm._e()\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Cache Imdb lists\",\n id: \"cache_rec_imdb\"\n },\n model: {\n value: _vm.general.recommended.cache.imdb,\n callback: function($$v) {\n _vm.$set(\n _vm.general.recommended.cache,\n \"imdb\",\n $$v\n )\n },\n expression: \"general.recommended.cache.imdb\"\n }\n }),\n _vm._v(\" \"),\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Cache Anidb lists\",\n id: \"cache_rec_anidb\"\n },\n model: {\n value: _vm.general.recommended.cache.anidb,\n callback: function($$v) {\n _vm.$set(\n _vm.general.recommended.cache,\n \"anidb\",\n $$v\n )\n },\n expression: \"general.recommended.cache.anidb\"\n }\n }),\n _vm._v(\" \"),\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Cache AniList lists\",\n id: \"cache_rec_anilist\"\n },\n model: {\n value: _vm.general.recommended.cache.anilist,\n callback: function($$v) {\n _vm.$set(\n _vm.general.recommended.cache,\n \"anilist\",\n $$v\n )\n },\n expression:\n \"general.recommended.cache.anilist\"\n }\n })\n ]\n : _vm._e()\n ],\n 2\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"show_root_dir\",\n label: \"Default Indexer Language\"\n }\n },\n [\n _c(\"language-select\", {\n ref: \"indexerLanguage\",\n staticClass:\n \"form-control form-control-inline input-sm\",\n attrs: {\n language: _vm.general.indexerDefaultLanguage,\n available: _vm.indexers.main.validLanguages.join(\n \",\"\n )\n },\n on: {\n \"update-language\": function($event) {\n _vm.general.indexerDefaultLanguage = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\"for adding shows and metadata providers\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Choose hour to update shows\",\n id: \"showupdate_hour\",\n min: 0,\n max: 23,\n step: 1\n },\n model: {\n value: _vm.general.showUpdateHour,\n callback: function($$v) {\n _vm.$set(_vm.general, \"showUpdateHour\", $$v)\n },\n expression: \"general.showUpdateHour\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"with information such as next air dates, show ended, etc. Use 15 for 3pm, 4 for 4am etc.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" minutes are randomized each time Medusa is started\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Timeout show indexer at\",\n id: \"indexer_timeout\",\n min: 10,\n step: 1\n },\n model: {\n value: _vm.general.indexerTimeout,\n callback: function($$v) {\n _vm.$set(_vm.general, \"indexerTimeout\", $$v)\n },\n expression: \"general.indexerTimeout\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"seconds of inactivity when finding new shows (default:20)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"indexer_default\",\n label: \"Use initial indexer set to\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.indexerDefault,\n expression: \"indexerDefault\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"indexer_default\",\n name: \"indexer_default\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.indexerDefault = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.indexerListOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable fallback to plex\",\n id: \"fallback_plex_enable\"\n },\n model: {\n value: _vm.general.plexFallBack.enable,\n callback: function($$v) {\n _vm.$set(\n _vm.general.plexFallBack,\n \"enable\",\n $$v\n )\n },\n expression: \"general.plexFallBack.enable\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Plex provides a tvdb mirror, that can be utilized when Tvdb's api is unavailable.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable fallback notifications\",\n id: \"fallback_plex_notifications\"\n },\n model: {\n value: _vm.general.plexFallBack.notifications,\n callback: function($$v) {\n _vm.$set(\n _vm.general.plexFallBack,\n \"notifications\",\n $$v\n )\n },\n expression: \"general.plexFallBack.notifications\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"When this settings has been enabled, you may receive frequent notifications when falling back to the plex mirror.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Timeout show indexer at\",\n id: \"Fallback duration\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.plexFallBack.timeout,\n callback: function($$v) {\n _vm.$set(\n _vm.general.plexFallBack,\n \"timeout\",\n $$v\n )\n },\n expression: \"general.plexFallBack.timeout\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Amount of hours after we try to revert back to the thetvdb.com api url (default:3).\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Check software updates\",\n id: \"version_notify\"\n },\n model: {\n value: _vm.general.versionNotify,\n callback: function($$v) {\n _vm.$set(_vm.general, \"versionNotify\", $$v)\n },\n expression: \"general.versionNotify\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"and display notifications when updates are available.\\n Checks are run on startup and at the frequency set below*\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Automatically update\",\n id: \"auto_update\"\n },\n model: {\n value: _vm.general.autoUpdate,\n callback: function($$v) {\n _vm.$set(_vm.general, \"autoUpdate\", $$v)\n },\n expression: \"general.autoUpdate\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"fetch and install software updates.\\n Updates are run on startup and in the background at the frequency set below*\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Check the server every*\",\n id: \"update_frequency duration\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.updateFrequency,\n callback: function($$v) {\n _vm.$set(_vm.general, \"updateFrequency\", $$v)\n },\n expression: \"general.updateFrequency\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"hours for software updates (default:1)\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Notify on software update\",\n id: \"notify_on_update\"\n },\n model: {\n value: _vm.general.notifyOnUpdate,\n callback: function($$v) {\n _vm.$set(_vm.general, \"notifyOnUpdate\", $$v)\n },\n expression: \"general.notifyOnUpdate\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"send a message to all enabled notifiers when Medusa has been updated\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"interface\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"theme_name\",\n label: \"Display theme\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.themeName,\n expression: \"layout.themeName\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: { id: \"theme_name\", name: \"theme_name\" },\n on: {\n change: [\n function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.layout,\n \"themeName\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n },\n function($event) {\n return _vm.changeTheme(\n _vm.layout.themeName\n )\n }\n ]\n }\n },\n _vm._l(_vm.availableThemesOptions, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use wider layout\",\n id: \"layout_wide\"\n },\n model: {\n value: _vm.layout.wide,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"wide\", $$v)\n },\n expression: \"layout.wide\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"uses all available space in the page\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Show fanart in the background\",\n id: \"fanart_background\"\n },\n model: {\n value: _vm.layout.fanartBackground,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"fanartBackground\", $$v)\n },\n expression: \"layout.fanartBackground\"\n }\n },\n [_c(\"p\", [_vm._v(\"on the show summary page\")])]\n ),\n _vm._v(\" \"),\n _vm.layout.fanartBackground\n ? _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Fanart transparency\",\n id: \"fanart_background_opacity duration\",\n step: 0.1,\n min: 0.1,\n max: 1.0\n },\n model: {\n value: _vm.layout.fanartBackgroundOpacity,\n callback: function($$v) {\n _vm.$set(\n _vm.layout,\n \"fanartBackgroundOpacity\",\n $$v\n )\n },\n expression: \"layout.fanartBackgroundOpacity\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Transparency of the fanart in the background\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Sort with 'The' 'A', 'An'\",\n id: \"sort_article\"\n },\n model: {\n value: _vm.layout.sortArticle,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"sortArticle\", $$v)\n },\n expression: \"layout.sortArticle\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'include articles (\"The\", \"A\", \"An\") when sorting show lists'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"show_list_order\",\n label: \"show lists\"\n }\n },\n [\n _c(\"sorted-select-list\", {\n attrs: {\n \"list-items\": _vm.layout.show.showListOrder\n },\n on: { change: _vm.saveShowListOrder }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Create and order different categories for your shows.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Split home in tabs\",\n id: \"split_home_in_tabs\"\n },\n model: {\n value: _vm.layout.splitHomeInTabs,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"splitHomeInTabs\", $$v)\n },\n expression: \"layout.splitHomeInTabs\"\n }\n },\n [\n _c(\"span\", { staticClass: \"component-desc\" }, [\n _vm._v(\"Use tabs when splitting show lists\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Missed episodes range\",\n id: \"coming_eps_missed_range duration\",\n step: 1,\n min: 7\n },\n model: {\n value: _vm.layout.comingEps.missedRange,\n callback: function($$v) {\n _vm.$set(\n _vm.layout.comingEps,\n \"missedRange\",\n $$v\n )\n },\n expression: \"layout.comingEps.missedRange\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Set the range in days of the missed episodes in the Schedule page\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Display fuzzy dates\",\n id: \"fuzzy_dating\"\n },\n model: {\n value: _vm.layout.fuzzyDating,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"fuzzyDating\", $$v)\n },\n expression: \"layout.fuzzyDating\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'move absolute dates into tooltips and display e.g. \"Last Thu\", \"On Tue\"'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Trim zero padding\",\n id: \"trim_zero\"\n },\n model: {\n value: _vm.layout.trimZero,\n callback: function($$v) {\n _vm.$set(_vm.layout, \"trimZero\", $$v)\n },\n expression: \"layout.trimZero\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'remove the leading number \"0\" shown on hour of day, and date of month'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"date_preset\",\n label: \"Date style\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.dateStyle,\n expression: \"layout.dateStyle\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"date_preset\",\n name: \"date_preset\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.layout,\n \"dateStyle\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.datePresetOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"time_preset\",\n label: \"Time style\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.timeStyle,\n expression: \"layout.timeStyle\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"time_preset\",\n name: \"time_preset\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.layout,\n \"timeStyle\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.timePresetOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" seconds are only shown on the History page\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"timezone_display\",\n label: \"Timezone\"\n }\n },\n [\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.timezoneDisplay,\n expression: \"layout.timezoneDisplay\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"timezone_display_local\",\n id: \"timezone_display_local\",\n value: \"local\"\n },\n domProps: {\n checked: _vm._q(\n _vm.layout.timezoneDisplay,\n \"local\"\n )\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.layout,\n \"timezoneDisplay\",\n \"local\"\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"local\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.layout.timezoneDisplay,\n expression: \"layout.timezoneDisplay\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"timezone_display_network\",\n id: \"timezone_display_network\",\n value: \"network\"\n },\n domProps: {\n checked: _vm._q(\n _vm.layout.timezoneDisplay,\n \"network\"\n )\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.layout,\n \"timezoneDisplay\",\n \"network\"\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"network\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"display dates and times in either your timezone or the shows network timezone\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Use local timezone to start searching for episodes minutes after show ends (depends on your dailysearch frequency)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Use table pagination\",\n id: \"show_pagination\"\n },\n model: {\n value: _vm.layout.show.pagination.enable,\n callback: function($$v) {\n _vm.$set(\n _vm.layout.show.pagination,\n \"enable\",\n $$v\n )\n },\n expression: \"layout.show.pagination.enable\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(5),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"API key\",\n id: \"api_key\",\n readonly: \"readonly\"\n },\n model: {\n value: _vm.general.webInterface.apiKey,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"apiKey\",\n $$v\n )\n },\n expression: \"general.webInterface.apiKey\"\n }\n },\n [\n _c(\"input\", {\n staticClass: \"btn-medusa btn-inline\",\n attrs: {\n type: \"button\",\n id: \"generate_new_apikey\",\n value: \"Generate\"\n },\n on: { click: _vm.generateApiKey }\n }),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"used to give 3rd party programs limited access to Medusa\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n [\n _vm._v(\n \"you can try all the features of the legacy API (v1) \"\n ),\n _c(\n \"app-link\",\n { attrs: { href: \"apibuilder/\" } },\n [_vm._v(\"here\")]\n )\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"HTTP logs\", id: \"web_log\" },\n model: {\n value: _vm.general.webInterface.log,\n callback: function($$v) {\n _vm.$set(_vm.general.webInterface, \"log\", $$v)\n },\n expression: \"general.webInterface.log\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable logs from the internal Tornado web server\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTP username\",\n id: \"web_username\",\n autocomplete: \"no\"\n },\n model: {\n value: _vm.general.webInterface.username,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"username\",\n $$v\n )\n },\n expression: \"general.webInterface.username\"\n }\n },\n [_c(\"p\", [_vm._v(\"set blank for no login\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTP password\",\n id: \"web_password\",\n type: \"password\",\n autocomplete: \"no\"\n },\n model: {\n value: _vm.general.webInterface.password,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"password\",\n $$v\n )\n },\n expression: \"general.webInterface.password\"\n }\n },\n [_c(\"p\", [_vm._v(\"blank = no authentication\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"HTTP port\",\n id: \"web_port\",\n min: 1,\n step: 1\n },\n model: {\n value: _vm.general.webInterface.port,\n callback: function($$v) {\n _vm.$set(_vm.general.webInterface, \"port\", $$v)\n },\n expression: \"general.webInterface.port\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"web port to browse and access Medusa (default:8081)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Notify on login\",\n id: \"notify_on_login\"\n },\n model: {\n value: _vm.general.webInterface.notifyOnLogin,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"notifyOnLogin\",\n $$v\n )\n },\n expression: \"general.webInterface.notifyOnLogin\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable to be notified when a new login happens in webserver\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Listen on IPv6\", id: \"web_ipv6\" },\n model: {\n value: _vm.general.webInterface.ipv6,\n callback: function($$v) {\n _vm.$set(_vm.general.webInterface, \"ipv6\", $$v)\n },\n expression: \"general.webInterface.ipv6\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable to be notified when a new login happens in webserver\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable HTTPS\",\n id: \"enable_https\"\n },\n model: {\n value: _vm.general.webInterface.httpsEnable,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"httpsEnable\",\n $$v\n )\n },\n expression: \"general.webInterface.httpsEnable\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable access to the web interface using a HTTPS address\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.webInterface.httpsEnable\n ? _c(\n \"div\",\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTPS certificate\",\n id: \"https_cert\"\n },\n model: {\n value: _vm.general.webInterface.httpsCert,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"httpsCert\",\n $$v\n )\n },\n expression:\n \"general.webInterface.httpsCert\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"file name or path to HTTPS certificate\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTPS key\",\n id: \"https_key\"\n },\n model: {\n value: _vm.general.webInterface.httpsKey,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"httpsKey\",\n $$v\n )\n },\n expression:\n \"general.webInterface.httpsKey\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"file name or path to HTTPS key\")\n ])\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Reverse proxy headers\",\n id: \"handle_reverse_proxy\"\n },\n model: {\n value:\n _vm.general.webInterface.handleReverseProxy,\n callback: function($$v) {\n _vm.$set(\n _vm.general.webInterface,\n \"handleReverseProxy\",\n $$v\n )\n },\n expression:\n \"general.webInterface.handleReverseProxy\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"accept the following reverse proxy headers (advanced)...\"\n ),\n _c(\"br\"),\n _vm._v(\n \"(X-Forwarded-For, X-Forwarded-Host, and X-Forwarded-Proto)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"HTTP web root\",\n id: \"web_root\",\n autocomplete: \"no\"\n },\n model: {\n value: _vm.general.webRoot,\n callback: function($$v) {\n _vm.$set(_vm.general, \"webRoot\", $$v)\n },\n expression: \"general.webRoot\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Set a base URL, for use in reverse proxies.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"blank = disabled\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Must restart to have effect. Keep in mind that any previously configured base URLs won't work, after this change.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"advanced-settings\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(6),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"cpu_presets\",\n label: \"CPU throttling\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.cpuPreset,\n expression: \"general.cpuPreset\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"cpu_presets\",\n name: \"cpu_presets\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general,\n \"cpuPreset\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.cpuPresetOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Normal (default). High is lower and Low is higher CPU use\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"Anonymous redirect\",\n id: \"anon_redirect\"\n },\n model: {\n value: _vm.general.anonRedirect,\n callback: function($$v) {\n _vm.$set(_vm.general, \"anonRedirect\", $$v)\n },\n expression: \"general.anonRedirect\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n 'backlink protection via anonymizer service, must end in \"?\"'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Verify SSL Certs\",\n id: \"ssl_verify\"\n },\n model: {\n value: _vm.general.sslVerify,\n callback: function($$v) {\n _vm.$set(_vm.general, \"sslVerify\", $$v)\n },\n expression: \"general.sslVerify\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Verify SSL Certificates (Disable this for broken SSL installs (Like QNAP))\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"SSL CA Bundle\",\n id: \"ssl_ca_bundle\"\n },\n model: {\n value: _vm.general.sslCaBundle,\n callback: function($$v) {\n _vm.$set(_vm.general, \"sslCaBundle\", $$v)\n },\n expression: \"general.sslCaBundle\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Path to an SSL CA Bundle. Will replace default bundle(certifi) with the one specified.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" This only apply to call made using Medusa's Requests implementation.\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"No Restart\", id: \"no_restart\" },\n model: {\n value: _vm.general.noRestart,\n callback: function($$v) {\n _vm.$set(_vm.general, \"noRestart\", $$v)\n },\n expression: \"general.noRestart\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Only shutdown when restarting Medusa.\\n Only select this when you have external software restarting Medusa automatically when it stops (like FireDaemon)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Encrypt passwords\",\n id: \"encryption_version\"\n },\n model: {\n value: _vm.general.encryptionVersion,\n callback: function($$v) {\n _vm.$set(_vm.general, \"encryptionVersion\", $$v)\n },\n expression: \"general.encryptionVersion\"\n }\n },\n [\n _c(\n \"p\",\n [\n _vm._v(\"in the \"),\n _c(\"code\", [_vm._v(\"config.ini\")]),\n _vm._v(\n \" file.\\n \"\n ),\n _c(\"b\", [_vm._v(\"Warning:\")]),\n _vm._v(\" Passwords must only contain \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters\"\n }\n },\n [_vm._v(\"ASCII characters\")]\n )\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Unprotected calendar\",\n id: \"calendar_unprotected\"\n },\n model: {\n value: _vm.general.calendarUnprotected,\n callback: function($$v) {\n _vm.$set(\n _vm.general,\n \"calendarUnprotected\",\n $$v\n )\n },\n expression: \"general.calendarUnprotected\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"allow subscribing to the calendar without user and password.\\n Some services like Google Calendar only work this way\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Google Calendar Icons\",\n id: \"calendar_icons\"\n },\n model: {\n value: _vm.general.calendarIcons,\n callback: function($$v) {\n _vm.$set(_vm.general, \"calendarIcons\", $$v)\n },\n expression: \"general.calendarIcons\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"show an icon next to exported calendar events in Google Calendar.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: { label: \"Proxy host\", id: \"proxy_setting\" },\n model: {\n value: _vm.general.proxySetting,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxySetting\", $$v)\n },\n expression: \"general.proxySetting\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"blank to disable or proxy to use when connecting to providers\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for providers\",\n id: \"proxy_providers\"\n },\n model: {\n value: _vm.general.proxyProviders,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyProviders\", $$v)\n },\n expression: \"general.proxyProviders\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting to providers (torrent & nzb)\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for indexers\",\n id: \"proxy_indexers\"\n },\n model: {\n value: _vm.general.proxyIndexers,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyIndexers\", $$v)\n },\n expression: \"general.proxyIndexers\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting to indexers (thetvdb, tmdb or tvmaze)\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for clients\",\n id: \"proxy_clients\"\n },\n model: {\n value: _vm.general.proxyClients,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyClients\", $$v)\n },\n expression: \"general.proxyClients\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting torrent or usenet clients (nzbGet excluded)\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.proxySetting !== \"\"\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Use proxy for other sites\",\n id: \"proxy_others\"\n },\n model: {\n value: _vm.general.proxyOthers,\n callback: function($$v) {\n _vm.$set(_vm.general, \"proxyOthers\", $$v)\n },\n expression: \"general.proxyOthers\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"use proxy host for connecting to other sites.\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Skip Remove Detection\",\n id: \"skip_removed_files\"\n },\n model: {\n value: _vm.general.skipRemovedFiles,\n callback: function($$v) {\n _vm.$set(_vm.general, \"skipRemovedFiles\", $$v)\n },\n expression: \"general.skipRemovedFiles\"\n }\n },\n [\n _c(\"span\", [\n _c(\"p\", [\n _vm._v(\n \"Skip detection of removed files. If disabled the episode will be set to the default deleted status\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" This may mean Medusa misses renames as well\\n \"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"ep_default_deleted_status\",\n label: \"Default deleted episode status\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.epDefaultDeletedStatus,\n expression: \"general.epDefaultDeletedStatus\"\n }\n ],\n staticClass:\n \"form-control input-sm margin-bottom-5\",\n attrs: {\n id: \"ep_default_deleted_status\",\n name: \"ep_default_deleted_status\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general,\n \"epDefaultDeletedStatus\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n [\n _c(\n \"option\",\n { attrs: { disabled: \"\", value: \"\" } },\n [_vm._v(\"Please select a default status\")]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.defaultDeletedEpOptions, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Define the status to be set for media file that has been deleted.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Archived option will keep previous downloaded quality\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Example: Downloaded (1080p WEB-DL) ==> Archived (1080p WEB-DL)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable experimental features\",\n id: \"experimental\"\n },\n model: {\n value: _vm.general.experimental,\n callback: function($$v) {\n _vm.$set(_vm.general, \"experimental\", $$v)\n },\n expression: \"general.experimental\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\"allow for using experimental features\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(7),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Enable debug\", id: \"debug\" },\n model: {\n value: _vm.general.logs.debug,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"debug\", $$v)\n },\n expression: \"general.logs.debug\"\n }\n },\n [_c(\"p\", [_vm._v(\"Enable debug logs\")])]\n ),\n _vm._v(\" \"),\n _vm.general.developer\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable DB debug\",\n id: \"dbdebug\"\n },\n model: {\n value: _vm.general.logs.dbDebug,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"dbDebug\", $$v)\n },\n expression: \"general.logs.dbDebug\"\n }\n },\n [_c(\"p\", [_vm._v(\"Enable DB debug logs\")])]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Subliminal logs\",\n id: \"subliminal_log\"\n },\n model: {\n value: _vm.general.logs.subliminalLog,\n callback: function($$v) {\n _vm.$set(_vm.general.logs, \"subliminalLog\", $$v)\n },\n expression: \"general.logs.subliminalLog\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"enable logs from subliminal library (subtitles)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"privacy_level\",\n label: \"Privacy\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.logs.privacyLevel,\n expression: \"general.logs.privacyLevel\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"privacy_level\",\n name: \"privacy_level\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.general.logs,\n \"privacyLevel\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.privacyLevelOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"\\n Set the level of log-filtering.\\n Normal (default).\\n \"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"custom_logs\",\n label:\n \"Overwrite log levels for overwritable logs\"\n }\n },\n [_c(\"custom-logs\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(8),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"github_remote_branches\",\n label: \"Branch version\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedBranch,\n expression: \"selectedBranch\"\n }\n ],\n staticClass:\n \"form-control input-sm margin-bottom-5\",\n attrs: {\n id: \"github_remote_branches\",\n name: \"github_remote_branches\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedBranch = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n [\n _c(\n \"option\",\n { attrs: { disabled: \"\", value: \"\" } },\n [_vm._v(\"Please select a branch\")]\n ),\n _vm._v(\" \"),\n _vm._l(\n _vm.githubRemoteBranchesOptions,\n function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }\n )\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa btn-inline\",\n staticStyle: { \"margin-left\": \"6px\" },\n attrs: {\n disabled: !_vm.gitRemoteBranches.length > 0,\n type: \"button\",\n id: \"branchCheckout\",\n value: \"Checkout Branch\"\n },\n on: { click: _vm.validateCheckoutBranch }\n }),\n _vm._v(\" \"),\n !_vm.gitRemoteBranches.length > 0\n ? _c(\n \"span\",\n { staticStyle: { color: \"rgb(255, 0, 0)\" } },\n [\n _c(\"p\", [\n _vm._v(\"Error: No branches found.\")\n ])\n ]\n )\n : _c(\"p\", [\n _vm._v(\n \"select branch to use (restart required)\"\n )\n ]),\n _vm._v(\" \"),\n _vm.checkoutBranchMessage\n ? _c(\n \"p\",\n [\n _c(\"state-switch\", {\n attrs: {\n state: \"loading\",\n theme: _vm.layout.themeName\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(_vm._s(_vm.checkoutBranchMessage))\n ])\n ],\n 1\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"date_presets\",\n label: \"GitHub authentication type\"\n }\n },\n [\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.git.authType,\n expression: \"general.git.authType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"git_auth_type_basic\",\n id: \"git_auth_type_basic\"\n },\n domProps: {\n value: 0,\n checked: _vm._q(_vm.general.git.authType, 0)\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.general.git,\n \"authType\",\n 0\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"Username and password\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"radio-item\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.general.git.authType,\n expression: \"general.git.authType\"\n }\n ],\n attrs: {\n type: \"radio\",\n name: \"git_auth_type_token\",\n id: \"git_auth_type_token\"\n },\n domProps: {\n value: 1,\n checked: _vm._q(_vm.general.git.authType, 1)\n },\n on: {\n change: function($event) {\n return _vm.$set(\n _vm.general.git,\n \"authType\",\n 1\n )\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"one\" } }, [\n _vm._v(\"Personal access token\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n 'You must use a personal access token if you\\'re using \"two-factor authentication\" on GitHub.'\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.general.git.authType === 0,\n expression: \"general.git.authType === 0\"\n }\n ]\n },\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub username\",\n id: \"git_username\"\n },\n model: {\n value: _vm.general.git.username,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"username\", $$v)\n },\n expression: \"general.git.username\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"*** (REQUIRED FOR SUBMITTING ISSUES) ***\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub password\",\n id: \"git_password\",\n type: \"password\"\n },\n model: {\n value: _vm.general.git.password,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"password\", $$v)\n },\n expression: \"general.git.password\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"*** (REQUIRED FOR SUBMITTING ISSUES) ***\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.general.git.authType !== 0,\n expression: \"general.git.authType !== 0\"\n }\n ]\n },\n [\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub personal access token\",\n id: \"git_token\",\n \"input-class\":\n \"display-inline margin-bottom-5\"\n },\n nativeOn: {\n focus: function($event) {\n return $event.target.select()\n }\n },\n model: {\n value: _vm.general.git.token,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"token\", $$v)\n },\n expression: \"general.git.token\"\n }\n },\n [\n _vm.general.git.token === \"\"\n ? [\n _c(\n \"v-popover\",\n {\n attrs: {\n trigger: \"click\",\n offset: \"16\",\n placement: \"right\",\n popoverBaseClass: \"tooltip-base\",\n popoverClass:\n \"tooltip-themed\" +\n (_vm.layout.themeName === \"dark\"\n ? \"-dark\"\n : \"-light\")\n }\n },\n [\n _c(\"input\", {\n staticClass:\n \"btn-medusa btn-inline\",\n attrs: {\n type: \"button\",\n id: \"create_access_token\",\n value: \"Generate Token\"\n }\n }),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"popover\" }, [\n _c(\n \"div\",\n { staticClass: \"tooltip-title\" },\n [_vm._v(\"Github Token\")]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"tooltip-content\"\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Copy the generated token and paste it in the token input box.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\n \"a\",\n {\n attrs: {\n href:\n (_vm.general\n .anonRedirect ||\n \"\") +\n \"https://github.com/settings/tokens/new?description=Medusa&scopes=gist,public_repo\",\n target: \"_blank\"\n }\n },\n [\n _c(\"input\", {\n staticClass:\n \"btn-medusa\",\n attrs: {\n type: \"button\",\n value:\n \"Continue to Github...\"\n }\n })\n ]\n )\n ]),\n _c(\"br\")\n ]\n )\n ])\n ],\n 2\n )\n ]\n : [\n _c(\n \"a\",\n {\n attrs: {\n href:\n (_vm.general.anonRedirect || \"\") +\n \"https://github.com/settings/tokens\",\n target: \"_blank\"\n }\n },\n [\n _c(\"input\", {\n staticClass:\n \"btn-medusa btn-inline\",\n attrs: {\n type: \"button\",\n id: \"manage_tokens\",\n value: \"Manage Tokens\"\n }\n })\n ]\n )\n ],\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"*** (REQUIRED FOR SUBMITTING ISSUES) ***\"\n )\n ])\n ],\n 2\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"GitHub remote for branch\",\n id: \"git_remote\"\n },\n model: {\n value: _vm.general.git.remote,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"remote\", $$v)\n },\n expression: \"general.git.remote\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"default:origin. Access repo configured remotes (save then refresh browser)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n attrs: {\n label: \"Git executable path\",\n id: \"git_path\"\n },\n model: {\n value: _vm.general.git.path,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"path\", $$v)\n },\n expression: \"general.git.path\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"only needed if OS is unable to locate git from env\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.general.developer\n ? _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Git reset\", id: \"git_reset\" },\n model: {\n value: _vm.general.git.reset,\n callback: function($$v) {\n _vm.$set(_vm.general.git, \"reset\", $$v)\n },\n expression: \"general.git.reset\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"removes untracked files and performs a hard reset on git branch automatically to help resolve update issues\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.general.developer\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"git_reset_branches\",\n label: \"Branches to reset\"\n }\n },\n [\n _c(\"multiselect\", {\n attrs: {\n multiple: true,\n options: _vm.gitRemoteBranches\n },\n model: {\n value: _vm.general.git.resetBranches,\n callback: function($$v) {\n _vm.$set(\n _vm.general.git,\n \"resetBranches\",\n $$v\n )\n },\n expression: \"general.git.resetBranches\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa btn-inline\",\n staticStyle: { \"margin-left\": \"6px\" },\n attrs: {\n type: \"button\",\n id: \"branch_force_update\",\n value: \"Update Branches\"\n },\n on: {\n click: function($event) {\n return _vm.gitRemoteBranches()\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Empty selection means that any branch could be reset.\"\n )\n ])\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { type: \"submit\", value: \"Save Changes\" }\n })\n ],\n 1\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"h6\", { staticClass: \"pull-right\" }, [\n _c(\"b\", [\n _vm._v(\"All non-absolute folder locations are relative to \"),\n _c(\"span\", { staticClass: \"path\" }, [\n _vm._v(_vm._s(_vm.system.dataDir))\n ])\n ])\n ])\n ])\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"modal\",\n {\n attrs: {\n name: \"query-upgrade-database\",\n height: \"auto\",\n width: \"80%\"\n }\n },\n [\n _c(\"transition\", { attrs: { name: \"modal\" } }, [\n _c(\"div\", { staticClass: \"modal-mask\" }, [\n _c(\"div\", { staticClass: \"modal-wrapper\" }, [\n _c(\"div\", { staticClass: \"modal-content\" }, [\n _c(\"div\", { staticClass: \"modal-header\" }, [\n _vm._v(\n \"\\n Upgrade database model?\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-body\" }, [\n _c(\"p\", [\n _vm._v(\"Changing branch will upgrade your database\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"You won't be able to downgrade afterward.\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Do you want to continue?\")])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-footer\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-danger\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.$modal.hide(\"query-upgrade-database\")\n _vm.checkoutBranchMessage = \"\"\n }\n }\n },\n [_vm._v(\"No\")]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-success\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.checkoutBranch()\n _vm.$modal.hide(\"query-upgrade-database\")\n }\n }\n },\n [_vm._v(\"Yes\")]\n )\n ])\n ])\n ])\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"modal\",\n { attrs: { name: \"query-restart\", height: \"auto\", width: \"80%\" } },\n [\n _c(\"transition\", { attrs: { name: \"modal\" } }, [\n _c(\"div\", { staticClass: \"modal-mask\" }, [\n _c(\"div\", { staticClass: \"modal-wrapper\" }, [\n _c(\"div\", { staticClass: \"modal-content\" }, [\n _c(\"div\", { staticClass: \"modal-header\" }, [\n _vm._v(\n \"\\n Checking out a branch requires a restart\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-body\" }, [\n _c(\"p\", [\n _vm._v(\"Would you like to start a restart of medusa now?\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"modal-footer\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-danger\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.$modal.hide(\"query-restart\")\n _vm.checkoutBranchMessage = \"\"\n }\n }\n },\n [_vm._v(\"No\")]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-success\",\n attrs: { type: \"button\", \"data-dismiss\": \"modal\" },\n on: {\n click: function($event) {\n _vm.$modal.hide(\"query-restart\")\n _vm.$router.push({ name: \"restart\" })\n }\n }\n },\n [_vm._v(\"Yes\")]\n )\n ])\n ])\n ])\n ])\n ])\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Misc\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Startup options. Indexer options. Log and show file locations.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [\n _vm._v(\"Some options may require a manual restart to take effect.\")\n ])\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", { staticStyle: { \"word-break\": \"break-word\" } }, [\n _vm._v(\"Recommended shows\")\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\"Options for controlling the caching of recommended shows.\")\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Indexer\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for controlling the show indexers.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Updates\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for software updates.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"User Interface\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for visual appearance.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Web Interface\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"It is recommended that you enable a username and password to secure Medusa from being tampered with remotely.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [\n _vm._v(\"These options require a manual restart to take effect.\")\n ])\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [_c(\"h3\", [_vm._v(\"Advanced Settings\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [_c(\"h3\", [_vm._v(\"Logging\")])]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"GitHub\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"Options for github related features.\")])\n ]\n )\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config-general.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -5629,7 +5900,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !_vm.lazy\n ? _c(\n \"div\",\n { staticStyle: { display: \"inherit\" } },\n [\n !_vm.link\n ? _c(\n \"img\",\n _vm._b(\n {\n on: {\n error: function($event) {\n _vm.error = true\n }\n }\n },\n \"img\",\n { src: _vm.src, class: _vm.cls, class: _vm.newCls },\n false\n )\n )\n : _c(\"app-link\", { attrs: { href: _vm.href } }, [\n _c(\n \"img\",\n _vm._b(\n {\n on: {\n error: function($event) {\n _vm.error = true\n }\n }\n },\n \"img\",\n { src: _vm.src, class: _vm.newCls },\n false\n )\n )\n ])\n ],\n 1\n )\n : _c(\n \"div\",\n { staticStyle: { display: \"inherit\" } },\n [\n !_vm.link\n ? _c(\"lazy-image\", {\n attrs: {\n \"lazy-src\": _vm.src,\n \"lazy-cls\": _vm.newCls,\n \"lazy-default-src\": _vm.defaultSrc\n }\n })\n : _c(\n \"app-link\",\n { attrs: { href: _vm.href } },\n [\n _c(\"lazy-image\", {\n attrs: {\n \"lazy-src\": _vm.src,\n \"lazy-cls\": _vm.newCls,\n \"lazy-default-src\": _vm.defaultSrc\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/asset.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return !_vm.lazy\n ? _c(\n \"div\",\n { staticStyle: { display: \"inherit\" } },\n [\n !_vm.link\n ? _c(\n \"img\",\n _vm._b(\n {\n on: {\n error: function($event) {\n _vm.error = true\n }\n }\n },\n \"img\",\n { src: _vm.src, class: _vm.cls, class: _vm.newCls },\n false\n )\n )\n : _c(\"app-link\", { attrs: { href: _vm.href } }, [\n _c(\n \"img\",\n _vm._b(\n {\n on: {\n error: function($event) {\n _vm.error = true\n }\n }\n },\n \"img\",\n { src: _vm.src, class: _vm.newCls, style: _vm.imgStyle },\n false\n )\n )\n ])\n ],\n 1\n )\n : _c(\n \"div\",\n { staticStyle: { display: \"inherit\" } },\n [\n !_vm.link\n ? _c(\"lazy-image\", {\n attrs: {\n \"lazy-src\": _vm.src,\n \"lazy-cls\": _vm.newCls,\n \"lazy-default-src\": _vm.defaultSrc,\n \"lazy-width\": _vm.imgWidth\n }\n })\n : _c(\n \"app-link\",\n { attrs: { href: _vm.href } },\n [\n _c(\"lazy-image\", {\n attrs: {\n \"lazy-src\": _vm.src,\n \"lazy-cls\": _vm.newCls,\n \"lazy-default-src\": _vm.defaultSrc\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/asset.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -5908,6 +6179,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true&":
+/*!*****************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/select-trakt-lists.vue?vue&type=template&id=38f4c8dd&scoped=true& ***!
+ \*****************************************************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"select-trakt-list max-width\" }, [\n _c(\n \"ul\",\n _vm._l(_vm.availableLists, function(availableList) {\n return _c(\"li\", { key: availableList }, [\n _c(\"div\", { staticClass: \"trakt-list-group\" }, [\n _c(\"input\", {\n staticClass: \"form-control input-sm available-list\",\n attrs: { disabled: \"\", type: \"text\" },\n domProps: { value: availableList }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n attrs: { type: \"checkbox\" },\n domProps: {\n checked: _vm.selectedLists.find(function(list) {\n return list === availableList\n })\n },\n on: {\n input: function($event) {\n return _vm.saveLists($event, availableList)\n }\n }\n })\n ])\n ])\n }),\n 0\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/select-trakt-lists.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/show-selector.vue?vue&type=template&id=6e81af76&":
/*!************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/show-selector.vue?vue&type=template&id=6e81af76& ***!
@@ -5952,6 +6234,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true&":
+/*!*******************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/helpers/trakt-authentication.vue?vue&type=template&id=cd53d81a&scoped=true& ***!
+ \*******************************************************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Enable\",\n id: \"use_trakt\",\n explanations: [\"Send Trakt.tv notifications?\"]\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.enabled,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"enabled\", $$v)\n },\n expression: \"trakt.enabled\"\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.trakt.enabled,\n expression: \"trakt.enabled\"\n }\n ],\n attrs: { id: \"content-use-trakt-client\" }\n },\n [\n _c(\n \"config-template\",\n { attrs: { \"label-for\": \"trakt_request_auth\", label: \"\" } },\n [\n _c(\"input\", {\n staticClass: \"btn-medusa\",\n attrs: {\n type: \"button\",\n value: \"Connect to your trakt account\",\n id: \"Trakt\"\n },\n on: { click: _vm.TraktRequestDeviceCode }\n }),\n _vm._v(\" \"),\n _vm.traktRequestSend && _vm.traktUserCode\n ? _c(\"span\", { staticStyle: { display: \"inline\" } }, [\n _vm._v(\n \"Use this code in the popup: \" + _vm._s(_vm.traktUserCode)\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.traktRequestSend &&\n _vm.traktUserCode &&\n _vm.traktRequestMessage\n ? _c(\"p\", [\n _vm._v(\n \"Trakt request status: \" + _vm._s(_vm.traktRequestMessage)\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.traktRequestAuthenticated && _vm.traktRequestMessage\n ? _c(\"p\", [_vm._v(_vm._s(_vm.traktRequestMessage))])\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n !_vm.authOnly\n ? [\n _c(\"config-textbox-number\", {\n attrs: {\n label: \"API Timeout\",\n id: \"trakt_timeout\",\n explanations: [\n \"Seconds to wait for Trakt API to respond. (Use 0 to wait forever)\"\n ]\n },\n model: {\n value: _vm.trakt.timeout,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"timeout\", $$v)\n },\n expression: \"trakt.timeout\"\n }\n }),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"trakt_default_indexer\",\n label: \"Default indexer\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.trakt.defaultIndexer,\n expression: \"trakt.defaultIndexer\"\n }\n ],\n staticClass: \"form-control\",\n attrs: {\n id: \"trakt_default_indexer\",\n name: \"trakt_default_indexer\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.trakt,\n \"defaultIndexer\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.traktIndexersOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.key,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Sync libraries\", id: \"trakt_sync\" },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.sync,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"sync\", $$v)\n },\n expression: \"trakt.sync\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Sync your Medusa show library with your Trakt collection.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Note: Don't enable this setting if you use the Trakt addon for Kodi or any other script that syncs your library.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Kodi detects that the episode was deleted and removes from collection which causes Medusa to re-add it. This causes a loop between Medusa and Kodi adding and deleting the episode.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.trakt.sync,\n expression: \"trakt.sync\"\n }\n ],\n attrs: { id: \"content-use-trakt-client\" }\n },\n [\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Remove Episodes From Collection\",\n id: \"trakt_remove_watchlist\",\n explanations: [\n \"Remove an Episode from your Trakt Collection if it is not in your Medusa Library.\",\n \"Note:Don't enable this setting if you use the Trakt addon for Kodi or any other script that syncs your library.\"\n ]\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.removeWatchlist,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"removeWatchlist\", $$v)\n },\n expression: \"trakt.removeWatchlist\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Sync watchlist\",\n id: \"trakt_sync_watchlist\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.syncWatchlist,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"syncWatchlist\", $$v)\n },\n expression: \"trakt.syncWatchlist\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Sync your Medusa library with your Trakt Watchlist (either Show and Episode).\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Episode will be added on watch list when wanted or snatched and will be removed when downloaded\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Note: By design, Trakt automatically removes episodes and/or shows from watchlist as soon you have watched them.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.trakt.syncWatchlist,\n expression: \"trakt.syncWatchlist\"\n }\n ],\n attrs: { id: \"content-use-trakt-client\" }\n },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"trakt_default_indexer\",\n label: \"Watchlist add method\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.trakt.methodAdd,\n expression: \"trakt.methodAdd\"\n }\n ],\n staticClass: \"form-control\",\n attrs: {\n id: \"trakt_method_add\",\n name: \"trakt_method_add\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.trakt,\n \"methodAdd\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.traktMethodOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.key,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"method in which to download episodes for new shows.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Remove episode\",\n id: \"trakt_remove_watchlist\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.removeWatchlist,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"removeWatchlist\", $$v)\n },\n expression: \"trakt.removeWatchlist\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"remove an episode from your watchlist after it's downloaded.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Remove series\",\n id: \"trakt_remove_serieslist\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.removeSerieslist,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"removeSerieslist\", $$v)\n },\n expression: \"trakt.removeSerieslist\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"remove the whole series from your watchlist after any download.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Remove watched show\",\n id: \"trakt_remove_show_from_application\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.removeShowFromApplication,\n callback: function($$v) {\n _vm.$set(\n _vm.trakt,\n \"removeShowFromApplication\",\n $$v\n )\n },\n expression: \"trakt.removeShowFromApplication\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"remove the show from Medusa if it\\\\'s ended and completely watched\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Start paused\",\n id: \"trakt_start_paused\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.startPaused,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"startPaused\", $$v)\n },\n expression: \"trakt.startPaused\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"shows grabbed from your trakt watchlist start paused.\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox\",\n {\n class: _vm.traktBlacklistClass,\n attrs: {\n label: \"Trakt blackList name\",\n id: \"trakt_blacklist_name\"\n },\n on: {\n change: function($event) {\n return _vm.save()\n }\n },\n model: {\n value: _vm.trakt.blacklistName,\n callback: function($$v) {\n _vm.$set(_vm.trakt, \"blacklistName\", $$v)\n },\n expression: \"trakt.blacklistName\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Name(slug) of List on Trakt for blacklisting show on 'Add Trending Show' & 'Add Recommended Shows' pages\"\n )\n ])\n ]\n )\n ]\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"testNotification\",\n attrs: { id: \"testTrakt-result\" }\n },\n [_vm._v(_vm._s(_vm.testTraktResult))]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n attrs: { type: \"hidden\", id: \"trakt_pin_url\" },\n domProps: { value: _vm.trakt.pinUrl }\n }),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { id: \"testTrakt\" },\n on: { click: _vm.testTrakt }\n },\n [_vm._v(\"Test Trakt\")]\n ),\n _vm._v(\" \"),\n !_vm.authOnly\n ? _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { id: \"forceSync\" },\n on: { click: _vm.traktForceSync }\n },\n [_vm._v(\"Force Sync\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa config_submitter\",\n attrs: { disabled: _vm.saving },\n on: { click: _vm.save }\n },\n [_vm._v(\"Save Changes\")]\n )\n ],\n 2\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/helpers/trakt-authentication.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/history-compact.vue?vue&type=template&id=899ba7ec&scoped=true&":
/*!******************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/history-compact.vue?vue&type=template&id=899ba7ec&scoped=true& ***!
@@ -6047,7 +6340,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"align-left\" }, [\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Backlog Search:\")]),\n _vm._v(\" \"),\n _c(\"h5\", [\n _vm._v(\n \"Note: Limited by backlog days setting: last \" +\n _vm._s(_vm.search.general.backlogDays) +\n \" days\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"button\",\n { staticClass: \"btn-medusa\", on: { click: _vm.forceBacklog } },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n { staticClass: \"btn-medusa\", on: { click: _vm.toggleBacklog } },\n [\n _vm.schedulerStatus.backlogPaused\n ? [\n _c(\"i\", { staticClass: \"icon-play\" }),\n _vm._v(\" Unpause\")\n ]\n : [\n _c(\"i\", { staticClass: \"icon-paused\" }),\n _vm._v(\" Pause\")\n ]\n ],\n 2\n ),\n _vm._v(\" \"),\n !_vm.schedulerStatus.backlogRunning\n ? [_vm._v(\"Not in progress\")]\n : [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.backlogPaused ? \"Paused: \" : \"\"\n ) + \"Currently running\"\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Daily Search:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n { staticClass: \"btn-medusa\", on: { click: _vm.forceDaily } },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.schedulerStatus.dailySearchStatus\n ? \"In Progress\"\n : \"Not in progress\"\n ) +\n \"\\n \"\n )\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Propers Search:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { disabled: !_vm.search.general.downloadPropers },\n on: { click: _vm.forceFindPropers }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n !_vm.search.general.downloadPropers\n ? [_vm._v(\"Propers search disabled\")]\n : [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.properSearchStatus\n ? \"In Progress\"\n : \"Not in progress\"\n )\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Subtitle Search:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { disabled: !_vm.general.subtitles.enabled },\n on: { click: _vm.forceSubtitlesFinder }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n !_vm.general.subtitles.enabled\n ? [_vm._v(\"Subtitle search disabled\")]\n : [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.subtitlesFinderStatus\n ? \"In Progress\"\n : \"Not in progress\"\n )\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Download Handler:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: {\n disabled: _vm.schedulerStatus.downloadHandlerStatus\n },\n on: { click: _vm.forceDownloadHandler }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.downloadHandlerStatus\n ? \"In Progress\"\n : \"Not in progress\"\n )\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Scene Exceptions:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { disabled: _vm.sceneRefresh.inProgress },\n on: { click: _vm.forceSceneExceptionRefresh }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.sceneRefresh.message,\n expression: \"sceneRefresh.message\"\n }\n ]\n },\n [\n _c(\"img\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.sceneRefresh.showSpinner,\n expression: \"sceneRefresh.showSpinner\"\n }\n ],\n attrs: { src: _vm.spinnerSrc, height: \"16\", width: \"16\" }\n }),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.sceneRefresh.message) +\n \"\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n !_vm.sceneRefresh.inProgress &&\n _vm.sceneExceptions.every(function(item) {\n return item.lastRefresh\n })\n ? _c(\n \"ul\",\n { staticClass: \"simpleList\" },\n _vm._l(_vm.sceneExceptions, function(item) {\n return _c(\n \"li\",\n { key: item.id },\n [\n item.url\n ? _c(\"app-link\", { attrs: { href: item.url } }, [\n _vm._v(\n \"Last updated \" + _vm._s(item.name) + \" exceptions\"\n )\n ])\n : [\n _vm._v(\n \"Last updated \" + _vm._s(item.name) + \" exceptions\"\n )\n ],\n _vm._v(\n \"\\n \" +\n _vm._s(item.lastRefresh) +\n \"\\n \"\n )\n ],\n 2\n )\n }),\n 0\n )\n : _vm._e()\n ])\n ]),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Search Queue:\")]),\n _vm._v(\" \"),\n _c(\"ul\", { staticClass: \"simpleList\" }, [\n _c(\"li\", [\n _vm._v(\"Backlog: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(_vm.schedulerStatus.searchQueueLength.backlog) +\n \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Daily: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(_vm.schedulerStatus.searchQueueLength.daily) +\n \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Forced: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.forcedSearchQueueLength.backlog_search\n ) + \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Manual: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.forcedSearchQueueLength.manual_search\n ) + \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Failed: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(_vm.schedulerStatus.forcedSearchQueueLength.failed) +\n \" pending items\"\n )\n ])\n ])\n ])\n ])\n ])\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"align-left\" }, [\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Backlog Search:\")]),\n _vm._v(\" \"),\n _c(\"h5\", [\n _vm._v(\n \"Note: Limited by backlog days setting: last \" +\n _vm._s(_vm.search.general.backlogDays) +\n \" days\"\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"button\",\n { staticClass: \"btn-medusa\", on: { click: _vm.forceBacklog } },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n { staticClass: \"btn-medusa\", on: { click: _vm.toggleBacklog } },\n [\n _vm.schedulerStatus.backlogPaused\n ? [\n _c(\"i\", { staticClass: \"icon-play\" }),\n _vm._v(\" Unpause\")\n ]\n : [\n _c(\"i\", { staticClass: \"icon-paused\" }),\n _vm._v(\" Pause\")\n ]\n ],\n 2\n ),\n _vm._v(\" \"),\n !_vm.schedulerStatus.backlogRunning\n ? [_vm._v(\"Not in progress\")]\n : [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.backlogPaused ? \"Paused: \" : \"\"\n ) + \"Currently running\"\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Daily Search:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n { staticClass: \"btn-medusa\", on: { click: _vm.forceDaily } },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.schedulerStatus.dailySearchStatus\n ? \"In Progress\"\n : \"Not in progress\"\n ) +\n \"\\n \"\n )\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Propers Search:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { disabled: !_vm.search.general.downloadPropers },\n on: { click: _vm.forceFindPropers }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n !_vm.search.general.downloadPropers\n ? [_vm._v(\"Propers search disabled\")]\n : [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.properSearchStatus\n ? \"In Progress\"\n : \"Not in progress\"\n )\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Subtitle Search:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { disabled: !_vm.general.subtitles.enabled },\n on: { click: _vm.forceSubtitlesFinder }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n !_vm.general.subtitles.enabled\n ? [_vm._v(\"Subtitle search disabled\")]\n : [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.subtitlesFinderStatus\n ? \"In Progress\"\n : \"Not in progress\"\n )\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-lg-12\" },\n [\n _c(\"h3\", [_vm._v(\"Download Handler:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: {\n disabled: _vm.schedulerStatus.downloadHandlerStatus\n },\n on: { click: _vm.forceDownloadHandler }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.downloadHandlerStatus\n ? \"In Progress\"\n : \"Not in progress\"\n )\n )\n ]\n ],\n 2\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Scene Exceptions:\")]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { disabled: _vm.sceneRefresh.inProgress },\n on: { click: _vm.forceSceneExceptionRefresh }\n },\n [\n _c(\"i\", { staticClass: \"icon-exclamation-sign\" }),\n _vm._v(\" Force\\n \")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.sceneRefresh.message,\n expression: \"sceneRefresh.message\"\n }\n ]\n },\n [\n _c(\"img\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.sceneRefresh.showSpinner,\n expression: \"sceneRefresh.showSpinner\"\n }\n ],\n attrs: { src: _vm.spinnerSrc, height: \"16\", width: \"16\" }\n }),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.sceneRefresh.message) +\n \"\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n !_vm.sceneRefresh.inProgress &&\n _vm.sceneExceptions.every(function(item) {\n return item.lastRefresh\n })\n ? _c(\n \"ul\",\n { staticClass: \"simpleList\" },\n _vm._l(_vm.sceneExceptions, function(item) {\n return _c(\n \"li\",\n { key: item.id },\n [\n item.url\n ? _c(\"app-link\", { attrs: { href: item.url } }, [\n _vm._v(\n \"Last updated \" + _vm._s(item.name) + \" exceptions\"\n )\n ])\n : [\n _vm._v(\n \"Last updated \" + _vm._s(item.name) + \" exceptions\"\n )\n ],\n _vm._v(\n \"\\n \" +\n _vm._s(item.lastRefresh) +\n \"\\n \"\n )\n ],\n 2\n )\n }),\n 0\n )\n : _vm._e()\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Force refresh recommended list:\")]),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"\\n Note! Syncing shows with a recommended list may take a while.\\n The action will be queued. For example staring a sync with Trakt and directly after Imdb.\\n You will won't see results for Imdb after the sync of Trakt has fully completed.\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"ul\", { staticClass: \"simpleList recommended-list\" }, [\n _c(\"li\", [\n _c(\n \"span\",\n {\n on: {\n click: function($event) {\n return _vm.searchRecommendedShows(\"trakt\")\n }\n }\n },\n [_vm._v(\"Trakt\")]\n )\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _c(\n \"span\",\n {\n on: {\n click: function($event) {\n return _vm.searchRecommendedShows(\"imdb\")\n }\n }\n },\n [_vm._v(\"Imdb\")]\n )\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _c(\n \"span\",\n {\n on: {\n click: function($event) {\n return _vm.searchRecommendedShows(\"anidb\")\n }\n }\n },\n [_vm._v(\"Anidb\")]\n )\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _c(\n \"span\",\n {\n on: {\n click: function($event) {\n return _vm.searchRecommendedShows(\"anilist\")\n }\n }\n },\n [_vm._v(\"AniList\")]\n )\n ])\n ])\n ])\n ]),\n _vm._v(\" \"),\n _vm.schedulerStatus\n ? _c(\"div\", { staticClass: \"row\" }, [\n _c(\"div\", { staticClass: \"col-lg-12\" }, [\n _c(\"h3\", [_vm._v(\"Search Queue:\")]),\n _vm._v(\" \"),\n _c(\"ul\", { staticClass: \"simpleList\" }, [\n _c(\"li\", [\n _vm._v(\"Backlog: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(_vm.schedulerStatus.searchQueueLength.backlog) +\n \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Daily: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(_vm.schedulerStatus.searchQueueLength.daily) +\n \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Forced: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.forcedSearchQueueLength.backlog_search\n ) + \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Manual: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(\n _vm.schedulerStatus.forcedSearchQueueLength.manual_search\n ) + \" pending items\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"li\", [\n _vm._v(\"Failed: \"),\n _c(\"i\", [\n _vm._v(\n _vm._s(_vm.schedulerStatus.forcedSearchQueueLength.failed) +\n \" pending items\"\n )\n ])\n ])\n ])\n ])\n ])\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/manage-searches.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
/***/ }),
@@ -6095,6 +6388,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
+/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true&":
+/*!*********************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended-poster.vue?vue&type=template&id=61ca7b8f&scoped=true& ***!
+ \*********************************************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"poster-wrapper\" }, [\n _c(\n \"div\",\n { staticClass: \"recommended-image\" },\n [\n _c(\n \"app-link\",\n { attrs: { href: _vm.show.imageHref } },\n [\n _c(\"asset\", {\n attrs: {\n \"default-src\": _vm.show.imageSrc,\n lazy: \"\",\n type: \"posterThumb\",\n cls: \"show-image\",\n link: false,\n height: \"273px\",\n \"img-width\": 186\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.show.genres.length > 0\n ? _c(\"div\", { staticClass: \"tag-container\" }, [\n _c(\n \"ul\",\n { staticClass: \"genre-tags\" },\n _vm._l(_vm.show.genres, function(genre) {\n return _c(\"li\", { key: genre }, [_vm._v(_vm._s(genre))])\n }),\n 0\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"transition\", { attrs: { name: \"plot\" } }, [\n _vm.displayPlot && _vm.show.plot\n ? _c(\"div\", { staticClass: \"plot-overlay\" }, [\n _c(\"span\", [_vm._v(_vm._s(_vm.show.plot))])\n ])\n : _vm._e()\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"check-overlay\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"show-title\" }, [\n _c(\"span\", { attrs: { title: _vm.show.title } }, [\n _vm._v(_vm._s(_vm.show.title))\n ]),\n _vm._v(\" \"),\n _vm.show.plot\n ? _c(\n \"div\",\n {\n staticClass: \"toggle-plot\",\n on: {\n click: function($event) {\n _vm.displayPlot = !_vm.displayPlot\n }\n }\n },\n [\n _vm.displayPlot\n ? _c(\"span\", [_vm._v(\"hide plot\")])\n : _c(\"span\", [_vm._v(\"show plot\")])\n ]\n )\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-md-7 col-xs-12\", attrs: { name: \"left\" } },\n [\n _c(\"div\", { staticClass: \"show-rating\" }, [\n _c(\n \"p\",\n [\n _vm._v(_vm._s(_vm.show.rating.toFixed(1)) + \" \"),\n _c(\"img\", { attrs: { src: \"images/heart.png\" } }),\n _vm._v(\" \"),\n _vm.show.isAnime\n ? [\n _c(\n \"app-link\",\n {\n staticClass: \"recommended-show-url\",\n attrs: {\n href: \"https://anidb.net/a\" + _vm.show.externals.aid\n }\n },\n [\n _c(\"img\", {\n staticClass: \"recommended-show-link-inline\",\n attrs: {\n src: \"images/anidb_inline_refl.png\",\n alt: \"\"\n }\n })\n ]\n )\n ]\n : _vm._e(),\n _vm._v(\" \"),\n _vm.show.recommender === \"Trakt Popular\"\n ? [\n _c(\n \"a\",\n {\n staticClass: \"recommended-show-url\",\n attrs: {\n href: \"https://trakt.tv/shows/\" + _vm.show.seriesId\n }\n },\n [\n _c(\"img\", {\n staticClass: \"recommended-show-link-inline\",\n attrs: { src: \"images/trakt.png\", alt: \"\" }\n })\n ]\n )\n ]\n : _vm._e()\n ],\n 2\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"show-votes\" }, [\n _c(\"i\", [_vm._v(\"x \" + _vm._s(_vm.show.votes))])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"col-md-5 col-xs-12\", attrs: { name: \"right\" } },\n [\n _c(\"div\", { staticClass: \"recommendedShowTitleIcons\" }, [\n _vm.traktConfig.removedFromMedusa.includes(_vm.show.mappedSeriesId)\n ? _c(\n \"button\",\n { staticClass: \"btn-medusa btn-xs\" },\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?indexername=\" +\n _vm.show.mappedIndexerName +\n \"&seriesid=\" +\n _vm.show.mappedSeriesId\n }\n },\n [_vm._v(\"Watched\")]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.show.source === _vm.externals.TRAKT\n ? _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-xs\",\n attrs: {\n disabled: _vm.show.trakt.blacklisted,\n \"data-indexer-id\": _vm.show.mappedSeriesId\n },\n on: {\n click: function($event) {\n return _vm.blacklistTrakt(_vm.show)\n }\n }\n },\n [_vm._v(\"Blacklist\")]\n )\n : _vm._e()\n ])\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row\" }, [\n _c(\n \"div\",\n { staticClass: \"col-md-12 addshowoptions\" },\n [\n _vm.show.showInLibrary\n ? [\n _vm.show.showInLibrary\n ? _c(\n \"button\",\n { staticClass: \"btn-medusa btn-xs\" },\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"home/displayShow?showslug=\" +\n _vm.show.showInLibrary\n }\n },\n [_vm._v(\"Open in library\")]\n )\n ],\n 1\n )\n : _vm._e()\n ]\n : [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedAddShowOption,\n expression: \"selectedAddShowOption\"\n }\n ],\n ref: _vm.show.source + \"-\" + _vm.show.seriesId,\n staticClass: \"rec-show-select\",\n attrs: { name: \"addshow\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedAddShowOption = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.addShowOptions(_vm.show), function(option) {\n return _c(\n \"option\",\n { key: option.value, domProps: { value: option.value } },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-xs rec-show-button\",\n attrs: { disabled: _vm.show.trakt.blacklisted },\n on: {\n click: function($event) {\n return _vm.addShow(_vm.show)\n }\n }\n },\n [_vm._v(\"\\n Search/Add\\n \")]\n )\n ]\n ],\n 2\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/recommended-poster.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
+/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=template&id=7226820a&scoped=true&":
+/*!**************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/recommended.vue?vue&type=template&id=7226820a&scoped=true& ***!
+ \**************************************************************************************************************************************************************************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"recommended-shows\" } },\n [\n _c(\"vue-snotify\"),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"row\", attrs: { id: \"recommended-shows-lists\" } },\n [\n _c(\n \"div\",\n { staticClass: \"col-md-12\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"recommended-source\",\n label: \"Select a Source\"\n }\n },\n [\n !_vm.showsLoaded\n ? _c(\n \"select\",\n {\n staticClass: \"form-control max-width\",\n attrs: { disabled: \"disabled\" }\n },\n [\n _c(\"option\", { attrs: { value: \"\" } }, [\n _vm._v(\"Loading shows, please wait\")\n ])\n ]\n )\n : _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedSource,\n expression: \"selectedSource\"\n }\n ],\n staticClass: \"form-control max-width\",\n attrs: {\n disabled: !_vm.showsLoaded,\n id: \"recommended-source\",\n name: \"recommended-source\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedSource = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.sourceOptions, function(option) {\n return _c(\n \"option\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showsLoaded,\n expression: \"showsLoaded\"\n }\n ],\n key: option.value,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"recommended-list\",\n label: \"Select a list\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedList,\n expression: \"selectedList\"\n }\n ],\n staticClass: \"form-control max-width\",\n attrs: {\n disabled: !_vm.showsLoaded,\n id: \"recommended-list\",\n name: \"recommended-list\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedList = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.listOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(option.text) +\n \"\\n \"\n )\n ]\n )\n }),\n 0\n )\n ]\n )\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"row\", attrs: { id: \"recommended-shows-options\" } },\n [\n _c(\n \"div\",\n { staticClass: \"col-md-12\" },\n [\n _c(\"config-toggle-slider\", {\n attrs: {\n label: \"Pass Default show options\",\n id: \"default_show_options\"\n },\n model: {\n value: _vm.enableShowOptions,\n callback: function($$v) {\n _vm.enableShowOptions = $$v\n },\n expression: \"enableShowOptions\"\n }\n }),\n _vm._v(\" \"),\n _c(\"add-show-options\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.enableShowOptions,\n expression: \"enableShowOptions\"\n }\n ],\n attrs: { \"enable-anime-options\": \"\" },\n on: { change: _vm.updateOptions }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"show-option\" }, [\n _c(\"span\", [_vm._v(\"Sort By:\")]),\n _vm._v(\" \"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.sortOptionsValue,\n expression: \"sortOptionsValue\"\n }\n ],\n staticClass: \"form-control form-control-inline input-sm\",\n attrs: { name: \"showsort\", id: \"showsort\" },\n on: {\n change: [\n function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.sortOptionsValue = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n },\n _vm.sort\n ]\n }\n },\n _vm._l(_vm.sortOptions, function(option) {\n return _c(\n \"option\",\n { key: option.value, domProps: { value: option.value } },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"show-option\" }, [\n _c(\"span\", { staticStyle: { \"margin-left\": \"12px\" } }, [\n _vm._v(\"Sort Order:\")\n ]),\n _vm._v(\" \"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.sortDirectionOptionsValue,\n expression: \"sortDirectionOptionsValue\"\n }\n ],\n staticClass: \"form-control form-control-inline input-sm\",\n attrs: {\n name: \"showsortdirection\",\n id: \"showsortdirection\"\n },\n on: {\n change: [\n function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.sortDirectionOptionsValue = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n },\n _vm.sortDirection\n ]\n }\n },\n _vm._l(_vm.sortDirectionOptions, function(option) {\n return _c(\n \"option\",\n { key: option.value, domProps: { value: option.value } },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"show-option\" }, [\n _c(\"span\", { staticStyle: { \"margin-left\": \"12px\" } }, [\n _vm._v(\"Filter:\")\n ]),\n _vm._v(\" \"),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.filterShows,\n expression: \"filterShows\"\n }\n ],\n staticClass: \"form-control form-control-inline input-sm\",\n attrs: { type: \"text\", placeholder: \"no filter\" },\n domProps: { value: _vm.filterShows },\n on: {\n input: [\n function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.filterShows = $event.target.value\n },\n function($event) {\n return _vm.filter(\"filterByText\")\n }\n ]\n }\n })\n ])\n ],\n 1\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row\", attrs: { id: \"recommended-shows\" } }, [\n _c(\n \"div\",\n { staticClass: \"col-md-12\", attrs: { id: \"popularShows\" } },\n [\n _vm.selectedSource === _vm.externals.TRAKT && _vm.traktWarning\n ? _c(\n \"div\",\n { staticClass: \"trakt-auth-container\" },\n [\n _c(\"font-awesome-icon\", {\n staticClass: \"close-container\",\n attrs: { icon: [\"far\", \"times-circle\"] },\n on: {\n click: function($event) {\n _vm.traktWarning = false\n }\n }\n }),\n _vm._v(\" \"),\n _vm.traktWarning\n ? _c(\"span\", { staticClass: \"trakt-warning\" }, [\n _vm._v(_vm._s(_vm.traktWarningMessage))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n !_vm.showTraktAuthDialog\n ? _c(\n \"button\",\n {\n staticClass: \"btn-medusa\",\n attrs: { id: \"config-trakt\" },\n on: {\n click: function($event) {\n _vm.showTraktAuthDialog = true\n }\n }\n },\n [_vm._v(\"Config Trakt\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showTraktAuthDialog\n ? _c(\"trakt-authentication\", {\n attrs: { \"auth-only\": \"\" }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.filteredShowsByList.length\n ? _c(\n \"isotope\",\n {\n ref: \"filteredShows\",\n staticClass: \"isoDefault\",\n attrs: {\n list: _vm.filteredShowsByList,\n id: \"isotope-container\",\n options: _vm.option\n },\n on: { layout: _vm.isotopeLayout }\n },\n _vm._l(_vm.filteredShowsByList, function(show) {\n return _c(\n \"div\",\n {\n key: show.seriesId,\n class: _vm.containerClass(show),\n attrs: {\n \"data-name\": show.title,\n \"data-rating\": show.rating,\n \"data-votes\": show.votes,\n \"data-anime\": show.isAnime\n }\n },\n [_c(\"recommended-poster\", { attrs: { show: show } })],\n 1\n )\n }),\n 0\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showsLoaded &&\n _vm.filteredShowsByList.length === 0 &&\n _vm.selectedSource !== -1\n ? _c(\"div\", { staticClass: \"align-center\" }, [\n _c(\n \"button\",\n {\n staticClass: \"btn-medusa btn-xs rec-show-button\",\n on: { click: _vm.searchRecommendedShows }\n },\n [\n _vm._v(\n \"\\n Search for new recommended shows from \" +\n _vm._s(_vm.sourceToString[_vm.selectedSource]) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 1\n )\n ])\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/recommended.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options");
+
+/***/ }),
+
/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/restart.vue?vue&type=template&id=625a88af&":
/*!**********************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/restart.vue?vue&type=template&id=625a88af& ***!
@@ -6586,6 +6901,16 @@ eval("// style-loader: Adds some css to the DOM by adding a