oblecto 0.2.8 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Oblecto-Web/dist/web/index.html +24 -3
- package/Oblecto-Web/dist/web/static/index-C-JsqHHk.css +1 -0
- package/Oblecto-Web/dist/web/static/index-DSZgpOOu.js +576 -0
- package/README.md +43 -7
- package/dist/bin/oblecto.js +12468 -61
- package/dist/index.js +10676 -6
- package/package.json +68 -36
- package/res/AGENTS.md +8 -0
- package/res/config.json +34 -7
- package/Oblecto-Web/LICENSE +0 -674
- package/Oblecto-Web/README.md +0 -20
- package/Oblecto-Web/dist/web/static/css/app.921835f8c2878caee6d1085d9982fa86.css +0 -1
- package/Oblecto-Web/dist/web/static/css/app.921835f8c2878caee6d1085d9982fa86.css.map +0 -1
- package/Oblecto-Web/dist/web/static/js/app.758b833f6395444695b6.js +0 -6896
- package/Oblecto-Web/dist/web/static/js/app.758b833f6395444695b6.js.map +0 -1
- package/Oblecto-Web/dist/web/static/js/manifest.d327d604ee57c29a75d0.js +0 -154
- package/Oblecto-Web/dist/web/static/js/manifest.d327d604ee57c29a75d0.js.map +0 -1
- package/Oblecto-Web/dist/web/static/js/vendor.84f1e8002f100f63d6ef.js +0 -32455
- package/Oblecto-Web/dist/web/static/js/vendor.84f1e8002f100f63d6ef.js.map +0 -1
- package/Oblecto-Web/package.json +0 -118
- package/dist/bin/cliManager.js +0 -102
- package/dist/bin/scripts/adduser.js +0 -50
- package/dist/bin/scripts/changepassword.js +0 -48
- package/dist/bin/scripts/deluser.js +0 -34
- package/dist/bin/scripts/helpers/argumentError.js +0 -12
- package/dist/bin/scripts/helpers/generateAssetDirectories.js +0 -37
- package/dist/bin/scripts/init/assets.js +0 -24
- package/dist/bin/scripts/init/database.js +0 -21
- package/dist/bin/scripts/init/general.js +0 -54
- package/dist/bin/scripts/init/index.js +0 -26
- package/dist/bin/scripts/removepassword.js +0 -42
- package/dist/config.js +0 -45
- package/dist/core/graphical.js +0 -179
- package/dist/core/index.js +0 -24
- package/dist/lib/artwork/ArtworkScaler.js +0 -31
- package/dist/lib/artwork/ArtworkUtils.js +0 -35
- package/dist/lib/artwork/movies/AggregateMovieArtworkRetriever.js +0 -58
- package/dist/lib/artwork/movies/MovieArtworkCollector.js +0 -93
- package/dist/lib/artwork/movies/MovieArtworkDownloader.js +0 -65
- package/dist/lib/artwork/movies/artworkRetrievers/FanarttvMovieArtworkRetriever.js +0 -57
- package/dist/lib/artwork/movies/artworkRetrievers/TmdbMovieArtworkRetriever.js +0 -47
- package/dist/lib/artwork/series/AggregateSeriesArtworkRetriever.js +0 -58
- package/dist/lib/artwork/series/SeriesArtworkCollector.js +0 -95
- package/dist/lib/artwork/series/SeriesArtworkDownloader.js +0 -62
- package/dist/lib/artwork/series/artworkRetrievers/FanarttvSeriesArtworkRetriever.js +0 -44
- package/dist/lib/artwork/series/artworkRetrievers/TmdbSeriesArtworkRetriever.js +0 -64
- package/dist/lib/artwork/series/artworkRetrievers/TvdbSeriesArtworkRetriever.js +0 -51
- package/dist/lib/cleaners/FileCleaner.js +0 -56
- package/dist/lib/cleaners/MovieCleaner.js +0 -42
- package/dist/lib/cleaners/SeriesCleaner.js +0 -70
- package/dist/lib/common/AggregateIdentifier.js +0 -53
- package/dist/lib/common/AggregateUpdateRetriever.js +0 -43
- package/dist/lib/downloader/index.js +0 -59
- package/dist/lib/errors/DebugExtendableError.js +0 -20
- package/dist/lib/errors/ExtendableError.js +0 -22
- package/dist/lib/errors/FileExistsError.js +0 -14
- package/dist/lib/errors/IdentificationError.js +0 -14
- package/dist/lib/errors/InfoExtendableError.js +0 -20
- package/dist/lib/errors/VideoAnalysisError.js +0 -14
- package/dist/lib/errors/VideoIdentificationError.js +0 -14
- package/dist/lib/errors/WarnExtendableError.js +0 -20
- package/dist/lib/federation/client/FederationClient.js +0 -127
- package/dist/lib/federation/client/FederationClientController.js +0 -45
- package/dist/lib/federation/client/FederationDataClient.js +0 -56
- package/dist/lib/federation/client/FederationMediaClient.js +0 -70
- package/dist/lib/federation/server/FederationController.js +0 -32
- package/dist/lib/federation/server/FederationDataServer.js +0 -22
- package/dist/lib/federation/server/FederationDataServerConnection.js +0 -96
- package/dist/lib/federation/server/FederationMediaServer.js +0 -22
- package/dist/lib/federation/server/FederationMediaServerConnection.js +0 -83
- package/dist/lib/federation/server/FederationServer.js +0 -40
- package/dist/lib/federation/server/FederationServerConnection.js +0 -97
- package/dist/lib/federationindexer/FederationEpisodeIndexer.js +0 -65
- package/dist/lib/federationindexer/FederationMovieIndexer.js +0 -48
- package/dist/lib/indexers/MediaIdentifier.js +0 -15
- package/dist/lib/indexers/files/FileIndexer.js +0 -103
- package/dist/lib/indexers/files/cleaner.js +0 -43
- package/dist/lib/indexers/movies/AggregateMovieIdentifier.js +0 -45
- package/dist/lib/indexers/movies/MovieCollector.js +0 -65
- package/dist/lib/indexers/movies/MovieIdentifier.js +0 -22
- package/dist/lib/indexers/movies/MovieIndexer.js +0 -47
- package/dist/lib/indexers/movies/identifiers/TmdbMovieidentifier.js +0 -50
- package/dist/lib/indexers/series/AggregateEpisodeIdentifier.js +0 -46
- package/dist/lib/indexers/series/AggregateSeriesIdentifier.js +0 -46
- package/dist/lib/indexers/series/EpisodeIdentifier.js +0 -24
- package/dist/lib/indexers/series/SeriesCollector.js +0 -65
- package/dist/lib/indexers/series/SeriesIdentifer.js +0 -23
- package/dist/lib/indexers/series/SeriesIndexer.js +0 -134
- package/dist/lib/indexers/series/identifiers/TmdbEpisodeIdentifier.js +0 -38
- package/dist/lib/indexers/series/identifiers/TmdbSeriesIdentifier.js +0 -66
- package/dist/lib/indexers/series/identifiers/TvdbEpisodeIdentifier.js +0 -71
- package/dist/lib/indexers/series/identifiers/TvdbSeriesIdentifier.js +0 -82
- package/dist/lib/oblecto/index.js +0 -125
- package/dist/lib/queue/index.js +0 -82
- package/dist/lib/realtime/RealtimeClient.js +0 -137
- package/dist/lib/realtime/RealtimeController.js +0 -50
- package/dist/lib/sets/tv/MovieSetCollector.js +0 -49
- package/dist/lib/streamSessions/StreamSession.js +0 -148
- package/dist/lib/streamSessions/StreamSessionController.js +0 -78
- package/dist/lib/streamSessions/StreamSessionTypes/DirectHttpStreamSession.js +0 -105
- package/dist/lib/streamSessions/StreamSessionTypes/DirectStreamSession.js +0 -47
- package/dist/lib/streamSessions/StreamSessionTypes/HLSStreamer.js +0 -126
- package/dist/lib/streamSessions/StreamSessionTypes/RecodeFederationStreamSession.js +0 -72
- package/dist/lib/streamSessions/StreamSessionTypes/RecodeStreamSession.js +0 -65
- package/dist/lib/updaters/files/FileUpdateCollector.js +0 -44
- package/dist/lib/updaters/files/FileUpdater.js +0 -194
- package/dist/lib/updaters/movies/AggregateMovieUpdateRetriever.js +0 -44
- package/dist/lib/updaters/movies/MovieUpdateCollector.js +0 -48
- package/dist/lib/updaters/movies/MovieUpdater.js +0 -38
- package/dist/lib/updaters/movies/informationRetrievers/TmdbMovieRetriever.js +0 -42
- package/dist/lib/updaters/series/AggregateEpisodeUpdateRetriever.js +0 -41
- package/dist/lib/updaters/series/AggregateSeriesUpdateRetriever.js +0 -44
- package/dist/lib/updaters/series/SeriesUpdateCollector.js +0 -79
- package/dist/lib/updaters/series/SeriesUpdater.js +0 -84
- package/dist/lib/updaters/series/informationRetrievers/TmdbEpisodeRetriever.js +0 -66
- package/dist/lib/updaters/series/informationRetrievers/TmdbSeriesRetriever.js +0 -63
- package/dist/lib/updaters/series/informationRetrievers/TvdbEpisodeRetriever.js +0 -38
- package/dist/lib/updaters/series/informationRetrievers/TvdbSeriesRetriever.js +0 -50
- package/dist/models/episode.js +0 -62
- package/dist/models/episodeFiles.js +0 -14
- package/dist/models/file.js +0 -32
- package/dist/models/movie.js +0 -35
- package/dist/models/movieFiles.js +0 -14
- package/dist/models/movieSet.js +0 -26
- package/dist/models/series.js +0 -55
- package/dist/models/seriesSet.js +0 -17
- package/dist/models/stream.js +0 -81
- package/dist/models/trackEpisode.js +0 -17
- package/dist/models/trackEpisodes.js +0 -8
- package/dist/models/trackMovie.js +0 -17
- package/dist/models/trackMovies.js +0 -8
- package/dist/models/tvshow.js +0 -46
- package/dist/models/tvshowSet.js +0 -8
- package/dist/models/user.js +0 -26
- package/dist/submodules/REST/index.js +0 -59
- package/dist/submodules/REST/middleware/auth.js +0 -28
- package/dist/submodules/REST/routes/auth.js +0 -48
- package/dist/submodules/REST/routes/clients.js +0 -54
- package/dist/submodules/REST/routes/episodes.js +0 -275
- package/dist/submodules/REST/routes/files.js +0 -92
- package/dist/submodules/REST/routes/index.js +0 -48
- package/dist/submodules/REST/routes/movies.js +0 -305
- package/dist/submodules/REST/routes/sets.js +0 -35
- package/dist/submodules/REST/routes/settings/index.js +0 -22
- package/dist/submodules/REST/routes/settings/maintenance.js +0 -87
- package/dist/submodules/REST/routes/settings/misc.js +0 -38
- package/dist/submodules/REST/routes/settings/sources.js +0 -61
- package/dist/submodules/REST/routes/tvshows.js +0 -140
- package/dist/submodules/REST/routes/users.js +0 -107
- package/dist/submodules/REST/routes/web.js +0 -43
- package/dist/submodules/axiosTimeout.js +0 -30
- package/dist/submodules/database.js +0 -180
- package/dist/submodules/ffmpeg.js +0 -23
- package/dist/submodules/ffprobe.js +0 -22
- package/dist/submodules/guessit.js +0 -48
- package/dist/submodules/handlers/DirectStreamer.js +0 -68
- package/dist/submodules/handlers/FFMPEGHandlers/DvdStreamer.js +0 -52
- package/dist/submodules/handlers/FFMPEGHandlers/RemuxStreamer.js +0 -33
- package/dist/submodules/handlers/FFMPEGHandlers/TranscodeStreamer.js +0 -33
- package/dist/submodules/handlers/FFMPEGStreamer.js +0 -56
- package/dist/submodules/handlers/FederationStreamer.js +0 -23
- package/dist/submodules/handlers/HLSSessionHandler.js +0 -141
- package/dist/submodules/logger/index.js +0 -43
- package/dist/submodules/promiseTimeout.js +0 -28
- package/dist/submodules/zeroconf.js +0 -19
- package/dist/transcoders/dvd.js +0 -26
- package/dist/transcoders/index.js +0 -42
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/components/pages/Main.vue?1fdd","webpack:///./src/components/itemTypes/Series.vue?4d4f","webpack:///src/components/pages/SeriesView.vue","webpack:///src/components/modals/UserAdd.vue","webpack:///./src/components/WatchPanel.vue?9176","webpack:///./src/components/modals/ShowModify.vue?1b1d","webpack:///./src/components/modals/MovieDialog.vue?28e6","webpack:///./src/components/pages/Series.vue?6159","webpack:///./src/components/modals/EpisodeDialog.vue?63c8","webpack:///./src/components/modals/ShowDialog.vue?1450","webpack:///src/components/modals/CopyText.vue","webpack:///./src/App.vue?ca1c","webpack:///./src/components/pages/MovieInfo.vue?5a9f","webpack:///./src/components/pages/Login.vue?aeb7","webpack:///./src/components/pages/Series.vue","webpack:///./src/components/pages/SeriesView.vue?2e40","webpack:///./src/components/settings/IndexerSettings.vue?a78e","webpack:///./src/components/modals/ShowDialog.vue?1243","webpack:///src/components/modals/MovieDialog.vue","webpack:///./src/components/settings/Libraries.vue?5ff3","webpack:///./src/components/settings/UserManager.vue?57c6","webpack:///./src/components/itemTypes/Movie.vue?aa61","webpack:///src/components/LoadingPage.vue","webpack:///src/components/WatchPanel.vue","webpack:///src/components/modals/NewMovieSet.vue","webpack:///src/components/pages/MovieInfo.vue","webpack:///./src/store/modules/movies.js","webpack:///src/components/pages/Login.vue","webpack:///./src/components/itemTypes/Episode.vue?15c8","webpack:///src/components/itemLists/EpisodeList.vue","webpack:///./src/components/WatchPanel.vue?7f1c","webpack:///./src/components/pages/Settings.vue?8edb","webpack:///./src/components/modals/ShowModify.vue?fb84","webpack:///./src/components/itemLists/MovieList.vue?f35f","webpack:///src/components/settings/UserManagement/userEntry.vue","webpack:///src/components/pages/Main.vue","webpack:///src/components/NavBar.vue","webpack:///./src/components/WatchPanel.vue?73ac","webpack:///./src/store/mutation-types.js","webpack:///src/components/itemLists/MovieList.vue","webpack:///src/components/playBar.vue","webpack:///src/components/modals/ChangeRemoteDialog.vue","webpack:///./src/components/settings/Maintenance.vue?4f43","webpack:///src/components/modals/ShowDialog.vue","webpack:///./src/components/itemLists/EpisodeList.vue?c2df","webpack:///./src/components/modals/PasswordChange.vue?4220","webpack:///./src/components/itemLists/EpisodeList.vue?e0b7","webpack:///./src/components/itemTypes/Episode.vue?8b34","webpack:///./src/App.vue?8a3f","webpack:///./src/components/modals/NewMovieSet.vue?4f05","webpack:///./src/store/modules/episodes.js","webpack:///./src/components/settings/UserManagement/userEntry.vue?3637","webpack:///./src/store/index.js","webpack:///./src/components/itemLists/MovieList.vue?d5f9","webpack:///src/components/pages/Movies.vue","webpack:///./src/components/modals/EpisodeDialog.vue?d612","webpack:///./src/components/pages/Movies.vue","webpack:///src/components/itemTypes/Movie.vue","webpack:///./src/components/pages/Settings.vue?32a1","webpack:///src/components/pages/Series.vue","webpack:///./src/App.vue?fc6a","webpack:///./src/main.js","webpack:///./src/components/pages/Search.vue?8f3e","webpack:///./src/components/LoadingPage.vue?87fb","webpack:///src/components/modals/PasswordChange.vue","webpack:///./src/components/NavBar.vue?bc85","webpack:///./src/components/itemLists/SeriesList.vue?c9e7","webpack:///./src/components/itemLists/EpisodeList.vue?3c6b","webpack:///./src/components/modals/ChangeRemoteDialog.vue?662d","webpack:///./src/store/modules/series.js","webpack:///./src/components/modals/NewMovieSet.vue?de76","webpack:///./src/components/modals/LibraryAdd.vue?a0b4","webpack:///./src/components/settings/IndexerSettings.vue?780c","webpack:///src/components/pages/Search.vue","webpack:///./src/components/settings/Sets.vue?e767","webpack:///./src/components/modals/MovieDialog.vue?8164","webpack:///./src/components/playBar.vue?1ad0","webpack:///src/components/itemTypes/Episode.vue","webpack:///./src/components/LoadingPage.vue?f672","webpack:///./src/components/settings/Sets.vue?1c0c","webpack:///src/components/itemLists/SeriesList.vue","webpack:///./src/components/itemTypes/Series.vue?317f","webpack:///src/components/settings/Maintenance.vue","webpack:///./src/components/settings/UserManager.vue?a567","webpack:///./src/components/modals/ChangeRemoteDialog.vue?7305","webpack:///src/components/modals/EpisodeDialog.vue","webpack:///./src/components/modals/PasswordChange.vue?0d1b","webpack:///./src/router/index.js","webpack:///./src/components/modals/EpisodeDialog.vue?c951","webpack:///./src/components/WatchPanel.vue?9635","webpack:///src/components/itemTypes/Series.vue","webpack:///./src/components/settings/Libraries.vue?464c","webpack:///./src/components/pages/SeriesView.vue?996a","webpack:///./src/components/settings/UserManagement/userEntry.vue?c4e0","webpack:///./src/components/settings/IndexerSettings.vue?8be7","webpack:///./src/components/settings/Maintenance.vue?d2d9","webpack:///./src/components/itemLists/SeriesList.vue?5e9d","webpack:///./src/components/modals/CopyText.vue?e1a0","webpack:///./src/components/NavBar.vue?29d4","webpack:///./src/components/itemLists/SeriesList.vue?4e5b","webpack:///./src/components/pages/MovieInfo.vue?a747","webpack:///./src/components/settings/Libraries.vue?b965","webpack:///./src/components/itemTypes/Series.vue?e19e","webpack:///./src/components/pages/Login.vue?39d1","webpack:///./src/components/modals/CopyText.vue?ef5a","webpack:///./src/components/pages/SeriesView.vue?b02d","webpack:///src/components/pages/Settings.vue","webpack:///src/components/settings/IndexerSettings.vue","webpack:///./src/components/settings/Sets.vue?86e0","webpack:///./src/components/pages/Movies.vue?4a34","webpack:///./src/components/modals/PasswordChange.vue?f662","webpack:///./src/components/pages/Login.vue?6183","webpack:///./src/components/pages/Main.vue","webpack:///./src/components/settings/UserManagement/userEntry.vue?9e0d","webpack:///./src/components/pages/Movies.vue?04dc","webpack:///./src/oblectoClient.js","webpack:///src/components/settings/UserManager.vue","webpack:///./src/components/itemTypes/Episode.vue?e571","webpack:///src/components/settings/Sets.vue","webpack:///./src/components/NavBar.vue?57b3","webpack:///./src/components/modals/ShowModify.vue?6b41","webpack:///./src/components/pages/MovieInfo.vue?b454","webpack:///./src/components/modals/MovieDialog.vue?3761","webpack:///./src/components/modals/LibraryAdd.vue?7f0e","webpack:///./src/components/pages/Search.vue","webpack:///src/components/modals/LibraryAdd.vue","webpack:///src/components/modals/ShowModify.vue","webpack:///./src/components/pages/Main.vue?bb39","webpack:///./src/components/settings/UserManager.vue?ab7d","webpack:///./src/components/itemTypes/Movie.vue?71c0","webpack:///src/components/settings/Libraries.vue","webpack:///./src/components/modals/CopyText.vue?809a","webpack:///./src/components/modals/NewMovieSet.vue?dce6","webpack:///./src/components/modals/ShowDialog.vue?b90e","webpack:///./src/components/pages/Series.vue?46e4","webpack:///./src/components/LoadingPage.vue?b838","webpack:///./src/components/modals/ChangeRemoteDialog.vue?467b","webpack:///./src/components/playBar.vue?4839","webpack:///./src/components/itemTypes/Movie.vue?9a32","webpack:///./src/components/pages/Settings.vue?20da","webpack:///./src/components/modals/UserAdd.vue?41a8","webpack:///./src/components/playBar.vue?4d87","webpack:///./src/components/pages/Search.vue?79c4","webpack:///./src/store/modules/libraries.js","webpack:///./src/components/settings/Maintenance.vue?50da","webpack:///src/App.vue","webpack:///./src/components/modals/UserAdd.vue?967d","webpack:///./src/components/itemLists/MovieList.vue?0e8d","webpack:///./src/components/modals/UserAdd.vue?e529","webpack:///./src/components/modals/LibraryAdd.vue?9387"],"names":["state","lists","sets","getters","actions","getMovies","commit","sort","order","oblectoClient","movieLibrary","getList","movies","getMovieSets","getSets","data","mutations","namespaced","RECEIVE_MOVIES","RECEIVE_MOVIES_SETS","RECEIVE_SHOWS","RECEIVE_EPISODES","RECIEVE_LIBRARIES_MOVIES","RECIEVE_LIBRARIES_SHOWS","getEpisodes","episodeLibrary","episodes","Vue","use","Vuex","Store","host","initialLoaded","shows","watchingEpisodes","watchingMovies","nextEpisodes","playing","title","autoplay","playbackRemote","modules","series","libraries","saveWatchingEpisodes","watching","set","saveNextEpisodes","next","saveWatchingMovies","setPlaying","updateHost","setPlaybackRemote","remote","updateAll","dispatch","console","log","logout","accessToken","router","push","name","updateWatching","axios","get","updateNext","defaults","baseURL","clearPlaying","playEpisodeLocal","id","episode","episodeName","type","entity","playEpisode","post","clientId","playMovieLocal","movie","movieName","playMovie","OBLECTO_HOST","window","location","protocol","hostname","port","store","component","config","productionTip","connectionFailedCount","instance","el","sockets","connect_error","$notify","group","text","connect","$socket","emit","token","$store","indexer","val","event","play","msg","episodeId","movieId","template","components","App","getSeries","seriesLibrary","mode","base","routes","path","meta","requiresAuth","Login","children","Maintenance","UserManager","Libraries","Sets","IndexerSettings","beforeEach","to","from","matched","some","record","query","redirect","fullPath","updateMovies","updateTVShows","deleteMovieLibrary","delete","deleteSeriesLibrary"],"mappings":"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","file":"static/js/app.758b833f6395444695b6.js","sourcesContent":["// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-d0cfb4ba\",\"scoped\":true,\"hasInlineConfig\":false}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/Main.vue\n// module id = +/Wy\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-52822c7e\",\"scoped\":true,\"hasInlineConfig\":false}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/itemTypes/Series.vue\n// module id = +1jf\n// module chunks = 1","<template>\n <div class=\"container\">\n <div class=\"show\" v-if=\"showData && posterLoaded\">\n <div class=\"info-container\">\n <div class=\"info\">\n <div class=\"poster\">\n <img v-bind:src=\"posterUrl\" alt=\"\">\n </div>\n <div class=\"right\">\n <h2>{{ showData.seriesName }}</h2>\n <span class=\"year\">First aired on {{ showData.firstAired }}</span>\n <p>\n {{ showData.overview }}\n </p>\n <ul class=\"genres\"><li class=\"genre\" v-for=\"genre in showData.genre\">{{ genre }}</li></ul>\n </div>\n </div>\n </div>\n <div class=\"episodes\">\n <EpisodeList\n v-for=\"(episodes, index) in series\"\n v-bind:episodes=\"episodes\"\n v-bind:show=\"showData\"\n v-bind:key=\"index\"\n v-bind:title=\"index\">\n\n </EpisodeList>\n\n </div>\n </div>\n </div>\n</template>\n\n<script>\n import WatchPanel from '@/components/WatchPanel'\n import EpisodeList from '@/components/itemLists/EpisodeList'\n import { mapState } from 'vuex'\n import axios from 'axios'\n\n export default {\n name: 'SeriesView',\n components: {\n WatchPanel,\n EpisodeList\n },\n data () {\n return {\n showData: {},\n series: {},\n posterLoaded: false,\n posterUrl: 'data:image/png;base64,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'\n }\n },\n computed: mapState([\n 'host'\n ]),\n async created () {\n await axios.get('/series/' + this.$route.params.seriesId + `/info`)\n .then((res) => {\n this.showData = res.data\n\n const img = new Image()\n img.src = this.host + '/series/' + this.showData.id + '/poster'\n\n img.onload = () => {\n this.posterUrl = img.src\n this.posterLoaded = true\n }\n\n img.onerror = () => {\n this.posterLoaded = true\n }\n })\n .catch((e) => {\n console.log(e)\n })\n\n // Retrieve episodes\n axios.get('/series/' + this.$route.params.seriesId + `/episodes`)\n .then(response => {\n let unsorted = []\n response.data.forEach(function (v, i) {\n if (!unsorted[v.airedSeason]) unsorted[v.airedSeason] = []\n unsorted[v.airedSeason].push(v)\n })\n\n console.log(unsorted)\n\n let temp = {}\n unsorted.forEach(function (v, i) {\n v.sort((a, b) => {\n return a.airedEpisodeNumber - b.airedEpisodeNumber\n })\n if (!temp['Season ' + i]) temp['Season ' + i] = v\n })\n\n this.series = temp\n })\n .catch(e => {\n console.log(e)\n })\n },\n methods: {\n\n },\n watch: {\n '$route' (to, from) {\n console.log(to, from)\n this.series = {}\n axios.get('/series/' + this.$route.params.seriesId + `/info`)\n .then(response => {\n this.showData = response.data\n })\n .catch(e => {\n console.log(e)\n })\n // Retrieve episodes\n axios.get('/series/' + this.$route.params.seriesId + `/episodes`)\n .then(response => {\n let temp = {}\n response.data.forEach(function (v, i) {\n if (temp['Season ' + v.airedSeason] === undefined) temp['Season ' + v.airedSeason] = []\n temp['Season ' + v.airedSeason].push(v)\n })\n this.series = temp\n })\n .catch(e => {\n console.log(e)\n })\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n\n.info-container\n padding: 0 10px\n padding-top: 50px\n\n.info\n font-size: 1em\n border-radius: 3px\n background: #696060\n box-shadow: 0px 2px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding-bottom: 40px\n\n min-height: 270px\n\n .poster\n height: 300px\n width: 204px\n\n float: left\n margin-right: 20px\n box-shadow: 0px 2px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n border-radius: 3px\n overflow: hidden\n\n margin-top: -50px\n margin-left: 20px\n margin-bottom: 20px\n\n background: black\n\n @media screen and (max-width: 700px)\n height: 200px\n width: 133.333px\n\n img\n height: 100%\n\n .right\n padding: 20px\n\n h2\n padding: 0\n font-size: 1.2em\n margin: 0\n margin-bottom: 5px\n\n .year, .genres\n color: rgba(250, 240, 240, 0.6)\n margin-bottom: 10px\n padding: 0\n font-weight: normal\n\n p\n color: rgba(250, 240, 240, 0.9)\n margin: 0\n padding: 0\n margin-top: 20px\n\n max-width: 900px\n\n .genres\n float: right\n margin-top: 20px\n\n.episodes\n width: 100%\n\n.genres\n list-style: none\n li\n display: inline-block\n margin-right: 3px\n font-style: italic\n\n li:after\n content: \",\"\n li:last-child:after\n content: ''\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/SeriesView.vue","<template>\n <modal name=\"UserAdd\" @before-open=\"beforeOpen\" height=\"auto\">\n <div class=\"container\">\n <div class=\"heading\">\n <h3>Add user</h3>\n </div>\n <div class=\"body\">\n <label for=\"name\">Name:</label>\n <input type=\"text\" id=\"name\" v-model=\"name\" v-bind:class=\"{invalid: name === ''}\">\n <label for=\"username\">Username:</label>\n <input type=\"text\" id=\"username\" v-model=\"username\" v-bind:class=\"{invalid: username === ''}\">\n <label for=\"email\">Email:</label>\n <input type=\"text\" id=\"email\" v-model=\"email\" v-bind:class=\"{invalid: email === ''}\">\n <label for=\"password\">Password:</label>\n <input id=\"password\" type=\"password\" v-model=\"password\" v-bind:class=\"{invalid: password === ''}\">\n </div>\n <div class=\"footer\">\n <button class=\"success\" v-on:click=\"addUser\">Add user</button>\n </div>\n </div>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'UserAdd',\n data () {\n return {\n name: '',\n username: '',\n email: '',\n password: ''\n }\n },\n methods: {\n beforeOpen (event) {\n },\n async addUser () {\n try {\n await this.axios.post('/user', {\n name: this.name,\n username: this.username,\n email: this.email,\n password: this.password\n })\n\n this.$notify({\n group: 'system',\n title: 'User has been created successfully',\n text: 'You can now login with the username: ' + this.name,\n type: 'success'\n })\n } catch (e) {\n this.$notify({\n group: 'system',\n title: 'User could not be created',\n text: 'Maybe not all fields are filled?',\n type: 'error'\n })\n }\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .body\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n label\n display: block\n margin: 5px\n margin-left: 0\n\n input\n margin-bottom: 10px\n border-radius: 0\n padding: 10px\n width: 100%\n border: 2px #a8cca1 solid\n .invalid\n border-color: #ff9f78\n\n .footer\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding: 10px\n\n overflow: hidden\n\n button\n float: right\n\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/UserAdd.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-5ca41f6d\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/WatchPanel.vue\n// module id = /Vje\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5e3e0898\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ShowModify.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./ShowModify.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./ShowModify.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5e3e0898\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./ShowModify.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5e3e0898\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/ShowModify.vue\n// module id = 0AIH\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1a37355a\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/MovieDialog.vue\n// module id = 1QEq\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('EpisodeList',{attrs:{\"title\":\"Recently aired\",\"episodes\":_vm.episodes.firstAired}}),_vm._v(\" \"),_c('SeriesList',{attrs:{\"title\":\"Recently added shows\",\"series\":_vm.series.createdAt}}),_vm._v(\" \"),_c('EpisodeList',{attrs:{\"title\":\"Recently added episodes\",\"episodes\":_vm.episodes.createdAt}}),_vm._v(\" \"),_c('SeriesList',{attrs:{\"title\":\"Watched by others\",\"series\":_vm.series.siteRatingCount}}),_vm._v(\" \"),_c('SeriesList',{attrs:{\"title\":\"Best rated\",\"series\":_vm.series.siteRating}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-056fbb6b\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/Series.vue\n// module id = 1Ts9\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1a1f72c4\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/EpisodeDialog.vue\n// module id = 1nhC\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-d86554ce\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/ShowDialog.vue\n// module id = 2oRQ\n// module chunks = 1","<template>\n <modal name=\"CopyText\" @before-open=\"beforeOpen\" height=\"auto\">\n <div class=\"container\">\n <div class=\"heading\">\n <h3>{{ title }}</h3>\n </div>\n <div class=\"body\">\n <input type=\"text\" id=\"name\" v-bind:value=\"text\" ref=\"inputTextField\">\n </div>\n <div class=\"footer\">\n <button class=\"success\" v-on:click=\"copy\">Copy</button>\n </div>\n </div>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'CopyText',\n data () {\n return {\n title: '',\n text: ''\n }\n },\n methods: {\n beforeOpen (event) {\n this.title = event.params.title\n this.text = event.params.text\n },\n copy () {\n this.$refs.inputTextField.focus()\n this.$refs.inputTextField.select()\n document.execCommand('copy')\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .body\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n label\n display: block\n margin: 5px\n margin-left: 0\n\n input\n margin-bottom: 10px\n border-radius: 0\n padding: 10px\n width: 100%\n border: 2px #a8cca1 solid\n .invalid\n border-color: #ff9f78\n\n .footer\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding: 10px\n\n overflow: hidden\n\n button\n float: right\n\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/CopyText.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-53667d94\",\"scoped\":false,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/App.vue\n// module id = 3Qnq\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-fb97f698\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/MovieInfo.vue\n// module id = 3XgW\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-03b31977\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Login.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Login.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Login.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-03b31977\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Login.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-03b31977\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/Login.vue\n// module id = 3jL2\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-056fbb6b\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Series.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Series.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Series.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-056fbb6b\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Series.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-056fbb6b\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/Series.vue\n// module id = 42v4\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2b2f22c8\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/SeriesView.vue\n// module id = 5Ctu\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7c38ea57\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./IndexerSettings.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./IndexerSettings.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./IndexerSettings.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7c38ea57\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./IndexerSettings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7c38ea57\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/settings/IndexerSettings.vue\n// module id = 5EkI\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d86554ce\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ShowDialog.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./ShowDialog.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./ShowDialog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d86554ce\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./ShowDialog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-d86554ce\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/ShowDialog.vue\n// module id = 5k7v\n// module chunks = 1","<template>\n <modal name=\"MovieDialog\" @before-open=\"beforeOpen\">\n <h3>{{ movie.movieName }}</h3>\n <tabs :options=\"{ useUrlFragment: false }\">\n <tab name=\"Data\">\n\n </tab>\n <tab name=\"Files\">\n <ul>\n <li v-for=\"(file, index) in movie.Files\"\n v-bind:key=\"file.id\">\n <span>{{ file.path }}</span>\n </li>\n </ul>\n </tab>\n </tabs>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'MovieDialog',\n data () {\n return {\n movie: {}\n }\n },\n methods: {\n async beforeOpen (event) {\n this.movie = {}\n this.movie = (await this.axios.get('/movie/' + event.params.movie.id + `/info`)).data\n console.log(this.movie)\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n .container\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n ul\n list-style: none\n padding: 0\n margin: 0\n li\n span\n display: inline-block\n width: 100%\n padding: 10px 20px\n color: white\n text-decoration: none\n\n -webkit-transition: background-color 0.1s\n -moz-transition: background-color 0.1s\n -ms-transition: background-color 0.1s\n -o-transition: background-color 0.1s\n transition: background-color 0.1s\n span:hover\n background-color: rgba(0,0,0,0.1)\n box-shadow: 0px 0px 2px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.2)\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/MovieDialog.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-b752a75c\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/settings/Libraries.vue\n// module id = 6src\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"UserManager\"},[_c('table',[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.users),function(user,index){return _c('user-entry',{key:user.id,attrs:{\"user\":user}})}),1)]),_vm._v(\" \"),_c('a',{staticClass:\"button\",on:{\"click\":_vm.userAdd}},[_vm._v(\"Add user\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"User ID\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Username\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Email\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Group\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Actions\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-bf1f5330\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/settings/UserManager.vue\n// module id = 72cY\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"slide-fade\",\"appear\":\"\"}},[(_vm.horizontal)?_c('li',{staticClass:\"movie-horizontal\"},[_c('div',{staticClass:\"movie-poster\",style:({ backgroundImage: 'url(' + _vm.host + '/movie/' + _vm.movieId + '/banner)' })},[_c('a',{staticClass:\"play\",on:{\"click\":_vm.playMovie}},[_c('i',{staticClass:\"fa fa-play\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),(_vm.inside)?_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.title}},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"progress\",style:({ width: _vm.progress * 100 + '%' })})]),_vm._v(\" \"),(!_vm.inside)?_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.title}},[_vm._v(_vm._s(_vm.title))]):_vm._e(),_vm._v(\" \"),(_vm.subtitle && !_vm.inside)?_c('div',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e()]):_vm._e(),_vm._v(\" \"),(!_vm.horizontal)?_c('li',{staticClass:\"movie-vertical\"},[_c('div',{staticClass:\"movie-poster\",style:({ backgroundImage: 'url(' + _vm.host + '/movie/' + _vm.movieId + '/poster)' })},[_c('a',{staticClass:\"play\",on:{\"click\":_vm.playMovie}},[_c('i',{staticClass:\"fa fa-play\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('a',{staticClass:\"action-item\",attrs:{\"title\":\"Options\"},on:{\"click\":_vm.openModal}},[_c('i',{staticClass:\"fa fa-info\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('a',{staticClass:\"action-item\",attrs:{\"title\":\"Info\"},on:{\"click\":_vm.viewMovieInfo}},[_c('i',{staticClass:\"fa fa-eye\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"progress\",style:({ width: _vm.progress * 100 + '%' })})]),_vm._v(\" \"),_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.title}},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('div',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-61a9e9af\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/itemTypes/Movie.vue\n// module id = 7O2x\n// module chunks = 1","<template>\n <div class=\"loading-container\">\n <div class=\"loader\"></div>\n </div>\n</template>\n\n<script>\n export default {\n name: 'LoadingPage'\n }\n</script>\n\n<style scoped lang=\"sass\">\n @keyframes rotating\n from\n -transform: rotate(0deg)\n to\n transform: rotate(360deg)\n\n @-webkit-keyframes scale-width\n from\n width: 0px\n height: 0px\n margin-top: 0px\n margin-left: 0px\n to\n width: 128px\n height: 128px\n margin-top: -64px\n margin-left: -64px\n\n\n\n\n .loader\n width: 128px\n height: 128px\n background-color: transparent\n border: solid rgba(0,0,0,0.2) 10px\n border-bottom: solid #F15A24 10px\n border-radius: 100%\n position: fixed\n top: 50%\n left: 50%\n margin-top: -64px\n margin-left: -64px\n animation: scale-width 0.5s linear, rotating 2s linear infinite\n\n .loading-container\n position: fixed\n top: 0\n left: 0\n\n width: 100%\n height: 100%\n\n z-index: 100\n\n background: #696060 /* Old browsers */\n background: -moz-linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* FF3.6-15 */\n background: -webkit-linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* Chrome10-25,Safari5.1-6 */\n background: linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */\n background-position: top\n background-attachment: fixed\n background-repeat: round\n -webkit-background-size: cover\n background-size: cover\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/LoadingPage.vue","<template>\n <div class=\"watching\">\n <tabs :options=\"{ useUrlFragment: false }\">\n <tab name=\"Tracked episodes\" v-bind:suffix=\"'<span class=badge>' + watchingEpisodes.length + '</span>'\">\n <EpisodeList v-bind:episodes=\"watchingEpisodes\"></EpisodeList>\n </tab>\n <tab name=\"Tracked movies\" v-bind:suffix=\"'<span class=badge>' + watchingMovies.length + '</span>'\">\n <MovieList v-bind:movies=\"watchingMovies\"></MovieList>\n </tab>\n <tab name=\"next up\" v-bind:suffix=\"'<span class=badge>' + nextEpisodes.length + '</span>'\">\n <EpisodeList v-bind:episodes=\"nextEpisodes\"></EpisodeList>\n </tab>\n </tabs>\n </div>\n</template>\n\n<script>\n import EpisodeList from '@/components/itemLists/EpisodeList'\n import SeriesList from '@/components/itemLists/SeriesList'\n import MovieList from '@/components/itemLists/MovieList'\n import { mapState } from 'vuex'\n\n export default {\n name: 'watchPanel',\n components: {\n SeriesList,\n EpisodeList,\n MovieList\n },\n computed: mapState([\n 'watchingEpisodes',\n 'watchingMovies',\n 'nextEpisodes'\n ]),\n created () {\n\n },\n methods: {\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n .watching\n position: relative\n margin-top: 50px\n\n margin-bottom: 20px\n width: 100%\n padding: 20px 0\n\n background: #4c4545\n box-shadow: 0 0 5px 2px rgba(35, 34, 38, 0.75)\n z-index: 2\n\n // The height of the panel if it is populated with shows.\n // If the height isn't set the panel will collapse and the whole thing looks terrible\n height: 356px\n\n @media screen and (min-height: 1200px)\n position: fixed\n top: 50px\n margin: 0\n\n @media screen and (max-width: 700px)\n height: 316px\n\n\n</style>\n\n<style lang=\"sass\">\n .tabs-component-tabs\n list-style: none\n margin-top: 0\n margin-bottom: 15px\n position: relative\n\n overflow-x: auto\n\n white-space: nowrap\n\n .tabs-component-tab\n display: inline-block\n a\n color: #999\n display: block\n text-decoration: none\n padding: 10px 20px\n font-family: Roboto\n font-size: 20px\n text-transform: capitalize\n font-weight: bold\n .is-active\n a\n color: #eee\n .badge\n display: inline-block\n margin-left: 10px\n background-color: rgba(0,0,0,0.5)\n padding: 0 5px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n color: #999\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/WatchPanel.vue","<template>\n <modal name=\"NewMovieSet\" @before-open=\"beforeOpen\" height=\"auto\">\n <div class=\"container\">\n <div class=\"heading\">\n <h3>Create Movie Set</h3>\n </div>\n <div class=\"body\">\n <label for=\"name\">Name:</label>\n <input type=\"text\" id=\"name\" v-model=\"name\" v-bind:class=\"{invalid: name === ''}\">\n <label for=\"name\">Overview:</label>\n <input type=\"text\" id=\"overview\" v-model=\"overview\" v-bind:class=\"{invalid: overview === ''}\">\n </div>\n <div class=\"footer\">\n <button class=\"success\" v-on:click=\"addSet\">Create set</button>\n </div>\n </div>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'NewMovieSet',\n data () {\n return {\n name: '',\n overview: '',\n public: true\n }\n },\n methods: {\n beforeOpen (event) {\n },\n async addSet () {\n try {\n await this.axios.post('/set/movie', {\n name: this.name,\n overview: this.overview,\n public: this.public\n })\n\n this.$notify({\n group: 'system',\n title: 'Set has been created successfully',\n text: '',\n type: 'success'\n })\n } catch (e) {\n this.$notify({\n group: 'system',\n title: 'Set could not be created',\n text: 'Maybe not all fields are filled?',\n type: 'error'\n })\n }\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .body\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n label\n display: block\n margin: 5px\n margin-left: 0\n\n input\n margin-bottom: 10px\n border-radius: 0\n padding: 10px\n width: 100%\n border: 2px #a8cca1 solid\n .invalid\n border-color: #ff9f78\n\n .footer\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding: 10px\n\n overflow: hidden\n\n button\n float: right\n\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/NewMovieSet.vue","<template>\n <div class=\"container\">\n <div class=\"movie\">\n <div ref=\"infoContainer\" class=\"info-container\" v-if=\"movieData.id\"\n v-bind:style=\"{ backgroundImage: 'linear-gradient(to bottom, rgba(255,255,255, 0) 40%, ' + endGradient + ' 80%), url(' + host + '/movie/' + movieData.id + '/fanart)' }\">\n <div class=\"info\" v-if=\"posterLoaded\">\n <div class=\"poster\">\n <img v-bind:src=\"posterUrl\" alt=\"\">\n <a class=\"play\" v-on:click=\"playMovie\"><i class=\"fa fa-play\" aria-hidden=\"true\"></i></a>\n </div>\n <div class=\"right\">\n <h2>{{ movieData.movieName }}</h2>\n <span class=\"year\">First released on {{ movieData.releaseDate }}</span>\n <p>\n {{ movieData.overview }}\n </p>\n <ul class=\"genres\">\n <li class=\"genre\" v-for=\"genre in movieData.genre\">{{ genre }}</li>\n </ul>\n </div>\n </div>\n </div>\n\n <div class=\"file-list-container\" v-if=\"movieData.Files.length > 0\">\n <ul class=\"file-list\">\n <li\n v-for=\"(FileIterator, index) in movieData.Files\"\n v-bind:key=\"FileIterator.id\"\n class=\"file-list-item\"\n >\n {{ FileIterator.name }} <span class=\"badge\">{{ FileIterator.extension }}</span>\n <div class=\"file-item-right\">\n <span class=\"copy\" v-on:click=\"copyUrl(FileIterator.id)\"><FontAwesomeIcon :icon=\"iconCopy\"/></span>\n </div>\n </li>\n </ul>\n </div>\n <div class=\"file-list-container\">\n <div class=\"error\" v-if=\"movieData.Files.length === 0\">\n <span class=\"msg\">No files linked</span>\n </div>\n </div>\n\n <MovieList v-for=\"(set, index) in sets\"\n v-bind:title=\"set.setName\"\n v-bind:key=\"set.id\"\n v-bind:movies=\"set.movies\"\n ></MovieList>\n </div>\n </div>\n</template>\n\n<script>\n import FontAwesomeIcon from '@fortawesome/vue-fontawesome'\n import faCopy from '@fortawesome/fontawesome-free-solid/faCopy'\n import MovieList from '@/components/itemLists/MovieList'\n import { mapState } from 'vuex'\n import axios from 'axios'\n\n export default {\n name: 'MovieInfo',\n components: {\n MovieList,\n FontAwesomeIcon\n },\n data () {\n return {\n 'movieData': {},\n 'sets': [],\n 'endGradient': '',\n 'infoBottom': 0,\n posterLoaded: false,\n posterUrl: 'data:image/png;base64,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'\n }\n },\n computed:\n {\n iconCopy () {\n return faCopy\n },\n ...mapState([\n 'host'\n ])\n },\n methods: {\n playMovie: function (event) {\n event.preventDefault()\n this.$store.dispatch('playMovie', this.movieData.id)\n },\n openModal: function (event) {\n this.$modal.show('MovieDialog', { movie: this.movieData })\n },\n update: async function () {\n this.movieData = (await axios.get('/movie/' + this.$route.params.movieId + `/info`)).data\n this.sets = (await axios.get(`/movie/${this.$route.params.movieId}/sets`)).data\n\n const posterImage = new Image()\n posterImage.src = this.host + '/movie/' + this.movieData.id + '/poster'\n\n posterImage.onload = () => {\n this.posterUrl = posterImage.src\n this.posterLoaded = true\n }\n\n posterImage.onerror = () => {\n this.posterLoaded = true\n }\n },\n getUrl: async function (fileId) {\n let token = (await this.axios.get(`/session/create/${fileId}?noremux=true`)).data.sessionId\n\n return `${this.axios.defaults.baseURL}/session/stream/${token}`\n },\n copyUrl: async function (fileId) {\n this.$modal.show('CopyText', { title: 'Copy URL', text: await this.getUrl(fileId) })\n },\n gradientColor: function () {\n let infoBottom = this.$refs.infoContainer.getBoundingClientRect().bottom\n\n let wh = window.innerHeight\n let st = (wh * 0.36)\n\n var w1 = infoBottom / st\n\n var w2 = 1 - w1\n\n var rgb = [\n Math.round(105 * w2 + 85 * w1),\n Math.round(96 * w2 + 83 * w1),\n Math.round(96 * w2 + 91 * w1)\n ]\n\n if ((infoBottom - st) < 0) {\n return rgb\n }\n\n w1 = ((infoBottom - st)) / (wh - st)\n w2 = 1 - w1\n\n rgb = [\n Math.round(85 * w2 + 40 * w1),\n Math.round(83 * w2 + 52 * w1),\n Math.round(91 * w2 + 59 * w1)\n ]\n return rgb\n },\n updateGradient: function () {\n let g = this.gradientColor()\n this.endGradient = `rgb(${g[0]}, ${g[1]}, ${g[2]})`\n }\n },\n async mounted () {\n this.updateGradient()\n },\n\n async updated () {\n this.updateGradient()\n },\n\n async created () {\n await this.update()\n window.addEventListener('resize', this.updateGradient)\n window.addEventListener('scroll', this.updateGradient)\n },\n async beforeDestroy () {\n window.removeEventListener('resize', this.updateGradient)\n window.removeEventListener('scroll', this.updateGradient)\n },\n watch: {\n async '$route' (to, from) {\n await this.update()\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .file-list-container\n padding: 0 10px\n\n .file-list\n background: #696060\n box-shadow: 0px 0px 2px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n border-spacing: 0\n\n list-style: none\n\n width: 100%\n\n border-radius: 3px\n overflow: hidden\n\n .file-list-item\n padding: 10px 30px\n\n .file-list-item:nth-child(even)\n background-color: darken(#696060, 2)\n\n .file-item-right\n float: right\n\n .info-container\n margin-top: -20px\n\n padding: 10px 10px\n padding-top: 400px\n\n background-size: cover\n background-position: center 0\n\n position: relative\n\n z-index: 0\n\n .info\n font-size: 1em\n border-radius: 3px\n background: #696060\n box-shadow: 0px 2px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding-bottom: 40px\n\n min-height: 270px\n\n .poster\n position: relative\n\n height: 300px\n float: left\n margin-right: 20px\n box-shadow: 0px 2px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n border-radius: 3px\n overflow: hidden\n\n margin-top: -50px\n margin-left: 20px\n margin-bottom: 20px\n\n @media screen and (max-width: 700px)\n height: 200px\n\n img\n height: 100%\n\n .right\n padding: 20px\n\n h2\n padding: 0\n font-size: 1.2em\n margin: 0\n margin-bottom: 5px\n\n .year, .genres\n color: rgba(250, 240, 240, 0.6)\n margin-bottom: 10px\n padding: 0\n font-weight: normal\n\n p\n color: rgba(250, 240, 240, 0.9)\n margin: 0\n padding: 0\n margin-top: 20px\n\n max-width: 900px\n\n .genres\n float: right\n margin-top: 20px\n\n .genres\n list-style: none\n li\n display: inline-block\n margin-right: 3px\n font-style: italic\n\n li:after\n content: \",\"\n li:last-child:after\n content: ''\n\n a\n color: white\n margin: 0 5px\n cursor: pointer\n\n .fa\n margin-left: 10px\n\n a.play\n opacity: 0\n display: block\n font-size: 4em\n margin: 0\n width: 100px\n height: 100px\n\n position: absolute\n top: calc(50% - 50px)\n left: calc(50% - 50px)\n\n background-color: rgba(0,0,0,0.5)\n border: 2px solid white\n border-radius: 100%\n text-align: center\n line-height: 100px\n transition: opacity 0.2s\n\n .poster:hover a.play\n opacity: 0.4\n\n a.play:hover\n opacity: 1 !important\n\n .error\n background: #694040\n box-shadow: 0px 0px 2px 2px rgba(darken(darken(#694040,17) + #000000,6), 0.75)\n\n padding: 10px\n\n border-spacing: 0\n\n list-style: none\n\n width: 100%\n\n border-radius: 3px\n overflow: hidden\n\n text-align: center\n\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/MovieInfo.vue","import * as types from '../mutation-types'\nimport oblectoClient from '@/oblectoClient'\n\nconst state = {\n lists: {},\n sets: {}\n}\n\nconst getters = {\n\n}\n\nconst actions = {\n async getMovies ({ commit, state }, { sort, order }) {\n let movies = await oblectoClient.movieLibrary.getList(sort, order, 100, 0)\n\n commit(types.RECEIVE_MOVIES, { movies, sort })\n },\n async getMovieSets ({ commit, state }) {\n let { data: sets } = await oblectoClient.movieLibrary.getSets()\n\n commit(types.RECEIVE_MOVIES_SETS, sets)\n }\n}\n\nconst mutations = {\n [types.RECEIVE_MOVIES] (state, { movies, sort }) {\n state.lists[sort] = movies\n },\n [types.RECEIVE_MOVIES_SETS] (state, sets) {\n state.sets = sets\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/movies.js","<template>\n <div class=\"container\">\n <div class=\"form\" @keyup.enter=\"submit\">\n <div class=\"logo\">\n <img v-bind:src=\"host + '/web/logo.png'\" alt=\"\">\n </div>\n <label for=\"username\">Username</label>\n <input type=\"text\" id=\"username\" v-model=\"credentials.username\">\n <label for=\"password\">Password</label>\n <input id=\"password\" type=\"password\" v-model=\"credentials.password\">\n <div class=\"bottom\">\n <span class=\"server-indicator\">{{ host }} <a v-on:click=\"changeHost\" class=\"nav-link\">Change</a></span>\n <button type=\"submit\" @click=\"submit\">Login</button>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n import oblectoClient from '@/oblectoClient'\n import { mapState } from 'vuex'\n\n export default {\n name: 'Login',\n data () {\n return {\n credentials: {\n username: '',\n password: ''\n }\n }\n },\n computed: mapState([\n 'host'\n ]),\n methods: {\n async changeHost () {\n this.$store.dispatch('updateHost', prompt('New host?'))\n },\n async submit () {\n try {\n await oblectoClient.authenticate(this.credentials.username, this.credentials.password)\n\n console.log(oblectoClient.accessToken)\n\n this.axios.defaults.headers.common = { 'Authorization': `bearer ${oblectoClient.accessToken}` }\n\n // Authenticate the socket.io connection to the server\n // This allows the server to update the client in realtime\n this.$socket.emit('authenticate', { token: oblectoClient.accessToken })\n\n try {\n await this.$store.dispatch('updateAll')\n } catch (e) {\n console.log(e)\n }\n\n console.log('redirecting')\n\n // After the login proceduce is complete, send the user to the homepage\n this.$router.push({ name: 'Main' })\n } catch (e) {\n console.log(e)\n\n // If an error has occurred during the login process, send an error message to the client\n this.$notify({\n group: 'system',\n title: 'Error occurred',\n text: 'An error occured during login',\n type: 'error'\n })\n }\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n .container\n position: fixed\n top: 0\n left: 0\n width: 100%\n height: 100%\n\n display: flex\n align-items: center\n justify-content: center\n .form\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000, 6), 0.75)\n\n width: 100%\n max-width: 500px\n background-color: rgba(0, 0, 0, 0.3)\n -webkit-border-radius: 6px\n -moz-border-radius: 6px\n border-radius: 6px\n\n padding: 20px 30px\n label\n display: block\n color: #f2f2f2\n padding: 5px\n font:\n family: Roboto\n size: 1.2em\n input\n display: block\n width: 100%\n padding: 10px\n -webkit-border-radius: 6px\n -moz-border-radius: 6px\n border-radius: 6px\n border: #ccc solid 1px\n outline: none\n button\n -webkit-border-radius: 6px\n -moz-border-radius: 6px\n border-radius: 6px\n background: #ccc\n padding: 10px 30px\n border: none\n margin-top: 20px\n float: right\n\n .server-indicator\n float: left\n padding: 10px 0\n border: none\n margin-top: 20px\n\n .logo\n img\n display: block\n width: 50%\n margin: 20px auto\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/Login.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-44594865\",\"scoped\":true,\"hasInlineConfig\":false}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/itemTypes/Episode.vue\n// module id = B8ZM\n// module chunks = 1","<script src=\"../../store/index.js\"></script>\n<template>\n <div class=\"episodes\">\n <div class=\"title\" v-if=\"title\">\n <h3 v-html=\"title\"></h3>\n </div>\n <div class=\"empty\" v-if=\"episodes.length == 0\">\n <span class=\"no-content\">\n No episodes here\n </span>\n </div>\n <transition-group\n name=\"staggered-fade\"\n tag=\"ul\"\n class=\"scroller\"\n v-bind:css=\"true\"\n v-on:before-enter=\"beforeEnter\"\n v-on:enter=\"enter\"\n v-on:leave=\"leave\"\n >\n <Episode v-for=\"(episode, index) in episodes\"\n v-bind:subtitle=\"'S' + episode.airedSeason + 'E' + episode.airedEpisodeNumber + ' - ' + episode.Series.seriesName\"\n v-bind:key=\"episode.id\"\n v-bind:episode=\"episode\"\n ></Episode>\n </transition-group>\n </div>\n</template>\n\n<script>\n import Episode from '@/components/itemTypes/Episode'\n import Velocity from 'velocity-animate'\n\n export default {\n name: 'EpisodeList',\n components: { Episode: Episode },\n props: { 'episodes': Array, 'title': String },\n methods: {\n beforeEnter: function (el) {\n el.style.opacity = 0\n el.style.width = 0\n },\n enter: function (el, done) {\n var delay = el.dataset.index * 150\n setTimeout(function () {\n Velocity(\n el,\n { opacity: 1, width: '357px' },\n { complete: done }\n )\n }, delay)\n },\n leave: function (el, done) {\n var delay = el.dataset.index * 150\n setTimeout(function () {\n Velocity(\n el,\n { opacity: 0, width: 0 },\n { complete: done }\n )\n }, delay)\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n .episodes\n position: relative\n\n .staggered-fade-move\n transition: transform 1s\n\n .scroller\n overflow: hidden\n overflow-x: visible\n white-space: nowrap\n padding: 5px 0\n\n\n .title, .title h3\n padding: 0 20px\n font:\n family: roboto\n size: 20px\n\n .empty\n height: 259px // This is the height of the episodes scroll container if it is filled\n\n display: flex\n align-items: center\n justify-content: center\n\n @media screen and (max-width: 700px)\n height: 209px\n\n\n .no-content\n font-size: 2em\n color: rgba(250, 250, 250, 0.5)\n\n\n\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/itemLists/EpisodeList.vue","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5ca41f6d\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./WatchPanel.vue\")\n require(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5ca41f6d\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/selector?type=styles&index=1!./WatchPanel.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./WatchPanel.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./WatchPanel.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5ca41f6d\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./WatchPanel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5ca41f6d\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/WatchPanel.vue\n// module id = BW50\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings\"},[_c('ul',{staticClass:\"settings-nav\"},[_c('li',{staticClass:\"settings-nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'SettingsMaintenance'}}},[_vm._v(\"Maintance\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"settings-nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'SettingsUsers'}}},[_vm._v(\"Users\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"settings-nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'SettingsLibraries'}}},[_vm._v(\"Libraries\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"settings-nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'IndexerSettings'}}},[_vm._v(\"Indexer Settings\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"settings-nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'SettingsSets'}}},[_vm._v(\"Sets\")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"container\"},[_c('router-view')],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-b095acca\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/Settings.vue\n// module id = Bh9+\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-5e3e0898\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/ShowModify.vue\n// module id = BkNo\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-1101d7a2\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/itemLists/MovieList.vue\n// module id = Bo5D\n// module chunks = 1","<template>\n <tr>\n <td class=\"id\">{{ user.id }} </td>\n <td>{{ user.name }}</td>\n <td>{{ user.username }}</td>\n <td>{{ user.email }}</td>\n <td>{{ user.group }}</td>\n <td><a v-on:click=\"changePassword\" class=\"action\">Change Password</a> <a href=\"#\" class=\"action\">Change Group</a></td>\n </tr>\n</template>\n\n<script>\n export default {\n name: 'userEntry',\n props: ['user'],\n methods: {\n changePassword () {\n this.$modal.show('PasswordChange', this.user)\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n tr:nth-child(even)\n background-color: darken(#696060, 2)\n\n td\n padding: 10px\n\n .id\n text-align: right\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/settings/UserManagement/userEntry.vue","<template>\n <div class=\"container\">\n <EpisodeList title=\"Recently aired\"\n v-bind:episodes=\"episodes.firstAired\"\n />\n <SeriesList title=\"Recently added series\"\n v-bind:series=\"series.createdAt\"\n />\n <EpisodeList title=\"Recently added episodes\"\n v-bind:episodes=\"episodes.createdAt\"\n />\n <MovieList title=\"Recently added movies\"\n v-bind:movies=\"movies.createdAt\"\n />\n <SeriesList title=\"Shows watched by others\"\n v-bind:series=\"series.siteRatingCount\"\n />\n <MovieList title=\"Popular movies\"\n v-bind:movies=\"movies.popularity\"\n />\n <SeriesList title=\"Best rated series\"\n v-bind:series=\"series.siteRating\"\n />\n <MovieList title=\"Recently released movies\"\n v-bind:movies=\"movies.releaseDate\"\n />\n </div>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n\n import SeriesList from '@/components/itemLists/SeriesList'\n import EpisodeList from '@/components/itemLists/EpisodeList'\n import MovieList from '@/components/itemLists/MovieList'\n\n export default {\n name: 'Main',\n components: {\n SeriesList,\n EpisodeList: EpisodeList,\n MovieList: MovieList\n },\n computed: mapState({\n movies: state => state.movies.lists,\n series: state => state.series.lists,\n episodes: state => state.episodes.lists\n }),\n created () {\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/Main.vue","<template>\n <nav class=\"nav-bar\">\n <div class=\"container\">\n <div class=\"nav-left\">\n <div class=\"brand\">\n <router-link :to=\"{ name: 'Main'}\" class=\"brand-link\"><img v-bind:src=\"host + '/web/logo.png'\" alt=\"\">\n </router-link>\n </div>\n <div class=\"links\">\n <router-link :to=\"{ name: 'Series'}\" class=\"nav-link\">Series</router-link>\n <router-link :to=\"{ name: 'Movies'}\" class=\"nav-link\">Movies</router-link>\n </div>\n </div>\n <div class=\"search\">\n <form action=\"\" class=\"search\" id=\"search-form\" v-on:submit.prevent=\"search\">\n <input type=\"text\" id=\"search-input\" class=\"input-text\" v-model=\"searchText\">\n <button type=\"submit\">\n <FontAwesomeIcon\n :icon=\"iconSearch\"/>\n </button>\n </form>\n </div>\n <div class=\"nav-right\">\n <router-link :to=\"{ name: 'SettingsHome'}\" class=\"nav-link\">\n <FontAwesomeIcon\n :icon=\"iconSettings\"/>\n </router-link>\n <a v-on:click=\"changeRemote\" class=\"nav-link\">\n <FontAwesomeIcon\n :icon=\"iconRemote\"/>\n </a>\n <a v-on:click=\"logout\" class=\"nav-link\">\n <FontAwesomeIcon\n :icon=\"iconLogout\"/>\n </a>\n </div>\n </div>\n </nav>\n</template>\n\n<script>\nimport FontAwesomeIcon from '@fortawesome/vue-fontawesome'\nimport { mapState } from 'vuex'\n\nimport faCog from '@fortawesome/fontawesome-free-solid/faCog'\nimport faSearch from '@fortawesome/fontawesome-free-solid/faSearch'\nimport faLogout from '@fortawesome/fontawesome-free-solid/faSignOutAlt'\nimport faBroadCast from '@fortawesome/fontawesome-free-solid/faBroadcastTower'\n\nexport default {\n name: 'NavBar',\n components: {\n FontAwesomeIcon\n },\n data () {\n return {\n searchText: ''\n }\n },\n computed: {\n iconSettings () {\n return faCog\n },\n iconLogout () {\n return faLogout\n },\n iconSearch () {\n return faSearch\n },\n iconRemote () {\n return faBroadCast\n },\n ...mapState([\n 'host'\n ])\n },\n methods: {\n search: function (event) {\n this.$router.push({ name: 'Search', params: { search: this.searchText } })\n },\n changeRemote: function (event) {\n event.preventDefault()\n this.$modal.show('ChangeRemoteDialog')\n },\n logout: function (event) {\n this.$socket.disconnect()\n\n this.$store.dispatch('logout')\n }\n }\n}\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n.nav-bar\n top: 0\n height: 50px\n width: 100%\n position: fixed\n\n z-index: 3\n\n background-color: darken(#696060,17) + #000000\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000, 6), 0.75)\n\n .search\n @media screen and (max-width: 800px)\n display: none\n display: inline-block\n width: 100%\n position: relative\n\n button\n background: none\n outline: none\n border: none\n padding: 0\n\n position: absolute\n\n color: rgba(255, 255, 255, 0.8)\n\n top: 17px\n right: 8px\n\n .input-text\n margin: 10px 0\n height: 30px\n padding: 5px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n width: 100%\n\n background-color: rgba(255, 255, 255, 0.3)\n\n border: none\n\n .container\n column-count: 3\n height: 100%\n @media screen and (max-width: 800px)\n column-count: 2\n\n\n .nav-link\n display: inline-block\n height: 100%\n line-height: 50px\n padding: 0 15px\n font:\n family: Roboto\n size: 14px\n text:\n decoration: none\n color: #eee\n\n.nav-right\n text-align: right\n\n.nav-left\n height: 50px\n vertical-align: center\n .brand\n font-weight: bold\n padding: 15px 5px\n height: 100%\n display: inline-block\n\n float: left\n margin: 0 15px\n\n img\n height: 100%\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/NavBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"watching\"},[_c('tabs',{attrs:{\"options\":{ useUrlFragment: false }}},[_c('tab',{attrs:{\"name\":\"Tracked episodes\",\"suffix\":'<span class=badge>' + _vm.watchingEpisodes.length + '</span>'}},[_c('EpisodeList',{attrs:{\"episodes\":_vm.watchingEpisodes}})],1),_vm._v(\" \"),_c('tab',{attrs:{\"name\":\"Tracked movies\",\"suffix\":'<span class=badge>' + _vm.watchingMovies.length + '</span>'}},[_c('MovieList',{attrs:{\"movies\":_vm.watchingMovies}})],1),_vm._v(\" \"),_c('tab',{attrs:{\"name\":\"next up\",\"suffix\":'<span class=badge>' + _vm.nextEpisodes.length + '</span>'}},[_c('EpisodeList',{attrs:{\"episodes\":_vm.nextEpisodes}})],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-5ca41f6d\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/WatchPanel.vue\n// module id = Dlsr\n// module chunks = 1","export const RECEIVE_MOVIES = 'RECEIVE_MOVIES'\nexport const RECEIVE_MOVIES_SETS = 'RECEIVE_MOVIES_SETS'\nexport const RECEIVE_SHOWS = 'RECEIVE_SHOWS'\nexport const RECEIVE_EPISODES = 'RECEIVE_EPISODES'\n\nexport const RECIEVE_LIBRARIES_MOVIES = 'RECIEVE_LIBRARIES_MOVIES'\nexport const RECIEVE_LIBRARIES_SHOWS = 'RECIEVE_LIBRARIES_SHOWS'\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/mutation-types.js","<template>\n <div class=\"episodes\">\n <div class=\"title\" v-if=\"title\">\n <h3 v-html=\"title\"></h3>\n </div>\n <div class=\"empty\" v-if=\"movies.length == 0\">\n <span class=\"no-content\">\n No movies here\n </span>\n </div>\n <transition-group\n name=\"staggered-fade\"\n tag=\"ul\"\n class=\"scroller\"\n v-bind:css=\"true\"\n v-on:before-enter=\"beforeEnter\"\n v-on:enter=\"enter\"\n v-on:leave=\"leave\"\n >\n <Movie v-for=\"(movie, index) in movies\"\n v-bind:title=\"movie.movieName\"\n v-bind:movieId=\"movie.id\"\n v-bind:subtitle=\"'Released: ' + movie.releaseDate\"\n v-bind:movie=\"movie\"\n v-bind:key=\"movie.id\"\n ></Movie>\n </transition-group>\n </div>\n</template>\n\n<script>\n import Movie from '@/components/itemTypes/Movie'\n import Velocity from 'velocity-animate'\n\n export default {\n name: 'MovieList',\n components: { Movie: Movie },\n props: { 'movies': Array, 'title': String },\n methods: {\n beforeEnter: function (el) {\n el.style.opacity = 0\n el.style.width = 0\n },\n enter: function (el, done) {\n var delay = el.dataset.index * 150\n setTimeout(function () {\n Velocity(\n el,\n { opacity: 1, width: '136px' },\n { complete: done }\n )\n }, delay)\n },\n leave: function (el, done) {\n var delay = el.dataset.index * 150\n setTimeout(function () {\n Velocity(\n el,\n { opacity: 0, width: 0 },\n { complete: done }\n )\n }, delay)\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n .staggered-fade-move\n transition: transform 1s\n\n .scroller\n overflow: hidden\n overflow-x: visible\n white-space: nowrap\n padding: 5px 0\n\n\n .title, .title h3\n padding: 0 20px\n font:\n family: roboto\n size: 20px\n\n\n .empty\n height: 259px // This is the height of the episodes scroll container if it is filled\n\n display: flex\n align-items: center\n justify-content: center\n\n @media screen and (max-width: 700px)\n height: 209px\n\n\n .no-content\n font-size: 2em\n color: rgba(250, 250, 250, 0.5)\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/itemLists/MovieList.vue","<template>\n <div class=\"playBar\" ref=\"playbar\" v-on:mousemove=\"playbarTimeout = 0\" v-bind:class=\"{hiddenBar: !(playbarTimeout < 20 || playSizeFormat === 2)}\">\n\n <div class=\"player\" v-bind:class=\"{ small: playSizeFormat === 2, hidden: (!showVideo || (playSizeFormat === 2 && browserSupportsPiP))}\">\n <video ref=\"videoPlayer\"></video>\n </div>\n\n <div class=\"bar\" ref=\"bar\">\n\n <div class=\"progressbarContainer\" v-on:click=\"seek\">\n <div v-bind:class=\"{loading}\" class=\"progressbar\" v-bind:style=\"{ width: progress * 100 + '%' }\"></div>\n <div class=\"progressbarload\" v-bind:style=\"{ width: (initialProgress + $refs.videoPlayer.buffered.end($refs.videoPlayer.buffered.length - 1)) / playing.entity.Files[PlayingFileID].duration * 100 + '%' }\" v-if=\"$refs.videoPlayer && $refs.videoPlayer.buffered.length > 0\"></div>\n </div>\n\n <span class=\"seriesid\" v-if=\"playing.type === 'episode'\" v-on:click=\"viewShow\"> {{ playing.entity.Series.seriesName }} S{{ playing.entity.airedSeason }}E{{ playing.entity.airedEpisodeNumber }}: </span>\n <span class=\"title\">{{ playing.title }}</span>\n\n <div class=\"right\">\n <span class=\"time\" v-if=\"showVideo\">\n {{ PlayTimeDisplayValue }} / {{ DurationDisplayValue }}\n </span>\n\n <div class=\"quality-selector\" v-if=\"qualityPopUp\">\n <ul>\n <li\n v-for=\"(FileIterator, index) in playing.entity.Files\"\n v-bind:key=\"FileIterator.id\"\n v-on:click=\"changeFileId(index)\"\n v-bind:class=\"{selected: index === PlayingFileID}\"\n >\n {{ FileIterator.name }} <span class=\"badge\">{{ FileIterator.extension }}</span>\n </li>\n </ul>\n </div>\n\n <span v-on:click=\"qualityPopUp = !qualityPopUp\" v-if=\"showVideo\" class=\"toggle-button\">\n <FontAwesomeIcon :icon=\"iconCog\"/>\n </span>\n\n <span v-on:click=\"stopPlaying\" v-if=\"showVideo\" class=\"toggle-button\">\n <FontAwesomeIcon :icon=\"iconStop\"/>\n </span>\n\n <span v-on:click=\"playPause\" class=\"toggle-button\" v-if=\"showVideo\">\n <FontAwesomeIcon :icon=\"paused? iconPlay : iconPause\"/>\n </span>\n\n <span v-on:click=\"toggleFullScreen\" class=\"toggle-button\" v-if=\"showVideo && fullscreenEnabled\">\n <FontAwesomeIcon :icon=\"playSizeFormat === 3? iconDeFullscreen: iconFullscreen\"/>\n </span>\n\n <span v-on:click=\"playSizeFormat = (playSizeFormat % 2) + 1\" class=\"toggle-button\" v-if=\"showVideo && playSizeFormat !== 3\">\n <FontAwesomeIcon :icon=\"playSizeFormat === 1 ? iconDown : iconUp\"/>\n </span>\n\n <a v-on:click=\"playNext\" v-if=\"progress > 0.9 & playing.type === 'episode'\" class=\"nextepisode\">Next Episode</a>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n import FontAwesomeIcon from '@fortawesome/vue-fontawesome'\n\n import faDown from '@fortawesome/fontawesome-free-solid/faAngleDown'\n import faUp from '@fortawesome/fontawesome-free-solid/faAngleUp'\n import faStop from '@fortawesome/fontawesome-free-solid/faStop'\n import faPlay from '@fortawesome/fontawesome-free-solid/faPlay'\n import faPause from '@fortawesome/fontawesome-free-solid/faPause'\n import faFullscreen from '@fortawesome/fontawesome-free-solid/faExpandArrowsAlt'\n import faDeFullscreen from '@fortawesome/fontawesome-free-solid/faCompress'\n import faCog from '@fortawesome/fontawesome-free-solid/faCog'\n\n import { mapState } from 'vuex'\n\n let SCREEN_FORMAT = {\n 'LARGE': 1,\n 'SMALL': 2,\n 'FULLSCREEN': 3\n }\n\n let AUTOPLAY_TIME_LEFT_THRESHOLD = 5\n let IGNORE_RESTORE_PROGRESS_THRESHOLD = 0.9\n\n export default {\n components: {\n FontAwesomeIcon\n },\n name: 'play-bar',\n data () {\n return {\n paused: true,\n progress: 0,\n\n loading: false,\n\n fullscreenEnabled: document.fullscreenEnabled || false, // Does the client support putting content in a fullscreen state?\n browserSupportsPiP: document.pictureInPictureEnabled || false,\n\n initialProgress: 0,\n playbarTimeout: 0,\n showVideo: false,\n nextepisode: false,\n qualityPopUp: false,\n\n autoplaying: false,\n\n PlayingFileID: 0,\n\n shouldPreSeek: true,\n playSizeFormat: SCREEN_FORMAT.SMALL,\n\n playbackSession: {}\n }\n },\n computed: {\n player () {\n return this.$refs.videoPlayer\n },\n playbar () {\n return this.$refs.playbar\n },\n iconUp () {\n return faUp\n },\n iconDown () {\n return faDown\n },\n iconStop () {\n return faStop\n },\n iconPlay () {\n return faPlay\n },\n iconPause () {\n return faPause\n },\n iconFullscreen () {\n return faFullscreen\n },\n iconDeFullscreen () {\n return faDeFullscreen\n },\n PlayTimeDisplayValue () {\n let hours = ('0' + Math.floor(this.progress * this.playing.entity.Files[this.PlayingFileID].duration / (60 * 60))).substr(-2)\n let mins = ('0' + Math.floor(this.progress * this.playing.entity.Files[this.PlayingFileID].duration / 60) % 60).substr(-2)\n let seconds = ('0' + Math.floor(this.progress * this.playing.entity.Files[this.PlayingFileID].duration) % 60).substr(-2)\n\n return `${hours}:${mins}:${seconds}`\n },\n\n DurationDisplayValue () {\n let hours = ('0' + Math.floor(this.playing.entity.Files[this.PlayingFileID].duration / (60 * 60))).substr(-2)\n let mins = ('0' + Math.floor(this.playing.entity.Files[this.PlayingFileID].duration / 60) % 60).substr(-2)\n let seconds = ('0' + Math.floor(this.playing.entity.Files[this.PlayingFileID].duration) % 60).substr(-2)\n\n return `${hours}:${mins}:${seconds}`\n },\n iconCog () {\n return faCog\n },\n ...mapState(['playing', 'autoplay'])\n },\n methods: {\n viewShow: function () {\n if (this.playing.type === 'episode') {\n this.$router.push({ name: 'SeriesView', params: { seriesId: this.playing.entity.Series.id } })\n this.playSizeFormat = SCREEN_FORMAT.SMALL\n }\n },\n changeFileId: async function (id) {\n this.updateLocalTracker()\n\n let tracking = this.playing.entity.TrackMovies || this.playing.entity.TrackEpisodes\n\n this.PlayingFileID = id\n\n await this.updateSession()\n\n if (this.playbackSession.seeking === 'server') {\n if (tracking[0] !== undefined) {\n this.initialProgress = tracking[0].time\n }\n } else {\n this.initialProgress = 0\n this.shouldPreSeek = true\n }\n\n this.qualityPopUp = false\n\n this.loading = true\n this.setURL()\n },\n updateSession: async function () {\n this.playbackSession = (await this.axios.get(`/session/create/${this.playing.entity.Files[this.PlayingFileID].id}`)).data\n },\n updateURL: async function () {\n await this.updateSession()\n this.setURL()\n },\n setURL: function () {\n let token = this.playbackSession.sessionId\n\n if (this.playbackSession.seeking === 'server') {\n this.player.src = `${this.axios.defaults.baseURL}/session/stream/${token}?offset=${this.initialProgress}`\n } else {\n this.player.src = `${this.axios.defaults.baseURL}/session/stream/${token}`\n }\n },\n seek: function (event) {\n // Calculate the offset in seconds from where the user clicked on the seekbar\n let position = this.playing.entity.Files[this.PlayingFileID].duration * event.clientX / document.documentElement.clientWidth\n\n if (this.playbackSession.seeking === 'server') {\n if (position < this.initialProgress + this.player.duration && position - this.initialProgress > 0) {\n this.player.currentTime = position - this.initialProgress\n\n return\n }\n\n this.initialProgress = position\n this.updateURL()\n } else {\n this.player.currentTime = position\n }\n },\n toggleFullScreen: function () {\n if (this.playSizeFormat !== SCREEN_FORMAT.FULLSCREEN) {\n this.playSizeFormat = SCREEN_FORMAT.FULLSCREEN\n } else {\n this.playSizeFormat = SCREEN_FORMAT.LARGE\n }\n },\n stopPlaying: function () {\n this.player.src = ''\n\n this.$store.dispatch('clearPlaying')\n this.$store.dispatch('updateWatching')\n\n this.showVideo = false\n this.qualityPopUp = false\n this.paused = true\n this.loading = false\n this.autoplaying = false\n this.progress = 0\n\n this.playSizeFormat = SCREEN_FORMAT.SMALL\n },\n playPause: function (event) {\n event.preventDefault()\n\n this.paused = !this.paused\n },\n playNext: function () {\n this.$store.dispatch('playEpisode', this.nextepisode.id)\n },\n updateLocalTracker: function () {\n if (this.playing.type === 'movie') {\n if (!this.playing.entity.TrackMovies) this.playing.entity.TrackMovies = []\n if (!this.playing.entity.TrackMovies[0]) this.playing.entity.TrackMovies[0] = {}\n\n this.playing.entity.TrackMovies[0].time = this.initialProgress + this.player.currentTime\n }\n\n if (this.playing.type === 'episode') {\n if (!this.playing.entity.TrackEpisodes) this.playing.entity.TrackEpisodes = []\n if (!this.playing.entity.TrackEpisodes[0]) this.playing.entity.TrackEpisodes[0] = {}\n\n this.playing.entity.TrackEpisodes[0].time = this.initialProgress + this.player.currentTime\n }\n }\n },\n watch: {\n playSizeFormat: async function (newState, oldState) {\n switch (newState) {\n case SCREEN_FORMAT.FULLSCREEN:\n if (this.browserSupportsPiP && document.pictureInPictureElement) {\n await document.exitPictureInPicture()\n }\n\n await this.playbar.requestFullscreen()\n\n break\n\n case SCREEN_FORMAT.LARGE:\n if (document.fullscreenElement) {\n await document.exitFullscreen()\n }\n\n if (this.browserSupportsPiP && document.pictureInPictureElement) {\n await document.exitPictureInPicture()\n }\n\n break\n\n case SCREEN_FORMAT.SMALL:\n if (document.fullscreenElement) {\n await document.exitFullscreen()\n }\n\n if (this.browserSupportsPiP) {\n await this.player.requestPictureInPicture()\n }\n\n break\n }\n },\n playing: async function (newState, oldState) {\n if (!oldState.entity || !oldState.entity.title) this.playSizeFormat = SCREEN_FORMAT.LARGE\n\n this.initialProgress = 0\n this.progress = 0\n this.PlayingFileID = 0\n this.shouldPreSeek = false\n this.showVideo = false\n this.qualityPopUp = false\n this.paused = true\n this.loading = false\n this.autoplaying = false\n\n this.nextepisode = null\n\n if (this.playing.entity === undefined) {\n return\n }\n\n this.loading = true\n\n this.showVideo = true\n\n let tracking = this.playing.entity.TrackMovies || this.playing.entity.TrackEpisodes\n\n // If the progress is above 90 percent, we shouldn't seek to the last position since the user probably\n // wants to start from the beginning.\n\n await this.updateSession()\n\n if (tracking[0]) {\n this.shouldPreSeek = tracking[0].progress < IGNORE_RESTORE_PROGRESS_THRESHOLD\n }\n\n if (this.playbackSession.seeking === 'server') {\n if (tracking[0] !== undefined && this.shouldPreSeek) {\n this.initialProgress = tracking[0].time\n }\n }\n\n this.setURL()\n\n if (this.playing.type === 'episode') {\n this.nextepisode = (await this.axios.get(`/episode/${this.playing.entity.id}/next`)).data\n }\n },\n paused: async function (newState, oldState) {\n if (newState) {\n return this.player.pause()\n }\n\n this.player.play()\n }\n },\n mounted: function () {\n window.addEventListener('keydown', (e) => {\n if (e.code !== 'Space') { return }\n if (this.playing === {}) { return }\n if (this.playSizeFormat === SCREEN_FORMAT.SMALL) { return }\n\n e.preventDefault()\n\n if (this.playSizeFormat === SCREEN_FORMAT.FULLSCREEN || this.playSizeFormat === SCREEN_FORMAT.LARGE) {\n this.paused = !this.paused\n }\n })\n\n this.player.addEventListener('waiting', () => {\n this.loading = true\n })\n\n this.player.addEventListener('playing', () => {\n this.paused = false\n this.loading = false\n })\n\n this.player.addEventListener('pause', () => {\n this.paused = true\n })\n\n this.player.addEventListener('play', () => {\n this.paused = false\n })\n\n this.player.addEventListener('ended', () => {\n this.$store.dispatch('updateWatching')\n })\n\n this.player.addEventListener('enterpictureinpicture', () => {\n this.playSizeFormat = SCREEN_FORMAT.SMALL\n this.browserSupportsPiP = true\n })\n\n this.player.addEventListener('leavepictureinpicture', () => {\n if (this.playSizeFormat === SCREEN_FORMAT.SMALL) {\n this.playSizeFormat = SCREEN_FORMAT.LARGE\n }\n })\n\n this.player.addEventListener('loadedmetadata', () => {\n let tracking = this.playing.entity.TrackMovies || this.playing.entity.TrackEpisodes\n\n if (tracking[0] && this.shouldPreSeek) {\n this.player.currentTime = tracking[0].time - this.initialProgress\n }\n\n console.log('metadataloaded')\n\n this.player.play()\n\n this.paused = false\n this.loading = false\n })\n\n this.player.addEventListener('timeupdate', () => {\n this.updateLocalTracker()\n\n if (this.playing.entity === undefined) {\n this.playbarTimeout = 0\n\n return\n }\n\n if (this.playbarTimeout < 20) {\n this.playbarTimeout += 1\n }\n\n this.progress = (this.initialProgress + this.player.currentTime) / this.playing.entity.Files[this.PlayingFileID].duration\n\n if (this.autoplay && !this.autoplaying) {\n if (this.playing.entity.Files[this.PlayingFileID].duration - (this.initialProgress + this.player.currentTime) <= AUTOPLAY_TIME_LEFT_THRESHOLD) {\n this.autoplaying = true\n this.playNext()\n }\n }\n\n switch (this.playing.type) {\n case 'episode':\n this.$socket.emit('playing', {\n time: this.playing.entity.TrackEpisodes[0].time = this.initialProgress + this.player.currentTime,\n progress: this.progress,\n episodeId: this.playing.entity.id,\n type: 'tv'\n })\n break\n case 'movie':\n this.$socket.emit('playing', {\n time: this.playing.entity.TrackMovies[0].time,\n progress: this.progress,\n movieId: this.playing.entity.id,\n type: 'movie'\n })\n break\n }\n })\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"sass\">\n\n video\n width: 100%\n height: 100%\n\n .playBar\n height: 100%\n position: fixed\n z-index: 10\n\n .bar\n position: fixed\n bottom: 0\n\n transition: bottom 0.2s\n\n padding: 20px\n padding-top: 25px\n width: 100%\n\n color: #eee\n\n z-index: 1000\n\n background: linear-gradient(to bottom, #645c5c 0%, #5c5454 100%)\n box-shadow: 0 0 5px 2px rgba(44, 40, 40, 0.75)\n\n .seriesid\n color: rgba(255, 255, 255, 0.6)\n\n .nextepisode\n cursor: pointer\n\n background-color: rgba(44, 40, 40, 0.6)\n box-shadow: 0 0 1px 2px rgba(44, 40, 40, 0.6)\n\n transition: background-color 0.1s, box-shadow 0.1s\n\n padding: 5px 10px\n margin-left: 10px\n border-radius: 3px\n\n .nextepisode:hover\n background-color: rgba(44, 40, 40, 0.9)\n box-shadow: 0 0 1px 2px rgba(44, 40, 40, 0.9)\n\n .player\n position: fixed\n bottom: 0\n height: 100%\n width: 100%\n\n background: black\n z-index: 5\n\n transition: top 0.2s, height 0.2s, width 0.2s\n\n .small\n height: 200px\n width: auto\n bottom: 74px\n right: 10px\n border-radius: 3px\n overflow: hidden\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75)\n\n video\n width: auto\n\n @media only screen and (max-width: 600px)\n height: 100px\n top: calc(100% - 169px)\n\n @media only screen and (max-height: 600px)\n height: 100px\n top: calc(100% - 169px)\n\n .hidden\n top: 100%\n\n .right\n float: right\n\n .toggle-button\n cursor: pointer\n\n .progressbarContainer\n height: 10px\n position: absolute\n top: 0\n left: 0\n width: 100%\n\n background-color: rgba(0,0,0,0.25)\n\n box-shadow: inset 0 0 5px 0 rgba(44, 40, 40, 0.75)\n\n cursor: pointer\n\n .progressbar\n position: absolute\n top: 0\n left: 0\n height: 100%\n background-color: #ae6600\n\n z-index: 4\n\n box-shadow: 0 0 5px 2px rgba(44, 40, 40, 0.75)\n\n .progressbarload\n position: absolute\n top: 0\n left: 0\n height: 100%\n background-color: #ae6600\n\n box-shadow: 0 0 5px 2px #421c00\n\n opacity: 0.2\n\n\n @keyframes loading\n from\n left: -10%\n to\n left: 100%\n\n .loading\n width: 10% !important\n position: relative\n animation-name: loading\n animation-timing-function: linear\n animation-iteration-count: infinite\n animation-duration: 4s\n\n .quality-selector\n position: fixed\n bottom: 50px\n right: 10px\n width: auto\n background: #696060\n box-shadow: 0 0 5px 2px rgba(44, 40, 40, 0.75)\n\n ul\n list-style: none\n border-radius: 3px\n li\n padding: 20px\n cursor: pointer\n li.selected\n background-color: rgba(0,0,0,0.3)\n li:hover\n background-color: rgba(0,0,0,0.5)\n\n\n\n .hiddenBar\n cursor: none\n .bar\n bottom: -70px\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/playBar.vue","<template>\n <modal name=\"ChangeRemoteDialog\" @before-open=\"beforeOpen\" :adaptive=true>\n <h3>Choose Playback device</h3>\n <ul>\n <li v-for=\"(remote, index) in remotes\"\n v-bind:key=\"index\">\n <span v-on:click=\"setRemote(remote.clientId)\">{{ remote.clientName }}</span>\n </li>\n </ul>\n </modal>\n</template>\n\n<script>\n import oblectoClient from '@/oblectoClient'\n import { mapMutations } from 'vuex'\n\n export default {\n name: 'ChangeRemoteDialog',\n data () {\n return {\n remotes: []\n }\n },\n methods: {\n async beforeOpen (event) {\n this.remotes = await oblectoClient.remotes.getClients()\n },\n setRemote (remote) {\n this.$modal.hide('ChangeRemoteDialog')\n this.setPlaybackRemote(remote)\n },\n ...mapMutations([\n 'setPlaybackRemote'\n ])\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n .container\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n ul\n list-style: none\n padding: 0\n margin: 0\n li\n span\n display: inline-block\n width: 100%\n padding: 10px 20px\n color: white\n text-decoration: none\n\n cursor: pointer\n\n -webkit-transition: background-color 0.1s\n -moz-transition: background-color 0.1s\n -ms-transition: background-color 0.1s\n -o-transition: background-color 0.1s\n transition: background-color 0.1s\n span:hover\n background-color: rgba(0,0,0,0.1)\n box-shadow: 0px 0px 2px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.2)\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/ChangeRemoteDialog.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"maintenance\"},[_c('button',{on:{\"click\":function($event){return _vm.index('all')}}},[_vm._v(\"Full re-index\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.index('series')}}},[_vm._v(\"Re-index series\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.index('movies')}}},[_vm._v(\"Re-index movies\")]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('button',[_vm._v(\"Full cleanup\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.clean('files')}}},[_vm._v(\"Clean up files database\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.clean('episodes')}}},[_vm._v(\"Cleanup episodes without linked files\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.clean('movies')}}},[_vm._v(\"Cleanup movies without linked files\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.clean('series')}}},[_vm._v(\"Remove Series without episodes\")]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('button',[_vm._v(\"Download new artwork\")]),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.DownloadTVShowArt}},[_vm._v(\"Download artwork for TV Shows and Episodes\")]),_vm._v(\" \"),_c('button',{on:{\"click\":_vm.DownloadMovieArt}},[_vm._v(\"Download artwork for Movies\")]),_vm._v(\" \"),_c('hr'),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.update('episodes')}}},[_vm._v(\"Update episode entries\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.update('movies')}}},[_vm._v(\"Update movie entries\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.update('series')}}},[_vm._v(\"Update series entries\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){return _vm.update('files')}}},[_vm._v(\"Update file entries\")])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-db18dd10\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/settings/Maintenance.vue\n// module id = F9d+\n// module chunks = 1","<template>\n <modal name=\"ShowDialog\" @before-open=\"beforeOpen\">\n <div class=\"container\">\n <h3>{{ show.seriesName }}</h3>\n <ul>\n <li>\n <a href=\"#\" v-on:click=\"indexShow\">Re-index show</a>\n </li>\n <li>\n <a href=\"#\" v-on:click=\"modifyShow\">Edit show data</a>\n </li>\n </ul>\n </div>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'ShowDialog',\n data () {\n return {\n show: {}\n }\n },\n methods: {\n beforeOpen (event) {\n this.show = event.params.show\n },\n modifyShow: function () {\n this.$modal.show('ShowModify', { show: this.show })\n this.$modal.hide('ShowDialog')\n },\n indexShow: function () {\n this.axios.get('/series/' + this.show.id + '/index')\n .then(response => {\n this.$notify({\n group: 'system',\n title: 'Library update requested successfully for ' + this.show.seriesName,\n text: 'A library index update has been started',\n type: 'warning'\n })\n })\n .catch(e => {})\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n ul\n list-style: none\n padding: 0\n margin: 0\n li\n a\n display: inline-block\n width: 100%\n padding: 10px 20px\n color: white\n text-decoration: none\n\n -webkit-transition: background-color 0.1s\n -moz-transition: background-color 0.1s\n -ms-transition: background-color 0.1s\n -o-transition: background-color 0.1s\n transition: background-color 0.1s\n a:hover\n background-color: rgba(0,0,0,0.1)\n box-shadow: 0px 0px 2px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.2)\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/ShowDialog.vue","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7aa4ec56\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./EpisodeList.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./EpisodeList.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./EpisodeList.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7aa4ec56\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./EpisodeList.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7aa4ec56\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/itemLists/EpisodeList.vue\n// module id = FTWe\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-155d6528\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/PasswordChange.vue\n// module id = FWLH\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"episodes\"},[(_vm.title)?_c('div',{staticClass:\"title\"},[_c('h3',{domProps:{\"innerHTML\":_vm._s(_vm.title)}})]):_vm._e(),_vm._v(\" \"),(_vm.episodes.length == 0)?_c('div',{staticClass:\"empty\"},[_c('span',{staticClass:\"no-content\"},[_vm._v(\"\\n No episodes here\\n \")])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"scroller\",attrs:{\"name\":\"staggered-fade\",\"tag\":\"ul\",\"css\":true},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},_vm._l((_vm.episodes),function(episode,index){return _c('Episode',{key:episode.id,attrs:{\"subtitle\":'S' + episode.airedSeason + 'E' + episode.airedEpisodeNumber + ' - ' + episode.Series.seriesName,\"episode\":episode}})}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-7aa4ec56\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/itemLists/EpisodeList.vue\n// module id = GyXB\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-44594865\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Episode.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Episode.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Episode.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-44594865\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Episode.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-44594865\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/itemTypes/Episode.vue\n// module id = H2vp\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('ShowDialogModal'),_vm._v(\" \"),_c('ShowModifyModal'),_vm._v(\" \"),_c('UserAddModal'),_vm._v(\" \"),_c('MovieDialogModal'),_vm._v(\" \"),_c('EpisodeDialogModal'),_vm._v(\" \"),_c('LibraryAdd'),_vm._v(\" \"),_c('NewMovieSet'),_vm._v(\" \"),_c('PasswordChange'),_vm._v(\" \"),_c('CopyText'),_vm._v(\" \"),_c('ChangeRemoteDialog'),_vm._v(\" \"),_c('notifications',{attrs:{\"group\":\"system\",\"classes\":\"system-notification\",\"position\":\"bottom center\"}}),_vm._v(\" \"),(_vm.$router.history.current.name !== 'login' && _vm.loaded)?_c('NavBar'):_vm._e(),_vm._v(\" \"),(_vm.$router.history.current.name !== 'login' && _vm.loaded)?_c('WatchPanel'):_vm._e(),_vm._v(\" \"),(_vm.$router.history.current.name !== 'login' && _vm.loaded)?_c('playBar'):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"long-fade\",\"mode\":\"out\"}},[(_vm.$router.history.current.name !== 'login' && !_vm.loaded)?_c('LoadingPage'):_vm._e()],1),_vm._v(\" \"),(_vm.$router.history.current.name === 'login' || _vm.loaded)?_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view')],1):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-53667d94\",\"hasScoped\":false,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = HGv4\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2f1c2121\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/NewMovieSet.vue\n// module id = HZ+x\n// module chunks = 1","import * as types from '../mutation-types'\nimport oblectoClient from '@/oblectoClient'\n\nconst state = {\n lists: {}\n}\n\nconst getters = {\n\n}\n\nconst actions = {\n async getEpisodes ({ commit, state }, { sort, order }) {\n let episodes = await oblectoClient.episodeLibrary.getList(sort, order, 100, 0)\n\n commit(types.RECEIVE_EPISODES, { episodes, sort })\n }\n}\n\nconst mutations = {\n [types.RECEIVE_EPISODES] (state, { episodes, sort }) {\n state.lists[sort] = episodes\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/episodes.js","function injectStyle (ssrContext) {\n require(\"!!../../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-56154beb\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./userEntry.vue\")\n}\nvar normalizeComponent = require(\"!../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./userEntry.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./userEntry.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-56154beb\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./userEntry.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-56154beb\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/settings/UserManagement/userEntry.vue\n// module id = I5HI\n// module chunks = 1","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport movies from './modules/movies'\nimport series from './modules/series'\nimport episodes from './modules/episodes'\nimport libraries from '@/store/modules/libraries'\n\nimport VueSocketio from 'vue-socket.io'\nimport oblectoClient from '@/oblectoClient'\nimport router from '@/router'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n host: null,\n initialLoaded: false,\n shows: {},\n watchingEpisodes: [],\n watchingMovies: [],\n nextEpisodes: [],\n playing: {\n title: ''\n },\n autoplay: true,\n playbackRemote: 'local'\n },\n modules: {\n movies,\n series,\n episodes,\n libraries\n },\n mutations: {\n saveWatchingEpisodes: function (state, watching) {\n Vue.set(state, 'watchingEpisodes', watching)\n },\n saveNextEpisodes: function (state, next) {\n Vue.set(state, 'nextEpisodes', next)\n },\n saveWatchingMovies: function (state, watching) {\n Vue.set(state, 'watchingMovies', watching)\n },\n setPlaying: function (state, playing) {\n Vue.set(state, 'playing', playing)\n },\n updateHost: function (state, host) {\n Vue.set(state, 'host', host)\n },\n initialLoaded: function (state, initialLoaded) {\n Vue.set(state, 'initialLoaded', initialLoaded)\n },\n setPlaybackRemote: function (state, remote) {\n Vue.set(state, 'playbackRemote', remote)\n }\n },\n actions: {\n updateAll: async ({ commit, dispatch }) => {\n // Update all movies in vuex storage\n await dispatch('movies/getMovies', { sort: 'createdAt', order: 'DESC' })\n await dispatch('movies/getMovies', { sort: 'popularity', order: 'DESC' })\n await dispatch('movies/getMovies', { sort: 'releaseDate', order: 'DESC' })\n await dispatch('movies/getMovieSets')\n\n console.log('movies done')\n\n // Update all tv shows in vuex storage\n await dispatch('series/getSeries', { sort: 'createdAt', order: 'DESC' })\n await dispatch('series/getSeries', { sort: 'siteRating', order: 'DESC' })\n await dispatch('series/getSeries', { sort: 'siteRatingCount', order: 'DESC' })\n\n console.log('shows done')\n\n // Update all episodes in vuex storage\n await dispatch('episodes/getEpisodes', { sort: 'firstAired', order: 'DESC' })\n await dispatch('episodes/getEpisodes', { sort: 'createdAt', order: 'DESC' })\n\n console.log('episodes done')\n\n await dispatch('updateWatching')\n\n console.log('watch done')\n\n commit('initialLoaded', true)\n },\n logout: function (state) {\n state.commit('saveWatchingEpisodes', [])\n state.dispatch('clearPlaying')\n state.commit('initialLoaded', false)\n\n oblectoClient.accessToken = ''\n\n router.push({ name: 'login' })\n },\n updateWatching: async function ({ commit, dispatch }) {\n let { data: episodes } = await Vue.axios.get(`/episodes/watching`)\n let { data: movies } = await Vue.axios.get(`/movies/watching`)\n\n try {\n await dispatch('updateNext')\n } catch (e) {\n console.log(e)\n }\n\n commit('saveWatchingEpisodes', episodes)\n commit('saveWatchingMovies', movies)\n },\n updateNext: async function (state) {\n let { data: nextEpisodes } = await Vue.axios.get(`/episodes/next`)\n state.commit('saveNextEpisodes', nextEpisodes)\n },\n updateHost: function (state, host) {\n state.commit('updateHost', host)\n\n // Update sockets and axios http urls\n Vue.use(VueSocketio, host)\n Vue.axios.defaults.baseURL = host\n },\n clearPlaying: function (state) {\n state.commit('setPlaying', {})\n },\n playEpisodeLocal: async function ({ commit, dispatch }, id) {\n await dispatch('clearPlaying')\n\n let { data: episode } = await Vue.axios.get(`/episode/${id}/info`)\n\n commit('setPlaying', {\n title: episode.episodeName,\n type: 'episode',\n entity: episode\n })\n },\n playEpisode: async function ({ state, commit, dispatch }, id) {\n if (state.playbackRemote !== 'local') {\n await Vue.axios.post(`/client/${state.playbackRemote}/playback`, {\n id,\n clientId: state.playbackRemote,\n type: 'episode'\n })\n return\n }\n\n await dispatch('playEpisodeLocal', id)\n },\n playMovieLocal: async function ({ commit, dispatch }, id) {\n await dispatch('clearPlaying')\n\n let { data: movie } = await Vue.axios.get(`/movie/${id}/info`)\n\n commit('setPlaying', {\n title: movie.movieName,\n type: 'movie',\n entity: movie\n })\n },\n playMovie: async function ({ state, commit, dispatch }, id) {\n if (state.playbackRemote !== 'local') {\n await Vue.axios.post(`/client/${state.playbackRemote}/playback`, {\n id,\n clientId: state.playbackRemote,\n type: 'movie'\n })\n return\n }\n\n await dispatch('playMovieLocal', id)\n }\n }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"episodes\"},[(_vm.title)?_c('div',{staticClass:\"title\"},[_c('h3',{domProps:{\"innerHTML\":_vm._s(_vm.title)}})]):_vm._e(),_vm._v(\" \"),(_vm.movies.length == 0)?_c('div',{staticClass:\"empty\"},[_c('span',{staticClass:\"no-content\"},[_vm._v(\"\\n No movies here\\n \")])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"scroller\",attrs:{\"name\":\"staggered-fade\",\"tag\":\"ul\",\"css\":true},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},_vm._l((_vm.movies),function(movie,index){return _c('Movie',{key:movie.id,attrs:{\"title\":movie.movieName,\"movieId\":movie.id,\"subtitle\":'Released: ' + movie.releaseDate,\"movie\":movie}})}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-1101d7a2\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/itemLists/MovieList.vue\n// module id = IdzS\n// module chunks = 1","<template>\n <div class=\"container\">\n <MovieList title=\"Recently Added\"\n v-bind:movies=\"movies.createdAt\"/>\n <MovieList title=\"Popular movies\"\n v-bind:movies=\"movies.popularity\"/>\n <MovieList title=\"Recently released movies\"\n v-bind:movies=\"movies.releaseDate\"/>\n\n <MovieList v-for=\"(set, index) in sets\"\n v-bind:title=\"set.setName\"\n v-bind:key=\"set.id\"\n v-bind:movies=\"set.movies\"\n ></MovieList>\n </div>\n</template>\n\n<script>\n import MovieList from '@/components/itemLists/MovieList'\n import { mapState } from 'vuex'\n\n export default {\n name: 'Movies',\n components: {\n MovieList: MovieList\n },\n computed: mapState('movies', {\n movies: state => state.lists,\n sets: state => state.sets\n }),\n data () {\n return {\n\n }\n },\n created: function () {\n\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/Movies.vue","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1a1f72c4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./EpisodeDialog.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./EpisodeDialog.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./EpisodeDialog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a1f72c4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./EpisodeDialog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1a1f72c4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/EpisodeDialog.vue\n// module id = JITM\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-409cf992\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Movies.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Movies.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Movies.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-409cf992\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Movies.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-409cf992\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/Movies.vue\n// module id = JgbB\n// module chunks = 1","<template>\n <transition name=\"slide-fade\" appear>\n <li class=\"movie-horizontal\" v-if=\"horizontal\">\n <div class=\"movie-poster\" v-bind:style=\"{ backgroundImage: 'url(' + host + '/movie/' + movieId + '/banner)' }\">\n <a class=\"play\" v-on:click=\"playMovie\"><i class=\"fa fa-play\" aria-hidden=\"true\"></i></a>\n <div :title=\"title\" class=\"title\" v-if=\"inside\">{{ title }}</div>\n <div class=\"progress\" v-bind:style=\"{ width: progress * 100 + '%' }\"></div>\n </div>\n <div :title=\"title\" class=\"title\" v-if=\"!inside\">{{ title }}</div>\n <div class=\"subtitle\" v-if=\"subtitle && !inside\">{{ subtitle }}</div>\n </li>\n\n <li class=\"movie-vertical\" v-if=\"!horizontal\">\n <div class=\"movie-poster\" v-bind:style=\"{ backgroundImage: 'url(' + host + '/movie/' + movieId + '/poster)' }\">\n <a class=\"play\" v-on:click=\"playMovie\"><i class=\"fa fa-play\" aria-hidden=\"true\"></i></a>\n <div class=\"actions\">\n <a class=\"action-item\" v-on:click=\"openModal\" title=\"Options\">\n <i class=\"fa fa-info\" aria-hidden=\"true\"></i>\n </a>\n <a class=\"action-item\" v-on:click=\"viewMovieInfo\" title=\"Info\">\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\n </a>\n </div>\n <div class=\"progress\" v-bind:style=\"{ width: progress * 100 + '%' }\"></div>\n </div>\n <div :title=\"title\" class=\"title\">{{ title }}</div>\n <div class=\"subtitle\" v-if=\"subtitle\">{{ subtitle }}</div>\n </li>\n </transition>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n\n export default {\n name: 'Show',\n props: ['title', 'movieId', 'subtitle', 'inside', 'horizontal', 'movie'],\n computed: mapState([\n 'host'\n ]),\n created () {\n if (this.movie.TrackMovies[0]) {\n this.progress = this.movie.TrackMovies[0].progress\n }\n },\n data () {\n return {\n progress: 0\n }\n },\n sockets: {\n 'client-movie-progress': function (message) {\n if (message.movieId === this.movieId) {\n this.movie.TrackMovies[0] = message\n this.progress = message.progress\n }\n }\n },\n methods: {\n playMovie: function (event) {\n event.preventDefault()\n this.$store.dispatch('playMovie', this.movie.id)\n },\n openModal: function (event) {\n this.$modal.show('MovieDialog', { movie: this.movie })\n },\n viewMovieInfo: function (event) {\n this.$router.push({ name: 'MovieInfo', params: { movieId: this.movieId } })\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n .slide-fade-enter-active {\n transition: all .5s;\n }\n .slide-fade-leave-active {\n transition: all .5s;\n }\n .slide-fade-enter, .slide-fade-leave-to\n /* .slide-fade-leave-active below version 2.1.8 */ {\n transform: translateX(10px);\n opacity: 0;\n }\n\n .movie-horizontal {\n display: inline-block;\n margin: 0 10px;\n\n width: 357px;\n }\n\n .movie-vertical {\n display: inline-block;\n margin: 0 10px;\n\n width: 136px;\n position: relative;\n }\n\n .title {\n font-family: Roboto;\n font-size: 13px;\n\n margin-top: 5px;\n padding: 0;\n text-overflow: ellipsis;\n\n overflow: hidden;\n color: #eee\n }\n\n .subtitle {\n font-family: Roboto;\n font-size: 12px;\n\n margin-top: 5px;\n padding: 0;\n text-overflow: ellipsis;\n color: #aaa;\n\n overflow: hidden;\n }\n\n .movie-poster {\n box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75);\n\n background-color: rgba(0, 0, 0, 0.8);\n -webkit-background-size: cover;\n background-size: cover;\n background-position: center;\n\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n\n -webkit-transition: box-shadow 0.1s, opacity 0.1s;\n -moz-transition: box-shadow 0.1s, opacity 0.1s;\n -ms-transition: box-shadow 0.1s, opacity 0.1s;\n -o-transition: box-shadow 0.1s, opacity 0.1s;\n transition: box-shadow 0.1s, opacity 0.1s;\n\n position: relative;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .movie-horizontal .movie-poster {\n height: 200px;\n width: 357px;\n }\n\n .movie-vertical .movie-poster {\n height: 200px;\n width: 136px;\n }\n\n @media screen and (max-width: 700px) {\n\n .movie-horizontal {\n width: 285.6px;\n margin: 0 5px;\n }\n\n .movie-vertical {\n width: 108.8px;\n margin: 0 5px;\n }\n\n .movie-horizontal .movie-poster {\n height: 160px;\n width: 285.6px;\n }\n\n .movie-vertical .movie-poster {\n height: 160px;\n width: 108.8px;\n }\n\n }\n\n\n .actions {\n position: absolute;\n bottom: -50px;\n text-align: right;\n -webkit-transition: bottom 0.2s;\n -moz-transition: bottom 0.2s;\n -ms-transition: bottom 0.2s;\n -o-transition: bottom 0.2s;\n transition: bottom 0.2s;\n width: 100%;\n padding: 5px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n a {\n color: white;\n margin: 0 5px;\n cursor: pointer;\n }\n\n .movie-poster:hover {\n box-shadow: 0px 0px 0px 2px rgba(174, 102, 0, 0.75);\n opacity: 1;\n }\n\n .movie-poster:hover .actions {\n bottom: 0;\n }\n\n a.play {\n opacity: 0;\n display: block;\n font-size: 4em;\n margin: 0;\n width: 100px;\n height: 100px;\n background-color: rgba(0,0,0,0.5);\n border: 2px solid white;\n border-radius: 100%;\n text-align: center;\n line-height: 100px;\n -webkit-transition: opacity 0.2s;\n -moz-transition: opacity 0.2s;\n -ms-transition: opacity 0.2s;\n -o-transition: opacity 0.2s;\n transition: opacity 0.2s;\n }\n .fa {\n margin-left: 10px;\n }\n\n .movie-poster:hover a.play{\n opacity: 0.4;\n }\n\n a.play:hover {\n opacity: 1!important;\n }\n\n .movie-poster .title {\n position: absolute;\n bottom: 0;\n left: 0;\n font-size: 1.4em;\n padding: 10px;\n }\n\n .progress {\n height: 5px;\n background-color: #ae6600;\n position: absolute;\n bottom: 0;\n left: 0;\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/itemTypes/Movie.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-b095acca\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/Settings.vue\n// module id = K6WS\n// module chunks = 1","<template>\n <div class=\"container\">\n <EpisodeList title=\"Recently aired\"\n v-bind:episodes=\"episodes.firstAired\"\n />\n <SeriesList title=\"Recently added shows\"\n v-bind:series=\"series.createdAt\"\n />\n <EpisodeList title=\"Recently added episodes\"\n v-bind:episodes=\"episodes.createdAt\"\n />\n <SeriesList title=\"Watched by others\"\n v-bind:series=\"series.siteRatingCount\"\n />\n <SeriesList title=\"Best rated\"\n v-bind:series=\"series.siteRating\"\n />\n </div>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n import EpisodeList from '@/components/itemLists/EpisodeList'\n import SeriesList from '@/components/itemLists/SeriesList'\n\n export default {\n name: 'Series',\n components: {\n SeriesList,\n EpisodeList\n },\n computed: mapState({\n series: state => state.series.lists,\n episodes: state => state.episodes.lists\n }),\n created () {\n\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/Series.vue","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-53667d94\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-53667d94\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = M93x\n// module chunks = 1","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport store from './store'\nimport axios from 'axios'\nimport VueAxios from 'vue-axios'\nimport { Tabs, Tab } from 'vue-tabs-component'\nimport VModal from 'vue-js-modal'\nimport Notifications from 'vue-notification'\nimport VueSocketio from 'vue-socket.io'\nimport oblectoClient from '@/oblectoClient'\n\nVue.use(VModal)\n\nVue.use(Notifications)\n\nVue.use(VueAxios, axios)\n\nlet host = OBLECTO_HOST ||\n window.location.protocol + '//' + window.location.hostname + ':' + (window.location.port || '80')\n\nstore.dispatch('updateHost', host)\nVue.use(VueSocketio, host)\n\nVue.component('tabs', Tabs)\nVue.component('tab', Tab)\n\nVue.config.productionTip = false\n\nlet connectionFailedCount = 0\n\n/* eslint-disable no-new */\nexport const instance = new Vue({\n el: '#app',\n store,\n sockets: {\n connect_error: function () {\n connectionFailedCount++\n\n if (connectionFailedCount === 1) {\n this.$notify({\n group: 'system',\n title: 'Connection failed',\n text: 'Failed to connect to the Oblecto web socket server. Is the server online?',\n type: 'error'\n })\n }\n },\n connect: function () {\n connectionFailedCount = 0\n\n this.$notify({\n group: 'system',\n title: 'Connection to Oblecto succeeded',\n text: 'Client has successfully connected to the Oblecto websocket interface!',\n type: 'success'\n })\n\n // Authenticate socket if auth token exits\n if (oblectoClient.accessToken) {\n this.$socket.emit('authenticate', { token: oblectoClient.accessToken })\n\n this.$notify({\n group: 'system',\n title: 'Authentication success',\n text: 'Socket interface has been authenticated',\n type: 'success'\n })\n\n this.$store.dispatch('updateAll')\n }\n },\n indexer: function (val) {\n if (val.event === 'added') {\n this.$store.dispatch('updateAll')\n }\n },\n play: function (msg) {\n if (msg.episodeId) {\n store.dispatch('playEpisodeLocal', msg.episodeId)\n }\n\n if (msg.movieId) {\n store.dispatch('playMovieLocal', msg.movieId)\n }\n }\n },\n router,\n template: '<App/>',\n components: { App }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[(_vm.searchResults.movies.length > 0)?_c('MovieList',{attrs:{\"title\":'Movie Results <span class=badge>' + _vm.searchResults.movies.length + '</span>',\"movies\":_vm.searchResults.movies}}):_vm._e(),_vm._v(\" \"),(_vm.searchResults.episodes.length > 0)?_c('EpisodeList',{attrs:{\"title\":'Episode Results <span class=badge>' + _vm.searchResults.episodes.length+ '</span>',\"episodes\":_vm.searchResults.episodes}}):_vm._e(),_vm._v(\" \"),(_vm.searchResults.series.length > 0)?_c('SeriesList',{attrs:{\"title\":'TV Show Results <span class=badge>' + _vm.searchResults.series.length + '</span>',\"series\":_vm.searchResults.series}}):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-dc9804bc\",\"hasScoped\":false,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/Search.vue\n// module id = NK6j\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-23fab74c\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/LoadingPage.vue\n// module id = NW9e\n// module chunks = 1","<template>\n <modal name=\"PasswordChange\" @before-open=\"beforeOpen\" height=\"auto\">\n <div class=\"container\">\n <div class=\"heading\">\n <h3>Change password for {{ username }}</h3>\n </div>\n <div class=\"body\">\n <label for=\"password\">Password:</label>\n <input id=\"password\" type=\"password\" v-model=\"password\" v-bind:class=\"{invalid: password === ''}\">\n </div>\n <div class=\"footer\">\n <button class=\"success\" v-on:click=\"setPassword\">Set password</button>\n </div>\n </div>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'PasswordChange',\n data () {\n return {\n userid: null,\n name: '',\n username: '',\n email: '',\n password: ''\n }\n },\n methods: {\n beforeOpen (event) {\n this.userid = event.params.id\n this.name = event.params.name\n this.username = event.params.username\n this.email = event.params.email\n this.password = ''\n },\n async setPassword () {\n if (this.userid === null) {\n return false\n }\n\n try {\n await this.axios.put(`/user/${this.userid}`, {\n password: this.password\n })\n\n this.$notify({\n group: 'system',\n title: 'Password has been changed successfully',\n text: 'You can now login with the username: ' + this.name,\n type: 'success'\n })\n } catch (e) {\n this.$notify({\n group: 'system',\n title: 'Password could not be changed',\n text: 'Maybe not all fields are filled?',\n type: 'error'\n })\n }\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .body\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n label\n display: block\n margin: 5px\n margin-left: 0\n\n input\n margin-bottom: 10px\n border-radius: 0\n padding: 10px\n width: 100%\n border: 2px #a8cca1 solid\n .invalid\n border-color: #ff9f78\n\n .footer\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding: 10px\n\n overflow: hidden\n\n button\n float: right\n\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/PasswordChange.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4581bbed\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/NavBar.vue\n// module id = OsCt\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-96a2350a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SeriesList.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./SeriesList.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./SeriesList.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-96a2350a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./SeriesList.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-96a2350a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/itemLists/SeriesList.vue\n// module id = PsU1\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7aa4ec56\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/itemLists/EpisodeList.vue\n// module id = Q/4g\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4ec09bf2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ChangeRemoteDialog.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./ChangeRemoteDialog.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./ChangeRemoteDialog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4ec09bf2\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./ChangeRemoteDialog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4ec09bf2\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/ChangeRemoteDialog.vue\n// module id = R7dx\n// module chunks = 1","import * as types from '../mutation-types'\nimport oblectoClient from '@/oblectoClient'\n\nconst state = {\n lists: {}\n}\n\nconst getters = {\n\n}\n\nconst actions = {\n async getSeries ({ commit, state }, { sort, order }) {\n let shows = await oblectoClient.seriesLibrary.getList(sort, order, 100, 0)\n\n commit(types.RECEIVE_SHOWS, { shows, sort })\n }\n}\n\nconst mutations = {\n [types.RECEIVE_SHOWS] (state, { shows, sort }) {\n state.lists[sort] = shows\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/series.js","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2f1c2121\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NewMovieSet.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./NewMovieSet.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./NewMovieSet.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2f1c2121\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./NewMovieSet.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2f1c2121\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/NewMovieSet.vue\n// module id = S23X\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-62868e7c\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/LibraryAdd.vue\n// module id = Saj0\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7c38ea57\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/settings/IndexerSettings.vue\n// module id = TLik\n// module chunks = 1","<template>\n <div class=\"container\">\n <MovieList v-bind:title=\"'Movie Results <span class=badge>' + searchResults.movies.length + '</span>' \"\n v-bind:movies=\"searchResults.movies\" v-if=\"searchResults.movies.length > 0\"/>\n <EpisodeList v-bind:title=\"'Episode Results <span class=badge>' + searchResults.episodes.length+ '</span>' \"\n v-bind:episodes=\"searchResults.episodes\" v-if=\"searchResults.episodes.length > 0\"/>\n <SeriesList v-bind:title=\"'TV Show Results <span class=badge>' + searchResults.series.length + '</span>' \"\n v-bind:series=\"searchResults.series\" v-if=\"searchResults.series.length > 0\"/>\n </div>\n</template>\n\n<script>\n import MovieList from '@/components/itemLists/MovieList'\n import EpisodeList from '@/components/itemLists/EpisodeList'\n import SeriesList from '@/components/itemLists/SeriesList'\n\n export default {\n name: 'Search',\n components: {\n MovieList,\n EpisodeList,\n SeriesList\n },\n data () {\n return {\n searchResults: {\n episodes: [],\n movies: [],\n shows: []\n }\n }\n },\n\n methods: {\n async search (query) {\n let { data: episodes } = await this.axios.get(`/episodes/search/${query}`)\n let { data: movies } = await this.axios.get(`/movies/search/${query}`)\n let { data: series } = await this.axios.get(`/shows/search/${query}`)\n\n this.searchResults = {\n episodes, movies, series\n }\n }\n },\n\n watch: {\n async '$route' (to, from) {\n this.search(to.params.search)\n }\n },\n\n async created () {\n this.search(this.$route.params.search)\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"sass\">\n\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/Search.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7688ec90\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/settings/Sets.vue\n// module id = Tfyk\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"MovieDialog\"},on:{\"before-open\":_vm.beforeOpen}},[_c('h3',[_vm._v(_vm._s(_vm.movie.movieName))]),_vm._v(\" \"),_c('tabs',{attrs:{\"options\":{ useUrlFragment: false }}},[_c('tab',{attrs:{\"name\":\"Data\"}}),_vm._v(\" \"),_c('tab',{attrs:{\"name\":\"Files\"}},[_c('ul',_vm._l((_vm.movie.Files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.path))])])}),0)])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-1a37355a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/MovieDialog.vue\n// module id = UgDc\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-ec7fce12\",\"scoped\":false,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/playBar.vue\n// module id = UpiY\n// module chunks = 1","<template>\n <transition name=\"slide-fade\" appear>\n <div class=\"episode\">\n <div class=\"episode-poster\"\n v-bind:style=\"{ backgroundImage: 'url(' + bannerUrl + ')' }\">\n\n\n <a class=\"play\" v-on:click=\"playEpisode\"><i class=\"fa fa-play\" aria-hidden=\"true\"></i></a>\n <div :title=\"episode.episodeName\" class=\"title\" v-if=\"inside\">{{ episode.episodeName }}</div>\n <div v-if=\"progress\" class=\"progress\" v-bind:style=\"{ width: progress * 100 + '%' }\"></div>\n <div class=\"actions\">\n <a class=\"action-item\" v-on:click=\"openEpisodeDialog\" title=\"Options\">\n <i class=\"fa fa-info\" aria-hidden=\"true\"></i>\n </a>\n <a class=\"action-item\" v-on:click=\"viewEpisodeInfo\" title=\"Info\">\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n <div :title=\"episode.episodeName\" class=\"title\" v-if=\"!inside\">{{ episode.episodeName }}</div>\n <div class=\"subtitle\" v-if=\"subtitle && !inside\">{{ subtitle }}</div>\n </div>\n </transition>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n\n export default {\n name: 'Episode',\n created () {\n if (this.episode.TrackEpisodes[0]) {\n this.progress = this.episode.TrackEpisodes[0].progress\n }\n\n const img = new Image()\n img.src = this.host + '/episode/' + this.episode.id + '/banner'\n\n img.onload = () => {\n this.bannerUrl = img.src\n this.bannerLoaded = true\n }\n\n img.onerror = () => {\n this.posterLoaded = true\n }\n },\n mounted () {\n\n },\n watch: {\n episode: async function (newState, oldState) {\n if (this.episode.TrackEpisodes[0]) {\n this.progress = this.episode.TrackEpisodes[0].progress\n }\n }\n },\n data () {\n return {\n progress: 0,\n loaded: false,\n bannerUrl: '',\n bannerLoaded: false\n }\n },\n sockets: {\n 'client-episode-progress': function (message) {\n if (message.episodeId === this.episode.id) {\n this.episode.TrackEpisodes[0] = message\n this.progress = message.progress\n }\n }\n },\n props: {\n 'subtitle': {\n type: String,\n required: false\n },\n 'inside': {\n type: Boolean,\n required: false,\n default: false\n },\n 'episode': {\n required: true,\n default: false\n }\n },\n computed: {\n ...mapState([\n 'host'\n ])\n },\n methods: {\n playEpisode: function (event) {\n event.preventDefault()\n // this.$router.push({name: 'PlayEpisode', params: {episodeId: this.episodeId}})\n this.$store.dispatch('playEpisode', this.episode.id)\n },\n openEpisodeDialog: function (event) {\n this.$modal.show('EpisodeDialog', { episode: this.episode })\n },\n viewEpisodeInfo: function (event) {\n this.$router.push({ name: 'EpisodeInfo', params: { episode: this.episode.id } })\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n .load-detector {\n\n }\n .slide-fade-enter-active {\n transition: all .5s;\n }\n\n .slide-fade-leave-active {\n transition: all .5s;\n }\n\n .slide-fade-enter, .slide-fade-leave-to\n /* .slide-fade-leave-active below version 2.1.8 */\n {\n transform: translateX(10px);\n opacity: 0;\n }\n\n .episode {\n display: inline-block;\n margin: 0 10px;\n\n width: 357px;\n }\n\n .title {\n font-family: Roboto;\n font-size: 13px;\n\n margin-top: 5px;\n padding: 0;\n text-overflow: ellipsis;\n\n overflow: hidden;\n color: #eee\n }\n\n .subtitle {\n font-family: Roboto;\n font-size: 12px;\n\n margin-top: 5px;\n padding: 0;\n text-overflow: ellipsis;\n color: #aaa;\n\n overflow: hidden;\n }\n\n .episode-poster {\n box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75);\n\n background-color: rgba(0, 0, 0, 0.8);\n -webkit-background-size: cover;\n background-size: cover;\n background-position: center;\n\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n\n height: 200px;\n width: 357px;\n\n border: 0 solid #ae6600;\n\n -webkit-transition: box-shadow 0.1s, opacity 0.1s;\n -moz-transition: box-shadow 0.1s, opacity 0.1s;\n -ms-transition: box-shadow 0.1s, opacity 0.1s;\n -o-transition: box-shadow 0.1s, opacity 0.1s;\n transition: box-shadow 0.1s, opacity 0.1s;\n\n position: relative;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @media screen and (max-width: 700px) {\n\n .episode {\n width: 285.6px;\n margin: 0 5px;\n }\n\n .episode-poster {\n height: 160px;\n width: 285.6px\n }\n\n }\n\n .actions {\n position: absolute;\n bottom: -50px;\n text-align: right;\n -webkit-transition: bottom 0.2s;\n -moz-transition: bottom 0.2s;\n -ms-transition: bottom 0.2s;\n -o-transition: bottom 0.2s;\n transition: bottom 0.2s;\n width: 100%;\n padding: 5px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n a {\n color: white;\n margin: 0 5px;\n cursor: pointer;\n }\n\n .episode-poster:hover {\n box-shadow: 0px 0px 0px 2px rgba(174, 102, 0, 0.75);\n opacity: 1;\n }\n\n .episode-poster:hover .actions {\n bottom: 0;\n }\n\n a.play {\n opacity: 0;\n display: block;\n font-size: 4em;\n margin: 0;\n width: 100px;\n height: 100px;\n background-color: rgba(0, 0, 0, 0.5);\n border: 2px solid white;\n border-radius: 100%;\n text-align: center;\n line-height: 100px;\n -webkit-transition: opacity 0.2s;\n -moz-transition: opacity 0.2s;\n -ms-transition: opacity 0.2s;\n -o-transition: opacity 0.2s;\n transition: opacity 0.2s;\n }\n\n .fa {\n margin-left: 10px;\n }\n\n .episode-poster:hover a.play {\n opacity: 0.4;\n }\n\n a.play:hover {\n opacity: 1 !important;\n }\n\n .episode-poster .title {\n position: absolute;\n bottom: 0;\n left: 0;\n font-size: 1.4em;\n padding: 10px;\n }\n\n .progress {\n height: 5px;\n background-color: #ae6600;\n position: absolute;\n bottom: 0;\n left: 0;\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/itemTypes/Episode.vue","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-23fab74c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./LoadingPage.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./LoadingPage.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./LoadingPage.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-23fab74c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./LoadingPage.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-23fab74c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/LoadingPage.vue\n// module id = VLFt\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sets\"},[_c('button',{on:{\"click\":_vm.newMovieSet}},[_vm._v(\"New Movie Set\")])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-7688ec90\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/settings/Sets.vue\n// module id = VNI7\n// module chunks = 1","<script src=\"../../../config/prod.env.js\"></script>\n<template>\n <div class=\"series\">\n <div class=\"title\" v-if=\"title\">\n <h3 v-html=\"title\"></h3>\n </div>\n <div class=\"empty\" v-if=\"series.length == 0\">\n <span class=\"no-content\">\n No TV Shows here\n </span>\n </div>\n <transition-group\n name=\"staggered-fade\"\n tag=\"ul\"\n class=\"scroller\"\n v-bind:css=\"true\"\n v-on:before-enter=\"beforeEnter\"\n v-on:enter=\"enter\"\n v-on:leave=\"leave\"\n >\n <Series v-for=\"(show, index) in series\"\n v-bind:title=\"show.seriesName\"\n v-bind:seriesId=\"show.id\"\n v-bind:series=\"show\"\n v-bind:watching=\"show.watching\"\n v-bind:key=\"show.id\"\n ></Series>\n </transition-group>\n </div>\n</template>\n\n<script>\n import Series from '@/components/itemTypes/Series'\n import Velocity from 'velocity-animate'\n\n export default {\n name: 'SeriesList',\n components: { Series },\n props: {\n 'series': Array,\n 'title': {\n default: ''\n }\n },\n methods: {\n beforeEnter: function (el) {\n el.style.opacity = 0\n el.style.width = 0\n },\n enter: function (el, done) {\n var delay = el.dataset.index * 150\n setTimeout(function () {\n Velocity(\n el,\n { opacity: 1, width: '136px' },\n { complete: done }\n )\n }, delay)\n },\n leave: function (el, done) {\n var delay = el.dataset.index * 150\n setTimeout(function () {\n Velocity(\n el,\n { opacity: 0, width: 0 },\n { complete: done }\n )\n }, delay)\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"sass\">\n.staggered-fade-move\n transition: transform 1s\n\n.series\n overflow: visible\n\n.scroller\n overflow: hidden\n overflow-x: visible\n white-space: nowrap\n padding: 5px 0\n\n.title, .title h3\n padding: 0 20px\n font:\n family: roboto\n size: 20px\n\n.empty\n height: 259px // This is the height of the episodes scroll container if it is filled\n\n display: flex\n align-items: center\n justify-content: center\n\n @media screen and (max-width: 700px)\n height: 209px\n\n\n .no-content\n font-size: 2em\n color: rgba(250, 250, 250, 0.5)\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/itemLists/SeriesList.vue","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-52822c7e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Series.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Series.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Series.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52822c7e\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Series.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-52822c7e\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/itemTypes/Series.vue\n// module id = W/Si\n// module chunks = 1","<template>\n <div class=\"maintenance\">\n <button @click=\"index('all')\">Full re-index</button>\n <button @click=\"index('series')\">Re-index series</button>\n <button @click=\"index('movies')\">Re-index movies</button>\n <hr>\n <button>Full cleanup</button>\n <button @click=\"clean('files')\">Clean up files database</button>\n <button @click=\"clean('episodes')\">Cleanup episodes without linked files</button>\n <button @click=\"clean('movies')\">Cleanup movies without linked files</button>\n <button @click=\"clean('series')\">Remove Series without episodes</button>\n <hr>\n <button>Download new artwork</button>\n <button @click=\"DownloadTVShowArt\">Download artwork for TV Shows and Episodes</button>\n <button @click=\"DownloadMovieArt\">Download artwork for Movies</button>\n <hr>\n <button @click=\"update('episodes')\">Update episode entries</button>\n <button @click=\"update('movies')\">Update movie entries</button>\n <button @click=\"update('series')\">Update series entries</button>\n <button @click=\"update('files')\">Update file entries</button>\n </div>\n</template>\n\n<script>\n export default {\n name: 'Maintenance',\n methods: {\n async DownloadTVShowArt () {\n await this.axios.get('/settings/maintenance/series/download/art')\n this.$notify({\n group: 'system',\n title: 'A TV Show artwork update has been requested',\n text: 'Missing artwork will be downloaded',\n type: 'warning'\n })\n },\n\n async DownloadMovieArt () {\n await this.axios.get('/settings/maintenance/movies/download/art')\n this.$notify({\n group: 'system',\n title: 'A movie artwork update has been requested',\n text: 'Missing artwork will be downloaded',\n type: 'warning'\n })\n },\n async index (type) {\n await this.axios.get('/settings/maintenance/index/' + type)\n this.$notify({\n group: 'system',\n title: 'Library update requested successfully',\n text: 'A library index update has been started',\n type: 'warning'\n })\n },\n async clean (type) {\n await this.axios.get('/settings/maintenance/clean/' + type)\n this.$notify({\n group: 'system',\n title: 'Library cleansing requested successfully',\n text: 'A library cleansing has been started',\n type: 'warning'\n })\n },\n async update (type) {\n await this.axios.get('/settings/maintenance/update/' + type)\n this.$notify({\n group: 'system',\n title: 'A library update has been requested',\n text: 'A library update has been started',\n type: 'warning'\n })\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n hr\n border-color: rgba(0,0,0,0.5)\n width: 100%\n display: block\n float: left\n\n button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n display: block\n float: left\n\n padding: 10px\n margin: 2px\n\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n button:hover\n background-color: rgba(0,0,0,0.9)\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/settings/Maintenance.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-bf1f5330\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/settings/UserManager.vue\n// module id = Xa6J\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4ec09bf2\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/ChangeRemoteDialog.vue\n// module id = Y9YR\n// module chunks = 1","<template>\n <modal name=\"EpisodeDialog\" @before-open=\"beforeOpen\">\n <h3>{{ episode.episodeName }}</h3>\n <tabs :options=\"{ useUrlFragment: false }\">\n <tab name=\"Data\">\n\n </tab>\n <tab name=\"Files\">\n <ul>\n <li v-for=\"(file, index) in episode.Files\"\n v-bind:key=\"file.id\">\n <span>{{ file.path }}</span>\n </li>\n </ul>\n </tab>\n </tabs>\n </modal>\n</template>\n\n<script>\n export default {\n name: 'EpisodeDialog',\n data () {\n return {\n episode: {}\n }\n },\n methods: {\n async beforeOpen (event) {\n this.episode = {}\n this.episode = (await this.axios.get('/episode/' + event.params.episode.id + `/info`)).data\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n .container\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n ul\n list-style: none\n padding: 0\n margin: 0\n li\n span\n display: inline-block\n width: 100%\n padding: 10px 20px\n color: white\n text-decoration: none\n\n -webkit-transition: background-color 0.1s\n -moz-transition: background-color 0.1s\n -ms-transition: background-color 0.1s\n -o-transition: background-color 0.1s\n transition: background-color 0.1s\n span:hover\n background-color: rgba(0,0,0,0.1)\n box-shadow: 0px 0px 2px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.2)\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/EpisodeDialog.vue","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-155d6528\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PasswordChange.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./PasswordChange.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./PasswordChange.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-155d6528\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./PasswordChange.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-155d6528\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/PasswordChange.vue\n// module id = YLkC\n// module chunks = 1","import Vue from 'vue'\nimport Router from 'vue-router'\n\nimport SeriesView from '@/components/pages/SeriesView'\nimport MovieInfo from '@/components/pages/MovieInfo'\nimport Login from '@/components/pages/Login'\nimport Movies from '@/components/pages/Movies'\nimport Search from '@/components/pages/Search'\nimport Main from '@/components/pages/Main'\n\nimport Settings from '@/components/pages/Settings'\nimport Maintenance from '@/components/settings/Maintenance'\nimport UserManager from '@/components/settings/UserManager'\nimport Libraries from '@/components/settings/Libraries'\nimport Sets from '@/components/settings/Sets'\nimport IndexerSettings from '@/components/settings/IndexerSettings'\n\nimport VueAxios from 'vue-axios'\nimport axios from 'axios'\nimport oblectoClient from '@/oblectoClient'\nimport Series from '@/components/pages/Series'\n\nVue.use(VueAxios, axios)\n\nVue.use(Router)\n\nconst router = new Router({\n mode: 'history',\n base: BASE_PATH,\n routes: [\n {\n path: '/',\n name: 'Main',\n component: Main,\n meta: { requiresAuth: true }\n },\n {\n path: '/series',\n name: 'Series',\n component: Series,\n meta: { requiresAuth: true }\n },\n {\n path: '/movies',\n name: 'Movies',\n component: Movies,\n meta: { requiresAuth: true }\n },\n {\n path: '/series/:seriesId',\n name: 'SeriesView',\n component: SeriesView,\n meta: { requiresAuth: true }\n },\n {\n path: '/movie/:movieId',\n name: 'MovieInfo',\n component: MovieInfo,\n meta: { requiresAuth: true }\n },\n {\n path: '/search/:search',\n name: 'Search',\n component: Search,\n meta: { requiresAuth: true }\n },\n {\n path: '/login',\n name: 'login',\n component: Login\n },\n {\n path: '/settings',\n component: Settings,\n meta: { requiresAuth: true },\n children: [\n {\n name: 'SettingsHome',\n path: '',\n component: Maintenance\n },\n {\n name: 'SettingsMaintenance',\n path: 'maintenance',\n component: Maintenance\n },\n {\n name: 'SettingsUsers',\n path: 'users',\n component: UserManager\n },\n {\n name: 'SettingsLibraries',\n path: 'libraries',\n component: Libraries\n },\n {\n name: 'SettingsSets',\n path: 'sets',\n component: Sets\n },\n {\n name: 'IndexerSettings',\n path: 'indexer',\n component: IndexerSettings\n }\n ]\n }\n ]\n})\n\nrouter.beforeEach((to, from, next) => {\n if (to.matched.some(record => record.meta.requiresAuth)) {\n if (!oblectoClient.accessToken) {\n console.log('directing to login')\n next({\n path: '/login',\n query: { redirect: to.fullPath }\n })\n } else {\n next()\n }\n } else {\n next() // make sure to always call next()!\n }\n})\n\nexport default router\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"EpisodeDialog\"},on:{\"before-open\":_vm.beforeOpen}},[_c('h3',[_vm._v(_vm._s(_vm.episode.episodeName))]),_vm._v(\" \"),_c('tabs',{attrs:{\"options\":{ useUrlFragment: false }}},[_c('tab',{attrs:{\"name\":\"Data\"}}),_vm._v(\" \"),_c('tab',{attrs:{\"name\":\"Files\"}},[_c('ul',_vm._l((_vm.episode.Files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.path))])])}),0)])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-1a1f72c4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/EpisodeDialog.vue\n// module id = ZLnp\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-5ca41f6d\",\"scoped\":false,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=1!./src/components/WatchPanel.vue\n// module id = bVFq\n// module chunks = 1","<template>\n <li class=\"show\">\n <div class=\"show-poster\" v-bind:style=\"{ backgroundImage: 'url(' + host + '/series/' + series.id + '/poster)' }\">\n <a class=\"play\" v-on:click=\"viewEpisodes\"><i class=\"fa fa-eye\" aria-hidden=\"true\"></i></a>\n <div class=\"actions\">\n <a class=\"action-item\" v-on:click=\"openModal\" title=\"Options\">\n <i class=\"fa fa-info\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n <div :title=\"title\" class=\"title\">{{ title }}</div>\n <div class=\"subtitle\" v-if=\"subtitle\">{{ subtitle }}</div>\n </li>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n\n export default {\n name: 'Show',\n props: ['title', 'subtitle', 'series'],\n data () {\n return {}\n },\n computed: mapState([\n 'host'\n ]),\n methods: {\n openModal: function (event) {\n this.$modal.show('ShowDialog', { show: this.series })\n },\n viewEpisodes: function (event) {\n this.$router.push({ name: 'SeriesView', params: { seriesId: this.series.id } })\n }\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n .show {\n display: inline-block;\n margin: 0 10px;\n\n width: 136px;\n position: relative;\n }\n\n .title {\n font-family: Roboto;\n font-size: 13px;\n\n width: 136px;\n\n margin-top: 5px;\n padding: 0;\n text-overflow: ellipsis;\n\n overflow: hidden;\n color: #eee\n }\n\n .subtitle {\n font-family: Roboto;\n font-size: 12px;\n\n width: 136px;\n\n margin-top: 5px;\n padding: 0;\n text-overflow: ellipsis;\n color: #aaa;\n\n overflow: hidden;\n }\n\n .show-poster {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n\n box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.75);\n\n background-color: rgba(0, 0, 0, 0.8);\n -webkit-background-size: cover;\n background-size: cover;\n background-position: center;\n\n height: 200px;\n width: 136px;\n\n -webkit-border-radius: 3px;\n -moz-border-radius: 3px;\n border-radius: 3px;\n\n border: 0 solid #ae6600;\n\n -webkit-transition: box-shadow 0.1s, opacity 0.1s;\n -moz-transition: box-shadow 0.1s, opacity 0.1s;\n -ms-transition: box-shadow 0.1s, opacity 0.1s;\n -o-transition: box-shadow 0.1s, opacity 0.1s;\n transition: box-shadow 0.1s, opacity 0.1s;\n\n position: relative;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @media screen and (max-width: 700px) {\n\n .show {\n width: 108.8px;\n margin: 0 5px;\n }\n\n .show-poster {\n height: 160px;\n width: 108.8px;\n }\n\n }\n\n\n .actions {\n position: absolute;\n bottom: -28px;\n text-align: right;\n -webkit-transition: bottom 0.2s;\n -moz-transition: bottom 0.2s;\n -ms-transition: bottom 0.2s;\n -o-transition: bottom 0.2s;\n transition: bottom 0.2s;\n width: 100%;\n padding: 5px;\n background-color: rgba(0, 0, 0, 0.5);\n overflow: visible\n }\n\n a {\n color: white;\n margin: 0 5px;\n cursor: pointer;\n }\n\n .show-poster:hover {\n box-shadow: 0px 0px 0px 2px rgba(174, 102, 0, 0.75);\n }\n\n .show-poster:hover .actions {\n bottom: 0;\n }\n\n .actions:hover {\n bottom: 0;\n }\n\n a.play {\n opacity: 0;\n display: block;\n font-size: 4em;\n margin: 0;\n width: 100px;\n height: 100px;\n background-color: rgba(0,0,0,0.5);\n border: 2px solid white;\n border-radius: 100%;\n text-align: center;\n line-height: 100px;\n -webkit-transition: opacity 0.2s;\n -moz-transition: opacity 0.2s;\n -ms-transition: opacity 0.2s;\n -o-transition: opacity 0.2s;\n transition: opacity 0.2s;\n }\n\n .show-poster:hover a.play{\n opacity: 0.4;\n }\n\n a.play:hover {\n opacity: 1!important;\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/itemTypes/Series.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Libraries\"},[_c('h2',[_vm._v(\"Movies\")]),_vm._v(\" \"),_c('table',[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.movies),function(library,index){return _c('tr',[_c('td',{staticClass:\"id\"},[_vm._v(\"\\n \"+_vm._s(index + 1)+\"\\n \")]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(library.path)+\"\\n \")]),_vm._v(\" \"),_c('td',{staticClass:\"actions\"},[_c('a',{attrs:{\"title\":\"Delete library path\"},on:{\"click\":function($event){return _vm.deleteMovieLibrary(library.path)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.deleteIcon}})],1)])])}),0)]),_vm._v(\" \"),_c('a',{staticClass:\"button\",on:{\"click\":function($event){return _vm.libraryAdd('movies')}}},[_vm._v(\"Add movie library\")]),_vm._v(\" \"),_c('h2',[_vm._v(\"TV Shows\")]),_vm._v(\" \"),_c('table',[_vm._m(1),_vm._v(\" \"),_c('tbody',_vm._l((_vm.shows),function(library,index){return _c('tr',[_c('td',{staticClass:\"id\"},[_vm._v(\"\\n \"+_vm._s(index + 1)+\"\\n \")]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(library.path)+\"\\n \")]),_vm._v(\" \"),_c('td',{staticClass:\"actions\"},[_c('a',{attrs:{\"title\":\"Delete library path\"},on:{\"click\":function($event){return _vm.deleteSeriesLibrary(library.path)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.deleteIcon}})],1)])])}),0)]),_vm._v(\" \"),_c('a',{staticClass:\"button\",on:{\"click\":function($event){return _vm.libraryAdd('tvshows')}}},[_vm._v(\"Add TV show library\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Path\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Actions\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Path\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Actions\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-b752a75c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/settings/Libraries.vue\n// module id = cP5b\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[(_vm.showData && _vm.posterLoaded)?_c('div',{staticClass:\"show\"},[_c('div',{staticClass:\"info-container\"},[_c('div',{staticClass:\"info\"},[_c('div',{staticClass:\"poster\"},[_c('img',{attrs:{\"src\":_vm.posterUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"right\"},[_c('h2',[_vm._v(_vm._s(_vm.showData.seriesName))]),_vm._v(\" \"),_c('span',{staticClass:\"year\"},[_vm._v(\"First aired on \"+_vm._s(_vm.showData.firstAired))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.showData.overview)+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"genres\"},_vm._l((_vm.showData.genre),function(genre){return _c('li',{staticClass:\"genre\"},[_vm._v(_vm._s(genre))])}),0)])])]),_vm._v(\" \"),_c('div',{staticClass:\"episodes\"},_vm._l((_vm.series),function(episodes,index){return _c('EpisodeList',{key:index,attrs:{\"episodes\":episodes,\"show\":_vm.showData,\"title\":index}})}),1)]):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-2b2f22c8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/SeriesView.vue\n// module id = cZfO\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-56154beb\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/settings/UserManagement/userEntry.vue\n// module id = dCSH\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wrapper\"},[_c('h2',[_vm._v(\"Video Filetypes\")]),_vm._v(\" \"),_c('table',[_vm._m(0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.videoFiletypes),function(filetype,index){return _c('tr',[_c('td',{staticClass:\"id\"},[_vm._v(\"\\n \"+_vm._s(index + 1)+\"\\n \")]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(filetype)+\"\\n \")]),_vm._v(\" \"),_c('td',{staticClass:\"actions\"},[_c('a',{attrs:{\"title\":\"Remove filetype\"},on:{\"click\":function($event){return _vm.deleteSeriesLibrary(filetype)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.deleteIcon}})],1)])])}),0)]),_vm._v(\" \"),_c('a',{staticClass:\"button\",on:{\"click\":function($event){return _vm.filetypeAdd('video')}}},[_vm._v(\"Add Filetype\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Filetype\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Actions\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-7c38ea57\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/settings/IndexerSettings.vue\n// module id = dnHS\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-db18dd10\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Maintenance.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Maintenance.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Maintenance.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-db18dd10\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Maintenance.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-db18dd10\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/settings/Maintenance.vue\n// module id = e9Mb\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-96a2350a\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/itemLists/SeriesList.vue\n// module id = edAR\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"CopyText\",\"height\":\"auto\"},on:{\"before-open\":_vm.beforeOpen}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(_vm._s(_vm.title))])]),_vm._v(\" \"),_c('div',{staticClass:\"body\"},[_c('input',{ref:\"inputTextField\",attrs:{\"type\":\"text\",\"id\":\"name\"},domProps:{\"value\":_vm.text}})]),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('button',{staticClass:\"success\",on:{\"click\":_vm.copy}},[_vm._v(\"Copy\")])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-30a74134\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/CopyText.vue\n// module id = fzOJ\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4581bbed\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NavBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4581bbed\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NavBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4581bbed\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NavBar.vue\n// module id = g2+m\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"series\"},[(_vm.title)?_c('div',{staticClass:\"title\"},[_c('h3',{domProps:{\"innerHTML\":_vm._s(_vm.title)}})]):_vm._e(),_vm._v(\" \"),(_vm.series.length == 0)?_c('div',{staticClass:\"empty\"},[_c('span',{staticClass:\"no-content\"},[_vm._v(\"\\n No TV Shows here\\n \")])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"scroller\",attrs:{\"name\":\"staggered-fade\",\"tag\":\"ul\",\"css\":true},on:{\"before-enter\":_vm.beforeEnter,\"enter\":_vm.enter,\"leave\":_vm.leave}},_vm._l((_vm.series),function(show,index){return _c('Series',{key:show.id,attrs:{\"title\":show.seriesName,\"seriesId\":show.id,\"series\":show,\"watching\":show.watching}})}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-96a2350a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/itemLists/SeriesList.vue\n// module id = gD0Z\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-fb97f698\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./MovieInfo.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./MovieInfo.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./MovieInfo.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fb97f698\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./MovieInfo.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-fb97f698\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/MovieInfo.vue\n// module id = gYhW\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b752a75c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Libraries.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Libraries.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Libraries.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b752a75c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Libraries.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b752a75c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/settings/Libraries.vue\n// module id = gtqI\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"show\"},[_c('div',{staticClass:\"show-poster\",style:({ backgroundImage: 'url(' + _vm.host + '/series/' + _vm.series.id + '/poster)' })},[_c('a',{staticClass:\"play\",on:{\"click\":_vm.viewEpisodes}},[_c('i',{staticClass:\"fa fa-eye\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('a',{staticClass:\"action-item\",attrs:{\"title\":\"Options\"},on:{\"click\":_vm.openModal}},[_c('i',{staticClass:\"fa fa-info\",attrs:{\"aria-hidden\":\"true\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.title}},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('div',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-52822c7e\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/itemTypes/Series.vue\n// module id = gxse\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"form\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)}}},[_c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"src\":_vm.host + '/web/logo.png',\"alt\":\"\"}})]),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(\"Username\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.credentials.username),expression:\"credentials.username\"}],attrs:{\"type\":\"text\",\"id\":\"username\"},domProps:{\"value\":(_vm.credentials.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.credentials, \"username\", $event.target.value)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Password\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.credentials.password),expression:\"credentials.password\"}],attrs:{\"id\":\"password\",\"type\":\"password\"},domProps:{\"value\":(_vm.credentials.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.credentials, \"password\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"bottom\"},[_c('span',{staticClass:\"server-indicator\"},[_vm._v(_vm._s(_vm.host)+\" \"),_c('a',{staticClass:\"nav-link\",on:{\"click\":_vm.changeHost}},[_vm._v(\"Change\")])]),_vm._v(\" \"),_c('button',{attrs:{\"type\":\"submit\"},on:{\"click\":_vm.submit}},[_vm._v(\"Login\")])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-03b31977\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/Login.vue\n// module id = hY/H\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-30a74134\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CopyText.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./CopyText.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./CopyText.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-30a74134\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./CopyText.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-30a74134\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/CopyText.vue\n// module id = hzEh\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2b2f22c8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SeriesView.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./SeriesView.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./SeriesView.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b2f22c8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./SeriesView.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2b2f22c8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/SeriesView.vue\n// module id = i5hF\n// module chunks = 1","<template>\n <div class=\"settings\">\n <ul class=\"settings-nav\">\n <li class=\"settings-nav-item\"><router-link :to=\"{ name: 'SettingsMaintenance'}\" class=\"nav-link\">Maintance</router-link></li>\n <li class=\"settings-nav-item\"><router-link :to=\"{ name: 'SettingsUsers'}\" class=\"nav-link\">Users</router-link></li>\n <li class=\"settings-nav-item\"><router-link :to=\"{ name: 'SettingsLibraries'}\" class=\"nav-link\">Libraries</router-link></li>\n <li class=\"settings-nav-item\"><router-link :to=\"{ name: 'IndexerSettings'}\" class=\"nav-link\">Indexer Settings</router-link></li>\n <li class=\"settings-nav-item\"><router-link :to=\"{ name: 'SettingsSets'}\" class=\"nav-link\">Sets</router-link></li>\n </ul>\n <div class=\"container\">\n <router-view></router-view>\n </div>\n </div>\n</template>\n\n<script>\n export default {\n name: 'Settings'\n }\n</script>\n\n<style scoped lang=\"sass\">\n.container\n padding: 10px\n\n.settings-nav\n list-style: none\n margin-top: 0\n margin-bottom: 15px\n position: relative\n\n overflow-x: auto\n\n white-space: nowrap\n\n .settings-nav-item\n display: inline-block\n a\n color: #999\n display: block\n text-decoration: none\n padding: 10px 20px\n font-family: Roboto\n font-size: 20px\n text-transform: capitalize\n font-weight: bold\n\n a.router-link-active\n color: #eee\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/pages/Settings.vue","<template>\n <div class=\"wrapper\">\n <h2>Video Filetypes</h2>\n <table>\n <thead>\n <tr>\n <th>#</th>\n <th>Filetype</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(filetype, index) in videoFiletypes\">\n <td class=\"id\">\n {{ index + 1 }}\n </td>\n <td>\n {{ filetype }}\n </td>\n <td class=\"actions\">\n <a title=\"Remove filetype\" v-on:click=\"deleteSeriesLibrary(filetype)\">\n <FontAwesomeIcon :icon=\"deleteIcon\"/>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n <a class=\"button\" v-on:click=\"filetypeAdd('video')\">Add Filetype</a>\n </div>\n</template>\n\n<script>\n import FontAwesomeIcon from '@fortawesome/vue-fontawesome'\n import faTrash from '@fortawesome/fontawesome-free-solid/faTrash'\n import oblectoClient from '@/oblectoClient'\n\n export default {\n name: 'IndexerSettings',\n components: {\n FontAwesomeIcon\n },\n computed: {\n deleteIcon () {\n return faTrash\n }\n },\n data () {\n return {\n videoFiletypes: []\n }\n },\n async created () {\n let filetypes = (await oblectoClient.axios.get(`/settings/fileExtensions`)).data\n\n this.videoFiletypes = filetypes.video\n },\n methods: {\n async filetypeAdd (type) {\n\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n display: block\n width: 100%\n\n max-width: 200px\n\n margin: 5px 0\n\n text-align: center\n\n h2\n padding-left: 40px\n\n table\n background: #696060\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n border-spacing: 0\n\n width: 100%\n\n thead\n background-color: #444042\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n th\n padding: 10px\n\n margin: 0\n border: 0\n\n outline: 0\n tr:nth-child(even)\n background-color: darken(#696060, 2)\n\n td\n padding: 10px\n\n .id\n text-align: right\n\n .actions\n text-align: center\n\n\n .button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n display: block\n width: 100%\n\n max-width: 200px\n\n margin: 5px 0\n\n text-align: center\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/settings/IndexerSettings.vue","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7688ec90\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Sets.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Sets.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Sets.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7688ec90\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Sets.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7688ec90\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/settings/Sets.vue\n// module id = jHca\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-409cf992\",\"scoped\":true,\"hasInlineConfig\":false}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/Movies.vue\n// module id = jQs/\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"PasswordChange\",\"height\":\"auto\"},on:{\"before-open\":_vm.beforeOpen}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"Change password for \"+_vm._s(_vm.username))])]),_vm._v(\" \"),_c('div',{staticClass:\"body\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Password:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],class:{invalid: _vm.password === ''},attrs:{\"id\":\"password\",\"type\":\"password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('button',{staticClass:\"success\",on:{\"click\":_vm.setPassword}},[_vm._v(\"Set password\")])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-155d6528\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/PasswordChange.vue\n// module id = jr1x\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-03b31977\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/Login.vue\n// module id = k/4+\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d0cfb4ba\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Main.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Main.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d0cfb4ba\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Main.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-d0cfb4ba\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/Main.vue\n// module id = l1oq\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"id\"},[_vm._v(_vm._s(_vm.user.id)+\" \")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.user.name))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.user.username))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.user.email))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.user.group))]),_vm._v(\" \"),_c('td',[_c('a',{staticClass:\"action\",on:{\"click\":_vm.changePassword}},[_vm._v(\"Change Password\")]),_vm._v(\" \"),_c('a',{staticClass:\"action\",attrs:{\"href\":\"#\"}},[_vm._v(\"Change Group\")])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-56154beb\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/settings/UserManagement/userEntry.vue\n// module id = lO1t\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('MovieList',{attrs:{\"title\":\"Recently Added\",\"movies\":_vm.movies.createdAt}}),_vm._v(\" \"),_c('MovieList',{attrs:{\"title\":\"Popular movies\",\"movies\":_vm.movies.popularity}}),_vm._v(\" \"),_c('MovieList',{attrs:{\"title\":\"Recently released movies\",\"movies\":_vm.movies.releaseDate}}),_vm._v(\" \"),_vm._l((_vm.sets),function(set,index){return _c('MovieList',{key:set.id,attrs:{\"title\":set.setName,\"movies\":set.movies}})})],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-409cf992\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/Movies.vue\n// module id = lbCX\n// module chunks = 1","import OblectoClient from 'oblectoclient'\n\nlet host = window.location.protocol + '//' + window.location.hostname\n\nif (window.location.port) {\n host = window.location.protocol + '//' + window.location.hostname + ':' + window.location.port\n}\n\nif (OBLECTO_HOST) host = OBLECTO_HOST\n\nexport default new OblectoClient(host)\n\n\n\n// WEBPACK FOOTER //\n// ./src/oblectoClient.js","<template>\n <div class=\"UserManager\">\n <table>\n <thead>\n <tr>\n <th>User ID</th>\n <th>Name</th>\n <th>Username</th>\n <th>Email</th>\n <th>Group</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n <user-entry v-for=\"(user, index) in users\"\n v-bind:user=\"user\"\n v-bind:key=\"user.id\"\n ></user-entry>\n </tbody>\n </table>\n <a class=\"button\" v-on:click=\"userAdd\">Add user</a>\n </div>\n</template>\n\n<script>\n import userEntry from '@/components/settings/UserManagement/userEntry'\n\n export default {\n name: 'UserManager',\n components: { userEntry },\n data () {\n return {\n users: {}\n }\n },\n async created () {\n this.users = (await this.axios.get(`/users`)).data\n },\n methods: {\n async userAdd () {\n this.$modal.show('UserAdd')\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n table\n background: #696060\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n border-spacing: 0\n\n width: 100%\n\n thead\n background-color: #444042\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n th\n padding: 10px\n\n margin: 0\n border: 0\n\n outline: 0\n\n .button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n display: block\n width: 100%\n\n max-width: 200px\n\n margin: 5px 0\n\n text-align: center\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/settings/UserManager.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"slide-fade\",\"appear\":\"\"}},[_c('div',{staticClass:\"episode\"},[_c('div',{staticClass:\"episode-poster\",style:({ backgroundImage: 'url(' + _vm.bannerUrl + ')' })},[_c('a',{staticClass:\"play\",on:{\"click\":_vm.playEpisode}},[_c('i',{staticClass:\"fa fa-play\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),(_vm.inside)?_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.episode.episodeName}},[_vm._v(_vm._s(_vm.episode.episodeName))]):_vm._e(),_vm._v(\" \"),(_vm.progress)?_c('div',{staticClass:\"progress\",style:({ width: _vm.progress * 100 + '%' })}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('a',{staticClass:\"action-item\",attrs:{\"title\":\"Options\"},on:{\"click\":_vm.openEpisodeDialog}},[_c('i',{staticClass:\"fa fa-info\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('a',{staticClass:\"action-item\",attrs:{\"title\":\"Info\"},on:{\"click\":_vm.viewEpisodeInfo}},[_c('i',{staticClass:\"fa fa-eye\",attrs:{\"aria-hidden\":\"true\"}})])])]),_vm._v(\" \"),(!_vm.inside)?_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.episode.episodeName}},[_vm._v(_vm._s(_vm.episode.episodeName))]):_vm._e(),_vm._v(\" \"),(_vm.subtitle && !_vm.inside)?_c('div',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e()])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-44594865\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/itemTypes/Episode.vue\n// module id = lskb\n// module chunks = 1","<template>\n <div class=\"sets\">\n <button @click=\"newMovieSet\">New Movie Set</button>\n\n </div>\n</template>\n\n<script>\n export default {\n name: 'Sets',\n methods: {\n async newMovieSet () {\n this.$modal.show('NewMovieSet')\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n hr\n border-color: rgba(0,0,0,0.5)\n width: 100%\n display: block\n float: left\n\n button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n display: block\n float: left\n\n padding: 10px\n margin: 2px\n\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n button:hover\n background-color: rgba(0,0,0,0.9)\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/settings/Sets.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"nav-bar\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"nav-left\"},[_c('div',{staticClass:\"brand\"},[_c('router-link',{staticClass:\"brand-link\",attrs:{\"to\":{ name: 'Main'}}},[_c('img',{attrs:{\"src\":_vm.host + '/web/logo.png',\"alt\":\"\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"links\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'Series'}}},[_vm._v(\"Series\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'Movies'}}},[_vm._v(\"Movies\")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"search\"},[_c('form',{staticClass:\"search\",attrs:{\"action\":\"\",\"id\":\"search-form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.search($event)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchText),expression:\"searchText\"}],staticClass:\"input-text\",attrs:{\"type\":\"text\",\"id\":\"search-input\"},domProps:{\"value\":(_vm.searchText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchText=$event.target.value}}}),_vm._v(\" \"),_c('button',{attrs:{\"type\":\"submit\"}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconSearch}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"nav-right\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":{ name: 'SettingsHome'}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconSettings}})],1),_vm._v(\" \"),_c('a',{staticClass:\"nav-link\",on:{\"click\":_vm.changeRemote}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconRemote}})],1),_vm._v(\" \"),_c('a',{staticClass:\"nav-link\",on:{\"click\":_vm.logout}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconLogout}})],1)],1)])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-4581bbed\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/NavBar.vue\n// module id = n6XT\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"ShowModify\",\"height\":\"auto\"},on:{\"before-open\":_vm.beforeOpen}},[_c('div',{staticClass:\"container\"},[_c('h3',[_vm._v(_vm._s(_vm.show.seriesName))]),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"half\"},[_c('div',{staticClass:\"poster\"},[_c('img',{attrs:{\"src\":_vm.host + '/series/' + _vm.show.id + '/poster',\"alt\":\"\"}})])])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-5e3e0898\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/ShowModify.vue\n// module id = nPAF\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"movie\"},[(_vm.movieData.id)?_c('div',{ref:\"infoContainer\",staticClass:\"info-container\",style:({ backgroundImage: 'linear-gradient(to bottom, rgba(255,255,255, 0) 40%, ' + _vm.endGradient + ' 80%), url(' + _vm.host + '/movie/' + _vm.movieData.id + '/fanart)' })},[(_vm.posterLoaded)?_c('div',{staticClass:\"info\"},[_c('div',{staticClass:\"poster\"},[_c('img',{attrs:{\"src\":_vm.posterUrl,\"alt\":\"\"}}),_vm._v(\" \"),_c('a',{staticClass:\"play\",on:{\"click\":_vm.playMovie}},[_c('i',{staticClass:\"fa fa-play\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"right\"},[_c('h2',[_vm._v(_vm._s(_vm.movieData.movieName))]),_vm._v(\" \"),_c('span',{staticClass:\"year\"},[_vm._v(\"First released on \"+_vm._s(_vm.movieData.releaseDate))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.movieData.overview)+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"genres\"},_vm._l((_vm.movieData.genre),function(genre){return _c('li',{staticClass:\"genre\"},[_vm._v(_vm._s(genre))])}),0)])]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.movieData.Files.length > 0)?_c('div',{staticClass:\"file-list-container\"},[_c('ul',{staticClass:\"file-list\"},_vm._l((_vm.movieData.Files),function(FileIterator,index){return _c('li',{key:FileIterator.id,staticClass:\"file-list-item\"},[_vm._v(\"\\n \"+_vm._s(FileIterator.name)+\" \"),_c('span',{staticClass:\"badge\"},[_vm._v(_vm._s(FileIterator.extension))]),_vm._v(\" \"),_c('div',{staticClass:\"file-item-right\"},[_c('span',{staticClass:\"copy\",on:{\"click\":function($event){return _vm.copyUrl(FileIterator.id)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconCopy}})],1)])])}),0)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"file-list-container\"},[(_vm.movieData.Files.length === 0)?_c('div',{staticClass:\"error\"},[_c('span',{staticClass:\"msg\"},[_vm._v(\"No files linked\")])]):_vm._e()]),_vm._v(\" \"),_vm._l((_vm.sets),function(set,index){return _c('MovieList',{key:set.id,attrs:{\"title\":set.setName,\"movies\":set.movies}})})],2)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-fb97f698\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/MovieInfo.vue\n// module id = oIFg\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1a37355a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./MovieDialog.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./MovieDialog.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./MovieDialog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a37355a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./MovieDialog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1a37355a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/MovieDialog.vue\n// module id = osKI\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-62868e7c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./LibraryAdd.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./LibraryAdd.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./LibraryAdd.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-62868e7c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./LibraryAdd.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-62868e7c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/LibraryAdd.vue\n// module id = ouS2\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-dc9804bc\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Search.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Search.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Search.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-dc9804bc\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Search.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/Search.vue\n// module id = pap/\n// module chunks = 1","<template>\n <modal name=\"LibraryAdd\" @before-open=\"beforeOpen\" @opened=\"opened\" height=\"auto\">\n <div class=\"container\">\n <div class=\"heading\">\n <h3>Add {{ libraryType }} library</h3>\n </div>\n <div class=\"body\">\n <label for=\"name\">Path:</label>\n <input type=\"text\" id=\"name\" v-model=\"path\" v-on:keyup.enter=\"addLibrary\" ref=\"pathInput\" v-bind:class=\"{invalid: path === ''}\">\n </div>\n <div class=\"footer\">\n <button class=\"success\" v-on:click=\"addLibrary\">Add library</button>\n </div>\n </div>\n </modal>\n</template>\n\n<script>\n import { mapActions } from 'vuex'\n\n export default {\n name: 'UserAdd',\n data () {\n return {\n path: '',\n libraryType: 'movie'\n }\n },\n methods: {\n ...mapActions('libraries', [\n 'updateAll',\n 'deleteMovieLibrary',\n 'deleteSeriesLibrary'\n ]),\n beforeOpen (event) {\n this.libraryType = event.params.libraryType\n this.path = ''\n },\n opened () {\n this.$refs.pathInput.focus()\n },\n async addLibrary () {\n try {\n await this.axios.put(`/sources/${this.libraryType}`, {\n path: this.path\n })\n\n this.$notify({\n group: 'system',\n title: 'Library path has been successfully added',\n text: 'The library will be indexed on next update',\n type: 'success'\n })\n\n this.updateAll()\n\n this.$modal.hide('LibraryAdd')\n this.path = ''\n } catch (e) {\n this.$notify({\n group: 'system',\n title: 'Library path could not be added',\n text: 'The request to add the path has failed',\n type: 'error'\n })\n }\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .body\n padding: 10px\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n label\n display: block\n margin: 5px\n margin-left: 0\n\n input\n margin-bottom: 10px\n border-radius: 0\n padding: 10px\n width: 100%\n border: 2px #a8cca1 solid\n .invalid\n border-color: #ff9f78\n\n .footer\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n padding: 10px\n\n overflow: hidden\n\n button\n float: right\n\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/LibraryAdd.vue","<template>\n <modal name=\"ShowModify\" @before-open=\"beforeOpen\" height=\"auto\">\n <div class=\"container\">\n <h3>{{ show.seriesName }}</h3>\n <div class=\"wrapper\">\n <div class=\"half\">\n <div class=\"poster\">\n <img :src=\"host + '/series/' + show.id + '/poster'\" alt=\"\">\n </div>\n </div>\n </div>\n </div>\n </modal>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n\n export default {\n name: 'ShowModify',\n data () {\n return {\n show: {}\n }\n },\n computed: mapState([\n 'host'\n ]),\n methods: {\n beforeOpen (event) {\n this.show = event.params.show\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n h3\n width: 100%\n color: white\n margin: 0\n margin-bottom: 10px\n padding: 20px\n\n background-color: rgba(0,0,0,0.3)\n\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n .wrapper\n width: 100%\n .half\n width: 50%\n float: left\n\n padding: 10px\n\n .poster\n width:\n img\n width: 100%\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/modals/ShowModify.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('EpisodeList',{attrs:{\"title\":\"Recently aired\",\"episodes\":_vm.episodes.firstAired}}),_vm._v(\" \"),_c('SeriesList',{attrs:{\"title\":\"Recently added series\",\"series\":_vm.series.createdAt}}),_vm._v(\" \"),_c('EpisodeList',{attrs:{\"title\":\"Recently added episodes\",\"episodes\":_vm.episodes.createdAt}}),_vm._v(\" \"),_c('MovieList',{attrs:{\"title\":\"Recently added movies\",\"movies\":_vm.movies.createdAt}}),_vm._v(\" \"),_c('SeriesList',{attrs:{\"title\":\"Shows watched by others\",\"series\":_vm.series.siteRatingCount}}),_vm._v(\" \"),_c('MovieList',{attrs:{\"title\":\"Popular movies\",\"movies\":_vm.movies.popularity}}),_vm._v(\" \"),_c('SeriesList',{attrs:{\"title\":\"Best rated series\",\"series\":_vm.series.siteRating}}),_vm._v(\" \"),_c('MovieList',{attrs:{\"title\":\"Recently released movies\",\"movies\":_vm.movies.releaseDate}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-d0cfb4ba\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/pages/Main.vue\n// module id = pzeE\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-bf1f5330\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./UserManager.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./UserManager.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./UserManager.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-bf1f5330\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./UserManager.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-bf1f5330\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/settings/UserManager.vue\n// module id = qkLF\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-61a9e9af\",\"scoped\":true,\"hasInlineConfig\":false}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/itemTypes/Movie.vue\n// module id = qzXD\n// module chunks = 1","<template>\n <div class=\"Libraries\">\n <h2>Movies</h2>\n <table>\n <thead>\n <tr>\n <th>#</th>\n <th>Path</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(library, index) in movies\">\n <td class=\"id\">\n {{ index + 1 }}\n </td>\n <td>\n {{ library.path }}\n </td>\n <td class=\"actions\">\n <a title=\"Delete library path\" v-on:click=\"deleteMovieLibrary(library.path)\">\n <FontAwesomeIcon :icon=\"deleteIcon\"/>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n <a class=\"button\" v-on:click=\"libraryAdd('movies')\">Add movie library</a>\n <h2>TV Shows</h2>\n <table>\n <thead>\n <tr>\n <th>#</th>\n <th>Path</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(library, index) in shows\">\n <td class=\"id\">\n {{ index + 1 }}\n </td>\n <td>\n {{ library.path }}\n </td>\n <td class=\"actions\">\n <a title=\"Delete library path\" v-on:click=\"deleteSeriesLibrary(library.path)\">\n <FontAwesomeIcon :icon=\"deleteIcon\"/>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n <a class=\"button\" v-on:click=\"libraryAdd('tvshows')\">Add TV show library</a>\n </div>\n</template>\n\n<script>\n import { mapActions, mapState } from 'vuex'\n\n import FontAwesomeIcon from '@fortawesome/vue-fontawesome'\n import faTrash from '@fortawesome/fontawesome-free-solid/faTrash'\n\n export default {\n name: 'Libraries',\n components: {\n FontAwesomeIcon\n },\n computed: {\n ...mapState('libraries', [\n 'shows',\n 'movies'\n ]),\n deleteIcon () {\n return faTrash\n }\n },\n data () {\n return {\n movieLibraries: {},\n seriesLibraries: {}\n }\n },\n async created () {\n this.updateAll()\n },\n methods: {\n ...mapActions('libraries', [\n 'updateAll',\n 'deleteMovieLibrary',\n 'deleteSeriesLibrary'\n ]),\n async libraryAdd (libraryType) {\n this.$modal.show('LibraryAdd', {\n libraryType\n })\n }\n }\n }\n</script>\n\n<style scoped lang=\"sass\">\n\n .button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n display: block\n width: 100%\n\n max-width: 200px\n\n margin: 5px 0\n\n text-align: center\n\n h2\n padding-left: 40px\n\n table\n background: #696060\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n border-spacing: 0\n\n width: 100%\n\n thead\n background-color: #444042\n box-shadow: 0px 0px 5px 2px rgba(darken(darken(#696060,17) + #000000,6), 0.75)\n\n th\n padding: 10px\n\n margin: 0\n border: 0\n\n outline: 0\n tr:nth-child(even)\n background-color: darken(#696060, 2)\n\n td\n padding: 10px\n\n .id\n text-align: right\n\n .actions\n text-align: center\n\n\n .button\n background-color: rgba(0,0,0,0.5)\n border: rgba(0,0,0,0.8) 1px solid\n color: rgba(255,255,255,0.5)\n\n padding: 10px\n -webkit-border-radius: 3px\n -moz-border-radius: 3px\n border-radius: 3px\n cursor: pointer\n\n display: block\n width: 100%\n\n max-width: 200px\n\n margin: 5px 0\n\n text-align: center\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/settings/Libraries.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-30a74134\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/CopyText.vue\n// module id = s7iR\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"NewMovieSet\",\"height\":\"auto\"},on:{\"before-open\":_vm.beforeOpen}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"Create Movie Set\")])]),_vm._v(\" \"),_c('div',{staticClass:\"body\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],class:{invalid: _vm.name === ''},attrs:{\"type\":\"text\",\"id\":\"name\"},domProps:{\"value\":(_vm.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.name=$event.target.value}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Overview:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.overview),expression:\"overview\"}],class:{invalid: _vm.overview === ''},attrs:{\"type\":\"text\",\"id\":\"overview\"},domProps:{\"value\":(_vm.overview)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.overview=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('button',{staticClass:\"success\",on:{\"click\":_vm.addSet}},[_vm._v(\"Create set\")])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-2f1c2121\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/NewMovieSet.vue\n// module id = sahy\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"ShowDialog\"},on:{\"before-open\":_vm.beforeOpen}},[_c('div',{staticClass:\"container\"},[_c('h3',[_vm._v(_vm._s(_vm.show.seriesName))]),_vm._v(\" \"),_c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.indexShow}},[_vm._v(\"Re-index show\")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.modifyShow}},[_vm._v(\"Edit show data\")])])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-d86554ce\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/ShowDialog.vue\n// module id = swzk\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-056fbb6b\",\"scoped\":true,\"hasInlineConfig\":false}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/Series.vue\n// module id = tIBu\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-container\"},[_c('div',{staticClass:\"loader\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-23fab74c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/LoadingPage.vue\n// module id = tN7F\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"ChangeRemoteDialog\",\"adaptive\":true},on:{\"before-open\":_vm.beforeOpen}},[_c('h3',[_vm._v(\"Choose Playback device\")]),_vm._v(\" \"),_c('ul',_vm._l((_vm.remotes),function(remote,index){return _c('li',{key:index},[_c('span',{on:{\"click\":function($event){return _vm.setRemote(remote.clientId)}}},[_vm._v(_vm._s(remote.clientName))])])}),0)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-4ec09bf2\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/ChangeRemoteDialog.vue\n// module id = ugwl\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"playbar\",staticClass:\"playBar\",class:{hiddenBar: !(_vm.playbarTimeout < 20 || _vm.playSizeFormat === 2)},on:{\"mousemove\":function($event){_vm.playbarTimeout = 0}}},[_c('div',{staticClass:\"player\",class:{ small: _vm.playSizeFormat === 2, hidden: (!_vm.showVideo || (_vm.playSizeFormat === 2 && _vm.browserSupportsPiP))}},[_c('video',{ref:\"videoPlayer\"})]),_vm._v(\" \"),_c('div',{ref:\"bar\",staticClass:\"bar\"},[_c('div',{staticClass:\"progressbarContainer\",on:{\"click\":_vm.seek}},[_c('div',{staticClass:\"progressbar\",class:{loading: _vm.loading},style:({ width: _vm.progress * 100 + '%' })}),_vm._v(\" \"),(_vm.$refs.videoPlayer && _vm.$refs.videoPlayer.buffered.length > 0)?_c('div',{staticClass:\"progressbarload\",style:({ width: (_vm.initialProgress + _vm.$refs.videoPlayer.buffered.end(_vm.$refs.videoPlayer.buffered.length - 1)) / _vm.playing.entity.Files[_vm.PlayingFileID].duration * 100 + '%' })}):_vm._e()]),_vm._v(\" \"),(_vm.playing.type === 'episode')?_c('span',{staticClass:\"seriesid\",on:{\"click\":_vm.viewShow}},[_vm._v(\" \"+_vm._s(_vm.playing.entity.Series.seriesName)+\" S\"+_vm._s(_vm.playing.entity.airedSeason)+\"E\"+_vm._s(_vm.playing.entity.airedEpisodeNumber)+\": \")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.playing.title))]),_vm._v(\" \"),_c('div',{staticClass:\"right\"},[(_vm.showVideo)?_c('span',{staticClass:\"time\"},[_vm._v(\"\\n \"+_vm._s(_vm.PlayTimeDisplayValue)+\" / \"+_vm._s(_vm.DurationDisplayValue)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.qualityPopUp)?_c('div',{staticClass:\"quality-selector\"},[_c('ul',_vm._l((_vm.playing.entity.Files),function(FileIterator,index){return _c('li',{key:FileIterator.id,class:{selected: index === _vm.PlayingFileID},on:{\"click\":function($event){return _vm.changeFileId(index)}}},[_vm._v(\"\\n \"+_vm._s(FileIterator.name)+\" \"),_c('span',{staticClass:\"badge\"},[_vm._v(_vm._s(FileIterator.extension))])])}),0)]):_vm._e(),_vm._v(\" \"),(_vm.showVideo)?_c('span',{staticClass:\"toggle-button\",on:{\"click\":function($event){_vm.qualityPopUp = !_vm.qualityPopUp}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconCog}})],1):_vm._e(),_vm._v(\" \"),(_vm.showVideo)?_c('span',{staticClass:\"toggle-button\",on:{\"click\":_vm.stopPlaying}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.iconStop}})],1):_vm._e(),_vm._v(\" \"),(_vm.showVideo)?_c('span',{staticClass:\"toggle-button\",on:{\"click\":_vm.playPause}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.paused? _vm.iconPlay : _vm.iconPause}})],1):_vm._e(),_vm._v(\" \"),(_vm.showVideo && _vm.fullscreenEnabled)?_c('span',{staticClass:\"toggle-button\",on:{\"click\":_vm.toggleFullScreen}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.playSizeFormat === 3? _vm.iconDeFullscreen: _vm.iconFullscreen}})],1):_vm._e(),_vm._v(\" \"),(_vm.showVideo && _vm.playSizeFormat !== 3)?_c('span',{staticClass:\"toggle-button\",on:{\"click\":function($event){_vm.playSizeFormat = (_vm.playSizeFormat % 2) + 1}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":_vm.playSizeFormat === 1 ? _vm.iconDown : _vm.iconUp}})],1):_vm._e(),_vm._v(\" \"),(_vm.progress > 0.9 & _vm.playing.type === 'episode')?_c('a',{staticClass:\"nextepisode\",on:{\"click\":_vm.playNext}},[_vm._v(\"Next Episode\")]):_vm._e()])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-ec7fce12\",\"hasScoped\":false,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/playBar.vue\n// module id = uvSU\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-61a9e9af\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Movie.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Movie.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Movie.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-61a9e9af\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Movie.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-61a9e9af\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/itemTypes/Movie.vue\n// module id = vEt0\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b095acca\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Settings.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Settings.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Settings.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b095acca\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Settings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b095acca\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/pages/Settings.vue\n// module id = vxD3\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"UserAdd\",\"height\":\"auto\"},on:{\"before-open\":_vm.beforeOpen}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"Add user\")])]),_vm._v(\" \"),_c('div',{staticClass:\"body\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.name),expression:\"name\"}],class:{invalid: _vm.name === ''},attrs:{\"type\":\"text\",\"id\":\"name\"},domProps:{\"value\":(_vm.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.name=$event.target.value}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(\"Username:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],class:{invalid: _vm.username === ''},attrs:{\"type\":\"text\",\"id\":\"username\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"Email:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],class:{invalid: _vm.email === ''},attrs:{\"type\":\"text\",\"id\":\"email\"},domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Password:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],class:{invalid: _vm.password === ''},attrs:{\"id\":\"password\",\"type\":\"password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('button',{staticClass:\"success\",on:{\"click\":_vm.addUser}},[_vm._v(\"Add user\")])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-00208bcb\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/UserAdd.vue\n// module id = wvcj\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ec7fce12\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./playBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./playBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./playBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ec7fce12\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./playBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/playBar.vue\n// module id = x/vA\n// module chunks = 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-dc9804bc\",\"scoped\":false,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/pages/Search.vue\n// module id = x6oc\n// module chunks = 1","import * as types from '../mutation-types'\nimport Vue from 'vue'\n\nconst state = {\n shows: [],\n movies: []\n}\n\nconst getters = {\n\n}\n\nconst actions = {\n async updateAll ({ dispatch }) {\n dispatch('updateMovies')\n dispatch('updateTVShows')\n },\n async updateMovies ({ commit }) {\n let { data: movies } = await Vue.axios.get(`/sources/movies`)\n\n commit(types.RECIEVE_LIBRARIES_MOVIES, movies)\n },\n async updateTVShows ({ commit }) {\n let { data: shows } = await Vue.axios.get(`/sources/tvshows`)\n\n commit(types.RECIEVE_LIBRARIES_SHOWS, shows)\n },\n async deleteMovieLibrary ({ dispatch }, path) {\n await Vue.axios.delete(`/sources/movies`, {\n data: {\n path\n }\n })\n\n dispatch('updateAll')\n },\n async deleteSeriesLibrary ({ dispatch }, path) {\n await Vue.axios.delete(`/sources/tvshows`, {\n data: {\n path\n }\n })\n\n dispatch('updateAll')\n }\n}\n\nconst mutations = {\n [types.RECIEVE_LIBRARIES_MOVIES] (state, movies) {\n state.movies = movies\n },\n [types.RECIEVE_LIBRARIES_SHOWS] (state, shows) {\n state.shows = shows\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/modules/libraries.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-db18dd10\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/settings/Maintenance.vue\n// module id = xFL8\n// module chunks = 1","<template>\n <div id=\"app\">\n <ShowDialogModal/>\n <ShowModifyModal/>\n <UserAddModal/>\n <MovieDialogModal/>\n <EpisodeDialogModal/>\n <LibraryAdd/>\n <NewMovieSet/>\n <PasswordChange/>\n <CopyText/>\n <ChangeRemoteDialog />\n\n <notifications group=\"system\" classes=\"system-notification\" position=\"bottom center\" />\n\n <NavBar v-if=\"$router.history.current.name !== 'login' && loaded\"/>\n\n <WatchPanel v-if=\"$router.history.current.name !== 'login' && loaded\"/>\n\n\n <playBar v-if=\"$router.history.current.name !== 'login' && loaded\"/>\n\n\n <transition name=\"long-fade\" mode=\"out\">\n <LoadingPage v-if=\"$router.history.current.name !== 'login' && !loaded\"></LoadingPage>\n </transition>\n\n <transition name=\"fade\" mode=\"out-in\" v-if=\"$router.history.current.name === 'login' || loaded\">\n <router-view />\n </transition>\n\n </div>\n</template>\n\n<script>\n import { mapState } from 'vuex'\n\n import NavBar from '@/components/NavBar'\n import WatchPanel from '@/components/WatchPanel'\n import playBar from '@/components/playBar'\n import LoadingPage from '@/components/LoadingPage'\n\n // Modals\n import ShowDialogModal from '@/components/modals/ShowDialog'\n import ShowModifyModal from '@/components/modals/ShowModify'\n import UserAddModal from '@/components/modals/UserAdd'\n import MovieDialogModal from '@/components/modals/MovieDialog'\n import EpisodeDialogModal from '@/components/modals/EpisodeDialog'\n import LibraryAdd from '@/components/modals/LibraryAdd'\n import NewMovieSet from '@/components/modals/NewMovieSet'\n import PasswordChange from '@/components/modals/PasswordChange'\n import CopyText from '@/components/modals/CopyText'\n import ChangeRemoteDialog from '@/components/modals/ChangeRemoteDialog'\n\n export default {\n name: 'app',\n components: {\n ChangeRemoteDialog,\n WatchPanel: WatchPanel,\n NavBar,\n ShowDialogModal,\n PasswordChange,\n ShowModifyModal,\n UserAddModal,\n MovieDialogModal,\n EpisodeDialogModal,\n CopyText,\n NewMovieSet,\n LibraryAdd,\n playBar,\n LoadingPage\n },\n computed: mapState({\n loaded: state => state.initialLoaded\n }),\n created () {\n\n },\n beforeCreate () {\n this.$store.dispatch('updateAll')\n },\n methods: {\n }\n }\n</script>\n\n<style lang=\"sass\">\n .system-notification\n background: #272222 !important\n padding: 7px 10px\n border: 1px solid #423a3a\n margin-bottom: 4px\n\n .notification-title\n font:\n size: 0.8em\n\n .notification-content\n font:\n size: 0.9em\n\n #app\n background: #696060 /* Old browsers */\n background: -moz-linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* FF3.6-15 */\n background: -webkit-linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* Chrome10-25,Safari5.1-6 */\n background: linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */\n background-position: top\n background-attachment: fixed\n background-repeat: round\n -webkit-background-size: cover\n background-size: cover\n\n padding-top: 415px\n padding-bottom: 70px\n\n min-height: 100vh\n\n color: #eee\n\n @media screen and (max-width: 700px)\n padding-top: 375px\n\n .v--modal\n background: #696060 /* Old browsers */\n background: -moz-linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* FF3.6-15 */\n background: -webkit-linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* Chrome10-25,Safari5.1-6 */\n background: linear-gradient(to bottom, #696060 0%, #55535b 36%, #28343b 100%) /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */\n\n\n @media screen and (max-height: 1200px)\n #app\n padding-top: 0\n\n ul\n margin: 0\n padding: 0\n\n .fade-enter-active, .fade-leave-active\n transition: opacity .2s ease\n\n .long-fade-enter-active, .long-fade-leave-active\n transition: opacity .7s ease\n\n .fade-enter, .fade-leave-active\n opacity: 0\n .long-fade-enter, .long-fade-leave-active\n opacity: 0\n\n .child-view\n position: absolute\n transition: all .2s cubic-bezier(.55,0,.1,1)\n\n .slide-left-enter, .slide-right-leave-active\n opacity: 0\n -webkit-transform: translate(30px, 0)\n transform: translate(30px, 0)\n\n .slide-left-leave-active, .slide-right-enter\n opacity: 0\n -webkit-transform: translate(-30px, 0)\n transform: translate(-30px, 0)\n\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extract-text-webpack-plugin/loader.js?{\"omit\":1,\"remove\":true}!./~/vue-style-loader!./~/css-loader?{\"minimize\":true,\"sourceMap\":true}!./~/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-00208bcb\",\"scoped\":true,\"hasInlineConfig\":false}!./~/sass-loader/lib/loader.js?{\"indentedSyntax\":true,\"sourceMap\":true}!./~/vue-loader/lib/selector.js?type=styles&index=0!./src/components/modals/UserAdd.vue\n// module id = xcw3\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1101d7a2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./MovieList.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./MovieList.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./MovieList.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1101d7a2\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./MovieList.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1101d7a2\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/itemLists/MovieList.vue\n// module id = xvCa\n// module chunks = 1","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"minimize\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-00208bcb\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./UserAdd.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./UserAdd.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./UserAdd.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-00208bcb\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":\\\"src\\\",\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./UserAdd.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-00208bcb\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/modals/UserAdd.vue\n// module id = y0ci\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"name\":\"LibraryAdd\",\"height\":\"auto\"},on:{\"before-open\":_vm.beforeOpen,\"opened\":_vm.opened}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"heading\"},[_c('h3',[_vm._v(\"Add \"+_vm._s(_vm.libraryType)+\" library\")])]),_vm._v(\" \"),_c('div',{staticClass:\"body\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Path:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.path),expression:\"path\"}],ref:\"pathInput\",class:{invalid: _vm.path === ''},attrs:{\"type\":\"text\",\"id\":\"name\"},domProps:{\"value\":(_vm.path)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.addLibrary($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.path=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('button',{staticClass:\"success\",on:{\"click\":_vm.addLibrary}},[_vm._v(\"Add library\")])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler?{\"id\":\"data-v-62868e7c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":\"src\",\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/modals/LibraryAdd.vue\n// module id = z7KV\n// module chunks = 1"],"sourceRoot":""}
|