1/*! For license information please see 3075.9e6663d2.chunk.js.LICENSE.txt */ 2(self.webpackChunkknowledge_base_saas=self.webpackChunkknowledge_base_saas||[]).push([[3075],{15003(e,n,i){"use strict";i.d(n,{A:()=>g});var t=i(89379),o=i(53986),a=i(65043),r=i(98139),l=i.n(r),s=i(66630),d=i(70579);const c=["size","fullWidth","loading","leadingIcon","trailingIcon","className","disabled","children","type"],u={sm:"py-2 px-3 text-body-sm font-medium",md:"py-2 px-4 text-body-md font-medium",lg:"py-3 px-4 text-body-md font-medium"},g=(0,a.forwardRef)(function(e,n){let i=e.size,a=void 0===i?"md":i,r=e.fullWidth,g=void 0!==r&&r,f=e.loading,p=void 0!==f&&f,v=e.leadingIcon,h=e.trailingIcon,m=e.className,w=e.disabled,y=e.children,I=e.type,z=void 0===I?"button":I,S=(0,o.A)(e,c);const O=Boolean(p),A=O?(0,d.jsx)(s.y$,{size:"sm",className:"shrink-0","aria-hidden":!0}):v;return(0,d.jsxs)("button",(0,t.A)((0,t.A)({ref:n,type:z,disabled:w||O,className:l()("inline-flex items-center justify-center font-medium bg-brand hover:bg-brand-hover text-brand-on rounded-brand-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-focus-ring disabled:opacity-50 disabled:cursor-not-allowed transition-colors",u[a]||u.md,g&&"w-full justify-center",(A||h)&&"gap-2",m)},S),{},{children:[A,y,h]}))})},31963(e,n,i){"use strict";i.d(n,{A:()=>m});var t=i(89379),o=i(5544),a=i(65043),r=i(96822),l=i(67898),s=i(52395),d=i(55472),c=i(96060),u=i(62839),g=i(47081),f=i(22371),p=i(68400),v=i(20715),h=i(92339);function m(){const e=r.j2.currentUser,n=(0,a.useState)(null),i=(0,o.A)(n,2),m=i[0],w=i[1],y=(0,a.useState)({firstName:"",lastName:"",email:"",profileImageUrl:null}),I=(0,o.A)(y,2),z=I[0],S=I[1],O=(0,a.useState)(!0),A=(0,o.A)(O,2),b=A[0],U=A[1],k=(0,a.useState)(null),D=(0,o.A)(k,2),E=D[0],C=D[1],j=(0,a.useState)(null),J=(0,o.A)(j,2),P=J[0],x=J[1],R=(0,a.useState)(null),L=(0,o.A)(R,2),N=L[0],F=L[1],V=(0,a.useState)(null),W=(0,o.A)(V,2),T=W[0],H=W[1],_=(0,a.useState)(!1),M=(0,o.A)(_,2),B=M[0],q=M[1],G=(0,a.useState)(!1),Y=(0,o.A)(G,2),Q=Y[0],X=Y[1],Z=(0,a.useState)(null),$=(0,o.A)(Z,2),K=$[0],ee=$[1],ne=(0,a.useState)(!1),ie=(0,o.A)(ne,2),te=ie[0],oe=ie[1],ae=(0,a.useState)(0),re=(0,o.A)(ae,2),le=re[0],se=re[1],de=(0,a.useRef)(!1),ce=async(e,n)=>{if(null===e||void 0===e||!e.uid)return{plan:"explorer",isActive:!1};try{const i=(0,s.getFunctions)(),o=(0,s.httpsCallable)(i,"getUserSubscription"),a=await o((0,t.A)({userId:e.uid},n?{organizationId:n}:{}));if(a.data.subscription&&a.data.subscription.plan){const e=a.data.subscription.plan.toLowerCase(),n="active"===a.data.subscription.status||"trialing"===a.data.subscription.status;return"pro"!==e&&"enterprise"!==e||!n?{plan:e,isActive:!1}:((0,v.gg)("\u2705 Active subscription found:",e),{plan:e,isActive:!0})}}catch(i){console.warn("Failed to fetch subscription, checking signup plan:",i)}if(null!==e&&void 0!==e&&e.signupPlan)try{const n=await(0,c.k5)(e.uid);if(n){const i=await(0,c.PV)(e.signupPlan,n);if(i){i.toLowerCase().trim();const e="explorer";return(0,v.gg)("\ud83d\udd13 Using fallback signup plan:",e),{plan:e,isActive:!1}}}}catch(i){console.warn("Failed to decrypt signup plan:",i)}return{plan:"explorer",isActive:!1}};return(0,a.useEffect)(()=>{const n=(0,g.getSelectedOrganizationId)();if((0,v.gg)("[useAuth][sub-effect] deps changed:",{hasCurrentUser:!!e,orgResolved:B,currentOrganizationId:P,localStorageOrgId:n}),e&&B){const i=n||P;(0,v.gg)("[useAuth][sub-effect] Fetching subscription with effectiveOrgId:",i),ce(e,i||void 0).then(e=>{let n=e.plan;(0,v.gg)("[useAuth][sub-effect] Plan resolved:",n),H(n)})}},[e,P,B]),(0,a.useEffect)(()=>{(0,v.gg)("useEffect running - setting up auth listener");U(!0);const e=(0,l.hg)(r.j2,async e=>{if((0,v.gg)("\ud83d\udd25 Auth state changed - user:",(null===e||void 0===e?void 0:e.uid)||"null"),e){w(e);try{await(async e=>{var n,i;(0,v.gg)("\ud83c\udfaf fetchUserProfile called with user:",null===e||void 0===e?void 0:e.uid);const o=e||r.j2.currentUser;if(!o)return console.error("No authenticated user found."),void U(!1);U(!0);const a=(null===(n=o.displayName)||void 0===n?void 0:n.split(" "))||[],l=a[0]||"",s=a.slice(1).join(" ")||"",u=o.photoURL||Array.isArray(o.providerData)&&(null===(i=o.providerData.find(e=>null===e||void 0===e?void 0:e.photoURL))||void 0===i?void 0:i.photoURL)||null;let f={firstName:l,lastName:s,email:o.email||"",profileImageUrl:u};(0,v.gg)("\ud83d\ude80 Setting profile from Auth data:",f),S(f);try{(0,v.gg)("Fetching user profile for:",o.uid);const e=(0,d.doc)(r.db,"users",o.uid);let n;try{n=await(0,d._e)(e)}catch(m){(0,v.gg)("Server fetch failed, falling back to cache:",m.message),n=await(0,d.getDoc)(e)}const i=n.exists()?n.data():null;if(i&&!i.name&&!i.email&&!i.profileImageUrl){(0,v.gg)("Document appears to be a stale cache entry, retrying from server..."),await new Promise(e=>setTimeout(e,1500));try{n=await(0,d._e)(e)}catch(w){(0,v.gg)("Retry from server also failed:",w.message)}}if((0,v.gg)("\ud83d\udcc4 Firestore document exists:",n.exists()),n.exists()){const e=n.data();e.profileImageUrl?((0,v.gg)("\ud83d\uddbc\ufe0f Setting profile image from Firestore:",e.profileImageUrl),S(n=>(0,t.A)((0,t.A)({},n),{},{profileImageUrl:e.profileImageUrl}))):(0,v.gg)("\ud83d\uddbc\ufe0f No profileImageUrl in Firestore doc; using auth-derived URL:",u||"(none)"),(0,v.gg)("\ud83d\udd0d RAW User data from Firestore:",e);try{const n=await(0,c.k5)(o.uid);(0,v.gg)("\ud83d\udd11 Encryption key derived successfully");let i=null,t=null;if(e.name){const t=await(0,c.PV)(e.name,n);i=t?(0,c.pM)(t):null,(0,v.gg)("\u2705 Name decrypted successfully:",i)}if(e.email){const i=await(0,c.PV)(e.email,n);t=i?(0,c.pM)(i):null,(0,v.gg)("\u2705 Email decrypted successfully:",t)}if(i||t){const n=i?i.split(" "):[],o=n[0]||"",a=n.slice(1).join(" ")||"",r={firstName:o||f.firstName,lastName:a||f.lastName,email:t||f.email,profileImageUrl:e.profileImageUrl||f.profileImageUrl};(0,v.gg)("\ud83d\udcdd Final profile with decrypted data:",r),S(r)}}catch(y){console.error("\u274c DECRYPTION ERROR:",y)}let i=null;try{if(e.organizations){let n;(0,v.gg)("Raw organizations data:",e.organizations);const t=await(0,c.k5)(o.uid);if("string"===typeof e.organizations)try{n=await(0,c.PV)(e.organizations,t),n=JSON.parse(n)}catch(y){(0,v.gg)("Failed to decrypt, trying direct parse:",y),n=JSON.parse(e.organizations)}else"object"===typeof e.organizations&&(n=e.organizations);var p;if(n&&"object"===typeof n)if(Array.isArray(n))i=null===(p=n[0])||void 0===p?void 0:p.id;else if(n[0])i=n[0].id;else{const e=Object.keys(n)[0];var h;e&&(i=null===(h=n[e])||void 0===h?void 0:h.id)}(0,v.gg)("Extracted organization ID:",i)}}catch(I){console.error("Error processing organizations:",I)}if(i){const e=(0,g.getSelectedOrganizationId)();e?(C(e),x(e),(0,v.gg)("[OrgSwitch] fetchUserProfile: user doc org:",i,"but localStorage has selected org:",e,"- keeping both IDs on selected org")):(C(i),x(i),(0,g.t6)(i),(0,v.gg)("[OrgSwitch] fetchUserProfile: organization id set as",i))}}else(0,v.gg)("\u26a0\ufe0f No Firestore document - using Auth data already set");!u&&Array.isArray(o.providerData)&&o.providerData.length>0&&setTimeout(async()=>{try{var e,n;await(null===(e=r.j2.currentUser)||void 0===e?void 0:e.reload());const i=r.j2.currentUser;if(!i)return;const o=i.photoURL||Array.isArray(i.providerData)&&(null===(n=i.providerData.find(e=>null===e||void 0===e?void 0:e.photoURL))||void 0===n?void 0:n.photoURL)||null;o&&S(e=>e?(0,t.A)((0,t.A)({},e),{},{profileImageUrl:o}):e)}catch(i){(0,v.gg)("Profile photo retry failed:",i)}},500)}catch(z){console.error("\u274c MAJOR ERROR in fetchUserProfile:",z)}finally{U(!1)}})(e)}catch(n){console.error("\u274c Profile fetch failed:",n),U(!1)}}else w(null),S(null),C(null),x(null),U(!1),sessionStorage.removeItem("workspace-toast-shown")});return()=>{(0,v.gg)("\ud83e\uddf9 Cleaning up auth listener"),e()}},[]),(0,a.useEffect)(()=>{const n=async()=>
2{if(null!==e&&void 0!==e&&e.uid)try{const n=await(0,u.sd)(e.uid);X(n)}catch(n){console.error("Error checking for unseen updates:",n)}else X(!1)};n();const i=setInterval(n,3e5);return()=>clearInterval(i)},[e]),(0,a.useEffect)(()=>{let e=!1;return(async()=>{try{const n="".concat(".","/app-updates-version.json"),i=await fetch(n,{cache:"no-store"});if(!i.ok)throw new Error("Failed to load ".concat(n,": HTTP ").concat(i.status));const t=await i.json();if(e)return;const o="string"===typeof(null===t||void 0===t?void 0:t.version)?t.version:null,a=!0===(null===t||void 0===t?void 0:t.beta);ee(o),oe(a)}catch(n){if(e)return;ee(null),oe(!1)}})(),()=>{e=!0}},[]),(0,a.useEffect)(()=>{null!==m&&void 0!==m&&m.uid?(async()=>{if(null===m||void 0===m||!m.uid)return x(null),void q(!0);q(!1);const e=(0,g.getSelectedOrganizationId)();try{console.info("[OrgSwitch][useAuth] loadOrganization start",{userId:m.uid,selectedOrgId:e||null,currentOrganizationId:P||null,organizationId:E||null}),(0,v.gg)("[OrgSwitch] loadOrganization START selectedOrgId=".concat(e));const n=async()=>{const n=(0,f.eb)()?3:1;let i=null;for(let o=1;o<=n;o+=1)try{const n=await(0,g.getUserOrganizationData)(e||null,o>1);if(n)return n}catch(t){if(i=t,!String((null===t||void 0===t?void 0:t.message)||"").includes("User is not part of any organization")||o>=n||!(0,f.eb)())throw t;(0,v.gg)("[OrgSwitch] loadOrganization signup retry ".concat(o,"/").concat(n)),await new Promise(e=>setTimeout(e,300*o))}if(i)throw i;return null},t=await n();if(t){if(console.info("[OrgSwitch][useAuth] loadOrganization resolved",{userId:m.uid,organizationId:t.id,role:t.role||null,selectedOrgId:e||null}),(0,v.gg)("[OrgSwitch] loadOrganization resolved org=".concat(t.id," name=").concat(t.name," role=").concat(t.role)),C(t.id),x(t.id),F(t.role),e||(0,g.t6)(t.id),!sessionStorage.getItem("workspace-toast-shown")){sessionStorage.setItem("workspace-toast-shown","true");try{const e=await(0,g.wV)();e&&e.length>1&&(0,h.Ay)("You're viewing the ".concat(t.name," workspace"),{icon:"\ud83c\udfe2",duration:5e3,style:{borderLeft:"4px solid #4285F4"}})}catch(i){(0,v.gg)("Could not check multi-org status for toast:",i)}}}else if(console.info("[OrgSwitch][useAuth] loadOrganization returned no org data",{userId:m.uid,selectedOrgId:e||null,fallbackOrganizationId:E||null}),E&&!P&&x(E),(0,f.eb)()){const n=e||(0,f.kn)();n&&((0,v.gg)("[OrgSwitch] loadOrganization using justSignedUp seed (no org data)",n),C(n),x(n),F("admin"))}}catch(t){const i=String((null===t||void 0===t?void 0:t.message)||"").includes("User is not part of any organization");if(i?(0,v.gg)("No organization for user (expected for some accounts):",(null===t||void 0===t?void 0:t.message)||t):console.error("Error loading organization:",t),console.info("[OrgSwitch][useAuth] loadOrganization failed",{userId:m.uid,selectedOrgId:e||null,code:(null===t||void 0===t?void 0:t.code)||null,message:(null===t||void 0===t?void 0:t.message)||null,fallbackOrganizationId:E||null}),i&&e&&!de.current){de.current=!0;try{await(0,p.LA)();const n=r.j2.currentUser;if(null!==n&&void 0!==n&&n.emailVerified){console.info("[DomainJoin][useAuth] attempting loadOrganization recovery join",{userId:n.uid,organizationId:e});const i=await(0,p.VJ)({organizationId:e});if(console.info("[DomainJoin][useAuth] loadOrganization recovery join resolved",{userId:n.uid,organizationId:(null===i||void 0===i?void 0:i.organizationId)||null,defaultWorkspaceId:(null===i||void 0===i?void 0:i.defaultWorkspaceId)||null}),null!==i&&void 0!==i&&i.organizationId){const e=await(0,g.getUserOrganizationData)(i.organizationId,!0);if(e){C(e.id),x(e.id),F(e.role);const n=(0,p.HV)()||e.slug;(0,p.Uc)(),n&&(0,p.k4)(n),window.dispatchEvent(new CustomEvent("workspacesUpdated",{detail:{needsFullRefresh:!0}}))}}}else console.info("[DomainJoin][useAuth] loadOrganization recovery waiting for email verification",{userId:(null===n||void 0===n?void 0:n.uid)||m.uid,organizationId:e})}catch(o){var n;console.info("[DomainJoin][useAuth] loadOrganization recovery join failed",{userId:m.uid,organizationId:e,code:(null===o||void 0===o?void 0:o.code)||null,reason:(null===o||void 0===o||null===(n=o.details)||void 0===n?void 0:n.reason)||null,message:(null===o||void 0===o?void 0:o.message)||null})}finally{de.current=!1}}if(E&&!P&&x(E),i&&(0,f.eb)()){const e=(0,g.getSelectedOrganizationId)()||(0,f.kn)();e&&((0,v.gg)("[OrgSwitch] loadOrganization using justSignedUp seed",e),C(e),x(e),F("admin"))}}finally{q(!0)}})():q(!0);const e=async e=>{var n;const i=null===(n=e.detail)||void 0===n?void 0:n.organizationId;if((0,v.gg)("[OrgSwitch] handleOrgChange event received newOrgId=".concat(i)),i){x(i);try{(0,v.gg)("[OrgSwitch] handleOrgChange fetching org data for ".concat(i,"..."));const e=await(0,g.getUserOrganizationData)(i);e&&((0,v.gg)("[OrgSwitch] handleOrgChange resolved org=".concat(e.id," role=").concat(e.role,", setting both IDs")),C(e.id),x(e.id),F(e.role))}catch(t){String((null===t||void 0===t?void 0:t.message)||"").includes("User is not part of any organization")?(0,v.gg)("[OrgSwitch] handleOrgChange: no organization after org change:",(null===t||void 0===t?void 0:t.message)||t):console.error("[OrgSwitch] handleOrgChange error:",t)}(0,v.gg)("[OrgSwitch] handleOrgChange dispatching workspacesUpdated"),window.dispatchEvent(new CustomEvent("workspacesUpdated",{detail:{needsFullRefresh:!0}}))}};return window.addEventListener("organizationChanged",e),()=>window.removeEventListener("organizationChanged",e)},[null===m||void 0===m?void 0:m.uid]),(0,a.useEffect)(()=>
2{if(null===m||void 0===m||!m.uid||!B)return;if("undefined"===typeof window)return;const e=(0,g.getSelectedOrganizationId)();if(!e||e===P)return;let n=!1;return(async()=>{try{console.info("[OrgSwitch][useAuth] selected org sync start",{userId:m.uid,selectedOrgId:e,currentOrganizationId:P||null,organizationId:E||null}),(0,v.gg)("[OrgSwitch] syncing selected organization from storage: ".concat(e));const i=await(0,g.getUserOrganizationData)(e);if(n||!i)return;console.info("[OrgSwitch][useAuth] selected org sync resolved",{userId:m.uid,selectedOrgId:e,organizationId:i.id,role:i.role||null}),C(i.id),x(i.id),F(i.role)}catch(t){if(String((null===t||void 0===t?void 0:t.message)||"").includes("User is not part of any organization")?(0,v.gg)("[OrgSwitch] selected organization sync found no organization:",(null===t||void 0===t?void 0:t.message)||t):console.error("[OrgSwitch] selected organization sync failed:",t),console.info("[OrgSwitch][useAuth] selected org sync failed",{userId:m.uid,selectedOrgId:e,code:(null===t||void 0===t?void 0:t.code)||null,message:(null===t||void 0===t?void 0:t.message)||null}),de.current)return;de.current=!0;try{await(0,p.LA)();const i=r.j2.currentUser;if(null===i||void 0===i||!i.emailVerified)return void console.info("[DomainJoin][useAuth] selected org recovery waiting for email verification",{userId:(null===i||void 0===i?void 0:i.uid)||m.uid,organizationId:e});console.info("[DomainJoin][useAuth] attempting selected org recovery join",{userId:i.uid,organizationId:e});const t=await(0,p.VJ)({organizationId:e});if(n)return;if(console.info("[DomainJoin][useAuth] selected org recovery join resolved",{userId:i.uid,organizationId:(null===t||void 0===t?void 0:t.organizationId)||null,defaultWorkspaceId:(null===t||void 0===t?void 0:t.defaultWorkspaceId)||null}),null!==t&&void 0!==t&&t.organizationId){const e=await(0,g.getUserOrganizationData)(t.organizationId,!0);if(n||!e)return;C(e.id),x(e.id),F(e.role);const i=(0,p.HV)()||e.slug;(0,p.Uc)(),i&&(0,p.k4)(i),window.dispatchEvent(new CustomEvent("workspacesUpdated",{detail:{needsFullRefresh:!0}}))}}catch(o){var i;console.info("[DomainJoin][useAuth] selected org recovery join failed",{userId:m.uid,organizationId:e,code:(null===o||void 0===o?void 0:o.code)||null,reason:(null===o||void 0===o||null===(i=o.details)||void 0===i?void 0:i.reason)||null,message:(null===o||void 0===o?void 0:o.message)||null})}finally{de.current=!1}}})(),()=>{n=!0}},[null===m||void 0===m?void 0:m.uid,B,P,E]),(0,a.useEffect)(()=>{if("undefined"===typeof window)return;const e=()=>{(0,p.HV)()&&se(e=>e+1)};return window.addEventListener("focus",e),window.addEventListener("visibilitychange",e),()=>{window.removeEventListener("focus",e),window.removeEventListener("visibilitychange",e)}},[]),(0,a.useEffect)(()=>{if(null===m||void 0===m||!m.uid||!B)return;if("undefined"===typeof window)return;const e=(0,p.HV)();if(!e||de.current)return;let n=!1;return(async()=>{de.current=!0;try{console.info("[DomainJoin][useAuth] pending join recovery start",{userId:m.uid,pendingSlug:e,selectedOrgId:(0,g.getSelectedOrganizationId)()||null,currentOrganizationId:P||null,organizationId:E||null}),await(0,p.LA)();const i=r.j2.currentUser;if(null===i||void 0===i||!i.emailVerified)return console.info("[DomainJoin][useAuth] pending join waiting for email verification",{userId:(null===i||void 0===i?void 0:i.uid)||m.uid,pendingSlug:e}),void(0,v.gg)("[DomainJoin] Pending join is waiting for email verification");const t=await(0,p.VJ)({slug:e});if(n)return;if(console.info("[DomainJoin][useAuth] pending join callable resolved",{userId:i.uid,pendingSlug:e,organizationId:(null===t||void 0===t?void 0:t.organizationId)||null,defaultWorkspaceId:(null===t||void 0===t?void 0:t.defaultWorkspaceId)||null}),null!==t&&void 0!==t&&t.organizationId){const o=await(0,g.getUserOrganizationData)(t.organizationId,!0);if(n)return;o&&(console.info("[DomainJoin][useAuth] pending join org data resolved",{userId:i.uid,organizationId:o.id,role:o.role||null}),C(o.id),x(o.id),F(o.role)),(0,p.Uc)(),(0,p.k4)(e),window.dispatchEvent(new CustomEvent("workspacesUpdated",{detail:{needsFullRefresh:!0}}))}}catch(a){var i,t;if("email-not-verified"===(null===a||void 0===a||null===(i=a.details)||void 0===i?void 0:i.reason))(0,v.gg)("[DomainJoin] Pending join still requires email verification");else if((0,p.fh)(a)){var o;(0,p.Uc)(),console.info("[DomainJoin][useAuth] cleared stale pending join slug after terminal failure",{userId:m.uid,pendingSlug:e,code:(null===a||void 0===a?void 0:a.code)||null,reason:(null===a||void 0===a||null===(o=a.details)||void 0===o?void 0:o.reason)||null,message:(null===a||void 0===a?void 0:a.message)||null})}else console.error("[DomainJoin] Failed to recover pending domain join:",a);console.info("[DomainJoin][useAuth] pending join recovery failed",{userId:m.uid,pendingSlug:e,code:(null===a||void 0===a?void 0:a.code)||null,reason:(null===a||void 0===a||null===(t=a.details)||void 0===t?void 0:t.reason)||null,message:(null===a||void 0===a?void 0:a.message)||null})}finally{de.current=!1}})(),()=>{n=!0}},[null===m||void 0===m?void 0:m.uid,B,le,P,E]),{currentUser:e,user:m,setUser:w,userProfile:z,setUserProfile:S,loading:b,setLoading:U,organizationId:E,setOrganizationId:C,currentOrganizationId:P,setCurrentOrganizationId:x,currentUserRole:N,userPlan:T,hasUnseenUpdates:Q,setHasUnseenUpdates:X,appUpdatesVersion:K,appUpdatesIsBeta:te,getUserSubscriptionStatus:ce,orgResolved:B}}},62839(e,n,i){"use strict";i.d(n,{_2:()=>c,sd:()=>s,y3:()=>d});var t=i(89379),o=i(55472),a=i(96822),r=i(20715);const l=async()=>{try{const e=await async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;try{const n=(0,o.rJ)(a.db,"appUpdates"),i=(0,o.P)(n,(0,o.My)("versionNumber","desc"),(0,o.AB)(e)),l=(await(0,o.GG)(i)).docs.map(e=>(0,t.A)({id:e.id},e.data()));return(0,r.gg)("Fetched app updates:",l),l}
2catch(n){throw console.error("Error fetching app updates:",n),n}}(1);return e.length>0?e[0]:null}catch(e){throw console.error("Error fetching latest update:",e),e}},s=async e=>{try{const n=await l();if(!n)return!1;const i="lastSeenUpdateVersion-".concat(e),t=localStorage.getItem(i);return!t||n.version!==t}catch(n){return console.error("Error checking for unseen updates:",n),!1}},d=async(e,n)=>{try{const i=(0,o.doc)(a.db,"appUpdates",e);await(0,o.mZ)(i,(0,t.A)((0,t.A)({},n),{},{updatedAt:new Date})),(0,r.gg)("Updated app update:",e)}catch(i){throw console.error("Error updating app update:",i),i}},c=async e=>{try{const n=(0,o.doc)(a.db,"appUpdates",e);await(0,o.kd)(n),(0,r.gg)("Deleted app update:",e)}catch(n){throw console.error("Error deleting app update:",n),n}}},68400(e,n,i){"use strict";i.d(n,{E5:()=>c,HV:()=>h,JL:()=>O,LA:()=>D,MT:()=>I,Nn:()=>E,Qi:()=>v,Uc:()=>m,VJ:()=>z,Xv:()=>b,an:()=>S,b0:()=>y,dF:()=>C,dJ:()=>A,eo:()=>U,fh:()=>f,jb:()=>k,k4:()=>w,rq:()=>p});var t=i(89379),o=i(67898),a=i(52395),r=i(96822),l=i(47081);const s=(0,a.getFunctions)(r.yA,"us-central1"),d="pendingDomainJoinSlug",c="pendingDomainJoinSlugChanged",u="pendingDomainJoinSlug.persisted",g="clientJoinSlug",f=e=>{var n;if("email-not-verified"===(null===e||void 0===e||null===(n=e.details)||void 0===n?void 0:n.reason))return!1;const i=String((null===e||void 0===e?void 0:e.code)||"").replace(/^functions\//,"");return["not-found","failed-precondition","permission-denied"].includes(i)},p=e=>{if(!e)return null;try{const n=decodeURIComponent(e).match(/(?:^|\/)join\/([^/?#]+)/);return null!==n&&void 0!==n&&n[1]?decodeURIComponent(n[1]):null}catch(n){const i=String(e).match(/(?:^|\/)join\/([^/?#]+)/);return(null===i||void 0===i?void 0:i[1])||null}},v=e=>{if("undefined"===typeof window)return null;const n=p(e);return n&&(sessionStorage.setItem(d,n),localStorage.setItem(u,n),window.dispatchEvent(new CustomEvent(c,{detail:{slug:n}}))),n},h=()=>"undefined"===typeof window?null:sessionStorage.getItem(d)||localStorage.getItem(u),m=()=>{"undefined"!==typeof window&&(sessionStorage.removeItem(d),localStorage.removeItem(u),window.dispatchEvent(new CustomEvent(c,{detail:{slug:null}})))},w=e=>{"undefined"!==typeof window&&e&&localStorage.setItem(g,String(e).trim())},y=()=>"undefined"===typeof window?null:localStorage.getItem(g),I=async e=>{let n=e.slug,i=e.organizationId;const t=(0,a.httpsCallable)(s,"getDomainJoinOrganization");return(await t({slug:n,organizationId:i})).data.organization},z=async e=>{var n;let i=e.slug,t=e.organizationId;const o=(0,a.httpsCallable)(s,"joinOrganizationByDomain"),r=await o({slug:i,organizationId:t});return null!==(n=r.data)&&void 0!==n&&n.organizationId&&((0,l.t6)(r.data.organizationId),(0,l.Dt)()),r.data},S=async e=>{let n=e.parentOrganizationId,i=e.name,o=e.slug,r=e.allowedEmailDomains,d=e.domainJoin,c=e.ssoProfile,u=e.workspaces,g=e.branding,f=e.clientLoginExperience,p=e.clientSearchWorkspaceIds;const v=(0,a.httpsCallable)(s,"createChildOrganization"),h=await v((0,t.A)((0,t.A)({parentOrganizationId:n,name:i,slug:o,allowedEmailDomains:r,domainJoin:d,ssoProfile:c,workspaces:u,branding:g},null!=f?{clientLoginExperience:f}:{}),null!=p?{clientSearchWorkspaceIds:p}:{}));return(0,l.Dt)(),h.data},O=async e=>{let n=e.organizationId,i=e.name,t=e.allowedEmailDomains,o=e.domainJoin,r=e.ssoProfile,d=e.branding,c=e.clientLoginExperience,u=e.clientSearchWorkspaceIds;const g=(0,a.httpsCallable)(s,"updateChildOrganizationAccess"),f={organizationId:n};void 0!==i&&(f.name=i),void 0!==t&&(f.allowedEmailDomains=t),void 0!==o&&(f.domainJoin=o),void 0!==r&&(f.ssoProfile=r),void 0!==d&&(f.branding=d),void 0!==c&&(f.clientLoginExperience=c),void 0!==u&&(f.clientSearchWorkspaceIds=u);const p=await g(f);return(0,l.Dt)(),p.data.organization},A=async e=>{let n=e.organizationId,i=e.workspaces;const t=(0,a.httpsCallable)(s,"addPartnerClientWorkspaces"),o=await t({organizationId:n,workspaces:i});return(0,l.Dt)(),o.data},b=async e=>{const n=(0,a.httpsCallable)(s,"getPartnerChildOrganizations");return(await n({parentOrganizationId:e})).data.organizations||[]},U=async e=>{const n=(0,a.httpsCallable)(s,"sendPartnerPreviewRagMessage");return(await n(e)).data},k=async e=>{let n=e.organizationId,i=e.confirmationSlug;const t=(0,a.httpsCallable)(s,"deletePartnerChildOrganization"),o=await t({organizationId:n,confirmationSlug:i});return(0,l.Dt)(),o.data},D=async()=>{const e=(0,o.xI)().currentUser;
2return e?(await e.reload(),e.getIdToken(!0)):null},E=async e=>{let n=e.slug,i=e.email,t=e.continueUrl;const o=(0,a.httpsCallable)(s,"sendDomainJoinSignInLink");return(await o({slug:n,email:i,continueUrl:t})).data},C=async e=>{let n=e.oobCode;const i=(0,a.httpsCallable)(s,"completeEmailVerificationSignIn");return(await i({oobCode:n})).data}},22371(e,n,i){"use strict";i.d(n,{NC:()=>r,eb:()=>l,kn:()=>a,zw:()=>o});const t="justSignedUp";function o(e){if("undefined"!==typeof window&&e)try{sessionStorage.setItem(t,String(e))}catch(n){}}function a(){if("undefined"===typeof window)return null;try{return sessionStorage.getItem(t)}catch(e){return null}}function r(){const e=a();if(!e)return null;try{sessionStorage.removeItem(t)}catch(n){}return e}function l(){return Boolean(a())}},35327(e,n,i){"use strict";i.d(n,{A:()=>t});const t=(0,i(77784).A)("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]])},98139(e,n){var i;!function(){"use strict";var t={}.hasOwnProperty;function o(){for(var e="",n=0;n<arguments.length;n++){var i=arguments[n];i&&(e=r(e,a(i)))}return e}function a(e){if("string"===typeof e||"number"===typeof e)return e;if("object"!==typeof e)return"";if(Array.isArray(e))return o.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var n="";for(var i in e)t.call(e,i)&&e[i]&&(n=r(n,i));return n}function r(e,n){return n?e?e+" "+n:e+n:e}e.exports?(o.default=o,e.exports=o):void 0===(i=function(){return o}.apply(n,[]))||(e.exports=i)}()}}]); 3//# sourceMappingURL=3075.9e6663d2.chunk.js.map
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.