1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[47610,88846],{2644:(e,t,n)=>{"use strict";n.d(t,{tg:()=>i});let a=["/","/login","/register","/team","/reading","/privacy","/terms","/reset-password","/invitations"],r=e=>e&&"/"!==e?e.endsWith("/")?e.slice(0,-1):e:"/",i=e=>{let t=r(e);return a.some(e=>{let n=r(e);return t===n||t.startsWith("".concat(n,"/"))})}},23083:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>d,Jh:()=>o,Kc:()=>h,NE:()=>m,ci:()=>i,gV:()=>r,lA:()=>y,mB:()=>v,mh:()=>g,ri:()=>s,setCurrentCollection:()=>l,vN:()=>p,xW:()=>c});let a=(0,n(26286).Z0)({name:"auth",initialState:{user:null,isAuthenticated:!1,hasResolvedAuth:!1,currentAccountType:null,currentPlan:null,currentCollection:null,currentCollectionPreferences:null},reducers:{setUser:(e,t)=>{e.user=t.payload,e.isAuthenticated=!!t.payload,e.hasResolvedAuth=!0},setAccountType:(e,t)=>{e.currentAccountType=t.payload},setCurrentPlan:(e,t)=>{e.currentPlan=t.payload},setCurrentCollection:(e,t)=>{var n;e.currentCollection=t.payload,e.currentCollectionPreferences=(null==(n=t.payload)?void 0:n.preferences)||null},setCurrentCollectionPreferences:(e,t)=>{e.currentCollectionPreferences=t.payload},logout:e=>{e.user=null,e.isAuthenticated=!1,e.hasResolvedAuth=!0,e.currentAccountType=null,e.currentPlan=null,e.currentCollection=null,e.currentCollectionPreferences=null},setAuthResolved:(e,t)=>{e.hasResolvedAuth=t.payload}}}),{setUser:r,setAccountType:i,setCurrentPlan:o,setCurrentCollection:l,setCurrentCollectionPreferences:u,logout:s,setAuthResolved:c}=a.actions,d=a.reducer,h=e=>e.auth.isAuthenticated,v=e=>e.auth.user,p=e=>e.auth.currentAccountType,m=e=>e.auth.currentPlan,g=e=>e.auth.currentCollection,y=e=>e.auth.hasResolvedAuth},45357:()=>{},47089:(e,t,n)=>{"use strict";n.r(t),n.d(t,{authSliceProxy:()=>i,useCompleteOnboardingMutation:()=>m,useGetMeQuery:()=>u,useLoginMutation:()=>l,useRegisterMutation:()=>o,useRequestPasswordResetMutation:()=>c,useResetPasswordMutation:()=>d,useSwitchAccountMutation:()=>h,useUpdateMeMutation:()=>v,useUpdateOnboardingCompletedMutation:()=>p,useUpdatePasswordMutation:()=>s});var a=n(61321),r=n(49973);let i=(0,a.xP)({reducerPath:"authApiProxy",baseQuery:r.W,tagTypes:["Me"],keepUnusedDataFor:60,refetchOnMountOrArgChange:!1,refetchOnFocus:!1,refetchOnReconnect:!0,endpoints:e=>({getMe:e.query({query:()=>({url:"/auth/me"}),providesTags:["Me"],keepUnusedDataFor:60,transformResponse:e=>e}),register:e.mutation({query:e=>({url:"/auth/signup",method:"POST",body:e})}),login:e.mutation({query:e=>({url:"/auth/login",method:"POST",body:e})}),updatePassword:e.mutation({query:e=>({url:"/auth/me/password",method:"PUT",body:e})}),requestPasswordReset:e.mutation({query:e=>({url:"/auth/forgot_password",method:"POST",body:e})}),resetPassword:e.mutation({query:e=>{let{token:t,password:n,password_confirmation:a}=e;return{url:"/auth/reset_password",method:"POST",body:{token:t,password:n,password_confirmation:a}}}}),switchAccount:e.mutation({query:e=>({url:"/auth/switch",method:"POST",body:e}),invalidatesTags:["Me"],async onQueryStarted(e,t){let{dispatch:a,queryFulfilled:r}=t;try{await r;let{setCurrentCollection:e}=await Promise.resolve().then(n.bind(n,23083));a(e(null)),a((await Promise.all([n.e(16105),n.e(35569)]).then(n.bind(n,16105))).collectionsApi.util.invalidateTags(["Collection"])),a((await n.e(42138).then(n.bind(n,42138))).linksApi.util.invalidateTags(["Link","SimilarTopic","Collection","Collections","Unsorted","AllResources","Favorites","ReadLater","MarkRead","Trash","Tag","Tags"])),a((await n.e(54232).then(n.bind(n,54232))).activitiesApi.util.invalidateTags(["AllActivities"])),a((await n.e(82992).then(n.bind(n,82992))).tagsApi.util.invalidateTags(["Tags","Tag"])),a((await n.e(72163).then(n.bind(n,72163))).searchApi.util.resetApiState()),a((await n.e(88846).then(n.bind(n,88846))).collaboratorsApi.util.invalidateTags(["Collection"])),a((await n.e(439).then(n.bind(n,439))).teamsApi.util.invalidateTags(["Team"])),a((await n.e(36613).then(n.bind(n,36613))).commentsApi.util.invalidateTags(["Collection"])),a((await n.e(45532).then(n.bind(n,45532))).statsApi.util.invalidateTags(["Stats","Feedbacks"])),a((await n.e(52773).then(n.bind(n,52773))).assistantApi.util.invalidateTags(["Chat","ChatMessage"])),a((await n.e(57950).then(n.bind(n,35569))).apiSliceProxy.util.invalidateTags(["Resources"]))}
1catch(e){console.error("Failed to invalidate caches after account switch:",e)}}}),updateMe:e.mutation({query:e=>({url:"/auth/me",method:"PATCH",body:e}),invalidatesTags:["Me"]}),updateOnboardingCompleted:e.mutation({query:e=>({url:"/auth/me",method:"PATCH",body:{user:{onboarding_completed:e}}}),invalidatesTags:["Me"]}),completeOnboarding:e.mutation({query:()=>({url:"/auth/complete_onboarding",method:"POST"}),invalidatesTags:["Me","Collections"]})})}),{useRegisterMutation:o,useLoginMutation:l,useGetMeQuery:u,useUpdatePasswordMutation:s,useRequestPasswordResetMutation:c,useResetPasswordMutation:d,useSwitchAccountMutation:h,useUpdateMeMutation:v,useUpdateOnboardingCompletedMutation:p,useCompleteOnboardingMutation:m}=i},49973:(e,t,n)=>{"use strict";n.d(t,{W:()=>l});var a=n(36317),r=n(2644),i=n(23083);let o=(0,a.cw)({baseUrl:"/api",credentials:"include",prepareHeaders:(e,t)=>{let{getState:n}=t,a=n().auth.currentAccountType||"personal";return e.set("Account",a),e}}),l=async(e,t,n)=>{let a=await o(e,t,n);if(a.error&&401===a.error.status){var l;t.dispatch((0,i.xW)(!0));{let{pathname:e}=window.location;(0,r.tg)(e)||(window.location.href="/")}return{error:"data"in a.error&&(null==(l=a.error.data)?void 0:l.message)||"Unauthorized"}}return a}},84604:(e,t,n)=>{"use strict";n.d(t,{G_:()=>i,mg:()=>o});var a=n(12115);let r=(0,a.createContext)(null);function i(e){let{clientId:t,nonce:n,onScriptLoadSuccess:i,onScriptLoadError:o,children:l}=e,u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{nonce:t,onScriptLoadSuccess:n,onScriptLoadError:r}=e,[i,o]=(0,a.useState)(!1),l=(0,a.useRef)(n);l.current=n;let u=(0,a.useRef)(r);return u.current=r,(0,a.useEffect)(()=>{let e=document.createElement("script");return e.src="https://accounts.google.com/gsi/client",e.async=!0,e.defer=!0,e.nonce=t,e.onload=()=>{var e;o(!0),null==(e=l.current)||e.call(l)},e.onerror=()=>{var e;o(!1),null==(e=u.current)||e.call(u)},document.body.appendChild(e),()=>{document.body.removeChild(e)}},[t]),i}({nonce:n,onScriptLoadSuccess:i,onScriptLoadError:o}),s=(0,a.useMemo)(()=>({clientId:t,scriptLoadedSuccessfully:u}),[t,u]);return a.createElement(r.Provider,{value:s},l)}function o(e){let{flow:t="implicit",scope:n="",onSuccess:i,onError:o,onNonOAuthError:l,overrideScope:u,state:s,...c}=e,{clientId:d,scriptLoadedSuccessfully:h}=function(){let e=(0,a.useContext)(r);if(!e)throw Error("Google OAuth components must be used within GoogleOAuthProvider");return e}(),v=(0,a.useRef)(),p=(0,a.useRef)(i);p.current=i;let m=(0,a.useRef)(o);m.current=o;let g=(0,a.useRef)(l);g.current=l,(0,a.useEffect)(()=>{var e,a;if(!h)return;let r="implicit"===t?"initTokenClient":"initCodeClient";v.current=null==(a=null==(e=null==window?void 0:window.google)?void 0:e.accounts)?void 0:a.oauth2[r]({client_id:d,scope:u?n:"openid profile email ".concat(n),callback:e=>{var t,n;if(e.error)return null==(t=m.current)?void 0:t.call(m,e);null==(n=p.current)||n.call(p,e)},error_callback:e=>{var t;null==(t=g.current)||t.call(g,e)},state:s,...c})},[d,h,t,n,s]);let y=(0,a.useCallback)(e=>{var t;return null==(t=v.current)?void 0:t.requestAccessToken(e)},[]),T=(0,a.useCallback)(()=>{var e;return null==(e=v.current)?void 0:e.requestCode()},[]);return"implicit"===t?y:T}},88846:(e,t,n)=>{"use strict";n.r(t),n.d(t,{collaboratorsApi:()=>i,useAcceptInvitationMutation:()=>v,useDeleteCollaboratorMutation:()=>c,useDeleteInvitationMutation:()=>d,useGetInvitationByTokenQuery:()=>h,useInviteUserMutation:()=>l,useInviteUsersMutation:()=>o,useUpdateCollaboratorPermissionMutation:()=>s,useUpdateInvitationPermissionMutation:()=>u});var a=n(61321),r=n(49973);let i=(0,a.xP)({reducerPath:"collaboratorsApi",baseQuery:r.W,tagTypes:["Collection","Invitations"],endpoints:e=>({inviteUsers:e.mutation({query:e=>{let{invitee_emails:t,resource_id:n,resource_type:a,permission:r}=e;return{url:"invitations",method:"POST",body:{invitee_emails:t,resource_id:n,resource_type:a,permission:r}}},invalidatesTags:(e,t,n)=>{var a;let r=null==(a=n.resource_id)?void 0:a.toString();return["Collection","Invitations",...r?[{type:"Collection",id:r}]:[]]}}),inviteUser:e.mutation({query:e=>{let{bundleId:t,emails:n,permission:a}=e;return{url:"collections/".concat(t,"/collaborators"),method:"POST",body:{emails:n,permission:a}}},invalidatesTags:["Collection"]}),updateInvitationPermission:e.mutation({query:e=>{let{invitationId:t,permission:n}=e;
1return{url:"invitations/".concat(t),method:"PUT",body:{permission:n}}},invalidatesTags:(e,t,n)=>["Collection","Invitations",...n.resourceId?[{type:"Collection",id:n.resourceId.toString()}]:[]]}),updateCollaboratorPermission:e.mutation({query:e=>{let{collaboratorId:t,email:n,permission:a}=e;return{url:"collaborators/".concat(t),method:"PUT",body:{email:n,permission:a}}},invalidatesTags:["Collection","Invitations"]}),deleteCollaborator:e.mutation({query:e=>{let{collaboratorId:t}=e;return{url:"collaborators/".concat(t),method:"DELETE"}},invalidatesTags:["Collection","Invitations"]}),deleteInvitation:e.mutation({query:e=>{let{invitationId:t}=e;return{url:"invitations/".concat(t),method:"DELETE"}},invalidatesTags:(e,t,n)=>["Collection","Invitations",...n.resourceId?[{type:"Collection",id:n.resourceId.toString()}]:[]]}),getInvitationByToken:e.query({query:e=>{let{token:t}=e;return{url:"invitations/".concat(t),method:"GET"}}}),acceptInvitation:e.mutation({query:e=>{let{token:t}=e;return{url:"invitations/".concat(t),method:"POST"}},invalidatesTags:["Collection","Invitations"]})})}),{useInviteUsersMutation:o,useInviteUserMutation:l,useUpdateInvitationPermissionMutation:u,useUpdateCollaboratorPermissionMutation:s,useDeleteCollaboratorMutation:c,useDeleteInvitationMutation:d,useGetInvitationByTokenQuery:h,useAcceptInvitationMutation:v}=i}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.