"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[90093],{19692:function(e,t,n){var r=n(59499),i=n(4730),o=n(7292),a=n(67294),s=n(85893),c=["backgroundImages","rotationSpeed","isDarker","forceOptimize"];function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e,t){var n=e.backgroundImages,r=e.rotationSpeed,l=void 0===r?6e3:r,p=e.isDarker,d=e.forceOptimize,h=(0,i.Z)(e,c),g=(0,a.useState)(0),f=g[0],v=g[1];(0,a.useEffect)((function(){var e=setInterval((function(){return v((function(e){return(e+1)%n.length}))}),l);return function(){clearInterval(e)}}),[n,l]);var x="linear-gradient(180deg, rgba(45, 55, 72, 0.47) 0%, #1A202E 100%)";p&&(x="linear-gradient(180deg, rgba(17, 24, 39, 0.47) 0%, rgba(17, 24, 39, 1) 100%)");var w={};return d&&(w={unoptimized:!1}),(0,s.jsx)("div",{ref:t,children:n.map((function(e,t){return(0,s.jsxs)("div",u(u({className:"absolute-top-shift absolute inset-0 bg-cover bg-center transition-opacity duration-300 ease-in ".concat(t===f?"opacity-100":"opacity-0")},h),{},{children:[(0,s.jsx)(o.Z,u({className:"absolute inset-0 h-full w-full",alt:"",src:e,layout:"fill",objectFit:"cover"},w)),(0,s.jsx)("div",{className:"absolute inset-0",style:{backgroundImage:x}})]}),"banner-image-".concat(t))}))})};t.Z=a.forwardRef(p)},4551:function(e,t,n){var r=n(99819),i=n(12965),o=n(84541),a=n(31407),s=n(90692),c=n(67294),l=n(54490),u=n(86896),p=n(85893),d=(0,l.vU)({displaylanguage:{id:"components.Layout.LanguagePicker.displaylanguage",defaultMessage:"Display Language"}});t.Z=function(){var e=(0,u.Z)(),t=(0,c.useRef)(null),n=(0,o.Z)(),l=n.locale,h=n.setLocale,g=(0,c.useState)(!1),f=g[0],v=g[1];return(0,i.Z)(t,(function(){return v(!1)})),(0,p.jsxs)("div",{className:"relative",children:[(0,p.jsx)("div",{children:(0,p.jsx)("button",{className:"rounded-full p-1 hover:bg-gray-600 hover:text-white focus:bg-gray-600 focus:text-white focus:outline-none focus:ring-1 focus:ring-gray-500 sm:p-2 ".concat(f?"bg-gray-600 text-white":"text-gray-400"),"aria-label":"Language Picker",onClick:function(){return v(!0)},children:(0,p.jsx)(s,{className:"h-6 w-6"})})}),(0,p.jsx)(a.u,{as:"div",show:f,enter:"transition ease-out duration-100",enterFrom:"opacity-0 scale-95",enterTo:"opacity-100 scale-100",leave:"transition ease-in duration-75",leaveFrom:"opacity-100 scale-100",leaveTo:"opacity-0 scale-95",children:(0,p.jsx)("div",{className:"absolute right-0 mt-2 w-56 origin-top-right rounded-md shadow-lg",ref:t,children:(0,p.jsx)("div",{className:"rounded-md bg-gray-700 px-3 py-2 ring-1 ring-black ring-opacity-5",children:(0,p.jsxs)("div",{children:[(0,p.jsx)("label",{htmlFor:"language",className:"block pb-2 text-sm font-bold leading-5 text-gray-300",children:e.formatMessage(d.displaylanguage)}),(0,p.jsx)("select",{id:"language",className:"rounded-md",onChange:function(e){return h&&h(e.target.value)},onBlur:function(e){return h&&h(e.target.value)},defaultValue:l,children:Object.keys(r.m).map((function(e){return(0,p.jsx)("option",{value:r.m[e].code,children:r.m[e].display},e)}))})]})})})})]})}},73380:function(e,t,n){n.d(t,{Z:function(){return P}});var r=n(50029),i=n(87794),o=n.n(i),a=n(80210),s=n(92777),c=n(82262),l=n(59499),u=n(6154),p=n(51206),d=n.n(p),h=function(){function e(){(0,s.Z)(this,e),(0,l.Z)(this,"plexHeaders",void 0),(0,l.Z)(this,"pin",void 0),(0,l.Z)(this,"popup",void 0),(0,l.Z)(this,"authToken",void 0)}return(0,c.Z)(e,[{key:"initializeHeaders",value:function(){if(!window)throw new Error("Window is not defined. Are you calling this in the browser?");var e=localStorage.getItem("plex-client-id");if(!e){var t=(1e7.toString()+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(e){return(parseInt(e)^window.crypto.getRandomValues(new Uint8Array(1))[0]&15>>parseInt(e)/4).toString(16)}));localStorage.setItem("plex-client-id",t),e=t}var n=d().getParser(window.navigator.userAgent);this.plexHeaders={Accept:"application/json","X-Plex-Product":"Overseerr","X-Plex-Version":"Plex OAuth","X-Plex-Client-Identifier":e,"X-Plex-Model":"Plex OAuth","X-Plex-Platform":n.getBrowserName(),"X-Plex-Platform-Version":n.getBrowserVersion(),"X-Plex-Device":n.getOSName(),"X-Plex-Device-Name":"".concat(n.getBrowserName()," (Overseerr)"),"X-Plex-Device-Screen-Resolution":window.screen.width+"x"+window.screen.height,"X-Plex-Language":"en"}}},{key:"getPin",value:function(){var e=(0,r.Z)(o().mark((function e(){var t;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.plexHeaders){e.next=2;break}throw new Error("You must initialize the plex headers clientside to login");case 2:return e.next=4,u.Z.post("https://plex.tv/api/v2/pins?strong=true",void 0,{headers:this.plexHeaders});case 4:return t=e.sent,this.pin={id:t.data.id,code:t.data.code},e.abrupt("return",this.pin);case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"preparePopup",value:function(){this.openPopup({title:"Plex Auth",w:600,h:700})}},{key:"login",value:function(){var e=(0,r.Z)(o().mark((function e(){var t;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.initializeHeaders(),e.next=3,this.getPin();case 3:if(this.plexHeaders&&this.pin){e.next=5;break}throw new Error("Unable to call login if class is not initialized.");case 5:return t={clientID:this.plexHeaders["X-Plex-Client-Identifier"],"context[device][product]":this.plexHeaders["X-Plex-Product"],"context[device][version]":this.plexHeaders["X-Plex-Version"],"context[device][platform]":this.plexHeaders["X-Plex-Platform"],"context[device][platformVersion]":this.plexHeaders["X-Plex-Platform-Version"],"context[device][device]":this.plexHeaders["X-Plex-Device"],"context[device][deviceName]":this.plexHeaders["X-Plex-Device-Name"],"context[device][model]":this.plexHeaders["X-Plex-Model"],"context[device][screenResolution]":this.plexHeaders["X-Plex-Device-Screen-Resolution"],"context[device][layout]":"desktop",code:this.pin.code},this.popup&&(this.popup.location.href="https://app.plex.tv/auth/#!?".concat(this.encodeData(t))),e.abrupt("return",this.pinPoll());case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"pinPoll",value:function(){var e=(0,r.Z)(o().mark((function e(){var t,n=this;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=function(){var e=(0,r.Z)(o().mark((function e(r,i){var a,s,c,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n.pin){e.next=3;break}throw new Error("Unable to poll when pin is not initialized.");case 3:return e.next=5,u.Z.get("https://plex.tv/api/v2/pins/".concat(n.pin.id),{headers:n.plexHeaders});case 5:l=e.sent,null!==(a=l.data)&&void 0!==a&&a.authToken?(n.authToken=l.data.authToken,n.closePopup(),r(n.authToken)):null!==(s=l.data)&&void 0!==s&&s.authToken||null!==(c=n.popup)&&void 0!==c&&c.closed?i(new Error("Popup closed without completing login")):setTimeout(t,1e3,r,i),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(0),n.closePopup(),i(e.t0);case 13:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t,n){return e.apply(this,arguments)}}(),e.abrupt("return",new Promise(t));case 2:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},{key:"closePopup",value:function(){var e;null===(e=this.popup)||void 0===e||e.close(),this.popup=void 0}},{key:"openPopup",value:function(e){var t=e.title,n=e.w,r=e.h;if(!window)throw new Error("Window is undefined. Are you running this in the browser?");var i=void 0!=window.screenLeft?window.screenLeft:window.screenX,o=void 0!=window.screenTop?window.screenTop:window.screenY,a=(window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width)/2-n/2+i,s=(window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height)/2-r/2+o,c=window.open("/login/plex/loading",t,"scrollbars=yes, width="+n+", height="+r+", top="+s+", left="+a);if(c)return c.focus(),this.popup=c,this.popup}},{key:"encodeData",value:function(e){return Object.keys(e).map((function(t){return[t,e[t]].map(encodeURIComponent).join("=")})).join("&")}}]),e}(),g=h,f=n(41560),v=n(67294),x=n(54490),w=n(86896),m=n(85893),b=(0,x.vU)({signinwithplex:{id:"components.PlexLoginButton.signinwithplex",defaultMessage:"Sign In"},signingin:{id:"components.PlexLoginButton.signingin",defaultMessage:"Signing In\u2026"}}),y=new g,P=function(e){var t=e.onAuthToken,n=e.onError,i=e.isProcessing,s=(0,w.Z)(),c=(0,v.useState)(!1),l=c[0],u=c[1],p=function(){var e=(0,r.Z)(o().mark((function e(){var r;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u(!0),e.prev=1,e.next=4,y.login();case 4:r=e.sent,u(!1),t(r),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(1),n&&n(e.t0.message),u(!1);case 13:case"end":return e.stop()}}),e,null,[[1,9]])})));return function(){return e.apply(this,arguments)}}();return(0,m.jsx)("span",{className:"block w-full rounded-md shadow-sm",children:(0,m.jsxs)("button",{type:"button",onClick:function(){y.preparePopup(),setTimeout((function(){return p()}),1500)},disabled:l||i,className:"plex-button",children:[(0,m.jsx)(f,{}),(0,m.jsx)("span",{children:l?s.formatMessage(a.Z.loading):i?s.formatMessage(b.signingin):s.formatMessage(b.signinwithplex)})]})})}}}]);