@thunderid/react 1.14.0 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ThunderIDReactClient.d.ts.map +1 -1
- package/dist/ThunderIDReactClient.js +7 -3
- package/dist/ThunderIDReactClient.js.map +1 -1
- package/dist/api/account/getAccessibleOrganizationUnits.d.ts +27 -0
- package/dist/api/account/getAccessibleOrganizationUnits.d.ts.map +1 -0
- package/dist/api/account/getAccessibleOrganizationUnits.js +24 -0
- package/dist/api/account/getAccessibleOrganizationUnits.js.map +1 -0
- package/dist/cjs/ThunderIDReactClient.cjs +7 -3
- package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
- package/dist/cjs/api/account/getAccessibleOrganizationUnits.cjs +26 -0
- package/dist/cjs/api/account/getAccessibleOrganizationUnits.cjs.map +1 -0
- package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs +214 -0
- package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs.map +1 -0
- package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.cjs +184 -0
- package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.cjs.map +1 -0
- package/dist/cjs/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs +139 -0
- package/dist/cjs/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.cjs.map +1 -0
- package/dist/cjs/components/auth/Callback/TokenCallback.cjs +3 -3
- package/dist/cjs/components/auth/Callback/TokenCallback.cjs.map +1 -1
- package/dist/cjs/components/auth/SignIn/SignIn.cjs +49 -44
- package/dist/cjs/components/auth/SignIn/SignIn.cjs.map +1 -1
- package/dist/cjs/components/auth/SignUp/BaseSignUp.cjs +13 -9
- package/dist/cjs/components/auth/SignUp/BaseSignUp.cjs.map +1 -1
- package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs +2 -2
- package/dist/cjs/components/auth/flow/AuthOptionFactory.cjs.map +1 -1
- package/dist/cjs/components/common/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
- package/dist/cjs/components/{admin → management}/AgentCreate/AgentCreate.cjs +8 -7
- package/dist/cjs/components/management/AgentCreate/AgentCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/AgentCreate/BaseAgentCreate.cjs +1 -1
- package/dist/cjs/components/management/AgentCreate/BaseAgentCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/AgentDetails/AgentDetails.cjs +1 -1
- package/dist/cjs/components/management/AgentDetails/AgentDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/AgentDetails/BaseAgentDetails.cjs +1 -1
- package/dist/cjs/components/management/AgentDetails/BaseAgentDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/AgentList/AgentList.cjs +11 -6
- package/dist/cjs/components/management/AgentList/AgentList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/AgentList/BaseAgentList.cjs +1 -1
- package/dist/cjs/components/management/AgentList/BaseAgentList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/ApplicationCreate/ApplicationCreate.cjs +10 -5
- package/dist/cjs/components/management/ApplicationCreate/ApplicationCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.cjs +1 -1
- package/dist/cjs/components/management/ApplicationCreate/BaseApplicationCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/ApplicationDetails/ApplicationDetails.cjs +1 -1
- package/dist/cjs/components/management/ApplicationDetails/ApplicationDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.cjs +1 -1
- package/dist/cjs/components/management/ApplicationDetails/BaseApplicationDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/ApplicationList/ApplicationList.cjs +9 -4
- package/dist/cjs/components/management/ApplicationList/ApplicationList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/ApplicationList/BaseApplicationList.cjs +1 -1
- package/dist/cjs/components/management/ApplicationList/BaseApplicationList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/GroupCreate/BaseGroupCreate.cjs +1 -1
- package/dist/cjs/components/management/GroupCreate/BaseGroupCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/GroupCreate/GroupCreate.cjs +1 -1
- package/dist/cjs/components/management/GroupCreate/GroupCreate.cjs.map +1 -0
- package/dist/cjs/components/management/GroupDetails/BaseGroupDetails.cjs +86 -0
- package/dist/cjs/components/management/GroupDetails/BaseGroupDetails.cjs.map +1 -0
- package/dist/cjs/components/management/GroupDetails/GroupDetails.cjs +60 -0
- package/dist/cjs/components/management/GroupDetails/GroupDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/GroupList/BaseGroupList.cjs +1 -1
- package/dist/cjs/components/management/GroupList/BaseGroupList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/GroupList/GroupList.cjs +1 -1
- package/dist/cjs/components/management/GroupList/GroupList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/GroupMembers/BaseGroupMembers.cjs +1 -1
- package/dist/cjs/components/management/GroupMembers/BaseGroupMembers.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/GroupMembers/GroupMembers.cjs +1 -1
- package/dist/cjs/components/management/GroupMembers/GroupMembers.cjs.map +1 -0
- package/dist/cjs/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.cjs +140 -0
- package/dist/cjs/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.cjs.map +1 -0
- package/dist/cjs/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs +83 -0
- package/dist/cjs/components/management/OrganizationUnitCreate/OrganizationUnitCreate.cjs.map +1 -0
- package/dist/cjs/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.cjs +276 -0
- package/dist/cjs/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.cjs.map +1 -0
- package/dist/cjs/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs +142 -0
- package/dist/cjs/components/management/OrganizationUnitDetails/OrganizationUnitDetails.cjs.map +1 -0
- package/dist/cjs/components/management/OrganizationUnitList/BaseOrganizationUnitList.cjs +78 -0
- package/dist/cjs/components/management/OrganizationUnitList/BaseOrganizationUnitList.cjs.map +1 -0
- package/dist/cjs/components/management/OrganizationUnitList/OrganizationUnitList.cjs +69 -0
- package/dist/cjs/components/management/OrganizationUnitList/OrganizationUnitList.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectCreate/BaseProjectCreate.cjs +116 -0
- package/dist/cjs/components/management/ProjectCreate/BaseProjectCreate.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectCreate/ProjectCreate.cjs +43 -0
- package/dist/cjs/components/management/ProjectCreate/ProjectCreate.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectDetails/BaseProjectDetails.cjs +172 -0
- package/dist/cjs/components/management/ProjectDetails/BaseProjectDetails.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectDetails/ProjectDetails.cjs +68 -0
- package/dist/cjs/components/management/ProjectDetails/ProjectDetails.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectList/BaseProjectList.cjs +78 -0
- package/dist/cjs/components/management/ProjectList/BaseProjectList.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectList/ProjectList.cjs +51 -0
- package/dist/cjs/components/management/ProjectList/ProjectList.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectSwitcher/BaseProjectSwitcher.cjs +58 -0
- package/dist/cjs/components/management/ProjectSwitcher/BaseProjectSwitcher.cjs.map +1 -0
- package/dist/cjs/components/management/ProjectSwitcher/ProjectSwitcher.cjs +72 -0
- package/dist/cjs/components/management/ProjectSwitcher/ProjectSwitcher.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/RoleAssignments/BaseRoleAssignments.cjs +1 -1
- package/dist/cjs/components/management/RoleAssignments/BaseRoleAssignments.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/RoleAssignments/RoleAssignments.cjs +1 -1
- package/dist/cjs/components/management/RoleAssignments/RoleAssignments.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/RoleCreate/BaseRoleCreate.cjs +1 -1
- package/dist/cjs/components/management/RoleCreate/BaseRoleCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/RoleCreate/RoleCreate.cjs +1 -1
- package/dist/cjs/components/management/RoleCreate/RoleCreate.cjs.map +1 -0
- package/dist/cjs/components/management/RoleDetails/BaseRoleDetails.cjs +87 -0
- package/dist/cjs/components/management/RoleDetails/BaseRoleDetails.cjs.map +1 -0
- package/dist/cjs/components/management/RoleDetails/RoleDetails.cjs +68 -0
- package/dist/cjs/components/management/RoleDetails/RoleDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/RoleList/BaseRoleList.cjs +1 -1
- package/dist/cjs/components/management/RoleList/BaseRoleList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/RoleList/RoleList.cjs +1 -1
- package/dist/cjs/components/management/RoleList/RoleList.cjs.map +1 -0
- package/dist/cjs/components/management/RolePermissions/BaseRolePermissions.cjs +181 -0
- package/dist/cjs/components/management/RolePermissions/BaseRolePermissions.cjs.map +1 -0
- package/dist/cjs/components/management/RolePermissions/RolePermissions.cjs +112 -0
- package/dist/cjs/components/management/RolePermissions/RolePermissions.cjs.map +1 -0
- package/dist/cjs/components/management/SharingPolicies/BaseSharingPolicies.cjs +308 -0
- package/dist/cjs/components/management/SharingPolicies/BaseSharingPolicies.cjs.map +1 -0
- package/dist/cjs/components/management/SharingPolicies/SharingPolicies.cjs +126 -0
- package/dist/cjs/components/management/SharingPolicies/SharingPolicies.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserCreate/BaseUserCreate.cjs +1 -1
- package/dist/cjs/components/management/UserCreate/BaseUserCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserCreate/UserCreate.cjs +1 -1
- package/dist/cjs/components/management/UserCreate/UserCreate.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserCreate/userCreateFields.cjs +1 -1
- package/dist/cjs/components/management/UserCreate/userCreateFields.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserDetails/BaseUserDetails.cjs +1 -1
- package/dist/cjs/components/management/UserDetails/BaseUserDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserDetails/UserDetails.cjs +1 -1
- package/dist/cjs/components/management/UserDetails/UserDetails.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserList/BaseUserList.cjs +1 -1
- package/dist/cjs/components/management/UserList/BaseUserList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/UserList/UserList.cjs +1 -1
- package/dist/cjs/components/management/UserList/UserList.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/AccountLifecycleParts.cjs +1 -1
- package/dist/cjs/components/management/shared/AccountLifecycleParts.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/AdminParts.cjs +1 -1
- package/dist/cjs/components/management/shared/AdminParts.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/AdminParts.styles.cjs +1 -1
- package/dist/cjs/components/management/shared/AdminParts.styles.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/AdminSearch.cjs +1 -1
- package/dist/cjs/components/management/shared/AdminSearch.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/AdminSection.cjs +1 -1
- package/dist/cjs/components/management/shared/AdminSection.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/AdminSection.styles.cjs +1 -1
- package/dist/cjs/components/management/shared/AdminSection.styles.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/ApplicationFormFields.cjs +1 -1
- package/dist/cjs/components/management/shared/ApplicationFormFields.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/ClientSecretNotice.cjs +1 -1
- package/dist/cjs/components/management/shared/ClientSecretNotice.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/IdentityPicker.cjs +1 -1
- package/dist/cjs/components/management/shared/IdentityPicker.cjs.map +1 -0
- package/dist/cjs/components/management/shared/formatTimestamp.cjs +18 -0
- package/dist/cjs/components/management/shared/formatTimestamp.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/useAdminPartStyles.cjs +1 -1
- package/dist/cjs/components/management/shared/useAdminPartStyles.cjs.map +1 -0
- package/dist/cjs/components/{admin → management}/shared/useDefaultOuId.cjs +1 -1
- package/dist/cjs/components/management/shared/useDefaultOuId.cjs.map +1 -0
- package/dist/cjs/components/management/shared/useProjectPlacement.cjs +23 -0
- package/dist/cjs/components/management/shared/useProjectPlacement.cjs.map +1 -0
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +5 -0
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +27 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/useCurrentProjectState.cjs +33 -0
- package/dist/cjs/contexts/ThunderID/useCurrentProjectState.cjs.map +1 -0
- package/dist/cjs/hooks/management/useManagementEndpoint.cjs.map +1 -1
- package/dist/cjs/index.cjs +377 -33
- package/dist/cjs/utils/flowTransformer.cjs +9 -0
- package/dist/cjs/utils/flowTransformer.cjs.map +1 -1
- package/dist/cjs/utils/getOrganizationUnitSwitchErrorKey.cjs +24 -0
- package/dist/cjs/utils/getOrganizationUnitSwitchErrorKey.cjs.map +1 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.d.ts +85 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.d.ts.map +1 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.js +209 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.js.map +1 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.d.ts +11 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.d.ts.map +1 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.js +184 -0
- package/dist/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.styles.js.map +1 -0
- package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts +54 -0
- package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.d.ts.map +1 -0
- package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js +135 -0
- package/dist/components/account/OrganizationUnitSwitcher/OrganizationUnitSwitcher.js.map +1 -0
- package/dist/components/auth/Callback/TokenCallback.js +3 -3
- package/dist/components/auth/Callback/TokenCallback.js.map +1 -1
- package/dist/components/auth/SignIn/SignIn.d.ts +5 -0
- package/dist/components/auth/SignIn/SignIn.d.ts.map +1 -1
- package/dist/components/auth/SignIn/SignIn.js +51 -46
- package/dist/components/auth/SignIn/SignIn.js.map +1 -1
- package/dist/components/auth/SignUp/BaseSignUp.d.ts.map +1 -1
- package/dist/components/auth/SignUp/BaseSignUp.js +14 -10
- package/dist/components/auth/SignUp/BaseSignUp.js.map +1 -1
- package/dist/components/auth/flow/AuthOptionFactory.js +2 -2
- package/dist/components/auth/flow/AuthOptionFactory.js.map +1 -1
- package/dist/components/common/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
- package/dist/components/{admin → management}/AgentCreate/AgentCreate.d.ts +2 -1
- package/dist/components/management/AgentCreate/AgentCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/AgentCreate/AgentCreate.js +8 -7
- package/dist/components/management/AgentCreate/AgentCreate.js.map +1 -0
- package/dist/components/management/AgentCreate/BaseAgentCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/AgentCreate/BaseAgentCreate.js +1 -1
- package/dist/components/management/AgentCreate/BaseAgentCreate.js.map +1 -0
- package/dist/components/management/AgentDetails/AgentDetails.d.ts.map +1 -0
- package/dist/components/{admin → management}/AgentDetails/AgentDetails.js +1 -1
- package/dist/components/management/AgentDetails/AgentDetails.js.map +1 -0
- package/dist/components/management/AgentDetails/BaseAgentDetails.d.ts.map +1 -0
- package/dist/components/{admin → management}/AgentDetails/BaseAgentDetails.js +1 -1
- package/dist/components/management/AgentDetails/BaseAgentDetails.js.map +1 -0
- package/dist/components/{admin → management}/AgentList/AgentList.d.ts +7 -1
- package/dist/components/management/AgentList/AgentList.d.ts.map +1 -0
- package/dist/components/{admin → management}/AgentList/AgentList.js +11 -6
- package/dist/components/management/AgentList/AgentList.js.map +1 -0
- package/dist/components/management/AgentList/BaseAgentList.d.ts.map +1 -0
- package/dist/components/{admin → management}/AgentList/BaseAgentList.js +1 -1
- package/dist/components/management/AgentList/BaseAgentList.js.map +1 -0
- package/dist/components/{admin → management}/ApplicationCreate/ApplicationCreate.d.ts +2 -1
- package/dist/components/management/ApplicationCreate/ApplicationCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/ApplicationCreate/ApplicationCreate.js +10 -5
- package/dist/components/management/ApplicationCreate/ApplicationCreate.js.map +1 -0
- package/dist/components/management/ApplicationCreate/BaseApplicationCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.js +1 -1
- package/dist/components/management/ApplicationCreate/BaseApplicationCreate.js.map +1 -0
- package/dist/components/management/ApplicationDetails/ApplicationDetails.d.ts.map +1 -0
- package/dist/components/{admin → management}/ApplicationDetails/ApplicationDetails.js +1 -1
- package/dist/components/management/ApplicationDetails/ApplicationDetails.js.map +1 -0
- package/dist/components/management/ApplicationDetails/BaseApplicationDetails.d.ts.map +1 -0
- package/dist/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.js +1 -1
- package/dist/components/management/ApplicationDetails/BaseApplicationDetails.js.map +1 -0
- package/dist/components/{admin → management}/ApplicationList/ApplicationList.d.ts +7 -1
- package/dist/components/management/ApplicationList/ApplicationList.d.ts.map +1 -0
- package/dist/components/{admin → management}/ApplicationList/ApplicationList.js +9 -4
- package/dist/components/management/ApplicationList/ApplicationList.js.map +1 -0
- package/dist/components/management/ApplicationList/BaseApplicationList.d.ts.map +1 -0
- package/dist/components/{admin → management}/ApplicationList/BaseApplicationList.js +1 -1
- package/dist/components/management/ApplicationList/BaseApplicationList.js.map +1 -0
- package/dist/components/management/GroupCreate/BaseGroupCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/GroupCreate/BaseGroupCreate.js +1 -1
- package/dist/components/management/GroupCreate/BaseGroupCreate.js.map +1 -0
- package/dist/components/management/GroupCreate/GroupCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/GroupCreate/GroupCreate.js +1 -1
- package/dist/components/management/GroupCreate/GroupCreate.js.map +1 -0
- package/dist/components/management/GroupDetails/BaseGroupDetails.d.ts +47 -0
- package/dist/components/management/GroupDetails/BaseGroupDetails.d.ts.map +1 -0
- package/dist/components/management/GroupDetails/BaseGroupDetails.js +84 -0
- package/dist/components/management/GroupDetails/BaseGroupDetails.js.map +1 -0
- package/dist/components/management/GroupDetails/GroupDetails.d.ts +37 -0
- package/dist/components/management/GroupDetails/GroupDetails.d.ts.map +1 -0
- package/dist/components/management/GroupDetails/GroupDetails.js +57 -0
- package/dist/components/management/GroupDetails/GroupDetails.js.map +1 -0
- package/dist/components/management/GroupList/BaseGroupList.d.ts.map +1 -0
- package/dist/components/{admin → management}/GroupList/BaseGroupList.js +1 -1
- package/dist/components/management/GroupList/BaseGroupList.js.map +1 -0
- package/dist/components/management/GroupList/GroupList.d.ts.map +1 -0
- package/dist/components/{admin → management}/GroupList/GroupList.js +1 -1
- package/dist/components/management/GroupList/GroupList.js.map +1 -0
- package/dist/components/management/GroupMembers/BaseGroupMembers.d.ts.map +1 -0
- package/dist/components/{admin → management}/GroupMembers/BaseGroupMembers.js +1 -1
- package/dist/components/management/GroupMembers/BaseGroupMembers.js.map +1 -0
- package/dist/components/management/GroupMembers/GroupMembers.d.ts.map +1 -0
- package/dist/components/{admin → management}/GroupMembers/GroupMembers.js +1 -1
- package/dist/components/management/GroupMembers/GroupMembers.js.map +1 -0
- package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.d.ts +85 -0
- package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.d.ts.map +1 -0
- package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.js +137 -0
- package/dist/components/management/OrganizationUnitCreate/BaseOrganizationUnitCreate.js.map +1 -0
- package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts +21 -0
- package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.d.ts.map +1 -0
- package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js +79 -0
- package/dist/components/management/OrganizationUnitCreate/OrganizationUnitCreate.js.map +1 -0
- package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.d.ts +105 -0
- package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.d.ts.map +1 -0
- package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.js +273 -0
- package/dist/components/management/OrganizationUnitDetails/BaseOrganizationUnitDetails.js.map +1 -0
- package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts +42 -0
- package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.d.ts.map +1 -0
- package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js +139 -0
- package/dist/components/management/OrganizationUnitDetails/OrganizationUnitDetails.js.map +1 -0
- package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.d.ts +54 -0
- package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.d.ts.map +1 -0
- package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.js +76 -0
- package/dist/components/management/OrganizationUnitList/BaseOrganizationUnitList.js.map +1 -0
- package/dist/components/management/OrganizationUnitList/OrganizationUnitList.d.ts +19 -0
- package/dist/components/management/OrganizationUnitList/OrganizationUnitList.d.ts.map +1 -0
- package/dist/components/management/OrganizationUnitList/OrganizationUnitList.js +65 -0
- package/dist/components/management/OrganizationUnitList/OrganizationUnitList.js.map +1 -0
- package/dist/components/management/ProjectCreate/BaseProjectCreate.d.ts +60 -0
- package/dist/components/management/ProjectCreate/BaseProjectCreate.d.ts.map +1 -0
- package/dist/components/management/ProjectCreate/BaseProjectCreate.js +113 -0
- package/dist/components/management/ProjectCreate/BaseProjectCreate.js.map +1 -0
- package/dist/components/management/ProjectCreate/ProjectCreate.d.ts +20 -0
- package/dist/components/management/ProjectCreate/ProjectCreate.d.ts.map +1 -0
- package/dist/components/management/ProjectCreate/ProjectCreate.js +40 -0
- package/dist/components/management/ProjectCreate/ProjectCreate.js.map +1 -0
- package/dist/components/management/ProjectDetails/BaseProjectDetails.d.ts +60 -0
- package/dist/components/management/ProjectDetails/BaseProjectDetails.d.ts.map +1 -0
- package/dist/components/management/ProjectDetails/BaseProjectDetails.js +169 -0
- package/dist/components/management/ProjectDetails/BaseProjectDetails.js.map +1 -0
- package/dist/components/management/ProjectDetails/ProjectDetails.d.ts +36 -0
- package/dist/components/management/ProjectDetails/ProjectDetails.d.ts.map +1 -0
- package/dist/components/management/ProjectDetails/ProjectDetails.js +65 -0
- package/dist/components/management/ProjectDetails/ProjectDetails.js.map +1 -0
- package/dist/components/management/ProjectList/BaseProjectList.d.ts +53 -0
- package/dist/components/management/ProjectList/BaseProjectList.d.ts.map +1 -0
- package/dist/components/management/ProjectList/BaseProjectList.js +76 -0
- package/dist/components/management/ProjectList/BaseProjectList.js.map +1 -0
- package/dist/components/management/ProjectList/ProjectList.d.ts +14 -0
- package/dist/components/management/ProjectList/ProjectList.d.ts.map +1 -0
- package/dist/components/management/ProjectList/ProjectList.js +47 -0
- package/dist/components/management/ProjectList/ProjectList.js.map +1 -0
- package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.d.ts +69 -0
- package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.d.ts.map +1 -0
- package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.js +55 -0
- package/dist/components/management/ProjectSwitcher/BaseProjectSwitcher.js.map +1 -0
- package/dist/components/management/ProjectSwitcher/ProjectSwitcher.d.ts +25 -0
- package/dist/components/management/ProjectSwitcher/ProjectSwitcher.d.ts.map +1 -0
- package/dist/components/management/ProjectSwitcher/ProjectSwitcher.js +68 -0
- package/dist/components/management/ProjectSwitcher/ProjectSwitcher.js.map +1 -0
- package/dist/components/management/RoleAssignments/BaseRoleAssignments.d.ts.map +1 -0
- package/dist/components/{admin → management}/RoleAssignments/BaseRoleAssignments.js +1 -1
- package/dist/components/management/RoleAssignments/BaseRoleAssignments.js.map +1 -0
- package/dist/components/management/RoleAssignments/RoleAssignments.d.ts.map +1 -0
- package/dist/components/{admin → management}/RoleAssignments/RoleAssignments.js +1 -1
- package/dist/components/management/RoleAssignments/RoleAssignments.js.map +1 -0
- package/dist/components/management/RoleCreate/BaseRoleCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/RoleCreate/BaseRoleCreate.js +1 -1
- package/dist/components/management/RoleCreate/BaseRoleCreate.js.map +1 -0
- package/dist/components/management/RoleCreate/RoleCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/RoleCreate/RoleCreate.js +1 -1
- package/dist/components/management/RoleCreate/RoleCreate.js.map +1 -0
- package/dist/components/management/RoleDetails/BaseRoleDetails.d.ts +51 -0
- package/dist/components/management/RoleDetails/BaseRoleDetails.d.ts.map +1 -0
- package/dist/components/management/RoleDetails/BaseRoleDetails.js +85 -0
- package/dist/components/management/RoleDetails/BaseRoleDetails.js.map +1 -0
- package/dist/components/management/RoleDetails/RoleDetails.d.ts +39 -0
- package/dist/components/management/RoleDetails/RoleDetails.d.ts.map +1 -0
- package/dist/components/management/RoleDetails/RoleDetails.js +65 -0
- package/dist/components/management/RoleDetails/RoleDetails.js.map +1 -0
- package/dist/components/management/RoleList/BaseRoleList.d.ts.map +1 -0
- package/dist/components/{admin → management}/RoleList/BaseRoleList.js +1 -1
- package/dist/components/management/RoleList/BaseRoleList.js.map +1 -0
- package/dist/components/management/RoleList/RoleList.d.ts.map +1 -0
- package/dist/components/{admin → management}/RoleList/RoleList.js +1 -1
- package/dist/components/management/RoleList/RoleList.js.map +1 -0
- package/dist/components/management/RolePermissions/BaseRolePermissions.d.ts +104 -0
- package/dist/components/management/RolePermissions/BaseRolePermissions.d.ts.map +1 -0
- package/dist/components/management/RolePermissions/BaseRolePermissions.js +178 -0
- package/dist/components/management/RolePermissions/BaseRolePermissions.js.map +1 -0
- package/dist/components/management/RolePermissions/RolePermissions.d.ts +29 -0
- package/dist/components/management/RolePermissions/RolePermissions.d.ts.map +1 -0
- package/dist/components/management/RolePermissions/RolePermissions.js +108 -0
- package/dist/components/management/RolePermissions/RolePermissions.js.map +1 -0
- package/dist/components/management/SharingPolicies/BaseSharingPolicies.d.ts +124 -0
- package/dist/components/management/SharingPolicies/BaseSharingPolicies.d.ts.map +1 -0
- package/dist/components/management/SharingPolicies/BaseSharingPolicies.js +304 -0
- package/dist/components/management/SharingPolicies/BaseSharingPolicies.js.map +1 -0
- package/dist/components/management/SharingPolicies/SharingPolicies.d.ts +36 -0
- package/dist/components/management/SharingPolicies/SharingPolicies.d.ts.map +1 -0
- package/dist/components/management/SharingPolicies/SharingPolicies.js +122 -0
- package/dist/components/management/SharingPolicies/SharingPolicies.js.map +1 -0
- package/dist/components/management/UserCreate/BaseUserCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserCreate/BaseUserCreate.js +1 -1
- package/dist/components/management/UserCreate/BaseUserCreate.js.map +1 -0
- package/dist/components/management/UserCreate/UserCreate.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserCreate/UserCreate.js +1 -1
- package/dist/components/management/UserCreate/UserCreate.js.map +1 -0
- package/dist/components/management/UserCreate/userCreateFields.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserCreate/userCreateFields.js +1 -1
- package/dist/components/management/UserCreate/userCreateFields.js.map +1 -0
- package/dist/components/management/UserDetails/BaseUserDetails.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserDetails/BaseUserDetails.js +1 -1
- package/dist/components/management/UserDetails/BaseUserDetails.js.map +1 -0
- package/dist/components/management/UserDetails/UserDetails.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserDetails/UserDetails.js +1 -1
- package/dist/components/management/UserDetails/UserDetails.js.map +1 -0
- package/dist/components/management/UserList/BaseUserList.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserList/BaseUserList.js +1 -1
- package/dist/components/management/UserList/BaseUserList.js.map +1 -0
- package/dist/components/management/UserList/UserList.d.ts.map +1 -0
- package/dist/components/{admin → management}/UserList/UserList.js +1 -1
- package/dist/components/management/UserList/UserList.js.map +1 -0
- package/dist/components/management/shared/AccountLifecycleParts.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/AccountLifecycleParts.js +1 -1
- package/dist/components/management/shared/AccountLifecycleParts.js.map +1 -0
- package/dist/components/management/shared/AdminListRenderProps.d.ts.map +1 -0
- package/dist/components/management/shared/AdminParts.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/AdminParts.js +1 -1
- package/dist/components/management/shared/AdminParts.js.map +1 -0
- package/dist/components/management/shared/AdminParts.styles.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/AdminParts.styles.js +1 -1
- package/dist/components/management/shared/AdminParts.styles.js.map +1 -0
- package/dist/components/management/shared/AdminSearch.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/AdminSearch.js +1 -1
- package/dist/components/management/shared/AdminSearch.js.map +1 -0
- package/dist/components/management/shared/AdminSection.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/AdminSection.js +1 -1
- package/dist/components/management/shared/AdminSection.js.map +1 -0
- package/dist/components/management/shared/AdminSection.styles.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/AdminSection.styles.js +1 -1
- package/dist/components/management/shared/AdminSection.styles.js.map +1 -0
- package/dist/components/management/shared/ApplicationFormFields.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/ApplicationFormFields.js +1 -1
- package/dist/components/management/shared/ApplicationFormFields.js.map +1 -0
- package/dist/components/management/shared/ClientSecretNotice.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/ClientSecretNotice.js +1 -1
- package/dist/components/management/shared/ClientSecretNotice.js.map +1 -0
- package/dist/components/management/shared/IdentityPicker.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/IdentityPicker.js +1 -1
- package/dist/components/management/shared/IdentityPicker.js.map +1 -0
- package/dist/components/management/shared/formatTimestamp.d.ts +9 -0
- package/dist/components/management/shared/formatTimestamp.d.ts.map +1 -0
- package/dist/components/management/shared/formatTimestamp.js +17 -0
- package/dist/components/management/shared/formatTimestamp.js.map +1 -0
- package/dist/components/management/shared/useAdminPartStyles.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/useAdminPartStyles.js +1 -1
- package/dist/components/management/shared/useAdminPartStyles.js.map +1 -0
- package/dist/components/management/shared/useDefaultOuId.d.ts.map +1 -0
- package/dist/components/{admin → management}/shared/useDefaultOuId.js +1 -1
- package/dist/components/management/shared/useDefaultOuId.js.map +1 -0
- package/dist/components/management/shared/useProjectPlacement.d.ts +26 -0
- package/dist/components/management/shared/useProjectPlacement.d.ts.map +1 -0
- package/dist/components/management/shared/useProjectPlacement.js +23 -0
- package/dist/components/management/shared/useProjectPlacement.js.map +1 -0
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts +27 -1
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.js +5 -0
- package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.js +28 -2
- package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
- package/dist/contexts/ThunderID/useCurrentProjectState.d.ts +26 -0
- package/dist/contexts/ThunderID/useCurrentProjectState.d.ts.map +1 -0
- package/dist/contexts/ThunderID/useCurrentProjectState.js +30 -0
- package/dist/contexts/ThunderID/useCurrentProjectState.js.map +1 -0
- package/dist/hooks/management/useManagementEndpoint.d.ts +1 -1
- package/dist/hooks/management/useManagementEndpoint.d.ts.map +1 -1
- package/dist/hooks/management/useManagementEndpoint.js.map +1 -1
- package/dist/index.d.ts +120 -69
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -34
- package/dist/utils/flowTransformer.d.ts +7 -0
- package/dist/utils/flowTransformer.d.ts.map +1 -1
- package/dist/utils/flowTransformer.js +9 -1
- package/dist/utils/flowTransformer.js.map +1 -1
- package/dist/utils/getOrganizationUnitSwitchErrorKey.d.ts +11 -0
- package/dist/utils/getOrganizationUnitSwitchErrorKey.d.ts.map +1 -0
- package/dist/utils/getOrganizationUnitSwitchErrorKey.js +22 -0
- package/dist/utils/getOrganizationUnitSwitchErrorKey.js.map +1 -0
- package/package.json +2 -2
- package/dist/cjs/components/admin/AgentCreate/AgentCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/AgentCreate/BaseAgentCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs.map +0 -1
- package/dist/cjs/components/admin/AgentDetails/BaseAgentDetails.cjs.map +0 -1
- package/dist/cjs/components/admin/AgentList/AgentList.cjs.map +0 -1
- package/dist/cjs/components/admin/AgentList/BaseAgentList.cjs.map +0 -1
- package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs.map +0 -1
- package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs.map +0 -1
- package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs.map +0 -1
- package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs.map +0 -1
- package/dist/cjs/components/admin/GroupCreate/BaseGroupCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/GroupList/BaseGroupList.cjs.map +0 -1
- package/dist/cjs/components/admin/GroupList/GroupList.cjs.map +0 -1
- package/dist/cjs/components/admin/GroupMembers/BaseGroupMembers.cjs.map +0 -1
- package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs.map +0 -1
- package/dist/cjs/components/admin/RoleAssignments/BaseRoleAssignments.cjs.map +0 -1
- package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs.map +0 -1
- package/dist/cjs/components/admin/RoleCreate/BaseRoleCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/RoleList/BaseRoleList.cjs.map +0 -1
- package/dist/cjs/components/admin/RoleList/RoleList.cjs.map +0 -1
- package/dist/cjs/components/admin/RolePermissions/BaseRolePermissions.cjs +0 -69
- package/dist/cjs/components/admin/RolePermissions/BaseRolePermissions.cjs.map +0 -1
- package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs +0 -40
- package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs.map +0 -1
- package/dist/cjs/components/admin/UserCreate/BaseUserCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/UserCreate/UserCreate.cjs.map +0 -1
- package/dist/cjs/components/admin/UserCreate/userCreateFields.cjs.map +0 -1
- package/dist/cjs/components/admin/UserDetails/BaseUserDetails.cjs.map +0 -1
- package/dist/cjs/components/admin/UserDetails/UserDetails.cjs.map +0 -1
- package/dist/cjs/components/admin/UserList/BaseUserList.cjs.map +0 -1
- package/dist/cjs/components/admin/UserList/UserList.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/AccountLifecycleParts.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/AdminParts.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/AdminParts.styles.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/AdminSearch.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/AdminSection.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/AdminSection.styles.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/IdentityPicker.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/useAdminPartStyles.cjs.map +0 -1
- package/dist/cjs/components/admin/shared/useDefaultOuId.cjs.map +0 -1
- package/dist/components/admin/AgentCreate/AgentCreate.d.ts.map +0 -1
- package/dist/components/admin/AgentCreate/AgentCreate.js.map +0 -1
- package/dist/components/admin/AgentCreate/BaseAgentCreate.d.ts.map +0 -1
- package/dist/components/admin/AgentCreate/BaseAgentCreate.js.map +0 -1
- package/dist/components/admin/AgentDetails/AgentDetails.d.ts.map +0 -1
- package/dist/components/admin/AgentDetails/AgentDetails.js.map +0 -1
- package/dist/components/admin/AgentDetails/BaseAgentDetails.d.ts.map +0 -1
- package/dist/components/admin/AgentDetails/BaseAgentDetails.js.map +0 -1
- package/dist/components/admin/AgentList/AgentList.d.ts.map +0 -1
- package/dist/components/admin/AgentList/AgentList.js.map +0 -1
- package/dist/components/admin/AgentList/BaseAgentList.d.ts.map +0 -1
- package/dist/components/admin/AgentList/BaseAgentList.js.map +0 -1
- package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts.map +0 -1
- package/dist/components/admin/ApplicationCreate/ApplicationCreate.js.map +0 -1
- package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts.map +0 -1
- package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js.map +0 -1
- package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts.map +0 -1
- package/dist/components/admin/ApplicationDetails/ApplicationDetails.js.map +0 -1
- package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts.map +0 -1
- package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js.map +0 -1
- package/dist/components/admin/ApplicationList/ApplicationList.d.ts.map +0 -1
- package/dist/components/admin/ApplicationList/ApplicationList.js.map +0 -1
- package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts.map +0 -1
- package/dist/components/admin/ApplicationList/BaseApplicationList.js.map +0 -1
- package/dist/components/admin/GroupCreate/BaseGroupCreate.d.ts.map +0 -1
- package/dist/components/admin/GroupCreate/BaseGroupCreate.js.map +0 -1
- package/dist/components/admin/GroupCreate/GroupCreate.d.ts.map +0 -1
- package/dist/components/admin/GroupCreate/GroupCreate.js.map +0 -1
- package/dist/components/admin/GroupList/BaseGroupList.d.ts.map +0 -1
- package/dist/components/admin/GroupList/BaseGroupList.js.map +0 -1
- package/dist/components/admin/GroupList/GroupList.d.ts.map +0 -1
- package/dist/components/admin/GroupList/GroupList.js.map +0 -1
- package/dist/components/admin/GroupMembers/BaseGroupMembers.d.ts.map +0 -1
- package/dist/components/admin/GroupMembers/BaseGroupMembers.js.map +0 -1
- package/dist/components/admin/GroupMembers/GroupMembers.d.ts.map +0 -1
- package/dist/components/admin/GroupMembers/GroupMembers.js.map +0 -1
- package/dist/components/admin/RoleAssignments/BaseRoleAssignments.d.ts.map +0 -1
- package/dist/components/admin/RoleAssignments/BaseRoleAssignments.js.map +0 -1
- package/dist/components/admin/RoleAssignments/RoleAssignments.d.ts.map +0 -1
- package/dist/components/admin/RoleAssignments/RoleAssignments.js.map +0 -1
- package/dist/components/admin/RoleCreate/BaseRoleCreate.d.ts.map +0 -1
- package/dist/components/admin/RoleCreate/BaseRoleCreate.js.map +0 -1
- package/dist/components/admin/RoleCreate/RoleCreate.d.ts.map +0 -1
- package/dist/components/admin/RoleCreate/RoleCreate.js.map +0 -1
- package/dist/components/admin/RoleList/BaseRoleList.d.ts.map +0 -1
- package/dist/components/admin/RoleList/BaseRoleList.js.map +0 -1
- package/dist/components/admin/RoleList/RoleList.d.ts.map +0 -1
- package/dist/components/admin/RoleList/RoleList.js.map +0 -1
- package/dist/components/admin/RolePermissions/BaseRolePermissions.d.ts +0 -42
- package/dist/components/admin/RolePermissions/BaseRolePermissions.d.ts.map +0 -1
- package/dist/components/admin/RolePermissions/BaseRolePermissions.js +0 -67
- package/dist/components/admin/RolePermissions/BaseRolePermissions.js.map +0 -1
- package/dist/components/admin/RolePermissions/RolePermissions.d.ts +0 -16
- package/dist/components/admin/RolePermissions/RolePermissions.d.ts.map +0 -1
- package/dist/components/admin/RolePermissions/RolePermissions.js +0 -37
- package/dist/components/admin/RolePermissions/RolePermissions.js.map +0 -1
- package/dist/components/admin/UserCreate/BaseUserCreate.d.ts.map +0 -1
- package/dist/components/admin/UserCreate/BaseUserCreate.js.map +0 -1
- package/dist/components/admin/UserCreate/UserCreate.d.ts.map +0 -1
- package/dist/components/admin/UserCreate/UserCreate.js.map +0 -1
- package/dist/components/admin/UserCreate/userCreateFields.d.ts.map +0 -1
- package/dist/components/admin/UserCreate/userCreateFields.js.map +0 -1
- package/dist/components/admin/UserDetails/BaseUserDetails.d.ts.map +0 -1
- package/dist/components/admin/UserDetails/BaseUserDetails.js.map +0 -1
- package/dist/components/admin/UserDetails/UserDetails.d.ts.map +0 -1
- package/dist/components/admin/UserDetails/UserDetails.js.map +0 -1
- package/dist/components/admin/UserList/BaseUserList.d.ts.map +0 -1
- package/dist/components/admin/UserList/BaseUserList.js.map +0 -1
- package/dist/components/admin/UserList/UserList.d.ts.map +0 -1
- package/dist/components/admin/UserList/UserList.js.map +0 -1
- package/dist/components/admin/shared/AccountLifecycleParts.d.ts.map +0 -1
- package/dist/components/admin/shared/AccountLifecycleParts.js.map +0 -1
- package/dist/components/admin/shared/AdminListRenderProps.d.ts.map +0 -1
- package/dist/components/admin/shared/AdminParts.d.ts.map +0 -1
- package/dist/components/admin/shared/AdminParts.js.map +0 -1
- package/dist/components/admin/shared/AdminParts.styles.d.ts.map +0 -1
- package/dist/components/admin/shared/AdminParts.styles.js.map +0 -1
- package/dist/components/admin/shared/AdminSearch.d.ts.map +0 -1
- package/dist/components/admin/shared/AdminSearch.js.map +0 -1
- package/dist/components/admin/shared/AdminSection.d.ts.map +0 -1
- package/dist/components/admin/shared/AdminSection.js.map +0 -1
- package/dist/components/admin/shared/AdminSection.styles.d.ts.map +0 -1
- package/dist/components/admin/shared/AdminSection.styles.js.map +0 -1
- package/dist/components/admin/shared/ApplicationFormFields.d.ts.map +0 -1
- package/dist/components/admin/shared/ApplicationFormFields.js.map +0 -1
- package/dist/components/admin/shared/ClientSecretNotice.d.ts.map +0 -1
- package/dist/components/admin/shared/ClientSecretNotice.js.map +0 -1
- package/dist/components/admin/shared/IdentityPicker.d.ts.map +0 -1
- package/dist/components/admin/shared/IdentityPicker.js.map +0 -1
- package/dist/components/admin/shared/useAdminPartStyles.d.ts.map +0 -1
- package/dist/components/admin/shared/useAdminPartStyles.js.map +0 -1
- package/dist/components/admin/shared/useDefaultOuId.d.ts.map +0 -1
- package/dist/components/admin/shared/useDefaultOuId.js.map +0 -1
- /package/dist/components/{admin → management}/AgentCreate/BaseAgentCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/AgentDetails/AgentDetails.d.ts +0 -0
- /package/dist/components/{admin → management}/AgentDetails/BaseAgentDetails.d.ts +0 -0
- /package/dist/components/{admin → management}/AgentList/BaseAgentList.d.ts +0 -0
- /package/dist/components/{admin → management}/ApplicationCreate/BaseApplicationCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/ApplicationDetails/ApplicationDetails.d.ts +0 -0
- /package/dist/components/{admin → management}/ApplicationDetails/BaseApplicationDetails.d.ts +0 -0
- /package/dist/components/{admin → management}/ApplicationList/BaseApplicationList.d.ts +0 -0
- /package/dist/components/{admin → management}/GroupCreate/BaseGroupCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/GroupCreate/GroupCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/GroupList/BaseGroupList.d.ts +0 -0
- /package/dist/components/{admin → management}/GroupList/GroupList.d.ts +0 -0
- /package/dist/components/{admin → management}/GroupMembers/BaseGroupMembers.d.ts +0 -0
- /package/dist/components/{admin → management}/GroupMembers/GroupMembers.d.ts +0 -0
- /package/dist/components/{admin → management}/RoleAssignments/BaseRoleAssignments.d.ts +0 -0
- /package/dist/components/{admin → management}/RoleAssignments/RoleAssignments.d.ts +0 -0
- /package/dist/components/{admin → management}/RoleCreate/BaseRoleCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/RoleCreate/RoleCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/RoleList/BaseRoleList.d.ts +0 -0
- /package/dist/components/{admin → management}/RoleList/RoleList.d.ts +0 -0
- /package/dist/components/{admin → management}/UserCreate/BaseUserCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/UserCreate/UserCreate.d.ts +0 -0
- /package/dist/components/{admin → management}/UserCreate/userCreateFields.d.ts +0 -0
- /package/dist/components/{admin → management}/UserDetails/BaseUserDetails.d.ts +0 -0
- /package/dist/components/{admin → management}/UserDetails/UserDetails.d.ts +0 -0
- /package/dist/components/{admin → management}/UserList/BaseUserList.d.ts +0 -0
- /package/dist/components/{admin → management}/UserList/UserList.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AccountLifecycleParts.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AdminListRenderProps.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AdminParts.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AdminParts.styles.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AdminSearch.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AdminSection.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/AdminSection.styles.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/ApplicationFormFields.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/ClientSecretNotice.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/IdentityPicker.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/useAdminPartStyles.d.ts +0 -0
- /package/dist/components/{admin → management}/shared/useDefaultOuId.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDReactClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDReactClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,aAAa,EAGb,OAAO,EAEP,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAE1B,0BAA0B,
|
|
1
|
+
{"version":3,"file":"ThunderIDReactClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDReactClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,aAAa,EAGb,OAAO,EAEP,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAE1B,0BAA0B,EAO3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAErD,cAAM,oBAAoB,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IACjH,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,iBAAiB,CAAmC;gBAEhD,UAAU,SAAI;IAI1B,OAAO,CAAC,UAAU;YAIJ,WAAW;IAUzB;;;;;;;OAOG;YACW,gBAAgB;IAkBrB,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1D,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAW5C,SAAS,IAAI,OAAO;IAId,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;IAIpF,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC;IA8ElE,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;IAMhE,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA2DlC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAYnD;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAWvB,iBAAiB,IAAI,GAAG;IAIlC,OAAO,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAItE,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;CAGrF;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -93,13 +93,15 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
93
93
|
if (typeof arg1 === "object" && arg1 !== null && !isEmpty(arg1) && ("executionId" in arg1 || "applicationId" in arg1)) {
|
|
94
94
|
this.rejectEmbeddedFlowInBackendMode();
|
|
95
95
|
const authIdFromUrl = new URL(window.location.href).searchParams.get("authId") ?? "";
|
|
96
|
-
const authIdFromStorage = await this.getStorageManager().
|
|
96
|
+
const authIdFromStorage = (arg1.executionId ? await this.getStorageManager().getFlowAuthId(arg1.executionId) : void 0) ?? "";
|
|
97
|
+
const authId = authIdFromUrl || authIdFromStorage;
|
|
97
98
|
const response = await executeEmbeddedSignInFlow({
|
|
98
|
-
authId
|
|
99
|
+
authId,
|
|
99
100
|
baseUrl: config?.baseUrl ?? "",
|
|
100
101
|
payload: arg1,
|
|
101
102
|
url: resolveResourceEndpoint("flowExecute", config, arg2?.url)
|
|
102
103
|
});
|
|
104
|
+
if (!authId && response) await this.storeFlowSessions(response);
|
|
103
105
|
if (response && typeof response === "object" && response.flowStatus === EmbeddedSignInFlowStatus.Complete && response.assertion) {
|
|
104
106
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
105
107
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
@@ -128,8 +130,9 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
128
130
|
const config = await this.getStorageManager().getConfigData();
|
|
129
131
|
const firstArg = args[0];
|
|
130
132
|
const baseUrl = config?.baseUrl ?? "";
|
|
133
|
+
const authId = new URL(window.location.href).searchParams.get("authId") ?? "";
|
|
131
134
|
const response = await executeEmbeddedSignUpFlow({
|
|
132
|
-
authId
|
|
135
|
+
authId,
|
|
133
136
|
baseUrl,
|
|
134
137
|
payload: typeof firstArg === "object" && "flowType" in firstArg ? {
|
|
135
138
|
...firstArg,
|
|
@@ -137,6 +140,7 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
137
140
|
} : firstArg,
|
|
138
141
|
url: resolveResourceEndpoint("flowExecute", config)
|
|
139
142
|
});
|
|
143
|
+
if (!authId && response) await this.storeFlowSessions(response);
|
|
140
144
|
if (response && typeof response === "object" && response.flowStatus === EmbeddedSignUpFlowStatus.Complete && response.assertion) {
|
|
141
145
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
142
146
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDReactClient.js","names":["config: ThunderIDReactConfig | undefined","isInitialized: boolean","claims: User","arg1: any","arg2: any","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","baseUrl: string","response: any","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../src/ThunderIDReactClient.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n IdToken,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n resolveResourceEndpoint,\n} from '@thunderid/browser';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n /**\n * Returns the stored config, re-running initialization first when it has gone missing.\n *\n * NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n * issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n * An operation that resolves endpoints from a lost config fails (for example \"required endpoints\n * are missing\"), so recover it from the config this client was initialized with.\n */\n private async ensureConfigData(): Promise<ThunderIDReactConfig | undefined> {\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n const isConfigLost: boolean =\n !config || Object.keys(config).length === 0 || (Boolean(this._initializeConfig?.baseUrl) && !config.baseUrl);\n\n if (!isConfigLost || !this._initializeConfig) {\n return config;\n }\n\n await this.initialize(this._initializeConfig);\n\n // Reload the config persisted by initialization so downstream endpoint resolution\n // (baseUrl and the flowExecute override) uses the recovered values, not the stale empty config.\n return (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig | undefined;\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState || super.isLoading();\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = await this.ensureConfigData();\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n this.rejectEmbeddedFlowInBackendMode();\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: resolveResourceEndpoint('flowExecute', config, arg2?.url),\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n await this.ensureConfigData();\n\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authId: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n url: resolveResourceEndpoint('flowExecute', config),\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n url: resolveResourceEndpoint('flowExecute', config),\n }) as any;\n }\n\n /**\n * The embedded flows keep their result in the browser, which running sign-in on the backend rules\n * out. Running them through the backend is not supported yet.\n */\n private rejectEmbeddedFlowInBackendMode(): void {\n if (this.isBackendMode()) {\n throw new ThunderIDRuntimeError(\n 'Embedded sign-in, sign-up, and recovery flows are not supported when sign-in runs on the backend.',\n 'ThunderIDReactClient-embeddedFlow-RuntimeError-001',\n 'react',\n 'Use redirect sign-in with the backend.',\n );\n }\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThunderIDReactClient.js","names":["config: ThunderIDReactConfig | undefined","isInitialized: boolean","claims: User","arg1: any","arg2: any","authIdFromUrl: string","authIdFromStorage: string","authId: string","response: EmbeddedSignInFlowResponse","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","baseUrl: string","response: any","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../src/ThunderIDReactClient.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n IdToken,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowResponse,\n EmbeddedSignUpFlowStatus,\n resolveResourceEndpoint,\n} from '@thunderid/browser';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n /**\n * Returns the stored config, re-running initialization first when it has gone missing.\n *\n * NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n * issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n * An operation that resolves endpoints from a lost config fails (for example \"required endpoints\n * are missing\"), so recover it from the config this client was initialized with.\n */\n private async ensureConfigData(): Promise<ThunderIDReactConfig | undefined> {\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n const isConfigLost: boolean =\n !config || Object.keys(config).length === 0 || (Boolean(this._initializeConfig?.baseUrl) && !config.baseUrl);\n\n if (!isConfigLost || !this._initializeConfig) {\n return config;\n }\n\n await this.initialize(this._initializeConfig);\n\n // Reload the config persisted by initialization so downstream endpoint resolution\n // (baseUrl and the flowExecute override) uses the recovered values, not the stale empty config.\n return (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig | undefined;\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState || super.isLoading();\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = await this.ensureConfigData();\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n this.rejectEmbeddedFlowInBackendMode();\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n (arg1.executionId ? await this.getStorageManager().getFlowAuthId(arg1.executionId) : undefined) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: resolveResourceEndpoint('flowExecute', config, arg2?.url),\n });\n\n // A flow for an authorization request posts its SSO sessions to the callback instead.\n if (!authId && response) {\n await this.storeFlowSessions(response);\n }\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n await this.ensureConfigData();\n\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authId: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n url: resolveResourceEndpoint('flowExecute', config),\n });\n\n // A flow for an authorization request posts its SSO sessions to the callback instead.\n if (!authId && response) {\n await this.storeFlowSessions(response as EmbeddedSignUpFlowResponse);\n }\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n url: resolveResourceEndpoint('flowExecute', config),\n }) as any;\n }\n\n /**\n * The embedded flows keep their result in the browser, which running sign-in on the backend rules\n * out. Running them through the backend is not supported yet.\n */\n private rejectEmbeddedFlowInBackendMode(): void {\n if (this.isBackendMode()) {\n throw new ThunderIDRuntimeError(\n 'Embedded sign-in, sign-up, and recovery flows are not supported when sign-in runs on the backend.',\n 'ThunderIDReactClient-embeddedFlow-RuntimeError-001',\n 'react',\n 'Use redirect sign-in with the backend.',\n );\n }\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AccessibleOrganizationUnitList, GetAccessibleOrganizationUnitsConfig as BaseGetAccessibleOrganizationUnitsConfig } from '@thunderid/browser';
|
|
2
|
+
export interface GetAccessibleOrganizationUnitsConfig extends Omit<BaseGetAccessibleOrganizationUnitsConfig, 'fetcher'> {
|
|
3
|
+
/**
|
|
4
|
+
* Optional custom fetcher function. If not provided, the ThunderID SPA client's httpClient is used, which
|
|
5
|
+
* attaches the signed-in user's access token.
|
|
6
|
+
*/
|
|
7
|
+
fetcher?: (url: string, config: RequestInit) => Promise<Response>;
|
|
8
|
+
/**
|
|
9
|
+
* Optional instance ID for multi-instance support. Defaults to 0.
|
|
10
|
+
*/
|
|
11
|
+
instanceId?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Lists the organization units the signed-in user can access, from `/users/me/ous`, with the signed-in
|
|
15
|
+
* user's access token attached by the SDK's HTTP client.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const {current, organizationUnits} = await getAccessibleOrganizationUnits({
|
|
20
|
+
* baseUrl: 'https://localhost:8090',
|
|
21
|
+
* scope: 'siblings',
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare const getAccessibleOrganizationUnits: ({ fetcher, instanceId, ...requestConfig }: GetAccessibleOrganizationUnitsConfig) => Promise<AccessibleOrganizationUnitList>;
|
|
26
|
+
export default getAccessibleOrganizationUnits;
|
|
27
|
+
//# sourceMappingURL=getAccessibleOrganizationUnits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccessibleOrganizationUnits.d.ts","sourceRoot":"","sources":["../../../src/api/account/getAccessibleOrganizationUnits.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,8BAA8B,EAG9B,oCAAoC,IAAI,wCAAwC,EACjF,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,oCACf,SAAQ,IAAI,CAAC,wCAAwC,EAAE,SAAS,CAAC;IACjE;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,8BAA8B,GAAU,2CAI3C,oCAAoC,KAAG,OAAO,CAAC,8BAA8B,CAI5E,CAAC;AAEL,eAAe,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createHttpClientFetcher, getAccessibleOrganizationUnits } from "@thunderid/browser";
|
|
2
|
+
|
|
3
|
+
//#region src/api/account/getAccessibleOrganizationUnits.ts
|
|
4
|
+
/**
|
|
5
|
+
* Lists the organization units the signed-in user can access, from `/users/me/ous`, with the signed-in
|
|
6
|
+
* user's access token attached by the SDK's HTTP client.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const {current, organizationUnits} = await getAccessibleOrganizationUnits({
|
|
11
|
+
* baseUrl: 'https://localhost:8090',
|
|
12
|
+
* scope: 'siblings',
|
|
13
|
+
* });
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const getAccessibleOrganizationUnits$1 = async ({ fetcher, instanceId = 0,...requestConfig }) => getAccessibleOrganizationUnits({
|
|
17
|
+
...requestConfig,
|
|
18
|
+
fetcher: fetcher ?? createHttpClientFetcher(instanceId)
|
|
19
|
+
});
|
|
20
|
+
var getAccessibleOrganizationUnits_default = getAccessibleOrganizationUnits$1;
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { getAccessibleOrganizationUnits_default as default };
|
|
24
|
+
//# sourceMappingURL=getAccessibleOrganizationUnits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccessibleOrganizationUnits.js","names":["getAccessibleOrganizationUnits","baseGetAccessibleOrganizationUnits"],"sources":["../../../src/api/account/getAccessibleOrganizationUnits.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AccessibleOrganizationUnitList,\n createHttpClientFetcher,\n getAccessibleOrganizationUnits as baseGetAccessibleOrganizationUnits,\n GetAccessibleOrganizationUnitsConfig as BaseGetAccessibleOrganizationUnitsConfig,\n} from '@thunderid/browser';\n\nexport interface GetAccessibleOrganizationUnitsConfig\n extends Omit<BaseGetAccessibleOrganizationUnitsConfig, 'fetcher'> {\n /**\n * Optional custom fetcher function. If not provided, the ThunderID SPA client's httpClient is used, which\n * attaches the signed-in user's access token.\n */\n fetcher?: (url: string, config: RequestInit) => Promise<Response>;\n /**\n * Optional instance ID for multi-instance support. Defaults to 0.\n */\n instanceId?: number;\n}\n\n/**\n * Lists the organization units the signed-in user can access, from `/users/me/ous`, with the signed-in\n * user's access token attached by the SDK's HTTP client.\n *\n * @example\n * ```typescript\n * const {current, organizationUnits} = await getAccessibleOrganizationUnits({\n * baseUrl: 'https://localhost:8090',\n * scope: 'siblings',\n * });\n * ```\n */\nconst getAccessibleOrganizationUnits = async ({\n fetcher,\n instanceId = 0,\n ...requestConfig\n}: GetAccessibleOrganizationUnitsConfig): Promise<AccessibleOrganizationUnitList> =>\n baseGetAccessibleOrganizationUnits({\n ...requestConfig,\n fetcher: fetcher ?? createHttpClientFetcher(instanceId),\n });\n\nexport default getAccessibleOrganizationUnits;\n"],"mappings":";;;;;;;;;;;;;;;AAmCA,MAAMA,mCAAiC,OAAO,EAC5C,SACA,aAAa,EACb,GAAG,oBAEHC,+BAAmC;CACjC,GAAG;CACH,SAAS,WAAW,wBAAwB,WAAW;CACxD,CAAC;AAEJ,6CAAeD"}
|
|
@@ -95,13 +95,15 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
95
95
|
if (typeof arg1 === "object" && arg1 !== null && !(0, __thunderid_browser.isEmpty)(arg1) && ("executionId" in arg1 || "applicationId" in arg1)) {
|
|
96
96
|
this.rejectEmbeddedFlowInBackendMode();
|
|
97
97
|
const authIdFromUrl = new URL(window.location.href).searchParams.get("authId") ?? "";
|
|
98
|
-
const authIdFromStorage = await this.getStorageManager().
|
|
98
|
+
const authIdFromStorage = (arg1.executionId ? await this.getStorageManager().getFlowAuthId(arg1.executionId) : void 0) ?? "";
|
|
99
|
+
const authId = authIdFromUrl || authIdFromStorage;
|
|
99
100
|
const response = await (0, __thunderid_browser.executeEmbeddedSignInFlow)({
|
|
100
|
-
authId
|
|
101
|
+
authId,
|
|
101
102
|
baseUrl: config?.baseUrl ?? "",
|
|
102
103
|
payload: arg1,
|
|
103
104
|
url: (0, __thunderid_browser.resolveResourceEndpoint)("flowExecute", config, arg2?.url)
|
|
104
105
|
});
|
|
106
|
+
if (!authId && response) await this.storeFlowSessions(response);
|
|
105
107
|
if (response && typeof response === "object" && response.flowStatus === __thunderid_browser.EmbeddedSignInFlowStatus.Complete && response.assertion) {
|
|
106
108
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
107
109
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
@@ -130,8 +132,9 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
130
132
|
const config = await this.getStorageManager().getConfigData();
|
|
131
133
|
const firstArg = args[0];
|
|
132
134
|
const baseUrl = config?.baseUrl ?? "";
|
|
135
|
+
const authId = new URL(window.location.href).searchParams.get("authId") ?? "";
|
|
133
136
|
const response = await (0, __thunderid_browser.executeEmbeddedSignUpFlow)({
|
|
134
|
-
authId
|
|
137
|
+
authId,
|
|
135
138
|
baseUrl,
|
|
136
139
|
payload: typeof firstArg === "object" && "flowType" in firstArg ? {
|
|
137
140
|
...firstArg,
|
|
@@ -139,6 +142,7 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
139
142
|
} : firstArg,
|
|
140
143
|
url: (0, __thunderid_browser.resolveResourceEndpoint)("flowExecute", config)
|
|
141
144
|
});
|
|
145
|
+
if (!authId && response) await this.storeFlowSessions(response);
|
|
142
146
|
if (response && typeof response === "object" && response.flowStatus === __thunderid_browser.EmbeddedSignUpFlowStatus.Complete && response.assertion) {
|
|
143
147
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
144
148
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDReactClient.cjs","names":["ThunderIDBrowserClient","config: ThunderIDReactConfig | undefined","isInitialized: boolean","ThunderIDRuntimeError","claims: User","arg1: any","arg2: any","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","EmbeddedSignInFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","baseUrl: string","response: any","EmbeddedSignUpFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../../src/ThunderIDReactClient.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n IdToken,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n resolveResourceEndpoint,\n} from '@thunderid/browser';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n /**\n * Returns the stored config, re-running initialization first when it has gone missing.\n *\n * NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n * issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n * An operation that resolves endpoints from a lost config fails (for example \"required endpoints\n * are missing\"), so recover it from the config this client was initialized with.\n */\n private async ensureConfigData(): Promise<ThunderIDReactConfig | undefined> {\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n const isConfigLost: boolean =\n !config || Object.keys(config).length === 0 || (Boolean(this._initializeConfig?.baseUrl) && !config.baseUrl);\n\n if (!isConfigLost || !this._initializeConfig) {\n return config;\n }\n\n await this.initialize(this._initializeConfig);\n\n // Reload the config persisted by initialization so downstream endpoint resolution\n // (baseUrl and the flowExecute override) uses the recovered values, not the stale empty config.\n return (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig | undefined;\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState || super.isLoading();\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = await this.ensureConfigData();\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n this.rejectEmbeddedFlowInBackendMode();\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: resolveResourceEndpoint('flowExecute', config, arg2?.url),\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n await this.ensureConfigData();\n\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authId: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n url: resolveResourceEndpoint('flowExecute', config),\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n url: resolveResourceEndpoint('flowExecute', config),\n }) as any;\n }\n\n /**\n * The embedded flows keep their result in the browser, which running sign-in on the backend rules\n * out. Running them through the backend is not supported yet.\n */\n private rejectEmbeddedFlowInBackendMode(): void {\n if (this.isBackendMode()) {\n throw new ThunderIDRuntimeError(\n 'Embedded sign-in, sign-up, and recovery flows are not supported when sign-in runs on the backend.',\n 'ThunderIDReactClient-embeddedFlow-RuntimeError-001',\n 'react',\n 'Use redirect sign-in with the backend.',\n );\n }\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThunderIDReactClient.cjs","names":["ThunderIDBrowserClient","config: ThunderIDReactConfig | undefined","isInitialized: boolean","ThunderIDRuntimeError","claims: User","arg1: any","arg2: any","authIdFromUrl: string","authIdFromStorage: string","authId: string","response: EmbeddedSignInFlowResponse","EmbeddedSignInFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","baseUrl: string","response: any","EmbeddedSignUpFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../../src/ThunderIDReactClient.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n IdToken,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowResponse,\n EmbeddedSignUpFlowStatus,\n resolveResourceEndpoint,\n} from '@thunderid/browser';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n /**\n * Returns the stored config, re-running initialization first when it has gone missing.\n *\n * NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n * issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n * An operation that resolves endpoints from a lost config fails (for example \"required endpoints\n * are missing\"), so recover it from the config this client was initialized with.\n */\n private async ensureConfigData(): Promise<ThunderIDReactConfig | undefined> {\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n const isConfigLost: boolean =\n !config || Object.keys(config).length === 0 || (Boolean(this._initializeConfig?.baseUrl) && !config.baseUrl);\n\n if (!isConfigLost || !this._initializeConfig) {\n return config;\n }\n\n await this.initialize(this._initializeConfig);\n\n // Reload the config persisted by initialization so downstream endpoint resolution\n // (baseUrl and the flowExecute override) uses the recovered values, not the stale empty config.\n return (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig | undefined;\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState || super.isLoading();\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = await this.ensureConfigData();\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n this.rejectEmbeddedFlowInBackendMode();\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n (arg1.executionId ? await this.getStorageManager().getFlowAuthId(arg1.executionId) : undefined) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: resolveResourceEndpoint('flowExecute', config, arg2?.url),\n });\n\n // A flow for an authorization request posts its SSO sessions to the callback instead.\n if (!authId && response) {\n await this.storeFlowSessions(response);\n }\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n await this.ensureConfigData();\n\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authId: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n url: resolveResourceEndpoint('flowExecute', config),\n });\n\n // A flow for an authorization request posts its SSO sessions to the callback instead.\n if (!authId && response) {\n await this.storeFlowSessions(response as EmbeddedSignUpFlowResponse);\n }\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n this.rejectEmbeddedFlowInBackendMode();\n\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n url: resolveResourceEndpoint('flowExecute', config),\n }) as any;\n }\n\n /**\n * The embedded flows keep their result in the browser, which running sign-in on the backend rules\n * out. Running them through the backend is not supported yet.\n */\n private rejectEmbeddedFlowInBackendMode(): void {\n if (this.isBackendMode()) {\n throw new ThunderIDRuntimeError(\n 'Embedded sign-in, sign-up, and recovery flows are not supported when sign-in runs on the backend.',\n 'ThunderIDReactClient-embeddedFlow-RuntimeError-001',\n 'react',\n 'Use redirect sign-in with the backend.',\n );\n }\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
3
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
4
|
+
|
|
5
|
+
//#region src/api/account/getAccessibleOrganizationUnits.ts
|
|
6
|
+
/**
|
|
7
|
+
* Lists the organization units the signed-in user can access, from `/users/me/ous`, with the signed-in
|
|
8
|
+
* user's access token attached by the SDK's HTTP client.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const {current, organizationUnits} = await getAccessibleOrganizationUnits({
|
|
13
|
+
* baseUrl: 'https://localhost:8090',
|
|
14
|
+
* scope: 'siblings',
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const getAccessibleOrganizationUnits = async ({ fetcher, instanceId = 0,...requestConfig }) => (0, __thunderid_browser.getAccessibleOrganizationUnits)({
|
|
19
|
+
...requestConfig,
|
|
20
|
+
fetcher: fetcher ?? (0, __thunderid_browser.createHttpClientFetcher)(instanceId)
|
|
21
|
+
});
|
|
22
|
+
var getAccessibleOrganizationUnits_default = getAccessibleOrganizationUnits;
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.default = getAccessibleOrganizationUnits_default;
|
|
26
|
+
//# sourceMappingURL=getAccessibleOrganizationUnits.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccessibleOrganizationUnits.cjs","names":[],"sources":["../../../../src/api/account/getAccessibleOrganizationUnits.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n AccessibleOrganizationUnitList,\n createHttpClientFetcher,\n getAccessibleOrganizationUnits as baseGetAccessibleOrganizationUnits,\n GetAccessibleOrganizationUnitsConfig as BaseGetAccessibleOrganizationUnitsConfig,\n} from '@thunderid/browser';\n\nexport interface GetAccessibleOrganizationUnitsConfig\n extends Omit<BaseGetAccessibleOrganizationUnitsConfig, 'fetcher'> {\n /**\n * Optional custom fetcher function. If not provided, the ThunderID SPA client's httpClient is used, which\n * attaches the signed-in user's access token.\n */\n fetcher?: (url: string, config: RequestInit) => Promise<Response>;\n /**\n * Optional instance ID for multi-instance support. Defaults to 0.\n */\n instanceId?: number;\n}\n\n/**\n * Lists the organization units the signed-in user can access, from `/users/me/ous`, with the signed-in\n * user's access token attached by the SDK's HTTP client.\n *\n * @example\n * ```typescript\n * const {current, organizationUnits} = await getAccessibleOrganizationUnits({\n * baseUrl: 'https://localhost:8090',\n * scope: 'siblings',\n * });\n * ```\n */\nconst getAccessibleOrganizationUnits = async ({\n fetcher,\n instanceId = 0,\n ...requestConfig\n}: GetAccessibleOrganizationUnitsConfig): Promise<AccessibleOrganizationUnitList> =>\n baseGetAccessibleOrganizationUnits({\n ...requestConfig,\n fetcher: fetcher ?? createHttpClientFetcher(instanceId),\n });\n\nexport default getAccessibleOrganizationUnits;\n"],"mappings":";;;;;;;;;;;;;;;;;AAmCA,MAAM,iCAAiC,OAAO,EAC5C,SACA,aAAa,EACb,GAAG,4EAEgC;CACjC,GAAG;CACH,SAAS,4DAAmC,WAAW;CACxD,CAAC;AAEJ,6CAAe"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_emotion = require('../../../styles/emotion.cjs');
|
|
3
|
+
const require_useTheme = require('../../../contexts/Theme/useTheme.cjs');
|
|
4
|
+
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
5
|
+
const require_Spinner = require('../../primitives/Spinner/Spinner.cjs');
|
|
6
|
+
const require_Button = require('../../primitives/Button/Button.cjs');
|
|
7
|
+
const require_Check = require('../../primitives/Icons/Check.cjs');
|
|
8
|
+
const require_BaseOrganizationUnitSwitcher_styles = require('./BaseOrganizationUnitSwitcher.styles.cjs');
|
|
9
|
+
const require_ChevronDown = require('../../primitives/Icons/ChevronDown.cjs');
|
|
10
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
11
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
12
|
+
let react = require("react");
|
|
13
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
14
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
15
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
16
|
+
let __floating_ui_react = require("@floating-ui/react");
|
|
17
|
+
__floating_ui_react = require_rolldown_runtime.__toESM(__floating_ui_react);
|
|
18
|
+
|
|
19
|
+
//#region src/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.tsx
|
|
20
|
+
const BLOCK = "organization-unit-switcher";
|
|
21
|
+
/**
|
|
22
|
+
* Presentational organization unit picker: a field showing the current unit under a small label, which
|
|
23
|
+
* opens a menu of the units the signed-in user can access. Holds no SDK state and makes no request: pass
|
|
24
|
+
* the units and the callbacks. Use {@link OrganizationUnitSwitcher} for the variant wired to the SDK.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <BaseOrganizationUnitSwitcher
|
|
29
|
+
* organizationUnits={units}
|
|
30
|
+
* current={currentId}
|
|
31
|
+
* totalResults={units.length}
|
|
32
|
+
* onSwitch={(unit) => switchTo(unit.id)}
|
|
33
|
+
* />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
const BaseOrganizationUnitSwitcher = ({ children = void 0, className = "", current = null, currentName = null, error = null, isLoading = false, limit = 10, offset = 0, onPageChange = () => void 0, onSwitch = () => void 0, organizationUnits = [], preferences = void 0, switchingId = null, title = void 0, totalResults = void 0 }) => {
|
|
37
|
+
const { theme, colorScheme } = require_useTheme.default();
|
|
38
|
+
const styles = require_BaseOrganizationUnitSwitcher_styles.default(theme, colorScheme);
|
|
39
|
+
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
40
|
+
const [isOpen, setIsOpen] = (0, react.useState)(false);
|
|
41
|
+
const [activeIndex, setActiveIndex] = (0, react.useState)(null);
|
|
42
|
+
const listRef = (0, react.useRef)([]);
|
|
43
|
+
const listId = (0, react.useId)();
|
|
44
|
+
const isSwitching = switchingId !== null;
|
|
45
|
+
const open = isOpen && !isSwitching;
|
|
46
|
+
const currentIndex = organizationUnits.findIndex((unit) => unit.id === current);
|
|
47
|
+
const resolvedCurrentName = organizationUnits[currentIndex]?.name ?? currentName;
|
|
48
|
+
const resolvedTotal = totalResults ?? organizationUnits.length;
|
|
49
|
+
const { context, floatingStyles, refs } = (0, __floating_ui_react.useFloating)({
|
|
50
|
+
middleware: [
|
|
51
|
+
(0, __floating_ui_react.offset)(4),
|
|
52
|
+
(0, __floating_ui_react.flip)(),
|
|
53
|
+
(0, __floating_ui_react.shift)({ padding: 8 }),
|
|
54
|
+
(0, __floating_ui_react.size)({ apply({ elements, rects }) {
|
|
55
|
+
elements.floating.style.minWidth = `${rects.reference.width}px`;
|
|
56
|
+
} })
|
|
57
|
+
],
|
|
58
|
+
onOpenChange: setIsOpen,
|
|
59
|
+
open,
|
|
60
|
+
placement: "bottom-start",
|
|
61
|
+
whileElementsMounted: __floating_ui_react.autoUpdate
|
|
62
|
+
});
|
|
63
|
+
const { getFloatingProps, getItemProps, getReferenceProps } = (0, __floating_ui_react.useInteractions)([
|
|
64
|
+
(0, __floating_ui_react.useClick)(context, { enabled: !isSwitching }),
|
|
65
|
+
(0, __floating_ui_react.useDismiss)(context),
|
|
66
|
+
(0, __floating_ui_react.useListNavigation)(context, {
|
|
67
|
+
activeIndex,
|
|
68
|
+
listRef,
|
|
69
|
+
loop: true,
|
|
70
|
+
onNavigate: setActiveIndex,
|
|
71
|
+
selectedIndex: currentIndex >= 0 ? currentIndex : null
|
|
72
|
+
})
|
|
73
|
+
]);
|
|
74
|
+
const renderProps = {
|
|
75
|
+
current,
|
|
76
|
+
currentName: resolvedCurrentName,
|
|
77
|
+
error,
|
|
78
|
+
isLoading,
|
|
79
|
+
limit,
|
|
80
|
+
offset,
|
|
81
|
+
onPageChange,
|
|
82
|
+
onSwitch,
|
|
83
|
+
organizationUnits,
|
|
84
|
+
switchingId,
|
|
85
|
+
totalResults: resolvedTotal
|
|
86
|
+
};
|
|
87
|
+
if (children) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: children(renderProps) });
|
|
88
|
+
const label = title ?? t("organization_unit.switcher.label");
|
|
89
|
+
const hasPrevious = offset > 0;
|
|
90
|
+
const hasNext = offset + organizationUnits.length < resolvedTotal;
|
|
91
|
+
const fieldValue = () => {
|
|
92
|
+
if (isSwitching) return t("organization_unit.switcher.switching", { name: organizationUnits.find((unit) => unit.id === switchingId)?.name ?? switchingId ?? "" });
|
|
93
|
+
if (resolvedCurrentName) return resolvedCurrentName;
|
|
94
|
+
return isLoading ? t("organization_unit.switcher.loading") : t("organization_unit.switcher.placeholder");
|
|
95
|
+
};
|
|
96
|
+
const pick = (unit) => {
|
|
97
|
+
setIsOpen(false);
|
|
98
|
+
if (unit.id !== current) onSwitch(unit);
|
|
99
|
+
};
|
|
100
|
+
const menuContent = () => {
|
|
101
|
+
if (isLoading) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
102
|
+
role: "status",
|
|
103
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "loading")), styles["status"]),
|
|
104
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
105
|
+
"aria-hidden": "true",
|
|
106
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Spinner.default, { size: "small" })
|
|
107
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("organization_unit.switcher.loading") })]
|
|
108
|
+
});
|
|
109
|
+
if (organizationUnits.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
110
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "empty")), styles["status"]),
|
|
111
|
+
children: error ?? t("organization_unit.switcher.empty")
|
|
112
|
+
});
|
|
113
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
114
|
+
id: listId,
|
|
115
|
+
role: "listbox",
|
|
116
|
+
"aria-label": label || t("organization_unit.switcher.label"),
|
|
117
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "list")), styles["list"]),
|
|
118
|
+
children: organizationUnits.map((unit, index) => {
|
|
119
|
+
const isCurrent = unit.id === current;
|
|
120
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
121
|
+
ref: (node) => {
|
|
122
|
+
listRef.current[index] = node;
|
|
123
|
+
},
|
|
124
|
+
type: "button",
|
|
125
|
+
role: "option",
|
|
126
|
+
"aria-selected": isCurrent,
|
|
127
|
+
tabIndex: index === activeIndex ? 0 : -1,
|
|
128
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "option", isCurrent ? "current" : void 0)), styles["option"], isCurrent ? styles["optionCurrent"] : ""),
|
|
129
|
+
...getItemProps({ onClick: () => pick(unit) }),
|
|
130
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
131
|
+
className: styles["optionText"],
|
|
132
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
133
|
+
className: styles["optionName"],
|
|
134
|
+
children: unit.name
|
|
135
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
136
|
+
className: styles["optionHandle"],
|
|
137
|
+
children: unit.handle
|
|
138
|
+
})]
|
|
139
|
+
}), isCurrent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
140
|
+
"aria-hidden": "true",
|
|
141
|
+
className: styles["check"],
|
|
142
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Check.default, {})
|
|
143
|
+
})]
|
|
144
|
+
}, unit.id);
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
149
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)(BLOCK), styles["root"], className),
|
|
150
|
+
children: [
|
|
151
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
152
|
+
ref: refs.setReference,
|
|
153
|
+
type: "button",
|
|
154
|
+
"aria-controls": open ? listId : void 0,
|
|
155
|
+
"aria-expanded": open,
|
|
156
|
+
"aria-haspopup": "listbox",
|
|
157
|
+
disabled: isSwitching,
|
|
158
|
+
...getReferenceProps(),
|
|
159
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "field")), styles["field"]),
|
|
160
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
161
|
+
className: styles["fieldText"],
|
|
162
|
+
children: [label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
163
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "label")), styles["label"]),
|
|
164
|
+
children: label
|
|
165
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
166
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "value")), styles["value"]),
|
|
167
|
+
children: fieldValue()
|
|
168
|
+
})]
|
|
169
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
170
|
+
"aria-hidden": "true",
|
|
171
|
+
className: require_emotion.cx(styles["chevron"], open ? styles["chevronOpen"] : ""),
|
|
172
|
+
children: isSwitching ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Spinner.default, { size: "small" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ChevronDown.default, {})
|
|
173
|
+
})]
|
|
174
|
+
}),
|
|
175
|
+
error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
176
|
+
role: "alert",
|
|
177
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "error")), styles["error"]),
|
|
178
|
+
children: error
|
|
179
|
+
}),
|
|
180
|
+
open && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__floating_ui_react.FloatingPortal, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(__floating_ui_react.FloatingFocusManager, {
|
|
181
|
+
context,
|
|
182
|
+
initialFocus: -1,
|
|
183
|
+
modal: false,
|
|
184
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
185
|
+
ref: refs.setFloating,
|
|
186
|
+
style: floatingStyles,
|
|
187
|
+
...getFloatingProps(),
|
|
188
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "menu")), styles["menu"]),
|
|
189
|
+
children: [menuContent(), (hasPrevious || hasNext) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
190
|
+
className: require_emotion.cx((0, __thunderid_browser.withVendorCSSClassPrefix)((0, __thunderid_browser.bem)(BLOCK, "pagination")), styles["pagination"]),
|
|
191
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
|
|
192
|
+
size: "small",
|
|
193
|
+
variant: "text",
|
|
194
|
+
disabled: !hasPrevious || isLoading,
|
|
195
|
+
onClick: () => onPageChange(Math.max(0, offset - limit)),
|
|
196
|
+
children: t("organization_unit.switcher.previous")
|
|
197
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
|
|
198
|
+
size: "small",
|
|
199
|
+
variant: "text",
|
|
200
|
+
disabled: !hasNext || isLoading,
|
|
201
|
+
onClick: () => onPageChange(offset + limit),
|
|
202
|
+
children: t("organization_unit.switcher.next")
|
|
203
|
+
})]
|
|
204
|
+
})]
|
|
205
|
+
})
|
|
206
|
+
}) })
|
|
207
|
+
]
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
var BaseOrganizationUnitSwitcher_default = BaseOrganizationUnitSwitcher;
|
|
211
|
+
|
|
212
|
+
//#endregion
|
|
213
|
+
exports.default = BaseOrganizationUnitSwitcher_default;
|
|
214
|
+
//# sourceMappingURL=BaseOrganizationUnitSwitcher.cjs.map
|
package/dist/cjs/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseOrganizationUnitSwitcher.cjs","names":["BaseOrganizationUnitSwitcher: FC<BaseOrganizationUnitSwitcherProps>","useTheme","styles: Record<string, string>","useStyles","useTranslation","listId: string","isSwitching: boolean","open: boolean","currentIndex: number","resolvedCurrentName: string | null","resolvedTotal: number","autoUpdate","renderProps: OrganizationUnitSwitcherRenderProps","label: string","hasPrevious: boolean","hasNext: boolean","cx","Spinner","isCurrent: boolean","Check","ChevronDown","FloatingPortal","FloatingFocusManager","Button"],"sources":["../../../../../src/components/account/OrganizationUnitSwitcher/BaseOrganizationUnitSwitcher.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingPortal,\n type MiddlewareState,\n offset as floatingOffset,\n shift,\n size,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useListNavigation,\n} from '@floating-ui/react';\nimport {AccessibleOrganizationUnit, Preferences, bem, withVendorCSSClassPrefix} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode, useId, useRef, useState} from 'react';\nimport useStyles from './BaseOrganizationUnitSwitcher.styles';\nimport useTheme from '../../../contexts/Theme/useTheme';\nimport useTranslation from '../../../hooks/useTranslation';\nimport {cx} from '../../../styles/emotion';\nimport Button from '../../primitives/Button/Button';\nimport Check from '../../primitives/Icons/Check';\nimport ChevronDown from '../../primitives/Icons/ChevronDown';\nimport Spinner from '../../primitives/Spinner/Spinner';\n\nconst BLOCK = 'organization-unit-switcher';\n\nexport interface OrganizationUnitSwitcherRenderProps {\n /**\n * Identifier of the unit the session is in, or `null` when it is not known.\n */\n current: string | null;\n /**\n * Name of the unit the session is in, from the page or the session, or `null` when it is not known.\n */\n currentName: string | null;\n /**\n * A translated message for the last failure, or `null`.\n */\n error: string | null;\n /**\n * Whether the units are loading.\n */\n isLoading: boolean;\n /**\n * The page size.\n */\n limit: number;\n /**\n * The zero-based offset of the page.\n */\n offset: number;\n /**\n * Moves to the page that starts at `offset`.\n */\n onPageChange: (offset: number) => void;\n /**\n * Switches to `unit` (or hands it to the app's `onSelect`).\n */\n onSwitch: (unit: AccessibleOrganizationUnit) => void;\n /**\n * The units of the page.\n */\n organizationUnits: AccessibleOrganizationUnit[];\n /**\n * Identifier of the unit a switch is in progress to, or `null`.\n */\n switchingId: string | null;\n /**\n * Number of units the listing matches.\n */\n totalResults: number;\n}\n\nexport interface BaseOrganizationUnitSwitcherProps extends Partial<OrganizationUnitSwitcherRenderProps> {\n /**\n * Custom render. Replaces the built-in UI and receives the units, the current one, the loading and\n * error state, the paging and `onSwitch`.\n */\n children?: (props: OrganizationUnitSwitcherRenderProps) => ReactNode;\n /**\n * Additional CSS class names.\n */\n className?: string;\n /**\n * Component-level preference overrides, including i18n.\n */\n preferences?: Preferences;\n /**\n * Overrides the small label above the current unit. Pass an empty string to omit it.\n */\n title?: string;\n}\n\n/**\n * Presentational organization unit picker: a field showing the current unit under a small label, which\n * opens a menu of the units the signed-in user can access. Holds no SDK state and makes no request: pass\n * the units and the callbacks. Use {@link OrganizationUnitSwitcher} for the variant wired to the SDK.\n *\n * @example\n * ```tsx\n * <BaseOrganizationUnitSwitcher\n * organizationUnits={units}\n * current={currentId}\n * totalResults={units.length}\n * onSwitch={(unit) => switchTo(unit.id)}\n * />\n * ```\n */\nconst BaseOrganizationUnitSwitcher: FC<BaseOrganizationUnitSwitcherProps> = ({\n children = undefined,\n className = '',\n current = null,\n currentName = null,\n error = null,\n isLoading = false,\n limit = 10,\n offset = 0,\n onPageChange = (): void => undefined,\n onSwitch = (): void => undefined,\n organizationUnits = [],\n preferences = undefined,\n switchingId = null,\n title = undefined,\n totalResults = undefined,\n}: BaseOrganizationUnitSwitcherProps): ReactElement => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n const {t} = useTranslation(preferences?.i18n);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const listRef = useRef<(HTMLElement | null)[]>([]);\n const listId: string = useId();\n\n const isSwitching: boolean = switchingId !== null;\n const open: boolean = isOpen && !isSwitching;\n const currentIndex: number = organizationUnits.findIndex((unit: AccessibleOrganizationUnit) => unit.id === current);\n const resolvedCurrentName: string | null = organizationUnits[currentIndex]?.name ?? currentName;\n const resolvedTotal: number = totalResults ?? organizationUnits.length;\n\n const {context, floatingStyles, refs} = useFloating({\n middleware: [\n floatingOffset(4),\n flip(),\n shift({padding: 8}),\n size({\n apply({elements, rects}: MiddlewareState): void {\n elements.floating.style.minWidth = `${rects.reference.width}px`;\n },\n }),\n ],\n onOpenChange: setIsOpen,\n open,\n placement: 'bottom-start',\n whileElementsMounted: autoUpdate,\n });\n const click: ReturnType<typeof useClick> = useClick(context, {enabled: !isSwitching});\n const dismiss: ReturnType<typeof useDismiss> = useDismiss(context);\n const listNavigation: ReturnType<typeof useListNavigation> = useListNavigation(context, {\n activeIndex,\n listRef,\n loop: true,\n onNavigate: setActiveIndex,\n selectedIndex: currentIndex >= 0 ? currentIndex : null,\n });\n const {getFloatingProps, getItemProps, getReferenceProps} = useInteractions([click, dismiss, listNavigation]);\n\n const renderProps: OrganizationUnitSwitcherRenderProps = {\n current,\n currentName: resolvedCurrentName,\n error,\n isLoading,\n limit,\n offset,\n onPageChange,\n onSwitch,\n organizationUnits,\n switchingId,\n totalResults: resolvedTotal,\n };\n\n if (children) {\n return <>{children(renderProps)}</>;\n }\n\n const label: string = title ?? t('organization_unit.switcher.label');\n const hasPrevious: boolean = offset > 0;\n const hasNext: boolean = offset + organizationUnits.length < resolvedTotal;\n\n const fieldValue = (): string => {\n if (isSwitching) {\n const target: AccessibleOrganizationUnit | undefined = organizationUnits.find(\n (unit: AccessibleOrganizationUnit) => unit.id === switchingId,\n );\n\n return t('organization_unit.switcher.switching', {name: target?.name ?? switchingId ?? ''});\n }\n\n if (resolvedCurrentName) {\n return resolvedCurrentName;\n }\n\n return isLoading ? t('organization_unit.switcher.loading') : t('organization_unit.switcher.placeholder');\n };\n\n const pick = (unit: AccessibleOrganizationUnit): void => {\n setIsOpen(false);\n\n if (unit.id !== current) {\n onSwitch(unit);\n }\n };\n\n const menuContent = (): ReactNode => {\n if (isLoading) {\n return (\n <div role=\"status\" className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'loading')), styles['status'])}>\n <span aria-hidden=\"true\">\n <Spinner size=\"small\" />\n </span>\n <span>{t('organization_unit.switcher.loading')}</span>\n </div>\n );\n }\n\n if (organizationUnits.length === 0) {\n return (\n <p className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'empty')), styles['status'])}>\n {error ?? t('organization_unit.switcher.empty')}\n </p>\n );\n }\n\n return (\n <div\n id={listId}\n role=\"listbox\"\n aria-label={label || t('organization_unit.switcher.label')}\n className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'list')), styles['list'])}\n >\n {organizationUnits.map((unit: AccessibleOrganizationUnit, index: number) => {\n const isCurrent: boolean = unit.id === current;\n\n return (\n <button\n key={unit.id}\n ref={(node: HTMLButtonElement | null): void => {\n listRef.current[index] = node;\n }}\n type=\"button\"\n role=\"option\"\n aria-selected={isCurrent}\n tabIndex={index === activeIndex ? 0 : -1}\n className={cx(\n withVendorCSSClassPrefix(bem(BLOCK, 'option', isCurrent ? 'current' : undefined)),\n styles['option'],\n isCurrent ? styles['optionCurrent'] : '',\n )}\n {...getItemProps({onClick: (): void => pick(unit)})}\n >\n <span className={styles['optionText']}>\n <span className={styles['optionName']}>{unit.name}</span>\n <span className={styles['optionHandle']}>{unit.handle}</span>\n </span>\n {isCurrent && (\n <span aria-hidden=\"true\" className={styles['check']}>\n <Check />\n </span>\n )}\n </button>\n );\n })}\n </div>\n );\n };\n\n return (\n <div className={cx(withVendorCSSClassPrefix(BLOCK), styles['root'], className)}>\n <button\n ref={refs.setReference}\n type=\"button\"\n aria-controls={open ? listId : undefined}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={isSwitching}\n {...getReferenceProps()}\n className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'field')), styles['field'])}\n >\n <span className={styles['fieldText']}>\n {label && <span className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'label')), styles['label'])}>{label}</span>}\n <span className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'value')), styles['value'])}>{fieldValue()}</span>\n </span>\n <span aria-hidden=\"true\" className={cx(styles['chevron'], open ? styles['chevronOpen'] : '')}>\n {isSwitching ? <Spinner size=\"small\" /> : <ChevronDown />}\n </span>\n </button>\n\n {error && (\n <div role=\"alert\" className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'error')), styles['error'])}>\n {error}\n </div>\n )}\n\n {open && (\n <FloatingPortal>\n <FloatingFocusManager context={context} initialFocus={-1} modal={false}>\n <div\n ref={refs.setFloating}\n style={floatingStyles}\n {...getFloatingProps()}\n className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'menu')), styles['menu'])}\n >\n {menuContent()}\n {(hasPrevious || hasNext) && (\n <div className={cx(withVendorCSSClassPrefix(bem(BLOCK, 'pagination')), styles['pagination'])}>\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!hasPrevious || isLoading}\n onClick={(): void => onPageChange(Math.max(0, offset - limit))}\n >\n {t('organization_unit.switcher.previous')}\n </Button>\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={!hasNext || isLoading}\n onClick={(): void => onPageChange(offset + limit)}\n >\n {t('organization_unit.switcher.next')}\n </Button>\n </div>\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </div>\n );\n};\n\nexport default BaseOrganizationUnitSwitcher;\n"],"mappings":"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"}
|