PageSourceSearch

https://socialselling.ai/_next/static/chunks/16799-3a8fa0506c33ad36.js

js socialselling.ai collected 2026-10-05 14:50:13 UTC 21,470 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[16799],{30767:function(e,a,t){t.d(a,{OL:function(){return h},_T:function(){return g},aR:function(){return i},f$:function(){return m},fY:function(){return f},le:function(){return b},vW:function(){return c},xo:function(){return p},yT:function(){return v}});var s=t(57437),r=t(2265),n=t(90277),o=t(93448),l=t(12381);let i=n.fC,c=n.xz,u=n.h_,d=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.aV,{className:(0,o.cn)("fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...r,ref:a})});d.displayName=n.aV.displayName;let g=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsxs)(u,{children:[(0,s.jsx)(d,{}),(0,s.jsx)(n.VY,{ref:a,className:(0,o.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...r})]})});g.displayName=n.VY.displayName;let f=e=>{let{className:a,...t}=e;return(0,s.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-2 text-center sm:text-left",a),...t})};f.displayName="AlertDialogHeader";let p=e=>{let{className:a,...t}=e;return(0,s.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...t})};p.displayName="AlertDialogFooter";let m=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.Dx,{ref:a,className:(0,o.cn)("text-lg font-semibold",t),...r})});m.displayName=n.Dx.displayName;let v=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.dk,{ref:a,className:(0,o.cn)("text-sm text-muted-foreground",t),...r})});v.displayName=n.dk.displayName;let h=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.aU,{ref:a,className:(0,o.cn)((0,l.d)(),t),...r})});h.displayName=n.aU.displayName;let b=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.$j,{ref:a,className:(0,o.cn)((0,l.d)({variant:"outline"}),"mt-2 sm:mt-0",t),...r})});b.displayName=n.$j.displayName},68245:function(e,a,t){t.d(a,{X:function(){return i}});var s=t(57437),r=t(2265),n=t(9270),o=t(30401),l=t(93448);let i=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.fC,{ref:a,className:(0,l.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...r,children:(0,s.jsx)(n.z$,{className:(0,l.cn)("flex items-center justify-center text-current"),children:(0,s.jsx)(o.Z,{className:"h-4 w-4"})})})});i.displayName=n.fC.displayName},90641:function(e,a,t){t.d(a,{x:function(){return l}});var s=t(57437),r=t(2265),n=t(43643),o=t(93448);let l=r.forwardRef((e,a)=>{let{className:t,children:r,...l}=e;return(0,s.jsxs)(n.fC,{ref:a,className:(0,o.cn)("relative overflow-hidden",t),...l,children:[(0,s.jsx)(n.l_,{className:"h-full w-full rounded-[inherit]",children:r}),(0,s.jsx)(i,{}),(0,s.jsx)(n.Ns,{})]})});l.displayName=n.fC.displayName;let i=r.forwardRef((e,a)=>{let{className:t,orientation:r="vertical",...l}=e;return(0,s.jsx)(n.gb,{ref:a,orientation:r,forceMount:!0,className:(0,o.cn)("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...l,children:(0,s.jsx)(n.q4,{className:"relative flex-1 rounded-full bg-slate-300 dark:bg-slate-600 hover:bg-slate-400 dark:hover:bg-slate-500 transition-colors"})})});i.displayName=n.gb.displayName},94589:function(e,a,t){t.d(a,{r:function(){return l}});var s=t(57437),r=t(2265),n=t(50721),o=t(93448);let l=r.forwardRef((e,a)=>{let{className:t,...r}=e;return(0,s.jsx)(n.fC,{className:(0,o.cn)("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 dark:focus-visible:ring-gray-300 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-950 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-gray-900 dark:data-[state=checked]:bg-gray-100 data-[state=unchecked]:bg-gray-200 dark:data-[state=unchecked]:bg-gray-700",t),...r,ref:a,children:(0,s.jsx)(n.bU,{className:(0,o.cn)("pointer-events-none block h-5 w-5 rounded-full bg-white dark:bg-gray-900 shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})})});l.displayName=n.fC.displayName},23675:function(e,a,t){t.d(a,{g:function(){return o}});var s=t(57437),r=t(2265),n=t(93448);let o=r.forwardRef((e,a)=>{let{className:t,error:r,...o}=e;return(0,s.jsx)("textarea",{"aria-invalid":r?"true":void 0,className:(0,n.cn)("flex min-h-[80px] w-full rounded-[4px] border border-input bg-background px-3 py-2 text-sm r
1ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",r&&"border-red-500 focus-visible:ring-red-500",t),ref:a,...o})});o.displayName="Textarea"},9310:function(e,a,t){t.d(a,{H:function(){return i},K:function(){return l}});var s=t(57437),r=t(2265),n=t(99376);let o=(0,r.createContext)(void 0);function l(e){let{children:a}=e,[t,l]=(0,r.useState)(!1),i=(0,n.useRouter)(),c=(0,n.usePathname)(),u=(0,r.useRef)(c),d=(0,r.useRef)(null),g=(0,r.useCallback)(()=>{d.current&&(clearTimeout(d.current),d.current=null)},[]),f=(0,r.useCallback)(()=>{g(),l(!0),d.current=setTimeout(()=>{l(!1)},4e3)},[g]),p=(0,r.useCallback)(()=>{g(),l(!1)},[g]),m=(0,r.useCallback)(e=>{e!==c&&(f(),i.push(e))},[i,c,f]);return(0,r.useEffect)(()=>(c!==u.current&&(u.current=c),()=>g()),[c,g]),(0,s.jsx)(o.Provider,{value:{isNavigating:t,startNavigation:f,endNavigation:p,navigateTo:m},children:a})}function i(){let e=(0,r.useContext)(o);if(!e)throw Error("useNavigation must be used within a NavigationProvider");return e}},39890:function(e,a,t){t.d(a,{r:function(){return n}});var s=t(2265),r=t(71837);function n(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{autoFetch:!0},[a,t]=(0,s.useState)([]),[n,o]=(0,s.useState)(!0),[l,i]=(0,s.useState)(null),c=(0,s.useCallback)(async()=>{try{o(!0),i(null);let e=await r.api.get("/agent-groups");t(e.data)}catch(e){i(e instanceof Error?e.message:"Failed to fetch agent groups"),console.error("Failed to fetch agent groups:",e)}finally{o(!1)}},[]),u=(0,s.useCallback)(async e=>{try{return(await r.api.get("/agent-groups/".concat(e))).data}catch(e){return console.error("Failed to fetch agent group:",e),null}},[]),d=(0,s.useCallback)(async e=>{try{let a=await r.api.get("/agent-groups/".concat(e,"/members"));return{success:!0,members:a.data}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to fetch group members";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[]),g=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/agent-groups",e);return await c(),{success:!0,group:a.data}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to create agent group";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[c]),f=(0,s.useCallback)(async(e,a)=>{try{let t=await r.api.put("/agent-groups/".concat(e),a);return await c(),{success:!0,group:t.data}}catch(a){var t,s;let e=a instanceof Error?a.message:"Failed to update agent group";return{success:!1,error:(null===(s=a.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail)||e}}},[c]),p=(0,s.useCallback)(async e=>{try{return await r.api.delete("/agent-groups/".concat(e)),await c(),{success:!0}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to delete agent group";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[c]),m=(0,s.useCallback)(async(e,a)=>{try{return await r.api.post("/agent-groups/".concat(e,"/members"),{user_id:a}),await c(),{success:!0}}catch(a){var t,s;let e=a instanceof Error?a.message:"Failed to add member to group";return{success:!1,error:(null===(s=a.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail)||e}}},[c]),v=(0,s.useCallback)(async(e,a)=>{try{return await r.api.delete("/agent-groups/".concat(e,"/members/").concat(a)),await c(),{success:!0}}catch(a){var t,s;let e=a instanceof Error?a.message:"Failed to remove member from group";return{success:!1,error:(null===(s=a.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail)||e}}},[c]),h=(0,s.useCallback)(async e=>{try{let a=await r.api.get("/agent-groups/".concat(e,"/menu"));return{success:!0,menu_config:a.data.menu_config}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to get group menu assignment";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[]),b=(0,s.useCallback)(async(e,a)=>{try{return await r.api.put("/agent-groups/".concat(e,"/menu"),{menu_config:a}),await c(),{success:!0}}catch(a){var t,s;let e=a instanceof Error?a.message:"Failed to update group menu assignment";return{success:!1,error:(null===(s=a.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail)||e}}},[c]),y=(0,s.useCallback)(async e=>{try{return await r.api.delete("/agent-groups/".concat(e,"/menu")),await c(),{success:!0}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to reset group menu assignment";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[c]),w=(0,s.useCallback)(async()=>{await c()},[c]);return(0,s.useEffect)(()=>{e.autoFetch&&c()},[e.autoFetch,c]),{groups:a,loading:n,error:l,fetchGroups:c,getGroup:u,getGroupMembers:d,createGroup:g,updateGroup:f,deleteGroup:p,addMember:m,removeMember:v,getGroupMenuAssignment:h,updateGroupMenuAssignment:b,resetGroupMenuAssignment:y,refresh:w}}},24746:function(e,a,t){t.d(a,{DO:function(){return o}});var s=t(2265),r=t(71837);let n={dashboardRole:"viewer",systemRole:"Customer",enterpriseRole:"staff",enterpriseTier:4,agentGroups:[],permissions:[],dashboardPermissions:[],canAssignLeads:!1,canMoveLeads:!1,canConvertLeads:!1,canDeleteLeads:!1,canManageTeam:!1,canViewReports:!1,canManageCampaigns:!1,canManageBilling:!1,canManageAgentGroups:!1,isAdmin:!1,isManager:!1,isSuperAdmin:!1,loading:!0,error:null,hasPermission:()=>!1,hasAnyPermission:()=>!1,hasAllPermissions:()=>!1,hasMinimumTier:()=>!1,refresh:async()=>{}};
1function o(){let[e,a]=(0,s.useState)({...n,loading:!1}),t=(0,s.useCallback)(async()=>{let e=localStorage.getItem("access_token");if(console.log("[useRolePermissions] Token found:",!!e),!e){console.log("[useRolePermissions] No token, using default permissions"),a(e=>({...e,loading:!1}));return}try{a(e=>({...e,loading:!0,error:null}));let e=(await r.api.get("/auth/me/dashboard-role")).data;console.log("[useRolePermissions] API response:",e);let s=e.permissions||[],n=e.enterprise_tier||4,o={dashboardRole:e.dashboard_role||"viewer",systemRole:e.system_role||"Customer",enterpriseRole:e.enterprise_role||"staff",enterpriseTier:n,agentGroups:e.agent_groups||[],permissions:s,dashboardPermissions:e.dashboard_permissions||[],canAssignLeads:e.can_assign_leads||!1,canMoveLeads:e.can_move_leads||!1,canConvertLeads:e.can_convert_leads||!1,canDeleteLeads:e.can_delete_leads||!1,canManageTeam:e.can_manage_team||!1,canViewReports:e.can_view_reports||!1,canManageCampaigns:e.can_manage_campaigns||!1,canManageBilling:e.can_manage_billing||!1,canManageAgentGroups:e.can_manage_agent_groups||!1,isAdmin:e.is_admin||!1,isManager:e.is_manager||!1,isSuperAdmin:e.is_super_admin||!1,loading:!1,error:null,hasPermission:e=>s.includes(e),hasAnyPermission:function(){for(var e=arguments.length,a=Array(e),t=0;t<e;t++)a[t]=arguments[t];return a.some(e=>s.includes(e))},hasAllPermissions:function(){for(var e=arguments.length,a=Array(e),t=0;t<e;t++)a[t]=arguments[t];return a.every(e=>s.includes(e))},hasMinimumTier:e=>n<=e,refresh:t};a(o)}catch(e){console.error("Failed to fetch role permissions:",e),a(a=>({...a,loading:!1,error:e.message||"Failed to fetch permissions"}))}},[]);return(0,s.useEffect)(()=>{t()},[t]),e}},79587:function(e,a,t){t.d(a,{U:function(){return n},d:function(){return o}});var s=t(2265),r=t(71837);function n(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{autoFetch:!0},[a,t]=(0,s.useState)([]),[n,o]=(0,s.useState)([]),[l,i]=(0,s.useState)(!0),[c,u]=(0,s.useState)(null),d=(0,s.useCallback)(async e=>{try{i(!0),u(null);let a={};e&&Object.entries(e).forEach(e=>{let[t,s]=e;null!=s&&""!==s&&("boolean"==typeof s?a[t]=s.toString():a[t]=s)});let s=await r.api.get("/users",{params:a});t(s.data)}catch(e){u(e instanceof Error?e.message:"Failed to fetch users"),console.error("Failed to fetch users:",e)}finally{i(!1)}},[]),g=(0,s.useCallback)(async()=>{try{let e=await r.api.get("/users/pending-invitations");o(e.data)}catch(e){console.error("Failed to fetch invitations:",e)}},[]),f=(0,s.useCallback)(async e=>{try{return(await r.api.get("/users/".concat(e))).data}catch(e){return console.error("Failed to fetch user detail:",e),null}},[]),p=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users",e);return await d(),await g(),{success:!0,message:a.data.message}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to invite user";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[d,g]),m=(0,s.useCallback)(async(e,a)=>{try{let t=await r.api.put("/users/".concat(e),a);return await d(),{success:!0,message:t.data.message}}catch(a){var t,s;let e=a instanceof Error?a.message:"Failed to update user";return{success:!1,error:(null===(s=a.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail)||e}}},[d]),v=(0,s.useCallback)(async e=>{try{let a=await r.api.delete("/users/".concat(e));return await d(),{success:!0,message:a.data.message}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to remove user";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[d]),h=(0,s.useCallback)(async(e,a)=>{try{let t=await r.api.post("/users/".concat(e,"/reset-password"),{new_password:a});return{success:!0,message:t.data.message}}catch(r){var t,s;let e=r instanceof Error?r.message:"Failed to reset password",a=null===(s=r.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail;return{success:!1,error:"object"==typeof a&&(null==a?void 0:a.message)?a.message:"string"==typeof a?a:e}}},[]),b=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/".concat(e,"/ban"),{});return await d(),{success:!0,message:a.data.message}}catch(r){var a,t;let e=r instanceof Error?r.message:"Failed to ban user",s=null===(t=r.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail;return{success:!1,error:"object"==typeof s&&(null==s?void 0:s.message)?s.message:"string"==typeof s?s:e}}},[d]),y=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/".concat(e,"/unban"),{});return await d(),{success:!0,message:a.data.message}}catch(r){var a,t;let e=r instanceof Error?r.message:"Failed to unban user",s=null===(t=r.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail;return{success:!1,error:"object"==typeof s&&(null==s?void 0:s.message)?s.message:"string"==typeof s?s:e}}},[d]),w=(0,s.useCallback)(async e=>{try{let a=await r.api.delete("/users/invitations/".concat(e));return await g(),{success:!0,message:a.data.message}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to cancel invitation";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[g]),k=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/invitations/".concat(e,"/resend"));return await g(),{success:!0,message:a.data.message}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to resend invitation";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[g]),x=(0,s.useCallback)(async()=>{await Promise.all([d(),g()])},[d,g]),C=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/bulk/assign-groups",e);return await d(),a.data}catch(n){var a,t;let s=n instanceof Error?n.message:"Failed to bulk assign groups",r=(null===(t=n.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||s;return{success:!1,total:e.user_ids.length,updated:0,failed:e.user_ids.length,errors:[{user_id:"all",error:r}],message:r}}},[d]),_=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/bulk/assign-skills",e);return await d(),a.data}catch(n){var a,t;let s=n instanceof Error?n.message:"Failed to bulk assign skills",r=(null===(t=n.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||s;return{success:!1,total:e.user_ids.length,updated:0,failed:e.user_ids.length,errors:[{user_id:"all",error:r}],message:r}}},[d]),F=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/bulk/update-status",e);return await d(),a.data}catch(n){var a,t;let s=n instanceof Error?n.message:"Failed to bulk update status",r=(null===(t=n.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||s;return{success:!1,total:e.user_ids.length,updated:0,failed:e.user_ids.length,errors:[{user_id:"all",error:r}],message:r}}},[d]),N=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/users/bulk/update-enterprise-role",e);return await d(),a.data}catch(n){var a,t;let s=n instanceof Error?n.message:"Failed to bulk update enterprise role",r=(null===(t=n.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||s;return{success:!1,total:e.user_ids.length,updated:0,failed:e.user_ids.length,errors:[{user_id:"all",error:r}],message:r}}},[d]),E=(0,s.useCallback)(async()=>{try{return(await r.api.get("/users/admin/overview")).data}catch(e){return console.error("Failed to fetch admin overview:",e),null}},[]);return(0,s.useEffect)(()=>{e.autoFetch&&(d(),g())},[e.autoFetch,d,g]),{users:a,invitations:n,loading:l,error:c,fetchUsers:d,fetchInvitations:g,getUserDetail
1:f,inviteUser:p,updateUser:m,removeUser:v,resetUserPassword:h,banUser:b,unbanUser:y,cancelInvitation:w,resendInvitation:k,refresh:x,bulkAssignGroups:C,bulkAssignSkills:_,bulkUpdateStatus:F,bulkUpdateEnterpriseRole:N,getAdminOverview:E}}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{autoFetch:!0,includePredefined:!0},[a,t]=(0,s.useState)([]),[n,o]=(0,s.useState)([]),[l,i]=(0,s.useState)([]),[c,u]=(0,s.useState)([]),[d,g]=(0,s.useState)(!0),[f,p]=(0,s.useState)(null),m=(0,s.useCallback)(async()=>{try{g(!0),p(null);let a=await r.api.get("/roles",{params:{include_predefined:e.includePredefined}});t(a.data)}catch(e){p(e instanceof Error?e.message:"Failed to fetch roles"),console.error("Failed to fetch roles:",e)}finally{g(!1)}},[e.includePredefined]),v=(0,s.useCallback)(async()=>{try{let e=await r.api.get("/enterprise-roles");o(e.data)}catch(e){console.error("Failed to fetch enterprise roles:",e)}},[]),h=(0,s.useCallback)(async()=>{try{let[e,a]=await Promise.all([r.api.get("/roles/permissions"),r.api.get("/roles/permissions/grouped")]);i(e.data),u(a.data)}catch(e){console.error("Failed to fetch permissions:",e)}},[]),b=(0,s.useCallback)(async e=>{try{return(await r.api.get("/roles/".concat(e))).data}catch(e){return console.error("Failed to fetch role:",e),null}},[]),y=(0,s.useCallback)(async e=>{try{let a=await r.api.post("/roles",e);return await m(),{success:!0,role:a.data}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to create role";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[m]),w=(0,s.useCallback)(async(e,a)=>{try{let t=await r.api.put("/roles/".concat(e),a);return await m(),{success:!0,role:t.data}}catch(a){var t,s;let e=a instanceof Error?a.message:"Failed to update role";return{success:!1,error:(null===(s=a.response)||void 0===s?void 0:null===(t=s.data)||void 0===t?void 0:t.detail)||e}}},[m]),k=(0,s.useCallback)(async e=>{try{return await r.api.delete("/roles/".concat(e)),await m(),{success:!0}}catch(s){var a,t;let e=s instanceof Error?s.message:"Failed to delete role";return{success:!1,error:(null===(t=s.response)||void 0===t?void 0:null===(a=t.data)||void 0===a?void 0:a.detail)||e}}},[m]),x=(0,s.useCallback)(async()=>{await Promise.all([m(),v(),h()])},[m,v,h]);return(0,s.useEffect)(()=>{e.autoFetch&&(m(),v(),h())},[e.autoFetch,m,v,h]),{roles:a,enterpriseRoles:n,permissions:l,permissionCategories:c,loading:d,error:f,fetchRoles:m,fetchEnterpriseRoles:v,fetchPermissions:h,getRole:b,createRole:y,updateRole:w,deleteRole:k,refresh:x}}}}]);

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.