@thunderid/react 0.3.3 → 0.3.4
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 +1 -5
- package/dist/ThunderIDReactClient.d.ts.map +1 -1
- package/dist/ThunderIDReactClient.js +1 -68
- package/dist/ThunderIDReactClient.js.map +1 -1
- package/dist/cjs/ThunderIDReactClient.cjs +0 -67
- package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
- package/dist/cjs/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
- package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs +57 -0
- package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs.map +1 -0
- package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs +36 -0
- package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs.map +1 -0
- package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs +6 -5
- package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +3 -15
- package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
- package/dist/cjs/contexts/Theme/ThemeContext.cjs.map +1 -1
- package/dist/cjs/contexts/Theme/ThemeProvider.cjs +2 -5
- package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +0 -2
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +14 -90
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
- package/dist/cjs/index.cjs +6 -51
- package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
- package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts +50 -0
- package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts.map +1 -0
- package/dist/components/presentation/UserAvatar/BaseUserAvatar.js +55 -0
- package/dist/components/presentation/UserAvatar/BaseUserAvatar.js.map +1 -0
- package/dist/components/presentation/UserAvatar/UserAvatar.d.ts +46 -0
- package/dist/components/presentation/UserAvatar/UserAvatar.d.ts.map +1 -0
- package/dist/components/presentation/UserAvatar/UserAvatar.js +34 -0
- package/dist/components/presentation/UserAvatar/UserAvatar.js.map +1 -0
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts.map +1 -1
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.js +6 -5
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.js.map +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.d.ts +2 -2
- package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.js +3 -15
- package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
- package/dist/contexts/Theme/ThemeContext.d.ts +0 -12
- package/dist/contexts/Theme/ThemeContext.d.ts.map +1 -1
- package/dist/contexts/Theme/ThemeContext.js.map +1 -1
- package/dist/contexts/Theme/ThemeProvider.d.ts +0 -4
- package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
- package/dist/contexts/Theme/ThemeProvider.js +2 -5
- package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts +2 -3
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.js +0 -2
- 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 +15 -91
- package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
- package/dist/index.d.ts +4 -40
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -27
- package/package.json +2 -2
- package/dist/api/createOrganization.d.ts +0 -86
- package/dist/api/createOrganization.d.ts.map +0 -1
- package/dist/api/createOrganization.js +0 -80
- package/dist/api/createOrganization.js.map +0 -1
- package/dist/api/getAllOrganizations.d.ts +0 -78
- package/dist/api/getAllOrganizations.d.ts.map +0 -1
- package/dist/api/getAllOrganizations.js +0 -71
- package/dist/api/getAllOrganizations.js.map +0 -1
- package/dist/api/getMeOrganizations.d.ts +0 -82
- package/dist/api/getMeOrganizations.d.ts.map +0 -1
- package/dist/api/getMeOrganizations.js +0 -75
- package/dist/api/getMeOrganizations.js.map +0 -1
- package/dist/api/getOrganization.d.ts +0 -74
- package/dist/api/getOrganization.d.ts.map +0 -1
- package/dist/api/getOrganization.js +0 -67
- package/dist/api/getOrganization.js.map +0 -1
- package/dist/api/getSchemas.d.ts +0 -72
- package/dist/api/getSchemas.d.ts.map +0 -1
- package/dist/api/getSchemas.js +0 -65
- package/dist/api/getSchemas.js.map +0 -1
- package/dist/api/updateOrganization.d.ts +0 -81
- package/dist/api/updateOrganization.d.ts.map +0 -1
- package/dist/api/updateOrganization.js +0 -74
- package/dist/api/updateOrganization.js.map +0 -1
- package/dist/cjs/api/createOrganization.cjs +0 -82
- package/dist/cjs/api/createOrganization.cjs.map +0 -1
- package/dist/cjs/api/getAllOrganizations.cjs +0 -73
- package/dist/cjs/api/getAllOrganizations.cjs.map +0 -1
- package/dist/cjs/api/getMeOrganizations.cjs +0 -77
- package/dist/cjs/api/getMeOrganizations.cjs.map +0 -1
- package/dist/cjs/api/getOrganization.cjs +0 -69
- package/dist/cjs/api/getOrganization.cjs.map +0 -1
- package/dist/cjs/api/getSchemas.cjs +0 -67
- package/dist/cjs/api/getSchemas.cjs.map +0 -1
- package/dist/cjs/api/updateOrganization.cjs +0 -76
- package/dist/cjs/api/updateOrganization.cjs.map +0 -1
- package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs +0 -34
- package/dist/cjs/components/control/OrganizationContext/OrganizationContext.cjs.map +0 -1
- package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs +0 -58
- package/dist/cjs/components/control/OrganizationContext/OrganizationContextController.cjs.map +0 -1
- package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs +0 -183
- package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs.map +0 -1
- package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs +0 -150
- package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs +0 -90
- package/dist/cjs/components/presentation/CreateOrganization/CreateOrganization.cjs.map +0 -1
- package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs +0 -41
- package/dist/cjs/components/presentation/Organization/BaseOrganization.cjs.map +0 -1
- package/dist/cjs/components/presentation/Organization/Organization.cjs +0 -49
- package/dist/cjs/components/presentation/Organization/Organization.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs +0 -257
- package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs +0 -236
- package/dist/cjs/components/presentation/OrganizationList/BaseOrganizationList.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs +0 -86
- package/dist/cjs/components/presentation/OrganizationList/OrganizationList.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs +0 -75
- package/dist/cjs/components/presentation/OrganizationList/OrganizationList.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs +0 -328
- package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs +0 -166
- package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs +0 -126
- package/dist/cjs/components/presentation/OrganizationProfile/OrganizationProfile.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs +0 -288
- package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs +0 -237
- package/dist/cjs/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs +0 -127
- package/dist/cjs/components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs +0 -183
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs +0 -128
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs.map +0 -1
- package/dist/cjs/components/primitives/Icons/Building.cjs +0 -75
- package/dist/cjs/components/primitives/Icons/Building.cjs.map +0 -1
- package/dist/cjs/contexts/Branding/BrandingContext.cjs +0 -12
- package/dist/cjs/contexts/Branding/BrandingContext.cjs.map +0 -1
- package/dist/cjs/contexts/Branding/BrandingProvider.cjs +0 -96
- package/dist/cjs/contexts/Branding/BrandingProvider.cjs.map +0 -1
- package/dist/cjs/contexts/Branding/useBrandingContext.cjs +0 -40
- package/dist/cjs/contexts/Branding/useBrandingContext.cjs.map +0 -1
- package/dist/cjs/contexts/Organization/OrganizationContext.cjs +0 -27
- package/dist/cjs/contexts/Organization/OrganizationContext.cjs.map +0 -1
- package/dist/cjs/contexts/Organization/OrganizationProvider.cjs +0 -97
- package/dist/cjs/contexts/Organization/OrganizationProvider.cjs.map +0 -1
- package/dist/cjs/contexts/Organization/useOrganization.cjs +0 -100
- package/dist/cjs/contexts/Organization/useOrganization.cjs.map +0 -1
- package/dist/cjs/hooks/useBranding.cjs +0 -71
- package/dist/cjs/hooks/useBranding.cjs.map +0 -1
- package/dist/components/control/OrganizationContext/OrganizationContext.d.ts +0 -40
- package/dist/components/control/OrganizationContext/OrganizationContext.d.ts.map +0 -1
- package/dist/components/control/OrganizationContext/OrganizationContext.js +0 -32
- package/dist/components/control/OrganizationContext/OrganizationContext.js.map +0 -1
- package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts +0 -35
- package/dist/components/control/OrganizationContext/OrganizationContextController.d.ts.map +0 -1
- package/dist/components/control/OrganizationContext/OrganizationContextController.js +0 -55
- package/dist/components/control/OrganizationContext/OrganizationContextController.js.map +0 -1
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts +0 -60
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.d.ts.map +0 -1
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js +0 -178
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js.map +0 -1
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts +0 -27
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.d.ts.map +0 -1
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js +0 -147
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.styles.js.map +0 -1
- package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts +0 -68
- package/dist/components/presentation/CreateOrganization/CreateOrganization.d.ts.map +0 -1
- package/dist/components/presentation/CreateOrganization/CreateOrganization.js +0 -87
- package/dist/components/presentation/CreateOrganization/CreateOrganization.js.map +0 -1
- package/dist/components/presentation/Organization/BaseOrganization.d.ts +0 -67
- package/dist/components/presentation/Organization/BaseOrganization.d.ts.map +0 -1
- package/dist/components/presentation/Organization/BaseOrganization.js +0 -39
- package/dist/components/presentation/Organization/BaseOrganization.js.map +0 -1
- package/dist/components/presentation/Organization/Organization.d.ts +0 -67
- package/dist/components/presentation/Organization/Organization.d.ts.map +0 -1
- package/dist/components/presentation/Organization/Organization.js +0 -47
- package/dist/components/presentation/Organization/Organization.js.map +0 -1
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts +0 -135
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.js +0 -252
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.js.map +0 -1
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts +0 -27
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js +0 -233
- package/dist/components/presentation/OrganizationList/BaseOrganizationList.styles.js.map +0 -1
- package/dist/components/presentation/OrganizationList/OrganizationList.d.ts +0 -93
- package/dist/components/presentation/OrganizationList/OrganizationList.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationList/OrganizationList.js +0 -82
- package/dist/components/presentation/OrganizationList/OrganizationList.js.map +0 -1
- package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts +0 -27
- package/dist/components/presentation/OrganizationList/OrganizationList.styles.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationList/OrganizationList.styles.js +0 -72
- package/dist/components/presentation/OrganizationList/OrganizationList.styles.js.map +0 -1
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts +0 -160
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js +0 -323
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js.map +0 -1
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts +0 -27
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js +0 -163
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.js.map +0 -1
- package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts +0 -120
- package/dist/components/presentation/OrganizationProfile/OrganizationProfile.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js +0 -122
- package/dist/components/presentation/OrganizationProfile/OrganizationProfile.js.map +0 -1
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts +0 -149
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js +0 -282
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.js.map +0 -1
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts +0 -27
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js +0 -234
- package/dist/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.js.map +0 -1
- package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts +0 -71
- package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.d.ts.map +0 -1
- package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js +0 -124
- package/dist/components/presentation/OrganizationSwitcher/OrganizationSwitcher.js.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts +0 -30
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js +0 -179
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts +0 -21
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js +0 -125
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts +0 -20
- package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts.map +0 -1
- package/dist/components/primitives/Icons/Building.js +0 -73
- package/dist/components/primitives/Icons/Building.js.map +0 -1
- package/dist/contexts/Branding/BrandingContext.d.ts +0 -53
- package/dist/contexts/Branding/BrandingContext.d.ts.map +0 -1
- package/dist/contexts/Branding/BrandingContext.js +0 -10
- package/dist/contexts/Branding/BrandingContext.js.map +0 -1
- package/dist/contexts/Branding/BrandingProvider.d.ts +0 -89
- package/dist/contexts/Branding/BrandingProvider.d.ts.map +0 -1
- package/dist/contexts/Branding/BrandingProvider.js +0 -92
- package/dist/contexts/Branding/BrandingProvider.js.map +0 -1
- package/dist/contexts/Branding/useBrandingContext.d.ts +0 -45
- package/dist/contexts/Branding/useBrandingContext.d.ts.map +0 -1
- package/dist/contexts/Branding/useBrandingContext.js +0 -38
- package/dist/contexts/Branding/useBrandingContext.js.map +0 -1
- package/dist/contexts/Organization/OrganizationContext.d.ts +0 -41
- package/dist/contexts/Organization/OrganizationContext.d.ts.map +0 -1
- package/dist/contexts/Organization/OrganizationContext.js +0 -25
- package/dist/contexts/Organization/OrganizationContext.js.map +0 -1
- package/dist/contexts/Organization/OrganizationProvider.d.ts +0 -94
- package/dist/contexts/Organization/OrganizationProvider.d.ts.map +0 -1
- package/dist/contexts/Organization/OrganizationProvider.js +0 -93
- package/dist/contexts/Organization/OrganizationProvider.js.map +0 -1
- package/dist/contexts/Organization/useOrganization.d.ts +0 -105
- package/dist/contexts/Organization/useOrganization.d.ts.map +0 -1
- package/dist/contexts/Organization/useOrganization.js +0 -98
- package/dist/contexts/Organization/useOrganization.js.map +0 -1
- package/dist/hooks/useBranding.d.ts +0 -128
- package/dist/hooks/useBranding.d.ts.map +0 -1
- package/dist/hooks/useBranding.js +0 -69
- package/dist/hooks/useBranding.js.map +0 -1
|
@@ -2,12 +2,10 @@ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
|
2
2
|
const require_ThunderIDContext = require('./ThunderIDContext.cjs');
|
|
3
3
|
const require_useBrowserUrl = require('../../hooks/useBrowserUrl.cjs');
|
|
4
4
|
const require_ThunderIDReactClient = require('../../ThunderIDReactClient.cjs');
|
|
5
|
-
const require_BrandingProvider = require('../Branding/BrandingProvider.cjs');
|
|
6
5
|
const require_ComponentRendererProvider = require('../ComponentRenderer/ComponentRendererProvider.cjs');
|
|
7
6
|
const require_FlowProvider = require('../Flow/FlowProvider.cjs');
|
|
8
7
|
const require_FlowMetaProvider = require('../FlowMeta/FlowMetaProvider.cjs');
|
|
9
8
|
const require_I18nProvider = require('../I18n/I18nProvider.cjs');
|
|
10
|
-
const require_OrganizationProvider = require('../Organization/OrganizationProvider.cjs');
|
|
11
9
|
const require_ThemeProvider = require('../Theme/ThemeProvider.cjs');
|
|
12
10
|
const require_UserProvider = require('../User/UserProvider.cjs');
|
|
13
11
|
let __thunderid_browser = require("@thunderid/browser");
|
|
@@ -25,11 +23,9 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
25
23
|
const storageManagerRef = (0, react.useRef)(null);
|
|
26
24
|
const { hasAuthParams, hasCalledForThisInstance } = require_useBrowserUrl.default();
|
|
27
25
|
const [user, setUser] = (0, react.useState)(null);
|
|
28
|
-
const [currentOrganization, setCurrentOrganization] = (0, react.useState)(null);
|
|
29
26
|
const [isSignedInSync, setIsSignedInSync] = (0, react.useState)(false);
|
|
30
27
|
const [isInitializedSync, setIsInitializedSync] = (0, react.useState)(false);
|
|
31
28
|
const [isLoadingSync, setIsLoadingSync] = (0, react.useState)(true);
|
|
32
|
-
const [myOrganizations, setMyOrganizations] = (0, react.useState)([]);
|
|
33
29
|
const [userProfile, setUserProfile] = (0, react.useState)(null);
|
|
34
30
|
const [baseUrl, setBaseUrl] = (0, react.useState)(initialBaseUrl ?? "");
|
|
35
31
|
const [config, setConfig] = (0, react.useState)({
|
|
@@ -50,18 +46,9 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
50
46
|
});
|
|
51
47
|
const [isUpdatingSession, setIsUpdatingSession] = (0, react.useState)(false);
|
|
52
48
|
const [wellKnown, setWellKnown] = (0, react.useState)(null);
|
|
53
|
-
const [brandingPreference, setBrandingPreference] = (0, react.useState)(null);
|
|
54
|
-
const [isBrandingLoading, setIsBrandingLoading] = (0, react.useState)(false);
|
|
55
|
-
const [brandingError, setBrandingError] = (0, react.useState)(null);
|
|
56
|
-
const [hasFetchedBranding, setHasFetchedBranding] = (0, react.useState)(false);
|
|
57
49
|
(0, react.useEffect)(() => {
|
|
58
50
|
setBaseUrl(initialBaseUrl ?? "");
|
|
59
|
-
|
|
60
|
-
setHasFetchedBranding(false);
|
|
61
|
-
setBrandingPreference(null);
|
|
62
|
-
setBrandingError(null);
|
|
63
|
-
}
|
|
64
|
-
}, [initialBaseUrl, baseUrl]);
|
|
51
|
+
}, [initialBaseUrl]);
|
|
65
52
|
(0, react.useEffect)(() => {
|
|
66
53
|
(async () => {
|
|
67
54
|
await client.initialize(config);
|
|
@@ -205,37 +192,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
205
192
|
isSignedInSync,
|
|
206
193
|
isUpdatingSession
|
|
207
194
|
]);
|
|
208
|
-
const fetchBranding = (0, react.useCallback)(async () => {
|
|
209
|
-
if (!baseUrl) return;
|
|
210
|
-
if (isBrandingLoading) return;
|
|
211
|
-
setIsBrandingLoading(true);
|
|
212
|
-
setBrandingError(null);
|
|
213
|
-
try {
|
|
214
|
-
setBrandingPreference(await (0, __thunderid_browser.getBrandingPreference)({
|
|
215
|
-
baseUrl,
|
|
216
|
-
locale: preferences?.i18n?.language
|
|
217
|
-
}));
|
|
218
|
-
setHasFetchedBranding(true);
|
|
219
|
-
} catch (err) {
|
|
220
|
-
setBrandingError(err instanceof Error ? err : /* @__PURE__ */ new Error("Failed to fetch branding preference"));
|
|
221
|
-
setBrandingPreference(null);
|
|
222
|
-
setHasFetchedBranding(true);
|
|
223
|
-
} finally {
|
|
224
|
-
setIsBrandingLoading(false);
|
|
225
|
-
}
|
|
226
|
-
}, [baseUrl, preferences?.i18n?.language]);
|
|
227
|
-
const refetchBranding = (0, react.useCallback)(async () => {
|
|
228
|
-
setHasFetchedBranding(false);
|
|
229
|
-
await fetchBranding();
|
|
230
|
-
}, [fetchBranding]);
|
|
231
|
-
(0, react.useEffect)(() => {}, [
|
|
232
|
-
preferences?.theme?.inheritFromBranding,
|
|
233
|
-
isInitializedSync,
|
|
234
|
-
baseUrl,
|
|
235
|
-
hasFetchedBranding,
|
|
236
|
-
isBrandingLoading,
|
|
237
|
-
fetchBranding
|
|
238
|
-
]);
|
|
239
195
|
const signInSilently = async (options) => {
|
|
240
196
|
try {
|
|
241
197
|
setIsUpdatingSession(true);
|
|
@@ -248,20 +204,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
248
204
|
setIsLoadingSync(client.isLoading());
|
|
249
205
|
}
|
|
250
206
|
};
|
|
251
|
-
const switchOrganization = async (organization) => {
|
|
252
|
-
try {
|
|
253
|
-
setIsUpdatingSession(true);
|
|
254
|
-
setIsLoadingSync(true);
|
|
255
|
-
const response = await client.switchOrganization(organization);
|
|
256
|
-
if (await client.isSignedIn()) await updateSession();
|
|
257
|
-
return response;
|
|
258
|
-
} catch (error) {
|
|
259
|
-
throw new __thunderid_browser.ThunderIDRuntimeError(`Failed to switch organization: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`, "thunderid-switchOrganization-Error", "react", "An error occurred while switching to the specified organization.");
|
|
260
|
-
} finally {
|
|
261
|
-
setIsUpdatingSession(false);
|
|
262
|
-
setIsLoadingSync(client.isLoading());
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
207
|
const handleProfileUpdate = (payload) => {
|
|
266
208
|
setUser(payload);
|
|
267
209
|
setUserProfile((prev) => ({
|
|
@@ -307,7 +249,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
307
249
|
isInitialized: isInitializedSync,
|
|
308
250
|
isLoading: isLoadingSync,
|
|
309
251
|
isSignedIn: isSignedInSync,
|
|
310
|
-
organization: currentOrganization,
|
|
311
252
|
organizationChain,
|
|
312
253
|
organizationHandle: config?.organizationHandle,
|
|
313
254
|
reInitialize,
|
|
@@ -320,7 +261,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
320
261
|
signOut,
|
|
321
262
|
signUp,
|
|
322
263
|
signUpUrl,
|
|
323
|
-
switchOrganization,
|
|
324
264
|
syncSession,
|
|
325
265
|
user
|
|
326
266
|
}), [
|
|
@@ -336,7 +276,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
336
276
|
isInitializedSync,
|
|
337
277
|
isLoadingSync,
|
|
338
278
|
isSignedInSync,
|
|
339
|
-
currentOrganization,
|
|
340
279
|
signIn,
|
|
341
280
|
signInSilently,
|
|
342
281
|
user,
|
|
@@ -344,7 +283,6 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
344
283
|
signInOptions,
|
|
345
284
|
tokenRequest,
|
|
346
285
|
syncSession,
|
|
347
|
-
switchOrganization,
|
|
348
286
|
getDecodedIdToken,
|
|
349
287
|
clearSession,
|
|
350
288
|
exchangeToken,
|
|
@@ -365,33 +303,19 @@ const ThunderIDProvider = ({ afterSignInUrl, afterSignOutUrl, baseUrl: initialBa
|
|
|
365
303
|
preferences: preferences?.i18n,
|
|
366
304
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FlowMetaProvider.default, {
|
|
367
305
|
enabled: preferences?.resolveFromMeta !== false,
|
|
368
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
onUpdateProfile: handleProfileUpdate,
|
|
382
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_OrganizationProvider.default, {
|
|
383
|
-
getAllOrganizations: async () => client.getAllOrganizations(),
|
|
384
|
-
myOrganizations,
|
|
385
|
-
currentOrganization,
|
|
386
|
-
onOrganizationSwitch: switchOrganization,
|
|
387
|
-
revalidateMyOrganizations: async () => client.getMyOrganizations(),
|
|
388
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ComponentRendererProvider.default, {
|
|
389
|
-
renderers: extensions?.components?.renderers ?? {},
|
|
390
|
-
children
|
|
391
|
-
})
|
|
392
|
-
})
|
|
393
|
-
}) })
|
|
394
|
-
})
|
|
306
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ThemeProvider.default, {
|
|
307
|
+
theme: {
|
|
308
|
+
...preferences?.theme?.overrides,
|
|
309
|
+
direction: preferences?.theme?.direction
|
|
310
|
+
},
|
|
311
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_FlowProvider.default, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_UserProvider.default, {
|
|
312
|
+
profile: userProfile,
|
|
313
|
+
onUpdateProfile: handleProfileUpdate,
|
|
314
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ComponentRendererProvider.default, {
|
|
315
|
+
renderers: extensions?.components?.renderers ?? {},
|
|
316
|
+
children
|
|
317
|
+
})
|
|
318
|
+
}) })
|
|
395
319
|
})
|
|
396
320
|
})
|
|
397
321
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDProvider.cjs","names":["logger: ReturnType<typeof createPackageComponentLogger>","ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>>","reRenderCheckRef: RefObject<boolean>","client: ThunderIDReactClient","ThunderIDReactClient","storageManagerRef: any","useBrowserUrl","resolvedBaseUrl: string","decodedToken: IdToken","claims: User","arg1: any","isV2FlowRequest: boolean","ThunderIDRuntimeError","isAlreadySignedIn: boolean","currentUrl: URL","urlParams: URLSearchParams","code: string | null","executionIdFromUrl: string | null","storedExecutionId: string | null","interval: NodeJS.Timeout","status: boolean","fetchBranding: () => Promise<void>","refetchBranding: () => Promise<void>","response: TokenResponse | Response","getDecodedIdToken: () => Promise<IdToken>","getIdToken: () => Promise<string>","getAccessToken: () => Promise<string>","getStorageManager: () => Promise<any>","storageManager: any","request: (...args: any[]) => Promise<any>","requestAll: (...args: any[]) => Promise<any>","exchangeToken: (exchangeConfig: any) => Promise<any>","signOut: (...args: any[]) => Promise<any>","recover: (payload: any) => Promise<any>","signUp: (...args: any[]) => Promise<any>","clearSession: (...args: any[]) => Promise<any>","reInitialize: (reInitConfig: any) => Promise<any>","value: any","ThunderIDContext","I18nProvider","FlowMetaProvider","BrandingProvider","ThemeProvider","FlowProvider","UserProvider","OrganizationProvider","ComponentRendererProvider"],"sources":["../../../../src/contexts/ThunderID/ThunderIDProvider.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n AllOrganizationsApiResponse,\n ThunderIDRuntimeError,\n generateFlattenedUserProfile,\n OIDCDiscoveryApiResponse,\n Organization,\n SignInOptions,\n User,\n UserProfile,\n getBrandingPreference,\n GetBrandingPreferenceConfig,\n BrandingPreference,\n IdToken,\n extractUserClaimsFromIdToken,\n EmbeddedSignInFlowResponse,\n TokenResponse,\n createPackageComponentLogger,\n} from '@thunderid/browser';\nimport {FC, RefObject, PropsWithChildren, ReactElement, useEffect, useMemo, useRef, useState, useCallback} from 'react';\nimport ThunderIDContext from './ThunderIDContext';\nimport useBrowserUrl from '../../hooks/useBrowserUrl';\nimport {ThunderIDReactConfig} from '../../models/config';\nimport ThunderIDReactClient from '../../ThunderIDReactClient';\nimport BrandingProvider from '../Branding/BrandingProvider';\nimport ComponentRendererProvider from '../ComponentRenderer/ComponentRendererProvider';\nimport FlowProvider from '../Flow/FlowProvider';\nimport FlowMetaProvider from '../FlowMeta/FlowMetaProvider';\nimport I18nProvider from '../I18n/I18nProvider';\nimport OrganizationProvider from '../Organization/OrganizationProvider';\nimport ThemeProvider from '../Theme/ThemeProvider';\nimport UserProvider from '../User/UserProvider';\n\nconst logger: ReturnType<typeof createPackageComponentLogger> = createPackageComponentLogger(\n '@thunderid/react',\n 'ThunderIDProvider',\n);\n\n/**\n * Props interface of {@link ThunderIDProvider}\n */\nexport type ThunderIDProviderProps = ThunderIDReactConfig;\n\nconst ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>> = ({\n afterSignInUrl,\n afterSignOutUrl,\n baseUrl: initialBaseUrl,\n clientId,\n children,\n extensions,\n scopes,\n preferences,\n signInUrl,\n signUpUrl,\n organizationHandle,\n applicationId,\n signInOptions,\n tokenRequest,\n syncSession,\n instanceId = 0,\n organizationChain,\n ...rest\n}: PropsWithChildren<ThunderIDProviderProps>): ReactElement => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const client: ThunderIDReactClient = useMemo(() => new ThunderIDReactClient(instanceId), [instanceId]);\n const storageManagerRef: any = useRef<any>(null);\n const {hasAuthParams, hasCalledForThisInstance} = useBrowserUrl();\n const [user, setUser] = useState<any | null>(null);\n const [currentOrganization, setCurrentOrganization] = useState<Organization | null>(null);\n\n const [isSignedInSync, setIsSignedInSync] = useState<boolean>(false);\n const [isInitializedSync, setIsInitializedSync] = useState<boolean>(false);\n const [isLoadingSync, setIsLoadingSync] = useState<boolean>(true);\n\n const [myOrganizations, setMyOrganizations] = useState<Organization[]>([]);\n const [userProfile, setUserProfile] = useState<UserProfile | null>(null);\n const [baseUrl, setBaseUrl] = useState<string>(initialBaseUrl ?? '');\n const [config, setConfig] = useState<ThunderIDReactConfig>({\n afterSignInUrl: afterSignInUrl ?? window.location.origin,\n afterSignOutUrl: afterSignOutUrl ?? window.location.origin,\n applicationId,\n baseUrl,\n clientId,\n organizationChain,\n organizationHandle,\n scopes,\n signInOptions,\n tokenRequest,\n signInUrl,\n signUpUrl,\n syncSession,\n ...rest,\n });\n\n const [isUpdatingSession, setIsUpdatingSession] = useState<boolean>(false);\n const [wellKnown, setWellKnown] = useState<OIDCDiscoveryApiResponse | null>(null);\n\n // Branding state\n const [brandingPreference, setBrandingPreference] = useState<BrandingPreference | null>(null);\n const [isBrandingLoading, setIsBrandingLoading] = useState<boolean>(false);\n const [brandingError, setBrandingError] = useState<Error | null>(null);\n const [hasFetchedBranding, setHasFetchedBranding] = useState<boolean>(false);\n\n useEffect(() => {\n setBaseUrl(initialBaseUrl ?? '');\n // Reset branding state when baseUrl changes\n if (initialBaseUrl !== baseUrl) {\n setHasFetchedBranding(false);\n setBrandingPreference(null);\n setBrandingError(null);\n }\n }, [initialBaseUrl, baseUrl]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n await client.initialize(config);\n const initializedConfig: ThunderIDReactConfig = await client.getConfiguration();\n setConfig(initializedConfig);\n setWellKnown(await client.getDiscoveryResponse());\n })();\n }, []);\n\n async function updateSession(): Promise<void> {\n try {\n // Set flag to prevent loading state tracking from interfering\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n let resolvedBaseUrl: string = baseUrl;\n\n const decodedToken: IdToken = await client.getDecodedIdToken();\n\n // If there's a `user_org` claim in the ID token,\n // Treat this login as a organization login.\n if (decodedToken?.['user_org']) {\n resolvedBaseUrl = `${(await client.getConfiguration()).baseUrl}/o`;\n setBaseUrl(resolvedBaseUrl);\n }\n\n // TEMPORARY: SCIM2 and Organizations endpoints are not yet supported.\n const claims: User = extractUserClaimsFromIdToken(decodedToken) as User;\n setUser(claims);\n setUserProfile({\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n });\n\n // CRITICAL: Update sign-in status BEFORE setting loading to false\n // This prevents the race condition where ProtectedRoute sees isLoading=false but isSignedIn=false\n const currentSignInStatus: boolean = await client.isSignedIn();\n setIsSignedInSync(currentSignInStatus);\n } catch (error) {\n // TODO: Add an error log.\n } finally {\n // Clear the flag and set final loading state\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n\n async function signIn(...args: any): Promise<User | EmbeddedSignInFlowResponse> {\n // Check if this is a V2 embedded flow request BEFORE calling signIn\n // This allows us to skip session checks entirely for V2 flows\n const arg1: any = args[0];\n const isV2FlowRequest: boolean =\n typeof arg1 === 'object' && arg1 !== null && ('executionId' in arg1 || 'applicationId' in arg1);\n\n try {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n }\n\n return await client.signIn(...args);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n } finally {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n }\n\n /**\n * Try signing in when the component is mounted.\n */\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n (async (): Promise<void> => {\n // Sync session state whenever sign-in completes (both redirect and embedded V2 flows).\n // Pass the user returned by the SDK's sign-in flow so SCIM2/Me result is not discarded.\n await client.on('sign-in', async () => {\n await updateSession();\n });\n\n // User is already authenticated. Skip...\n const isAlreadySignedIn: boolean = await client.isSignedIn();\n\n // Start auto-refresh with a soft failure.\n const scheduleAutoRefresh = async (): Promise<void> => {\n try {\n await client.startAutoRefreshToken();\n } catch (error) {\n logger.warn('Failed to schedule automatic token refresh.', error);\n }\n };\n\n // Restore session state and kick off the refresh timer.\n const resumeSession = async (): Promise<void> => {\n await updateSession();\n await scheduleAutoRefresh();\n };\n\n if (isAlreadySignedIn) {\n await resumeSession();\n }\n\n // The access token may have expired while the refresh token is still valid.\n // Attempt a silent refresh — startAutoRefreshToken() calls refreshAccessToken()\n // immediately when timeUntilRefresh <= 0, then re-check sign-in status.\n await scheduleAutoRefresh();\n\n if (await client.isSignedIn()) {\n await resumeSession();\n return;\n }\n\n const currentUrl: URL = new URL(window.location.href);\n const hasAuthParamsResult: boolean =\n hasAuthParams(currentUrl, config.afterSignInUrl!) && hasCalledForThisInstance(currentUrl, instanceId ?? 0);\n\n if (hasAuthParamsResult) {\n try {\n const urlParams: URLSearchParams = currentUrl.searchParams;\n const code: string | null = urlParams.get('code');\n const executionIdFromUrl: string | null = urlParams.get('executionId');\n const storedExecutionId: string | null = sessionStorage.getItem('thunderid_execution_id');\n\n if (code && !executionIdFromUrl && !storedExecutionId) {\n await signIn();\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n }\n }\n })();\n }, []);\n\n /**\n * Check if the user is signed in and update the state accordingly.\n * This will also set an interval to check for the sign-in status every second\n * until the user is signed in.\n */\n useEffect(() => {\n let interval: NodeJS.Timeout;\n\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isSignedIn();\n\n setIsSignedInSync(status);\n\n if (!status) {\n interval = setInterval(async () => {\n const newStatus: boolean = await client.isSignedIn();\n\n if (newStatus) {\n setIsSignedInSync(true);\n clearInterval(interval);\n }\n }, 1000);\n } else {\n // TODO: Add a debug log to indicate that the user is already signed in.\n }\n } catch (error) {\n setIsSignedInSync(false);\n }\n })();\n\n return (): void => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [client]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isInitialized();\n\n setIsInitializedSync(status);\n } catch (error) {\n setIsInitializedSync(false);\n }\n })();\n }, [client]);\n\n /**\n * Track loading state changes from the ThunderID client\n */\n useEffect(() => {\n const checkLoadingState = (): void => {\n // Don't override loading state during critical session updates\n if (isUpdatingSession) {\n return;\n }\n\n // Don't set loading=false while auth params are in the URL and user isn't signed in yet.\n // This prevents ProtectedRoute from redirecting before the sign-in effect processes the auth code.\n const currentUrl: URL = new URL(window.location.href);\n if (!isSignedInSync && hasAuthParams(currentUrl, config.afterSignInUrl!)) {\n return;\n }\n\n setIsLoadingSync(client.isLoading());\n };\n\n // Initial check\n checkLoadingState();\n\n // Set up an interval to check for loading state changes\n const interval: NodeJS.Timeout = setInterval(checkLoadingState, 100);\n\n return (): void => {\n clearInterval(interval);\n };\n }, [client, isLoadingSync, isSignedInSync, isUpdatingSession]);\n\n // Branding fetch function\n const fetchBranding: () => Promise<void> = useCallback(async (): Promise<void> => {\n if (!baseUrl) {\n return;\n }\n\n // Prevent multiple calls if already fetching\n if (isBrandingLoading) {\n return;\n }\n\n setIsBrandingLoading(true);\n setBrandingError(null);\n\n try {\n const getBrandingConfig: GetBrandingPreferenceConfig = {\n baseUrl,\n locale: preferences?.i18n?.language,\n // Add other branding config options as needed\n };\n\n const brandingData: BrandingPreference = await getBrandingPreference(getBrandingConfig);\n setBrandingPreference(brandingData);\n setHasFetchedBranding(true);\n } catch (err) {\n const errorMessage: Error = err instanceof Error ? err : new Error('Failed to fetch branding preference');\n setBrandingError(errorMessage);\n setBrandingPreference(null);\n setHasFetchedBranding(true); // Mark as fetched even on error to prevent retries\n } finally {\n setIsBrandingLoading(false);\n }\n }, [baseUrl, preferences?.i18n?.language]);\n\n // Refetch branding function\n const refetchBranding: () => Promise<void> = useCallback(async (): Promise<void> => {\n setHasFetchedBranding(false); // Reset the flag to allow refetching\n await fetchBranding();\n }, [fetchBranding]);\n\n // Auto-fetch branding when initialized and configured\n useEffect(() => {\n // TEMPORARY: Branding preference is not yet supported.\n return;\n\n // Only fetch branding when explicitly enabled via preferences.theme.inheritFromBranding\n const shouldFetchBranding: boolean = preferences?.theme?.inheritFromBranding === true;\n\n if (shouldFetchBranding && isInitializedSync && baseUrl && !hasFetchedBranding && !isBrandingLoading) {\n fetchBranding();\n }\n }, [\n preferences?.theme?.inheritFromBranding,\n isInitializedSync,\n baseUrl,\n hasFetchedBranding,\n isBrandingLoading,\n fetchBranding,\n ]);\n\n const signInSilently = async (options?: SignInOptions): Promise<User | boolean> => {\n try {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n return await client.signInSilently(options);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Error while signing in silently: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signInSilently-Error',\n 'react',\n 'An error occurred while trying to sign in silently.',\n );\n } finally {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n };\n\n const switchOrganization = async (organization: Organization): Promise<TokenResponse | Response> => {\n try {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n const response: TokenResponse | Response = await client.switchOrganization(organization);\n\n if (await client.isSignedIn()) {\n await updateSession();\n }\n\n return response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-switchOrganization-Error',\n 'react',\n 'An error occurred while switching to the specified organization.',\n );\n } finally {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n };\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile | null) => ({\n schemas: prev?.schemas ?? [],\n flattenedProfile: generateFlattenedUserProfile(payload, prev?.schemas ?? []),\n profile: payload,\n }));\n };\n\n const getDecodedIdToken: () => Promise<IdToken> = useCallback(\n async (): Promise<IdToken> => client.getDecodedIdToken(),\n [client],\n );\n\n const getIdToken: () => Promise<string> = useCallback(async (): Promise<string> => client.getIdToken(), [client]);\n\n const getAccessToken: () => Promise<string> = useCallback(\n async (): Promise<string> => client.getAccessToken(),\n [client],\n );\n\n const getStorageManager: () => Promise<any> = useCallback(async (): Promise<any> => {\n const storageManager: any = storageManagerRef.current ?? (await client.getStorageManager());\n if (storageManager) {\n storageManagerRef.current = storageManager;\n }\n return storageManager;\n }, [client]);\n\n const request: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.request(...args),\n [client],\n );\n\n const requestAll: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.requestAll(...args),\n [client],\n );\n\n const exchangeToken: (exchangeConfig: any) => Promise<any> = useCallback(\n async (exchangeConfig: any): Promise<any> => client.exchangeToken(exchangeConfig),\n [client],\n );\n\n const signOut: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signOut(...args),\n [client],\n );\n\n const recover: (payload: any) => Promise<any> = useCallback(\n async (payload: any): Promise<any> => client.recover(payload),\n [client],\n );\n\n const signUp: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signUp(...args),\n [client],\n );\n\n const clearSession: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.clearSession(...args),\n [client],\n );\n\n const reInitialize: (reInitConfig: any) => Promise<any> = useCallback(\n async (reInitConfig: any): Promise<any> => client.reInitialize(reInitConfig),\n [client],\n );\n\n const value: any = useMemo(\n () => ({\n afterSignInUrl: config.afterSignInUrl,\n applicationId: config.applicationId,\n baseUrl,\n scopes: config.scopes,\n clearSession,\n clientId,\n discovery: {\n wellKnown,\n },\n exchangeToken,\n getAccessToken,\n getDecodedIdToken,\n getIdToken,\n getStorageManager,\n http: {\n request,\n requestAll,\n },\n instanceId,\n isInitialized: isInitializedSync,\n isLoading: isLoadingSync,\n isSignedIn: isSignedInSync,\n organization: currentOrganization,\n organizationChain,\n organizationHandle: config?.organizationHandle,\n reInitialize,\n recover,\n signIn,\n signInOptions,\n tokenRequest,\n signInSilently,\n signInUrl,\n signOut,\n signUp,\n signUpUrl,\n switchOrganization,\n syncSession,\n user,\n }),\n [\n applicationId,\n config?.organizationHandle,\n config.afterSignInUrl,\n config.scopes,\n signInUrl,\n signUpUrl,\n baseUrl,\n clientId,\n wellKnown,\n isInitializedSync,\n isLoadingSync,\n isSignedInSync,\n currentOrganization,\n signIn,\n signInSilently,\n user,\n client,\n signInOptions,\n tokenRequest,\n syncSession,\n switchOrganization,\n getDecodedIdToken,\n clearSession,\n exchangeToken,\n getAccessToken,\n getStorageManager,\n instanceId,\n organizationChain,\n recover,\n reInitialize,\n request,\n requestAll,\n signOut,\n signUp,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={value}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider enabled={preferences?.resolveFromMeta !== false}>\n <BrandingProvider\n brandingPreference={brandingPreference}\n isLoading={isBrandingLoading}\n error={brandingError}\n enabled={preferences?.theme?.inheritFromBranding === true}\n refetch={refetchBranding}\n >\n <ThemeProvider\n theme={{\n ...preferences?.theme?.overrides,\n direction: preferences?.theme?.direction,\n }}\n >\n <FlowProvider>\n <UserProvider profile={userProfile!} onUpdateProfile={handleProfileUpdate}>\n <OrganizationProvider\n getAllOrganizations={async (): Promise<AllOrganizationsApiResponse> => client.getAllOrganizations()}\n myOrganizations={myOrganizations}\n currentOrganization={currentOrganization}\n onOrganizationSwitch={switchOrganization}\n revalidateMyOrganizations={async (): Promise<Organization[]> => client.getMyOrganizations()}\n >\n <ComponentRendererProvider renderers={(extensions?.components?.renderers ?? {}) as any}>\n {children}\n </ComponentRendererProvider>\n </OrganizationProvider>\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </BrandingProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDProvider;\n"],"mappings":"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CA;EACD,GACD;EACE;EACA,QAAQ;EACR,OAAO;EACP,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,2CAACC,iCAAiB;EAAgB;YAChC,2CAACC;GAAa,aAAa,aAAa;aACtC,2CAACC;IAAiB,SAAS,aAAa,oBAAoB;cAC1D,2CAACC;KACqB;KACpB,WAAW;KACX,OAAO;KACP,SAAS,aAAa,OAAO,wBAAwB;KACrD,SAAS;eAET,2CAACC;MACC,OAAO;OACL,GAAG,aAAa,OAAO;OACvB,WAAW,aAAa,OAAO;OAChC;gBAED,2CAACC,0CACC,2CAACC;OAAa,SAAS;OAAc,iBAAiB;iBACpD,2CAACC;QACC,qBAAqB,YAAkD,OAAO,qBAAqB;QAClF;QACI;QACrB,sBAAsB;QACtB,2BAA2B,YAAqC,OAAO,oBAAoB;kBAE3F,2CAACC;SAA0B,WAAY,YAAY,YAAY,aAAa,EAAE;SAC3E;UACyB;SACP;QACV,GACF;OACD;MACC;KACF;IACN;GACW;;AAIhC,gCAAe"}
|
|
1
|
+
{"version":3,"file":"ThunderIDProvider.cjs","names":["logger: ReturnType<typeof createPackageComponentLogger>","ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>>","reRenderCheckRef: RefObject<boolean>","client: ThunderIDReactClient","ThunderIDReactClient","storageManagerRef: any","useBrowserUrl","resolvedBaseUrl: string","decodedToken: IdToken","claims: User","arg1: any","isV2FlowRequest: boolean","ThunderIDRuntimeError","isAlreadySignedIn: boolean","currentUrl: URL","urlParams: URLSearchParams","code: string | null","executionIdFromUrl: string | null","storedExecutionId: string | null","interval: NodeJS.Timeout","status: boolean","getDecodedIdToken: () => Promise<IdToken>","getIdToken: () => Promise<string>","getAccessToken: () => Promise<string>","getStorageManager: () => Promise<any>","storageManager: any","request: (...args: any[]) => Promise<any>","requestAll: (...args: any[]) => Promise<any>","exchangeToken: (exchangeConfig: any) => Promise<any>","signOut: (...args: any[]) => Promise<any>","recover: (payload: any) => Promise<any>","signUp: (...args: any[]) => Promise<any>","clearSession: (...args: any[]) => Promise<any>","reInitialize: (reInitConfig: any) => Promise<any>","value: any","ThunderIDContext","I18nProvider","FlowMetaProvider","ThemeProvider","FlowProvider","UserProvider","ComponentRendererProvider"],"sources":["../../../../src/contexts/ThunderID/ThunderIDProvider.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n ThunderIDRuntimeError,\n generateFlattenedUserProfile,\n OIDCDiscoveryApiResponse,\n SignInOptions,\n User,\n UserProfile,\n IdToken,\n extractUserClaimsFromIdToken,\n EmbeddedSignInFlowResponse,\n createPackageComponentLogger,\n} from '@thunderid/browser';\nimport {FC, RefObject, PropsWithChildren, ReactElement, useEffect, useMemo, useRef, useState, useCallback} from 'react';\nimport ThunderIDContext from './ThunderIDContext';\nimport useBrowserUrl from '../../hooks/useBrowserUrl';\nimport {ThunderIDReactConfig} from '../../models/config';\nimport ThunderIDReactClient from '../../ThunderIDReactClient';\nimport ComponentRendererProvider from '../ComponentRenderer/ComponentRendererProvider';\nimport FlowProvider from '../Flow/FlowProvider';\nimport FlowMetaProvider from '../FlowMeta/FlowMetaProvider';\nimport I18nProvider from '../I18n/I18nProvider';\nimport ThemeProvider from '../Theme/ThemeProvider';\nimport UserProvider from '../User/UserProvider';\n\nconst logger: ReturnType<typeof createPackageComponentLogger> = createPackageComponentLogger(\n '@thunderid/react',\n 'ThunderIDProvider',\n);\n\n/**\n * Props interface of {@link ThunderIDProvider}\n */\nexport type ThunderIDProviderProps = ThunderIDReactConfig;\n\nconst ThunderIDProvider: FC<PropsWithChildren<ThunderIDProviderProps>> = ({\n afterSignInUrl,\n afterSignOutUrl,\n baseUrl: initialBaseUrl,\n clientId,\n children,\n extensions,\n scopes,\n preferences,\n signInUrl,\n signUpUrl,\n organizationHandle,\n applicationId,\n signInOptions,\n tokenRequest,\n syncSession,\n instanceId = 0,\n organizationChain,\n ...rest\n}: PropsWithChildren<ThunderIDProviderProps>): ReactElement => {\n const reRenderCheckRef: RefObject<boolean> = useRef(false);\n const client: ThunderIDReactClient = useMemo(() => new ThunderIDReactClient(instanceId), [instanceId]);\n const storageManagerRef: any = useRef<any>(null);\n const {hasAuthParams, hasCalledForThisInstance} = useBrowserUrl();\n const [user, setUser] = useState<any | null>(null);\n const [isSignedInSync, setIsSignedInSync] = useState<boolean>(false);\n const [isInitializedSync, setIsInitializedSync] = useState<boolean>(false);\n const [isLoadingSync, setIsLoadingSync] = useState<boolean>(true);\n\n const [userProfile, setUserProfile] = useState<UserProfile | null>(null);\n const [baseUrl, setBaseUrl] = useState<string>(initialBaseUrl ?? '');\n const [config, setConfig] = useState<ThunderIDReactConfig>({\n afterSignInUrl: afterSignInUrl ?? window.location.origin,\n afterSignOutUrl: afterSignOutUrl ?? window.location.origin,\n applicationId,\n baseUrl,\n clientId,\n organizationChain,\n organizationHandle,\n scopes,\n signInOptions,\n tokenRequest,\n signInUrl,\n signUpUrl,\n syncSession,\n ...rest,\n });\n\n const [isUpdatingSession, setIsUpdatingSession] = useState<boolean>(false);\n const [wellKnown, setWellKnown] = useState<OIDCDiscoveryApiResponse | null>(null);\n\n useEffect(() => {\n setBaseUrl(initialBaseUrl ?? '');\n }, [initialBaseUrl]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n await client.initialize(config);\n const initializedConfig: ThunderIDReactConfig = await client.getConfiguration();\n setConfig(initializedConfig);\n setWellKnown(await client.getDiscoveryResponse());\n })();\n }, []);\n\n async function updateSession(): Promise<void> {\n try {\n // Set flag to prevent loading state tracking from interfering\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n let resolvedBaseUrl: string = baseUrl;\n\n const decodedToken: IdToken = await client.getDecodedIdToken();\n\n // If there's a `user_org` claim in the ID token,\n // Treat this login as a organization login.\n if (decodedToken?.['user_org']) {\n resolvedBaseUrl = `${(await client.getConfiguration()).baseUrl}/o`;\n setBaseUrl(resolvedBaseUrl);\n }\n\n // TEMPORARY: SCIM2 and Organizations endpoints are not yet supported.\n const claims: User = extractUserClaimsFromIdToken(decodedToken) as User;\n setUser(claims);\n setUserProfile({\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n });\n\n // CRITICAL: Update sign-in status BEFORE setting loading to false\n // This prevents the race condition where ProtectedRoute sees isLoading=false but isSignedIn=false\n const currentSignInStatus: boolean = await client.isSignedIn();\n setIsSignedInSync(currentSignInStatus);\n } catch (error) {\n // TODO: Add an error log.\n } finally {\n // Clear the flag and set final loading state\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n\n async function signIn(...args: any): Promise<User | EmbeddedSignInFlowResponse> {\n // Check if this is a V2 embedded flow request BEFORE calling signIn\n // This allows us to skip session checks entirely for V2 flows\n const arg1: any = args[0];\n const isV2FlowRequest: boolean =\n typeof arg1 === 'object' && arg1 !== null && ('executionId' in arg1 || 'applicationId' in arg1);\n\n try {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n }\n\n return await client.signIn(...args);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n } finally {\n if (!isV2FlowRequest) {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n }\n }\n\n /**\n * Try signing in when the component is mounted.\n */\n useEffect(() => {\n // React 18.x Strict.Mode has a new check for `Ensuring reusable state` to facilitate an upcoming react feature.\n // https://reactjs.org/docs/strict-mode.html#ensuring-reusable-state\n // This will remount all the useEffects to ensure that there are no unexpected side effects.\n // When react remounts the signIn hook of the AuthProvider, it will cause a race condition. Hence, we have to\n // prevent the re-render of this hook as suggested in the following discussion.\n // https://github.com/reactwg/react-18/discussions/18#discussioncomment-795623\n if (reRenderCheckRef.current) {\n return;\n }\n\n reRenderCheckRef.current = true;\n\n (async (): Promise<void> => {\n // Sync session state whenever sign-in completes (both redirect and embedded V2 flows).\n // Pass the user returned by the SDK's sign-in flow so SCIM2/Me result is not discarded.\n await client.on('sign-in', async () => {\n await updateSession();\n });\n\n // User is already authenticated. Skip...\n const isAlreadySignedIn: boolean = await client.isSignedIn();\n\n // Start auto-refresh with a soft failure.\n const scheduleAutoRefresh = async (): Promise<void> => {\n try {\n await client.startAutoRefreshToken();\n } catch (error) {\n logger.warn('Failed to schedule automatic token refresh.', error);\n }\n };\n\n // Restore session state and kick off the refresh timer.\n const resumeSession = async (): Promise<void> => {\n await updateSession();\n await scheduleAutoRefresh();\n };\n\n if (isAlreadySignedIn) {\n await resumeSession();\n }\n\n // The access token may have expired while the refresh token is still valid.\n // Attempt a silent refresh — startAutoRefreshToken() calls refreshAccessToken()\n // immediately when timeUntilRefresh <= 0, then re-check sign-in status.\n await scheduleAutoRefresh();\n\n if (await client.isSignedIn()) {\n await resumeSession();\n return;\n }\n\n const currentUrl: URL = new URL(window.location.href);\n const hasAuthParamsResult: boolean =\n hasAuthParams(currentUrl, config.afterSignInUrl!) && hasCalledForThisInstance(currentUrl, instanceId ?? 0);\n\n if (hasAuthParamsResult) {\n try {\n const urlParams: URLSearchParams = currentUrl.searchParams;\n const code: string | null = urlParams.get('code');\n const executionIdFromUrl: string | null = urlParams.get('executionId');\n const storedExecutionId: string | null = sessionStorage.getItem('thunderid_execution_id');\n\n if (code && !executionIdFromUrl && !storedExecutionId) {\n await signIn();\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signIn-Error',\n 'react',\n 'An error occurred while trying to sign in.',\n );\n }\n }\n })();\n }, []);\n\n /**\n * Check if the user is signed in and update the state accordingly.\n * This will also set an interval to check for the sign-in status every second\n * until the user is signed in.\n */\n useEffect(() => {\n let interval: NodeJS.Timeout;\n\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isSignedIn();\n\n setIsSignedInSync(status);\n\n if (!status) {\n interval = setInterval(async () => {\n const newStatus: boolean = await client.isSignedIn();\n\n if (newStatus) {\n setIsSignedInSync(true);\n clearInterval(interval);\n }\n }, 1000);\n } else {\n // TODO: Add a debug log to indicate that the user is already signed in.\n }\n } catch (error) {\n setIsSignedInSync(false);\n }\n })();\n\n return (): void => {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [client]);\n\n useEffect(() => {\n (async (): Promise<void> => {\n try {\n const status: boolean = await client.isInitialized();\n\n setIsInitializedSync(status);\n } catch (error) {\n setIsInitializedSync(false);\n }\n })();\n }, [client]);\n\n /**\n * Track loading state changes from the ThunderID client\n */\n useEffect(() => {\n const checkLoadingState = (): void => {\n // Don't override loading state during critical session updates\n if (isUpdatingSession) {\n return;\n }\n\n // Don't set loading=false while auth params are in the URL and user isn't signed in yet.\n // This prevents ProtectedRoute from redirecting before the sign-in effect processes the auth code.\n const currentUrl: URL = new URL(window.location.href);\n if (!isSignedInSync && hasAuthParams(currentUrl, config.afterSignInUrl!)) {\n return;\n }\n\n setIsLoadingSync(client.isLoading());\n };\n\n // Initial check\n checkLoadingState();\n\n // Set up an interval to check for loading state changes\n const interval: NodeJS.Timeout = setInterval(checkLoadingState, 100);\n\n return (): void => {\n clearInterval(interval);\n };\n }, [client, isLoadingSync, isSignedInSync, isUpdatingSession]);\n\n const signInSilently = async (options?: SignInOptions): Promise<User | boolean> => {\n try {\n setIsUpdatingSession(true);\n setIsLoadingSync(true);\n return await client.signInSilently(options);\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Error while signing in silently: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'thunderid-signInSilently-Error',\n 'react',\n 'An error occurred while trying to sign in silently.',\n );\n } finally {\n setIsUpdatingSession(false);\n setIsLoadingSync(client.isLoading());\n }\n };\n\n const handleProfileUpdate = (payload: User): void => {\n setUser(payload);\n setUserProfile((prev: UserProfile | null) => ({\n schemas: prev?.schemas ?? [],\n flattenedProfile: generateFlattenedUserProfile(payload, prev?.schemas ?? []),\n profile: payload,\n }));\n };\n\n const getDecodedIdToken: () => Promise<IdToken> = useCallback(\n async (): Promise<IdToken> => client.getDecodedIdToken(),\n [client],\n );\n\n const getIdToken: () => Promise<string> = useCallback(async (): Promise<string> => client.getIdToken(), [client]);\n\n const getAccessToken: () => Promise<string> = useCallback(\n async (): Promise<string> => client.getAccessToken(),\n [client],\n );\n\n const getStorageManager: () => Promise<any> = useCallback(async (): Promise<any> => {\n const storageManager: any = storageManagerRef.current ?? (await client.getStorageManager());\n if (storageManager) {\n storageManagerRef.current = storageManager;\n }\n return storageManager;\n }, [client]);\n\n const request: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.request(...args),\n [client],\n );\n\n const requestAll: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.requestAll(...args),\n [client],\n );\n\n const exchangeToken: (exchangeConfig: any) => Promise<any> = useCallback(\n async (exchangeConfig: any): Promise<any> => client.exchangeToken(exchangeConfig),\n [client],\n );\n\n const signOut: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signOut(...args),\n [client],\n );\n\n const recover: (payload: any) => Promise<any> = useCallback(\n async (payload: any): Promise<any> => client.recover(payload),\n [client],\n );\n\n const signUp: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.signUp(...args),\n [client],\n );\n\n const clearSession: (...args: any[]) => Promise<any> = useCallback(\n async (...args: any[]): Promise<any> => client.clearSession(...args),\n [client],\n );\n\n const reInitialize: (reInitConfig: any) => Promise<any> = useCallback(\n async (reInitConfig: any): Promise<any> => client.reInitialize(reInitConfig),\n [client],\n );\n\n const value: any = useMemo(\n () => ({\n afterSignInUrl: config.afterSignInUrl,\n applicationId: config.applicationId,\n baseUrl,\n scopes: config.scopes,\n clearSession,\n clientId,\n discovery: {\n wellKnown,\n },\n exchangeToken,\n getAccessToken,\n getDecodedIdToken,\n getIdToken,\n getStorageManager,\n http: {\n request,\n requestAll,\n },\n instanceId,\n isInitialized: isInitializedSync,\n isLoading: isLoadingSync,\n isSignedIn: isSignedInSync,\n organizationChain,\n organizationHandle: config?.organizationHandle,\n reInitialize,\n recover,\n signIn,\n signInOptions,\n tokenRequest,\n signInSilently,\n signInUrl,\n signOut,\n signUp,\n signUpUrl,\n syncSession,\n user,\n }),\n [\n applicationId,\n config?.organizationHandle,\n config.afterSignInUrl,\n config.scopes,\n signInUrl,\n signUpUrl,\n baseUrl,\n clientId,\n wellKnown,\n isInitializedSync,\n isLoadingSync,\n isSignedInSync,\n signIn,\n signInSilently,\n user,\n client,\n signInOptions,\n tokenRequest,\n syncSession,\n getDecodedIdToken,\n clearSession,\n exchangeToken,\n getAccessToken,\n getStorageManager,\n instanceId,\n organizationChain,\n recover,\n reInitialize,\n request,\n requestAll,\n signOut,\n signUp,\n ],\n );\n\n return (\n <ThunderIDContext.Provider value={value}>\n <I18nProvider preferences={preferences?.i18n}>\n <FlowMetaProvider enabled={preferences?.resolveFromMeta !== false}>\n <ThemeProvider\n theme={{\n ...preferences?.theme?.overrides,\n direction: preferences?.theme?.direction,\n }}\n >\n <FlowProvider>\n <UserProvider profile={userProfile!} onUpdateProfile={handleProfileUpdate}>\n <ComponentRendererProvider renderers={(extensions?.components?.renderers ?? {}) as any}>\n {children}\n </ComponentRendererProvider>\n </UserProvider>\n </FlowProvider>\n </ThemeProvider>\n </FlowMetaProvider>\n </I18nProvider>\n </ThunderIDContext.Provider>\n );\n};\n\nexport default ThunderIDProvider;\n"],"mappings":"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"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_ThunderIDContext = require('./contexts/ThunderID/ThunderIDContext.cjs');
|
|
3
3
|
const require_useBrowserUrl = require('./hooks/useBrowserUrl.cjs');
|
|
4
|
-
const require_getAllOrganizations = require('./api/getAllOrganizations.cjs');
|
|
5
|
-
const require_getMeOrganizations = require('./api/getMeOrganizations.cjs');
|
|
6
|
-
const require_BrandingContext = require('./contexts/Branding/BrandingContext.cjs');
|
|
7
|
-
const require_BrandingProvider = require('./contexts/Branding/BrandingProvider.cjs');
|
|
8
4
|
const require_FlowContext = require('./contexts/Flow/FlowContext.cjs');
|
|
9
5
|
const require_FlowProvider = require('./contexts/Flow/FlowProvider.cjs');
|
|
10
6
|
const require_I18nContext = require('./contexts/I18n/I18nContext.cjs');
|
|
@@ -12,20 +8,16 @@ const require_useI18n = require('./contexts/I18n/useI18n.cjs');
|
|
|
12
8
|
const require_useThunderID = require('./contexts/ThunderID/useThunderID.cjs');
|
|
13
9
|
const require_FlowMetaProvider = require('./contexts/FlowMeta/FlowMetaProvider.cjs');
|
|
14
10
|
const require_I18nProvider = require('./contexts/I18n/I18nProvider.cjs');
|
|
15
|
-
const require_OrganizationProvider = require('./contexts/Organization/OrganizationProvider.cjs');
|
|
16
11
|
const require_ThemeContext = require('./contexts/Theme/ThemeContext.cjs');
|
|
17
12
|
const require_ThemeProvider = require('./contexts/Theme/ThemeProvider.cjs');
|
|
18
13
|
const require_UserContext = require('./contexts/User/UserContext.cjs');
|
|
19
14
|
const require_UserProvider = require('./contexts/User/UserProvider.cjs');
|
|
20
15
|
const require_ThunderIDProvider = require('./contexts/ThunderID/ThunderIDProvider.cjs');
|
|
21
16
|
const require_useUser = require('./contexts/User/useUser.cjs');
|
|
22
|
-
const require_useOrganization = require('./contexts/Organization/useOrganization.cjs');
|
|
23
17
|
const require_useFlow = require('./contexts/Flow/useFlow.cjs');
|
|
24
18
|
const require_useTheme = require('./contexts/Theme/useTheme.cjs');
|
|
25
|
-
const require_useBrandingContext = require('./contexts/Branding/useBrandingContext.cjs');
|
|
26
19
|
const require_useTranslation = require('./hooks/useTranslation.cjs');
|
|
27
20
|
const require_useForm = require('./hooks/useForm.cjs');
|
|
28
|
-
const require_useBranding = require('./hooks/useBranding.cjs');
|
|
29
21
|
const require_Spinner = require('./components/primitives/Spinner/Spinner.cjs');
|
|
30
22
|
const require_Button = require('./components/primitives/Button/Button.cjs');
|
|
31
23
|
const require_BaseSignInButton = require('./components/actions/SignInButton/BaseSignInButton.cjs');
|
|
@@ -37,7 +29,6 @@ const require_SignUpButton = require('./components/actions/SignUpButton/SignUpBu
|
|
|
37
29
|
const require_SignedIn = require('./components/control/SignedIn.cjs');
|
|
38
30
|
const require_SignedOut = require('./components/control/SignedOut.cjs');
|
|
39
31
|
const require_Loading = require('./components/control/Loading.cjs');
|
|
40
|
-
const require_OrganizationContext = require('./components/control/OrganizationContext/OrganizationContext.cjs');
|
|
41
32
|
const require_CircleAlert = require('./components/primitives/Icons/CircleAlert.cjs');
|
|
42
33
|
const require_CircleCheck = require('./components/primitives/Icons/CircleCheck.cjs');
|
|
43
34
|
const require_Info = require('./components/primitives/Icons/Info.cjs');
|
|
@@ -45,7 +36,6 @@ const require_TriangleAlert = require('./components/primitives/Icons/TriangleAle
|
|
|
45
36
|
const require_Typography = require('./components/primitives/Typography/Typography.cjs');
|
|
46
37
|
const require_Alert = require('./components/primitives/Alert/Alert.cjs');
|
|
47
38
|
const require_Card = require('./components/primitives/Card/Card.cjs');
|
|
48
|
-
const require_OrganizationUnitPicker = require('./components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs');
|
|
49
39
|
const require_Divider = require('./components/primitives/Divider/Divider.cjs');
|
|
50
40
|
const require_FormControl = require('./components/primitives/FormControl/FormControl.cjs');
|
|
51
41
|
const require_InputLabel = require('./components/primitives/InputLabel/InputLabel.cjs');
|
|
@@ -85,32 +75,20 @@ const require_TokenCallback = require('./components/auth/Callback/TokenCallback.
|
|
|
85
75
|
const require_Callback = require('./components/auth/Callback/Callback.cjs');
|
|
86
76
|
const require_BaseUser = require('./components/presentation/User/BaseUser.cjs');
|
|
87
77
|
const require_User = require('./components/presentation/User/User.cjs');
|
|
88
|
-
const require_BaseOrganization = require('./components/presentation/Organization/BaseOrganization.cjs');
|
|
89
|
-
const require_Organization = require('./components/presentation/Organization/Organization.cjs');
|
|
90
78
|
const require_LogOut = require('./components/primitives/Icons/LogOut.cjs');
|
|
91
79
|
const require_User$1 = require('./components/primitives/Icons/User.cjs');
|
|
92
80
|
const require_MultiInput = require('./components/primitives/MultiInput/MultiInput.cjs');
|
|
93
81
|
const require_BaseUserProfile = require('./components/presentation/UserProfile/BaseUserProfile.cjs');
|
|
94
82
|
const require_updateMeProfile = require('./api/updateMeProfile.cjs');
|
|
95
83
|
const require_UserProfile = require('./components/presentation/UserProfile/UserProfile.cjs');
|
|
84
|
+
const require_BaseUserAvatar = require('./components/presentation/UserAvatar/BaseUserAvatar.cjs');
|
|
85
|
+
const require_UserAvatar = require('./components/presentation/UserAvatar/UserAvatar.cjs');
|
|
96
86
|
const require_BaseUserDropdown = require('./components/presentation/UserDropdown/BaseUserDropdown.cjs');
|
|
97
87
|
const require_UserDropdown = require('./components/presentation/UserDropdown/UserDropdown.cjs');
|
|
98
|
-
const require_BaseOrganizationSwitcher = require('./components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.cjs');
|
|
99
|
-
const require_BuildingAlt = require('./components/primitives/Icons/BuildingAlt.cjs');
|
|
100
|
-
const require_BaseCreateOrganization = require('./components/presentation/CreateOrganization/BaseCreateOrganization.cjs');
|
|
101
|
-
const require_createOrganization = require('./api/createOrganization.cjs');
|
|
102
|
-
const require_CreateOrganization = require('./components/presentation/CreateOrganization/CreateOrganization.cjs');
|
|
103
|
-
const require_BaseOrganizationList = require('./components/presentation/OrganizationList/BaseOrganizationList.cjs');
|
|
104
|
-
const require_OrganizationList = require('./components/presentation/OrganizationList/OrganizationList.cjs');
|
|
105
|
-
const require_KeyValueInput = require('./components/primitives/KeyValueInput/KeyValueInput.cjs');
|
|
106
|
-
const require_BaseOrganizationProfile = require('./components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs');
|
|
107
|
-
const require_getOrganization = require('./api/getOrganization.cjs');
|
|
108
|
-
const require_updateOrganization = require('./api/updateOrganization.cjs');
|
|
109
|
-
const require_OrganizationProfile = require('./components/presentation/OrganizationProfile/OrganizationProfile.cjs');
|
|
110
|
-
const require_OrganizationSwitcher = require('./components/presentation/OrganizationSwitcher/OrganizationSwitcher.cjs');
|
|
111
88
|
const require_BaseLanguageSwitcher = require('./components/presentation/LanguageSwitcher/BaseLanguageSwitcher.cjs');
|
|
112
89
|
const require_LanguageSwitcher = require('./components/presentation/LanguageSwitcher/LanguageSwitcher.cjs');
|
|
113
|
-
const
|
|
90
|
+
const require_KeyValueInput = require('./components/primitives/KeyValueInput/KeyValueInput.cjs');
|
|
91
|
+
const require_BuildingAlt = require('./components/primitives/Icons/BuildingAlt.cjs');
|
|
114
92
|
const require_getScim2Me = require('./api/getScim2Me.cjs');
|
|
115
93
|
let __thunderid_browser = require("@thunderid/browser");
|
|
116
94
|
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
@@ -118,13 +96,8 @@ __thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
|
118
96
|
exports.AcceptInvite = require_AcceptInvite.default;
|
|
119
97
|
exports.Alert = require_Alert.default;
|
|
120
98
|
exports.BaseAcceptInvite = require_BaseAcceptInvite.default;
|
|
121
|
-
exports.BaseCreateOrganization = require_BaseCreateOrganization.BaseCreateOrganization;
|
|
122
99
|
exports.BaseInviteUser = require_BaseInviteUser.default;
|
|
123
100
|
exports.BaseLanguageSwitcher = require_BaseLanguageSwitcher.default;
|
|
124
|
-
exports.BaseOrganization = require_BaseOrganization.default;
|
|
125
|
-
exports.BaseOrganizationList = require_BaseOrganizationList.default;
|
|
126
|
-
exports.BaseOrganizationProfile = require_BaseOrganizationProfile.default;
|
|
127
|
-
exports.BaseOrganizationSwitcher = require_BaseOrganizationSwitcher.default;
|
|
128
101
|
exports.BaseRecovery = require_BaseRecovery.default;
|
|
129
102
|
exports.BaseSignIn = require_BaseSignIn.default;
|
|
130
103
|
exports.BaseSignInButton = require_BaseSignInButton.default;
|
|
@@ -132,10 +105,9 @@ exports.BaseSignOutButton = require_BaseSignOutButton.default;
|
|
|
132
105
|
exports.BaseSignUp = require_BaseSignUp.default;
|
|
133
106
|
exports.BaseSignUpButton = require_BaseSignUpButton.default;
|
|
134
107
|
exports.BaseUser = require_BaseUser.default;
|
|
108
|
+
exports.BaseUserAvatar = require_BaseUserAvatar.default;
|
|
135
109
|
exports.BaseUserDropdown = require_BaseUserDropdown.default;
|
|
136
110
|
exports.BaseUserProfile = require_BaseUserProfile.default;
|
|
137
|
-
exports.BrandingContext = require_BrandingContext.default;
|
|
138
|
-
exports.BrandingProvider = require_BrandingProvider.default;
|
|
139
111
|
exports.BuildingAlt = require_BuildingAlt.default;
|
|
140
112
|
exports.Button = require_Button.default;
|
|
141
113
|
exports.Callback = require_Callback.Callback;
|
|
@@ -145,7 +117,6 @@ exports.CircleAlert = require_CircleAlert.default;
|
|
|
145
117
|
exports.CircleCheck = require_CircleCheck.default;
|
|
146
118
|
exports.Consent = require_Consent.default;
|
|
147
119
|
exports.ConsentCheckboxList = require_ConsentCheckboxList.default;
|
|
148
|
-
exports.CreateOrganization = require_CreateOrganization.CreateOrganization;
|
|
149
120
|
exports.DatePicker = require_DatePicker.default;
|
|
150
121
|
exports.Divider = require_Divider.default;
|
|
151
122
|
Object.defineProperty(exports, 'EMOJI_URI_SCHEME', {
|
|
@@ -239,13 +210,6 @@ exports.Logo = require_Logo.default;
|
|
|
239
210
|
exports.MicrosoftButton = require_MicrosoftButton.default;
|
|
240
211
|
exports.MultiInput = require_MultiInput.default;
|
|
241
212
|
exports.OAuthCallback = require_OAuthCallback.OAuthCallback;
|
|
242
|
-
exports.Organization = require_Organization.default;
|
|
243
|
-
exports.OrganizationContext = require_OrganizationContext.default;
|
|
244
|
-
exports.OrganizationList = require_OrganizationList.default;
|
|
245
|
-
exports.OrganizationProfile = require_OrganizationProfile.default;
|
|
246
|
-
exports.OrganizationProvider = require_OrganizationProvider.default;
|
|
247
|
-
exports.OrganizationSwitcher = require_OrganizationSwitcher.default;
|
|
248
|
-
exports.OrganizationUnitPicker = require_OrganizationUnitPicker.default;
|
|
249
213
|
exports.OtpField = require_OtpField.default;
|
|
250
214
|
exports.PasswordField = require_PasswordField.default;
|
|
251
215
|
exports.Recovery = require_Recovery.default;
|
|
@@ -275,6 +239,7 @@ exports.TokenCallback = require_TokenCallback.TokenCallback;
|
|
|
275
239
|
exports.TriangleAlert = require_TriangleAlert.default;
|
|
276
240
|
exports.Typography = require_Typography.default;
|
|
277
241
|
exports.User = require_User.default;
|
|
242
|
+
exports.UserAvatar = require_UserAvatar.default;
|
|
278
243
|
exports.UserContext = require_UserContext.default;
|
|
279
244
|
exports.UserDropdown = require_UserDropdown.default;
|
|
280
245
|
exports.UserIcon = require_User$1.default;
|
|
@@ -287,8 +252,6 @@ Object.defineProperty(exports, 'countryCodeToFlagEmoji', {
|
|
|
287
252
|
}
|
|
288
253
|
});
|
|
289
254
|
exports.createField = require_FieldFactory.createField;
|
|
290
|
-
exports.createOrganization = require_createOrganization.default;
|
|
291
|
-
exports.createPatchOperations = __thunderid_browser.createPatchOperations;
|
|
292
255
|
Object.defineProperty(exports, 'extractEmojiFromUri', {
|
|
293
256
|
enumerable: true,
|
|
294
257
|
get: function () {
|
|
@@ -301,12 +264,8 @@ Object.defineProperty(exports, 'getActiveTheme', {
|
|
|
301
264
|
return __thunderid_browser.getActiveTheme;
|
|
302
265
|
}
|
|
303
266
|
});
|
|
304
|
-
exports.getAllOrganizations = require_getAllOrganizations.default;
|
|
305
267
|
exports.getConsentOptionalKey = require_ConsentCheckboxList.getConsentOptionalKey;
|
|
306
|
-
exports.getMeOrganizations = require_getMeOrganizations.default;
|
|
307
268
|
exports.getMeProfile = require_getScim2Me.default;
|
|
308
|
-
exports.getOrganization = require_getOrganization.default;
|
|
309
|
-
exports.getSchemas = require_getSchemas.default;
|
|
310
269
|
Object.defineProperty(exports, 'http', {
|
|
311
270
|
enumerable: true,
|
|
312
271
|
get: function () {
|
|
@@ -356,15 +315,11 @@ Object.defineProperty(exports, 'resolveMeta', {
|
|
|
356
315
|
}
|
|
357
316
|
});
|
|
358
317
|
exports.updateMeProfile = require_updateMeProfile.default;
|
|
359
|
-
exports.updateOrganization = require_updateOrganization.default;
|
|
360
|
-
exports.useBranding = require_useBranding.default;
|
|
361
|
-
exports.useBrandingContext = require_useBrandingContext.default;
|
|
362
318
|
exports.useBrowserUrl = require_useBrowserUrl.default;
|
|
363
319
|
exports.useFlow = require_useFlow.default;
|
|
364
320
|
exports.useForm = require_useForm.default;
|
|
365
321
|
exports.useI18n = require_useI18n.default;
|
|
366
322
|
exports.useOAuthCallback = require_useOAuthCallback.useOAuthCallback;
|
|
367
|
-
exports.useOrganization = require_useOrganization.default;
|
|
368
323
|
exports.useTheme = require_useTheme.default;
|
|
369
324
|
exports.useThunderID = require_useThunderID.default;
|
|
370
325
|
exports.useTranslation = require_useTranslation.default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import useTheme_default from "../../../contexts/Theme/useTheme.js";
|
|
2
|
+
import BaseLanguageSwitcher_styles_default from "./BaseLanguageSwitcher.styles.js";
|
|
2
3
|
import Check_default from "../../primitives/Icons/Check.js";
|
|
3
4
|
import ChevronDown_default from "../../primitives/Icons/ChevronDown.js";
|
|
4
|
-
import BaseLanguageSwitcher_styles_default from "./BaseLanguageSwitcher.styles.js";
|
|
5
5
|
import { useEffect, useState } from "react";
|
|
6
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { cx } from "@emotion/css";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
import { User } from '@thunderid/browser';
|
|
19
|
+
import { FC } from 'react';
|
|
20
|
+
export interface BaseUserAvatarProps {
|
|
21
|
+
/**
|
|
22
|
+
* Optional CSS class name for the avatar container.
|
|
23
|
+
*/
|
|
24
|
+
className?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Size of the avatar in pixels.
|
|
27
|
+
* @default 40
|
|
28
|
+
*/
|
|
29
|
+
size?: number;
|
|
30
|
+
/**
|
|
31
|
+
* The user object. When provided, the avatar derives the image URL and
|
|
32
|
+
* initials from the user's profile fields automatically.
|
|
33
|
+
*/
|
|
34
|
+
user: User | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Base `UserAvatar` component. Renders an avatar derived from a user object
|
|
38
|
+
* without any context dependency — pass the `user` prop explicitly.
|
|
39
|
+
*
|
|
40
|
+
* For the context-aware version that reads the signed-in user automatically,
|
|
41
|
+
* use `UserAvatar`.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* <BaseUserAvatar user={user} size={48} />
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
declare const BaseUserAvatar: FC<BaseUserAvatarProps>;
|
|
49
|
+
export default BaseUserAvatar;
|
|
50
|
+
//# sourceMappingURL=BaseUserAvatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUserAvatar.d.ts","sourceRoot":"","sources":["../../../../src/components/presentation/UserAvatar/BaseUserAvatar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,EAAE,EAAM,MAAM,OAAO,CAAC;AAG9B,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB;AAwBD;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAK3C,CAAC;AAIF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Avatar } from "../../primitives/Avatar/Avatar.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/presentation/UserAvatar/BaseUserAvatar.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the profile picture URL from common user claim fields.
|
|
7
|
+
*/
|
|
8
|
+
const resolvePicture = (user) => {
|
|
9
|
+
for (const key of [
|
|
10
|
+
"picture",
|
|
11
|
+
"profileUrl",
|
|
12
|
+
"profile",
|
|
13
|
+
"URL",
|
|
14
|
+
"avatarUrl",
|
|
15
|
+
"avatar"
|
|
16
|
+
]) {
|
|
17
|
+
const val = user[key];
|
|
18
|
+
if (typeof val === "string" && val) return val;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Resolves a display name suitable for generating avatar initials.
|
|
23
|
+
*/
|
|
24
|
+
const resolveName = (user) => {
|
|
25
|
+
const given = user["givenName"] || user["given_name"] || "";
|
|
26
|
+
const family = user["familyName"] || user["family_name"] || "";
|
|
27
|
+
if (given && family) return `${given} ${family}`;
|
|
28
|
+
return user["displayName"] || user["name"] || given || user["username"] || user["email"] || void 0;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Base `UserAvatar` component. Renders an avatar derived from a user object
|
|
32
|
+
* without any context dependency — pass the `user` prop explicitly.
|
|
33
|
+
*
|
|
34
|
+
* For the context-aware version that reads the signed-in user automatically,
|
|
35
|
+
* use `UserAvatar`.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* <BaseUserAvatar user={user} size={48} />
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
const BaseUserAvatar = ({ user, size = 40, className }) => {
|
|
43
|
+
return /* @__PURE__ */ jsx(Avatar, {
|
|
44
|
+
imageUrl: user ? resolvePicture(user) : void 0,
|
|
45
|
+
name: user ? resolveName(user) : void 0,
|
|
46
|
+
size,
|
|
47
|
+
className
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
BaseUserAvatar.displayName = "BaseUserAvatar";
|
|
51
|
+
var BaseUserAvatar_default = BaseUserAvatar;
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { BaseUserAvatar_default as default };
|
|
55
|
+
//# sourceMappingURL=BaseUserAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUserAvatar.js","names":["val: unknown","given: string","family: string","BaseUserAvatar: FC<BaseUserAvatarProps>"],"sources":["../../../../src/components/presentation/UserAvatar/BaseUserAvatar.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {User} from '@thunderid/browser';\nimport {FC, JSX} from 'react';\nimport {Avatar} from '../../primitives/Avatar/Avatar';\n\nexport interface BaseUserAvatarProps {\n /**\n * Optional CSS class name for the avatar container.\n */\n className?: string;\n /**\n * Size of the avatar in pixels.\n * @default 40\n */\n size?: number;\n /**\n * The user object. When provided, the avatar derives the image URL and\n * initials from the user's profile fields automatically.\n */\n user: User | null;\n}\n\n/**\n * Resolves the profile picture URL from common user claim fields.\n */\nconst resolvePicture = (user: User): string | undefined => {\n for (const key of ['picture', 'profileUrl', 'profile', 'URL', 'avatarUrl', 'avatar']) {\n const val: unknown = user[key];\n if (typeof val === 'string' && val) return val;\n }\n return undefined;\n};\n\n/**\n * Resolves a display name suitable for generating avatar initials.\n */\nconst resolveName = (user: User): string | undefined => {\n const given: string = user['givenName'] || user['given_name'] || '';\n const family: string = user['familyName'] || user['family_name'] || '';\n if (given && family) return `${given} ${family}`;\n\n return user['displayName'] || user['name'] || given || user['username'] || user['email'] || undefined;\n};\n\n/**\n * Base `UserAvatar` component. Renders an avatar derived from a user object\n * without any context dependency — pass the `user` prop explicitly.\n *\n * For the context-aware version that reads the signed-in user automatically,\n * use `UserAvatar`.\n *\n * @example\n * ```tsx\n * <BaseUserAvatar user={user} size={48} />\n * ```\n */\nconst BaseUserAvatar: FC<BaseUserAvatarProps> = ({user, size = 40, className}: BaseUserAvatarProps): JSX.Element => {\n const imageUrl: string | undefined = user ? resolvePicture(user) : undefined;\n const name: string | undefined = user ? resolveName(user) : undefined;\n\n return <Avatar imageUrl={imageUrl} name={name} size={size} className={className} />;\n};\n\nBaseUserAvatar.displayName = 'BaseUserAvatar';\n\nexport default BaseUserAvatar;\n"],"mappings":";;;;;;;AA0CA,MAAM,kBAAkB,SAAmC;AACzD,MAAK,MAAM,OAAO;EAAC;EAAW;EAAc;EAAW;EAAO;EAAa;EAAS,EAAE;EACpF,MAAMA,MAAe,KAAK;AAC1B,MAAI,OAAO,QAAQ,YAAY,IAAK,QAAO;;;;;;AAQ/C,MAAM,eAAe,SAAmC;CACtD,MAAMC,QAAgB,KAAK,gBAAgB,KAAK,iBAAiB;CACjE,MAAMC,SAAiB,KAAK,iBAAiB,KAAK,kBAAkB;AACpE,KAAI,SAAS,OAAQ,QAAO,GAAG,MAAM,GAAG;AAExC,QAAO,KAAK,kBAAkB,KAAK,WAAW,SAAS,KAAK,eAAe,KAAK,YAAY;;;;;;;;;;;;;;AAe9F,MAAMC,kBAA2C,EAAC,MAAM,OAAO,IAAI,gBAAiD;AAIlH,QAAO,oBAAC;EAAO,UAHsB,OAAO,eAAe,KAAK,GAAG;EAGhC,MAFF,OAAO,YAAY,KAAK,GAAG;EAEP;EAAiB;GAAa;;AAGrF,eAAe,cAAc;AAE7B,6BAAe"}
|