{"version":3,"sources":["../call-control-sdk/lib/hooks/useSDKPermissions.ts"],"sourcesContent":["import { useState, useEffect, useCallback } from \"react\";\r\nimport { sdkStateManager } from \"./sdk-state\";\r\nimport type { SDKEntitlements } from \"../permissions/types\";\r\n\r\nexport interface SDKPermissionsHook {\r\n  permissions: string[];\r\n  menuEntitlements: Array<{ code: string; name: string; enabled: boolean }>;\r\n  isLoaded: boolean;\r\n  hasPermission: (permission: string) => boolean;\r\n  hasAnyPermission: (permissions: string[]) => boolean;\r\n  hasAllPermissions: (permissions: string[]) => boolean;\r\n  hasMenuFeature: (code: string) => boolean;\r\n  isBitEnabled: (category: keyof SDKEntitlements, bitCode: string) => boolean;\r\n}\r\n\r\nexport function useSDKPermissions(): SDKPermissionsHook {\r\n  const [state, setState] = useState(() => sdkStateManager.getState());\r\n\r\n  useEffect(() => {\r\n    const unsubscribe = sdkStateManager.subscribe(() => {\r\n      setState(sdkStateManager.getState());\r\n    });\r\n    return unsubscribe;\r\n  }, []);\r\n\r\n  const hasPermission = useCallback(\r\n    (permission: string) => sdkStateManager.hasPermission(permission),\r\n    // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    [state.userPermissions],\r\n  );\r\n\r\n  const hasAnyPermission = useCallback(\r\n    (permissions: string[]) => sdkStateManager.hasAnyPermission(permissions),\r\n    // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    [state.userPermissions],\r\n  );\r\n\r\n  const hasAllPermissions = useCallback(\r\n    (permissions: string[]) => sdkStateManager.hasAllPermissions(permissions),\r\n    // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    [state.userPermissions],\r\n  );\r\n\r\n  const hasMenuFeature = useCallback(\r\n    (code: string) => sdkStateManager.hasMenuFeature(code),\r\n    // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    [state.menuEntitlements],\r\n  );\r\n\r\n  const isBitEnabled = useCallback(\r\n    (category: keyof SDKEntitlements, bitCode: string) =>\r\n      sdkStateManager.isBitEnabled(category, bitCode),\r\n    // eslint-disable-next-line react-hooks/exhaustive-deps\r\n    [state.sdk],\r\n  );\r\n\r\n  return {\r\n    permissions: state.userPermissions ?? [],\r\n    menuEntitlements: state.menuEntitlements ?? [],\r\n    isLoaded: state.isPermissionsLoaded,\r\n    hasPermission,\r\n    hasAnyPermission,\r\n    hasAllPermissions,\r\n    hasMenuFeature,\r\n    isBitEnabled,\r\n  };\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,UAAU,WAAW,mBAAmB;AAe1C,SAAS,oBAAwC;AAfxD;AAgBE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,MAAM,gBAAgB,SAAS,CAAC;AAEnE,YAAU,MAAM;AACd,UAAM,cAAc,gBAAgB,UAAU,MAAM;AAClD,eAAS,gBAAgB,SAAS,CAAC;AAAA,IACrC,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAgB;AAAA,IACpB,CAAC,eAAuB,gBAAgB,cAAc,UAAU;AAAA;AAAA,IAEhE,CAAC,MAAM,eAAe;AAAA,EACxB;AAEA,QAAM,mBAAmB;AAAA,IACvB,CAAC,gBAA0B,gBAAgB,iBAAiB,WAAW;AAAA;AAAA,IAEvE,CAAC,MAAM,eAAe;AAAA,EACxB;AAEA,QAAM,oBAAoB;AAAA,IACxB,CAAC,gBAA0B,gBAAgB,kBAAkB,WAAW;AAAA;AAAA,IAExE,CAAC,MAAM,eAAe;AAAA,EACxB;AAEA,QAAM,iBAAiB;AAAA,IACrB,CAAC,SAAiB,gBAAgB,eAAe,IAAI;AAAA;AAAA,IAErD,CAAC,MAAM,gBAAgB;AAAA,EACzB;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,UAAiC,YAChC,gBAAgB,aAAa,UAAU,OAAO;AAAA;AAAA,IAEhD,CAAC,MAAM,GAAG;AAAA,EACZ;AAEA,SAAO;AAAA,IACL,cAAa,WAAM,oBAAN,YAAyB,CAAC;AAAA,IACvC,mBAAkB,WAAM,qBAAN,YAA0B,CAAC;AAAA,IAC7C,UAAU,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}