From 61e45bbb6d7cf2c647480b3b3d1d1c0eeee06d2f Mon Sep 17 00:00:00 2001 From: morpheus65535 Date: Thu, 25 Mar 2021 14:54:05 -0400 Subject: [PATCH] Fixed missing build --- frontend/build/asset-manifest.json | 6 +++--- frontend/build/index.html | 2 +- .../js/{main.fb44016a.chunk.js => main.0f1951a9.chunk.js} | 4 ++-- ...ain.fb44016a.chunk.js.map => main.0f1951a9.chunk.js.map} | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) rename frontend/build/static/js/{main.fb44016a.chunk.js => main.0f1951a9.chunk.js} (56%) rename frontend/build/static/js/{main.fb44016a.chunk.js.map => main.0f1951a9.chunk.js.map} (69%) diff --git a/frontend/build/asset-manifest.json b/frontend/build/asset-manifest.json index ad6a90e2c..7177553dc 100644 --- a/frontend/build/asset-manifest.json +++ b/frontend/build/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "./static/css/main.d2d8be2d.chunk.css", - "main.js": "./static/js/main.fb44016a.chunk.js", - "main.js.map": "./static/js/main.fb44016a.chunk.js.map", + "main.js": "./static/js/main.0f1951a9.chunk.js", + "main.js.map": "./static/js/main.0f1951a9.chunk.js.map", "runtime-main.js": "./static/js/runtime-main.28e08986.js", "runtime-main.js.map": "./static/js/runtime-main.28e08986.js.map", "static/css/2.79026e13.chunk.css": "./static/css/2.79026e13.chunk.css", @@ -19,6 +19,6 @@ "static/css/2.79026e13.chunk.css", "static/js/2.14d7896f.chunk.js", "static/css/main.d2d8be2d.chunk.css", - "static/js/main.fb44016a.chunk.js" + "static/js/main.0f1951a9.chunk.js" ] } \ No newline at end of file diff --git a/frontend/build/index.html b/frontend/build/index.html index 7c28e2fd0..ad8b46068 100644 --- a/frontend/build/index.html +++ b/frontend/build/index.html @@ -1 +1 @@ -Bazarr
\ No newline at end of file +Bazarr
\ No newline at end of file diff --git a/frontend/build/static/js/main.fb44016a.chunk.js b/frontend/build/static/js/main.0f1951a9.chunk.js similarity index 56% rename from frontend/build/static/js/main.fb44016a.chunk.js rename to frontend/build/static/js/main.0f1951a9.chunk.js index 2ef1ae3ea..58fd89afc 100644 --- a/frontend/build/static/js/main.fb44016a.chunk.js +++ b/frontend/build/static/js/main.0f1951a9.chunk.js @@ -1,2 +1,2 @@ -(this.webpackJsonpbazarr=this.webpackJsonpbazarr||[]).push([[0],{303:function(e,t,n){},323:function(e,t,n){},325:function(e,t,n){},336:function(e,t,n){},337:function(e,t,n){},340:function(e,t,n){},341:function(e,t,n){},342:function(e,t,n){},473:function(e,t,n){},474:function(e,t,n){},475:function(e,t,n){"use strict";n.r(t);n(291);var r,a=n(0),c=n.n(a),i=n(30),s=n.n(i),o=n(90),l=n(34),u=n(28),d=n(95),j=(n(300),n(252)),b=n.n(j),O=n(253),h=n(23),f=n(3),p=n(497),v="UPDATE_PROVIDER_LIST",x="UPDATE_ALL_LANGUAGES_LIST",m="UPDATE_LANGUAGES_PROFILE_LIST",g="UPDATE_SYSTEM_STATUS",y="UPDATE_SYSTEM_TASKS",k="UPDATE_SYSTEM_LOGS",S="SYSTEM_UPDATE_RELEASES",w="UPDATE_SYSTEM_SETTINGS",C="SYSTEM_RUN_TASK",N="SERIES_UPDATE_WANTED_RANGE",I="UPDATE_SERIES_WANTED_LIST",P="UPDATE_SERIES_EPISODE_LIST",A="UPDATE_SERIES_HISTORY_LIST",T="UPDATE_SEIRES_INFO",M="SERIES_UPDATE_RANGE",E="UPDATE_SERIES_BLACKLIST",B="MOVIES_UPDATE_WANTED_RANGE",K="UPDATE_MOVIE_WANTED_LIST",z="UPDATE_MOVIE_HISTORY_LIST",D="UPDATE_MOVIE_INFO",L="MOVIES_UPDATE_RANGE",R="UPDATE_MOVIES_BLACKLIST",_="SITE_AUTH_SUCCESS",H="SITE_NEED_AUTH",U="SITE_SYSTEM_INITIALIZED",F="SITE_INITIALIZE_FAILED",G="SITE_SAVE_LOCALSTORAGE",Y="SITE_NOTIFICATIONS_ADD",q="SITE_NOTIFICATIONS_REMOVE",W="SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP",V="SITE_SIDEBAR_UPDATE",Q="SITE_BADGE_UPDATE",X="SITE_OFFLINE_UPDATE",J=n(21),Z=n(6),$=n(15);function ee(e){return Object($.isString)(e)||Object($.isNumber)(e)}function te(e){return Object($.isNull)(e)||Object($.isUndefined)(e)}function ne(e){return!te(e)}function re(e){return"radarrId"in e}function ae(){var e,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=null!==(e=window.Bazarr.baseUrl)&&void 0!==e?e:"/";return t&&!n.endsWith("/")&&(n+="/"),n}function ce(e,t){Object(a.useEffect)((function(){e();var n=null;return void 0!==t&&(n=setInterval(e,t)),function(){null!==n&&clearInterval(n)}}),[e,t])}function ie(e,t){return function(e,t,n,r){var c=Object(a.useState)(e),i=Object(Z.a)(c,2)[1];Object(a.useEffect)((function(){i((function(a){return a!==e&&(e!==t?r&&r():n&&n()),e}))}),[e,t,r,n])}(e.updating,!0,void 0,t)}function se(e,t,n){t({updating:!0,data:n}),e.then((function(e){t({updating:!1,data:e})})).catch((function(e){t({updating:!1,error:e,data:n})}))}function oe(e){return re(e)?e.radarrId:"sonarrEpisodeId"in e?e.sonarrEpisodeId:function(e){return"episodeFileCount"in e}(e)?e.sonarrSeriesId:-1}function le(e){var t=e.items;return e.order.flatMap((function(e){return null!==e&&e in t?[t[e]]:[]}))}function ue(e,t,n){var r=Object(J.a)(e);return t.filter((function(e){return!te(e)})).forEach((function(e){var t=r.findIndex((function(t,r){return!te(t)&&n(t,e)}));-1!==t?r[t]=e:r.push(e)})),r}function de(){for(var e=arguments.length,t=new Array(e),n=0;n0?(r=O).push.apply(r,Object(J.a)(Array(h).fill(null))):h<0&&(O=Array(s).fill(null),b=Object(f.a)({},d)),"number"===typeof l&&"number"===typeof u?(a=O).splice.apply(a,[l,u].concat(Object(J.a)(j))):void 0===l&&(O=j),{updating:!1,data:{items:b,order:O}}}var fe,pe,ve=Object(p.a)((r={},Object(h.a)(r,K,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedMovieList:he(t,e.wantedMovieList,"radarrId")})})),Object(h.a)(r,B,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedMovieList:he(t,e.wantedMovieList,"radarrId")})})),Object(h.a)(r,z,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{historyList:Oe(t,e.historyList.data)})})),Object(h.a)(r,D,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{movieList:he(t,e.movieList,"radarrId")})})),Object(h.a)(r,L,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{movieList:he(t,e.movieList,"radarrId")})})),Object(h.a)(r,R,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{blacklist:Oe(t,e.blacklist.data)})})),r),{movieList:{updating:!0,data:{items:{},order:[]}},wantedMovieList:{updating:!0,data:{items:{},order:[]}},historyList:{updating:!0,data:[]},blacklist:{updating:!0,data:[]}}),xe=Object(p.a)((fe={},Object(h.a)(fe,I,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedEpisodesList:he(t,e.wantedEpisodesList,"sonarrEpisodeId")})})),Object(h.a)(fe,N,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedEpisodesList:he(t,e.wantedEpisodesList,"sonarrEpisodeId")})})),Object(h.a)(fe,P,(function(e,t){var n=Oe(t,[]),r=n.updating,a=n.error,c=n.data,i=Object(f.a)({},e.episodeList.data);c.length>0&&(i[c[0].sonarrSeriesId]=c);return Object(f.a)(Object(f.a)({},e),{},{episodeList:{updating:r,error:a,data:i}})})),Object(h.a)(fe,A,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{historyList:Oe(t,e.historyList.data)})})),Object(h.a)(fe,T,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{seriesList:he(t,e.seriesList,"sonarrSeriesId")})})),Object(h.a)(fe,M,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{seriesList:he(t,e.seriesList,"sonarrSeriesId")})})),Object(h.a)(fe,E,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{blacklist:Oe(t,e.blacklist.data)})})),fe),{seriesList:{updating:!0,data:{items:{},order:[]}},wantedEpisodesList:{updating:!0,data:{items:{},order:[]}},episodeList:{updating:!0,data:{}},historyList:{updating:!0,data:[]},blacklist:{updating:!0,data:[]}}),me="storage-ui-pageSize",ge={get pageSize(){var e;return parseInt(null!==(e=localStorage.getItem(me))&&void 0!==e?e:"50")},set pageSize(e){localStorage.setItem(me,e.toString())}};function ye(){return{pageSize:ge.pageSize}}var ke,Se=Object(p.a)((pe={},Object(h.a)(pe,H,(function(e){return Object(f.a)(Object(f.a)({},e),{},{auth:!1})})),Object(h.a)(pe,_,(function(e){return Object(f.a)(Object(f.a)({},e),{},{auth:!0})})),Object(h.a)(pe,U,(function(e){return Object(f.a)(Object(f.a)({},e),{},{initialized:!0})})),Object(h.a)(pe,F,(function(e){return Object(f.a)(Object(f.a)({},e),{},{initialized:"An Error Occurred When Initializing Bazarr UI"})})),Object(h.a)(pe,G,(function(e,t){var n=t.payload;for(var r in n){var a=n[r];localStorage.setItem(r,a)}return Object(f.a)(Object(f.a)({},e),ye())})),Object(h.a)(pe,Y,(function(e,t){var n=[].concat(Object(J.a)(e.notifications.filter((function(e){return e.id!==t.payload.id}))),[t.payload]);return Object(f.a)(Object(f.a)({},e),{},{notifications:n})})),Object(h.a)(pe,q,(function(e,t){var n=e.notifications.filter((function(e){return e.id!==t.payload}));return Object(f.a)(Object(f.a)({},e),{},{notifications:n})})),Object(h.a)(pe,W,(function(e,t){var n=e.notifications.filter((function(e){return e.timestamp!==t.payload}));return Object(f.a)(Object(f.a)({},e),{},{notifications:n})})),Object(h.a)(pe,V,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{sidebar:t.payload})})),Object(h.a)(pe,Q,{next:function(e,t){var n=t.payload.item;return n&&!0!==t.error?Object(f.a)(Object(f.a)({},e),{},{badges:n}):e},throw:function(e){return e}}),Object(h.a)(pe,X,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{offline:t.payload})})),pe),Object(f.a)({initialized:!1,auth:!0,pageSize:50,notifications:[],sidebar:"",badges:{movies:0,episodes:0,providers:0},offline:!1},ye())),we=Object(p.a)((ke={},Object(h.a)(ke,x,(function(e,t){var n=Oe(t,[]),r=Object(f.a)(Object(f.a)({},n),{},{data:n.data.filter((function(e){return e.enabled}))});return Object(f.a)(Object(f.a)({},e),{},{languages:n,enabledLanguage:r})})),Object(h.a)(ke,m,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{languagesProfiles:Oe(t,[])})})),Object(h.a)(ke,g,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{status:Oe(t,e.status.data)})})),Object(h.a)(ke,y,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{tasks:Oe(t,e.tasks.data)})})),Object(h.a)(ke,C,(function(e,t){var n=t.payload,r=e.tasks,a=Object(J.a)(r.data),c=a.findIndex((function(e){return e.job_id===n}));return-1!==c&&(a[c].job_running=!0),Object(f.a)(Object(f.a)({},e),{},{tasks:Object(f.a)(Object(f.a)({},r),{},{data:a})})})),Object(h.a)(ke,v,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{providers:Oe(t,e.providers.data)})})),Object(h.a)(ke,k,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{logs:Oe(t,e.logs.data)})})),Object(h.a)(ke,S,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{releases:Oe(t,e.releases.data)})})),Object(h.a)(ke,w,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{settings:Oe(t,e.settings.data)})})),ke),{languages:{updating:!0,data:[]},enabledLanguage:{updating:!0,data:[]},languagesProfiles:{updating:!0,data:[]},status:{updating:!0,data:void 0},tasks:{updating:!0,data:[]},providers:{updating:!0,data:[]},logs:{updating:!0,data:[]},releases:{updating:!0,data:[]},settings:{updating:!0,data:void 0}}),Ce=Object(d.c)({system:we,series:xe,movie:ve,site:Se}),Ne=[b.a,O.a];var Ie=Object(d.d)(Ce,d.a.apply(void 0,Ne)),Pe=(n(303),n(7)),Ae=n(12),Te=n(485),Me=n(482),Ee=n(483),Be=n(257),Ke=n(42),ze=n(43),De=n(129),Le=n.n(De),Re=n(10),_e=n.n(Re),He=n(14),Ue=new(function(){function e(){Object(Ke.a)(this,e)}return Object(ze.a)(e,[{key:"get",value:function(e,t){return tt.axios.get("/badges".concat(e),{params:t})}},{key:"all",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("").then((function(t){e(t.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()}]),e}()),Fe=n(51),Ge=n(53),Ye=function(){function e(t){Object(Ke.a)(this,e),this.prefix=void 0,this.prefix=t}return Object(ze.a)(e,[{key:"createFormdata",value:function(e){if(e){var t=function(){var t=new FormData,n=function(n){var r=e[n];r instanceof Array?r.length>0?r.forEach((function(e){return t.append(n,e)})):t.append(n,""):t.append(n,e[n])};for(var r in e)n(r);return{v:t}}();return"object"===typeof t?t.v:void 0}}},{key:"get",value:function(e,t){return tt.axios.get(this.prefix+e,{params:t})}},{key:"post",value:function(e,t,n){var r=this.createFormdata(t);return tt.axios.post(this.prefix+e,r,{params:n})}},{key:"patch",value:function(e,t,n){var r=this.createFormdata(t);return tt.axios.patch(this.prefix+e,r,{params:n})}},{key:"delete",value:function(e,t,n){var r=this.createFormdata(t);return tt.axios.delete(this.prefix+e,{params:n,data:r})}}]),e}(),qe=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/episodes")}return Object(ze.a)(n,[{key:"bySeriesId",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{seriesid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"wanted",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("/wanted",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"wantedBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/wanted",{episodeid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"byEpisodeId",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{episodeid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"history",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/history",{episodeid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.patch("/subtitles",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"uploadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.post("/subtitles",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"deleteSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.delete("/subtitles",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"blacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/blacklist").then((function(t){e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"addBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.post("/blacklist",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"deleteBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.delete("/blacklist",n,{all:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),n}(Ye)),We=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/files")}return Object(ze.a)(n,[{key:"browse",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get(t,{path:n}).then((function(t){return e(t.data)})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"bazarr",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.browse("",t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"sonarr",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.browse("/sonarr",t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"radarr",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.browse("/radarr",t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()}]),n}(Ye)),Ve=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/history")}return Object(ze.a)(n,[{key:"stats",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r,a){var c=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,i){c.get("/stats",{timeframe:t,action:n,provider:r,language:a}).then((function(t){return e(t.data)})).catch(i)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r,a){return e.apply(this,arguments)}}()}]),n}(Ye)),Qe=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/movies")}return Object(ze.a)(n,[{key:"blacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/blacklist").then((function(t){e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"addBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/blacklist",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"deleteBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.delete("/blacklist",n,{all:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"movies",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{radarrid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"moviesBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"modify",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("",{radarrid:t.id,profileid:t.profileid}).then((function(){return e()})).catch((function(e){return r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"wanted",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("/wanted",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"wantedBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/wanted",{radarrid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"history",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/history",{radarrid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"action",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.patch("",t).then((function(){return e()})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.patch("/subtitles",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"uploadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/subtitles",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"deleteSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.delete("/subtitles",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),n}(Ye)),Xe=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/providers")}return Object(ze.a)(n,[{key:"providers",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("").then((function(t){e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"reset",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.post("",{action:"reset"}).then((function(){return e()})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"movies",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/movies",{radarrid:t}).then((function(t){return e(t.data.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadMovieSubtitle",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/movies",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"episodes",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/episodes",{episodeid:t}).then((function(t){return e(t.data.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadEpisodeSubtitle",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.post("/episodes",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()}]),n}(Ye)),Je=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/series")}return Object(ze.a)(n,[{key:"series",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{seriesid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"seriesBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"modify",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("",{seriesid:t.id,profileid:t.profileid}).then((function(){return e()})).catch((function(e){return r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"action",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.patch("",t).then((function(){return e()})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}]),n}(Ye)),Ze=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/subtitles")}return Object(ze.a)(n,[{key:"info",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/info",{filenames:t}).then((function(t){return e(t.data.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"modify",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.patch("",n,{action:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),n}(Ye)),$e=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/system")}return Object(ze.a)(n,[{key:"performAction",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("",void 0,{action:t}).then(e).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"login",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/account",{username:t,password:n},{action:"login"}).then(e).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"logout",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.post("/account",void 0,{action:"logout"}).then(e).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"shutdown",value:function(){var e=Object(He.a)(_e.a.mark((function e(){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.performAction("shutdown"));case 1:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"restart",value:function(){var e=Object(He.a)(_e.a.mark((function e(){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.performAction("restart"));case 1:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"settings",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/settings").then((function(t){e(t.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"setSettings",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("/settings",t).then((function(t){e()})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"languages",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/languages").then((function(t){e(t.data)})).catch((function(e){n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"languagesProfileList",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/languages/profiles").then((function(t){return e(t.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"status",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/status").then((function(t){e(t.data.data)})).catch((function(e){n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"logs",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/logs").then((function(t){return e(t.data.data)})).catch((function(e){return n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"releases",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/releases").then((function(t){return e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"deleteLogs",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.delete("/logs").then((function(){return e()})).catch((function(e){return n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"getTasks",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/tasks").then((function(t){e(t.data.data)})).catch((function(e){n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"runTask",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("/tasks",{taskid:t}).then((function(){e()})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"testNotification",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.patch("/notifications",{protocol:t,path:n}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"search",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/searches",{query:t}).then((function(t){return e(t.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}]),n}(Ye)),et=new(function(){function e(){Object(Ke.a)(this,e),this.axios=void 0;var t="/"===window.Bazarr.baseUrl?"/":"".concat(window.Bazarr.baseUrl,"/");this.recreateAxios(t,window.Bazarr.apiKey)}return Object(ze.a)(e,[{key:"recreateAxios",value:function(e,t){this.axios=Le.a.create({baseURL:e}),this.axios.defaults.headers.post["Content-Type"]="application/json",this.axios.defaults.headers.common["x-api-key"]=t}},{key:"urlTest",value:function(e,t,n){var r=this;return new Promise((function(a,c){r.axios.get("test/".concat(e,"/").concat(t,"api/system/status"),{params:n}).then((function(e){return a(e.data)})).catch(c)}))}}]),e}()),tt=new(function(){function e(){Object(Ke.a)(this,e),this.axios=void 0,this.source=void 0;var t="/"===window.Bazarr.baseUrl?"/api/":"".concat(window.Bazarr.baseUrl,"/api/");this.initialize(t,window.Bazarr.apiKey)}return Object(ze.a)(e,[{key:"initialize",value:function(e,t){var n=this;this.axios=Le.a.create({baseURL:e}),this.axios.defaults.headers.post["Content-Type"]="application/json",this.axios.defaults.headers.common["X-API-KEY"]=t,this.source=Le.a.CancelToken.source(),this.axios.interceptors.request.use((function(e){return e.cancelToken=n.source.token,e})),this.axios.interceptors.response.use((function(e){return n.onOnline(),e.status>=200&&e.status<300?Promise.resolve(e):(n.handleError(e.status),Promise.reject(e))}),(function(e){if(e.response){var t=e.response;n.handleError(t.status),n.onOnline()}else n.onOffline(),e.message="You have disconnected to Bazarr backend";return Promise.reject(e)}))}},{key:"onOnline",value:function(){Ie.getState().site.offline&&Ie.dispatch(Bt(!1))}},{key:"onOffline",value:function(){Ie.dispatch(Bt(!0))}},{key:"handleError",value:function(e){switch(e){case 401:Ie.dispatch(Ct())}}}]),e}());var nt=new Map,rt=new Map;function at(e,t,n){return function(r){var a=rt.get(t),c=new Date;if(Object($.isEqual)(a,n)){var i=nt.get(t);if(i)if(c.getTime()-i.getTime()<200)return Promise.resolve()}else rt.set(t,n);return nt.set(t,c),r({type:e,payload:{loading:!0,parameters:n}}),new Promise((function(a,c){t.apply(void 0,Object(J.a)(n)).then((function(t){r({type:e,payload:{loading:!1,item:t,parameters:n}}),a()})).catch((function(t){r({type:e,error:!0,payload:{loading:!1,item:t,parameters:n}}),c(t)}))}))}}function ct(e,t){return function(){for(var n=arguments.length,r=new Array(n),a=0;a0&&void 0!==arguments[0]&&arguments[0],t=nn(Ot),n=tn((function(t){return e?t.system.enabledLanguage.data:t.system.languages.data}));return an(n,t)}function un(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=ln(e),n=Object(Z.a)(t,1),r=n[0];return Object(a.useCallback)((function(e){return void 0===e?void 0:r.find((function(t){return t.code2===e}))}),[r])}function dn(e){var t=un(!0);return Object(a.useMemo)((function(){var n;return null!==(n=null===e||void 0===e?void 0:e.items.map((function(e){var n,r,a=e.language;return{hi:"True"===e.hi,forced:"True"===e.forced,code2:a,name:null!==(n=null===(r=t(a))||void 0===r?void 0:r.name)&&void 0!==n?n:""}})))&&void 0!==n?n:[]}),[t,null===e||void 0===e?void 0:e.items])}function jn(){var e=nn($t);return an(tn((function(e){return e.series.seriesList})),e)}function bn(e){var t=jn(),n=Object(Z.a)(t,2),r=n[0],c=n[1],i=nn(Jt);return an(Object(a.useMemo)((function(){var t=r.data.items,n=null;return e&&!isNaN(e)&&e in t&&(n=t[e]),Object(f.a)(Object(f.a)({},r),{},{data:n})}),[e,r]),Object(a.useCallback)((function(){e&&!isNaN(e)&&(c([e]),i(e))}),[e,c,i]))}function On(e){var t=nn(Jt),n=Object(a.useCallback)((function(){void 0===e||isNaN(e)||t(e)}),[t,e]),r=tn((function(e){return e.series.episodeList})),c=Object(a.useMemo)((function(){return void 0===e||isNaN(e)?[]:null!==(t=r.data[e])&&void 0!==t?t:[];var t}),[e,r.data]);return an(Object(f.a)(Object(f.a)({},r),{},{data:c}),n)}function hn(){var e=nn(Ht);return an(tn((function(e){return e.movie.movieList})),e)}function fn(e){var t=hn(),n=Object(Z.a)(t,2),r=n[0],c=n[1];return an(Object(a.useMemo)((function(){var t=r.data.items,n=null;return e&&!isNaN(e)&&e in t&&(n=t[e]),Object(f.a)(Object(f.a)({},r),{},{data:n})}),[e,r]),Object(a.useCallback)((function(){e&&!isNaN(e)&&c([e])}),[e,c]))}function pn(){var e=nn(Gt);return an(tn((function(e){return e.system.providers})),e)}function vn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,n=nn(At),r=nn(Mt);return Object(a.useCallback)((function(a){var c=Object(f.a)(Object(f.a)({},a),{},{id:e,timestamp:new Date});n(c),setTimeout((function(){return r(c.timestamp)}),1e3*t)}),[n,r,t,e])}function xn(){var e,t,n=cn();return null===(e=null===(t=Object(Z.a)(n,1)[0].data)||void 0===t?void 0:t.general.use_sonarr)||void 0===e||e}function mn(){var e,t,n=cn();return null===(e=null===(t=Object(Z.a)(n,1)[0].data)||void 0===t?void 0:t.general.use_radarr)||void 0===e||e}var gn=n(25),yn=n(256),kn=n.n(yn),Sn=n(502),wn=n(503),Cn=n(481),Nn=n(1),In=(n(323),["Tab","Enter"," ",",",";","."]),Pn=function(e){var t=e.defaultValue,n=e.disabled,r=e.onChange,c=Object(a.useState)(null!==t&&void 0!==t?t:[]),i=Object(Z.a)(c,2),s=i[0],o=i[1],l=Object(a.useRef)(null),u=Object(a.useCallback)((function(e){var t=Object(J.a)(s);t.push(e),o(t),r&&r(t)}),[s,r]),d=Object(a.useCallback)((function(e){var t;if(-1!==(e=null!==(t=e)&&void 0!==t?t:s.length-1)){var n=Object(J.a)(s);n.splice(e,1),o(n),r&&r(n)}}),[s,r]),j=Object(a.useCallback)((function(){l.current&&(l.current.value="")}),[l]),b=Object(a.useCallback)((function(e){var t=e.key,n=e.currentTarget.value;In.includes(t)&&0!==n.length?(e.preventDefault(),u(n),j()):"Backspace"===t&&0===n.length&&(e.preventDefault(),d())}),[u,d,j]),O=Object(a.useCallback)((function(e){var t=e.key,n=e.currentTarget.value;In.includes(t)&&0!==n.length&&e.preventDefault()}),[]),h=Object(a.useCallback)((function(e){var t=e.currentTarget.value;0!==t.length&&(e.preventDefault(),u(t),j())}),[u,j]),f=Object(a.useMemo)((function(){return s.map((function(e,t){return Object(Nn.jsx)("span",{title:e,className:"custom-chip ".concat(n?"":"active"),onClick:function(){n||d(t)},children:e},t)}))}),[s,d,n]);return Object(Nn.jsxs)("div",{className:"form-control custom-chip-input d-flex",children:[Object(Nn.jsx)("div",{className:"chip-container",children:f}),Object(Nn.jsx)("input",{disabled:n,className:"main-input p-0",ref:l,onKeyUp:b,onKeyDown:O,onBlur:h})]})},An=n(56),Tn=n(498),Mn=n(496),En="--back--";function Bn(e){var t=e.lastIndexOf("/");return-1===t&&(t=e.lastIndexOf("\\")),t}function Kn(e){if(e.endsWith("/")||e.endsWith("\\"))return e;var t=Bn(e);return e.slice(0,t+1)}var zn=function(e){var t=e.defaultValue,n=e.onChange,r=e.load,c=e.drop,i=Object(a.useState)(!1),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)(null!==t&&void 0!==t?t:""),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)((function(){return Kn(j)})),h=Object(Z.a)(O,2),f=h[0],p=h[1],v=Object(a.useState)(!0),x=Object(Z.a)(v,2),m=x[0],g=x[1],y=Object(a.useMemo)((function(){var e=Bn(j);return j.slice(e+1)}),[j]),k=Object(a.useMemo)((function(){var e=Bn(f.slice(0,-1));return f.slice(0,e+1)}),[f]),S=Object(a.useState)([]),w=Object(Z.a)(S,2),C=w[0],N=w[1],I=Object(a.useMemo)((function(){if(m)return Object(Nn.jsx)(Tn.a.Item,{children:Object(Nn.jsx)(Cn.a,{size:"sm",animation:"border"})});var e=[];return e.push.apply(e,Object(J.a)(C.filter((function(e){return e.name.startsWith(y)})).map((function(e){return Object(Nn.jsxs)(Tn.a.Item,{eventKey:e.path,children:[Object(Nn.jsx)(Ae.a,{icon:e.children?An.e:An.d,className:"mr-2"}),Object(Nn.jsx)("span",{children:e.name})]},e.name)})))),0===e.length&&e.push(Object(Nn.jsx)(Tn.a.Header,{children:"No Files"},"no-files")),0!==k.length?[Object(Nn.jsxs)(Tn.a.Item,{eventKey:En,children:[Object(Nn.jsx)(Ae.a,{icon:Pe.O,className:"mr-2"}),Object(Nn.jsx)("span",{children:"Back"})]},"back"),Object(Nn.jsx)(Tn.a.Divider,{},"back-divider")].concat(e):e}),[C,y,k,m]);Object(a.useEffect)((function(){if(j!==f){var e=Kn(j);e!==f&&(p(e),n&&n(e))}}),[f,j,n]);var P=Object(a.useRef)(null);return Object(a.useEffect)((function(){o&&(g(!0),r(f).then((function(e){N(e)})).finally((function(){return g(!1)})))}),[f,r,o]),Object(Nn.jsxs)(Tn.a,{show:o,drop:c,onSelect:function(e){var t;e&&(b(e!==En?e:k),null===(t=P.current)||void 0===t||t.focus())},onToggle:function(e,t,n){e||"select"===n.source?e&&l(!0):l(!1)},children:[Object(Nn.jsx)(Tn.a.Toggle,{as:Mn.a.Control,placeholder:"Click to start",type:"text",value:j,onChange:function(e){b(e.currentTarget.value)},ref:P}),Object(Nn.jsx)(Tn.a.Menu,{className:"w-100",style:{maxHeight:256,overflowY:"auto"},children:I})]})},Dn=n(40),Ln=function(e){var t=e.value,n=e.emptyText,r=e.multiple,c=e.disabled,i=e.onChange,s=Object(a.useState)([]),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useRef)(null);Object(a.useEffect)((function(){t&&(u(t),0===t.length&&d.current&&(d.current.value=""))}),[t]);var j=Object(a.useMemo)((function(){return 0===l.length?n:r?"".concat(l.length," Files"):l[0].name}),[l,n,r]);return Object(Nn.jsx)(Mn.a.File,{disabled:c,custom:!0,label:j,multiple:r,ref:d,onChange:function(e){var t=e.target.files;if(t){var n,r=[],a=Object(Dn.a)(t);try{for(a.s();!(n=a.n()).done;){var c=n.value;r.push(c)}}catch(s){a.e(s)}finally{a.f()}u(r),i&&i(r)}}})},Rn=n(283);n(325);function _n(e){var t=e.className,n=e.placeholder,r=e.label,c=e.disabled,i=e.clearable,s=e.loading,o=e.options,l=e.multiple,u=e.onChange,d=e.defaultValue,j=e.value,b=Object(a.useCallback)((function(e){var t;return null===(t=o.find((function(t){return t.value===e})))||void 0===t?void 0:t.label}),[o]),O=Object(a.useCallback)((function(e){if(null!==e&&void 0!==e){if(l)return e.map((function(e){var t;return{label:r?r(e):null!==(t=b(e))&&void 0!==t?t:"Unknown",value:e}}));var t,n=e;return{label:r?r(n):null!==(t=b(n))&&void 0!==t?t:"Unknown",value:n}}return e}),[r,l,b]),h=Object(a.useMemo)((function(){return O(d)}),[d,O]),f=Object(a.useMemo)((function(){return O(j)}),[O,j]);return Object(Nn.jsx)(Rn.a,{isLoading:s,placeholder:n,isSearchable:o.length>=10,isMulti:l,closeMenuOnSelect:!l,defaultValue:h,value:f,isClearable:i,isDisabled:c,options:o,className:"custom-selector w-100 ".concat(null!==t&&void 0!==t?t:""),classNamePrefix:"selector",onChange:function(e){if(u){var t,n=null;if(Object($.isArray)(e))n=e.map((function(e){return e.value}));else n=null!==(t=null===e||void 0===e?void 0:e.value)&&void 0!==t?t:null;u(n)}}})}var Hn,Un=n(282),Fn=(n(335),n(336),function(e){var t=e.min,n=e.max,r=e.tooltips,a=e.defaultValue,c=e.onChange,i=e.onAfterChange;return Object(Nn.jsxs)("div",{className:"d-flex flex-row align-items-center py-2",children:[Object(Nn.jsx)("span",{className:"text-muted pr-3",children:null!==t&&void 0!==t?t:0}),Object(Nn.jsx)(Un.a,{min:null!==t&&void 0!==t?t:0,max:null!==n&&void 0!==n?n:100,className:"custom-rc-slider",step:1,defaultValue:a,onChange:c,onAfterChange:i,handle:function(e){return Object(Nn.jsx)("div",{className:"rc-slider-handle",style:{left:"".concat(e.offset,"%")},children:Object(Nn.jsx)(Gn,{tooltips:r,value:e.value})})}}),Object(Nn.jsx)("span",{className:"text-muted pl-3",children:null!==n&&void 0!==n?n:100})]})}),Gn=function(e){var t=e.tooltips,n=e.value,r=Object(a.useMemo)((function(){var e=["rc-slider-handle-tips"];return void 0!==t&&("string"===typeof t?e.push("rc-slider-handle-tips-always"):!1===t&&e.push("rc-slider-handle-tips-hidden")),e.join(" ")}),[t]);return Object(Nn.jsx)("span",{className:r,children:n})};function Yn(e){var t,n=e.exist,r=e.state,c=e.children,i=n?!n(r.data):!((t=r.data)instanceof Array?0!==t.length:null!==t&&void 0!==t),s=vn("async-overlay");if(Object(a.useEffect)((function(){r.updating||void 0===r.error||i||s({type:"error",message:r.error.message})}),[r,s,i]),r.updating){if(i)return Object(Nn.jsx)(Oa,{})}else if(r.error&&i)return Object(Nn.jsx)(Me.a,{children:Object(Nn.jsxs)(Ee.a,{variant:"danger",className:"my-4",children:[Object(Nn.jsxs)(Ee.a.Heading,{children:[Object(Nn.jsx)(Ae.a,{className:"mr-2",icon:Pe.s}),Object(Nn.jsx)("span",{children:"Ouch! You got an error"})]}),Object(Nn.jsx)("p",{children:r.error.message}),Object(Nn.jsx)("hr",{}),Object(Nn.jsx)("div",{className:"d-flex justify-content-end",children:Object(Nn.jsx)(Be.a,{variant:"outline-danger",onClick:je,children:"Reload"})})]})});return c?c(r.data,r.error):null}function qn(e){var t=e.promise,n=e.children,r=Object(a.useState)(null),c=Object(Z.a)(r,2),i=c[0],s=c[1];return Object(a.useEffect)((function(){t().then((function(e){return s(e)})).catch((function(){}))}),[t]),null===i?Object(Nn.jsx)(Oa,{}):n(i)}function Wn(e){var t=e.label,n=e.state,r=Object(gn.a)(e,["label","state"]),c=Object(a.useMemo)((function(){return n.data.map((function(e){return{label:t(e),value:e}}))}),[n,t]);return Object(Nn.jsx)(_n,Object(f.a)({loading:n.updating,options:c,label:t},r))}function Vn(e){var t=e.children,n=e.className,r=e.promise,c=e.onSuccess,i=e.noReset,s=e.error,o=e.onChange,l=e.disabled,u=Object(gn.a)(e,["children","className","promise","onSuccess","noReset","error","onChange","disabled"]),d=Object(a.useState)(!1),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(a.useState)(Hn.Invalid),p=Object(Z.a)(h,2),v=p[0],x=p[1],m=Object(a.useState)(null),g=Object(Z.a)(m,2)[1];Object(a.useEffect)((function(){if(!i){if(v===Hn.Error||v===Hn.Success){var e=setTimeout((function(){return x(Hn.Invalid)}),2e3);g(e)}return function(){g((function(e){return e&&clearTimeout(e),null}))}}}),[v,i]);var y=Object(a.useCallback)((function(){if(v===Hn.Invalid){var e=r();e&&(O(!0),o&&o(!0),e.then((function(e){x(Hn.Success),c&&c(e)})).catch((function(){x(Hn.Error),s&&s()})).finally((function(){O(!1),o&&o(!1)})))}}),[s,o,r,c,v]),k=t;return b&&(k=Object(Nn.jsx)(Ae.a,{icon:Pe.i,spin:!0})),v===Hn.Success?k=Object(Nn.jsx)(Ae.a,{icon:Pe.g}):v===Hn.Error&&(k=Object(Nn.jsx)(Ae.a,{icon:Pe.W})),Object(Nn.jsx)(Be.a,Object(f.a)(Object(f.a)({className:n,disabled:b||l||v!==Hn.Invalid},u),{},{onClick:y,children:k}))}!function(e){e[e.Success=0]="Success",e[e.Error=1]="Error",e[e.Invalid=2]="Invalid"}(Hn||(Hn={}));var Qn=n(484),Xn=function(e){var t=e.icon,n=e.onClick;return Object(Nn.jsx)(Be.a,{as:Qn.a,className:"mx-1 p-1",variant:"secondary",onClick:n,children:Object(Nn.jsx)(Ae.a,{icon:t})})},Jn=function(e){var t=e.onClick,n=(e.destructive,e.disabled),r=e.variant,a=e.className,c=e.size,i=Object(gn.a)(e,["onClick","destructive","disabled","variant","className","size"]);return Object(Nn.jsx)(Be.a,{disabled:i.loading||n,size:null!==c&&void 0!==c?c:"sm",variant:null!==r&&void 0!==r?r:"light",className:"text-nowrap ".concat(null!==a&&void 0!==a?a:""),onClick:t,children:Object(Nn.jsx)(Zn,Object(f.a)({},i))})},Zn=function(e){var t=e.icon,n=e.children,r=e.loading;return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Ae.a,{style:{width:"1rem"},icon:r?Pe.i:t,spin:r}),n&&!r?Object(Nn.jsx)("span",{className:"ml-2 font-weight-bold",children:n}):null]})},$n=function(e){var t=e.children,n=e.icon,r=e.disabled,a=e.updating,c=e.updatingIcon,i=e.onClick,s=n;return a&&(s=c||Pe.R),Object(Nn.jsxs)(Be.a,{variant:"dark",className:"d-flex flex-column text-nowrap py-1",disabled:r||a,onClick:i,children:[Object(Nn.jsx)(Ae.a,{className:"mx-auto my-1",icon:s,spin:a}),Object(Nn.jsx)("span",{className:"align-bottom text-themecolor small text-center",children:t})]})};var er=$n,tr=function(e){var t=e.children,n=e.pos,r="d-flex flex-grow-1 align-items-center justify-content-".concat(n);return Object(Nn.jsx)("div",{className:r,children:t})},nr=(n(337),function(e){var t,n=e.children,r=e.scroll,c=e.className,i=Object(a.useMemo)((function(){var e=["content-header","bg-dark","p-2"];return void 0!==c&&e.push(c),!1!==r&&e.push("scroll"),e.join(" ")}),[r,c]);return t=!1!==r?Object(Nn.jsx)("div",{className:"d-flex flex-nowrap flex-grow-1",children:n}):n,Object(Nn.jsx)(Te.a,{className:i,children:t})});nr.Button=er,nr.Group=tr,nr.AsyncButton=function(e){var t=e.promise,n=e.onSuccess,r=Object(gn.a)(e,["promise","onSuccess"]),c=Object(a.useState)(!1),i=Object(Z.a)(c,2),s=i[0],o=i[1],l=Object(a.useCallback)((function(){o(!0),t().then((function(e){o(!1),n&&n(e)}))}),[n,t]);return Object(Nn.jsx)($n,Object(f.a)({updating:s,onClick:l},r))};function rr(e){var t=e.options,n=Object(gn.a)(e,["options"]),r=Object(a.useMemo)((function(){return t.map((function(e){return{label:e.name,value:e}}))}),[t]);return Object(Nn.jsx)(_n,Object(f.a)({placeholder:"Language...",options:r,label:function(e){return e.name}},n))}var ar=n(495),cr=c.a.createContext([[],function(e){}]),ir=c.a.createContext([[],function(e){}]);function sr(){var e=Object(a.useContext)(cr),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=Object(a.useContext)(ir),i=Object(Z.a)(c,2),s=i[0],o=i[1];return Object(a.useCallback)((function(e,t){"modal ".concat(e," sending payload"),r([].concat(Object(J.a)(n),[e])),o([].concat(Object(J.a)(s),[null!==t&&void 0!==t?t:null]))}),[n,s,r,o])}function or(){var e=Object(a.useContext)(cr),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=Object(a.useContext)(ir),i=Object(Z.a)(c,2),s=i[0],o=i[1];return Object(a.useCallback)((function(){var e=Object(J.a)(n);e.pop();var t=Object(J.a)(s);t.pop(),r(e),o(t)}),[n,s,r,o])}function lr(e){var t=Object(a.useContext)(cr)[0];return e===t[t.length-1]}function ur(e,t){var n=lr(e);Object(a.useEffect)((function(){n&&t()}),[n,t])}function dr(e){var t=Object(a.useContext)(ir)[0],n=Object(a.useContext)(cr)[0];return Object(a.useMemo)((function(){var r=n.findIndex((function(t){return t===e}));return-1!==r?t[r]:null}),[n,t,e])}var jr,br=function(e){var t=e.children,n=Object(a.useState)([]),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=Object(a.useState)([]),o=Object(Z.a)(s,2),l=o[0],u=o[1];return Object(Nn.jsx)(cr.Provider,{value:[c,i],children:Object(Nn.jsx)(ir.Provider,{value:[l,u],children:t})})},Or=function(e){var t=e.size,n=e.closeable,r=e.modalKey,a=e.title,c=e.children,i=e.footer,s=lr(r),o=or(),l=!1!==n;return Object(Nn.jsxs)(ar.a,{centered:!0,size:t,show:s,onHide:o,backdrop:l?void 0:"static",children:[Object(Nn.jsx)(ar.a.Header,{closeButton:l,children:a}),Object(Nn.jsx)(ar.a.Body,{children:c}),Object(Nn.jsx)(ar.a.Footer,{hidden:void 0===i,children:i})]})},hr=Or,fr=function(e){var t=e.history,n=e.update,r=e.promise,a=t.provider,c=t.subs_id,i=t.language,s=t.subtitles_path,o=t.blacklisted;return c&&a&&i?Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,disabled:o,promise:function(){var e=i.code2;return r({provider:a,subs_id:c,subtitles_path:s,language:e})},onSuccess:n,children:Object(Nn.jsx)(Ae.a,{icon:Pe.t})}):null},pr=function(e){var t,n=Object.assign({},e),r=dr(n.modalKey),c=Object(a.useState)({updating:!1,data:[]}),i=Object(Z.a)(c,2),s=i[0],o=i[1],l=Object(a.useCallback)((function(){r&&se(Qe.history(r.radarrId),o,[])}),[r]);Object(a.useEffect)((function(){l()}),[l]);var u=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){return Object(Nn.jsx)(ja,{action:e.value})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp"},{accessor:"blacklisted",Cell:function(e){var t=e.row.original;return Object(Nn.jsx)(fr,{update:l,promise:function(e){return Qe.addBlacklist(t.radarrId,e)},history:t})}}]}),[l]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"History - ".concat(null!==(t=null===r||void 0===r?void 0:r.title)&&void 0!==t?t:"")},n),{},{children:Object(Nn.jsx)(Yn,{state:s,children:function(e){return Object(Nn.jsx)(da,{emptyText:"No History Found",columns:u,data:e})}})}))},vr=function(e){var t,n=dr(e.modalKey),r=Object(a.useState)({updating:!1,data:[]}),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useCallback)((function(){n&&se(qe.history(n.sonarrEpisodeId),s,[])}),[n]);Object(a.useEffect)((function(){return o()}),[o]);var l=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){return Object(Nn.jsx)(ja,{action:e.value})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp"},{accessor:"blacklisted",Cell:function(e){var t=e.row.original,n=t.sonarrSeriesId,r=t.sonarrEpisodeId;return Object(Nn.jsx)(fr,{history:t,update:o,promise:function(e){return qe.addBlacklist(n,r,e)}})}}]}),[o]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"History - ".concat(null!==(t=null===n||void 0===n?void 0:n.title)&&void 0!==t?t:"")},e),{},{children:Object(Nn.jsx)(Yn,{state:i,children:function(e){return Object(Nn.jsx)(da,{emptyText:"No History Found",columns:l,data:e})}})}))},xr=function(e){var t=e.onSuccess,n=e.submit,r=Object(gn.a)(e,["onSuccess","submit"]),c=sn(),i=Object(Z.a)(c,1)[0],s=dr(r.modalKey),o=or(),l=Object(a.useMemo)((function(){return i.map((function(e){return{label:e.name,value:e.profileId}}))}),[i]),u=Object(a.useState)(null),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(!1),h=Object(Z.a)(O,2),p=h[0],v=h[1],x=Object(a.useMemo)((function(){return Object(Nn.jsx)(Vn,{noReset:!0,onChange:v,promise:function(){if(s){var e=oe(s);return n({id:[e],profileid:[j]})}return null},onSuccess:function(){o(),t&&s&&t(s)},children:"Save"})}),[o,j,s,t,n]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({closeable:!p,footer:x,title:null===s||void 0===s?void 0:s.title},r),{},{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Mn.a,{children:[Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Audio"}),Object(Nn.jsx)(Mn.a.Control,{type:"text",disabled:!0,defaultValue:null===s||void 0===s?void 0:s.audio_language.map((function(e){return e.name})).join(", ")})]}),Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Languages Profiles"}),Object(Nn.jsx)(_n,{clearable:!0,options:l,defaultValue:null===s||void 0===s?void 0:s.profileId,onChange:function(e){return b(void 0===e?null:e)}})]})]})})}))},mr=function(e){var t,n=e,r=ln(!0),c=Object(Z.a)(r,1)[0],i=dr(n.modalKey),s=fn(null===i||void 0===i?void 0:i.radarrId),o=Object(Z.a)(s,2)[1],l=or(),u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(null),h=Object(Z.a)(O,2),p=h[0],v=h[1],x=on(null===i||void 0===i?void 0:i.profileId),m=function(e){var t=un();return Object(a.useMemo)((function(){return t(e)}),[e,t])}(null===x||void 0===x||null===(t=x.items[0])||void 0===t?void 0:t.language);Object(a.useEffect)((function(){return v(null!==m&&void 0!==m?m:null)}),[m]);var g=Object(a.useState)(null),y=Object(Z.a)(g,2),k=y[0],S=y[1],w=Object(a.useState)(!1),C=Object(Z.a)(w,2),N=C[0],I=C[1],P=Object(a.useMemo)((function(){return null!==k&&(null===p||void 0===p?void 0:p.code2)}),[p,k]),A=Object(Nn.jsx)(Vn,{noReset:!0,disabled:!P,onChange:b,promise:function(){return k&&i&&p?Qe.uploadSubtitles(i.radarrId,{file:k,forced:N,hi:!1,language:p.code2}):null},onSuccess:function(){l(),o()},children:"Upload"});return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Upload - ".concat(null===i||void 0===i?void 0:i.title),closeable:!j,footer:A},n),{},{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Mn.a,{children:[Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Language"}),Object(Nn.jsx)(rr,{options:c,value:p,onChange:function(e){e&&v(e)}})]}),Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Subtitle File"}),Object(Nn.jsx)(Ln,{emptyText:"Select...",onChange:function(e){S(e[0])}})]}),Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"forced-checkbox",defaultChecked:N,onChange:function(e){return I(e.target.checked)},label:"Forced"})})]})})}))};!function(e){e[e.Update=0]="Update",e[e.Valid=1]="Valid",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(jr||(jr={}));var gr=function(e){var t=dr(e.modalKey),n=On(null===t||void 0===t?void 0:t.sonarrSeriesId),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=Object(a.useState)(!1),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=or(),j=Object(a.useState)([]),b=Object(Z.a)(j,2),O=b[0],p=b[1],v=Object(a.useState)({}),x=Object(Z.a)(v,2),m=x[0],g=x[1],y=dn(on(null===t||void 0===t?void 0:t.profileId)),k=Object(a.useMemo)((function(){return O.map((function(e){return e.form.file}))}),[O]);Object(a.useEffect)((function(){var e=O.reduce((function(e,t){var n={state:jr.Valid,infos:[]},r=t.form,a=t.instance;return t.didCheck?a?void 0!==a.subtitles.find((function(e){return e.code2===r.language}))&&(n.infos.push("Overwrite existing subtitle"),n.state=jr.Warning):(n.infos.push("Season or episode info is missing"),n.state=jr.Error):n.state=jr.Update,e[r.file.name]=n,e}),{});g(e)}),[O]);var S=Object(a.useCallback)(function(){var e=Object(He.a)(_e.a.mark((function e(t){var n,r,a;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!((n=t.map((function(e){return e.form.file.name}))).length>0)){e.next=7;break}return e.next=4,Ze.info(n);case 4:r=e.sent,a=r.reduce((function(e,t){var n=c.data.find((function(e){return e.season===t.season&&e.episode===t.episode}));return n&&(e[t.filename]=n),e}),{}),p((function(e){return e.map((function(e){return Object(f.a)(Object(f.a)({},e),{},{didCheck:!0,instance:a[e.form.file.name]})}))}));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[c.data]),w=Object(a.useCallback)((function(e){if(e){var t=O.map((function(t){var n,r,a=t.form;return Object(f.a)(Object(f.a)({},t),{},{form:Object(f.a)(Object(f.a)({},a),{},{language:e.code2,hi:null!==(n=e.hi)&&void 0!==n&&n,forced:null!==(r=e.forced)&&void 0!==r&&r})})}));p(t)}}),[O]),C=Object(a.useCallback)((function(e){var t=y[0],n=e.map((function(e){var n,r;return{form:{file:e,language:t.code2,hi:null!==(n=t.hi)&&void 0!==n&&n,forced:null!==(r=t.forced)&&void 0!==r&&r},didCheck:!1}}));p(n);var r=e.reduce((function(e,t){return Object(f.a)(Object(f.a)({},e),{},Object(h.a)({},t.name,{state:jr.Update,infos:[]}))}),{});g(r),S(n)}),[y,S]),N=Object(a.useCallback)(Object(He.a)(_e.a.mark((function e(){var n,r,a,c,i,s;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==t){e.next=2;break}return e.abrupt("return");case 2:n=t.sonarrSeriesId,r=O.reduce((function(e,t){return e[t.form.file.name]={state:jr.Update,infos:[]},e}),{}),g(r),a=Object(Dn.a)(O),e.prev=6,a.s();case 8:if((c=a.n()).done){e.next=18;break}if(!(i=c.value).instance){e.next=16;break}return s=i.instance.sonarrEpisodeId,e.next=14,qe.uploadSubtitles(n,s,i.form);case 14:r=Object(f.a)(Object(f.a)({},r),{},Object(h.a)({},i.form.file.name,{state:jr.Valid,infos:[]})),g(r);case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(6),a.e(e.t0);case 23:return e.prev=23,a.f(),e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),[t,O]),I=Object(a.useMemo)((function(){return O.length>0&&O.every((function(e){return void 0!==e.instance}))}),[O]),P=O.length>0,A=Object(a.useMemo)((function(){return[{id:"Icon",accessor:"instance",className:"text-center",Cell:function(e){var t=e.row,n=e.loose,r=t.original.form.file.name,a=n[1],c=Pe.i,i=void 0,s=!1,o=[];if(r in a){var l=a[r];switch(o=l.infos,l.state){case jr.Error:c=Pe.s,i="var(--danger)";break;case jr.Valid:c=Pe.g,i="var(--success)";break;case jr.Warning:c=Pe.z,i="var(--warning)";break;case jr.Update:s=!0}}return Object(Nn.jsx)(ba,{messages:o,color:i,icon:c,spin:s})}},{Header:"File",accessor:function(e){return e.form.file.name}},{Header:"Episode",accessor:"instance",className:"vw-1",Cell:function(e){var t=e.value,n=e.loose,r=e.row,c=e.externalUpdate,i=n[2].map((function(e){return{label:"(".concat(e.season,"x").concat(e.episode,") ").concat(e.title),value:e}})),s=Object(a.useCallback)((function(e){if(e){var t=Object(f.a)({},r.original);t.instance=e,c&&c(r,t)}}),[r,c]);return Object(Nn.jsx)(_n,{options:i,value:null!==t&&void 0!==t?t:null,onChange:s})}},{accessor:"form",Cell:function(e){var t=e.row,n=e.externalUpdate,r=e.loose,a=Object(Z.a)(r,1)[0];return Object(Nn.jsx)(Be.a,{size:"sm",variant:"light",disabled:a,onClick:function(){n&&n(t)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[]),T=Object(a.useCallback)((function(e,t){p((function(n){var r=Object(J.a)(n);return t?r[e.index]=t:r.splice(e.index,1),r}))}),[]),M=Object(Nn.jsxs)("div",{className:"d-flex flex-row flex-grow-1 justify-content-between",children:[Object(Nn.jsx)("div",{className:"w-25",children:Object(Nn.jsx)(rr,{disabled:l,options:y,defaultValue:y.length>0?y[0]:void 0,onChange:w})}),Object(Nn.jsxs)("div",{children:[Object(Nn.jsx)(Be.a,{hidden:l,disabled:0===O.length,variant:"outline-secondary",className:"mr-2",onClick:function(){return C([])},children:"Clean"}),Object(Nn.jsx)(Vn,{noReset:!0,disabled:!I,onChange:u,promise:N,onSuccess:function(){d(),C([]),i()},children:"Upload"})]})]});return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({size:"lg",title:"Upload Subtitles",closeable:!l,footer:M},e),{},{children:Object(Nn.jsxs)(Me.a,{fluid:!0,className:"flex-column",children:[Object(Nn.jsx)(Mn.a,{children:Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Ln,{emptyText:"Select...",disabled:P||0===y.length,multiple:!0,value:k,onChange:C})})}),Object(Nn.jsx)("div",{hidden:!P,children:Object(Nn.jsx)(na,{columns:A,data:O,loose:[l,m,c.data],responsive:!1,externalUpdate:T})})]})}))},yr=n(486),kr=n(487),Sr=n(54),wr="useAsyncPagination",Cr="loading-change";function Nr(e){e.stateReducers.push(Ir),e.useInstance.push(Ar),e.useOptions.push(Pr)}function Ir(e,t,n,r){if(t.type===Cr&&r){var a=t.pageToLoad,c=!1,i=r.asyncState,s=e.pageIndex,o=e.pageSize,l=s;"prev"===a?l-=1:"next"===a?l+=1:"number"===typeof a&&(l=a);var u=l*o,d=u+o;if(i){var j=i.error,b=i.data.order.slice(u,d),O=0===b.length&&void 0!==j,h=0!==b.length&&b.every($.isNull);O||h?c=!0:b.every(ne)&&(a=void 0)}return Object(f.a)(Object(f.a)({},e),{},{pageToLoad:a,needLoadingScreen:c})}return e}function Pr(e){return e.manualPagination=!0,void 0===e.initialState&&(e.initialState={}),e.initialState.pageToLoad=0,e.initialState.needLoadingScreen=!0,e}function Ar(e){var t,n=e.plugins,r=e.asyncLoader,c=e.dispatch,i=e.asyncState,s=e.asyncId,o=e.rows,l=e.nextPage,u=e.previousPage,d=e.gotoPage,j=e.state,b=j.pageIndex,O=j.pageSize,h=j.pageToLoad;Object(Sr.ensurePluginOrder)(n,["usePagination"],wr);var f=null!==(t=null===i||void 0===i?void 0:i.data.order.length)&&void 0!==t?t:0,p=Math.ceil(f/O),v=b*O,x=v+O;Object(a.useEffect)((function(){void 0!==h&&r&&r(v,O)}),[r,v,O,h]);var m=Object(a.useCallback)((function(e){c({type:Cr,pageToLoad:e})}),[c]);Object(a.useEffect)((function(){!1===(null===i||void 0===i?void 0:i.updating)&&m()}),[null===i||void 0===i?void 0:i.updating,m]);var g=Object(a.useCallback)((function(e){var t;(t="number"===typeof e?e:e(b))!==b&&(m(t),d(t))}),[b,m,d]),y=Object(a.useCallback)((function(){0!==b&&(m("prev"),u())}),[m,u,b]),k=Object(a.useCallback)((function(){b!==p&&(m("next"),l())}),[m,l,p,b]),S=Object(a.useMemo)((function(){var e;return(null!==(e=null===i||void 0===i?void 0:i.data.order.slice(v,x).filter(ne))&&void 0!==e?e:[]).flatMap((function(e){var t=o.find((function(t){return s&&s(t.original)===e}));return t?[t]:[]}))}),[v,x,s,null===i||void 0===i?void 0:i.data.order,o]);Object.assign(e,{previousPage:y,nextPage:k,gotoPage:g,page:S,pageCount:p})}Nr.pluginName=wr;var Tr=Nr,Mr="useCustomSelection",Er=Object(a.forwardRef)((function(e,t){var n=e.indeterminate,r=e.idIn,c=Object(gn.a)(e,["indeterminate","idIn"]),i=Object(a.useRef)(null),s=t||i;return Object(a.useEffect)((function(){"object"===typeof s&&s.current&&(s.current.indeterminate=null!==n&&void 0!==n&&n)}),[s,n]),Object(Nn.jsx)(Mn.a.Check,Object(f.a)({custom:!0,id:r,ref:s},c))}));function Br(e){e.visibleColumnsDeps.push((function(e,t){var n=t.instance;return[].concat(Object(J.a)(e),[n.isSelecting])})),e.visibleColumns.push(zr),e.useInstance.push(Kr)}function Kr(e){var t=e.plugins,n=e.rows,r=e.onSelect,c=e.isSelecting,i=e.state.selectedRowIds;Object(Sr.ensurePluginOrder)(t,["useRowSelect"],Mr),Object(a.useEffect)((function(){if(c){var e=Object.keys(i).flatMap((function(e){var t,r;return null!==(t=null===(r=n.find((function(t){return t.id===e})))||void 0===r?void 0:r.original)&&void 0!==t?t:[]}));r&&r(e)}}),[i,r,n,c])}function zr(e,t){return t.instance.isSelecting?[{id:"---selection---",Header:function(e){var t=e.getToggleAllRowsSelectedProps;return Object(Nn.jsx)(Er,Object(f.a)({idIn:"table-header-selection"},t()))},Cell:function(e){var t=e.row;return Object(Nn.jsx)(Er,Object(f.a)({idIn:"table-cell-".concat(t.index)},t.getToggleRowSelectedProps()))}}].concat(Object(J.a)(e.filter((function(e){return!0!==e.selectHide})))):e}Br.pluginName=Mr;var Dr=Br;function Lr(e){e.useOptions.push(Rr)}function Rr(e){var t=tn((function(e){return e.site})).pageSize;return void 0===e.autoResetPage&&(e.autoResetPage=!1),void 0===e.initialState&&(e.initialState={}),e.initialState.needLoadingScreen=!1,void 0===e.initialState.pageSize&&(e.initialState.pageSize=t),void 0===e.asyncLoader&&(e.initialState.pageToLoad=void 0),e}Lr.pluginName="useLocalSettings";var _r,Hr=Lr,Ur={af:"afrikaans",sq:"albanian",am:"amharic",ar:"arabic",hy:"armenian",az:"azerbaijani",eu:"basque",be:"belarusian",bn:"bengali",bs:"bosnian",bg:"bulgarian",ca:"catalan",ceb:"cebuano",ny:"chichewa","zh-cn":"chinese (simplified)","zh-tw":"chinese (traditional)",co:"corsican",hr:"croatian",cs:"czech",da:"danish",nl:"dutch",en:"english",eo:"esperanto",et:"estonian",tl:"filipino",fi:"finnish",fr:"french",fy:"frisian",gl:"galician",ka:"georgian",de:"german",el:"greek",gu:"gujarati",ht:"haitian creole",ha:"hausa",haw:"hawaiian",iw:"hebrew",hi:"hindi",hmn:"hmong",hu:"hungarian",is:"icelandic",ig:"igbo",id:"indonesian",ga:"irish",it:"italian",ja:"japanese",jw:"javanese",kn:"kannada",kk:"kazakh",km:"khmer",ko:"korean",ku:"kurdish (kurmanji)",ky:"kyrgyz",lo:"lao",la:"latin",lv:"latvian",lt:"lithuanian",lb:"luxembourgish",mk:"macedonian",mg:"malagasy",ms:"malay",ml:"malayalam",mt:"maltese",mi:"maori",mr:"marathi",mn:"mongolian",my:"myanmar (burmese)",ne:"nepali",no:"norwegian",ps:"pashto",fa:"persian",pl:"polish",pt:"portuguese",pa:"punjabi",ro:"romanian",ru:"russian",sm:"samoan",gd:"scots gaelic",sr:"serbian",st:"sesotho",sn:"shona",sd:"sindhi",si:"sinhala",sk:"slovak",sl:"slovenian",so:"somali",es:"spanish",su:"sundanese",sw:"swahili",sv:"swedish",tg:"tajik",ta:"tamil",te:"telugu",th:"thai",tr:"turkish",uk:"ukrainian",ur:"urdu",uz:"uzbek",vi:"vietnamese",cy:"welsh",xh:"xhosa",yi:"yiddish",yo:"yoruba",zu:"zulu",fil:"Filipino",he:"Hebrew"},Fr=[{label:"White",value:"white"},{label:"Light Gray",value:"lightgray"},{label:"Red",value:"red"},{label:"Green",value:"green"},{label:"Yellow",value:"yellow"},{label:"Blue",value:"blue"},{label:"Magenta",value:"magenta"},{label:"Cyan",value:"cyan"},{label:"Black",value:"black"},{label:"Dark Red",value:"darkred"},{label:"Dark Green",value:"darkgreen"},{label:"Dark Yellow",value:"darkyellow"},{label:"Dark Blue",value:"darkblue"},{label:"Dark Magenta",value:"darkmagenta"},{label:"Dark Cyan",value:"darkcyan"},{label:"Dark Grey",value:"darkgrey"}];!function(e){e[e.Pending=0]="Pending",e[e.Processing=1]="Processing",e[e.Done=2]="Done"}(_r||(_r={}));var Gr=function(e){var t=e.state,n=An.f;switch(t){case _r.Pending:n=Pe.k;break;case _r.Processing:n=Pe.i;break;case _r.Done:n=Pe.g}return Object(Nn.jsx)(Ae.a,{icon:n,spin:t===_r.Processing})};var Yr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=Object(a.useState)(null),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useCallback)((function(){if(i){var e="color(name=".concat(i,")");t(e)}}),[i,t]),l=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:null===i,onClick:o,children:"Save"})}),[i,o]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Choose Color",footer:l},n),{},{children:Object(Nn.jsx)(_n,{options:Fr,onChange:s})}))},qr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=Object(a.useState)(null),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useState)(null),l=Object(Z.a)(o,2),u=l[0],d=l[1],j=null!==i&&null!==u&&i!==u,b=Object(a.useCallback)((function(){if(j){var e=function(e,t){return"change_FPS(from=".concat(e,",to=").concat(t,")")}(i,u);t(e)}}),[j,i,u,t]),O=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:!j,onClick:b,children:"Save"})}),[b,j]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Change Frame Rate",footer:O},n),{},{children:Object(Nn.jsxs)(yr.a,{className:"px-2",children:[Object(Nn.jsx)(Mn.a.Control,{placeholder:"From",type:"number",onChange:function(e){var t=parseFloat(e.currentTarget.value);isNaN(t)?s(null):s(t)}}),Object(Nn.jsx)(Mn.a.Control,{placeholder:"To",type:"number",onChange:function(e){var t=parseFloat(e.currentTarget.value);isNaN(t)?d(null):d(t)}})]})}))},Wr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=Object(a.useState)(!0),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useState)([0,0,0,0]),l=Object(Z.a)(o,2),u=l[0],d=l[1],j=Object(a.useCallback)((function(e){return function(t){var n=parseFloat(t.currentTarget.value);isNaN(n)&&(n=0);var r=Object(J.a)(u);r[e]=n,d(r)}}),[u]),b=u.some((function(e){return 0!==e})),O=Object(a.useCallback)((function(){if(b){var e=u.map((function(e){return i?e:-e})),n=(r=e[0],a=e[1],c=e[2],s=e[3],"shift_offset(h=".concat(r,",m=").concat(a,",s=").concat(c,",ms=").concat(s,")"));t(n)}var r,a,c,s}),[t,b,u,i]),h=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:!b,onClick:O,children:"Save"})}),[O,b]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Adjust Times",footer:h},n),{},{children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(Be.a,{variant:"secondary",title:i?"Later":"Earlier",onClick:function(){return s(!i)},children:Object(Nn.jsx)(Ae.a,{icon:i?Pe.L:Pe.F})})}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"hour",onChange:j(0)}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"min",onChange:j(1)}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"sec",onChange:j(2)}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"ms",onChange:j(3)})]})}))},Vr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=ln(!0),c=Object(Z.a)(r,1)[0],i=Object(a.useMemo)((function(){return c.filter((function(e){return e.code2 in Ur}))}),[c]),s=Object(a.useState)(null),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useCallback)((function(){l&&t("translate",{language:l.code2})}),[l,t]),j=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:!l,onClick:d,children:"Translate"})}),[d,l]);return Object(Nn.jsxs)(hr,Object(f.a)(Object(f.a)({title:"Translate to",footer:j},n),{},{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Enabled languages not listed here are unsupported by Google Translate."}),Object(Nn.jsx)(rr,{options:i,onChange:u})]}))},Qr=function(e){var t=e.update,n=Object(gn.a)(e,["update"]),r=dr(n.modalKey),i=Object(a.useState)(!1),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)({}),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)([]),p=Object(Z.a)(O,2),v=p[0],x=p[1],m=function(e){var t=Object(a.useContext)(cr),n=Object(Z.a)(t,2),r=n[0],c=n[1],i=Object(a.useContext)(ir),s=Object(Z.a)(i,2),o=s[0],l=s[1];return Object(a.useCallback)((function(){var t=r.findIndex((function(t){return t===e}));if(-1!==t){var n=r.slice(0,t+1),a=o.slice(0,t+1);c(n),l(a)}}),[r,o,c,l,e])}(n.modalKey),g=Object(a.useCallback)(function(){var e=Object(He.a)(_e.a.mark((function e(n,r){var a,c,i,s,o;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:m(),l(!0),a=v.reduce((function(e,t){return Object(f.a)(Object(h.a)({},t.path,_r.Pending),e)}),{}),b(a),c=Object(Dn.a)(v),e.prev=6,c.s();case 8:if((i=c.n()).done){e.next=19;break}return s=i.value,a=Object(f.a)(Object(f.a)({},a),{},Object(h.a)({},s.path,_r.Processing)),b(a),o=Object(f.a)({id:s.id,type:s.type,language:s.language,path:s.path},r),e.next=15,Ze.modify(n,o);case 15:a=Object(f.a)(Object(f.a)({},a),{},Object(h.a)({},s.path,_r.Done)),b(a);case 17:e.next=8;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(6),c.e(e.t0);case 24:return e.prev=24,c.f(),e.finish(24);case 27:l(!1),t();case 29:case"end":return e.stop()}}),e,null,[[6,21,24,27]])})));return function(t,n){return e.apply(this,arguments)}}(),[m,v,t]),y=sr(),k=Object(a.useMemo)((function(){return[{id:"state",accessor:"path",selectHide:!0,Cell:function(e){var t=e.value,n=e.loose;if(n){var r=n[0];if(t in r){var a=r[t];return Object(Nn.jsx)(Gr,{state:a})}}return null}},{Header:"Language",accessor:"_language",Cell:function(e){var t=e.value;return Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t,long:!0})})}},{id:"file",Header:"File",accessor:"path",Cell:function(e){var t=e.value,n=t.lastIndexOf("/");return-1===n&&(n=t.lastIndexOf("\\")),-1!==n?t.slice(n+1):t}}]}),[]),S=Object(a.useMemo)((function(){var e;return null!==(e=null===r||void 0===r?void 0:r.flatMap((function(e){var t=function(e){return re(e)?[e.radarrId,"movie"]:[e.sonarrEpisodeId,"episode"]}(e),n=Object(Z.a)(t,2),r=n[0],a=n[1];return e.subtitles.flatMap((function(e){return null!==e.path?[{id:r,type:a,language:e.code2,path:e.path,_language:e}]:[]}))})))&&void 0!==e?e:[]}),[r]),w=[Sr.useRowSelect,Dr],C=Object(a.useMemo)((function(){return Object(Nn.jsxs)(Tn.a,{as:kr.a,onSelect:function(e){return e&&g(e)},children:[Object(Nn.jsx)(Jn,{size:"sm",loading:o,disabled:0===v.length,icon:Pe.K,onClick:function(){return g("sync")},children:"Sync"}),Object(Nn.jsx)(Tn.a.Toggle,{disabled:o||0===v.length,split:!0,variant:"light",size:"sm",className:"px-2"}),Object(Nn.jsxs)(Tn.a.Menu,{children:[Object(Nn.jsx)(Tn.a.Item,{eventKey:"remove_HI",children:Object(Nn.jsx)(Zn,{icon:Pe.o,children:"Remove HI Tags"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"remove_tags",children:Object(Nn.jsx)(Zn,{icon:Pe.m,children:"Remove Style Tags"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"OCR_fixes",children:Object(Nn.jsx)(Zn,{icon:Pe.y,children:"OCR Fixes"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"common",children:Object(Nn.jsx)(Zn,{icon:Pe.E,children:"Common Fixes"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"fix_uppercase",children:Object(Nn.jsx)(Zn,{icon:Pe.V,children:"Fix Uppercase"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"reverse_rtl",children:Object(Nn.jsx)(Zn,{icon:Pe.q,children:"Reverse RTL"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("add-color")},children:Object(Nn.jsx)(Zn,{icon:Pe.I,children:"Add Color"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("change-frame-rate")},children:Object(Nn.jsx)(Zn,{icon:Pe.u,children:"Change Frame Rate"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("adjust-times")},children:Object(Nn.jsx)(Zn,{icon:Pe.k,children:"Adjust Times"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("translate-sub")},children:Object(Nn.jsx)(Zn,{icon:Pe.A,children:"Translate"})})]})]})}),[y,o,v.length,g]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Subtitle Tools",footer:C,closeable:!o},n),{},{children:Object(Nn.jsx)(na,{isSelecting:!o&&0!==S.length,emptyText:"No External Subtitles Found",plugins:w,columns:k,onSelect:x,data:S,loose:[j]})})),Object(Nn.jsx)(Yr,{process:g,modalKey:"add-color"}),Object(Nn.jsx)(qr,{process:g,modalKey:"change-frame-rate"}),Object(Nn.jsx)(Wr,{process:g,modalKey:"adjust-times"}),Object(Nn.jsx)(Vr,{process:g,modalKey:"translate-sub"})]})},Xr=function(e){var t=e.onSearch,n=e.onFocus,r=e.onBlur,c=e.className,i=Object(a.useState)(""),s=Object(Z.a)(i,2),o=s[0],u=s[1],d=Object(a.useState)([]),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(l.h)(),f=Object(a.useCallback)((function(e){""===e?O([]):t(e).then((function(e){return O(e)}))}),[t]),p=Object(a.useMemo)((function(){return Object($.throttle)(f,500)}),[f]);Object(a.useEffect)((function(){p(o)}),[o,p]);var v=Object(a.useCallback)((function(){u(""),O([])}),[]),x=Object(a.useMemo)((function(){var e=b.map((function(e){return Object(Nn.jsx)(Tn.a.Item,{eventKey:e.link,disabled:void 0===e.link,children:Object(Nn.jsx)("span",{children:e.name})},e.name)}));return 0===e.length&&e.push(Object(Nn.jsx)(Tn.a.Header,{children:"No Found"},"notify")),e}),[b]);return Object(Nn.jsxs)(Tn.a,{show:0!==o.length,className:c,onFocus:n,onBlur:r,onSelect:function(e){e&&(v(),h.push(e))},children:[Object(Nn.jsx)(Mn.a.Control,{type:"text",size:"sm",placeholder:"Search...",value:o,onChange:function(e){return u(e.currentTarget.value)}}),Object(Nn.jsx)(Tn.a.Menu,{style:{maxHeight:256,overflowY:"auto"},children:x})]})},Jr=n(488);function Zr(e){return{style:{emptyText:e.emptyText,responsive:e.responsive,hoverable:e.hoverable,striped:e.striped,borderless:e.borderless,small:e.small,hideHeader:e.hideHeader,headersRenderer:e.headersRenderer,rowRenderer:e.rowRenderer},options:Object(gn.a)(e,["emptyText","responsive","hoverable","striped","borderless","small","hideHeader","headersRenderer","rowRenderer"])}}function $r(e){return e.map((function(e){return Object(Nn.jsx)("th",Object(f.a)(Object(f.a)({},e.getHeaderProps()),{},{children:e.render("Header")}))}))}function ea(e){return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getRowProps()),{},{children:e.cells.map((function(e){return Object(Nn.jsx)("td",Object(f.a)(Object(f.a)({className:e.column.className},e.getCellProps()),{},{children:e.render("Cell")}))}))}))}function ta(e){var t=e.emptyText,n=e.responsive,r=e.hoverable,c=e.striped,i=e.borderless,s=e.small,o=e.hideHeader,l=e.headers,u=e.rows,d=e.headersRenderer,j=e.rowRenderer,b=e.prepareRow,O=e.tableProps,h=e.tableBodyProps,p=Object(a.useMemo)((function(){return l.reduce((function(e,t){return t.headers.length>e?t.headers.length:e}),0)}),[l]),v=0===u.length,x=null!==d&&void 0!==d?d:$r,m=null!==j&&void 0!==j?j:ea;return Object(Nn.jsxs)(Jr.a,Object(f.a)(Object(f.a)({size:s?"sm":void 0,striped:null===c||void 0===c||c,borderless:null===i||void 0===i||i,hover:r,responsive:null===n||void 0===n||n},O),{},{children:[Object(Nn.jsx)("thead",{hidden:o,children:l.map((function(e){return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getHeaderGroupProps()),{},{children:x(e.headers)}))}))}),Object(Nn.jsx)("tbody",Object(f.a)(Object(f.a)({},h),{},{children:t&&v?Object(Nn.jsx)("tr",{children:Object(Nn.jsx)("td",{colSpan:p,className:"text-center",children:t})}):u.map((function(e){return b(e),m(e)}))}))]}))}function na(e){var t=e.plugins,n=Zr(Object(gn.a)(e,["plugins"])),r=n.style,a=n.options,c=Sr.useTable.apply(void 0,[a,Hr].concat(Object(J.a)(null!==t&&void 0!==t?t:[]))),i=c.getTableProps,s=c.getTableBodyProps,o=c.headerGroups,l=c.rows,u=c.prepareRow;return Object(Nn.jsx)(ta,Object(f.a)(Object(f.a)({},r),{},{headers:o,rows:l,prepareRow:u,tableProps:i(),tableBodyProps:s()}))}function ra(e,t){return e.isGrouped?Object(Nn.jsx)("span",Object(f.a)(Object(f.a)({},t.getToggleRowExpandedProps()),{},{children:e.render("Cell")})):t.canExpand||e.isAggregated?null:e.render("Cell")}function aa(e){if(e.canExpand){var t=e.cells.find((function(e){return e.isGrouped}));if(t){var n=e.isExpanded?90:void 0;return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getRowProps()),{},{children:Object(Nn.jsx)("td",Object(f.a)(Object(f.a)({className:"p-0"},t.getCellProps()),{},{colSpan:e.cells.length,children:Object(Nn.jsxs)("span",Object(f.a)(Object(f.a)({},e.getToggleRowExpandedProps()),{},{className:"d-flex align-items-center p-2",children:[t.render("Cell"),Object(Nn.jsx)(Ae.a,{className:"mx-2",icon:Pe.h,rotation:n})]}))}))}))}return null}return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getRowProps()),{},{children:e.cells.filter((function(e){return!e.isPlaceholder})).map((function(t){return Object(Nn.jsx)("td",Object(f.a)(Object(f.a)({className:t.column.className},t.getCellProps()),{},{children:ra(t,e)}))}))}))}function ca(e){return e.filter((function(e){return!e.isGrouped})).map((function(e){return Object(Nn.jsx)("th",Object(f.a)(Object(f.a)({},e.getHeaderProps()),{},{children:e.render("Header")}))}))}var ia,sa=function(e){var t=[Sr.useGroupBy,Sr.useSortBy,Sr.useExpanded];return Object(Nn.jsx)(na,Object(f.a)(Object(f.a)({},e),{},{plugins:t,headersRenderer:ca,rowRenderer:aa}))},oa=n(506),la=n(258),ua=function(e){var t=e.count,n=e.index,r=e.size,c=e.total,i=e.canPrevious,s=e.previous,o=e.canNext,l=e.next,u=e.goto,d=e.loadState,j=0===c?0:r*n+1,b=Math.min(r*(n+1),c),O=void 0!==d,h=Object(a.useMemo)((function(){return Object(J.a)(Array(t).keys()).map((function(e){return Math.abs(e-n)>=4&&0!==e&&e!==t-1?null:Object(Nn.jsx)(oa.a.Item,{disabled:O,active:n===e,onClick:function(){return u(e)},children:e+1},e)})).flatMap((function(e,t,n){return null===e?null===n[t+1]?[]:Object(Nn.jsx)(oa.a.Ellipsis,{disabled:!0},t):[e]}))}),[t,n,u,O]);return Object(Nn.jsx)(Me.a,{fluid:!0,className:"mb-3",children:Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)(la.a,{className:"d-flex align-items-center justify-content-start",children:Object(Nn.jsxs)("span",{children:["Show ",j," to ",b," of ",c," entries"]})}),Object(Nn.jsx)(la.a,{className:"d-flex justify-content-end",children:Object(Nn.jsxs)(oa.a,{className:"m-0",hidden:t<=1,children:[Object(Nn.jsx)(oa.a.Prev,{onClick:s,disabled:!i&&O}),h,Object(Nn.jsx)(oa.a.Next,{onClick:l,disabled:!o&&O})]})})]})})};function da(e){var t=e.async,n=e.autoScroll,r=e.canSelect,i=e.plugins,s=Zr(Object(gn.a)(e,["async","autoScroll","canSelect","plugins"])),o=s.style,l=s.options,u=[Hr,Sr.usePagination];t&&u.push(Tr),r&&u.push(Sr.useRowSelect,Dr),i&&u.push.apply(u,Object(J.a)(i));var d=Sr.useTable.apply(void 0,[l].concat(u)),j=d.getTableProps,b=d.getTableBodyProps,O=d.headerGroups,h=d.rows,p=d.prepareRow,v=d.page,x=d.canNextPage,m=d.canPreviousPage,g=d.pageCount,y=d.gotoPage,k=d.nextPage,S=d.previousPage,w=d.setPageSize,C=d.state,N=C.pageIndex,I=C.pageSize,P=C.pageToLoad,A=C.needLoadingScreen,T=tn((function(e){return e.site.pageSize}));Object(a.useEffect)((function(){n&&be()}),[N,n]),Object(a.useEffect)((function(){var e=l.isSelecting;r&&!Object($.isUndefined)(e)&&w(e?h.length:T)}),[r,T,l.isSelecting,h.length,w]);var M=l.asyncState?l.asyncState.data.order.length:h.length,E=Object(a.useCallback)((function(e){var t=N*I,n=t+I;return!1===e.order.slice(t,n).every($.isNull)}),[N,I]);return A&&l.asyncState?Object(Nn.jsx)(Yn,{state:l.asyncState,exist:E}):Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(ta,Object(f.a)(Object(f.a)({},o),{},{headers:O,rows:v,prepareRow:p,tableProps:j(),tableBodyProps:b()})),Object(Nn.jsx)(ua,{loadState:P,count:g,index:N,size:I,total:M,canPrevious:m,canNext:x,previous:S,next:k,goto:y})]})}!function(e){e[e.Delete=0]="Delete",e[e.Download=1]="Download",e[e.Manual=2]="Manual",e[e.Upgrade=3]="Upgrade",e[e.Upload=4]="Upload",e[e.Sync=5]="Sync"}(ia||(ia={}));var ja=function(e){var t=e.action,n=e.title,r=null;switch(t){case ia.Delete:r=Pe.Y;break;case ia.Download:r=Pe.p;break;case ia.Manual:r=Pe.ab;break;case ia.Sync:r=Pe.k;break;case ia.Upgrade:r=Pe.N;break;case ia.Upload:r=Pe.l}return r?Object(Nn.jsx)(Ae.a,{title:n,icon:r}):null},ba=function(e){var t=e.messages,n=Object(gn.a)(e,["messages"]),r=Object(Nn.jsx)(Sn.a,{hidden:0===t.length,id:"overlay-icon",children:Object(Nn.jsx)(Sn.a.Content,{children:t.map((function(e){return Object(Nn.jsx)("li",{children:e},e)}))})});return Object(Nn.jsx)(wn.a,{overlay:r,children:Object(Nn.jsx)(Ae.a,Object(f.a)({},n))})},Oa=function(e){var t=e.children,n=e.animation;return Object(Nn.jsxs)("div",{className:"d-flex flex-column flex-grow-1 align-items-center py-5",children:[Object(Nn.jsx)(Cn.a,{animation:null!==n&&void 0!==n?n:"border",className:"mb-2"}),t]})},ha=function(e){var t=e.children,n=e.format,r=Object(a.useMemo)((function(){return kn()(t,null!==n&&void 0!==n?n:"DD/MM/YYYY h:mm:ss").fromNow()}),[t,n]);return Object(Nn.jsx)("span",{children:r})},fa=function(e){var t=e.text,n=e.className,r=e.long,c=Object(a.useMemo)((function(){var e=t.code2,n=":HI",a=":Forced";r&&(e=t.name,n=" HI",a=" Forced");var c=e;return t.hi?c+=n:t.forced&&(c+=a),c}),[t,r]);return Object(Nn.jsx)("span",{title:t.name,className:n,children:c})},pa=n(489),va=n(504),xa="data:image/png;base64,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",ma=n(286),ga=n(260),ya=c.a.createContext([]),ka=c.a.createContext({}),Sa=function(e){var t=e.link,n=e.name,r=e.icon,c=Object(a.useContext)(ka),i=Object(a.useContext)(Ss),s=Object(a.useMemo)((function(){var e=null;if(n in c){var t=c[n];"number"===typeof t&&(e=t)}return e}),[c,n]);return Object(Nn.jsx)(u.c,{activeClassName:"sb-active",className:"list-group-item list-group-item-action sidebar-button",to:t,onClick:i,children:Object(Nn.jsx)(Ca,{badge:null!==s&&void 0!==s?s:void 0,name:n,icon:r})})},wa=function(e){var t=e.icon,n=e.name,r=e.children,c=Object(a.useContext)(ka),i=Object(a.useContext)(ya),s=Object(a.useContext)(Ss),o=n.toLowerCase(),l=tn((function(e){return e.site.sidebar})),d=Aa(),j=Object(a.useMemo)((function(){var e=null,t=null;if(n in c){var r=c[n];if("number"===typeof r)e=r;else if("object"===typeof r)for(var a in e=0,t=r,r)e+=r[a]}return[e,t]}),[c,n]),b=Object(Z.a)(j,2),O=b[0],h=b[1],f=Object(a.useMemo)((function(){return l===o}),[l,o]),p=Object(a.useMemo)((function(){return"sidebar-collapse-box ".concat(f?"active":"")}),[f]),v=Object(a.useMemo)((function(){return r.filter((function(e){var t;return!i.includes(null!==(t=e.hiddenKey)&&void 0!==t?t:"")})).map((function(e){var t,n=null;return h&&e.name in h&&(n=h[e.name]),Object(Nn.jsx)(u.c,{activeClassName:"sb-active",className:"list-group-item list-group-item-action sidebar-button sb-collapse",to:e.link,onClick:s,children:Object(Nn.jsx)(Ca,{badge:0===n?void 0:null!==(t=n)&&void 0!==t?t:void 0,name:e.name})},e.name)}))}),[r,i,h,s]);return 0===v.length?null:Object(Nn.jsxs)("div",{className:p,children:[Object(Nn.jsx)(ma.a,{action:!0,className:"sidebar-button",onClick:function(){d(f?"":o)},children:Object(Nn.jsx)(Ca,{badge:0===O?void 0:null!==O&&void 0!==O?O:void 0,icon:t,name:n})}),Object(Nn.jsx)(ga.a,{in:f,children:Object(Nn.jsx)("div",{className:"sidebar-collapse",children:v})})]})},Ca=function(e){var t=e.name,n=e.icon,r=e.badge;return Object(Nn.jsxs)(c.a.Fragment,{children:[n&&Object(Nn.jsx)(Ae.a,{size:"1x",className:"icon",icon:n}),Object(Nn.jsxs)("span",{className:"d-flex flex-grow-1 justify-content-between",children:[t," ",Object(Nn.jsx)(Qn.a,{variant:"secondary",children:r})]})]})},Na="sonarr-disabled",Ia="radarr-disabled",Pa=[{icon:Pe.K,name:"Series",link:"/series",hiddenKey:Na},{icon:Pe.u,name:"Movies",link:"/movies",hiddenKey:Ia},{icon:Pe.k,name:"History",children:[{name:"Series",link:"/history/series",hiddenKey:Na},{name:"Movies",link:"/history/movies",hiddenKey:Ia},{name:"Statistics",link:"/history/stats"}]},{icon:Pe.t,name:"Blacklist",children:[{name:"Series",link:"/blacklist/series",hiddenKey:Na},{name:"Movies",link:"/blacklist/movies",hiddenKey:Ia}]},{icon:Pe.s,name:"Wanted",children:[{name:"Series",link:"/wanted/series",hiddenKey:Na},{name:"Movies",link:"/wanted/movies",hiddenKey:Ia}]},{icon:Pe.n,name:"Settings",children:[{name:"General",link:"/settings/general"},{name:"Languages",link:"/settings/languages"},{name:"Providers",link:"/settings/providers"},{name:"Subtitles",link:"/settings/subtitles"},{name:"Sonarr",link:"/settings/sonarr"},{name:"Radarr",link:"/settings/radarr"},{name:"Notifications",link:"/settings/notifications"},{name:"Scheduler",link:"/settings/scheduler"},{name:"UI",link:"/settings/ui"}]},{icon:Pe.B,name:"System",children:[{name:"Tasks",link:"/system/tasks"},{name:"Logs",link:"/system/logs"},{name:"Providers",link:"/system/providers"},{name:"Status",link:"/system/status"},{name:"Releases",link:"/system/releases"}]}];n(340);function Aa(){return nn(Et)}var Ta=function(e){var t=e.open;ce(nn(It));var n=Object(a.useContext)(Ss),r=tn((function(e){return e.site.badges})),i=r.movies,s=r.episodes,o=r.providers,u=Object(a.useMemo)((function(){return{Wanted:{Series:s,Movies:i},System:{Providers:o}}}),[i,s,o]),d=xn(),j=mn(),b=Object(a.useMemo)((function(){var e=[];return d||e.push(Na),j||e.push(Ia),e}),[d,j]),O=Object(l.h)(),h=Aa();Object(a.useEffect)((function(){var e=O.location.pathname.split("/"),t=e.length;h(t>=3?e[t-2]:e[t-1])}),[O.location.pathname,h]);var p=["sidebar-container"],v=["sidebar-overlay"];!0===t&&(p.push("open"),v.push("open"));var x=Object(a.useMemo)((function(){return Pa.map((function(e){var t;return b.includes(null!==(t=e.hiddenKey)&&void 0!==t?t:"")?null:"children"in e?Object(Nn.jsx)(wa,Object(f.a)({},e),e.name):Object(Nn.jsx)(Sa,Object(f.a)({},e),e.link)}))}),[b]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsxs)("aside",{className:p.join(" "),children:[Object(Nn.jsx)(Me.a,{className:"sidebar-title d-flex align-items-center d-md-none",children:Object(Nn.jsx)(pa.a,{alt:"brand",src:xa,width:"32",height:"32"})}),Object(Nn.jsx)(ya.Provider,{value:b,children:Object(Nn.jsx)(ka.Provider,{value:u,children:Object(Nn.jsx)(va.a,{variant:"flush",children:x})})})]}),Object(Nn.jsx)("div",{className:v.join(" "),onClick:n})]})},Ma=n(500);n(341);function Ea(e){return Ba.apply(this,arguments)}function Ba(){return(Ba=Object(He.a)(_e.a.mark((function e(t){var n;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,$e.search(t);case 2:return n=e.sent,e.abrupt("return",n.map((function(e){var t;return t=e.sonarrSeriesId?"/series/".concat(e.sonarrSeriesId):e.radarrId?"/movies/".concat(e.radarrId):"",{name:"".concat(e.title," (").concat(e.year,")"),link:t}})));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Ka=function(){var e,t,n=nn(Ct),r=cn(),c="none"!==(null!==(e=null===(t=Object(Z.a)(r,1)[0].data)||void 0===t?void 0:t.auth.type)&&void 0!==e?e:"none"),i=Object(a.useContext)(Ss),s=tn((function(e){return e.site.offline})),o=Object(a.useMemo)((function(){return Object(Nn.jsxs)(Tn.a,{alignRight:!0,children:[Object(Nn.jsx)(Tn.a.Toggle,{className:"dropdown-hidden",as:Be.a,children:Object(Nn.jsx)(Ae.a,{icon:Pe.ab})}),Object(Nn.jsxs)(Tn.a.Menu,{children:[Object(Nn.jsx)(Tn.a.Item,{onClick:function(){$e.restart()},children:"Restart"}),Object(Nn.jsx)(Tn.a.Item,{onClick:function(){$e.shutdown()},children:"Shutdown"}),Object(Nn.jsx)(Tn.a.Divider,{hidden:!c}),Object(Nn.jsx)(Tn.a.Item,{hidden:!c,onClick:function(){$e.logout().then((function(){return n()}))},children:"Logout"})]})]})}),[c,n]),l=Object(a.useState)(!1),u=Object(Z.a)(l,2),d=u[0],j=u[1],b=Object(a.useCallback)((function(){j(!0),$e.status().finally((function(){return j(!1)}))}),[]),O=ae();return Object(Nn.jsxs)(Ma.a,{bg:"primary",className:"flex-grow-1 px-0",children:[Object(Nn.jsx)("div",{className:"header-icon px-3 m-0 d-none d-md-block",children:Object(Nn.jsx)(Ma.a.Brand,{href:O,className:"",children:Object(Nn.jsx)(pa.a,{alt:"brand",src:xa,width:"32",height:"32"})})}),Object(Nn.jsx)(Be.a,{className:"mx-2 m-0 d-md-none",onClick:i,children:Object(Nn.jsx)(Ae.a,{icon:Pe.c})}),Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{noGutters:!0,className:"flex-grow-1",children:[Object(Nn.jsx)(la.a,{xs:6,sm:4,className:"d-flex align-items-center",children:Object(Nn.jsx)(Xr,{onSearch:Ea})}),Object(Nn.jsxs)(la.a,{className:"d-flex flex-row align-items-center justify-content-end pr-2",children:[Object(Nn.jsx)(Be.a,{href:"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XHHRWXT9YB7WE&source=url",target:"_blank",children:Object(Nn.jsx)(Ae.a,{icon:Pe.w})}),s?Object(Nn.jsx)(Jn,{loading:d,className:"ml-2",variant:"warning",icon:Pe.H,onClick:b,children:"Reconnect"}):o]})]})})]})},za=n(501);n(342);var Da=function(e){var t=e.message,n=e.id,r=e.type,c=nn(Tt),i=Object(a.useCallback)((function(){return c(n)}),[c,n]);return Object(Nn.jsxs)(za.a,{onClose:i,animation:!1,children:[Object(Nn.jsxs)(za.a.Header,{children:[Object(Nn.jsx)(Ae.a,{className:"mr-1",icon:Pe.s}),Object(Nn.jsx)("strong",{className:"mr-auto",children:Object($.capitalize)(r)})]}),Object(Nn.jsx)(za.a.Body,{children:t})]})},La=function(){var e=tn((function(e){return e.site.notifications})),t=Object(a.useMemo)((function(){return e.map((function(e,t){return Object(Nn.jsx)(Da,Object(f.a)({},e),e.id)}))}),[e]);return Object(Nn.jsx)("div",{className:"alert-container",children:Object(Nn.jsx)("div",{className:"toast-container",children:t})})},Ra="/empty-page",_a=function(){return Object(Nn.jsxs)(Me.a,{className:"d-flex flex-column align-items-center my-5",children:[Object(Nn.jsxs)("h1",{children:[Object(Nn.jsx)(Ae.a,{className:"mr-2",icon:An.c}),"404"]}),Object(Nn.jsx)("p",{children:"The Request URL No Found"})]})},Ha=n(36),Ua=function(e){var t=e.blacklist,n=e.update,r=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t="/movies/".concat(e.row.original.radarrId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Date",accessor:"timestamp"},{accessor:"subs_id",Cell:function(e){var t=e.value;return Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,promise:function(){return Qe.deleteBlacklist(!1,{provider:e.row.original.provider,subs_id:t})},onSuccess:n,children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[n]);return Object(Nn.jsx)(da,{emptyText:"No Blacklisted Movies Subtitles",columns:r,data:t})},Fa=function(){var e=function(){var e=nn(Ut);return an(tn((function(e){return e.movie.blacklist})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];return ce(r),Object(Nn.jsx)(Yn,{state:n,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Movies Blacklist - Bazarr"})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Y,disabled:0===e.length,promise:function(){return Qe.deleteBlacklist(!0)},onSuccess:r,children:"Remove All"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Ua,{blacklist:e,update:r})})]})}})},Ga=function(e){var t=e.blacklist,n=e.update,r=Object(a.useMemo)((function(){return[{Header:"Series",accessor:"seriesTitle",className:"text-nowrap",Cell:function(e){var t="/series/".concat(e.row.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Episode",accessor:"episode_number"},{accessor:"episodeTitle"},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Date",accessor:"timestamp"},{accessor:"subs_id",Cell:function(e){var t=e.value;return Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,promise:function(){return qe.deleteBlacklist(!1,{provider:e.row.original.provider,subs_id:t})},onSuccess:n,children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[n]);return Object(Nn.jsx)(da,{emptyText:"No Blacklisted Series Subtitles",columns:r,data:t})},Ya=function(){var e=function(){var e=nn(en);return an(tn((function(e){return e.series.blacklist})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];return ce(r),Object(Nn.jsx)(Yn,{state:n,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Series Blacklist - Bazarr"})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Y,disabled:0===e.length,promise:function(){return qe.deleteBlacklist(!0)},onSuccess:r,children:"Remove All"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Ga,{blacklist:e,update:r})})]})}})},qa=function(){var e=xn(),t=mn();return Object(Nn.jsxs)(l.e,{children:[e&&Object(Nn.jsx)(l.c,{exact:!0,path:"/blacklist/series",children:Object(Nn.jsx)(Ya,{})}),t&&Object(Nn.jsx)(l.c,{path:"/blacklist/movies",children:Object(Nn.jsx)(Fa,{})}),Object(Nn.jsx)(l.c,{path:"/blacklist/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},Wa=function(e){var t=e.state,n=e.columns,r=e.type,a=e.tableUpdater,c=Object($.capitalize)(r);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[c," History - Bazarr"]})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Yn,{state:t,children:function(e){return Object(Nn.jsx)(da,{emptyText:"Nothing Found in ".concat(c," History"),columns:n,data:e,externalUpdate:a})}})})]})},Va=function(){var e=function(){var e=nn(Lt);return an(tn((function(e){return e.movie.historyList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];ce(r);var c=Object(a.useCallback)((function(e){return r()}),[r]),i=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){return Object(Nn.jsx)(ja,{action:e.value})}},{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t="/movies/".concat(e.row.original.radarrId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t,long:!0})}):null}},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp",className:"text-nowrap"},{accessor:"description",Cell:function(e){var t=e.row,n=e.value,r=Object(Nn.jsx)(Sn.a,{id:"description-".concat(t.id),children:Object(Nn.jsx)(Sn.a.Content,{children:n})});return Object(Nn.jsx)(wn.a,{overlay:r,children:Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.z})})}},{accessor:"blacklisted",Cell:function(e){var t=e.row,n=e.externalUpdate,r=t.original;return Object(Nn.jsx)(fr,{history:r,update:function(){return n&&n(t)},promise:function(e){return Qe.addBlacklist(r.radarrId,e)}})}}]}),[]);return Object(Nn.jsx)(Wa,{type:"movies",state:n,columns:i,tableUpdater:c})},Qa=function(){var e=function(){var e=nn(Zt);return an(tn((function(e){return e.series.historyList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];ce(r);var c=Object(a.useCallback)((function(e){return r()}),[r]),i=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){var t=e.value;return Object(Nn.jsx)(ja,{action:t})}},{Header:"Series",accessor:"seriesTitle",Cell:function(e){var t="/series/".concat(e.row.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Episode",accessor:"episode_number"},{Header:"Title",accessor:"episodeTitle"},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t,long:!0})}):null}},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp",className:"text-nowrap"},{accessor:"description",Cell:function(e){var t=e.row,n=e.value,r=Object(Nn.jsx)(Sn.a,{id:"description-".concat(t.id),children:Object(Nn.jsx)(Sn.a.Content,{children:n})});return Object(Nn.jsx)(wn.a,{overlay:r,children:Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.z})})}},{accessor:"blacklisted",Cell:function(e){var t=e.row,n=e.externalUpdate,r=t.original,a=r.sonarrEpisodeId,c=r.sonarrSeriesId;return Object(Nn.jsx)(fr,{history:r,update:function(){return n&&n(t)},promise:function(e){return qe.addBlacklist(c,a,e)}})}}]}),[]);return Object(Nn.jsx)(Wa,{type:"series",state:n,columns:i,tableUpdater:c})},Xa=n(509),Ja=n(490),Za=n(494),$a=n(280),ec=n(281),tc=n(140),nc=n(136),rc=n(285),ac=[{label:"Automatically Downloaded",value:0},{label:"Manually Downloaded",value:1},{label:"Upgraded",value:2}],cc=[{label:"Last Week",value:"week"},{label:"Last Month",value:"month"},{label:"Last Trimester",value:"trimester"},{label:"Last Year",value:"year"}];function ic(e){var t=e.movies.map((function(e){return{date:e.date,movies:e.count}})),n=e.series.map((function(e){return{date:e.date,series:e.count}}));return Object($.merge)(t,n)}var sc=function(e){return e.name},oc=function(e){var t=e.children;return Object(Nn.jsx)(la.a,{xs:6,lg:3,className:"p-1",children:t})},lc=function(){var e=ln(!0),t=Object(Z.a)(e,1)[0],n=pn(),r=Object(Z.a)(n,2),i=r[0];ce(r[1]);var s=Object(a.useState)("month"),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useState)(null),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(a.useState)(null),f=Object(Z.a)(h,2),p=f[0],v=f[1],x=Object(a.useState)(null),m=Object(Z.a)(x,2),g=m[0],y=m[1],k=Object(a.useCallback)((function(){return Ve.stats(l,null!==b&&void 0!==b?b:void 0,null===g||void 0===g?void 0:g.name,null===p||void 0===p?void 0:p.code2)}),[l,null===p||void 0===p?void 0:p.code2,b,g]);return Object(Nn.jsxs)(Me.a,{fluid:!0,className:"vh-75",children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"History Statistics - Bazarr"})}),Object(Nn.jsx)(qn,{promise:k,children:function(e){return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsxs)(nr,{scroll:!1,children:[Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(_n,{placeholder:"Time...",options:cc,value:l,onChange:function(e){return u(null!==e&&void 0!==e?e:"month")}})}),Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(_n,{placeholder:"Action...",clearable:!0,options:ac,value:b,onChange:O})}),Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(Wn,{placeholder:"Provider...",clearable:!0,state:i,label:sc,onChange:y})}),Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(rr,{clearable:!0,options:t,value:p,onChange:v})})]}),Object(Nn.jsx)(Xa.a,{height:"100%",children:Object(Nn.jsxs)(Ja.a,{data:ic(e),children:[Object(Nn.jsx)(Za.a,{strokeDasharray:"4 2"}),Object(Nn.jsx)($a.a,{dataKey:"date"}),Object(Nn.jsx)(ec.a,{allowDecimals:!1}),Object(Nn.jsx)(tc.a,{}),Object(Nn.jsx)(nc.a,{verticalAlign:"top"}),Object(Nn.jsx)(rc.a,{name:"Series",dataKey:"series",fill:"#2493B6"}),Object(Nn.jsx)(rc.a,{name:"Movies",dataKey:"movies",fill:"#FFC22F"})]})})]})}})]})},uc=function(){var e=xn(),t=mn();return Object(Nn.jsxs)(l.e,{children:[e&&Object(Nn.jsx)(l.c,{exact:!0,path:"/history/series",children:Object(Nn.jsx)(Qa,{})}),t&&Object(Nn.jsx)(l.c,{exact:!0,path:"/history/movies",children:Object(Nn.jsx)(Va,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/history/stats",children:Object(Nn.jsx)(lc,{})}),Object(Nn.jsx)(l.c,{path:"/history/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},dc=function(e){var t,n,r,i=e.state,s=e.dirtyItems,o=e.update,l=e.modify,u=e.editMode,d=e.select,j=e.columns,b=e.loader,O=e.name,h=sr(),f=Object(a.useCallback)((function(e,t){h(t,e.original)}),[h]),p=i.data,v=Object(a.useMemo)((function(){return le(p)}),[p]),x=(t=v,n=s,r=jc,Object(a.useMemo)((function(){return ue(t,n,r)}),[t,n,r])),m=sn(),g=Object(Z.a)(m,1)[0];return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(da,{async:!0,autoScroll:!0,canSelect:!0,columns:j,data:x,asyncState:i,asyncId:oe,asyncLoader:b,loose:[g],isSelecting:u,onSelect:d,emptyText:"No ".concat(O," Found"),externalUpdate:f}),Object(Nn.jsx)(xr,{modalKey:"edit",submit:l,onSuccess:function(e){var t=oe(e);o([t])}})]})};function jc(e,t){return oe(e)===oe(t)}var bc=function(e){var t=e.updateAction,n=Object(gn.a)(e,["updateAction"]),r=n.state,i=Object(a.useState)(!1),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=rn(t,Object(a.useCallback)((function(){l((function(e){return b(e),e})),k([])}),[])),h=Object(a.useState)([]),p=Object(Z.a)(h,2),v=p[0],x=p[1],m=Object(a.useState)([]),g=Object(Z.a)(m,2),y=g[0],k=g[1],S=sn(),w=Object(Z.a)(S,1)[0],C=Object(a.useMemo)((function(){var e=[];return e.push(Object(Nn.jsx)(Tn.a.Item,{children:"Clear Profile"},"clear-profile")),e.push(Object(Nn.jsx)(Tn.a.Divider,{},"dropdown-divider")),e.push.apply(e,Object(J.a)(w.map((function(e){return Object(Nn.jsx)(Tn.a.Item,{eventKey:e.profileId.toString(),children:e.name},e.profileId)})))),e}),[w]),N=Object(a.useCallback)((function(e){var t=e?parseInt(e):null,n=v.map((function(e){var n=Object(f.a)({},e);return n.profileId=t,n})),r=ue(y,n,jc);k(r)}),[v,y]),I=Object(a.useCallback)((function(){n.state.data.order.every(ne)?b(!0):O(),l(!0)}),[n.state.data.order,O]),P=Object(a.useCallback)((function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!e&&y.length>0){var t=y.map(oe);O(t)}else b(!1),k([]);l(!1),x([])}),[y,O]),A=Object(a.useCallback)((function(){var e={id:[],profileid:[]};return y.forEach((function(t){var n=oe(t);e.id.push(n),e.profileid.push(t.profileId)})),n.modify(e)}),[y,n]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[n.name," - Bazarr"]})}),Object(Nn.jsx)(nr,{scroll:!1,children:j?Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(nr.Group,{pos:"start",children:Object(Nn.jsxs)(Tn.a,{onSelect:N,children:[Object(Nn.jsx)(Tn.a.Toggle,{disabled:0===v.length,variant:"light",children:"Change Profile"}),Object(Nn.jsx)(Tn.a.Menu,{children:C})]})}),Object(Nn.jsxs)(nr.Group,{pos:"end",children:[Object(Nn.jsx)(nr.Button,{icon:Pe.Z,onClick:function(){return P(!0)},children:"Cancel"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.g,disabled:0===y.length,promise:A,onSuccess:function(){return P()},children:"Save"})]})]}):Object(Nn.jsx)(nr.Button,{updating:o!==j,disabled:0===r.data.order.length&&r.updating,icon:Pe.D,onClick:I,children:"Mass Edit"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(dc,Object(f.a)(Object(f.a)({},n),{},{update:O,dirtyItems:y,editMode:j,select:x}))})]})},Oc=function(){var e=hn(),t=Object(Z.a)(e,1)[0],n=nn(Rt),r=Object(a.useMemo)((function(){return[{accessor:"monitored",selectHide:!0,Cell:function(e){var t=e.value;return Object(Nn.jsx)(Ae.a,{title:t?"monitored":"unmonitored",icon:t?Pe.d:An.a})}},{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t=e.row,n=e.value;if(e.isSelecting)return n;var r,a="/movies/".concat(t.original.radarrId);return Object(Nn.jsx)(u.b,{to:a,title:null!==(r=t.original.sceneName)&&void 0!==r?r:n,children:Object(Nn.jsx)("span",{children:n})})}},{Header:"Exist",accessor:"exist",selectHide:!0,Cell:function(e){var t=e.row,n=e.value,r=t.original.path;return Object(Nn.jsx)(Ae.a,{title:r,icon:n?Pe.g:Pe.s})}},{Header:"Audio",accessor:"audio_language",Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{variant:"secondary",className:"mr-2",children:e.name},e.code2)}))}},{Header:"Languages Profile",accessor:"profileId",Cell:function(e){var t,n,r=e.value,a=e.loose;return a&&null!==(t=null===(n=a[0].find((function(e){return e.profileId===r})))||void 0===n?void 0:n.name)&&void 0!==t?t:null}},{accessor:"missing_subtitles",selectHide:!0,Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{className:"mx-2",variant:"warning",children:e.code2},e.code2)}))}},{accessor:"radarrId",selectHide:!0,Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Xn,{icon:Pe.bb,onClick:function(){return n&&n(t,"edit")}})}}]}),[]);return Object(Nn.jsx)(bc,{state:t,name:"Movies",loader:n,updateAction:Ht,columns:r,modify:function(e){return Qe.modify(e)}})},hc=function(e){var t=e.onSelect,n=e.onDownload,r=Object(gn.a)(e,["onSelect","onDownload"]),i=Object(a.useState)([]),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(!1),h=Object(Z.a)(O,2),p=h[0],v=h[1],x=dr(r.modalKey),m=Object(a.useCallback)((function(){x&&(v(!0),b(!0),(re(x)?Xe.movies(x.radarrId):Xe.episodes(x.sonarrEpisodeId)).then((function(e){return l(e)})).finally((function(){return b(!1)})))}),[x]),g=Object(a.useCallback)((function(){v(!1),b(!1)}),[]);Object(a.useEffect)((function(){x&&g()}),[x,g]);var y=Object(a.useMemo)((function(){return[{accessor:"subtitle",Cell:function(e){var n=e.row,r=e.externalUpdate,a=n.original;return Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,promise:function(){return t(x,a)},onSuccess:function(){return r&&r(n)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.p})})}},{Header:"Score",accessor:function(e){return"".concat(e.score,"%")}},{accessor:"language",Cell:function(e){var t=e.row.original,n={code2:e.value,hi:"True"===t.hearing_impaired,forced:"True"===t.forced,name:""};return Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:n})})}},{Header:"Provider",accessor:"provider",Cell:function(e){var t=e.value,n=e.row.original.url;return n?Object(Nn.jsx)("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:t}):t}},{Header:"Release",accessor:"release_info",className:"text-nowrap",Cell:function(e){var t=e.value,n=Object(a.useMemo)((function(){return t.slice(1).map((function(e,t){return Object(Nn.jsx)(Tn.a.Item,{disabled:!0,className:"text-dark",children:e},t)}))}),[t]);if(0!==t.length){var r=t[0];return Object(Nn.jsxs)(Tn.a,{children:[Object(Nn.jsx)(Tn.a.Toggle,{disabled:1===t.length,className:"dropdown-hidden text-dark opacity-100",variant:1===t.length?"link":"light",children:r}),Object(Nn.jsx)(Tn.a.Menu,{children:n})]})}return"Cannot get release info"}},{Header:"Upload",accessor:function(e){var t;return null!==(t=e.uploader)&&void 0!==t?t:"-"}},{accessor:"matches",Cell:function(e){var t=e.row.original,n=t.matches,r=t.dont_matches;return Object(Nn.jsx)(fc,{matches:n,dont:r})}}]}),[t,x]),k=Object(a.useMemo)((function(){var e,t;return p?j?Object(Nn.jsx)(Oa,{animation:"grow"}):Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)("p",{className:"mb-3 small",children:null!==(e=null===x||void 0===x?void 0:x.path)&&void 0!==e?e:""}),Object(Nn.jsx)(da,{emptyText:"No Result",columns:y,data:o,externalUpdate:n})]}):Object(Nn.jsxs)("div",{className:"px-4 py-5",children:[Object(Nn.jsx)("p",{className:"mb-3 small",children:null!==(t=null===x||void 0===x?void 0:x.path)&&void 0!==t?t:""}),Object(Nn.jsx)(Be.a,{variant:"primary",block:!0,onClick:m,children:"Start Search"})]})}),[p,j,y,o,m,null===x||void 0===x?void 0:x.path,n]),S=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{variant:"light",disabled:!p,onClick:g,children:"Reset"})}),[p,g]),w=Object(a.useMemo)((function(){var e="Unknown";return x&&(e=x.sceneName?x.sceneName:(re(x),x.title)),"Search - ".concat(e)}),[x]);return Object(Nn.jsx)(Or,Object(f.a)(Object(f.a)({closeable:!j,size:"xl",title:w,footer:S},r),{},{children:k}))},fc=function(e){var t=e.matches,n=e.dont,r=Pe.g,c="var(--success)";n.length>0&&(r=Pe.z,c="var(--warning)");var i=Object(a.useMemo)((function(){return t.map((function(e,t){return Object(Nn.jsx)("p",{className:"text-nowrap m-0",children:e},"match-".concat(t))}))}),[t]),s=Object(a.useMemo)((function(){return n.map((function(e,t){return Object(Nn.jsx)("p",{className:"text-nowrap m-0",children:e},"dont-".concat(t))}))}),[n]),o=Object(a.useMemo)((function(){return Object(Nn.jsx)(Sn.a,{id:"manual-search-matches-info",children:Object(Nn.jsx)(Sn.a.Content,{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsxs)(la.a,{xs:6,children:[Object(Nn.jsx)(Ae.a,{color:"var(--success)",icon:Pe.g}),i]}),Object(Nn.jsxs)(la.a,{xs:6,children:[Object(Nn.jsx)(Ae.a,{color:"var(--danger)",icon:Pe.W}),s]})]})})})})}),[i,s]);return Object(Nn.jsx)(wn.a,{overlay:o,children:Object(Nn.jsx)(Ae.a,{icon:r,color:c})})},pc=function(e){var t=e.icon,n=e.desc,r=e.children;return Object(Nn.jsxs)(Qn.a,{title:n,variant:"secondary",className:"mr-2 my-1 text-truncate",children:[Object(Nn.jsx)(Ae.a,{icon:t}),Object(Nn.jsx)("span",{className:"ml-1",children:r})]})},vc=function(e){var t=e.item,n=e.details,r=Object(a.useMemo)((function(){var e,r=[];return r.push(Object(Nn.jsx)(pc,{icon:An.e,desc:"File Path",children:t.path},"file-path")),r.push.apply(r,Object(J.a)(null!==(e=null===n||void 0===n?void 0:n.map((function(e,t){return Object(Nn.jsx)(pc,{icon:e.icon,children:e.text},de(t,"detail",e.text))})))&&void 0!==e?e:[])),t.tags.length>0&&r.push(Object(Nn.jsx)(pc,{icon:Pe.U,desc:"Tags",children:t.tags.join("|")},"tags")),r}),[n,t.path,t.tags]),c=Object(a.useMemo)((function(){return t.audio_language.map((function(e,t){return Object(Nn.jsx)(pc,{icon:Pe.G,desc:"Audio Language",children:e.name},de(t,"audio",e.code2))}))}),[t.audio_language]),i=on(t.profileId),s=dn(i),o=Object(a.useMemo)((function(){var e=[];return i&&(e.push(Object(Nn.jsx)(pc,{icon:Pe.S,desc:"Languages Profile",children:i.name},"language-profile")),e.push.apply(e,Object(J.a)(s.map((function(e,t){return Object(Nn.jsx)(pc,{icon:Pe.A,desc:"Language",children:Object(Nn.jsx)(fa,{long:!0,text:e})},de(t,"lang",e.code2))}))))),e}),[i,s]),l=Object(a.useMemo)((function(){return Object(Nn.jsxs)(Sn.a,{id:"item-overview-alternative",children:[Object(Nn.jsx)(Sn.a.Title,{children:"Alternate Titles"}),Object(Nn.jsx)(Sn.a.Content,{children:t.alternativeTitles.map((function(e,t){return Object(Nn.jsx)("li",{children:e},t)}))})]})}),[t.alternativeTitles]);return Object(Nn.jsx)(Me.a,{fluid:!0,style:{backgroundRepeat:"no-repeat",backgroundSize:"cover",backgroundPosition:"top center",backgroundImage:"url('".concat(t.fanart,"')")},children:Object(Nn.jsxs)(Te.a,{className:"p-4 pb-4",style:{backgroundColor:"rgba(0,0,0,0.7)"},children:[Object(Nn.jsx)(la.a,{sm:"auto",children:Object(Nn.jsx)(pa.a,{className:"d-none d-sm-block my-2",style:{maxHeight:250},src:t.poster})}),Object(Nn.jsx)(la.a,{children:Object(Nn.jsxs)(Me.a,{fluid:!0,className:"text-white",children:[Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)("h1",{children:t.title}),Object(Nn.jsx)("span",{hidden:0===t.alternativeTitles.length,children:Object(Nn.jsx)(wn.a,{overlay:l,children:Object(Nn.jsx)(Ae.a,{className:"mx-2",icon:An.b})})})]}),Object(Nn.jsx)(Te.a,{children:r}),Object(Nn.jsx)(Te.a,{children:c}),Object(Nn.jsx)(Te.a,{children:o}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)("span",{children:t.overview})})]})})]})})},xc="Missing Subtitles",mc=function(e){var t=e.movie,n=e.update,r=Object(a.useMemo)((function(){return[{Header:"Subtitle Path",accessor:"path",Cell:function(e){return null===e.value||0===e.value.length?"Video File Subtitle Track":e.value===xc?Object(Nn.jsx)("span",{className:"text-muted",children:e.value}):e.value}},{Header:"Language",accessor:"name",Cell:function(e){var t=e.row;return t.original.path===xc?Object(Nn.jsx)(Qn.a,{variant:"primary",children:Object(Nn.jsx)(fa,{text:t.original,long:!0})}):Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t.original,long:!0})})}},{accessor:"code2",Cell:function(e){var r=e.row.original;return null===r.path||0===r.path.length?null:r.path===xc?Object(Nn.jsx)(Vn,{promise:function(){return Qe.downloadSubtitles(t.radarrId,{language:r.code2,hi:r.hi,forced:r.forced})},onSuccess:function(){return n(t.radarrId)},variant:"light",size:"sm",children:Object(Nn.jsx)(Ae.a,{icon:Pe.Q})}):Object(Nn.jsx)(Vn,{variant:"light",size:"sm",promise:function(){var e;return Qe.deleteSubtitles(t.radarrId,{language:r.code2,hi:r.hi,forced:r.forced,path:null!==(e=r.path)&&void 0!==e?e:""})},onSuccess:function(){return n(t.radarrId)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[t,n]),c=Object(a.useMemo)((function(){var e=t.missing_subtitles.map((function(e){return e.path=xc,e}));return t.subtitles.concat(e)}),[t.missing_subtitles,t.subtitles]);return Object(Nn.jsx)(na,{columns:r,data:c,emptyText:"No Subtitles Found For This Movie"})},gc=function(e,t){e=e;var n=t.language,r=t.hearing_impaired,a=t.forced,c=t.provider,i=t.subtitle;return Xe.downloadMovieSubtitle(e.radarrId,{language:n,hi:r,forced:a,provider:c,subtitle:i})},yc=Object(l.i)((function(e){var t=e.match,n=Number.parseInt(t.params.id),r=fn(n),c=Object(Z.a)(r,2),i=c[0],s=c[1];ce(s);var o=i.data,u=sr(),d=Object(a.useState)(!0),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(a.useCallback)((function(){null===i.data&&O(!1)}),[i.data]);if(ie(i,h),isNaN(n)||!b)return Object(Nn.jsx)(l.b,{to:Ra});if(!o)return Object(Nn.jsx)(Oa,{});var f=void 0!==o.profileId;return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[o.title," - Bazarr (Movies)"]})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsxs)(nr.Group,{pos:"start",children:[Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.T,promise:function(){return Qe.action({action:"scan-disk",radarrid:o.radarrId})},onSuccess:s,children:"Scan Disk"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Q,disabled:null===o.profileId,promise:function(){return Qe.action({action:"search-missing",radarrid:o.radarrId})},onSuccess:s,children:"Search"}),Object(Nn.jsx)(nr.Button,{icon:Pe.ab,disabled:null===o.profileId,onClick:function(){return u("manual-search",o)},children:"Manual"}),Object(Nn.jsx)(nr.Button,{icon:Pe.x,onClick:function(){return u("history",o)},children:"History"}),Object(Nn.jsx)(nr.Button,{icon:Pe.X,onClick:function(){return u("tools",[o])},children:"Tools"})]}),Object(Nn.jsxs)(nr.Group,{pos:"end",children:[Object(Nn.jsx)(nr.Button,{disabled:!f||null===o.profileId,icon:Pe.l,onClick:function(){return u("upload",o)},children:"Upload"}),Object(Nn.jsx)(nr.Button,{icon:Pe.bb,onClick:function(){return u("edit",o)},children:"Edit Movie"})]})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(vc,{item:o,details:[]})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(mc,{movie:o,update:s})}),Object(Nn.jsx)(xr,{modalKey:"edit",submit:function(e){return Qe.modify(e)},onSuccess:s}),Object(Nn.jsx)(Qr,{modalKey:"tools",size:"lg",update:s}),Object(Nn.jsx)(pr,{modalKey:"history",size:"lg"}),Object(Nn.jsx)(mr,{modalKey:"upload",size:"lg"}),Object(Nn.jsx)(hc,{modalKey:"manual-search",onDownload:s,onSelect:gc})]})})),kc=function(){return Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/movies",children:Object(Nn.jsx)(Oc,{})}),Object(Nn.jsx)(l.c,{path:"/movies/:id",children:Object(Nn.jsx)(yc,{})})]})},Sc=n(507),wc=function(){var e=jn(),t=Object(Z.a)(e,1)[0],n=nn(Vt),r=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t=e.row,n=e.value;if(e.isSelecting)return n;var r="/series/".concat(t.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:r,children:Object(Nn.jsx)("span",{children:n})})}},{Header:"Exist",accessor:"exist",selectHide:!0,Cell:function(e){var t=e.value,n=e.row.original.path;return Object(Nn.jsx)(Ae.a,{title:n,icon:t?Pe.g:Pe.s})}},{Header:"Audio",accessor:"audio_language",Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{variant:"secondary",className:"mr-2",children:e.name},e.code2)}))}},{Header:"Languages Profile",accessor:"profileId",Cell:function(e){var t,n,r=e.value,a=e.loose;return a&&null!==(t=null===(n=a[0].find((function(e){return e.profileId===r})))||void 0===n?void 0:n.name)&&void 0!==t?t:null}},{Header:"Episodes",accessor:"episodeFileCount",selectHide:!0,Cell:function(e){var t=e.row.original,n=t.episodeFileCount,r=t.episodeMissingCount,a=t.profileId,c=0,i="";0!==n&&a?(c=n-r,i="".concat(n-r,"/").concat(n)):c=0;var s=0===r?"primary":"warning";return Object(Nn.jsx)(Sc.a,{className:"my-a",variant:s,min:0,max:n,now:c,label:i})}},{accessor:"sonarrSeriesId",selectHide:!0,Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Xn,{icon:Pe.bb,onClick:function(){n&&n(t,"edit")}})}}]}),[]);return Object(Nn.jsx)(bc,{state:t,name:"Series",updateAction:$t,loader:n,columns:r,modify:function(e){return Je.modify(e)}})},Cc=function(e){var t=e.seriesid,n=e.episodeid,r=e.missing,a=e.subtitle,c=a.hi,i=a.forced,s=bn(t),o=Object(Z.a)(s,2)[1],l=a.path;return r||l?Object(Nn.jsxs)(Vn,{promise:function(){return r?qe.downloadSubtitles(t,n,{hi:c,forced:i,language:a.code2}):l?qe.deleteSubtitles(t,n,{hi:c,forced:i,path:l,language:a.code2}):null},onSuccess:o,as:Qn.a,className:"mr-1",variant:r?"primary":"secondary",children:[Object(Nn.jsx)(fa,{className:"pr-1",text:a}),Object(Nn.jsx)(Ae.a,{size:"sm",icon:r?Pe.Q:Pe.Y})]}):Object(Nn.jsx)(Qn.a,{className:"mr-1",variant:"secondary",children:Object(Nn.jsx)(fa,{text:a,long:!1})})},Nc=function(e,t){e=e;var n=t.language,r=t.hearing_impaired,a=t.forced,c=t.provider,i=t.subtitle;return Xe.downloadEpisodeSubtitle(e.sonarrSeriesId,e.sonarrEpisodeId,{language:n,hi:r,forced:a,provider:c,subtitle:i})},Ic=function(e){var t=e.episodes,n=e.update,r=sr(),i=Object(a.useMemo)((function(){return[{accessor:"monitored",Cell:function(e){return Object(Nn.jsx)(Ae.a,{title:e.value?"monitored":"unmonitored",icon:e.value?Pe.d:An.a})}},{accessor:"season",Cell:function(e){return"Season ".concat(e.value)}},{Header:"Episode",accessor:"episode"},{Header:"Title",accessor:"title",className:"text-nowrap"},{Header:"Audio",accessor:"audio_language",Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{variant:"secondary",children:e.name},e.code2)}))}},{Header:"Subtitles",accessor:"missing_subtitles",Cell:function(e){var t=e.row.original,n=t.sonarrSeriesId;return Object(a.useMemo)((function(){var e=t.sonarrEpisodeId,r=t.missing_subtitles.map((function(t,r){return Object(Nn.jsx)(Cc,{missing:!0,seriesid:n,episodeid:e,subtitle:t},de(r,t.code2,"missing"))})),a=t.subtitles.filter((function(e){return-1===t.missing_subtitles.findIndex((function(t){return t.code2===e.code2}))})).map((function(t,r){return Object(Nn.jsx)(Cc,{seriesid:n,episodeid:e,subtitle:t},de(r,t.code2,"valid"))}));return[].concat(Object(J.a)(r),Object(J.a)(a))}),[t,n])}},{Header:"Actions",accessor:"sonarrEpisodeId",Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsxs)(kr.a,{children:[Object(Nn.jsx)(Jn,{icon:Pe.ab,onClick:function(){n&&n(t,"manual-search")}}),Object(Nn.jsx)(Jn,{icon:Pe.x,onClick:function(){n&&n(t,"history")}}),Object(Nn.jsx)(Jn,{icon:Pe.e,onClick:function(){n&&n(t,"tools")}})]})}}]}),[]),s=Object(a.useCallback)((function(e,t){r(t,"tools"===t?[e.original]:e.original)}),[r]),o=Object(a.useMemo)((function(){return t.data.reduce((function(e,t){return Math.max(e,t.season)}),0)}),[t]),l=Object(a.useMemo)((function(){return{columns:i,data:t.data,externalUpdate:s,initialState:{sortBy:[{id:"season",desc:!0},{id:"episode",desc:!0}],groupBy:["season"],expanded:Object(h.a)({},"season:".concat(o),!0)}}}),[t,i,o,s]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Yn,{state:t,children:function(){return Object(Nn.jsx)(sa,Object(f.a)({emptyText:"No Episode Found For This Series"},l))}}),Object(Nn.jsx)(Qr,{modalKey:"tools",size:"lg",update:n}),Object(Nn.jsx)(vr,{modalKey:"history",size:"lg"}),Object(Nn.jsx)(hc,{modalKey:"manual-search",onDownload:n,onSelect:Nc})]})},Pc=Object(l.i)((function(e){var t,n=e.match,r=Number.parseInt(n.params.id),c=bn(r),i=Object(Z.a)(c,2),s=i[0],o=i[1],u=s.data,d=On(null===(t=s.data)||void 0===t?void 0:t.sonarrSeriesId),j=Object(Z.a)(d,1)[0];ce(o);var b=0!==j.data.length,O=Object(a.useMemo)((function(){var e;return[{icon:Pe.v,text:"".concat(null===u||void 0===u?void 0:u.episodeFileCount," files")},{icon:Pe.a,text:null!==(e=null===u||void 0===u?void 0:u.seriesType)&&void 0!==e?e:""}]}),[u]),h=sr(),f=Object(a.useState)(!0),p=Object(Z.a)(f,2),v=p[0],x=p[1],m=Object(a.useCallback)((function(){null===s.data&&x(!1)}),[s.data]);return ie(s,m),isNaN(r)||!v?Object(Nn.jsx)(l.b,{to:Ra}):u?Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[u.title," - Bazarr (Series)"]})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsxs)(nr.Group,{pos:"start",children:[Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.T,disabled:!b,promise:function(){return Je.action({action:"scan-disk",seriesid:r})},onSuccess:o,children:"Scan Disk"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Q,promise:function(){return Je.action({action:"search-missing",seriesid:r})},onSuccess:o,disabled:0===u.episodeFileCount||null===u.profileId||!b,children:"Search"})]}),Object(Nn.jsxs)(nr.Group,{pos:"end",children:[Object(Nn.jsx)(nr.Button,{disabled:0===u.episodeFileCount||!b,icon:Pe.e,onClick:function(){return h("tools",j.data)},children:"Tools"}),Object(Nn.jsx)(nr.Button,{disabled:0===u.episodeFileCount||null===u.profileId||!b,icon:Pe.l,onClick:function(){return h("upload",u)},children:"Upload"}),Object(Nn.jsx)(nr.Button,{icon:Pe.bb,onClick:function(){return h("edit",u)},children:"Edit Series"})]})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(vc,{item:u,details:O})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Ic,{episodes:j,update:o})}),Object(Nn.jsx)(xr,{modalKey:"edit",submit:function(e){return Je.modify(e)},onSuccess:o}),Object(Nn.jsx)(gr,{modalKey:"upload"})]}):Object(Nn.jsx)(Oa,{})})),Ac=function(){return Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/series",children:Object(Nn.jsx)(wc,{})}),Object(Nn.jsx)(l.c,{path:"/series/:id",children:Object(Nn.jsx)(Pc,{})})]})},Tc="languages-enabled",Mc="languages-profiles",Ec="notifications-providers",Bc="settings-general-use_sonarr",Kc="settings-general-use_radarr",zc=c.a.createContext([{},function(){}]);var Dc=function(e){var t=e.children,n=e.title,r=nn(Pt),c=Object(a.useState)({}),i=Object(Z.a)(c,2),s=i[0],o=i[1],u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)({}),f=Object(Z.a)(O,2),p=f[0],v=f[1],x=Object(a.useCallback)((function(){o({}),b(!1)}),[]),m=rn(yt,x),g=Object(a.useCallback)((function(e){!function(e){if(Mc in e){var t=e[Mc];e[Mc]=JSON.stringify(t)}if(Tc in e){var n=e[Tc];e[Tc]=n.map((function(e){return e.code2}))}if(Ec in e){var r=e[Ec];e[Ec]=r.map((function(e){return JSON.stringify(e)}))}}(e),b(!0),$e.setSettings(e).finally(m)}),[m]),y=Object(a.useCallback)((function(e){r(e),o({})}),[r]);Object(a.useEffect)((function(){var e={};e.__default__=g,e.storage=y,v(e)}),[g,y]);var k=Object(a.useMemo)((function(){return p.__default__}),[p]),S=Object(a.useCallback)((function(){var e=new Map;for(var t in s){var n=t.split("-")[0];if(0!==n.length){var r=e.get(n);r?r[t]=s[t]:e.set(n,Object(h.a)({},t,s[t]))}}var a={};e.forEach((function(e,t){t in p?p[t](e):a=Object($.merge)(a,e)})),k(a)}),[s,p,k]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:n})}),Object(Nn.jsx)(l.a,{when:Object.keys(s).length>0,message:"You have unsaved changes, are you sure you want to leave?"}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.Button,{icon:Pe.P,updating:j,disabled:0===Object.keys(s).length,onClick:S,children:"Save"})}),Object(Nn.jsx)(zc.Provider,{value:[s,o],children:Object(Nn.jsx)(Te.a,{className:"p-4",children:Object(Nn.jsx)(Me.a,{children:t})})})]})};function Lc(){var e=Object(a.useContext)(zc);return Object(Z.a)(e,1)[0]}function Rc(){var e=Object(a.useContext)(zc),t=Object(Z.a)(e,2)[1];return Object(a.useCallback)((function(e,n){t((function(t){var r=Object(f.a)({},t);return r[n]=e,r}))}),[t])}function _c(e,t,n){var r=cn(),c=Object(Z.a)(r,1)[0].data,i=Object(o.d)(),s=Object(a.useMemo)((function(){var n=null;if(void 0===c)return n;var r=e.split("-");if("settings"!==r[0])return null;r=r.slice(0);var a,i=c,s=Object(Dn.a)(r);try{for(s.s();!(a=s.n()).done;){var o=a.value;if(o in i&&(i=i[o]),t(i)){n=i;break}}}catch(l){s.e(l)}finally{s.f()}return n}),[e,c,t]);return n&&void 0!==c?n(c,i.getState()):s}function Hc(e,t,n){var r=_c(e,t,n),a=Lc();return e in a?a[e]:r}var Uc=c.a.createContext(["",function(e){}]),Fc=c.a.createContext((function(e){}));function Gc(){return Object(a.useContext)(Fc)}var Yc=function(e){var t=e.children,n=Object(a.useState)(!1);return Object(Nn.jsx)(Uc.Provider,{value:n,children:t})};Yc.Control=function(e){var t=e.children,n=Object(a.useContext)(Uc);return Object(Nn.jsx)(Fc.Provider,{value:n[1],children:t})},Yc.Content=function(e){var t=e.on,n=e.eventKey,r=e.indent,c=e.children,i=Object(a.useContext)(Uc),s=Object(Z.a)(i,1)[0],o=Object(a.useMemo)((function(){return t&&"string"===typeof s?t(s):n?s===n:!0===s}),[t,s,n]);return Object(Nn.jsx)(ga.a,{in:o,className:!1===r?void 0:"pl-4",children:Object(Nn.jsx)("div",{children:c})})};var qc=Yc,Wc=n(505),Vc=(n(473),function(e){var t=e.header,n=e.hidden,r=e.children;return Object(Nn.jsxs)(Te.a,{hidden:n,className:"flex-column mt-3",children:[Object(Nn.jsxs)(la.a,{children:[Object(Nn.jsx)("h4",{children:t}),Object(Nn.jsx)("hr",{})]}),Object(Nn.jsx)(la.a,{children:r})]})}),Qc=function(e){var t=e.children,n=e.name,r=e.hidden;return Object(Nn.jsxs)(Mn.a.Group,{hidden:r,children:[n&&Object(Nn.jsx)(Mn.a.Label,{children:n}),t]})},Xc=function(e){return Object(Nn.jsx)(la.a,{className:"p-2",xs:6,lg:4,children:Object(Nn.jsx)(Jc,Object(f.a)({},e))})},Jc=function(e){var t=e.header,n=e.subheader,r=e.plus,a=e.onClick;return Object(Nn.jsx)(Wc.a,{className:"settings-card",onClick:function(){return a&&a()},children:r?Object(Nn.jsx)(Wc.a.Body,{className:"d-flex justify-content-center align-items-center",children:Object(Nn.jsx)(Ae.a,{size:"2x",icon:Pe.L})}):Object(Nn.jsxs)(Wc.a.Body,{children:[Object(Nn.jsx)(Wc.a.Title,{className:"text-nowrap text-truncate",children:t}),Object(Nn.jsx)(Wc.a.Subtitle,{hidden:void 0===n,className:"small text-nowrap text-truncate",children:n})]})})},Zc=function(e){var t=e.type,n=e.children,r=["pr-4"];return r.push("warning"===t?"text-warning":"text-muted"),Object(Nn.jsx)(Mn.a.Text,{className:r.join(" "),children:n})},$c=function(e){var t=e.placeholder,n=e.disabled,r=e.beforeStaged,a=e.controlled,c=e.override,i=e.password,s=e.settingKey,o=Hc(s,ee,c),l=Rc(),u=Gc();return Object(Nn.jsx)(Mn.a.Control,{type:i?"password":"text",placeholder:null===t||void 0===t?void 0:t.toString(),disabled:n,defaultValue:a?void 0:null!==o&&void 0!==o?o:void 0,value:a&&null!==o&&void 0!==o?o:void 0,onChange:function(e){var t=e.currentTarget.value;u(t.toString());var n=r?r(t):t;l(n,s)}})},ei=function(e){var t=e.label,n=e.inline,r=e.override,c=e.disabled,i=e.settingKey,s=Rc(),o=Gc(),l=Hc(i,$.isBoolean,r);return Object(a.useEffect)((function(){return o(null!==l&&void 0!==l&&l)}),[o,l]),Object(Nn.jsx)(Mn.a.Check,{custom:!0,type:"checkbox",id:i,inline:n,label:t,onChange:function(e){var t=e.currentTarget.checked;s(t,i)},disabled:c,checked:null!==l&&void 0!==l?l:void 0})};function ti(e){return Object($.isString)(e)||Object($.isNumber)(e)||Object($.isArray)(e)}function ni(e){var t=Rc(),n=Gc(),r=e.settingKey,c=e.override,i=e.beforeStaged,s=Object(gn.a)(e,["settingKey","override","beforeStaged"]),o=Hc(r,ti,c);return Object(a.useEffect)((function(){(Object($.isString)(o)||Object($.isNull)(o))&&n(null!==o&&void 0!==o?o:"")})),Object(Nn.jsx)(_n,Object(f.a)(Object(f.a)({},s),{},{defaultValue:o,onChange:function(e){e=i?i(e):e,t(e,r)}}))}var ri=function(e){var t=e.settingKey,n=e.override,r=Object(gn.a)(e,["settingKey","override"]),a=Rc(),c=Hc(t,$.isNumber,n);return Object(Nn.jsx)(Fn,Object(f.a)({onAfterChange:function(e){a(e,t)},defaultValue:null!==c&&void 0!==c?c:void 0},r))},ai=function(e){var t=e.settingKey,n=e.override,r=Object(gn.a)(e,["settingKey","override"]),a=Rc(),c=Hc(t,$.isArray,n);return Object(Nn.jsx)(Pn,Object(f.a)({defaultValue:null!==c&&void 0!==c?c:void 0,onChange:function(e){a(e,t)}},r))},ci=function(e){var t=e.onClick,n=e.settingKey,r=Object(gn.a)(e,["onClick","settingKey"]),a=Hc(n,$.isString),c=Rc();return Object(Nn.jsx)(Be.a,Object(f.a)({onClick:function(){t&&t(c,n,null!==a&&void 0!==a?a:void 0)}},r))},ii=function(e){var t=e.category,n=Object(a.useState)("Test"),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=Object(a.useState)("primary"),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Hc("settings-".concat(t,"-ip"),$.isString),j=Hc("settings-".concat(t,"-port"),$.isNumber),b=Hc("settings-".concat(t,"-base_url"),$.isString),O=Hc("settings-".concat(t,"-apikey"),$.isString),h=Hc("settings-".concat(t,"-ssl"),$.isBoolean),f=Object(a.useCallback)((function(){if(d&&O&&null!==h){var e;e=j?"".concat(d,":").concat(j).concat(null!==b&&void 0!==b?b:""):"".concat(d).concat(null!==b&&void 0!==b?b:"");var t={protocol:h?"https":"http",url:e,params:{apikey:O}};t.url.endsWith("/")||(t.url+="/"),et.urlTest(t.protocol,t.url,t.params).then((function(e){e.status?(i("Version: ".concat(e.version)),u("success")):(i(e.error),u("danger"))}))}}),[d,j,b,O,h]);return Object(Nn.jsx)(Be.a,{onClick:f,variant:l,title:c,className:"text-truncate text-nowrap",children:c})},si=[{label:"Basic",value:"basic"},{label:"Form",value:"form"}],oi=[{label:"Socks5",value:"socks5"},{label:"HTTP(S)",value:"http"}],li=[{label:"master",value:"master"},{label:"development",value:"development"}],ui="abcdef0123456789",di="settings-auth-apikey",ji=function(e){var t,n;return null!==(t=null===(n=e.general.base_url)||void 0===n?void 0:n.slice(1))&&void 0!==t?t:""},bi=function(){var e=Object(a.useState)(!1),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=window.Bazarr.canUpdate;return Object(Nn.jsxs)(Dc,{title:"General - Bazarr (Settings)",children:[Object(Nn.jsxs)(Vc,{header:"Host",children:[Object(Nn.jsxs)(Qc,{name:"Address",children:[Object(Nn.jsx)($c,{placeholder:"0.0.0.0",settingKey:"settings-general-ip"}),Object(Nn.jsx)(Zc,{children:"Valid IPv4 address or '0.0.0.0' for all interfaces"})]}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{placeholder:6767,settingKey:"settings-general-port"})}),Object(Nn.jsxs)(Qc,{name:"Base URL",children:[Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(yr.a.Text,{children:"/"})}),Object(Nn.jsx)($c,{settingKey:"settings-general-base_url",override:ji,beforeStaged:function(e){return"/"+e}})]}),Object(Nn.jsx)(Zc,{children:"Reverse proxy support"})]})]}),Object(Nn.jsxs)(Vc,{header:"Security",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{name:"Authentication",children:Object(Nn.jsx)(ni,{clearable:!0,options:si,settingKey:"settings-auth-type",beforeStaged:function(e){return null===e?"None":e}})})}),Object(Nn.jsxs)(qc.Content,{on:function(e){return""!==e&&"None"!==e},children:[Object(Nn.jsx)(Qc,{name:"Username",children:Object(Nn.jsx)($c,{settingKey:"settings-auth-username"})}),Object(Nn.jsx)(Qc,{name:"Password",children:Object(Nn.jsx)($c,{password:!0,settingKey:"settings-auth-password"})})]})]}),Object(Nn.jsx)(Qc,{name:"API Key",children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)($c,{disabled:!0,controlled:!0,settingKey:di}),Object(Nn.jsxs)(yr.a.Append,{children:[Object(Nn.jsx)(ci,{variant:n?"success":"light",settingKey:di,onClick:function(e,t,n){n&&(function(e){var t=document.createElement("textarea");t.innerText=e,document.body.appendChild(t),t.select(),t.setSelectionRange(0,9999),document.execCommand("copy"),t.remove()}(n),function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e(!n),setTimeout((function(){return e(n)}),t)}(r,1500))},children:Object(Nn.jsx)(Ae.a,{icon:n?Pe.g:Pe.j})}),Object(Nn.jsx)(ci,{variant:"danger",settingKey:di,onClick:function(e,t){e(Array(32).fill(null).map((function(){return ui.charAt(Math.floor(Math.random()*ui.length))})).join(""),t)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.T})})]})]})})]}),Object(Nn.jsx)(Vc,{header:"Proxy",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ni,{clearable:!0,settingKey:"settings-proxy-type",options:oi,beforeStaged:function(e){return null===e?"None":e}})})}),Object(Nn.jsxs)(qc.Content,{on:function(e){return""!==e&&"None"!==e},children:[Object(Nn.jsx)(Qc,{name:"Host",children:Object(Nn.jsx)($c,{settingKey:"settings-proxy-url"})}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{settingKey:"settings-proxy-port"})}),Object(Nn.jsx)(Qc,{name:"Username",children:Object(Nn.jsx)($c,{settingKey:"settings-proxy-username"})}),Object(Nn.jsxs)(Qc,{name:"Password",children:[Object(Nn.jsx)($c,{password:!0,settingKey:"settings-proxy-password"}),Object(Nn.jsx)(Zc,{children:"You only need to enter a username and password if one is required. Leave them blank otherwise"})]}),Object(Nn.jsxs)(Qc,{name:"Ignored Addresses",children:[Object(Nn.jsx)(ai,{settingKey:"settings-proxy-exclude"}),Object(Nn.jsx)(Zc,{children:"'*.' as a wildcard for subdomains"})]})]})]})}),Object(Nn.jsxs)(Vc,{header:"Updates",hidden:!c,children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Automatic",settingKey:"settings-general-auto_update"}),Object(Nn.jsx)(Zc,{children:"Automatically download and install updates"})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ni,{options:li,settingKey:"settings-general-branch"}),Object(Nn.jsx)(Zc,{children:"Branch used by update mechanism"})]})]}),Object(Nn.jsx)(Vc,{header:"Logging",children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Debug",settingKey:"settings-general-debug"}),Object(Nn.jsx)(Zc,{children:"Debug logging should only be enabled temporarily"})]})}),Object(Nn.jsx)(Vc,{header:"Analytics",children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Enable",settingKey:"settings-analytics-enabled"}),Object(Nn.jsx)(Zc,{children:"Send anonymous usage information, nothing that can identify you. This includes information on which providers you use, what languages you search for, Bazarr, Python, Sonarr, Radarr and what OS version you are using. We will use this information to prioritize features and bug fixes. Please, keep this enabled as this is the only way we have to better understand how you use Bazarr."})]})})]})},Oi=function(e){var t=e.settingKey,n=e.options,r=yi(),a=Rc();return Object(Nn.jsx)(rr,{multiple:!0,defaultValue:r,options:n,onChange:function(e){a(e,t)}})},hi=function(e){var t=e.settingKey,n=ki(),r=Object(a.useMemo)((function(){return n.map((function(e){return{label:e.name,value:e.profileId}}))}),[n]);return Object(Nn.jsx)(ni,{clearable:!0,options:r,settingKey:t,beforeStaged:function(e){return null===e?"":e}})},fi=[{label:"Any",value:65535}];var pi=function(e){var t,n=e.update,r=Object(gn.a)(e,["update"]),c=dr(r.modalKey),i=or(),s=yi(),o=Object(a.useState)(null!==c&&void 0!==c?c:{profileId:-1,name:"",items:[],cutoff:null}),l=Object(Z.a)(o,2),u=l[0],d=l[1];Object(a.useEffect)((function(){c&&d(c)}),[c]);var j=Object(a.useMemo)((function(){var e=Object(J.a)(fi),t=u.items.map((function(e){return{label:"ID ".concat(e.id," (").concat(e.language,")"),value:e.id}}));return e.push.apply(e,Object(J.a)(t)),e}),[u.items]),b=Object(a.useCallback)((function(e,t){var n=Object(f.a)({},u);n[e]=t,d(n)}),[u]),O=Object(a.useCallback)((function(e,t){var n=Object(J.a)(u.items);t?n[e.index]=t:n.splice(e.index,1),b("items",n)}),[u.items,b]),h=Object(a.useCallback)((function(){var e=1+u.items.reduce((function(e,t){return Math.max(t.id,e)}),0);if(s.length>0){var t={id:e,language:s[0].code2,audio_exclude:"False",hi:"False",forced:"False"},n=Object(J.a)(u.items);n.push(t),b("items",n)}}),[u.items,b,s]),p=u.name.length>0&&u.items.length>0,v=Object(Nn.jsx)(Be.a,{disabled:!p,onClick:function(){i(),n(u)},children:"Save"}),x=Object(a.useMemo)((function(){return[{Header:"ID",accessor:"id"},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value,n=e.row,r=e.externalUpdate,c=t,i=n.original,o=Object(a.useMemo)((function(){return s.find((function(e){return e.code2===c}))}),[c]);return Object(Nn.jsx)("div",{style:{width:"8rem"},children:Object(Nn.jsx)(rr,{options:s,defaultValue:o,onChange:function(e){e&&(i.language=e.code2,r&&r(n,i))}})})}},{Header:"Forced",accessor:"forced",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original;return Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"".concat(a.language,"-forced"),defaultChecked:"True"===n,onChange:function(e){a.forced=e.target.checked?"True":"False",r&&r(t,a)}})}},{Header:"HI",accessor:"hi",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original;return Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"".concat(a.language,"-hi"),defaultChecked:"True"===n,onChange:function(e){a.hi=e.target.checked?"True":"False",r&&r(t,a)}})}},{Header:"Exclude Audio",accessor:"audio_exclude",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original;return Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"".concat(a.language,"-audio"),defaultChecked:"True"===n,onChange:function(e){a.audio_exclude=e.target.checked?"True":"False",r&&r(t,a)}})}},{id:"action",accessor:"id",Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Jn,{icon:Pe.Y,onClick:function(){return n&&n(t)}})}}]}),[s]);return Object(Nn.jsxs)(Or,Object(f.a)(Object(f.a)({size:"lg",title:"Languages Profile",footer:v},r),{},{children:[Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(Mn.a.Control,{type:"text",placeholder:"Name",value:null===u||void 0===u?void 0:u.name,onChange:function(e){b("name",e.target.value)}})}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(na,{responsive:!1,columns:x,data:null!==(t=null===u||void 0===u?void 0:u.items)&&void 0!==t?t:[],externalUpdate:O}),Object(Nn.jsx)(Be.a,{block:!0,variant:"light",onClick:h,children:"Add"})]}),Object(Nn.jsxs)(Qc,{name:"Cutoff",children:[Object(Nn.jsx)(_n,{clearable:!0,options:j,value:null===u||void 0===u?void 0:u.cutoff,onChange:function(e){return b("cutoff",e)}}),Object(Nn.jsx)(Zc,{children:"Ignore others if existing"})]})]}))},vi=function(e){var t=e.cutoff,n=e.item,r=e.className,c=Object(a.useMemo)((function(){var e=n.language;return"True"===n.hi?e+=":HI":"True"===n.forced&&(e+=":Forced"),e}),[n.hi,n.forced,n.language]);return Object(Nn.jsx)(Qn.a,{className:r,title:t?"Ignore others if this one is available":void 0,variant:t?"primary":"secondary",children:c})},xi=function(){var e=ki(),t=Object(a.useState)(Object(J.a)(e)),n=Object(Z.a)(t,2),r=n[0],i=n[1],s=Object(a.useMemo)((function(){return 1+r.reduce((function(e,t){return Math.max(t.profileId,e)}),0)}),[r]),o=Rc(),l=sr(),u=Object(a.useCallback)((function(e){o(e,Mc),i(e)}),[o]),d=Object(a.useCallback)((function(e){var t=Object(J.a)(r),n=t.findIndex((function(t){return t.profileId===e.profileId}));-1!==n?t[n]=e:t.push(e),u(t)}),[r,u]),j=Object(a.useCallback)((function(e,t){if(t)l("profile",t);else{var n=Object(J.a)(r);n.splice(e.index,1),u(n)}}),[u,l,r]),b=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"name"},{Header:"Languages",accessor:"items",Cell:function(e){var t=e.value,n=e.row.original.cutoff;return t.map((function(e){var t=e.id===n||65535===n;return Object(Nn.jsx)(vi,{cutoff:t,className:"mx-1",item:e},e.id)}))}},{accessor:"profileId",Cell:function(e){var t=e.row,n=e.externalUpdate,r=t.original;return Object(Nn.jsxs)(kr.a,{children:[Object(Nn.jsx)(Jn,{icon:Pe.bb,onClick:function(){n&&n(t,r)}}),Object(Nn.jsx)(Jn,{icon:Pe.Y,onClick:function(){return n&&n(t)}})]})}}]}),[]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(na,{columns:b,data:r,externalUpdate:j}),Object(Nn.jsx)(Be.a,{block:!0,variant:"light",onClick:function(){l("profile",{profileId:s,name:"",items:[],cutoff:null})},children:"Add New Profile"}),Object(Nn.jsx)(pi,{update:d,modalKey:"profile"})]})},mi=c.a.createContext([]),gi=c.a.createContext([]);function yi(){var e=Object(a.useContext)(mi),t=Hc(Tc,$.isArray);return t||e}function ki(){var e=Object(a.useContext)(gi),t=Hc(Mc,$.isArray);return t||e}var Si=function(){var e=ln(!1),t=Object(Z.a)(e,1)[0],n=ln(!0),r=Object(Z.a)(n,1)[0],a=sn(),c=Object(Z.a)(a,1)[0];return Object(Nn.jsx)(Dc,{title:"Languages - Bazarr (Settings)",children:Object(Nn.jsx)(mi.Provider,{value:r,children:Object(Nn.jsxs)(gi.Provider,{value:c,children:[Object(Nn.jsxs)(Vc,{header:"Subtitles Language",children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Single Language",settingKey:"settings-general-single_language"}),Object(Nn.jsx)(Zc,{children:"Download a single Subtitles file without adding the language code to the filename."}),Object(Nn.jsx)(Zc,{type:"warning",children:"We don't recommend enabling this option unless absolutely required (ie: media player not supporting language code in subtitles filename). Results may vary."})]}),Object(Nn.jsx)(Qc,{name:"Languages Filter",children:Object(Nn.jsx)(Oi,{settingKey:Tc,options:t})})]}),Object(Nn.jsx)(Vc,{header:"Languages Profiles",children:Object(Nn.jsx)(xi,{})}),Object(Nn.jsxs)(Vc,{header:"Default Settings",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Series",settingKey:"settings-general-serie_default_enabled"}),Object(Nn.jsx)(Zc,{children:"Apply only to Series added to Bazarr after enabling this option."})]})}),Object(Nn.jsx)(qc.Content,{indent:!0,children:Object(Nn.jsx)(Qc,{name:"Profile",children:Object(Nn.jsx)(hi,{settingKey:"settings-general-serie_default_profile"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Movies",settingKey:"settings-general-movie_default_enabled"}),Object(Nn.jsx)(Zc,{children:"Apply only to Movies added to Bazarr after enabling this option."})]})}),Object(Nn.jsx)(qc.Content,{children:Object(Nn.jsx)(Qc,{name:"Profile",children:Object(Nn.jsx)(hi,{settingKey:"settings-general-movie_default_profile"})})})]})]})]})})})},wi=function(e,t){return e.name===t.name},Ci=function(e){var t,n=e.selections,r=Object(gn.a)(e,["selections"]),i=Object(a.useMemo)((function(){return n.filter((function(e){return!e.enabled})).map((function(e){return{label:e.name,value:e}}))}),[n]),s=function(e,t){var n=Rc(),r=Lc();void 0===t&&(t=$.isEqual);var c=Object(a.useMemo)((function(){return e in r?r[e]:[]}),[e,r]);return Object(a.useCallback)((function(r){var a=Object(J.a)(c),i=a.findIndex((function(e){return t(e,r)}));-1!==i?a[i]=r:a.push(r),n(a,e)}),[t,c,e,n])}(Ec,wi),o=dr(r.modalKey),l=Object(a.useState)(null!==o&&void 0!==o?o:null),u=Object(Z.a)(l,2),d=u[0],j=u[1],b=Object(a.useCallback)((function(){return j(null!==o&&void 0!==o?o:null)}),[o]);ur(r.modalKey,b);var O=Object(a.useCallback)((function(e){if(d){var t=Object(f.a)({},d);t.url=e,j(t)}}),[d]),h=or(),p=null!==d&&null!==(null===d||void 0===d?void 0:d.url)&&0!==(null===d||void 0===d?void 0:d.url.length),v=Object(a.useMemo)((function(){return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Vn,{className:"mr-auto",disabled:!p,variant:"outline-secondary",promise:function(){return d&&d.url?$e.testNotification(d.name,d.url):null},children:"Test"}),Object(Nn.jsx)(Be.a,{hidden:null===o,variant:"danger",onClick:function(){d&&(d.enabled=!1,d.url=null,s(d)),h()},children:"Remove"}),Object(Nn.jsx)(Be.a,{disabled:!p,onClick:function(){d&&(d.enabled=!0,s(d)),h()},children:"Save"})]})}),[p,h,d,s,o]);return Object(Nn.jsx)(Or,Object(f.a)(Object(f.a)({title:"Notification",footer:v},r),{},{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)(la.a,{xs:12,children:Object(Nn.jsx)(_n,{disabled:null!==o,options:i,value:d,onChange:j,label:function(e){return e.name}})}),Object(Nn.jsx)(la.a,{hidden:null===d,children:Object(Nn.jsx)(Mn.a.Group,{className:"mt-4",children:Object(Nn.jsx)(Mn.a.Control,{as:"textarea",rows:4,placeholder:"URL",value:null!==(t=null===d||void 0===d?void 0:d.url)&&void 0!==t?t:"",onChange:function(e){var t=e.currentTarget.value;O(t)}})})})]})})}))},Ni=function(){var e=function(e,t,n){var r=_c(e,$.isArray,n),c=Lc();void 0===t&&(t=$.isEqual);var i=void 0;return e in c&&(i=c[e]),Object(a.useMemo)((function(){return void 0!==i&&r?ue(r,i,t):r}),[r,i,t])}(Ec,wi,(function(e){return e.notifications.providers})),t=sr(),n=Object(a.useMemo)((function(){return null===e||void 0===e?void 0:e.filter((function(e){return e.enabled})).map((function(e,n){return Object(Nn.jsx)(Xc,{header:e.name,onClick:function(){return t("notifications",e)}},de(n,e.name))}))}),[e,t]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsxs)(Te.a,{children:[n," ",Object(Nn.jsx)(Xc,{plus:!0,onClick:function(){return t("notifications")}})]}),Object(Nn.jsx)(Ci,{selections:null!==e&&void 0!==e?e:[],modalKey:"notifications"})]})},Ii=function(){return Object(Nn.jsxs)(Dc,{title:"Notifications - Bazarr (Settings)",children:[Object(Nn.jsxs)(Ee.a,{variant:"secondary",children:["Thanks to caronc for his work on"," ",Object(Nn.jsx)("a",{href:"https://github.com/caronc/apprise",target:"_blank",rel:"noopener noreferrer",children:"apprise"}),", the core of the Bazarr notification system."]}),Object(Nn.jsxs)(Ee.a,{variant:"secondary",children:["Please follow instructions on his"," ",Object(Nn.jsx)("a",{href:"https://github.com/caronc/apprise/wiki",target:"_blank",rel:"noopener noreferrer",children:"Wiki"})," ","to configure your notification providers."]}),Object(Nn.jsx)(Vc,{header:"Notifications",children:Object(Nn.jsx)(Ni,{})}),Object(Nn.jsx)(Vc,{header:"Options",children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Silent for Manual Actions",settingKey:"settings-general-dont_notify_manual_actions"}),Object(Nn.jsx)(Zc,{children:"Suppress notifications when manually download/upload subtitles."})]})})]})},Pi=[{key:"addic7ed",description:"Requires Anti-Captcha Provider",defaultKey:{username:"",password:""}},{key:"argenteam",description:"Spanish Subtitles Provider"},{key:"assrt",description:"Chinese Subtitles Provider",defaultKey:{token:""}},{key:"betaseries",name:"BetaSeries",description:"French / English Provider for TV Shows Only",defaultKey:{token:""},keyNameOverride:{token:"API KEY"}},{key:"bsplayer",name:"BSplayer"},{key:"greeksubs",name:"GreekSubs",description:"Greek Subtitles Provider"},{key:"greeksubtitles",name:"GreekSubtitles",description:"Greek Subtitles Provider"},{key:"hosszupuska",description:"Hungarian Subtitles Provider"},{key:"legendasdivx",name:"LegendasDivx",description:"Brazilian / Portuguese Subtitles Provider",defaultKey:{username:"",password:"",skip_wrong_fps:!1},keyNameOverride:{skip_wrong_fps:"Skip Wrong FPS"}},{key:"legendastv",name:"LegendasTV",description:"Brazilian / Portuguese Subtitles Provider",defaultKey:{username:"",password:""}},{key:"napiprojekt",description:"Polish Subtitles Provider"},{key:"napisy24",description:"Polish Subtitles Provider",message:"The provided credentials must have API access. Leave empty to use the defaults.",defaultKey:{username:"",password:""}},{key:"nekur",description:"Latvian Subtitles Provider"},{key:"opensubtitles",name:"OpenSubtitles.org",defaultKey:{username:"",password:"",vip:!1,ssl:!1,skip_wrong_fps:!1},keyNameOverride:{vip:"VIP",ssl:"Use SSL",skip_wrong_fps:"Skip Wrong FPS"}},{key:"opensubtitlescom",name:"OpenSubtitles.com",defaultKey:{username:"",password:"",use_hash:!1},keyNameOverride:{use_hash:"Use Hash"}},{key:"podnapisi"},{key:"regielive",name:"RegieLive",description:"Romanian Subtitles Provider"},{key:"soustitres",name:"Sous-Titres.eu",description:"Mostly French Subtitles Provider"},{key:"subdivx",description:"Spanish Subtitles Provider"},{key:"subssabbz",name:"Subs.sab.bz",description:"Bulgarian Subtitles Provider"},{key:"subs4free",name:"Subs4Free",description:"Greek Subtitles Provider"},{key:"subs4series",name:"Subs4Series",description:"Greek Subtitles Provider"},{key:"subscene",description:"Requires Anti-Captcha Provider",defaultKey:{username:"",password:""}},{key:"subscenter"},{key:"subsunacs",name:"Subsunacs.net",description:"Bulgarian Subtitles Provider"},{key:"subtitri",name:"subtitri.id.lv",description:"Latvian Subtitles Provider"},{key:"subtitulamos",name:"Subtitulamos.tv",description:"Spanish Subtitles Provider"},{key:"sucha",description:"Spanish Subtitles Provider"},{key:"supersubtitles"},{key:"titlovi",defaultKey:{username:"",password:""}},{key:"titrari",name:"Titrari.ro"},{key:"tusubtitulo",name:"Tusubtitulo.com",description:"Spanish / English Subtitles Provider for TV Shows"},{key:"tvsubtitles",name:"TVSubtitles"},{key:"wizdom",description:"Wizdom.xyz Subtitles Provider."},{key:"xsubs",name:"XSubs",description:"Greek Subtitles Provider",defaultKey:{username:"",password:""}},{key:"yavka",name:"Yavka.net",description:"Bulgarian Subtitles Provider"},{key:"yify",name:"YIFY Subtitles"},{key:"zimuku",description:"Chinese Subtitles Provider"}],Ai="provider-modal",Ti="settings-general-enabled_providers",Mi=function(){var e=Hc(Ti,$.isArray),t=sr(),n=Object(a.useCallback)((function(e){t(Ai,null!==e&&void 0!==e?e:null)}),[t]),r=Object(a.useMemo)((function(){return e?e.flatMap((function(e){var t=Pi.find((function(t){return t.key===e}));return t||[]})).map((function(e,t){var r;return Object(Nn.jsx)(Xc,{header:null!==(r=e.name)&&void 0!==r?r:Object($.capitalize)(e.key),subheader:e.description,onClick:function(){return n(e)}},de(t,e.name))})):[]}),[e,n]);return Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{children:[r,Object(Nn.jsx)(Xc,{plus:!0,onClick:n},"add-card")]})})},Ei=function(){var e=dr(Ai),t=Object(a.useState)({}),n=Object(Z.a)(t,2),r=n[0],i=n[1],s=Object(a.useState)(null!==e&&void 0!==e?e:null),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useCallback)((function(){return u(null!==e&&void 0!==e?e:null)}),[e]);ur(Ai,d);var j=Hc(Ti,$.isArray),b=or(),O=function(){var e=Object(a.useContext)(zc),t=Object(Z.a)(e,2)[1];return Object(a.useCallback)((function(e){t((function(t){return Object(f.a)(Object(f.a)({},t),e)}))}),[t])}(),p=Object(a.useCallback)((function(){if(e&&j){var t=j.findIndex((function(t){return t===e.key}));if(-1!==t){var n=Object(J.a)(j);n.splice(t,1),O(Object(h.a)({},Ti,n)),b()}}}),[e,j,O,b]),v=Object(a.useCallback)((function(){if(l&&j){var e=Object(f.a)({},r);if(void 0===j.find((function(e){return e===l.key}))){var t=[].concat(Object(J.a)(j),[l.key]);e[Ti]=t}O(e),b()}}),[l,j,r,b,O]),x=null!==l,m=Object(a.useMemo)((function(){return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Be.a,{hidden:!e,variant:"danger",onClick:p,children:"Delete"}),Object(Nn.jsx)(Be.a,{disabled:!x,onClick:v,children:"Save"})]})}),[x,e,p,v]),g=Object(a.useCallback)((function(e){u(e||{key:"",description:"Unknown Provider"})}),[]),y=Object(a.useMemo)((function(){return Pi.filter((function(e){return void 0===(null===j||void 0===j?void 0:j.find((function(t){return t===e.key})))})).map((function(e){var t;return{label:null!==(t=e.name)&&void 0!==t?t:Object($.capitalize)(e.key),value:e}}))}),[j]),k=Object(a.useMemo)((function(){var e;if(null===l)return null;var t=l.defaultKey,n=null!==(e=l.keyNameOverride)&&void 0!==e?e:{};if(void 0===t)return null;var r=l.key,a=[],c=[];for(var i in t){var s=t[i],o=i;o=o in n?n[o]:Object($.capitalize)(i),ee(s)?a.push(Object(Nn.jsx)(la.a,{xs:12,className:"mt-2",children:Object(Nn.jsx)($c,{password:"password"===i,placeholder:o,settingKey:"settings-".concat(r,"-").concat(i)})},i)):Object($.isBoolean)(s)&&c.push(Object(Nn.jsx)(ei,{inline:!0,label:o,settingKey:"settings-".concat(r,"-").concat(i)},i))}return Object(Nn.jsxs)(Te.a,{children:[a,Object(Nn.jsx)(la.a,{hidden:0===c.length,className:"mt-2",children:c})]})}),[l]);return Object(Nn.jsx)(Or,{title:"Provider",footer:m,modalKey:Ai,children:Object(Nn.jsx)(zc.Provider,{value:[r,i],children:Object(Nn.jsxs)(Me.a,{children:[Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(la.a,{children:Object(Nn.jsx)(_n,{disabled:null!==e,options:y,value:l,label:function(e){var t,n;return null!==(t=null===e||void 0===e?void 0:e.name)&&void 0!==t?t:Object($.capitalize)(null!==(n=null===e||void 0===e?void 0:e.key)&&void 0!==n?n:"")},onChange:g})})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(la.a,{className:"mb-2",children:Object(Nn.jsx)(Zc,{children:null===l||void 0===l?void 0:l.description})})}),k,Object(Nn.jsx)(Te.a,{hidden:void 0===(null===l||void 0===l?void 0:l.message),children:Object(Nn.jsx)(la.a,{children:Object(Nn.jsx)(Zc,{children:null===l||void 0===l?void 0:l.message})})})]})})})},Bi=function(){return Object(Nn.jsxs)(Dc,{title:"Providers - Bazarr (Settings)",children:[Object(Nn.jsx)(Vc,{header:"Providers",children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(Mi,{})})}),Object(Nn.jsx)(Ei,{})]})};var Ki=function(e){var t=e.type,n=function(e){return"sonarr"===e?"settings-general-path_mappings":"settings-general-path_mappings_movie"}(t),r=Hc(n,$.isArray),i=_c(function(e){return"sonarr"===e?Bc:Kc}(t),$.isBoolean),s=Rc(),o=Object(a.useCallback)((function(e){s(e.map((function(e){return[e.from,e.to]})),n)}),[n,s]),l=Object(a.useCallback)((function(){if(r){var e=[].concat(Object(J.a)(r),[["",""]]);s(e,n)}}),[r,n,s]),u=Object(a.useMemo)((function(){var e;return null!==(e=null===r||void 0===r?void 0:r.map((function(e){return{from:e[0],to:e[1]}})))&&void 0!==e?e:[]}),[r]),d=Object(a.useMemo)((function(){return"sonarr"===t?function(e){return We.sonarr(e)}:function(e){return We.radarr(e)}}),[t]),j=Object(a.useCallback)((function(e,t){var n=Object(J.a)(u);t?n[e.index]=t:n.splice(e.index,1),o(n)}),[u,o]),b=Object(a.useMemo)((function(){return[{Header:Object($.capitalize)(t),accessor:"from",Cell:function(e){var t=e.value,n=e.row,r=e.externalUpdate;return Object(Nn.jsx)(zn,{drop:"up",defaultValue:t,load:d,onChange:function(e){var t=Object(f.a)({},n.original);t.from=e,r&&r(n,t)}})}},{id:"arrow",className:"text-center",Cell:function(){return Object(Nn.jsx)(Ae.a,{icon:Pe.b})}},{Header:"Bazarr",accessor:"to",Cell:function(e){var t=e.value,n=e.row,r=e.externalUpdate;return Object(Nn.jsx)(zn,{drop:"up",defaultValue:t,load:function(e){return We.bazarr(e)},onChange:function(e){var t=Object(f.a)({},n.original);t.to=e,r&&r(n,t)}})}},{id:"action",accessor:"to",Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Jn,{icon:Pe.Y,onClick:function(){n&&n(t)}})}}]}),[t,d]);return i?Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(na,{emptyText:"No Mapping",responsive:!1,columns:b,data:u,externalUpdate:j}),Object(Nn.jsx)(Be.a,{block:!0,variant:"light",onClick:l,children:"Add"})]}):Object(Nn.jsx)(Zc,{children:"Path Mappings will be available after staged changes are saved"})},zi=function(){var e=Object(a.useCallback)((function(e){var t,n;return null!==(t=null===(n=e.radarr.base_url)||void 0===n?void 0:n.slice(1))&&void 0!==t?t:""}),[]);return Object(Nn.jsx)(Dc,{title:"Radarr - Bazarr (Settings)",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Vc,{header:"Use Radarr",children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Enabled",settingKey:Kc})})})}),Object(Nn.jsxs)(qc.Content,{indent:!1,children:[Object(Nn.jsxs)(Vc,{header:"Host",children:[Object(Nn.jsxs)(Qc,{name:"Address",children:[Object(Nn.jsx)($c,{settingKey:"settings-radarr-ip"}),Object(Nn.jsx)(Zc,{children:"Hostname or IPv4 Address"})]}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{settingKey:"settings-radarr-port"})}),Object(Nn.jsx)(Qc,{name:"Base URL",children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(yr.a.Text,{children:"/"})}),Object(Nn.jsx)($c,{settingKey:"settings-radarr-base_url",override:e,beforeStaged:function(e){return"/"+e}})]})}),Object(Nn.jsx)(Qc,{name:"API Key",children:Object(Nn.jsx)($c,{settingKey:"settings-radarr-apikey"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"SSL",settingKey:"settings-radarr-ssl"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ii,{category:"radarr"})})]}),Object(Nn.jsxs)(Vc,{header:"Options",children:[Object(Nn.jsx)(Qc,{name:"Minimum Score",children:Object(Nn.jsx)(ri,{settingKey:"settings-general-minimum_score_movie"})}),Object(Nn.jsxs)(Qc,{name:"Excluded Tags",children:[Object(Nn.jsx)(ai,{settingKey:"settings-radarr-excluded_tags"}),Object(Nn.jsx)(Zc,{children:"Movies with those tags (case sensitive) in Radarr will be excluded from automatic download of subtitles."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Download Only Monitored",settingKey:"settings-radarr-only_monitored"}),Object(Nn.jsx)(Zc,{children:"Automatic download of subtitles will only happen for monitored movies in Radarr."})]})]}),Object(Nn.jsx)(Vc,{header:"Path Mappings",children:Object(Nn.jsx)(Ki,{type:"radarr"})})]})]})})},Di=[{label:"1 Minute",value:1},{label:"5 Minutes",value:5},{label:"15 Minutes",value:15},{label:"1 Hour",value:60},{label:"3 Hours",value:180}],Li=[{label:"5 Minutes",value:5},{label:"15 Minutes",value:15},{label:"1 Hour",value:60},{label:"3 Hours",value:180},{label:"6 Hours",value:360}],Ri=Li,_i=[{label:"Manually",value:"Manually"},{label:"Daily",value:"Daily"},{label:"Weekly",value:"Weekly"}],Hi=[{label:"Monday",value:0},{label:"Tuesday",value:1},{label:"Wednesday",value:2},{label:"Thursday",value:3},{label:"Friday",value:4},{label:"Saturday",value:5},{label:"Sunday",value:6}],Ui=[{label:"3 Hours",value:3},{label:"6 Hours",value:6},{label:"12 Hours",value:12},{label:"24 Hours",value:24}],Fi=function(){var e=Object(a.useMemo)((function(){return Array(24).fill(null).map((function(e,t){return{label:"".concat(t,":00"),value:t}}))}),[]);return Object(Nn.jsxs)(Dc,{title:"Scheduler - Bazarr (Settings)",children:[Object(Nn.jsxs)(Vc,{header:"Sonarr/Radarr Sync",children:[Object(Nn.jsx)(Qc,{name:"Update Series List from Sonarr",children:Object(Nn.jsx)(ni,{options:Di,settingKey:"settings-sonarr-series_sync"})}),Object(Nn.jsx)(Qc,{name:"Update Episodes List from Sonarr",children:Object(Nn.jsx)(ni,{options:Li,settingKey:"settings-sonarr-episodes_sync"})}),Object(Nn.jsx)(Qc,{name:"Update Movies List from Radarr",children:Object(Nn.jsx)(ni,{options:Ri,settingKey:"settings-radarr-movies_sync"})})]}),Object(Nn.jsxs)(Vc,{header:"Disk Indexing",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{name:"Update all Episode Subtitles from Disk",children:Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-full_update",options:_i})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Day of The Week",children:Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-full_update_day",options:Hi})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Daily"===e||"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Time of The Day",children:Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-full_update_hour",options:e})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{name:"Update all Movie Subtitles from Disk",children:Object(Nn.jsx)(ni,{settingKey:"settings-radarr-full_update",options:_i})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Day of The Week",children:Object(Nn.jsx)(ni,{settingKey:"settings-radarr-full_update_day",options:Hi})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Daily"===e||"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Time of The Day",children:Object(Nn.jsx)(ni,{settingKey:"settings-radarr-full_update_hour",options:e})})})]})]}),Object(Nn.jsxs)(Vc,{header:"Search and Upgrade Subtitles",children:[Object(Nn.jsx)(Qc,{name:"Search for Missing Series Subtitles",children:Object(Nn.jsx)(ni,{settingKey:"settings-general-wanted_search_frequency",options:Ui})}),Object(Nn.jsx)(Qc,{name:"Search for Missing Movies Subtitles",children:Object(Nn.jsx)(ni,{options:Ui,settingKey:"settings-general-wanted_search_frequency_movie"})}),Object(Nn.jsx)(Qc,{name:"Upgrade Previously Downloaded Subtitles",children:Object(Nn.jsx)(ni,{options:Ui,settingKey:"settings-general-upgrade_frequency"})})]})]})},Gi=[{label:"Standard",value:"standard"},{label:"Anime",value:"anime"},{label:"Daily",value:"daily"}],Yi=function(){var e=Object(a.useCallback)((function(e){var t,n;return null!==(t=null===(n=e.sonarr.base_url)||void 0===n?void 0:n.slice(1))&&void 0!==t?t:""}),[]);return Object(Nn.jsx)(Dc,{title:"Sonarr - Bazarr (Settings)",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Vc,{header:"Use Sonarr",children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Enabled",settingKey:Bc})})})}),Object(Nn.jsxs)(qc.Content,{indent:!1,children:[Object(Nn.jsxs)(Vc,{header:"Host",children:[Object(Nn.jsxs)(Qc,{name:"Address",children:[Object(Nn.jsx)($c,{settingKey:"settings-sonarr-ip"}),Object(Nn.jsx)(Zc,{children:"Hostname or IPv4 Address"})]}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{settingKey:"settings-sonarr-port"})}),Object(Nn.jsx)(Qc,{name:"Base URL",children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(yr.a.Text,{children:"/"})}),Object(Nn.jsx)($c,{settingKey:"settings-sonarr-base_url",override:e,beforeStaged:function(e){return"/"+e}})]})}),Object(Nn.jsx)(Qc,{name:"API Key",children:Object(Nn.jsx)($c,{settingKey:"settings-sonarr-apikey"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"SSL",settingKey:"settings-sonarr-ssl"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ii,{category:"sonarr"})})]}),Object(Nn.jsxs)(Vc,{header:"Options",children:[Object(Nn.jsx)(Qc,{name:"Minimum Score",children:Object(Nn.jsx)(ri,{settingKey:"settings-general-minimum_score"})}),Object(Nn.jsxs)(Qc,{name:"Excluded Tags",children:[Object(Nn.jsx)(ai,{settingKey:"settings-sonarr-excluded_tags"}),Object(Nn.jsx)(Zc,{children:"Episodes from series with those tags (case sensitive) in Sonarr will be excluded from automatic download of subtitles."})]}),Object(Nn.jsxs)(Qc,{name:"Excluded Series Types",children:[Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-excluded_series_types",multiple:!0,options:Gi}),Object(Nn.jsx)(Zc,{children:"Episodes from series with those types in Sonarr will be excluded from automatic download of subtitles."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Download Only Monitored",settingKey:"settings-sonarr-only_monitored"}),Object(Nn.jsx)(Zc,{children:"Automatic download of subtitles will only happen for monitored episodes in Sonarr."})]})]}),Object(Nn.jsx)(Vc,{header:"Path Mappings",children:Object(Nn.jsx)(Ki,{type:"sonarr"})})]})]})})},qi=[{label:"AlongSide Media File",value:"current"},{label:"Relative Path to Media File",value:"relative"},{label:"Absolute Path",value:"absolute"}],Wi=[{label:"Anti-Captcha",value:"anti-captcha"},{label:"Death by Captcha",value:"death-by-captcha"}];function Vi(e){return"color(name=".concat(e,")")}var Qi=[{label:"White",value:Vi("white")},{label:"Light Gray",value:Vi("lightgray")},{label:"Red",value:Vi("red")},{label:"Green",value:Vi("green")},{label:"Yellow",value:Vi("yellow")},{label:"Blue",value:Vi("blue")},{label:"Magenta",value:Vi("magenta")},{label:"Cyan",value:Vi("cyan")},{label:"Black",value:Vi("black")},{label:"Dark Red",value:Vi("darkred")},{label:"Dark Green",value:Vi("darkgreen")},{label:"Dark Yellow",value:Vi("darkyellow")},{label:"Dark Blue",value:Vi("darkblue")},{label:"Dark Magenta",value:Vi("darkmagenta")},{label:"Dark Cyan",value:Vi("darkcyan")},{label:"Dark Grey",value:Vi("darkgrey")}],Xi=function(e){return function(t){var n,r;return null!==(n=null===(r=t.general.subzero_mods)||void 0===r?void 0:r.includes(e))&&void 0!==n&&n}},Ji=function(e){var t,n;return null!==(t=null===(n=e.general.subzero_mods)||void 0===n?void 0:n.find((function(e){return e.startsWith("color")})))&&void 0!==t?t:null},Zi=function(){return Object(Nn.jsxs)(Dc,{title:"Subtitles - Bazarr (Settings)",children:[Object(Nn.jsxs)(Vc,{header:"Subtitles Options",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{name:"Subtitle Folder",children:[Object(Nn.jsx)(ni,{options:qi,settingKey:"settings-general-subfolder"}),Object(Nn.jsx)(Zc,{children:"Choose the folder you wish to store/read the subtitles"})]})}),Object(Nn.jsx)(qc.Content,{on:function(e){return""!==e&&"current"!==e},children:Object(Nn.jsx)(Qc,{name:"Custom Subtitles Folder",children:Object(Nn.jsx)($c,{settingKey:"settings-general-subfolder_custom"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Upgrade Previously Downloaded Subtitles",settingKey:"settings-general-upgrade_subs"}),Object(Nn.jsx)(Zc,{children:"Schedule a task to upgrade subtitles previously downloaded by Bazarr."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ri,{settingKey:"settings-general-days_to_upgrade_subs",max:30}),Object(Nn.jsx)(Zc,{children:"Number of days to go back in history to upgrade subtitles"})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Upgrade Manually Downloaded or Translated Subtitles",settingKey:"settings-general-upgrade_manual"}),Object(Nn.jsx)(Zc,{children:"Enable or disable upgrade of manually downloaded or translated subtitles."})]})]})]})]}),Object(Nn.jsx)(Vc,{header:"Anti-Captcha Options",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ni,{clearable:!0,settingKey:"settings-general-anti_captcha_provider",beforeStaged:function(e){return void 0===e?"None":e},options:Wi}),Object(Nn.jsx)(Zc,{children:"Choose the anti-captcha provider you want to use"})]})}),Object(Nn.jsxs)(qc.Content,{eventKey:"anti-captcha",children:[Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)("a",{href:"http://getcaptchasolution.com/eixxo1rsnw",children:"Anti-Captcha.com"})}),Object(Nn.jsx)(Qc,{name:"Account Key",children:Object(Nn.jsx)($c,{settingKey:"settings-anticaptcha-anti_captcha_key"})})]}),Object(Nn.jsxs)(qc.Content,{eventKey:"death-by-captcha",children:[Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)("a",{href:"https://www.deathbycaptcha.com",children:"DeathByCaptcha.com"})}),Object(Nn.jsx)(Qc,{name:"Username",children:Object(Nn.jsx)($c,{settingKey:"settings-deathbycaptcha-username"})}),Object(Nn.jsx)(Qc,{name:"Password",children:Object(Nn.jsx)($c,{password:!0,settingKey:"settings-deathbycaptcha-password"})})]})]})}),Object(Nn.jsxs)(Vc,{header:"Performance / Optimization",children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Adaptive Searching",settingKey:"settings-general-adaptive_searching"}),Object(Nn.jsx)(Zc,{children:"When searching for subtitles, Bazarr will search less frequently to limit call to providers."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Search Enabled Providers Simultaneously",settingKey:"settings-general-multithreading"}),Object(Nn.jsx)(Zc,{children:"Search multiple providers at once (Don't choose this on low powered devices)"})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Use Embedded Subtitles",settingKey:"settings-general-use_embedded_subs"}),Object(Nn.jsx)(Zc,{children:"Use embedded subtitles in media files when determining missing ones."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Ignore Embedded PGS Subtitles",settingKey:"settings-general-ignore_pgs_subs"}),Object(Nn.jsx)(Zc,{children:"Ignores PGS Subtitles in Embedded Subtitles detection."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Ignore Embedded VobSub Subtitles",settingKey:"settings-general-ignore_vobsub_subs"}),Object(Nn.jsx)(Zc,{children:"Ignores VobSub Subtitles in Embedded Subtitles detection."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Show Only Desired Languages",settingKey:"settings-general-embedded_subs_show_desired"}),Object(Nn.jsx)(Zc,{children:"Hide embedded subtitles for languages that are not currently desired."})]})]})]})]}),Object(Nn.jsxs)(Vc,{header:"Post-Processing",children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Encode Subtitles To UTF8",settingKey:"settings-general-utf8_encode"}),Object(Nn.jsx)(Zc,{children:"Re-encode downloaded Subtitles to UTF8. Should be left enabled in most case."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Hearing Impaired",override:Xi("remove_HI"),settingKey:"subzero-remove_HI"}),Object(Nn.jsx)(Zc,{children:"Removes tags, text and characters from subtitles that are meant for hearing impaired people."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Remove Tags",override:Xi("remove_tags"),settingKey:"subzero-remove_tags"}),Object(Nn.jsx)(Zc,{children:"Removes all possible style tags from the subtitle, such as font, bold, color etc."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"OCR Fixes",override:Xi("OCR_fixed"),settingKey:"subzero-OCR_fixed"}),Object(Nn.jsx)(Zc,{children:"Fix issues that happen when a subtitle gets converted from bitmap to text through OCR."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Common Fixes",override:Xi("common"),settingKey:"subzero-common"}),Object(Nn.jsx)(Zc,{children:"Fix common and whitespace/punctuation issues in subtitles."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Fix Uppercase",override:Xi("fix_uppercase"),settingKey:"subzero-fix_uppercase"}),Object(Nn.jsx)(Zc,{children:"Tries to make subtitles that are completely uppercase readable."})]}),Object(Nn.jsxs)(Qc,{name:"Color",children:[Object(Nn.jsx)(ni,{clearable:!0,options:Qi,override:Ji,settingKey:"subzero-color"}),Object(Nn.jsx)(Zc,{children:"Adds color to your subtitles (for playback devices/software that don't ship their own color modes; only works for players that support color tags)."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Reverse RTL",override:Xi("reverse_rtl"),settingKey:"subzero-reverse_rtl"}),Object(Nn.jsx)(Zc,{children:"Reverses the punctuation in right-to-left subtitles for problematic playback devices."})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Permission (chmod)",settingKey:"settings-general-chmod_enabled"})})}),Object(Nn.jsx)(qc.Content,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)($c,{placeholder:"0777",settingKey:"settings-general-chmod"}),Object(Nn.jsx)(Zc,{children:"Must be 4 digit octal"})]})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Automatic Subtitles Synchronization",settingKey:"settings-subsync-use_subsync"}),Object(Nn.jsx)(Zc,{children:"Enable the automatic subtitles synchronization after downloading a subtitles."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Debug",settingKey:"settings-subsync-debug"}),Object(Nn.jsx)(Zc,{children:"Do not actually sync the subtitles but generate a .tar.gz file to be able to open an issue for ffsubsync. This file will reside alongside the media file."})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Series Score Threshold",settingKey:"settings-subsync-use_subsync_threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-subsync-subsync_threshold"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Movies Score Threshold",settingKey:"settings-subsync-use_subsync_movie_threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-subsync-subsync_movie_threshold"})})})]})]})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{settingKey:"settings-general-use_postprocessing",label:"Custom Post-Processing"}),Object(Nn.jsx)(Zc,{children:"Enable the post-processing execution after downloading a subtitles."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{settingKey:"settings-general-use_postprocessing_threshold",label:"Series Score Threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-general-postprocessing_threshold"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{settingKey:"settings-general-use_postprocessing_threshold_movie",label:"Movies Score Threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-general-postprocessing_threshold_movie"})})})]}),Object(Nn.jsx)(Qc,{name:"Command",children:Object(Nn.jsx)($c,{settingKey:"settings-general-postprocessing_cmd"})}),Object(Nn.jsx)(Zc,{children:"Variables you can use in your command"}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{directory}}"})," Full path of the episode file parent directory"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode}}"})," Full path of the episode file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_name}}"})," Filename of the episode without parent directory or extension"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles}}"})," Full path of the subtitles file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles_language}}"})," Language of the subtitles file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles_language_code2}}"})," 2-letter ISO-639 language code of the subtitles language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles_language_code3}}"})," 3-letter ISO-639 language code of the subtitles language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_language}}"})," Audio language of the episode file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_language_code2}}"})," 2-letter ISO-639 language code of the episode audio language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_language_code3}}"})," 3-letter ISO-639 language code of the episode audio language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{score}}"})," Score of the subtitle file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitle_id}}"})," Provider ID of the subtitle file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{series_id}}"})," Sonarr series ID (Empty if movie)"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_id}}"})," Sonarr episode ID or Radarr movie ID"]})]})]})]})]})},$i=[{label:"25",value:25},{label:"50",value:50},{label:"100",value:100},{label:"250",value:250},{label:"500",value:500},{label:"1000",value:1e3}],es=function(){return Object(Nn.jsx)(Dc,{title:"Interface - Bazarr (Settings)",children:Object(Nn.jsx)(Vc,{header:"UI",children:Object(Nn.jsx)(Qc,{name:"Page Size",children:Object(Nn.jsx)(ni,{options:$i,settingKey:me,override:function(e,t){return t.site.pageSize}})})})})},ts=function(){return ce(nn(gt)),Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/settings",children:Object(Nn.jsx)(l.b,{exact:!0,to:"/settings/general"})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/general",children:Object(Nn.jsx)(bi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/ui",children:Object(Nn.jsx)(es,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/sonarr",children:Object(Nn.jsx)(Yi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/radarr",children:Object(Nn.jsx)(zi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/languages",children:Object(Nn.jsx)(Si,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/subtitles",children:Object(Nn.jsx)(Zi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/scheduler",children:Object(Nn.jsx)(Fi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/providers",children:Object(Nn.jsx)(Bi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/notifications",children:Object(Nn.jsx)(Ii,{})}),Object(Nn.jsx)(l.c,{path:"/settings/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},ns=function(e){var t=Object.assign({},e),n=dr(t.modalKey),r=Object(a.useMemo)((function(){return null===n||void 0===n?void 0:n.split("\\n").map((function(e,t){return Object(Nn.jsx)("p",{className:"text-nowrap my-1",children:e},t)}))}),[n]);return Object(Nn.jsx)(Or,Object(f.a)(Object(f.a)({title:"Stack traceback"},t),{},{children:Object(Nn.jsx)("pre",{children:Object(Nn.jsx)("code",{className:"zmdi-language-python-alt",children:r})})}))};function rs(e){switch(e){case"DEBUG":return Pe.m;case"ERROR":return Pe.f;case"INFO":return Pe.z;case"WARNING":return Pe.r;default:return Pe.M}}var as=function(e){var t=e.logs,n=sr(),r=Object(a.useCallback)((function(e,t){return n("system-log",t)}),[n]),i=Object(a.useMemo)((function(){return[{accessor:"type",Cell:function(e){return Object(Nn.jsx)(Ae.a,{icon:rs(e.value)})}},{Header:"Message",accessor:"message"},{Header:"Time",accessor:"timestamp",className:"text-nowrap",Cell:function(e){return Object(Nn.jsx)(ha,{children:e.value})}},{accessor:"exception",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate;return Object($.isUndefined)(n)?null:Object(Nn.jsx)(Jn,{icon:Pe.C,onClick:function(){return r&&r(t,n)}})}}]}),[]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(da,{columns:i,data:t,externalUpdate:r}),Object(Nn.jsx)(ns,{size:"xl",modalKey:"system-log"})]})},cs=function(){var e=tn((function(e){return e.system.logs})),t=nn(xt);ce(t);var n=Object(a.useState)(!1),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=ae(!0),o=Object(a.useCallback)((function(){window.open("".concat(s,"bazarr.log"))}),[s]);return Object(Nn.jsx)(Yn,{state:e,children:function(n){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Logs - Bazarr (System)"})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsx)(nr.Button,{updating:e.updating,icon:Pe.T,onClick:t,children:"Refresh"}),Object(Nn.jsx)(nr.Button,{icon:Pe.p,onClick:o,children:"Download"}),Object(Nn.jsx)(nr.Button,{updating:c,icon:Pe.Y,onClick:function(){i(!0),$e.deleteLogs().finally((function(){i(!1),t()}))},children:"Empty"})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(as,{logs:n})})]})}})},is=function(e){var t=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"name"},{Header:"Status",accessor:"status"},{Header:"Next Retry",accessor:"retry"}]}),[]);return Object(Nn.jsx)(na,{columns:t,data:e.providers})},ss=function(){var e=pn(),t=Object(Z.a)(e,2),n=t[0],r=t[1];return ce(r),Object(Nn.jsx)(Yn,{state:n,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Providers - Bazarr (System)"})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsx)(nr.Button,{updating:n.updating,icon:Pe.T,onClick:r,children:"Refresh"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Y,promise:function(){return Xe.reset()},onSuccess:r,children:"Reset"})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(is,{providers:e})})]})}})},os="mr-2",ls=function(e){var t=e.name,n=e.body,r=e.date,c=e.prerelease,i=e.current,s=Object(a.useMemo)((function(){return n.map((function(e){return e.replace(/(\s\[.*?\])\(.*?\)/,"")}))}),[n]);return Object(Nn.jsxs)(Wc.a,{className:"mb-4 mx-3 d-flex flex-grow-1",children:[Object(Nn.jsxs)(Wc.a.Header,{children:[Object(Nn.jsx)("span",{className:os,children:t}),Object(Nn.jsx)(Qn.a,{className:os,variant:"info",children:r}),Object(Nn.jsx)(Qn.a,{className:os,variant:c?"danger":"success",children:c?"Development":"Master"}),Object(Nn.jsx)(Qn.a,{className:os,hidden:!i,variant:"primary",children:"Installed"})]}),Object(Nn.jsx)(Wc.a.Body,{children:Object(Nn.jsxs)(Wc.a.Text,{children:["From newest to oldest:",s.map((function(e,t){return Object(Nn.jsx)("li",{children:e},t)}))]})})]})},us=function(){var e=tn((function(e){return e.system.releases}));return ce(nn(mt)),Object(Nn.jsx)(Yn,{state:e,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,className:"px-5 py-4 bg-light",children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Releases - Bazarr (System)"})}),Object(Nn.jsx)(Te.a,{children:e.map((function(e,t){return Object(Nn.jsx)(la.a,{xs:12,children:Object(Nn.jsx)(ls,Object(f.a)({},e))},de(t,e.date))}))})]})}})},ds=n(172);function js(e){var t=e.title,n=e.children;return Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)(la.a,{sm:4,children:Object(Nn.jsx)("b",{children:t})}),Object(Nn.jsx)(la.a,{children:n})]})}function bs(e){var t=e.icon,n=e.link,r=e.children;return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Ae.a,{icon:t,style:{width:"2rem"}}),Object(Nn.jsx)("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:r})]})}var Os=function(e){var t=e.title,n=e.children;return Object(Nn.jsxs)(Me.a,{className:"py-3",children:[Object(Nn.jsx)("h4",{children:t}),Object(Nn.jsx)("hr",{}),n]})},hs=function(){var e=tn((function(e){return e.system.status.data}));return ce(nn(ft)),Object(Nn.jsxs)(Me.a,{className:"p-5",children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Status - Bazarr (System)"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsxs)(Os,{title:"About",children:[Object(Nn.jsx)(js,{title:"Bazarr Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.bazarr_version})}),Object(Nn.jsx)(js,{title:"Sonarr Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.sonarr_version})}),Object(Nn.jsx)(js,{title:"Radarr Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.radarr_version})}),Object(Nn.jsx)(js,{title:"Operating System",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.operating_system})}),Object(Nn.jsx)(js,{title:"Python Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.python_version})}),Object(Nn.jsx)(js,{title:"Bazarr Directory",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.bazarr_directory})}),Object(Nn.jsx)(js,{title:"Bazarr Config Directory",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.bazarr_config_directory})})]})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsxs)(Os,{title:"More Info",children:[Object(Nn.jsx)(js,{title:"Home Page",children:Object(Nn.jsx)(bs,{icon:Pe.J,link:"https://www.bazarr.media/",children:"Bazarr Website"})}),Object(Nn.jsx)(js,{title:"Source",children:Object(Nn.jsx)(bs,{icon:ds.b,link:"https://github.com/morpheus65535/bazarr",children:"Bazarr on Github"})}),Object(Nn.jsx)(js,{title:"Wiki",children:Object(Nn.jsx)(bs,{icon:ds.c,link:"https://github.com/morpheus65535/bazarr/wiki",children:"Bazarr Wiki"})}),Object(Nn.jsx)(js,{title:"Discord",children:Object(Nn.jsx)(bs,{icon:ds.a,link:"https://discord.gg/MH2e2eb",children:"Bazarr on Discord"})})]})})]})},fs=function(e){var t=e.tasks,n=nn(vt),r=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"name",className:"text-nowrap"},{Header:"Interval",accessor:"interval",className:"text-nowrap"},{Header:"Next Execution",accessor:"next_run_in",className:"text-nowrap"},{accessor:"job_running",Cell:function(e){var t=e.row.original.job_id;return Object(Nn.jsx)(Vn,{promise:function(){return $e.runTask(t)},onSuccess:function(){return n(t)},variant:"light",size:"sm",disabled:e.value,children:Object(Nn.jsx)(Ae.a,{icon:Pe.T,spin:e.value})})}}]}),[n]);return Object(Nn.jsx)(na,{columns:r,data:t})},ps=function(){var e=tn((function(e){return e.system.tasks})),t=nn(pt);return ce(t,1e4),Object(Nn.jsx)(Yn,{state:e,children:function(n){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Tasks - Bazarr (System)"})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.Button,{updating:e.updating,icon:Pe.T,onClick:t,children:"Refresh"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(fs,{tasks:n})})]})}})},vs=function(){return Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/system/tasks",children:Object(Nn.jsx)(ps,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/status",children:Object(Nn.jsx)(hs,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/providers",children:Object(Nn.jsx)(ss,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/logs",children:Object(Nn.jsx)(cs,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/releases",children:Object(Nn.jsx)(us,{})}),Object(Nn.jsx)(l.c,{path:"/system/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},xs=function(e){var t=e.type,n=e.columns,r=e.state,c=e.update,i=e.loader,s=e.searchAll,o=Object($.capitalize)(t),l=Object(a.useMemo)((function(){return le(r.data)}),[r.data]),u=Object(a.useCallback)((function(e,t){c(t)}),[c]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:["Wanted ",o," - Bazarr"]})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.AsyncButton,{disabled:0===l.length,promise:s,onSuccess:c,icon:Pe.Q,children:"Search All"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(da,{async:!0,asyncState:r,asyncId:oe,asyncLoader:i,emptyText:"No Missing ".concat(o," Subtitles"),columns:n,externalUpdate:u,data:l})})]})},ms=function(){var e=function(){var e=nn(Dt);return an(tn((function(e){return e.movie.wantedMovieList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=nn(zt),i=Object(a.useCallback)((function(){return Qe.action({action:"search-wanted"})}),[]),s=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"title",Cell:function(e){var t="/movies/".concat(e.row.original.radarrId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Missing",accessor:"missing_subtitles",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original,c=a.hearing_impaired,i=a.radarrId;return n.map((function(e,n){return Object(Nn.jsxs)(Vn,{as:Qn.a,className:"mx-1 mr-2",variant:"secondary",promise:function(){return Qe.downloadSubtitles(i,{language:e.code2,hi:c,forced:!1})},onSuccess:function(){return r&&r(t,i)},children:[Object(Nn.jsx)(fa,{className:"pr-1",text:e}),Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.Q})]},de(n,e.code2))}))}}]}),[]);return Object(Nn.jsx)(xs,{type:"movies",columns:s,state:n,update:r,loader:c,searchAll:i})},gs=function(){var e=function(){var e=nn(Xt);return an(tn((function(e){return e.series.wantedEpisodesList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=nn(Qt),i=Object(a.useCallback)((function(){return Je.action({action:"search-wanted"})}),[]),s=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"seriesTitle",Cell:function(e){var t="/series/".concat(e.row.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Episode",accessor:"episode_number"},{accessor:"episodeTitle"},{Header:"Missing",accessor:"missing_subtitles",Cell:function(e){var t=e.row,n=e.externalUpdate,r=e.value,a=t.original,c=a.hearing_impaired,i=a.sonarrSeriesId,s=a.sonarrEpisodeId;return r.map((function(e,r){return Object(Nn.jsxs)(Vn,{as:Qn.a,className:"mx-1 mr-2",variant:"secondary",promise:function(){return qe.downloadSubtitles(i,s,{language:e.code2,hi:c,forced:!1})},onSuccess:function(){return n&&n(t,s)},children:[Object(Nn.jsx)(fa,{className:"pr-1",text:e}),Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.Q})]},de(r,e.code2))}))}}]}),[]);return Object(Nn.jsx)(xs,{type:"series",columns:s,state:n,update:r,loader:c,searchAll:i})},ys=function(){var e=xn(),t=mn();return Object(Nn.jsxs)(l.e,{children:[e&&Object(Nn.jsx)(l.c,{exact:!0,path:"/wanted/series",children:Object(Nn.jsx)(gs,{})}),t&&Object(Nn.jsx)(l.c,{exact:!0,path:"/wanted/movies",children:Object(Nn.jsx)(ms,{})}),Object(Nn.jsx)(l.c,{path:"/wanted/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},ks=function(e){var t=e.className,n=xn(),r=mn(),c=Object(a.useMemo)((function(){return n?"/series":r?"/movies":"/settings"}),[n,r]),i=Object(l.h)();return Object(a.useEffect)((function(){be()}),[i.location]),Object(Nn.jsx)("div",{className:t,children:Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/",children:Object(Nn.jsx)(l.b,{exact:!0,to:c})}),n&&Object(Nn.jsx)(l.c,{path:"/series",children:Object(Nn.jsx)(Ac,{})}),r&&Object(Nn.jsx)(l.c,{path:"/movies",children:Object(Nn.jsx)(kc,{})}),Object(Nn.jsx)(l.c,{path:"/wanted",children:Object(Nn.jsx)(ys,{})}),Object(Nn.jsx)(l.c,{path:"/history",children:Object(Nn.jsx)(uc,{})}),Object(Nn.jsx)(l.c,{path:"/blacklist",children:Object(Nn.jsx)(qa,{})}),Object(Nn.jsx)(l.c,{path:"/settings",children:Object(Nn.jsx)(ts,{})}),Object(Nn.jsx)(l.c,{path:"/system",children:Object(Nn.jsx)(vs,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:Ra,children:Object(Nn.jsx)(_a,{})}),Object(Nn.jsx)(l.c,{path:"*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})})},Ss=c.a.createContext((function(){})),ws=function(e){var t=e.children;return Object(Nn.jsx)(Me.a,{className:"my-3",children:Object(Nn.jsxs)(Ee.a,{className:"d-flex flex-nowrap justify-content-between align-items-center",variant:"danger",children:[Object(Nn.jsxs)("div",{children:[Object(Nn.jsx)(Ae.a,{className:"mr-2",icon:Pe.s}),Object(Nn.jsx)("span",{children:t})]}),Object(Nn.jsx)(Be.a,{variant:"outline-danger",onClick:je,children:"Reload"})]})})},Cs=function(){var e=nn(kt),t=tn((function(e){return e.site})),n=t.initialized,r=t.auth,c=vn("has-update",10),i=window.Bazarr.hasUpdate;Object(a.useEffect)((function(){n&&i&&c({type:"info",message:"A new version of Bazarr is ready, restart is required"})}),[n,i,c]),Object(a.useEffect)((function(){e()}),[e]);var s=Object(a.useState)(!1),o=Object(Z.a)(s,2),u=o[0],d=o[1],j=Object(a.useCallback)((function(){return d(!u)}),[u]);return r?"boolean"===typeof n&&!1===n?Object(Nn.jsx)(Oa,{children:Object(Nn.jsx)("span",{children:"Please wait"})}):"string"===typeof n?Object(Nn.jsx)(ws,{children:n}):Object(Nn.jsxs)(Ss.Provider,{value:j,children:[Object(Nn.jsx)(Te.a,{noGutters:!0,className:"header-container",children:Object(Nn.jsx)(Ka,{})}),Object(Nn.jsxs)(Te.a,{noGutters:!0,className:"flex-nowrap",children:[Object(Nn.jsx)(Ta,{open:u}),Object(Nn.jsx)(br,{children:Object(Nn.jsx)(ks,{className:"d-flex flex-row flex-grow-1 main-router"})})]}),Object(Nn.jsx)(La,{})]}):Object(Nn.jsx)(l.b,{to:"/login"})},Ns=(n(474),function(){var e=Object(a.useState)(""),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=Object(a.useState)(""),i=Object(Z.a)(c,2),s=i[0],o=i[1],u=Object(a.useState)(""),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(!1),h=Object(Z.a)(O,2),f=h[0],p=h[1],v=Object(a.useCallback)((function(e){b(e),setTimeout((function(){return b("")}),2e3)}),[]),x=nn(Nt),m=tn((function(e){return e.site.auth})),g=Object(a.useCallback)((function(){p(!1),v("Login Failed")}),[v]);return m?Object(Nn.jsx)(l.b,{to:"/"}):Object(Nn.jsx)("div",{className:"d-flex bg-light vh-100 justify-content-center align-items-center",children:Object(Nn.jsx)(Wc.a,{className:"auth-card shadow",children:Object(Nn.jsxs)(Mn.a,{onSubmit:function(e){e.preventDefault(),f||(p(!0),$e.login(n,s).then(x).catch(g))},children:[Object(Nn.jsxs)(Wc.a.Body,{children:[Object(Nn.jsx)(Mn.a.Group,{className:"mb-5 d-flex justify-content-center",children:Object(Nn.jsx)(pa.a,{width:"64",height:"64",src:"data:image/png;base64,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"})}),Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Mn.a.Control,{disabled:f,name:"username",type:"text",placeholder:"Username",required:!0,onChange:function(e){return r(e.currentTarget.value)}})}),Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Mn.a.Control,{disabled:f,name:"password",type:"password",placeholder:"Password",required:!0,onChange:function(e){return o(e.currentTarget.value)}})}),Object(Nn.jsx)(ga.a,{in:0!==j.length,children:Object(Nn.jsx)("div",{children:Object(Nn.jsx)(Ee.a,{variant:"danger",className:"m-0",children:j})})})]}),Object(Nn.jsx)(Wc.a.Footer,{children:Object(Nn.jsx)(Be.a,{type:"submit",disabled:f,block:!0,children:f?Object(Nn.jsx)(Cn.a,{size:"sm",animation:"border"}):"LOGIN"})})]})})})}),Is=function(){var e=ae();return Object(Nn.jsx)(u.a,{basename:e,children:Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/login",children:Object(Nn.jsx)(Ns,{})}),Object(Nn.jsx)(l.c,{path:"/",children:Object(Nn.jsx)(Cs,{})})]})})};s.a.render(Object(Nn.jsx)(o.a,{store:Ie,children:Object(Nn.jsx)(Is,{})}),document.getElementById("root"))}},[[475,1,2]]]); -//# sourceMappingURL=main.fb44016a.chunk.js.map \ No newline at end of file +(this.webpackJsonpbazarr=this.webpackJsonpbazarr||[]).push([[0],{303:function(e,t,n){},323:function(e,t,n){},325:function(e,t,n){},336:function(e,t,n){},337:function(e,t,n){},340:function(e,t,n){},341:function(e,t,n){},342:function(e,t,n){},473:function(e,t,n){},474:function(e,t,n){},475:function(e,t,n){"use strict";n.r(t);n(291);var r,a=n(0),c=n.n(a),i=n(30),s=n.n(i),o=n(90),l=n(34),u=n(28),d=n(95),j=(n(300),n(252)),b=n.n(j),O=n(253),h=n(23),f=n(3),p=n(497),v="UPDATE_PROVIDER_LIST",x="UPDATE_ALL_LANGUAGES_LIST",m="UPDATE_LANGUAGES_PROFILE_LIST",g="UPDATE_SYSTEM_STATUS",y="UPDATE_SYSTEM_TASKS",k="UPDATE_SYSTEM_LOGS",S="SYSTEM_UPDATE_RELEASES",w="UPDATE_SYSTEM_SETTINGS",C="SYSTEM_RUN_TASK",N="SERIES_UPDATE_WANTED_RANGE",I="UPDATE_SERIES_WANTED_LIST",P="UPDATE_SERIES_EPISODE_LIST",A="UPDATE_SERIES_HISTORY_LIST",T="UPDATE_SEIRES_INFO",M="SERIES_UPDATE_RANGE",E="UPDATE_SERIES_BLACKLIST",B="MOVIES_UPDATE_WANTED_RANGE",K="UPDATE_MOVIE_WANTED_LIST",z="UPDATE_MOVIE_HISTORY_LIST",D="UPDATE_MOVIE_INFO",L="MOVIES_UPDATE_RANGE",R="UPDATE_MOVIES_BLACKLIST",_="SITE_AUTH_SUCCESS",H="SITE_NEED_AUTH",U="SITE_SYSTEM_INITIALIZED",F="SITE_INITIALIZE_FAILED",G="SITE_SAVE_LOCALSTORAGE",Y="SITE_NOTIFICATIONS_ADD",q="SITE_NOTIFICATIONS_REMOVE",W="SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP",V="SITE_SIDEBAR_UPDATE",Q="SITE_BADGE_UPDATE",X="SITE_OFFLINE_UPDATE",J=n(21),Z=n(6),$=n(15);function ee(e){return Object($.isString)(e)||Object($.isNumber)(e)}function te(e){return Object($.isNull)(e)||Object($.isUndefined)(e)}function ne(e){return!te(e)}function re(e){return"radarrId"in e}function ae(){var e,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=null!==(e=window.Bazarr.baseUrl)&&void 0!==e?e:"/";return t&&!n.endsWith("/")&&(n+="/"),n}function ce(e,t){Object(a.useEffect)((function(){e();var n=null;return void 0!==t&&(n=setInterval(e,t)),function(){null!==n&&clearInterval(n)}}),[e,t])}function ie(e,t){return function(e,t,n,r){var c=Object(a.useState)(e),i=Object(Z.a)(c,2)[1];Object(a.useEffect)((function(){i((function(a){return a!==e&&(e!==t?r&&r():n&&n()),e}))}),[e,t,r,n])}(e.updating,!0,void 0,t)}function se(e,t,n){t({updating:!0,data:n}),e.then((function(e){t({updating:!1,data:e})})).catch((function(e){t({updating:!1,error:e,data:n})}))}function oe(e){return re(e)?e.radarrId:"sonarrEpisodeId"in e?e.sonarrEpisodeId:function(e){return"episodeFileCount"in e}(e)?e.sonarrSeriesId:-1}function le(e){var t=e.items;return e.order.flatMap((function(e){return null!==e&&e in t?[t[e]]:[]}))}function ue(e,t,n){var r=Object(J.a)(e);return t.filter((function(e){return!te(e)})).forEach((function(e){var t=r.findIndex((function(t,r){return!te(t)&&n(t,e)}));-1!==t?r[t]=e:r.push(e)})),r}function de(){for(var e=arguments.length,t=new Array(e),n=0;n0?(r=O).push.apply(r,Object(J.a)(Array(h).fill(null))):h<0&&(O=Array(s).fill(null),b=Object(f.a)({},d)),"number"===typeof l&&"number"===typeof u?(a=O).splice.apply(a,[l,u].concat(Object(J.a)(j))):void 0===l&&(O=j),{updating:!1,data:{items:b,order:O}}}var fe,pe,ve=Object(p.a)((r={},Object(h.a)(r,K,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedMovieList:he(t,e.wantedMovieList,"radarrId")})})),Object(h.a)(r,B,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedMovieList:he(t,e.wantedMovieList,"radarrId")})})),Object(h.a)(r,z,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{historyList:Oe(t,e.historyList.data)})})),Object(h.a)(r,D,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{movieList:he(t,e.movieList,"radarrId")})})),Object(h.a)(r,L,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{movieList:he(t,e.movieList,"radarrId")})})),Object(h.a)(r,R,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{blacklist:Oe(t,e.blacklist.data)})})),r),{movieList:{updating:!0,data:{items:{},order:[]}},wantedMovieList:{updating:!0,data:{items:{},order:[]}},historyList:{updating:!0,data:[]},blacklist:{updating:!0,data:[]}}),xe=Object(p.a)((fe={},Object(h.a)(fe,I,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedEpisodesList:he(t,e.wantedEpisodesList,"sonarrEpisodeId")})})),Object(h.a)(fe,N,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{wantedEpisodesList:he(t,e.wantedEpisodesList,"sonarrEpisodeId")})})),Object(h.a)(fe,P,(function(e,t){var n=Oe(t,[]),r=n.updating,a=n.error,c=n.data,i=Object(f.a)({},e.episodeList.data);c.length>0&&(i[c[0].sonarrSeriesId]=c);return Object(f.a)(Object(f.a)({},e),{},{episodeList:{updating:r,error:a,data:i}})})),Object(h.a)(fe,A,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{historyList:Oe(t,e.historyList.data)})})),Object(h.a)(fe,T,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{seriesList:he(t,e.seriesList,"sonarrSeriesId")})})),Object(h.a)(fe,M,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{seriesList:he(t,e.seriesList,"sonarrSeriesId")})})),Object(h.a)(fe,E,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{blacklist:Oe(t,e.blacklist.data)})})),fe),{seriesList:{updating:!0,data:{items:{},order:[]}},wantedEpisodesList:{updating:!0,data:{items:{},order:[]}},episodeList:{updating:!0,data:{}},historyList:{updating:!0,data:[]},blacklist:{updating:!0,data:[]}}),me="storage-ui-pageSize",ge={get pageSize(){var e;return parseInt(null!==(e=localStorage.getItem(me))&&void 0!==e?e:"50")},set pageSize(e){localStorage.setItem(me,e.toString())}};function ye(){return{pageSize:ge.pageSize}}var ke,Se=Object(p.a)((pe={},Object(h.a)(pe,H,(function(e){return Object(f.a)(Object(f.a)({},e),{},{auth:!1})})),Object(h.a)(pe,_,(function(e){return Object(f.a)(Object(f.a)({},e),{},{auth:!0})})),Object(h.a)(pe,U,(function(e){return Object(f.a)(Object(f.a)({},e),{},{initialized:!0})})),Object(h.a)(pe,F,(function(e){return Object(f.a)(Object(f.a)({},e),{},{initialized:"An Error Occurred When Initializing Bazarr UI"})})),Object(h.a)(pe,G,(function(e,t){var n=t.payload;for(var r in n){var a=n[r];localStorage.setItem(r,a)}return Object(f.a)(Object(f.a)({},e),ye())})),Object(h.a)(pe,Y,(function(e,t){var n=[].concat(Object(J.a)(e.notifications.filter((function(e){return e.id!==t.payload.id}))),[t.payload]);return Object(f.a)(Object(f.a)({},e),{},{notifications:n})})),Object(h.a)(pe,q,(function(e,t){var n=e.notifications.filter((function(e){return e.id!==t.payload}));return Object(f.a)(Object(f.a)({},e),{},{notifications:n})})),Object(h.a)(pe,W,(function(e,t){var n=e.notifications.filter((function(e){return e.timestamp!==t.payload}));return Object(f.a)(Object(f.a)({},e),{},{notifications:n})})),Object(h.a)(pe,V,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{sidebar:t.payload})})),Object(h.a)(pe,Q,{next:function(e,t){var n=t.payload.item;return n&&!0!==t.error?Object(f.a)(Object(f.a)({},e),{},{badges:n}):e},throw:function(e){return e}}),Object(h.a)(pe,X,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{offline:t.payload})})),pe),Object(f.a)({initialized:!1,auth:!0,pageSize:50,notifications:[],sidebar:"",badges:{movies:0,episodes:0,providers:0},offline:!1},ye())),we=Object(p.a)((ke={},Object(h.a)(ke,x,(function(e,t){var n=Oe(t,[]),r=Object(f.a)(Object(f.a)({},n),{},{data:n.data.filter((function(e){return e.enabled}))});return Object(f.a)(Object(f.a)({},e),{},{languages:n,enabledLanguage:r})})),Object(h.a)(ke,m,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{languagesProfiles:Oe(t,[])})})),Object(h.a)(ke,g,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{status:Oe(t,e.status.data)})})),Object(h.a)(ke,y,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{tasks:Oe(t,e.tasks.data)})})),Object(h.a)(ke,C,(function(e,t){var n=t.payload,r=e.tasks,a=Object(J.a)(r.data),c=a.findIndex((function(e){return e.job_id===n}));return-1!==c&&(a[c].job_running=!0),Object(f.a)(Object(f.a)({},e),{},{tasks:Object(f.a)(Object(f.a)({},r),{},{data:a})})})),Object(h.a)(ke,v,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{providers:Oe(t,e.providers.data)})})),Object(h.a)(ke,k,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{logs:Oe(t,e.logs.data)})})),Object(h.a)(ke,S,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{releases:Oe(t,e.releases.data)})})),Object(h.a)(ke,w,(function(e,t){return Object(f.a)(Object(f.a)({},e),{},{settings:Oe(t,e.settings.data)})})),ke),{languages:{updating:!0,data:[]},enabledLanguage:{updating:!0,data:[]},languagesProfiles:{updating:!0,data:[]},status:{updating:!0,data:void 0},tasks:{updating:!0,data:[]},providers:{updating:!0,data:[]},logs:{updating:!0,data:[]},releases:{updating:!0,data:[]},settings:{updating:!0,data:void 0}}),Ce=Object(d.c)({system:we,series:xe,movie:ve,site:Se}),Ne=[b.a,O.a];var Ie=Object(d.d)(Ce,d.a.apply(void 0,Ne)),Pe=(n(303),n(7)),Ae=n(12),Te=n(485),Me=n(482),Ee=n(483),Be=n(257),Ke=n(42),ze=n(43),De=n(129),Le=n.n(De),Re=n(10),_e=n.n(Re),He=n(14),Ue=new(function(){function e(){Object(Ke.a)(this,e)}return Object(ze.a)(e,[{key:"get",value:function(e,t){return tt.axios.get("/badges".concat(e),{params:t})}},{key:"all",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("").then((function(t){e(t.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()}]),e}()),Fe=n(51),Ge=n(53),Ye=function(){function e(t){Object(Ke.a)(this,e),this.prefix=void 0,this.prefix=t}return Object(ze.a)(e,[{key:"createFormdata",value:function(e){if(e){var t=function(){var t=new FormData,n=function(n){var r=e[n];r instanceof Array?r.length>0?r.forEach((function(e){return t.append(n,e)})):t.append(n,""):t.append(n,e[n])};for(var r in e)n(r);return{v:t}}();return"object"===typeof t?t.v:void 0}}},{key:"get",value:function(e,t){return tt.axios.get(this.prefix+e,{params:t})}},{key:"post",value:function(e,t,n){var r=this.createFormdata(t);return tt.axios.post(this.prefix+e,r,{params:n})}},{key:"patch",value:function(e,t,n){var r=this.createFormdata(t);return tt.axios.patch(this.prefix+e,r,{params:n})}},{key:"delete",value:function(e,t,n){var r=this.createFormdata(t);return tt.axios.delete(this.prefix+e,{params:n,data:r})}}]),e}(),qe=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/episodes")}return Object(ze.a)(n,[{key:"bySeriesId",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{seriesid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"wanted",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("/wanted",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"wantedBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/wanted",{episodeid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"byEpisodeId",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{episodeid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"history",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/history",{episodeid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.patch("/subtitles",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"uploadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.post("/subtitles",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"deleteSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.delete("/subtitles",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"blacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/blacklist").then((function(t){e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"addBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.post("/blacklist",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"deleteBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.delete("/blacklist",n,{all:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),n}(Ye)),We=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/files")}return Object(ze.a)(n,[{key:"browse",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get(t,{path:n}).then((function(t){return e(t.data)})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"bazarr",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.browse("",t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"sonarr",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.browse("/sonarr",t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"radarr",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.browse("/radarr",t));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()}]),n}(Ye)),Ve=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/history")}return Object(ze.a)(n,[{key:"stats",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r,a){var c=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,i){c.get("/stats",{timeframe:t,action:n,provider:r,language:a}).then((function(t){return e(t.data)})).catch(i)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r,a){return e.apply(this,arguments)}}()}]),n}(Ye)),Qe=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/movies")}return Object(ze.a)(n,[{key:"blacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/blacklist").then((function(t){e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"addBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/blacklist",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"deleteBlacklist",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.delete("/blacklist",n,{all:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"movies",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{radarrid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"moviesBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"modify",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("",{radarrid:t.id,profileid:t.profileid}).then((function(){return e()})).catch((function(e){return r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"wanted",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("/wanted",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"wantedBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/wanted",{radarrid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"history",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/history",{radarrid:t}).then((function(t){e(t.data.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"action",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.patch("",t).then((function(){return e()})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.patch("/subtitles",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"uploadSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/subtitles",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"deleteSubtitles",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.delete("/subtitles",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),n}(Ye)),Xe=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/providers")}return Object(ze.a)(n,[{key:"providers",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("").then((function(t){e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"reset",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.post("",{action:"reset"}).then((function(){return e()})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"movies",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/movies",{radarrid:t}).then((function(t){return e(t.data.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadMovieSubtitle",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/movies",n,{radarrid:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"episodes",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/episodes",{episodeid:t}).then((function(t){return e(t.data.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadEpisodeSubtitle",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n,r){var a=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,c){a.post("/episodes",r,{seriesid:t,episodeid:n}).then((function(){return e()})).catch(c)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()}]),n}(Ye)),Je=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/series")}return Object(ze.a)(n,[{key:"series",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("",{seriesid:t}).then((function(t){e(t.data)})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"seriesBy",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.get("",{start:t,length:n}).then((function(t){e(t.data)})).catch((function(e){a(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"modify",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("",{seriesid:t.id,profileid:t.profileid}).then((function(){return e()})).catch((function(e){return r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"action",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.patch("",t).then((function(){return e()})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}]),n}(Ye)),Ze=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/subtitles")}return Object(ze.a)(n,[{key:"info",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/info",{filenames:t}).then((function(t){return e(t.data.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"modify",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.patch("",n,{action:t}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}]),n}(Ye)),$e=new(function(e){Object(Fe.a)(n,e);var t=Object(Ge.a)(n);function n(){return Object(Ke.a)(this,n),t.call(this,"/system")}return Object(ze.a)(n,[{key:"performAction",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("",void 0,{action:t}).then(e).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"login",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.post("/account",{username:t,password:n},{action:"login"}).then(e).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"logout",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.post("/account",void 0,{action:"logout"}).then(e).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"shutdown",value:function(){var e=Object(He.a)(_e.a.mark((function e(){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.performAction("shutdown"));case 1:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"restart",value:function(){var e=Object(He.a)(_e.a.mark((function e(){return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.performAction("restart"));case 1:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"settings",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/settings").then((function(t){e(t.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"setSettings",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("/settings",t).then((function(t){e()})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"languages",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/languages").then((function(t){e(t.data)})).catch((function(e){n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"languagesProfileList",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/languages/profiles").then((function(t){return e(t.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"status",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/status").then((function(t){e(t.data.data)})).catch((function(e){n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"logs",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/logs").then((function(t){return e(t.data.data)})).catch((function(e){return n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"releases",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/releases").then((function(t){return e(t.data.data)})).catch(n)})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"deleteLogs",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.delete("/logs").then((function(){return e()})).catch((function(e){return n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"getTasks",value:function(){var e=Object(He.a)(_e.a.mark((function e(){var t=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){t.get("/tasks").then((function(t){e(t.data.data)})).catch((function(e){n(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"runTask",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.post("/tasks",{taskid:t}).then((function(){e()})).catch((function(e){r(e)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},{key:"testNotification",value:function(){var e=Object(He.a)(_e.a.mark((function e(t,n){var r=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){r.patch("/notifications",{protocol:t,path:n}).then((function(){return e()})).catch(a)})));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"search",value:function(){var e=Object(He.a)(_e.a.mark((function e(t){var n=this;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){n.get("/searches",{query:t}).then((function(t){return e(t.data)})).catch(r)})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}]),n}(Ye)),et=new(function(){function e(){Object(Ke.a)(this,e),this.axios=void 0;var t="/"===window.Bazarr.baseUrl?"/":"".concat(window.Bazarr.baseUrl,"/");this.recreateAxios(t,window.Bazarr.apiKey)}return Object(ze.a)(e,[{key:"recreateAxios",value:function(e,t){this.axios=Le.a.create({baseURL:e}),this.axios.defaults.headers.post["Content-Type"]="application/json",this.axios.defaults.headers.common["x-api-key"]=t}},{key:"urlTest",value:function(e,t,n){var r=this;return new Promise((function(a,c){r.axios.get("test/".concat(e,"/").concat(t,"api/system/status"),{params:n}).then((function(e){return a(e.data)})).catch(c)}))}}]),e}()),tt=new(function(){function e(){Object(Ke.a)(this,e),this.axios=void 0,this.source=void 0;var t="/"===window.Bazarr.baseUrl?"/api/":"".concat(window.Bazarr.baseUrl,"/api/");this.initialize(t,window.Bazarr.apiKey)}return Object(ze.a)(e,[{key:"initialize",value:function(e,t){var n=this;this.axios=Le.a.create({baseURL:e}),this.axios.defaults.headers.post["Content-Type"]="application/json",this.axios.defaults.headers.common["X-API-KEY"]=t,this.source=Le.a.CancelToken.source(),this.axios.interceptors.request.use((function(e){return e.cancelToken=n.source.token,e})),this.axios.interceptors.response.use((function(e){return n.onOnline(),e.status>=200&&e.status<300?Promise.resolve(e):(n.handleError(e.status),Promise.reject(e))}),(function(e){if(e.response){var t=e.response;n.handleError(t.status),n.onOnline()}else n.onOffline(),e.message="You have disconnected to Bazarr backend";return Promise.reject(e)}))}},{key:"onOnline",value:function(){Ie.getState().site.offline&&Ie.dispatch(Bt(!1))}},{key:"onOffline",value:function(){Ie.dispatch(Bt(!0))}},{key:"handleError",value:function(e){switch(e){case 401:Ie.dispatch(Ct())}}}]),e}());var nt=new Map,rt=new Map;function at(e,t,n){return function(r){var a=rt.get(t),c=new Date;if(Object($.isEqual)(a,n)){var i=nt.get(t);if(i)if(c.getTime()-i.getTime()<200)return Promise.resolve()}else rt.set(t,n);return nt.set(t,c),r({type:e,payload:{loading:!0,parameters:n}}),new Promise((function(a,c){t.apply(void 0,Object(J.a)(n)).then((function(t){r({type:e,payload:{loading:!1,item:t,parameters:n}}),a()})).catch((function(t){r({type:e,error:!0,payload:{loading:!1,item:t,parameters:n}}),c(t)}))}))}}function ct(e,t){return function(){for(var n=arguments.length,r=new Array(n),a=0;a0&&void 0!==arguments[0]&&arguments[0],t=nn(Ot),n=tn((function(t){return e?t.system.enabledLanguage.data:t.system.languages.data}));return an(n,t)}function un(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=ln(e),n=Object(Z.a)(t,1),r=n[0];return Object(a.useCallback)((function(e){return void 0===e?void 0:r.find((function(t){return t.code2===e}))}),[r])}function dn(e){var t=un(!0);return Object(a.useMemo)((function(){var n;return null!==(n=null===e||void 0===e?void 0:e.items.map((function(e){var n,r,a=e.language;return{hi:"True"===e.hi,forced:"True"===e.forced,code2:a,name:null!==(n=null===(r=t(a))||void 0===r?void 0:r.name)&&void 0!==n?n:""}})))&&void 0!==n?n:[]}),[t,null===e||void 0===e?void 0:e.items])}function jn(){var e=nn($t);return an(tn((function(e){return e.series.seriesList})),e)}function bn(e){var t=jn(),n=Object(Z.a)(t,2),r=n[0],c=n[1],i=nn(Jt);return an(Object(a.useMemo)((function(){var t=r.data.items,n=null;return e&&!isNaN(e)&&e in t&&(n=t[e]),Object(f.a)(Object(f.a)({},r),{},{data:n})}),[e,r]),Object(a.useCallback)((function(){e&&!isNaN(e)&&(c([e]),i(e))}),[e,c,i]))}function On(e){var t=nn(Jt),n=Object(a.useCallback)((function(){void 0===e||isNaN(e)||t(e)}),[t,e]),r=tn((function(e){return e.series.episodeList})),c=Object(a.useMemo)((function(){return void 0===e||isNaN(e)?[]:null!==(t=r.data[e])&&void 0!==t?t:[];var t}),[e,r.data]);return an(Object(f.a)(Object(f.a)({},r),{},{data:c}),n)}function hn(){var e=nn(Ht);return an(tn((function(e){return e.movie.movieList})),e)}function fn(e){var t=hn(),n=Object(Z.a)(t,2),r=n[0],c=n[1];return an(Object(a.useMemo)((function(){var t=r.data.items,n=null;return e&&!isNaN(e)&&e in t&&(n=t[e]),Object(f.a)(Object(f.a)({},r),{},{data:n})}),[e,r]),Object(a.useCallback)((function(){e&&!isNaN(e)&&c([e])}),[e,c]))}function pn(){var e=nn(Gt);return an(tn((function(e){return e.system.providers})),e)}function vn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5,n=nn(At),r=nn(Mt);return Object(a.useCallback)((function(a){var c=Object(f.a)(Object(f.a)({},a),{},{id:e,timestamp:new Date});n(c),setTimeout((function(){return r(c.timestamp)}),1e3*t)}),[n,r,t,e])}function xn(){var e,t,n=cn();return null===(e=null===(t=Object(Z.a)(n,1)[0].data)||void 0===t?void 0:t.general.use_sonarr)||void 0===e||e}function mn(){var e,t,n=cn();return null===(e=null===(t=Object(Z.a)(n,1)[0].data)||void 0===t?void 0:t.general.use_radarr)||void 0===e||e}var gn=n(25),yn=n(256),kn=n.n(yn),Sn=n(502),wn=n(503),Cn=n(481),Nn=n(1),In=(n(323),["Tab","Enter"," ",",",";","."]),Pn=function(e){var t=e.defaultValue,n=e.disabled,r=e.onChange,c=Object(a.useState)(null!==t&&void 0!==t?t:[]),i=Object(Z.a)(c,2),s=i[0],o=i[1],l=Object(a.useRef)(null),u=Object(a.useCallback)((function(e){var t=Object(J.a)(s);t.push(e),o(t),r&&r(t)}),[s,r]),d=Object(a.useCallback)((function(e){var t;if(-1!==(e=null!==(t=e)&&void 0!==t?t:s.length-1)){var n=Object(J.a)(s);n.splice(e,1),o(n),r&&r(n)}}),[s,r]),j=Object(a.useCallback)((function(){l.current&&(l.current.value="")}),[l]),b=Object(a.useCallback)((function(e){var t=e.key,n=e.currentTarget.value;In.includes(t)&&0!==n.length?(e.preventDefault(),u(n),j()):"Backspace"===t&&0===n.length&&(e.preventDefault(),d())}),[u,d,j]),O=Object(a.useCallback)((function(e){var t=e.key,n=e.currentTarget.value;In.includes(t)&&0!==n.length&&e.preventDefault()}),[]),h=Object(a.useCallback)((function(e){var t=e.currentTarget.value;0!==t.length&&(e.preventDefault(),u(t),j())}),[u,j]),f=Object(a.useMemo)((function(){return s.map((function(e,t){return Object(Nn.jsx)("span",{title:e,className:"custom-chip ".concat(n?"":"active"),onClick:function(){n||d(t)},children:e},t)}))}),[s,d,n]);return Object(Nn.jsxs)("div",{className:"form-control custom-chip-input d-flex",children:[Object(Nn.jsx)("div",{className:"chip-container",children:f}),Object(Nn.jsx)("input",{disabled:n,className:"main-input p-0",ref:l,onKeyUp:b,onKeyDown:O,onBlur:h})]})},An=n(56),Tn=n(498),Mn=n(496),En="--back--";function Bn(e){var t=e.lastIndexOf("/");return-1===t&&(t=e.lastIndexOf("\\")),t}function Kn(e){if(e.endsWith("/")||e.endsWith("\\"))return e;var t=Bn(e);return e.slice(0,t+1)}var zn=function(e){var t=e.defaultValue,n=e.onChange,r=e.load,c=e.drop,i=Object(a.useState)(!1),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)(null!==t&&void 0!==t?t:""),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)((function(){return Kn(j)})),h=Object(Z.a)(O,2),f=h[0],p=h[1],v=Object(a.useState)(!0),x=Object(Z.a)(v,2),m=x[0],g=x[1],y=Object(a.useMemo)((function(){var e=Bn(j);return j.slice(e+1)}),[j]),k=Object(a.useMemo)((function(){var e=Bn(f.slice(0,-1));return f.slice(0,e+1)}),[f]),S=Object(a.useState)([]),w=Object(Z.a)(S,2),C=w[0],N=w[1],I=Object(a.useMemo)((function(){if(m)return Object(Nn.jsx)(Tn.a.Item,{children:Object(Nn.jsx)(Cn.a,{size:"sm",animation:"border"})});var e=[];return e.push.apply(e,Object(J.a)(C.filter((function(e){return e.name.startsWith(y)})).map((function(e){return Object(Nn.jsxs)(Tn.a.Item,{eventKey:e.path,children:[Object(Nn.jsx)(Ae.a,{icon:e.children?An.e:An.d,className:"mr-2"}),Object(Nn.jsx)("span",{children:e.name})]},e.name)})))),0===e.length&&e.push(Object(Nn.jsx)(Tn.a.Header,{children:"No Files"},"no-files")),0!==k.length?[Object(Nn.jsxs)(Tn.a.Item,{eventKey:En,children:[Object(Nn.jsx)(Ae.a,{icon:Pe.O,className:"mr-2"}),Object(Nn.jsx)("span",{children:"Back"})]},"back"),Object(Nn.jsx)(Tn.a.Divider,{},"back-divider")].concat(e):e}),[C,y,k,m]);Object(a.useEffect)((function(){if(j!==f){var e=Kn(j);e!==f&&(p(e),n&&n(e))}}),[f,j,n]);var P=Object(a.useRef)(null);return Object(a.useEffect)((function(){o&&(g(!0),r(f).then((function(e){N(e)})).finally((function(){return g(!1)})))}),[f,r,o]),Object(Nn.jsxs)(Tn.a,{show:o,drop:c,onSelect:function(e){var t;e&&(b(e!==En?e:k),null===(t=P.current)||void 0===t||t.focus())},onToggle:function(e,t,n){e||"select"===n.source?e&&l(!0):l(!1)},children:[Object(Nn.jsx)(Tn.a.Toggle,{as:Mn.a.Control,placeholder:"Click to start",type:"text",value:j,onChange:function(e){b(e.currentTarget.value)},ref:P}),Object(Nn.jsx)(Tn.a.Menu,{className:"w-100",style:{maxHeight:256,overflowY:"auto"},children:I})]})},Dn=n(40),Ln=function(e){var t=e.value,n=e.emptyText,r=e.multiple,c=e.disabled,i=e.onChange,s=Object(a.useState)([]),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useRef)(null);Object(a.useEffect)((function(){t&&(u(t),0===t.length&&d.current&&(d.current.value=""))}),[t]);var j=Object(a.useMemo)((function(){return 0===l.length?n:r?"".concat(l.length," Files"):l[0].name}),[l,n,r]);return Object(Nn.jsx)(Mn.a.File,{disabled:c,custom:!0,label:j,multiple:r,ref:d,onChange:function(e){var t=e.target.files;if(t){var n,r=[],a=Object(Dn.a)(t);try{for(a.s();!(n=a.n()).done;){var c=n.value;r.push(c)}}catch(s){a.e(s)}finally{a.f()}u(r),i&&i(r)}}})},Rn=n(283);n(325);function _n(e){var t=e.className,n=e.placeholder,r=e.label,c=e.disabled,i=e.clearable,s=e.loading,o=e.options,l=e.multiple,u=e.onChange,d=e.defaultValue,j=e.value,b=Object(a.useCallback)((function(e){var t;return null===(t=o.find((function(t){return t.value===e})))||void 0===t?void 0:t.label}),[o]),O=Object(a.useCallback)((function(e){if(null!==e&&void 0!==e){if(l)return e.map((function(e){var t;return{label:r?r(e):null!==(t=b(e))&&void 0!==t?t:"Unknown",value:e}}));var t,n=e;return{label:r?r(n):null!==(t=b(n))&&void 0!==t?t:"Unknown",value:n}}return e}),[r,l,b]),h=Object(a.useMemo)((function(){return O(d)}),[d,O]),f=Object(a.useMemo)((function(){return O(j)}),[O,j]);return Object(Nn.jsx)(Rn.a,{isLoading:s,placeholder:n,isSearchable:o.length>=10,isMulti:l,closeMenuOnSelect:!l,defaultValue:h,value:f,isClearable:i,isDisabled:c,options:o,className:"custom-selector w-100 ".concat(null!==t&&void 0!==t?t:""),classNamePrefix:"selector",onChange:function(e){if(u){var t,n=null;if(Object($.isArray)(e))n=e.map((function(e){return e.value}));else n=null!==(t=null===e||void 0===e?void 0:e.value)&&void 0!==t?t:null;u(n)}}})}var Hn,Un=n(282),Fn=(n(335),n(336),function(e){var t=e.min,n=e.max,r=e.tooltips,a=e.defaultValue,c=e.onChange,i=e.onAfterChange;return Object(Nn.jsxs)("div",{className:"d-flex flex-row align-items-center py-2",children:[Object(Nn.jsx)("span",{className:"text-muted pr-3",children:null!==t&&void 0!==t?t:0}),Object(Nn.jsx)(Un.a,{min:null!==t&&void 0!==t?t:0,max:null!==n&&void 0!==n?n:100,className:"custom-rc-slider",step:1,defaultValue:a,onChange:c,onAfterChange:i,handle:function(e){return Object(Nn.jsx)("div",{className:"rc-slider-handle",style:{left:"".concat(e.offset,"%")},children:Object(Nn.jsx)(Gn,{tooltips:r,value:e.value})})}}),Object(Nn.jsx)("span",{className:"text-muted pl-3",children:null!==n&&void 0!==n?n:100})]})}),Gn=function(e){var t=e.tooltips,n=e.value,r=Object(a.useMemo)((function(){var e=["rc-slider-handle-tips"];return void 0!==t&&("string"===typeof t?e.push("rc-slider-handle-tips-always"):!1===t&&e.push("rc-slider-handle-tips-hidden")),e.join(" ")}),[t]);return Object(Nn.jsx)("span",{className:r,children:n})};function Yn(e){var t,n=e.exist,r=e.state,c=e.children,i=n?!n(r.data):!((t=r.data)instanceof Array?0!==t.length:null!==t&&void 0!==t),s=vn("async-overlay");if(Object(a.useEffect)((function(){r.updating||void 0===r.error||i||s({type:"error",message:r.error.message})}),[r,s,i]),r.updating){if(i)return Object(Nn.jsx)(Oa,{})}else if(r.error&&i)return Object(Nn.jsx)(Me.a,{children:Object(Nn.jsxs)(Ee.a,{variant:"danger",className:"my-4",children:[Object(Nn.jsxs)(Ee.a.Heading,{children:[Object(Nn.jsx)(Ae.a,{className:"mr-2",icon:Pe.s}),Object(Nn.jsx)("span",{children:"Ouch! You got an error"})]}),Object(Nn.jsx)("p",{children:r.error.message}),Object(Nn.jsx)("hr",{}),Object(Nn.jsx)("div",{className:"d-flex justify-content-end",children:Object(Nn.jsx)(Be.a,{variant:"outline-danger",onClick:je,children:"Reload"})})]})});return c?c(r.data,r.error):null}function qn(e){var t=e.promise,n=e.children,r=Object(a.useState)(null),c=Object(Z.a)(r,2),i=c[0],s=c[1];return Object(a.useEffect)((function(){t().then((function(e){return s(e)})).catch((function(){}))}),[t]),null===i?Object(Nn.jsx)(Oa,{}):n(i)}function Wn(e){var t=e.label,n=e.state,r=Object(gn.a)(e,["label","state"]),c=Object(a.useMemo)((function(){return n.data.map((function(e){return{label:t(e),value:e}}))}),[n,t]);return Object(Nn.jsx)(_n,Object(f.a)({loading:n.updating,options:c,label:t},r))}function Vn(e){var t=e.children,n=e.className,r=e.promise,c=e.onSuccess,i=e.noReset,s=e.error,o=e.onChange,l=e.disabled,u=Object(gn.a)(e,["children","className","promise","onSuccess","noReset","error","onChange","disabled"]),d=Object(a.useState)(!1),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(a.useState)(Hn.Invalid),p=Object(Z.a)(h,2),v=p[0],x=p[1],m=Object(a.useState)(null),g=Object(Z.a)(m,2)[1];Object(a.useEffect)((function(){if(!i){if(v===Hn.Error||v===Hn.Success){var e=setTimeout((function(){return x(Hn.Invalid)}),2e3);g(e)}return function(){g((function(e){return e&&clearTimeout(e),null}))}}}),[v,i]);var y=Object(a.useCallback)((function(){if(v===Hn.Invalid){var e=r();e&&(O(!0),o&&o(!0),e.then((function(e){x(Hn.Success),c&&c(e)})).catch((function(){x(Hn.Error),s&&s()})).finally((function(){O(!1),o&&o(!1)})))}}),[s,o,r,c,v]),k=t;return b&&(k=Object(Nn.jsx)(Ae.a,{icon:Pe.i,spin:!0})),v===Hn.Success?k=Object(Nn.jsx)(Ae.a,{icon:Pe.g}):v===Hn.Error&&(k=Object(Nn.jsx)(Ae.a,{icon:Pe.W})),Object(Nn.jsx)(Be.a,Object(f.a)(Object(f.a)({className:n,disabled:b||l||v!==Hn.Invalid},u),{},{onClick:y,children:k}))}!function(e){e[e.Success=0]="Success",e[e.Error=1]="Error",e[e.Invalid=2]="Invalid"}(Hn||(Hn={}));var Qn=n(484),Xn=function(e){var t=e.icon,n=e.onClick;return Object(Nn.jsx)(Be.a,{as:Qn.a,className:"mx-1 p-1",variant:"secondary",onClick:n,children:Object(Nn.jsx)(Ae.a,{icon:t})})},Jn=function(e){var t=e.onClick,n=(e.destructive,e.disabled),r=e.variant,a=e.className,c=e.size,i=Object(gn.a)(e,["onClick","destructive","disabled","variant","className","size"]);return Object(Nn.jsx)(Be.a,{disabled:i.loading||n,size:null!==c&&void 0!==c?c:"sm",variant:null!==r&&void 0!==r?r:"light",className:"text-nowrap ".concat(null!==a&&void 0!==a?a:""),onClick:t,children:Object(Nn.jsx)(Zn,Object(f.a)({},i))})},Zn=function(e){var t=e.icon,n=e.children,r=e.loading;return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Ae.a,{style:{width:"1rem"},icon:r?Pe.i:t,spin:r}),n&&!r?Object(Nn.jsx)("span",{className:"ml-2 font-weight-bold",children:n}):null]})},$n=function(e){var t=e.children,n=e.icon,r=e.disabled,a=e.updating,c=e.updatingIcon,i=e.onClick,s=n;return a&&(s=c||Pe.R),Object(Nn.jsxs)(Be.a,{variant:"dark",className:"d-flex flex-column text-nowrap py-1",disabled:r||a,onClick:i,children:[Object(Nn.jsx)(Ae.a,{className:"mx-auto my-1",icon:s,spin:a}),Object(Nn.jsx)("span",{className:"align-bottom text-themecolor small text-center",children:t})]})};var er=$n,tr=function(e){var t=e.children,n=e.pos,r="d-flex flex-grow-1 align-items-center justify-content-".concat(n);return Object(Nn.jsx)("div",{className:r,children:t})},nr=(n(337),function(e){var t,n=e.children,r=e.scroll,c=e.className,i=Object(a.useMemo)((function(){var e=["content-header","bg-dark","p-2"];return void 0!==c&&e.push(c),!1!==r&&e.push("scroll"),e.join(" ")}),[r,c]);return t=!1!==r?Object(Nn.jsx)("div",{className:"d-flex flex-nowrap flex-grow-1",children:n}):n,Object(Nn.jsx)(Te.a,{className:i,children:t})});nr.Button=er,nr.Group=tr,nr.AsyncButton=function(e){var t=e.promise,n=e.onSuccess,r=Object(gn.a)(e,["promise","onSuccess"]),c=Object(a.useState)(!1),i=Object(Z.a)(c,2),s=i[0],o=i[1],l=Object(a.useCallback)((function(){o(!0),t().then((function(e){o(!1),n&&n(e)}))}),[n,t]);return Object(Nn.jsx)($n,Object(f.a)({updating:s,onClick:l},r))};function rr(e){var t=e.options,n=Object(gn.a)(e,["options"]),r=Object(a.useMemo)((function(){return t.map((function(e){return{label:e.name,value:e}}))}),[t]);return Object(Nn.jsx)(_n,Object(f.a)({placeholder:"Language...",options:r,label:function(e){return e.name}},n))}var ar=n(495),cr=c.a.createContext([[],function(e){}]),ir=c.a.createContext([[],function(e){}]);function sr(){var e=Object(a.useContext)(cr),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=Object(a.useContext)(ir),i=Object(Z.a)(c,2),s=i[0],o=i[1];return Object(a.useCallback)((function(e,t){"modal ".concat(e," sending payload"),r([].concat(Object(J.a)(n),[e])),o([].concat(Object(J.a)(s),[null!==t&&void 0!==t?t:null]))}),[n,s,r,o])}function or(){var e=Object(a.useContext)(cr),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=Object(a.useContext)(ir),i=Object(Z.a)(c,2),s=i[0],o=i[1];return Object(a.useCallback)((function(){var e=Object(J.a)(n);e.pop();var t=Object(J.a)(s);t.pop(),r(e),o(t)}),[n,s,r,o])}function lr(e){var t=Object(a.useContext)(cr)[0];return e===t[t.length-1]}function ur(e,t){var n=lr(e);Object(a.useEffect)((function(){n&&t()}),[n,t])}function dr(e){var t=Object(a.useContext)(ir)[0],n=Object(a.useContext)(cr)[0];return Object(a.useMemo)((function(){var r=n.findIndex((function(t){return t===e}));return-1!==r?t[r]:null}),[n,t,e])}var jr,br=function(e){var t=e.children,n=Object(a.useState)([]),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=Object(a.useState)([]),o=Object(Z.a)(s,2),l=o[0],u=o[1];return Object(Nn.jsx)(cr.Provider,{value:[c,i],children:Object(Nn.jsx)(ir.Provider,{value:[l,u],children:t})})},Or=function(e){var t=e.size,n=e.closeable,r=e.modalKey,a=e.title,c=e.children,i=e.footer,s=lr(r),o=or(),l=!1!==n;return Object(Nn.jsxs)(ar.a,{centered:!0,size:t,show:s,onHide:o,backdrop:l?void 0:"static",children:[Object(Nn.jsx)(ar.a.Header,{closeButton:l,children:a}),Object(Nn.jsx)(ar.a.Body,{children:c}),Object(Nn.jsx)(ar.a.Footer,{hidden:void 0===i,children:i})]})},hr=Or,fr=function(e){var t=e.history,n=e.update,r=e.promise,a=t.provider,c=t.subs_id,i=t.language,s=t.subtitles_path,o=t.blacklisted;return c&&a&&i?Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,disabled:o,promise:function(){var e=i.code2;return r({provider:a,subs_id:c,subtitles_path:s,language:e})},onSuccess:n,children:Object(Nn.jsx)(Ae.a,{icon:Pe.t})}):null},pr=function(e){var t,n=Object.assign({},e),r=dr(n.modalKey),c=Object(a.useState)({updating:!1,data:[]}),i=Object(Z.a)(c,2),s=i[0],o=i[1],l=Object(a.useCallback)((function(){r&&se(Qe.history(r.radarrId),o,[])}),[r]);Object(a.useEffect)((function(){l()}),[l]);var u=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){return Object(Nn.jsx)(ja,{action:e.value})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp"},{accessor:"blacklisted",Cell:function(e){var t=e.row.original;return Object(Nn.jsx)(fr,{update:l,promise:function(e){return Qe.addBlacklist(t.radarrId,e)},history:t})}}]}),[l]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"History - ".concat(null!==(t=null===r||void 0===r?void 0:r.title)&&void 0!==t?t:"")},n),{},{children:Object(Nn.jsx)(Yn,{state:s,children:function(e){return Object(Nn.jsx)(da,{emptyText:"No History Found",columns:u,data:e})}})}))},vr=function(e){var t,n=dr(e.modalKey),r=Object(a.useState)({updating:!1,data:[]}),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useCallback)((function(){n&&se(qe.history(n.sonarrEpisodeId),s,[])}),[n]);Object(a.useEffect)((function(){return o()}),[o]);var l=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){return Object(Nn.jsx)(ja,{action:e.value})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp"},{accessor:"blacklisted",Cell:function(e){var t=e.row.original,n=t.sonarrSeriesId,r=t.sonarrEpisodeId;return Object(Nn.jsx)(fr,{history:t,update:o,promise:function(e){return qe.addBlacklist(n,r,e)}})}}]}),[o]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"History - ".concat(null!==(t=null===n||void 0===n?void 0:n.title)&&void 0!==t?t:"")},e),{},{children:Object(Nn.jsx)(Yn,{state:i,children:function(e){return Object(Nn.jsx)(da,{emptyText:"No History Found",columns:l,data:e})}})}))},xr=function(e){var t=e.onSuccess,n=e.submit,r=Object(gn.a)(e,["onSuccess","submit"]),c=sn(),i=Object(Z.a)(c,1)[0],s=dr(r.modalKey),o=or(),l=Object(a.useMemo)((function(){return i.map((function(e){return{label:e.name,value:e.profileId}}))}),[i]),u=Object(a.useState)(null),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(!1),h=Object(Z.a)(O,2),p=h[0],v=h[1],x=Object(a.useMemo)((function(){return Object(Nn.jsx)(Vn,{noReset:!0,onChange:v,promise:function(){if(s){var e=oe(s);return n({id:[e],profileid:[j]})}return null},onSuccess:function(){o(),t&&s&&t(s)},children:"Save"})}),[o,j,s,t,n]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({closeable:!p,footer:x,title:null===s||void 0===s?void 0:s.title},r),{},{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Mn.a,{children:[Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Audio"}),Object(Nn.jsx)(Mn.a.Control,{type:"text",disabled:!0,defaultValue:null===s||void 0===s?void 0:s.audio_language.map((function(e){return e.name})).join(", ")})]}),Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Languages Profiles"}),Object(Nn.jsx)(_n,{clearable:!0,options:l,defaultValue:null===s||void 0===s?void 0:s.profileId,onChange:function(e){return b(void 0===e?null:e)}})]})]})})}))},mr=function(e){var t,n=e,r=ln(!0),c=Object(Z.a)(r,1)[0],i=dr(n.modalKey),s=fn(null===i||void 0===i?void 0:i.radarrId),o=Object(Z.a)(s,2)[1],l=or(),u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(null),h=Object(Z.a)(O,2),p=h[0],v=h[1],x=on(null===i||void 0===i?void 0:i.profileId),m=function(e){var t=un();return Object(a.useMemo)((function(){return t(e)}),[e,t])}(null===x||void 0===x||null===(t=x.items[0])||void 0===t?void 0:t.language);Object(a.useEffect)((function(){return v(null!==m&&void 0!==m?m:null)}),[m]);var g=Object(a.useState)(null),y=Object(Z.a)(g,2),k=y[0],S=y[1],w=Object(a.useState)(!1),C=Object(Z.a)(w,2),N=C[0],I=C[1],P=Object(a.useMemo)((function(){return null!==k&&(null===p||void 0===p?void 0:p.code2)}),[p,k]),A=Object(Nn.jsx)(Vn,{noReset:!0,disabled:!P,onChange:b,promise:function(){return k&&i&&p?Qe.uploadSubtitles(i.radarrId,{file:k,forced:N,hi:!1,language:p.code2}):null},onSuccess:function(){l(),o()},children:"Upload"});return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Upload - ".concat(null===i||void 0===i?void 0:i.title),closeable:!j,footer:A},n),{},{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Mn.a,{children:[Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Language"}),Object(Nn.jsx)(rr,{options:c,value:p,onChange:function(e){e&&v(e)}})]}),Object(Nn.jsxs)(Mn.a.Group,{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Subtitle File"}),Object(Nn.jsx)(Ln,{emptyText:"Select...",onChange:function(e){S(e[0])}})]}),Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"forced-checkbox",defaultChecked:N,onChange:function(e){return I(e.target.checked)},label:"Forced"})})]})})}))};!function(e){e[e.Update=0]="Update",e[e.Valid=1]="Valid",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(jr||(jr={}));var gr=function(e){var t=dr(e.modalKey),n=On(null===t||void 0===t?void 0:t.sonarrSeriesId),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=Object(a.useState)(!1),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=or(),j=Object(a.useState)([]),b=Object(Z.a)(j,2),O=b[0],p=b[1],v=Object(a.useState)({}),x=Object(Z.a)(v,2),m=x[0],g=x[1],y=dn(on(null===t||void 0===t?void 0:t.profileId)),k=Object(a.useMemo)((function(){return O.map((function(e){return e.form.file}))}),[O]);Object(a.useEffect)((function(){var e=O.reduce((function(e,t){var n={state:jr.Valid,infos:[]},r=t.form,a=t.instance;return t.didCheck?a?void 0!==a.subtitles.find((function(e){return e.code2===r.language}))&&(n.infos.push("Overwrite existing subtitle"),n.state=jr.Warning):(n.infos.push("Season or episode info is missing"),n.state=jr.Error):n.state=jr.Update,e[r.file.name]=n,e}),{});g(e)}),[O]);var S=Object(a.useCallback)(function(){var e=Object(He.a)(_e.a.mark((function e(t){var n,r,a;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!((n=t.map((function(e){return e.form.file.name}))).length>0)){e.next=7;break}return e.next=4,Ze.info(n);case 4:r=e.sent,a=r.reduce((function(e,t){var n=c.data.find((function(e){return e.season===t.season&&e.episode===t.episode}));return n&&(e[t.filename]=n),e}),{}),p((function(e){return e.map((function(e){return Object(f.a)(Object(f.a)({},e),{},{didCheck:!0,instance:a[e.form.file.name]})}))}));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[c.data]),w=Object(a.useCallback)((function(e){if(e){var t=O.map((function(t){var n,r,a=t.form;return Object(f.a)(Object(f.a)({},t),{},{form:Object(f.a)(Object(f.a)({},a),{},{language:e.code2,hi:null!==(n=e.hi)&&void 0!==n&&n,forced:null!==(r=e.forced)&&void 0!==r&&r})})}));p(t)}}),[O]),C=Object(a.useCallback)((function(e){var t=y[0],n=e.map((function(e){var n,r;return{form:{file:e,language:t.code2,hi:null!==(n=t.hi)&&void 0!==n&&n,forced:null!==(r=t.forced)&&void 0!==r&&r},didCheck:!1}}));p(n);var r=e.reduce((function(e,t){return Object(f.a)(Object(f.a)({},e),{},Object(h.a)({},t.name,{state:jr.Update,infos:[]}))}),{});g(r),S(n)}),[y,S]),N=Object(a.useCallback)(Object(He.a)(_e.a.mark((function e(){var n,r,a,c,i,s;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==t){e.next=2;break}return e.abrupt("return");case 2:n=t.sonarrSeriesId,r=O.reduce((function(e,t){return e[t.form.file.name]={state:jr.Update,infos:[]},e}),{}),g(r),a=Object(Dn.a)(O),e.prev=6,a.s();case 8:if((c=a.n()).done){e.next=18;break}if(!(i=c.value).instance){e.next=16;break}return s=i.instance.sonarrEpisodeId,e.next=14,qe.uploadSubtitles(n,s,i.form);case 14:r=Object(f.a)(Object(f.a)({},r),{},Object(h.a)({},i.form.file.name,{state:jr.Valid,infos:[]})),g(r);case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(6),a.e(e.t0);case 23:return e.prev=23,a.f(),e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),[t,O]),I=Object(a.useMemo)((function(){return O.length>0&&O.every((function(e){return void 0!==e.instance}))}),[O]),P=O.length>0,A=Object(a.useMemo)((function(){return[{id:"Icon",accessor:"instance",className:"text-center",Cell:function(e){var t=e.row,n=e.loose,r=t.original.form.file.name,a=n[1],c=Pe.i,i=void 0,s=!1,o=[];if(r in a){var l=a[r];switch(o=l.infos,l.state){case jr.Error:c=Pe.s,i="var(--danger)";break;case jr.Valid:c=Pe.g,i="var(--success)";break;case jr.Warning:c=Pe.z,i="var(--warning)";break;case jr.Update:s=!0}}return Object(Nn.jsx)(ba,{messages:o,color:i,icon:c,spin:s})}},{Header:"File",accessor:function(e){return e.form.file.name}},{Header:"Episode",accessor:"instance",className:"vw-1",Cell:function(e){var t=e.value,n=e.loose,r=e.row,c=e.externalUpdate,i=n[2].map((function(e){return{label:"(".concat(e.season,"x").concat(e.episode,") ").concat(e.title),value:e}})),s=Object(a.useCallback)((function(e){if(e){var t=Object(f.a)({},r.original);t.instance=e,c&&c(r,t)}}),[r,c]);return Object(Nn.jsx)(_n,{options:i,value:null!==t&&void 0!==t?t:null,onChange:s})}},{accessor:"form",Cell:function(e){var t=e.row,n=e.externalUpdate,r=e.loose,a=Object(Z.a)(r,1)[0];return Object(Nn.jsx)(Be.a,{size:"sm",variant:"light",disabled:a,onClick:function(){n&&n(t)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[]),T=Object(a.useCallback)((function(e,t){p((function(n){var r=Object(J.a)(n);return t?r[e.index]=t:r.splice(e.index,1),r}))}),[]),M=Object(Nn.jsxs)("div",{className:"d-flex flex-row flex-grow-1 justify-content-between",children:[Object(Nn.jsx)("div",{className:"w-25",children:Object(Nn.jsx)(rr,{disabled:l,options:y,defaultValue:y.length>0?y[0]:void 0,onChange:w})}),Object(Nn.jsxs)("div",{children:[Object(Nn.jsx)(Be.a,{hidden:l,disabled:0===O.length,variant:"outline-secondary",className:"mr-2",onClick:function(){return C([])},children:"Clean"}),Object(Nn.jsx)(Vn,{noReset:!0,disabled:!I,onChange:u,promise:N,onSuccess:function(){d(),C([]),i()},children:"Upload"})]})]});return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({size:"lg",title:"Upload Subtitles",closeable:!l,footer:M},e),{},{children:Object(Nn.jsxs)(Me.a,{fluid:!0,className:"flex-column",children:[Object(Nn.jsx)(Mn.a,{children:Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Ln,{emptyText:"Select...",disabled:P||0===y.length,multiple:!0,value:k,onChange:C})})}),Object(Nn.jsx)("div",{hidden:!P,children:Object(Nn.jsx)(na,{columns:A,data:O,loose:[l,m,c.data],responsive:!1,externalUpdate:T})})]})}))},yr=n(486),kr=n(487),Sr=n(54),wr="useAsyncPagination",Cr="loading-change";function Nr(e){e.stateReducers.push(Ir),e.useInstance.push(Ar),e.useOptions.push(Pr)}function Ir(e,t,n,r){if(t.type===Cr&&r){var a=t.pageToLoad,c=!1,i=r.asyncState,s=e.pageIndex,o=e.pageSize,l=s;"prev"===a?l-=1:"next"===a?l+=1:"number"===typeof a&&(l=a);var u=l*o,d=u+o;if(i){var j=i.error,b=i.data.order.slice(u,d),O=0===b.length&&void 0!==j,h=0!==b.length&&b.every($.isNull);O||h?c=!0:b.every(ne)&&(a=void 0)}return Object(f.a)(Object(f.a)({},e),{},{pageToLoad:a,needLoadingScreen:c})}return e}function Pr(e){return e.manualPagination=!0,void 0===e.initialState&&(e.initialState={}),e.initialState.pageToLoad=0,e.initialState.needLoadingScreen=!0,e}function Ar(e){var t,n=e.plugins,r=e.asyncLoader,c=e.dispatch,i=e.asyncState,s=e.asyncId,o=e.rows,l=e.nextPage,u=e.previousPage,d=e.gotoPage,j=e.state,b=j.pageIndex,O=j.pageSize,h=j.pageToLoad;Object(Sr.ensurePluginOrder)(n,["usePagination"],wr);var f=null!==(t=null===i||void 0===i?void 0:i.data.order.length)&&void 0!==t?t:0,p=Math.ceil(f/O),v=b*O,x=v+O;Object(a.useEffect)((function(){void 0!==h&&r&&r(v,O)}),[r,v,O,h]);var m=Object(a.useCallback)((function(e){c({type:Cr,pageToLoad:e})}),[c]);Object(a.useEffect)((function(){!1===(null===i||void 0===i?void 0:i.updating)&&m()}),[null===i||void 0===i?void 0:i.updating,m]);var g=Object(a.useCallback)((function(e){var t;(t="number"===typeof e?e:e(b))!==b&&(m(t),d(t))}),[b,m,d]),y=Object(a.useCallback)((function(){0!==b&&(m("prev"),u())}),[m,u,b]),k=Object(a.useCallback)((function(){b!==p&&(m("next"),l())}),[m,l,p,b]),S=Object(a.useMemo)((function(){var e;return(null!==(e=null===i||void 0===i?void 0:i.data.order.slice(v,x).filter(ne))&&void 0!==e?e:[]).flatMap((function(e){var t=o.find((function(t){return s&&s(t.original)===e}));return t?[t]:[]}))}),[v,x,s,null===i||void 0===i?void 0:i.data.order,o]);Object.assign(e,{previousPage:y,nextPage:k,gotoPage:g,page:S,pageCount:p})}Nr.pluginName=wr;var Tr=Nr,Mr="useCustomSelection",Er=Object(a.forwardRef)((function(e,t){var n=e.indeterminate,r=e.idIn,c=Object(gn.a)(e,["indeterminate","idIn"]),i=Object(a.useRef)(null),s=t||i;return Object(a.useEffect)((function(){"object"===typeof s&&s.current&&(s.current.indeterminate=null!==n&&void 0!==n&&n)}),[s,n]),Object(Nn.jsx)(Mn.a.Check,Object(f.a)({custom:!0,id:r,ref:s},c))}));function Br(e){e.visibleColumnsDeps.push((function(e,t){var n=t.instance;return[].concat(Object(J.a)(e),[n.isSelecting])})),e.visibleColumns.push(zr),e.useInstance.push(Kr)}function Kr(e){var t=e.plugins,n=e.rows,r=e.onSelect,c=e.isSelecting,i=e.state.selectedRowIds;Object(Sr.ensurePluginOrder)(t,["useRowSelect"],Mr),Object(a.useEffect)((function(){if(c){var e=Object.keys(i).flatMap((function(e){var t,r;return null!==(t=null===(r=n.find((function(t){return t.id===e})))||void 0===r?void 0:r.original)&&void 0!==t?t:[]}));r&&r(e)}}),[i,r,n,c])}function zr(e,t){return t.instance.isSelecting?[{id:"---selection---",Header:function(e){var t=e.getToggleAllRowsSelectedProps;return Object(Nn.jsx)(Er,Object(f.a)({idIn:"table-header-selection"},t()))},Cell:function(e){var t=e.row;return Object(Nn.jsx)(Er,Object(f.a)({idIn:"table-cell-".concat(t.index)},t.getToggleRowSelectedProps()))}}].concat(Object(J.a)(e.filter((function(e){return!0!==e.selectHide})))):e}Br.pluginName=Mr;var Dr=Br;function Lr(e){e.useOptions.push(Rr)}function Rr(e){var t=tn((function(e){return e.site})).pageSize;return void 0===e.autoResetPage&&(e.autoResetPage=!1),void 0===e.initialState&&(e.initialState={}),e.initialState.needLoadingScreen=!1,void 0===e.initialState.pageSize&&(e.initialState.pageSize=t),void 0===e.asyncLoader&&(e.initialState.pageToLoad=void 0),e}Lr.pluginName="useLocalSettings";var _r,Hr=Lr,Ur={af:"afrikaans",sq:"albanian",am:"amharic",ar:"arabic",hy:"armenian",az:"azerbaijani",eu:"basque",be:"belarusian",bn:"bengali",bs:"bosnian",bg:"bulgarian",ca:"catalan",ceb:"cebuano",ny:"chichewa","zh-cn":"chinese (simplified)","zh-tw":"chinese (traditional)",co:"corsican",hr:"croatian",cs:"czech",da:"danish",nl:"dutch",en:"english",eo:"esperanto",et:"estonian",tl:"filipino",fi:"finnish",fr:"french",fy:"frisian",gl:"galician",ka:"georgian",de:"german",el:"greek",gu:"gujarati",ht:"haitian creole",ha:"hausa",haw:"hawaiian",iw:"hebrew",hi:"hindi",hmn:"hmong",hu:"hungarian",is:"icelandic",ig:"igbo",id:"indonesian",ga:"irish",it:"italian",ja:"japanese",jw:"javanese",kn:"kannada",kk:"kazakh",km:"khmer",ko:"korean",ku:"kurdish (kurmanji)",ky:"kyrgyz",lo:"lao",la:"latin",lv:"latvian",lt:"lithuanian",lb:"luxembourgish",mk:"macedonian",mg:"malagasy",ms:"malay",ml:"malayalam",mt:"maltese",mi:"maori",mr:"marathi",mn:"mongolian",my:"myanmar (burmese)",ne:"nepali",no:"norwegian",ps:"pashto",fa:"persian",pl:"polish",pt:"portuguese",pa:"punjabi",ro:"romanian",ru:"russian",sm:"samoan",gd:"scots gaelic",sr:"serbian",st:"sesotho",sn:"shona",sd:"sindhi",si:"sinhala",sk:"slovak",sl:"slovenian",so:"somali",es:"spanish",su:"sundanese",sw:"swahili",sv:"swedish",tg:"tajik",ta:"tamil",te:"telugu",th:"thai",tr:"turkish",uk:"ukrainian",ur:"urdu",uz:"uzbek",vi:"vietnamese",cy:"welsh",xh:"xhosa",yi:"yiddish",yo:"yoruba",zu:"zulu",fil:"Filipino",he:"Hebrew"},Fr=[{label:"White",value:"white"},{label:"Light Gray",value:"lightgray"},{label:"Red",value:"red"},{label:"Green",value:"green"},{label:"Yellow",value:"yellow"},{label:"Blue",value:"blue"},{label:"Magenta",value:"magenta"},{label:"Cyan",value:"cyan"},{label:"Black",value:"black"},{label:"Dark Red",value:"darkred"},{label:"Dark Green",value:"darkgreen"},{label:"Dark Yellow",value:"darkyellow"},{label:"Dark Blue",value:"darkblue"},{label:"Dark Magenta",value:"darkmagenta"},{label:"Dark Cyan",value:"darkcyan"},{label:"Dark Grey",value:"darkgrey"}];!function(e){e[e.Pending=0]="Pending",e[e.Processing=1]="Processing",e[e.Done=2]="Done"}(_r||(_r={}));var Gr=function(e){var t=e.state,n=An.f;switch(t){case _r.Pending:n=Pe.k;break;case _r.Processing:n=Pe.i;break;case _r.Done:n=Pe.g}return Object(Nn.jsx)(Ae.a,{icon:n,spin:t===_r.Processing})};var Yr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=Object(a.useState)(null),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useCallback)((function(){if(i){var e="color(name=".concat(i,")");t(e)}}),[i,t]),l=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:null===i,onClick:o,children:"Save"})}),[i,o]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Choose Color",footer:l},n),{},{children:Object(Nn.jsx)(_n,{options:Fr,onChange:s})}))},qr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=Object(a.useState)(null),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useState)(null),l=Object(Z.a)(o,2),u=l[0],d=l[1],j=null!==i&&null!==u&&i!==u,b=Object(a.useCallback)((function(){if(j){var e=function(e,t){return"change_FPS(from=".concat(e,",to=").concat(t,")")}(i,u);t(e)}}),[j,i,u,t]),O=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:!j,onClick:b,children:"Save"})}),[b,j]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Change Frame Rate",footer:O},n),{},{children:Object(Nn.jsxs)(yr.a,{className:"px-2",children:[Object(Nn.jsx)(Mn.a.Control,{placeholder:"From",type:"number",onChange:function(e){var t=parseFloat(e.currentTarget.value);isNaN(t)?s(null):s(t)}}),Object(Nn.jsx)(Mn.a.Control,{placeholder:"To",type:"number",onChange:function(e){var t=parseFloat(e.currentTarget.value);isNaN(t)?d(null):d(t)}})]})}))},Wr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=Object(a.useState)(!0),c=Object(Z.a)(r,2),i=c[0],s=c[1],o=Object(a.useState)([0,0,0,0]),l=Object(Z.a)(o,2),u=l[0],d=l[1],j=Object(a.useCallback)((function(e){return function(t){var n=parseFloat(t.currentTarget.value);isNaN(n)&&(n=0);var r=Object(J.a)(u);r[e]=n,d(r)}}),[u]),b=u.some((function(e){return 0!==e})),O=Object(a.useCallback)((function(){if(b){var e=u.map((function(e){return i?e:-e})),n=(r=e[0],a=e[1],c=e[2],s=e[3],"shift_offset(h=".concat(r,",m=").concat(a,",s=").concat(c,",ms=").concat(s,")"));t(n)}var r,a,c,s}),[t,b,u,i]),h=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:!b,onClick:O,children:"Save"})}),[O,b]);return Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Adjust Times",footer:h},n),{},{children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(Be.a,{variant:"secondary",title:i?"Later":"Earlier",onClick:function(){return s(!i)},children:Object(Nn.jsx)(Ae.a,{icon:i?Pe.L:Pe.F})})}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"hour",onChange:j(0)}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"min",onChange:j(1)}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"sec",onChange:j(2)}),Object(Nn.jsx)(Mn.a.Control,{type:"number",placeholder:"ms",onChange:j(3)})]})}))},Vr=function(e){var t=e.process,n=Object(gn.a)(e,["process"]),r=ln(!0),c=Object(Z.a)(r,1)[0],i=Object(a.useMemo)((function(){return c.filter((function(e){return e.code2 in Ur}))}),[c]),s=Object(a.useState)(null),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useCallback)((function(){l&&t("translate",{language:l.code2})}),[l,t]),j=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{disabled:!l,onClick:d,children:"Translate"})}),[d,l]);return Object(Nn.jsxs)(hr,Object(f.a)(Object(f.a)({title:"Translate to",footer:j},n),{},{children:[Object(Nn.jsx)(Mn.a.Label,{children:"Enabled languages not listed here are unsupported by Google Translate."}),Object(Nn.jsx)(rr,{options:i,onChange:u})]}))},Qr=function(e){var t=e.update,n=Object(gn.a)(e,["update"]),r=dr(n.modalKey),i=Object(a.useState)(!1),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)({}),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)([]),p=Object(Z.a)(O,2),v=p[0],x=p[1],m=function(e){var t=Object(a.useContext)(cr),n=Object(Z.a)(t,2),r=n[0],c=n[1],i=Object(a.useContext)(ir),s=Object(Z.a)(i,2),o=s[0],l=s[1];return Object(a.useCallback)((function(){var t=r.findIndex((function(t){return t===e}));if(-1!==t){var n=r.slice(0,t+1),a=o.slice(0,t+1);c(n),l(a)}}),[r,o,c,l,e])}(n.modalKey),g=Object(a.useCallback)(function(){var e=Object(He.a)(_e.a.mark((function e(n,r){var a,c,i,s,o;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:m(),l(!0),a=v.reduce((function(e,t){return Object(f.a)(Object(h.a)({},t.path,_r.Pending),e)}),{}),b(a),c=Object(Dn.a)(v),e.prev=6,c.s();case 8:if((i=c.n()).done){e.next=19;break}return s=i.value,a=Object(f.a)(Object(f.a)({},a),{},Object(h.a)({},s.path,_r.Processing)),b(a),o=Object(f.a)({id:s.id,type:s.type,language:s.language,path:s.path},r),e.next=15,Ze.modify(n,o);case 15:a=Object(f.a)(Object(f.a)({},a),{},Object(h.a)({},s.path,_r.Done)),b(a);case 17:e.next=8;break;case 19:e.next=24;break;case 21:e.prev=21,e.t0=e.catch(6),c.e(e.t0);case 24:return e.prev=24,c.f(),e.finish(24);case 27:l(!1),t();case 29:case"end":return e.stop()}}),e,null,[[6,21,24,27]])})));return function(t,n){return e.apply(this,arguments)}}(),[m,v,t]),y=sr(),k=Object(a.useMemo)((function(){return[{id:"state",accessor:"path",selectHide:!0,Cell:function(e){var t=e.value,n=e.loose;if(n){var r=n[0];if(t in r){var a=r[t];return Object(Nn.jsx)(Gr,{state:a})}}return null}},{Header:"Language",accessor:"_language",Cell:function(e){var t=e.value;return Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t,long:!0})})}},{id:"file",Header:"File",accessor:"path",Cell:function(e){var t=e.value,n=t.lastIndexOf("/");return-1===n&&(n=t.lastIndexOf("\\")),-1!==n?t.slice(n+1):t}}]}),[]),S=Object(a.useMemo)((function(){var e;return null!==(e=null===r||void 0===r?void 0:r.flatMap((function(e){var t=function(e){return re(e)?[e.radarrId,"movie"]:[e.sonarrEpisodeId,"episode"]}(e),n=Object(Z.a)(t,2),r=n[0],a=n[1];return e.subtitles.flatMap((function(e){return null!==e.path?[{id:r,type:a,language:e.code2,path:e.path,_language:e}]:[]}))})))&&void 0!==e?e:[]}),[r]),w=[Sr.useRowSelect,Dr],C=Object(a.useMemo)((function(){return Object(Nn.jsxs)(Tn.a,{as:kr.a,onSelect:function(e){return e&&g(e)},children:[Object(Nn.jsx)(Jn,{size:"sm",loading:o,disabled:0===v.length,icon:Pe.K,onClick:function(){return g("sync")},children:"Sync"}),Object(Nn.jsx)(Tn.a.Toggle,{disabled:o||0===v.length,split:!0,variant:"light",size:"sm",className:"px-2"}),Object(Nn.jsxs)(Tn.a.Menu,{children:[Object(Nn.jsx)(Tn.a.Item,{eventKey:"remove_HI",children:Object(Nn.jsx)(Zn,{icon:Pe.o,children:"Remove HI Tags"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"remove_tags",children:Object(Nn.jsx)(Zn,{icon:Pe.m,children:"Remove Style Tags"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"OCR_fixes",children:Object(Nn.jsx)(Zn,{icon:Pe.y,children:"OCR Fixes"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"common",children:Object(Nn.jsx)(Zn,{icon:Pe.E,children:"Common Fixes"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"fix_uppercase",children:Object(Nn.jsx)(Zn,{icon:Pe.V,children:"Fix Uppercase"})}),Object(Nn.jsx)(Tn.a.Item,{eventKey:"reverse_rtl",children:Object(Nn.jsx)(Zn,{icon:Pe.q,children:"Reverse RTL"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("add-color")},children:Object(Nn.jsx)(Zn,{icon:Pe.I,children:"Add Color"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("change-frame-rate")},children:Object(Nn.jsx)(Zn,{icon:Pe.u,children:"Change Frame Rate"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("adjust-times")},children:Object(Nn.jsx)(Zn,{icon:Pe.k,children:"Adjust Times"})}),Object(Nn.jsx)(Tn.a.Item,{onSelect:function(){return y("translate-sub")},children:Object(Nn.jsx)(Zn,{icon:Pe.A,children:"Translate"})})]})]})}),[y,o,v.length,g]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(hr,Object(f.a)(Object(f.a)({title:"Subtitle Tools",footer:C,closeable:!o},n),{},{children:Object(Nn.jsx)(na,{isSelecting:!o&&0!==S.length,emptyText:"No External Subtitles Found",plugins:w,columns:k,onSelect:x,data:S,loose:[j]})})),Object(Nn.jsx)(Yr,{process:g,modalKey:"add-color"}),Object(Nn.jsx)(qr,{process:g,modalKey:"change-frame-rate"}),Object(Nn.jsx)(Wr,{process:g,modalKey:"adjust-times"}),Object(Nn.jsx)(Vr,{process:g,modalKey:"translate-sub"})]})},Xr=function(e){var t=e.onSearch,n=e.onFocus,r=e.onBlur,c=e.className,i=Object(a.useState)(""),s=Object(Z.a)(i,2),o=s[0],u=s[1],d=Object(a.useState)([]),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(l.h)(),f=Object(a.useCallback)((function(e){""===e?O([]):t(e).then((function(e){return O(e)}))}),[t]),p=Object(a.useMemo)((function(){return Object($.throttle)(f,500)}),[f]);Object(a.useEffect)((function(){p(o)}),[o,p]);var v=Object(a.useCallback)((function(){u(""),O([])}),[]),x=Object(a.useMemo)((function(){var e=b.map((function(e){return Object(Nn.jsx)(Tn.a.Item,{eventKey:e.link,disabled:void 0===e.link,children:Object(Nn.jsx)("span",{children:e.name})},e.name)}));return 0===e.length&&e.push(Object(Nn.jsx)(Tn.a.Header,{children:"No Found"},"notify")),e}),[b]);return Object(Nn.jsxs)(Tn.a,{show:0!==o.length,className:c,onFocus:n,onBlur:r,onSelect:function(e){e&&(v(),h.push(e))},children:[Object(Nn.jsx)(Mn.a.Control,{type:"text",size:"sm",placeholder:"Search...",value:o,onChange:function(e){return u(e.currentTarget.value)}}),Object(Nn.jsx)(Tn.a.Menu,{style:{maxHeight:256,overflowY:"auto"},children:x})]})},Jr=n(488);function Zr(e){return{style:{emptyText:e.emptyText,responsive:e.responsive,hoverable:e.hoverable,striped:e.striped,borderless:e.borderless,small:e.small,hideHeader:e.hideHeader,headersRenderer:e.headersRenderer,rowRenderer:e.rowRenderer},options:Object(gn.a)(e,["emptyText","responsive","hoverable","striped","borderless","small","hideHeader","headersRenderer","rowRenderer"])}}function $r(e){return e.map((function(e){return Object(Nn.jsx)("th",Object(f.a)(Object(f.a)({},e.getHeaderProps()),{},{children:e.render("Header")}))}))}function ea(e){return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getRowProps()),{},{children:e.cells.map((function(e){return Object(Nn.jsx)("td",Object(f.a)(Object(f.a)({className:e.column.className},e.getCellProps()),{},{children:e.render("Cell")}))}))}))}function ta(e){var t=e.emptyText,n=e.responsive,r=e.hoverable,c=e.striped,i=e.borderless,s=e.small,o=e.hideHeader,l=e.headers,u=e.rows,d=e.headersRenderer,j=e.rowRenderer,b=e.prepareRow,O=e.tableProps,h=e.tableBodyProps,p=Object(a.useMemo)((function(){return l.reduce((function(e,t){return t.headers.length>e?t.headers.length:e}),0)}),[l]),v=0===u.length,x=null!==d&&void 0!==d?d:$r,m=null!==j&&void 0!==j?j:ea;return Object(Nn.jsxs)(Jr.a,Object(f.a)(Object(f.a)({size:s?"sm":void 0,striped:null===c||void 0===c||c,borderless:null===i||void 0===i||i,hover:r,responsive:null===n||void 0===n||n},O),{},{children:[Object(Nn.jsx)("thead",{hidden:o,children:l.map((function(e){return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getHeaderGroupProps()),{},{children:x(e.headers)}))}))}),Object(Nn.jsx)("tbody",Object(f.a)(Object(f.a)({},h),{},{children:t&&v?Object(Nn.jsx)("tr",{children:Object(Nn.jsx)("td",{colSpan:p,className:"text-center",children:t})}):u.map((function(e){return b(e),m(e)}))}))]}))}function na(e){var t=e.plugins,n=Zr(Object(gn.a)(e,["plugins"])),r=n.style,a=n.options,c=Sr.useTable.apply(void 0,[a,Hr].concat(Object(J.a)(null!==t&&void 0!==t?t:[]))),i=c.getTableProps,s=c.getTableBodyProps,o=c.headerGroups,l=c.rows,u=c.prepareRow;return Object(Nn.jsx)(ta,Object(f.a)(Object(f.a)({},r),{},{headers:o,rows:l,prepareRow:u,tableProps:i(),tableBodyProps:s()}))}function ra(e,t){return e.isGrouped?Object(Nn.jsx)("span",Object(f.a)(Object(f.a)({},t.getToggleRowExpandedProps()),{},{children:e.render("Cell")})):t.canExpand||e.isAggregated?null:e.render("Cell")}function aa(e){if(e.canExpand){var t=e.cells.find((function(e){return e.isGrouped}));if(t){var n=e.isExpanded?90:void 0;return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getRowProps()),{},{children:Object(Nn.jsx)("td",Object(f.a)(Object(f.a)({className:"p-0"},t.getCellProps()),{},{colSpan:e.cells.length,children:Object(Nn.jsxs)("span",Object(f.a)(Object(f.a)({},e.getToggleRowExpandedProps()),{},{className:"d-flex align-items-center p-2",children:[t.render("Cell"),Object(Nn.jsx)(Ae.a,{className:"mx-2",icon:Pe.h,rotation:n})]}))}))}))}return null}return Object(Nn.jsx)("tr",Object(f.a)(Object(f.a)({},e.getRowProps()),{},{children:e.cells.filter((function(e){return!e.isPlaceholder})).map((function(t){return Object(Nn.jsx)("td",Object(f.a)(Object(f.a)({className:t.column.className},t.getCellProps()),{},{children:ra(t,e)}))}))}))}function ca(e){return e.filter((function(e){return!e.isGrouped})).map((function(e){return Object(Nn.jsx)("th",Object(f.a)(Object(f.a)({},e.getHeaderProps()),{},{children:e.render("Header")}))}))}var ia,sa=function(e){var t=[Sr.useGroupBy,Sr.useSortBy,Sr.useExpanded];return Object(Nn.jsx)(na,Object(f.a)(Object(f.a)({},e),{},{plugins:t,headersRenderer:ca,rowRenderer:aa}))},oa=n(506),la=n(258),ua=function(e){var t=e.count,n=e.index,r=e.size,c=e.total,i=e.canPrevious,s=e.previous,o=e.canNext,l=e.next,u=e.goto,d=e.loadState,j=0===c?0:r*n+1,b=Math.min(r*(n+1),c),O=void 0!==d,h=Object(a.useMemo)((function(){return Object(J.a)(Array(t).keys()).map((function(e){return Math.abs(e-n)>=4&&0!==e&&e!==t-1?null:Object(Nn.jsx)(oa.a.Item,{disabled:O,active:n===e,onClick:function(){return u(e)},children:e+1},e)})).flatMap((function(e,t,n){return null===e?null===n[t+1]?[]:Object(Nn.jsx)(oa.a.Ellipsis,{disabled:!0},t):[e]}))}),[t,n,u,O]);return Object(Nn.jsx)(Me.a,{fluid:!0,className:"mb-3",children:Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)(la.a,{className:"d-flex align-items-center justify-content-start",children:Object(Nn.jsxs)("span",{children:["Show ",j," to ",b," of ",c," entries"]})}),Object(Nn.jsx)(la.a,{className:"d-flex justify-content-end",children:Object(Nn.jsxs)(oa.a,{className:"m-0",hidden:t<=1,children:[Object(Nn.jsx)(oa.a.Prev,{onClick:s,disabled:!i&&O}),h,Object(Nn.jsx)(oa.a.Next,{onClick:l,disabled:!o&&O})]})})]})})};function da(e){var t=e.async,n=e.autoScroll,r=e.canSelect,i=e.plugins,s=Zr(Object(gn.a)(e,["async","autoScroll","canSelect","plugins"])),o=s.style,l=s.options,u=[Hr,Sr.usePagination];t&&u.push(Tr),r&&u.push(Sr.useRowSelect,Dr),i&&u.push.apply(u,Object(J.a)(i));var d=Sr.useTable.apply(void 0,[l].concat(u)),j=d.getTableProps,b=d.getTableBodyProps,O=d.headerGroups,h=d.rows,p=d.prepareRow,v=d.page,x=d.canNextPage,m=d.canPreviousPage,g=d.pageCount,y=d.gotoPage,k=d.nextPage,S=d.previousPage,w=d.setPageSize,C=d.state,N=C.pageIndex,I=C.pageSize,P=C.pageToLoad,A=C.needLoadingScreen,T=tn((function(e){return e.site.pageSize}));Object(a.useEffect)((function(){n&&be()}),[N,n]),Object(a.useEffect)((function(){var e=l.isSelecting;r&&!Object($.isUndefined)(e)&&w(e?h.length:T)}),[r,T,l.isSelecting,h.length,w]);var M=l.asyncState?l.asyncState.data.order.length:h.length,E=Object(a.useCallback)((function(e){var t=N*I,n=t+I;return!1===e.order.slice(t,n).every($.isNull)}),[N,I]);return A&&l.asyncState?Object(Nn.jsx)(Yn,{state:l.asyncState,exist:E}):Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(ta,Object(f.a)(Object(f.a)({},o),{},{headers:O,rows:v,prepareRow:p,tableProps:j(),tableBodyProps:b()})),Object(Nn.jsx)(ua,{loadState:P,count:g,index:N,size:I,total:M,canPrevious:m,canNext:x,previous:S,next:k,goto:y})]})}!function(e){e[e.Delete=0]="Delete",e[e.Download=1]="Download",e[e.Manual=2]="Manual",e[e.Upgrade=3]="Upgrade",e[e.Upload=4]="Upload",e[e.Sync=5]="Sync"}(ia||(ia={}));var ja=function(e){var t=e.action,n=e.title,r=null;switch(t){case ia.Delete:r=Pe.Y;break;case ia.Download:r=Pe.p;break;case ia.Manual:r=Pe.ab;break;case ia.Sync:r=Pe.k;break;case ia.Upgrade:r=Pe.N;break;case ia.Upload:r=Pe.l}return r?Object(Nn.jsx)(Ae.a,{title:n,icon:r}):null},ba=function(e){var t=e.messages,n=Object(gn.a)(e,["messages"]),r=Object(Nn.jsx)(Sn.a,{hidden:0===t.length,id:"overlay-icon",children:Object(Nn.jsx)(Sn.a.Content,{children:t.map((function(e){return Object(Nn.jsx)("li",{children:e},e)}))})});return Object(Nn.jsx)(wn.a,{overlay:r,children:Object(Nn.jsx)(Ae.a,Object(f.a)({},n))})},Oa=function(e){var t=e.children,n=e.animation;return Object(Nn.jsxs)("div",{className:"d-flex flex-column flex-grow-1 align-items-center py-5",children:[Object(Nn.jsx)(Cn.a,{animation:null!==n&&void 0!==n?n:"border",className:"mb-2"}),t]})},ha=function(e){var t=e.children,n=e.format,r=Object(a.useMemo)((function(){return kn()(t,null!==n&&void 0!==n?n:"DD/MM/YYYY h:mm:ss").fromNow()}),[t,n]);return Object(Nn.jsx)("span",{children:r})},fa=function(e){var t=e.text,n=e.className,r=e.long,c=Object(a.useMemo)((function(){var e=t.code2,n=":HI",a=":Forced";r&&(e=t.name,n=" HI",a=" Forced");var c=e;return t.hi?c+=n:t.forced&&(c+=a),c}),[t,r]);return Object(Nn.jsx)("span",{title:t.name,className:n,children:c})},pa=n(489),va=n(504),xa="data:image/png;base64,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",ma=n(286),ga=n(260),ya=c.a.createContext([]),ka=c.a.createContext({}),Sa=function(e){var t=e.link,n=e.name,r=e.icon,c=Object(a.useContext)(ka),i=Object(a.useContext)(Ss),s=Object(a.useMemo)((function(){var e=null;if(n in c){var t=c[n];"number"===typeof t&&(e=t)}return e}),[c,n]);return Object(Nn.jsx)(u.c,{activeClassName:"sb-active",className:"list-group-item list-group-item-action sidebar-button",to:t,onClick:i,children:Object(Nn.jsx)(Ca,{badge:null!==s&&void 0!==s?s:void 0,name:n,icon:r})})},wa=function(e){var t=e.icon,n=e.name,r=e.children,c=Object(a.useContext)(ka),i=Object(a.useContext)(ya),s=Object(a.useContext)(Ss),o=n.toLowerCase(),l=tn((function(e){return e.site.sidebar})),d=Aa(),j=Object(a.useMemo)((function(){var e=null,t=null;if(n in c){var r=c[n];if("number"===typeof r)e=r;else if("object"===typeof r)for(var a in e=0,t=r,r)e+=r[a]}return[e,t]}),[c,n]),b=Object(Z.a)(j,2),O=b[0],h=b[1],f=Object(a.useMemo)((function(){return l===o}),[l,o]),p=Object(a.useMemo)((function(){return"sidebar-collapse-box ".concat(f?"active":"")}),[f]),v=Object(a.useMemo)((function(){return r.filter((function(e){var t;return!i.includes(null!==(t=e.hiddenKey)&&void 0!==t?t:"")})).map((function(e){var t,n=null;return h&&e.name in h&&(n=h[e.name]),Object(Nn.jsx)(u.c,{activeClassName:"sb-active",className:"list-group-item list-group-item-action sidebar-button sb-collapse",to:e.link,onClick:s,children:Object(Nn.jsx)(Ca,{badge:0===n?void 0:null!==(t=n)&&void 0!==t?t:void 0,name:e.name})},e.name)}))}),[r,i,h,s]);return 0===v.length?null:Object(Nn.jsxs)("div",{className:p,children:[Object(Nn.jsx)(ma.a,{action:!0,className:"sidebar-button",onClick:function(){d(f?"":o)},children:Object(Nn.jsx)(Ca,{badge:0===O?void 0:null!==O&&void 0!==O?O:void 0,icon:t,name:n})}),Object(Nn.jsx)(ga.a,{in:f,children:Object(Nn.jsx)("div",{className:"sidebar-collapse",children:v})})]})},Ca=function(e){var t=e.name,n=e.icon,r=e.badge;return Object(Nn.jsxs)(c.a.Fragment,{children:[n&&Object(Nn.jsx)(Ae.a,{size:"1x",className:"icon",icon:n}),Object(Nn.jsxs)("span",{className:"d-flex flex-grow-1 justify-content-between",children:[t," ",Object(Nn.jsx)(Qn.a,{variant:"secondary",children:r})]})]})},Na="sonarr-disabled",Ia="radarr-disabled",Pa=[{icon:Pe.K,name:"Series",link:"/series",hiddenKey:Na},{icon:Pe.u,name:"Movies",link:"/movies",hiddenKey:Ia},{icon:Pe.k,name:"History",children:[{name:"Series",link:"/history/series",hiddenKey:Na},{name:"Movies",link:"/history/movies",hiddenKey:Ia},{name:"Statistics",link:"/history/stats"}]},{icon:Pe.t,name:"Blacklist",children:[{name:"Series",link:"/blacklist/series",hiddenKey:Na},{name:"Movies",link:"/blacklist/movies",hiddenKey:Ia}]},{icon:Pe.s,name:"Wanted",children:[{name:"Series",link:"/wanted/series",hiddenKey:Na},{name:"Movies",link:"/wanted/movies",hiddenKey:Ia}]},{icon:Pe.n,name:"Settings",children:[{name:"General",link:"/settings/general"},{name:"Languages",link:"/settings/languages"},{name:"Providers",link:"/settings/providers"},{name:"Subtitles",link:"/settings/subtitles"},{name:"Sonarr",link:"/settings/sonarr"},{name:"Radarr",link:"/settings/radarr"},{name:"Notifications",link:"/settings/notifications"},{name:"Scheduler",link:"/settings/scheduler"},{name:"UI",link:"/settings/ui"}]},{icon:Pe.B,name:"System",children:[{name:"Tasks",link:"/system/tasks"},{name:"Logs",link:"/system/logs"},{name:"Providers",link:"/system/providers"},{name:"Status",link:"/system/status"},{name:"Releases",link:"/system/releases"}]}];n(340);function Aa(){return nn(Et)}var Ta=function(e){var t=e.open;ce(nn(It));var n=Object(a.useContext)(Ss),r=tn((function(e){return e.site.badges})),i=r.movies,s=r.episodes,o=r.providers,u=Object(a.useMemo)((function(){return{Wanted:{Series:s,Movies:i},System:{Providers:o}}}),[i,s,o]),d=xn(),j=mn(),b=Object(a.useMemo)((function(){var e=[];return d||e.push(Na),j||e.push(Ia),e}),[d,j]),O=Object(l.h)(),h=Aa();Object(a.useEffect)((function(){var e=O.location.pathname.split("/"),t=e.length;h(t>=3?e[t-2]:e[t-1])}),[O.location.pathname,h]);var p=["sidebar-container"],v=["sidebar-overlay"];!0===t&&(p.push("open"),v.push("open"));var x=Object(a.useMemo)((function(){return Pa.map((function(e){var t;return b.includes(null!==(t=e.hiddenKey)&&void 0!==t?t:"")?null:"children"in e?Object(Nn.jsx)(wa,Object(f.a)({},e),e.name):Object(Nn.jsx)(Sa,Object(f.a)({},e),e.link)}))}),[b]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsxs)("aside",{className:p.join(" "),children:[Object(Nn.jsx)(Me.a,{className:"sidebar-title d-flex align-items-center d-md-none",children:Object(Nn.jsx)(pa.a,{alt:"brand",src:xa,width:"32",height:"32"})}),Object(Nn.jsx)(ya.Provider,{value:b,children:Object(Nn.jsx)(ka.Provider,{value:u,children:Object(Nn.jsx)(va.a,{variant:"flush",children:x})})})]}),Object(Nn.jsx)("div",{className:v.join(" "),onClick:n})]})},Ma=n(500);n(341);function Ea(e){return Ba.apply(this,arguments)}function Ba(){return(Ba=Object(He.a)(_e.a.mark((function e(t){var n;return _e.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,$e.search(t);case 2:return n=e.sent,e.abrupt("return",n.map((function(e){var t;return t=e.sonarrSeriesId?"/series/".concat(e.sonarrSeriesId):e.radarrId?"/movies/".concat(e.radarrId):"",{name:"".concat(e.title," (").concat(e.year,")"),link:t}})));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Ka=function(){var e,t,n=nn(Ct),r=cn(),c="none"!==(null!==(e=null===(t=Object(Z.a)(r,1)[0].data)||void 0===t?void 0:t.auth.type)&&void 0!==e?e:"none"),i=Object(a.useContext)(Ss),s=tn((function(e){return e.site.offline})),o=Object(a.useMemo)((function(){return Object(Nn.jsxs)(Tn.a,{alignRight:!0,children:[Object(Nn.jsx)(Tn.a.Toggle,{className:"dropdown-hidden",as:Be.a,children:Object(Nn.jsx)(Ae.a,{icon:Pe.ab})}),Object(Nn.jsxs)(Tn.a.Menu,{children:[Object(Nn.jsx)(Tn.a.Item,{onClick:function(){$e.restart()},children:"Restart"}),Object(Nn.jsx)(Tn.a.Item,{onClick:function(){$e.shutdown()},children:"Shutdown"}),Object(Nn.jsx)(Tn.a.Divider,{hidden:!c}),Object(Nn.jsx)(Tn.a.Item,{hidden:!c,onClick:function(){$e.logout().then((function(){return n()}))},children:"Logout"})]})]})}),[c,n]),l=Object(a.useState)(!1),u=Object(Z.a)(l,2),d=u[0],j=u[1],b=Object(a.useCallback)((function(){j(!0),$e.status().finally((function(){return j(!1)}))}),[]),O=ae();return Object(Nn.jsxs)(Ma.a,{bg:"primary",className:"flex-grow-1 px-0",children:[Object(Nn.jsx)("div",{className:"header-icon px-3 m-0 d-none d-md-block",children:Object(Nn.jsx)(Ma.a.Brand,{href:O,className:"",children:Object(Nn.jsx)(pa.a,{alt:"brand",src:xa,width:"32",height:"32"})})}),Object(Nn.jsx)(Be.a,{className:"mx-2 m-0 d-md-none",onClick:i,children:Object(Nn.jsx)(Ae.a,{icon:Pe.c})}),Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{noGutters:!0,className:"flex-grow-1",children:[Object(Nn.jsx)(la.a,{xs:6,sm:4,className:"d-flex align-items-center",children:Object(Nn.jsx)(Xr,{onSearch:Ea})}),Object(Nn.jsxs)(la.a,{className:"d-flex flex-row align-items-center justify-content-end pr-2",children:[Object(Nn.jsx)(Be.a,{href:"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XHHRWXT9YB7WE&source=url",target:"_blank",children:Object(Nn.jsx)(Ae.a,{icon:Pe.w})}),s?Object(Nn.jsx)(Jn,{loading:d,className:"ml-2",variant:"warning",icon:Pe.H,onClick:b,children:"Reconnect"}):o]})]})})]})},za=n(501);n(342);var Da=function(e){var t=e.message,n=e.id,r=e.type,c=nn(Tt),i=Object(a.useCallback)((function(){return c(n)}),[c,n]);return Object(Nn.jsxs)(za.a,{onClose:i,animation:!1,children:[Object(Nn.jsxs)(za.a.Header,{children:[Object(Nn.jsx)(Ae.a,{className:"mr-1",icon:Pe.s}),Object(Nn.jsx)("strong",{className:"mr-auto",children:Object($.capitalize)(r)})]}),Object(Nn.jsx)(za.a.Body,{children:t})]})},La=function(){var e=tn((function(e){return e.site.notifications})),t=Object(a.useMemo)((function(){return e.map((function(e,t){return Object(Nn.jsx)(Da,Object(f.a)({},e),e.id)}))}),[e]);return Object(Nn.jsx)("div",{className:"alert-container",children:Object(Nn.jsx)("div",{className:"toast-container",children:t})})},Ra="/empty-page",_a=function(){return Object(Nn.jsxs)(Me.a,{className:"d-flex flex-column align-items-center my-5",children:[Object(Nn.jsxs)("h1",{children:[Object(Nn.jsx)(Ae.a,{className:"mr-2",icon:An.c}),"404"]}),Object(Nn.jsx)("p",{children:"The Request URL No Found"})]})},Ha=n(36),Ua=function(e){var t=e.blacklist,n=e.update,r=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t="/movies/".concat(e.row.original.radarrId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Date",accessor:"timestamp"},{accessor:"subs_id",Cell:function(e){var t=e.value;return Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,promise:function(){return Qe.deleteBlacklist(!1,{provider:e.row.original.provider,subs_id:t})},onSuccess:n,children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[n]);return Object(Nn.jsx)(da,{emptyText:"No Blacklisted Movies Subtitles",columns:r,data:t})},Fa=function(){var e=function(){var e=nn(Ut);return an(tn((function(e){return e.movie.blacklist})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];return ce(r),Object(Nn.jsx)(Yn,{state:n,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Movies Blacklist - Bazarr"})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Y,disabled:0===e.length,promise:function(){return Qe.deleteBlacklist(!0)},onSuccess:r,children:"Remove All"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Ua,{blacklist:e,update:r})})]})}})},Ga=function(e){var t=e.blacklist,n=e.update,r=Object(a.useMemo)((function(){return[{Header:"Series",accessor:"seriesTitle",className:"text-nowrap",Cell:function(e){var t="/series/".concat(e.row.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Episode",accessor:"episode_number"},{accessor:"episodeTitle"},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(fa,{text:t,long:!0}):null}},{Header:"Provider",accessor:"provider"},{Header:"Date",accessor:"timestamp"},{accessor:"subs_id",Cell:function(e){var t=e.value;return Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,promise:function(){return qe.deleteBlacklist(!1,{provider:e.row.original.provider,subs_id:t})},onSuccess:n,children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[n]);return Object(Nn.jsx)(da,{emptyText:"No Blacklisted Series Subtitles",columns:r,data:t})},Ya=function(){var e=function(){var e=nn(en);return an(tn((function(e){return e.series.blacklist})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];return ce(r),Object(Nn.jsx)(Yn,{state:n,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Series Blacklist - Bazarr"})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Y,disabled:0===e.length,promise:function(){return qe.deleteBlacklist(!0)},onSuccess:r,children:"Remove All"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Ga,{blacklist:e,update:r})})]})}})},qa=function(){var e=xn(),t=mn();return Object(Nn.jsxs)(l.e,{children:[e&&Object(Nn.jsx)(l.c,{exact:!0,path:"/blacklist/series",children:Object(Nn.jsx)(Ya,{})}),t&&Object(Nn.jsx)(l.c,{path:"/blacklist/movies",children:Object(Nn.jsx)(Fa,{})}),Object(Nn.jsx)(l.c,{path:"/blacklist/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},Wa=function(e){var t=e.state,n=e.columns,r=e.type,a=e.tableUpdater,c=Object($.capitalize)(r);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[c," History - Bazarr"]})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Yn,{state:t,children:function(e){return Object(Nn.jsx)(da,{emptyText:"Nothing Found in ".concat(c," History"),columns:n,data:e,externalUpdate:a})}})})]})},Va=function(){var e=function(){var e=nn(Lt);return an(tn((function(e){return e.movie.historyList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];ce(r);var c=Object(a.useCallback)((function(e){return r()}),[r]),i=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){return Object(Nn.jsx)(ja,{action:e.value})}},{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t="/movies/".concat(e.row.original.radarrId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t,long:!0})}):null}},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp",className:"text-nowrap"},{accessor:"description",Cell:function(e){var t=e.row,n=e.value,r=Object(Nn.jsx)(Sn.a,{id:"description-".concat(t.id),children:Object(Nn.jsx)(Sn.a.Content,{children:n})});return Object(Nn.jsx)(wn.a,{overlay:r,children:Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.z})})}},{accessor:"blacklisted",Cell:function(e){var t=e.row,n=e.externalUpdate,r=t.original;return Object(Nn.jsx)(fr,{history:r,update:function(){return n&&n(t)},promise:function(e){return Qe.addBlacklist(r.radarrId,e)}})}}]}),[]);return Object(Nn.jsx)(Wa,{type:"movies",state:n,columns:i,tableUpdater:c})},Qa=function(){var e=function(){var e=nn(Zt);return an(tn((function(e){return e.series.historyList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1];ce(r);var c=Object(a.useCallback)((function(e){return r()}),[r]),i=Object(a.useMemo)((function(){return[{accessor:"action",className:"text-center",Cell:function(e){var t=e.value;return Object(Nn.jsx)(ja,{action:t})}},{Header:"Series",accessor:"seriesTitle",Cell:function(e){var t="/series/".concat(e.row.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Episode",accessor:"episode_number"},{Header:"Title",accessor:"episodeTitle"},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value;return t?Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t,long:!0})}):null}},{Header:"Score",accessor:"score"},{Header:"Date",accessor:"timestamp",className:"text-nowrap"},{accessor:"description",Cell:function(e){var t=e.row,n=e.value,r=Object(Nn.jsx)(Sn.a,{id:"description-".concat(t.id),children:Object(Nn.jsx)(Sn.a.Content,{children:n})});return Object(Nn.jsx)(wn.a,{overlay:r,children:Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.z})})}},{accessor:"blacklisted",Cell:function(e){var t=e.row,n=e.externalUpdate,r=t.original,a=r.sonarrEpisodeId,c=r.sonarrSeriesId;return Object(Nn.jsx)(fr,{history:r,update:function(){return n&&n(t)},promise:function(e){return qe.addBlacklist(c,a,e)}})}}]}),[]);return Object(Nn.jsx)(Wa,{type:"series",state:n,columns:i,tableUpdater:c})},Xa=n(509),Ja=n(490),Za=n(494),$a=n(280),ec=n(281),tc=n(140),nc=n(136),rc=n(285),ac=[{label:"Automatically Downloaded",value:0},{label:"Manually Downloaded",value:1},{label:"Upgraded",value:2}],cc=[{label:"Last Week",value:"week"},{label:"Last Month",value:"month"},{label:"Last Trimester",value:"trimester"},{label:"Last Year",value:"year"}];function ic(e){var t=e.movies.map((function(e){return{date:e.date,movies:e.count}})),n=e.series.map((function(e){return{date:e.date,series:e.count}}));return Object($.merge)(t,n)}var sc=function(e){return e.name},oc=function(e){var t=e.children;return Object(Nn.jsx)(la.a,{xs:6,lg:3,className:"p-1",children:t})},lc=function(){var e=ln(!0),t=Object(Z.a)(e,1)[0],n=pn(),r=Object(Z.a)(n,2),i=r[0];ce(r[1]);var s=Object(a.useState)("month"),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useState)(null),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(a.useState)(null),f=Object(Z.a)(h,2),p=f[0],v=f[1],x=Object(a.useState)(null),m=Object(Z.a)(x,2),g=m[0],y=m[1],k=Object(a.useCallback)((function(){return Ve.stats(l,null!==b&&void 0!==b?b:void 0,null===g||void 0===g?void 0:g.name,null===p||void 0===p?void 0:p.code2)}),[l,null===p||void 0===p?void 0:p.code2,b,g]);return Object(Nn.jsxs)(Me.a,{fluid:!0,className:"vh-75",children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"History Statistics - Bazarr"})}),Object(Nn.jsx)(qn,{promise:k,children:function(e){return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsxs)(nr,{scroll:!1,children:[Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(_n,{placeholder:"Time...",options:cc,value:l,onChange:function(e){return u(null!==e&&void 0!==e?e:"month")}})}),Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(_n,{placeholder:"Action...",clearable:!0,options:ac,value:b,onChange:O})}),Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(Wn,{placeholder:"Provider...",clearable:!0,state:i,label:sc,onChange:y})}),Object(Nn.jsx)(oc,{children:Object(Nn.jsx)(rr,{clearable:!0,options:t,value:p,onChange:v})})]}),Object(Nn.jsx)(Xa.a,{height:"100%",children:Object(Nn.jsxs)(Ja.a,{data:ic(e),children:[Object(Nn.jsx)(Za.a,{strokeDasharray:"4 2"}),Object(Nn.jsx)($a.a,{dataKey:"date"}),Object(Nn.jsx)(ec.a,{allowDecimals:!1}),Object(Nn.jsx)(tc.a,{}),Object(Nn.jsx)(nc.a,{verticalAlign:"top"}),Object(Nn.jsx)(rc.a,{name:"Series",dataKey:"series",fill:"#2493B6"}),Object(Nn.jsx)(rc.a,{name:"Movies",dataKey:"movies",fill:"#FFC22F"})]})})]})}})]})},uc=function(){var e=xn(),t=mn();return Object(Nn.jsxs)(l.e,{children:[e&&Object(Nn.jsx)(l.c,{exact:!0,path:"/history/series",children:Object(Nn.jsx)(Qa,{})}),t&&Object(Nn.jsx)(l.c,{exact:!0,path:"/history/movies",children:Object(Nn.jsx)(Va,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/history/stats",children:Object(Nn.jsx)(lc,{})}),Object(Nn.jsx)(l.c,{path:"/history/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},dc=function(e){var t,n,r,i=e.state,s=e.dirtyItems,o=e.update,l=e.modify,u=e.editMode,d=e.select,j=e.columns,b=e.loader,O=e.name,h=sr(),f=Object(a.useCallback)((function(e,t){h(t,e.original)}),[h]),p=i.data,v=Object(a.useMemo)((function(){return le(p)}),[p]),x=(t=v,n=s,r=jc,Object(a.useMemo)((function(){return ue(t,n,r)}),[t,n,r])),m=sn(),g=Object(Z.a)(m,1)[0];return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(da,{async:!0,autoScroll:!0,canSelect:!0,columns:j,data:x,asyncState:i,asyncId:oe,asyncLoader:b,loose:[g],isSelecting:u,onSelect:d,emptyText:"No ".concat(O," Found"),externalUpdate:f}),Object(Nn.jsx)(xr,{modalKey:"edit",submit:l,onSuccess:function(e){var t=oe(e);o([t])}})]})};function jc(e,t){return oe(e)===oe(t)}var bc=function(e){var t=e.updateAction,n=Object(gn.a)(e,["updateAction"]),r=n.state,i=Object(a.useState)(!1),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=rn(t,Object(a.useCallback)((function(){l((function(e){return b(e),e})),k([])}),[])),h=Object(a.useState)([]),p=Object(Z.a)(h,2),v=p[0],x=p[1],m=Object(a.useState)([]),g=Object(Z.a)(m,2),y=g[0],k=g[1],S=sn(),w=Object(Z.a)(S,1)[0],C=Object(a.useMemo)((function(){var e=[];return e.push(Object(Nn.jsx)(Tn.a.Item,{children:"Clear Profile"},"clear-profile")),e.push(Object(Nn.jsx)(Tn.a.Divider,{},"dropdown-divider")),e.push.apply(e,Object(J.a)(w.map((function(e){return Object(Nn.jsx)(Tn.a.Item,{eventKey:e.profileId.toString(),children:e.name},e.profileId)})))),e}),[w]),N=Object(a.useCallback)((function(e){var t=e?parseInt(e):null,n=v.map((function(e){var n=Object(f.a)({},e);return n.profileId=t,n})),r=ue(y,n,jc);k(r)}),[v,y]),I=Object(a.useCallback)((function(){n.state.data.order.every(ne)?b(!0):O(),l(!0)}),[n.state.data.order,O]),P=Object(a.useCallback)((function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!e&&y.length>0){var t=y.map(oe);O(t)}else b(!1),k([]);l(!1),x([])}),[y,O]),A=Object(a.useCallback)((function(){var e={id:[],profileid:[]};return y.forEach((function(t){var n=oe(t);e.id.push(n),e.profileid.push(t.profileId)})),n.modify(e)}),[y,n]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[n.name," - Bazarr"]})}),Object(Nn.jsx)(nr,{scroll:!1,children:j?Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(nr.Group,{pos:"start",children:Object(Nn.jsxs)(Tn.a,{onSelect:N,children:[Object(Nn.jsx)(Tn.a.Toggle,{disabled:0===v.length,variant:"light",children:"Change Profile"}),Object(Nn.jsx)(Tn.a.Menu,{children:C})]})}),Object(Nn.jsxs)(nr.Group,{pos:"end",children:[Object(Nn.jsx)(nr.Button,{icon:Pe.Z,onClick:function(){return P(!0)},children:"Cancel"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.g,disabled:0===y.length,promise:A,onSuccess:function(){return P()},children:"Save"})]})]}):Object(Nn.jsx)(nr.Button,{updating:o!==j,disabled:0===r.data.order.length&&r.updating,icon:Pe.D,onClick:I,children:"Mass Edit"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(dc,Object(f.a)(Object(f.a)({},n),{},{update:O,dirtyItems:y,editMode:j,select:x}))})]})},Oc=function(){var e=hn(),t=Object(Z.a)(e,1)[0],n=nn(Rt),r=Object(a.useMemo)((function(){return[{accessor:"monitored",selectHide:!0,Cell:function(e){var t=e.value;return Object(Nn.jsx)(Ae.a,{title:t?"monitored":"unmonitored",icon:t?Pe.d:An.a})}},{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t=e.row,n=e.value;if(e.isSelecting)return n;var r,a="/movies/".concat(t.original.radarrId);return Object(Nn.jsx)(u.b,{to:a,title:null!==(r=t.original.sceneName)&&void 0!==r?r:n,children:Object(Nn.jsx)("span",{children:n})})}},{Header:"Exist",accessor:"exist",selectHide:!0,Cell:function(e){var t=e.row,n=e.value,r=t.original.path;return Object(Nn.jsx)(Ae.a,{title:r,icon:n?Pe.g:Pe.s})}},{Header:"Audio",accessor:"audio_language",Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{variant:"secondary",className:"mr-2",children:e.name},e.code2)}))}},{Header:"Languages Profile",accessor:"profileId",Cell:function(e){var t,n,r=e.value,a=e.loose;return a&&null!==(t=null===(n=a[0].find((function(e){return e.profileId===r})))||void 0===n?void 0:n.name)&&void 0!==t?t:null}},{accessor:"missing_subtitles",selectHide:!0,Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{className:"mx-2",variant:"warning",children:e.code2},e.code2)}))}},{accessor:"radarrId",selectHide:!0,Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Xn,{icon:Pe.bb,onClick:function(){return n&&n(t,"edit")}})}}]}),[]);return Object(Nn.jsx)(bc,{state:t,name:"Movies",loader:n,updateAction:Ht,columns:r,modify:function(e){return Qe.modify(e)}})},hc=function(e){var t=e.onSelect,n=e.onDownload,r=Object(gn.a)(e,["onSelect","onDownload"]),i=Object(a.useState)([]),s=Object(Z.a)(i,2),o=s[0],l=s[1],u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(!1),h=Object(Z.a)(O,2),p=h[0],v=h[1],x=dr(r.modalKey),m=Object(a.useCallback)((function(){x&&(v(!0),b(!0),(re(x)?Xe.movies(x.radarrId):Xe.episodes(x.sonarrEpisodeId)).then((function(e){return l(e)})).finally((function(){return b(!1)})))}),[x]),g=Object(a.useCallback)((function(){v(!1),b(!1)}),[]);Object(a.useEffect)((function(){x&&g()}),[x,g]);var y=Object(a.useMemo)((function(){return[{Header:"Score",accessor:function(e){return"".concat(e.score,"%")}},{accessor:"language",Cell:function(e){var t=e.row.original,n={code2:e.value,hi:"True"===t.hearing_impaired,forced:"True"===t.forced,name:""};return Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:n})})}},{Header:"Provider",accessor:"provider",Cell:function(e){var t=e.value,n=e.row.original.url;return n?Object(Nn.jsx)("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:t}):t}},{Header:"Release",accessor:"release_info",className:"text-nowrap",Cell:function(e){var t=e.value,n=Object(a.useMemo)((function(){return t.slice(1).map((function(e,t){return Object(Nn.jsx)(Tn.a.Item,{disabled:!0,className:"text-dark",children:e},t)}))}),[t]);if(0!==t.length){var r=t[0];return Object(Nn.jsxs)(Tn.a,{children:[Object(Nn.jsx)(Tn.a.Toggle,{disabled:1===t.length,className:"dropdown-hidden text-dark",variant:1===t.length?"link":"light",children:r}),Object(Nn.jsx)(Tn.a.Menu,{children:n})]})}return"Cannot get release info"}},{Header:"Upload",accessor:function(e){var t;return null!==(t=e.uploader)&&void 0!==t?t:"-"}},{accessor:"matches",Cell:function(e){var t=e.row.original,n=t.matches,r=t.dont_matches;return Object(Nn.jsx)(fc,{matches:n,dont:r})}},{accessor:"subtitle",Cell:function(e){var n=e.row,r=e.externalUpdate,a=n.original;return Object(Nn.jsx)(Vn,{size:"sm",variant:"light",noReset:!0,promise:function(){return t(x,a)},onSuccess:function(){return r&&r(n)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.p})})}}]}),[t,x]),k=Object(a.useMemo)((function(){var e,t;return p?j?Object(Nn.jsx)(Oa,{animation:"grow"}):Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)("p",{className:"mb-3 small",children:null!==(e=null===x||void 0===x?void 0:x.path)&&void 0!==e?e:""}),Object(Nn.jsx)(da,{emptyText:"No Result",columns:y,data:o,externalUpdate:n})]}):Object(Nn.jsxs)("div",{className:"px-4 py-5",children:[Object(Nn.jsx)("p",{className:"mb-3 small",children:null!==(t=null===x||void 0===x?void 0:x.path)&&void 0!==t?t:""}),Object(Nn.jsx)(Be.a,{variant:"primary",block:!0,onClick:m,children:"Start Search"})]})}),[p,j,y,o,m,null===x||void 0===x?void 0:x.path,n]),S=Object(a.useMemo)((function(){return Object(Nn.jsx)(Be.a,{variant:"light",disabled:!p,onClick:g,children:"Reset"})}),[p,g]),w=Object(a.useMemo)((function(){var e="Unknown";return x&&(e=x.sceneName?x.sceneName:(re(x),x.title)),"Search - ".concat(e)}),[x]);return Object(Nn.jsx)(Or,Object(f.a)(Object(f.a)({closeable:!j,size:"xl",title:w,footer:S},r),{},{children:k}))},fc=function(e){var t=e.matches,n=e.dont,r=Pe.g,c="var(--success)";n.length>0&&(r=Pe.z,c="var(--warning)");var i=Object(a.useMemo)((function(){return t.map((function(e,t){return Object(Nn.jsx)("p",{className:"text-nowrap m-0",children:e},"match-".concat(t))}))}),[t]),s=Object(a.useMemo)((function(){return n.map((function(e,t){return Object(Nn.jsx)("p",{className:"text-nowrap m-0",children:e},"dont-".concat(t))}))}),[n]),o=Object(a.useMemo)((function(){return Object(Nn.jsx)(Sn.a,{id:"manual-search-matches-info",children:Object(Nn.jsx)(Sn.a.Content,{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsxs)(la.a,{xs:6,children:[Object(Nn.jsx)(Ae.a,{color:"var(--success)",icon:Pe.g}),i]}),Object(Nn.jsxs)(la.a,{xs:6,children:[Object(Nn.jsx)(Ae.a,{color:"var(--danger)",icon:Pe.W}),s]})]})})})})}),[i,s]);return Object(Nn.jsx)(wn.a,{overlay:o,children:Object(Nn.jsx)(Ae.a,{icon:r,color:c})})},pc=function(e){var t=e.icon,n=e.desc,r=e.children;return Object(Nn.jsxs)(Qn.a,{title:n,variant:"secondary",className:"mr-2 my-1 text-truncate",children:[Object(Nn.jsx)(Ae.a,{icon:t}),Object(Nn.jsx)("span",{className:"ml-1",children:r})]})},vc=function(e){var t=e.item,n=e.details,r=Object(a.useMemo)((function(){var e,r=[];return r.push(Object(Nn.jsx)(pc,{icon:An.e,desc:"File Path",children:t.path},"file-path")),r.push.apply(r,Object(J.a)(null!==(e=null===n||void 0===n?void 0:n.map((function(e,t){return Object(Nn.jsx)(pc,{icon:e.icon,children:e.text},de(t,"detail",e.text))})))&&void 0!==e?e:[])),t.tags.length>0&&r.push(Object(Nn.jsx)(pc,{icon:Pe.U,desc:"Tags",children:t.tags.join("|")},"tags")),r}),[n,t.path,t.tags]),c=Object(a.useMemo)((function(){return t.audio_language.map((function(e,t){return Object(Nn.jsx)(pc,{icon:Pe.G,desc:"Audio Language",children:e.name},de(t,"audio",e.code2))}))}),[t.audio_language]),i=on(t.profileId),s=dn(i),o=Object(a.useMemo)((function(){var e=[];return i&&(e.push(Object(Nn.jsx)(pc,{icon:Pe.S,desc:"Languages Profile",children:i.name},"language-profile")),e.push.apply(e,Object(J.a)(s.map((function(e,t){return Object(Nn.jsx)(pc,{icon:Pe.A,desc:"Language",children:Object(Nn.jsx)(fa,{long:!0,text:e})},de(t,"lang",e.code2))}))))),e}),[i,s]),l=Object(a.useMemo)((function(){return Object(Nn.jsxs)(Sn.a,{id:"item-overview-alternative",children:[Object(Nn.jsx)(Sn.a.Title,{children:"Alternate Titles"}),Object(Nn.jsx)(Sn.a.Content,{children:t.alternativeTitles.map((function(e,t){return Object(Nn.jsx)("li",{children:e},t)}))})]})}),[t.alternativeTitles]);return Object(Nn.jsx)(Me.a,{fluid:!0,style:{backgroundRepeat:"no-repeat",backgroundSize:"cover",backgroundPosition:"top center",backgroundImage:"url('".concat(t.fanart,"')")},children:Object(Nn.jsxs)(Te.a,{className:"p-4 pb-4",style:{backgroundColor:"rgba(0,0,0,0.7)"},children:[Object(Nn.jsx)(la.a,{sm:"auto",children:Object(Nn.jsx)(pa.a,{className:"d-none d-sm-block my-2",style:{maxHeight:250},src:t.poster})}),Object(Nn.jsx)(la.a,{children:Object(Nn.jsxs)(Me.a,{fluid:!0,className:"text-white",children:[Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)("h1",{children:t.title}),Object(Nn.jsx)("span",{hidden:0===t.alternativeTitles.length,children:Object(Nn.jsx)(wn.a,{overlay:l,children:Object(Nn.jsx)(Ae.a,{className:"mx-2",icon:An.b})})})]}),Object(Nn.jsx)(Te.a,{children:r}),Object(Nn.jsx)(Te.a,{children:c}),Object(Nn.jsx)(Te.a,{children:o}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)("span",{children:t.overview})})]})})]})})},xc="Missing Subtitles",mc=function(e){var t=e.movie,n=e.update,r=Object(a.useMemo)((function(){return[{Header:"Subtitle Path",accessor:"path",Cell:function(e){return null===e.value||0===e.value.length?"Video File Subtitle Track":e.value===xc?Object(Nn.jsx)("span",{className:"text-muted",children:e.value}):e.value}},{Header:"Language",accessor:"name",Cell:function(e){var t=e.row;return t.original.path===xc?Object(Nn.jsx)(Qn.a,{variant:"primary",children:Object(Nn.jsx)(fa,{text:t.original,long:!0})}):Object(Nn.jsx)(Qn.a,{variant:"secondary",children:Object(Nn.jsx)(fa,{text:t.original,long:!0})})}},{accessor:"code2",Cell:function(e){var r=e.row.original;return null===r.path||0===r.path.length?null:r.path===xc?Object(Nn.jsx)(Vn,{promise:function(){return Qe.downloadSubtitles(t.radarrId,{language:r.code2,hi:r.hi,forced:r.forced})},onSuccess:function(){return n(t.radarrId)},variant:"light",size:"sm",children:Object(Nn.jsx)(Ae.a,{icon:Pe.Q})}):Object(Nn.jsx)(Vn,{variant:"light",size:"sm",promise:function(){var e;return Qe.deleteSubtitles(t.radarrId,{language:r.code2,hi:r.hi,forced:r.forced,path:null!==(e=r.path)&&void 0!==e?e:""})},onSuccess:function(){return n(t.radarrId)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.Y})})}}]}),[t,n]),c=Object(a.useMemo)((function(){var e=t.missing_subtitles.map((function(e){return e.path=xc,e}));return t.subtitles.concat(e)}),[t.missing_subtitles,t.subtitles]);return Object(Nn.jsx)(na,{columns:r,data:c,emptyText:"No Subtitles Found For This Movie"})},gc=function(e,t){e=e;var n=t.language,r=t.hearing_impaired,a=t.forced,c=t.provider,i=t.subtitle;return Xe.downloadMovieSubtitle(e.radarrId,{language:n,hi:r,forced:a,provider:c,subtitle:i})},yc=Object(l.i)((function(e){var t=e.match,n=Number.parseInt(t.params.id),r=fn(n),c=Object(Z.a)(r,2),i=c[0],s=c[1];ce(s);var o=i.data,u=sr(),d=Object(a.useState)(!0),j=Object(Z.a)(d,2),b=j[0],O=j[1],h=Object(a.useCallback)((function(){null===i.data&&O(!1)}),[i.data]);if(ie(i,h),isNaN(n)||!b)return Object(Nn.jsx)(l.b,{to:Ra});if(!o)return Object(Nn.jsx)(Oa,{});var f=void 0!==o.profileId;return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[o.title," - Bazarr (Movies)"]})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsxs)(nr.Group,{pos:"start",children:[Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.T,promise:function(){return Qe.action({action:"scan-disk",radarrid:o.radarrId})},onSuccess:s,children:"Scan Disk"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Q,disabled:null===o.profileId,promise:function(){return Qe.action({action:"search-missing",radarrid:o.radarrId})},onSuccess:s,children:"Search"}),Object(Nn.jsx)(nr.Button,{icon:Pe.ab,disabled:null===o.profileId,onClick:function(){return u("manual-search",o)},children:"Manual"}),Object(Nn.jsx)(nr.Button,{icon:Pe.x,onClick:function(){return u("history",o)},children:"History"}),Object(Nn.jsx)(nr.Button,{icon:Pe.X,onClick:function(){return u("tools",[o])},children:"Tools"})]}),Object(Nn.jsxs)(nr.Group,{pos:"end",children:[Object(Nn.jsx)(nr.Button,{disabled:!f||null===o.profileId,icon:Pe.l,onClick:function(){return u("upload",o)},children:"Upload"}),Object(Nn.jsx)(nr.Button,{icon:Pe.bb,onClick:function(){return u("edit",o)},children:"Edit Movie"})]})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(vc,{item:o,details:[]})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(mc,{movie:o,update:s})}),Object(Nn.jsx)(xr,{modalKey:"edit",submit:function(e){return Qe.modify(e)},onSuccess:s}),Object(Nn.jsx)(Qr,{modalKey:"tools",size:"lg",update:s}),Object(Nn.jsx)(pr,{modalKey:"history",size:"lg"}),Object(Nn.jsx)(mr,{modalKey:"upload",size:"lg"}),Object(Nn.jsx)(hc,{modalKey:"manual-search",onDownload:s,onSelect:gc})]})})),kc=function(){return Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/movies",children:Object(Nn.jsx)(Oc,{})}),Object(Nn.jsx)(l.c,{path:"/movies/:id",children:Object(Nn.jsx)(yc,{})})]})},Sc=n(507),wc=function(){var e=jn(),t=Object(Z.a)(e,1)[0],n=nn(Vt),r=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"title",className:"text-nowrap",Cell:function(e){var t=e.row,n=e.value;if(e.isSelecting)return n;var r="/series/".concat(t.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:r,children:Object(Nn.jsx)("span",{children:n})})}},{Header:"Exist",accessor:"exist",selectHide:!0,Cell:function(e){var t=e.value,n=e.row.original.path;return Object(Nn.jsx)(Ae.a,{title:n,icon:t?Pe.g:Pe.s})}},{Header:"Audio",accessor:"audio_language",Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{variant:"secondary",className:"mr-2",children:e.name},e.code2)}))}},{Header:"Languages Profile",accessor:"profileId",Cell:function(e){var t,n,r=e.value,a=e.loose;return a&&null!==(t=null===(n=a[0].find((function(e){return e.profileId===r})))||void 0===n?void 0:n.name)&&void 0!==t?t:null}},{Header:"Episodes",accessor:"episodeFileCount",selectHide:!0,Cell:function(e){var t=e.row.original,n=t.episodeFileCount,r=t.episodeMissingCount,a=t.profileId,c=0,i="";0!==n&&a?(c=n-r,i="".concat(n-r,"/").concat(n)):c=0;var s=0===r?"primary":"warning";return Object(Nn.jsx)(Sc.a,{className:"my-a",variant:s,min:0,max:n,now:c,label:i})}},{accessor:"sonarrSeriesId",selectHide:!0,Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Xn,{icon:Pe.bb,onClick:function(){n&&n(t,"edit")}})}}]}),[]);return Object(Nn.jsx)(bc,{state:t,name:"Series",updateAction:$t,loader:n,columns:r,modify:function(e){return Je.modify(e)}})},Cc=function(e){var t=e.seriesid,n=e.episodeid,r=e.missing,a=e.subtitle,c=a.hi,i=a.forced,s=bn(t),o=Object(Z.a)(s,2)[1],l=a.path;return r||l?Object(Nn.jsxs)(Vn,{promise:function(){return r?qe.downloadSubtitles(t,n,{hi:c,forced:i,language:a.code2}):l?qe.deleteSubtitles(t,n,{hi:c,forced:i,path:l,language:a.code2}):null},onSuccess:o,as:Qn.a,className:"mr-1",variant:r?"primary":"secondary",children:[Object(Nn.jsx)(fa,{className:"pr-1",text:a}),Object(Nn.jsx)(Ae.a,{size:"sm",icon:r?Pe.Q:Pe.Y})]}):Object(Nn.jsx)(Qn.a,{className:"mr-1",variant:"secondary",children:Object(Nn.jsx)(fa,{text:a,long:!1})})},Nc=function(e,t){e=e;var n=t.language,r=t.hearing_impaired,a=t.forced,c=t.provider,i=t.subtitle;return Xe.downloadEpisodeSubtitle(e.sonarrSeriesId,e.sonarrEpisodeId,{language:n,hi:r,forced:a,provider:c,subtitle:i})},Ic=function(e){var t=e.episodes,n=e.update,r=sr(),i=Object(a.useMemo)((function(){return[{accessor:"monitored",Cell:function(e){return Object(Nn.jsx)(Ae.a,{title:e.value?"monitored":"unmonitored",icon:e.value?Pe.d:An.a})}},{accessor:"season",Cell:function(e){return"Season ".concat(e.value)}},{Header:"Episode",accessor:"episode"},{Header:"Title",accessor:"title",className:"text-nowrap"},{Header:"Audio",accessor:"audio_language",Cell:function(e){return e.value.map((function(e){return Object(Nn.jsx)(Qn.a,{variant:"secondary",children:e.name},e.code2)}))}},{Header:"Subtitles",accessor:"missing_subtitles",Cell:function(e){var t=e.row.original,n=t.sonarrSeriesId;return Object(a.useMemo)((function(){var e=t.sonarrEpisodeId,r=t.missing_subtitles.map((function(t,r){return Object(Nn.jsx)(Cc,{missing:!0,seriesid:n,episodeid:e,subtitle:t},de(r,t.code2,"missing"))})),a=t.subtitles.filter((function(e){return-1===t.missing_subtitles.findIndex((function(t){return t.code2===e.code2}))})).map((function(t,r){return Object(Nn.jsx)(Cc,{seriesid:n,episodeid:e,subtitle:t},de(r,t.code2,"valid"))}));return[].concat(Object(J.a)(r),Object(J.a)(a))}),[t,n])}},{Header:"Actions",accessor:"sonarrEpisodeId",Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsxs)(kr.a,{children:[Object(Nn.jsx)(Jn,{icon:Pe.ab,onClick:function(){n&&n(t,"manual-search")}}),Object(Nn.jsx)(Jn,{icon:Pe.x,onClick:function(){n&&n(t,"history")}}),Object(Nn.jsx)(Jn,{icon:Pe.e,onClick:function(){n&&n(t,"tools")}})]})}}]}),[]),s=Object(a.useCallback)((function(e,t){r(t,"tools"===t?[e.original]:e.original)}),[r]),o=Object(a.useMemo)((function(){return t.data.reduce((function(e,t){return Math.max(e,t.season)}),0)}),[t]),l=Object(a.useMemo)((function(){return{columns:i,data:t.data,externalUpdate:s,initialState:{sortBy:[{id:"season",desc:!0},{id:"episode",desc:!0}],groupBy:["season"],expanded:Object(h.a)({},"season:".concat(o),!0)}}}),[t,i,o,s]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Yn,{state:t,children:function(){return Object(Nn.jsx)(sa,Object(f.a)({emptyText:"No Episode Found For This Series"},l))}}),Object(Nn.jsx)(Qr,{modalKey:"tools",size:"lg",update:n}),Object(Nn.jsx)(vr,{modalKey:"history",size:"lg"}),Object(Nn.jsx)(hc,{modalKey:"manual-search",onDownload:n,onSelect:Nc})]})},Pc=Object(l.i)((function(e){var t,n=e.match,r=Number.parseInt(n.params.id),c=bn(r),i=Object(Z.a)(c,2),s=i[0],o=i[1],u=s.data,d=On(null===(t=s.data)||void 0===t?void 0:t.sonarrSeriesId),j=Object(Z.a)(d,1)[0];ce(o);var b=0!==j.data.length,O=Object(a.useMemo)((function(){var e;return[{icon:Pe.v,text:"".concat(null===u||void 0===u?void 0:u.episodeFileCount," files")},{icon:Pe.a,text:null!==(e=null===u||void 0===u?void 0:u.seriesType)&&void 0!==e?e:""}]}),[u]),h=sr(),f=Object(a.useState)(!0),p=Object(Z.a)(f,2),v=p[0],x=p[1],m=Object(a.useCallback)((function(){null===s.data&&x(!1)}),[s.data]);return ie(s,m),isNaN(r)||!v?Object(Nn.jsx)(l.b,{to:Ra}):u?Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:[u.title," - Bazarr (Series)"]})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsxs)(nr.Group,{pos:"start",children:[Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.T,disabled:!b,promise:function(){return Je.action({action:"scan-disk",seriesid:r})},onSuccess:o,children:"Scan Disk"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Q,promise:function(){return Je.action({action:"search-missing",seriesid:r})},onSuccess:o,disabled:0===u.episodeFileCount||null===u.profileId||!b,children:"Search"})]}),Object(Nn.jsxs)(nr.Group,{pos:"end",children:[Object(Nn.jsx)(nr.Button,{disabled:0===u.episodeFileCount||!b,icon:Pe.e,onClick:function(){return h("tools",j.data)},children:"Tools"}),Object(Nn.jsx)(nr.Button,{disabled:0===u.episodeFileCount||null===u.profileId||!b,icon:Pe.l,onClick:function(){return h("upload",u)},children:"Upload"}),Object(Nn.jsx)(nr.Button,{icon:Pe.bb,onClick:function(){return h("edit",u)},children:"Edit Series"})]})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(vc,{item:u,details:O})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(Ic,{episodes:j,update:o})}),Object(Nn.jsx)(xr,{modalKey:"edit",submit:function(e){return Je.modify(e)},onSuccess:o}),Object(Nn.jsx)(gr,{modalKey:"upload"})]}):Object(Nn.jsx)(Oa,{})})),Ac=function(){return Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/series",children:Object(Nn.jsx)(wc,{})}),Object(Nn.jsx)(l.c,{path:"/series/:id",children:Object(Nn.jsx)(Pc,{})})]})},Tc="languages-enabled",Mc="languages-profiles",Ec="notifications-providers",Bc="settings-general-use_sonarr",Kc="settings-general-use_radarr",zc=c.a.createContext([{},function(){}]);var Dc=function(e){var t=e.children,n=e.title,r=nn(Pt),c=Object(a.useState)({}),i=Object(Z.a)(c,2),s=i[0],o=i[1],u=Object(a.useState)(!1),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)({}),f=Object(Z.a)(O,2),p=f[0],v=f[1],x=Object(a.useCallback)((function(){o({}),b(!1)}),[]),m=rn(yt,x),g=Object(a.useCallback)((function(e){!function(e){if(Mc in e){var t=e[Mc];e[Mc]=JSON.stringify(t)}if(Tc in e){var n=e[Tc];e[Tc]=n.map((function(e){return e.code2}))}if(Ec in e){var r=e[Ec];e[Ec]=r.map((function(e){return JSON.stringify(e)}))}}(e),b(!0),$e.setSettings(e).finally(m)}),[m]),y=Object(a.useCallback)((function(e){r(e),o({})}),[r]);Object(a.useEffect)((function(){var e={};e.__default__=g,e.storage=y,v(e)}),[g,y]);var k=Object(a.useMemo)((function(){return p.__default__}),[p]),S=Object(a.useCallback)((function(){var e=new Map;for(var t in s){var n=t.split("-")[0];if(0!==n.length){var r=e.get(n);r?r[t]=s[t]:e.set(n,Object(h.a)({},t,s[t]))}}var a={};e.forEach((function(e,t){t in p?p[t](e):a=Object($.merge)(a,e)})),k(a)}),[s,p,k]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:n})}),Object(Nn.jsx)(l.a,{when:Object.keys(s).length>0,message:"You have unsaved changes, are you sure you want to leave?"}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.Button,{icon:Pe.P,updating:j,disabled:0===Object.keys(s).length,onClick:S,children:"Save"})}),Object(Nn.jsx)(zc.Provider,{value:[s,o],children:Object(Nn.jsx)(Te.a,{className:"p-4",children:Object(Nn.jsx)(Me.a,{children:t})})})]})};function Lc(){var e=Object(a.useContext)(zc);return Object(Z.a)(e,1)[0]}function Rc(){var e=Object(a.useContext)(zc),t=Object(Z.a)(e,2)[1];return Object(a.useCallback)((function(e,n){t((function(t){var r=Object(f.a)({},t);return r[n]=e,r}))}),[t])}function _c(e,t,n){var r=cn(),c=Object(Z.a)(r,1)[0].data,i=Object(o.d)(),s=Object(a.useMemo)((function(){var n=null;if(void 0===c)return n;var r=e.split("-");if("settings"!==r[0])return null;r=r.slice(0);var a,i=c,s=Object(Dn.a)(r);try{for(s.s();!(a=s.n()).done;){var o=a.value;if(o in i&&(i=i[o]),t(i)){n=i;break}}}catch(l){s.e(l)}finally{s.f()}return n}),[e,c,t]);return n&&void 0!==c?n(c,i.getState()):s}function Hc(e,t,n){var r=_c(e,t,n),a=Lc();return e in a?a[e]:r}var Uc=c.a.createContext(["",function(e){}]),Fc=c.a.createContext((function(e){}));function Gc(){return Object(a.useContext)(Fc)}var Yc=function(e){var t=e.children,n=Object(a.useState)(!1);return Object(Nn.jsx)(Uc.Provider,{value:n,children:t})};Yc.Control=function(e){var t=e.children,n=Object(a.useContext)(Uc);return Object(Nn.jsx)(Fc.Provider,{value:n[1],children:t})},Yc.Content=function(e){var t=e.on,n=e.eventKey,r=e.indent,c=e.children,i=Object(a.useContext)(Uc),s=Object(Z.a)(i,1)[0],o=Object(a.useMemo)((function(){return t&&"string"===typeof s?t(s):n?s===n:!0===s}),[t,s,n]);return Object(Nn.jsx)(ga.a,{in:o,className:!1===r?void 0:"pl-4",children:Object(Nn.jsx)("div",{children:c})})};var qc=Yc,Wc=n(505),Vc=(n(473),function(e){var t=e.header,n=e.hidden,r=e.children;return Object(Nn.jsxs)(Te.a,{hidden:n,className:"flex-column mt-3",children:[Object(Nn.jsxs)(la.a,{children:[Object(Nn.jsx)("h4",{children:t}),Object(Nn.jsx)("hr",{})]}),Object(Nn.jsx)(la.a,{children:r})]})}),Qc=function(e){var t=e.children,n=e.name,r=e.hidden;return Object(Nn.jsxs)(Mn.a.Group,{hidden:r,children:[n&&Object(Nn.jsx)(Mn.a.Label,{children:n}),t]})},Xc=function(e){return Object(Nn.jsx)(la.a,{className:"p-2",xs:6,lg:4,children:Object(Nn.jsx)(Jc,Object(f.a)({},e))})},Jc=function(e){var t=e.header,n=e.subheader,r=e.plus,a=e.onClick;return Object(Nn.jsx)(Wc.a,{className:"settings-card",onClick:function(){return a&&a()},children:r?Object(Nn.jsx)(Wc.a.Body,{className:"d-flex justify-content-center align-items-center",children:Object(Nn.jsx)(Ae.a,{size:"2x",icon:Pe.L})}):Object(Nn.jsxs)(Wc.a.Body,{children:[Object(Nn.jsx)(Wc.a.Title,{className:"text-nowrap text-truncate",children:t}),Object(Nn.jsx)(Wc.a.Subtitle,{hidden:void 0===n,className:"small text-nowrap text-truncate",children:n})]})})},Zc=function(e){var t=e.type,n=e.children,r=["pr-4"];return r.push("warning"===t?"text-warning":"text-muted"),Object(Nn.jsx)(Mn.a.Text,{className:r.join(" "),children:n})},$c=function(e){var t=e.placeholder,n=e.disabled,r=e.beforeStaged,a=e.controlled,c=e.override,i=e.password,s=e.settingKey,o=Hc(s,ee,c),l=Rc(),u=Gc();return Object(Nn.jsx)(Mn.a.Control,{type:i?"password":"text",placeholder:null===t||void 0===t?void 0:t.toString(),disabled:n,defaultValue:a?void 0:null!==o&&void 0!==o?o:void 0,value:a&&null!==o&&void 0!==o?o:void 0,onChange:function(e){var t=e.currentTarget.value;u(t.toString());var n=r?r(t):t;l(n,s)}})},ei=function(e){var t=e.label,n=e.inline,r=e.override,c=e.disabled,i=e.settingKey,s=Rc(),o=Gc(),l=Hc(i,$.isBoolean,r);return Object(a.useEffect)((function(){return o(null!==l&&void 0!==l&&l)}),[o,l]),Object(Nn.jsx)(Mn.a.Check,{custom:!0,type:"checkbox",id:i,inline:n,label:t,onChange:function(e){var t=e.currentTarget.checked;s(t,i)},disabled:c,checked:null!==l&&void 0!==l?l:void 0})};function ti(e){return Object($.isString)(e)||Object($.isNumber)(e)||Object($.isArray)(e)}function ni(e){var t=Rc(),n=Gc(),r=e.settingKey,c=e.override,i=e.beforeStaged,s=Object(gn.a)(e,["settingKey","override","beforeStaged"]),o=Hc(r,ti,c);return Object(a.useEffect)((function(){(Object($.isString)(o)||Object($.isNull)(o))&&n(null!==o&&void 0!==o?o:"")})),Object(Nn.jsx)(_n,Object(f.a)(Object(f.a)({},s),{},{defaultValue:o,onChange:function(e){e=i?i(e):e,t(e,r)}}))}var ri=function(e){var t=e.settingKey,n=e.override,r=Object(gn.a)(e,["settingKey","override"]),a=Rc(),c=Hc(t,$.isNumber,n);return Object(Nn.jsx)(Fn,Object(f.a)({onAfterChange:function(e){a(e,t)},defaultValue:null!==c&&void 0!==c?c:void 0},r))},ai=function(e){var t=e.settingKey,n=e.override,r=Object(gn.a)(e,["settingKey","override"]),a=Rc(),c=Hc(t,$.isArray,n);return Object(Nn.jsx)(Pn,Object(f.a)({defaultValue:null!==c&&void 0!==c?c:void 0,onChange:function(e){a(e,t)}},r))},ci=function(e){var t=e.onClick,n=e.settingKey,r=Object(gn.a)(e,["onClick","settingKey"]),a=Hc(n,$.isString),c=Rc();return Object(Nn.jsx)(Be.a,Object(f.a)({onClick:function(){t&&t(c,n,null!==a&&void 0!==a?a:void 0)}},r))},ii=function(e){var t=e.category,n=Object(a.useState)("Test"),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=Object(a.useState)("primary"),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Hc("settings-".concat(t,"-ip"),$.isString),j=Hc("settings-".concat(t,"-port"),$.isNumber),b=Hc("settings-".concat(t,"-base_url"),$.isString),O=Hc("settings-".concat(t,"-apikey"),$.isString),h=Hc("settings-".concat(t,"-ssl"),$.isBoolean),f=Object(a.useCallback)((function(){if(d&&O&&null!==h){var e;e=j?"".concat(d,":").concat(j).concat(null!==b&&void 0!==b?b:""):"".concat(d).concat(null!==b&&void 0!==b?b:"");var t={protocol:h?"https":"http",url:e,params:{apikey:O}};t.url.endsWith("/")||(t.url+="/"),et.urlTest(t.protocol,t.url,t.params).then((function(e){e.status?(i("Version: ".concat(e.version)),u("success")):(i(e.error),u("danger"))}))}}),[d,j,b,O,h]);return Object(Nn.jsx)(Be.a,{onClick:f,variant:l,title:c,className:"text-truncate text-nowrap",children:c})},si=[{label:"Basic",value:"basic"},{label:"Form",value:"form"}],oi=[{label:"Socks5",value:"socks5"},{label:"HTTP(S)",value:"http"}],li=[{label:"master",value:"master"},{label:"development",value:"development"}],ui="abcdef0123456789",di="settings-auth-apikey",ji=function(e){var t,n;return null!==(t=null===(n=e.general.base_url)||void 0===n?void 0:n.slice(1))&&void 0!==t?t:""},bi=function(){var e=Object(a.useState)(!1),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=window.Bazarr.canUpdate;return Object(Nn.jsxs)(Dc,{title:"General - Bazarr (Settings)",children:[Object(Nn.jsxs)(Vc,{header:"Host",children:[Object(Nn.jsxs)(Qc,{name:"Address",children:[Object(Nn.jsx)($c,{placeholder:"0.0.0.0",settingKey:"settings-general-ip"}),Object(Nn.jsx)(Zc,{children:"Valid IPv4 address or '0.0.0.0' for all interfaces"})]}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{placeholder:6767,settingKey:"settings-general-port"})}),Object(Nn.jsxs)(Qc,{name:"Base URL",children:[Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(yr.a.Text,{children:"/"})}),Object(Nn.jsx)($c,{settingKey:"settings-general-base_url",override:ji,beforeStaged:function(e){return"/"+e}})]}),Object(Nn.jsx)(Zc,{children:"Reverse proxy support"})]})]}),Object(Nn.jsxs)(Vc,{header:"Security",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{name:"Authentication",children:Object(Nn.jsx)(ni,{clearable:!0,options:si,settingKey:"settings-auth-type",beforeStaged:function(e){return null===e?"None":e}})})}),Object(Nn.jsxs)(qc.Content,{on:function(e){return""!==e&&"None"!==e},children:[Object(Nn.jsx)(Qc,{name:"Username",children:Object(Nn.jsx)($c,{settingKey:"settings-auth-username"})}),Object(Nn.jsx)(Qc,{name:"Password",children:Object(Nn.jsx)($c,{password:!0,settingKey:"settings-auth-password"})})]})]}),Object(Nn.jsx)(Qc,{name:"API Key",children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)($c,{disabled:!0,controlled:!0,settingKey:di}),Object(Nn.jsxs)(yr.a.Append,{children:[Object(Nn.jsx)(ci,{variant:n?"success":"light",settingKey:di,onClick:function(e,t,n){n&&(function(e){var t=document.createElement("textarea");t.innerText=e,document.body.appendChild(t),t.select(),t.setSelectionRange(0,9999),document.execCommand("copy"),t.remove()}(n),function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e(!n),setTimeout((function(){return e(n)}),t)}(r,1500))},children:Object(Nn.jsx)(Ae.a,{icon:n?Pe.g:Pe.j})}),Object(Nn.jsx)(ci,{variant:"danger",settingKey:di,onClick:function(e,t){e(Array(32).fill(null).map((function(){return ui.charAt(Math.floor(Math.random()*ui.length))})).join(""),t)},children:Object(Nn.jsx)(Ae.a,{icon:Pe.T})})]})]})})]}),Object(Nn.jsx)(Vc,{header:"Proxy",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ni,{clearable:!0,settingKey:"settings-proxy-type",options:oi,beforeStaged:function(e){return null===e?"None":e}})})}),Object(Nn.jsxs)(qc.Content,{on:function(e){return""!==e&&"None"!==e},children:[Object(Nn.jsx)(Qc,{name:"Host",children:Object(Nn.jsx)($c,{settingKey:"settings-proxy-url"})}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{settingKey:"settings-proxy-port"})}),Object(Nn.jsx)(Qc,{name:"Username",children:Object(Nn.jsx)($c,{settingKey:"settings-proxy-username"})}),Object(Nn.jsxs)(Qc,{name:"Password",children:[Object(Nn.jsx)($c,{password:!0,settingKey:"settings-proxy-password"}),Object(Nn.jsx)(Zc,{children:"You only need to enter a username and password if one is required. Leave them blank otherwise"})]}),Object(Nn.jsxs)(Qc,{name:"Ignored Addresses",children:[Object(Nn.jsx)(ai,{settingKey:"settings-proxy-exclude"}),Object(Nn.jsx)(Zc,{children:"'*.' as a wildcard for subdomains"})]})]})]})}),Object(Nn.jsxs)(Vc,{header:"Updates",hidden:!c,children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Automatic",settingKey:"settings-general-auto_update"}),Object(Nn.jsx)(Zc,{children:"Automatically download and install updates"})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ni,{options:li,settingKey:"settings-general-branch"}),Object(Nn.jsx)(Zc,{children:"Branch used by update mechanism"})]})]}),Object(Nn.jsx)(Vc,{header:"Logging",children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Debug",settingKey:"settings-general-debug"}),Object(Nn.jsx)(Zc,{children:"Debug logging should only be enabled temporarily"})]})}),Object(Nn.jsx)(Vc,{header:"Analytics",children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Enable",settingKey:"settings-analytics-enabled"}),Object(Nn.jsx)(Zc,{children:"Send anonymous usage information, nothing that can identify you. This includes information on which providers you use, what languages you search for, Bazarr, Python, Sonarr, Radarr and what OS version you are using. We will use this information to prioritize features and bug fixes. Please, keep this enabled as this is the only way we have to better understand how you use Bazarr."})]})})]})},Oi=function(e){var t=e.settingKey,n=e.options,r=yi(),a=Rc();return Object(Nn.jsx)(rr,{multiple:!0,defaultValue:r,options:n,onChange:function(e){a(e,t)}})},hi=function(e){var t=e.settingKey,n=ki(),r=Object(a.useMemo)((function(){return n.map((function(e){return{label:e.name,value:e.profileId}}))}),[n]);return Object(Nn.jsx)(ni,{clearable:!0,options:r,settingKey:t,beforeStaged:function(e){return null===e?"":e}})},fi=[{label:"Any",value:65535}];var pi=function(e){var t,n=e.update,r=Object(gn.a)(e,["update"]),c=dr(r.modalKey),i=or(),s=yi(),o=Object(a.useState)(null!==c&&void 0!==c?c:{profileId:-1,name:"",items:[],cutoff:null}),l=Object(Z.a)(o,2),u=l[0],d=l[1];Object(a.useEffect)((function(){c&&d(c)}),[c]);var j=Object(a.useMemo)((function(){var e=Object(J.a)(fi),t=u.items.map((function(e){return{label:"ID ".concat(e.id," (").concat(e.language,")"),value:e.id}}));return e.push.apply(e,Object(J.a)(t)),e}),[u.items]),b=Object(a.useCallback)((function(e,t){var n=Object(f.a)({},u);n[e]=t,d(n)}),[u]),O=Object(a.useCallback)((function(e,t){var n=Object(J.a)(u.items);t?n[e.index]=t:n.splice(e.index,1),b("items",n)}),[u.items,b]),h=Object(a.useCallback)((function(){var e=1+u.items.reduce((function(e,t){return Math.max(t.id,e)}),0);if(s.length>0){var t={id:e,language:s[0].code2,audio_exclude:"False",hi:"False",forced:"False"},n=Object(J.a)(u.items);n.push(t),b("items",n)}}),[u.items,b,s]),p=u.name.length>0&&u.items.length>0,v=Object(Nn.jsx)(Be.a,{disabled:!p,onClick:function(){i(),n(u)},children:"Save"}),x=Object(a.useMemo)((function(){return[{Header:"ID",accessor:"id"},{Header:"Language",accessor:"language",Cell:function(e){var t=e.value,n=e.row,r=e.externalUpdate,c=t,i=n.original,o=Object(a.useMemo)((function(){return s.find((function(e){return e.code2===c}))}),[c]);return Object(Nn.jsx)("div",{style:{width:"8rem"},children:Object(Nn.jsx)(rr,{options:s,defaultValue:o,onChange:function(e){e&&(i.language=e.code2,r&&r(n,i))}})})}},{Header:"Forced",accessor:"forced",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original;return Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"".concat(a.language,"-forced"),defaultChecked:"True"===n,onChange:function(e){a.forced=e.target.checked?"True":"False",r&&r(t,a)}})}},{Header:"HI",accessor:"hi",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original;return Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"".concat(a.language,"-hi"),defaultChecked:"True"===n,onChange:function(e){a.hi=e.target.checked?"True":"False",r&&r(t,a)}})}},{Header:"Exclude Audio",accessor:"audio_exclude",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original;return Object(Nn.jsx)(Mn.a.Check,{custom:!0,id:"".concat(a.language,"-audio"),defaultChecked:"True"===n,onChange:function(e){a.audio_exclude=e.target.checked?"True":"False",r&&r(t,a)}})}},{id:"action",accessor:"id",Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Jn,{icon:Pe.Y,onClick:function(){return n&&n(t)}})}}]}),[s]);return Object(Nn.jsxs)(Or,Object(f.a)(Object(f.a)({size:"lg",title:"Languages Profile",footer:v},r),{},{children:[Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(Mn.a.Control,{type:"text",placeholder:"Name",value:null===u||void 0===u?void 0:u.name,onChange:function(e){b("name",e.target.value)}})}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(na,{responsive:!1,columns:x,data:null!==(t=null===u||void 0===u?void 0:u.items)&&void 0!==t?t:[],externalUpdate:O}),Object(Nn.jsx)(Be.a,{block:!0,variant:"light",onClick:h,children:"Add"})]}),Object(Nn.jsxs)(Qc,{name:"Cutoff",children:[Object(Nn.jsx)(_n,{clearable:!0,options:j,value:null===u||void 0===u?void 0:u.cutoff,onChange:function(e){return b("cutoff",e)}}),Object(Nn.jsx)(Zc,{children:"Ignore others if existing"})]})]}))},vi=function(e){var t=e.cutoff,n=e.item,r=e.className,c=Object(a.useMemo)((function(){var e=n.language;return"True"===n.hi?e+=":HI":"True"===n.forced&&(e+=":Forced"),e}),[n.hi,n.forced,n.language]);return Object(Nn.jsx)(Qn.a,{className:r,title:t?"Ignore others if this one is available":void 0,variant:t?"primary":"secondary",children:c})},xi=function(){var e=ki(),t=Object(a.useState)(Object(J.a)(e)),n=Object(Z.a)(t,2),r=n[0],i=n[1],s=Object(a.useMemo)((function(){return 1+r.reduce((function(e,t){return Math.max(t.profileId,e)}),0)}),[r]),o=Rc(),l=sr(),u=Object(a.useCallback)((function(e){o(e,Mc),i(e)}),[o]),d=Object(a.useCallback)((function(e){var t=Object(J.a)(r),n=t.findIndex((function(t){return t.profileId===e.profileId}));-1!==n?t[n]=e:t.push(e),u(t)}),[r,u]),j=Object(a.useCallback)((function(e,t){if(t)l("profile",t);else{var n=Object(J.a)(r);n.splice(e.index,1),u(n)}}),[u,l,r]),b=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"name"},{Header:"Languages",accessor:"items",Cell:function(e){var t=e.value,n=e.row.original.cutoff;return t.map((function(e){var t=e.id===n||65535===n;return Object(Nn.jsx)(vi,{cutoff:t,className:"mx-1",item:e},e.id)}))}},{accessor:"profileId",Cell:function(e){var t=e.row,n=e.externalUpdate,r=t.original;return Object(Nn.jsxs)(kr.a,{children:[Object(Nn.jsx)(Jn,{icon:Pe.bb,onClick:function(){n&&n(t,r)}}),Object(Nn.jsx)(Jn,{icon:Pe.Y,onClick:function(){return n&&n(t)}})]})}}]}),[]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(na,{columns:b,data:r,externalUpdate:j}),Object(Nn.jsx)(Be.a,{block:!0,variant:"light",onClick:function(){l("profile",{profileId:s,name:"",items:[],cutoff:null})},children:"Add New Profile"}),Object(Nn.jsx)(pi,{update:d,modalKey:"profile"})]})},mi=c.a.createContext([]),gi=c.a.createContext([]);function yi(){var e=Object(a.useContext)(mi),t=Hc(Tc,$.isArray);return t||e}function ki(){var e=Object(a.useContext)(gi),t=Hc(Mc,$.isArray);return t||e}var Si=function(){var e=ln(!1),t=Object(Z.a)(e,1)[0],n=ln(!0),r=Object(Z.a)(n,1)[0],a=sn(),c=Object(Z.a)(a,1)[0];return Object(Nn.jsx)(Dc,{title:"Languages - Bazarr (Settings)",children:Object(Nn.jsx)(mi.Provider,{value:r,children:Object(Nn.jsxs)(gi.Provider,{value:c,children:[Object(Nn.jsxs)(Vc,{header:"Subtitles Language",children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Single Language",settingKey:"settings-general-single_language"}),Object(Nn.jsx)(Zc,{children:"Download a single Subtitles file without adding the language code to the filename."}),Object(Nn.jsx)(Zc,{type:"warning",children:"We don't recommend enabling this option unless absolutely required (ie: media player not supporting language code in subtitles filename). Results may vary."})]}),Object(Nn.jsx)(Qc,{name:"Languages Filter",children:Object(Nn.jsx)(Oi,{settingKey:Tc,options:t})})]}),Object(Nn.jsx)(Vc,{header:"Languages Profiles",children:Object(Nn.jsx)(xi,{})}),Object(Nn.jsxs)(Vc,{header:"Default Settings",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Series",settingKey:"settings-general-serie_default_enabled"}),Object(Nn.jsx)(Zc,{children:"Apply only to Series added to Bazarr after enabling this option."})]})}),Object(Nn.jsx)(qc.Content,{indent:!0,children:Object(Nn.jsx)(Qc,{name:"Profile",children:Object(Nn.jsx)(hi,{settingKey:"settings-general-serie_default_profile"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Movies",settingKey:"settings-general-movie_default_enabled"}),Object(Nn.jsx)(Zc,{children:"Apply only to Movies added to Bazarr after enabling this option."})]})}),Object(Nn.jsx)(qc.Content,{children:Object(Nn.jsx)(Qc,{name:"Profile",children:Object(Nn.jsx)(hi,{settingKey:"settings-general-movie_default_profile"})})})]})]})]})})})},wi=function(e,t){return e.name===t.name},Ci=function(e){var t,n=e.selections,r=Object(gn.a)(e,["selections"]),i=Object(a.useMemo)((function(){return n.filter((function(e){return!e.enabled})).map((function(e){return{label:e.name,value:e}}))}),[n]),s=function(e,t){var n=Rc(),r=Lc();void 0===t&&(t=$.isEqual);var c=Object(a.useMemo)((function(){return e in r?r[e]:[]}),[e,r]);return Object(a.useCallback)((function(r){var a=Object(J.a)(c),i=a.findIndex((function(e){return t(e,r)}));-1!==i?a[i]=r:a.push(r),n(a,e)}),[t,c,e,n])}(Ec,wi),o=dr(r.modalKey),l=Object(a.useState)(null!==o&&void 0!==o?o:null),u=Object(Z.a)(l,2),d=u[0],j=u[1],b=Object(a.useCallback)((function(){return j(null!==o&&void 0!==o?o:null)}),[o]);ur(r.modalKey,b);var O=Object(a.useCallback)((function(e){if(d){var t=Object(f.a)({},d);t.url=e,j(t)}}),[d]),h=or(),p=null!==d&&null!==(null===d||void 0===d?void 0:d.url)&&0!==(null===d||void 0===d?void 0:d.url.length),v=Object(a.useMemo)((function(){return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Vn,{className:"mr-auto",disabled:!p,variant:"outline-secondary",promise:function(){return d&&d.url?$e.testNotification(d.name,d.url):null},children:"Test"}),Object(Nn.jsx)(Be.a,{hidden:null===o,variant:"danger",onClick:function(){d&&(d.enabled=!1,d.url=null,s(d)),h()},children:"Remove"}),Object(Nn.jsx)(Be.a,{disabled:!p,onClick:function(){d&&(d.enabled=!0,s(d)),h()},children:"Save"})]})}),[p,h,d,s,o]);return Object(Nn.jsx)(Or,Object(f.a)(Object(f.a)({title:"Notification",footer:v},r),{},{children:Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)(la.a,{xs:12,children:Object(Nn.jsx)(_n,{disabled:null!==o,options:i,value:d,onChange:j,label:function(e){return e.name}})}),Object(Nn.jsx)(la.a,{hidden:null===d,children:Object(Nn.jsx)(Mn.a.Group,{className:"mt-4",children:Object(Nn.jsx)(Mn.a.Control,{as:"textarea",rows:4,placeholder:"URL",value:null!==(t=null===d||void 0===d?void 0:d.url)&&void 0!==t?t:"",onChange:function(e){var t=e.currentTarget.value;O(t)}})})})]})})}))},Ni=function(){var e=function(e,t,n){var r=_c(e,$.isArray,n),c=Lc();void 0===t&&(t=$.isEqual);var i=void 0;return e in c&&(i=c[e]),Object(a.useMemo)((function(){return void 0!==i&&r?ue(r,i,t):r}),[r,i,t])}(Ec,wi,(function(e){return e.notifications.providers})),t=sr(),n=Object(a.useMemo)((function(){return null===e||void 0===e?void 0:e.filter((function(e){return e.enabled})).map((function(e,n){return Object(Nn.jsx)(Xc,{header:e.name,onClick:function(){return t("notifications",e)}},de(n,e.name))}))}),[e,t]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsxs)(Te.a,{children:[n," ",Object(Nn.jsx)(Xc,{plus:!0,onClick:function(){return t("notifications")}})]}),Object(Nn.jsx)(Ci,{selections:null!==e&&void 0!==e?e:[],modalKey:"notifications"})]})},Ii=function(){return Object(Nn.jsxs)(Dc,{title:"Notifications - Bazarr (Settings)",children:[Object(Nn.jsxs)(Ee.a,{variant:"secondary",children:["Thanks to caronc for his work on"," ",Object(Nn.jsx)("a",{href:"https://github.com/caronc/apprise",target:"_blank",rel:"noopener noreferrer",children:"apprise"}),", the core of the Bazarr notification system."]}),Object(Nn.jsxs)(Ee.a,{variant:"secondary",children:["Please follow instructions on his"," ",Object(Nn.jsx)("a",{href:"https://github.com/caronc/apprise/wiki",target:"_blank",rel:"noopener noreferrer",children:"Wiki"})," ","to configure your notification providers."]}),Object(Nn.jsx)(Vc,{header:"Notifications",children:Object(Nn.jsx)(Ni,{})}),Object(Nn.jsx)(Vc,{header:"Options",children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Silent for Manual Actions",settingKey:"settings-general-dont_notify_manual_actions"}),Object(Nn.jsx)(Zc,{children:"Suppress notifications when manually download/upload subtitles."})]})})]})},Pi=[{key:"addic7ed",description:"Requires Anti-Captcha Provider",defaultKey:{username:"",password:""}},{key:"argenteam",description:"Spanish Subtitles Provider"},{key:"assrt",description:"Chinese Subtitles Provider",defaultKey:{token:""}},{key:"betaseries",name:"BetaSeries",description:"French / English Provider for TV Shows Only",defaultKey:{token:""},keyNameOverride:{token:"API KEY"}},{key:"bsplayer",name:"BSplayer"},{key:"greeksubs",name:"GreekSubs",description:"Greek Subtitles Provider"},{key:"greeksubtitles",name:"GreekSubtitles",description:"Greek Subtitles Provider"},{key:"hosszupuska",description:"Hungarian Subtitles Provider"},{key:"legendasdivx",name:"LegendasDivx",description:"Brazilian / Portuguese Subtitles Provider",defaultKey:{username:"",password:"",skip_wrong_fps:!1},keyNameOverride:{skip_wrong_fps:"Skip Wrong FPS"}},{key:"legendastv",name:"LegendasTV",description:"Brazilian / Portuguese Subtitles Provider",defaultKey:{username:"",password:""}},{key:"napiprojekt",description:"Polish Subtitles Provider"},{key:"napisy24",description:"Polish Subtitles Provider",message:"The provided credentials must have API access. Leave empty to use the defaults.",defaultKey:{username:"",password:""}},{key:"nekur",description:"Latvian Subtitles Provider"},{key:"opensubtitles",name:"OpenSubtitles.org",defaultKey:{username:"",password:"",vip:!1,ssl:!1,skip_wrong_fps:!1},keyNameOverride:{vip:"VIP",ssl:"Use SSL",skip_wrong_fps:"Skip Wrong FPS"}},{key:"opensubtitlescom",name:"OpenSubtitles.com",defaultKey:{username:"",password:"",use_hash:!1},keyNameOverride:{use_hash:"Use Hash"}},{key:"podnapisi"},{key:"regielive",name:"RegieLive",description:"Romanian Subtitles Provider"},{key:"soustitres",name:"Sous-Titres.eu",description:"Mostly French Subtitles Provider"},{key:"subdivx",description:"Spanish Subtitles Provider"},{key:"subssabbz",name:"Subs.sab.bz",description:"Bulgarian Subtitles Provider"},{key:"subs4free",name:"Subs4Free",description:"Greek Subtitles Provider"},{key:"subs4series",name:"Subs4Series",description:"Greek Subtitles Provider"},{key:"subscene",description:"Requires Anti-Captcha Provider",defaultKey:{username:"",password:""}},{key:"subscenter"},{key:"subsunacs",name:"Subsunacs.net",description:"Bulgarian Subtitles Provider"},{key:"subtitri",name:"subtitri.id.lv",description:"Latvian Subtitles Provider"},{key:"subtitulamos",name:"Subtitulamos.tv",description:"Spanish Subtitles Provider"},{key:"sucha",description:"Spanish Subtitles Provider"},{key:"supersubtitles"},{key:"titlovi",defaultKey:{username:"",password:""}},{key:"titrari",name:"Titrari.ro"},{key:"tusubtitulo",name:"Tusubtitulo.com",description:"Spanish / English Subtitles Provider for TV Shows"},{key:"tvsubtitles",name:"TVSubtitles"},{key:"wizdom",description:"Wizdom.xyz Subtitles Provider."},{key:"xsubs",name:"XSubs",description:"Greek Subtitles Provider",defaultKey:{username:"",password:""}},{key:"yavka",name:"Yavka.net",description:"Bulgarian Subtitles Provider"},{key:"yify",name:"YIFY Subtitles"},{key:"zimuku",description:"Chinese Subtitles Provider"}],Ai="provider-modal",Ti="settings-general-enabled_providers",Mi=function(){var e=Hc(Ti,$.isArray),t=sr(),n=Object(a.useCallback)((function(e){t(Ai,null!==e&&void 0!==e?e:null)}),[t]),r=Object(a.useMemo)((function(){return e?e.flatMap((function(e){var t=Pi.find((function(t){return t.key===e}));return t||[]})).map((function(e,t){var r;return Object(Nn.jsx)(Xc,{header:null!==(r=e.name)&&void 0!==r?r:Object($.capitalize)(e.key),subheader:e.description,onClick:function(){return n(e)}},de(t,e.name))})):[]}),[e,n]);return Object(Nn.jsx)(Me.a,{fluid:!0,children:Object(Nn.jsxs)(Te.a,{children:[r,Object(Nn.jsx)(Xc,{plus:!0,onClick:n},"add-card")]})})},Ei=function(){var e=dr(Ai),t=Object(a.useState)({}),n=Object(Z.a)(t,2),r=n[0],i=n[1],s=Object(a.useState)(null!==e&&void 0!==e?e:null),o=Object(Z.a)(s,2),l=o[0],u=o[1],d=Object(a.useCallback)((function(){return u(null!==e&&void 0!==e?e:null)}),[e]);ur(Ai,d);var j=Hc(Ti,$.isArray),b=or(),O=function(){var e=Object(a.useContext)(zc),t=Object(Z.a)(e,2)[1];return Object(a.useCallback)((function(e){t((function(t){return Object(f.a)(Object(f.a)({},t),e)}))}),[t])}(),p=Object(a.useCallback)((function(){if(e&&j){var t=j.findIndex((function(t){return t===e.key}));if(-1!==t){var n=Object(J.a)(j);n.splice(t,1),O(Object(h.a)({},Ti,n)),b()}}}),[e,j,O,b]),v=Object(a.useCallback)((function(){if(l&&j){var e=Object(f.a)({},r);if(void 0===j.find((function(e){return e===l.key}))){var t=[].concat(Object(J.a)(j),[l.key]);e[Ti]=t}O(e),b()}}),[l,j,r,b,O]),x=null!==l,m=Object(a.useMemo)((function(){return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Be.a,{hidden:!e,variant:"danger",onClick:p,children:"Delete"}),Object(Nn.jsx)(Be.a,{disabled:!x,onClick:v,children:"Save"})]})}),[x,e,p,v]),g=Object(a.useCallback)((function(e){u(e||{key:"",description:"Unknown Provider"})}),[]),y=Object(a.useMemo)((function(){return Pi.filter((function(e){return void 0===(null===j||void 0===j?void 0:j.find((function(t){return t===e.key})))})).map((function(e){var t;return{label:null!==(t=e.name)&&void 0!==t?t:Object($.capitalize)(e.key),value:e}}))}),[j]),k=Object(a.useMemo)((function(){var e;if(null===l)return null;var t=l.defaultKey,n=null!==(e=l.keyNameOverride)&&void 0!==e?e:{};if(void 0===t)return null;var r=l.key,a=[],c=[];for(var i in t){var s=t[i],o=i;o=o in n?n[o]:Object($.capitalize)(i),ee(s)?a.push(Object(Nn.jsx)(la.a,{xs:12,className:"mt-2",children:Object(Nn.jsx)($c,{password:"password"===i,placeholder:o,settingKey:"settings-".concat(r,"-").concat(i)})},i)):Object($.isBoolean)(s)&&c.push(Object(Nn.jsx)(ei,{inline:!0,label:o,settingKey:"settings-".concat(r,"-").concat(i)},i))}return Object(Nn.jsxs)(Te.a,{children:[a,Object(Nn.jsx)(la.a,{hidden:0===c.length,className:"mt-2",children:c})]})}),[l]);return Object(Nn.jsx)(Or,{title:"Provider",footer:m,modalKey:Ai,children:Object(Nn.jsx)(zc.Provider,{value:[r,i],children:Object(Nn.jsxs)(Me.a,{children:[Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(la.a,{children:Object(Nn.jsx)(_n,{disabled:null!==e,options:y,value:l,label:function(e){var t,n;return null!==(t=null===e||void 0===e?void 0:e.name)&&void 0!==t?t:Object($.capitalize)(null!==(n=null===e||void 0===e?void 0:e.key)&&void 0!==n?n:"")},onChange:g})})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(la.a,{className:"mb-2",children:Object(Nn.jsx)(Zc,{children:null===l||void 0===l?void 0:l.description})})}),k,Object(Nn.jsx)(Te.a,{hidden:void 0===(null===l||void 0===l?void 0:l.message),children:Object(Nn.jsx)(la.a,{children:Object(Nn.jsx)(Zc,{children:null===l||void 0===l?void 0:l.message})})})]})})})},Bi=function(){return Object(Nn.jsxs)(Dc,{title:"Providers - Bazarr (Settings)",children:[Object(Nn.jsx)(Vc,{header:"Providers",children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(Mi,{})})}),Object(Nn.jsx)(Ei,{})]})};var Ki=function(e){var t=e.type,n=function(e){return"sonarr"===e?"settings-general-path_mappings":"settings-general-path_mappings_movie"}(t),r=Hc(n,$.isArray),i=_c(function(e){return"sonarr"===e?Bc:Kc}(t),$.isBoolean),s=Rc(),o=Object(a.useCallback)((function(e){s(e.map((function(e){return[e.from,e.to]})),n)}),[n,s]),l=Object(a.useCallback)((function(){if(r){var e=[].concat(Object(J.a)(r),[["",""]]);s(e,n)}}),[r,n,s]),u=Object(a.useMemo)((function(){var e;return null!==(e=null===r||void 0===r?void 0:r.map((function(e){return{from:e[0],to:e[1]}})))&&void 0!==e?e:[]}),[r]),d=Object(a.useMemo)((function(){return"sonarr"===t?function(e){return We.sonarr(e)}:function(e){return We.radarr(e)}}),[t]),j=Object(a.useCallback)((function(e,t){var n=Object(J.a)(u);t?n[e.index]=t:n.splice(e.index,1),o(n)}),[u,o]),b=Object(a.useMemo)((function(){return[{Header:Object($.capitalize)(t),accessor:"from",Cell:function(e){var t=e.value,n=e.row,r=e.externalUpdate;return Object(Nn.jsx)(zn,{drop:"up",defaultValue:t,load:d,onChange:function(e){var t=Object(f.a)({},n.original);t.from=e,r&&r(n,t)}})}},{id:"arrow",className:"text-center",Cell:function(){return Object(Nn.jsx)(Ae.a,{icon:Pe.b})}},{Header:"Bazarr",accessor:"to",Cell:function(e){var t=e.value,n=e.row,r=e.externalUpdate;return Object(Nn.jsx)(zn,{drop:"up",defaultValue:t,load:function(e){return We.bazarr(e)},onChange:function(e){var t=Object(f.a)({},n.original);t.to=e,r&&r(n,t)}})}},{id:"action",accessor:"to",Cell:function(e){var t=e.row,n=e.externalUpdate;return Object(Nn.jsx)(Jn,{icon:Pe.Y,onClick:function(){n&&n(t)}})}}]}),[t,d]);return i?Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(na,{emptyText:"No Mapping",responsive:!1,columns:b,data:u,externalUpdate:j}),Object(Nn.jsx)(Be.a,{block:!0,variant:"light",onClick:l,children:"Add"})]}):Object(Nn.jsx)(Zc,{children:"Path Mappings will be available after staged changes are saved"})},zi=function(){var e=Object(a.useCallback)((function(e){var t,n;return null!==(t=null===(n=e.radarr.base_url)||void 0===n?void 0:n.slice(1))&&void 0!==t?t:""}),[]);return Object(Nn.jsx)(Dc,{title:"Radarr - Bazarr (Settings)",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Vc,{header:"Use Radarr",children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Enabled",settingKey:Kc})})})}),Object(Nn.jsxs)(qc.Content,{indent:!1,children:[Object(Nn.jsxs)(Vc,{header:"Host",children:[Object(Nn.jsxs)(Qc,{name:"Address",children:[Object(Nn.jsx)($c,{settingKey:"settings-radarr-ip"}),Object(Nn.jsx)(Zc,{children:"Hostname or IPv4 Address"})]}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{settingKey:"settings-radarr-port"})}),Object(Nn.jsx)(Qc,{name:"Base URL",children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(yr.a.Text,{children:"/"})}),Object(Nn.jsx)($c,{settingKey:"settings-radarr-base_url",override:e,beforeStaged:function(e){return"/"+e}})]})}),Object(Nn.jsx)(Qc,{name:"API Key",children:Object(Nn.jsx)($c,{settingKey:"settings-radarr-apikey"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"SSL",settingKey:"settings-radarr-ssl"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ii,{category:"radarr"})})]}),Object(Nn.jsxs)(Vc,{header:"Options",children:[Object(Nn.jsx)(Qc,{name:"Minimum Score",children:Object(Nn.jsx)(ri,{settingKey:"settings-general-minimum_score_movie"})}),Object(Nn.jsxs)(Qc,{name:"Excluded Tags",children:[Object(Nn.jsx)(ai,{settingKey:"settings-radarr-excluded_tags"}),Object(Nn.jsx)(Zc,{children:"Movies with those tags (case sensitive) in Radarr will be excluded from automatic download of subtitles."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Download Only Monitored",settingKey:"settings-radarr-only_monitored"}),Object(Nn.jsx)(Zc,{children:"Automatic download of subtitles will only happen for monitored movies in Radarr."})]})]}),Object(Nn.jsx)(Vc,{header:"Path Mappings",children:Object(Nn.jsx)(Ki,{type:"radarr"})})]})]})})},Di=[{label:"1 Minute",value:1},{label:"5 Minutes",value:5},{label:"15 Minutes",value:15},{label:"1 Hour",value:60},{label:"3 Hours",value:180}],Li=[{label:"5 Minutes",value:5},{label:"15 Minutes",value:15},{label:"1 Hour",value:60},{label:"3 Hours",value:180},{label:"6 Hours",value:360}],Ri=Li,_i=[{label:"Manually",value:"Manually"},{label:"Daily",value:"Daily"},{label:"Weekly",value:"Weekly"}],Hi=[{label:"Monday",value:0},{label:"Tuesday",value:1},{label:"Wednesday",value:2},{label:"Thursday",value:3},{label:"Friday",value:4},{label:"Saturday",value:5},{label:"Sunday",value:6}],Ui=[{label:"3 Hours",value:3},{label:"6 Hours",value:6},{label:"12 Hours",value:12},{label:"24 Hours",value:24}],Fi=function(){var e=Object(a.useMemo)((function(){return Array(24).fill(null).map((function(e,t){return{label:"".concat(t,":00"),value:t}}))}),[]);return Object(Nn.jsxs)(Dc,{title:"Scheduler - Bazarr (Settings)",children:[Object(Nn.jsxs)(Vc,{header:"Sonarr/Radarr Sync",children:[Object(Nn.jsx)(Qc,{name:"Update Series List from Sonarr",children:Object(Nn.jsx)(ni,{options:Di,settingKey:"settings-sonarr-series_sync"})}),Object(Nn.jsx)(Qc,{name:"Update Episodes List from Sonarr",children:Object(Nn.jsx)(ni,{options:Li,settingKey:"settings-sonarr-episodes_sync"})}),Object(Nn.jsx)(Qc,{name:"Update Movies List from Radarr",children:Object(Nn.jsx)(ni,{options:Ri,settingKey:"settings-radarr-movies_sync"})})]}),Object(Nn.jsxs)(Vc,{header:"Disk Indexing",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{name:"Update all Episode Subtitles from Disk",children:Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-full_update",options:_i})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Day of The Week",children:Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-full_update_day",options:Hi})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Daily"===e||"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Time of The Day",children:Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-full_update_hour",options:e})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{name:"Update all Movie Subtitles from Disk",children:Object(Nn.jsx)(ni,{settingKey:"settings-radarr-full_update",options:_i})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Day of The Week",children:Object(Nn.jsx)(ni,{settingKey:"settings-radarr-full_update_day",options:Hi})})}),Object(Nn.jsx)(qc.Content,{on:function(e){return"Daily"===e||"Weekly"===e},children:Object(Nn.jsx)(Qc,{name:"Time of The Day",children:Object(Nn.jsx)(ni,{settingKey:"settings-radarr-full_update_hour",options:e})})})]})]}),Object(Nn.jsxs)(Vc,{header:"Search and Upgrade Subtitles",children:[Object(Nn.jsx)(Qc,{name:"Search for Missing Series Subtitles",children:Object(Nn.jsx)(ni,{settingKey:"settings-general-wanted_search_frequency",options:Ui})}),Object(Nn.jsx)(Qc,{name:"Search for Missing Movies Subtitles",children:Object(Nn.jsx)(ni,{options:Ui,settingKey:"settings-general-wanted_search_frequency_movie"})}),Object(Nn.jsx)(Qc,{name:"Upgrade Previously Downloaded Subtitles",children:Object(Nn.jsx)(ni,{options:Ui,settingKey:"settings-general-upgrade_frequency"})})]})]})},Gi=[{label:"Standard",value:"standard"},{label:"Anime",value:"anime"},{label:"Daily",value:"daily"}],Yi=function(){var e=Object(a.useCallback)((function(e){var t,n;return null!==(t=null===(n=e.sonarr.base_url)||void 0===n?void 0:n.slice(1))&&void 0!==t?t:""}),[]);return Object(Nn.jsx)(Dc,{title:"Sonarr - Bazarr (Settings)",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Vc,{header:"Use Sonarr",children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Enabled",settingKey:Bc})})})}),Object(Nn.jsxs)(qc.Content,{indent:!1,children:[Object(Nn.jsxs)(Vc,{header:"Host",children:[Object(Nn.jsxs)(Qc,{name:"Address",children:[Object(Nn.jsx)($c,{settingKey:"settings-sonarr-ip"}),Object(Nn.jsx)(Zc,{children:"Hostname or IPv4 Address"})]}),Object(Nn.jsx)(Qc,{name:"Port",children:Object(Nn.jsx)($c,{settingKey:"settings-sonarr-port"})}),Object(Nn.jsx)(Qc,{name:"Base URL",children:Object(Nn.jsxs)(yr.a,{children:[Object(Nn.jsx)(yr.a.Prepend,{children:Object(Nn.jsx)(yr.a.Text,{children:"/"})}),Object(Nn.jsx)($c,{settingKey:"settings-sonarr-base_url",override:e,beforeStaged:function(e){return"/"+e}})]})}),Object(Nn.jsx)(Qc,{name:"API Key",children:Object(Nn.jsx)($c,{settingKey:"settings-sonarr-apikey"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"SSL",settingKey:"settings-sonarr-ssl"})}),Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ii,{category:"sonarr"})})]}),Object(Nn.jsxs)(Vc,{header:"Options",children:[Object(Nn.jsx)(Qc,{name:"Minimum Score",children:Object(Nn.jsx)(ri,{settingKey:"settings-general-minimum_score"})}),Object(Nn.jsxs)(Qc,{name:"Excluded Tags",children:[Object(Nn.jsx)(ai,{settingKey:"settings-sonarr-excluded_tags"}),Object(Nn.jsx)(Zc,{children:"Episodes from series with those tags (case sensitive) in Sonarr will be excluded from automatic download of subtitles."})]}),Object(Nn.jsxs)(Qc,{name:"Excluded Series Types",children:[Object(Nn.jsx)(ni,{settingKey:"settings-sonarr-excluded_series_types",multiple:!0,options:Gi}),Object(Nn.jsx)(Zc,{children:"Episodes from series with those types in Sonarr will be excluded from automatic download of subtitles."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Download Only Monitored",settingKey:"settings-sonarr-only_monitored"}),Object(Nn.jsx)(Zc,{children:"Automatic download of subtitles will only happen for monitored episodes in Sonarr."})]})]}),Object(Nn.jsx)(Vc,{header:"Path Mappings",children:Object(Nn.jsx)(Ki,{type:"sonarr"})})]})]})})},qi=[{label:"AlongSide Media File",value:"current"},{label:"Relative Path to Media File",value:"relative"},{label:"Absolute Path",value:"absolute"}],Wi=[{label:"Anti-Captcha",value:"anti-captcha"},{label:"Death by Captcha",value:"death-by-captcha"}];function Vi(e){return"color(name=".concat(e,")")}var Qi=[{label:"White",value:Vi("white")},{label:"Light Gray",value:Vi("lightgray")},{label:"Red",value:Vi("red")},{label:"Green",value:Vi("green")},{label:"Yellow",value:Vi("yellow")},{label:"Blue",value:Vi("blue")},{label:"Magenta",value:Vi("magenta")},{label:"Cyan",value:Vi("cyan")},{label:"Black",value:Vi("black")},{label:"Dark Red",value:Vi("darkred")},{label:"Dark Green",value:Vi("darkgreen")},{label:"Dark Yellow",value:Vi("darkyellow")},{label:"Dark Blue",value:Vi("darkblue")},{label:"Dark Magenta",value:Vi("darkmagenta")},{label:"Dark Cyan",value:Vi("darkcyan")},{label:"Dark Grey",value:Vi("darkgrey")}],Xi=function(e){return function(t){var n,r;return null!==(n=null===(r=t.general.subzero_mods)||void 0===r?void 0:r.includes(e))&&void 0!==n&&n}},Ji=function(e){var t,n;return null!==(t=null===(n=e.general.subzero_mods)||void 0===n?void 0:n.find((function(e){return e.startsWith("color")})))&&void 0!==t?t:null},Zi=function(){return Object(Nn.jsxs)(Dc,{title:"Subtitles - Bazarr (Settings)",children:[Object(Nn.jsxs)(Vc,{header:"Subtitles Options",children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{name:"Subtitle Folder",children:[Object(Nn.jsx)(ni,{options:qi,settingKey:"settings-general-subfolder"}),Object(Nn.jsx)(Zc,{children:"Choose the folder you wish to store/read the subtitles"})]})}),Object(Nn.jsx)(qc.Content,{on:function(e){return""!==e&&"current"!==e},children:Object(Nn.jsx)(Qc,{name:"Custom Subtitles Folder",children:Object(Nn.jsx)($c,{settingKey:"settings-general-subfolder_custom"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Upgrade Previously Downloaded Subtitles",settingKey:"settings-general-upgrade_subs"}),Object(Nn.jsx)(Zc,{children:"Schedule a task to upgrade subtitles previously downloaded by Bazarr."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ri,{settingKey:"settings-general-days_to_upgrade_subs",max:30}),Object(Nn.jsx)(Zc,{children:"Number of days to go back in history to upgrade subtitles"})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Upgrade Manually Downloaded or Translated Subtitles",settingKey:"settings-general-upgrade_manual"}),Object(Nn.jsx)(Zc,{children:"Enable or disable upgrade of manually downloaded or translated subtitles."})]})]})]})]}),Object(Nn.jsx)(Vc,{header:"Anti-Captcha Options",children:Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ni,{clearable:!0,settingKey:"settings-general-anti_captcha_provider",beforeStaged:function(e){return void 0===e?"None":e},options:Wi}),Object(Nn.jsx)(Zc,{children:"Choose the anti-captcha provider you want to use"})]})}),Object(Nn.jsxs)(qc.Content,{eventKey:"anti-captcha",children:[Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)("a",{href:"http://getcaptchasolution.com/eixxo1rsnw",children:"Anti-Captcha.com"})}),Object(Nn.jsx)(Qc,{name:"Account Key",children:Object(Nn.jsx)($c,{settingKey:"settings-anticaptcha-anti_captcha_key"})})]}),Object(Nn.jsxs)(qc.Content,{eventKey:"death-by-captcha",children:[Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)("a",{href:"https://www.deathbycaptcha.com",children:"DeathByCaptcha.com"})}),Object(Nn.jsx)(Qc,{name:"Username",children:Object(Nn.jsx)($c,{settingKey:"settings-deathbycaptcha-username"})}),Object(Nn.jsx)(Qc,{name:"Password",children:Object(Nn.jsx)($c,{password:!0,settingKey:"settings-deathbycaptcha-password"})})]})]})}),Object(Nn.jsxs)(Vc,{header:"Performance / Optimization",children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Adaptive Searching",settingKey:"settings-general-adaptive_searching"}),Object(Nn.jsx)(Zc,{children:"When searching for subtitles, Bazarr will search less frequently to limit call to providers."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Search Enabled Providers Simultaneously",settingKey:"settings-general-multithreading"}),Object(Nn.jsx)(Zc,{children:"Search multiple providers at once (Don't choose this on low powered devices)"})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Use Embedded Subtitles",settingKey:"settings-general-use_embedded_subs"}),Object(Nn.jsx)(Zc,{children:"Use embedded subtitles in media files when determining missing ones."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Ignore Embedded PGS Subtitles",settingKey:"settings-general-ignore_pgs_subs"}),Object(Nn.jsx)(Zc,{children:"Ignores PGS Subtitles in Embedded Subtitles detection."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Ignore Embedded VobSub Subtitles",settingKey:"settings-general-ignore_vobsub_subs"}),Object(Nn.jsx)(Zc,{children:"Ignores VobSub Subtitles in Embedded Subtitles detection."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Show Only Desired Languages",settingKey:"settings-general-embedded_subs_show_desired"}),Object(Nn.jsx)(Zc,{children:"Hide embedded subtitles for languages that are not currently desired."})]})]})]})]}),Object(Nn.jsxs)(Vc,{header:"Post-Processing",children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Encode Subtitles To UTF8",settingKey:"settings-general-utf8_encode"}),Object(Nn.jsx)(Zc,{children:"Re-encode downloaded Subtitles to UTF8. Should be left enabled in most case."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Hearing Impaired",override:Xi("remove_HI"),settingKey:"subzero-remove_HI"}),Object(Nn.jsx)(Zc,{children:"Removes tags, text and characters from subtitles that are meant for hearing impaired people."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Remove Tags",override:Xi("remove_tags"),settingKey:"subzero-remove_tags"}),Object(Nn.jsx)(Zc,{children:"Removes all possible style tags from the subtitle, such as font, bold, color etc."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"OCR Fixes",override:Xi("OCR_fixed"),settingKey:"subzero-OCR_fixed"}),Object(Nn.jsx)(Zc,{children:"Fix issues that happen when a subtitle gets converted from bitmap to text through OCR."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Common Fixes",override:Xi("common"),settingKey:"subzero-common"}),Object(Nn.jsx)(Zc,{children:"Fix common and whitespace/punctuation issues in subtitles."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Fix Uppercase",override:Xi("fix_uppercase"),settingKey:"subzero-fix_uppercase"}),Object(Nn.jsx)(Zc,{children:"Tries to make subtitles that are completely uppercase readable."})]}),Object(Nn.jsxs)(Qc,{name:"Color",children:[Object(Nn.jsx)(ni,{clearable:!0,options:Qi,override:Ji,settingKey:"subzero-color"}),Object(Nn.jsx)(Zc,{children:"Adds color to your subtitles (for playback devices/software that don't ship their own color modes; only works for players that support color tags)."})]}),Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Reverse RTL",override:Xi("reverse_rtl"),settingKey:"subzero-reverse_rtl"}),Object(Nn.jsx)(Zc,{children:"Reverses the punctuation in right-to-left subtitles for problematic playback devices."})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Permission (chmod)",settingKey:"settings-general-chmod_enabled"})})}),Object(Nn.jsx)(qc.Content,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)($c,{placeholder:"0777",settingKey:"settings-general-chmod"}),Object(Nn.jsx)(Zc,{children:"Must be 4 digit octal"})]})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Automatic Subtitles Synchronization",settingKey:"settings-subsync-use_subsync"}),Object(Nn.jsx)(Zc,{children:"Enable the automatic subtitles synchronization after downloading a subtitles."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{label:"Debug",settingKey:"settings-subsync-debug"}),Object(Nn.jsx)(Zc,{children:"Do not actually sync the subtitles but generate a .tar.gz file to be able to open an issue for ffsubsync. This file will reside alongside the media file."})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Series Score Threshold",settingKey:"settings-subsync-use_subsync_threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-subsync-subsync_threshold"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{label:"Movies Score Threshold",settingKey:"settings-subsync-use_subsync_movie_threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-subsync-subsync_movie_threshold"})})})]})]})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsxs)(Qc,{children:[Object(Nn.jsx)(ei,{settingKey:"settings-general-use_postprocessing",label:"Custom Post-Processing"}),Object(Nn.jsx)(Zc,{children:"Enable the post-processing execution after downloading a subtitles."})]})}),Object(Nn.jsxs)(qc.Content,{children:[Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{settingKey:"settings-general-use_postprocessing_threshold",label:"Series Score Threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-general-postprocessing_threshold"})})})]}),Object(Nn.jsxs)(qc,{children:[Object(Nn.jsx)(qc.Control,{children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ei,{settingKey:"settings-general-use_postprocessing_threshold_movie",label:"Movies Score Threshold"})})}),Object(Nn.jsx)(qc.Content,{indent:!1,children:Object(Nn.jsx)(Qc,{children:Object(Nn.jsx)(ri,{settingKey:"settings-general-postprocessing_threshold_movie"})})})]}),Object(Nn.jsx)(Qc,{name:"Command",children:Object(Nn.jsx)($c,{settingKey:"settings-general-postprocessing_cmd"})}),Object(Nn.jsx)(Zc,{children:"Variables you can use in your command"}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{directory}}"})," Full path of the episode file parent directory"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode}}"})," Full path of the episode file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_name}}"})," Filename of the episode without parent directory or extension"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles}}"})," Full path of the subtitles file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles_language}}"})," Language of the subtitles file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles_language_code2}}"})," 2-letter ISO-639 language code of the subtitles language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitles_language_code3}}"})," 3-letter ISO-639 language code of the subtitles language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_language}}"})," Audio language of the episode file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_language_code2}}"})," 2-letter ISO-639 language code of the episode audio language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_language_code3}}"})," 3-letter ISO-639 language code of the episode audio language"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{score}}"})," Score of the subtitle file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{subtitle_id}}"})," Provider ID of the subtitle file"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{series_id}}"})," Sonarr series ID (Empty if movie)"]}),Object(Nn.jsxs)(Zc,{children:[Object(Nn.jsx)("b",{children:"{{episode_id}}"})," Sonarr episode ID or Radarr movie ID"]})]})]})]})]})},$i=[{label:"25",value:25},{label:"50",value:50},{label:"100",value:100},{label:"250",value:250},{label:"500",value:500},{label:"1000",value:1e3}],es=function(){return Object(Nn.jsx)(Dc,{title:"Interface - Bazarr (Settings)",children:Object(Nn.jsx)(Vc,{header:"UI",children:Object(Nn.jsx)(Qc,{name:"Page Size",children:Object(Nn.jsx)(ni,{options:$i,settingKey:me,override:function(e,t){return t.site.pageSize}})})})})},ts=function(){return ce(nn(gt)),Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/settings",children:Object(Nn.jsx)(l.b,{exact:!0,to:"/settings/general"})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/general",children:Object(Nn.jsx)(bi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/ui",children:Object(Nn.jsx)(es,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/sonarr",children:Object(Nn.jsx)(Yi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/radarr",children:Object(Nn.jsx)(zi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/languages",children:Object(Nn.jsx)(Si,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/subtitles",children:Object(Nn.jsx)(Zi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/scheduler",children:Object(Nn.jsx)(Fi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/providers",children:Object(Nn.jsx)(Bi,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/settings/notifications",children:Object(Nn.jsx)(Ii,{})}),Object(Nn.jsx)(l.c,{path:"/settings/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},ns=function(e){var t=Object.assign({},e),n=dr(t.modalKey),r=Object(a.useMemo)((function(){return null===n||void 0===n?void 0:n.split("\\n").map((function(e,t){return Object(Nn.jsx)("p",{className:"text-nowrap my-1",children:e},t)}))}),[n]);return Object(Nn.jsx)(Or,Object(f.a)(Object(f.a)({title:"Stack traceback"},t),{},{children:Object(Nn.jsx)("pre",{children:Object(Nn.jsx)("code",{className:"zmdi-language-python-alt",children:r})})}))};function rs(e){switch(e){case"DEBUG":return Pe.m;case"ERROR":return Pe.f;case"INFO":return Pe.z;case"WARNING":return Pe.r;default:return Pe.M}}var as=function(e){var t=e.logs,n=sr(),r=Object(a.useCallback)((function(e,t){return n("system-log",t)}),[n]),i=Object(a.useMemo)((function(){return[{accessor:"type",Cell:function(e){return Object(Nn.jsx)(Ae.a,{icon:rs(e.value)})}},{Header:"Message",accessor:"message"},{Header:"Time",accessor:"timestamp",className:"text-nowrap",Cell:function(e){return Object(Nn.jsx)(ha,{children:e.value})}},{accessor:"exception",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate;return Object($.isUndefined)(n)?null:Object(Nn.jsx)(Jn,{icon:Pe.C,onClick:function(){return r&&r(t,n)}})}}]}),[]);return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(da,{columns:i,data:t,externalUpdate:r}),Object(Nn.jsx)(ns,{size:"xl",modalKey:"system-log"})]})},cs=function(){var e=tn((function(e){return e.system.logs})),t=nn(xt);ce(t);var n=Object(a.useState)(!1),r=Object(Z.a)(n,2),c=r[0],i=r[1],s=ae(!0),o=Object(a.useCallback)((function(){window.open("".concat(s,"bazarr.log"))}),[s]);return Object(Nn.jsx)(Yn,{state:e,children:function(n){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Logs - Bazarr (System)"})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsx)(nr.Button,{updating:e.updating,icon:Pe.T,onClick:t,children:"Refresh"}),Object(Nn.jsx)(nr.Button,{icon:Pe.p,onClick:o,children:"Download"}),Object(Nn.jsx)(nr.Button,{updating:c,icon:Pe.Y,onClick:function(){i(!0),$e.deleteLogs().finally((function(){i(!1),t()}))},children:"Empty"})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(as,{logs:n})})]})}})},is=function(e){var t=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"name"},{Header:"Status",accessor:"status"},{Header:"Next Retry",accessor:"retry"}]}),[]);return Object(Nn.jsx)(na,{columns:t,data:e.providers})},ss=function(){var e=pn(),t=Object(Z.a)(e,2),n=t[0],r=t[1];return ce(r),Object(Nn.jsx)(Yn,{state:n,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Providers - Bazarr (System)"})}),Object(Nn.jsxs)(nr,{children:[Object(Nn.jsx)(nr.Button,{updating:n.updating,icon:Pe.T,onClick:r,children:"Refresh"}),Object(Nn.jsx)(nr.AsyncButton,{icon:Pe.Y,promise:function(){return Xe.reset()},onSuccess:r,children:"Reset"})]}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(is,{providers:e})})]})}})},os="mr-2",ls=function(e){var t=e.name,n=e.body,r=e.date,c=e.prerelease,i=e.current,s=Object(a.useMemo)((function(){return n.map((function(e){return e.replace(/(\s\[.*?\])\(.*?\)/,"")}))}),[n]);return Object(Nn.jsxs)(Wc.a,{className:"mb-4 mx-3 d-flex flex-grow-1",children:[Object(Nn.jsxs)(Wc.a.Header,{children:[Object(Nn.jsx)("span",{className:os,children:t}),Object(Nn.jsx)(Qn.a,{className:os,variant:"info",children:r}),Object(Nn.jsx)(Qn.a,{className:os,variant:c?"danger":"success",children:c?"Development":"Master"}),Object(Nn.jsx)(Qn.a,{className:os,hidden:!i,variant:"primary",children:"Installed"})]}),Object(Nn.jsx)(Wc.a.Body,{children:Object(Nn.jsxs)(Wc.a.Text,{children:["From newest to oldest:",s.map((function(e,t){return Object(Nn.jsx)("li",{children:e},t)}))]})})]})},us=function(){var e=tn((function(e){return e.system.releases}));return ce(nn(mt)),Object(Nn.jsx)(Yn,{state:e,children:function(e){return Object(Nn.jsxs)(Me.a,{fluid:!0,className:"px-5 py-4 bg-light",children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Releases - Bazarr (System)"})}),Object(Nn.jsx)(Te.a,{children:e.map((function(e,t){return Object(Nn.jsx)(la.a,{xs:12,children:Object(Nn.jsx)(ls,Object(f.a)({},e))},de(t,e.date))}))})]})}})},ds=n(172);function js(e){var t=e.title,n=e.children;return Object(Nn.jsxs)(Te.a,{children:[Object(Nn.jsx)(la.a,{sm:4,children:Object(Nn.jsx)("b",{children:t})}),Object(Nn.jsx)(la.a,{children:n})]})}function bs(e){var t=e.icon,n=e.link,r=e.children;return Object(Nn.jsxs)(c.a.Fragment,{children:[Object(Nn.jsx)(Ae.a,{icon:t,style:{width:"2rem"}}),Object(Nn.jsx)("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:r})]})}var Os=function(e){var t=e.title,n=e.children;return Object(Nn.jsxs)(Me.a,{className:"py-3",children:[Object(Nn.jsx)("h4",{children:t}),Object(Nn.jsx)("hr",{}),n]})},hs=function(){var e=tn((function(e){return e.system.status.data}));return ce(nn(ft)),Object(Nn.jsxs)(Me.a,{className:"p-5",children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Status - Bazarr (System)"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsxs)(Os,{title:"About",children:[Object(Nn.jsx)(js,{title:"Bazarr Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.bazarr_version})}),Object(Nn.jsx)(js,{title:"Sonarr Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.sonarr_version})}),Object(Nn.jsx)(js,{title:"Radarr Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.radarr_version})}),Object(Nn.jsx)(js,{title:"Operating System",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.operating_system})}),Object(Nn.jsx)(js,{title:"Python Version",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.python_version})}),Object(Nn.jsx)(js,{title:"Bazarr Directory",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.bazarr_directory})}),Object(Nn.jsx)(js,{title:"Bazarr Config Directory",children:Object(Nn.jsx)("span",{children:null===e||void 0===e?void 0:e.bazarr_config_directory})})]})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsxs)(Os,{title:"More Info",children:[Object(Nn.jsx)(js,{title:"Home Page",children:Object(Nn.jsx)(bs,{icon:Pe.J,link:"https://www.bazarr.media/",children:"Bazarr Website"})}),Object(Nn.jsx)(js,{title:"Source",children:Object(Nn.jsx)(bs,{icon:ds.b,link:"https://github.com/morpheus65535/bazarr",children:"Bazarr on Github"})}),Object(Nn.jsx)(js,{title:"Wiki",children:Object(Nn.jsx)(bs,{icon:ds.c,link:"https://github.com/morpheus65535/bazarr/wiki",children:"Bazarr Wiki"})}),Object(Nn.jsx)(js,{title:"Discord",children:Object(Nn.jsx)(bs,{icon:ds.a,link:"https://discord.gg/MH2e2eb",children:"Bazarr on Discord"})})]})})]})},fs=function(e){var t=e.tasks,n=nn(vt),r=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"name",className:"text-nowrap"},{Header:"Interval",accessor:"interval",className:"text-nowrap"},{Header:"Next Execution",accessor:"next_run_in",className:"text-nowrap"},{accessor:"job_running",Cell:function(e){var t=e.row.original.job_id;return Object(Nn.jsx)(Vn,{promise:function(){return $e.runTask(t)},onSuccess:function(){return n(t)},variant:"light",size:"sm",disabled:e.value,children:Object(Nn.jsx)(Ae.a,{icon:Pe.T,spin:e.value})})}}]}),[n]);return Object(Nn.jsx)(na,{columns:r,data:t})},ps=function(){var e=tn((function(e){return e.system.tasks})),t=nn(pt);return ce(t,1e4),Object(Nn.jsx)(Yn,{state:e,children:function(n){return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsx)("title",{children:"Tasks - Bazarr (System)"})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.Button,{updating:e.updating,icon:Pe.T,onClick:t,children:"Refresh"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(fs,{tasks:n})})]})}})},vs=function(){return Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/system/tasks",children:Object(Nn.jsx)(ps,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/status",children:Object(Nn.jsx)(hs,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/providers",children:Object(Nn.jsx)(ss,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/logs",children:Object(Nn.jsx)(cs,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:"/system/releases",children:Object(Nn.jsx)(us,{})}),Object(Nn.jsx)(l.c,{path:"/system/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},xs=function(e){var t=e.type,n=e.columns,r=e.state,c=e.update,i=e.loader,s=e.searchAll,o=Object($.capitalize)(t),l=Object(a.useMemo)((function(){return le(r.data)}),[r.data]),u=Object(a.useCallback)((function(e,t){c(t)}),[c]);return Object(Nn.jsxs)(Me.a,{fluid:!0,children:[Object(Nn.jsx)(Ha.a,{children:Object(Nn.jsxs)("title",{children:["Wanted ",o," - Bazarr"]})}),Object(Nn.jsx)(nr,{children:Object(Nn.jsx)(nr.AsyncButton,{disabled:0===l.length,promise:s,onSuccess:c,icon:Pe.Q,children:"Search All"})}),Object(Nn.jsx)(Te.a,{children:Object(Nn.jsx)(da,{async:!0,asyncState:r,asyncId:oe,asyncLoader:i,emptyText:"No Missing ".concat(o," Subtitles"),columns:n,externalUpdate:u,data:l})})]})},ms=function(){var e=function(){var e=nn(Dt);return an(tn((function(e){return e.movie.wantedMovieList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=nn(zt),i=Object(a.useCallback)((function(){return Qe.action({action:"search-wanted"})}),[]),s=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"title",Cell:function(e){var t="/movies/".concat(e.row.original.radarrId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Missing",accessor:"missing_subtitles",Cell:function(e){var t=e.row,n=e.value,r=e.externalUpdate,a=t.original,c=a.hearing_impaired,i=a.radarrId;return n.map((function(e,n){return Object(Nn.jsxs)(Vn,{as:Qn.a,className:"mx-1 mr-2",variant:"secondary",promise:function(){return Qe.downloadSubtitles(i,{language:e.code2,hi:c,forced:!1})},onSuccess:function(){return r&&r(t,i)},children:[Object(Nn.jsx)(fa,{className:"pr-1",text:e}),Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.Q})]},de(n,e.code2))}))}}]}),[]);return Object(Nn.jsx)(xs,{type:"movies",columns:s,state:n,update:r,loader:c,searchAll:i})},gs=function(){var e=function(){var e=nn(Xt);return an(tn((function(e){return e.series.wantedEpisodesList})),e)}(),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=nn(Qt),i=Object(a.useCallback)((function(){return Je.action({action:"search-wanted"})}),[]),s=Object(a.useMemo)((function(){return[{Header:"Name",accessor:"seriesTitle",Cell:function(e){var t="/series/".concat(e.row.original.sonarrSeriesId);return Object(Nn.jsx)(u.b,{to:t,children:Object(Nn.jsx)("span",{children:e.value})})}},{Header:"Episode",accessor:"episode_number"},{accessor:"episodeTitle"},{Header:"Missing",accessor:"missing_subtitles",Cell:function(e){var t=e.row,n=e.externalUpdate,r=e.value,a=t.original,c=a.hearing_impaired,i=a.sonarrSeriesId,s=a.sonarrEpisodeId;return r.map((function(e,r){return Object(Nn.jsxs)(Vn,{as:Qn.a,className:"mx-1 mr-2",variant:"secondary",promise:function(){return qe.downloadSubtitles(i,s,{language:e.code2,hi:c,forced:!1})},onSuccess:function(){return n&&n(t,s)},children:[Object(Nn.jsx)(fa,{className:"pr-1",text:e}),Object(Nn.jsx)(Ae.a,{size:"sm",icon:Pe.Q})]},de(r,e.code2))}))}}]}),[]);return Object(Nn.jsx)(xs,{type:"series",columns:s,state:n,update:r,loader:c,searchAll:i})},ys=function(){var e=xn(),t=mn();return Object(Nn.jsxs)(l.e,{children:[e&&Object(Nn.jsx)(l.c,{exact:!0,path:"/wanted/series",children:Object(Nn.jsx)(gs,{})}),t&&Object(Nn.jsx)(l.c,{exact:!0,path:"/wanted/movies",children:Object(Nn.jsx)(ms,{})}),Object(Nn.jsx)(l.c,{path:"/wanted/*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})},ks=function(e){var t=e.className,n=xn(),r=mn(),c=Object(a.useMemo)((function(){return n?"/series":r?"/movies":"/settings"}),[n,r]),i=Object(l.h)();return Object(a.useEffect)((function(){be()}),[i.location]),Object(Nn.jsx)("div",{className:t,children:Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/",children:Object(Nn.jsx)(l.b,{exact:!0,to:c})}),n&&Object(Nn.jsx)(l.c,{path:"/series",children:Object(Nn.jsx)(Ac,{})}),r&&Object(Nn.jsx)(l.c,{path:"/movies",children:Object(Nn.jsx)(kc,{})}),Object(Nn.jsx)(l.c,{path:"/wanted",children:Object(Nn.jsx)(ys,{})}),Object(Nn.jsx)(l.c,{path:"/history",children:Object(Nn.jsx)(uc,{})}),Object(Nn.jsx)(l.c,{path:"/blacklist",children:Object(Nn.jsx)(qa,{})}),Object(Nn.jsx)(l.c,{path:"/settings",children:Object(Nn.jsx)(ts,{})}),Object(Nn.jsx)(l.c,{path:"/system",children:Object(Nn.jsx)(vs,{})}),Object(Nn.jsx)(l.c,{exact:!0,path:Ra,children:Object(Nn.jsx)(_a,{})}),Object(Nn.jsx)(l.c,{path:"*",children:Object(Nn.jsx)(l.b,{to:Ra})})]})})},Ss=c.a.createContext((function(){})),ws=function(e){var t=e.children;return Object(Nn.jsx)(Me.a,{className:"my-3",children:Object(Nn.jsxs)(Ee.a,{className:"d-flex flex-nowrap justify-content-between align-items-center",variant:"danger",children:[Object(Nn.jsxs)("div",{children:[Object(Nn.jsx)(Ae.a,{className:"mr-2",icon:Pe.s}),Object(Nn.jsx)("span",{children:t})]}),Object(Nn.jsx)(Be.a,{variant:"outline-danger",onClick:je,children:"Reload"})]})})},Cs=function(){var e=nn(kt),t=tn((function(e){return e.site})),n=t.initialized,r=t.auth,c=vn("has-update",10),i=window.Bazarr.hasUpdate;Object(a.useEffect)((function(){n&&i&&c({type:"info",message:"A new version of Bazarr is ready, restart is required"})}),[n,i,c]),Object(a.useEffect)((function(){e()}),[e]);var s=Object(a.useState)(!1),o=Object(Z.a)(s,2),u=o[0],d=o[1],j=Object(a.useCallback)((function(){return d(!u)}),[u]);return r?"boolean"===typeof n&&!1===n?Object(Nn.jsx)(Oa,{children:Object(Nn.jsx)("span",{children:"Please wait"})}):"string"===typeof n?Object(Nn.jsx)(ws,{children:n}):Object(Nn.jsxs)(Ss.Provider,{value:j,children:[Object(Nn.jsx)(Te.a,{noGutters:!0,className:"header-container",children:Object(Nn.jsx)(Ka,{})}),Object(Nn.jsxs)(Te.a,{noGutters:!0,className:"flex-nowrap",children:[Object(Nn.jsx)(Ta,{open:u}),Object(Nn.jsx)(br,{children:Object(Nn.jsx)(ks,{className:"d-flex flex-row flex-grow-1 main-router"})})]}),Object(Nn.jsx)(La,{})]}):Object(Nn.jsx)(l.b,{to:"/login"})},Ns=(n(474),function(){var e=Object(a.useState)(""),t=Object(Z.a)(e,2),n=t[0],r=t[1],c=Object(a.useState)(""),i=Object(Z.a)(c,2),s=i[0],o=i[1],u=Object(a.useState)(""),d=Object(Z.a)(u,2),j=d[0],b=d[1],O=Object(a.useState)(!1),h=Object(Z.a)(O,2),f=h[0],p=h[1],v=Object(a.useCallback)((function(e){b(e),setTimeout((function(){return b("")}),2e3)}),[]),x=nn(Nt),m=tn((function(e){return e.site.auth})),g=Object(a.useCallback)((function(){p(!1),v("Login Failed")}),[v]);return m?Object(Nn.jsx)(l.b,{to:"/"}):Object(Nn.jsx)("div",{className:"d-flex bg-light vh-100 justify-content-center align-items-center",children:Object(Nn.jsx)(Wc.a,{className:"auth-card shadow",children:Object(Nn.jsxs)(Mn.a,{onSubmit:function(e){e.preventDefault(),f||(p(!0),$e.login(n,s).then(x).catch(g))},children:[Object(Nn.jsxs)(Wc.a.Body,{children:[Object(Nn.jsx)(Mn.a.Group,{className:"mb-5 d-flex justify-content-center",children:Object(Nn.jsx)(pa.a,{width:"64",height:"64",src:"data:image/png;base64,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"})}),Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Mn.a.Control,{disabled:f,name:"username",type:"text",placeholder:"Username",required:!0,onChange:function(e){return r(e.currentTarget.value)}})}),Object(Nn.jsx)(Mn.a.Group,{children:Object(Nn.jsx)(Mn.a.Control,{disabled:f,name:"password",type:"password",placeholder:"Password",required:!0,onChange:function(e){return o(e.currentTarget.value)}})}),Object(Nn.jsx)(ga.a,{in:0!==j.length,children:Object(Nn.jsx)("div",{children:Object(Nn.jsx)(Ee.a,{variant:"danger",className:"m-0",children:j})})})]}),Object(Nn.jsx)(Wc.a.Footer,{children:Object(Nn.jsx)(Be.a,{type:"submit",disabled:f,block:!0,children:f?Object(Nn.jsx)(Cn.a,{size:"sm",animation:"border"}):"LOGIN"})})]})})})}),Is=function(){var e=ae();return Object(Nn.jsx)(u.a,{basename:e,children:Object(Nn.jsxs)(l.e,{children:[Object(Nn.jsx)(l.c,{exact:!0,path:"/login",children:Object(Nn.jsx)(Ns,{})}),Object(Nn.jsx)(l.c,{path:"/",children:Object(Nn.jsx)(Cs,{})})]})})};s.a.render(Object(Nn.jsx)(o.a,{store:Ie,children:Object(Nn.jsx)(Is,{})}),document.getElementById("root"))}},[[475,1,2]]]); +//# sourceMappingURL=main.0f1951a9.chunk.js.map \ No newline at end of file diff --git a/frontend/build/static/js/main.fb44016a.chunk.js.map b/frontend/build/static/js/main.0f1951a9.chunk.js.map similarity index 69% rename from frontend/build/static/js/main.fb44016a.chunk.js.map rename to frontend/build/static/js/main.0f1951a9.chunk.js.map index a6c40e811..54425eea2 100644 --- a/frontend/build/static/js/main.fb44016a.chunk.js.map +++ b/frontend/build/static/js/main.0f1951a9.chunk.js.map @@ -1 +1 @@ -{"version":3,"sources":["@redux/constants/index.ts","utilites/validate.ts","utilites/hooks.ts","utilites/index.ts","@redux/reducers/mapper.ts","@redux/reducers/movie.ts","@redux/reducers/series.ts","@storage/local.ts","@redux/reducers/site.ts","@redux/reducers/system.ts","@redux/reducers/index.ts","@redux/store/index.ts","apis/badges.ts","apis/base.ts","apis/episodes.ts","apis/files.ts","apis/history.ts","apis/movies.ts","apis/providers.ts","apis/series.ts","apis/subtitles.ts","apis/system.ts","apis/utils.ts","apis/index.ts","@redux/actions/factory.ts","@redux/actions/system.ts","@redux/actions/site.ts","@redux/actions/movie.ts","@redux/actions/providers.ts","@redux/actions/series.ts","@redux/hooks/base.ts","@redux/hooks/index.ts","@redux/hooks/site.ts","components/inputs/Chips.tsx","components/inputs/FileBrowser.tsx","components/inputs/FileForm.tsx","components/inputs/Selector.tsx","components/async.tsx","components/inputs/Slider.tsx","components/buttons.tsx","components/ContentHeader/Button.tsx","components/ContentHeader/Group.tsx","components/ContentHeader/index.tsx","components/LanguageSelector.tsx","components/modals/provider.tsx","components/modals/SeriesUploadModal.tsx","components/modals/BaseModal.tsx","generic/blacklist.tsx","components/modals/HistoryModal.tsx","components/modals/ItemEditorModal.tsx","components/modals/MovieUploadModal.tsx","components/tables/plugins/useAsyncPagination.tsx","components/tables/plugins/useCustomSelection.tsx","components/tables/plugins/useDefaultSettings.tsx","components/modals/SubtitleToolModal.tsx","components/modals/toolOptions.ts","components/SearchBar.tsx","components/tables/BaseTable.tsx","components/tables/SimpleTable.tsx","components/tables/GroupTable.tsx","components/index.tsx","components/tables/PageControl.tsx","components/tables/PageTable.tsx","@static/logo64.png","Sidebar/items.tsx","Sidebar/index.tsx","Sidebar/list.ts","App/Header.tsx","App/notifications/index.tsx","404/index.tsx","Blacklist/Movies/table.tsx","Blacklist/Movies/index.tsx","Blacklist/Series/table.tsx","Blacklist/Series/index.tsx","Blacklist/Router.tsx","History/generic/index.tsx","History/Movies/index.tsx","History/Series/index.tsx","History/Statistics/options.ts","History/Statistics/index.tsx","History/Router.tsx","generic/BaseItemView/table.tsx","generic/BaseItemView/index.tsx","Movies/index.tsx","components/modals/ManualSearchModal.tsx","generic/ItemOverview.tsx","Movies/Detail/table.tsx","Movies/Detail/index.tsx","Movies/Router.tsx","Series/index.tsx","Series/Episodes/components.tsx","Series/Episodes/table.tsx","Series/Episodes/index.tsx","Series/Router.tsx","Settings/keys.ts","Settings/components/provider.tsx","Settings/components/hooks.ts","Settings/components/collapse.tsx","Settings/components/container.tsx","Settings/components/forms.tsx","Settings/components/index.tsx","Settings/General/options.ts","Settings/General/index.tsx","Settings/Languages/components.tsx","Settings/Languages/options.ts","Settings/Languages/modal.tsx","Settings/Languages/table.tsx","Settings/Languages/index.tsx","Settings/Notifications/components.tsx","Settings/Notifications/index.tsx","Settings/Providers/list.ts","Settings/Providers/components.tsx","Settings/Providers/index.tsx","Settings/components/pathMapper.tsx","Settings/Radarr/index.tsx","Settings/Scheduler/options.ts","Settings/Scheduler/index.tsx","Settings/options.ts","Settings/Sonarr/index.tsx","Settings/Subtitles/options.ts","Settings/Subtitles/index.tsx","Settings/UI/options.ts","Settings/UI/index.tsx","Settings/Router.tsx","System/Logs/modal.tsx","System/Logs/table.tsx","System/Logs/index.tsx","System/Providers/table.tsx","System/Providers/index.tsx","System/Releases/index.tsx","System/Status/index.tsx","System/Tasks/table.tsx","System/Tasks/index.tsx","System/Router.tsx","Wanted/generic/index.tsx","Wanted/Movies/index.tsx","Wanted/Series/index.tsx","Wanted/Router.tsx","App/Router.tsx","App/index.tsx","Auth/index.tsx","@static/logo128.png","index.tsx"],"names":["PROVIDER_UPDATE_LIST","SYSTEM_UPDATE_LANGUAGES_LIST","SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST","SYSTEM_UPDATE_STATUS","SYSTEM_UPDATE_TASKS","SYSTEM_UPDATE_LOGS","SYSTEM_UPDATE_RELEASES","SYSTEM_UPDATE_SETTINGS","SYSTEM_RUN_TASK","SERIES_UPDATE_WANTED_RANGE","SERIES_UPDATE_WANTED_LIST","SERIES_UPDATE_EPISODE_LIST","SERIES_UPDATE_HISTORY_LIST","SERIES_UPDATE_INFO","SERIES_UPDATE_RANGE","SERIES_UPDATE_BLACKLIST","MOVIES_UPDATE_WANTED_RANGE","MOVIES_UPDATE_WANTED_LIST","MOVIES_UPDATE_HISTORY_LIST","MOVIES_UPDATE_INFO","MOVIES_UPDATE_RANGE","MOVIES_UPDATE_BLACKLIST","SITE_AUTH_SUCCESS","SITE_NEED_AUTH","SITE_INITIALIZED","SITE_INITIALIZE_FAILED","SITE_SAVE_LOCALSTORAGE","SITE_NOTIFICATIONS_ADD","SITE_NOTIFICATIONS_REMOVE","SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP","SITE_SIDEBAR_UPDATE","SITE_BADGE_UPDATE","SITE_OFFLINE_UPDATE","isReactText","v","isString","isNumber","isNullable","isNull","isUndefined","isNonNullable","isMovie","useBaseUrl","slash","url","window","Bazarr","baseUrl","endsWith","useAutoUpdate","action","interval","useEffect","hd","undefined","setInterval","clearInterval","useWhenLoadingFinish","state","callback","curr","expected","onSame","onDiff","useState","setPrevious","prev","useWatcher","updating","updateAsyncState","promise","setter","defaultVal","data","then","catch","err","error","GetItemId","item","radarrId","sonarrEpisodeId","isSeries","sonarrSeriesId","buildOrderList","items","order","flatMap","mergeArray","olds","news","comparer","list","filter","forEach","idx","findIndex","n","push","BuildKey","args","join","Reload","location","reload","ScrollToTop","scrollTo","defVal","payload","loading","updateOrderIdState","id","total","parameters","start","length","idState","reduce","dataOrder","map","newItems","newOrder","countDist","Array","fill","splice","reducer","handleActions","wantedMovieList","historyList","movieList","blacklist","wantedEpisodesList","stateItems","episodeList","seriesList","uiPageSizeKey","storage","parseInt","localStorage","getItem","setItem","toString","updateLocalStorage","pageSize","auth","initialized","settings","key","value","alerts","notifications","timestamp","sidebar","next","badges","throw","offline","movies","episodes","providers","languages","enabledLanguage","enabled","languagesProfiles","status","tasks","job_id","job_running","logs","releases","combineReducers","system","series","movie","site","plugins","trunk","store","createStore","rootReducer","applyMiddleware","path","params","apis","axios","get","a","Promise","resolve","reject","result","BaseApi","prefix","this","object","form","FormData","val","append","formdata","createFormdata","post","patch","delete","seriesid","reason","episodeid","res","all","name","browse","timeframe","provider","language","radarrid","profileid","names","filenames","username","password","performAction","taskid","protocol","query","recreateAxios","apiKey","apikey","Axios","create","baseURL","defaults","headers","common","source","initialize","CancelToken","interceptors","request","use","config","cancelToken","token","response","resp","onOnline","handleError","onOffline","message","reduxStore","getState","dispatch","siteUpdateOffline","code","siteRedirectToAuth","gLimiter","Map","gArgs","asyncActionFactory","type","previousArgs","date","Date","isEqual","previousExec","getTime","set","createAsyncAction","combineActionFactory","dispatchers","fn","createCombineAction","combineAsyncActionFactory","promises","createAsyncCombineAction","callbackActionFactory","success","createCallbackAction","systemUpdateLanguagesAll","systemUpdateLanguages","systemUpdateLanguagesProfiles","SystemApi","languagesProfileList","systemUpdateStatus","systemUpdateTasks","getTasks","systemRunTasks","systemUpdateLogs","systemUpdateReleases","systemUpdateSettings","systemUpdateSettingsAll","bootstrap","siteInitialized","siteInitializeFailed","createAction","siteAuthSuccess","badgeUpdateAll","BadgesApi","siteSaveLocalstorage","siteAddError","siteRemoveError","siteRemoveErrorByTimestamp","siteChangeSidebar","movieUpdateWantedList","MoviesApi","wantedBy","movieUpdateWantedByRange","wanted","movieUpdateWantedBy","movieUpdateHistoryList","history","movieUpdateByRange","moviesBy","movieUpdateInfo","movieUpdateInfoAll","movieUpdateBlacklist","providerUpdateList","ProvidersApi","providerUpdateAll","seriesUpdateWantedList","EpisodesApi","seriesUpdateBy","SeriesApi","episodeUpdateBy","bySeriesId","seriesUpdateByRange","seriesBy","seriesUpdateWantedByRange","seriesUpdateWantedBy","episodeUpdateBySeriesId","seriesUpdateHistoryList","seriesUpdateInfoAll","seriesUpdateBlacklist","useReduxStore","selector","useSelector","useReduxAction","useDispatch","useCallback","useReduxActionWith","callbackAction","stateBuilder","t","d","useSystemSettings","s","useLanguageProfiles","useProfileBy","profiles","useMemo","find","profileId","useLanguages","useLanguageGetter","code2","useProfileItems","profile","getter","hi","forced","useRawSeries","useSerieBy","updateSerie","updateEpisodes","isNaN","useEpisodesBy","seriesId","useRawMovies","useMovieBy","updateMovies","useProviders","useNotification","sec","add","remove","msg","setTimeout","useIsSonarrEnabled","general","use_sonarr","useIsRadarrEnabled","use_radarr","SplitKeys","Chips","defaultValue","disabled","onChange","chips","setChips","input","useRef","addChip","newChips","removeChip","clearInput","current","onKeyUp","event","pressed","currentTarget","includes","preventDefault","onKeyDown","onBlur","chipElements","title","className","onClick","ref","backKey","getLastSeparator","lastIndexOf","extractPath","raw","slice","FileBrowser","load","drop","show","canShow","text","setText","setPath","setLoading","previous","tree","setTree","requestItems","Dropdown","Item","Spinner","size","animation","elements","startsWith","eventKey","icon","children","faFolder","faFile","Header","faReply","Divider","newPath","finally","onSelect","focus","onToggle","open","_","meta","Toggle","as","Form","Control","placeholder","e","Menu","style","maxHeight","overflowY","FileForm","files","emptyText","multiple","fileList","setFileList","label","File","custom","target","file","Selector","props","clearable","options","nameFromItems","wrapper","defaultWrapper","valueWrapper","isLoading","isSearchable","isMulti","closeMenuOnSelect","isClearable","isDisabled","classNamePrefix","isArray","RequestState","Slider","min","max","tooltips","onAfterChange","step","handle","left","offset","SliderTooltips","cls","tipsCls","AsyncStateOverlay","exist","missing","onError","Container","Alert","variant","Heading","faExclamationTriangle","PromiseOverlay","AsyncSelector","AsyncButton","propChildren","onSuccess","noReset","button","Invalid","setState","setHandle","Error","Success","clearTimeout","click","faCircleNotch","spin","faCheck","faTimes","ActionBadge","Badge","ActionButton","destructive","other","ActionButtonItem","Fragment","width","ContentHeaderButton","updatingIcon","displayIcon","faSpinner","ContentHeaderGroup","pos","ContentHeader","childItem","scroll","rowCls","Row","Button","Group","setUpdate","LanguageSelector","l","ModalContext","React","createContext","PayloadContext","p","useShowModal","useContext","keys","setKeys","payloads","setPayloads","useCloseModal","newKey","pop","newPayload","useIsModalShow","useOnModalShow","isShow","usePayload","State","ModalProvider","setKey","setPayload","Provider","BaseModal","closeable","modalKey","footer","closeModal","canClose","Modal","centered","onHide","backdrop","closeButton","Body","Footer","hidden","BlacklistButton","update","subs_id","subtitles_path","blacklisted","faFileExcel","MovieHistoryModal","modal","setHistory","columns","accessor","Cell","row","long","original","addBlacklist","PageTable","EpisodeHistoryModal","episode","Editor","submit","profileOptions","setId","setUpdating","itemId","fluid","Label","audio_language","MovieUploadModal","availableLanguages","uploading","setUpload","setLanguage","defaultLanguage","useLanguageBy","setFile","setForced","canUpload","uploadSubtitles","lang","Check","defaultChecked","checked","SeriesUploadModal","pending","setPending","processState","setProcessState","filelist","states","info","subState","Valid","infos","instance","didCheck","subtitles","Warning","Update","checkEpisodes","SubtitlesApi","results","episodeMap","ep","season","filename","pd","updateLanguage","setFiles","f","uploadStates","every","tableShow","loose","color","msgs","faInfoCircle","messages","externalUpdate","change","newInfo","faTrash","updateItem","newPending","index","SimpleTable","responsive","pluginName","ActionLoadingChange","useAsyncPagination","hooks","stateReducers","useInstance","useOptions","pageToLoad","needLoadingScreen","asyncState","pageIndex","pageStart","pageEnd","isInitializedError","isLoadingError","manualPagination","initialState","asyncLoader","asyncId","rows","nextPage","previousPage","gotoPage","ensurePluginOrder","totalCount","pageCount","Math","ceil","setPageToLoad","newGoto","updater","page","newPrevious","newNext","newPages","num","Object","assign","Checkbox","forwardRef","indeterminate","idIn","rest","defaultRef","resolvedRef","useCustomSelection","visibleColumnsDeps","deps","isSelecting","visibleColumns","selectedRowIds","getToggleAllRowsSelectedProps","getToggleRowSelectedProps","selectHide","useDefaultSettings","autoResetPage","availableTranslation","af","sq","am","ar","hy","az","eu","be","bn","bs","bg","ca","ceb","ny","co","hr","cs","da","nl","en","eo","et","tl","fi","fr","fy","gl","ka","de","el","gu","ht","ha","haw","iw","hmn","hu","is","ig","ga","it","ja","jw","kn","kk","km","ko","ku","ky","lo","la","lv","lt","lb","mk","mg","ms","ml","mt","mi","mr","mn","my","ne","no","ps","fa","pl","pt","pa","ro","ru","sm","gd","sr","st","sn","sd","si","sk","sl","so","es","su","sw","sv","tg","ta","te","th","tr","uk","ur","uz","vi","cy","xh","yi","yo","zu","fil","he","colorOptions","StateIcon","faQuestionCircle","Pending","faClock","Processing","Done","AddColorModal","process","selection","setSelection","FrameRateModal","from","setFrom","to","setTo","canSave","submodProcessFrameRate","InputGroup","parseFloat","AdjustTimesModal","isPlus","setPlus","setOffset","updateOffset","newOffset","some","h","m","Prepend","faPlus","faMinus","TranslateModal","available","selectedLanguage","STM","selections","setSelections","closeUntil","useCloseModalUntil","override","modify","showModal","stateList","getIdAndType","_language","useRowSelect","ButtonGroup","k","faPlay","split","faDeaf","faCode","faImage","faMagic","faTextHeight","faExchangeAlt","faPaintBrush","faFilm","faLanguage","SearchBar","onSearch","onFocus","setResults","useHistory","search","debounceSearch","throttle","clear","its","link","useStyleAndOptions","hoverable","striped","borderless","small","hideHeader","headersRenderer","rowRenderer","DefaultHeaderRenderer","col","getHeaderProps","render","DefaultRowRenderer","getRowProps","cells","cell","column","getCellProps","BaseTable","prepareRow","tableProps","tableBodyProps","colCount","empty","hRenderer","rRenderer","hover","headerGroup","getHeaderGroupProps","colSpan","useTable","getTableProps","getTableBodyProps","headerGroups","renderCell","isGrouped","getToggleRowExpandedProps","canExpand","isAggregated","renderRow","rotation","isExpanded","faChevronCircleRight","isPlaceholder","renderHeaders","GroupTable","HistoryAction","useGroupBy","useSortBy","useExpanded","PageControl","count","canPrevious","canNext","goto","loadState","end","pageButtons","abs","Pagination","active","arr","Ellipsis","Col","Prev","Next","async","autoScroll","canSelect","allPlugins","usePagination","canNextPage","canPreviousPage","setPageSize","globalPageSize","selecting","orderIdStateValidater","HistoryIcon","Delete","Download","faDownload","Manual","faUser","Sync","Upgrade","faRecycle","Upload","faCloudUploadAlt","MessageIcon","iconProps","popover","Popover","Content","OverlayTrigger","overlay","LoadingIndicator","DateFormatter","format","moment","fromNow","LanguageText","HiddenKeysContext","BadgesContext","LinkItem","toggle","SidebarToggleContext","badgeValue","badge","activeClassName","CollapseItem","hiddenKeys","toggleSidebar","itemKey","toLowerCase","sidebarKey","updateSidebar","useUpdateSidebar","child","childValue","collapseBoxClass","childrenElems","hiddenKey","ch","ListGroupItem","Collapse","in","DisplayItem","SonarrDisabledKey","RadarrDisabledKey","SidebarList","faCogs","faLaptop","Sidebar","Wanted","Series","Movies","System","Providers","sonarrEnabled","radarrEnabled","pathname","len","sidebarItems","Image","alt","src","logo","height","ListGroup","SearchItem","year","setNeedAuth","canLogout","dropdown","alignRight","restart","shutdown","logout","reconnecting","setReconnect","reconnect","Navbar","Brand","href","faBars","noGutters","xs","faHeart","faNetworkWired","NotificationToast","removeNotification","Toast","onClose","capitalize","NotificationContainer","RouterEmptyPath","EmptyPage","fasEyeSlash","Table","deleteBlacklist","BlacklistMoviesView","useBlacklistMovies","Helmet","BlacklistSeriesView","useBlacklistSeries","Router","sonarr","radarr","exact","HistoryGenericView","tableUpdater","typeName","MoviesHistoryView","useMoviesHistory","tableUpdate","SeriesHistoryView","useSeriesHistory","actionOptions","timeframeOptions","converter","merge","providerLabel","SelectorContainer","lg","HistoryStats","providerList","setTimeframe","setAction","setProvider","HistoryApi","stats","ResponsiveContainer","BarChart","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","allowDecimals","Tooltip","Legend","verticalAlign","Bar","dirtyItems","editMode","select","loader","updateRow","orderList","ExtendItemComparer","ItemEditorModal","lhs","rhs","BaseItemView","updateAction","shared","pendingEditMode","setPendingEdit","setEdit","edit","setDirty","changeProfiles","newDirty","startEdit","endEdit","cancel","ids","saveItems","faUndo","faList","MovieView","faBookmark","farBookmark","sceneName","faWrench","ManualSearchModal","onDownload","setResult","searching","setSearch","setStart","reset","score","hearing_impaired","rel","display","uploader","matches","dont_matches","dont","content","block","matchElements","dontElements","DetailBadge","desc","ItemOverview","details","detailBadges","tags","faTags","audioBadges","faMusic","profileItems","languageBadges","faStream","alternativePopover","Title","alternativeTitles","backgroundRepeat","backgroundSize","backgroundPosition","backgroundImage","fanart","backgroundColor","poster","fasClone","overview","missingText","downloadSubtitles","faSearch","deleteSubtitles","missing_subtitles","concat","download","subtitle","downloadMovieSubtitle","withRouter","match","Number","valid","setValid","validator","allowEdit","faSync","faHistory","faToolbox","SubtitleToolModal","SeriesView","episodeFileCount","episodeMissingCount","progress","ProgressBar","now","SubtitleAction","downloadEpisodeSubtitle","faBriefcase","maxSeason","sortBy","groupBy","expanded","serie","faHdd","faAdjust","seriesType","Episodes","enabledLanguageKey","languageProfileKey","notificationsKey","seriesEnabledKey","moviesEnabledKey","StagedChangesContext","SettingsProvider","updateStorage","stagedChange","setChange","dispatcher","setDispatcher","cleanup","saveSettings","JSON","stringify","submitHooks","setSettings","saveLocalStorage","newDispatch","defaultDispatcher","dispatchMaps","firstKey","lostValues","when","faSave","useStagedValues","useSingleUpdate","staged","changes","useExtract","validate","useStore","extractValue","useLatest","stagedValue","CollapseContext","CollapseUpdateContext","useCollapse","CollapseBox","context","on","indent","header","Input","ColCard","Card","subheader","plus","Subtitle","Message","Text","beforeStaged","controlled","settingKey","collapse","inline","isBoolean","selectorValidator","slider","URLTestButton","category","setTitle","setVar","address","port","ssl","testUrl","UtilsApi","urlTest","version","securityOptions","proxyOptions","branchOptions","characters","settingApiKey","baseUrlOverride","base_url","SettingsGeneralView","copied","setCopy","canUpdate","Append","field","document","createElement","innerText","body","appendChild","setSelectionRange","execCommand","copyToClipboard","wait","toggleState","faClipboard","charAt","floor","random","useEnabledLanguages","ProfileSelector","useProfiles","cutoffOptions","LanguagesProfileModal","cutoff","setProfile","newOptions","updateProfile","addItem","audio_exclude","ItemBadge","originalProfiles","setProfiles","nextProfileId","prof","submitProfiles","isCutoff","EnabledLanguageContext","LanguagesProfileContext","latest","SettingsLanguagesView","notificationComparer","one","another","NotificationModal","compare","newArray","inn","useUpdateArray","setCurrent","onShow","updateUrl","newCurrent","testNotification","NotificationView","useLatestMergeArray","SettingsNotificationsView","ProviderList","description","defaultKey","keyNameOverride","skip_wrong_fps","vip","use_hash","ModalKey","ProviderKey","ProviderView","cards","ProviderModal","setInfo","updateGlobal","obj","useMultiUpdate","deletePayload","newProviders","addProvider","modification","checks","visibleKey","SettingsProvidersView","PathMappingTable","getSupportKey","getEnabledKey","addRow","FilesApi","updateCell","newItem","faArrowCircleRight","bazarr","SettingsRadarrView","seriesSyncOptions","episodesSyncOptions","moviesSyncOptions","diskUpdateOptions","dayOptions","upgradeOptions","SettingsSchedulerView","timeOptions","seriesTypeOptions","SettingsSonarrView","folderOptions","antiCaptchaOption","buildColor","subzeroOverride","subzero_mods","subzeroColorOverride","SettingsSubtitlesView","pageSizeOptions","SettingsUIView","General","UI","Sonarr","Radarr","Languages","Subtitles","Scheduler","Notifications","SystemLogModal","stack","mapTypeToIcon","faBug","faExclamationCircle","faQuestion","faLayerGroup","SystemLogsView","resetting","setReset","deleteLogs","SystemProvidersView","headerBadgeCls","InfoElement","prerelease","replace","ReleasesView","CRow","InfoContainer","SystemStatusView","bazarr_version","sonarr_version","radarr_version","operating_system","python_version","bazarr_directory","bazarr_config_directory","faPaperPlane","faGithub","faWikipediaW","faDiscord","run","runTask","SystemTasksView","Tasks","Status","Logs","Releases","GenericWantedView","searchAll","WantedMoviesView","useWantedMovies","movieid","WantedSeriesView","useWantedSeries","redirectPath","InitializationErrorView","App","ReduxBootstrap","notify","hasUpdate","setSidebar","AuthPage","setUsername","setPassword","setError","updateError","authState","onSubmit","login","required","MainRouter","basename","Auth","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.fb44016a.chunk.js","sourcesContent":["// Provider action\nexport const PROVIDER_UPDATE_LIST = \"UPDATE_PROVIDER_LIST\";\n\n// System action\nexport const SYSTEM_UPDATE_LANGUAGES_LIST = \"UPDATE_ALL_LANGUAGES_LIST\";\nexport const SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST =\n \"UPDATE_LANGUAGES_PROFILE_LIST\";\nexport const SYSTEM_UPDATE_STATUS = \"UPDATE_SYSTEM_STATUS\";\nexport const SYSTEM_UPDATE_TASKS = \"UPDATE_SYSTEM_TASKS\";\nexport const SYSTEM_UPDATE_LOGS = \"UPDATE_SYSTEM_LOGS\";\nexport const SYSTEM_UPDATE_RELEASES = \"SYSTEM_UPDATE_RELEASES\";\nexport const SYSTEM_UPDATE_SETTINGS = \"UPDATE_SYSTEM_SETTINGS\";\nexport const SYSTEM_RUN_TASK = \"SYSTEM_RUN_TASK\";\n\n// Series action\nexport const SERIES_UPDATE_WANTED_RANGE = \"SERIES_UPDATE_WANTED_RANGE\";\nexport const SERIES_UPDATE_WANTED_LIST = \"UPDATE_SERIES_WANTED_LIST\";\nexport const SERIES_UPDATE_EPISODE_LIST = \"UPDATE_SERIES_EPISODE_LIST\";\nexport const SERIES_UPDATE_HISTORY_LIST = \"UPDATE_SERIES_HISTORY_LIST\";\nexport const SERIES_UPDATE_INFO = \"UPDATE_SEIRES_INFO\";\nexport const SERIES_UPDATE_RANGE = \"SERIES_UPDATE_RANGE\";\nexport const SERIES_UPDATE_BLACKLIST = \"UPDATE_SERIES_BLACKLIST\";\n\n// Movie action\nexport const MOVIES_UPDATE_LIST = \"UPDATE_MOVIE_LIST\";\nexport const MOVIES_UPDATE_WANTED_RANGE = \"MOVIES_UPDATE_WANTED_RANGE\";\nexport const MOVIES_UPDATE_WANTED_LIST = \"UPDATE_MOVIE_WANTED_LIST\";\nexport const MOVIES_UPDATE_HISTORY_LIST = \"UPDATE_MOVIE_HISTORY_LIST\";\nexport const MOVIES_UPDATE_INFO = \"UPDATE_MOVIE_INFO\";\nexport const MOVIES_UPDATE_RANGE = \"MOVIES_UPDATE_RANGE\";\nexport const MOVIES_UPDATE_BLACKLIST = \"UPDATE_MOVIES_BLACKLIST\";\n\n// Site Action\nexport const SITE_AUTH_SUCCESS = \"SITE_AUTH_SUCCESS\";\nexport const SITE_NEED_AUTH = \"SITE_NEED_AUTH\";\nexport const SITE_INITIALIZED = \"SITE_SYSTEM_INITIALIZED\";\nexport const SITE_INITIALIZE_FAILED = \"SITE_INITIALIZE_FAILED\";\nexport const SITE_SAVE_LOCALSTORAGE = \"SITE_SAVE_LOCALSTORAGE\";\nexport const SITE_NOTIFICATIONS_ADD = \"SITE_NOTIFICATIONS_ADD\";\nexport const SITE_NOTIFICATIONS_REMOVE = \"SITE_NOTIFICATIONS_REMOVE\";\nexport const SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP =\n \"SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP\";\nexport const SITE_SIDEBAR_UPDATE = \"SITE_SIDEBAR_UPDATE\";\nexport const SITE_BADGE_UPDATE = \"SITE_BADGE_UPDATE\";\nexport const SITE_OFFLINE_UPDATE = \"SITE_OFFLINE_UPDATE\";\n","import { isNull, isNumber, isString, isUndefined } from \"lodash\";\nimport { ReactText } from \"react\";\n\nexport function isReactText(v: any): v is ReactText {\n return isString(v) || isNumber(v);\n}\n\nexport function isNullable(v: any): v is Nullable {\n return isNull(v) || isUndefined(v);\n}\n\nexport function isNonNullable(v: any): v is NonNullable {\n return !isNullable(v);\n}\n\nexport function isMovie(v: any): v is Item.Movie {\n return \"radarrId\" in v;\n}\n\nexport function isEpisode(v: any): v is Item.Episode {\n return \"sonarrEpisodeId\" in v;\n}\n\nexport function isSeries(v: any): v is Item.Series {\n return \"episodeFileCount\" in v;\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { mergeArray } from \".\";\n\nexport function useBaseUrl(slash: boolean = false) {\n if (process.env.NODE_ENV === \"development\") {\n return \"/\";\n } else {\n let url = window.Bazarr.baseUrl ?? \"/\";\n if (slash && !url.endsWith(\"/\")) {\n url += \"/\";\n }\n return url;\n }\n}\n\nexport function useCanUpdateInject() {\n if (process.env.NODE_ENV === \"development\") {\n return process.env[\"REACT_APP_CAN_UPDATE\"] === \"true\";\n } else {\n return window.Bazarr.canUpdate;\n }\n}\n\nexport function useHasUpdateInject() {\n if (process.env.NODE_ENV === \"development\") {\n return process.env[\"REACT_APP_HAS_UPDATE\"] === \"true\";\n } else {\n return window.Bazarr.hasUpdate;\n }\n}\n\nexport function useSessionStorage(\n key: string\n): [StorageType, React.Dispatch] {\n const dispatch: React.Dispatch = useCallback(\n (value) => {\n if (value !== null) {\n sessionStorage.setItem(key, value);\n } else {\n sessionStorage.removeItem(key);\n }\n },\n [key]\n );\n return [sessionStorage.getItem(key), dispatch];\n}\n\nexport function useMergeArray(\n olds: readonly T[],\n news: readonly T[],\n comparer: Comparer>\n) {\n return useMemo(() => mergeArray(olds, news, comparer), [\n olds,\n news,\n comparer,\n ]);\n}\n\nexport function useAutoUpdate(action: () => void, interval?: number) {\n useEffect(() => {\n action();\n\n let hd: NodeJS.Timeout | null = null;\n if (interval !== undefined) {\n hd = setInterval(action, interval);\n }\n return () => {\n if (hd !== null) {\n clearInterval(hd);\n }\n };\n }, [action, interval]);\n}\n\nexport function useWatcher(\n curr: T,\n expected: T,\n onSame?: () => void,\n onDiff?: () => void\n) {\n const [, setPrevious] = useState(curr);\n\n useEffect(() => {\n setPrevious((prev) => {\n if (prev !== curr) {\n if (curr !== expected) {\n onDiff && onDiff();\n } else {\n onSame && onSame();\n }\n }\n return curr;\n });\n }, [curr, expected, onDiff, onSame]);\n}\n\nexport function useWhenLoadingFinish(\n state: Readonly>,\n callback: () => void\n) {\n return useWatcher(state.updating, true, undefined, callback);\n}\n","import { Dispatch } from \"react\";\nimport { isEpisode, isMovie, isNullable, isSeries } from \"./validate\";\n\nexport function updateAsyncState(\n promise: Promise,\n setter: (state: AsyncState) => void,\n defaultVal: T\n) {\n setter({\n updating: true,\n data: defaultVal,\n });\n promise\n .then((data) => {\n setter({\n updating: false,\n data: data,\n });\n })\n .catch((err) => {\n setter({\n updating: false,\n error: err,\n data: defaultVal,\n });\n });\n}\n\nexport function copyToClipboard(s: string) {\n let field = document.createElement(\"textarea\");\n field.innerText = s;\n document.body.appendChild(field);\n field.select();\n field.setSelectionRange(0, 9999);\n document.execCommand(\"copy\");\n field.remove();\n}\n\nexport function toggleState(\n dispatch: Dispatch,\n wait: number,\n start: boolean = false\n) {\n dispatch(!start);\n setTimeout(() => dispatch(start), wait);\n}\n\nexport function submodProcessColor(s: string) {\n return `color(name=${s})`;\n}\n\nexport function GetItemId(item: any): number {\n if (isMovie(item)) {\n return item.radarrId;\n } else if (isEpisode(item)) {\n return item.sonarrEpisodeId;\n } else if (isSeries(item)) {\n return item.sonarrSeriesId;\n } else {\n return -1;\n }\n}\n\nexport function buildOrderList(state: OrderIdState): T[] {\n const { items, order } = state;\n return order.flatMap((v) => {\n if (v !== null && v in items) {\n const item = items[v];\n return [item];\n }\n\n return [];\n });\n}\n\n// Replace elements in old array with news\nexport function mergeArray(\n olds: readonly T[],\n news: readonly T[],\n comparer: Comparer>\n) {\n const list = [...olds];\n const newList = news.filter((v) => !isNullable(v)) as NonNullable[];\n // Performance\n newList.forEach((v) => {\n const idx = list.findIndex((n, idx) => {\n if (!isNullable(n)) {\n return comparer(n, v);\n } else {\n return false;\n }\n });\n if (idx !== -1) {\n list[idx] = v;\n } else {\n list.push(v);\n }\n });\n return list;\n}\n\nexport function BuildKey(...args: any[]) {\n return args.join(\"-\");\n}\n\nexport function Reload() {\n window.location.reload();\n}\n\nexport function ScrollToTop() {\n window.scrollTo(0, 0);\n}\n\nexport * from \"./hooks\";\nexport * from \"./validate\";\n","import { mergeArray } from \"../../utilites\";\nimport { AsyncAction } from \"../types\";\n\nexport function updateAsyncState(\n action: AsyncAction,\n defVal: Readonly\n): AsyncState {\n if (action.payload.loading) {\n return {\n updating: true,\n data: defVal,\n };\n } else if (action.error !== undefined) {\n return {\n updating: false,\n error: action.payload.item as Error,\n data: defVal,\n };\n } else {\n return {\n updating: false,\n error: undefined,\n data: action.payload.item as Payload,\n };\n }\n}\n\nexport function updateOrderIdState(\n action: AsyncAction>,\n state: AsyncState>,\n id: ItemIdType\n): AsyncState> {\n if (action.payload.loading) {\n return {\n ...state,\n updating: true,\n };\n } else if (action.error !== undefined) {\n return {\n ...state,\n updating: false,\n error: action.payload.item as Error,\n };\n } else {\n const { data, total } = action.payload.item as AsyncDataWrapper;\n const [start, length] = action.payload.parameters;\n\n // Convert item list to object\n const idState: IdState = data.reduce>((prev, curr) => {\n const tid = curr[id];\n prev[tid] = curr;\n return prev;\n }, {});\n\n const dataOrder: number[] = data.map((v) => v[id]);\n\n let newItems = { ...state.data.items, ...idState };\n let newOrder = state.data.order;\n\n const countDist = total - newOrder.length;\n if (countDist > 0) {\n newOrder.push(...Array(countDist).fill(null));\n } else if (countDist < 0) {\n // Completely drop old data if list has shrinked\n newOrder = Array(total).fill(null);\n newItems = { ...idState };\n }\n\n if (typeof start === \"number\" && typeof length === \"number\") {\n newOrder.splice(start, length, ...dataOrder);\n } else if (start === undefined) {\n // Full Update\n newOrder = dataOrder;\n }\n\n return {\n updating: false,\n data: {\n items: newItems,\n order: newOrder,\n },\n };\n }\n}\n\nexport function updateAsyncList(\n action: AsyncAction,\n state: AsyncState,\n match: ID\n): AsyncState {\n if (action.payload.loading) {\n return {\n ...state,\n updating: true,\n };\n } else if (action.error !== undefined) {\n return {\n ...state,\n updating: false,\n error: action.payload.item as Error,\n };\n } else {\n const list = state.data as T[];\n const payload = action.payload.item as T[];\n const result = mergeArray(list, payload, (l, r) => l[match] === r[match]);\n\n return {\n updating: false,\n data: result,\n };\n }\n}\n","import { handleActions } from \"redux-actions\";\nimport {\n MOVIES_UPDATE_BLACKLIST,\n MOVIES_UPDATE_HISTORY_LIST,\n MOVIES_UPDATE_INFO,\n MOVIES_UPDATE_RANGE,\n MOVIES_UPDATE_WANTED_LIST,\n MOVIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport { AsyncAction } from \"../types\";\nimport { updateAsyncState, updateOrderIdState } from \"./mapper\";\n\nconst reducer = handleActions(\n {\n [MOVIES_UPDATE_WANTED_LIST]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedMovieList: updateOrderIdState(\n action,\n state.wantedMovieList,\n \"radarrId\"\n ),\n };\n },\n [MOVIES_UPDATE_WANTED_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedMovieList: updateOrderIdState(\n action,\n state.wantedMovieList,\n \"radarrId\"\n ),\n };\n },\n [MOVIES_UPDATE_HISTORY_LIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n historyList: updateAsyncState(action, state.historyList.data),\n };\n },\n [MOVIES_UPDATE_INFO]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n movieList: updateOrderIdState(action, state.movieList, \"radarrId\"),\n };\n },\n [MOVIES_UPDATE_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n movieList: updateOrderIdState(action, state.movieList, \"radarrId\"),\n };\n },\n [MOVIES_UPDATE_BLACKLIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n blacklist: updateAsyncState(action, state.blacklist.data),\n };\n },\n },\n {\n movieList: { updating: true, data: { items: {}, order: [] } },\n wantedMovieList: { updating: true, data: { items: {}, order: [] } },\n historyList: { updating: true, data: [] },\n blacklist: { updating: true, data: [] },\n }\n);\n\nexport default reducer;\n","import { handleActions } from \"redux-actions\";\nimport {\n SERIES_UPDATE_BLACKLIST,\n SERIES_UPDATE_EPISODE_LIST,\n SERIES_UPDATE_HISTORY_LIST,\n SERIES_UPDATE_INFO,\n SERIES_UPDATE_RANGE,\n SERIES_UPDATE_WANTED_LIST,\n SERIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport { AsyncAction } from \"../types\";\nimport { updateAsyncState, updateOrderIdState } from \"./mapper\";\n\nconst reducer = handleActions(\n {\n [SERIES_UPDATE_WANTED_LIST]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedEpisodesList: updateOrderIdState(\n action,\n state.wantedEpisodesList,\n \"sonarrEpisodeId\"\n ),\n };\n },\n [SERIES_UPDATE_WANTED_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedEpisodesList: updateOrderIdState(\n action,\n state.wantedEpisodesList,\n \"sonarrEpisodeId\"\n ),\n };\n },\n [SERIES_UPDATE_EPISODE_LIST]: (\n state,\n action: AsyncAction\n ) => {\n const { updating, error, data: items } = updateAsyncState(action, []);\n\n const stateItems = { ...state.episodeList.data };\n\n if (items.length > 0) {\n const id = items[0].sonarrSeriesId;\n stateItems[id] = items;\n }\n\n return {\n ...state,\n episodeList: {\n updating,\n error,\n data: stateItems,\n },\n };\n },\n [SERIES_UPDATE_HISTORY_LIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n historyList: updateAsyncState(action, state.historyList.data),\n };\n },\n [SERIES_UPDATE_INFO]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n seriesList: updateOrderIdState(\n action,\n state.seriesList,\n \"sonarrSeriesId\"\n ),\n };\n },\n [SERIES_UPDATE_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n seriesList: updateOrderIdState(\n action,\n state.seriesList,\n \"sonarrSeriesId\"\n ),\n };\n },\n [SERIES_UPDATE_BLACKLIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n blacklist: updateAsyncState(action, state.blacklist.data),\n };\n },\n },\n {\n seriesList: { updating: true, data: { items: {}, order: [] } },\n wantedEpisodesList: { updating: true, data: { items: {}, order: [] } },\n episodeList: { updating: true, data: {} },\n historyList: { updating: true, data: [] },\n blacklist: { updating: true, data: [] },\n }\n);\n\nexport default reducer;\n","export const uiPageSizeKey = \"storage-ui-pageSize\";\n\nexport const storage: LocalStorageType = {\n get pageSize(): number {\n return parseInt(localStorage.getItem(uiPageSizeKey) ?? \"50\");\n },\n set pageSize(v: number) {\n localStorage.setItem(uiPageSizeKey, v.toString());\n },\n};\n","import { Action, handleActions } from \"redux-actions\";\nimport { storage } from \"../../@storage/local\";\nimport {\n SITE_AUTH_SUCCESS,\n SITE_BADGE_UPDATE,\n SITE_INITIALIZED,\n SITE_INITIALIZE_FAILED,\n SITE_NEED_AUTH,\n SITE_NOTIFICATIONS_ADD,\n SITE_NOTIFICATIONS_REMOVE,\n SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP,\n SITE_OFFLINE_UPDATE,\n SITE_SAVE_LOCALSTORAGE,\n SITE_SIDEBAR_UPDATE,\n} from \"../constants\";\nimport { AsyncAction } from \"../types\";\n\nfunction updateLocalStorage(): Partial {\n return {\n pageSize: storage.pageSize,\n };\n}\n\nconst reducer = handleActions(\n {\n [SITE_NEED_AUTH]: (state) => ({\n ...state,\n auth: false,\n }),\n [SITE_AUTH_SUCCESS]: (state) => ({\n ...state,\n auth: true,\n }),\n [SITE_INITIALIZED]: (state) => ({\n ...state,\n initialized: true,\n }),\n [SITE_INITIALIZE_FAILED]: (state) => ({\n ...state,\n initialized: \"An Error Occurred When Initializing Bazarr UI\",\n }),\n [SITE_SAVE_LOCALSTORAGE]: (state, action: Action) => {\n const settings = action.payload;\n for (const key in settings) {\n const value = settings[key];\n localStorage.setItem(key, value);\n }\n return {\n ...state,\n ...updateLocalStorage(),\n };\n },\n [SITE_NOTIFICATIONS_ADD]: (\n state,\n action: Action\n ) => {\n const alerts = [\n ...state.notifications.filter((v) => v.id !== action.payload.id),\n action.payload,\n ];\n return { ...state, notifications: alerts };\n },\n [SITE_NOTIFICATIONS_REMOVE]: (state, action: Action) => {\n const alerts = state.notifications.filter((v) => v.id !== action.payload);\n return { ...state, notifications: alerts };\n },\n [SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP]: (state, action: Action) => {\n const alerts = state.notifications.filter(\n (v) => v.timestamp !== action.payload\n );\n return { ...state, notifications: alerts };\n },\n [SITE_SIDEBAR_UPDATE]: (state, action: Action) => {\n return {\n ...state,\n sidebar: action.payload,\n };\n },\n [SITE_BADGE_UPDATE]: {\n next: (state, action: AsyncAction) => {\n const badges = action.payload.item;\n if (badges && action.error !== true) {\n return { ...state, badges: badges as Badge };\n }\n return state;\n },\n throw: (state) => state,\n },\n [SITE_OFFLINE_UPDATE]: (state, action: Action) => {\n return { ...state, offline: action.payload };\n },\n },\n {\n initialized: false,\n auth: true,\n pageSize: 50,\n notifications: [],\n sidebar: \"\",\n badges: {\n movies: 0,\n episodes: 0,\n providers: 0,\n },\n offline: false,\n ...updateLocalStorage(),\n }\n);\n\nexport default reducer;\n","import { Action, handleActions } from \"redux-actions\";\nimport {\n PROVIDER_UPDATE_LIST,\n SYSTEM_RUN_TASK,\n SYSTEM_UPDATE_LANGUAGES_LIST,\n SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST,\n SYSTEM_UPDATE_LOGS,\n SYSTEM_UPDATE_RELEASES,\n SYSTEM_UPDATE_SETTINGS,\n SYSTEM_UPDATE_STATUS,\n SYSTEM_UPDATE_TASKS,\n} from \"../constants\";\nimport { updateAsyncState } from \"./mapper\";\n\nconst reducer = handleActions(\n {\n [SYSTEM_UPDATE_LANGUAGES_LIST]: (state, action) => {\n const languages = updateAsyncState>(action, []);\n const enabledLanguage: AsyncState = {\n ...languages,\n data: languages.data.filter((v) => v.enabled),\n };\n const newState = {\n ...state,\n languages,\n enabledLanguage,\n };\n return newState;\n },\n [SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST]: (state, action) => {\n const newState = {\n ...state,\n languagesProfiles: updateAsyncState>(\n action,\n []\n ),\n };\n return newState;\n },\n [SYSTEM_UPDATE_STATUS]: (state, action) => {\n return {\n ...state,\n status: updateAsyncState(\n action,\n state.status.data\n ),\n };\n },\n [SYSTEM_UPDATE_TASKS]: (state, action) => {\n return {\n ...state,\n tasks: updateAsyncState>(action, state.tasks.data),\n };\n },\n [SYSTEM_RUN_TASK]: (state, action: Action) => {\n const id = action.payload;\n const tasks = state.tasks;\n const newItems = [...tasks.data];\n\n const idx = newItems.findIndex((v) => v.job_id === id);\n\n if (idx !== -1) {\n newItems[idx].job_running = true;\n }\n\n return {\n ...state,\n tasks: {\n ...tasks,\n data: newItems,\n },\n };\n },\n [PROVIDER_UPDATE_LIST]: (state, action) => {\n return {\n ...state,\n providers: updateAsyncState(action, state.providers.data),\n };\n },\n [SYSTEM_UPDATE_LOGS]: (state, action) => {\n return {\n ...state,\n logs: updateAsyncState(action, state.logs.data),\n };\n },\n [SYSTEM_UPDATE_RELEASES]: (state, action) => {\n return {\n ...state,\n releases: updateAsyncState(action, state.releases.data),\n };\n },\n [SYSTEM_UPDATE_SETTINGS]: (state, action) => {\n return {\n ...state,\n settings: updateAsyncState(action, state.settings.data),\n };\n },\n },\n {\n languages: { updating: true, data: [] },\n enabledLanguage: { updating: true, data: [] },\n languagesProfiles: { updating: true, data: [] },\n status: {\n updating: true,\n data: undefined,\n },\n tasks: {\n updating: true,\n data: [],\n },\n providers: {\n updating: true,\n data: [],\n },\n logs: {\n updating: true,\n data: [],\n },\n releases: {\n updating: true,\n data: [],\n },\n settings: {\n updating: true,\n data: undefined,\n },\n }\n);\n\nexport default reducer;\n","import { combineReducers } from \"redux\";\nimport movie from \"./movie\";\nimport series from \"./series\";\nimport site from \"./site\";\nimport system from \"./system\";\n\nexport default combineReducers({\n system,\n series,\n movie,\n site,\n});\n","import { applyMiddleware, createStore } from \"redux\";\nimport logger from \"redux-logger\";\nimport promise from \"redux-promise\";\nimport trunk from \"redux-thunk\";\nimport rootReducer from \"../reducers\";\n\nconst plugins = [promise, trunk];\n\nif (\n process.env.NODE_ENV === \"development\" &&\n process.env[\"REACT_APP_LOG_REDUX_EVENT\"] !== \"false\"\n) {\n plugins.push(logger);\n}\n\nconst store = createStore(rootReducer, applyMiddleware(...plugins));\nexport default store;\n","import { AxiosResponse } from \"axios\";\nimport apis from \".\";\n\nclass BadgesApi {\n get(path: string, params?: any): Promise> {\n return apis.axios.get(`/badges${path}`, { params });\n }\n\n async all(): Promise {\n return new Promise((resolve, reject) => {\n this.get(\"\")\n .then((result) => {\n resolve(result.data);\n })\n .catch(reject);\n });\n }\n}\n\nexport default new BadgesApi();\n","import { AxiosResponse } from \"axios\";\nimport apis from \".\";\n\nclass BaseApi {\n prefix: string;\n\n constructor(prefix: string) {\n this.prefix = prefix;\n }\n\n private createFormdata(object?: LooseObject) {\n if (object) {\n let form = new FormData();\n\n for (const key in object) {\n const data = object[key];\n if (data instanceof Array) {\n if (data.length > 0) {\n data.forEach((val) => form.append(key, val));\n } else {\n form.append(key, \"\");\n }\n } else {\n form.append(key, object[key]);\n }\n }\n return form;\n } else {\n return undefined;\n }\n }\n\n protected get(path: string, params?: any): Promise> {\n return apis.axios.get(this.prefix + path, { params });\n }\n\n protected post(\n path: string,\n formdata?: LooseObject,\n params?: any\n ): Promise> {\n const form = this.createFormdata(formdata);\n return apis.axios.post(this.prefix + path, form, { params });\n }\n\n protected patch(\n path: string,\n formdata?: LooseObject,\n params?: any\n ): Promise> {\n const form = this.createFormdata(formdata);\n return apis.axios.patch(this.prefix + path, form, { params });\n }\n\n protected delete(\n path: string,\n formdata?: any,\n params?: any\n ): Promise> {\n const form = this.createFormdata(formdata);\n return apis.axios.delete(this.prefix + path, { params, data: form });\n }\n}\n\nexport default BaseApi;\n","import BaseApi from \"./base\";\n\nclass EpisodeApi extends BaseApi {\n constructor() {\n super(\"/episodes\");\n }\n\n async bySeriesId(seriesid: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"\", { seriesid })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async wanted(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n // TODO: Implement this on backend\n async wantedBy(episodeid?: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { episodeid })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async byEpisodeId(episodeid: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"\", { episodeid })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async history(episodeid?: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/history\", { episodeid })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async downloadSubtitles(\n seriesid: number,\n episodeid: number,\n form: FormType.Subtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.patch(\"/subtitles\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async uploadSubtitles(\n seriesid: number,\n episodeid: number,\n form: FormType.UploadSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/subtitles\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteSubtitles(\n seriesid: number,\n episodeid: number,\n form: FormType.DeleteSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/subtitles\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async blacklist(): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/blacklist\")\n .then((res) => {\n resolve(res.data.data);\n })\n .catch(reject);\n });\n }\n\n async addBlacklist(\n seriesid: number,\n episodeid: number,\n form: FormType.AddBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/blacklist\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteBlacklist(\n all?: boolean,\n form?: FormType.DeleteBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/blacklist\", form, { all })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new EpisodeApi();\n","import BaseApi from \"./base\";\n\nclass FilesApi extends BaseApi {\n constructor() {\n super(\"/files\");\n }\n\n async browse(name: string, path?: string): Promise {\n return new Promise((resolve, reject) => {\n this.get(name, { path })\n .then((res) => resolve(res.data))\n .catch(reject);\n });\n }\n\n async bazarr(path?: string): Promise {\n return this.browse(\"\", path);\n }\n\n async sonarr(path?: string): Promise {\n return this.browse(\"/sonarr\", path);\n }\n\n async radarr(path?: string): Promise {\n return this.browse(\"/radarr\", path);\n }\n}\n\nexport default new FilesApi();\n","import BaseApi from \"./base\";\n\nclass HistoryApi extends BaseApi {\n constructor() {\n super(\"/history\");\n }\n\n async stats(\n timeframe?: History.TimeframeOptions,\n action?: History.ActionOptions,\n provider?: string,\n language?: LanguageCodeType\n ): Promise {\n return new Promise((resolve, reject) => {\n this.get(\"/stats\", {\n timeframe,\n action,\n provider,\n language,\n })\n .then((res) => resolve(res.data))\n .catch(reject);\n });\n }\n}\n\nexport default new HistoryApi();\n","import BaseApi from \"./base\";\n\nclass MovieApi extends BaseApi {\n constructor() {\n super(\"/movies\");\n }\n\n async blacklist(): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/blacklist\")\n .then((res) => {\n resolve(res.data.data);\n })\n .catch(reject);\n });\n }\n\n async addBlacklist(\n radarrid: number,\n form: FormType.AddBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/blacklist\", form, { radarrid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteBlacklist(\n all?: boolean,\n form?: FormType.DeleteBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/blacklist\", form, { all })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async movies(id?: number[]) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { radarrid: id })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async moviesBy(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async modify(form: FormType.ModifyItem) {\n return new Promise((resolve, reject) => {\n this.post(\"\", { radarrid: form.id, profileid: form.profileid })\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n }\n\n async wanted(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n // TODO: Implement this on backend\n async wantedBy(radarrid?: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { radarrid })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async history(id?: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/history\", {\n radarrid: id,\n })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async action(action: FormType.MoviesAction) {\n return new Promise((resolve, reject) => {\n this.patch(\"\", action)\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async downloadSubtitles(id: number, form: FormType.Subtitle): Promise {\n return new Promise((resolve, reject) => {\n this.patch(\"/subtitles\", form, { radarrid: id })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async uploadSubtitles(\n id: number,\n form: FormType.UploadSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/subtitles\", form, { radarrid: id })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteSubtitles(\n id: number,\n form: FormType.DeleteSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/subtitles\", form, { radarrid: id })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new MovieApi();\n","import BaseApi from \"./base\";\n\nclass ProviderApi extends BaseApi {\n constructor() {\n super(\"/providers\");\n }\n\n async providers() {\n return new Promise>((resolve, reject) => {\n this.get>>(\"\")\n .then((result) => {\n resolve(result.data.data);\n })\n .catch(reject);\n });\n }\n\n async reset() {\n return new Promise((resolve, reject) => {\n this.post(\"\", { action: \"reset\" })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async movies(id: number) {\n return new Promise((resolve, reject) => {\n this.get>(\"/movies\", { radarrid: id })\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async downloadMovieSubtitle(radarrid: number, form: FormType.ManualDownload) {\n return new Promise((resolve, reject) => {\n this.post(\"/movies\", form, { radarrid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async episodes(id: number) {\n return new Promise((resolve, reject) => {\n this.get>(\"/episodes\", {\n episodeid: id,\n })\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async downloadEpisodeSubtitle(\n seriesid: number,\n episodeid: number,\n form: FormType.ManualDownload\n ) {\n return new Promise((resolve, reject) => {\n this.post(\"/episodes\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new ProviderApi();\n","import BaseApi from \"./base\";\n\nclass SeriesApi extends BaseApi {\n constructor() {\n super(\"/series\");\n }\n\n async series(id?: number[]) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { seriesid: id })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async seriesBy(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async modify(form: FormType.ModifyItem) {\n return new Promise((resolve, reject) => {\n this.post(\"\", { seriesid: form.id, profileid: form.profileid })\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n }\n\n async action(form: FormType.SeriesAction) {\n return new Promise((resolve, reject) => {\n this.patch(\"\", form)\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new SeriesApi();\n","import BaseApi from \"./base\";\n\nclass SubtitlesApi extends BaseApi {\n constructor() {\n super(\"/subtitles\");\n }\n\n async info(names: string[]) {\n return new Promise((resolve, reject) => {\n this.get>(`/info`, {\n filenames: names,\n })\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async modify(action: string, form: FormType.ModifySubtitle) {\n return new Promise((resolve, reject) => {\n this.patch(\"\", form, { action })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new SubtitlesApi();\n","import BaseApi from \"./base\";\n\nclass SystemApi extends BaseApi {\n constructor() {\n super(\"/system\");\n }\n\n private async performAction(action: string) {\n return new Promise((resolve, reject) => {\n this.post(\"\", undefined, { action })\n .then(resolve)\n .catch(reject);\n });\n }\n\n async login(username: string, password: string) {\n return new Promise((resolve, reject) => {\n this.post(\"/account\", { username, password }, { action: \"login\" })\n .then(resolve)\n .catch(reject);\n });\n }\n\n async logout() {\n return new Promise((resolve, reject) => {\n this.post(\"/account\", undefined, { action: \"logout\" })\n .then(resolve)\n .catch(reject);\n });\n }\n\n async shutdown() {\n return this.performAction(\"shutdown\");\n }\n\n async restart() {\n return this.performAction(\"restart\");\n }\n\n async settings() {\n return new Promise((resolve, reject) => {\n this.get(\"/settings\")\n .then((result) => {\n resolve(result.data);\n })\n .catch(reject);\n });\n }\n\n async setSettings(data: object) {\n return new Promise((resolve, reject) => {\n this.post(\"/settings\", data)\n .then((res) => {\n resolve();\n })\n .catch(reject);\n });\n }\n\n async languages() {\n return new Promise>((resolve, reject) => {\n this.get>(\"/languages\")\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async languagesProfileList() {\n return new Promise>((resolve, reject) => {\n this.get>(\"/languages/profiles\")\n .then((result) => resolve(result.data))\n .catch(reject);\n });\n }\n\n async status() {\n return new Promise((resolve, reject) => {\n this.get>(\"/status\")\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async logs() {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/logs\")\n .then((result) => resolve(result.data.data))\n .catch((err) => reject(err));\n });\n }\n\n async releases() {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/releases\")\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async deleteLogs() {\n return new Promise((resolve, reject) => {\n this.delete(\"/logs\")\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n }\n\n async getTasks() {\n return new Promise((resolve, reject) => {\n this.get>(\"/tasks\")\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async runTask(id: string) {\n return new Promise((resolve, reject) => {\n this.post(\"/tasks\", { taskid: id })\n .then(() => {\n resolve();\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async testNotification(protocol: string, path: string) {\n return new Promise((resolve, reject) => {\n this.patch(\"/notifications\", { protocol, path })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async search(query: string) {\n return new Promise((resolve, reject) => {\n this.get(\"/searches\", { query })\n .then((res) => resolve(res.data))\n .catch(reject);\n });\n }\n}\n\nexport default new SystemApi();\n","import Axios, { AxiosInstance } from \"axios\";\n\ntype UrlTestResponse =\n | {\n status: true;\n version: string;\n }\n | {\n status: false;\n error: string;\n };\n\nclass RequestUtils {\n private axios!: AxiosInstance;\n\n constructor() {\n if (process.env.NODE_ENV === \"development\") {\n this.recreateAxios(\"/\", process.env.REACT_APP_APIKEY!);\n } else {\n const baseUrl =\n window.Bazarr.baseUrl === \"/\" ? \"/\" : `${window.Bazarr.baseUrl}/`;\n this.recreateAxios(baseUrl, window.Bazarr.apiKey);\n }\n }\n\n private recreateAxios(url: string, apikey: string) {\n this.axios = Axios.create({\n baseURL: url,\n });\n\n this.axios.defaults.headers.post[\"Content-Type\"] = \"application/json\";\n this.axios.defaults.headers.common[\"x-api-key\"] = apikey;\n }\n\n urlTest(\n protocol: string,\n url: string,\n params?: any\n ): Promise {\n return new Promise((resolve, reject) => {\n this.axios\n .get(`test/${protocol}/${url}api/system/status`, { params })\n .then((result) => resolve(result.data))\n .catch(reject);\n });\n }\n}\n\nexport default new RequestUtils();\n","import Axios, { AxiosError, AxiosInstance, CancelTokenSource } from \"axios\";\nimport { siteRedirectToAuth, siteUpdateOffline } from \"../@redux/actions\";\nimport reduxStore from \"../@redux/store\";\nclass Api {\n axios!: AxiosInstance;\n source!: CancelTokenSource;\n\n constructor() {\n if (process.env.NODE_ENV === \"development\") {\n this.initialize(\"/api/\", process.env[\"REACT_APP_APIKEY\"]!);\n } else {\n const baseUrl =\n window.Bazarr.baseUrl === \"/\"\n ? \"/api/\"\n : `${window.Bazarr.baseUrl}/api/`;\n this.initialize(baseUrl, window.Bazarr.apiKey);\n }\n }\n\n initialize(url: string, apikey: string) {\n this.axios = Axios.create({\n baseURL: url,\n });\n\n this.axios.defaults.headers.post[\"Content-Type\"] = \"application/json\";\n this.axios.defaults.headers.common[\"X-API-KEY\"] = apikey;\n\n this.source = Axios.CancelToken.source();\n\n this.axios.interceptors.request.use((config) => {\n config.cancelToken = this.source.token;\n return config;\n });\n\n this.axios.interceptors.response.use(\n (resp) => {\n this.onOnline();\n if (resp.status >= 200 && resp.status < 300) {\n return Promise.resolve(resp);\n } else {\n this.handleError(resp.status);\n return Promise.reject(resp);\n }\n },\n (error: AxiosError) => {\n if (error.response) {\n const response = error.response;\n this.handleError(response.status);\n this.onOnline();\n } else {\n this.onOffline();\n error.message = \"You have disconnected to Bazarr backend\";\n }\n return Promise.reject(error);\n }\n );\n }\n\n onOnline() {\n const offline = reduxStore.getState().site.offline;\n if (offline) {\n reduxStore.dispatch(siteUpdateOffline(false));\n }\n }\n\n onOffline() {\n reduxStore.dispatch(siteUpdateOffline(true));\n }\n\n handleError(code: number) {\n switch (code) {\n case 401:\n reduxStore.dispatch(siteRedirectToAuth());\n break;\n case 500:\n break;\n default:\n break;\n }\n }\n}\n\nexport default new Api();\nexport { default as BadgesApi } from \"./badges\";\nexport { default as EpisodesApi } from \"./episodes\";\nexport { default as FilesApi } from \"./files\";\nexport { default as HistoryApi } from \"./history\";\nexport { default as MoviesApi } from \"./movies\";\nexport { default as ProvidersApi } from \"./providers\";\nexport { default as SeriesApi } from \"./series\";\nexport { default as SubtitlesApi } from \"./subtitles\";\nexport { default as SystemApi } from \"./system\";\nexport { default as UtilsApi } from \"./utils\";\n","import { isEqual } from \"lodash\";\nimport { log } from \"../../utilites/logger\";\nimport {\n ActionCallback,\n ActionDispatcher,\n AsyncActionCreator,\n AsyncActionDispatcher,\n AvailableCreator,\n AvailableType,\n PromiseCreator,\n} from \"../types\";\n\n// Limiter the call to API\nconst gLimiter: Map = new Map();\nconst gArgs: Map = new Map();\n\nconst LIMIT_CALL_MS = 200;\n\nfunction asyncActionFactory(\n type: string,\n promise: T,\n args: Parameters\n): AsyncActionDispatcher>> {\n return (dispatch) => {\n const previousArgs = gArgs.get(promise);\n const date = new Date();\n\n if (isEqual(previousArgs, args)) {\n // Get last execute date\n const previousExec = gLimiter.get(promise);\n if (previousExec) {\n const distInMs = date.getTime() - previousExec.getTime();\n if (distInMs < LIMIT_CALL_MS) {\n log(\n \"warning\",\n \"Multiple calls to API within the range\",\n promise,\n args\n );\n return Promise.resolve();\n }\n }\n } else {\n gArgs.set(promise, args);\n }\n\n gLimiter.set(promise, date);\n\n dispatch({\n type,\n payload: {\n loading: true,\n parameters: args,\n },\n });\n\n return new Promise((resolve, reject) => {\n promise(...args)\n .then((val) => {\n dispatch({\n type,\n payload: {\n loading: false,\n item: val,\n parameters: args,\n },\n });\n resolve();\n })\n .catch((err) => {\n dispatch({\n type,\n error: true,\n payload: {\n loading: false,\n item: err,\n parameters: args,\n },\n });\n reject(err);\n });\n });\n };\n}\n\nexport function createAsyncAction(\n type: string,\n promise: T\n) {\n return (...args: Parameters) => asyncActionFactory(type, promise, args);\n}\n\n// Create a action which combine multiple ActionDispatcher and execute them at once\nfunction combineActionFactory(\n dispatchers: AvailableType[]\n): ActionDispatcher {\n return (dispatch) => {\n dispatchers.forEach((fn) => {\n if (typeof fn === \"function\") {\n fn(dispatch);\n } else {\n dispatch(fn);\n }\n });\n };\n}\n\nexport function createCombineAction(fn: T) {\n return (...args: Parameters) => combineActionFactory(fn(...args));\n}\n\nfunction combineAsyncActionFactory(\n dispatchers: AsyncActionDispatcher[]\n): AsyncActionDispatcher {\n return (dispatch) => {\n const promises = dispatchers.map((v) => v(dispatch));\n return Promise.all(promises) as Promise;\n };\n}\n\nexport function createAsyncCombineAction(fn: T) {\n return (...args: Parameters) => combineAsyncActionFactory(fn(...args));\n}\n\nexport function callbackActionFactory(\n dispatchers: AsyncActionDispatcher[],\n success: ActionCallback,\n error?: ActionCallback\n): ActionDispatcher {\n return (dispatch) => {\n const promises = dispatchers.map((v) => v(dispatch));\n Promise.all(promises)\n .then(() => {\n const action = success();\n if (action !== undefined) {\n dispatch(action);\n }\n })\n .catch(() => {\n const action = error && error();\n if (action !== undefined) {\n dispatch(action);\n }\n });\n };\n}\n\nexport function createCallbackAction(\n fn: T,\n success: ActionCallback,\n error?: ActionCallback\n) {\n return (...args: Parameters) =>\n callbackActionFactory(fn(args), success, error);\n}\n","import { Action } from \"redux-actions\";\nimport { SystemApi } from \"../../apis\";\nimport {\n SYSTEM_RUN_TASK,\n SYSTEM_UPDATE_LANGUAGES_LIST,\n SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST,\n SYSTEM_UPDATE_LOGS,\n SYSTEM_UPDATE_RELEASES,\n SYSTEM_UPDATE_SETTINGS,\n SYSTEM_UPDATE_STATUS,\n SYSTEM_UPDATE_TASKS,\n} from \"../constants\";\nimport { createAsyncAction, createAsyncCombineAction } from \"./factory\";\n\nexport const systemUpdateLanguagesAll = createAsyncCombineAction(() => [\n systemUpdateLanguages(),\n systemUpdateLanguagesProfiles(),\n]);\n\nexport const systemUpdateLanguages = createAsyncAction(\n SYSTEM_UPDATE_LANGUAGES_LIST,\n () => SystemApi.languages()\n);\n\nexport const systemUpdateLanguagesProfiles = createAsyncAction(\n SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST,\n () => SystemApi.languagesProfileList()\n);\n\nexport const systemUpdateStatus = createAsyncAction(SYSTEM_UPDATE_STATUS, () =>\n SystemApi.status()\n);\n\nexport const systemUpdateTasks = createAsyncAction(SYSTEM_UPDATE_TASKS, () =>\n SystemApi.getTasks()\n);\n\nexport function systemRunTasks(id: string): Action {\n return {\n type: SYSTEM_RUN_TASK,\n payload: id,\n };\n}\n\nexport const systemUpdateLogs = createAsyncAction(SYSTEM_UPDATE_LOGS, () =>\n SystemApi.logs()\n);\n\nexport const systemUpdateReleases = createAsyncAction(\n SYSTEM_UPDATE_RELEASES,\n () => SystemApi.releases()\n);\n\nexport const systemUpdateSettings = createAsyncAction(\n SYSTEM_UPDATE_SETTINGS,\n () => SystemApi.settings()\n);\n\nexport const systemUpdateSettingsAll = createAsyncCombineAction(() => [\n systemUpdateSettings(),\n systemUpdateLanguagesAll(),\n]);\n","import { createAction } from \"redux-actions\";\nimport { BadgesApi } from \"../../apis\";\nimport {\n SITE_AUTH_SUCCESS,\n SITE_BADGE_UPDATE,\n SITE_INITIALIZED,\n SITE_INITIALIZE_FAILED,\n SITE_NEED_AUTH,\n SITE_NOTIFICATIONS_ADD,\n SITE_NOTIFICATIONS_REMOVE,\n SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP,\n SITE_OFFLINE_UPDATE,\n SITE_SAVE_LOCALSTORAGE,\n SITE_SIDEBAR_UPDATE,\n} from \"../constants\";\nimport { createAsyncAction, createCallbackAction } from \"./factory\";\nimport { systemUpdateLanguagesAll, systemUpdateSettings } from \"./system\";\n\nexport const bootstrap = createCallbackAction(\n () => [systemUpdateLanguagesAll(), systemUpdateSettings()],\n () => siteInitialized(),\n () => siteInitializeFailed()\n);\n\nconst siteInitializeFailed = createAction(SITE_INITIALIZE_FAILED);\n\nconst siteInitialized = createAction(SITE_INITIALIZED);\n\nexport const siteRedirectToAuth = createAction(SITE_NEED_AUTH);\n\nexport const siteAuthSuccess = createAction(SITE_AUTH_SUCCESS);\n\nexport const badgeUpdateAll = createAsyncAction(SITE_BADGE_UPDATE, () =>\n BadgesApi.all()\n);\n\nexport const siteSaveLocalstorage = createAction(\n SITE_SAVE_LOCALSTORAGE,\n (settings: LooseObject) => settings\n);\n\nexport const siteAddError = createAction(\n SITE_NOTIFICATIONS_ADD,\n (err: ReduxStore.Notification) => err\n);\n\nexport const siteRemoveError = createAction(\n SITE_NOTIFICATIONS_REMOVE,\n (id: string) => id\n);\n\nexport const siteRemoveErrorByTimestamp = createAction(\n SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP,\n (date: Date) => date\n);\n\nexport const siteChangeSidebar = createAction(\n SITE_SIDEBAR_UPDATE,\n (id: string) => id\n);\n\nexport const siteUpdateOffline = createAction(\n SITE_OFFLINE_UPDATE,\n (state: boolean) => state\n);\n","import { MoviesApi } from \"../../apis\";\nimport {\n MOVIES_UPDATE_BLACKLIST,\n MOVIES_UPDATE_HISTORY_LIST,\n MOVIES_UPDATE_INFO,\n MOVIES_UPDATE_LIST,\n MOVIES_UPDATE_RANGE,\n MOVIES_UPDATE_WANTED_LIST,\n MOVIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport {\n createAsyncAction,\n createAsyncCombineAction,\n createCombineAction,\n} from \"./factory\";\nimport { badgeUpdateAll } from \"./site\";\n\nexport const movieUpdateList = createAsyncAction(MOVIES_UPDATE_LIST, () =>\n MoviesApi.movies()\n);\n\nconst movieUpdateWantedList = createAsyncAction(\n MOVIES_UPDATE_WANTED_LIST,\n (radarrid?: number) => MoviesApi.wantedBy(radarrid)\n);\n\nexport const movieUpdateWantedByRange = createAsyncAction(\n MOVIES_UPDATE_WANTED_RANGE,\n (start: number, length: number) => MoviesApi.wanted(start, length)\n);\n\nexport const movieUpdateWantedBy = createCombineAction((radarrid?: number) => [\n movieUpdateWantedList(radarrid),\n badgeUpdateAll(),\n]);\n\nexport const movieUpdateHistoryList = createAsyncAction(\n MOVIES_UPDATE_HISTORY_LIST,\n () => MoviesApi.history()\n);\n\nexport const movieUpdateByRange = createAsyncAction(\n MOVIES_UPDATE_RANGE,\n (start: number, length: number) => MoviesApi.moviesBy(start, length)\n);\n\nconst movieUpdateInfo = createAsyncAction(MOVIES_UPDATE_INFO, (id?: number[]) =>\n MoviesApi.movies(id)\n);\n\nexport const movieUpdateInfoAll = createAsyncCombineAction((id?: number[]) => [\n movieUpdateInfo(id),\n badgeUpdateAll(),\n]);\n\nexport const movieUpdateBlacklist = createAsyncAction(\n MOVIES_UPDATE_BLACKLIST,\n () => MoviesApi.blacklist()\n);\n","import { ProvidersApi } from \"../../apis\";\nimport { PROVIDER_UPDATE_LIST } from \"../constants\";\nimport { createAsyncAction, createCombineAction } from \"./factory\";\nimport { badgeUpdateAll } from \"./site\";\n\nconst providerUpdateList = createAsyncAction(PROVIDER_UPDATE_LIST, () =>\n ProvidersApi.providers()\n);\n\nexport const providerUpdateAll = createCombineAction(() => [\n providerUpdateList(),\n badgeUpdateAll(),\n]);\n","import { EpisodesApi, SeriesApi } from \"../../apis\";\nimport {\n SERIES_UPDATE_BLACKLIST,\n SERIES_UPDATE_EPISODE_LIST,\n SERIES_UPDATE_HISTORY_LIST,\n SERIES_UPDATE_INFO,\n SERIES_UPDATE_RANGE,\n SERIES_UPDATE_WANTED_LIST,\n SERIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport {\n createAsyncAction,\n createAsyncCombineAction,\n createCombineAction,\n} from \"./factory\";\nimport { badgeUpdateAll } from \"./site\";\n\nconst seriesUpdateWantedList = createAsyncAction(\n SERIES_UPDATE_WANTED_LIST,\n (episodeid?: number) => EpisodesApi.wantedBy(episodeid)\n);\n\nconst seriesUpdateBy = createAsyncAction(SERIES_UPDATE_INFO, (id?: number[]) =>\n SeriesApi.series(id)\n);\n\nconst episodeUpdateBy = createAsyncAction(\n SERIES_UPDATE_EPISODE_LIST,\n (seriesid: number) => EpisodesApi.bySeriesId(seriesid)\n);\n\nexport const seriesUpdateByRange = createAsyncAction(\n SERIES_UPDATE_RANGE,\n (start: number, length: number) => SeriesApi.seriesBy(start, length)\n);\n\nexport const seriesUpdateWantedByRange = createAsyncAction(\n SERIES_UPDATE_WANTED_RANGE,\n (start: number, length: number) => EpisodesApi.wanted(start, length)\n);\n\nexport const seriesUpdateWantedBy = createCombineAction(\n (episodeid?: number) => [seriesUpdateWantedList(episodeid), badgeUpdateAll()]\n);\n\nexport const episodeUpdateBySeriesId = createCombineAction(\n (seriesid: number) => [episodeUpdateBy(seriesid), badgeUpdateAll()]\n);\n\nexport const seriesUpdateHistoryList = createAsyncAction(\n SERIES_UPDATE_HISTORY_LIST,\n () => EpisodesApi.history()\n);\n\nexport const seriesUpdateInfoAll = createAsyncCombineAction(\n (seriesid?: number[]) => [seriesUpdateBy(seriesid), badgeUpdateAll()]\n);\n\nexport const seriesUpdateBlacklist = createAsyncAction(\n SERIES_UPDATE_BLACKLIST,\n () => EpisodesApi.blacklist()\n);\n","import { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { createCallbackAction } from \"../actions/factory\";\nimport { ActionCallback, AsyncActionDispatcher } from \"../types\";\n\n// function use\nexport function useReduxStore any>(\n selector: T\n) {\n return useSelector>(selector);\n}\n\nexport function useReduxAction void>(action: T) {\n const dispatch = useDispatch();\n return useCallback((...args: Parameters) => dispatch(action(...args)), [\n action,\n dispatch,\n ]);\n}\n\nexport function useReduxActionWith<\n T extends (...args: any[]) => AsyncActionDispatcher\n>(action: T, success: ActionCallback) {\n const dispatch = useDispatch();\n return useCallback(\n (...args: Parameters) => {\n const callbackAction = createCallbackAction(\n () => [action(...args)],\n success\n );\n\n dispatch(callbackAction());\n },\n [dispatch, action, success]\n );\n}\n","import { useCallback, useMemo } from \"react\";\nimport { buildOrderList } from \"../../utilites\";\nimport {\n episodeUpdateBySeriesId,\n movieUpdateBlacklist,\n movieUpdateHistoryList,\n movieUpdateInfoAll,\n movieUpdateWantedBy,\n providerUpdateAll,\n seriesUpdateBlacklist,\n seriesUpdateHistoryList,\n seriesUpdateInfoAll,\n seriesUpdateWantedBy,\n systemUpdateLanguages,\n systemUpdateLanguagesProfiles,\n systemUpdateSettingsAll,\n} from \"../actions\";\nimport { useReduxAction, useReduxStore } from \"./base\";\n\nfunction stateBuilder any>(\n t: T,\n d: D\n): [Readonly, D] {\n return [t, d];\n}\n\nexport function useSystemSettings() {\n const action = useReduxAction(systemUpdateSettingsAll);\n const items = useReduxStore((s) => s.system.settings);\n return stateBuilder(items, action);\n}\n\nexport function useLanguageProfiles() {\n const action = useReduxAction(systemUpdateLanguagesProfiles);\n const items = useReduxStore((s) => s.system.languagesProfiles.data);\n\n return stateBuilder(items, action);\n}\n\nexport function useProfileBy(id: number | null | undefined) {\n const [profiles] = useLanguageProfiles();\n return useMemo(() => profiles.find((v) => v.profileId === id), [\n id,\n profiles,\n ]);\n}\n\nexport function useLanguages(enabled: boolean = false) {\n const action = useReduxAction(systemUpdateLanguages);\n const items = useReduxStore((s) =>\n enabled ? s.system.enabledLanguage.data : s.system.languages.data\n );\n return stateBuilder(items, action);\n}\n\nfunction useLanguageGetter(enabled: boolean = false) {\n const [languages] = useLanguages(enabled);\n return useCallback(\n (code?: string) => {\n if (code === undefined) {\n return undefined;\n } else {\n return languages.find((v) => v.code2 === code);\n }\n },\n [languages]\n );\n}\n\nexport function useLanguageBy(code?: string) {\n const getter = useLanguageGetter();\n return useMemo(() => getter(code), [code, getter]);\n}\n\n// Convert languageprofile items to language\nexport function useProfileItems(profile?: Profile.Languages) {\n const getter = useLanguageGetter(true);\n\n return useMemo(\n () =>\n profile?.items.map(({ language, hi, forced }) => {\n const name = getter(language)?.name ?? \"\";\n return {\n hi: hi === \"True\",\n forced: forced === \"True\",\n code2: language,\n name,\n };\n }) ?? [],\n [getter, profile?.items]\n );\n}\n\nexport function useRawSeries() {\n const action = useReduxAction(seriesUpdateInfoAll);\n const items = useReduxStore((d) => d.series.seriesList);\n return stateBuilder(items, action);\n}\n\nexport function useSeries(order = true) {\n const [rawSeries, action] = useRawSeries();\n const series = useMemo>(() => {\n const state = rawSeries.data;\n if (order) {\n return {\n ...rawSeries,\n data: buildOrderList(state),\n };\n } else {\n return {\n ...rawSeries,\n data: Object.values(state.items),\n };\n }\n }, [rawSeries, order]);\n return stateBuilder(series, action);\n}\n\nexport function useSerieBy(id?: number) {\n const [series, updateSerie] = useRawSeries();\n const updateEpisodes = useReduxAction(episodeUpdateBySeriesId);\n const serie = useMemo>(() => {\n const items = series.data.items;\n let item: Item.Series | null = null;\n if (id && !isNaN(id) && id in items) {\n item = items[id];\n }\n return {\n ...series,\n data: item,\n };\n }, [id, series]);\n\n const update = useCallback(() => {\n if (id && !isNaN(id)) {\n updateSerie([id]);\n updateEpisodes(id);\n }\n }, [id, updateSerie, updateEpisodes]);\n\n return stateBuilder(serie, update);\n}\n\nexport function useEpisodesBy(seriesId?: number) {\n const action = useReduxAction(episodeUpdateBySeriesId);\n const callback = useCallback(() => {\n if (seriesId !== undefined && !isNaN(seriesId)) {\n action(seriesId);\n }\n }, [action, seriesId]);\n\n const list = useReduxStore((d) => d.series.episodeList);\n\n const items = useMemo(() => {\n if (seriesId !== undefined && !isNaN(seriesId)) {\n return list.data[seriesId] ?? [];\n } else {\n return [];\n }\n }, [seriesId, list.data]);\n\n const state: AsyncState = {\n ...list,\n data: items,\n };\n\n return stateBuilder(state, callback);\n}\n\nexport function useRawMovies() {\n const action = useReduxAction(movieUpdateInfoAll);\n const items = useReduxStore((d) => d.movie.movieList);\n return stateBuilder(items, action);\n}\n\nexport function useMovies(order = true) {\n const [rawMovies, action] = useRawMovies();\n const movies = useMemo>(() => {\n const state = rawMovies.data;\n if (order) {\n return {\n ...rawMovies,\n data: buildOrderList(state),\n };\n } else {\n return {\n ...rawMovies,\n data: Object.values(state.items),\n };\n }\n }, [rawMovies, order]);\n return stateBuilder(movies, action);\n}\n\nexport function useMovieBy(id?: number) {\n const [movies, updateMovies] = useRawMovies();\n const movie = useMemo>(() => {\n const items = movies.data.items;\n let item: Item.Movie | null = null;\n if (id && !isNaN(id) && id in items) {\n item = items[id];\n }\n return {\n ...movies,\n data: item,\n };\n }, [id, movies]);\n\n const update = useCallback(() => {\n if (id && !isNaN(id)) {\n updateMovies([id]);\n }\n }, [id, updateMovies]);\n\n return stateBuilder(movie, update);\n}\n\nexport function useWantedSeries() {\n const action = useReduxAction(seriesUpdateWantedBy);\n const items = useReduxStore((d) => d.series.wantedEpisodesList);\n\n return stateBuilder(items, action);\n}\n\nexport function useWantedMovies() {\n const action = useReduxAction(movieUpdateWantedBy);\n const items = useReduxStore((d) => d.movie.wantedMovieList);\n\n return stateBuilder(items, action);\n}\n\nexport function useProviders() {\n const action = useReduxAction(providerUpdateAll);\n const items = useReduxStore((d) => d.system.providers);\n\n return stateBuilder(items, action);\n}\n\nexport function useBlacklistMovies() {\n const action = useReduxAction(movieUpdateBlacklist);\n const items = useReduxStore((d) => d.movie.blacklist);\n\n return stateBuilder(items, action);\n}\n\nexport function useBlacklistSeries() {\n const action = useReduxAction(seriesUpdateBlacklist);\n const items = useReduxStore((d) => d.series.blacklist);\n\n return stateBuilder(items, action);\n}\n\nexport function useMoviesHistory() {\n const action = useReduxAction(movieUpdateHistoryList);\n const items = useReduxStore((s) => s.movie.historyList);\n\n return stateBuilder(items, action);\n}\n\nexport function useSeriesHistory() {\n const action = useReduxAction(seriesUpdateHistoryList);\n const items = useReduxStore((s) => s.series.historyList);\n\n return stateBuilder(items, action);\n}\n","import { useCallback } from \"react\";\nimport { useSystemSettings } from \".\";\nimport { siteAddError, siteRemoveErrorByTimestamp } from \"../actions\";\nimport { useReduxAction, useReduxStore } from \"./base\";\n\nexport function useNotification(id: string, sec: number = 5) {\n const add = useReduxAction(siteAddError);\n const remove = useReduxAction(siteRemoveErrorByTimestamp);\n\n return useCallback(\n (msg: Omit) => {\n const error: ReduxStore.Notification = {\n ...msg,\n id,\n timestamp: new Date(),\n };\n add(error);\n setTimeout(() => remove(error.timestamp), sec * 1000);\n },\n [add, remove, sec, id]\n );\n}\n\nexport function useIsOffline() {\n return useReduxStore((s) => s.site.offline);\n}\n\nexport function useIsSonarrEnabled() {\n const [settings] = useSystemSettings();\n return settings.data?.general.use_sonarr ?? true;\n}\n\nexport function useIsRadarrEnabled() {\n const [settings] = useSystemSettings();\n return settings.data?.general.use_radarr ?? true;\n}\n","import React, {\n FocusEvent,\n FunctionComponent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport \"./chip.scss\";\n\nconst SplitKeys = [\"Tab\", \"Enter\", \" \", \",\", \";\", \".\"];\n\nexport interface ChipsProps {\n disabled?: boolean;\n defaultValue?: readonly string[];\n onChange?: (v: string[]) => void;\n}\n\nexport const Chips: FunctionComponent = ({\n defaultValue,\n disabled,\n onChange,\n}) => {\n const [chips, setChips] = useState(defaultValue ?? []);\n\n const input = useRef(null);\n\n const addChip = useCallback(\n (value: string) => {\n const newChips = [...chips];\n newChips.push(value);\n setChips(newChips);\n onChange && onChange(newChips);\n },\n [chips, onChange]\n );\n\n const removeChip = useCallback(\n (idx?: number) => {\n idx = idx ?? chips.length - 1;\n if (idx !== -1) {\n const newChips = [...chips];\n newChips.splice(idx, 1);\n setChips(newChips);\n onChange && onChange(newChips);\n }\n },\n [chips, onChange]\n );\n\n const clearInput = useCallback(() => {\n if (input.current) {\n input.current.value = \"\";\n }\n }, [input]);\n\n const onKeyUp = useCallback(\n (event: KeyboardEvent) => {\n const pressed = event.key;\n const value = event.currentTarget.value;\n if (SplitKeys.includes(pressed) && value.length !== 0) {\n event.preventDefault();\n addChip(value);\n clearInput();\n } else if (pressed === \"Backspace\" && value.length === 0) {\n event.preventDefault();\n removeChip();\n }\n },\n [addChip, removeChip, clearInput]\n );\n\n const onKeyDown = useCallback((event: KeyboardEvent) => {\n const pressed = event.key;\n const value = event.currentTarget.value;\n if (SplitKeys.includes(pressed) && value.length !== 0) {\n event.preventDefault();\n }\n }, []);\n\n const onBlur = useCallback(\n (event: FocusEvent) => {\n const value = event.currentTarget.value;\n if (value.length !== 0) {\n event.preventDefault();\n addChip(value);\n clearInput();\n }\n },\n [addChip, clearInput]\n );\n\n const chipElements = useMemo(\n () =>\n chips.map((v, idx) => (\n {\n if (!disabled) {\n removeChip(idx);\n }\n }}\n >\n {v}\n \n )),\n [chips, removeChip, disabled]\n );\n\n return (\n
\n
{chipElements}
\n \n
\n );\n};\n","import { faFile, faFolder } from \"@fortawesome/free-regular-svg-icons\";\nimport { faReply } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Dropdown, DropdownProps, Form, Spinner } from \"react-bootstrap\";\n\nconst backKey = \"--back--\";\n\nfunction getLastSeparator(path: string): number {\n let idx = path.lastIndexOf(\"/\");\n if (idx === -1) {\n idx = path.lastIndexOf(\"\\\\\");\n }\n return idx;\n}\n\nfunction extractPath(raw: string) {\n if (raw.endsWith(\"/\") || raw.endsWith(\"\\\\\")) {\n return raw;\n } else {\n const idx = getLastSeparator(raw);\n return raw.slice(0, idx + 1);\n }\n}\n\ninterface Props {\n defaultValue?: string;\n load: (path: string) => Promise;\n onChange?: (path: string) => void;\n drop?: DropdownProps[\"drop\"];\n}\n\nexport const FileBrowser: FunctionComponent = ({\n defaultValue,\n onChange,\n load,\n drop,\n}) => {\n const [show, canShow] = useState(false);\n const [text, setText] = useState(defaultValue ?? \"\");\n const [path, setPath] = useState(() => extractPath(text));\n const [loading, setLoading] = useState(true);\n\n const filter = useMemo(() => {\n const idx = getLastSeparator(text);\n return text.slice(idx + 1);\n }, [text]);\n\n const previous = useMemo(() => {\n const idx = getLastSeparator(path.slice(0, -1));\n return path.slice(0, idx + 1);\n }, [path]);\n\n const [tree, setTree] = useState([]);\n\n const requestItems = useMemo(() => {\n if (loading) {\n return (\n \n \n \n );\n }\n\n const elements = [];\n\n elements.push(\n ...tree\n .filter((v) => v.name.startsWith(filter))\n .map((v) => (\n \n \n {v.name}\n \n ))\n );\n\n if (elements.length === 0) {\n elements.push(No Files);\n }\n\n if (previous.length !== 0) {\n return [\n \n \n Back\n ,\n ,\n ...elements,\n ];\n } else {\n return elements;\n }\n }, [tree, filter, previous, loading]);\n\n useEffect(() => {\n if (text === path) {\n return;\n }\n\n const newPath = extractPath(text);\n if (newPath !== path) {\n setPath(newPath);\n onChange && onChange(newPath);\n }\n }, [path, text, onChange]);\n\n const input = useRef(null);\n\n useEffect(() => {\n if (show) {\n setLoading(true);\n load(path)\n .then((res) => {\n setTree(res);\n })\n .finally(() => setLoading(false));\n }\n }, [path, load, show]);\n\n return (\n {\n if (!key) {\n return;\n }\n\n if (key !== backKey) {\n setText(key);\n } else {\n setText(previous);\n }\n input.current?.focus();\n }}\n onToggle={(open, _, meta) => {\n if (!open && meta.source !== \"select\") {\n canShow(false);\n } else if (open) {\n canShow(true);\n }\n }}\n >\n ) => {\n setText(e.currentTarget.value);\n }}\n ref={input}\n >\n \n {requestItems}\n \n \n );\n};\n","import React, {\n ChangeEvent,\n FunctionComponent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Form } from \"react-bootstrap\";\n\nexport interface FileFormProps {\n disabled?: boolean;\n multiple?: boolean;\n emptyText: string;\n value?: File[];\n onChange?: (files: File[]) => void;\n}\n\nexport const FileForm: FunctionComponent = ({\n value: files,\n emptyText,\n multiple,\n disabled,\n onChange,\n}) => {\n const [fileList, setFileList] = useState([]);\n\n const input = useRef(null);\n\n useEffect(() => {\n if (files) {\n setFileList(files);\n\n if (files.length === 0 && input.current) {\n // Manual reset file input\n input.current.value = \"\";\n }\n }\n }, [files]);\n\n const label = useMemo(() => {\n if (fileList.length === 0) {\n return emptyText;\n } else {\n if (multiple) {\n return `${fileList.length} Files`;\n } else {\n return fileList[0].name;\n }\n }\n }, [fileList, emptyText, multiple]);\n\n return (\n ) => {\n const { files } = e.target;\n if (files) {\n const list: File[] = [];\n for (const file of files) {\n list.push(file);\n }\n setFileList(list);\n onChange && onChange(list);\n }\n }}\n >\n );\n};\n","import { isArray } from \"lodash\";\nimport React, { useCallback, useMemo } from \"react\";\nimport ReactSelect from \"react-select\";\nimport \"./selector.scss\";\n\nexport interface SelectorProps {\n className?: string;\n placeholder?: string;\n options: readonly SelectorOption[];\n disabled?: boolean;\n clearable?: boolean;\n loading?: boolean;\n multiple?: M;\n onChange?: (k: SelectorValueType) => void;\n label?: (item: T) => string;\n defaultValue?: SelectorValueType;\n value?: SelectorValueType;\n}\n\nexport function Selector(\n props: SelectorProps\n) {\n const {\n className,\n placeholder,\n label,\n disabled,\n clearable,\n loading,\n options,\n multiple,\n onChange,\n defaultValue,\n value,\n } = props;\n\n const nameFromItems = useCallback(\n (item: T) => {\n return options.find((v) => v.value === item)?.label;\n },\n [options]\n );\n\n // TODO: Force as any\n const wrapper = useCallback(\n (value: SelectorValueType | undefined | null): any => {\n if (value !== null && value !== undefined) {\n if (multiple) {\n return (value as SelectorValueType).map((v) => ({\n label: label ? label(v) : nameFromItems(v) ?? \"Unknown\",\n value: v,\n }));\n } else {\n const v = value as T;\n return {\n label: label ? label(v) : nameFromItems(v) ?? \"Unknown\",\n value: v,\n };\n }\n }\n\n return value;\n },\n [label, multiple, nameFromItems]\n );\n\n const defaultWrapper = useMemo(() => wrapper(defaultValue), [\n defaultValue,\n wrapper,\n ]);\n\n const valueWrapper = useMemo(() => wrapper(value), [wrapper, value]);\n\n return (\n = 10}\n isMulti={multiple}\n closeMenuOnSelect={!multiple}\n defaultValue={defaultWrapper}\n value={valueWrapper}\n isClearable={clearable}\n isDisabled={disabled}\n options={options}\n className={`custom-selector w-100 ${className ?? \"\"}`}\n classNamePrefix=\"selector\"\n onChange={(v) => {\n if (onChange) {\n let res: T | T[] | null = null;\n if (isArray(v)) {\n res = (v as ReadonlyArray>).map(\n (val) => val.value\n );\n } else {\n res = (v as SelectorOption)?.value ?? null;\n }\n // TODO: Force as any\n onChange(res as any);\n }\n }}\n >\n );\n}\n","import {\n faCheck,\n faCircleNotch,\n faExclamationTriangle,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Alert, Button, ButtonProps, Container } from \"react-bootstrap\";\nimport { LoadingIndicator } from \".\";\nimport { useNotification } from \"../@redux/hooks/site\";\nimport { Reload } from \"../utilites\";\nimport { Selector, SelectorProps } from \"./inputs\";\n\nenum RequestState {\n Success,\n Error,\n Invalid,\n}\n\ninterface AsyncStateOverlayProps {\n state: AsyncState;\n exist?: (item: T) => boolean;\n children?: (item: NonNullable>, error?: Error) => JSX.Element;\n}\n\nfunction defaultExist(item: any) {\n if (item instanceof Array) {\n return item.length !== 0;\n } else {\n return item !== null && item !== undefined;\n }\n}\n\nexport function AsyncStateOverlay(props: AsyncStateOverlayProps) {\n const { exist, state, children } = props;\n const missing = exist ? !exist(state.data) : !defaultExist(state.data);\n\n const onError = useNotification(\"async-overlay\");\n\n useEffect(() => {\n if (!state.updating && state.error !== undefined && !missing) {\n onError({\n type: \"error\",\n message: state.error.message,\n });\n }\n }, [state, onError, missing]);\n\n if (state.updating) {\n if (missing) {\n return ;\n }\n } else {\n if (state.error && missing) {\n return (\n \n \n \n \n Ouch! You got an error\n \n

{state.error.message}

\n
\n
\n \n
\n
\n
\n );\n }\n }\n\n return children ? children(state.data!, state.error) : null;\n}\n\ninterface PromiseProps {\n promise: () => Promise;\n children: FunctionComponent;\n}\n\nexport function PromiseOverlay({ promise, children }: PromiseProps) {\n const [item, setItem] = useState(null);\n\n useEffect(() => {\n promise()\n .then((result) => setItem(result))\n .catch(() => {});\n }, [promise]);\n\n if (item === null) {\n return ;\n } else {\n return children(item);\n }\n}\n\ntype ExtractAS> = Unpacked>;\n\ntype AsyncSelectorProps> = {\n state: T;\n label: (item: ExtractAS) => string;\n};\n\ntype RemovedSelectorProps = Omit<\n SelectorProps,\n \"loading\" | \"options\"\n>;\n\nexport function AsyncSelector<\n T extends AsyncState,\n M extends boolean = false\n>(\n props: Override, RemovedSelectorProps, M>>\n) {\n const { label, state, ...selector } = props;\n\n const options = useMemo>[]>(\n () =>\n state.data.map((v) => ({\n label: label(v),\n value: v,\n })),\n [state, label]\n );\n\n return (\n \n );\n}\n\ninterface AsyncButtonProps {\n as?: ButtonProps[\"as\"];\n variant?: ButtonProps[\"variant\"];\n size?: ButtonProps[\"size\"];\n\n className?: string;\n disabled?: boolean;\n onChange?: (v: boolean) => void;\n\n noReset?: boolean;\n\n promise: () => Promise | null;\n onSuccess?: (result: T) => void;\n error?: () => void;\n}\n\nexport function AsyncButton(\n props: PropsWithChildren>\n): JSX.Element {\n const {\n children: propChildren,\n className,\n promise,\n onSuccess,\n noReset,\n error,\n onChange,\n disabled,\n ...button\n } = props;\n\n const [loading, setLoading] = useState(false);\n\n const [state, setState] = useState(RequestState.Invalid);\n\n const [, setHandle] = useState>(null);\n\n useEffect(() => {\n if (noReset) {\n return;\n }\n\n if (state === RequestState.Error || state === RequestState.Success) {\n const handle = setTimeout(() => setState(RequestState.Invalid), 2 * 1000);\n setHandle(handle);\n }\n\n // Clear timeout handle so we wont leak memory\n return () => {\n setHandle((handle) => {\n if (handle) {\n clearTimeout(handle);\n }\n return null;\n });\n };\n }, [state, noReset]);\n\n const click = useCallback(() => {\n if (state !== RequestState.Invalid) {\n return;\n }\n\n const result = promise();\n\n if (result) {\n setLoading(true);\n onChange && onChange(true);\n result\n .then((res) => {\n setState(RequestState.Success);\n onSuccess && onSuccess(res);\n })\n .catch(() => {\n setState(RequestState.Error);\n error && error();\n })\n .finally(() => {\n setLoading(false);\n onChange && onChange(false);\n });\n }\n }, [error, onChange, promise, onSuccess, state]);\n\n let children = propChildren;\n if (loading) {\n children = ;\n }\n\n if (state === RequestState.Success) {\n children = ;\n } else if (state === RequestState.Error) {\n children = ;\n }\n\n return (\n \n {children}\n \n );\n}\n","import RcSlider from \"rc-slider\";\nimport \"rc-slider/assets/index.css\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport \"./slider.scss\";\n\ntype TooltipsOptions = boolean | \"Always\";\n\nexport interface SliderProps {\n tooltips?: TooltipsOptions;\n min?: number;\n max?: number;\n start?: number;\n defaultValue?: number;\n onAfterChange?: (value: number) => void;\n onChange?: (value: number) => void;\n}\n\nexport const Slider: FunctionComponent = ({\n min,\n max,\n tooltips,\n defaultValue,\n onChange,\n onAfterChange,\n}) => {\n return (\n
\n {min ?? 0}\n (\n \n \n
\n )}\n >\n {max ?? 100}\n \n );\n};\n\nconst SliderTooltips: FunctionComponent<{\n tooltips?: TooltipsOptions;\n value: number;\n}> = ({ tooltips, value }) => {\n const cls = useMemo(() => {\n const tipsCls = [\"rc-slider-handle-tips\"];\n if (tooltips !== undefined) {\n if (typeof tooltips === \"string\") {\n tipsCls.push(\"rc-slider-handle-tips-always\");\n } else if (tooltips === false) {\n tipsCls.push(\"rc-slider-handle-tips-hidden\");\n }\n }\n return tipsCls.join(\" \");\n }, [tooltips]);\n\n return {value};\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-common-types\";\nimport { faCircleNotch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, MouseEvent } from \"react\";\nimport { Badge, Button, ButtonProps } from \"react-bootstrap\";\n\nexport const ActionBadge: FunctionComponent<{\n icon: IconDefinition;\n onClick?: (e: MouseEvent) => void;\n}> = ({ icon, onClick }) => {\n return (\n \n \n \n );\n};\n\ninterface ActionButtonProps extends ActionButtonItemProps {\n disabled?: boolean;\n destructive?: boolean;\n variant?: string;\n onClick?: (e: MouseEvent) => void;\n className?: string;\n size?: ButtonProps[\"size\"];\n}\n\nexport const ActionButton: FunctionComponent = ({\n onClick,\n destructive,\n disabled,\n variant,\n className,\n size,\n ...other\n}) => {\n return (\n \n \n \n );\n};\n\ninterface ActionButtonItemProps {\n loading?: boolean;\n icon: IconDefinition;\n children?: string;\n}\n\nexport const ActionButtonItem: FunctionComponent = ({\n icon,\n children,\n loading,\n}) => {\n return (\n \n \n {children && !loading ? (\n {children}\n ) : null}\n \n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n MouseEvent,\n PropsWithChildren,\n useCallback,\n useState,\n} from \"react\";\nimport { Button } from \"react-bootstrap\";\n\ninterface CHButtonProps {\n disabled?: boolean;\n hidden?: boolean;\n icon: IconDefinition;\n updating?: boolean;\n updatingIcon?: IconDefinition;\n onClick?: (e: MouseEvent) => void;\n}\n\nconst ContentHeaderButton: FunctionComponent = (props) => {\n const { children, icon, disabled, updating, updatingIcon, onClick } = props;\n\n let displayIcon = icon;\n if (updating) {\n displayIcon = updatingIcon ? updatingIcon : faSpinner;\n }\n\n return (\n \n \n \n {children}\n \n \n );\n};\n\ntype CHAsyncButtonProps Promise> = {\n promise: T;\n onSuccess?: (item: PromiseType>) => void;\n} & Omit;\n\nexport function ContentHeaderAsyncButton Promise>(\n props: PropsWithChildren>\n): JSX.Element {\n const { promise, onSuccess, ...button } = props;\n\n const [updating, setUpdate] = useState(false);\n\n const click = useCallback(() => {\n setUpdate(true);\n promise().then((val) => {\n setUpdate(false);\n onSuccess && onSuccess(val);\n });\n }, [onSuccess, promise]);\n\n return (\n \n );\n}\n\nexport default ContentHeaderButton;\n","import React, { FunctionComponent } from \"react\";\n\ntype GroupPosition = \"start\" | \"end\";\ninterface GroupProps {\n pos: GroupPosition;\n}\n\nconst ContentHeaderGroup: FunctionComponent = (props) => {\n const { children, pos } = props;\n\n const className = `d-flex flex-grow-1 align-items-center justify-content-${pos}`;\n return
{children}
;\n};\n\nexport default ContentHeaderGroup;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport ContentHeaderButton, { ContentHeaderAsyncButton } from \"./Button\";\nimport ContentHeaderGroup from \"./Group\";\nimport \"./style.scss\";\n\ninterface Props {\n scroll?: boolean;\n className?: string;\n}\n\ndeclare type Header = FunctionComponent & {\n Button: typeof ContentHeaderButton;\n AsyncButton: typeof ContentHeaderAsyncButton;\n Group: typeof ContentHeaderGroup;\n};\n\nexport const ContentHeader: Header = ({ children, scroll, className }) => {\n const cls = useMemo(() => {\n const rowCls = [\"content-header\", \"bg-dark\", \"p-2\"];\n\n if (className !== undefined) {\n rowCls.push(className);\n }\n\n if (scroll !== false) {\n rowCls.push(\"scroll\");\n }\n return rowCls.join(\" \");\n }, [scroll, className]);\n\n let childItem: React.ReactNode;\n\n if (scroll !== false) {\n childItem = (\n
{children}
\n );\n } else {\n childItem = children;\n }\n return {childItem};\n};\n\nContentHeader.Button = ContentHeaderButton;\nContentHeader.Group = ContentHeaderGroup;\nContentHeader.AsyncButton = ContentHeaderAsyncButton;\n\nexport default ContentHeader;\n","import React, { useMemo } from \"react\";\nimport { Selector, SelectorProps } from \"../components\";\n\ninterface Props {\n options: readonly Language[];\n}\n\ntype RemovedSelectorProps = Omit<\n SelectorProps,\n \"label\" | \"placeholder\"\n>;\n\nexport type LanguageSelectorProps = Override<\n Props,\n RemovedSelectorProps\n>;\n\nexport function LanguageSelector(\n props: LanguageSelectorProps\n) {\n const { options, ...selector } = props;\n\n const items = useMemo[]>(\n () =>\n options.map((v) => ({\n label: v.name,\n value: v,\n })),\n [options]\n );\n\n return (\n l.name}\n {...selector}\n >\n );\n}\n","import React, {\n Dispatch,\n FunctionComponent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { log } from \"../../utilites/logger\";\n\nconst ModalContext = React.createContext<[string[], Dispatch]>([\n [],\n (s) => {},\n]);\n\nconst PayloadContext = React.createContext<[any[], Dispatch]>([\n [],\n (p) => {},\n]);\n\n// TODO: Performance\nexport function useShowModal() {\n const [keys, setKeys] = useContext(ModalContext);\n const [payloads, setPayloads] = useContext(PayloadContext);\n return useCallback(\n (key: string, payload?: T) => {\n log(\"info\", `modal ${key} sending payload`, payload);\n\n setKeys([...keys, key]);\n setPayloads([...payloads, payload ?? null]);\n },\n [keys, payloads, setKeys, setPayloads]\n );\n}\n\nexport function useCloseModal() {\n const [keys, setKeys] = useContext(ModalContext);\n const [payloads, setPayloads] = useContext(PayloadContext);\n return useCallback(() => {\n const newKey = [...keys];\n newKey.pop();\n const newPayload = [...payloads];\n newPayload.pop();\n setKeys(newKey);\n setPayloads(newPayload);\n }, [keys, payloads, setKeys, setPayloads]);\n}\n\nexport function useCloseModalUntil(key: string) {\n const [keys, setKeys] = useContext(ModalContext);\n const [payloads, setPayloads] = useContext(PayloadContext);\n return useCallback(() => {\n const idx = keys.findIndex((v) => v === key);\n if (idx !== -1) {\n const newKey = keys.slice(0, idx + 1);\n const newPayload = payloads.slice(0, idx + 1);\n setKeys(newKey);\n setPayloads(newPayload);\n } else {\n log(\"error\", \"Cannot close modal, key is unavailable\");\n }\n }, [keys, payloads, setKeys, setPayloads, key]);\n}\n\nexport function useIsModalShow(key: string) {\n const keys = useContext(ModalContext)[0];\n return key === keys[keys.length - 1];\n}\n\nexport function useOnModalShow(key: string, show: () => void) {\n const isShow = useIsModalShow(key);\n useEffect(() => {\n if (isShow) {\n show();\n }\n }, [isShow, show]);\n}\n\nexport function usePayload(key: string): T | null {\n const payloads = useContext(PayloadContext)[0];\n const keys = useContext(ModalContext)[0];\n return useMemo(() => {\n const idx = keys.findIndex((v) => v === key);\n return idx !== -1 ? payloads[idx] : null;\n }, [keys, payloads, key]);\n}\n\nexport const ModalProvider: FunctionComponent = ({ children }) => {\n const [key, setKey] = useState([]);\n const [payload, setPayload] = useState([]);\n\n return (\n \n \n {children}\n \n \n );\n};\n","import {\n faCheck,\n faCircleNotch,\n faExclamationTriangle,\n faInfoCircle,\n faTrash,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Container, Form } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport {\n AsyncButton,\n FileForm,\n LanguageSelector,\n MessageIcon,\n SimpleTable,\n useCloseModal,\n usePayload,\n} from \"..\";\nimport {\n useEpisodesBy,\n useProfileBy,\n useProfileItems,\n} from \"../../@redux/hooks\";\nimport { EpisodesApi, SubtitlesApi } from \"../../apis\";\nimport { Selector } from \"../inputs\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\n\nenum State {\n Update,\n Valid,\n Warning,\n Error,\n}\n\ninterface PendingSubtitle {\n form: FormType.UploadSubtitle;\n didCheck: boolean;\n instance?: Item.Episode;\n}\n\ntype SubtitleState = {\n state: State;\n infos: string[];\n};\n\ntype ProcessState = {\n [name: string]: SubtitleState;\n};\n\ntype EpisodeMap = {\n [name: string]: Item.Episode;\n};\n\ninterface MovieProps {}\n\nconst SeriesUploadModal: FunctionComponent = (\n modal\n) => {\n const series = usePayload(modal.modalKey);\n\n const [episodes, updateEpisodes] = useEpisodesBy(series?.sonarrSeriesId);\n\n const [uploading, setUpload] = useState(false);\n\n const closeModal = useCloseModal();\n\n const [pending, setPending] = useState([]);\n\n const [processState, setProcessState] = useState({});\n\n const profile = useProfileBy(series?.profileId);\n\n const languages = useProfileItems(profile);\n\n const filelist = useMemo(() => pending.map((v) => v.form.file), [pending]);\n\n // Vaildate\n useEffect(() => {\n const states = pending.reduce((prev, info) => {\n const subState: SubtitleState = {\n state: State.Valid,\n infos: [],\n };\n\n const { form, instance } = info;\n\n if (!info.didCheck) {\n subState.state = State.Update;\n } else if (!instance) {\n subState.infos.push(\"Season or episode info is missing\");\n subState.state = State.Error;\n } else {\n if (\n instance.subtitles.find((v) => v.code2 === form.language) !==\n undefined\n ) {\n subState.infos.push(\"Overwrite existing subtitle\");\n subState.state = State.Warning;\n }\n }\n\n prev[form.file.name] = subState;\n return prev;\n }, {});\n\n setProcessState(states);\n }, [pending]);\n\n const checkEpisodes = useCallback(\n async (list: PendingSubtitle[]) => {\n const names = list.map((v) => v.form.file.name);\n\n if (names.length > 0) {\n const results = await SubtitlesApi.info(names);\n\n const episodeMap = results.reduce((prev, curr) => {\n const ep = episodes.data.find(\n (v) => v.season === curr.season && v.episode === curr.episode\n );\n if (ep) {\n prev[curr.filename] = ep;\n }\n return prev;\n }, {});\n\n setPending((pd) =>\n pd.map((v) => ({\n ...v,\n didCheck: true,\n instance: episodeMap[v.form.file.name],\n }))\n );\n }\n },\n [episodes.data]\n );\n\n const updateLanguage = useCallback(\n (lang: Nullable) => {\n if (lang) {\n const list = pending.map((v) => {\n const form = v.form;\n return {\n ...v,\n form: {\n ...form,\n language: lang.code2,\n hi: lang.hi ?? false,\n forced: lang.forced ?? false,\n },\n };\n });\n setPending(list);\n }\n },\n [pending]\n );\n\n const setFiles = useCallback(\n (files: File[]) => {\n // At lease 1 language is required\n const lang = languages[0];\n const list: PendingSubtitle[] = files.map((f) => {\n return {\n form: {\n file: f,\n language: lang.code2,\n hi: lang.hi ?? false,\n forced: lang.forced ?? false,\n },\n didCheck: false,\n };\n });\n setPending(list);\n\n const states = files.reduce(\n (v, curr) => ({\n ...v,\n [curr.name]: { state: State.Update, infos: [] },\n }),\n {}\n );\n setProcessState(states);\n checkEpisodes(list);\n },\n [languages, checkEpisodes]\n );\n\n const uploadSubtitles = useCallback(async () => {\n if (series === null) {\n return;\n }\n\n const { sonarrSeriesId: seriesid } = series;\n\n let uploadStates = pending.reduce((prev, curr) => {\n prev[curr.form.file.name] = { state: State.Update, infos: [] };\n return prev;\n }, {});\n\n setProcessState(uploadStates);\n\n for (const info of pending) {\n if (info.instance) {\n const { sonarrEpisodeId: episodeid } = info.instance;\n await EpisodesApi.uploadSubtitles(seriesid, episodeid, info.form);\n\n uploadStates = {\n ...uploadStates,\n [info.form.file.name]: { state: State.Valid, infos: [] },\n };\n\n setProcessState(uploadStates);\n }\n }\n }, [series, pending]);\n\n const canUpload = useMemo(\n () => pending.length > 0 && pending.every((v) => v.instance !== undefined),\n [pending]\n );\n\n const tableShow = pending.length > 0;\n\n const columns = useMemo[]>(\n () => [\n {\n id: \"Icon\",\n accessor: \"instance\",\n className: \"text-center\",\n Cell: ({ row, loose }) => {\n const {\n form: { file },\n } = row.original;\n\n const name = file.name;\n const states = loose![1] as ProcessState;\n\n let icon = faCircleNotch;\n let color: string | undefined = undefined;\n let spin = false;\n let msgs: string[] = [];\n\n if (name in states) {\n const state = states[name];\n msgs = state.infos;\n switch (state.state) {\n case State.Error:\n icon = faExclamationTriangle;\n color = \"var(--danger)\";\n break;\n case State.Valid:\n icon = faCheck;\n color = \"var(--success)\";\n break;\n case State.Warning:\n icon = faInfoCircle;\n color = \"var(--warning)\";\n break;\n case State.Update:\n spin = true;\n break;\n default:\n break;\n }\n }\n\n return (\n \n );\n },\n },\n {\n Header: \"File\",\n accessor: (d) => d.form.file.name,\n },\n {\n Header: \"Episode\",\n accessor: \"instance\",\n className: \"vw-1\",\n Cell: ({ value, loose, row, externalUpdate }) => {\n const availables = loose![2] as Item.Episode[];\n\n const options = availables.map>(\n (ep) => ({\n label: `(${ep.season}x${ep.episode}) ${ep.title}`,\n value: ep,\n })\n );\n\n const change = useCallback(\n (ep: Nullable) => {\n if (ep) {\n const newInfo = { ...row.original };\n newInfo.instance = ep;\n externalUpdate && externalUpdate(row, newInfo);\n }\n },\n [row, externalUpdate]\n );\n\n return (\n \n );\n },\n },\n {\n accessor: \"form\",\n Cell: ({ row, externalUpdate, loose }) => {\n const [uploading] = loose!;\n return (\n {\n externalUpdate && externalUpdate(row);\n }}\n >\n \n \n );\n },\n },\n ],\n []\n );\n\n const updateItem = useCallback>(\n (row, info?: PendingSubtitle) => {\n setPending((pd) => {\n const newPending = [...pd];\n if (info) {\n newPending[row.index] = info;\n } else {\n newPending.splice(row.index, 1);\n }\n return newPending;\n });\n },\n []\n );\n\n const footer = (\n
\n
\n 0 ? languages[0] : undefined}\n onChange={updateLanguage}\n >\n
\n
\n
\n
\n );\n\n return (\n \n \n
\n \n \n \n
\n \n
\n \n );\n};\n\nexport default SeriesUploadModal;\n","import React, { FunctionComponent } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { useIsModalShow } from \".\";\nimport { useCloseModal } from \"./provider\";\n\nexport interface BaseModalProps {\n modalKey: string;\n size?: \"sm\" | \"lg\" | \"xl\";\n closeable?: boolean;\n title?: string;\n footer?: JSX.Element;\n}\n\nexport const BaseModal: FunctionComponent = (props) => {\n const { size, closeable, modalKey, title, children, footer } = props;\n\n const show = useIsModalShow(modalKey);\n const closeModal = useCloseModal();\n\n const canClose = closeable !== false;\n\n return (\n \n {title}\n {children}\n \n \n );\n};\n\nexport default BaseModal;\n","import { faFileExcel } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { AsyncButton } from \"../components\";\n\ninterface Props {\n history: History.Base;\n update: () => void;\n promise: (form: FormType.AddBlacklist) => Promise;\n}\n\nexport const BlacklistButton: FunctionComponent = ({\n history,\n update,\n promise,\n}) => {\n const { provider, subs_id, language, subtitles_path, blacklisted } = history;\n\n if (subs_id && provider && language) {\n return (\n {\n const { code2 } = language;\n const form: FormType.AddBlacklist = {\n provider,\n subs_id,\n subtitles_path,\n language: code2,\n };\n return promise(form);\n }}\n onSuccess={update}\n >\n \n \n );\n } else {\n return null;\n }\n};\n","import React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Column } from \"react-table\";\nimport { AsyncStateOverlay, HistoryIcon, LanguageText, PageTable } from \"..\";\nimport { EpisodesApi, MoviesApi } from \"../../apis\";\nimport { BlacklistButton } from \"../../generic/blacklist\";\nimport { updateAsyncState } from \"../../utilites\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\nimport { usePayload } from \"./provider\";\n\nexport const MovieHistoryModal: FunctionComponent = (props) => {\n const { ...modal } = props;\n\n const movie = usePayload(modal.modalKey);\n\n const [history, setHistory] = useState>({\n updating: false,\n data: [],\n });\n\n const update = useCallback(() => {\n if (movie) {\n updateAsyncState(MoviesApi.history(movie.radarrId), setHistory, []);\n }\n }, [movie]);\n\n useEffect(() => {\n update();\n }, [update]);\n\n const columns = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: (row) => {\n return ;\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n // Actions\n accessor: \"blacklisted\",\n Cell: ({ row }) => {\n const original = row.original;\n return (\n \n MoviesApi.addBlacklist(original.radarrId, form)\n }\n history={original}\n >\n );\n },\n },\n ],\n [update]\n );\n\n return (\n \n \n {(data) => (\n \n )}\n \n \n );\n};\n\ninterface EpisodeHistoryProps {}\n\nexport const EpisodeHistoryModal: FunctionComponent<\n BaseModalProps & EpisodeHistoryProps\n> = (props) => {\n const episode = usePayload(props.modalKey);\n\n const [history, setHistory] = useState>({\n updating: false,\n data: [],\n });\n\n const update = useCallback(() => {\n if (episode) {\n updateAsyncState(\n EpisodesApi.history(episode.sonarrEpisodeId),\n setHistory,\n []\n );\n }\n }, [episode]);\n\n useEffect(() => update(), [update]);\n\n const columns = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: (row) => {\n return ;\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n // Actions\n accessor: \"blacklisted\",\n Cell: ({ row }) => {\n const original = row.original;\n const { sonarrSeriesId, sonarrEpisodeId } = original;\n return (\n \n EpisodesApi.addBlacklist(sonarrSeriesId, sonarrEpisodeId, form)\n }\n >\n );\n },\n },\n ],\n [update]\n );\n\n return (\n \n \n {(data) => (\n \n )}\n \n \n );\n};\n","import React, { FunctionComponent, useMemo, useState } from \"react\";\nimport { Container, Form } from \"react-bootstrap\";\nimport { AsyncButton, Selector } from \"../\";\nimport { useLanguageProfiles } from \"../../@redux/hooks\";\nimport { GetItemId } from \"../../utilites\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\nimport { useCloseModal, usePayload } from \"./provider\";\n\ninterface Props {\n submit: (form: FormType.ModifyItem) => Promise;\n onSuccess?: (item: Item.Base) => void;\n}\n\nconst Editor: FunctionComponent = (props) => {\n const { onSuccess, submit, ...modal } = props;\n\n const [profiles] = useLanguageProfiles();\n\n const item = usePayload(modal.modalKey);\n\n const closeModal = useCloseModal();\n\n const profileOptions = useMemo[]>(\n () =>\n profiles.map((v) => {\n return { label: v.name, value: v.profileId };\n }),\n [profiles]\n );\n const [id, setId] = useState>(null);\n\n const [updating, setUpdating] = useState(false);\n\n const footer = useMemo(\n () => (\n {\n if (item) {\n const itemId = GetItemId(item);\n return submit({\n id: [itemId],\n profileid: [id],\n });\n } else {\n return null;\n }\n }}\n onSuccess={() => {\n closeModal();\n onSuccess && item && onSuccess(item);\n }}\n >\n Save\n \n ),\n [closeModal, id, item, onSuccess, submit]\n );\n\n return (\n \n \n
\n \n Audio\n v.name).join(\", \")}\n >\n \n \n Languages Profiles\n setId(v === undefined ? null : v)}\n >\n \n
\n
\n \n );\n};\n\nexport default Editor;\n","import React, { FunctionComponent, useEffect, useMemo, useState } from \"react\";\nimport { Container, Form } from \"react-bootstrap\";\nimport {\n AsyncButton,\n FileForm,\n LanguageSelector,\n useCloseModal,\n usePayload,\n} from \"..\";\nimport {\n useLanguageBy,\n useLanguages,\n useMovieBy,\n useProfileBy,\n} from \"../../@redux/hooks\";\nimport { MoviesApi } from \"../../apis\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\ninterface MovieProps {}\n\nconst MovieUploadModal: FunctionComponent = (\n props\n) => {\n const modal = props;\n\n const [availableLanguages] = useLanguages(true);\n\n const movie = usePayload(modal.modalKey);\n const [, update] = useMovieBy(movie?.radarrId);\n\n const closeModal = useCloseModal();\n\n const [uploading, setUpload] = useState(false);\n\n const [language, setLanguage] = useState>(null);\n\n const profile = useProfileBy(movie?.profileId);\n\n const defaultLanguage = useLanguageBy(profile?.items[0]?.language);\n\n useEffect(() => setLanguage(defaultLanguage ?? null), [defaultLanguage]);\n\n const [file, setFile] = useState>(null);\n const [forced, setForced] = useState(false);\n\n const canUpload = useMemo(() => {\n return file !== null && language?.code2;\n }, [language, file]);\n\n const footer = (\n {\n if (file && movie && language) {\n return MoviesApi.uploadSubtitles(movie.radarrId, {\n file: file,\n forced,\n hi: false,\n language: language.code2,\n });\n } else {\n return null;\n }\n }}\n onSuccess={() => {\n closeModal();\n update();\n }}\n >\n Upload\n \n );\n\n return (\n \n \n
\n \n Language\n {\n if (lang) {\n setLanguage(lang);\n }\n }}\n >\n \n \n Subtitle File\n {\n setFile(list[0]);\n }}\n >\n \n \n setForced(e.target.checked)}\n label=\"Forced\"\n >\n \n
\n
\n \n );\n};\n\nexport default MovieUploadModal;\n","import { isNull } from \"lodash\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n ActionType,\n ensurePluginOrder,\n Hooks,\n ReducerTableState,\n TableInstance,\n TableOptions,\n TableState,\n} from \"react-table\";\nimport { isNonNullable } from \"../../../utilites\";\nimport { PageControlAction } from \"../types\";\n\nconst pluginName = \"useAsyncPagination\";\n\nconst ActionLoadingChange = \"loading-change\";\n\nfunction useAsyncPagination(hooks: Hooks) {\n hooks.stateReducers.push(reducer);\n hooks.useInstance.push(useInstance);\n hooks.useOptions.push(useOptions);\n}\nuseAsyncPagination.pluginName = pluginName;\n\nfunction reducer(\n state: TableState,\n action: ActionType,\n previous: TableState | undefined,\n instance: TableInstance | undefined\n): ReducerTableState {\n if (action.type === ActionLoadingChange && instance) {\n let pageToLoad:\n | PageControlAction\n | undefined = action.pageToLoad as PageControlAction;\n let needLoadingScreen = false;\n const { asyncState } = instance;\n const { pageIndex, pageSize } = state;\n let index = pageIndex;\n if (pageToLoad === \"prev\") {\n index -= 1;\n } else if (pageToLoad === \"next\") {\n index += 1;\n } else if (typeof pageToLoad === \"number\") {\n index = pageToLoad;\n }\n const pageStart = index * pageSize;\n const pageEnd = pageStart + pageSize;\n if (asyncState) {\n const error = asyncState.error;\n const order = asyncState.data.order.slice(pageStart, pageEnd);\n\n const isInitializedError = order.length === 0 && error !== undefined;\n const isLoadingError = order.length !== 0 && order.every(isNull);\n\n if (isInitializedError || isLoadingError) {\n needLoadingScreen = true;\n } else if (order.every(isNonNullable)) {\n pageToLoad = undefined;\n }\n }\n return { ...state, pageToLoad, needLoadingScreen };\n }\n return state;\n}\n\nfunction useOptions(options: TableOptions) {\n options.manualPagination = true;\n if (options.initialState === undefined) {\n options.initialState = {};\n }\n options.initialState.pageToLoad = 0;\n options.initialState.needLoadingScreen = true;\n return options;\n}\n\nfunction useInstance(instance: TableInstance) {\n const {\n plugins,\n asyncLoader,\n dispatch,\n asyncState,\n asyncId,\n rows,\n nextPage,\n previousPage,\n gotoPage,\n state: { pageIndex, pageSize, pageToLoad },\n } = instance;\n\n ensurePluginOrder(plugins, [\"usePagination\"], pluginName);\n\n const totalCount = asyncState?.data.order.length ?? 0;\n const pageCount = Math.ceil(totalCount / pageSize);\n const pageStart = pageIndex * pageSize;\n const pageEnd = pageStart + pageSize;\n\n useEffect(() => {\n // TODO Lazy Load\n if (pageToLoad === undefined) {\n return;\n }\n asyncLoader && asyncLoader(pageStart, pageSize);\n }, [asyncLoader, pageStart, pageSize, pageToLoad]);\n\n const setPageToLoad = useCallback(\n (pageToLoad?: PageControlAction) => {\n dispatch({ type: ActionLoadingChange, pageToLoad });\n },\n [dispatch]\n );\n\n useEffect(() => {\n if (asyncState?.updating === false) {\n setPageToLoad();\n }\n }, [asyncState?.updating, setPageToLoad]);\n\n const newGoto = useCallback(\n (updater: number | ((pageIndex: number) => number)) => {\n let page: number;\n if (typeof updater === \"number\") {\n page = updater;\n } else {\n page = updater(pageIndex);\n }\n if (page === pageIndex) {\n return;\n }\n setPageToLoad(page);\n gotoPage(page);\n },\n [pageIndex, setPageToLoad, gotoPage]\n );\n\n const newPrevious = useCallback(() => {\n if (pageIndex === 0) {\n return;\n }\n setPageToLoad(\"prev\");\n previousPage();\n }, [setPageToLoad, previousPage, pageIndex]);\n\n const newNext = useCallback(() => {\n if (pageIndex === pageCount) {\n return;\n }\n setPageToLoad(\"next\");\n nextPage();\n }, [setPageToLoad, nextPage, pageCount, pageIndex]);\n\n const newPages = useMemo(() => {\n // TODO: Performance\n\n const order = (asyncState?.data.order\n .slice(pageStart, pageEnd)\n .filter(isNonNullable) ?? []) as number[];\n\n return order.flatMap((num) => {\n const row = rows.find((v) => asyncId && asyncId(v.original) === num);\n if (row) {\n return [row];\n } else {\n return [];\n }\n });\n }, [pageStart, pageEnd, asyncId, asyncState?.data.order, rows]);\n\n Object.assign, Partial>>(instance, {\n previousPage: newPrevious,\n nextPage: newNext,\n gotoPage: newGoto,\n page: newPages,\n pageCount,\n });\n}\n\nexport default useAsyncPagination;\n","import React, { forwardRef, useEffect, useRef } from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport {\n CellProps,\n Column,\n ColumnInstance,\n ensurePluginOrder,\n HeaderProps,\n Hooks,\n MetaBase,\n TableInstance,\n TableToggleCommonProps,\n} from \"react-table\";\n\nconst pluginName = \"useCustomSelection\";\n\nconst checkboxId = \"---selection---\";\n\ninterface CheckboxProps {\n idIn: string;\n}\n\nconst Checkbox = forwardRef<\n HTMLInputElement,\n TableToggleCommonProps & CheckboxProps\n>(({ indeterminate, idIn, ...rest }, ref) => {\n const defaultRef = useRef(null);\n const resolvedRef = ref || defaultRef;\n\n useEffect(() => {\n if (typeof resolvedRef === \"object\" && resolvedRef.current) {\n resolvedRef.current.indeterminate = indeterminate ?? false;\n }\n }, [resolvedRef, indeterminate]);\n\n return ;\n});\n\nfunction useCustomSelection(hooks: Hooks) {\n hooks.visibleColumnsDeps.push((deps, { instance }) => [\n ...deps,\n instance.isSelecting,\n ]);\n hooks.visibleColumns.push(visibleColumns);\n hooks.useInstance.push(useInstance);\n}\n\nuseCustomSelection.pluginName = pluginName;\n\nfunction useInstance(instance: TableInstance) {\n const {\n plugins,\n rows,\n onSelect,\n isSelecting,\n state: { selectedRowIds },\n } = instance;\n\n ensurePluginOrder(plugins, [\"useRowSelect\"], pluginName);\n\n useEffect(() => {\n // Performance\n if (isSelecting) {\n const items = Object.keys(selectedRowIds).flatMap(\n (v) => rows.find((n) => n.id === v)?.original ?? []\n );\n onSelect && onSelect(items);\n }\n }, [selectedRowIds, onSelect, rows, isSelecting]);\n}\n\nfunction visibleColumns(\n columns: ColumnInstance[],\n meta: MetaBase\n): Column[] {\n const { instance } = meta;\n if (instance.isSelecting) {\n const checkbox: Column = {\n id: checkboxId,\n Header: ({ getToggleAllRowsSelectedProps }: HeaderProps) => (\n \n ),\n Cell: ({ row }: CellProps) => (\n \n ),\n };\n return [checkbox, ...columns.filter((v) => v.selectHide !== true)];\n } else {\n return columns;\n }\n}\n\nexport default useCustomSelection;\n","import { Hooks, TableOptions } from \"react-table\";\nimport { useReduxStore } from \"../../../@redux/hooks/base\";\n\nconst pluginName = \"useLocalSettings\";\n\nfunction useDefaultSettings(hooks: Hooks) {\n hooks.useOptions.push(useOptions);\n}\nuseDefaultSettings.pluginName = pluginName;\n\nfunction useOptions(options: TableOptions) {\n const { pageSize } = useReduxStore((s) => s.site);\n\n if (options.autoResetPage === undefined) {\n options.autoResetPage = false;\n }\n\n if (options.initialState === undefined) {\n options.initialState = {};\n }\n\n options.initialState.needLoadingScreen = false;\n\n if (options.initialState.pageSize === undefined) {\n options.initialState.pageSize = pageSize;\n }\n\n if (options.asyncLoader === undefined) {\n options.initialState.pageToLoad = undefined;\n }\n\n return options;\n}\n\nexport default useDefaultSettings;\n","import { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faCheck,\n faCircleNotch,\n faClock,\n faCode,\n faDeaf,\n faExchangeAlt,\n faFilm,\n faImage,\n faLanguage,\n faMagic,\n faMinus,\n faPaintBrush,\n faPlay,\n faPlus,\n faTextHeight,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Badge,\n Button,\n ButtonGroup,\n Dropdown,\n Form,\n InputGroup,\n} from \"react-bootstrap\";\nimport { Column, useRowSelect } from \"react-table\";\nimport {\n ActionButton,\n ActionButtonItem,\n LanguageSelector,\n LanguageText,\n Selector,\n SimpleTable,\n usePayload,\n useShowModal,\n} from \"..\";\nimport { useLanguages } from \"../../@redux/hooks\";\nimport { SubtitlesApi } from \"../../apis\";\nimport { isMovie, submodProcessColor } from \"../../utilites\";\nimport { log } from \"../../utilites/logger\";\nimport { useCustomSelection } from \"../tables/plugins\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\nimport { useCloseModalUntil } from \"./provider\";\nimport { availableTranslation, colorOptions } from \"./toolOptions\";\n\ntype SupportType = Item.Episode | Item.Movie;\n\ntype TableColumnType = FormType.ModifySubtitle & {\n _language: Language;\n};\n\nenum State {\n Pending,\n Processing,\n Done,\n}\n\ntype ProcessState = StrictObject;\n\n// TODO: Extract this\ninterface StateIconProps {\n state: State;\n}\n\nconst StateIcon: FunctionComponent = ({ state }) => {\n let icon = faQuestionCircle;\n switch (state) {\n case State.Pending:\n icon = faClock;\n break;\n case State.Processing:\n icon = faCircleNotch;\n break;\n case State.Done:\n icon = faCheck;\n break;\n }\n return (\n \n );\n};\n\nfunction getIdAndType(item: SupportType): [number, \"episode\" | \"movie\"] {\n if (isMovie(item)) {\n return [item.radarrId, \"movie\"];\n } else {\n return [item.sonarrEpisodeId, \"episode\"];\n }\n}\n\nfunction submodProcessFrameRate(from: number, to: number) {\n return `change_FPS(from=${from},to=${to})`;\n}\n\nfunction submodProcessOffset(h: number, m: number, s: number, ms: number) {\n return `shift_offset(h=${h},m=${m},s=${s},ms=${ms})`;\n}\n\ninterface ToolModalProps {\n process: (\n action: string,\n override?: Partial\n ) => void;\n}\n\nconst AddColorModal: FunctionComponent = (\n props\n) => {\n const { process, ...modal } = props;\n const [selection, setSelection] = useState>(null);\n\n const submit = useCallback(() => {\n if (selection) {\n const action = submodProcessColor(selection);\n process(action);\n }\n }, [selection, process]);\n\n const footer = useMemo(\n () => (\n \n ),\n [selection, submit]\n );\n return (\n \n \n \n );\n};\n\nconst FrameRateModal: FunctionComponent = (\n props\n) => {\n const { process, ...modal } = props;\n\n const [from, setFrom] = useState>(null);\n const [to, setTo] = useState>(null);\n\n const canSave = from !== null && to !== null && from !== to;\n\n const submit = useCallback(() => {\n if (canSave) {\n const action = submodProcessFrameRate(from!, to!);\n process(action);\n }\n }, [canSave, from, to, process]);\n\n const footer = useMemo(\n () => (\n \n ),\n [submit, canSave]\n );\n\n return (\n \n \n {\n const value = parseFloat(e.currentTarget.value);\n if (isNaN(value)) {\n setFrom(null);\n } else {\n setFrom(value);\n }\n }}\n >\n {\n const value = parseFloat(e.currentTarget.value);\n if (isNaN(value)) {\n setTo(null);\n } else {\n setTo(value);\n }\n }}\n >\n \n \n );\n};\n\nconst AdjustTimesModal: FunctionComponent = (\n props\n) => {\n const { process, ...modal } = props;\n\n const [isPlus, setPlus] = useState(true);\n const [offset, setOffset] = useState<[number, number, number, number]>([\n 0,\n 0,\n 0,\n 0,\n ]);\n\n const updateOffset = useCallback(\n (idx: number) => {\n return (e: any) => {\n let value = parseFloat(e.currentTarget.value);\n if (isNaN(value)) {\n value = 0;\n }\n const newOffset = [...offset] as [number, number, number, number];\n newOffset[idx] = value;\n setOffset(newOffset);\n };\n },\n [offset]\n );\n\n const canSave = offset.some((v) => v !== 0);\n\n const submit = useCallback(() => {\n if (canSave) {\n const newOffset = offset.map((v) => (isPlus ? v : -v));\n const action = submodProcessOffset(\n newOffset[0],\n newOffset[1],\n newOffset[2],\n newOffset[3]\n );\n process(action);\n }\n }, [process, canSave, offset, isPlus]);\n\n const footer = useMemo(\n () => (\n \n ),\n [submit, canSave]\n );\n\n return (\n \n \n \n setPlus(!isPlus)}\n >\n \n \n \n \n \n \n \n \n \n );\n};\n\nconst TranslateModal: FunctionComponent = ({\n process,\n ...modal\n}) => {\n const [languages] = useLanguages(true);\n\n const available = useMemo(\n () => languages.filter((v) => v.code2 in availableTranslation),\n [languages]\n );\n\n const [selectedLanguage, setLanguage] = useState>(null);\n\n const submit = useCallback(() => {\n if (selectedLanguage) {\n process(\"translate\", { language: selectedLanguage.code2 });\n }\n }, [selectedLanguage, process]);\n\n const footer = useMemo(\n () => (\n \n ),\n [submit, selectedLanguage]\n );\n\n return (\n \n \n Enabled languages not listed here are unsupported by Google Translate.\n \n \n \n );\n};\n\ninterface STMProps {\n update: () => void;\n}\n\nconst STM: FunctionComponent = ({\n update,\n ...props\n}) => {\n const items = usePayload(props.modalKey);\n\n const [updating, setUpdate] = useState(false);\n const [processState, setProcessState] = useState({});\n const [selections, setSelections] = useState([]);\n\n const closeUntil = useCloseModalUntil(props.modalKey);\n\n const process = useCallback(\n async (action: string, override?: Partial) => {\n log(\"info\", \"executing action\", action);\n closeUntil();\n setUpdate(true);\n\n let states = selections.reduce(\n (v, curr) => ({ [curr.path]: State.Pending, ...v }),\n {}\n );\n setProcessState(states);\n\n for (const raw of selections) {\n states = {\n ...states,\n [raw.path]: State.Processing,\n };\n setProcessState(states);\n const form: FormType.ModifySubtitle = {\n id: raw.id,\n type: raw.type,\n language: raw.language,\n path: raw.path,\n ...override,\n };\n await SubtitlesApi.modify(action, form);\n\n states = {\n ...states,\n [raw.path]: State.Done,\n };\n setProcessState(states);\n }\n setUpdate(false);\n\n update();\n },\n [closeUntil, selections, update]\n );\n\n const showModal = useShowModal();\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n id: \"state\",\n accessor: \"path\",\n selectHide: true,\n Cell: ({ value, loose }) => {\n if (loose) {\n const stateList = loose[0] as ProcessState;\n if (value in stateList) {\n const state = stateList[value];\n return ;\n }\n }\n return null;\n },\n },\n {\n Header: \"Language\",\n accessor: \"_language\",\n Cell: ({ value }) => (\n \n \n \n ),\n },\n {\n id: \"file\",\n Header: \"File\",\n accessor: \"path\",\n Cell: (row) => {\n const path = row.value!;\n\n let idx = path.lastIndexOf(\"/\");\n\n if (idx === -1) {\n idx = path.lastIndexOf(\"\\\\\");\n }\n\n if (idx !== -1) {\n return path.slice(idx + 1);\n } else {\n return path;\n }\n },\n },\n ],\n []\n );\n\n const data = useMemo(\n () =>\n items?.flatMap((item) => {\n const [id, type] = getIdAndType(item);\n return item.subtitles.flatMap((v) => {\n if (v.path !== null) {\n return [\n {\n id,\n type,\n language: v.code2,\n path: v.path,\n _language: v,\n },\n ];\n } else {\n return [];\n }\n });\n }) ?? [],\n [items]\n );\n\n const plugins = [useRowSelect, useCustomSelection];\n\n const footer = useMemo(\n () => (\n k && process(k)}>\n process(\"sync\")}\n >\n Sync\n \n \n \n \n Remove HI Tags\n \n \n Remove Style Tags\n \n \n OCR Fixes\n \n \n Common Fixes\n \n \n \n Fix Uppercase\n \n \n \n \n Reverse RTL\n \n \n showModal(\"add-color\")}>\n Add Color\n \n showModal(\"change-frame-rate\")}>\n Change Frame Rate\n \n showModal(\"adjust-times\")}>\n Adjust Times\n \n showModal(\"translate-sub\")}>\n Translate\n \n \n \n ),\n [showModal, updating, selections.length, process]\n );\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default STM;\n","export const availableTranslation = {\n af: \"afrikaans\",\n sq: \"albanian\",\n am: \"amharic\",\n ar: \"arabic\",\n hy: \"armenian\",\n az: \"azerbaijani\",\n eu: \"basque\",\n be: \"belarusian\",\n bn: \"bengali\",\n bs: \"bosnian\",\n bg: \"bulgarian\",\n ca: \"catalan\",\n ceb: \"cebuano\",\n ny: \"chichewa\",\n \"zh-cn\": \"chinese (simplified)\",\n \"zh-tw\": \"chinese (traditional)\",\n co: \"corsican\",\n hr: \"croatian\",\n cs: \"czech\",\n da: \"danish\",\n nl: \"dutch\",\n en: \"english\",\n eo: \"esperanto\",\n et: \"estonian\",\n tl: \"filipino\",\n fi: \"finnish\",\n fr: \"french\",\n fy: \"frisian\",\n gl: \"galician\",\n ka: \"georgian\",\n de: \"german\",\n el: \"greek\",\n gu: \"gujarati\",\n ht: \"haitian creole\",\n ha: \"hausa\",\n haw: \"hawaiian\",\n iw: \"hebrew\",\n hi: \"hindi\",\n hmn: \"hmong\",\n hu: \"hungarian\",\n is: \"icelandic\",\n ig: \"igbo\",\n id: \"indonesian\",\n ga: \"irish\",\n it: \"italian\",\n ja: \"japanese\",\n jw: \"javanese\",\n kn: \"kannada\",\n kk: \"kazakh\",\n km: \"khmer\",\n ko: \"korean\",\n ku: \"kurdish (kurmanji)\",\n ky: \"kyrgyz\",\n lo: \"lao\",\n la: \"latin\",\n lv: \"latvian\",\n lt: \"lithuanian\",\n lb: \"luxembourgish\",\n mk: \"macedonian\",\n mg: \"malagasy\",\n ms: \"malay\",\n ml: \"malayalam\",\n mt: \"maltese\",\n mi: \"maori\",\n mr: \"marathi\",\n mn: \"mongolian\",\n my: \"myanmar (burmese)\",\n ne: \"nepali\",\n no: \"norwegian\",\n ps: \"pashto\",\n fa: \"persian\",\n pl: \"polish\",\n pt: \"portuguese\",\n pa: \"punjabi\",\n ro: \"romanian\",\n ru: \"russian\",\n sm: \"samoan\",\n gd: \"scots gaelic\",\n sr: \"serbian\",\n st: \"sesotho\",\n sn: \"shona\",\n sd: \"sindhi\",\n si: \"sinhala\",\n sk: \"slovak\",\n sl: \"slovenian\",\n so: \"somali\",\n es: \"spanish\",\n su: \"sundanese\",\n sw: \"swahili\",\n sv: \"swedish\",\n tg: \"tajik\",\n ta: \"tamil\",\n te: \"telugu\",\n th: \"thai\",\n tr: \"turkish\",\n uk: \"ukrainian\",\n ur: \"urdu\",\n uz: \"uzbek\",\n vi: \"vietnamese\",\n cy: \"welsh\",\n xh: \"xhosa\",\n yi: \"yiddish\",\n yo: \"yoruba\",\n zu: \"zulu\",\n fil: \"Filipino\",\n he: \"Hebrew\",\n};\n\nexport const colorOptions: SelectorOption[] = [\n {\n label: \"White\",\n value: \"white\",\n },\n {\n label: \"Light Gray\",\n value: \"lightgray\",\n },\n {\n label: \"Red\",\n value: \"red\",\n },\n {\n label: \"Green\",\n value: \"green\",\n },\n {\n label: \"Yellow\",\n value: \"yellow\",\n },\n {\n label: \"Blue\",\n value: \"blue\",\n },\n {\n label: \"Magenta\",\n value: \"magenta\",\n },\n {\n label: \"Cyan\",\n value: \"cyan\",\n },\n {\n label: \"Black\",\n value: \"black\",\n },\n {\n label: \"Dark Red\",\n value: \"darkred\",\n },\n {\n label: \"Dark Green\",\n value: \"darkgreen\",\n },\n {\n label: \"Dark Yellow\",\n value: \"darkyellow\",\n },\n {\n label: \"Dark Blue\",\n value: \"darkblue\",\n },\n {\n label: \"Dark Magenta\",\n value: \"darkmagenta\",\n },\n {\n label: \"Dark Cyan\",\n value: \"darkcyan\",\n },\n {\n label: \"Dark Grey\",\n value: \"darkgrey\",\n },\n];\n","import { throttle } from \"lodash\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Dropdown, Form } from \"react-bootstrap\";\nimport { useHistory } from \"react-router\";\n\nexport interface SearchResult {\n name: string;\n link?: string;\n}\n\ninterface Props {\n className?: string;\n onSearch: (text: string) => Promise;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\nexport const SearchBar: FunctionComponent = ({\n onSearch,\n onFocus,\n onBlur,\n className,\n}) => {\n const [text, setText] = useState(\"\");\n\n const [results, setResults] = useState([]);\n\n const history = useHistory();\n\n const search = useCallback(\n (value: string) => {\n if (value === \"\") {\n setResults([]);\n } else {\n onSearch(value).then((res) => setResults(res));\n }\n },\n [onSearch]\n );\n\n const debounceSearch = useMemo(() => throttle(search, 500), [search]);\n\n useEffect(() => {\n debounceSearch(text);\n }, [text, debounceSearch]);\n\n const clear = useCallback(() => {\n setText(\"\");\n setResults([]);\n }, []);\n\n const items = useMemo(() => {\n const its = results.map((v) => (\n \n {v.name}\n \n ));\n\n if (its.length === 0) {\n its.push(No Found);\n }\n\n return its;\n }, [results]);\n\n return (\n {\n if (link) {\n clear();\n history.push(link);\n }\n }}\n >\n setText(e.currentTarget.value)}\n >\n \n {items}\n \n \n );\n};\n","import React, { useMemo } from \"react\";\nimport { Table } from \"react-bootstrap\";\nimport {\n HeaderGroup,\n Row,\n TableBodyProps,\n TableOptions,\n TableProps,\n} from \"react-table\";\n\nexport interface BaseTableProps extends TableStyleProps {\n // Table Options\n headers: HeaderGroup[];\n rows: Row[];\n headersRenderer?: (headers: HeaderGroup[]) => JSX.Element[];\n rowRenderer?: (row: Row) => Nullable;\n prepareRow: (row: Row) => void;\n tableProps: TableProps;\n tableBodyProps: TableBodyProps;\n}\n\nexport interface TableStyleProps {\n emptyText?: string;\n responsive?: boolean;\n hoverable?: boolean;\n striped?: boolean;\n borderless?: boolean;\n small?: boolean;\n hideHeader?: boolean;\n headersRenderer?: (headers: HeaderGroup[]) => JSX.Element[];\n rowRenderer?: (row: Row) => Nullable;\n}\n\ninterface ExtractResult {\n style: TableStyleProps;\n options: TableOptions;\n}\n\nexport function useStyleAndOptions(\n props: TableStyleProps & TableOptions\n): ExtractResult {\n const {\n emptyText,\n responsive,\n hoverable,\n striped,\n borderless,\n small,\n hideHeader,\n headersRenderer,\n rowRenderer,\n ...options\n } = props;\n return {\n style: {\n emptyText,\n responsive,\n hoverable,\n striped,\n borderless,\n small,\n hideHeader,\n headersRenderer,\n rowRenderer,\n },\n options,\n };\n}\n\nfunction DefaultHeaderRenderer(\n headers: HeaderGroup[]\n): JSX.Element[] {\n return headers.map((col) => (\n {col.render(\"Header\")}\n ));\n}\n\nfunction DefaultRowRenderer(row: Row): JSX.Element | null {\n return (\n \n {row.cells.map((cell) => (\n \n {cell.render(\"Cell\")}\n \n ))}\n \n );\n}\n\nexport default function BaseTable(props: BaseTableProps) {\n const {\n emptyText,\n responsive,\n hoverable,\n striped,\n borderless,\n small,\n hideHeader,\n\n headers,\n rows,\n headersRenderer,\n rowRenderer,\n prepareRow,\n tableProps,\n tableBodyProps,\n } = props;\n\n const colCount = useMemo(() => {\n return headers.reduce(\n (prev, curr) => (curr.headers.length > prev ? curr.headers.length : prev),\n 0\n );\n }, [headers]);\n\n const empty = rows.length === 0;\n\n const hRenderer = headersRenderer ?? DefaultHeaderRenderer;\n const rRenderer = rowRenderer ?? DefaultRowRenderer;\n\n return (\n \n \n {headers.map((headerGroup) => (\n \n {hRenderer(headerGroup.headers)}\n \n ))}\n \n \n {emptyText && empty ? (\n \n \n {emptyText}\n \n \n ) : (\n rows.map((row) => {\n prepareRow(row);\n return rRenderer(row);\n })\n )}\n \n \n );\n}\n","import { PluginHook, TableOptions, useTable } from \"react-table\";\nimport BaseTable, { TableStyleProps, useStyleAndOptions } from \"./BaseTable\";\nimport { useDefaultSettings } from \"./plugins\";\n\ntype Props = TableOptions &\n TableStyleProps & {\n plugins?: PluginHook[];\n };\n\nexport default function SimpleTable(props: Props) {\n const { plugins, ...other } = props;\n const { style, options } = useStyleAndOptions(other);\n\n const instance = useTable(options, useDefaultSettings, ...(plugins ?? []));\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n } = instance;\n\n return (\n \n );\n}\n","import { faChevronCircleRight } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\nimport {\n Cell,\n HeaderGroup,\n Row,\n TableOptions,\n useExpanded,\n useGroupBy,\n useSortBy,\n} from \"react-table\";\nimport { TableStyleProps } from \"./BaseTable\";\nimport SimpleTable from \"./SimpleTable\";\n\nfunction renderCell(cell: Cell, row: Row) {\n if (cell.isGrouped) {\n return (\n {cell.render(\"Cell\")}\n );\n } else if (row.canExpand || cell.isAggregated) {\n return null;\n } else {\n return cell.render(\"Cell\");\n }\n}\n\nfunction renderRow(row: Row) {\n if (row.canExpand) {\n const cell = row.cells.find((cell) => cell.isGrouped);\n if (cell) {\n const rotation = row.isExpanded ? 90 : undefined;\n return (\n \n \n \n {cell.render(\"Cell\")}\n \n \n \n \n );\n } else {\n return null;\n }\n } else {\n return (\n \n {row.cells\n .filter((cell) => !cell.isPlaceholder)\n .map((cell) => (\n \n {renderCell(cell, row)}\n \n ))}\n \n );\n }\n}\n\nfunction renderHeaders(\n headers: HeaderGroup[]\n): JSX.Element[] {\n return headers\n .filter((col) => !col.isGrouped)\n .map((col) => {col.render(\"Header\")});\n}\n\ntype Props = TableOptions & TableStyleProps;\n\nfunction GroupTable(props: Props) {\n const plugins = [useGroupBy, useSortBy, useExpanded];\n return (\n \n );\n}\n\nexport default GroupTable;\n","import {\n faClock,\n faCloudUploadAlt,\n faDownload,\n faRecycle,\n faTrash,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n FontAwesomeIcon,\n FontAwesomeIconProps,\n} from \"@fortawesome/react-fontawesome\";\nimport moment from \"moment\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport {\n OverlayTrigger,\n Popover,\n Spinner,\n SpinnerProps,\n} from \"react-bootstrap\";\n\nenum HistoryAction {\n Delete = 0,\n Download,\n Manual,\n Upgrade,\n Upload,\n Sync,\n}\n\nexport const HistoryIcon: FunctionComponent<{\n action: number;\n title?: string;\n}> = (props) => {\n const { action, title } = props;\n let icon = null;\n switch (action) {\n case HistoryAction.Delete:\n icon = faTrash;\n break;\n case HistoryAction.Download:\n icon = faDownload;\n break;\n case HistoryAction.Manual:\n icon = faUser;\n break;\n case HistoryAction.Sync:\n icon = faClock;\n break;\n case HistoryAction.Upgrade:\n icon = faRecycle;\n break;\n case HistoryAction.Upload:\n icon = faCloudUploadAlt;\n break;\n }\n if (icon) {\n return ;\n } else {\n return null;\n }\n};\n\ninterface MessageIconProps extends FontAwesomeIconProps {\n messages: string[];\n}\n\nexport const MessageIcon: FunctionComponent = (props) => {\n const { messages, ...iconProps } = props;\n\n const popover = (\n \n );\n\n return (\n \n \n \n );\n};\n\nexport const LoadingIndicator: FunctionComponent<{\n animation?: SpinnerProps[\"animation\"];\n}> = ({ children, animation: style }) => {\n return (\n
\n \n {children}\n
\n );\n};\n\ninterface FormatterProps {\n format?: string;\n children: string | Date;\n}\n\nexport const DateFormatter: FunctionComponent = ({\n children,\n format,\n}) => {\n const result = useMemo(\n () => moment(children, format ?? \"DD/MM/YYYY h:mm:ss\").fromNow(),\n [children, format]\n );\n return {result};\n};\n\ninterface LanguageTextProps {\n text: Language;\n className?: string;\n long?: boolean;\n}\n\nexport const LanguageText: FunctionComponent = ({\n text,\n className,\n long,\n}) => {\n const result = useMemo(() => {\n let lang = text.code2;\n let hi = \":HI\";\n let forced = \":Forced\";\n if (long) {\n lang = text.name;\n hi = \" HI\";\n forced = \" Forced\";\n }\n\n let res = lang;\n if (text.hi) {\n res += hi;\n } else if (text.forced) {\n res += forced;\n }\n return res;\n }, [text, long]);\n return (\n \n {result}\n \n );\n};\n\nexport * from \"./async\";\nexport * from \"./buttons\";\nexport * from \"./ContentHeader\";\nexport * from \"./inputs\";\nexport * from \"./LanguageSelector\";\nexport * from \"./modals\";\nexport * from \"./SearchBar\";\nexport * from \"./tables\";\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Col, Container, Pagination, Row } from \"react-bootstrap\";\nimport { PageControlAction } from \"./types\";\ninterface Props {\n count: number;\n index: number;\n size: number;\n total: number;\n canPrevious: boolean;\n previous: () => void;\n canNext: boolean;\n next: () => void;\n goto: (idx: number) => void;\n loadState?: PageControlAction;\n}\n\nconst PageControl: FunctionComponent = ({\n count,\n index,\n size,\n total,\n canPrevious,\n previous,\n canNext,\n next,\n goto,\n loadState,\n}) => {\n const empty = total === 0;\n const start = empty ? 0 : size * index + 1;\n const end = Math.min(size * (index + 1), total);\n\n const loading = loadState !== undefined;\n\n const pageButtons = useMemo(\n () =>\n [...Array(count).keys()]\n .map((idx) => {\n if (Math.abs(idx - index) >= 4 && idx !== 0 && idx !== count - 1) {\n return null;\n } else {\n return (\n goto(idx)}\n >\n {idx + 1}\n \n );\n }\n })\n .flatMap((item, idx, arr) => {\n if (item === null) {\n if (arr[idx + 1] === null) {\n return [];\n } else {\n return (\n \n );\n }\n } else {\n return [item];\n }\n }),\n [count, index, goto, loading]\n );\n\n return (\n \n \n \n \n Show {start} to {end} of {total} entries\n \n \n \n \n \n \n \n );\n};\n\nexport default PageControl;\n","import { isNull, isUndefined } from \"lodash\";\nimport React, { useCallback, useEffect } from \"react\";\nimport {\n PluginHook,\n TableOptions,\n usePagination,\n useRowSelect,\n useTable,\n} from \"react-table\";\nimport { useReduxStore } from \"../../@redux/hooks/base\";\nimport { ScrollToTop } from \"../../utilites\";\nimport { AsyncStateOverlay } from \"../async\";\nimport BaseTable, { TableStyleProps, useStyleAndOptions } from \"./BaseTable\";\nimport PageControl from \"./PageControl\";\nimport {\n useAsyncPagination,\n useCustomSelection,\n useDefaultSettings,\n} from \"./plugins\";\n\ntype Props = TableOptions &\n TableStyleProps & {\n async?: boolean;\n canSelect?: boolean;\n autoScroll?: boolean;\n plugins?: PluginHook[];\n };\n\nexport default function PageTable(props: Props) {\n const { async, autoScroll, canSelect, plugins, ...remain } = props;\n const { style, options } = useStyleAndOptions(remain);\n\n const allPlugins: PluginHook[] = [useDefaultSettings, usePagination];\n\n if (async) {\n allPlugins.push(useAsyncPagination);\n }\n\n if (canSelect) {\n allPlugins.push(useRowSelect, useCustomSelection);\n }\n\n if (plugins) {\n allPlugins.push(...plugins);\n }\n\n const instance = useTable(options, ...allPlugins);\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n\n // page\n page,\n canNextPage,\n canPreviousPage,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize, pageToLoad, needLoadingScreen },\n } = instance;\n\n const globalPageSize = useReduxStore((s) => s.site.pageSize);\n\n // Scroll to top when page is changed\n useEffect(() => {\n if (autoScroll) {\n ScrollToTop();\n }\n }, [pageIndex, autoScroll]);\n\n useEffect(() => {\n const selecting = options.isSelecting;\n if (canSelect && !isUndefined(selecting)) {\n if (selecting) {\n setPageSize(rows.length);\n } else {\n setPageSize(globalPageSize);\n }\n }\n }, [\n canSelect,\n globalPageSize,\n options.isSelecting,\n rows.length,\n setPageSize,\n ]);\n\n const total = options.asyncState\n ? options.asyncState.data.order.length\n : rows.length;\n\n const orderIdStateValidater = useCallback(\n (state: OrderIdState) => {\n const start = pageIndex * pageSize;\n const end = start + pageSize;\n return state.order.slice(start, end).every(isNull) === false;\n },\n [pageIndex, pageSize]\n );\n\n if (needLoadingScreen && options.asyncState) {\n return (\n \n );\n }\n\n return (\n \n \n \n \n );\n}\n","export default \"data:image/png;base64,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\"","import { IconDefinition } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useContext, useMemo } from \"react\";\nimport { Badge, Collapse, ListGroupItem } from \"react-bootstrap\";\nimport { NavLink } from \"react-router-dom\";\nimport { useSidebarKey, useUpdateSidebar } from \".\";\nimport { SidebarToggleContext } from \"../App\";\nimport {\n BadgeProvider,\n ChildBadgeProvider,\n CollapseItemType,\n LinkItemType,\n} from \"./types\";\n\nexport const HiddenKeysContext = React.createContext([]);\n\nexport const BadgesContext = React.createContext({});\n\nexport const LinkItem: FunctionComponent = ({\n link,\n name,\n icon,\n}) => {\n const badges = useContext(BadgesContext);\n const toggle = useContext(SidebarToggleContext);\n\n const badgeValue = useMemo(() => {\n let badge: Nullable = null;\n if (name in badges) {\n let item = badges[name];\n if (typeof item === \"number\") {\n badge = item;\n }\n }\n return badge;\n }, [badges, name]);\n\n return (\n \n \n \n );\n};\n\nexport const CollapseItem: FunctionComponent = ({\n icon,\n name,\n children,\n}) => {\n const badges = useContext(BadgesContext);\n const hiddenKeys = useContext(HiddenKeysContext);\n const toggleSidebar = useContext(SidebarToggleContext);\n\n const itemKey = name.toLowerCase();\n\n const sidebarKey = useSidebarKey();\n const updateSidebar = useUpdateSidebar();\n\n const [badgeValue, childValue] = useMemo<\n [Nullable, Nullable]\n >(() => {\n let badge: Nullable = null;\n let child: Nullable = null;\n\n if (name in badges) {\n const item = badges[name];\n if (typeof item === \"number\") {\n badge = item;\n } else if (typeof item === \"object\") {\n badge = 0;\n child = item;\n for (const it in item) {\n badge += item[it];\n }\n }\n }\n return [badge, child];\n }, [badges, name]);\n\n const active = useMemo(() => sidebarKey === itemKey, [sidebarKey, itemKey]);\n\n const collapseBoxClass = useMemo(\n () => `sidebar-collapse-box ${active ? \"active\" : \"\"}`,\n [active]\n );\n\n const childrenElems = useMemo(\n () =>\n children\n .filter((v) => !hiddenKeys.includes(v.hiddenKey ?? \"\"))\n .map((ch) => {\n let badge: Nullable = null;\n if (childValue && ch.name in childValue) {\n badge = childValue[ch.name];\n }\n return (\n \n \n \n );\n }),\n [children, hiddenKeys, childValue, toggleSidebar]\n );\n\n if (childrenElems.length === 0) {\n return null;\n }\n\n return (\n
\n {\n if (active) {\n updateSidebar(\"\");\n } else {\n updateSidebar(itemKey);\n }\n }}\n >\n \n \n \n
{childrenElems}
\n
\n
\n );\n};\n\ninterface DisplayProps {\n name: string;\n icon?: IconDefinition;\n badge?: number;\n}\n\nconst DisplayItem: FunctionComponent = ({\n name,\n icon,\n badge,\n}) => (\n \n {icon && (\n \n )}\n \n {name} {badge}\n \n \n);\n","import React, {\n FunctionComponent,\n useContext,\n useEffect,\n useMemo,\n} from \"react\";\nimport { Container, Image, ListGroup } from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport { badgeUpdateAll, siteChangeSidebar } from \"../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../@redux/hooks/base\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport logo from \"../@static/logo64.png\";\nimport { SidebarToggleContext } from \"../App\";\nimport { useAutoUpdate } from \"../utilites/hooks\";\nimport {\n BadgesContext,\n CollapseItem,\n HiddenKeysContext,\n LinkItem,\n} from \"./items\";\nimport { RadarrDisabledKey, SidebarList, SonarrDisabledKey } from \"./list\";\nimport \"./style.scss\";\nimport { BadgeProvider } from \"./types\";\n\nexport function useSidebarKey() {\n return useReduxStore((s) => s.site.sidebar);\n}\n\nexport function useUpdateSidebar() {\n return useReduxAction(siteChangeSidebar);\n}\n\ninterface Props {\n open?: boolean;\n}\n\nconst Sidebar: FunctionComponent = ({ open }) => {\n const updateBadges = useReduxAction(badgeUpdateAll);\n useAutoUpdate(updateBadges);\n\n const toggle = useContext(SidebarToggleContext);\n\n const { movies, episodes, providers } = useReduxStore((s) => s.site.badges);\n\n const badges = useMemo(\n () => ({\n Wanted: {\n Series: episodes,\n Movies: movies,\n },\n System: {\n Providers: providers,\n },\n }),\n [movies, episodes, providers]\n );\n\n const sonarrEnabled = useIsSonarrEnabled();\n const radarrEnabled = useIsRadarrEnabled();\n\n const hiddenKeys = useMemo(() => {\n const list = [];\n if (!sonarrEnabled) {\n list.push(SonarrDisabledKey);\n }\n if (!radarrEnabled) {\n list.push(RadarrDisabledKey);\n }\n return list;\n }, [sonarrEnabled, radarrEnabled]);\n\n const history = useHistory();\n\n const updateSidebar = useUpdateSidebar();\n\n useEffect(() => {\n const path = history.location.pathname.split(\"/\");\n const len = path.length;\n if (len >= 3) {\n updateSidebar(path[len - 2]);\n } else {\n updateSidebar(path[len - 1]);\n }\n }, [history.location.pathname, updateSidebar]);\n\n const cls = [\"sidebar-container\"];\n const overlay = [\"sidebar-overlay\"];\n\n if (open === true) {\n cls.push(\"open\");\n overlay.push(\"open\");\n }\n\n const sidebarItems = useMemo(\n () =>\n SidebarList.map((v) => {\n if (hiddenKeys.includes(v.hiddenKey ?? \"\")) {\n return null;\n }\n if (\"children\" in v) {\n return ;\n } else {\n return ;\n }\n }),\n [hiddenKeys]\n );\n\n return (\n \n \n
\n
\n );\n};\n\nexport default Sidebar;\n","import {\n faClock,\n faCogs,\n faExclamationTriangle,\n faFileExcel,\n faFilm,\n faLaptop,\n faPlay,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { SidebarDefinition } from \"./types\";\n\nexport const SonarrDisabledKey = \"sonarr-disabled\";\nexport const RadarrDisabledKey = \"radarr-disabled\";\n\nexport const SidebarList: SidebarDefinition[] = [\n {\n icon: faPlay,\n name: \"Series\",\n link: \"/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n icon: faFilm,\n name: \"Movies\",\n link: \"/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n {\n icon: faClock,\n name: \"History\",\n children: [\n {\n name: \"Series\",\n link: \"/history/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n name: \"Movies\",\n link: \"/history/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n {\n name: \"Statistics\",\n link: \"/history/stats\",\n },\n ],\n },\n {\n icon: faFileExcel,\n name: \"Blacklist\",\n children: [\n {\n name: \"Series\",\n link: \"/blacklist/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n name: \"Movies\",\n link: \"/blacklist/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n ],\n },\n {\n icon: faExclamationTriangle,\n name: \"Wanted\",\n children: [\n {\n name: \"Series\",\n link: \"/wanted/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n name: \"Movies\",\n link: \"/wanted/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n ],\n },\n {\n icon: faCogs,\n name: \"Settings\",\n children: [\n {\n name: \"General\",\n link: \"/settings/general\",\n },\n {\n name: \"Languages\",\n link: \"/settings/languages\",\n },\n {\n name: \"Providers\",\n link: \"/settings/providers\",\n },\n {\n name: \"Subtitles\",\n link: \"/settings/subtitles\",\n },\n {\n name: \"Sonarr\",\n link: \"/settings/sonarr\",\n },\n {\n name: \"Radarr\",\n link: \"/settings/radarr\",\n },\n {\n name: \"Notifications\",\n link: \"/settings/notifications\",\n },\n {\n name: \"Scheduler\",\n link: \"/settings/scheduler\",\n },\n {\n name: \"UI\",\n link: \"/settings/ui\",\n },\n ],\n },\n {\n icon: faLaptop,\n name: \"System\",\n children: [\n {\n name: \"Tasks\",\n link: \"/system/tasks\",\n },\n {\n name: \"Logs\",\n link: \"/system/logs\",\n },\n {\n name: \"Providers\",\n link: \"/system/providers\",\n },\n {\n name: \"Status\",\n link: \"/system/status\",\n },\n {\n name: \"Releases\",\n link: \"/system/releases\",\n },\n ],\n },\n];\n","import {\n faBars,\n faHeart,\n faNetworkWired,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Button,\n Col,\n Container,\n Dropdown,\n Image,\n Navbar,\n Row,\n} from \"react-bootstrap\";\nimport { SidebarToggleContext } from \".\";\nimport { siteRedirectToAuth } from \"../@redux/actions\";\nimport { useSystemSettings } from \"../@redux/hooks\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { useIsOffline } from \"../@redux/hooks/site\";\nimport logo from \"../@static/logo64.png\";\nimport { SystemApi } from \"../apis\";\nimport { ActionButton, SearchBar, SearchResult } from \"../components\";\nimport { useBaseUrl } from \"../utilites\";\nimport \"./header.scss\";\n\nasync function SearchItem(text: string) {\n const results = await SystemApi.search(text);\n\n return results.map((v) => {\n let link: string;\n if (v.sonarrSeriesId) {\n link = `/series/${v.sonarrSeriesId}`;\n } else if (v.radarrId) {\n link = `/movies/${v.radarrId}`;\n } else {\n link = \"\";\n }\n return {\n name: `${v.title} (${v.year})`,\n link,\n };\n });\n}\n\ninterface Props {}\n\nconst Header: FunctionComponent = () => {\n const setNeedAuth = useReduxAction(siteRedirectToAuth);\n\n const [settings] = useSystemSettings();\n\n const canLogout = (settings.data?.auth.type ?? \"none\") !== \"none\";\n\n const toggleSidebar = useContext(SidebarToggleContext);\n\n const offline = useIsOffline();\n\n const dropdown = useMemo(\n () => (\n \n \n \n \n \n {\n SystemApi.restart();\n }}\n >\n Restart\n \n {\n SystemApi.shutdown();\n }}\n >\n Shutdown\n \n \n \n \n ),\n [canLogout, setNeedAuth]\n );\n\n const [reconnecting, setReconnect] = useState(false);\n const reconnect = useCallback(() => {\n setReconnect(true);\n SystemApi.status().finally(() => setReconnect(false));\n }, []);\n\n const baseUrl = useBaseUrl();\n\n return (\n \n
\n \n \"brand\"\n \n
\n \n \n \n \n \n \n \n \n \n \n {offline ? (\n \n Reconnect\n \n ) : (\n dropdown\n )}\n \n \n \n
\n );\n};\n\nexport default Header;\n","import { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { capitalize } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Toast } from \"react-bootstrap\";\nimport { siteRemoveError } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport \"./style.scss\";\n\nfunction useNotificationList() {\n return useReduxStore((s) => s.site.notifications);\n}\n\nfunction useRemoveNotification() {\n return useReduxAction(siteRemoveError);\n}\n\nexport interface NotificationContainerProps {}\n\nconst NotificationContainer: FunctionComponent = () => {\n const list = useNotificationList();\n\n const items = useMemo(\n () =>\n list.map((v, idx) => (\n \n )),\n [list]\n );\n return (\n
\n
{items}
\n
\n );\n};\n\ntype MessageHolderProps = ReduxStore.Notification & {};\n\nconst NotificationToast: FunctionComponent = (props) => {\n const { message, id, type } = props;\n const removeNotification = useRemoveNotification();\n\n const remove = useCallback(() => removeNotification(id), [\n removeNotification,\n id,\n ]);\n\n return (\n \n \n \n {capitalize(type)}\n \n {message}\n \n );\n};\n\nexport default NotificationContainer;\n","import { faEyeSlash as fasEyeSlash } from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container } from \"react-bootstrap\";\n\nexport const RouterEmptyPath = \"/empty-page\";\n\nconst EmptyPage: FunctionComponent = () => {\n return (\n \n

\n \n 404\n

\n

The Request URL No Found

\n
\n );\n};\n\nexport default EmptyPage;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText, PageTable } from \"../../components\";\n\ninterface Props {\n blacklist: readonly Blacklist.Movie[];\n update: () => void;\n}\n\nconst Table: FunctionComponent = ({ blacklist, update }) => {\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const target = `/movies/${row.row.original.radarrId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n accessor: \"subs_id\",\n Cell: (row) => {\n const subs_id = row.value;\n\n return (\n \n MoviesApi.deleteBlacklist(false, {\n provider: row.row.original.provider,\n subs_id,\n })\n }\n onSuccess={update}\n >\n \n \n );\n },\n },\n ],\n [update]\n );\n return (\n \n );\n};\n\nexport default Table;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { useBlacklistMovies } from \"../../@redux/hooks\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst BlacklistMoviesView: FunctionComponent = () => {\n const [blacklist, update] = useBlacklistMovies();\n useAutoUpdate(update);\n return (\n \n {(data) => (\n \n \n Movies Blacklist - Bazarr\n \n \n MoviesApi.deleteBlacklist(true)}\n onSuccess={update}\n >\n Remove All\n \n \n \n
\n
\n
\n )}\n
\n );\n};\n\nexport default BlacklistMoviesView;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { EpisodesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText, PageTable } from \"../../components\";\n\ninterface Props {\n blacklist: readonly Blacklist.Episode[];\n update: () => void;\n}\n\nconst Table: FunctionComponent = ({ blacklist, update }) => {\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Series\",\n accessor: \"seriesTitle\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const target = `/series/${row.row.original.sonarrSeriesId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode_number\",\n },\n {\n accessor: \"episodeTitle\",\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n accessor: \"subs_id\",\n Cell: (row) => {\n const subs_id = row.value;\n return (\n \n EpisodesApi.deleteBlacklist(false, {\n provider: row.row.original.provider,\n subs_id,\n })\n }\n onSuccess={update}\n >\n \n \n );\n },\n },\n ],\n [update]\n );\n return (\n \n );\n};\n\nexport default Table;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { useBlacklistSeries } from \"../../@redux/hooks\";\nimport { EpisodesApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst BlacklistSeriesView: FunctionComponent = () => {\n const [blacklist, update] = useBlacklistSeries();\n useAutoUpdate(update);\n return (\n \n {(data) => (\n \n \n Series Blacklist - Bazarr\n \n \n EpisodesApi.deleteBlacklist(true)}\n onSuccess={update}\n >\n Remove All\n \n \n \n
\n
\n
\n )}\n
\n );\n};\n\nexport default BlacklistSeriesView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport BlacklistMovies from \"./Movies\";\nimport BlacklistSeries from \"./Series\";\n\nconst Router: FunctionComponent = () => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n return (\n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default Router;\n","import { capitalize } from \"lodash\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { AsyncStateOverlay, PageTable } from \"../../components\";\n\ninterface Props {\n type: \"movies\" | \"series\";\n state: Readonly>;\n columns: Column[];\n tableUpdater?: TableUpdater;\n}\n\nconst HistoryGenericView: FunctionComponent = ({\n state,\n columns,\n type,\n tableUpdater,\n}) => {\n const typeName = capitalize(type);\n return (\n \n \n {typeName} History - Bazarr\n \n \n \n {(data) => (\n \n )}\n \n \n \n );\n};\n\nexport default HistoryGenericView;\n","import { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge, OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column, Row } from \"react-table\";\nimport { useMoviesHistory } from \"../../@redux/hooks\";\nimport { MoviesApi } from \"../../apis\";\nimport { HistoryIcon, LanguageText } from \"../../components\";\nimport { BlacklistButton } from \"../../generic/blacklist\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport HistoryGenericView from \"../generic\";\n\ninterface Props {}\n\nconst MoviesHistoryView: FunctionComponent = () => {\n const [movies, update] = useMoviesHistory();\n useAutoUpdate(update);\n\n const tableUpdate = useCallback((row: Row) => update(), [\n update,\n ]);\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: (row) => ,\n },\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const target = `/movies/${row.row.original.radarrId}`;\n\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n className: \"text-nowrap\",\n },\n {\n accessor: \"description\",\n Cell: ({ row, value }) => {\n const overlay = (\n \n {value}\n \n );\n return (\n \n \n \n );\n },\n },\n {\n accessor: \"blacklisted\",\n Cell: ({ row, externalUpdate }) => {\n const original = row.original;\n return (\n externalUpdate && externalUpdate(row)}\n promise={(form) =>\n MoviesApi.addBlacklist(original.radarrId, form)\n }\n >\n );\n },\n },\n ],\n []\n );\n\n return (\n []}\n tableUpdater={tableUpdate}\n >\n );\n};\n\nexport default MoviesHistoryView;\n","import { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge, OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column, Row } from \"react-table\";\nimport { useSeriesHistory } from \"../../@redux/hooks\";\nimport { EpisodesApi } from \"../../apis\";\nimport { HistoryIcon, LanguageText } from \"../../components\";\nimport { BlacklistButton } from \"../../generic/blacklist\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport HistoryGenericView from \"../generic\";\n\ninterface Props {}\n\nconst SeriesHistoryView: FunctionComponent = () => {\n const [series, update] = useSeriesHistory();\n useAutoUpdate(update);\n\n const tableUpdate = useCallback((row: Row) => update(), [\n update,\n ]);\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Series\",\n accessor: \"seriesTitle\",\n Cell: (row) => {\n const target = `/series/${row.row.original.sonarrSeriesId}`;\n\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode_number\",\n },\n {\n Header: \"Title\",\n accessor: \"episodeTitle\",\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n className: \"text-nowrap\",\n },\n {\n accessor: \"description\",\n Cell: ({ row, value }) => {\n const overlay = (\n \n {value}\n \n );\n return (\n \n \n \n );\n },\n },\n {\n accessor: \"blacklisted\",\n Cell: ({ row, externalUpdate }) => {\n const original = row.original;\n\n const { sonarrEpisodeId, sonarrSeriesId } = original;\n return (\n externalUpdate && externalUpdate(row)}\n promise={(form) =>\n EpisodesApi.addBlacklist(sonarrSeriesId, sonarrEpisodeId, form)\n }\n >\n );\n },\n },\n ],\n []\n );\n\n return (\n []}\n tableUpdater={tableUpdate}\n >\n );\n};\n\nexport default SeriesHistoryView;\n","export const actionOptions: SelectorOption[] = [\n {\n label: \"Automatically Downloaded\",\n value: 0,\n },\n {\n label: \"Manually Downloaded\",\n value: 1,\n },\n {\n label: \"Upgraded\",\n value: 2,\n },\n];\n\nexport const timeframeOptions: SelectorOption[] = [\n {\n label: \"Last Week\",\n value: \"week\",\n },\n {\n label: \"Last Month\",\n value: \"month\",\n },\n {\n label: \"Last Trimester\",\n value: \"trimester\",\n },\n {\n label: \"Last Year\",\n value: \"year\",\n },\n];\n","import { merge } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Col, Container } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { useLanguages, useProviders } from \"../../@redux/hooks\";\nimport { HistoryApi } from \"../../apis\";\nimport {\n AsyncSelector,\n ContentHeader,\n LanguageSelector,\n PromiseOverlay,\n Selector,\n} from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport { actionOptions, timeframeOptions } from \"./options\";\n\nfunction converter(item: History.Stat) {\n const movies = item.movies.map((v) => ({\n date: v.date,\n movies: v.count,\n }));\n const series = item.series.map((v) => ({\n date: v.date,\n series: v.count,\n }));\n const result = merge(movies, series);\n return result;\n}\n\nconst providerLabel = (item: System.Provider) => item.name;\n\nconst SelectorContainer: FunctionComponent = ({ children }) => (\n \n {children}\n \n);\n\nconst HistoryStats: FunctionComponent = () => {\n const [languages] = useLanguages(true);\n\n const [providerList, update] = useProviders();\n useAutoUpdate(update);\n\n const [timeframe, setTimeframe] = useState(\"month\");\n const [action, setAction] = useState>(null);\n const [lang, setLanguage] = useState>(null);\n const [provider, setProvider] = useState>(null);\n\n const promise = useCallback(() => {\n return HistoryApi.stats(\n timeframe,\n action ?? undefined,\n provider?.name,\n lang?.code2\n );\n }, [timeframe, lang?.code2, action, provider]);\n\n return (\n // TODO: Responsive\n \n \n History Statistics - Bazarr\n \n \n {(data) => (\n \n \n \n setTimeframe(v ?? \"month\")}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default HistoryStats;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport MoviesHistory from \"./Movies\";\nimport SeriesHistory from \"./Series\";\nimport HistoryStats from \"./Statistics\";\n\nconst Router: FunctionComponent = () => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n return (\n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { TableUpdater } from \"react-table\";\nimport { ExtendItemComparer, SharedProps } from \".\";\nimport { useLanguageProfiles } from \"../../@redux/hooks\";\nimport { ItemEditorModal, PageTable, useShowModal } from \"../../components\";\nimport { buildOrderList, GetItemId, useMergeArray } from \"../../utilites\";\n\ninterface Props extends SharedProps {\n dirtyItems: readonly Item.Base[];\n editMode: boolean;\n select: React.Dispatch;\n update: (ids?: number[]) => void;\n}\n\nconst Table: FunctionComponent = ({\n state,\n dirtyItems,\n update,\n modify,\n editMode,\n select,\n columns,\n loader,\n name,\n}) => {\n const showModal = useShowModal();\n\n const updateRow = useCallback>(\n (row, modalKey: string) => {\n showModal(modalKey, row.original);\n },\n [showModal]\n );\n\n const idState = state.data;\n\n const orderList = useMemo(() => buildOrderList(idState), [idState]);\n\n const data = useMergeArray(orderList, dirtyItems, ExtendItemComparer);\n\n const [profiles] = useLanguageProfiles();\n\n return (\n \n \n {\n const id = GetItemId(item);\n update([id]);\n }}\n >\n \n );\n};\n\nexport default Table;\n","import { faCheck, faList, faUndo } from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Container, Dropdown, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Column } from \"react-table\";\nimport { useLanguageProfiles } from \"../../@redux/hooks\";\nimport { useReduxActionWith } from \"../../@redux/hooks/base\";\nimport { AsyncActionDispatcher } from \"../../@redux/types\";\nimport { ContentHeader } from \"../../components\";\nimport { GetItemId, isNonNullable, mergeArray } from \"../../utilites\";\nimport Table from \"./table\";\n\nexport interface SharedProps {\n name: string;\n loader: (start: number, length: number) => void;\n columns: Column[];\n modify: (form: FormType.ModifyItem) => Promise;\n state: AsyncState>;\n}\n\nexport function ExtendItemComparer(lhs: Item.Base, rhs: Item.Base): boolean {\n return GetItemId(lhs) === GetItemId(rhs);\n}\n\ninterface Props extends SharedProps {\n updateAction: (id?: number[]) => AsyncActionDispatcher;\n}\n\nconst BaseItemView: FunctionComponent = ({\n updateAction,\n ...shared\n}) => {\n const state = shared.state;\n\n const [pendingEditMode, setPendingEdit] = useState(false);\n const [editMode, setEdit] = useState(false);\n\n const onUpdated = useCallback(() => {\n setPendingEdit((edit) => {\n // Hack to remove all dependencies\n setEdit(edit);\n return edit;\n });\n setDirty([]);\n }, []);\n\n const update = useReduxActionWith(updateAction, onUpdated);\n\n const [selections, setSelections] = useState([]);\n const [dirtyItems, setDirty] = useState([]);\n\n const [profiles] = useLanguageProfiles();\n\n const profileOptions = useMemo(() => {\n const items: JSX.Element[] = [];\n items.push(\n Clear Profile\n );\n items.push();\n items.push(\n ...profiles.map((v) => (\n \n {v.name}\n \n ))\n );\n return items;\n }, [profiles]);\n\n const changeProfiles = useCallback(\n (key: Nullable) => {\n const id = key ? parseInt(key) : null;\n const newItems = selections.map((v) => {\n const item = { ...v };\n item.profileId = id;\n return item;\n });\n const newDirty = mergeArray(dirtyItems, newItems, ExtendItemComparer);\n setDirty(newDirty);\n },\n [selections, dirtyItems]\n );\n\n const startEdit = useCallback(() => {\n if (shared.state.data.order.every(isNonNullable)) {\n setEdit(true);\n } else {\n update();\n }\n setPendingEdit(true);\n }, [shared.state.data.order, update]);\n\n const endEdit = useCallback(\n (cancel: boolean = false) => {\n if (!cancel && dirtyItems.length > 0) {\n const ids = dirtyItems.map(GetItemId);\n update(ids);\n } else {\n setEdit(false);\n setDirty([]);\n }\n setPendingEdit(false);\n setSelections([]);\n },\n [dirtyItems, update]\n );\n\n const saveItems = useCallback(() => {\n const form: FormType.ModifyItem = {\n id: [],\n profileid: [],\n };\n dirtyItems.forEach((v) => {\n const id = GetItemId(v);\n form.id.push(id);\n form.profileid.push(v.profileId);\n });\n return shared.modify(form);\n }, [dirtyItems, shared]);\n\n return (\n \n \n {shared.name} - Bazarr\n \n \n {editMode ? (\n \n \n \n \n Change Profile\n \n {profileOptions}\n \n \n \n endEdit(true)}>\n Cancel\n \n endEdit()}\n >\n Save\n \n \n \n ) : (\n \n Mass Edit\n \n )}\n \n \n \n \n \n );\n};\n\nexport default BaseItemView;\n","import { faBookmark as farBookmark } from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faBookmark,\n faCheck,\n faExclamationTriangle,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { movieUpdateByRange, movieUpdateInfoAll } from \"../@redux/actions\";\nimport { useRawMovies } from \"../@redux/hooks\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { MoviesApi } from \"../apis\";\nimport { ActionBadge } from \"../components\";\nimport BaseItemView from \"../generic/BaseItemView\";\n\ninterface Props {}\n\nconst MovieView: FunctionComponent = () => {\n const [movies] = useRawMovies();\n const load = useReduxAction(movieUpdateByRange);\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"monitored\",\n selectHide: true,\n Cell: ({ value }) => (\n \n ),\n },\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: ({ row, value, isSelecting: select }) => {\n if (select) {\n return value;\n } else {\n const target = `/movies/${row.original.radarrId}`;\n return (\n \n {value}\n \n );\n }\n },\n },\n {\n Header: \"Exist\",\n accessor: \"exist\",\n selectHide: true,\n Cell: ({ row, value }) => {\n const exist = value;\n const { path } = row.original;\n return (\n \n );\n },\n },\n {\n Header: \"Audio\",\n accessor: \"audio_language\",\n Cell: (row) => {\n return row.value.map((v) => (\n \n {v.name}\n \n ));\n },\n },\n {\n Header: \"Languages Profile\",\n accessor: \"profileId\",\n Cell: ({ value, loose }) => {\n if (loose) {\n // Define in generic/BaseItemView/table.tsx\n const profiles = loose[0] as Profile.Languages[];\n return profiles.find((v) => v.profileId === value)?.name ?? null;\n } else {\n return null;\n }\n },\n },\n {\n accessor: \"missing_subtitles\",\n selectHide: true,\n Cell: (row) => {\n const missing = row.value;\n return missing.map((v) => (\n \n {v.code2}\n \n ));\n },\n },\n {\n accessor: \"radarrId\",\n selectHide: true,\n Cell: ({ row, externalUpdate }) => (\n externalUpdate && externalUpdate(row, \"edit\")}\n >\n ),\n },\n ],\n []\n );\n\n return (\n []}\n modify={(form) => MoviesApi.modify(form)}\n >\n );\n};\n\nexport default MovieView;\n","import {\n faCheck,\n faDownload,\n faInfoCircle,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Badge,\n Button,\n Col,\n Container,\n Dropdown,\n OverlayTrigger,\n Popover,\n Row,\n} from \"react-bootstrap\";\nimport { Column } from \"react-table\";\nimport {\n AsyncButton,\n BaseModal,\n BaseModalProps,\n LanguageText,\n LoadingIndicator,\n PageTable,\n usePayload,\n} from \"..\";\nimport { ProvidersApi } from \"../../apis\";\nimport { isMovie } from \"../../utilites\";\n\ntype SupportType = Item.Movie | Item.Episode;\n\ninterface Props {\n onSelect: (item: SupportType, result: SearchResultType) => Promise;\n onDownload?: () => void;\n}\n\nexport const ManualSearchModal: FunctionComponent = (\n props\n) => {\n const { onSelect, onDownload, ...modal } = props;\n\n const [result, setResult] = useState([]);\n const [searching, setSearch] = useState(false);\n const [start, setStart] = useState(false);\n\n const item = usePayload(modal.modalKey);\n\n const search = useCallback(() => {\n if (item) {\n setStart(true);\n setSearch(true);\n let promise: Promise;\n if (isMovie(item)) {\n promise = ProvidersApi.movies(item.radarrId);\n } else {\n promise = ProvidersApi.episodes(item.sonarrEpisodeId);\n }\n promise.then((data) => setResult(data)).finally(() => setSearch(false));\n }\n }, [item]);\n\n const reset = useCallback(() => {\n setStart(false);\n setSearch(false);\n }, []);\n\n useEffect(() => {\n if (item) {\n reset();\n }\n }, [item, reset]);\n\n const columns = useMemo[]>(\n () => [\n {\n accessor: \"subtitle\",\n Cell: ({ row, externalUpdate }) => {\n const result = row.original;\n return (\n onSelect(item!, result)}\n onSuccess={() => externalUpdate && externalUpdate(row)}\n >\n \n \n );\n },\n },\n {\n Header: \"Score\",\n accessor: (d) => `${d.score}%`,\n },\n {\n accessor: \"language\",\n Cell: ({ row: { original }, value }) => {\n const lang: Language = {\n code2: value,\n hi: original.hearing_impaired === \"True\",\n forced: original.forced === \"True\",\n name: \"\",\n };\n return (\n \n \n \n );\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n Cell: (row) => {\n const value = row.value;\n const { url } = row.row.original;\n if (url) {\n return (\n \n {value}\n \n );\n } else {\n return value;\n }\n },\n },\n {\n Header: \"Release\",\n accessor: \"release_info\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const value = row.value;\n\n const items = useMemo(\n () =>\n value.slice(1).map((v, idx) => (\n \n {v}\n \n )),\n [value]\n );\n\n if (value.length !== 0) {\n const display = value[0];\n return (\n \n \n {display}\n \n {items}\n \n );\n } else {\n return \"Cannot get release info\";\n }\n },\n },\n {\n Header: \"Upload\",\n accessor: (d) => d.uploader ?? \"-\",\n },\n {\n accessor: \"matches\",\n Cell: (row) => {\n const { matches, dont_matches } = row.row.original;\n return ;\n },\n },\n ],\n [onSelect, item]\n );\n\n const content = useMemo(() => {\n if (!start) {\n return (\n
\n

{item?.path ?? \"\"}

\n \n
\n );\n } else if (searching) {\n return ;\n } else {\n return (\n \n

{item?.path ?? \"\"}

\n \n
\n );\n }\n }, [start, searching, columns, result, search, item?.path, onDownload]);\n\n const footer = useMemo(\n () => (\n \n ),\n [start, reset]\n );\n\n const title = useMemo(() => {\n let title = \"Unknown\";\n\n if (item) {\n if (item.sceneName) {\n title = item.sceneName;\n } else if (isMovie(item)) {\n title = item.title;\n } else {\n title = item.title;\n }\n }\n return `Search - ${title}`;\n }, [item]);\n\n return (\n \n {content}\n \n );\n};\n\nconst StateIcon: FunctionComponent<{ matches: string[]; dont: string[] }> = ({\n matches,\n dont,\n}) => {\n let icon = faCheck;\n let color = \"var(--success)\";\n if (dont.length > 0) {\n icon = faInfoCircle;\n color = \"var(--warning)\";\n }\n\n const matchElements = useMemo(\n () =>\n matches.map((v, idx) => (\n

\n {v}\n

\n )),\n [matches]\n );\n const dontElements = useMemo(\n () =>\n dont.map((v, idx) => (\n

\n {v}\n

\n )),\n [dont]\n );\n\n const popover = useMemo(\n () => (\n \n \n \n \n \n \n {matchElements}\n \n \n \n {dontElements}\n \n \n \n \n \n ),\n [matchElements, dontElements]\n );\n\n return (\n \n \n \n );\n};\n","import {\n faClone as fasClone,\n faFolder,\n} from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faLanguage,\n faMusic,\n faStream,\n faTags,\n IconDefinition,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport {\n Badge,\n Col,\n Container,\n Image,\n OverlayTrigger,\n Popover,\n Row,\n} from \"react-bootstrap\";\nimport { useProfileBy, useProfileItems } from \"../@redux/hooks\";\nimport { LanguageText } from \"../components\";\nimport { BuildKey } from \"../utilites\";\n\ninterface Props {\n item: Item.Base;\n details?: { icon: IconDefinition; text: string }[];\n}\n\nconst ItemOverview: FunctionComponent = (props) => {\n const { item, details } = props;\n\n const detailBadges = useMemo(() => {\n const badges: (JSX.Element | null)[] = [];\n badges.push(\n \n {item.path}\n \n );\n\n badges.push(\n ...(details?.map((val, idx) => (\n \n {val.text}\n \n )) ?? [])\n );\n\n if (item.tags.length > 0) {\n badges.push(\n \n {item.tags.join(\"|\")}\n \n );\n }\n\n return badges;\n }, [details, item.path, item.tags]);\n\n const audioBadges = useMemo(\n () =>\n item.audio_language.map((v, idx) => (\n \n {v.name}\n \n )),\n [item.audio_language]\n );\n\n const profile = useProfileBy(item.profileId);\n const profileItems = useProfileItems(profile);\n\n const languageBadges = useMemo(() => {\n const badges: (JSX.Element | null)[] = [];\n\n if (profile) {\n badges.push(\n \n {profile.name}\n \n );\n\n badges.push(\n ...profileItems.map((v, idx) => (\n \n \n \n ))\n );\n }\n\n return badges;\n }, [profile, profileItems]);\n\n const alternativePopover = useMemo(\n () => (\n \n Alternate Titles\n \n {item.alternativeTitles.map((v, idx) => (\n
  • {v}
  • \n ))}\n
    \n
    \n ),\n [item.alternativeTitles]\n );\n\n return (\n \n \n \n \n \n \n \n \n

    {item.title}

    \n \n
    \n {detailBadges}\n {audioBadges}\n {languageBadges}\n \n {item.overview}\n \n
    \n \n \n \n );\n};\n\ninterface ItemBadgeProps {\n icon: IconDefinition;\n children: string | JSX.Element;\n desc?: string;\n}\n\nconst DetailBadge: FunctionComponent = ({\n icon,\n desc,\n children,\n}) => (\n \n \n {children}\n \n);\n\nexport default ItemOverview;\n","import { faSearch, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Column } from \"react-table\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText, SimpleTable } from \"../../components\";\n\nconst missingText = \"Missing Subtitles\";\n\ninterface Props {\n movie: Item.Movie;\n update: (id: number) => void;\n}\n\nconst Table: FunctionComponent = (props) => {\n const { movie, update } = props;\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Subtitle Path\",\n accessor: \"path\",\n Cell: (row) => {\n if (row.value === null || row.value.length === 0) {\n return \"Video File Subtitle Track\";\n } else if (row.value === missingText) {\n return {row.value};\n } else {\n return row.value;\n }\n },\n },\n {\n Header: \"Language\",\n accessor: \"name\",\n Cell: ({ row }) => {\n if (row.original.path === missingText) {\n return (\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n },\n },\n {\n accessor: \"code2\",\n Cell: (row) => {\n const { original } = row.row;\n if (original.path === null || original.path.length === 0) {\n return null;\n } else if (original.path === missingText) {\n return (\n \n MoviesApi.downloadSubtitles(movie.radarrId, {\n language: original.code2,\n hi: original.hi,\n forced: original.forced,\n })\n }\n onSuccess={() => update(movie.radarrId)}\n variant=\"light\"\n size=\"sm\"\n >\n \n \n );\n } else {\n return (\n \n MoviesApi.deleteSubtitles(movie.radarrId, {\n language: original.code2,\n hi: original.hi,\n forced: original.forced,\n path: original.path ?? \"\",\n })\n }\n onSuccess={() => update(movie.radarrId)}\n >\n \n \n );\n }\n },\n },\n ],\n [movie, update]\n );\n\n const data: Subtitle[] = useMemo(() => {\n const missing = movie.missing_subtitles.map((item) => {\n item.path = missingText;\n return item;\n });\n\n return movie.subtitles.concat(missing);\n }, [movie.missing_subtitles, movie.subtitles]);\n\n return (\n \n );\n};\n\nexport default Table;\n","import {\n faCloudUploadAlt,\n faHistory,\n faSearch,\n faSync,\n faToolbox,\n faUser,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Redirect, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../../404\";\nimport { useMovieBy } from \"../../@redux/hooks\";\nimport { MoviesApi, ProvidersApi } from \"../../apis\";\nimport {\n ContentHeader,\n ItemEditorModal,\n LoadingIndicator,\n MovieHistoryModal,\n MovieUploadModal,\n SubtitleToolModal,\n useShowModal,\n} from \"../../components\";\nimport { ManualSearchModal } from \"../../components/modals/ManualSearchModal\";\nimport ItemOverview from \"../../generic/ItemOverview\";\nimport { useAutoUpdate, useWhenLoadingFinish } from \"../../utilites\";\nimport Table from \"./table\";\n\nconst download = (item: any, result: SearchResultType) => {\n item = item as Item.Movie;\n const { language, hearing_impaired, forced, provider, subtitle } = result;\n return ProvidersApi.downloadMovieSubtitle(item.radarrId, {\n language,\n hi: hearing_impaired,\n forced,\n provider,\n subtitle,\n });\n};\n\ninterface Params {\n id: string;\n}\n\ninterface Props extends RouteComponentProps {}\n\nconst MovieDetailView: FunctionComponent = ({ match }) => {\n const id = Number.parseInt(match.params.id);\n const [movie, update] = useMovieBy(id);\n useAutoUpdate(update);\n const item = movie.data;\n\n const showModal = useShowModal();\n\n const [valid, setValid] = useState(true);\n\n const validator = useCallback(() => {\n if (movie.data === null) {\n setValid(false);\n }\n }, [movie.data]);\n\n useWhenLoadingFinish(movie, validator);\n\n if (isNaN(id) || !valid) {\n return ;\n }\n\n if (!item) {\n return ;\n }\n\n const allowEdit = item.profileId !== undefined;\n\n return (\n \n \n {item.title} - Bazarr (Movies)\n \n \n \n \n MoviesApi.action({ action: \"scan-disk\", radarrid: item.radarrId })\n }\n onSuccess={update}\n >\n Scan Disk\n \n \n MoviesApi.action({\n action: \"search-missing\",\n radarrid: item.radarrId,\n })\n }\n onSuccess={update}\n >\n Search\n \n showModal(\"manual-search\", item)}\n >\n Manual\n \n showModal(\"history\", item)}\n >\n History\n \n showModal(\"tools\", [item])}\n >\n Tools\n \n \n\n \n showModal(\"upload\", item)}\n >\n Upload\n \n showModal(\"edit\", item)}\n >\n Edit Movie\n \n \n \n \n \n \n \n
    \n
    \n MoviesApi.modify(form)}\n onSuccess={update}\n >\n \n \n \n \n
    \n );\n};\n\nexport default withRouter(MovieDetailView);\n","import React, { FunctionComponent } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Movie from \".\";\nimport MovieDetail from \"./Detail\";\n\ninterface Props {}\n\nconst Router: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import {\n faCheck,\n faExclamationTriangle,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge, ProgressBar } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { seriesUpdateByRange, seriesUpdateInfoAll } from \"../@redux/actions\";\nimport { useRawSeries } from \"../@redux/hooks\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { SeriesApi } from \"../apis\";\nimport { ActionBadge } from \"../components\";\nimport BaseItemView from \"../generic/BaseItemView\";\n\ninterface Props {}\n\nconst SeriesView: FunctionComponent = () => {\n const [series] = useRawSeries();\n const load = useReduxAction(seriesUpdateByRange);\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: ({ row, value, isSelecting: select }) => {\n if (select) {\n return value;\n } else {\n const target = `/series/${row.original.sonarrSeriesId}`;\n return (\n \n {value}\n \n );\n }\n },\n },\n {\n Header: \"Exist\",\n accessor: \"exist\",\n selectHide: true,\n Cell: (row) => {\n const exist = row.value;\n const { path } = row.row.original;\n return (\n \n );\n },\n },\n {\n Header: \"Audio\",\n accessor: \"audio_language\",\n Cell: (row) => {\n return row.value.map((v) => (\n \n {v.name}\n \n ));\n },\n },\n {\n Header: \"Languages Profile\",\n accessor: \"profileId\",\n Cell: ({ value, loose }) => {\n if (loose) {\n // Define in generic/BaseItemView/table.tsx\n const profiles = loose[0] as Profile.Languages[];\n return profiles.find((v) => v.profileId === value)?.name ?? null;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Episodes\",\n accessor: \"episodeFileCount\",\n selectHide: true,\n Cell: (row) => {\n const {\n episodeFileCount,\n episodeMissingCount,\n profileId,\n } = row.row.original;\n let progress = 0;\n let label = \"\";\n if (episodeFileCount === 0 || !profileId) {\n progress = 0.0;\n } else {\n progress = episodeFileCount - episodeMissingCount;\n label = `${\n episodeFileCount - episodeMissingCount\n }/${episodeFileCount}`;\n }\n\n const color = episodeMissingCount === 0 ? \"primary\" : \"warning\";\n\n return (\n \n );\n },\n },\n {\n accessor: \"sonarrSeriesId\",\n selectHide: true,\n Cell: ({ row, externalUpdate }) => (\n {\n externalUpdate && externalUpdate(row, \"edit\");\n }}\n >\n ),\n },\n ],\n []\n );\n\n return (\n []}\n modify={(form) => SeriesApi.modify(form)}\n >\n );\n};\n\nexport default SeriesView;\n","import { faSearch, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { useSerieBy } from \"../../@redux/hooks\";\nimport { EpisodesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText } from \"../../components\";\n\ninterface Props {\n seriesid: number;\n episodeid: number;\n missing?: boolean;\n subtitle: Subtitle;\n}\n\nexport const SubtitleAction: FunctionComponent = ({\n seriesid,\n episodeid,\n missing,\n subtitle,\n}) => {\n const { hi, forced } = subtitle;\n\n const [, update] = useSerieBy(seriesid);\n\n const path = subtitle.path;\n\n if (missing || path) {\n return (\n {\n if (missing) {\n return EpisodesApi.downloadSubtitles(seriesid, episodeid, {\n hi,\n forced,\n language: subtitle.code2,\n });\n } else if (path) {\n return EpisodesApi.deleteSubtitles(seriesid, episodeid, {\n hi,\n forced,\n path: path,\n language: subtitle.code2,\n });\n } else {\n return null;\n }\n }}\n onSuccess={update}\n as={Badge}\n className=\"mr-1\"\n variant={missing ? \"primary\" : \"secondary\"}\n >\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n};\n","import { faBookmark as farBookmark } from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faBookmark,\n faBriefcase,\n faHistory,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge, ButtonGroup } from \"react-bootstrap\";\nimport { Column, TableOptions, TableUpdater } from \"react-table\";\nimport { ProvidersApi } from \"../../apis\";\nimport {\n ActionButton,\n AsyncStateOverlay,\n EpisodeHistoryModal,\n GroupTable,\n SubtitleToolModal,\n useShowModal,\n} from \"../../components\";\nimport { ManualSearchModal } from \"../../components/modals/ManualSearchModal\";\nimport { BuildKey } from \"../../utilites\";\nimport { SubtitleAction } from \"./components\";\n\ninterface Props {\n episodes: AsyncState;\n update: () => void;\n}\n\nconst download = (item: any, result: SearchResultType) => {\n item = item as Item.Episode;\n const { language, hearing_impaired, forced, provider, subtitle } = result;\n return ProvidersApi.downloadEpisodeSubtitle(\n item.sonarrSeriesId,\n item.sonarrEpisodeId,\n {\n language,\n hi: hearing_impaired,\n forced,\n provider,\n subtitle,\n }\n );\n};\n\nconst Table: FunctionComponent = ({ episodes, update }) => {\n const showModal = useShowModal();\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"monitored\",\n Cell: (row) => {\n return (\n \n );\n },\n },\n {\n accessor: \"season\",\n Cell: (row) => {\n return `Season ${row.value}`;\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode\",\n },\n {\n Header: \"Title\",\n accessor: \"title\",\n className: \"text-nowrap\",\n },\n {\n Header: \"Audio\",\n accessor: \"audio_language\",\n Cell: (row) => {\n return row.value.map((v) => (\n \n {v.name}\n \n ));\n },\n },\n {\n Header: \"Subtitles\",\n accessor: \"missing_subtitles\",\n Cell: ({ row }) => {\n const episode = row.original;\n\n const seriesid = episode.sonarrSeriesId;\n\n const elements = useMemo(() => {\n const episodeid = episode.sonarrEpisodeId;\n\n const missing = episode.missing_subtitles.map((val, idx) => (\n \n ));\n\n const existing = episode.subtitles.filter(\n (val) =>\n episode.missing_subtitles.findIndex(\n (v) => v.code2 === val.code2\n ) === -1\n );\n\n const subtitles = existing.map((val, idx) => (\n \n ));\n\n return [...missing, ...subtitles];\n }, [episode, seriesid]);\n\n return elements;\n },\n },\n {\n Header: \"Actions\",\n accessor: \"sonarrEpisodeId\",\n Cell: ({ row, externalUpdate }) => {\n return (\n \n {\n externalUpdate && externalUpdate(row, \"manual-search\");\n }}\n >\n {\n externalUpdate && externalUpdate(row, \"history\");\n }}\n >\n {\n externalUpdate && externalUpdate(row, \"tools\");\n }}\n >\n \n );\n },\n },\n ],\n []\n );\n\n const updateRow = useCallback>(\n (row, modalKey: string) => {\n if (modalKey === \"tools\") {\n showModal(modalKey, [row.original]);\n } else {\n showModal(modalKey, row.original);\n }\n },\n [showModal]\n );\n\n const maxSeason = useMemo(\n () =>\n episodes.data.reduce(\n (prev, curr) => Math.max(prev, curr.season),\n 0\n ),\n [episodes]\n );\n\n const options: TableOptions = useMemo(() => {\n return {\n columns,\n data: episodes.data,\n externalUpdate: updateRow,\n initialState: {\n sortBy: [\n { id: \"season\", desc: true },\n { id: \"episode\", desc: true },\n ],\n groupBy: [\"season\"],\n expanded: {\n [`season:${maxSeason}`]: true,\n },\n },\n };\n }, [episodes, columns, maxSeason, updateRow]);\n\n return (\n \n \n {() => (\n \n )}\n \n \n \n \n \n );\n};\n\nexport default Table;\n","import {\n faAdjust,\n faBriefcase,\n faCloudUploadAlt,\n faHdd,\n faSearch,\n faSync,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Redirect, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../../404\";\nimport { useEpisodesBy, useSerieBy } from \"../../@redux/hooks\";\nimport { SeriesApi } from \"../../apis\";\nimport {\n ContentHeader,\n ItemEditorModal,\n LoadingIndicator,\n SeriesUploadModal,\n useShowModal,\n} from \"../../components\";\nimport ItemOverview from \"../../generic/ItemOverview\";\nimport { useAutoUpdate, useWhenLoadingFinish } from \"../../utilites\";\nimport Table from \"./table\";\n\ninterface Params {\n id: string;\n}\n\ninterface Props extends RouteComponentProps {}\n\nconst SeriesEpisodesView: FunctionComponent = (props) => {\n const { match } = props;\n const id = Number.parseInt(match.params.id);\n const [serie, update] = useSerieBy(id);\n const item = serie.data;\n\n const [episodes] = useEpisodesBy(serie.data?.sonarrSeriesId);\n\n useAutoUpdate(update);\n\n const available = episodes.data.length !== 0;\n\n const details = useMemo(\n () => [\n {\n icon: faHdd,\n text: `${item?.episodeFileCount} files`,\n },\n {\n icon: faAdjust,\n text: item?.seriesType ?? \"\",\n },\n ],\n [item]\n );\n\n const showModal = useShowModal();\n\n const [valid, setValid] = useState(true);\n\n const validator = useCallback(() => {\n if (serie.data === null) {\n setValid(false);\n }\n }, [serie.data]);\n\n useWhenLoadingFinish(serie, validator);\n\n if (isNaN(id) || !valid) {\n return ;\n }\n\n if (!item) {\n return ;\n }\n\n return (\n \n \n {item.title} - Bazarr (Series)\n \n \n \n \n SeriesApi.action({ action: \"scan-disk\", seriesid: id })\n }\n onSuccess={update}\n >\n Scan Disk\n \n \n SeriesApi.action({ action: \"search-missing\", seriesid: id })\n }\n onSuccess={update}\n disabled={\n item.episodeFileCount === 0 ||\n item.profileId === null ||\n !available\n }\n >\n Search\n \n \n \n showModal(\"tools\", episodes.data)}\n >\n Tools\n \n showModal(\"upload\", item)}\n >\n Upload\n \n showModal(\"edit\", item)}\n >\n Edit Series\n \n \n \n \n \n \n \n
    \n
    \n SeriesApi.modify(form)}\n onSuccess={update}\n >\n \n
    \n );\n};\n\nexport default withRouter(SeriesEpisodesView);\n","import React, { FunctionComponent } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Series from \".\";\nimport Episodes from \"./Episodes\";\n\ninterface Props {}\n\nconst Router: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","export const enabledLanguageKey = \"languages-enabled\";\nexport const languageProfileKey = \"languages-profiles\";\nexport const notificationsKey = \"notifications-providers\";\n\nexport const pathMappingsKey = \"settings-general-path_mappings\";\nexport const pathMappingsMovieKey = \"settings-general-path_mappings_movie\";\n\nexport const seriesEnabledKey = \"settings-general-use_sonarr\";\nexport const moviesEnabledKey = \"settings-general-use_radarr\";\n","import { faSave } from \"@fortawesome/free-solid-svg-icons\";\nimport { merge } from \"lodash\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Prompt } from \"react-router\";\nimport {\n siteSaveLocalstorage,\n systemUpdateSettingsAll,\n} from \"../../@redux/actions\";\nimport { useReduxAction, useReduxActionWith } from \"../../@redux/hooks/base\";\nimport { SystemApi } from \"../../apis\";\nimport { ContentHeader } from \"../../components\";\nimport { log } from \"../../utilites/logger\";\nimport {\n enabledLanguageKey,\n languageProfileKey,\n notificationsKey,\n} from \"../keys\";\n\ntype SettingDispatcher = Record void>;\n\nexport const StagedChangesContext = React.createContext<\n SimpleStateType\n>([{}, () => {}]);\n\nfunction submitHooks(settings: LooseObject) {\n if (languageProfileKey in settings) {\n const item = settings[languageProfileKey];\n settings[languageProfileKey] = JSON.stringify(item);\n }\n\n if (enabledLanguageKey in settings) {\n const item = settings[enabledLanguageKey] as Language[];\n settings[enabledLanguageKey] = item.map((v) => v.code2);\n }\n\n if (notificationsKey in settings) {\n const item = settings[notificationsKey] as Settings.NotificationInfo[];\n settings[notificationsKey] = item.map((v) => JSON.stringify(v));\n }\n}\n\ninterface Props {\n title: string;\n children: JSX.Element | JSX.Element[];\n}\n\nconst SettingsProvider: FunctionComponent = (props) => {\n const { children, title } = props;\n\n const updateStorage = useReduxAction(siteSaveLocalstorage);\n\n const [stagedChange, setChange] = useState({});\n const [updating, setUpdating] = useState(false);\n const [dispatcher, setDispatcher] = useState({});\n\n const cleanup = useCallback(() => {\n setChange({});\n setUpdating(false);\n }, []);\n\n const update = useReduxActionWith(systemUpdateSettingsAll, cleanup);\n\n const saveSettings = useCallback(\n (settings: LooseObject) => {\n submitHooks(settings);\n setUpdating(true);\n log(\"info\", \"submitting settings\", settings);\n SystemApi.setSettings(settings).finally(update);\n },\n [update]\n );\n\n const saveLocalStorage = useCallback(\n (settings: LooseObject) => {\n updateStorage(settings);\n setChange({});\n },\n [updateStorage]\n );\n\n useEffect(() => {\n // Update dispatch\n const newDispatch: SettingDispatcher = {};\n newDispatch[\"__default__\"] = saveSettings;\n newDispatch[\"storage\"] = saveLocalStorage;\n setDispatcher(newDispatch);\n }, [saveSettings, saveLocalStorage]);\n\n const defaultDispatcher = useMemo(() => dispatcher[\"__default__\"], [\n dispatcher,\n ]);\n\n const submit = useCallback(() => {\n const dispatchMaps = new Map();\n\n // Separate settings by key\n for (const key in stagedChange) {\n const keys = key.split(\"-\");\n const firstKey = keys[0];\n if (firstKey.length === 0) {\n continue;\n }\n\n const object = dispatchMaps.get(firstKey);\n if (object) {\n object[key] = stagedChange[key];\n } else {\n dispatchMaps.set(firstKey, { [key]: stagedChange[key] });\n }\n }\n\n let lostValues = {};\n\n dispatchMaps.forEach((v, k) => {\n if (k in dispatcher) {\n dispatcher[k](v);\n } else {\n lostValues = merge(lostValues, v);\n }\n });\n // send to default dispatcher\n defaultDispatcher(lostValues);\n }, [stagedChange, dispatcher, defaultDispatcher]);\n\n return (\n \n \n {title}\n \n 0}\n message=\"You have unsaved changes, are you sure you want to leave?\"\n >\n \n \n Save\n \n \n \n \n {children}\n \n \n \n );\n};\n\nexport default SettingsProvider;\n","import { isArray, isEqual } from \"lodash\";\nimport { useCallback, useContext, useMemo } from \"react\";\nimport { useStore } from \"react-redux\";\nimport { useSystemSettings } from \"../../@redux/hooks\";\nimport { mergeArray } from \"../../utilites\";\nimport { log } from \"../../utilites/logger\";\nimport { StagedChangesContext } from \"./provider\";\n\nexport function useStagedValues(): LooseObject {\n const [values] = useContext(StagedChangesContext);\n return values;\n}\n\nexport function useSingleUpdate() {\n const [, update] = useContext(StagedChangesContext);\n return useCallback(\n (v: any, key: string) => {\n update((staged) => {\n const changes = { ...staged };\n changes[key] = v;\n\n log(\"info\", \"stage settings\", changes);\n\n return changes;\n });\n },\n [update]\n );\n}\n\nexport function useMultiUpdate() {\n const [, update] = useContext(StagedChangesContext);\n return useCallback(\n (obj: LooseObject) => {\n update((staged) => {\n const changes = { ...staged, ...obj };\n\n log(\"info\", \"stage settings\", changes);\n\n return changes;\n });\n },\n [update]\n );\n}\n\ntype ValidateFuncType = (v: any) => v is T;\n\nexport type OverrideFuncType = (settings: Settings, store: ReduxStore) => T;\n\nexport function useExtract(\n key: string,\n validate: ValidateFuncType,\n override?: OverrideFuncType\n): Readonly> {\n const [systemSettings] = useSystemSettings();\n const settings = systemSettings.data;\n\n const store = useStore();\n\n const extractValue = useMemo(() => {\n let value: Nullable = null;\n\n if (settings === undefined) {\n return value;\n }\n\n let path = key.split(\"-\");\n\n if (path[0] !== \"settings\") {\n return null;\n } else {\n path = path.slice(0);\n }\n\n let item: LooseObject = settings;\n for (const key of path) {\n if (key in item) {\n item = item[key];\n }\n\n if (validate(item)) {\n value = item;\n break;\n }\n }\n\n return value;\n }, [key, settings, validate]);\n\n if (override && settings !== undefined) {\n // TODO: Temporarily override\n return override(settings, store.getState());\n } else {\n return extractValue;\n }\n}\n\nexport function useUpdateArray(\n key: string,\n compare?: (one: T, another: T) => boolean\n) {\n const update = useSingleUpdate();\n const stagedValue = useStagedValues();\n\n if (compare === undefined) {\n compare = isEqual;\n }\n\n const staged: T[] = useMemo(() => {\n if (key in stagedValue) {\n return stagedValue[key];\n } else {\n return [];\n }\n }, [key, stagedValue]);\n\n return useCallback(\n (v: T) => {\n const newArray = [...staged];\n const idx = newArray.findIndex((inn) => compare!(inn, v));\n if (idx !== -1) {\n newArray[idx] = v;\n } else {\n newArray.push(v);\n }\n update(newArray, key);\n },\n [compare, staged, key, update]\n );\n}\n\nexport function useLatest(\n key: string,\n validate: ValidateFuncType,\n override?: OverrideFuncType\n): Readonly> {\n const extractValue = useExtract(key, validate, override);\n const stagedValue = useStagedValues();\n if (key in stagedValue) {\n return stagedValue[key] as T;\n } else {\n return extractValue;\n }\n}\n\n// Merge Two Array\nexport function useLatestMergeArray(\n key: string,\n compare: Comparer,\n override?: OverrideFuncType\n): Readonly> {\n const extractValue = useExtract(key, isArray, override);\n const stagedValue = useStagedValues();\n\n if (compare === undefined) {\n compare = isEqual;\n }\n\n let staged: T[] | undefined = undefined;\n if (key in stagedValue) {\n staged = stagedValue[key];\n }\n\n return useMemo(() => {\n if (staged !== undefined && extractValue) {\n return mergeArray(extractValue, staged, compare);\n } else {\n return extractValue;\n }\n }, [extractValue, staged, compare]);\n}\n","import React, {\n Dispatch,\n FunctionComponent,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { Collapse } from \"react-bootstrap\";\n\ntype SupportType = string | boolean;\n\nconst CollapseContext = React.createContext<\n [SupportType, Dispatch]\n>([\"\", (s) => {}]);\nconst CollapseUpdateContext = React.createContext>(\n (s) => {}\n);\n\nexport function useCollapse() {\n return useContext(CollapseUpdateContext);\n}\n\ninterface CollapseBoxType {\n Control: typeof CollapseBoxControl;\n Content: typeof CollapseBoxContent;\n}\n\nconst CollapseBox: CollapseBoxType & FunctionComponent = ({ children }) => {\n const state = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nconst CollapseBoxControl: FunctionComponent = ({ children }) => {\n const context = useContext(CollapseContext);\n return (\n \n {children}\n \n );\n};\n\ninterface ContentProps {\n on?: (k: string) => boolean;\n eventKey?: string;\n indent?: boolean;\n children: JSX.Element | JSX.Element[];\n}\n\nconst CollapseBoxContent: FunctionComponent = ({\n on,\n eventKey,\n indent,\n children,\n}) => {\n const [value] = useContext(CollapseContext);\n\n const open = useMemo(() => {\n if (on && typeof value === \"string\") {\n return on(value);\n } else if (eventKey) {\n return value === eventKey;\n } else {\n return value === true;\n }\n }, [on, value, eventKey]);\n\n return (\n \n
    {children}
    \n
    \n );\n};\n\nCollapseBox.Control = CollapseBoxControl;\nCollapseBox.Content = CollapseBoxContent;\n\nexport default CollapseBox;\n","import { faPlus } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Card as BSCard, Col, Form, Row } from \"react-bootstrap\";\nimport \"./style.scss\";\n\ninterface GroupProps {\n header: string;\n hidden?: boolean;\n}\n\nexport const Group: FunctionComponent = ({\n header,\n hidden,\n children,\n}) => {\n return (\n \n );\n};\n\nexport interface InputProps {\n name?: string;\n hidden?: boolean;\n}\n\nexport const Input: FunctionComponent = ({\n children,\n name,\n hidden,\n}) => {\n return (\n \n );\n};\n\ninterface CardProps {\n header?: string;\n subheader?: string;\n plus?: boolean;\n onClick?: () => void;\n}\n\nexport const ColCard: FunctionComponent = (props) => {\n return (\n \n \n \n );\n};\n\nexport const Card: FunctionComponent = ({\n header,\n subheader,\n plus,\n onClick,\n}) => {\n return (\n onClick && onClick()}>\n {plus ? (\n \n \n \n ) : (\n \n \n {header}\n \n \n )}\n \n );\n};\n","import { isArray, isBoolean, isNull, isNumber, isString } from \"lodash\";\nimport React, { FunctionComponent, useEffect } from \"react\";\nimport {\n Button as BSButton,\n ButtonProps as BSButtonProps,\n Form,\n} from \"react-bootstrap\";\nimport { useCollapse, useLatest } from \".\";\nimport {\n Chips as CChips,\n ChipsProps as CChipsProps,\n Selector as CSelector,\n SelectorProps as CSelectorProps,\n Slider as CSlider,\n SliderProps as CSliderProps,\n} from \"../../components\";\nimport { isReactText } from \"../../utilites\";\nimport { OverrideFuncType, useSingleUpdate } from \"./hooks\";\n\nexport const Message: FunctionComponent<{\n type?: \"warning\" | \"info\";\n}> = ({ type, children }) => {\n const cls = [\"pr-4\"];\n cls.push(type === \"warning\" ? \"text-warning\" : \"text-muted\");\n\n return {children};\n};\n\nexport interface BaseInput {\n disabled?: boolean;\n settingKey: string;\n override?: OverrideFuncType;\n beforeStaged?: (v: T) => any;\n}\n\nexport interface TextProps extends BaseInput {\n placeholder?: React.ReactText;\n password?: boolean;\n controlled?: boolean;\n}\n\nexport const Text: FunctionComponent = ({\n placeholder,\n disabled,\n beforeStaged,\n controlled,\n override,\n password,\n settingKey,\n}) => {\n const value = useLatest(settingKey, isReactText, override);\n\n const update = useSingleUpdate();\n const collapse = useCollapse();\n\n return (\n {\n const val = e.currentTarget.value;\n collapse(val.toString());\n const value = beforeStaged ? beforeStaged(val) : val;\n update(value, settingKey);\n }}\n >\n );\n};\n\nexport interface CheckProps extends BaseInput {\n label?: string;\n inline?: boolean;\n}\n\nexport const Check: FunctionComponent = ({\n label,\n inline,\n override,\n disabled,\n settingKey,\n}) => {\n const update = useSingleUpdate();\n const collapse = useCollapse();\n\n const value = useLatest(settingKey, isBoolean, override);\n\n useEffect(() => collapse(value ?? false), [collapse, value]);\n\n return (\n {\n const { checked } = e.currentTarget;\n update(checked, settingKey);\n }}\n disabled={disabled}\n checked={value ?? undefined}\n >\n );\n};\n\nfunction selectorValidator(v: any): v is T {\n return isString(v) || isNumber(v) || isArray(v);\n}\n\ntype SelectorProps = BaseInput> &\n CSelectorProps;\n\nexport function Selector<\n T extends string | string[] | number | number[],\n M extends boolean = false\n>(props: SelectorProps) {\n const update = useSingleUpdate();\n const collapse = useCollapse();\n\n const { settingKey, override, beforeStaged, ...selector } = props;\n\n const value = useLatest>(\n settingKey,\n selectorValidator,\n override\n );\n\n useEffect(() => {\n if (isString(value) || isNull(value)) {\n collapse(value ?? \"\");\n }\n });\n\n return (\n {\n v = beforeStaged ? beforeStaged(v) : v;\n update(v, settingKey);\n }}\n >\n );\n}\n\ntype SliderProps = {} & BaseInput &\n Omit;\n\nexport const Slider: FunctionComponent = (props) => {\n const { settingKey, override, ...slider } = props;\n\n const update = useSingleUpdate();\n\n const defaultValue = useLatest(settingKey, isNumber, override);\n\n return (\n {\n update(v, settingKey);\n }}\n defaultValue={defaultValue ?? undefined}\n {...slider}\n >\n );\n};\n\ntype ChipsProp = {} & BaseInput &\n Omit;\n\nexport const Chips: FunctionComponent = (props) => {\n const { settingKey, override, ...chips } = props;\n\n const update = useSingleUpdate();\n\n const defaultValue = useLatest(settingKey, isArray, override);\n\n return (\n {\n update(v, settingKey);\n }}\n {...chips}\n >\n );\n};\n\ntype ButtonProps = {\n onClick?: (\n update: (v: any, key: string) => void,\n key: string,\n value?: string\n ) => void;\n} & Omit, \"override\" | \"beforeStaged\">;\n\nexport const Button: FunctionComponent> = (\n props\n) => {\n const { onClick, settingKey, ...button } = props;\n\n const value = useLatest(settingKey, isString);\n const update = useSingleUpdate();\n\n return (\n {\n onClick && onClick(update, settingKey, value ?? undefined);\n }}\n {...button}\n >\n );\n};\n","import { isBoolean, isNumber, isString } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { UtilsApi } from \"../../apis\";\nimport { useLatest } from \"./hooks\";\n\nexport const URLTestButton: FunctionComponent<{\n category: \"sonarr\" | \"radarr\";\n}> = ({ category }) => {\n const [title, setTitle] = useState(\"Test\");\n const [variant, setVar] = useState(\"primary\");\n\n const address = useLatest(`settings-${category}-ip`, isString);\n const port = useLatest(`settings-${category}-port`, isNumber);\n const url = useLatest(`settings-${category}-base_url`, isString);\n const apikey = useLatest(`settings-${category}-apikey`, isString);\n const ssl = useLatest(`settings-${category}-ssl`, isBoolean);\n\n const click = useCallback(() => {\n if (address && apikey && ssl !== null) {\n let testUrl: string;\n if (port) {\n testUrl = `${address}:${port}${url ?? \"\"}`;\n } else {\n testUrl = `${address}${url ?? \"\"}`;\n }\n const request = {\n protocol: ssl ? \"https\" : \"http\",\n url: testUrl,\n params: {\n apikey: apikey,\n },\n };\n\n if (!request.url.endsWith(\"/\")) {\n request.url += \"/\";\n }\n\n UtilsApi.urlTest(request.protocol, request.url, request.params).then(\n (result) => {\n if (result.status) {\n setTitle(`Version: ${result.version}`);\n setVar(\"success\");\n } else {\n setTitle(result.error);\n setVar(\"danger\");\n }\n }\n );\n }\n }, [address, port, url, apikey, ssl]);\n\n return (\n \n {title}\n \n );\n};\n\nexport * from \"./collapse\";\nexport { default as CollapseBox } from \"./collapse\";\nexport * from \"./container\";\nexport * from \"./forms\";\nexport * from \"./hooks\";\nexport * from \"./provider\";\nexport { default as SettingsProvider } from \"./provider\";\n","export const securityOptions: SelectorOption[] = [\n {\n label: \"Basic\",\n value: \"basic\",\n },\n {\n label: \"Form\",\n value: \"form\",\n },\n];\n\nexport const proxyOptions: SelectorOption[] = [\n {\n label: \"Socks5\",\n value: \"socks5\",\n },\n {\n label: \"HTTP(S)\",\n value: \"http\",\n },\n];\n\nexport const branchOptions: SelectorOption[] = [\n {\n label: \"master\",\n value: \"master\",\n },\n {\n label: \"development\",\n value: \"development\",\n },\n];\n","import {\n faCheck,\n faClipboard,\n faSync,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useState } from \"react\";\nimport { InputGroup } from \"react-bootstrap\";\nimport {\n copyToClipboard,\n toggleState,\n useCanUpdateInject,\n} from \"../../utilites\";\nimport {\n Button,\n Check,\n Chips,\n CollapseBox,\n Group,\n Input,\n Message,\n Selector,\n SettingsProvider,\n Text,\n} from \"../components\";\nimport { branchOptions, proxyOptions, securityOptions } from \"./options\";\n\nconst characters = \"abcdef0123456789\";\nconst settingApiKey = \"settings-auth-apikey\";\n\nconst generateApiKey = () => {\n return Array(32)\n .fill(null)\n .map(() => characters.charAt(Math.floor(Math.random() * characters.length)))\n .join(\"\");\n};\n\nconst baseUrlOverride = (settings: Settings) =>\n settings.general.base_url?.slice(1) ?? \"\";\n\nconst SettingsGeneralView: FunctionComponent = () => {\n const [copied, setCopy] = useState(false);\n\n const canUpdate = useCanUpdateInject();\n\n return (\n \n \n \n \n Valid IPv4 address or '0.0.0.0' for all interfaces\n \n \n \n \n \n \n \n /\n \n \"/\" + v}\n >\n \n Reverse proxy support\n \n \n \n \n \n \n (v === null ? \"None\" : v)}\n >\n \n \n k !== \"\" && k !== \"None\"}>\n \n \n \n \n \n \n \n \n \n \n \n \n {\n if (value) {\n copyToClipboard(value);\n toggleState(setCopy, 1500);\n }\n }}\n >\n \n \n {\n update(generateApiKey(), key);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n (v === null ? \"None\" : v)}\n >\n \n \n k !== \"\" && k !== \"None\"}>\n \n \n \n \n \n \n \n \n \n \n \n \n You only need to enter a username and password if one is\n required. Leave them blank otherwise\n \n \n \n \n '*.' as a wildcard for subdomains\n \n \n \n \n \n \n \n \n Debug logging should only be enabled temporarily\n \n \n \n \n \n \n Send anonymous usage information, nothing that can identify you.\n This includes information on which providers you use, what languages\n you search for, Bazarr, Python, Sonarr, Radarr and what OS version\n you are using. We will use this information to prioritize features\n and bug fixes. Please, keep this enabled as this is the only way we\n have to better understand how you use Bazarr.\n \n \n \n \n );\n};\n\nexport default SettingsGeneralView;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { useEnabledLanguages, useProfiles } from \".\";\nimport { LanguageSelector as CLanguageSelector } from \"../../components\";\nimport { BaseInput, Selector, useSingleUpdate } from \"../components\";\n\ninterface LanguageSelectorProps {\n options: readonly Language[];\n}\n\nexport const LanguageSelector: FunctionComponent<\n LanguageSelectorProps & BaseInput\n> = ({ settingKey, options }) => {\n const enabled = useEnabledLanguages();\n const update = useSingleUpdate();\n\n return (\n {\n update(val, settingKey);\n }}\n >\n );\n};\n\ninterface ProfileSelectorProps {}\n\nexport const ProfileSelector: FunctionComponent<\n ProfileSelectorProps & BaseInput\n> = ({ settingKey }) => {\n const profiles = useProfiles();\n\n const profileOptions = useMemo[]>(\n () =>\n profiles.map((v) => {\n return { label: v.name, value: v.profileId };\n }),\n [profiles]\n );\n\n return (\n (v === null ? \"\" : v)}\n >\n );\n};\n","export const anyCutoff = 65535;\n\nexport const cutoffOptions: SelectorOption[] = [\n {\n label: \"Any\",\n value: anyCutoff,\n },\n];\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Form } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { useEnabledLanguages } from \".\";\nimport {\n ActionButton,\n BaseModal,\n BaseModalProps,\n LanguageSelector,\n Selector,\n SimpleTable,\n useCloseModal,\n usePayload,\n} from \"../../components\";\nimport { Input, Message } from \"../components\";\nimport { cutoffOptions } from \"./options\";\ninterface Props {\n update: (profile: Profile.Languages) => void;\n}\n\nfunction createDefaultProfile(): Profile.Languages {\n return {\n profileId: -1,\n name: \"\",\n items: [],\n cutoff: null,\n };\n}\n\nconst LanguagesProfileModal: FunctionComponent = (\n props\n) => {\n const { update, ...modal } = props;\n\n const profile = usePayload(modal.modalKey);\n\n const closeModal = useCloseModal();\n\n const languages = useEnabledLanguages();\n\n const [current, setProfile] = useState(profile ?? createDefaultProfile());\n\n useEffect(() => {\n if (profile) {\n setProfile(profile);\n }\n }, [profile]);\n\n const cutoff: SelectorOption[] = useMemo(() => {\n const options = [...cutoffOptions];\n\n const newOptions = current.items.map>((v) => ({\n label: `ID ${v.id} (${v.language})`,\n value: v.id,\n }));\n\n options.push(...newOptions);\n\n return options;\n }, [current.items]);\n\n const updateProfile = useCallback(\n (\n key: K,\n value: Profile.Languages[K]\n ) => {\n const object = { ...current };\n object[key] = value;\n setProfile(object);\n },\n [current]\n );\n\n const updateRow = useCallback>(\n (row, item: Profile.Item) => {\n const list = [...current.items];\n if (item) {\n list[row.index] = item;\n } else {\n list.splice(row.index, 1);\n }\n updateProfile(\"items\", list);\n },\n [current.items, updateProfile]\n );\n\n const addItem = useCallback(() => {\n const id =\n 1 +\n current.items.reduce((val, item) => Math.max(item.id, val), 0);\n\n if (languages.length > 0) {\n const language = languages[0].code2;\n\n const item: Profile.Item = {\n id,\n language,\n audio_exclude: \"False\",\n hi: \"False\",\n forced: \"False\",\n };\n\n const list = [...current.items];\n\n list.push(item);\n updateProfile(\"items\", list);\n }\n }, [current.items, updateProfile, languages]);\n\n const canSave = current.name.length > 0 && current.items.length > 0;\n\n const footer = (\n {\n closeModal();\n update(current);\n }}\n >\n Save\n \n );\n\n const columns = useMemo[]>(\n () => [\n {\n Header: \"ID\",\n accessor: \"id\",\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value, row, externalUpdate }) => {\n const code = value;\n const item = row.original;\n const lang = useMemo(() => languages.find((l) => l.code2 === code), [\n code,\n ]);\n return (\n
    \n {\n if (l) {\n item.language = l.code2;\n externalUpdate && externalUpdate(row, item);\n }\n }}\n >\n
    \n );\n },\n },\n {\n Header: \"Forced\",\n accessor: \"forced\",\n Cell: ({ row, value, externalUpdate }) => {\n const item = row.original;\n return (\n {\n item.forced = v.target.checked ? \"True\" : \"False\";\n externalUpdate && externalUpdate(row, item);\n }}\n >\n );\n },\n },\n {\n Header: \"HI\",\n accessor: \"hi\",\n Cell: ({ row, value, externalUpdate }) => {\n const item = row.original;\n return (\n {\n item.hi = v.target.checked ? \"True\" : \"False\";\n externalUpdate && externalUpdate(row, item);\n }}\n >\n );\n },\n },\n {\n Header: \"Exclude Audio\",\n accessor: \"audio_exclude\",\n Cell: ({ row, value, externalUpdate }) => {\n const item = row.original;\n return (\n {\n item.audio_exclude = v.target.checked ? \"True\" : \"False\";\n externalUpdate && externalUpdate(row, item);\n }}\n >\n );\n },\n },\n {\n id: \"action\",\n accessor: \"id\",\n Cell: ({ row, externalUpdate }) => {\n return (\n externalUpdate && externalUpdate(row)}\n >\n );\n },\n },\n ],\n [languages]\n );\n\n return (\n \n \n {\n updateProfile(\"name\", v.target.value);\n }}\n >\n \n \n \n \n \n \n updateProfile(\"cutoff\", num)}\n >\n Ignore others if existing\n \n \n );\n};\n\nexport default LanguagesProfileModal;\n","import { faTrash, faWrench } from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Badge, Button, ButtonGroup } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { useProfiles } from \".\";\nimport { ActionButton, SimpleTable, useShowModal } from \"../../components\";\nimport { useSingleUpdate } from \"../components\";\nimport { languageProfileKey } from \"../keys\";\nimport Modal from \"./modal\";\nimport { anyCutoff } from \"./options\";\n\nconst Table: FunctionComponent = () => {\n const originalProfiles = useProfiles();\n\n const [profiles, setProfiles] = useState([...originalProfiles]);\n\n const nextProfileId = useMemo(\n () =>\n 1 +\n profiles.reduce((val, prof) => Math.max(prof.profileId, val), 0),\n [profiles]\n );\n\n const update = useSingleUpdate();\n\n const showModal = useShowModal();\n\n const submitProfiles = useCallback(\n (list: Profile.Languages[]) => {\n update(list, languageProfileKey);\n setProfiles(list);\n },\n [update]\n );\n\n const updateProfile = useCallback(\n (profile: Profile.Languages) => {\n const list = [...profiles];\n const idx = list.findIndex((v) => v.profileId === profile.profileId);\n\n if (idx !== -1) {\n list[idx] = profile;\n } else {\n list.push(profile);\n }\n submitProfiles(list);\n },\n [profiles, submitProfiles]\n );\n\n const updateRow = useCallback>(\n (row, item?: Profile.Languages) => {\n if (item) {\n showModal(\"profile\", item);\n } else {\n const list = [...profiles];\n list.splice(row.index, 1);\n submitProfiles(list);\n }\n },\n [submitProfiles, showModal, profiles]\n );\n\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"name\",\n },\n {\n Header: \"Languages\",\n accessor: \"items\",\n Cell: (row) => {\n const items = row.value;\n const cutoff = row.row.original.cutoff;\n return items.map((v) => {\n const isCutoff = v.id === cutoff || cutoff === anyCutoff;\n return (\n \n );\n });\n },\n },\n {\n accessor: \"profileId\",\n Cell: ({ row, externalUpdate }) => {\n const profile = row.original;\n\n return (\n \n {\n externalUpdate && externalUpdate(row, profile);\n }}\n >\n externalUpdate && externalUpdate(row)}\n >\n \n );\n },\n },\n ],\n []\n );\n\n return (\n \n \n {\n const profile = {\n profileId: nextProfileId,\n name: \"\",\n items: [],\n cutoff: null,\n };\n showModal(\"profile\", profile);\n }}\n >\n Add New Profile\n \n \n \n );\n};\n\ninterface ItemProps {\n className?: string;\n item: Profile.Item;\n cutoff: boolean;\n}\n\nconst ItemBadge: FunctionComponent = ({\n cutoff,\n item,\n className,\n}) => {\n const text = useMemo(() => {\n let result = item.language;\n if (item.hi === \"True\") {\n result += \":HI\";\n } else if (item.forced === \"True\") {\n result += \":Forced\";\n }\n return result;\n }, [item.hi, item.forced, item.language]);\n return (\n \n {text}\n
    \n );\n};\n\nexport default Table;\n","import { isArray } from \"lodash\";\nimport React, { FunctionComponent, useContext } from \"react\";\nimport { useLanguageProfiles, useLanguages } from \"../../@redux/hooks\";\nimport {\n Check,\n CollapseBox,\n Group,\n Input,\n Message,\n SettingsProvider,\n useLatest,\n} from \"../components\";\nimport { enabledLanguageKey, languageProfileKey } from \"../keys\";\nimport { LanguageSelector, ProfileSelector } from \"./components\";\nimport Table from \"./table\";\n\nconst EnabledLanguageContext = React.createContext([]);\nconst LanguagesProfileContext = React.createContext<\n readonly Profile.Languages[]\n>([]);\n\nexport function useEnabledLanguages() {\n const list = useContext(EnabledLanguageContext);\n const latest = useLatest(enabledLanguageKey, isArray);\n\n if (latest) {\n return latest;\n } else {\n return list;\n }\n}\n\nexport function useProfiles() {\n const list = useContext(LanguagesProfileContext);\n const latest = useLatest(languageProfileKey, isArray);\n\n if (latest) {\n return latest;\n } else {\n return list;\n }\n}\n\ninterface Props {}\n\nconst SettingsLanguagesView: FunctionComponent = () => {\n const [languages] = useLanguages(false);\n const [enabled] = useLanguages(true);\n const [profiles] = useLanguageProfiles();\n\n return (\n \n \n \n \n \n \n \n Download a single Subtitles file without adding the language\n code to the filename.\n \n \n We don't recommend enabling this option unless absolutely\n required (ie: media player not supporting language code in\n subtitles filename). Results may vary.\n \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n \n Apply only to Series added to Bazarr after enabling this\n option.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Apply only to Movies added to Bazarr after enabling this\n option.\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n );\n};\n\nexport default SettingsLanguagesView;\n","import React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Col, Container, Form, Row } from \"react-bootstrap\";\nimport { SystemApi } from \"../../apis\";\nimport {\n AsyncButton,\n BaseModal,\n BaseModalProps,\n Selector,\n useCloseModal,\n useOnModalShow,\n usePayload,\n useShowModal,\n} from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport { ColCard, useLatestMergeArray, useUpdateArray } from \"../components\";\nimport { notificationsKey } from \"../keys\";\n\ninterface ModalProps {\n selections: readonly Settings.NotificationInfo[];\n}\n\nconst notificationComparer = (\n one: Settings.NotificationInfo,\n another: Settings.NotificationInfo\n) => one.name === another.name;\n\nconst NotificationModal: FunctionComponent = ({\n selections,\n ...modal\n}) => {\n const options = useMemo[]>(\n () =>\n selections\n .filter((v) => !v.enabled)\n .map((v) => ({\n label: v.name,\n value: v,\n })),\n [selections]\n );\n\n const update = useUpdateArray(\n notificationsKey,\n notificationComparer\n );\n\n const payload = usePayload(modal.modalKey);\n\n const [current, setCurrent] = useState>(\n payload ?? null\n );\n\n const onShow = useCallback(() => setCurrent(payload ?? null), [payload]);\n\n useOnModalShow(modal.modalKey, onShow);\n\n const updateUrl = useCallback(\n (s: string) => {\n if (current) {\n const newCurrent = { ...current };\n newCurrent.url = s;\n setCurrent(newCurrent);\n }\n },\n [current]\n );\n\n const closeModal = useCloseModal();\n\n const canSave =\n current !== null && current?.url !== null && current?.url.length !== 0;\n\n const footer = useMemo(\n () => (\n \n {\n if (current && current.url) {\n return SystemApi.testNotification(current.name, current.url);\n } else {\n return null;\n }\n }}\n >\n Test\n \n \n ),\n [canSave, closeModal, current, update, payload]\n );\n\n return (\n \n \n \n \n v.name}\n >\n \n \n \n {\n const value = e.currentTarget.value;\n updateUrl(value);\n }}\n >\n \n \n \n \n \n );\n};\n\nexport const NotificationView: FunctionComponent = () => {\n const notifications = useLatestMergeArray(\n notificationsKey,\n notificationComparer,\n (settings) => settings.notifications.providers\n );\n\n const showModal = useShowModal();\n\n const elements = useMemo(() => {\n return notifications\n ?.filter((v) => v.enabled)\n .map((v, idx) => (\n showModal(\"notifications\", v)}\n >\n ));\n }, [notifications, showModal]);\n\n return (\n \n \n {elements}{\" \"}\n showModal(\"notifications\")}>\n \n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { Alert } from \"react-bootstrap\";\nimport { Check, Group, Input, Message, SettingsProvider } from \"../components\";\nimport { NotificationView } from \"./components\";\n\nconst SettingsNotificationsView: FunctionComponent = () => {\n return (\n \n \n Thanks to caronc for his work on{\" \"}\n \n apprise\n \n , the core of the Bazarr notification system.\n \n \n Please follow instructions on his{\" \"}\n \n Wiki\n {\" \"}\n to configure your notification providers.\n \n \n \n \n \n \n \n \n Suppress notifications when manually download/upload subtitles.\n \n \n \n \n );\n};\n\nexport default SettingsNotificationsView;\n","import { ReactText } from \"react\";\n\ntype AvailableType = ReactText | boolean;\nexport interface ProviderInfo {\n key: string;\n name?: string;\n description?: string;\n message?: string;\n defaultKey?: {\n [key: string]: AvailableType;\n };\n keyNameOverride?: {\n [key: string]: string;\n };\n}\n\nexport const ProviderList: Readonly = [\n {\n key: \"addic7ed\",\n description: \"Requires Anti-Captcha Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"argenteam\", description: \"Spanish Subtitles Provider\" },\n {\n key: \"assrt\",\n description: \"Chinese Subtitles Provider\",\n defaultKey: {\n token: \"\",\n },\n },\n {\n key: \"betaseries\",\n name: \"BetaSeries\",\n description: \"French / English Provider for TV Shows Only\",\n defaultKey: {\n token: \"\",\n },\n keyNameOverride: {\n token: \"API KEY\",\n },\n },\n {\n key: \"bsplayer\",\n name: \"BSplayer\",\n },\n {\n key: \"greeksubs\",\n name: \"GreekSubs\",\n description: \"Greek Subtitles Provider\",\n },\n {\n key: \"greeksubtitles\",\n name: \"GreekSubtitles\",\n description: \"Greek Subtitles Provider\",\n },\n { key: \"hosszupuska\", description: \"Hungarian Subtitles Provider\" },\n {\n key: \"legendasdivx\",\n name: \"LegendasDivx\",\n description: \"Brazilian / Portuguese Subtitles Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n skip_wrong_fps: false,\n },\n keyNameOverride: {\n skip_wrong_fps: \"Skip Wrong FPS\",\n },\n },\n {\n key: \"legendastv\",\n name: \"LegendasTV\",\n description: \"Brazilian / Portuguese Subtitles Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"napiprojekt\", description: \"Polish Subtitles Provider\" },\n {\n key: \"napisy24\",\n description: \"Polish Subtitles Provider\",\n message:\n \"The provided credentials must have API access. Leave empty to use the defaults.\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"nekur\", description: \"Latvian Subtitles Provider\" },\n {\n key: \"opensubtitles\",\n name: \"OpenSubtitles.org\",\n defaultKey: {\n username: \"\",\n password: \"\",\n vip: false,\n ssl: false,\n skip_wrong_fps: false,\n },\n keyNameOverride: {\n vip: \"VIP\",\n ssl: \"Use SSL\",\n skip_wrong_fps: \"Skip Wrong FPS\",\n },\n },\n {\n key: \"opensubtitlescom\",\n name: \"OpenSubtitles.com\",\n defaultKey: {\n username: \"\",\n password: \"\",\n use_hash: false,\n },\n keyNameOverride: {\n use_hash: \"Use Hash\",\n },\n },\n { key: \"podnapisi\" },\n {\n key: \"regielive\",\n name: \"RegieLive\",\n description: \"Romanian Subtitles Provider\",\n },\n {\n key: \"soustitres\",\n name: \"Sous-Titres.eu\",\n description: \"Mostly French Subtitles Provider\",\n },\n { key: \"subdivx\", description: \"Spanish Subtitles Provider\" },\n {\n key: \"subssabbz\",\n name: \"Subs.sab.bz\",\n description: \"Bulgarian Subtitles Provider\",\n },\n {\n key: \"subs4free\",\n name: \"Subs4Free\",\n description: \"Greek Subtitles Provider\",\n },\n {\n key: \"subs4series\",\n name: \"Subs4Series\",\n description: \"Greek Subtitles Provider\",\n },\n {\n key: \"subscene\",\n description: \"Requires Anti-Captcha Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"subscenter\" },\n {\n key: \"subsunacs\",\n name: \"Subsunacs.net\",\n description: \"Bulgarian Subtitles Provider\",\n },\n {\n key: \"subtitri\",\n name: \"subtitri.id.lv\",\n description: \"Latvian Subtitles Provider\",\n },\n {\n key: \"subtitulamos\",\n name: \"Subtitulamos.tv\",\n description: \"Spanish Subtitles Provider\",\n },\n { key: \"sucha\", description: \"Spanish Subtitles Provider\" },\n { key: \"supersubtitles\" },\n {\n key: \"titlovi\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"titrari\", name: \"Titrari.ro\" },\n {\n key: \"tusubtitulo\",\n name: \"Tusubtitulo.com\",\n description: \"Spanish / English Subtitles Provider for TV Shows\",\n },\n { key: \"tvsubtitles\", name: \"TVSubtitles\" },\n { key: \"wizdom\", description: \"Wizdom.xyz Subtitles Provider.\" },\n {\n key: \"xsubs\",\n name: \"XSubs\",\n description: \"Greek Subtitles Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n {\n key: \"yavka\",\n name: \"Yavka.net\",\n description: \"Bulgarian Subtitles Provider\",\n },\n { key: \"yify\", name: \"YIFY Subtitles\" },\n { key: \"zimuku\", description: \"Chinese Subtitles Provider\" },\n];\n","import { capitalize, isArray, isBoolean } from \"lodash\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Col, Container, Row } from \"react-bootstrap\";\nimport {\n BaseModal,\n Selector,\n useCloseModal,\n useOnModalShow,\n usePayload,\n useShowModal,\n} from \"../../components\";\nimport { BuildKey, isReactText } from \"../../utilites\";\nimport {\n Check,\n ColCard,\n Message,\n StagedChangesContext,\n Text,\n useLatest,\n useMultiUpdate,\n} from \"../components\";\nimport { ProviderInfo, ProviderList } from \"./list\";\n\nconst ModalKey = \"provider-modal\";\nconst ProviderKey = \"settings-general-enabled_providers\";\n\nexport const ProviderView: FunctionComponent = () => {\n const providers = useLatest(ProviderKey, isArray);\n\n const showModal = useShowModal();\n\n const select = useCallback(\n (v?: ProviderInfo) => {\n showModal(ModalKey, v ?? null);\n },\n [showModal]\n );\n\n const cards = useMemo(() => {\n if (providers) {\n return providers\n .flatMap((v) => {\n const item = ProviderList.find((inn) => inn.key === v);\n if (item) {\n return item;\n } else {\n return [];\n }\n })\n .map((v, idx) => (\n select(v)}\n >\n ));\n } else {\n return [];\n }\n }, [providers, select]);\n\n return (\n \n \n {cards}\n \n \n \n );\n};\n\nexport const ProviderModal: FunctionComponent = () => {\n const payload = usePayload(ModalKey);\n\n const [staged, setChange] = useState({});\n\n const [info, setInfo] = useState>(payload ?? null);\n\n const onShow = useCallback(() => setInfo(payload ?? null), [payload]);\n\n useOnModalShow(ModalKey, onShow);\n\n const providers = useLatest(ProviderKey, isArray);\n\n const closeModal = useCloseModal();\n\n const updateGlobal = useMultiUpdate();\n\n const deletePayload = useCallback(() => {\n if (payload && providers) {\n const idx = providers.findIndex((v) => v === payload.key);\n if (idx !== -1) {\n const newProviders = [...providers];\n newProviders.splice(idx, 1);\n updateGlobal({ [ProviderKey]: newProviders });\n closeModal();\n }\n }\n }, [payload, providers, updateGlobal, closeModal]);\n\n const addProvider = useCallback(() => {\n if (info && providers) {\n const changes = { ...staged };\n\n // Add this provider if not exist\n if (providers.find((v) => v === info.key) === undefined) {\n const newProviders = [...providers, info.key];\n changes[ProviderKey] = newProviders;\n }\n\n updateGlobal(changes);\n closeModal();\n }\n }, [info, providers, staged, closeModal, updateGlobal]);\n\n const canSave = info !== null;\n\n const footer = useMemo(\n () => (\n \n \n \n \n ),\n [canSave, payload, deletePayload, addProvider]\n );\n\n const onSelect = useCallback((item: Nullable) => {\n if (item) {\n setInfo(item);\n } else {\n setInfo({\n key: \"\",\n description: \"Unknown Provider\",\n });\n }\n }, []);\n\n const options = useMemo[]>(\n () =>\n ProviderList.filter(\n (v) => providers?.find((p) => p === v.key) === undefined\n ).map((v) => ({\n label: v.name ?? capitalize(v.key),\n value: v,\n })),\n [providers]\n );\n\n const modification = useMemo(() => {\n if (info === null) {\n return null;\n }\n\n const defaultKey = info.defaultKey;\n const override = info.keyNameOverride ?? {};\n if (defaultKey === undefined) {\n return null;\n }\n\n const itemKey = info.key;\n\n const elements: JSX.Element[] = [];\n const checks: JSX.Element[] = [];\n\n for (const key in defaultKey) {\n const value = defaultKey[key];\n let visibleKey = key;\n\n if (visibleKey in override) {\n visibleKey = override[visibleKey];\n } else {\n visibleKey = capitalize(key);\n }\n\n if (isReactText(value)) {\n elements.push(\n \n \n \n );\n } else if (isBoolean(value)) {\n checks.push(\n \n );\n }\n }\n\n return (\n \n {elements}\n \n {checks}\n \n \n );\n }, [info]);\n\n return (\n \n \n \n \n \n v?.name ?? capitalize(v?.key ?? \"\")}\n onChange={onSelect}\n >\n \n \n \n \n {info?.description}\n \n \n {modification}\n \n \n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { Group, Input, SettingsProvider } from \"../components\";\nimport { ProviderModal, ProviderView } from \"./components\";\n\nconst SettingsProvidersView: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsProvidersView;\n","import { faArrowCircleRight, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { capitalize, isArray, isBoolean } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { FilesApi } from \"../../apis\";\nimport { ActionButton, FileBrowser, SimpleTable } from \"../../components\";\nimport {\n moviesEnabledKey,\n pathMappingsKey,\n pathMappingsMovieKey,\n seriesEnabledKey,\n} from \"../keys\";\nimport { Message } from \"./forms\";\nimport { useExtract, useLatest, useSingleUpdate } from \"./hooks\";\n\ntype SupportType = \"sonarr\" | \"radarr\";\n\nfunction getSupportKey(type: SupportType) {\n if (type === \"sonarr\") {\n return pathMappingsKey;\n } else {\n return pathMappingsMovieKey;\n }\n}\n\nfunction getEnabledKey(type: SupportType) {\n if (type === \"sonarr\") {\n return seriesEnabledKey;\n } else {\n return moviesEnabledKey;\n }\n}\n\ninterface PathMappingItem {\n from: string;\n to: string;\n}\n\ninterface TableProps {\n type: SupportType;\n}\n\nexport const PathMappingTable: FunctionComponent = ({ type }) => {\n const key = getSupportKey(type);\n const items = useLatest<[string, string][]>(key, isArray);\n\n const enabledKey = getEnabledKey(type);\n const enabled = useExtract(enabledKey, isBoolean);\n\n const update = useSingleUpdate();\n\n const updateRow = useCallback(\n (newItems: PathMappingItem[]) => {\n update(\n newItems.map((v) => [v.from, v.to]),\n key\n );\n },\n [key, update]\n );\n\n const addRow = useCallback(() => {\n if (items) {\n const newItems = [...items, [\"\", \"\"]];\n update(newItems, key);\n }\n }, [items, key, update]);\n\n const data = useMemo(\n () => items?.map((v) => ({ from: v[0], to: v[1] })) ?? [],\n [items]\n );\n\n const request = useMemo(() => {\n if (type === \"sonarr\") {\n return (path: string) => FilesApi.sonarr(path);\n } else {\n return (path: string) => FilesApi.radarr(path);\n }\n }, [type]);\n\n const updateCell = useCallback>(\n (row, item?: PathMappingItem) => {\n const newItems = [...data];\n if (item) {\n newItems[row.index] = item;\n } else {\n newItems.splice(row.index, 1);\n }\n updateRow(newItems);\n },\n [data, updateRow]\n );\n\n const columns = useMemo[]>(\n () => [\n {\n Header: capitalize(type),\n accessor: \"from\",\n Cell: ({ value, row, externalUpdate }) => (\n {\n const newItem = { ...row.original };\n newItem.from = path;\n externalUpdate && externalUpdate(row, newItem);\n }}\n >\n ),\n },\n {\n id: \"arrow\",\n className: \"text-center\",\n Cell: () => (\n \n ),\n },\n {\n Header: \"Bazarr\",\n accessor: \"to\",\n Cell: ({ value, row, externalUpdate }) => (\n FilesApi.bazarr(path)}\n onChange={(path) => {\n const newItem = { ...row.original };\n newItem.to = path;\n externalUpdate && externalUpdate(row, newItem);\n }}\n >\n ),\n },\n {\n id: \"action\",\n accessor: \"to\",\n Cell: ({ row, externalUpdate }) => (\n {\n externalUpdate && externalUpdate(row);\n }}\n >\n ),\n },\n ],\n [type, request]\n );\n\n if (enabled) {\n return (\n \n \n \n \n );\n } else {\n return (\n \n Path Mappings will be available after staged changes are saved\n \n );\n }\n};\n","import React, { FunctionComponent, useCallback } from \"react\";\nimport { InputGroup } from \"react-bootstrap\";\nimport {\n Check,\n Chips,\n CollapseBox,\n Group,\n Input,\n Message,\n SettingsProvider,\n Slider,\n Text,\n URLTestButton,\n} from \"../components\";\nimport { PathMappingTable } from \"../components/pathMapper\";\nimport { moviesEnabledKey } from \"../keys\";\n\ninterface Props {}\n\nconst SettingsRadarrView: FunctionComponent = () => {\n const baseUrlOverride = useCallback((settings: Settings) => {\n return settings.radarr.base_url?.slice(1) ?? \"\";\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n Hostname or IPv4 Address\n \n \n \n \n \n \n \n /\n \n \"/\" + v}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Movies with those tags (case sensitive) in Radarr will be\n excluded from automatic download of subtitles.\n \n \n \n \n \n Automatic download of subtitles will only happen for monitored\n movies in Radarr.\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsRadarrView;\n","export const seriesSyncOptions: SelectorOption[] = [\n { label: \"1 Minute\", value: 1 },\n { label: \"5 Minutes\", value: 5 },\n { label: \"15 Minutes\", value: 15 },\n { label: \"1 Hour\", value: 60 },\n { label: \"3 Hours\", value: 180 },\n];\n\nexport const episodesSyncOptions: SelectorOption[] = [\n { label: \"5 Minutes\", value: 5 },\n { label: \"15 Minutes\", value: 15 },\n { label: \"1 Hour\", value: 60 },\n { label: \"3 Hours\", value: 180 },\n { label: \"6 Hours\", value: 360 },\n];\n\nexport const moviesSyncOptions = episodesSyncOptions;\n\nexport const diskUpdateOptions: SelectorOption[] = [\n { label: \"Manually\", value: \"Manually\" },\n { label: \"Daily\", value: \"Daily\" },\n { label: \"Weekly\", value: \"Weekly\" },\n];\n\nexport const dayOptions: SelectorOption[] = [\n { label: \"Monday\", value: 0 },\n { label: \"Tuesday\", value: 1 },\n { label: \"Wednesday\", value: 2 },\n { label: \"Thursday\", value: 3 },\n { label: \"Friday\", value: 4 },\n { label: \"Saturday\", value: 5 },\n { label: \"Sunday\", value: 6 },\n];\n\nexport const upgradeOptions: SelectorOption[] = [\n { label: \"3 Hours\", value: 3 },\n { label: \"6 Hours\", value: 6 },\n { label: \"12 Hours\", value: 12 },\n { label: \"24 Hours\", value: 24 },\n];\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport {\n CollapseBox,\n Group,\n Input,\n Selector,\n SettingsProvider,\n} from \"../components\";\nimport {\n dayOptions,\n diskUpdateOptions,\n episodesSyncOptions,\n moviesSyncOptions,\n seriesSyncOptions,\n upgradeOptions,\n} from \"./options\";\n\nconst SettingsSchedulerView: FunctionComponent = () => {\n const timeOptions = useMemo(() => {\n return Array(24)\n .fill(null)\n .map>((_, idx) => ({\n label: `${idx}:00`,\n value: idx,\n }));\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n k === \"Weekly\"}>\n \n \n \n \n k === \"Daily\" || k === \"Weekly\"}>\n \n \n \n \n \n \n \n \n \n \n \n k === \"Weekly\"}>\n \n \n \n \n k === \"Daily\" || k === \"Weekly\"}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsSchedulerView;\n","export const seriesTypeOptions: SelectorOption[] = [\n { label: \"Standard\", value: \"standard\" },\n { label: \"Anime\", value: \"anime\" },\n { label: \"Daily\", value: \"daily\" },\n];\n","import React, { FunctionComponent, useCallback } from \"react\";\nimport { InputGroup } from \"react-bootstrap\";\nimport {\n Check,\n Chips,\n CollapseBox,\n Group,\n Input,\n Message,\n Selector,\n SettingsProvider,\n Slider,\n Text,\n URLTestButton,\n} from \"../components\";\nimport { PathMappingTable } from \"../components/pathMapper\";\nimport { seriesEnabledKey } from \"../keys\";\nimport { seriesTypeOptions } from \"../options\";\n\ninterface Props {}\n\nconst SettingsSonarrView: FunctionComponent = () => {\n const baseUrlOverride = useCallback((settings: Settings) => {\n return settings.sonarr.base_url?.slice(1) ?? \"\";\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n Hostname or IPv4 Address\n \n \n \n \n \n \n \n /\n \n \"/\" + v}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Episodes from series with those tags (case sensitive) in Sonarr\n will be excluded from automatic download of subtitles.\n \n \n \n \n \n Episodes from series with those types in Sonarr will be excluded\n from automatic download of subtitles.\n \n \n \n \n \n Automatic download of subtitles will only happen for monitored\n episodes in Sonarr.\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsSonarrView;\n","export const folderOptions: SelectorOption[] = [\n {\n label: \"AlongSide Media File\",\n value: \"current\",\n },\n {\n label: \"Relative Path to Media File\",\n value: \"relative\",\n },\n {\n label: \"Absolute Path\",\n value: \"absolute\",\n },\n];\n\nexport const antiCaptchaOption: SelectorOption[] = [\n {\n label: \"Anti-Captcha\",\n value: \"anti-captcha\",\n },\n {\n label: \"Death by Captcha\",\n value: \"death-by-captcha\",\n },\n];\n\nfunction buildColor(name: string) {\n return `color(name=${name})`;\n}\n\nexport const colorOptions: SelectorOption[] = [\n {\n label: \"White\",\n value: buildColor(\"white\"),\n },\n {\n label: \"Light Gray\",\n value: buildColor(\"lightgray\"),\n },\n {\n label: \"Red\",\n value: buildColor(\"red\"),\n },\n {\n label: \"Green\",\n value: buildColor(\"green\"),\n },\n {\n label: \"Yellow\",\n value: buildColor(\"yellow\"),\n },\n {\n label: \"Blue\",\n value: buildColor(\"blue\"),\n },\n {\n label: \"Magenta\",\n value: buildColor(\"magenta\"),\n },\n {\n label: \"Cyan\",\n value: buildColor(\"cyan\"),\n },\n {\n label: \"Black\",\n value: buildColor(\"black\"),\n },\n {\n label: \"Dark Red\",\n value: buildColor(\"darkred\"),\n },\n {\n label: \"Dark Green\",\n value: buildColor(\"darkgreen\"),\n },\n {\n label: \"Dark Yellow\",\n value: buildColor(\"darkyellow\"),\n },\n {\n label: \"Dark Blue\",\n value: buildColor(\"darkblue\"),\n },\n {\n label: \"Dark Magenta\",\n value: buildColor(\"darkmagenta\"),\n },\n {\n label: \"Dark Cyan\",\n value: buildColor(\"darkcyan\"),\n },\n {\n label: \"Dark Grey\",\n value: buildColor(\"darkgrey\"),\n },\n];\n","import React, { FunctionComponent } from \"react\";\nimport {\n Check,\n CollapseBox,\n Group,\n Input,\n Message,\n Selector,\n SettingsProvider,\n Slider,\n Text,\n} from \"../components\";\nimport { antiCaptchaOption, colorOptions, folderOptions } from \"./options\";\n\nconst subzeroOverride = (key: string) => {\n return (settings: Settings) => {\n return settings.general.subzero_mods?.includes(key) ?? false;\n };\n};\n\nconst subzeroColorOverride = (settings: Settings) => {\n return (\n settings.general.subzero_mods?.find((v) => v.startsWith(\"color\")) ?? null\n );\n};\n\nconst SettingsSubtitlesView: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n Choose the folder you wish to store/read the subtitles\n \n \n \n k !== \"\" && k !== \"current\"}>\n \n \n \n \n \n \n \n \n \n \n Schedule a task to upgrade subtitles previously downloaded by\n Bazarr.\n \n \n \n \n \n \n \n Number of days to go back in history to upgrade subtitles\n \n \n \n \n \n Enable or disable upgrade of manually downloaded or translated\n subtitles.\n \n \n \n \n \n \n \n \n \n (v === undefined ? \"None\" : v)}\n options={antiCaptchaOption}\n >\n \n Choose the anti-captcha provider you want to use\n \n \n \n \n \n \n Anti-Captcha.com\n \n \n \n \n \n \n \n \n DeathByCaptcha.com\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n When searching for subtitles, Bazarr will search less frequently to\n limit call to providers.\n \n \n \n \n \n Search multiple providers at once (Don't choose this on low powered\n devices)\n \n \n \n \n \n \n \n Use embedded subtitles in media files when determining missing\n ones.\n \n \n \n \n \n \n \n Ignores PGS Subtitles in Embedded Subtitles detection.\n \n \n \n \n \n Ignores VobSub Subtitles in Embedded Subtitles detection.\n \n \n \n \n \n Hide embedded subtitles for languages that are not currently\n desired.\n \n \n \n \n \n \n \n \n \n Re-encode downloaded Subtitles to UTF8. Should be left enabled in\n most case.\n \n \n \n \n \n Removes tags, text and characters from subtitles that are meant for\n hearing impaired people.\n \n \n \n \n \n Removes all possible style tags from the subtitle, such as font,\n bold, color etc.\n \n \n \n \n \n Fix issues that happen when a subtitle gets converted from bitmap to\n text through OCR.\n \n \n \n \n \n Fix common and whitespace/punctuation issues in subtitles.\n \n \n \n \n \n Tries to make subtitles that are completely uppercase readable.\n \n \n \n \n \n Adds color to your subtitles (for playback devices/software that\n don't ship their own color modes; only works for players that\n support color tags).\n \n \n \n \n \n Reverses the punctuation in right-to-left subtitles for problematic\n playback devices.\n \n \n \n \n \n \n \n \n \n \n \n Must be 4 digit octal\n \n \n \n \n \n \n \n \n Enable the automatic subtitles synchronization after downloading\n a subtitles.\n \n \n \n \n \n \n \n Do not actually sync the subtitles but generate a .tar.gz file\n to be able to open an issue for ffsubsync. This file will reside\n alongside the media file.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Enable the post-processing execution after downloading a\n subtitles.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Variables you can use in your command\n \n {\"{{directory}}\"} Full path of the episode file parent\n directory\n \n \n {\"{{episode}}\"} Full path of the episode file\n \n \n {\"{{episode_name}}\"} Filename of the episode without parent\n directory or extension\n \n \n {\"{{subtitles}}\"} Full path of the subtitles file\n \n \n {\"{{subtitles_language}}\"} Language of the subtitles file\n \n \n {\"{{subtitles_language_code2}}\"} 2-letter ISO-639 language\n code of the subtitles language\n \n \n {\"{{subtitles_language_code3}}\"} 3-letter ISO-639 language\n code of the subtitles language\n \n \n {\"{{episode_language}}\"} Audio language of the episode file\n \n \n {\"{{episode_language_code2}}\"} 2-letter ISO-639 language\n code of the episode audio language\n \n \n {\"{{episode_language_code3}}\"} 3-letter ISO-639 language\n code of the episode audio language\n \n \n {\"{{score}}\"} Score of the subtitle file\n \n \n {\"{{subtitle_id}}\"} Provider ID of the subtitle file\n \n \n {\"{{series_id}}\"} Sonarr series ID (Empty if movie)\n \n \n {\"{{episode_id}}\"} Sonarr episode ID or Radarr movie ID\n \n \n \n \n \n );\n};\n\nexport default SettingsSubtitlesView;\n","export const pageSizeOptions: SelectorOption[] = [\n {\n label: \"25\",\n value: 25,\n },\n {\n label: \"50\",\n value: 50,\n },\n {\n label: \"100\",\n value: 100,\n },\n {\n label: \"250\",\n value: 250,\n },\n {\n label: \"500\",\n value: 500,\n },\n {\n label: \"1000\",\n value: 1000,\n },\n];\n","import React, { FunctionComponent } from \"react\";\nimport { uiPageSizeKey } from \"../../@storage/local\";\nimport { Group, Input, Selector, SettingsProvider } from \"../components\";\nimport { pageSizeOptions } from \"./options\";\n\nconst SettingsUIView: FunctionComponent = () => {\n return (\n \n \n \n s.site.pageSize}\n >\n \n \n \n );\n};\n\nexport default SettingsUIView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { systemUpdateSettings } from \"../@redux/actions\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { useAutoUpdate } from \"../utilites/hooks\";\nimport General from \"./General\";\nimport Languages from \"./Languages\";\nimport Notifications from \"./Notifications\";\nimport Providers from \"./Providers\";\nimport Radarr from \"./Radarr\";\nimport Scheduler from \"./Scheduler\";\nimport Sonarr from \"./Sonarr\";\nimport Subtitles from \"./Subtitles\";\nimport UI from \"./UI\";\n\ninterface Props {}\n\nconst Router: FunctionComponent = () => {\n const update = useReduxAction(systemUpdateSettings);\n useAutoUpdate(update);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { BaseModal, BaseModalProps, usePayload } from \"../../components\";\n\ninterface Props extends BaseModalProps {}\n\nconst SystemLogModal: FunctionComponent = ({ ...modal }) => {\n const stack = usePayload(modal.modalKey);\n const result = useMemo(\n () =>\n stack?.split(\"\\\\n\").map((v, idx) => (\n

    \n {v}\n

    \n )),\n [stack]\n );\n return (\n \n
    \n        {result}\n      
    \n
    \n );\n};\n\nexport default SystemLogModal;\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n faBug,\n faCode,\n faExclamationCircle,\n faInfoCircle,\n faLayerGroup,\n faQuestion,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { isUndefined } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Column, Row } from \"react-table\";\nimport {\n ActionButton,\n DateFormatter,\n PageTable,\n useShowModal,\n} from \"../../components\";\nimport SystemLogModal from \"./modal\";\n\ninterface Props {\n logs: readonly System.Log[];\n}\n\nfunction mapTypeToIcon(type: System.LogType): IconDefinition {\n switch (type) {\n case \"DEBUG\":\n return faCode;\n case \"ERROR\":\n return faBug;\n case \"INFO\":\n return faInfoCircle;\n case \"WARNING\":\n return faExclamationCircle;\n default:\n return faQuestion;\n }\n}\n\nconst Table: FunctionComponent = ({ logs }) => {\n const showModal = useShowModal();\n const show = useCallback(\n (row: Row, text: string) =>\n showModal(\"system-log\", text),\n [showModal]\n );\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"type\",\n Cell: (row) => (\n \n ),\n },\n {\n Header: \"Message\",\n accessor: \"message\",\n },\n {\n Header: \"Time\",\n accessor: \"timestamp\",\n className: \"text-nowrap\",\n Cell: (row) => {row.value},\n },\n {\n accessor: \"exception\",\n Cell: ({ row, value, externalUpdate }) => {\n if (!isUndefined(value)) {\n return (\n externalUpdate && externalUpdate(row, value)}\n >\n );\n } else {\n return null;\n }\n },\n },\n ],\n []\n );\n\n return (\n \n \n \n \n );\n};\n\nexport default Table;\n","import { faDownload, faSync, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateLogs } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { SystemApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useBaseUrl } from \"../../utilites\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst SystemLogsView: FunctionComponent = () => {\n const logs = useReduxStore(({ system }) => system.logs);\n const update = useReduxAction(systemUpdateLogs);\n useAutoUpdate(update);\n\n const [resetting, setReset] = useState(false);\n\n const baseUrl = useBaseUrl(true);\n\n const download = useCallback(() => {\n window.open(`${baseUrl}bazarr.log`);\n }, [baseUrl]);\n\n return (\n \n {(data) => (\n \n \n Logs - Bazarr (System)\n \n \n \n Refresh\n \n \n Download\n \n {\n setReset(true);\n SystemApi.deleteLogs().finally(() => {\n setReset(false);\n update();\n });\n }}\n >\n Empty\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SystemLogsView;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Column } from \"react-table\";\nimport { SimpleTable } from \"../../components\";\n\ninterface Props {\n providers: readonly System.Provider[];\n}\n\nconst Table: FunctionComponent = (props) => {\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"name\",\n },\n {\n Header: \"Status\",\n accessor: \"status\",\n },\n {\n Header: \"Next Retry\",\n accessor: \"retry\",\n },\n ],\n []\n );\n\n return ;\n};\n\nexport default Table;\n","import { faSync, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { useProviders } from \"../../@redux/hooks\";\nimport { ProvidersApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst SystemProvidersView: FunctionComponent = () => {\n const [providers, update] = useProviders();\n useAutoUpdate(update);\n\n return (\n \n {(data) => (\n \n \n Providers - Bazarr (System)\n \n \n \n Refresh\n \n ProvidersApi.reset()}\n onSuccess={update}\n >\n Reset\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SystemProvidersView;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge, Card, Col, Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateReleases } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { AsyncStateOverlay } from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\n\ninterface Props {}\n\nconst ReleasesView: FunctionComponent = () => {\n const releases = useReduxStore(({ system }) => system.releases);\n const update = useReduxAction(systemUpdateReleases);\n useAutoUpdate(update);\n\n return (\n \n {(item) => (\n \n \n Releases - Bazarr (System)\n \n \n {item.map((v, idx) => (\n \n \n \n ))}\n \n \n )}\n \n );\n};\n\nconst headerBadgeCls = \"mr-2\";\n\nconst InfoElement: FunctionComponent = ({\n name,\n body,\n date,\n prerelease,\n current,\n}) => {\n const infos = useMemo(\n () => body.map((v) => v.replace(/(\\s\\[.*?\\])\\(.*?\\)/, \"\")),\n [body]\n );\n return (\n \n \n {name}\n \n {date}\n \n \n {prerelease ? \"Development\" : \"Master\"}\n
    \n \n \n \n \n From newest to oldest:\n {infos.map((v, idx) => (\n
  • {v}
  • \n ))}\n
    \n
    \n \n );\n};\n\nexport default ReleasesView;\n","import { IconDefinition } from \"@fortawesome/fontawesome-common-types\";\nimport {\n faDiscord,\n faGithub,\n faWikipediaW,\n} from \"@fortawesome/free-brands-svg-icons\";\nimport { faPaperPlane } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Col, Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateStatus } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\n\ninterface InfoProps {\n title: string;\n children: React.ReactNode;\n}\n\nfunction CRow(props: InfoProps): JSX.Element {\n const { title, children } = props;\n return (\n \n \n {title}\n \n {children}\n \n );\n}\n\ninterface IconProps {\n icon: IconDefinition;\n link: string;\n children: string;\n}\n\nfunction Label(props: IconProps): JSX.Element {\n const { icon, link, children } = props;\n return (\n \n \n \n {children}\n \n \n );\n}\n\nconst InfoContainer: FunctionComponent<{ title: string }> = ({\n title,\n children,\n}) => {\n return (\n \n

    {title}

    \n
    \n {children}\n
    \n );\n};\n\ninterface Props {}\n\nconst SystemStatusView: FunctionComponent = () => {\n const status = useReduxStore((s) => s.system.status.data);\n const update = useReduxAction(systemUpdateStatus);\n useAutoUpdate(update);\n\n return (\n \n \n Status - Bazarr (System)\n \n \n \n \n {status?.bazarr_version}\n \n \n {status?.sonarr_version}\n \n \n {status?.radarr_version}\n \n \n {status?.operating_system}\n \n \n {status?.python_version}\n \n \n {status?.bazarr_directory}\n \n \n {status?.bazarr_config_directory}\n \n \n \n \n \n \n \n \n \n \n Bazarr on Github\n \n \n \n \n Bazarr Wiki\n \n \n \n \n \n \n \n \n );\n};\n\nexport default SystemStatusView;\n","import { faSync } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Column } from \"react-table\";\nimport { systemRunTasks } from \"../../@redux/actions\";\nimport { useReduxAction } from \"../../@redux/hooks/base\";\nimport { SystemApi } from \"../../apis\";\nimport { AsyncButton, SimpleTable } from \"../../components\";\n\ninterface Props {\n tasks: readonly System.Task[];\n}\n\nconst Table: FunctionComponent = ({ tasks }) => {\n const run = useReduxAction(systemRunTasks);\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"name\",\n className: \"text-nowrap\",\n },\n {\n Header: \"Interval\",\n accessor: \"interval\",\n className: \"text-nowrap\",\n },\n {\n Header: \"Next Execution\",\n accessor: \"next_run_in\",\n className: \"text-nowrap\",\n },\n {\n accessor: \"job_running\",\n Cell: (row) => {\n const { job_id } = row.row.original;\n return (\n SystemApi.runTask(job_id)}\n onSuccess={() => run(job_id)}\n variant=\"light\"\n size=\"sm\"\n disabled={row.value}\n >\n \n \n );\n },\n },\n ],\n [run]\n );\n\n return ;\n};\n\nexport default Table;\n","import { faSync } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateTasks } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst SystemTasksView: FunctionComponent = () => {\n const tasks = useReduxStore((s) => s.system.tasks);\n const update = useReduxAction(systemUpdateTasks);\n\n // TODO: Use Websocket\n useAutoUpdate(update, 10 * 1000);\n\n return (\n \n {(data) => (\n \n \n Tasks - Bazarr (System)\n \n \n \n Refresh\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SystemTasksView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport Logs from \"./Logs\";\nimport Providers from \"./Providers\";\nimport Releases from \"./Releases\";\nimport Status from \"./Status\";\nimport Tasks from \"./Tasks\";\n\nconst Router: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { capitalize } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { ContentHeader, PageTable } from \"../../components\";\nimport { buildOrderList, GetItemId } from \"../../utilites\";\n\ninterface Props {\n type: \"movies\" | \"series\";\n columns: Column[];\n state: Readonly>>;\n loader: (start: number, length: number) => void;\n update: (id?: number) => void;\n searchAll: () => Promise;\n}\n\nconst GenericWantedView: FunctionComponent = ({\n type,\n columns,\n state,\n update,\n loader,\n searchAll,\n}) => {\n const typeName = capitalize(type);\n\n const data = useMemo(() => buildOrderList(state.data), [state.data]);\n\n const updater = useCallback>(\n (row, id: number) => {\n update(id);\n },\n [update]\n );\n\n return (\n \n \n Wanted {typeName} - Bazarr\n \n \n void}\n icon={faSearch}\n >\n Search All\n \n \n \n \n \n \n );\n};\n\nexport default GenericWantedView;\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { movieUpdateWantedByRange } from \"../../@redux/actions\";\nimport { useWantedMovies } from \"../../@redux/hooks\";\nimport { useReduxAction } from \"../../@redux/hooks/base\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText } from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport GenericWantedView from \"../generic\";\n\ninterface Props {}\n\nconst WantedMoviesView: FunctionComponent = () => {\n const [movies, update] = useWantedMovies();\n\n const loader = useReduxAction(movieUpdateWantedByRange);\n\n const searchAll = useCallback(\n () => MoviesApi.action({ action: \"search-wanted\" }),\n []\n );\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"title\",\n Cell: (row) => {\n const target = `/movies/${row.row.original.radarrId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Missing\",\n accessor: \"missing_subtitles\",\n Cell: ({ row, value, externalUpdate }) => {\n const wanted = row.original;\n const hi = wanted.hearing_impaired;\n const movieid = wanted.radarrId;\n\n return value.map((item, idx) => (\n \n MoviesApi.downloadSubtitles(movieid, {\n language: item.code2,\n hi,\n forced: false,\n })\n }\n onSuccess={() => externalUpdate && externalUpdate(row, movieid)}\n >\n \n \n \n ));\n },\n },\n ],\n []\n );\n\n return (\n []}\n state={movies}\n update={update}\n loader={loader}\n searchAll={searchAll}\n >\n );\n};\n\nexport default WantedMoviesView;\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { seriesUpdateWantedByRange } from \"../../@redux/actions\";\nimport { useWantedSeries } from \"../../@redux/hooks\";\nimport { useReduxAction } from \"../../@redux/hooks/base\";\nimport { EpisodesApi, SeriesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText } from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport GenericWantedView from \"../generic\";\n\ninterface Props {}\n\nconst WantedSeriesView: FunctionComponent = () => {\n const [series, update] = useWantedSeries();\n\n const loader = useReduxAction(seriesUpdateWantedByRange);\n\n const searchAll = useCallback(\n () => SeriesApi.action({ action: \"search-wanted\" }),\n []\n );\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"seriesTitle\",\n Cell: (row) => {\n const target = `/series/${row.row.original.sonarrSeriesId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode_number\",\n },\n {\n accessor: \"episodeTitle\",\n },\n {\n Header: \"Missing\",\n accessor: \"missing_subtitles\",\n Cell: ({ row, externalUpdate: update, value }) => {\n const wanted = row.original;\n const hi = wanted.hearing_impaired;\n const seriesid = wanted.sonarrSeriesId;\n const episodeid = wanted.sonarrEpisodeId;\n\n return value.map((item, idx) => (\n \n EpisodesApi.downloadSubtitles(seriesid, episodeid, {\n language: item.code2,\n hi,\n forced: false,\n })\n }\n onSuccess={() => update && update(row, episodeid)}\n >\n \n \n \n ));\n },\n },\n ],\n []\n );\n\n return (\n []}\n state={series}\n update={update}\n loader={loader}\n searchAll={searchAll}\n >\n );\n};\n\nexport default WantedSeriesView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport Movies from \"./Movies\";\nimport Series from \"./Series\";\n\nconst Router: FunctionComponent = () => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n return (\n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default Router;\n","import React, { FunctionComponent, useEffect, useMemo } from \"react\";\nimport { Redirect, Route, Switch, useHistory } from \"react-router-dom\";\nimport EmptyPage, { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport BlacklistRouter from \"../Blacklist/Router\";\nimport HistoryRouter from \"../History/Router\";\nimport MovieRouter from \"../Movies/Router\";\nimport SeriesRouter from \"../Series/Router\";\nimport SettingRouter from \"../Settings/Router\";\nimport SystemRouter from \"../System/Router\";\nimport { ScrollToTop } from \"../utilites\";\nimport WantedRouter from \"../Wanted/Router\";\n\nconst Router: FunctionComponent<{ className?: string }> = ({ className }) => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n const redirectPath = useMemo(() => {\n if (sonarr) {\n return \"/series\";\n } else if (radarr) {\n return \"/movies\";\n } else {\n return \"/settings\";\n }\n }, [sonarr, radarr]);\n\n const history = useHistory();\n\n useEffect(() => {\n ScrollToTop();\n }, [history.location]);\n\n return (\n
    \n \n \n \n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n\nexport default Router;\n","import { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { Alert, Button, Container, Row } from \"react-bootstrap\";\nimport { Redirect } from \"react-router-dom\";\nimport { bootstrap as ReduxBootstrap } from \"../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../@redux/hooks/base\";\nimport { useNotification } from \"../@redux/hooks/site\";\nimport { LoadingIndicator, ModalProvider } from \"../components\";\nimport Sidebar from \"../Sidebar\";\nimport { Reload, useHasUpdateInject } from \"../utilites\";\nimport Header from \"./Header\";\nimport NotificationContainer from \"./notifications\";\nimport Router from \"./Router\";\n\n// Sidebar Toggle\nexport const SidebarToggleContext = React.createContext<() => void>(() => {});\n\ninterface Props {}\n\nconst App: FunctionComponent = () => {\n const bootstrap = useReduxAction(ReduxBootstrap);\n\n const { initialized, auth } = useReduxStore((s) => s.site);\n\n const notify = useNotification(\"has-update\", 10);\n\n // Has any update?\n const hasUpdate = useHasUpdateInject();\n useEffect(() => {\n if (initialized) {\n if (hasUpdate) {\n notify({\n type: \"info\",\n message: \"A new version of Bazarr is ready, restart is required\",\n // TODO: Restart action\n });\n }\n }\n }, [initialized, hasUpdate, notify]);\n\n useEffect(() => {\n bootstrap();\n }, [bootstrap]);\n\n const [sidebar, setSidebar] = useState(false);\n const toggleSidebar = useCallback(() => setSidebar(!sidebar), [sidebar]);\n\n if (!auth) {\n return ;\n }\n\n if (typeof initialized === \"boolean\" && initialized === false) {\n return (\n \n Please wait\n \n );\n } else if (typeof initialized === \"string\") {\n return {initialized};\n }\n\n return (\n \n \n
    \n
    \n \n \n \n \n \n \n \n
    \n );\n};\n\nconst InitializationErrorView: FunctionComponent<{\n children: string;\n}> = ({ children }) => {\n return (\n \n \n
    \n \n {children}\n
    \n \n \n
    \n );\n};\n\nexport default App;\n","import React, { FunctionComponent, useCallback, useState } from \"react\";\nimport {\n Alert,\n Button,\n Card,\n Collapse,\n Form,\n Image,\n Spinner,\n} from \"react-bootstrap\";\nimport { Redirect } from \"react-router-dom\";\nimport { siteAuthSuccess } from \"../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../@redux/hooks/base\";\nimport logo from \"../@static/logo128.png\";\nimport { SystemApi } from \"../apis\";\nimport \"./style.scss\";\n\ninterface Props {}\n\nconst AuthPage: FunctionComponent = () => {\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [error, setError] = useState(\"\");\n\n const [updating, setUpdate] = useState(false);\n\n const updateError = useCallback((msg: string) => {\n setError(msg);\n setTimeout(() => setError(\"\"), 2000);\n }, []);\n\n const onSuccess = useReduxAction(siteAuthSuccess);\n\n const authState = useReduxStore((s) => s.site.auth);\n\n const onError = useCallback(() => {\n setUpdate(false);\n updateError(\"Login Failed\");\n }, [updateError]);\n\n if (authState) {\n return ;\n }\n\n return (\n
    \n \n {\n e.preventDefault();\n if (!updating) {\n setUpdate(true);\n SystemApi.login(username, password)\n .then(onSuccess)\n .catch(onError);\n }\n }}\n >\n \n \n \n \n \n setUsername(e.currentTarget.value)}\n >\n \n \n setPassword(e.currentTarget.value)}\n >\n \n \n
    \n \n {error}\n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n );\n};\n\nexport default AuthPage;\n","export default \"data:image/png;base64,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\"","import \"@fontsource/roboto/300.css\";\nimport React, { FunctionComponent } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { Route, Switch } from \"react-router\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport store from \"./@redux/store\";\nimport \"./@scss/index.scss\";\nimport App from \"./App\";\nimport Auth from \"./Auth\";\nimport { useBaseUrl } from \"./utilites\";\n\nconst MainRouter: FunctionComponent = () => {\n const baseUrl = useBaseUrl();\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nReactDOM.render(\n \n {/* TODO: Enabled Strict Mode after react-bootstrap upgrade to bootstrap 5 */}\n {/* */}\n \n {/* */}\n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["@redux/constants/index.ts","utilites/validate.ts","utilites/hooks.ts","utilites/index.ts","@redux/reducers/mapper.ts","@redux/reducers/movie.ts","@redux/reducers/series.ts","@storage/local.ts","@redux/reducers/site.ts","@redux/reducers/system.ts","@redux/reducers/index.ts","@redux/store/index.ts","apis/badges.ts","apis/base.ts","apis/episodes.ts","apis/files.ts","apis/history.ts","apis/movies.ts","apis/providers.ts","apis/series.ts","apis/subtitles.ts","apis/system.ts","apis/utils.ts","apis/index.ts","@redux/actions/factory.ts","@redux/actions/system.ts","@redux/actions/site.ts","@redux/actions/movie.ts","@redux/actions/providers.ts","@redux/actions/series.ts","@redux/hooks/base.ts","@redux/hooks/index.ts","@redux/hooks/site.ts","components/inputs/Chips.tsx","components/inputs/FileBrowser.tsx","components/inputs/FileForm.tsx","components/inputs/Selector.tsx","components/async.tsx","components/inputs/Slider.tsx","components/buttons.tsx","components/ContentHeader/Button.tsx","components/ContentHeader/Group.tsx","components/ContentHeader/index.tsx","components/LanguageSelector.tsx","components/modals/provider.tsx","components/modals/SeriesUploadModal.tsx","components/modals/BaseModal.tsx","generic/blacklist.tsx","components/modals/HistoryModal.tsx","components/modals/ItemEditorModal.tsx","components/modals/MovieUploadModal.tsx","components/tables/plugins/useAsyncPagination.tsx","components/tables/plugins/useCustomSelection.tsx","components/tables/plugins/useDefaultSettings.tsx","components/modals/SubtitleToolModal.tsx","components/modals/toolOptions.ts","components/SearchBar.tsx","components/tables/BaseTable.tsx","components/tables/SimpleTable.tsx","components/tables/GroupTable.tsx","components/index.tsx","components/tables/PageControl.tsx","components/tables/PageTable.tsx","@static/logo64.png","Sidebar/items.tsx","Sidebar/index.tsx","Sidebar/list.ts","App/Header.tsx","App/notifications/index.tsx","404/index.tsx","Blacklist/Movies/table.tsx","Blacklist/Movies/index.tsx","Blacklist/Series/table.tsx","Blacklist/Series/index.tsx","Blacklist/Router.tsx","History/generic/index.tsx","History/Movies/index.tsx","History/Series/index.tsx","History/Statistics/options.ts","History/Statistics/index.tsx","History/Router.tsx","generic/BaseItemView/table.tsx","generic/BaseItemView/index.tsx","Movies/index.tsx","components/modals/ManualSearchModal.tsx","generic/ItemOverview.tsx","Movies/Detail/table.tsx","Movies/Detail/index.tsx","Movies/Router.tsx","Series/index.tsx","Series/Episodes/components.tsx","Series/Episodes/table.tsx","Series/Episodes/index.tsx","Series/Router.tsx","Settings/keys.ts","Settings/components/provider.tsx","Settings/components/hooks.ts","Settings/components/collapse.tsx","Settings/components/container.tsx","Settings/components/forms.tsx","Settings/components/index.tsx","Settings/General/options.ts","Settings/General/index.tsx","Settings/Languages/components.tsx","Settings/Languages/options.ts","Settings/Languages/modal.tsx","Settings/Languages/table.tsx","Settings/Languages/index.tsx","Settings/Notifications/components.tsx","Settings/Notifications/index.tsx","Settings/Providers/list.ts","Settings/Providers/components.tsx","Settings/Providers/index.tsx","Settings/components/pathMapper.tsx","Settings/Radarr/index.tsx","Settings/Scheduler/options.ts","Settings/Scheduler/index.tsx","Settings/options.ts","Settings/Sonarr/index.tsx","Settings/Subtitles/options.ts","Settings/Subtitles/index.tsx","Settings/UI/options.ts","Settings/UI/index.tsx","Settings/Router.tsx","System/Logs/modal.tsx","System/Logs/table.tsx","System/Logs/index.tsx","System/Providers/table.tsx","System/Providers/index.tsx","System/Releases/index.tsx","System/Status/index.tsx","System/Tasks/table.tsx","System/Tasks/index.tsx","System/Router.tsx","Wanted/generic/index.tsx","Wanted/Movies/index.tsx","Wanted/Series/index.tsx","Wanted/Router.tsx","App/Router.tsx","App/index.tsx","Auth/index.tsx","@static/logo128.png","index.tsx"],"names":["PROVIDER_UPDATE_LIST","SYSTEM_UPDATE_LANGUAGES_LIST","SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST","SYSTEM_UPDATE_STATUS","SYSTEM_UPDATE_TASKS","SYSTEM_UPDATE_LOGS","SYSTEM_UPDATE_RELEASES","SYSTEM_UPDATE_SETTINGS","SYSTEM_RUN_TASK","SERIES_UPDATE_WANTED_RANGE","SERIES_UPDATE_WANTED_LIST","SERIES_UPDATE_EPISODE_LIST","SERIES_UPDATE_HISTORY_LIST","SERIES_UPDATE_INFO","SERIES_UPDATE_RANGE","SERIES_UPDATE_BLACKLIST","MOVIES_UPDATE_WANTED_RANGE","MOVIES_UPDATE_WANTED_LIST","MOVIES_UPDATE_HISTORY_LIST","MOVIES_UPDATE_INFO","MOVIES_UPDATE_RANGE","MOVIES_UPDATE_BLACKLIST","SITE_AUTH_SUCCESS","SITE_NEED_AUTH","SITE_INITIALIZED","SITE_INITIALIZE_FAILED","SITE_SAVE_LOCALSTORAGE","SITE_NOTIFICATIONS_ADD","SITE_NOTIFICATIONS_REMOVE","SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP","SITE_SIDEBAR_UPDATE","SITE_BADGE_UPDATE","SITE_OFFLINE_UPDATE","isReactText","v","isString","isNumber","isNullable","isNull","isUndefined","isNonNullable","isMovie","useBaseUrl","slash","url","window","Bazarr","baseUrl","endsWith","useAutoUpdate","action","interval","useEffect","hd","undefined","setInterval","clearInterval","useWhenLoadingFinish","state","callback","curr","expected","onSame","onDiff","useState","setPrevious","prev","useWatcher","updating","updateAsyncState","promise","setter","defaultVal","data","then","catch","err","error","GetItemId","item","radarrId","sonarrEpisodeId","isSeries","sonarrSeriesId","buildOrderList","items","order","flatMap","mergeArray","olds","news","comparer","list","filter","forEach","idx","findIndex","n","push","BuildKey","args","join","Reload","location","reload","ScrollToTop","scrollTo","defVal","payload","loading","updateOrderIdState","id","total","parameters","start","length","idState","reduce","dataOrder","map","newItems","newOrder","countDist","Array","fill","splice","reducer","handleActions","wantedMovieList","historyList","movieList","blacklist","wantedEpisodesList","stateItems","episodeList","seriesList","uiPageSizeKey","storage","parseInt","localStorage","getItem","setItem","toString","updateLocalStorage","pageSize","auth","initialized","settings","key","value","alerts","notifications","timestamp","sidebar","next","badges","throw","offline","movies","episodes","providers","languages","enabledLanguage","enabled","languagesProfiles","status","tasks","job_id","job_running","logs","releases","combineReducers","system","series","movie","site","plugins","trunk","store","createStore","rootReducer","applyMiddleware","path","params","apis","axios","get","a","Promise","resolve","reject","result","BaseApi","prefix","this","object","form","FormData","val","append","formdata","createFormdata","post","patch","delete","seriesid","reason","episodeid","res","all","name","browse","timeframe","provider","language","radarrid","profileid","names","filenames","username","password","performAction","taskid","protocol","query","recreateAxios","apiKey","apikey","Axios","create","baseURL","defaults","headers","common","source","initialize","CancelToken","interceptors","request","use","config","cancelToken","token","response","resp","onOnline","handleError","onOffline","message","reduxStore","getState","dispatch","siteUpdateOffline","code","siteRedirectToAuth","gLimiter","Map","gArgs","asyncActionFactory","type","previousArgs","date","Date","isEqual","previousExec","getTime","set","createAsyncAction","combineActionFactory","dispatchers","fn","createCombineAction","combineAsyncActionFactory","promises","createAsyncCombineAction","callbackActionFactory","success","createCallbackAction","systemUpdateLanguagesAll","systemUpdateLanguages","systemUpdateLanguagesProfiles","SystemApi","languagesProfileList","systemUpdateStatus","systemUpdateTasks","getTasks","systemRunTasks","systemUpdateLogs","systemUpdateReleases","systemUpdateSettings","systemUpdateSettingsAll","bootstrap","siteInitialized","siteInitializeFailed","createAction","siteAuthSuccess","badgeUpdateAll","BadgesApi","siteSaveLocalstorage","siteAddError","siteRemoveError","siteRemoveErrorByTimestamp","siteChangeSidebar","movieUpdateWantedList","MoviesApi","wantedBy","movieUpdateWantedByRange","wanted","movieUpdateWantedBy","movieUpdateHistoryList","history","movieUpdateByRange","moviesBy","movieUpdateInfo","movieUpdateInfoAll","movieUpdateBlacklist","providerUpdateList","ProvidersApi","providerUpdateAll","seriesUpdateWantedList","EpisodesApi","seriesUpdateBy","SeriesApi","episodeUpdateBy","bySeriesId","seriesUpdateByRange","seriesBy","seriesUpdateWantedByRange","seriesUpdateWantedBy","episodeUpdateBySeriesId","seriesUpdateHistoryList","seriesUpdateInfoAll","seriesUpdateBlacklist","useReduxStore","selector","useSelector","useReduxAction","useDispatch","useCallback","useReduxActionWith","callbackAction","stateBuilder","t","d","useSystemSettings","s","useLanguageProfiles","useProfileBy","profiles","useMemo","find","profileId","useLanguages","useLanguageGetter","code2","useProfileItems","profile","getter","hi","forced","useRawSeries","useSerieBy","updateSerie","updateEpisodes","isNaN","useEpisodesBy","seriesId","useRawMovies","useMovieBy","updateMovies","useProviders","useNotification","sec","add","remove","msg","setTimeout","useIsSonarrEnabled","general","use_sonarr","useIsRadarrEnabled","use_radarr","SplitKeys","Chips","defaultValue","disabled","onChange","chips","setChips","input","useRef","addChip","newChips","removeChip","clearInput","current","onKeyUp","event","pressed","currentTarget","includes","preventDefault","onKeyDown","onBlur","chipElements","title","className","onClick","ref","backKey","getLastSeparator","lastIndexOf","extractPath","raw","slice","FileBrowser","load","drop","show","canShow","text","setText","setPath","setLoading","previous","tree","setTree","requestItems","Dropdown","Item","Spinner","size","animation","elements","startsWith","eventKey","icon","children","faFolder","faFile","Header","faReply","Divider","newPath","finally","onSelect","focus","onToggle","open","_","meta","Toggle","as","Form","Control","placeholder","e","Menu","style","maxHeight","overflowY","FileForm","files","emptyText","multiple","fileList","setFileList","label","File","custom","target","file","Selector","props","clearable","options","nameFromItems","wrapper","defaultWrapper","valueWrapper","isLoading","isSearchable","isMulti","closeMenuOnSelect","isClearable","isDisabled","classNamePrefix","isArray","RequestState","Slider","min","max","tooltips","onAfterChange","step","handle","left","offset","SliderTooltips","cls","tipsCls","AsyncStateOverlay","exist","missing","onError","Container","Alert","variant","Heading","faExclamationTriangle","PromiseOverlay","AsyncSelector","AsyncButton","propChildren","onSuccess","noReset","button","Invalid","setState","setHandle","Error","Success","clearTimeout","click","faCircleNotch","spin","faCheck","faTimes","ActionBadge","Badge","ActionButton","destructive","other","ActionButtonItem","Fragment","width","ContentHeaderButton","updatingIcon","displayIcon","faSpinner","ContentHeaderGroup","pos","ContentHeader","childItem","scroll","rowCls","Row","Button","Group","setUpdate","LanguageSelector","l","ModalContext","React","createContext","PayloadContext","p","useShowModal","useContext","keys","setKeys","payloads","setPayloads","useCloseModal","newKey","pop","newPayload","useIsModalShow","useOnModalShow","isShow","usePayload","State","ModalProvider","setKey","setPayload","Provider","BaseModal","closeable","modalKey","footer","closeModal","canClose","Modal","centered","onHide","backdrop","closeButton","Body","Footer","hidden","BlacklistButton","update","subs_id","subtitles_path","blacklisted","faFileExcel","MovieHistoryModal","modal","setHistory","columns","accessor","Cell","row","long","original","addBlacklist","PageTable","EpisodeHistoryModal","episode","Editor","submit","profileOptions","setId","setUpdating","itemId","fluid","Label","audio_language","MovieUploadModal","availableLanguages","uploading","setUpload","setLanguage","defaultLanguage","useLanguageBy","setFile","setForced","canUpload","uploadSubtitles","lang","Check","defaultChecked","checked","SeriesUploadModal","pending","setPending","processState","setProcessState","filelist","states","info","subState","Valid","infos","instance","didCheck","subtitles","Warning","Update","checkEpisodes","SubtitlesApi","results","episodeMap","ep","season","filename","pd","updateLanguage","setFiles","f","uploadStates","every","tableShow","loose","color","msgs","faInfoCircle","messages","externalUpdate","change","newInfo","faTrash","updateItem","newPending","index","SimpleTable","responsive","pluginName","ActionLoadingChange","useAsyncPagination","hooks","stateReducers","useInstance","useOptions","pageToLoad","needLoadingScreen","asyncState","pageIndex","pageStart","pageEnd","isInitializedError","isLoadingError","manualPagination","initialState","asyncLoader","asyncId","rows","nextPage","previousPage","gotoPage","ensurePluginOrder","totalCount","pageCount","Math","ceil","setPageToLoad","newGoto","updater","page","newPrevious","newNext","newPages","num","Object","assign","Checkbox","forwardRef","indeterminate","idIn","rest","defaultRef","resolvedRef","useCustomSelection","visibleColumnsDeps","deps","isSelecting","visibleColumns","selectedRowIds","getToggleAllRowsSelectedProps","getToggleRowSelectedProps","selectHide","useDefaultSettings","autoResetPage","availableTranslation","af","sq","am","ar","hy","az","eu","be","bn","bs","bg","ca","ceb","ny","co","hr","cs","da","nl","en","eo","et","tl","fi","fr","fy","gl","ka","de","el","gu","ht","ha","haw","iw","hmn","hu","is","ig","ga","it","ja","jw","kn","kk","km","ko","ku","ky","lo","la","lv","lt","lb","mk","mg","ms","ml","mt","mi","mr","mn","my","ne","no","ps","fa","pl","pt","pa","ro","ru","sm","gd","sr","st","sn","sd","si","sk","sl","so","es","su","sw","sv","tg","ta","te","th","tr","uk","ur","uz","vi","cy","xh","yi","yo","zu","fil","he","colorOptions","StateIcon","faQuestionCircle","Pending","faClock","Processing","Done","AddColorModal","process","selection","setSelection","FrameRateModal","from","setFrom","to","setTo","canSave","submodProcessFrameRate","InputGroup","parseFloat","AdjustTimesModal","isPlus","setPlus","setOffset","updateOffset","newOffset","some","h","m","Prepend","faPlus","faMinus","TranslateModal","available","selectedLanguage","STM","selections","setSelections","closeUntil","useCloseModalUntil","override","modify","showModal","stateList","getIdAndType","_language","useRowSelect","ButtonGroup","k","faPlay","split","faDeaf","faCode","faImage","faMagic","faTextHeight","faExchangeAlt","faPaintBrush","faFilm","faLanguage","SearchBar","onSearch","onFocus","setResults","useHistory","search","debounceSearch","throttle","clear","its","link","useStyleAndOptions","hoverable","striped","borderless","small","hideHeader","headersRenderer","rowRenderer","DefaultHeaderRenderer","col","getHeaderProps","render","DefaultRowRenderer","getRowProps","cells","cell","column","getCellProps","BaseTable","prepareRow","tableProps","tableBodyProps","colCount","empty","hRenderer","rRenderer","hover","headerGroup","getHeaderGroupProps","colSpan","useTable","getTableProps","getTableBodyProps","headerGroups","renderCell","isGrouped","getToggleRowExpandedProps","canExpand","isAggregated","renderRow","rotation","isExpanded","faChevronCircleRight","isPlaceholder","renderHeaders","GroupTable","HistoryAction","useGroupBy","useSortBy","useExpanded","PageControl","count","canPrevious","canNext","goto","loadState","end","pageButtons","abs","Pagination","active","arr","Ellipsis","Col","Prev","Next","async","autoScroll","canSelect","allPlugins","usePagination","canNextPage","canPreviousPage","setPageSize","globalPageSize","selecting","orderIdStateValidater","HistoryIcon","Delete","Download","faDownload","Manual","faUser","Sync","Upgrade","faRecycle","Upload","faCloudUploadAlt","MessageIcon","iconProps","popover","Popover","Content","OverlayTrigger","overlay","LoadingIndicator","DateFormatter","format","moment","fromNow","LanguageText","HiddenKeysContext","BadgesContext","LinkItem","toggle","SidebarToggleContext","badgeValue","badge","activeClassName","CollapseItem","hiddenKeys","toggleSidebar","itemKey","toLowerCase","sidebarKey","updateSidebar","useUpdateSidebar","child","childValue","collapseBoxClass","childrenElems","hiddenKey","ch","ListGroupItem","Collapse","in","DisplayItem","SonarrDisabledKey","RadarrDisabledKey","SidebarList","faCogs","faLaptop","Sidebar","Wanted","Series","Movies","System","Providers","sonarrEnabled","radarrEnabled","pathname","len","sidebarItems","Image","alt","src","logo","height","ListGroup","SearchItem","year","setNeedAuth","canLogout","dropdown","alignRight","restart","shutdown","logout","reconnecting","setReconnect","reconnect","Navbar","Brand","href","faBars","noGutters","xs","faHeart","faNetworkWired","NotificationToast","removeNotification","Toast","onClose","capitalize","NotificationContainer","RouterEmptyPath","EmptyPage","fasEyeSlash","Table","deleteBlacklist","BlacklistMoviesView","useBlacklistMovies","Helmet","BlacklistSeriesView","useBlacklistSeries","Router","sonarr","radarr","exact","HistoryGenericView","tableUpdater","typeName","MoviesHistoryView","useMoviesHistory","tableUpdate","SeriesHistoryView","useSeriesHistory","actionOptions","timeframeOptions","converter","merge","providerLabel","SelectorContainer","lg","HistoryStats","providerList","setTimeframe","setAction","setProvider","HistoryApi","stats","ResponsiveContainer","BarChart","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","allowDecimals","Tooltip","Legend","verticalAlign","Bar","dirtyItems","editMode","select","loader","updateRow","orderList","ExtendItemComparer","ItemEditorModal","lhs","rhs","BaseItemView","updateAction","shared","pendingEditMode","setPendingEdit","setEdit","edit","setDirty","changeProfiles","newDirty","startEdit","endEdit","cancel","ids","saveItems","faUndo","faList","MovieView","faBookmark","farBookmark","sceneName","faWrench","ManualSearchModal","onDownload","setResult","searching","setSearch","setStart","reset","score","hearing_impaired","rel","display","uploader","matches","dont_matches","dont","content","block","matchElements","dontElements","DetailBadge","desc","ItemOverview","details","detailBadges","tags","faTags","audioBadges","faMusic","profileItems","languageBadges","faStream","alternativePopover","Title","alternativeTitles","backgroundRepeat","backgroundSize","backgroundPosition","backgroundImage","fanart","backgroundColor","poster","fasClone","overview","missingText","downloadSubtitles","faSearch","deleteSubtitles","missing_subtitles","concat","download","subtitle","downloadMovieSubtitle","withRouter","match","Number","valid","setValid","validator","allowEdit","faSync","faHistory","faToolbox","SubtitleToolModal","SeriesView","episodeFileCount","episodeMissingCount","progress","ProgressBar","now","SubtitleAction","downloadEpisodeSubtitle","faBriefcase","maxSeason","sortBy","groupBy","expanded","serie","faHdd","faAdjust","seriesType","Episodes","enabledLanguageKey","languageProfileKey","notificationsKey","seriesEnabledKey","moviesEnabledKey","StagedChangesContext","SettingsProvider","updateStorage","stagedChange","setChange","dispatcher","setDispatcher","cleanup","saveSettings","JSON","stringify","submitHooks","setSettings","saveLocalStorage","newDispatch","defaultDispatcher","dispatchMaps","firstKey","lostValues","when","faSave","useStagedValues","useSingleUpdate","staged","changes","useExtract","validate","useStore","extractValue","useLatest","stagedValue","CollapseContext","CollapseUpdateContext","useCollapse","CollapseBox","context","on","indent","header","Input","ColCard","Card","subheader","plus","Subtitle","Message","Text","beforeStaged","controlled","settingKey","collapse","inline","isBoolean","selectorValidator","slider","URLTestButton","category","setTitle","setVar","address","port","ssl","testUrl","UtilsApi","urlTest","version","securityOptions","proxyOptions","branchOptions","characters","settingApiKey","baseUrlOverride","base_url","SettingsGeneralView","copied","setCopy","canUpdate","Append","field","document","createElement","innerText","body","appendChild","setSelectionRange","execCommand","copyToClipboard","wait","toggleState","faClipboard","charAt","floor","random","useEnabledLanguages","ProfileSelector","useProfiles","cutoffOptions","LanguagesProfileModal","cutoff","setProfile","newOptions","updateProfile","addItem","audio_exclude","ItemBadge","originalProfiles","setProfiles","nextProfileId","prof","submitProfiles","isCutoff","EnabledLanguageContext","LanguagesProfileContext","latest","SettingsLanguagesView","notificationComparer","one","another","NotificationModal","compare","newArray","inn","useUpdateArray","setCurrent","onShow","updateUrl","newCurrent","testNotification","NotificationView","useLatestMergeArray","SettingsNotificationsView","ProviderList","description","defaultKey","keyNameOverride","skip_wrong_fps","vip","use_hash","ModalKey","ProviderKey","ProviderView","cards","ProviderModal","setInfo","updateGlobal","obj","useMultiUpdate","deletePayload","newProviders","addProvider","modification","checks","visibleKey","SettingsProvidersView","PathMappingTable","getSupportKey","getEnabledKey","addRow","FilesApi","updateCell","newItem","faArrowCircleRight","bazarr","SettingsRadarrView","seriesSyncOptions","episodesSyncOptions","moviesSyncOptions","diskUpdateOptions","dayOptions","upgradeOptions","SettingsSchedulerView","timeOptions","seriesTypeOptions","SettingsSonarrView","folderOptions","antiCaptchaOption","buildColor","subzeroOverride","subzero_mods","subzeroColorOverride","SettingsSubtitlesView","pageSizeOptions","SettingsUIView","General","UI","Sonarr","Radarr","Languages","Subtitles","Scheduler","Notifications","SystemLogModal","stack","mapTypeToIcon","faBug","faExclamationCircle","faQuestion","faLayerGroup","SystemLogsView","resetting","setReset","deleteLogs","SystemProvidersView","headerBadgeCls","InfoElement","prerelease","replace","ReleasesView","CRow","InfoContainer","SystemStatusView","bazarr_version","sonarr_version","radarr_version","operating_system","python_version","bazarr_directory","bazarr_config_directory","faPaperPlane","faGithub","faWikipediaW","faDiscord","run","runTask","SystemTasksView","Tasks","Status","Logs","Releases","GenericWantedView","searchAll","WantedMoviesView","useWantedMovies","movieid","WantedSeriesView","useWantedSeries","redirectPath","InitializationErrorView","App","ReduxBootstrap","notify","hasUpdate","setSidebar","AuthPage","setUsername","setPassword","setError","updateError","authState","onSubmit","login","required","MainRouter","basename","Auth","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.0f1951a9.chunk.js","sourcesContent":["// Provider action\nexport const PROVIDER_UPDATE_LIST = \"UPDATE_PROVIDER_LIST\";\n\n// System action\nexport const SYSTEM_UPDATE_LANGUAGES_LIST = \"UPDATE_ALL_LANGUAGES_LIST\";\nexport const SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST =\n \"UPDATE_LANGUAGES_PROFILE_LIST\";\nexport const SYSTEM_UPDATE_STATUS = \"UPDATE_SYSTEM_STATUS\";\nexport const SYSTEM_UPDATE_TASKS = \"UPDATE_SYSTEM_TASKS\";\nexport const SYSTEM_UPDATE_LOGS = \"UPDATE_SYSTEM_LOGS\";\nexport const SYSTEM_UPDATE_RELEASES = \"SYSTEM_UPDATE_RELEASES\";\nexport const SYSTEM_UPDATE_SETTINGS = \"UPDATE_SYSTEM_SETTINGS\";\nexport const SYSTEM_RUN_TASK = \"SYSTEM_RUN_TASK\";\n\n// Series action\nexport const SERIES_UPDATE_WANTED_RANGE = \"SERIES_UPDATE_WANTED_RANGE\";\nexport const SERIES_UPDATE_WANTED_LIST = \"UPDATE_SERIES_WANTED_LIST\";\nexport const SERIES_UPDATE_EPISODE_LIST = \"UPDATE_SERIES_EPISODE_LIST\";\nexport const SERIES_UPDATE_HISTORY_LIST = \"UPDATE_SERIES_HISTORY_LIST\";\nexport const SERIES_UPDATE_INFO = \"UPDATE_SEIRES_INFO\";\nexport const SERIES_UPDATE_RANGE = \"SERIES_UPDATE_RANGE\";\nexport const SERIES_UPDATE_BLACKLIST = \"UPDATE_SERIES_BLACKLIST\";\n\n// Movie action\nexport const MOVIES_UPDATE_LIST = \"UPDATE_MOVIE_LIST\";\nexport const MOVIES_UPDATE_WANTED_RANGE = \"MOVIES_UPDATE_WANTED_RANGE\";\nexport const MOVIES_UPDATE_WANTED_LIST = \"UPDATE_MOVIE_WANTED_LIST\";\nexport const MOVIES_UPDATE_HISTORY_LIST = \"UPDATE_MOVIE_HISTORY_LIST\";\nexport const MOVIES_UPDATE_INFO = \"UPDATE_MOVIE_INFO\";\nexport const MOVIES_UPDATE_RANGE = \"MOVIES_UPDATE_RANGE\";\nexport const MOVIES_UPDATE_BLACKLIST = \"UPDATE_MOVIES_BLACKLIST\";\n\n// Site Action\nexport const SITE_AUTH_SUCCESS = \"SITE_AUTH_SUCCESS\";\nexport const SITE_NEED_AUTH = \"SITE_NEED_AUTH\";\nexport const SITE_INITIALIZED = \"SITE_SYSTEM_INITIALIZED\";\nexport const SITE_INITIALIZE_FAILED = \"SITE_INITIALIZE_FAILED\";\nexport const SITE_SAVE_LOCALSTORAGE = \"SITE_SAVE_LOCALSTORAGE\";\nexport const SITE_NOTIFICATIONS_ADD = \"SITE_NOTIFICATIONS_ADD\";\nexport const SITE_NOTIFICATIONS_REMOVE = \"SITE_NOTIFICATIONS_REMOVE\";\nexport const SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP =\n \"SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP\";\nexport const SITE_SIDEBAR_UPDATE = \"SITE_SIDEBAR_UPDATE\";\nexport const SITE_BADGE_UPDATE = \"SITE_BADGE_UPDATE\";\nexport const SITE_OFFLINE_UPDATE = \"SITE_OFFLINE_UPDATE\";\n","import { isNull, isNumber, isString, isUndefined } from \"lodash\";\nimport { ReactText } from \"react\";\n\nexport function isReactText(v: any): v is ReactText {\n return isString(v) || isNumber(v);\n}\n\nexport function isNullable(v: any): v is Nullable {\n return isNull(v) || isUndefined(v);\n}\n\nexport function isNonNullable(v: any): v is NonNullable {\n return !isNullable(v);\n}\n\nexport function isMovie(v: any): v is Item.Movie {\n return \"radarrId\" in v;\n}\n\nexport function isEpisode(v: any): v is Item.Episode {\n return \"sonarrEpisodeId\" in v;\n}\n\nexport function isSeries(v: any): v is Item.Series {\n return \"episodeFileCount\" in v;\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { mergeArray } from \".\";\n\nexport function useBaseUrl(slash: boolean = false) {\n if (process.env.NODE_ENV === \"development\") {\n return \"/\";\n } else {\n let url = window.Bazarr.baseUrl ?? \"/\";\n if (slash && !url.endsWith(\"/\")) {\n url += \"/\";\n }\n return url;\n }\n}\n\nexport function useCanUpdateInject() {\n if (process.env.NODE_ENV === \"development\") {\n return process.env[\"REACT_APP_CAN_UPDATE\"] === \"true\";\n } else {\n return window.Bazarr.canUpdate;\n }\n}\n\nexport function useHasUpdateInject() {\n if (process.env.NODE_ENV === \"development\") {\n return process.env[\"REACT_APP_HAS_UPDATE\"] === \"true\";\n } else {\n return window.Bazarr.hasUpdate;\n }\n}\n\nexport function useSessionStorage(\n key: string\n): [StorageType, React.Dispatch] {\n const dispatch: React.Dispatch = useCallback(\n (value) => {\n if (value !== null) {\n sessionStorage.setItem(key, value);\n } else {\n sessionStorage.removeItem(key);\n }\n },\n [key]\n );\n return [sessionStorage.getItem(key), dispatch];\n}\n\nexport function useMergeArray(\n olds: readonly T[],\n news: readonly T[],\n comparer: Comparer>\n) {\n return useMemo(() => mergeArray(olds, news, comparer), [\n olds,\n news,\n comparer,\n ]);\n}\n\nexport function useAutoUpdate(action: () => void, interval?: number) {\n useEffect(() => {\n action();\n\n let hd: NodeJS.Timeout | null = null;\n if (interval !== undefined) {\n hd = setInterval(action, interval);\n }\n return () => {\n if (hd !== null) {\n clearInterval(hd);\n }\n };\n }, [action, interval]);\n}\n\nexport function useWatcher(\n curr: T,\n expected: T,\n onSame?: () => void,\n onDiff?: () => void\n) {\n const [, setPrevious] = useState(curr);\n\n useEffect(() => {\n setPrevious((prev) => {\n if (prev !== curr) {\n if (curr !== expected) {\n onDiff && onDiff();\n } else {\n onSame && onSame();\n }\n }\n return curr;\n });\n }, [curr, expected, onDiff, onSame]);\n}\n\nexport function useWhenLoadingFinish(\n state: Readonly>,\n callback: () => void\n) {\n return useWatcher(state.updating, true, undefined, callback);\n}\n","import { Dispatch } from \"react\";\nimport { isEpisode, isMovie, isNullable, isSeries } from \"./validate\";\n\nexport function updateAsyncState(\n promise: Promise,\n setter: (state: AsyncState) => void,\n defaultVal: T\n) {\n setter({\n updating: true,\n data: defaultVal,\n });\n promise\n .then((data) => {\n setter({\n updating: false,\n data: data,\n });\n })\n .catch((err) => {\n setter({\n updating: false,\n error: err,\n data: defaultVal,\n });\n });\n}\n\nexport function copyToClipboard(s: string) {\n let field = document.createElement(\"textarea\");\n field.innerText = s;\n document.body.appendChild(field);\n field.select();\n field.setSelectionRange(0, 9999);\n document.execCommand(\"copy\");\n field.remove();\n}\n\nexport function toggleState(\n dispatch: Dispatch,\n wait: number,\n start: boolean = false\n) {\n dispatch(!start);\n setTimeout(() => dispatch(start), wait);\n}\n\nexport function submodProcessColor(s: string) {\n return `color(name=${s})`;\n}\n\nexport function GetItemId(item: any): number {\n if (isMovie(item)) {\n return item.radarrId;\n } else if (isEpisode(item)) {\n return item.sonarrEpisodeId;\n } else if (isSeries(item)) {\n return item.sonarrSeriesId;\n } else {\n return -1;\n }\n}\n\nexport function buildOrderList(state: OrderIdState): T[] {\n const { items, order } = state;\n return order.flatMap((v) => {\n if (v !== null && v in items) {\n const item = items[v];\n return [item];\n }\n\n return [];\n });\n}\n\n// Replace elements in old array with news\nexport function mergeArray(\n olds: readonly T[],\n news: readonly T[],\n comparer: Comparer>\n) {\n const list = [...olds];\n const newList = news.filter((v) => !isNullable(v)) as NonNullable[];\n // Performance\n newList.forEach((v) => {\n const idx = list.findIndex((n, idx) => {\n if (!isNullable(n)) {\n return comparer(n, v);\n } else {\n return false;\n }\n });\n if (idx !== -1) {\n list[idx] = v;\n } else {\n list.push(v);\n }\n });\n return list;\n}\n\nexport function BuildKey(...args: any[]) {\n return args.join(\"-\");\n}\n\nexport function Reload() {\n window.location.reload();\n}\n\nexport function ScrollToTop() {\n window.scrollTo(0, 0);\n}\n\nexport * from \"./hooks\";\nexport * from \"./validate\";\n","import { mergeArray } from \"../../utilites\";\nimport { AsyncAction } from \"../types\";\n\nexport function updateAsyncState(\n action: AsyncAction,\n defVal: Readonly\n): AsyncState {\n if (action.payload.loading) {\n return {\n updating: true,\n data: defVal,\n };\n } else if (action.error !== undefined) {\n return {\n updating: false,\n error: action.payload.item as Error,\n data: defVal,\n };\n } else {\n return {\n updating: false,\n error: undefined,\n data: action.payload.item as Payload,\n };\n }\n}\n\nexport function updateOrderIdState(\n action: AsyncAction>,\n state: AsyncState>,\n id: ItemIdType\n): AsyncState> {\n if (action.payload.loading) {\n return {\n ...state,\n updating: true,\n };\n } else if (action.error !== undefined) {\n return {\n ...state,\n updating: false,\n error: action.payload.item as Error,\n };\n } else {\n const { data, total } = action.payload.item as AsyncDataWrapper;\n const [start, length] = action.payload.parameters;\n\n // Convert item list to object\n const idState: IdState = data.reduce>((prev, curr) => {\n const tid = curr[id];\n prev[tid] = curr;\n return prev;\n }, {});\n\n const dataOrder: number[] = data.map((v) => v[id]);\n\n let newItems = { ...state.data.items, ...idState };\n let newOrder = state.data.order;\n\n const countDist = total - newOrder.length;\n if (countDist > 0) {\n newOrder.push(...Array(countDist).fill(null));\n } else if (countDist < 0) {\n // Completely drop old data if list has shrinked\n newOrder = Array(total).fill(null);\n newItems = { ...idState };\n }\n\n if (typeof start === \"number\" && typeof length === \"number\") {\n newOrder.splice(start, length, ...dataOrder);\n } else if (start === undefined) {\n // Full Update\n newOrder = dataOrder;\n }\n\n return {\n updating: false,\n data: {\n items: newItems,\n order: newOrder,\n },\n };\n }\n}\n\nexport function updateAsyncList(\n action: AsyncAction,\n state: AsyncState,\n match: ID\n): AsyncState {\n if (action.payload.loading) {\n return {\n ...state,\n updating: true,\n };\n } else if (action.error !== undefined) {\n return {\n ...state,\n updating: false,\n error: action.payload.item as Error,\n };\n } else {\n const list = state.data as T[];\n const payload = action.payload.item as T[];\n const result = mergeArray(list, payload, (l, r) => l[match] === r[match]);\n\n return {\n updating: false,\n data: result,\n };\n }\n}\n","import { handleActions } from \"redux-actions\";\nimport {\n MOVIES_UPDATE_BLACKLIST,\n MOVIES_UPDATE_HISTORY_LIST,\n MOVIES_UPDATE_INFO,\n MOVIES_UPDATE_RANGE,\n MOVIES_UPDATE_WANTED_LIST,\n MOVIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport { AsyncAction } from \"../types\";\nimport { updateAsyncState, updateOrderIdState } from \"./mapper\";\n\nconst reducer = handleActions(\n {\n [MOVIES_UPDATE_WANTED_LIST]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedMovieList: updateOrderIdState(\n action,\n state.wantedMovieList,\n \"radarrId\"\n ),\n };\n },\n [MOVIES_UPDATE_WANTED_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedMovieList: updateOrderIdState(\n action,\n state.wantedMovieList,\n \"radarrId\"\n ),\n };\n },\n [MOVIES_UPDATE_HISTORY_LIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n historyList: updateAsyncState(action, state.historyList.data),\n };\n },\n [MOVIES_UPDATE_INFO]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n movieList: updateOrderIdState(action, state.movieList, \"radarrId\"),\n };\n },\n [MOVIES_UPDATE_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n movieList: updateOrderIdState(action, state.movieList, \"radarrId\"),\n };\n },\n [MOVIES_UPDATE_BLACKLIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n blacklist: updateAsyncState(action, state.blacklist.data),\n };\n },\n },\n {\n movieList: { updating: true, data: { items: {}, order: [] } },\n wantedMovieList: { updating: true, data: { items: {}, order: [] } },\n historyList: { updating: true, data: [] },\n blacklist: { updating: true, data: [] },\n }\n);\n\nexport default reducer;\n","import { handleActions } from \"redux-actions\";\nimport {\n SERIES_UPDATE_BLACKLIST,\n SERIES_UPDATE_EPISODE_LIST,\n SERIES_UPDATE_HISTORY_LIST,\n SERIES_UPDATE_INFO,\n SERIES_UPDATE_RANGE,\n SERIES_UPDATE_WANTED_LIST,\n SERIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport { AsyncAction } from \"../types\";\nimport { updateAsyncState, updateOrderIdState } from \"./mapper\";\n\nconst reducer = handleActions(\n {\n [SERIES_UPDATE_WANTED_LIST]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedEpisodesList: updateOrderIdState(\n action,\n state.wantedEpisodesList,\n \"sonarrEpisodeId\"\n ),\n };\n },\n [SERIES_UPDATE_WANTED_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n wantedEpisodesList: updateOrderIdState(\n action,\n state.wantedEpisodesList,\n \"sonarrEpisodeId\"\n ),\n };\n },\n [SERIES_UPDATE_EPISODE_LIST]: (\n state,\n action: AsyncAction\n ) => {\n const { updating, error, data: items } = updateAsyncState(action, []);\n\n const stateItems = { ...state.episodeList.data };\n\n if (items.length > 0) {\n const id = items[0].sonarrSeriesId;\n stateItems[id] = items;\n }\n\n return {\n ...state,\n episodeList: {\n updating,\n error,\n data: stateItems,\n },\n };\n },\n [SERIES_UPDATE_HISTORY_LIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n historyList: updateAsyncState(action, state.historyList.data),\n };\n },\n [SERIES_UPDATE_INFO]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n seriesList: updateOrderIdState(\n action,\n state.seriesList,\n \"sonarrSeriesId\"\n ),\n };\n },\n [SERIES_UPDATE_RANGE]: (\n state,\n action: AsyncAction>\n ) => {\n return {\n ...state,\n seriesList: updateOrderIdState(\n action,\n state.seriesList,\n \"sonarrSeriesId\"\n ),\n };\n },\n [SERIES_UPDATE_BLACKLIST]: (\n state,\n action: AsyncAction\n ) => {\n return {\n ...state,\n blacklist: updateAsyncState(action, state.blacklist.data),\n };\n },\n },\n {\n seriesList: { updating: true, data: { items: {}, order: [] } },\n wantedEpisodesList: { updating: true, data: { items: {}, order: [] } },\n episodeList: { updating: true, data: {} },\n historyList: { updating: true, data: [] },\n blacklist: { updating: true, data: [] },\n }\n);\n\nexport default reducer;\n","export const uiPageSizeKey = \"storage-ui-pageSize\";\n\nexport const storage: LocalStorageType = {\n get pageSize(): number {\n return parseInt(localStorage.getItem(uiPageSizeKey) ?? \"50\");\n },\n set pageSize(v: number) {\n localStorage.setItem(uiPageSizeKey, v.toString());\n },\n};\n","import { Action, handleActions } from \"redux-actions\";\nimport { storage } from \"../../@storage/local\";\nimport {\n SITE_AUTH_SUCCESS,\n SITE_BADGE_UPDATE,\n SITE_INITIALIZED,\n SITE_INITIALIZE_FAILED,\n SITE_NEED_AUTH,\n SITE_NOTIFICATIONS_ADD,\n SITE_NOTIFICATIONS_REMOVE,\n SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP,\n SITE_OFFLINE_UPDATE,\n SITE_SAVE_LOCALSTORAGE,\n SITE_SIDEBAR_UPDATE,\n} from \"../constants\";\nimport { AsyncAction } from \"../types\";\n\nfunction updateLocalStorage(): Partial {\n return {\n pageSize: storage.pageSize,\n };\n}\n\nconst reducer = handleActions(\n {\n [SITE_NEED_AUTH]: (state) => ({\n ...state,\n auth: false,\n }),\n [SITE_AUTH_SUCCESS]: (state) => ({\n ...state,\n auth: true,\n }),\n [SITE_INITIALIZED]: (state) => ({\n ...state,\n initialized: true,\n }),\n [SITE_INITIALIZE_FAILED]: (state) => ({\n ...state,\n initialized: \"An Error Occurred When Initializing Bazarr UI\",\n }),\n [SITE_SAVE_LOCALSTORAGE]: (state, action: Action) => {\n const settings = action.payload;\n for (const key in settings) {\n const value = settings[key];\n localStorage.setItem(key, value);\n }\n return {\n ...state,\n ...updateLocalStorage(),\n };\n },\n [SITE_NOTIFICATIONS_ADD]: (\n state,\n action: Action\n ) => {\n const alerts = [\n ...state.notifications.filter((v) => v.id !== action.payload.id),\n action.payload,\n ];\n return { ...state, notifications: alerts };\n },\n [SITE_NOTIFICATIONS_REMOVE]: (state, action: Action) => {\n const alerts = state.notifications.filter((v) => v.id !== action.payload);\n return { ...state, notifications: alerts };\n },\n [SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP]: (state, action: Action) => {\n const alerts = state.notifications.filter(\n (v) => v.timestamp !== action.payload\n );\n return { ...state, notifications: alerts };\n },\n [SITE_SIDEBAR_UPDATE]: (state, action: Action) => {\n return {\n ...state,\n sidebar: action.payload,\n };\n },\n [SITE_BADGE_UPDATE]: {\n next: (state, action: AsyncAction) => {\n const badges = action.payload.item;\n if (badges && action.error !== true) {\n return { ...state, badges: badges as Badge };\n }\n return state;\n },\n throw: (state) => state,\n },\n [SITE_OFFLINE_UPDATE]: (state, action: Action) => {\n return { ...state, offline: action.payload };\n },\n },\n {\n initialized: false,\n auth: true,\n pageSize: 50,\n notifications: [],\n sidebar: \"\",\n badges: {\n movies: 0,\n episodes: 0,\n providers: 0,\n },\n offline: false,\n ...updateLocalStorage(),\n }\n);\n\nexport default reducer;\n","import { Action, handleActions } from \"redux-actions\";\nimport {\n PROVIDER_UPDATE_LIST,\n SYSTEM_RUN_TASK,\n SYSTEM_UPDATE_LANGUAGES_LIST,\n SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST,\n SYSTEM_UPDATE_LOGS,\n SYSTEM_UPDATE_RELEASES,\n SYSTEM_UPDATE_SETTINGS,\n SYSTEM_UPDATE_STATUS,\n SYSTEM_UPDATE_TASKS,\n} from \"../constants\";\nimport { updateAsyncState } from \"./mapper\";\n\nconst reducer = handleActions(\n {\n [SYSTEM_UPDATE_LANGUAGES_LIST]: (state, action) => {\n const languages = updateAsyncState>(action, []);\n const enabledLanguage: AsyncState = {\n ...languages,\n data: languages.data.filter((v) => v.enabled),\n };\n const newState = {\n ...state,\n languages,\n enabledLanguage,\n };\n return newState;\n },\n [SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST]: (state, action) => {\n const newState = {\n ...state,\n languagesProfiles: updateAsyncState>(\n action,\n []\n ),\n };\n return newState;\n },\n [SYSTEM_UPDATE_STATUS]: (state, action) => {\n return {\n ...state,\n status: updateAsyncState(\n action,\n state.status.data\n ),\n };\n },\n [SYSTEM_UPDATE_TASKS]: (state, action) => {\n return {\n ...state,\n tasks: updateAsyncState>(action, state.tasks.data),\n };\n },\n [SYSTEM_RUN_TASK]: (state, action: Action) => {\n const id = action.payload;\n const tasks = state.tasks;\n const newItems = [...tasks.data];\n\n const idx = newItems.findIndex((v) => v.job_id === id);\n\n if (idx !== -1) {\n newItems[idx].job_running = true;\n }\n\n return {\n ...state,\n tasks: {\n ...tasks,\n data: newItems,\n },\n };\n },\n [PROVIDER_UPDATE_LIST]: (state, action) => {\n return {\n ...state,\n providers: updateAsyncState(action, state.providers.data),\n };\n },\n [SYSTEM_UPDATE_LOGS]: (state, action) => {\n return {\n ...state,\n logs: updateAsyncState(action, state.logs.data),\n };\n },\n [SYSTEM_UPDATE_RELEASES]: (state, action) => {\n return {\n ...state,\n releases: updateAsyncState(action, state.releases.data),\n };\n },\n [SYSTEM_UPDATE_SETTINGS]: (state, action) => {\n return {\n ...state,\n settings: updateAsyncState(action, state.settings.data),\n };\n },\n },\n {\n languages: { updating: true, data: [] },\n enabledLanguage: { updating: true, data: [] },\n languagesProfiles: { updating: true, data: [] },\n status: {\n updating: true,\n data: undefined,\n },\n tasks: {\n updating: true,\n data: [],\n },\n providers: {\n updating: true,\n data: [],\n },\n logs: {\n updating: true,\n data: [],\n },\n releases: {\n updating: true,\n data: [],\n },\n settings: {\n updating: true,\n data: undefined,\n },\n }\n);\n\nexport default reducer;\n","import { combineReducers } from \"redux\";\nimport movie from \"./movie\";\nimport series from \"./series\";\nimport site from \"./site\";\nimport system from \"./system\";\n\nexport default combineReducers({\n system,\n series,\n movie,\n site,\n});\n","import { applyMiddleware, createStore } from \"redux\";\nimport logger from \"redux-logger\";\nimport promise from \"redux-promise\";\nimport trunk from \"redux-thunk\";\nimport rootReducer from \"../reducers\";\n\nconst plugins = [promise, trunk];\n\nif (\n process.env.NODE_ENV === \"development\" &&\n process.env[\"REACT_APP_LOG_REDUX_EVENT\"] !== \"false\"\n) {\n plugins.push(logger);\n}\n\nconst store = createStore(rootReducer, applyMiddleware(...plugins));\nexport default store;\n","import { AxiosResponse } from \"axios\";\nimport apis from \".\";\n\nclass BadgesApi {\n get(path: string, params?: any): Promise> {\n return apis.axios.get(`/badges${path}`, { params });\n }\n\n async all(): Promise {\n return new Promise((resolve, reject) => {\n this.get(\"\")\n .then((result) => {\n resolve(result.data);\n })\n .catch(reject);\n });\n }\n}\n\nexport default new BadgesApi();\n","import { AxiosResponse } from \"axios\";\nimport apis from \".\";\n\nclass BaseApi {\n prefix: string;\n\n constructor(prefix: string) {\n this.prefix = prefix;\n }\n\n private createFormdata(object?: LooseObject) {\n if (object) {\n let form = new FormData();\n\n for (const key in object) {\n const data = object[key];\n if (data instanceof Array) {\n if (data.length > 0) {\n data.forEach((val) => form.append(key, val));\n } else {\n form.append(key, \"\");\n }\n } else {\n form.append(key, object[key]);\n }\n }\n return form;\n } else {\n return undefined;\n }\n }\n\n protected get(path: string, params?: any): Promise> {\n return apis.axios.get(this.prefix + path, { params });\n }\n\n protected post(\n path: string,\n formdata?: LooseObject,\n params?: any\n ): Promise> {\n const form = this.createFormdata(formdata);\n return apis.axios.post(this.prefix + path, form, { params });\n }\n\n protected patch(\n path: string,\n formdata?: LooseObject,\n params?: any\n ): Promise> {\n const form = this.createFormdata(formdata);\n return apis.axios.patch(this.prefix + path, form, { params });\n }\n\n protected delete(\n path: string,\n formdata?: any,\n params?: any\n ): Promise> {\n const form = this.createFormdata(formdata);\n return apis.axios.delete(this.prefix + path, { params, data: form });\n }\n}\n\nexport default BaseApi;\n","import BaseApi from \"./base\";\n\nclass EpisodeApi extends BaseApi {\n constructor() {\n super(\"/episodes\");\n }\n\n async bySeriesId(seriesid: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"\", { seriesid })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async wanted(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n // TODO: Implement this on backend\n async wantedBy(episodeid?: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { episodeid })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async byEpisodeId(episodeid: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"\", { episodeid })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async history(episodeid?: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/history\", { episodeid })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async downloadSubtitles(\n seriesid: number,\n episodeid: number,\n form: FormType.Subtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.patch(\"/subtitles\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async uploadSubtitles(\n seriesid: number,\n episodeid: number,\n form: FormType.UploadSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/subtitles\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteSubtitles(\n seriesid: number,\n episodeid: number,\n form: FormType.DeleteSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/subtitles\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async blacklist(): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/blacklist\")\n .then((res) => {\n resolve(res.data.data);\n })\n .catch(reject);\n });\n }\n\n async addBlacklist(\n seriesid: number,\n episodeid: number,\n form: FormType.AddBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/blacklist\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteBlacklist(\n all?: boolean,\n form?: FormType.DeleteBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/blacklist\", form, { all })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new EpisodeApi();\n","import BaseApi from \"./base\";\n\nclass FilesApi extends BaseApi {\n constructor() {\n super(\"/files\");\n }\n\n async browse(name: string, path?: string): Promise {\n return new Promise((resolve, reject) => {\n this.get(name, { path })\n .then((res) => resolve(res.data))\n .catch(reject);\n });\n }\n\n async bazarr(path?: string): Promise {\n return this.browse(\"\", path);\n }\n\n async sonarr(path?: string): Promise {\n return this.browse(\"/sonarr\", path);\n }\n\n async radarr(path?: string): Promise {\n return this.browse(\"/radarr\", path);\n }\n}\n\nexport default new FilesApi();\n","import BaseApi from \"./base\";\n\nclass HistoryApi extends BaseApi {\n constructor() {\n super(\"/history\");\n }\n\n async stats(\n timeframe?: History.TimeframeOptions,\n action?: History.ActionOptions,\n provider?: string,\n language?: LanguageCodeType\n ): Promise {\n return new Promise((resolve, reject) => {\n this.get(\"/stats\", {\n timeframe,\n action,\n provider,\n language,\n })\n .then((res) => resolve(res.data))\n .catch(reject);\n });\n }\n}\n\nexport default new HistoryApi();\n","import BaseApi from \"./base\";\n\nclass MovieApi extends BaseApi {\n constructor() {\n super(\"/movies\");\n }\n\n async blacklist(): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/blacklist\")\n .then((res) => {\n resolve(res.data.data);\n })\n .catch(reject);\n });\n }\n\n async addBlacklist(\n radarrid: number,\n form: FormType.AddBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/blacklist\", form, { radarrid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteBlacklist(\n all?: boolean,\n form?: FormType.DeleteBlacklist\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/blacklist\", form, { all })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async movies(id?: number[]) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { radarrid: id })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async moviesBy(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async modify(form: FormType.ModifyItem) {\n return new Promise((resolve, reject) => {\n this.post(\"\", { radarrid: form.id, profileid: form.profileid })\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n }\n\n async wanted(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n // TODO: Implement this on backend\n async wantedBy(radarrid?: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"/wanted\", { radarrid })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async history(id?: number): Promise> {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/history\", {\n radarrid: id,\n })\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async action(action: FormType.MoviesAction) {\n return new Promise((resolve, reject) => {\n this.patch(\"\", action)\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async downloadSubtitles(id: number, form: FormType.Subtitle): Promise {\n return new Promise((resolve, reject) => {\n this.patch(\"/subtitles\", form, { radarrid: id })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async uploadSubtitles(\n id: number,\n form: FormType.UploadSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.post(\"/subtitles\", form, { radarrid: id })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async deleteSubtitles(\n id: number,\n form: FormType.DeleteSubtitle\n ): Promise {\n return new Promise((resolve, reject) => {\n this.delete(\"/subtitles\", form, { radarrid: id })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new MovieApi();\n","import BaseApi from \"./base\";\n\nclass ProviderApi extends BaseApi {\n constructor() {\n super(\"/providers\");\n }\n\n async providers() {\n return new Promise>((resolve, reject) => {\n this.get>>(\"\")\n .then((result) => {\n resolve(result.data.data);\n })\n .catch(reject);\n });\n }\n\n async reset() {\n return new Promise((resolve, reject) => {\n this.post(\"\", { action: \"reset\" })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async movies(id: number) {\n return new Promise((resolve, reject) => {\n this.get>(\"/movies\", { radarrid: id })\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async downloadMovieSubtitle(radarrid: number, form: FormType.ManualDownload) {\n return new Promise((resolve, reject) => {\n this.post(\"/movies\", form, { radarrid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async episodes(id: number) {\n return new Promise((resolve, reject) => {\n this.get>(\"/episodes\", {\n episodeid: id,\n })\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async downloadEpisodeSubtitle(\n seriesid: number,\n episodeid: number,\n form: FormType.ManualDownload\n ) {\n return new Promise((resolve, reject) => {\n this.post(\"/episodes\", form, { seriesid, episodeid })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new ProviderApi();\n","import BaseApi from \"./base\";\n\nclass SeriesApi extends BaseApi {\n constructor() {\n super(\"/series\");\n }\n\n async series(id?: number[]) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { seriesid: id })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async seriesBy(start: number, length: number) {\n return new Promise>((resolve, reject) => {\n this.get>(\"\", { start, length })\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async modify(form: FormType.ModifyItem) {\n return new Promise((resolve, reject) => {\n this.post(\"\", { seriesid: form.id, profileid: form.profileid })\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n }\n\n async action(form: FormType.SeriesAction) {\n return new Promise((resolve, reject) => {\n this.patch(\"\", form)\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new SeriesApi();\n","import BaseApi from \"./base\";\n\nclass SubtitlesApi extends BaseApi {\n constructor() {\n super(\"/subtitles\");\n }\n\n async info(names: string[]) {\n return new Promise((resolve, reject) => {\n this.get>(`/info`, {\n filenames: names,\n })\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async modify(action: string, form: FormType.ModifySubtitle) {\n return new Promise((resolve, reject) => {\n this.patch(\"\", form, { action })\n .then(() => resolve())\n .catch(reject);\n });\n }\n}\n\nexport default new SubtitlesApi();\n","import BaseApi from \"./base\";\n\nclass SystemApi extends BaseApi {\n constructor() {\n super(\"/system\");\n }\n\n private async performAction(action: string) {\n return new Promise((resolve, reject) => {\n this.post(\"\", undefined, { action })\n .then(resolve)\n .catch(reject);\n });\n }\n\n async login(username: string, password: string) {\n return new Promise((resolve, reject) => {\n this.post(\"/account\", { username, password }, { action: \"login\" })\n .then(resolve)\n .catch(reject);\n });\n }\n\n async logout() {\n return new Promise((resolve, reject) => {\n this.post(\"/account\", undefined, { action: \"logout\" })\n .then(resolve)\n .catch(reject);\n });\n }\n\n async shutdown() {\n return this.performAction(\"shutdown\");\n }\n\n async restart() {\n return this.performAction(\"restart\");\n }\n\n async settings() {\n return new Promise((resolve, reject) => {\n this.get(\"/settings\")\n .then((result) => {\n resolve(result.data);\n })\n .catch(reject);\n });\n }\n\n async setSettings(data: object) {\n return new Promise((resolve, reject) => {\n this.post(\"/settings\", data)\n .then((res) => {\n resolve();\n })\n .catch(reject);\n });\n }\n\n async languages() {\n return new Promise>((resolve, reject) => {\n this.get>(\"/languages\")\n .then((result) => {\n resolve(result.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async languagesProfileList() {\n return new Promise>((resolve, reject) => {\n this.get>(\"/languages/profiles\")\n .then((result) => resolve(result.data))\n .catch(reject);\n });\n }\n\n async status() {\n return new Promise((resolve, reject) => {\n this.get>(\"/status\")\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async logs() {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/logs\")\n .then((result) => resolve(result.data.data))\n .catch((err) => reject(err));\n });\n }\n\n async releases() {\n return new Promise>((resolve, reject) => {\n this.get>>(\"/releases\")\n .then((result) => resolve(result.data.data))\n .catch(reject);\n });\n }\n\n async deleteLogs() {\n return new Promise((resolve, reject) => {\n this.delete(\"/logs\")\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n }\n\n async getTasks() {\n return new Promise((resolve, reject) => {\n this.get>(\"/tasks\")\n .then((result) => {\n resolve(result.data.data);\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async runTask(id: string) {\n return new Promise((resolve, reject) => {\n this.post(\"/tasks\", { taskid: id })\n .then(() => {\n resolve();\n })\n .catch((reason) => {\n reject(reason);\n });\n });\n }\n\n async testNotification(protocol: string, path: string) {\n return new Promise((resolve, reject) => {\n this.patch(\"/notifications\", { protocol, path })\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n async search(query: string) {\n return new Promise((resolve, reject) => {\n this.get(\"/searches\", { query })\n .then((res) => resolve(res.data))\n .catch(reject);\n });\n }\n}\n\nexport default new SystemApi();\n","import Axios, { AxiosInstance } from \"axios\";\n\ntype UrlTestResponse =\n | {\n status: true;\n version: string;\n }\n | {\n status: false;\n error: string;\n };\n\nclass RequestUtils {\n private axios!: AxiosInstance;\n\n constructor() {\n if (process.env.NODE_ENV === \"development\") {\n this.recreateAxios(\"/\", process.env.REACT_APP_APIKEY!);\n } else {\n const baseUrl =\n window.Bazarr.baseUrl === \"/\" ? \"/\" : `${window.Bazarr.baseUrl}/`;\n this.recreateAxios(baseUrl, window.Bazarr.apiKey);\n }\n }\n\n private recreateAxios(url: string, apikey: string) {\n this.axios = Axios.create({\n baseURL: url,\n });\n\n this.axios.defaults.headers.post[\"Content-Type\"] = \"application/json\";\n this.axios.defaults.headers.common[\"x-api-key\"] = apikey;\n }\n\n urlTest(\n protocol: string,\n url: string,\n params?: any\n ): Promise {\n return new Promise((resolve, reject) => {\n this.axios\n .get(`test/${protocol}/${url}api/system/status`, { params })\n .then((result) => resolve(result.data))\n .catch(reject);\n });\n }\n}\n\nexport default new RequestUtils();\n","import Axios, { AxiosError, AxiosInstance, CancelTokenSource } from \"axios\";\nimport { siteRedirectToAuth, siteUpdateOffline } from \"../@redux/actions\";\nimport reduxStore from \"../@redux/store\";\nclass Api {\n axios!: AxiosInstance;\n source!: CancelTokenSource;\n\n constructor() {\n if (process.env.NODE_ENV === \"development\") {\n this.initialize(\"/api/\", process.env[\"REACT_APP_APIKEY\"]!);\n } else {\n const baseUrl =\n window.Bazarr.baseUrl === \"/\"\n ? \"/api/\"\n : `${window.Bazarr.baseUrl}/api/`;\n this.initialize(baseUrl, window.Bazarr.apiKey);\n }\n }\n\n initialize(url: string, apikey: string) {\n this.axios = Axios.create({\n baseURL: url,\n });\n\n this.axios.defaults.headers.post[\"Content-Type\"] = \"application/json\";\n this.axios.defaults.headers.common[\"X-API-KEY\"] = apikey;\n\n this.source = Axios.CancelToken.source();\n\n this.axios.interceptors.request.use((config) => {\n config.cancelToken = this.source.token;\n return config;\n });\n\n this.axios.interceptors.response.use(\n (resp) => {\n this.onOnline();\n if (resp.status >= 200 && resp.status < 300) {\n return Promise.resolve(resp);\n } else {\n this.handleError(resp.status);\n return Promise.reject(resp);\n }\n },\n (error: AxiosError) => {\n if (error.response) {\n const response = error.response;\n this.handleError(response.status);\n this.onOnline();\n } else {\n this.onOffline();\n error.message = \"You have disconnected to Bazarr backend\";\n }\n return Promise.reject(error);\n }\n );\n }\n\n onOnline() {\n const offline = reduxStore.getState().site.offline;\n if (offline) {\n reduxStore.dispatch(siteUpdateOffline(false));\n }\n }\n\n onOffline() {\n reduxStore.dispatch(siteUpdateOffline(true));\n }\n\n handleError(code: number) {\n switch (code) {\n case 401:\n reduxStore.dispatch(siteRedirectToAuth());\n break;\n case 500:\n break;\n default:\n break;\n }\n }\n}\n\nexport default new Api();\nexport { default as BadgesApi } from \"./badges\";\nexport { default as EpisodesApi } from \"./episodes\";\nexport { default as FilesApi } from \"./files\";\nexport { default as HistoryApi } from \"./history\";\nexport { default as MoviesApi } from \"./movies\";\nexport { default as ProvidersApi } from \"./providers\";\nexport { default as SeriesApi } from \"./series\";\nexport { default as SubtitlesApi } from \"./subtitles\";\nexport { default as SystemApi } from \"./system\";\nexport { default as UtilsApi } from \"./utils\";\n","import { isEqual } from \"lodash\";\nimport { log } from \"../../utilites/logger\";\nimport {\n ActionCallback,\n ActionDispatcher,\n AsyncActionCreator,\n AsyncActionDispatcher,\n AvailableCreator,\n AvailableType,\n PromiseCreator,\n} from \"../types\";\n\n// Limiter the call to API\nconst gLimiter: Map = new Map();\nconst gArgs: Map = new Map();\n\nconst LIMIT_CALL_MS = 200;\n\nfunction asyncActionFactory(\n type: string,\n promise: T,\n args: Parameters\n): AsyncActionDispatcher>> {\n return (dispatch) => {\n const previousArgs = gArgs.get(promise);\n const date = new Date();\n\n if (isEqual(previousArgs, args)) {\n // Get last execute date\n const previousExec = gLimiter.get(promise);\n if (previousExec) {\n const distInMs = date.getTime() - previousExec.getTime();\n if (distInMs < LIMIT_CALL_MS) {\n log(\n \"warning\",\n \"Multiple calls to API within the range\",\n promise,\n args\n );\n return Promise.resolve();\n }\n }\n } else {\n gArgs.set(promise, args);\n }\n\n gLimiter.set(promise, date);\n\n dispatch({\n type,\n payload: {\n loading: true,\n parameters: args,\n },\n });\n\n return new Promise((resolve, reject) => {\n promise(...args)\n .then((val) => {\n dispatch({\n type,\n payload: {\n loading: false,\n item: val,\n parameters: args,\n },\n });\n resolve();\n })\n .catch((err) => {\n dispatch({\n type,\n error: true,\n payload: {\n loading: false,\n item: err,\n parameters: args,\n },\n });\n reject(err);\n });\n });\n };\n}\n\nexport function createAsyncAction(\n type: string,\n promise: T\n) {\n return (...args: Parameters) => asyncActionFactory(type, promise, args);\n}\n\n// Create a action which combine multiple ActionDispatcher and execute them at once\nfunction combineActionFactory(\n dispatchers: AvailableType[]\n): ActionDispatcher {\n return (dispatch) => {\n dispatchers.forEach((fn) => {\n if (typeof fn === \"function\") {\n fn(dispatch);\n } else {\n dispatch(fn);\n }\n });\n };\n}\n\nexport function createCombineAction(fn: T) {\n return (...args: Parameters) => combineActionFactory(fn(...args));\n}\n\nfunction combineAsyncActionFactory(\n dispatchers: AsyncActionDispatcher[]\n): AsyncActionDispatcher {\n return (dispatch) => {\n const promises = dispatchers.map((v) => v(dispatch));\n return Promise.all(promises) as Promise;\n };\n}\n\nexport function createAsyncCombineAction(fn: T) {\n return (...args: Parameters) => combineAsyncActionFactory(fn(...args));\n}\n\nexport function callbackActionFactory(\n dispatchers: AsyncActionDispatcher[],\n success: ActionCallback,\n error?: ActionCallback\n): ActionDispatcher {\n return (dispatch) => {\n const promises = dispatchers.map((v) => v(dispatch));\n Promise.all(promises)\n .then(() => {\n const action = success();\n if (action !== undefined) {\n dispatch(action);\n }\n })\n .catch(() => {\n const action = error && error();\n if (action !== undefined) {\n dispatch(action);\n }\n });\n };\n}\n\nexport function createCallbackAction(\n fn: T,\n success: ActionCallback,\n error?: ActionCallback\n) {\n return (...args: Parameters) =>\n callbackActionFactory(fn(args), success, error);\n}\n","import { Action } from \"redux-actions\";\nimport { SystemApi } from \"../../apis\";\nimport {\n SYSTEM_RUN_TASK,\n SYSTEM_UPDATE_LANGUAGES_LIST,\n SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST,\n SYSTEM_UPDATE_LOGS,\n SYSTEM_UPDATE_RELEASES,\n SYSTEM_UPDATE_SETTINGS,\n SYSTEM_UPDATE_STATUS,\n SYSTEM_UPDATE_TASKS,\n} from \"../constants\";\nimport { createAsyncAction, createAsyncCombineAction } from \"./factory\";\n\nexport const systemUpdateLanguagesAll = createAsyncCombineAction(() => [\n systemUpdateLanguages(),\n systemUpdateLanguagesProfiles(),\n]);\n\nexport const systemUpdateLanguages = createAsyncAction(\n SYSTEM_UPDATE_LANGUAGES_LIST,\n () => SystemApi.languages()\n);\n\nexport const systemUpdateLanguagesProfiles = createAsyncAction(\n SYSTEM_UPDATE_LANGUAGES_PROFILE_LIST,\n () => SystemApi.languagesProfileList()\n);\n\nexport const systemUpdateStatus = createAsyncAction(SYSTEM_UPDATE_STATUS, () =>\n SystemApi.status()\n);\n\nexport const systemUpdateTasks = createAsyncAction(SYSTEM_UPDATE_TASKS, () =>\n SystemApi.getTasks()\n);\n\nexport function systemRunTasks(id: string): Action {\n return {\n type: SYSTEM_RUN_TASK,\n payload: id,\n };\n}\n\nexport const systemUpdateLogs = createAsyncAction(SYSTEM_UPDATE_LOGS, () =>\n SystemApi.logs()\n);\n\nexport const systemUpdateReleases = createAsyncAction(\n SYSTEM_UPDATE_RELEASES,\n () => SystemApi.releases()\n);\n\nexport const systemUpdateSettings = createAsyncAction(\n SYSTEM_UPDATE_SETTINGS,\n () => SystemApi.settings()\n);\n\nexport const systemUpdateSettingsAll = createAsyncCombineAction(() => [\n systemUpdateSettings(),\n systemUpdateLanguagesAll(),\n]);\n","import { createAction } from \"redux-actions\";\nimport { BadgesApi } from \"../../apis\";\nimport {\n SITE_AUTH_SUCCESS,\n SITE_BADGE_UPDATE,\n SITE_INITIALIZED,\n SITE_INITIALIZE_FAILED,\n SITE_NEED_AUTH,\n SITE_NOTIFICATIONS_ADD,\n SITE_NOTIFICATIONS_REMOVE,\n SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP,\n SITE_OFFLINE_UPDATE,\n SITE_SAVE_LOCALSTORAGE,\n SITE_SIDEBAR_UPDATE,\n} from \"../constants\";\nimport { createAsyncAction, createCallbackAction } from \"./factory\";\nimport { systemUpdateLanguagesAll, systemUpdateSettings } from \"./system\";\n\nexport const bootstrap = createCallbackAction(\n () => [systemUpdateLanguagesAll(), systemUpdateSettings()],\n () => siteInitialized(),\n () => siteInitializeFailed()\n);\n\nconst siteInitializeFailed = createAction(SITE_INITIALIZE_FAILED);\n\nconst siteInitialized = createAction(SITE_INITIALIZED);\n\nexport const siteRedirectToAuth = createAction(SITE_NEED_AUTH);\n\nexport const siteAuthSuccess = createAction(SITE_AUTH_SUCCESS);\n\nexport const badgeUpdateAll = createAsyncAction(SITE_BADGE_UPDATE, () =>\n BadgesApi.all()\n);\n\nexport const siteSaveLocalstorage = createAction(\n SITE_SAVE_LOCALSTORAGE,\n (settings: LooseObject) => settings\n);\n\nexport const siteAddError = createAction(\n SITE_NOTIFICATIONS_ADD,\n (err: ReduxStore.Notification) => err\n);\n\nexport const siteRemoveError = createAction(\n SITE_NOTIFICATIONS_REMOVE,\n (id: string) => id\n);\n\nexport const siteRemoveErrorByTimestamp = createAction(\n SITE_NOTIFICATIONS_REMOVE_BY_TIMESTAMP,\n (date: Date) => date\n);\n\nexport const siteChangeSidebar = createAction(\n SITE_SIDEBAR_UPDATE,\n (id: string) => id\n);\n\nexport const siteUpdateOffline = createAction(\n SITE_OFFLINE_UPDATE,\n (state: boolean) => state\n);\n","import { MoviesApi } from \"../../apis\";\nimport {\n MOVIES_UPDATE_BLACKLIST,\n MOVIES_UPDATE_HISTORY_LIST,\n MOVIES_UPDATE_INFO,\n MOVIES_UPDATE_LIST,\n MOVIES_UPDATE_RANGE,\n MOVIES_UPDATE_WANTED_LIST,\n MOVIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport {\n createAsyncAction,\n createAsyncCombineAction,\n createCombineAction,\n} from \"./factory\";\nimport { badgeUpdateAll } from \"./site\";\n\nexport const movieUpdateList = createAsyncAction(MOVIES_UPDATE_LIST, () =>\n MoviesApi.movies()\n);\n\nconst movieUpdateWantedList = createAsyncAction(\n MOVIES_UPDATE_WANTED_LIST,\n (radarrid?: number) => MoviesApi.wantedBy(radarrid)\n);\n\nexport const movieUpdateWantedByRange = createAsyncAction(\n MOVIES_UPDATE_WANTED_RANGE,\n (start: number, length: number) => MoviesApi.wanted(start, length)\n);\n\nexport const movieUpdateWantedBy = createCombineAction((radarrid?: number) => [\n movieUpdateWantedList(radarrid),\n badgeUpdateAll(),\n]);\n\nexport const movieUpdateHistoryList = createAsyncAction(\n MOVIES_UPDATE_HISTORY_LIST,\n () => MoviesApi.history()\n);\n\nexport const movieUpdateByRange = createAsyncAction(\n MOVIES_UPDATE_RANGE,\n (start: number, length: number) => MoviesApi.moviesBy(start, length)\n);\n\nconst movieUpdateInfo = createAsyncAction(MOVIES_UPDATE_INFO, (id?: number[]) =>\n MoviesApi.movies(id)\n);\n\nexport const movieUpdateInfoAll = createAsyncCombineAction((id?: number[]) => [\n movieUpdateInfo(id),\n badgeUpdateAll(),\n]);\n\nexport const movieUpdateBlacklist = createAsyncAction(\n MOVIES_UPDATE_BLACKLIST,\n () => MoviesApi.blacklist()\n);\n","import { ProvidersApi } from \"../../apis\";\nimport { PROVIDER_UPDATE_LIST } from \"../constants\";\nimport { createAsyncAction, createCombineAction } from \"./factory\";\nimport { badgeUpdateAll } from \"./site\";\n\nconst providerUpdateList = createAsyncAction(PROVIDER_UPDATE_LIST, () =>\n ProvidersApi.providers()\n);\n\nexport const providerUpdateAll = createCombineAction(() => [\n providerUpdateList(),\n badgeUpdateAll(),\n]);\n","import { EpisodesApi, SeriesApi } from \"../../apis\";\nimport {\n SERIES_UPDATE_BLACKLIST,\n SERIES_UPDATE_EPISODE_LIST,\n SERIES_UPDATE_HISTORY_LIST,\n SERIES_UPDATE_INFO,\n SERIES_UPDATE_RANGE,\n SERIES_UPDATE_WANTED_LIST,\n SERIES_UPDATE_WANTED_RANGE,\n} from \"../constants\";\nimport {\n createAsyncAction,\n createAsyncCombineAction,\n createCombineAction,\n} from \"./factory\";\nimport { badgeUpdateAll } from \"./site\";\n\nconst seriesUpdateWantedList = createAsyncAction(\n SERIES_UPDATE_WANTED_LIST,\n (episodeid?: number) => EpisodesApi.wantedBy(episodeid)\n);\n\nconst seriesUpdateBy = createAsyncAction(SERIES_UPDATE_INFO, (id?: number[]) =>\n SeriesApi.series(id)\n);\n\nconst episodeUpdateBy = createAsyncAction(\n SERIES_UPDATE_EPISODE_LIST,\n (seriesid: number) => EpisodesApi.bySeriesId(seriesid)\n);\n\nexport const seriesUpdateByRange = createAsyncAction(\n SERIES_UPDATE_RANGE,\n (start: number, length: number) => SeriesApi.seriesBy(start, length)\n);\n\nexport const seriesUpdateWantedByRange = createAsyncAction(\n SERIES_UPDATE_WANTED_RANGE,\n (start: number, length: number) => EpisodesApi.wanted(start, length)\n);\n\nexport const seriesUpdateWantedBy = createCombineAction(\n (episodeid?: number) => [seriesUpdateWantedList(episodeid), badgeUpdateAll()]\n);\n\nexport const episodeUpdateBySeriesId = createCombineAction(\n (seriesid: number) => [episodeUpdateBy(seriesid), badgeUpdateAll()]\n);\n\nexport const seriesUpdateHistoryList = createAsyncAction(\n SERIES_UPDATE_HISTORY_LIST,\n () => EpisodesApi.history()\n);\n\nexport const seriesUpdateInfoAll = createAsyncCombineAction(\n (seriesid?: number[]) => [seriesUpdateBy(seriesid), badgeUpdateAll()]\n);\n\nexport const seriesUpdateBlacklist = createAsyncAction(\n SERIES_UPDATE_BLACKLIST,\n () => EpisodesApi.blacklist()\n);\n","import { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { createCallbackAction } from \"../actions/factory\";\nimport { ActionCallback, AsyncActionDispatcher } from \"../types\";\n\n// function use\nexport function useReduxStore any>(\n selector: T\n) {\n return useSelector>(selector);\n}\n\nexport function useReduxAction void>(action: T) {\n const dispatch = useDispatch();\n return useCallback((...args: Parameters) => dispatch(action(...args)), [\n action,\n dispatch,\n ]);\n}\n\nexport function useReduxActionWith<\n T extends (...args: any[]) => AsyncActionDispatcher\n>(action: T, success: ActionCallback) {\n const dispatch = useDispatch();\n return useCallback(\n (...args: Parameters) => {\n const callbackAction = createCallbackAction(\n () => [action(...args)],\n success\n );\n\n dispatch(callbackAction());\n },\n [dispatch, action, success]\n );\n}\n","import { useCallback, useMemo } from \"react\";\nimport { buildOrderList } from \"../../utilites\";\nimport {\n episodeUpdateBySeriesId,\n movieUpdateBlacklist,\n movieUpdateHistoryList,\n movieUpdateInfoAll,\n movieUpdateWantedBy,\n providerUpdateAll,\n seriesUpdateBlacklist,\n seriesUpdateHistoryList,\n seriesUpdateInfoAll,\n seriesUpdateWantedBy,\n systemUpdateLanguages,\n systemUpdateLanguagesProfiles,\n systemUpdateSettingsAll,\n} from \"../actions\";\nimport { useReduxAction, useReduxStore } from \"./base\";\n\nfunction stateBuilder any>(\n t: T,\n d: D\n): [Readonly, D] {\n return [t, d];\n}\n\nexport function useSystemSettings() {\n const action = useReduxAction(systemUpdateSettingsAll);\n const items = useReduxStore((s) => s.system.settings);\n return stateBuilder(items, action);\n}\n\nexport function useLanguageProfiles() {\n const action = useReduxAction(systemUpdateLanguagesProfiles);\n const items = useReduxStore((s) => s.system.languagesProfiles.data);\n\n return stateBuilder(items, action);\n}\n\nexport function useProfileBy(id: number | null | undefined) {\n const [profiles] = useLanguageProfiles();\n return useMemo(() => profiles.find((v) => v.profileId === id), [\n id,\n profiles,\n ]);\n}\n\nexport function useLanguages(enabled: boolean = false) {\n const action = useReduxAction(systemUpdateLanguages);\n const items = useReduxStore((s) =>\n enabled ? s.system.enabledLanguage.data : s.system.languages.data\n );\n return stateBuilder(items, action);\n}\n\nfunction useLanguageGetter(enabled: boolean = false) {\n const [languages] = useLanguages(enabled);\n return useCallback(\n (code?: string) => {\n if (code === undefined) {\n return undefined;\n } else {\n return languages.find((v) => v.code2 === code);\n }\n },\n [languages]\n );\n}\n\nexport function useLanguageBy(code?: string) {\n const getter = useLanguageGetter();\n return useMemo(() => getter(code), [code, getter]);\n}\n\n// Convert languageprofile items to language\nexport function useProfileItems(profile?: Profile.Languages) {\n const getter = useLanguageGetter(true);\n\n return useMemo(\n () =>\n profile?.items.map(({ language, hi, forced }) => {\n const name = getter(language)?.name ?? \"\";\n return {\n hi: hi === \"True\",\n forced: forced === \"True\",\n code2: language,\n name,\n };\n }) ?? [],\n [getter, profile?.items]\n );\n}\n\nexport function useRawSeries() {\n const action = useReduxAction(seriesUpdateInfoAll);\n const items = useReduxStore((d) => d.series.seriesList);\n return stateBuilder(items, action);\n}\n\nexport function useSeries(order = true) {\n const [rawSeries, action] = useRawSeries();\n const series = useMemo>(() => {\n const state = rawSeries.data;\n if (order) {\n return {\n ...rawSeries,\n data: buildOrderList(state),\n };\n } else {\n return {\n ...rawSeries,\n data: Object.values(state.items),\n };\n }\n }, [rawSeries, order]);\n return stateBuilder(series, action);\n}\n\nexport function useSerieBy(id?: number) {\n const [series, updateSerie] = useRawSeries();\n const updateEpisodes = useReduxAction(episodeUpdateBySeriesId);\n const serie = useMemo>(() => {\n const items = series.data.items;\n let item: Item.Series | null = null;\n if (id && !isNaN(id) && id in items) {\n item = items[id];\n }\n return {\n ...series,\n data: item,\n };\n }, [id, series]);\n\n const update = useCallback(() => {\n if (id && !isNaN(id)) {\n updateSerie([id]);\n updateEpisodes(id);\n }\n }, [id, updateSerie, updateEpisodes]);\n\n return stateBuilder(serie, update);\n}\n\nexport function useEpisodesBy(seriesId?: number) {\n const action = useReduxAction(episodeUpdateBySeriesId);\n const callback = useCallback(() => {\n if (seriesId !== undefined && !isNaN(seriesId)) {\n action(seriesId);\n }\n }, [action, seriesId]);\n\n const list = useReduxStore((d) => d.series.episodeList);\n\n const items = useMemo(() => {\n if (seriesId !== undefined && !isNaN(seriesId)) {\n return list.data[seriesId] ?? [];\n } else {\n return [];\n }\n }, [seriesId, list.data]);\n\n const state: AsyncState = {\n ...list,\n data: items,\n };\n\n return stateBuilder(state, callback);\n}\n\nexport function useRawMovies() {\n const action = useReduxAction(movieUpdateInfoAll);\n const items = useReduxStore((d) => d.movie.movieList);\n return stateBuilder(items, action);\n}\n\nexport function useMovies(order = true) {\n const [rawMovies, action] = useRawMovies();\n const movies = useMemo>(() => {\n const state = rawMovies.data;\n if (order) {\n return {\n ...rawMovies,\n data: buildOrderList(state),\n };\n } else {\n return {\n ...rawMovies,\n data: Object.values(state.items),\n };\n }\n }, [rawMovies, order]);\n return stateBuilder(movies, action);\n}\n\nexport function useMovieBy(id?: number) {\n const [movies, updateMovies] = useRawMovies();\n const movie = useMemo>(() => {\n const items = movies.data.items;\n let item: Item.Movie | null = null;\n if (id && !isNaN(id) && id in items) {\n item = items[id];\n }\n return {\n ...movies,\n data: item,\n };\n }, [id, movies]);\n\n const update = useCallback(() => {\n if (id && !isNaN(id)) {\n updateMovies([id]);\n }\n }, [id, updateMovies]);\n\n return stateBuilder(movie, update);\n}\n\nexport function useWantedSeries() {\n const action = useReduxAction(seriesUpdateWantedBy);\n const items = useReduxStore((d) => d.series.wantedEpisodesList);\n\n return stateBuilder(items, action);\n}\n\nexport function useWantedMovies() {\n const action = useReduxAction(movieUpdateWantedBy);\n const items = useReduxStore((d) => d.movie.wantedMovieList);\n\n return stateBuilder(items, action);\n}\n\nexport function useProviders() {\n const action = useReduxAction(providerUpdateAll);\n const items = useReduxStore((d) => d.system.providers);\n\n return stateBuilder(items, action);\n}\n\nexport function useBlacklistMovies() {\n const action = useReduxAction(movieUpdateBlacklist);\n const items = useReduxStore((d) => d.movie.blacklist);\n\n return stateBuilder(items, action);\n}\n\nexport function useBlacklistSeries() {\n const action = useReduxAction(seriesUpdateBlacklist);\n const items = useReduxStore((d) => d.series.blacklist);\n\n return stateBuilder(items, action);\n}\n\nexport function useMoviesHistory() {\n const action = useReduxAction(movieUpdateHistoryList);\n const items = useReduxStore((s) => s.movie.historyList);\n\n return stateBuilder(items, action);\n}\n\nexport function useSeriesHistory() {\n const action = useReduxAction(seriesUpdateHistoryList);\n const items = useReduxStore((s) => s.series.historyList);\n\n return stateBuilder(items, action);\n}\n","import { useCallback } from \"react\";\nimport { useSystemSettings } from \".\";\nimport { siteAddError, siteRemoveErrorByTimestamp } from \"../actions\";\nimport { useReduxAction, useReduxStore } from \"./base\";\n\nexport function useNotification(id: string, sec: number = 5) {\n const add = useReduxAction(siteAddError);\n const remove = useReduxAction(siteRemoveErrorByTimestamp);\n\n return useCallback(\n (msg: Omit) => {\n const error: ReduxStore.Notification = {\n ...msg,\n id,\n timestamp: new Date(),\n };\n add(error);\n setTimeout(() => remove(error.timestamp), sec * 1000);\n },\n [add, remove, sec, id]\n );\n}\n\nexport function useIsOffline() {\n return useReduxStore((s) => s.site.offline);\n}\n\nexport function useIsSonarrEnabled() {\n const [settings] = useSystemSettings();\n return settings.data?.general.use_sonarr ?? true;\n}\n\nexport function useIsRadarrEnabled() {\n const [settings] = useSystemSettings();\n return settings.data?.general.use_radarr ?? true;\n}\n","import React, {\n FocusEvent,\n FunctionComponent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport \"./chip.scss\";\n\nconst SplitKeys = [\"Tab\", \"Enter\", \" \", \",\", \";\", \".\"];\n\nexport interface ChipsProps {\n disabled?: boolean;\n defaultValue?: readonly string[];\n onChange?: (v: string[]) => void;\n}\n\nexport const Chips: FunctionComponent = ({\n defaultValue,\n disabled,\n onChange,\n}) => {\n const [chips, setChips] = useState(defaultValue ?? []);\n\n const input = useRef(null);\n\n const addChip = useCallback(\n (value: string) => {\n const newChips = [...chips];\n newChips.push(value);\n setChips(newChips);\n onChange && onChange(newChips);\n },\n [chips, onChange]\n );\n\n const removeChip = useCallback(\n (idx?: number) => {\n idx = idx ?? chips.length - 1;\n if (idx !== -1) {\n const newChips = [...chips];\n newChips.splice(idx, 1);\n setChips(newChips);\n onChange && onChange(newChips);\n }\n },\n [chips, onChange]\n );\n\n const clearInput = useCallback(() => {\n if (input.current) {\n input.current.value = \"\";\n }\n }, [input]);\n\n const onKeyUp = useCallback(\n (event: KeyboardEvent) => {\n const pressed = event.key;\n const value = event.currentTarget.value;\n if (SplitKeys.includes(pressed) && value.length !== 0) {\n event.preventDefault();\n addChip(value);\n clearInput();\n } else if (pressed === \"Backspace\" && value.length === 0) {\n event.preventDefault();\n removeChip();\n }\n },\n [addChip, removeChip, clearInput]\n );\n\n const onKeyDown = useCallback((event: KeyboardEvent) => {\n const pressed = event.key;\n const value = event.currentTarget.value;\n if (SplitKeys.includes(pressed) && value.length !== 0) {\n event.preventDefault();\n }\n }, []);\n\n const onBlur = useCallback(\n (event: FocusEvent) => {\n const value = event.currentTarget.value;\n if (value.length !== 0) {\n event.preventDefault();\n addChip(value);\n clearInput();\n }\n },\n [addChip, clearInput]\n );\n\n const chipElements = useMemo(\n () =>\n chips.map((v, idx) => (\n {\n if (!disabled) {\n removeChip(idx);\n }\n }}\n >\n {v}\n \n )),\n [chips, removeChip, disabled]\n );\n\n return (\n
    \n
    {chipElements}
    \n \n
    \n );\n};\n","import { faFile, faFolder } from \"@fortawesome/free-regular-svg-icons\";\nimport { faReply } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Dropdown, DropdownProps, Form, Spinner } from \"react-bootstrap\";\n\nconst backKey = \"--back--\";\n\nfunction getLastSeparator(path: string): number {\n let idx = path.lastIndexOf(\"/\");\n if (idx === -1) {\n idx = path.lastIndexOf(\"\\\\\");\n }\n return idx;\n}\n\nfunction extractPath(raw: string) {\n if (raw.endsWith(\"/\") || raw.endsWith(\"\\\\\")) {\n return raw;\n } else {\n const idx = getLastSeparator(raw);\n return raw.slice(0, idx + 1);\n }\n}\n\ninterface Props {\n defaultValue?: string;\n load: (path: string) => Promise;\n onChange?: (path: string) => void;\n drop?: DropdownProps[\"drop\"];\n}\n\nexport const FileBrowser: FunctionComponent = ({\n defaultValue,\n onChange,\n load,\n drop,\n}) => {\n const [show, canShow] = useState(false);\n const [text, setText] = useState(defaultValue ?? \"\");\n const [path, setPath] = useState(() => extractPath(text));\n const [loading, setLoading] = useState(true);\n\n const filter = useMemo(() => {\n const idx = getLastSeparator(text);\n return text.slice(idx + 1);\n }, [text]);\n\n const previous = useMemo(() => {\n const idx = getLastSeparator(path.slice(0, -1));\n return path.slice(0, idx + 1);\n }, [path]);\n\n const [tree, setTree] = useState([]);\n\n const requestItems = useMemo(() => {\n if (loading) {\n return (\n \n \n \n );\n }\n\n const elements = [];\n\n elements.push(\n ...tree\n .filter((v) => v.name.startsWith(filter))\n .map((v) => (\n \n \n {v.name}\n \n ))\n );\n\n if (elements.length === 0) {\n elements.push(No Files);\n }\n\n if (previous.length !== 0) {\n return [\n \n \n Back\n ,\n ,\n ...elements,\n ];\n } else {\n return elements;\n }\n }, [tree, filter, previous, loading]);\n\n useEffect(() => {\n if (text === path) {\n return;\n }\n\n const newPath = extractPath(text);\n if (newPath !== path) {\n setPath(newPath);\n onChange && onChange(newPath);\n }\n }, [path, text, onChange]);\n\n const input = useRef(null);\n\n useEffect(() => {\n if (show) {\n setLoading(true);\n load(path)\n .then((res) => {\n setTree(res);\n })\n .finally(() => setLoading(false));\n }\n }, [path, load, show]);\n\n return (\n {\n if (!key) {\n return;\n }\n\n if (key !== backKey) {\n setText(key);\n } else {\n setText(previous);\n }\n input.current?.focus();\n }}\n onToggle={(open, _, meta) => {\n if (!open && meta.source !== \"select\") {\n canShow(false);\n } else if (open) {\n canShow(true);\n }\n }}\n >\n ) => {\n setText(e.currentTarget.value);\n }}\n ref={input}\n >\n \n {requestItems}\n \n \n );\n};\n","import React, {\n ChangeEvent,\n FunctionComponent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Form } from \"react-bootstrap\";\n\nexport interface FileFormProps {\n disabled?: boolean;\n multiple?: boolean;\n emptyText: string;\n value?: File[];\n onChange?: (files: File[]) => void;\n}\n\nexport const FileForm: FunctionComponent = ({\n value: files,\n emptyText,\n multiple,\n disabled,\n onChange,\n}) => {\n const [fileList, setFileList] = useState([]);\n\n const input = useRef(null);\n\n useEffect(() => {\n if (files) {\n setFileList(files);\n\n if (files.length === 0 && input.current) {\n // Manual reset file input\n input.current.value = \"\";\n }\n }\n }, [files]);\n\n const label = useMemo(() => {\n if (fileList.length === 0) {\n return emptyText;\n } else {\n if (multiple) {\n return `${fileList.length} Files`;\n } else {\n return fileList[0].name;\n }\n }\n }, [fileList, emptyText, multiple]);\n\n return (\n ) => {\n const { files } = e.target;\n if (files) {\n const list: File[] = [];\n for (const file of files) {\n list.push(file);\n }\n setFileList(list);\n onChange && onChange(list);\n }\n }}\n >\n );\n};\n","import { isArray } from \"lodash\";\nimport React, { useCallback, useMemo } from \"react\";\nimport ReactSelect from \"react-select\";\nimport \"./selector.scss\";\n\nexport interface SelectorProps {\n className?: string;\n placeholder?: string;\n options: readonly SelectorOption[];\n disabled?: boolean;\n clearable?: boolean;\n loading?: boolean;\n multiple?: M;\n onChange?: (k: SelectorValueType) => void;\n label?: (item: T) => string;\n defaultValue?: SelectorValueType;\n value?: SelectorValueType;\n}\n\nexport function Selector(\n props: SelectorProps\n) {\n const {\n className,\n placeholder,\n label,\n disabled,\n clearable,\n loading,\n options,\n multiple,\n onChange,\n defaultValue,\n value,\n } = props;\n\n const nameFromItems = useCallback(\n (item: T) => {\n return options.find((v) => v.value === item)?.label;\n },\n [options]\n );\n\n // TODO: Force as any\n const wrapper = useCallback(\n (value: SelectorValueType | undefined | null): any => {\n if (value !== null && value !== undefined) {\n if (multiple) {\n return (value as SelectorValueType).map((v) => ({\n label: label ? label(v) : nameFromItems(v) ?? \"Unknown\",\n value: v,\n }));\n } else {\n const v = value as T;\n return {\n label: label ? label(v) : nameFromItems(v) ?? \"Unknown\",\n value: v,\n };\n }\n }\n\n return value;\n },\n [label, multiple, nameFromItems]\n );\n\n const defaultWrapper = useMemo(() => wrapper(defaultValue), [\n defaultValue,\n wrapper,\n ]);\n\n const valueWrapper = useMemo(() => wrapper(value), [wrapper, value]);\n\n return (\n = 10}\n isMulti={multiple}\n closeMenuOnSelect={!multiple}\n defaultValue={defaultWrapper}\n value={valueWrapper}\n isClearable={clearable}\n isDisabled={disabled}\n options={options}\n className={`custom-selector w-100 ${className ?? \"\"}`}\n classNamePrefix=\"selector\"\n onChange={(v) => {\n if (onChange) {\n let res: T | T[] | null = null;\n if (isArray(v)) {\n res = (v as ReadonlyArray>).map(\n (val) => val.value\n );\n } else {\n res = (v as SelectorOption)?.value ?? null;\n }\n // TODO: Force as any\n onChange(res as any);\n }\n }}\n >\n );\n}\n","import {\n faCheck,\n faCircleNotch,\n faExclamationTriangle,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Alert, Button, ButtonProps, Container } from \"react-bootstrap\";\nimport { LoadingIndicator } from \".\";\nimport { useNotification } from \"../@redux/hooks/site\";\nimport { Reload } from \"../utilites\";\nimport { Selector, SelectorProps } from \"./inputs\";\n\nenum RequestState {\n Success,\n Error,\n Invalid,\n}\n\ninterface AsyncStateOverlayProps {\n state: AsyncState;\n exist?: (item: T) => boolean;\n children?: (item: NonNullable>, error?: Error) => JSX.Element;\n}\n\nfunction defaultExist(item: any) {\n if (item instanceof Array) {\n return item.length !== 0;\n } else {\n return item !== null && item !== undefined;\n }\n}\n\nexport function AsyncStateOverlay(props: AsyncStateOverlayProps) {\n const { exist, state, children } = props;\n const missing = exist ? !exist(state.data) : !defaultExist(state.data);\n\n const onError = useNotification(\"async-overlay\");\n\n useEffect(() => {\n if (!state.updating && state.error !== undefined && !missing) {\n onError({\n type: \"error\",\n message: state.error.message,\n });\n }\n }, [state, onError, missing]);\n\n if (state.updating) {\n if (missing) {\n return ;\n }\n } else {\n if (state.error && missing) {\n return (\n \n \n \n \n Ouch! You got an error\n \n

    {state.error.message}

    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n }\n\n return children ? children(state.data!, state.error) : null;\n}\n\ninterface PromiseProps {\n promise: () => Promise;\n children: FunctionComponent;\n}\n\nexport function PromiseOverlay({ promise, children }: PromiseProps) {\n const [item, setItem] = useState(null);\n\n useEffect(() => {\n promise()\n .then((result) => setItem(result))\n .catch(() => {});\n }, [promise]);\n\n if (item === null) {\n return ;\n } else {\n return children(item);\n }\n}\n\ntype ExtractAS> = Unpacked>;\n\ntype AsyncSelectorProps> = {\n state: T;\n label: (item: ExtractAS) => string;\n};\n\ntype RemovedSelectorProps = Omit<\n SelectorProps,\n \"loading\" | \"options\"\n>;\n\nexport function AsyncSelector<\n T extends AsyncState,\n M extends boolean = false\n>(\n props: Override, RemovedSelectorProps, M>>\n) {\n const { label, state, ...selector } = props;\n\n const options = useMemo>[]>(\n () =>\n state.data.map((v) => ({\n label: label(v),\n value: v,\n })),\n [state, label]\n );\n\n return (\n \n );\n}\n\ninterface AsyncButtonProps {\n as?: ButtonProps[\"as\"];\n variant?: ButtonProps[\"variant\"];\n size?: ButtonProps[\"size\"];\n\n className?: string;\n disabled?: boolean;\n onChange?: (v: boolean) => void;\n\n noReset?: boolean;\n\n promise: () => Promise | null;\n onSuccess?: (result: T) => void;\n error?: () => void;\n}\n\nexport function AsyncButton(\n props: PropsWithChildren>\n): JSX.Element {\n const {\n children: propChildren,\n className,\n promise,\n onSuccess,\n noReset,\n error,\n onChange,\n disabled,\n ...button\n } = props;\n\n const [loading, setLoading] = useState(false);\n\n const [state, setState] = useState(RequestState.Invalid);\n\n const [, setHandle] = useState>(null);\n\n useEffect(() => {\n if (noReset) {\n return;\n }\n\n if (state === RequestState.Error || state === RequestState.Success) {\n const handle = setTimeout(() => setState(RequestState.Invalid), 2 * 1000);\n setHandle(handle);\n }\n\n // Clear timeout handle so we wont leak memory\n return () => {\n setHandle((handle) => {\n if (handle) {\n clearTimeout(handle);\n }\n return null;\n });\n };\n }, [state, noReset]);\n\n const click = useCallback(() => {\n if (state !== RequestState.Invalid) {\n return;\n }\n\n const result = promise();\n\n if (result) {\n setLoading(true);\n onChange && onChange(true);\n result\n .then((res) => {\n setState(RequestState.Success);\n onSuccess && onSuccess(res);\n })\n .catch(() => {\n setState(RequestState.Error);\n error && error();\n })\n .finally(() => {\n setLoading(false);\n onChange && onChange(false);\n });\n }\n }, [error, onChange, promise, onSuccess, state]);\n\n let children = propChildren;\n if (loading) {\n children = ;\n }\n\n if (state === RequestState.Success) {\n children = ;\n } else if (state === RequestState.Error) {\n children = ;\n }\n\n return (\n \n {children}\n \n );\n}\n","import RcSlider from \"rc-slider\";\nimport \"rc-slider/assets/index.css\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport \"./slider.scss\";\n\ntype TooltipsOptions = boolean | \"Always\";\n\nexport interface SliderProps {\n tooltips?: TooltipsOptions;\n min?: number;\n max?: number;\n start?: number;\n defaultValue?: number;\n onAfterChange?: (value: number) => void;\n onChange?: (value: number) => void;\n}\n\nexport const Slider: FunctionComponent = ({\n min,\n max,\n tooltips,\n defaultValue,\n onChange,\n onAfterChange,\n}) => {\n return (\n
    \n {min ?? 0}\n (\n \n \n
    \n )}\n >\n {max ?? 100}\n \n );\n};\n\nconst SliderTooltips: FunctionComponent<{\n tooltips?: TooltipsOptions;\n value: number;\n}> = ({ tooltips, value }) => {\n const cls = useMemo(() => {\n const tipsCls = [\"rc-slider-handle-tips\"];\n if (tooltips !== undefined) {\n if (typeof tooltips === \"string\") {\n tipsCls.push(\"rc-slider-handle-tips-always\");\n } else if (tooltips === false) {\n tipsCls.push(\"rc-slider-handle-tips-hidden\");\n }\n }\n return tipsCls.join(\" \");\n }, [tooltips]);\n\n return {value};\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-common-types\";\nimport { faCircleNotch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, MouseEvent } from \"react\";\nimport { Badge, Button, ButtonProps } from \"react-bootstrap\";\n\nexport const ActionBadge: FunctionComponent<{\n icon: IconDefinition;\n onClick?: (e: MouseEvent) => void;\n}> = ({ icon, onClick }) => {\n return (\n \n \n \n );\n};\n\ninterface ActionButtonProps extends ActionButtonItemProps {\n disabled?: boolean;\n destructive?: boolean;\n variant?: string;\n onClick?: (e: MouseEvent) => void;\n className?: string;\n size?: ButtonProps[\"size\"];\n}\n\nexport const ActionButton: FunctionComponent = ({\n onClick,\n destructive,\n disabled,\n variant,\n className,\n size,\n ...other\n}) => {\n return (\n \n \n \n );\n};\n\ninterface ActionButtonItemProps {\n loading?: boolean;\n icon: IconDefinition;\n children?: string;\n}\n\nexport const ActionButtonItem: FunctionComponent = ({\n icon,\n children,\n loading,\n}) => {\n return (\n \n \n {children && !loading ? (\n {children}\n ) : null}\n \n );\n};\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n MouseEvent,\n PropsWithChildren,\n useCallback,\n useState,\n} from \"react\";\nimport { Button } from \"react-bootstrap\";\n\ninterface CHButtonProps {\n disabled?: boolean;\n hidden?: boolean;\n icon: IconDefinition;\n updating?: boolean;\n updatingIcon?: IconDefinition;\n onClick?: (e: MouseEvent) => void;\n}\n\nconst ContentHeaderButton: FunctionComponent = (props) => {\n const { children, icon, disabled, updating, updatingIcon, onClick } = props;\n\n let displayIcon = icon;\n if (updating) {\n displayIcon = updatingIcon ? updatingIcon : faSpinner;\n }\n\n return (\n \n \n \n {children}\n \n \n );\n};\n\ntype CHAsyncButtonProps Promise> = {\n promise: T;\n onSuccess?: (item: PromiseType>) => void;\n} & Omit;\n\nexport function ContentHeaderAsyncButton Promise>(\n props: PropsWithChildren>\n): JSX.Element {\n const { promise, onSuccess, ...button } = props;\n\n const [updating, setUpdate] = useState(false);\n\n const click = useCallback(() => {\n setUpdate(true);\n promise().then((val) => {\n setUpdate(false);\n onSuccess && onSuccess(val);\n });\n }, [onSuccess, promise]);\n\n return (\n \n );\n}\n\nexport default ContentHeaderButton;\n","import React, { FunctionComponent } from \"react\";\n\ntype GroupPosition = \"start\" | \"end\";\ninterface GroupProps {\n pos: GroupPosition;\n}\n\nconst ContentHeaderGroup: FunctionComponent = (props) => {\n const { children, pos } = props;\n\n const className = `d-flex flex-grow-1 align-items-center justify-content-${pos}`;\n return
    {children}
    ;\n};\n\nexport default ContentHeaderGroup;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport ContentHeaderButton, { ContentHeaderAsyncButton } from \"./Button\";\nimport ContentHeaderGroup from \"./Group\";\nimport \"./style.scss\";\n\ninterface Props {\n scroll?: boolean;\n className?: string;\n}\n\ndeclare type Header = FunctionComponent & {\n Button: typeof ContentHeaderButton;\n AsyncButton: typeof ContentHeaderAsyncButton;\n Group: typeof ContentHeaderGroup;\n};\n\nexport const ContentHeader: Header = ({ children, scroll, className }) => {\n const cls = useMemo(() => {\n const rowCls = [\"content-header\", \"bg-dark\", \"p-2\"];\n\n if (className !== undefined) {\n rowCls.push(className);\n }\n\n if (scroll !== false) {\n rowCls.push(\"scroll\");\n }\n return rowCls.join(\" \");\n }, [scroll, className]);\n\n let childItem: React.ReactNode;\n\n if (scroll !== false) {\n childItem = (\n
    {children}
    \n );\n } else {\n childItem = children;\n }\n return {childItem};\n};\n\nContentHeader.Button = ContentHeaderButton;\nContentHeader.Group = ContentHeaderGroup;\nContentHeader.AsyncButton = ContentHeaderAsyncButton;\n\nexport default ContentHeader;\n","import React, { useMemo } from \"react\";\nimport { Selector, SelectorProps } from \"../components\";\n\ninterface Props {\n options: readonly Language[];\n}\n\ntype RemovedSelectorProps = Omit<\n SelectorProps,\n \"label\" | \"placeholder\"\n>;\n\nexport type LanguageSelectorProps = Override<\n Props,\n RemovedSelectorProps\n>;\n\nexport function LanguageSelector(\n props: LanguageSelectorProps\n) {\n const { options, ...selector } = props;\n\n const items = useMemo[]>(\n () =>\n options.map((v) => ({\n label: v.name,\n value: v,\n })),\n [options]\n );\n\n return (\n l.name}\n {...selector}\n >\n );\n}\n","import React, {\n Dispatch,\n FunctionComponent,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { log } from \"../../utilites/logger\";\n\nconst ModalContext = React.createContext<[string[], Dispatch]>([\n [],\n (s) => {},\n]);\n\nconst PayloadContext = React.createContext<[any[], Dispatch]>([\n [],\n (p) => {},\n]);\n\n// TODO: Performance\nexport function useShowModal() {\n const [keys, setKeys] = useContext(ModalContext);\n const [payloads, setPayloads] = useContext(PayloadContext);\n return useCallback(\n (key: string, payload?: T) => {\n log(\"info\", `modal ${key} sending payload`, payload);\n\n setKeys([...keys, key]);\n setPayloads([...payloads, payload ?? null]);\n },\n [keys, payloads, setKeys, setPayloads]\n );\n}\n\nexport function useCloseModal() {\n const [keys, setKeys] = useContext(ModalContext);\n const [payloads, setPayloads] = useContext(PayloadContext);\n return useCallback(() => {\n const newKey = [...keys];\n newKey.pop();\n const newPayload = [...payloads];\n newPayload.pop();\n setKeys(newKey);\n setPayloads(newPayload);\n }, [keys, payloads, setKeys, setPayloads]);\n}\n\nexport function useCloseModalUntil(key: string) {\n const [keys, setKeys] = useContext(ModalContext);\n const [payloads, setPayloads] = useContext(PayloadContext);\n return useCallback(() => {\n const idx = keys.findIndex((v) => v === key);\n if (idx !== -1) {\n const newKey = keys.slice(0, idx + 1);\n const newPayload = payloads.slice(0, idx + 1);\n setKeys(newKey);\n setPayloads(newPayload);\n } else {\n log(\"error\", \"Cannot close modal, key is unavailable\");\n }\n }, [keys, payloads, setKeys, setPayloads, key]);\n}\n\nexport function useIsModalShow(key: string) {\n const keys = useContext(ModalContext)[0];\n return key === keys[keys.length - 1];\n}\n\nexport function useOnModalShow(key: string, show: () => void) {\n const isShow = useIsModalShow(key);\n useEffect(() => {\n if (isShow) {\n show();\n }\n }, [isShow, show]);\n}\n\nexport function usePayload(key: string): T | null {\n const payloads = useContext(PayloadContext)[0];\n const keys = useContext(ModalContext)[0];\n return useMemo(() => {\n const idx = keys.findIndex((v) => v === key);\n return idx !== -1 ? payloads[idx] : null;\n }, [keys, payloads, key]);\n}\n\nexport const ModalProvider: FunctionComponent = ({ children }) => {\n const [key, setKey] = useState([]);\n const [payload, setPayload] = useState([]);\n\n return (\n \n \n {children}\n \n \n );\n};\n","import {\n faCheck,\n faCircleNotch,\n faExclamationTriangle,\n faInfoCircle,\n faTrash,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Container, Form } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport {\n AsyncButton,\n FileForm,\n LanguageSelector,\n MessageIcon,\n SimpleTable,\n useCloseModal,\n usePayload,\n} from \"..\";\nimport {\n useEpisodesBy,\n useProfileBy,\n useProfileItems,\n} from \"../../@redux/hooks\";\nimport { EpisodesApi, SubtitlesApi } from \"../../apis\";\nimport { Selector } from \"../inputs\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\n\nenum State {\n Update,\n Valid,\n Warning,\n Error,\n}\n\ninterface PendingSubtitle {\n form: FormType.UploadSubtitle;\n didCheck: boolean;\n instance?: Item.Episode;\n}\n\ntype SubtitleState = {\n state: State;\n infos: string[];\n};\n\ntype ProcessState = {\n [name: string]: SubtitleState;\n};\n\ntype EpisodeMap = {\n [name: string]: Item.Episode;\n};\n\ninterface MovieProps {}\n\nconst SeriesUploadModal: FunctionComponent = (\n modal\n) => {\n const series = usePayload(modal.modalKey);\n\n const [episodes, updateEpisodes] = useEpisodesBy(series?.sonarrSeriesId);\n\n const [uploading, setUpload] = useState(false);\n\n const closeModal = useCloseModal();\n\n const [pending, setPending] = useState([]);\n\n const [processState, setProcessState] = useState({});\n\n const profile = useProfileBy(series?.profileId);\n\n const languages = useProfileItems(profile);\n\n const filelist = useMemo(() => pending.map((v) => v.form.file), [pending]);\n\n // Vaildate\n useEffect(() => {\n const states = pending.reduce((prev, info) => {\n const subState: SubtitleState = {\n state: State.Valid,\n infos: [],\n };\n\n const { form, instance } = info;\n\n if (!info.didCheck) {\n subState.state = State.Update;\n } else if (!instance) {\n subState.infos.push(\"Season or episode info is missing\");\n subState.state = State.Error;\n } else {\n if (\n instance.subtitles.find((v) => v.code2 === form.language) !==\n undefined\n ) {\n subState.infos.push(\"Overwrite existing subtitle\");\n subState.state = State.Warning;\n }\n }\n\n prev[form.file.name] = subState;\n return prev;\n }, {});\n\n setProcessState(states);\n }, [pending]);\n\n const checkEpisodes = useCallback(\n async (list: PendingSubtitle[]) => {\n const names = list.map((v) => v.form.file.name);\n\n if (names.length > 0) {\n const results = await SubtitlesApi.info(names);\n\n const episodeMap = results.reduce((prev, curr) => {\n const ep = episodes.data.find(\n (v) => v.season === curr.season && v.episode === curr.episode\n );\n if (ep) {\n prev[curr.filename] = ep;\n }\n return prev;\n }, {});\n\n setPending((pd) =>\n pd.map((v) => ({\n ...v,\n didCheck: true,\n instance: episodeMap[v.form.file.name],\n }))\n );\n }\n },\n [episodes.data]\n );\n\n const updateLanguage = useCallback(\n (lang: Nullable) => {\n if (lang) {\n const list = pending.map((v) => {\n const form = v.form;\n return {\n ...v,\n form: {\n ...form,\n language: lang.code2,\n hi: lang.hi ?? false,\n forced: lang.forced ?? false,\n },\n };\n });\n setPending(list);\n }\n },\n [pending]\n );\n\n const setFiles = useCallback(\n (files: File[]) => {\n // At lease 1 language is required\n const lang = languages[0];\n const list: PendingSubtitle[] = files.map((f) => {\n return {\n form: {\n file: f,\n language: lang.code2,\n hi: lang.hi ?? false,\n forced: lang.forced ?? false,\n },\n didCheck: false,\n };\n });\n setPending(list);\n\n const states = files.reduce(\n (v, curr) => ({\n ...v,\n [curr.name]: { state: State.Update, infos: [] },\n }),\n {}\n );\n setProcessState(states);\n checkEpisodes(list);\n },\n [languages, checkEpisodes]\n );\n\n const uploadSubtitles = useCallback(async () => {\n if (series === null) {\n return;\n }\n\n const { sonarrSeriesId: seriesid } = series;\n\n let uploadStates = pending.reduce((prev, curr) => {\n prev[curr.form.file.name] = { state: State.Update, infos: [] };\n return prev;\n }, {});\n\n setProcessState(uploadStates);\n\n for (const info of pending) {\n if (info.instance) {\n const { sonarrEpisodeId: episodeid } = info.instance;\n await EpisodesApi.uploadSubtitles(seriesid, episodeid, info.form);\n\n uploadStates = {\n ...uploadStates,\n [info.form.file.name]: { state: State.Valid, infos: [] },\n };\n\n setProcessState(uploadStates);\n }\n }\n }, [series, pending]);\n\n const canUpload = useMemo(\n () => pending.length > 0 && pending.every((v) => v.instance !== undefined),\n [pending]\n );\n\n const tableShow = pending.length > 0;\n\n const columns = useMemo[]>(\n () => [\n {\n id: \"Icon\",\n accessor: \"instance\",\n className: \"text-center\",\n Cell: ({ row, loose }) => {\n const {\n form: { file },\n } = row.original;\n\n const name = file.name;\n const states = loose![1] as ProcessState;\n\n let icon = faCircleNotch;\n let color: string | undefined = undefined;\n let spin = false;\n let msgs: string[] = [];\n\n if (name in states) {\n const state = states[name];\n msgs = state.infos;\n switch (state.state) {\n case State.Error:\n icon = faExclamationTriangle;\n color = \"var(--danger)\";\n break;\n case State.Valid:\n icon = faCheck;\n color = \"var(--success)\";\n break;\n case State.Warning:\n icon = faInfoCircle;\n color = \"var(--warning)\";\n break;\n case State.Update:\n spin = true;\n break;\n default:\n break;\n }\n }\n\n return (\n \n );\n },\n },\n {\n Header: \"File\",\n accessor: (d) => d.form.file.name,\n },\n {\n Header: \"Episode\",\n accessor: \"instance\",\n className: \"vw-1\",\n Cell: ({ value, loose, row, externalUpdate }) => {\n const availables = loose![2] as Item.Episode[];\n\n const options = availables.map>(\n (ep) => ({\n label: `(${ep.season}x${ep.episode}) ${ep.title}`,\n value: ep,\n })\n );\n\n const change = useCallback(\n (ep: Nullable) => {\n if (ep) {\n const newInfo = { ...row.original };\n newInfo.instance = ep;\n externalUpdate && externalUpdate(row, newInfo);\n }\n },\n [row, externalUpdate]\n );\n\n return (\n \n );\n },\n },\n {\n accessor: \"form\",\n Cell: ({ row, externalUpdate, loose }) => {\n const [uploading] = loose!;\n return (\n {\n externalUpdate && externalUpdate(row);\n }}\n >\n \n \n );\n },\n },\n ],\n []\n );\n\n const updateItem = useCallback>(\n (row, info?: PendingSubtitle) => {\n setPending((pd) => {\n const newPending = [...pd];\n if (info) {\n newPending[row.index] = info;\n } else {\n newPending.splice(row.index, 1);\n }\n return newPending;\n });\n },\n []\n );\n\n const footer = (\n
    \n
    \n 0 ? languages[0] : undefined}\n onChange={updateLanguage}\n >\n
    \n
    \n
    \n
    \n );\n\n return (\n \n \n
    \n \n \n \n
    \n \n
    \n \n );\n};\n\nexport default SeriesUploadModal;\n","import React, { FunctionComponent } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { useIsModalShow } from \".\";\nimport { useCloseModal } from \"./provider\";\n\nexport interface BaseModalProps {\n modalKey: string;\n size?: \"sm\" | \"lg\" | \"xl\";\n closeable?: boolean;\n title?: string;\n footer?: JSX.Element;\n}\n\nexport const BaseModal: FunctionComponent = (props) => {\n const { size, closeable, modalKey, title, children, footer } = props;\n\n const show = useIsModalShow(modalKey);\n const closeModal = useCloseModal();\n\n const canClose = closeable !== false;\n\n return (\n \n {title}\n {children}\n \n \n );\n};\n\nexport default BaseModal;\n","import { faFileExcel } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { AsyncButton } from \"../components\";\n\ninterface Props {\n history: History.Base;\n update: () => void;\n promise: (form: FormType.AddBlacklist) => Promise;\n}\n\nexport const BlacklistButton: FunctionComponent = ({\n history,\n update,\n promise,\n}) => {\n const { provider, subs_id, language, subtitles_path, blacklisted } = history;\n\n if (subs_id && provider && language) {\n return (\n {\n const { code2 } = language;\n const form: FormType.AddBlacklist = {\n provider,\n subs_id,\n subtitles_path,\n language: code2,\n };\n return promise(form);\n }}\n onSuccess={update}\n >\n \n \n );\n } else {\n return null;\n }\n};\n","import React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Column } from \"react-table\";\nimport { AsyncStateOverlay, HistoryIcon, LanguageText, PageTable } from \"..\";\nimport { EpisodesApi, MoviesApi } from \"../../apis\";\nimport { BlacklistButton } from \"../../generic/blacklist\";\nimport { updateAsyncState } from \"../../utilites\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\nimport { usePayload } from \"./provider\";\n\nexport const MovieHistoryModal: FunctionComponent = (props) => {\n const { ...modal } = props;\n\n const movie = usePayload(modal.modalKey);\n\n const [history, setHistory] = useState>({\n updating: false,\n data: [],\n });\n\n const update = useCallback(() => {\n if (movie) {\n updateAsyncState(MoviesApi.history(movie.radarrId), setHistory, []);\n }\n }, [movie]);\n\n useEffect(() => {\n update();\n }, [update]);\n\n const columns = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: (row) => {\n return ;\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n // Actions\n accessor: \"blacklisted\",\n Cell: ({ row }) => {\n const original = row.original;\n return (\n \n MoviesApi.addBlacklist(original.radarrId, form)\n }\n history={original}\n >\n );\n },\n },\n ],\n [update]\n );\n\n return (\n \n \n {(data) => (\n \n )}\n \n \n );\n};\n\ninterface EpisodeHistoryProps {}\n\nexport const EpisodeHistoryModal: FunctionComponent<\n BaseModalProps & EpisodeHistoryProps\n> = (props) => {\n const episode = usePayload(props.modalKey);\n\n const [history, setHistory] = useState>({\n updating: false,\n data: [],\n });\n\n const update = useCallback(() => {\n if (episode) {\n updateAsyncState(\n EpisodesApi.history(episode.sonarrEpisodeId),\n setHistory,\n []\n );\n }\n }, [episode]);\n\n useEffect(() => update(), [update]);\n\n const columns = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: (row) => {\n return ;\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n // Actions\n accessor: \"blacklisted\",\n Cell: ({ row }) => {\n const original = row.original;\n const { sonarrSeriesId, sonarrEpisodeId } = original;\n return (\n \n EpisodesApi.addBlacklist(sonarrSeriesId, sonarrEpisodeId, form)\n }\n >\n );\n },\n },\n ],\n [update]\n );\n\n return (\n \n \n {(data) => (\n \n )}\n \n \n );\n};\n","import React, { FunctionComponent, useMemo, useState } from \"react\";\nimport { Container, Form } from \"react-bootstrap\";\nimport { AsyncButton, Selector } from \"../\";\nimport { useLanguageProfiles } from \"../../@redux/hooks\";\nimport { GetItemId } from \"../../utilites\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\nimport { useCloseModal, usePayload } from \"./provider\";\n\ninterface Props {\n submit: (form: FormType.ModifyItem) => Promise;\n onSuccess?: (item: Item.Base) => void;\n}\n\nconst Editor: FunctionComponent = (props) => {\n const { onSuccess, submit, ...modal } = props;\n\n const [profiles] = useLanguageProfiles();\n\n const item = usePayload(modal.modalKey);\n\n const closeModal = useCloseModal();\n\n const profileOptions = useMemo[]>(\n () =>\n profiles.map((v) => {\n return { label: v.name, value: v.profileId };\n }),\n [profiles]\n );\n const [id, setId] = useState>(null);\n\n const [updating, setUpdating] = useState(false);\n\n const footer = useMemo(\n () => (\n {\n if (item) {\n const itemId = GetItemId(item);\n return submit({\n id: [itemId],\n profileid: [id],\n });\n } else {\n return null;\n }\n }}\n onSuccess={() => {\n closeModal();\n onSuccess && item && onSuccess(item);\n }}\n >\n Save\n \n ),\n [closeModal, id, item, onSuccess, submit]\n );\n\n return (\n \n \n
    \n \n Audio\n v.name).join(\", \")}\n >\n \n \n Languages Profiles\n setId(v === undefined ? null : v)}\n >\n \n
    \n
    \n \n );\n};\n\nexport default Editor;\n","import React, { FunctionComponent, useEffect, useMemo, useState } from \"react\";\nimport { Container, Form } from \"react-bootstrap\";\nimport {\n AsyncButton,\n FileForm,\n LanguageSelector,\n useCloseModal,\n usePayload,\n} from \"..\";\nimport {\n useLanguageBy,\n useLanguages,\n useMovieBy,\n useProfileBy,\n} from \"../../@redux/hooks\";\nimport { MoviesApi } from \"../../apis\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\ninterface MovieProps {}\n\nconst MovieUploadModal: FunctionComponent = (\n props\n) => {\n const modal = props;\n\n const [availableLanguages] = useLanguages(true);\n\n const movie = usePayload(modal.modalKey);\n const [, update] = useMovieBy(movie?.radarrId);\n\n const closeModal = useCloseModal();\n\n const [uploading, setUpload] = useState(false);\n\n const [language, setLanguage] = useState>(null);\n\n const profile = useProfileBy(movie?.profileId);\n\n const defaultLanguage = useLanguageBy(profile?.items[0]?.language);\n\n useEffect(() => setLanguage(defaultLanguage ?? null), [defaultLanguage]);\n\n const [file, setFile] = useState>(null);\n const [forced, setForced] = useState(false);\n\n const canUpload = useMemo(() => {\n return file !== null && language?.code2;\n }, [language, file]);\n\n const footer = (\n {\n if (file && movie && language) {\n return MoviesApi.uploadSubtitles(movie.radarrId, {\n file: file,\n forced,\n hi: false,\n language: language.code2,\n });\n } else {\n return null;\n }\n }}\n onSuccess={() => {\n closeModal();\n update();\n }}\n >\n Upload\n \n );\n\n return (\n \n \n
    \n \n Language\n {\n if (lang) {\n setLanguage(lang);\n }\n }}\n >\n \n \n Subtitle File\n {\n setFile(list[0]);\n }}\n >\n \n \n setForced(e.target.checked)}\n label=\"Forced\"\n >\n \n
    \n
    \n \n );\n};\n\nexport default MovieUploadModal;\n","import { isNull } from \"lodash\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n ActionType,\n ensurePluginOrder,\n Hooks,\n ReducerTableState,\n TableInstance,\n TableOptions,\n TableState,\n} from \"react-table\";\nimport { isNonNullable } from \"../../../utilites\";\nimport { PageControlAction } from \"../types\";\n\nconst pluginName = \"useAsyncPagination\";\n\nconst ActionLoadingChange = \"loading-change\";\n\nfunction useAsyncPagination(hooks: Hooks) {\n hooks.stateReducers.push(reducer);\n hooks.useInstance.push(useInstance);\n hooks.useOptions.push(useOptions);\n}\nuseAsyncPagination.pluginName = pluginName;\n\nfunction reducer(\n state: TableState,\n action: ActionType,\n previous: TableState | undefined,\n instance: TableInstance | undefined\n): ReducerTableState {\n if (action.type === ActionLoadingChange && instance) {\n let pageToLoad:\n | PageControlAction\n | undefined = action.pageToLoad as PageControlAction;\n let needLoadingScreen = false;\n const { asyncState } = instance;\n const { pageIndex, pageSize } = state;\n let index = pageIndex;\n if (pageToLoad === \"prev\") {\n index -= 1;\n } else if (pageToLoad === \"next\") {\n index += 1;\n } else if (typeof pageToLoad === \"number\") {\n index = pageToLoad;\n }\n const pageStart = index * pageSize;\n const pageEnd = pageStart + pageSize;\n if (asyncState) {\n const error = asyncState.error;\n const order = asyncState.data.order.slice(pageStart, pageEnd);\n\n const isInitializedError = order.length === 0 && error !== undefined;\n const isLoadingError = order.length !== 0 && order.every(isNull);\n\n if (isInitializedError || isLoadingError) {\n needLoadingScreen = true;\n } else if (order.every(isNonNullable)) {\n pageToLoad = undefined;\n }\n }\n return { ...state, pageToLoad, needLoadingScreen };\n }\n return state;\n}\n\nfunction useOptions(options: TableOptions) {\n options.manualPagination = true;\n if (options.initialState === undefined) {\n options.initialState = {};\n }\n options.initialState.pageToLoad = 0;\n options.initialState.needLoadingScreen = true;\n return options;\n}\n\nfunction useInstance(instance: TableInstance) {\n const {\n plugins,\n asyncLoader,\n dispatch,\n asyncState,\n asyncId,\n rows,\n nextPage,\n previousPage,\n gotoPage,\n state: { pageIndex, pageSize, pageToLoad },\n } = instance;\n\n ensurePluginOrder(plugins, [\"usePagination\"], pluginName);\n\n const totalCount = asyncState?.data.order.length ?? 0;\n const pageCount = Math.ceil(totalCount / pageSize);\n const pageStart = pageIndex * pageSize;\n const pageEnd = pageStart + pageSize;\n\n useEffect(() => {\n // TODO Lazy Load\n if (pageToLoad === undefined) {\n return;\n }\n asyncLoader && asyncLoader(pageStart, pageSize);\n }, [asyncLoader, pageStart, pageSize, pageToLoad]);\n\n const setPageToLoad = useCallback(\n (pageToLoad?: PageControlAction) => {\n dispatch({ type: ActionLoadingChange, pageToLoad });\n },\n [dispatch]\n );\n\n useEffect(() => {\n if (asyncState?.updating === false) {\n setPageToLoad();\n }\n }, [asyncState?.updating, setPageToLoad]);\n\n const newGoto = useCallback(\n (updater: number | ((pageIndex: number) => number)) => {\n let page: number;\n if (typeof updater === \"number\") {\n page = updater;\n } else {\n page = updater(pageIndex);\n }\n if (page === pageIndex) {\n return;\n }\n setPageToLoad(page);\n gotoPage(page);\n },\n [pageIndex, setPageToLoad, gotoPage]\n );\n\n const newPrevious = useCallback(() => {\n if (pageIndex === 0) {\n return;\n }\n setPageToLoad(\"prev\");\n previousPage();\n }, [setPageToLoad, previousPage, pageIndex]);\n\n const newNext = useCallback(() => {\n if (pageIndex === pageCount) {\n return;\n }\n setPageToLoad(\"next\");\n nextPage();\n }, [setPageToLoad, nextPage, pageCount, pageIndex]);\n\n const newPages = useMemo(() => {\n // TODO: Performance\n\n const order = (asyncState?.data.order\n .slice(pageStart, pageEnd)\n .filter(isNonNullable) ?? []) as number[];\n\n return order.flatMap((num) => {\n const row = rows.find((v) => asyncId && asyncId(v.original) === num);\n if (row) {\n return [row];\n } else {\n return [];\n }\n });\n }, [pageStart, pageEnd, asyncId, asyncState?.data.order, rows]);\n\n Object.assign, Partial>>(instance, {\n previousPage: newPrevious,\n nextPage: newNext,\n gotoPage: newGoto,\n page: newPages,\n pageCount,\n });\n}\n\nexport default useAsyncPagination;\n","import React, { forwardRef, useEffect, useRef } from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport {\n CellProps,\n Column,\n ColumnInstance,\n ensurePluginOrder,\n HeaderProps,\n Hooks,\n MetaBase,\n TableInstance,\n TableToggleCommonProps,\n} from \"react-table\";\n\nconst pluginName = \"useCustomSelection\";\n\nconst checkboxId = \"---selection---\";\n\ninterface CheckboxProps {\n idIn: string;\n}\n\nconst Checkbox = forwardRef<\n HTMLInputElement,\n TableToggleCommonProps & CheckboxProps\n>(({ indeterminate, idIn, ...rest }, ref) => {\n const defaultRef = useRef(null);\n const resolvedRef = ref || defaultRef;\n\n useEffect(() => {\n if (typeof resolvedRef === \"object\" && resolvedRef.current) {\n resolvedRef.current.indeterminate = indeterminate ?? false;\n }\n }, [resolvedRef, indeterminate]);\n\n return ;\n});\n\nfunction useCustomSelection(hooks: Hooks) {\n hooks.visibleColumnsDeps.push((deps, { instance }) => [\n ...deps,\n instance.isSelecting,\n ]);\n hooks.visibleColumns.push(visibleColumns);\n hooks.useInstance.push(useInstance);\n}\n\nuseCustomSelection.pluginName = pluginName;\n\nfunction useInstance(instance: TableInstance) {\n const {\n plugins,\n rows,\n onSelect,\n isSelecting,\n state: { selectedRowIds },\n } = instance;\n\n ensurePluginOrder(plugins, [\"useRowSelect\"], pluginName);\n\n useEffect(() => {\n // Performance\n if (isSelecting) {\n const items = Object.keys(selectedRowIds).flatMap(\n (v) => rows.find((n) => n.id === v)?.original ?? []\n );\n onSelect && onSelect(items);\n }\n }, [selectedRowIds, onSelect, rows, isSelecting]);\n}\n\nfunction visibleColumns(\n columns: ColumnInstance[],\n meta: MetaBase\n): Column[] {\n const { instance } = meta;\n if (instance.isSelecting) {\n const checkbox: Column = {\n id: checkboxId,\n Header: ({ getToggleAllRowsSelectedProps }: HeaderProps) => (\n \n ),\n Cell: ({ row }: CellProps) => (\n \n ),\n };\n return [checkbox, ...columns.filter((v) => v.selectHide !== true)];\n } else {\n return columns;\n }\n}\n\nexport default useCustomSelection;\n","import { Hooks, TableOptions } from \"react-table\";\nimport { useReduxStore } from \"../../../@redux/hooks/base\";\n\nconst pluginName = \"useLocalSettings\";\n\nfunction useDefaultSettings(hooks: Hooks) {\n hooks.useOptions.push(useOptions);\n}\nuseDefaultSettings.pluginName = pluginName;\n\nfunction useOptions(options: TableOptions) {\n const { pageSize } = useReduxStore((s) => s.site);\n\n if (options.autoResetPage === undefined) {\n options.autoResetPage = false;\n }\n\n if (options.initialState === undefined) {\n options.initialState = {};\n }\n\n options.initialState.needLoadingScreen = false;\n\n if (options.initialState.pageSize === undefined) {\n options.initialState.pageSize = pageSize;\n }\n\n if (options.asyncLoader === undefined) {\n options.initialState.pageToLoad = undefined;\n }\n\n return options;\n}\n\nexport default useDefaultSettings;\n","import { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faCheck,\n faCircleNotch,\n faClock,\n faCode,\n faDeaf,\n faExchangeAlt,\n faFilm,\n faImage,\n faLanguage,\n faMagic,\n faMinus,\n faPaintBrush,\n faPlay,\n faPlus,\n faTextHeight,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Badge,\n Button,\n ButtonGroup,\n Dropdown,\n Form,\n InputGroup,\n} from \"react-bootstrap\";\nimport { Column, useRowSelect } from \"react-table\";\nimport {\n ActionButton,\n ActionButtonItem,\n LanguageSelector,\n LanguageText,\n Selector,\n SimpleTable,\n usePayload,\n useShowModal,\n} from \"..\";\nimport { useLanguages } from \"../../@redux/hooks\";\nimport { SubtitlesApi } from \"../../apis\";\nimport { isMovie, submodProcessColor } from \"../../utilites\";\nimport { log } from \"../../utilites/logger\";\nimport { useCustomSelection } from \"../tables/plugins\";\nimport BaseModal, { BaseModalProps } from \"./BaseModal\";\nimport { useCloseModalUntil } from \"./provider\";\nimport { availableTranslation, colorOptions } from \"./toolOptions\";\n\ntype SupportType = Item.Episode | Item.Movie;\n\ntype TableColumnType = FormType.ModifySubtitle & {\n _language: Language;\n};\n\nenum State {\n Pending,\n Processing,\n Done,\n}\n\ntype ProcessState = StrictObject;\n\n// TODO: Extract this\ninterface StateIconProps {\n state: State;\n}\n\nconst StateIcon: FunctionComponent = ({ state }) => {\n let icon = faQuestionCircle;\n switch (state) {\n case State.Pending:\n icon = faClock;\n break;\n case State.Processing:\n icon = faCircleNotch;\n break;\n case State.Done:\n icon = faCheck;\n break;\n }\n return (\n \n );\n};\n\nfunction getIdAndType(item: SupportType): [number, \"episode\" | \"movie\"] {\n if (isMovie(item)) {\n return [item.radarrId, \"movie\"];\n } else {\n return [item.sonarrEpisodeId, \"episode\"];\n }\n}\n\nfunction submodProcessFrameRate(from: number, to: number) {\n return `change_FPS(from=${from},to=${to})`;\n}\n\nfunction submodProcessOffset(h: number, m: number, s: number, ms: number) {\n return `shift_offset(h=${h},m=${m},s=${s},ms=${ms})`;\n}\n\ninterface ToolModalProps {\n process: (\n action: string,\n override?: Partial\n ) => void;\n}\n\nconst AddColorModal: FunctionComponent = (\n props\n) => {\n const { process, ...modal } = props;\n const [selection, setSelection] = useState>(null);\n\n const submit = useCallback(() => {\n if (selection) {\n const action = submodProcessColor(selection);\n process(action);\n }\n }, [selection, process]);\n\n const footer = useMemo(\n () => (\n \n ),\n [selection, submit]\n );\n return (\n \n \n \n );\n};\n\nconst FrameRateModal: FunctionComponent = (\n props\n) => {\n const { process, ...modal } = props;\n\n const [from, setFrom] = useState>(null);\n const [to, setTo] = useState>(null);\n\n const canSave = from !== null && to !== null && from !== to;\n\n const submit = useCallback(() => {\n if (canSave) {\n const action = submodProcessFrameRate(from!, to!);\n process(action);\n }\n }, [canSave, from, to, process]);\n\n const footer = useMemo(\n () => (\n \n ),\n [submit, canSave]\n );\n\n return (\n \n \n {\n const value = parseFloat(e.currentTarget.value);\n if (isNaN(value)) {\n setFrom(null);\n } else {\n setFrom(value);\n }\n }}\n >\n {\n const value = parseFloat(e.currentTarget.value);\n if (isNaN(value)) {\n setTo(null);\n } else {\n setTo(value);\n }\n }}\n >\n \n \n );\n};\n\nconst AdjustTimesModal: FunctionComponent = (\n props\n) => {\n const { process, ...modal } = props;\n\n const [isPlus, setPlus] = useState(true);\n const [offset, setOffset] = useState<[number, number, number, number]>([\n 0,\n 0,\n 0,\n 0,\n ]);\n\n const updateOffset = useCallback(\n (idx: number) => {\n return (e: any) => {\n let value = parseFloat(e.currentTarget.value);\n if (isNaN(value)) {\n value = 0;\n }\n const newOffset = [...offset] as [number, number, number, number];\n newOffset[idx] = value;\n setOffset(newOffset);\n };\n },\n [offset]\n );\n\n const canSave = offset.some((v) => v !== 0);\n\n const submit = useCallback(() => {\n if (canSave) {\n const newOffset = offset.map((v) => (isPlus ? v : -v));\n const action = submodProcessOffset(\n newOffset[0],\n newOffset[1],\n newOffset[2],\n newOffset[3]\n );\n process(action);\n }\n }, [process, canSave, offset, isPlus]);\n\n const footer = useMemo(\n () => (\n \n ),\n [submit, canSave]\n );\n\n return (\n \n \n \n setPlus(!isPlus)}\n >\n \n \n \n \n \n \n \n \n \n );\n};\n\nconst TranslateModal: FunctionComponent = ({\n process,\n ...modal\n}) => {\n const [languages] = useLanguages(true);\n\n const available = useMemo(\n () => languages.filter((v) => v.code2 in availableTranslation),\n [languages]\n );\n\n const [selectedLanguage, setLanguage] = useState>(null);\n\n const submit = useCallback(() => {\n if (selectedLanguage) {\n process(\"translate\", { language: selectedLanguage.code2 });\n }\n }, [selectedLanguage, process]);\n\n const footer = useMemo(\n () => (\n \n ),\n [submit, selectedLanguage]\n );\n\n return (\n \n \n Enabled languages not listed here are unsupported by Google Translate.\n \n \n \n );\n};\n\ninterface STMProps {\n update: () => void;\n}\n\nconst STM: FunctionComponent = ({\n update,\n ...props\n}) => {\n const items = usePayload(props.modalKey);\n\n const [updating, setUpdate] = useState(false);\n const [processState, setProcessState] = useState({});\n const [selections, setSelections] = useState([]);\n\n const closeUntil = useCloseModalUntil(props.modalKey);\n\n const process = useCallback(\n async (action: string, override?: Partial) => {\n log(\"info\", \"executing action\", action);\n closeUntil();\n setUpdate(true);\n\n let states = selections.reduce(\n (v, curr) => ({ [curr.path]: State.Pending, ...v }),\n {}\n );\n setProcessState(states);\n\n for (const raw of selections) {\n states = {\n ...states,\n [raw.path]: State.Processing,\n };\n setProcessState(states);\n const form: FormType.ModifySubtitle = {\n id: raw.id,\n type: raw.type,\n language: raw.language,\n path: raw.path,\n ...override,\n };\n await SubtitlesApi.modify(action, form);\n\n states = {\n ...states,\n [raw.path]: State.Done,\n };\n setProcessState(states);\n }\n setUpdate(false);\n\n update();\n },\n [closeUntil, selections, update]\n );\n\n const showModal = useShowModal();\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n id: \"state\",\n accessor: \"path\",\n selectHide: true,\n Cell: ({ value, loose }) => {\n if (loose) {\n const stateList = loose[0] as ProcessState;\n if (value in stateList) {\n const state = stateList[value];\n return ;\n }\n }\n return null;\n },\n },\n {\n Header: \"Language\",\n accessor: \"_language\",\n Cell: ({ value }) => (\n \n \n \n ),\n },\n {\n id: \"file\",\n Header: \"File\",\n accessor: \"path\",\n Cell: (row) => {\n const path = row.value!;\n\n let idx = path.lastIndexOf(\"/\");\n\n if (idx === -1) {\n idx = path.lastIndexOf(\"\\\\\");\n }\n\n if (idx !== -1) {\n return path.slice(idx + 1);\n } else {\n return path;\n }\n },\n },\n ],\n []\n );\n\n const data = useMemo(\n () =>\n items?.flatMap((item) => {\n const [id, type] = getIdAndType(item);\n return item.subtitles.flatMap((v) => {\n if (v.path !== null) {\n return [\n {\n id,\n type,\n language: v.code2,\n path: v.path,\n _language: v,\n },\n ];\n } else {\n return [];\n }\n });\n }) ?? [],\n [items]\n );\n\n const plugins = [useRowSelect, useCustomSelection];\n\n const footer = useMemo(\n () => (\n k && process(k)}>\n process(\"sync\")}\n >\n Sync\n \n \n \n \n Remove HI Tags\n \n \n Remove Style Tags\n \n \n OCR Fixes\n \n \n Common Fixes\n \n \n \n Fix Uppercase\n \n \n \n \n Reverse RTL\n \n \n showModal(\"add-color\")}>\n Add Color\n \n showModal(\"change-frame-rate\")}>\n Change Frame Rate\n \n showModal(\"adjust-times\")}>\n Adjust Times\n \n showModal(\"translate-sub\")}>\n Translate\n \n \n \n ),\n [showModal, updating, selections.length, process]\n );\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default STM;\n","export const availableTranslation = {\n af: \"afrikaans\",\n sq: \"albanian\",\n am: \"amharic\",\n ar: \"arabic\",\n hy: \"armenian\",\n az: \"azerbaijani\",\n eu: \"basque\",\n be: \"belarusian\",\n bn: \"bengali\",\n bs: \"bosnian\",\n bg: \"bulgarian\",\n ca: \"catalan\",\n ceb: \"cebuano\",\n ny: \"chichewa\",\n \"zh-cn\": \"chinese (simplified)\",\n \"zh-tw\": \"chinese (traditional)\",\n co: \"corsican\",\n hr: \"croatian\",\n cs: \"czech\",\n da: \"danish\",\n nl: \"dutch\",\n en: \"english\",\n eo: \"esperanto\",\n et: \"estonian\",\n tl: \"filipino\",\n fi: \"finnish\",\n fr: \"french\",\n fy: \"frisian\",\n gl: \"galician\",\n ka: \"georgian\",\n de: \"german\",\n el: \"greek\",\n gu: \"gujarati\",\n ht: \"haitian creole\",\n ha: \"hausa\",\n haw: \"hawaiian\",\n iw: \"hebrew\",\n hi: \"hindi\",\n hmn: \"hmong\",\n hu: \"hungarian\",\n is: \"icelandic\",\n ig: \"igbo\",\n id: \"indonesian\",\n ga: \"irish\",\n it: \"italian\",\n ja: \"japanese\",\n jw: \"javanese\",\n kn: \"kannada\",\n kk: \"kazakh\",\n km: \"khmer\",\n ko: \"korean\",\n ku: \"kurdish (kurmanji)\",\n ky: \"kyrgyz\",\n lo: \"lao\",\n la: \"latin\",\n lv: \"latvian\",\n lt: \"lithuanian\",\n lb: \"luxembourgish\",\n mk: \"macedonian\",\n mg: \"malagasy\",\n ms: \"malay\",\n ml: \"malayalam\",\n mt: \"maltese\",\n mi: \"maori\",\n mr: \"marathi\",\n mn: \"mongolian\",\n my: \"myanmar (burmese)\",\n ne: \"nepali\",\n no: \"norwegian\",\n ps: \"pashto\",\n fa: \"persian\",\n pl: \"polish\",\n pt: \"portuguese\",\n pa: \"punjabi\",\n ro: \"romanian\",\n ru: \"russian\",\n sm: \"samoan\",\n gd: \"scots gaelic\",\n sr: \"serbian\",\n st: \"sesotho\",\n sn: \"shona\",\n sd: \"sindhi\",\n si: \"sinhala\",\n sk: \"slovak\",\n sl: \"slovenian\",\n so: \"somali\",\n es: \"spanish\",\n su: \"sundanese\",\n sw: \"swahili\",\n sv: \"swedish\",\n tg: \"tajik\",\n ta: \"tamil\",\n te: \"telugu\",\n th: \"thai\",\n tr: \"turkish\",\n uk: \"ukrainian\",\n ur: \"urdu\",\n uz: \"uzbek\",\n vi: \"vietnamese\",\n cy: \"welsh\",\n xh: \"xhosa\",\n yi: \"yiddish\",\n yo: \"yoruba\",\n zu: \"zulu\",\n fil: \"Filipino\",\n he: \"Hebrew\",\n};\n\nexport const colorOptions: SelectorOption[] = [\n {\n label: \"White\",\n value: \"white\",\n },\n {\n label: \"Light Gray\",\n value: \"lightgray\",\n },\n {\n label: \"Red\",\n value: \"red\",\n },\n {\n label: \"Green\",\n value: \"green\",\n },\n {\n label: \"Yellow\",\n value: \"yellow\",\n },\n {\n label: \"Blue\",\n value: \"blue\",\n },\n {\n label: \"Magenta\",\n value: \"magenta\",\n },\n {\n label: \"Cyan\",\n value: \"cyan\",\n },\n {\n label: \"Black\",\n value: \"black\",\n },\n {\n label: \"Dark Red\",\n value: \"darkred\",\n },\n {\n label: \"Dark Green\",\n value: \"darkgreen\",\n },\n {\n label: \"Dark Yellow\",\n value: \"darkyellow\",\n },\n {\n label: \"Dark Blue\",\n value: \"darkblue\",\n },\n {\n label: \"Dark Magenta\",\n value: \"darkmagenta\",\n },\n {\n label: \"Dark Cyan\",\n value: \"darkcyan\",\n },\n {\n label: \"Dark Grey\",\n value: \"darkgrey\",\n },\n];\n","import { throttle } from \"lodash\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Dropdown, Form } from \"react-bootstrap\";\nimport { useHistory } from \"react-router\";\n\nexport interface SearchResult {\n name: string;\n link?: string;\n}\n\ninterface Props {\n className?: string;\n onSearch: (text: string) => Promise;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\nexport const SearchBar: FunctionComponent = ({\n onSearch,\n onFocus,\n onBlur,\n className,\n}) => {\n const [text, setText] = useState(\"\");\n\n const [results, setResults] = useState([]);\n\n const history = useHistory();\n\n const search = useCallback(\n (value: string) => {\n if (value === \"\") {\n setResults([]);\n } else {\n onSearch(value).then((res) => setResults(res));\n }\n },\n [onSearch]\n );\n\n const debounceSearch = useMemo(() => throttle(search, 500), [search]);\n\n useEffect(() => {\n debounceSearch(text);\n }, [text, debounceSearch]);\n\n const clear = useCallback(() => {\n setText(\"\");\n setResults([]);\n }, []);\n\n const items = useMemo(() => {\n const its = results.map((v) => (\n \n {v.name}\n \n ));\n\n if (its.length === 0) {\n its.push(No Found);\n }\n\n return its;\n }, [results]);\n\n return (\n {\n if (link) {\n clear();\n history.push(link);\n }\n }}\n >\n setText(e.currentTarget.value)}\n >\n \n {items}\n \n \n );\n};\n","import React, { useMemo } from \"react\";\nimport { Table } from \"react-bootstrap\";\nimport {\n HeaderGroup,\n Row,\n TableBodyProps,\n TableOptions,\n TableProps,\n} from \"react-table\";\n\nexport interface BaseTableProps extends TableStyleProps {\n // Table Options\n headers: HeaderGroup[];\n rows: Row[];\n headersRenderer?: (headers: HeaderGroup[]) => JSX.Element[];\n rowRenderer?: (row: Row) => Nullable;\n prepareRow: (row: Row) => void;\n tableProps: TableProps;\n tableBodyProps: TableBodyProps;\n}\n\nexport interface TableStyleProps {\n emptyText?: string;\n responsive?: boolean;\n hoverable?: boolean;\n striped?: boolean;\n borderless?: boolean;\n small?: boolean;\n hideHeader?: boolean;\n headersRenderer?: (headers: HeaderGroup[]) => JSX.Element[];\n rowRenderer?: (row: Row) => Nullable;\n}\n\ninterface ExtractResult {\n style: TableStyleProps;\n options: TableOptions;\n}\n\nexport function useStyleAndOptions(\n props: TableStyleProps & TableOptions\n): ExtractResult {\n const {\n emptyText,\n responsive,\n hoverable,\n striped,\n borderless,\n small,\n hideHeader,\n headersRenderer,\n rowRenderer,\n ...options\n } = props;\n return {\n style: {\n emptyText,\n responsive,\n hoverable,\n striped,\n borderless,\n small,\n hideHeader,\n headersRenderer,\n rowRenderer,\n },\n options,\n };\n}\n\nfunction DefaultHeaderRenderer(\n headers: HeaderGroup[]\n): JSX.Element[] {\n return headers.map((col) => (\n {col.render(\"Header\")}\n ));\n}\n\nfunction DefaultRowRenderer(row: Row): JSX.Element | null {\n return (\n \n {row.cells.map((cell) => (\n \n {cell.render(\"Cell\")}\n \n ))}\n \n );\n}\n\nexport default function BaseTable(props: BaseTableProps) {\n const {\n emptyText,\n responsive,\n hoverable,\n striped,\n borderless,\n small,\n hideHeader,\n\n headers,\n rows,\n headersRenderer,\n rowRenderer,\n prepareRow,\n tableProps,\n tableBodyProps,\n } = props;\n\n const colCount = useMemo(() => {\n return headers.reduce(\n (prev, curr) => (curr.headers.length > prev ? curr.headers.length : prev),\n 0\n );\n }, [headers]);\n\n const empty = rows.length === 0;\n\n const hRenderer = headersRenderer ?? DefaultHeaderRenderer;\n const rRenderer = rowRenderer ?? DefaultRowRenderer;\n\n return (\n \n \n {headers.map((headerGroup) => (\n \n {hRenderer(headerGroup.headers)}\n \n ))}\n \n \n {emptyText && empty ? (\n \n \n {emptyText}\n \n \n ) : (\n rows.map((row) => {\n prepareRow(row);\n return rRenderer(row);\n })\n )}\n \n \n );\n}\n","import { PluginHook, TableOptions, useTable } from \"react-table\";\nimport BaseTable, { TableStyleProps, useStyleAndOptions } from \"./BaseTable\";\nimport { useDefaultSettings } from \"./plugins\";\n\ntype Props = TableOptions &\n TableStyleProps & {\n plugins?: PluginHook[];\n };\n\nexport default function SimpleTable(props: Props) {\n const { plugins, ...other } = props;\n const { style, options } = useStyleAndOptions(other);\n\n const instance = useTable(options, useDefaultSettings, ...(plugins ?? []));\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n } = instance;\n\n return (\n \n );\n}\n","import { faChevronCircleRight } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React from \"react\";\nimport {\n Cell,\n HeaderGroup,\n Row,\n TableOptions,\n useExpanded,\n useGroupBy,\n useSortBy,\n} from \"react-table\";\nimport { TableStyleProps } from \"./BaseTable\";\nimport SimpleTable from \"./SimpleTable\";\n\nfunction renderCell(cell: Cell, row: Row) {\n if (cell.isGrouped) {\n return (\n {cell.render(\"Cell\")}\n );\n } else if (row.canExpand || cell.isAggregated) {\n return null;\n } else {\n return cell.render(\"Cell\");\n }\n}\n\nfunction renderRow(row: Row) {\n if (row.canExpand) {\n const cell = row.cells.find((cell) => cell.isGrouped);\n if (cell) {\n const rotation = row.isExpanded ? 90 : undefined;\n return (\n \n \n \n {cell.render(\"Cell\")}\n \n \n \n \n );\n } else {\n return null;\n }\n } else {\n return (\n \n {row.cells\n .filter((cell) => !cell.isPlaceholder)\n .map((cell) => (\n \n {renderCell(cell, row)}\n \n ))}\n \n );\n }\n}\n\nfunction renderHeaders(\n headers: HeaderGroup[]\n): JSX.Element[] {\n return headers\n .filter((col) => !col.isGrouped)\n .map((col) => {col.render(\"Header\")});\n}\n\ntype Props = TableOptions & TableStyleProps;\n\nfunction GroupTable(props: Props) {\n const plugins = [useGroupBy, useSortBy, useExpanded];\n return (\n \n );\n}\n\nexport default GroupTable;\n","import {\n faClock,\n faCloudUploadAlt,\n faDownload,\n faRecycle,\n faTrash,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {\n FontAwesomeIcon,\n FontAwesomeIconProps,\n} from \"@fortawesome/react-fontawesome\";\nimport moment from \"moment\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport {\n OverlayTrigger,\n Popover,\n Spinner,\n SpinnerProps,\n} from \"react-bootstrap\";\n\nenum HistoryAction {\n Delete = 0,\n Download,\n Manual,\n Upgrade,\n Upload,\n Sync,\n}\n\nexport const HistoryIcon: FunctionComponent<{\n action: number;\n title?: string;\n}> = (props) => {\n const { action, title } = props;\n let icon = null;\n switch (action) {\n case HistoryAction.Delete:\n icon = faTrash;\n break;\n case HistoryAction.Download:\n icon = faDownload;\n break;\n case HistoryAction.Manual:\n icon = faUser;\n break;\n case HistoryAction.Sync:\n icon = faClock;\n break;\n case HistoryAction.Upgrade:\n icon = faRecycle;\n break;\n case HistoryAction.Upload:\n icon = faCloudUploadAlt;\n break;\n }\n if (icon) {\n return ;\n } else {\n return null;\n }\n};\n\ninterface MessageIconProps extends FontAwesomeIconProps {\n messages: string[];\n}\n\nexport const MessageIcon: FunctionComponent = (props) => {\n const { messages, ...iconProps } = props;\n\n const popover = (\n \n );\n\n return (\n \n \n \n );\n};\n\nexport const LoadingIndicator: FunctionComponent<{\n animation?: SpinnerProps[\"animation\"];\n}> = ({ children, animation: style }) => {\n return (\n
    \n \n {children}\n
    \n );\n};\n\ninterface FormatterProps {\n format?: string;\n children: string | Date;\n}\n\nexport const DateFormatter: FunctionComponent = ({\n children,\n format,\n}) => {\n const result = useMemo(\n () => moment(children, format ?? \"DD/MM/YYYY h:mm:ss\").fromNow(),\n [children, format]\n );\n return {result};\n};\n\ninterface LanguageTextProps {\n text: Language;\n className?: string;\n long?: boolean;\n}\n\nexport const LanguageText: FunctionComponent = ({\n text,\n className,\n long,\n}) => {\n const result = useMemo(() => {\n let lang = text.code2;\n let hi = \":HI\";\n let forced = \":Forced\";\n if (long) {\n lang = text.name;\n hi = \" HI\";\n forced = \" Forced\";\n }\n\n let res = lang;\n if (text.hi) {\n res += hi;\n } else if (text.forced) {\n res += forced;\n }\n return res;\n }, [text, long]);\n return (\n \n {result}\n \n );\n};\n\nexport * from \"./async\";\nexport * from \"./buttons\";\nexport * from \"./ContentHeader\";\nexport * from \"./inputs\";\nexport * from \"./LanguageSelector\";\nexport * from \"./modals\";\nexport * from \"./SearchBar\";\nexport * from \"./tables\";\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Col, Container, Pagination, Row } from \"react-bootstrap\";\nimport { PageControlAction } from \"./types\";\ninterface Props {\n count: number;\n index: number;\n size: number;\n total: number;\n canPrevious: boolean;\n previous: () => void;\n canNext: boolean;\n next: () => void;\n goto: (idx: number) => void;\n loadState?: PageControlAction;\n}\n\nconst PageControl: FunctionComponent = ({\n count,\n index,\n size,\n total,\n canPrevious,\n previous,\n canNext,\n next,\n goto,\n loadState,\n}) => {\n const empty = total === 0;\n const start = empty ? 0 : size * index + 1;\n const end = Math.min(size * (index + 1), total);\n\n const loading = loadState !== undefined;\n\n const pageButtons = useMemo(\n () =>\n [...Array(count).keys()]\n .map((idx) => {\n if (Math.abs(idx - index) >= 4 && idx !== 0 && idx !== count - 1) {\n return null;\n } else {\n return (\n goto(idx)}\n >\n {idx + 1}\n \n );\n }\n })\n .flatMap((item, idx, arr) => {\n if (item === null) {\n if (arr[idx + 1] === null) {\n return [];\n } else {\n return (\n \n );\n }\n } else {\n return [item];\n }\n }),\n [count, index, goto, loading]\n );\n\n return (\n \n \n \n \n Show {start} to {end} of {total} entries\n \n \n \n \n \n \n \n );\n};\n\nexport default PageControl;\n","import { isNull, isUndefined } from \"lodash\";\nimport React, { useCallback, useEffect } from \"react\";\nimport {\n PluginHook,\n TableOptions,\n usePagination,\n useRowSelect,\n useTable,\n} from \"react-table\";\nimport { useReduxStore } from \"../../@redux/hooks/base\";\nimport { ScrollToTop } from \"../../utilites\";\nimport { AsyncStateOverlay } from \"../async\";\nimport BaseTable, { TableStyleProps, useStyleAndOptions } from \"./BaseTable\";\nimport PageControl from \"./PageControl\";\nimport {\n useAsyncPagination,\n useCustomSelection,\n useDefaultSettings,\n} from \"./plugins\";\n\ntype Props = TableOptions &\n TableStyleProps & {\n async?: boolean;\n canSelect?: boolean;\n autoScroll?: boolean;\n plugins?: PluginHook[];\n };\n\nexport default function PageTable(props: Props) {\n const { async, autoScroll, canSelect, plugins, ...remain } = props;\n const { style, options } = useStyleAndOptions(remain);\n\n const allPlugins: PluginHook[] = [useDefaultSettings, usePagination];\n\n if (async) {\n allPlugins.push(useAsyncPagination);\n }\n\n if (canSelect) {\n allPlugins.push(useRowSelect, useCustomSelection);\n }\n\n if (plugins) {\n allPlugins.push(...plugins);\n }\n\n const instance = useTable(options, ...allPlugins);\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n\n // page\n page,\n canNextPage,\n canPreviousPage,\n pageCount,\n gotoPage,\n nextPage,\n previousPage,\n setPageSize,\n state: { pageIndex, pageSize, pageToLoad, needLoadingScreen },\n } = instance;\n\n const globalPageSize = useReduxStore((s) => s.site.pageSize);\n\n // Scroll to top when page is changed\n useEffect(() => {\n if (autoScroll) {\n ScrollToTop();\n }\n }, [pageIndex, autoScroll]);\n\n useEffect(() => {\n const selecting = options.isSelecting;\n if (canSelect && !isUndefined(selecting)) {\n if (selecting) {\n setPageSize(rows.length);\n } else {\n setPageSize(globalPageSize);\n }\n }\n }, [\n canSelect,\n globalPageSize,\n options.isSelecting,\n rows.length,\n setPageSize,\n ]);\n\n const total = options.asyncState\n ? options.asyncState.data.order.length\n : rows.length;\n\n const orderIdStateValidater = useCallback(\n (state: OrderIdState) => {\n const start = pageIndex * pageSize;\n const end = start + pageSize;\n return state.order.slice(start, end).every(isNull) === false;\n },\n [pageIndex, pageSize]\n );\n\n if (needLoadingScreen && options.asyncState) {\n return (\n \n );\n }\n\n return (\n \n \n \n \n );\n}\n","export default \"data:image/png;base64,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\"","import { IconDefinition } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useContext, useMemo } from \"react\";\nimport { Badge, Collapse, ListGroupItem } from \"react-bootstrap\";\nimport { NavLink } from \"react-router-dom\";\nimport { useSidebarKey, useUpdateSidebar } from \".\";\nimport { SidebarToggleContext } from \"../App\";\nimport {\n BadgeProvider,\n ChildBadgeProvider,\n CollapseItemType,\n LinkItemType,\n} from \"./types\";\n\nexport const HiddenKeysContext = React.createContext([]);\n\nexport const BadgesContext = React.createContext({});\n\nexport const LinkItem: FunctionComponent = ({\n link,\n name,\n icon,\n}) => {\n const badges = useContext(BadgesContext);\n const toggle = useContext(SidebarToggleContext);\n\n const badgeValue = useMemo(() => {\n let badge: Nullable = null;\n if (name in badges) {\n let item = badges[name];\n if (typeof item === \"number\") {\n badge = item;\n }\n }\n return badge;\n }, [badges, name]);\n\n return (\n \n \n \n );\n};\n\nexport const CollapseItem: FunctionComponent = ({\n icon,\n name,\n children,\n}) => {\n const badges = useContext(BadgesContext);\n const hiddenKeys = useContext(HiddenKeysContext);\n const toggleSidebar = useContext(SidebarToggleContext);\n\n const itemKey = name.toLowerCase();\n\n const sidebarKey = useSidebarKey();\n const updateSidebar = useUpdateSidebar();\n\n const [badgeValue, childValue] = useMemo<\n [Nullable, Nullable]\n >(() => {\n let badge: Nullable = null;\n let child: Nullable = null;\n\n if (name in badges) {\n const item = badges[name];\n if (typeof item === \"number\") {\n badge = item;\n } else if (typeof item === \"object\") {\n badge = 0;\n child = item;\n for (const it in item) {\n badge += item[it];\n }\n }\n }\n return [badge, child];\n }, [badges, name]);\n\n const active = useMemo(() => sidebarKey === itemKey, [sidebarKey, itemKey]);\n\n const collapseBoxClass = useMemo(\n () => `sidebar-collapse-box ${active ? \"active\" : \"\"}`,\n [active]\n );\n\n const childrenElems = useMemo(\n () =>\n children\n .filter((v) => !hiddenKeys.includes(v.hiddenKey ?? \"\"))\n .map((ch) => {\n let badge: Nullable = null;\n if (childValue && ch.name in childValue) {\n badge = childValue[ch.name];\n }\n return (\n \n \n \n );\n }),\n [children, hiddenKeys, childValue, toggleSidebar]\n );\n\n if (childrenElems.length === 0) {\n return null;\n }\n\n return (\n
    \n {\n if (active) {\n updateSidebar(\"\");\n } else {\n updateSidebar(itemKey);\n }\n }}\n >\n \n \n \n
    {childrenElems}
    \n
    \n
    \n );\n};\n\ninterface DisplayProps {\n name: string;\n icon?: IconDefinition;\n badge?: number;\n}\n\nconst DisplayItem: FunctionComponent = ({\n name,\n icon,\n badge,\n}) => (\n \n {icon && (\n \n )}\n \n {name} {badge}\n \n \n);\n","import React, {\n FunctionComponent,\n useContext,\n useEffect,\n useMemo,\n} from \"react\";\nimport { Container, Image, ListGroup } from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport { badgeUpdateAll, siteChangeSidebar } from \"../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../@redux/hooks/base\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport logo from \"../@static/logo64.png\";\nimport { SidebarToggleContext } from \"../App\";\nimport { useAutoUpdate } from \"../utilites/hooks\";\nimport {\n BadgesContext,\n CollapseItem,\n HiddenKeysContext,\n LinkItem,\n} from \"./items\";\nimport { RadarrDisabledKey, SidebarList, SonarrDisabledKey } from \"./list\";\nimport \"./style.scss\";\nimport { BadgeProvider } from \"./types\";\n\nexport function useSidebarKey() {\n return useReduxStore((s) => s.site.sidebar);\n}\n\nexport function useUpdateSidebar() {\n return useReduxAction(siteChangeSidebar);\n}\n\ninterface Props {\n open?: boolean;\n}\n\nconst Sidebar: FunctionComponent = ({ open }) => {\n const updateBadges = useReduxAction(badgeUpdateAll);\n useAutoUpdate(updateBadges);\n\n const toggle = useContext(SidebarToggleContext);\n\n const { movies, episodes, providers } = useReduxStore((s) => s.site.badges);\n\n const badges = useMemo(\n () => ({\n Wanted: {\n Series: episodes,\n Movies: movies,\n },\n System: {\n Providers: providers,\n },\n }),\n [movies, episodes, providers]\n );\n\n const sonarrEnabled = useIsSonarrEnabled();\n const radarrEnabled = useIsRadarrEnabled();\n\n const hiddenKeys = useMemo(() => {\n const list = [];\n if (!sonarrEnabled) {\n list.push(SonarrDisabledKey);\n }\n if (!radarrEnabled) {\n list.push(RadarrDisabledKey);\n }\n return list;\n }, [sonarrEnabled, radarrEnabled]);\n\n const history = useHistory();\n\n const updateSidebar = useUpdateSidebar();\n\n useEffect(() => {\n const path = history.location.pathname.split(\"/\");\n const len = path.length;\n if (len >= 3) {\n updateSidebar(path[len - 2]);\n } else {\n updateSidebar(path[len - 1]);\n }\n }, [history.location.pathname, updateSidebar]);\n\n const cls = [\"sidebar-container\"];\n const overlay = [\"sidebar-overlay\"];\n\n if (open === true) {\n cls.push(\"open\");\n overlay.push(\"open\");\n }\n\n const sidebarItems = useMemo(\n () =>\n SidebarList.map((v) => {\n if (hiddenKeys.includes(v.hiddenKey ?? \"\")) {\n return null;\n }\n if (\"children\" in v) {\n return ;\n } else {\n return ;\n }\n }),\n [hiddenKeys]\n );\n\n return (\n \n \n
    \n
    \n );\n};\n\nexport default Sidebar;\n","import {\n faClock,\n faCogs,\n faExclamationTriangle,\n faFileExcel,\n faFilm,\n faLaptop,\n faPlay,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { SidebarDefinition } from \"./types\";\n\nexport const SonarrDisabledKey = \"sonarr-disabled\";\nexport const RadarrDisabledKey = \"radarr-disabled\";\n\nexport const SidebarList: SidebarDefinition[] = [\n {\n icon: faPlay,\n name: \"Series\",\n link: \"/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n icon: faFilm,\n name: \"Movies\",\n link: \"/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n {\n icon: faClock,\n name: \"History\",\n children: [\n {\n name: \"Series\",\n link: \"/history/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n name: \"Movies\",\n link: \"/history/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n {\n name: \"Statistics\",\n link: \"/history/stats\",\n },\n ],\n },\n {\n icon: faFileExcel,\n name: \"Blacklist\",\n children: [\n {\n name: \"Series\",\n link: \"/blacklist/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n name: \"Movies\",\n link: \"/blacklist/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n ],\n },\n {\n icon: faExclamationTriangle,\n name: \"Wanted\",\n children: [\n {\n name: \"Series\",\n link: \"/wanted/series\",\n hiddenKey: SonarrDisabledKey,\n },\n {\n name: \"Movies\",\n link: \"/wanted/movies\",\n hiddenKey: RadarrDisabledKey,\n },\n ],\n },\n {\n icon: faCogs,\n name: \"Settings\",\n children: [\n {\n name: \"General\",\n link: \"/settings/general\",\n },\n {\n name: \"Languages\",\n link: \"/settings/languages\",\n },\n {\n name: \"Providers\",\n link: \"/settings/providers\",\n },\n {\n name: \"Subtitles\",\n link: \"/settings/subtitles\",\n },\n {\n name: \"Sonarr\",\n link: \"/settings/sonarr\",\n },\n {\n name: \"Radarr\",\n link: \"/settings/radarr\",\n },\n {\n name: \"Notifications\",\n link: \"/settings/notifications\",\n },\n {\n name: \"Scheduler\",\n link: \"/settings/scheduler\",\n },\n {\n name: \"UI\",\n link: \"/settings/ui\",\n },\n ],\n },\n {\n icon: faLaptop,\n name: \"System\",\n children: [\n {\n name: \"Tasks\",\n link: \"/system/tasks\",\n },\n {\n name: \"Logs\",\n link: \"/system/logs\",\n },\n {\n name: \"Providers\",\n link: \"/system/providers\",\n },\n {\n name: \"Status\",\n link: \"/system/status\",\n },\n {\n name: \"Releases\",\n link: \"/system/releases\",\n },\n ],\n },\n];\n","import {\n faBars,\n faHeart,\n faNetworkWired,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Button,\n Col,\n Container,\n Dropdown,\n Image,\n Navbar,\n Row,\n} from \"react-bootstrap\";\nimport { SidebarToggleContext } from \".\";\nimport { siteRedirectToAuth } from \"../@redux/actions\";\nimport { useSystemSettings } from \"../@redux/hooks\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { useIsOffline } from \"../@redux/hooks/site\";\nimport logo from \"../@static/logo64.png\";\nimport { SystemApi } from \"../apis\";\nimport { ActionButton, SearchBar, SearchResult } from \"../components\";\nimport { useBaseUrl } from \"../utilites\";\nimport \"./header.scss\";\n\nasync function SearchItem(text: string) {\n const results = await SystemApi.search(text);\n\n return results.map((v) => {\n let link: string;\n if (v.sonarrSeriesId) {\n link = `/series/${v.sonarrSeriesId}`;\n } else if (v.radarrId) {\n link = `/movies/${v.radarrId}`;\n } else {\n link = \"\";\n }\n return {\n name: `${v.title} (${v.year})`,\n link,\n };\n });\n}\n\ninterface Props {}\n\nconst Header: FunctionComponent = () => {\n const setNeedAuth = useReduxAction(siteRedirectToAuth);\n\n const [settings] = useSystemSettings();\n\n const canLogout = (settings.data?.auth.type ?? \"none\") !== \"none\";\n\n const toggleSidebar = useContext(SidebarToggleContext);\n\n const offline = useIsOffline();\n\n const dropdown = useMemo(\n () => (\n \n \n \n \n \n {\n SystemApi.restart();\n }}\n >\n Restart\n \n {\n SystemApi.shutdown();\n }}\n >\n Shutdown\n \n \n \n \n ),\n [canLogout, setNeedAuth]\n );\n\n const [reconnecting, setReconnect] = useState(false);\n const reconnect = useCallback(() => {\n setReconnect(true);\n SystemApi.status().finally(() => setReconnect(false));\n }, []);\n\n const baseUrl = useBaseUrl();\n\n return (\n \n
    \n \n \"brand\"\n \n
    \n \n \n \n \n \n \n \n \n \n \n {offline ? (\n \n Reconnect\n \n ) : (\n dropdown\n )}\n \n \n \n
    \n );\n};\n\nexport default Header;\n","import { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { capitalize } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Toast } from \"react-bootstrap\";\nimport { siteRemoveError } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport \"./style.scss\";\n\nfunction useNotificationList() {\n return useReduxStore((s) => s.site.notifications);\n}\n\nfunction useRemoveNotification() {\n return useReduxAction(siteRemoveError);\n}\n\nexport interface NotificationContainerProps {}\n\nconst NotificationContainer: FunctionComponent = () => {\n const list = useNotificationList();\n\n const items = useMemo(\n () =>\n list.map((v, idx) => (\n \n )),\n [list]\n );\n return (\n
    \n
    {items}
    \n
    \n );\n};\n\ntype MessageHolderProps = ReduxStore.Notification & {};\n\nconst NotificationToast: FunctionComponent = (props) => {\n const { message, id, type } = props;\n const removeNotification = useRemoveNotification();\n\n const remove = useCallback(() => removeNotification(id), [\n removeNotification,\n id,\n ]);\n\n return (\n \n \n \n {capitalize(type)}\n \n {message}\n \n );\n};\n\nexport default NotificationContainer;\n","import { faEyeSlash as fasEyeSlash } from \"@fortawesome/free-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container } from \"react-bootstrap\";\n\nexport const RouterEmptyPath = \"/empty-page\";\n\nconst EmptyPage: FunctionComponent = () => {\n return (\n \n

    \n \n 404\n

    \n

    The Request URL No Found

    \n
    \n );\n};\n\nexport default EmptyPage;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText, PageTable } from \"../../components\";\n\ninterface Props {\n blacklist: readonly Blacklist.Movie[];\n update: () => void;\n}\n\nconst Table: FunctionComponent = ({ blacklist, update }) => {\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const target = `/movies/${row.row.original.radarrId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n accessor: \"subs_id\",\n Cell: (row) => {\n const subs_id = row.value;\n\n return (\n \n MoviesApi.deleteBlacklist(false, {\n provider: row.row.original.provider,\n subs_id,\n })\n }\n onSuccess={update}\n >\n \n \n );\n },\n },\n ],\n [update]\n );\n return (\n \n );\n};\n\nexport default Table;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { useBlacklistMovies } from \"../../@redux/hooks\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst BlacklistMoviesView: FunctionComponent = () => {\n const [blacklist, update] = useBlacklistMovies();\n useAutoUpdate(update);\n return (\n \n {(data) => (\n \n \n Movies Blacklist - Bazarr\n \n \n MoviesApi.deleteBlacklist(true)}\n onSuccess={update}\n >\n Remove All\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default BlacklistMoviesView;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { EpisodesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText, PageTable } from \"../../components\";\n\ninterface Props {\n blacklist: readonly Blacklist.Episode[];\n update: () => void;\n}\n\nconst Table: FunctionComponent = ({ blacklist, update }) => {\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Series\",\n accessor: \"seriesTitle\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const target = `/series/${row.row.original.sonarrSeriesId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode_number\",\n },\n {\n accessor: \"episodeTitle\",\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return ;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n },\n {\n accessor: \"subs_id\",\n Cell: (row) => {\n const subs_id = row.value;\n return (\n \n EpisodesApi.deleteBlacklist(false, {\n provider: row.row.original.provider,\n subs_id,\n })\n }\n onSuccess={update}\n >\n \n \n );\n },\n },\n ],\n [update]\n );\n return (\n \n );\n};\n\nexport default Table;\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { useBlacklistSeries } from \"../../@redux/hooks\";\nimport { EpisodesApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst BlacklistSeriesView: FunctionComponent = () => {\n const [blacklist, update] = useBlacklistSeries();\n useAutoUpdate(update);\n return (\n \n {(data) => (\n \n \n Series Blacklist - Bazarr\n \n \n EpisodesApi.deleteBlacklist(true)}\n onSuccess={update}\n >\n Remove All\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default BlacklistSeriesView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport BlacklistMovies from \"./Movies\";\nimport BlacklistSeries from \"./Series\";\n\nconst Router: FunctionComponent = () => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n return (\n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default Router;\n","import { capitalize } from \"lodash\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { AsyncStateOverlay, PageTable } from \"../../components\";\n\ninterface Props {\n type: \"movies\" | \"series\";\n state: Readonly>;\n columns: Column[];\n tableUpdater?: TableUpdater;\n}\n\nconst HistoryGenericView: FunctionComponent = ({\n state,\n columns,\n type,\n tableUpdater,\n}) => {\n const typeName = capitalize(type);\n return (\n \n \n {typeName} History - Bazarr\n \n \n \n {(data) => (\n \n )}\n \n \n \n );\n};\n\nexport default HistoryGenericView;\n","import { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge, OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column, Row } from \"react-table\";\nimport { useMoviesHistory } from \"../../@redux/hooks\";\nimport { MoviesApi } from \"../../apis\";\nimport { HistoryIcon, LanguageText } from \"../../components\";\nimport { BlacklistButton } from \"../../generic/blacklist\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport HistoryGenericView from \"../generic\";\n\ninterface Props {}\n\nconst MoviesHistoryView: FunctionComponent = () => {\n const [movies, update] = useMoviesHistory();\n useAutoUpdate(update);\n\n const tableUpdate = useCallback((row: Row) => update(), [\n update,\n ]);\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: (row) => ,\n },\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const target = `/movies/${row.row.original.radarrId}`;\n\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n className: \"text-nowrap\",\n },\n {\n accessor: \"description\",\n Cell: ({ row, value }) => {\n const overlay = (\n \n {value}\n \n );\n return (\n \n \n \n );\n },\n },\n {\n accessor: \"blacklisted\",\n Cell: ({ row, externalUpdate }) => {\n const original = row.original;\n return (\n externalUpdate && externalUpdate(row)}\n promise={(form) =>\n MoviesApi.addBlacklist(original.radarrId, form)\n }\n >\n );\n },\n },\n ],\n []\n );\n\n return (\n []}\n tableUpdater={tableUpdate}\n >\n );\n};\n\nexport default MoviesHistoryView;\n","import { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge, OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column, Row } from \"react-table\";\nimport { useSeriesHistory } from \"../../@redux/hooks\";\nimport { EpisodesApi } from \"../../apis\";\nimport { HistoryIcon, LanguageText } from \"../../components\";\nimport { BlacklistButton } from \"../../generic/blacklist\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport HistoryGenericView from \"../generic\";\n\ninterface Props {}\n\nconst SeriesHistoryView: FunctionComponent = () => {\n const [series, update] = useSeriesHistory();\n useAutoUpdate(update);\n\n const tableUpdate = useCallback((row: Row) => update(), [\n update,\n ]);\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"action\",\n className: \"text-center\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Series\",\n accessor: \"seriesTitle\",\n Cell: (row) => {\n const target = `/series/${row.row.original.sonarrSeriesId}`;\n\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode_number\",\n },\n {\n Header: \"Title\",\n accessor: \"episodeTitle\",\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value }) => {\n if (value) {\n return (\n \n \n \n );\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Score\",\n accessor: \"score\",\n },\n {\n Header: \"Date\",\n accessor: \"timestamp\",\n className: \"text-nowrap\",\n },\n {\n accessor: \"description\",\n Cell: ({ row, value }) => {\n const overlay = (\n \n {value}\n \n );\n return (\n \n \n \n );\n },\n },\n {\n accessor: \"blacklisted\",\n Cell: ({ row, externalUpdate }) => {\n const original = row.original;\n\n const { sonarrEpisodeId, sonarrSeriesId } = original;\n return (\n externalUpdate && externalUpdate(row)}\n promise={(form) =>\n EpisodesApi.addBlacklist(sonarrSeriesId, sonarrEpisodeId, form)\n }\n >\n );\n },\n },\n ],\n []\n );\n\n return (\n []}\n tableUpdater={tableUpdate}\n >\n );\n};\n\nexport default SeriesHistoryView;\n","export const actionOptions: SelectorOption[] = [\n {\n label: \"Automatically Downloaded\",\n value: 0,\n },\n {\n label: \"Manually Downloaded\",\n value: 1,\n },\n {\n label: \"Upgraded\",\n value: 2,\n },\n];\n\nexport const timeframeOptions: SelectorOption[] = [\n {\n label: \"Last Week\",\n value: \"week\",\n },\n {\n label: \"Last Month\",\n value: \"month\",\n },\n {\n label: \"Last Trimester\",\n value: \"trimester\",\n },\n {\n label: \"Last Year\",\n value: \"year\",\n },\n];\n","import { merge } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Col, Container } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { useLanguages, useProviders } from \"../../@redux/hooks\";\nimport { HistoryApi } from \"../../apis\";\nimport {\n AsyncSelector,\n ContentHeader,\n LanguageSelector,\n PromiseOverlay,\n Selector,\n} from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport { actionOptions, timeframeOptions } from \"./options\";\n\nfunction converter(item: History.Stat) {\n const movies = item.movies.map((v) => ({\n date: v.date,\n movies: v.count,\n }));\n const series = item.series.map((v) => ({\n date: v.date,\n series: v.count,\n }));\n const result = merge(movies, series);\n return result;\n}\n\nconst providerLabel = (item: System.Provider) => item.name;\n\nconst SelectorContainer: FunctionComponent = ({ children }) => (\n \n {children}\n \n);\n\nconst HistoryStats: FunctionComponent = () => {\n const [languages] = useLanguages(true);\n\n const [providerList, update] = useProviders();\n useAutoUpdate(update);\n\n const [timeframe, setTimeframe] = useState(\"month\");\n const [action, setAction] = useState>(null);\n const [lang, setLanguage] = useState>(null);\n const [provider, setProvider] = useState>(null);\n\n const promise = useCallback(() => {\n return HistoryApi.stats(\n timeframe,\n action ?? undefined,\n provider?.name,\n lang?.code2\n );\n }, [timeframe, lang?.code2, action, provider]);\n\n return (\n // TODO: Responsive\n \n \n History Statistics - Bazarr\n \n \n {(data) => (\n \n \n \n setTimeframe(v ?? \"month\")}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default HistoryStats;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport MoviesHistory from \"./Movies\";\nimport SeriesHistory from \"./Series\";\nimport HistoryStats from \"./Statistics\";\n\nconst Router: FunctionComponent = () => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n return (\n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { TableUpdater } from \"react-table\";\nimport { ExtendItemComparer, SharedProps } from \".\";\nimport { useLanguageProfiles } from \"../../@redux/hooks\";\nimport { ItemEditorModal, PageTable, useShowModal } from \"../../components\";\nimport { buildOrderList, GetItemId, useMergeArray } from \"../../utilites\";\n\ninterface Props extends SharedProps {\n dirtyItems: readonly Item.Base[];\n editMode: boolean;\n select: React.Dispatch;\n update: (ids?: number[]) => void;\n}\n\nconst Table: FunctionComponent = ({\n state,\n dirtyItems,\n update,\n modify,\n editMode,\n select,\n columns,\n loader,\n name,\n}) => {\n const showModal = useShowModal();\n\n const updateRow = useCallback>(\n (row, modalKey: string) => {\n showModal(modalKey, row.original);\n },\n [showModal]\n );\n\n const idState = state.data;\n\n const orderList = useMemo(() => buildOrderList(idState), [idState]);\n\n const data = useMergeArray(orderList, dirtyItems, ExtendItemComparer);\n\n const [profiles] = useLanguageProfiles();\n\n return (\n \n \n {\n const id = GetItemId(item);\n update([id]);\n }}\n >\n \n );\n};\n\nexport default Table;\n","import { faCheck, faList, faUndo } from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Container, Dropdown, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Column } from \"react-table\";\nimport { useLanguageProfiles } from \"../../@redux/hooks\";\nimport { useReduxActionWith } from \"../../@redux/hooks/base\";\nimport { AsyncActionDispatcher } from \"../../@redux/types\";\nimport { ContentHeader } from \"../../components\";\nimport { GetItemId, isNonNullable, mergeArray } from \"../../utilites\";\nimport Table from \"./table\";\n\nexport interface SharedProps {\n name: string;\n loader: (start: number, length: number) => void;\n columns: Column[];\n modify: (form: FormType.ModifyItem) => Promise;\n state: AsyncState>;\n}\n\nexport function ExtendItemComparer(lhs: Item.Base, rhs: Item.Base): boolean {\n return GetItemId(lhs) === GetItemId(rhs);\n}\n\ninterface Props extends SharedProps {\n updateAction: (id?: number[]) => AsyncActionDispatcher;\n}\n\nconst BaseItemView: FunctionComponent = ({\n updateAction,\n ...shared\n}) => {\n const state = shared.state;\n\n const [pendingEditMode, setPendingEdit] = useState(false);\n const [editMode, setEdit] = useState(false);\n\n const onUpdated = useCallback(() => {\n setPendingEdit((edit) => {\n // Hack to remove all dependencies\n setEdit(edit);\n return edit;\n });\n setDirty([]);\n }, []);\n\n const update = useReduxActionWith(updateAction, onUpdated);\n\n const [selections, setSelections] = useState([]);\n const [dirtyItems, setDirty] = useState([]);\n\n const [profiles] = useLanguageProfiles();\n\n const profileOptions = useMemo(() => {\n const items: JSX.Element[] = [];\n items.push(\n Clear Profile\n );\n items.push();\n items.push(\n ...profiles.map((v) => (\n \n {v.name}\n \n ))\n );\n return items;\n }, [profiles]);\n\n const changeProfiles = useCallback(\n (key: Nullable) => {\n const id = key ? parseInt(key) : null;\n const newItems = selections.map((v) => {\n const item = { ...v };\n item.profileId = id;\n return item;\n });\n const newDirty = mergeArray(dirtyItems, newItems, ExtendItemComparer);\n setDirty(newDirty);\n },\n [selections, dirtyItems]\n );\n\n const startEdit = useCallback(() => {\n if (shared.state.data.order.every(isNonNullable)) {\n setEdit(true);\n } else {\n update();\n }\n setPendingEdit(true);\n }, [shared.state.data.order, update]);\n\n const endEdit = useCallback(\n (cancel: boolean = false) => {\n if (!cancel && dirtyItems.length > 0) {\n const ids = dirtyItems.map(GetItemId);\n update(ids);\n } else {\n setEdit(false);\n setDirty([]);\n }\n setPendingEdit(false);\n setSelections([]);\n },\n [dirtyItems, update]\n );\n\n const saveItems = useCallback(() => {\n const form: FormType.ModifyItem = {\n id: [],\n profileid: [],\n };\n dirtyItems.forEach((v) => {\n const id = GetItemId(v);\n form.id.push(id);\n form.profileid.push(v.profileId);\n });\n return shared.modify(form);\n }, [dirtyItems, shared]);\n\n return (\n \n \n {shared.name} - Bazarr\n \n \n {editMode ? (\n \n \n \n \n Change Profile\n \n {profileOptions}\n \n \n \n endEdit(true)}>\n Cancel\n \n endEdit()}\n >\n Save\n \n \n \n ) : (\n \n Mass Edit\n \n )}\n \n \n \n \n \n );\n};\n\nexport default BaseItemView;\n","import { faBookmark as farBookmark } from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faBookmark,\n faCheck,\n faExclamationTriangle,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { movieUpdateByRange, movieUpdateInfoAll } from \"../@redux/actions\";\nimport { useRawMovies } from \"../@redux/hooks\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { MoviesApi } from \"../apis\";\nimport { ActionBadge } from \"../components\";\nimport BaseItemView from \"../generic/BaseItemView\";\n\ninterface Props {}\n\nconst MovieView: FunctionComponent = () => {\n const [movies] = useRawMovies();\n const load = useReduxAction(movieUpdateByRange);\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"monitored\",\n selectHide: true,\n Cell: ({ value }) => (\n \n ),\n },\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: ({ row, value, isSelecting: select }) => {\n if (select) {\n return value;\n } else {\n const target = `/movies/${row.original.radarrId}`;\n return (\n \n {value}\n \n );\n }\n },\n },\n {\n Header: \"Exist\",\n accessor: \"exist\",\n selectHide: true,\n Cell: ({ row, value }) => {\n const exist = value;\n const { path } = row.original;\n return (\n \n );\n },\n },\n {\n Header: \"Audio\",\n accessor: \"audio_language\",\n Cell: (row) => {\n return row.value.map((v) => (\n \n {v.name}\n \n ));\n },\n },\n {\n Header: \"Languages Profile\",\n accessor: \"profileId\",\n Cell: ({ value, loose }) => {\n if (loose) {\n // Define in generic/BaseItemView/table.tsx\n const profiles = loose[0] as Profile.Languages[];\n return profiles.find((v) => v.profileId === value)?.name ?? null;\n } else {\n return null;\n }\n },\n },\n {\n accessor: \"missing_subtitles\",\n selectHide: true,\n Cell: (row) => {\n const missing = row.value;\n return missing.map((v) => (\n \n {v.code2}\n \n ));\n },\n },\n {\n accessor: \"radarrId\",\n selectHide: true,\n Cell: ({ row, externalUpdate }) => (\n externalUpdate && externalUpdate(row, \"edit\")}\n >\n ),\n },\n ],\n []\n );\n\n return (\n []}\n modify={(form) => MoviesApi.modify(form)}\n >\n );\n};\n\nexport default MovieView;\n","import {\n faCheck,\n faDownload,\n faInfoCircle,\n faTimes,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n Badge,\n Button,\n Col,\n Container,\n Dropdown,\n OverlayTrigger,\n Popover,\n Row,\n} from \"react-bootstrap\";\nimport { Column } from \"react-table\";\nimport {\n AsyncButton,\n BaseModal,\n BaseModalProps,\n LanguageText,\n LoadingIndicator,\n PageTable,\n usePayload,\n} from \"..\";\nimport { ProvidersApi } from \"../../apis\";\nimport { isMovie } from \"../../utilites\";\n\ntype SupportType = Item.Movie | Item.Episode;\n\ninterface Props {\n onSelect: (item: SupportType, result: SearchResultType) => Promise;\n onDownload?: () => void;\n}\n\nexport const ManualSearchModal: FunctionComponent = (\n props\n) => {\n const { onSelect, onDownload, ...modal } = props;\n\n const [result, setResult] = useState([]);\n const [searching, setSearch] = useState(false);\n const [start, setStart] = useState(false);\n\n const item = usePayload(modal.modalKey);\n\n const search = useCallback(() => {\n if (item) {\n setStart(true);\n setSearch(true);\n let promise: Promise;\n if (isMovie(item)) {\n promise = ProvidersApi.movies(item.radarrId);\n } else {\n promise = ProvidersApi.episodes(item.sonarrEpisodeId);\n }\n promise.then((data) => setResult(data)).finally(() => setSearch(false));\n }\n }, [item]);\n\n const reset = useCallback(() => {\n setStart(false);\n setSearch(false);\n }, []);\n\n useEffect(() => {\n if (item) {\n reset();\n }\n }, [item, reset]);\n\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Score\",\n accessor: (d) => `${d.score}%`,\n },\n {\n accessor: \"language\",\n Cell: ({ row: { original }, value }) => {\n const lang: Language = {\n code2: value,\n hi: original.hearing_impaired === \"True\",\n forced: original.forced === \"True\",\n name: \"\",\n };\n return (\n \n \n \n );\n },\n },\n {\n Header: \"Provider\",\n accessor: \"provider\",\n Cell: (row) => {\n const value = row.value;\n const { url } = row.row.original;\n if (url) {\n return (\n \n {value}\n \n );\n } else {\n return value;\n }\n },\n },\n {\n Header: \"Release\",\n accessor: \"release_info\",\n className: \"text-nowrap\",\n Cell: (row) => {\n const value = row.value;\n\n const items = useMemo(\n () =>\n value.slice(1).map((v, idx) => (\n \n {v}\n \n )),\n [value]\n );\n\n if (value.length !== 0) {\n const display = value[0];\n return (\n \n \n {display}\n \n {items}\n \n );\n } else {\n return \"Cannot get release info\";\n }\n },\n },\n {\n Header: \"Upload\",\n accessor: (d) => d.uploader ?? \"-\",\n },\n {\n accessor: \"matches\",\n Cell: (row) => {\n const { matches, dont_matches } = row.row.original;\n return ;\n },\n },\n {\n accessor: \"subtitle\",\n Cell: ({ row, externalUpdate }) => {\n const result = row.original;\n return (\n onSelect(item!, result)}\n onSuccess={() => externalUpdate && externalUpdate(row)}\n >\n \n \n );\n },\n },\n ],\n [onSelect, item]\n );\n\n const content = useMemo(() => {\n if (!start) {\n return (\n
    \n

    {item?.path ?? \"\"}

    \n \n
    \n );\n } else if (searching) {\n return ;\n } else {\n return (\n \n

    {item?.path ?? \"\"}

    \n \n
    \n );\n }\n }, [start, searching, columns, result, search, item?.path, onDownload]);\n\n const footer = useMemo(\n () => (\n \n ),\n [start, reset]\n );\n\n const title = useMemo(() => {\n let title = \"Unknown\";\n\n if (item) {\n if (item.sceneName) {\n title = item.sceneName;\n } else if (isMovie(item)) {\n title = item.title;\n } else {\n title = item.title;\n }\n }\n return `Search - ${title}`;\n }, [item]);\n\n return (\n \n {content}\n \n );\n};\n\nconst StateIcon: FunctionComponent<{ matches: string[]; dont: string[] }> = ({\n matches,\n dont,\n}) => {\n let icon = faCheck;\n let color = \"var(--success)\";\n if (dont.length > 0) {\n icon = faInfoCircle;\n color = \"var(--warning)\";\n }\n\n const matchElements = useMemo(\n () =>\n matches.map((v, idx) => (\n

    \n {v}\n

    \n )),\n [matches]\n );\n const dontElements = useMemo(\n () =>\n dont.map((v, idx) => (\n

    \n {v}\n

    \n )),\n [dont]\n );\n\n const popover = useMemo(\n () => (\n \n \n \n \n \n \n {matchElements}\n \n \n \n {dontElements}\n \n \n \n \n \n ),\n [matchElements, dontElements]\n );\n\n return (\n \n \n \n );\n};\n","import {\n faClone as fasClone,\n faFolder,\n} from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faLanguage,\n faMusic,\n faStream,\n faTags,\n IconDefinition,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport {\n Badge,\n Col,\n Container,\n Image,\n OverlayTrigger,\n Popover,\n Row,\n} from \"react-bootstrap\";\nimport { useProfileBy, useProfileItems } from \"../@redux/hooks\";\nimport { LanguageText } from \"../components\";\nimport { BuildKey } from \"../utilites\";\n\ninterface Props {\n item: Item.Base;\n details?: { icon: IconDefinition; text: string }[];\n}\n\nconst ItemOverview: FunctionComponent = (props) => {\n const { item, details } = props;\n\n const detailBadges = useMemo(() => {\n const badges: (JSX.Element | null)[] = [];\n badges.push(\n \n {item.path}\n \n );\n\n badges.push(\n ...(details?.map((val, idx) => (\n \n {val.text}\n \n )) ?? [])\n );\n\n if (item.tags.length > 0) {\n badges.push(\n \n {item.tags.join(\"|\")}\n \n );\n }\n\n return badges;\n }, [details, item.path, item.tags]);\n\n const audioBadges = useMemo(\n () =>\n item.audio_language.map((v, idx) => (\n \n {v.name}\n \n )),\n [item.audio_language]\n );\n\n const profile = useProfileBy(item.profileId);\n const profileItems = useProfileItems(profile);\n\n const languageBadges = useMemo(() => {\n const badges: (JSX.Element | null)[] = [];\n\n if (profile) {\n badges.push(\n \n {profile.name}\n \n );\n\n badges.push(\n ...profileItems.map((v, idx) => (\n \n \n \n ))\n );\n }\n\n return badges;\n }, [profile, profileItems]);\n\n const alternativePopover = useMemo(\n () => (\n \n Alternate Titles\n \n {item.alternativeTitles.map((v, idx) => (\n
  • {v}
  • \n ))}\n
    \n
    \n ),\n [item.alternativeTitles]\n );\n\n return (\n \n \n \n \n \n \n \n \n

    {item.title}

    \n \n
    \n {detailBadges}\n {audioBadges}\n {languageBadges}\n \n {item.overview}\n \n
    \n \n \n \n );\n};\n\ninterface ItemBadgeProps {\n icon: IconDefinition;\n children: string | JSX.Element;\n desc?: string;\n}\n\nconst DetailBadge: FunctionComponent = ({\n icon,\n desc,\n children,\n}) => (\n \n \n {children}\n \n);\n\nexport default ItemOverview;\n","import { faSearch, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Column } from \"react-table\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText, SimpleTable } from \"../../components\";\n\nconst missingText = \"Missing Subtitles\";\n\ninterface Props {\n movie: Item.Movie;\n update: (id: number) => void;\n}\n\nconst Table: FunctionComponent = (props) => {\n const { movie, update } = props;\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Subtitle Path\",\n accessor: \"path\",\n Cell: (row) => {\n if (row.value === null || row.value.length === 0) {\n return \"Video File Subtitle Track\";\n } else if (row.value === missingText) {\n return {row.value};\n } else {\n return row.value;\n }\n },\n },\n {\n Header: \"Language\",\n accessor: \"name\",\n Cell: ({ row }) => {\n if (row.original.path === missingText) {\n return (\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n },\n },\n {\n accessor: \"code2\",\n Cell: (row) => {\n const { original } = row.row;\n if (original.path === null || original.path.length === 0) {\n return null;\n } else if (original.path === missingText) {\n return (\n \n MoviesApi.downloadSubtitles(movie.radarrId, {\n language: original.code2,\n hi: original.hi,\n forced: original.forced,\n })\n }\n onSuccess={() => update(movie.radarrId)}\n variant=\"light\"\n size=\"sm\"\n >\n \n \n );\n } else {\n return (\n \n MoviesApi.deleteSubtitles(movie.radarrId, {\n language: original.code2,\n hi: original.hi,\n forced: original.forced,\n path: original.path ?? \"\",\n })\n }\n onSuccess={() => update(movie.radarrId)}\n >\n \n \n );\n }\n },\n },\n ],\n [movie, update]\n );\n\n const data: Subtitle[] = useMemo(() => {\n const missing = movie.missing_subtitles.map((item) => {\n item.path = missingText;\n return item;\n });\n\n return movie.subtitles.concat(missing);\n }, [movie.missing_subtitles, movie.subtitles]);\n\n return (\n \n );\n};\n\nexport default Table;\n","import {\n faCloudUploadAlt,\n faHistory,\n faSearch,\n faSync,\n faToolbox,\n faUser,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Redirect, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../../404\";\nimport { useMovieBy } from \"../../@redux/hooks\";\nimport { MoviesApi, ProvidersApi } from \"../../apis\";\nimport {\n ContentHeader,\n ItemEditorModal,\n LoadingIndicator,\n MovieHistoryModal,\n MovieUploadModal,\n SubtitleToolModal,\n useShowModal,\n} from \"../../components\";\nimport { ManualSearchModal } from \"../../components/modals/ManualSearchModal\";\nimport ItemOverview from \"../../generic/ItemOverview\";\nimport { useAutoUpdate, useWhenLoadingFinish } from \"../../utilites\";\nimport Table from \"./table\";\n\nconst download = (item: any, result: SearchResultType) => {\n item = item as Item.Movie;\n const { language, hearing_impaired, forced, provider, subtitle } = result;\n return ProvidersApi.downloadMovieSubtitle(item.radarrId, {\n language,\n hi: hearing_impaired,\n forced,\n provider,\n subtitle,\n });\n};\n\ninterface Params {\n id: string;\n}\n\ninterface Props extends RouteComponentProps {}\n\nconst MovieDetailView: FunctionComponent = ({ match }) => {\n const id = Number.parseInt(match.params.id);\n const [movie, update] = useMovieBy(id);\n useAutoUpdate(update);\n const item = movie.data;\n\n const showModal = useShowModal();\n\n const [valid, setValid] = useState(true);\n\n const validator = useCallback(() => {\n if (movie.data === null) {\n setValid(false);\n }\n }, [movie.data]);\n\n useWhenLoadingFinish(movie, validator);\n\n if (isNaN(id) || !valid) {\n return ;\n }\n\n if (!item) {\n return ;\n }\n\n const allowEdit = item.profileId !== undefined;\n\n return (\n \n \n {item.title} - Bazarr (Movies)\n \n \n \n \n MoviesApi.action({ action: \"scan-disk\", radarrid: item.radarrId })\n }\n onSuccess={update}\n >\n Scan Disk\n \n \n MoviesApi.action({\n action: \"search-missing\",\n radarrid: item.radarrId,\n })\n }\n onSuccess={update}\n >\n Search\n \n showModal(\"manual-search\", item)}\n >\n Manual\n \n showModal(\"history\", item)}\n >\n History\n \n showModal(\"tools\", [item])}\n >\n Tools\n \n \n\n \n showModal(\"upload\", item)}\n >\n Upload\n \n showModal(\"edit\", item)}\n >\n Edit Movie\n \n \n \n \n \n \n \n
    \n
    \n MoviesApi.modify(form)}\n onSuccess={update}\n >\n \n \n \n \n
    \n );\n};\n\nexport default withRouter(MovieDetailView);\n","import React, { FunctionComponent } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Movie from \".\";\nimport MovieDetail from \"./Detail\";\n\ninterface Props {}\n\nconst Router: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import {\n faCheck,\n faExclamationTriangle,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge, ProgressBar } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { seriesUpdateByRange, seriesUpdateInfoAll } from \"../@redux/actions\";\nimport { useRawSeries } from \"../@redux/hooks\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { SeriesApi } from \"../apis\";\nimport { ActionBadge } from \"../components\";\nimport BaseItemView from \"../generic/BaseItemView\";\n\ninterface Props {}\n\nconst SeriesView: FunctionComponent = () => {\n const [series] = useRawSeries();\n const load = useReduxAction(seriesUpdateByRange);\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"title\",\n className: \"text-nowrap\",\n Cell: ({ row, value, isSelecting: select }) => {\n if (select) {\n return value;\n } else {\n const target = `/series/${row.original.sonarrSeriesId}`;\n return (\n \n {value}\n \n );\n }\n },\n },\n {\n Header: \"Exist\",\n accessor: \"exist\",\n selectHide: true,\n Cell: (row) => {\n const exist = row.value;\n const { path } = row.row.original;\n return (\n \n );\n },\n },\n {\n Header: \"Audio\",\n accessor: \"audio_language\",\n Cell: (row) => {\n return row.value.map((v) => (\n \n {v.name}\n \n ));\n },\n },\n {\n Header: \"Languages Profile\",\n accessor: \"profileId\",\n Cell: ({ value, loose }) => {\n if (loose) {\n // Define in generic/BaseItemView/table.tsx\n const profiles = loose[0] as Profile.Languages[];\n return profiles.find((v) => v.profileId === value)?.name ?? null;\n } else {\n return null;\n }\n },\n },\n {\n Header: \"Episodes\",\n accessor: \"episodeFileCount\",\n selectHide: true,\n Cell: (row) => {\n const {\n episodeFileCount,\n episodeMissingCount,\n profileId,\n } = row.row.original;\n let progress = 0;\n let label = \"\";\n if (episodeFileCount === 0 || !profileId) {\n progress = 0.0;\n } else {\n progress = episodeFileCount - episodeMissingCount;\n label = `${\n episodeFileCount - episodeMissingCount\n }/${episodeFileCount}`;\n }\n\n const color = episodeMissingCount === 0 ? \"primary\" : \"warning\";\n\n return (\n \n );\n },\n },\n {\n accessor: \"sonarrSeriesId\",\n selectHide: true,\n Cell: ({ row, externalUpdate }) => (\n {\n externalUpdate && externalUpdate(row, \"edit\");\n }}\n >\n ),\n },\n ],\n []\n );\n\n return (\n []}\n modify={(form) => SeriesApi.modify(form)}\n >\n );\n};\n\nexport default SeriesView;\n","import { faSearch, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { useSerieBy } from \"../../@redux/hooks\";\nimport { EpisodesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText } from \"../../components\";\n\ninterface Props {\n seriesid: number;\n episodeid: number;\n missing?: boolean;\n subtitle: Subtitle;\n}\n\nexport const SubtitleAction: FunctionComponent = ({\n seriesid,\n episodeid,\n missing,\n subtitle,\n}) => {\n const { hi, forced } = subtitle;\n\n const [, update] = useSerieBy(seriesid);\n\n const path = subtitle.path;\n\n if (missing || path) {\n return (\n {\n if (missing) {\n return EpisodesApi.downloadSubtitles(seriesid, episodeid, {\n hi,\n forced,\n language: subtitle.code2,\n });\n } else if (path) {\n return EpisodesApi.deleteSubtitles(seriesid, episodeid, {\n hi,\n forced,\n path: path,\n language: subtitle.code2,\n });\n } else {\n return null;\n }\n }}\n onSuccess={update}\n as={Badge}\n className=\"mr-1\"\n variant={missing ? \"primary\" : \"secondary\"}\n >\n \n \n \n );\n } else {\n return (\n \n \n \n );\n }\n};\n","import { faBookmark as farBookmark } from \"@fortawesome/free-regular-svg-icons\";\nimport {\n faBookmark,\n faBriefcase,\n faHistory,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge, ButtonGroup } from \"react-bootstrap\";\nimport { Column, TableOptions, TableUpdater } from \"react-table\";\nimport { ProvidersApi } from \"../../apis\";\nimport {\n ActionButton,\n AsyncStateOverlay,\n EpisodeHistoryModal,\n GroupTable,\n SubtitleToolModal,\n useShowModal,\n} from \"../../components\";\nimport { ManualSearchModal } from \"../../components/modals/ManualSearchModal\";\nimport { BuildKey } from \"../../utilites\";\nimport { SubtitleAction } from \"./components\";\n\ninterface Props {\n episodes: AsyncState;\n update: () => void;\n}\n\nconst download = (item: any, result: SearchResultType) => {\n item = item as Item.Episode;\n const { language, hearing_impaired, forced, provider, subtitle } = result;\n return ProvidersApi.downloadEpisodeSubtitle(\n item.sonarrSeriesId,\n item.sonarrEpisodeId,\n {\n language,\n hi: hearing_impaired,\n forced,\n provider,\n subtitle,\n }\n );\n};\n\nconst Table: FunctionComponent = ({ episodes, update }) => {\n const showModal = useShowModal();\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"monitored\",\n Cell: (row) => {\n return (\n \n );\n },\n },\n {\n accessor: \"season\",\n Cell: (row) => {\n return `Season ${row.value}`;\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode\",\n },\n {\n Header: \"Title\",\n accessor: \"title\",\n className: \"text-nowrap\",\n },\n {\n Header: \"Audio\",\n accessor: \"audio_language\",\n Cell: (row) => {\n return row.value.map((v) => (\n \n {v.name}\n \n ));\n },\n },\n {\n Header: \"Subtitles\",\n accessor: \"missing_subtitles\",\n Cell: ({ row }) => {\n const episode = row.original;\n\n const seriesid = episode.sonarrSeriesId;\n\n const elements = useMemo(() => {\n const episodeid = episode.sonarrEpisodeId;\n\n const missing = episode.missing_subtitles.map((val, idx) => (\n \n ));\n\n const existing = episode.subtitles.filter(\n (val) =>\n episode.missing_subtitles.findIndex(\n (v) => v.code2 === val.code2\n ) === -1\n );\n\n const subtitles = existing.map((val, idx) => (\n \n ));\n\n return [...missing, ...subtitles];\n }, [episode, seriesid]);\n\n return elements;\n },\n },\n {\n Header: \"Actions\",\n accessor: \"sonarrEpisodeId\",\n Cell: ({ row, externalUpdate }) => {\n return (\n \n {\n externalUpdate && externalUpdate(row, \"manual-search\");\n }}\n >\n {\n externalUpdate && externalUpdate(row, \"history\");\n }}\n >\n {\n externalUpdate && externalUpdate(row, \"tools\");\n }}\n >\n \n );\n },\n },\n ],\n []\n );\n\n const updateRow = useCallback>(\n (row, modalKey: string) => {\n if (modalKey === \"tools\") {\n showModal(modalKey, [row.original]);\n } else {\n showModal(modalKey, row.original);\n }\n },\n [showModal]\n );\n\n const maxSeason = useMemo(\n () =>\n episodes.data.reduce(\n (prev, curr) => Math.max(prev, curr.season),\n 0\n ),\n [episodes]\n );\n\n const options: TableOptions = useMemo(() => {\n return {\n columns,\n data: episodes.data,\n externalUpdate: updateRow,\n initialState: {\n sortBy: [\n { id: \"season\", desc: true },\n { id: \"episode\", desc: true },\n ],\n groupBy: [\"season\"],\n expanded: {\n [`season:${maxSeason}`]: true,\n },\n },\n };\n }, [episodes, columns, maxSeason, updateRow]);\n\n return (\n \n \n {() => (\n \n )}\n \n \n \n \n \n );\n};\n\nexport default Table;\n","import {\n faAdjust,\n faBriefcase,\n faCloudUploadAlt,\n faHdd,\n faSearch,\n faSync,\n faWrench,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Redirect, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../../404\";\nimport { useEpisodesBy, useSerieBy } from \"../../@redux/hooks\";\nimport { SeriesApi } from \"../../apis\";\nimport {\n ContentHeader,\n ItemEditorModal,\n LoadingIndicator,\n SeriesUploadModal,\n useShowModal,\n} from \"../../components\";\nimport ItemOverview from \"../../generic/ItemOverview\";\nimport { useAutoUpdate, useWhenLoadingFinish } from \"../../utilites\";\nimport Table from \"./table\";\n\ninterface Params {\n id: string;\n}\n\ninterface Props extends RouteComponentProps {}\n\nconst SeriesEpisodesView: FunctionComponent = (props) => {\n const { match } = props;\n const id = Number.parseInt(match.params.id);\n const [serie, update] = useSerieBy(id);\n const item = serie.data;\n\n const [episodes] = useEpisodesBy(serie.data?.sonarrSeriesId);\n\n useAutoUpdate(update);\n\n const available = episodes.data.length !== 0;\n\n const details = useMemo(\n () => [\n {\n icon: faHdd,\n text: `${item?.episodeFileCount} files`,\n },\n {\n icon: faAdjust,\n text: item?.seriesType ?? \"\",\n },\n ],\n [item]\n );\n\n const showModal = useShowModal();\n\n const [valid, setValid] = useState(true);\n\n const validator = useCallback(() => {\n if (serie.data === null) {\n setValid(false);\n }\n }, [serie.data]);\n\n useWhenLoadingFinish(serie, validator);\n\n if (isNaN(id) || !valid) {\n return ;\n }\n\n if (!item) {\n return ;\n }\n\n return (\n \n \n {item.title} - Bazarr (Series)\n \n \n \n \n SeriesApi.action({ action: \"scan-disk\", seriesid: id })\n }\n onSuccess={update}\n >\n Scan Disk\n \n \n SeriesApi.action({ action: \"search-missing\", seriesid: id })\n }\n onSuccess={update}\n disabled={\n item.episodeFileCount === 0 ||\n item.profileId === null ||\n !available\n }\n >\n Search\n \n \n \n showModal(\"tools\", episodes.data)}\n >\n Tools\n \n showModal(\"upload\", item)}\n >\n Upload\n \n showModal(\"edit\", item)}\n >\n Edit Series\n \n \n \n \n \n \n \n
    \n
    \n SeriesApi.modify(form)}\n onSuccess={update}\n >\n \n
    \n );\n};\n\nexport default withRouter(SeriesEpisodesView);\n","import React, { FunctionComponent } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Series from \".\";\nimport Episodes from \"./Episodes\";\n\ninterface Props {}\n\nconst Router: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","export const enabledLanguageKey = \"languages-enabled\";\nexport const languageProfileKey = \"languages-profiles\";\nexport const notificationsKey = \"notifications-providers\";\n\nexport const pathMappingsKey = \"settings-general-path_mappings\";\nexport const pathMappingsMovieKey = \"settings-general-path_mappings_movie\";\n\nexport const seriesEnabledKey = \"settings-general-use_sonarr\";\nexport const moviesEnabledKey = \"settings-general-use_radarr\";\n","import { faSave } from \"@fortawesome/free-solid-svg-icons\";\nimport { merge } from \"lodash\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Prompt } from \"react-router\";\nimport {\n siteSaveLocalstorage,\n systemUpdateSettingsAll,\n} from \"../../@redux/actions\";\nimport { useReduxAction, useReduxActionWith } from \"../../@redux/hooks/base\";\nimport { SystemApi } from \"../../apis\";\nimport { ContentHeader } from \"../../components\";\nimport { log } from \"../../utilites/logger\";\nimport {\n enabledLanguageKey,\n languageProfileKey,\n notificationsKey,\n} from \"../keys\";\n\ntype SettingDispatcher = Record void>;\n\nexport const StagedChangesContext = React.createContext<\n SimpleStateType\n>([{}, () => {}]);\n\nfunction submitHooks(settings: LooseObject) {\n if (languageProfileKey in settings) {\n const item = settings[languageProfileKey];\n settings[languageProfileKey] = JSON.stringify(item);\n }\n\n if (enabledLanguageKey in settings) {\n const item = settings[enabledLanguageKey] as Language[];\n settings[enabledLanguageKey] = item.map((v) => v.code2);\n }\n\n if (notificationsKey in settings) {\n const item = settings[notificationsKey] as Settings.NotificationInfo[];\n settings[notificationsKey] = item.map((v) => JSON.stringify(v));\n }\n}\n\ninterface Props {\n title: string;\n children: JSX.Element | JSX.Element[];\n}\n\nconst SettingsProvider: FunctionComponent = (props) => {\n const { children, title } = props;\n\n const updateStorage = useReduxAction(siteSaveLocalstorage);\n\n const [stagedChange, setChange] = useState({});\n const [updating, setUpdating] = useState(false);\n const [dispatcher, setDispatcher] = useState({});\n\n const cleanup = useCallback(() => {\n setChange({});\n setUpdating(false);\n }, []);\n\n const update = useReduxActionWith(systemUpdateSettingsAll, cleanup);\n\n const saveSettings = useCallback(\n (settings: LooseObject) => {\n submitHooks(settings);\n setUpdating(true);\n log(\"info\", \"submitting settings\", settings);\n SystemApi.setSettings(settings).finally(update);\n },\n [update]\n );\n\n const saveLocalStorage = useCallback(\n (settings: LooseObject) => {\n updateStorage(settings);\n setChange({});\n },\n [updateStorage]\n );\n\n useEffect(() => {\n // Update dispatch\n const newDispatch: SettingDispatcher = {};\n newDispatch[\"__default__\"] = saveSettings;\n newDispatch[\"storage\"] = saveLocalStorage;\n setDispatcher(newDispatch);\n }, [saveSettings, saveLocalStorage]);\n\n const defaultDispatcher = useMemo(() => dispatcher[\"__default__\"], [\n dispatcher,\n ]);\n\n const submit = useCallback(() => {\n const dispatchMaps = new Map();\n\n // Separate settings by key\n for (const key in stagedChange) {\n const keys = key.split(\"-\");\n const firstKey = keys[0];\n if (firstKey.length === 0) {\n continue;\n }\n\n const object = dispatchMaps.get(firstKey);\n if (object) {\n object[key] = stagedChange[key];\n } else {\n dispatchMaps.set(firstKey, { [key]: stagedChange[key] });\n }\n }\n\n let lostValues = {};\n\n dispatchMaps.forEach((v, k) => {\n if (k in dispatcher) {\n dispatcher[k](v);\n } else {\n lostValues = merge(lostValues, v);\n }\n });\n // send to default dispatcher\n defaultDispatcher(lostValues);\n }, [stagedChange, dispatcher, defaultDispatcher]);\n\n return (\n \n \n {title}\n \n 0}\n message=\"You have unsaved changes, are you sure you want to leave?\"\n >\n \n \n Save\n \n \n \n \n {children}\n \n \n \n );\n};\n\nexport default SettingsProvider;\n","import { isArray, isEqual } from \"lodash\";\nimport { useCallback, useContext, useMemo } from \"react\";\nimport { useStore } from \"react-redux\";\nimport { useSystemSettings } from \"../../@redux/hooks\";\nimport { mergeArray } from \"../../utilites\";\nimport { log } from \"../../utilites/logger\";\nimport { StagedChangesContext } from \"./provider\";\n\nexport function useStagedValues(): LooseObject {\n const [values] = useContext(StagedChangesContext);\n return values;\n}\n\nexport function useSingleUpdate() {\n const [, update] = useContext(StagedChangesContext);\n return useCallback(\n (v: any, key: string) => {\n update((staged) => {\n const changes = { ...staged };\n changes[key] = v;\n\n log(\"info\", \"stage settings\", changes);\n\n return changes;\n });\n },\n [update]\n );\n}\n\nexport function useMultiUpdate() {\n const [, update] = useContext(StagedChangesContext);\n return useCallback(\n (obj: LooseObject) => {\n update((staged) => {\n const changes = { ...staged, ...obj };\n\n log(\"info\", \"stage settings\", changes);\n\n return changes;\n });\n },\n [update]\n );\n}\n\ntype ValidateFuncType = (v: any) => v is T;\n\nexport type OverrideFuncType = (settings: Settings, store: ReduxStore) => T;\n\nexport function useExtract(\n key: string,\n validate: ValidateFuncType,\n override?: OverrideFuncType\n): Readonly> {\n const [systemSettings] = useSystemSettings();\n const settings = systemSettings.data;\n\n const store = useStore();\n\n const extractValue = useMemo(() => {\n let value: Nullable = null;\n\n if (settings === undefined) {\n return value;\n }\n\n let path = key.split(\"-\");\n\n if (path[0] !== \"settings\") {\n return null;\n } else {\n path = path.slice(0);\n }\n\n let item: LooseObject = settings;\n for (const key of path) {\n if (key in item) {\n item = item[key];\n }\n\n if (validate(item)) {\n value = item;\n break;\n }\n }\n\n return value;\n }, [key, settings, validate]);\n\n if (override && settings !== undefined) {\n // TODO: Temporarily override\n return override(settings, store.getState());\n } else {\n return extractValue;\n }\n}\n\nexport function useUpdateArray(\n key: string,\n compare?: (one: T, another: T) => boolean\n) {\n const update = useSingleUpdate();\n const stagedValue = useStagedValues();\n\n if (compare === undefined) {\n compare = isEqual;\n }\n\n const staged: T[] = useMemo(() => {\n if (key in stagedValue) {\n return stagedValue[key];\n } else {\n return [];\n }\n }, [key, stagedValue]);\n\n return useCallback(\n (v: T) => {\n const newArray = [...staged];\n const idx = newArray.findIndex((inn) => compare!(inn, v));\n if (idx !== -1) {\n newArray[idx] = v;\n } else {\n newArray.push(v);\n }\n update(newArray, key);\n },\n [compare, staged, key, update]\n );\n}\n\nexport function useLatest(\n key: string,\n validate: ValidateFuncType,\n override?: OverrideFuncType\n): Readonly> {\n const extractValue = useExtract(key, validate, override);\n const stagedValue = useStagedValues();\n if (key in stagedValue) {\n return stagedValue[key] as T;\n } else {\n return extractValue;\n }\n}\n\n// Merge Two Array\nexport function useLatestMergeArray(\n key: string,\n compare: Comparer,\n override?: OverrideFuncType\n): Readonly> {\n const extractValue = useExtract(key, isArray, override);\n const stagedValue = useStagedValues();\n\n if (compare === undefined) {\n compare = isEqual;\n }\n\n let staged: T[] | undefined = undefined;\n if (key in stagedValue) {\n staged = stagedValue[key];\n }\n\n return useMemo(() => {\n if (staged !== undefined && extractValue) {\n return mergeArray(extractValue, staged, compare);\n } else {\n return extractValue;\n }\n }, [extractValue, staged, compare]);\n}\n","import React, {\n Dispatch,\n FunctionComponent,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { Collapse } from \"react-bootstrap\";\n\ntype SupportType = string | boolean;\n\nconst CollapseContext = React.createContext<\n [SupportType, Dispatch]\n>([\"\", (s) => {}]);\nconst CollapseUpdateContext = React.createContext>(\n (s) => {}\n);\n\nexport function useCollapse() {\n return useContext(CollapseUpdateContext);\n}\n\ninterface CollapseBoxType {\n Control: typeof CollapseBoxControl;\n Content: typeof CollapseBoxContent;\n}\n\nconst CollapseBox: CollapseBoxType & FunctionComponent = ({ children }) => {\n const state = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nconst CollapseBoxControl: FunctionComponent = ({ children }) => {\n const context = useContext(CollapseContext);\n return (\n \n {children}\n \n );\n};\n\ninterface ContentProps {\n on?: (k: string) => boolean;\n eventKey?: string;\n indent?: boolean;\n children: JSX.Element | JSX.Element[];\n}\n\nconst CollapseBoxContent: FunctionComponent = ({\n on,\n eventKey,\n indent,\n children,\n}) => {\n const [value] = useContext(CollapseContext);\n\n const open = useMemo(() => {\n if (on && typeof value === \"string\") {\n return on(value);\n } else if (eventKey) {\n return value === eventKey;\n } else {\n return value === true;\n }\n }, [on, value, eventKey]);\n\n return (\n \n
    {children}
    \n
    \n );\n};\n\nCollapseBox.Control = CollapseBoxControl;\nCollapseBox.Content = CollapseBoxContent;\n\nexport default CollapseBox;\n","import { faPlus } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Card as BSCard, Col, Form, Row } from \"react-bootstrap\";\nimport \"./style.scss\";\n\ninterface GroupProps {\n header: string;\n hidden?: boolean;\n}\n\nexport const Group: FunctionComponent = ({\n header,\n hidden,\n children,\n}) => {\n return (\n \n );\n};\n\nexport interface InputProps {\n name?: string;\n hidden?: boolean;\n}\n\nexport const Input: FunctionComponent = ({\n children,\n name,\n hidden,\n}) => {\n return (\n \n );\n};\n\ninterface CardProps {\n header?: string;\n subheader?: string;\n plus?: boolean;\n onClick?: () => void;\n}\n\nexport const ColCard: FunctionComponent = (props) => {\n return (\n \n \n \n );\n};\n\nexport const Card: FunctionComponent = ({\n header,\n subheader,\n plus,\n onClick,\n}) => {\n return (\n onClick && onClick()}>\n {plus ? (\n \n \n \n ) : (\n \n \n {header}\n \n \n )}\n \n );\n};\n","import { isArray, isBoolean, isNull, isNumber, isString } from \"lodash\";\nimport React, { FunctionComponent, useEffect } from \"react\";\nimport {\n Button as BSButton,\n ButtonProps as BSButtonProps,\n Form,\n} from \"react-bootstrap\";\nimport { useCollapse, useLatest } from \".\";\nimport {\n Chips as CChips,\n ChipsProps as CChipsProps,\n Selector as CSelector,\n SelectorProps as CSelectorProps,\n Slider as CSlider,\n SliderProps as CSliderProps,\n} from \"../../components\";\nimport { isReactText } from \"../../utilites\";\nimport { OverrideFuncType, useSingleUpdate } from \"./hooks\";\n\nexport const Message: FunctionComponent<{\n type?: \"warning\" | \"info\";\n}> = ({ type, children }) => {\n const cls = [\"pr-4\"];\n cls.push(type === \"warning\" ? \"text-warning\" : \"text-muted\");\n\n return {children};\n};\n\nexport interface BaseInput {\n disabled?: boolean;\n settingKey: string;\n override?: OverrideFuncType;\n beforeStaged?: (v: T) => any;\n}\n\nexport interface TextProps extends BaseInput {\n placeholder?: React.ReactText;\n password?: boolean;\n controlled?: boolean;\n}\n\nexport const Text: FunctionComponent = ({\n placeholder,\n disabled,\n beforeStaged,\n controlled,\n override,\n password,\n settingKey,\n}) => {\n const value = useLatest(settingKey, isReactText, override);\n\n const update = useSingleUpdate();\n const collapse = useCollapse();\n\n return (\n {\n const val = e.currentTarget.value;\n collapse(val.toString());\n const value = beforeStaged ? beforeStaged(val) : val;\n update(value, settingKey);\n }}\n >\n );\n};\n\nexport interface CheckProps extends BaseInput {\n label?: string;\n inline?: boolean;\n}\n\nexport const Check: FunctionComponent = ({\n label,\n inline,\n override,\n disabled,\n settingKey,\n}) => {\n const update = useSingleUpdate();\n const collapse = useCollapse();\n\n const value = useLatest(settingKey, isBoolean, override);\n\n useEffect(() => collapse(value ?? false), [collapse, value]);\n\n return (\n {\n const { checked } = e.currentTarget;\n update(checked, settingKey);\n }}\n disabled={disabled}\n checked={value ?? undefined}\n >\n );\n};\n\nfunction selectorValidator(v: any): v is T {\n return isString(v) || isNumber(v) || isArray(v);\n}\n\ntype SelectorProps = BaseInput> &\n CSelectorProps;\n\nexport function Selector<\n T extends string | string[] | number | number[],\n M extends boolean = false\n>(props: SelectorProps) {\n const update = useSingleUpdate();\n const collapse = useCollapse();\n\n const { settingKey, override, beforeStaged, ...selector } = props;\n\n const value = useLatest>(\n settingKey,\n selectorValidator,\n override\n );\n\n useEffect(() => {\n if (isString(value) || isNull(value)) {\n collapse(value ?? \"\");\n }\n });\n\n return (\n {\n v = beforeStaged ? beforeStaged(v) : v;\n update(v, settingKey);\n }}\n >\n );\n}\n\ntype SliderProps = {} & BaseInput &\n Omit;\n\nexport const Slider: FunctionComponent = (props) => {\n const { settingKey, override, ...slider } = props;\n\n const update = useSingleUpdate();\n\n const defaultValue = useLatest(settingKey, isNumber, override);\n\n return (\n {\n update(v, settingKey);\n }}\n defaultValue={defaultValue ?? undefined}\n {...slider}\n >\n );\n};\n\ntype ChipsProp = {} & BaseInput &\n Omit;\n\nexport const Chips: FunctionComponent = (props) => {\n const { settingKey, override, ...chips } = props;\n\n const update = useSingleUpdate();\n\n const defaultValue = useLatest(settingKey, isArray, override);\n\n return (\n {\n update(v, settingKey);\n }}\n {...chips}\n >\n );\n};\n\ntype ButtonProps = {\n onClick?: (\n update: (v: any, key: string) => void,\n key: string,\n value?: string\n ) => void;\n} & Omit, \"override\" | \"beforeStaged\">;\n\nexport const Button: FunctionComponent> = (\n props\n) => {\n const { onClick, settingKey, ...button } = props;\n\n const value = useLatest(settingKey, isString);\n const update = useSingleUpdate();\n\n return (\n {\n onClick && onClick(update, settingKey, value ?? undefined);\n }}\n {...button}\n >\n );\n};\n","import { isBoolean, isNumber, isString } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { UtilsApi } from \"../../apis\";\nimport { useLatest } from \"./hooks\";\n\nexport const URLTestButton: FunctionComponent<{\n category: \"sonarr\" | \"radarr\";\n}> = ({ category }) => {\n const [title, setTitle] = useState(\"Test\");\n const [variant, setVar] = useState(\"primary\");\n\n const address = useLatest(`settings-${category}-ip`, isString);\n const port = useLatest(`settings-${category}-port`, isNumber);\n const url = useLatest(`settings-${category}-base_url`, isString);\n const apikey = useLatest(`settings-${category}-apikey`, isString);\n const ssl = useLatest(`settings-${category}-ssl`, isBoolean);\n\n const click = useCallback(() => {\n if (address && apikey && ssl !== null) {\n let testUrl: string;\n if (port) {\n testUrl = `${address}:${port}${url ?? \"\"}`;\n } else {\n testUrl = `${address}${url ?? \"\"}`;\n }\n const request = {\n protocol: ssl ? \"https\" : \"http\",\n url: testUrl,\n params: {\n apikey: apikey,\n },\n };\n\n if (!request.url.endsWith(\"/\")) {\n request.url += \"/\";\n }\n\n UtilsApi.urlTest(request.protocol, request.url, request.params).then(\n (result) => {\n if (result.status) {\n setTitle(`Version: ${result.version}`);\n setVar(\"success\");\n } else {\n setTitle(result.error);\n setVar(\"danger\");\n }\n }\n );\n }\n }, [address, port, url, apikey, ssl]);\n\n return (\n \n {title}\n \n );\n};\n\nexport * from \"./collapse\";\nexport { default as CollapseBox } from \"./collapse\";\nexport * from \"./container\";\nexport * from \"./forms\";\nexport * from \"./hooks\";\nexport * from \"./provider\";\nexport { default as SettingsProvider } from \"./provider\";\n","export const securityOptions: SelectorOption[] = [\n {\n label: \"Basic\",\n value: \"basic\",\n },\n {\n label: \"Form\",\n value: \"form\",\n },\n];\n\nexport const proxyOptions: SelectorOption[] = [\n {\n label: \"Socks5\",\n value: \"socks5\",\n },\n {\n label: \"HTTP(S)\",\n value: \"http\",\n },\n];\n\nexport const branchOptions: SelectorOption[] = [\n {\n label: \"master\",\n value: \"master\",\n },\n {\n label: \"development\",\n value: \"development\",\n },\n];\n","import {\n faCheck,\n faClipboard,\n faSync,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useState } from \"react\";\nimport { InputGroup } from \"react-bootstrap\";\nimport {\n copyToClipboard,\n toggleState,\n useCanUpdateInject,\n} from \"../../utilites\";\nimport {\n Button,\n Check,\n Chips,\n CollapseBox,\n Group,\n Input,\n Message,\n Selector,\n SettingsProvider,\n Text,\n} from \"../components\";\nimport { branchOptions, proxyOptions, securityOptions } from \"./options\";\n\nconst characters = \"abcdef0123456789\";\nconst settingApiKey = \"settings-auth-apikey\";\n\nconst generateApiKey = () => {\n return Array(32)\n .fill(null)\n .map(() => characters.charAt(Math.floor(Math.random() * characters.length)))\n .join(\"\");\n};\n\nconst baseUrlOverride = (settings: Settings) =>\n settings.general.base_url?.slice(1) ?? \"\";\n\nconst SettingsGeneralView: FunctionComponent = () => {\n const [copied, setCopy] = useState(false);\n\n const canUpdate = useCanUpdateInject();\n\n return (\n \n \n \n \n Valid IPv4 address or '0.0.0.0' for all interfaces\n \n \n \n \n \n \n \n /\n \n \"/\" + v}\n >\n \n Reverse proxy support\n \n \n \n \n \n \n (v === null ? \"None\" : v)}\n >\n \n \n k !== \"\" && k !== \"None\"}>\n \n \n \n \n \n \n \n \n \n \n \n \n {\n if (value) {\n copyToClipboard(value);\n toggleState(setCopy, 1500);\n }\n }}\n >\n \n \n {\n update(generateApiKey(), key);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n (v === null ? \"None\" : v)}\n >\n \n \n k !== \"\" && k !== \"None\"}>\n \n \n \n \n \n \n \n \n \n \n \n \n You only need to enter a username and password if one is\n required. Leave them blank otherwise\n \n \n \n \n '*.' as a wildcard for subdomains\n \n \n \n \n \n \n \n \n Debug logging should only be enabled temporarily\n \n \n \n \n \n \n Send anonymous usage information, nothing that can identify you.\n This includes information on which providers you use, what languages\n you search for, Bazarr, Python, Sonarr, Radarr and what OS version\n you are using. We will use this information to prioritize features\n and bug fixes. Please, keep this enabled as this is the only way we\n have to better understand how you use Bazarr.\n \n \n \n \n );\n};\n\nexport default SettingsGeneralView;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { useEnabledLanguages, useProfiles } from \".\";\nimport { LanguageSelector as CLanguageSelector } from \"../../components\";\nimport { BaseInput, Selector, useSingleUpdate } from \"../components\";\n\ninterface LanguageSelectorProps {\n options: readonly Language[];\n}\n\nexport const LanguageSelector: FunctionComponent<\n LanguageSelectorProps & BaseInput\n> = ({ settingKey, options }) => {\n const enabled = useEnabledLanguages();\n const update = useSingleUpdate();\n\n return (\n {\n update(val, settingKey);\n }}\n >\n );\n};\n\ninterface ProfileSelectorProps {}\n\nexport const ProfileSelector: FunctionComponent<\n ProfileSelectorProps & BaseInput\n> = ({ settingKey }) => {\n const profiles = useProfiles();\n\n const profileOptions = useMemo[]>(\n () =>\n profiles.map((v) => {\n return { label: v.name, value: v.profileId };\n }),\n [profiles]\n );\n\n return (\n (v === null ? \"\" : v)}\n >\n );\n};\n","export const anyCutoff = 65535;\n\nexport const cutoffOptions: SelectorOption[] = [\n {\n label: \"Any\",\n value: anyCutoff,\n },\n];\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Form } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { useEnabledLanguages } from \".\";\nimport {\n ActionButton,\n BaseModal,\n BaseModalProps,\n LanguageSelector,\n Selector,\n SimpleTable,\n useCloseModal,\n usePayload,\n} from \"../../components\";\nimport { Input, Message } from \"../components\";\nimport { cutoffOptions } from \"./options\";\ninterface Props {\n update: (profile: Profile.Languages) => void;\n}\n\nfunction createDefaultProfile(): Profile.Languages {\n return {\n profileId: -1,\n name: \"\",\n items: [],\n cutoff: null,\n };\n}\n\nconst LanguagesProfileModal: FunctionComponent = (\n props\n) => {\n const { update, ...modal } = props;\n\n const profile = usePayload(modal.modalKey);\n\n const closeModal = useCloseModal();\n\n const languages = useEnabledLanguages();\n\n const [current, setProfile] = useState(profile ?? createDefaultProfile());\n\n useEffect(() => {\n if (profile) {\n setProfile(profile);\n }\n }, [profile]);\n\n const cutoff: SelectorOption[] = useMemo(() => {\n const options = [...cutoffOptions];\n\n const newOptions = current.items.map>((v) => ({\n label: `ID ${v.id} (${v.language})`,\n value: v.id,\n }));\n\n options.push(...newOptions);\n\n return options;\n }, [current.items]);\n\n const updateProfile = useCallback(\n (\n key: K,\n value: Profile.Languages[K]\n ) => {\n const object = { ...current };\n object[key] = value;\n setProfile(object);\n },\n [current]\n );\n\n const updateRow = useCallback>(\n (row, item: Profile.Item) => {\n const list = [...current.items];\n if (item) {\n list[row.index] = item;\n } else {\n list.splice(row.index, 1);\n }\n updateProfile(\"items\", list);\n },\n [current.items, updateProfile]\n );\n\n const addItem = useCallback(() => {\n const id =\n 1 +\n current.items.reduce((val, item) => Math.max(item.id, val), 0);\n\n if (languages.length > 0) {\n const language = languages[0].code2;\n\n const item: Profile.Item = {\n id,\n language,\n audio_exclude: \"False\",\n hi: \"False\",\n forced: \"False\",\n };\n\n const list = [...current.items];\n\n list.push(item);\n updateProfile(\"items\", list);\n }\n }, [current.items, updateProfile, languages]);\n\n const canSave = current.name.length > 0 && current.items.length > 0;\n\n const footer = (\n {\n closeModal();\n update(current);\n }}\n >\n Save\n \n );\n\n const columns = useMemo[]>(\n () => [\n {\n Header: \"ID\",\n accessor: \"id\",\n },\n {\n Header: \"Language\",\n accessor: \"language\",\n Cell: ({ value, row, externalUpdate }) => {\n const code = value;\n const item = row.original;\n const lang = useMemo(() => languages.find((l) => l.code2 === code), [\n code,\n ]);\n return (\n
    \n {\n if (l) {\n item.language = l.code2;\n externalUpdate && externalUpdate(row, item);\n }\n }}\n >\n
    \n );\n },\n },\n {\n Header: \"Forced\",\n accessor: \"forced\",\n Cell: ({ row, value, externalUpdate }) => {\n const item = row.original;\n return (\n {\n item.forced = v.target.checked ? \"True\" : \"False\";\n externalUpdate && externalUpdate(row, item);\n }}\n >\n );\n },\n },\n {\n Header: \"HI\",\n accessor: \"hi\",\n Cell: ({ row, value, externalUpdate }) => {\n const item = row.original;\n return (\n {\n item.hi = v.target.checked ? \"True\" : \"False\";\n externalUpdate && externalUpdate(row, item);\n }}\n >\n );\n },\n },\n {\n Header: \"Exclude Audio\",\n accessor: \"audio_exclude\",\n Cell: ({ row, value, externalUpdate }) => {\n const item = row.original;\n return (\n {\n item.audio_exclude = v.target.checked ? \"True\" : \"False\";\n externalUpdate && externalUpdate(row, item);\n }}\n >\n );\n },\n },\n {\n id: \"action\",\n accessor: \"id\",\n Cell: ({ row, externalUpdate }) => {\n return (\n externalUpdate && externalUpdate(row)}\n >\n );\n },\n },\n ],\n [languages]\n );\n\n return (\n \n \n {\n updateProfile(\"name\", v.target.value);\n }}\n >\n \n \n \n \n \n \n updateProfile(\"cutoff\", num)}\n >\n Ignore others if existing\n \n \n );\n};\n\nexport default LanguagesProfileModal;\n","import { faTrash, faWrench } from \"@fortawesome/free-solid-svg-icons\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Badge, Button, ButtonGroup } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { useProfiles } from \".\";\nimport { ActionButton, SimpleTable, useShowModal } from \"../../components\";\nimport { useSingleUpdate } from \"../components\";\nimport { languageProfileKey } from \"../keys\";\nimport Modal from \"./modal\";\nimport { anyCutoff } from \"./options\";\n\nconst Table: FunctionComponent = () => {\n const originalProfiles = useProfiles();\n\n const [profiles, setProfiles] = useState([...originalProfiles]);\n\n const nextProfileId = useMemo(\n () =>\n 1 +\n profiles.reduce((val, prof) => Math.max(prof.profileId, val), 0),\n [profiles]\n );\n\n const update = useSingleUpdate();\n\n const showModal = useShowModal();\n\n const submitProfiles = useCallback(\n (list: Profile.Languages[]) => {\n update(list, languageProfileKey);\n setProfiles(list);\n },\n [update]\n );\n\n const updateProfile = useCallback(\n (profile: Profile.Languages) => {\n const list = [...profiles];\n const idx = list.findIndex((v) => v.profileId === profile.profileId);\n\n if (idx !== -1) {\n list[idx] = profile;\n } else {\n list.push(profile);\n }\n submitProfiles(list);\n },\n [profiles, submitProfiles]\n );\n\n const updateRow = useCallback>(\n (row, item?: Profile.Languages) => {\n if (item) {\n showModal(\"profile\", item);\n } else {\n const list = [...profiles];\n list.splice(row.index, 1);\n submitProfiles(list);\n }\n },\n [submitProfiles, showModal, profiles]\n );\n\n const columns = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"name\",\n },\n {\n Header: \"Languages\",\n accessor: \"items\",\n Cell: (row) => {\n const items = row.value;\n const cutoff = row.row.original.cutoff;\n return items.map((v) => {\n const isCutoff = v.id === cutoff || cutoff === anyCutoff;\n return (\n \n );\n });\n },\n },\n {\n accessor: \"profileId\",\n Cell: ({ row, externalUpdate }) => {\n const profile = row.original;\n\n return (\n \n {\n externalUpdate && externalUpdate(row, profile);\n }}\n >\n externalUpdate && externalUpdate(row)}\n >\n \n );\n },\n },\n ],\n []\n );\n\n return (\n \n \n {\n const profile = {\n profileId: nextProfileId,\n name: \"\",\n items: [],\n cutoff: null,\n };\n showModal(\"profile\", profile);\n }}\n >\n Add New Profile\n \n \n \n );\n};\n\ninterface ItemProps {\n className?: string;\n item: Profile.Item;\n cutoff: boolean;\n}\n\nconst ItemBadge: FunctionComponent = ({\n cutoff,\n item,\n className,\n}) => {\n const text = useMemo(() => {\n let result = item.language;\n if (item.hi === \"True\") {\n result += \":HI\";\n } else if (item.forced === \"True\") {\n result += \":Forced\";\n }\n return result;\n }, [item.hi, item.forced, item.language]);\n return (\n \n {text}\n
    \n );\n};\n\nexport default Table;\n","import { isArray } from \"lodash\";\nimport React, { FunctionComponent, useContext } from \"react\";\nimport { useLanguageProfiles, useLanguages } from \"../../@redux/hooks\";\nimport {\n Check,\n CollapseBox,\n Group,\n Input,\n Message,\n SettingsProvider,\n useLatest,\n} from \"../components\";\nimport { enabledLanguageKey, languageProfileKey } from \"../keys\";\nimport { LanguageSelector, ProfileSelector } from \"./components\";\nimport Table from \"./table\";\n\nconst EnabledLanguageContext = React.createContext([]);\nconst LanguagesProfileContext = React.createContext<\n readonly Profile.Languages[]\n>([]);\n\nexport function useEnabledLanguages() {\n const list = useContext(EnabledLanguageContext);\n const latest = useLatest(enabledLanguageKey, isArray);\n\n if (latest) {\n return latest;\n } else {\n return list;\n }\n}\n\nexport function useProfiles() {\n const list = useContext(LanguagesProfileContext);\n const latest = useLatest(languageProfileKey, isArray);\n\n if (latest) {\n return latest;\n } else {\n return list;\n }\n}\n\ninterface Props {}\n\nconst SettingsLanguagesView: FunctionComponent = () => {\n const [languages] = useLanguages(false);\n const [enabled] = useLanguages(true);\n const [profiles] = useLanguageProfiles();\n\n return (\n \n \n \n \n \n \n \n Download a single Subtitles file without adding the language\n code to the filename.\n \n \n We don't recommend enabling this option unless absolutely\n required (ie: media player not supporting language code in\n subtitles filename). Results may vary.\n \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n \n \n Apply only to Series added to Bazarr after enabling this\n option.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Apply only to Movies added to Bazarr after enabling this\n option.\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n );\n};\n\nexport default SettingsLanguagesView;\n","import React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Col, Container, Form, Row } from \"react-bootstrap\";\nimport { SystemApi } from \"../../apis\";\nimport {\n AsyncButton,\n BaseModal,\n BaseModalProps,\n Selector,\n useCloseModal,\n useOnModalShow,\n usePayload,\n useShowModal,\n} from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport { ColCard, useLatestMergeArray, useUpdateArray } from \"../components\";\nimport { notificationsKey } from \"../keys\";\n\ninterface ModalProps {\n selections: readonly Settings.NotificationInfo[];\n}\n\nconst notificationComparer = (\n one: Settings.NotificationInfo,\n another: Settings.NotificationInfo\n) => one.name === another.name;\n\nconst NotificationModal: FunctionComponent = ({\n selections,\n ...modal\n}) => {\n const options = useMemo[]>(\n () =>\n selections\n .filter((v) => !v.enabled)\n .map((v) => ({\n label: v.name,\n value: v,\n })),\n [selections]\n );\n\n const update = useUpdateArray(\n notificationsKey,\n notificationComparer\n );\n\n const payload = usePayload(modal.modalKey);\n\n const [current, setCurrent] = useState>(\n payload ?? null\n );\n\n const onShow = useCallback(() => setCurrent(payload ?? null), [payload]);\n\n useOnModalShow(modal.modalKey, onShow);\n\n const updateUrl = useCallback(\n (s: string) => {\n if (current) {\n const newCurrent = { ...current };\n newCurrent.url = s;\n setCurrent(newCurrent);\n }\n },\n [current]\n );\n\n const closeModal = useCloseModal();\n\n const canSave =\n current !== null && current?.url !== null && current?.url.length !== 0;\n\n const footer = useMemo(\n () => (\n \n {\n if (current && current.url) {\n return SystemApi.testNotification(current.name, current.url);\n } else {\n return null;\n }\n }}\n >\n Test\n \n \n ),\n [canSave, closeModal, current, update, payload]\n );\n\n return (\n \n \n \n \n v.name}\n >\n \n \n \n {\n const value = e.currentTarget.value;\n updateUrl(value);\n }}\n >\n \n \n \n \n \n );\n};\n\nexport const NotificationView: FunctionComponent = () => {\n const notifications = useLatestMergeArray(\n notificationsKey,\n notificationComparer,\n (settings) => settings.notifications.providers\n );\n\n const showModal = useShowModal();\n\n const elements = useMemo(() => {\n return notifications\n ?.filter((v) => v.enabled)\n .map((v, idx) => (\n showModal(\"notifications\", v)}\n >\n ));\n }, [notifications, showModal]);\n\n return (\n \n \n {elements}{\" \"}\n showModal(\"notifications\")}>\n \n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { Alert } from \"react-bootstrap\";\nimport { Check, Group, Input, Message, SettingsProvider } from \"../components\";\nimport { NotificationView } from \"./components\";\n\nconst SettingsNotificationsView: FunctionComponent = () => {\n return (\n \n \n Thanks to caronc for his work on{\" \"}\n \n apprise\n \n , the core of the Bazarr notification system.\n \n \n Please follow instructions on his{\" \"}\n \n Wiki\n {\" \"}\n to configure your notification providers.\n \n \n \n \n \n \n \n \n Suppress notifications when manually download/upload subtitles.\n \n \n \n \n );\n};\n\nexport default SettingsNotificationsView;\n","import { ReactText } from \"react\";\n\ntype AvailableType = ReactText | boolean;\nexport interface ProviderInfo {\n key: string;\n name?: string;\n description?: string;\n message?: string;\n defaultKey?: {\n [key: string]: AvailableType;\n };\n keyNameOverride?: {\n [key: string]: string;\n };\n}\n\nexport const ProviderList: Readonly = [\n {\n key: \"addic7ed\",\n description: \"Requires Anti-Captcha Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"argenteam\", description: \"Spanish Subtitles Provider\" },\n {\n key: \"assrt\",\n description: \"Chinese Subtitles Provider\",\n defaultKey: {\n token: \"\",\n },\n },\n {\n key: \"betaseries\",\n name: \"BetaSeries\",\n description: \"French / English Provider for TV Shows Only\",\n defaultKey: {\n token: \"\",\n },\n keyNameOverride: {\n token: \"API KEY\",\n },\n },\n {\n key: \"bsplayer\",\n name: \"BSplayer\",\n },\n {\n key: \"greeksubs\",\n name: \"GreekSubs\",\n description: \"Greek Subtitles Provider\",\n },\n {\n key: \"greeksubtitles\",\n name: \"GreekSubtitles\",\n description: \"Greek Subtitles Provider\",\n },\n { key: \"hosszupuska\", description: \"Hungarian Subtitles Provider\" },\n {\n key: \"legendasdivx\",\n name: \"LegendasDivx\",\n description: \"Brazilian / Portuguese Subtitles Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n skip_wrong_fps: false,\n },\n keyNameOverride: {\n skip_wrong_fps: \"Skip Wrong FPS\",\n },\n },\n {\n key: \"legendastv\",\n name: \"LegendasTV\",\n description: \"Brazilian / Portuguese Subtitles Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"napiprojekt\", description: \"Polish Subtitles Provider\" },\n {\n key: \"napisy24\",\n description: \"Polish Subtitles Provider\",\n message:\n \"The provided credentials must have API access. Leave empty to use the defaults.\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"nekur\", description: \"Latvian Subtitles Provider\" },\n {\n key: \"opensubtitles\",\n name: \"OpenSubtitles.org\",\n defaultKey: {\n username: \"\",\n password: \"\",\n vip: false,\n ssl: false,\n skip_wrong_fps: false,\n },\n keyNameOverride: {\n vip: \"VIP\",\n ssl: \"Use SSL\",\n skip_wrong_fps: \"Skip Wrong FPS\",\n },\n },\n {\n key: \"opensubtitlescom\",\n name: \"OpenSubtitles.com\",\n defaultKey: {\n username: \"\",\n password: \"\",\n use_hash: false,\n },\n keyNameOverride: {\n use_hash: \"Use Hash\",\n },\n },\n { key: \"podnapisi\" },\n {\n key: \"regielive\",\n name: \"RegieLive\",\n description: \"Romanian Subtitles Provider\",\n },\n {\n key: \"soustitres\",\n name: \"Sous-Titres.eu\",\n description: \"Mostly French Subtitles Provider\",\n },\n { key: \"subdivx\", description: \"Spanish Subtitles Provider\" },\n {\n key: \"subssabbz\",\n name: \"Subs.sab.bz\",\n description: \"Bulgarian Subtitles Provider\",\n },\n {\n key: \"subs4free\",\n name: \"Subs4Free\",\n description: \"Greek Subtitles Provider\",\n },\n {\n key: \"subs4series\",\n name: \"Subs4Series\",\n description: \"Greek Subtitles Provider\",\n },\n {\n key: \"subscene\",\n description: \"Requires Anti-Captcha Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"subscenter\" },\n {\n key: \"subsunacs\",\n name: \"Subsunacs.net\",\n description: \"Bulgarian Subtitles Provider\",\n },\n {\n key: \"subtitri\",\n name: \"subtitri.id.lv\",\n description: \"Latvian Subtitles Provider\",\n },\n {\n key: \"subtitulamos\",\n name: \"Subtitulamos.tv\",\n description: \"Spanish Subtitles Provider\",\n },\n { key: \"sucha\", description: \"Spanish Subtitles Provider\" },\n { key: \"supersubtitles\" },\n {\n key: \"titlovi\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n { key: \"titrari\", name: \"Titrari.ro\" },\n {\n key: \"tusubtitulo\",\n name: \"Tusubtitulo.com\",\n description: \"Spanish / English Subtitles Provider for TV Shows\",\n },\n { key: \"tvsubtitles\", name: \"TVSubtitles\" },\n { key: \"wizdom\", description: \"Wizdom.xyz Subtitles Provider.\" },\n {\n key: \"xsubs\",\n name: \"XSubs\",\n description: \"Greek Subtitles Provider\",\n defaultKey: {\n username: \"\",\n password: \"\",\n },\n },\n {\n key: \"yavka\",\n name: \"Yavka.net\",\n description: \"Bulgarian Subtitles Provider\",\n },\n { key: \"yify\", name: \"YIFY Subtitles\" },\n { key: \"zimuku\", description: \"Chinese Subtitles Provider\" },\n];\n","import { capitalize, isArray, isBoolean } from \"lodash\";\nimport React, {\n FunctionComponent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { Button, Col, Container, Row } from \"react-bootstrap\";\nimport {\n BaseModal,\n Selector,\n useCloseModal,\n useOnModalShow,\n usePayload,\n useShowModal,\n} from \"../../components\";\nimport { BuildKey, isReactText } from \"../../utilites\";\nimport {\n Check,\n ColCard,\n Message,\n StagedChangesContext,\n Text,\n useLatest,\n useMultiUpdate,\n} from \"../components\";\nimport { ProviderInfo, ProviderList } from \"./list\";\n\nconst ModalKey = \"provider-modal\";\nconst ProviderKey = \"settings-general-enabled_providers\";\n\nexport const ProviderView: FunctionComponent = () => {\n const providers = useLatest(ProviderKey, isArray);\n\n const showModal = useShowModal();\n\n const select = useCallback(\n (v?: ProviderInfo) => {\n showModal(ModalKey, v ?? null);\n },\n [showModal]\n );\n\n const cards = useMemo(() => {\n if (providers) {\n return providers\n .flatMap((v) => {\n const item = ProviderList.find((inn) => inn.key === v);\n if (item) {\n return item;\n } else {\n return [];\n }\n })\n .map((v, idx) => (\n select(v)}\n >\n ));\n } else {\n return [];\n }\n }, [providers, select]);\n\n return (\n \n \n {cards}\n \n \n \n );\n};\n\nexport const ProviderModal: FunctionComponent = () => {\n const payload = usePayload(ModalKey);\n\n const [staged, setChange] = useState({});\n\n const [info, setInfo] = useState>(payload ?? null);\n\n const onShow = useCallback(() => setInfo(payload ?? null), [payload]);\n\n useOnModalShow(ModalKey, onShow);\n\n const providers = useLatest(ProviderKey, isArray);\n\n const closeModal = useCloseModal();\n\n const updateGlobal = useMultiUpdate();\n\n const deletePayload = useCallback(() => {\n if (payload && providers) {\n const idx = providers.findIndex((v) => v === payload.key);\n if (idx !== -1) {\n const newProviders = [...providers];\n newProviders.splice(idx, 1);\n updateGlobal({ [ProviderKey]: newProviders });\n closeModal();\n }\n }\n }, [payload, providers, updateGlobal, closeModal]);\n\n const addProvider = useCallback(() => {\n if (info && providers) {\n const changes = { ...staged };\n\n // Add this provider if not exist\n if (providers.find((v) => v === info.key) === undefined) {\n const newProviders = [...providers, info.key];\n changes[ProviderKey] = newProviders;\n }\n\n updateGlobal(changes);\n closeModal();\n }\n }, [info, providers, staged, closeModal, updateGlobal]);\n\n const canSave = info !== null;\n\n const footer = useMemo(\n () => (\n \n \n \n \n ),\n [canSave, payload, deletePayload, addProvider]\n );\n\n const onSelect = useCallback((item: Nullable) => {\n if (item) {\n setInfo(item);\n } else {\n setInfo({\n key: \"\",\n description: \"Unknown Provider\",\n });\n }\n }, []);\n\n const options = useMemo[]>(\n () =>\n ProviderList.filter(\n (v) => providers?.find((p) => p === v.key) === undefined\n ).map((v) => ({\n label: v.name ?? capitalize(v.key),\n value: v,\n })),\n [providers]\n );\n\n const modification = useMemo(() => {\n if (info === null) {\n return null;\n }\n\n const defaultKey = info.defaultKey;\n const override = info.keyNameOverride ?? {};\n if (defaultKey === undefined) {\n return null;\n }\n\n const itemKey = info.key;\n\n const elements: JSX.Element[] = [];\n const checks: JSX.Element[] = [];\n\n for (const key in defaultKey) {\n const value = defaultKey[key];\n let visibleKey = key;\n\n if (visibleKey in override) {\n visibleKey = override[visibleKey];\n } else {\n visibleKey = capitalize(key);\n }\n\n if (isReactText(value)) {\n elements.push(\n \n \n \n );\n } else if (isBoolean(value)) {\n checks.push(\n \n );\n }\n }\n\n return (\n \n {elements}\n \n {checks}\n \n \n );\n }, [info]);\n\n return (\n \n \n \n \n \n v?.name ?? capitalize(v?.key ?? \"\")}\n onChange={onSelect}\n >\n \n \n \n \n {info?.description}\n \n \n {modification}\n \n \n \n \n );\n};\n","import React, { FunctionComponent } from \"react\";\nimport { Group, Input, SettingsProvider } from \"../components\";\nimport { ProviderModal, ProviderView } from \"./components\";\n\nconst SettingsProvidersView: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsProvidersView;\n","import { faArrowCircleRight, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { capitalize, isArray, isBoolean } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { FilesApi } from \"../../apis\";\nimport { ActionButton, FileBrowser, SimpleTable } from \"../../components\";\nimport {\n moviesEnabledKey,\n pathMappingsKey,\n pathMappingsMovieKey,\n seriesEnabledKey,\n} from \"../keys\";\nimport { Message } from \"./forms\";\nimport { useExtract, useLatest, useSingleUpdate } from \"./hooks\";\n\ntype SupportType = \"sonarr\" | \"radarr\";\n\nfunction getSupportKey(type: SupportType) {\n if (type === \"sonarr\") {\n return pathMappingsKey;\n } else {\n return pathMappingsMovieKey;\n }\n}\n\nfunction getEnabledKey(type: SupportType) {\n if (type === \"sonarr\") {\n return seriesEnabledKey;\n } else {\n return moviesEnabledKey;\n }\n}\n\ninterface PathMappingItem {\n from: string;\n to: string;\n}\n\ninterface TableProps {\n type: SupportType;\n}\n\nexport const PathMappingTable: FunctionComponent = ({ type }) => {\n const key = getSupportKey(type);\n const items = useLatest<[string, string][]>(key, isArray);\n\n const enabledKey = getEnabledKey(type);\n const enabled = useExtract(enabledKey, isBoolean);\n\n const update = useSingleUpdate();\n\n const updateRow = useCallback(\n (newItems: PathMappingItem[]) => {\n update(\n newItems.map((v) => [v.from, v.to]),\n key\n );\n },\n [key, update]\n );\n\n const addRow = useCallback(() => {\n if (items) {\n const newItems = [...items, [\"\", \"\"]];\n update(newItems, key);\n }\n }, [items, key, update]);\n\n const data = useMemo(\n () => items?.map((v) => ({ from: v[0], to: v[1] })) ?? [],\n [items]\n );\n\n const request = useMemo(() => {\n if (type === \"sonarr\") {\n return (path: string) => FilesApi.sonarr(path);\n } else {\n return (path: string) => FilesApi.radarr(path);\n }\n }, [type]);\n\n const updateCell = useCallback>(\n (row, item?: PathMappingItem) => {\n const newItems = [...data];\n if (item) {\n newItems[row.index] = item;\n } else {\n newItems.splice(row.index, 1);\n }\n updateRow(newItems);\n },\n [data, updateRow]\n );\n\n const columns = useMemo[]>(\n () => [\n {\n Header: capitalize(type),\n accessor: \"from\",\n Cell: ({ value, row, externalUpdate }) => (\n {\n const newItem = { ...row.original };\n newItem.from = path;\n externalUpdate && externalUpdate(row, newItem);\n }}\n >\n ),\n },\n {\n id: \"arrow\",\n className: \"text-center\",\n Cell: () => (\n \n ),\n },\n {\n Header: \"Bazarr\",\n accessor: \"to\",\n Cell: ({ value, row, externalUpdate }) => (\n FilesApi.bazarr(path)}\n onChange={(path) => {\n const newItem = { ...row.original };\n newItem.to = path;\n externalUpdate && externalUpdate(row, newItem);\n }}\n >\n ),\n },\n {\n id: \"action\",\n accessor: \"to\",\n Cell: ({ row, externalUpdate }) => (\n {\n externalUpdate && externalUpdate(row);\n }}\n >\n ),\n },\n ],\n [type, request]\n );\n\n if (enabled) {\n return (\n \n \n \n \n );\n } else {\n return (\n \n Path Mappings will be available after staged changes are saved\n \n );\n }\n};\n","import React, { FunctionComponent, useCallback } from \"react\";\nimport { InputGroup } from \"react-bootstrap\";\nimport {\n Check,\n Chips,\n CollapseBox,\n Group,\n Input,\n Message,\n SettingsProvider,\n Slider,\n Text,\n URLTestButton,\n} from \"../components\";\nimport { PathMappingTable } from \"../components/pathMapper\";\nimport { moviesEnabledKey } from \"../keys\";\n\ninterface Props {}\n\nconst SettingsRadarrView: FunctionComponent = () => {\n const baseUrlOverride = useCallback((settings: Settings) => {\n return settings.radarr.base_url?.slice(1) ?? \"\";\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n Hostname or IPv4 Address\n \n \n \n \n \n \n \n /\n \n \"/\" + v}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Movies with those tags (case sensitive) in Radarr will be\n excluded from automatic download of subtitles.\n \n \n \n \n \n Automatic download of subtitles will only happen for monitored\n movies in Radarr.\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsRadarrView;\n","export const seriesSyncOptions: SelectorOption[] = [\n { label: \"1 Minute\", value: 1 },\n { label: \"5 Minutes\", value: 5 },\n { label: \"15 Minutes\", value: 15 },\n { label: \"1 Hour\", value: 60 },\n { label: \"3 Hours\", value: 180 },\n];\n\nexport const episodesSyncOptions: SelectorOption[] = [\n { label: \"5 Minutes\", value: 5 },\n { label: \"15 Minutes\", value: 15 },\n { label: \"1 Hour\", value: 60 },\n { label: \"3 Hours\", value: 180 },\n { label: \"6 Hours\", value: 360 },\n];\n\nexport const moviesSyncOptions = episodesSyncOptions;\n\nexport const diskUpdateOptions: SelectorOption[] = [\n { label: \"Manually\", value: \"Manually\" },\n { label: \"Daily\", value: \"Daily\" },\n { label: \"Weekly\", value: \"Weekly\" },\n];\n\nexport const dayOptions: SelectorOption[] = [\n { label: \"Monday\", value: 0 },\n { label: \"Tuesday\", value: 1 },\n { label: \"Wednesday\", value: 2 },\n { label: \"Thursday\", value: 3 },\n { label: \"Friday\", value: 4 },\n { label: \"Saturday\", value: 5 },\n { label: \"Sunday\", value: 6 },\n];\n\nexport const upgradeOptions: SelectorOption[] = [\n { label: \"3 Hours\", value: 3 },\n { label: \"6 Hours\", value: 6 },\n { label: \"12 Hours\", value: 12 },\n { label: \"24 Hours\", value: 24 },\n];\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport {\n CollapseBox,\n Group,\n Input,\n Selector,\n SettingsProvider,\n} from \"../components\";\nimport {\n dayOptions,\n diskUpdateOptions,\n episodesSyncOptions,\n moviesSyncOptions,\n seriesSyncOptions,\n upgradeOptions,\n} from \"./options\";\n\nconst SettingsSchedulerView: FunctionComponent = () => {\n const timeOptions = useMemo(() => {\n return Array(24)\n .fill(null)\n .map>((_, idx) => ({\n label: `${idx}:00`,\n value: idx,\n }));\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n k === \"Weekly\"}>\n \n \n \n \n k === \"Daily\" || k === \"Weekly\"}>\n \n \n \n \n \n \n \n \n \n \n \n k === \"Weekly\"}>\n \n \n \n \n k === \"Daily\" || k === \"Weekly\"}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsSchedulerView;\n","export const seriesTypeOptions: SelectorOption[] = [\n { label: \"Standard\", value: \"standard\" },\n { label: \"Anime\", value: \"anime\" },\n { label: \"Daily\", value: \"daily\" },\n];\n","import React, { FunctionComponent, useCallback } from \"react\";\nimport { InputGroup } from \"react-bootstrap\";\nimport {\n Check,\n Chips,\n CollapseBox,\n Group,\n Input,\n Message,\n Selector,\n SettingsProvider,\n Slider,\n Text,\n URLTestButton,\n} from \"../components\";\nimport { PathMappingTable } from \"../components/pathMapper\";\nimport { seriesEnabledKey } from \"../keys\";\nimport { seriesTypeOptions } from \"../options\";\n\ninterface Props {}\n\nconst SettingsSonarrView: FunctionComponent = () => {\n const baseUrlOverride = useCallback((settings: Settings) => {\n return settings.sonarr.base_url?.slice(1) ?? \"\";\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n Hostname or IPv4 Address\n \n \n \n \n \n \n \n /\n \n \"/\" + v}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Episodes from series with those tags (case sensitive) in Sonarr\n will be excluded from automatic download of subtitles.\n \n \n \n \n \n Episodes from series with those types in Sonarr will be excluded\n from automatic download of subtitles.\n \n \n \n \n \n Automatic download of subtitles will only happen for monitored\n episodes in Sonarr.\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsSonarrView;\n","export const folderOptions: SelectorOption[] = [\n {\n label: \"AlongSide Media File\",\n value: \"current\",\n },\n {\n label: \"Relative Path to Media File\",\n value: \"relative\",\n },\n {\n label: \"Absolute Path\",\n value: \"absolute\",\n },\n];\n\nexport const antiCaptchaOption: SelectorOption[] = [\n {\n label: \"Anti-Captcha\",\n value: \"anti-captcha\",\n },\n {\n label: \"Death by Captcha\",\n value: \"death-by-captcha\",\n },\n];\n\nfunction buildColor(name: string) {\n return `color(name=${name})`;\n}\n\nexport const colorOptions: SelectorOption[] = [\n {\n label: \"White\",\n value: buildColor(\"white\"),\n },\n {\n label: \"Light Gray\",\n value: buildColor(\"lightgray\"),\n },\n {\n label: \"Red\",\n value: buildColor(\"red\"),\n },\n {\n label: \"Green\",\n value: buildColor(\"green\"),\n },\n {\n label: \"Yellow\",\n value: buildColor(\"yellow\"),\n },\n {\n label: \"Blue\",\n value: buildColor(\"blue\"),\n },\n {\n label: \"Magenta\",\n value: buildColor(\"magenta\"),\n },\n {\n label: \"Cyan\",\n value: buildColor(\"cyan\"),\n },\n {\n label: \"Black\",\n value: buildColor(\"black\"),\n },\n {\n label: \"Dark Red\",\n value: buildColor(\"darkred\"),\n },\n {\n label: \"Dark Green\",\n value: buildColor(\"darkgreen\"),\n },\n {\n label: \"Dark Yellow\",\n value: buildColor(\"darkyellow\"),\n },\n {\n label: \"Dark Blue\",\n value: buildColor(\"darkblue\"),\n },\n {\n label: \"Dark Magenta\",\n value: buildColor(\"darkmagenta\"),\n },\n {\n label: \"Dark Cyan\",\n value: buildColor(\"darkcyan\"),\n },\n {\n label: \"Dark Grey\",\n value: buildColor(\"darkgrey\"),\n },\n];\n","import React, { FunctionComponent } from \"react\";\nimport {\n Check,\n CollapseBox,\n Group,\n Input,\n Message,\n Selector,\n SettingsProvider,\n Slider,\n Text,\n} from \"../components\";\nimport { antiCaptchaOption, colorOptions, folderOptions } from \"./options\";\n\nconst subzeroOverride = (key: string) => {\n return (settings: Settings) => {\n return settings.general.subzero_mods?.includes(key) ?? false;\n };\n};\n\nconst subzeroColorOverride = (settings: Settings) => {\n return (\n settings.general.subzero_mods?.find((v) => v.startsWith(\"color\")) ?? null\n );\n};\n\nconst SettingsSubtitlesView: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n Choose the folder you wish to store/read the subtitles\n \n \n \n k !== \"\" && k !== \"current\"}>\n \n \n \n \n \n \n \n \n \n \n Schedule a task to upgrade subtitles previously downloaded by\n Bazarr.\n \n \n \n \n \n \n \n Number of days to go back in history to upgrade subtitles\n \n \n \n \n \n Enable or disable upgrade of manually downloaded or translated\n subtitles.\n \n \n \n \n \n \n \n \n \n (v === undefined ? \"None\" : v)}\n options={antiCaptchaOption}\n >\n \n Choose the anti-captcha provider you want to use\n \n \n \n \n \n \n Anti-Captcha.com\n \n \n \n \n \n \n \n \n DeathByCaptcha.com\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n When searching for subtitles, Bazarr will search less frequently to\n limit call to providers.\n \n \n \n \n \n Search multiple providers at once (Don't choose this on low powered\n devices)\n \n \n \n \n \n \n \n Use embedded subtitles in media files when determining missing\n ones.\n \n \n \n \n \n \n \n Ignores PGS Subtitles in Embedded Subtitles detection.\n \n \n \n \n \n Ignores VobSub Subtitles in Embedded Subtitles detection.\n \n \n \n \n \n Hide embedded subtitles for languages that are not currently\n desired.\n \n \n \n \n \n \n \n \n \n Re-encode downloaded Subtitles to UTF8. Should be left enabled in\n most case.\n \n \n \n \n \n Removes tags, text and characters from subtitles that are meant for\n hearing impaired people.\n \n \n \n \n \n Removes all possible style tags from the subtitle, such as font,\n bold, color etc.\n \n \n \n \n \n Fix issues that happen when a subtitle gets converted from bitmap to\n text through OCR.\n \n \n \n \n \n Fix common and whitespace/punctuation issues in subtitles.\n \n \n \n \n \n Tries to make subtitles that are completely uppercase readable.\n \n \n \n \n \n Adds color to your subtitles (for playback devices/software that\n don't ship their own color modes; only works for players that\n support color tags).\n \n \n \n \n \n Reverses the punctuation in right-to-left subtitles for problematic\n playback devices.\n \n \n \n \n \n \n \n \n \n \n \n Must be 4 digit octal\n \n \n \n \n \n \n \n \n Enable the automatic subtitles synchronization after downloading\n a subtitles.\n \n \n \n \n \n \n \n Do not actually sync the subtitles but generate a .tar.gz file\n to be able to open an issue for ffsubsync. This file will reside\n alongside the media file.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Enable the post-processing execution after downloading a\n subtitles.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Variables you can use in your command\n \n {\"{{directory}}\"} Full path of the episode file parent\n directory\n \n \n {\"{{episode}}\"} Full path of the episode file\n \n \n {\"{{episode_name}}\"} Filename of the episode without parent\n directory or extension\n \n \n {\"{{subtitles}}\"} Full path of the subtitles file\n \n \n {\"{{subtitles_language}}\"} Language of the subtitles file\n \n \n {\"{{subtitles_language_code2}}\"} 2-letter ISO-639 language\n code of the subtitles language\n \n \n {\"{{subtitles_language_code3}}\"} 3-letter ISO-639 language\n code of the subtitles language\n \n \n {\"{{episode_language}}\"} Audio language of the episode file\n \n \n {\"{{episode_language_code2}}\"} 2-letter ISO-639 language\n code of the episode audio language\n \n \n {\"{{episode_language_code3}}\"} 3-letter ISO-639 language\n code of the episode audio language\n \n \n {\"{{score}}\"} Score of the subtitle file\n \n \n {\"{{subtitle_id}}\"} Provider ID of the subtitle file\n \n \n {\"{{series_id}}\"} Sonarr series ID (Empty if movie)\n \n \n {\"{{episode_id}}\"} Sonarr episode ID or Radarr movie ID\n \n \n \n \n \n );\n};\n\nexport default SettingsSubtitlesView;\n","export const pageSizeOptions: SelectorOption[] = [\n {\n label: \"25\",\n value: 25,\n },\n {\n label: \"50\",\n value: 50,\n },\n {\n label: \"100\",\n value: 100,\n },\n {\n label: \"250\",\n value: 250,\n },\n {\n label: \"500\",\n value: 500,\n },\n {\n label: \"1000\",\n value: 1000,\n },\n];\n","import React, { FunctionComponent } from \"react\";\nimport { uiPageSizeKey } from \"../../@storage/local\";\nimport { Group, Input, Selector, SettingsProvider } from \"../components\";\nimport { pageSizeOptions } from \"./options\";\n\nconst SettingsUIView: FunctionComponent = () => {\n return (\n \n \n \n s.site.pageSize}\n >\n \n \n \n );\n};\n\nexport default SettingsUIView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { systemUpdateSettings } from \"../@redux/actions\";\nimport { useReduxAction } from \"../@redux/hooks/base\";\nimport { useAutoUpdate } from \"../utilites/hooks\";\nimport General from \"./General\";\nimport Languages from \"./Languages\";\nimport Notifications from \"./Notifications\";\nimport Providers from \"./Providers\";\nimport Radarr from \"./Radarr\";\nimport Scheduler from \"./Scheduler\";\nimport Sonarr from \"./Sonarr\";\nimport Subtitles from \"./Subtitles\";\nimport UI from \"./UI\";\n\ninterface Props {}\n\nconst Router: FunctionComponent = () => {\n const update = useReduxAction(systemUpdateSettings);\n useAutoUpdate(update);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { BaseModal, BaseModalProps, usePayload } from \"../../components\";\n\ninterface Props extends BaseModalProps {}\n\nconst SystemLogModal: FunctionComponent = ({ ...modal }) => {\n const stack = usePayload(modal.modalKey);\n const result = useMemo(\n () =>\n stack?.split(\"\\\\n\").map((v, idx) => (\n

    \n {v}\n

    \n )),\n [stack]\n );\n return (\n \n
    \n        {result}\n      
    \n
    \n );\n};\n\nexport default SystemLogModal;\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport {\n faBug,\n faCode,\n faExclamationCircle,\n faInfoCircle,\n faLayerGroup,\n faQuestion,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { isUndefined } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Column, Row } from \"react-table\";\nimport {\n ActionButton,\n DateFormatter,\n PageTable,\n useShowModal,\n} from \"../../components\";\nimport SystemLogModal from \"./modal\";\n\ninterface Props {\n logs: readonly System.Log[];\n}\n\nfunction mapTypeToIcon(type: System.LogType): IconDefinition {\n switch (type) {\n case \"DEBUG\":\n return faCode;\n case \"ERROR\":\n return faBug;\n case \"INFO\":\n return faInfoCircle;\n case \"WARNING\":\n return faExclamationCircle;\n default:\n return faQuestion;\n }\n}\n\nconst Table: FunctionComponent = ({ logs }) => {\n const showModal = useShowModal();\n const show = useCallback(\n (row: Row, text: string) =>\n showModal(\"system-log\", text),\n [showModal]\n );\n const columns: Column[] = useMemo[]>(\n () => [\n {\n accessor: \"type\",\n Cell: (row) => (\n \n ),\n },\n {\n Header: \"Message\",\n accessor: \"message\",\n },\n {\n Header: \"Time\",\n accessor: \"timestamp\",\n className: \"text-nowrap\",\n Cell: (row) => {row.value},\n },\n {\n accessor: \"exception\",\n Cell: ({ row, value, externalUpdate }) => {\n if (!isUndefined(value)) {\n return (\n externalUpdate && externalUpdate(row, value)}\n >\n );\n } else {\n return null;\n }\n },\n },\n ],\n []\n );\n\n return (\n \n \n \n \n );\n};\n\nexport default Table;\n","import { faDownload, faSync, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent, useCallback, useState } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateLogs } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { SystemApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useBaseUrl } from \"../../utilites\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst SystemLogsView: FunctionComponent = () => {\n const logs = useReduxStore(({ system }) => system.logs);\n const update = useReduxAction(systemUpdateLogs);\n useAutoUpdate(update);\n\n const [resetting, setReset] = useState(false);\n\n const baseUrl = useBaseUrl(true);\n\n const download = useCallback(() => {\n window.open(`${baseUrl}bazarr.log`);\n }, [baseUrl]);\n\n return (\n \n {(data) => (\n \n \n Logs - Bazarr (System)\n \n \n \n Refresh\n \n \n Download\n \n {\n setReset(true);\n SystemApi.deleteLogs().finally(() => {\n setReset(false);\n update();\n });\n }}\n >\n Empty\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SystemLogsView;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Column } from \"react-table\";\nimport { SimpleTable } from \"../../components\";\n\ninterface Props {\n providers: readonly System.Provider[];\n}\n\nconst Table: FunctionComponent = (props) => {\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"name\",\n },\n {\n Header: \"Status\",\n accessor: \"status\",\n },\n {\n Header: \"Next Retry\",\n accessor: \"retry\",\n },\n ],\n []\n );\n\n return ;\n};\n\nexport default Table;\n","import { faSync, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { useProviders } from \"../../@redux/hooks\";\nimport { ProvidersApi } from \"../../apis\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst SystemProvidersView: FunctionComponent = () => {\n const [providers, update] = useProviders();\n useAutoUpdate(update);\n\n return (\n \n {(data) => (\n \n \n Providers - Bazarr (System)\n \n \n \n Refresh\n \n ProvidersApi.reset()}\n onSuccess={update}\n >\n Reset\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SystemProvidersView;\n","import React, { FunctionComponent, useMemo } from \"react\";\nimport { Badge, Card, Col, Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateReleases } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { AsyncStateOverlay } from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\n\ninterface Props {}\n\nconst ReleasesView: FunctionComponent = () => {\n const releases = useReduxStore(({ system }) => system.releases);\n const update = useReduxAction(systemUpdateReleases);\n useAutoUpdate(update);\n\n return (\n \n {(item) => (\n \n \n Releases - Bazarr (System)\n \n \n {item.map((v, idx) => (\n \n \n \n ))}\n \n \n )}\n \n );\n};\n\nconst headerBadgeCls = \"mr-2\";\n\nconst InfoElement: FunctionComponent = ({\n name,\n body,\n date,\n prerelease,\n current,\n}) => {\n const infos = useMemo(\n () => body.map((v) => v.replace(/(\\s\\[.*?\\])\\(.*?\\)/, \"\")),\n [body]\n );\n return (\n \n \n {name}\n \n {date}\n \n \n {prerelease ? \"Development\" : \"Master\"}\n
    \n \n \n \n \n From newest to oldest:\n {infos.map((v, idx) => (\n
  • {v}
  • \n ))}\n
    \n
    \n \n );\n};\n\nexport default ReleasesView;\n","import { IconDefinition } from \"@fortawesome/fontawesome-common-types\";\nimport {\n faDiscord,\n faGithub,\n faWikipediaW,\n} from \"@fortawesome/free-brands-svg-icons\";\nimport { faPaperPlane } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent } from \"react\";\nimport { Col, Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateStatus } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { useAutoUpdate } from \"../../utilites/hooks\";\n\ninterface InfoProps {\n title: string;\n children: React.ReactNode;\n}\n\nfunction CRow(props: InfoProps): JSX.Element {\n const { title, children } = props;\n return (\n \n \n {title}\n \n {children}\n \n );\n}\n\ninterface IconProps {\n icon: IconDefinition;\n link: string;\n children: string;\n}\n\nfunction Label(props: IconProps): JSX.Element {\n const { icon, link, children } = props;\n return (\n \n \n \n {children}\n \n \n );\n}\n\nconst InfoContainer: FunctionComponent<{ title: string }> = ({\n title,\n children,\n}) => {\n return (\n \n

    {title}

    \n
    \n {children}\n
    \n );\n};\n\ninterface Props {}\n\nconst SystemStatusView: FunctionComponent = () => {\n const status = useReduxStore((s) => s.system.status.data);\n const update = useReduxAction(systemUpdateStatus);\n useAutoUpdate(update);\n\n return (\n \n \n Status - Bazarr (System)\n \n \n \n \n {status?.bazarr_version}\n \n \n {status?.sonarr_version}\n \n \n {status?.radarr_version}\n \n \n {status?.operating_system}\n \n \n {status?.python_version}\n \n \n {status?.bazarr_directory}\n \n \n {status?.bazarr_config_directory}\n \n \n \n \n \n \n \n \n \n \n Bazarr on Github\n \n \n \n \n Bazarr Wiki\n \n \n \n \n \n \n \n \n );\n};\n\nexport default SystemStatusView;\n","import { faSync } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useMemo } from \"react\";\nimport { Column } from \"react-table\";\nimport { systemRunTasks } from \"../../@redux/actions\";\nimport { useReduxAction } from \"../../@redux/hooks/base\";\nimport { SystemApi } from \"../../apis\";\nimport { AsyncButton, SimpleTable } from \"../../components\";\n\ninterface Props {\n tasks: readonly System.Task[];\n}\n\nconst Table: FunctionComponent = ({ tasks }) => {\n const run = useReduxAction(systemRunTasks);\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"name\",\n className: \"text-nowrap\",\n },\n {\n Header: \"Interval\",\n accessor: \"interval\",\n className: \"text-nowrap\",\n },\n {\n Header: \"Next Execution\",\n accessor: \"next_run_in\",\n className: \"text-nowrap\",\n },\n {\n accessor: \"job_running\",\n Cell: (row) => {\n const { job_id } = row.row.original;\n return (\n SystemApi.runTask(job_id)}\n onSuccess={() => run(job_id)}\n variant=\"light\"\n size=\"sm\"\n disabled={row.value}\n >\n \n \n );\n },\n },\n ],\n [run]\n );\n\n return ;\n};\n\nexport default Table;\n","import { faSync } from \"@fortawesome/free-solid-svg-icons\";\nimport React, { FunctionComponent } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { systemUpdateTasks } from \"../../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../../@redux/hooks/base\";\nimport { AsyncStateOverlay, ContentHeader } from \"../../components\";\nimport { useAutoUpdate } from \"../../utilites\";\nimport Table from \"./table\";\n\ninterface Props {}\n\nconst SystemTasksView: FunctionComponent = () => {\n const tasks = useReduxStore((s) => s.system.tasks);\n const update = useReduxAction(systemUpdateTasks);\n\n // TODO: Use Websocket\n useAutoUpdate(update, 10 * 1000);\n\n return (\n \n {(data) => (\n \n \n Tasks - Bazarr (System)\n \n \n \n Refresh\n \n \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n\nexport default SystemTasksView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport Logs from \"./Logs\";\nimport Providers from \"./Providers\";\nimport Releases from \"./Releases\";\nimport Status from \"./Status\";\nimport Tasks from \"./Tasks\";\n\nconst Router: FunctionComponent = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Router;\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { capitalize } from \"lodash\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Container, Row } from \"react-bootstrap\";\nimport { Helmet } from \"react-helmet\";\nimport { Column, TableUpdater } from \"react-table\";\nimport { ContentHeader, PageTable } from \"../../components\";\nimport { buildOrderList, GetItemId } from \"../../utilites\";\n\ninterface Props {\n type: \"movies\" | \"series\";\n columns: Column[];\n state: Readonly>>;\n loader: (start: number, length: number) => void;\n update: (id?: number) => void;\n searchAll: () => Promise;\n}\n\nconst GenericWantedView: FunctionComponent = ({\n type,\n columns,\n state,\n update,\n loader,\n searchAll,\n}) => {\n const typeName = capitalize(type);\n\n const data = useMemo(() => buildOrderList(state.data), [state.data]);\n\n const updater = useCallback>(\n (row, id: number) => {\n update(id);\n },\n [update]\n );\n\n return (\n \n \n Wanted {typeName} - Bazarr\n \n \n void}\n icon={faSearch}\n >\n Search All\n \n \n \n \n \n \n );\n};\n\nexport default GenericWantedView;\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { movieUpdateWantedByRange } from \"../../@redux/actions\";\nimport { useWantedMovies } from \"../../@redux/hooks\";\nimport { useReduxAction } from \"../../@redux/hooks/base\";\nimport { MoviesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText } from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport GenericWantedView from \"../generic\";\n\ninterface Props {}\n\nconst WantedMoviesView: FunctionComponent = () => {\n const [movies, update] = useWantedMovies();\n\n const loader = useReduxAction(movieUpdateWantedByRange);\n\n const searchAll = useCallback(\n () => MoviesApi.action({ action: \"search-wanted\" }),\n []\n );\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"title\",\n Cell: (row) => {\n const target = `/movies/${row.row.original.radarrId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Missing\",\n accessor: \"missing_subtitles\",\n Cell: ({ row, value, externalUpdate }) => {\n const wanted = row.original;\n const hi = wanted.hearing_impaired;\n const movieid = wanted.radarrId;\n\n return value.map((item, idx) => (\n \n MoviesApi.downloadSubtitles(movieid, {\n language: item.code2,\n hi,\n forced: false,\n })\n }\n onSuccess={() => externalUpdate && externalUpdate(row, movieid)}\n >\n \n \n \n ));\n },\n },\n ],\n []\n );\n\n return (\n []}\n state={movies}\n update={update}\n loader={loader}\n searchAll={searchAll}\n >\n );\n};\n\nexport default WantedMoviesView;\n","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { Column } from \"react-table\";\nimport { seriesUpdateWantedByRange } from \"../../@redux/actions\";\nimport { useWantedSeries } from \"../../@redux/hooks\";\nimport { useReduxAction } from \"../../@redux/hooks/base\";\nimport { EpisodesApi, SeriesApi } from \"../../apis\";\nimport { AsyncButton, LanguageText } from \"../../components\";\nimport { BuildKey } from \"../../utilites\";\nimport GenericWantedView from \"../generic\";\n\ninterface Props {}\n\nconst WantedSeriesView: FunctionComponent = () => {\n const [series, update] = useWantedSeries();\n\n const loader = useReduxAction(seriesUpdateWantedByRange);\n\n const searchAll = useCallback(\n () => SeriesApi.action({ action: \"search-wanted\" }),\n []\n );\n\n const columns: Column[] = useMemo[]>(\n () => [\n {\n Header: \"Name\",\n accessor: \"seriesTitle\",\n Cell: (row) => {\n const target = `/series/${row.row.original.sonarrSeriesId}`;\n return (\n \n {row.value}\n \n );\n },\n },\n {\n Header: \"Episode\",\n accessor: \"episode_number\",\n },\n {\n accessor: \"episodeTitle\",\n },\n {\n Header: \"Missing\",\n accessor: \"missing_subtitles\",\n Cell: ({ row, externalUpdate: update, value }) => {\n const wanted = row.original;\n const hi = wanted.hearing_impaired;\n const seriesid = wanted.sonarrSeriesId;\n const episodeid = wanted.sonarrEpisodeId;\n\n return value.map((item, idx) => (\n \n EpisodesApi.downloadSubtitles(seriesid, episodeid, {\n language: item.code2,\n hi,\n forced: false,\n })\n }\n onSuccess={() => update && update(row, episodeid)}\n >\n \n \n \n ));\n },\n },\n ],\n []\n );\n\n return (\n []}\n state={series}\n update={update}\n loader={loader}\n searchAll={searchAll}\n >\n );\n};\n\nexport default WantedSeriesView;\n","import React, { FunctionComponent } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport Movies from \"./Movies\";\nimport Series from \"./Series\";\n\nconst Router: FunctionComponent = () => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n return (\n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default Router;\n","import React, { FunctionComponent, useEffect, useMemo } from \"react\";\nimport { Redirect, Route, Switch, useHistory } from \"react-router-dom\";\nimport EmptyPage, { RouterEmptyPath } from \"../404\";\nimport { useIsRadarrEnabled, useIsSonarrEnabled } from \"../@redux/hooks/site\";\nimport BlacklistRouter from \"../Blacklist/Router\";\nimport HistoryRouter from \"../History/Router\";\nimport MovieRouter from \"../Movies/Router\";\nimport SeriesRouter from \"../Series/Router\";\nimport SettingRouter from \"../Settings/Router\";\nimport SystemRouter from \"../System/Router\";\nimport { ScrollToTop } from \"../utilites\";\nimport WantedRouter from \"../Wanted/Router\";\n\nconst Router: FunctionComponent<{ className?: string }> = ({ className }) => {\n const sonarr = useIsSonarrEnabled();\n const radarr = useIsRadarrEnabled();\n const redirectPath = useMemo(() => {\n if (sonarr) {\n return \"/series\";\n } else if (radarr) {\n return \"/movies\";\n } else {\n return \"/settings\";\n }\n }, [sonarr, radarr]);\n\n const history = useHistory();\n\n useEffect(() => {\n ScrollToTop();\n }, [history.location]);\n\n return (\n
    \n \n \n \n \n {sonarr && (\n \n \n \n )}\n {radarr && (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n\nexport default Router;\n","import { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n FunctionComponent,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { Alert, Button, Container, Row } from \"react-bootstrap\";\nimport { Redirect } from \"react-router-dom\";\nimport { bootstrap as ReduxBootstrap } from \"../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../@redux/hooks/base\";\nimport { useNotification } from \"../@redux/hooks/site\";\nimport { LoadingIndicator, ModalProvider } from \"../components\";\nimport Sidebar from \"../Sidebar\";\nimport { Reload, useHasUpdateInject } from \"../utilites\";\nimport Header from \"./Header\";\nimport NotificationContainer from \"./notifications\";\nimport Router from \"./Router\";\n\n// Sidebar Toggle\nexport const SidebarToggleContext = React.createContext<() => void>(() => {});\n\ninterface Props {}\n\nconst App: FunctionComponent = () => {\n const bootstrap = useReduxAction(ReduxBootstrap);\n\n const { initialized, auth } = useReduxStore((s) => s.site);\n\n const notify = useNotification(\"has-update\", 10);\n\n // Has any update?\n const hasUpdate = useHasUpdateInject();\n useEffect(() => {\n if (initialized) {\n if (hasUpdate) {\n notify({\n type: \"info\",\n message: \"A new version of Bazarr is ready, restart is required\",\n // TODO: Restart action\n });\n }\n }\n }, [initialized, hasUpdate, notify]);\n\n useEffect(() => {\n bootstrap();\n }, [bootstrap]);\n\n const [sidebar, setSidebar] = useState(false);\n const toggleSidebar = useCallback(() => setSidebar(!sidebar), [sidebar]);\n\n if (!auth) {\n return ;\n }\n\n if (typeof initialized === \"boolean\" && initialized === false) {\n return (\n \n Please wait\n \n );\n } else if (typeof initialized === \"string\") {\n return {initialized};\n }\n\n return (\n \n \n
    \n
    \n \n \n \n \n \n \n \n
    \n );\n};\n\nconst InitializationErrorView: FunctionComponent<{\n children: string;\n}> = ({ children }) => {\n return (\n \n \n
    \n \n {children}\n
    \n \n \n
    \n );\n};\n\nexport default App;\n","import React, { FunctionComponent, useCallback, useState } from \"react\";\nimport {\n Alert,\n Button,\n Card,\n Collapse,\n Form,\n Image,\n Spinner,\n} from \"react-bootstrap\";\nimport { Redirect } from \"react-router-dom\";\nimport { siteAuthSuccess } from \"../@redux/actions\";\nimport { useReduxAction, useReduxStore } from \"../@redux/hooks/base\";\nimport logo from \"../@static/logo128.png\";\nimport { SystemApi } from \"../apis\";\nimport \"./style.scss\";\n\ninterface Props {}\n\nconst AuthPage: FunctionComponent = () => {\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [error, setError] = useState(\"\");\n\n const [updating, setUpdate] = useState(false);\n\n const updateError = useCallback((msg: string) => {\n setError(msg);\n setTimeout(() => setError(\"\"), 2000);\n }, []);\n\n const onSuccess = useReduxAction(siteAuthSuccess);\n\n const authState = useReduxStore((s) => s.site.auth);\n\n const onError = useCallback(() => {\n setUpdate(false);\n updateError(\"Login Failed\");\n }, [updateError]);\n\n if (authState) {\n return ;\n }\n\n return (\n
    \n \n {\n e.preventDefault();\n if (!updating) {\n setUpdate(true);\n SystemApi.login(username, password)\n .then(onSuccess)\n .catch(onError);\n }\n }}\n >\n \n \n \n \n \n setUsername(e.currentTarget.value)}\n >\n \n \n setPassword(e.currentTarget.value)}\n >\n \n \n
    \n \n {error}\n \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n );\n};\n\nexport default AuthPage;\n","export default \"data:image/png;base64,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\"","import \"@fontsource/roboto/300.css\";\nimport React, { FunctionComponent } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { Route, Switch } from \"react-router\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport store from \"./@redux/store\";\nimport \"./@scss/index.scss\";\nimport App from \"./App\";\nimport Auth from \"./Auth\";\nimport { useBaseUrl } from \"./utilites\";\n\nconst MainRouter: FunctionComponent = () => {\n const baseUrl = useBaseUrl();\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nReactDOM.render(\n \n {/* TODO: Enabled Strict Mode after react-bootstrap upgrade to bootstrap 5 */}\n {/* */}\n \n {/* */}\n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""} \ No newline at end of file