@entur-partner/app-shell 6.0.5-alpha.2 → 6.0.5-alpha.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/AppShell.d.ts +1 -1
- package/dist/ConsentManagerProvider.d.ts +4 -13
- package/dist/PostHogProviderWrapper.d.ts +29 -0
- package/dist/app-shell.cjs.development.js +96 -20
- package/dist/app-shell.cjs.development.js.map +1 -1
- package/dist/app-shell.cjs.production.min.js +1 -1
- package/dist/app-shell.cjs.production.min.js.map +1 -1
- package/dist/app-shell.esm.js +95 -21
- package/dist/app-shell.esm.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/storage.d.ts +4 -0
- package/dist/types/ConsentTypes.d.ts +22 -0
- package/dist/util/convertUCServicesToConsents.d.ts +14 -0
- package/package.json +3 -3
- /package/dist/{UserTypes.d.ts → types/UserTypes.d.ts} +0 -0
package/dist/AppShell.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
|
|
|
2
2
|
import { GetTokenSilentlyOptions, Auth0ContextInterface } from '@auth0/auth0-react';
|
|
3
3
|
import { User } from '@entur-partner/micro-frontend';
|
|
4
4
|
import { Environment } from '@entur-partner/common';
|
|
5
|
-
import { DecorateUserFn } from './UserTypes';
|
|
5
|
+
import { DecorateUserFn } from './types/UserTypes';
|
|
6
6
|
export interface AppShellValues {
|
|
7
7
|
logout: Auth0ContextInterface['logout'];
|
|
8
8
|
user: User;
|
|
@@ -7,18 +7,9 @@ declare global {
|
|
|
7
7
|
};
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
export declare const DEFAULT_CONSENT_GIVEN: {
|
|
11
|
-
readonly Usercentrics: {
|
|
12
|
-
readonly consentGiven: false;
|
|
13
|
-
};
|
|
14
|
-
readonly PostHog: {
|
|
15
|
-
readonly consentGiven: false;
|
|
16
|
-
};
|
|
17
|
-
readonly Sentry: {
|
|
18
|
-
readonly consentGiven: false;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
10
|
export declare const useConsentManager: () => Consents;
|
|
22
|
-
|
|
11
|
+
type Props = {
|
|
23
12
|
children: ReactNode;
|
|
24
|
-
}
|
|
13
|
+
};
|
|
14
|
+
export declare const ConsentManagerProvider: ({ children }: Props) => React.JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Debug mode for PostHog.
|
|
5
|
+
*/
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* PostHog API key for initializing the PostHog client.
|
|
9
|
+
* If not provided, PostHog will not be initialized.
|
|
10
|
+
*/
|
|
11
|
+
postHogApiKey?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Flag to indicate if the application is running in a standalone mode or as a micro-frontend.
|
|
14
|
+
*/
|
|
15
|
+
isStandalone: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Optional project identifier for PostHog.
|
|
18
|
+
* This can be used to differentiate between different projects in PostHog.
|
|
19
|
+
*/
|
|
20
|
+
project?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Flag to force disable PostHog tracking.
|
|
23
|
+
* If true, PostHog will not be initialized even if postHogApiKey is provided.
|
|
24
|
+
*/
|
|
25
|
+
forceDisablePostHog?: boolean;
|
|
26
|
+
children: ReactNode;
|
|
27
|
+
};
|
|
28
|
+
export declare const PostHogProviderWrapper: ({ debug, postHogApiKey, isStandalone, project, forceDisablePostHog, children, }: Props) => React.JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -10,10 +10,13 @@ var tokens = require('@entur/tokens');
|
|
|
10
10
|
var auth0React = require('@auth0/auth0-react');
|
|
11
11
|
var common = require('@entur-partner/common');
|
|
12
12
|
var util = require('@entur-partner/util');
|
|
13
|
+
var postHog = require('posthog-js');
|
|
14
|
+
var react = require('posthog-js/react');
|
|
13
15
|
|
|
14
16
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
17
|
|
|
16
18
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
19
|
+
var postHog__default = /*#__PURE__*/_interopDefaultLegacy(postHog);
|
|
17
20
|
|
|
18
21
|
function _construct(t, e, r) {
|
|
19
22
|
if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
|
|
@@ -688,6 +691,12 @@ var languageStorage = {
|
|
|
688
691
|
return localStorage.setItem(LANGUAGE_STORAGE_KEY, value);
|
|
689
692
|
}
|
|
690
693
|
};
|
|
694
|
+
var UC_UI_STORAGE_KEY = 'ucData';
|
|
695
|
+
var ucUiStorage = {
|
|
696
|
+
get: function get() {
|
|
697
|
+
return localStorage.getItem(UC_UI_STORAGE_KEY);
|
|
698
|
+
}
|
|
699
|
+
};
|
|
691
700
|
|
|
692
701
|
var OrganisationContext = /*#__PURE__*/React__default["default"].createContext(undefined);
|
|
693
702
|
var useOrganisation = function useOrganisation() {
|
|
@@ -857,6 +866,12 @@ var OrganisationSelector = function OrganisationSelector(_ref) {
|
|
|
857
866
|
}
|
|
858
867
|
};
|
|
859
868
|
|
|
869
|
+
var SERVICE_NAMES = {
|
|
870
|
+
Usercentrics: 'Usercentrics Consent Management Platform',
|
|
871
|
+
PostHog: 'PostHog.com',
|
|
872
|
+
Sentry: 'Sentry'
|
|
873
|
+
};
|
|
874
|
+
|
|
860
875
|
var DEFAULT_CONSENT_GIVEN = {
|
|
861
876
|
Usercentrics: {
|
|
862
877
|
consentGiven: false
|
|
@@ -868,17 +883,38 @@ var DEFAULT_CONSENT_GIVEN = {
|
|
|
868
883
|
consentGiven: false
|
|
869
884
|
}
|
|
870
885
|
};
|
|
871
|
-
var
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
886
|
+
var convertUCServicesToConsents = function convertUCServicesToConsents(services) {
|
|
887
|
+
return services.map(function (service) {
|
|
888
|
+
var _Object$entries$find, _ref3;
|
|
889
|
+
var serviceName = (_Object$entries$find = Object.entries(SERVICE_NAMES).find(function (keyValue) {
|
|
890
|
+
return keyValue[1] === service.name;
|
|
891
|
+
})) == null ? void 0 : _Object$entries$find[0];
|
|
892
|
+
// Ensure the service name exists in SERVICE_NAMES
|
|
893
|
+
util.assertIsDefined(serviceName, "Service name " + service.name + " not found in SERVICE_NAMES");
|
|
894
|
+
if (typeof service.consent == 'boolean') {
|
|
895
|
+
var _ref;
|
|
896
|
+
var consentGiven = service.consent;
|
|
897
|
+
return _ref = {}, _ref[serviceName] = {
|
|
898
|
+
consentGiven: consentGiven
|
|
899
|
+
}, _ref;
|
|
900
|
+
} else if (typeof service.consent === 'object' && 'given' in service.consent) {
|
|
901
|
+
var _ref2;
|
|
902
|
+
var _consentGiven = service.consent.given;
|
|
903
|
+
return _ref2 = {}, _ref2[serviceName] = {
|
|
904
|
+
consentGiven: _consentGiven
|
|
905
|
+
}, _ref2;
|
|
906
|
+
}
|
|
907
|
+
return _ref3 = {}, _ref3[serviceName] = {
|
|
908
|
+
consentGiven: false
|
|
909
|
+
}, _ref3;
|
|
910
|
+
}).reduce(function (acc, curr) {
|
|
911
|
+
return _extends({}, acc, curr);
|
|
912
|
+
}, DEFAULT_CONSENT_GIVEN);
|
|
875
913
|
};
|
|
914
|
+
|
|
876
915
|
var ConsentContext = /*#__PURE__*/React.createContext(DEFAULT_CONSENT_GIVEN);
|
|
877
916
|
var useConsentManager = function useConsentManager() {
|
|
878
917
|
var context = React.useContext(ConsentContext);
|
|
879
|
-
if (!context) {
|
|
880
|
-
throw new Error('useConsentManager must be used within a ConsentManagerProvider');
|
|
881
|
-
}
|
|
882
918
|
return context;
|
|
883
919
|
};
|
|
884
920
|
var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
@@ -886,6 +922,17 @@ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
|
886
922
|
var _useState = React.useState(DEFAULT_CONSENT_GIVEN),
|
|
887
923
|
consentManager = _useState[0],
|
|
888
924
|
setConsentManager = _useState[1];
|
|
925
|
+
// Initialize consent manager from local storage once
|
|
926
|
+
React.useEffect(function () {
|
|
927
|
+
if (typeof window === 'undefined') return;
|
|
928
|
+
var ucData = ucUiStorage.get();
|
|
929
|
+
if (ucData) {
|
|
930
|
+
var data = JSON.parse(ucData);
|
|
931
|
+
var services = convertUCServicesToConsents(Object.values(data.consent.services));
|
|
932
|
+
setConsentManager(services);
|
|
933
|
+
}
|
|
934
|
+
}, []);
|
|
935
|
+
// Listen for Usercentrics consent events and update consent manager state
|
|
889
936
|
React.useEffect(function () {
|
|
890
937
|
var handleConsentEvent = /*#__PURE__*/function () {
|
|
891
938
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {
|
|
@@ -901,19 +948,7 @@ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
|
901
948
|
case 2:
|
|
902
949
|
customEvent = event;
|
|
903
950
|
services = Object.values(customEvent.detail.services);
|
|
904
|
-
updatedConsentManager = services
|
|
905
|
-
var _Object$entries$find, _ref3;
|
|
906
|
-
var serviceName = (_Object$entries$find = Object.entries(SERVICE_NAMES).find(function (keyValue) {
|
|
907
|
-
return keyValue[1] === service.name;
|
|
908
|
-
})) == null ? void 0 : _Object$entries$find[0];
|
|
909
|
-
// Ensure the service name is defined in SERVICE_NAMES
|
|
910
|
-
util.assertIsDefined(serviceName, "Service name " + service.name + " not found in SERVICE_NAMES");
|
|
911
|
-
return _ref3 = {}, _ref3[serviceName] = {
|
|
912
|
-
consentGiven: service.consent.given
|
|
913
|
-
}, _ref3;
|
|
914
|
-
}).reduce(function (acc, curr) {
|
|
915
|
-
return _extends({}, acc, curr);
|
|
916
|
-
}, DEFAULT_CONSENT_GIVEN);
|
|
951
|
+
updatedConsentManager = convertUCServicesToConsents(services);
|
|
917
952
|
setConsentManager(updatedConsentManager);
|
|
918
953
|
window.location.href = '/';
|
|
919
954
|
case 7:
|
|
@@ -936,6 +971,46 @@ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
|
936
971
|
}, children);
|
|
937
972
|
};
|
|
938
973
|
|
|
974
|
+
var PostHogProviderWrapper = function PostHogProviderWrapper(_ref) {
|
|
975
|
+
var _ref$debug = _ref.debug,
|
|
976
|
+
debug = _ref$debug === void 0 ? false : _ref$debug,
|
|
977
|
+
postHogApiKey = _ref.postHogApiKey,
|
|
978
|
+
isStandalone = _ref.isStandalone,
|
|
979
|
+
project = _ref.project,
|
|
980
|
+
_ref$forceDisablePost = _ref.forceDisablePostHog,
|
|
981
|
+
forceDisablePostHog = _ref$forceDisablePost === void 0 ? false : _ref$forceDisablePost,
|
|
982
|
+
children = _ref.children;
|
|
983
|
+
var consents = useConsentManager();
|
|
984
|
+
React.useEffect(function () {
|
|
985
|
+
if (!postHogApiKey || forceDisablePostHog) {
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
if (consents != null && consents.PostHog.consentGiven) {
|
|
989
|
+
postHog__default["default"].opt_in_capturing();
|
|
990
|
+
} else {
|
|
991
|
+
postHog__default["default"].opt_out_capturing();
|
|
992
|
+
}
|
|
993
|
+
}, [consents == null ? void 0 : consents.PostHog.consentGiven, forceDisablePostHog, postHogApiKey]);
|
|
994
|
+
// If no API key is provided or PostHog is forced to be disabled, do not initialize PostHog
|
|
995
|
+
if (!postHogApiKey || forceDisablePostHog) {
|
|
996
|
+
if (!forceDisablePostHog) {
|
|
997
|
+
console.warn('AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized.');
|
|
998
|
+
} else {
|
|
999
|
+
console.warn('AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized.');
|
|
1000
|
+
}
|
|
1001
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
1002
|
+
}
|
|
1003
|
+
postHog__default["default"].init(postHogApiKey, {
|
|
1004
|
+
debug: debug,
|
|
1005
|
+
api_host: isStandalone ? 'https://eu.posthog.com' : '/ingest',
|
|
1006
|
+
ui_host: 'https://eu.posthog.com',
|
|
1007
|
+
opt_out_capturing_by_default: true
|
|
1008
|
+
}, project);
|
|
1009
|
+
return React__default["default"].createElement(react.PostHogProvider, {
|
|
1010
|
+
client: postHog__default["default"]
|
|
1011
|
+
}, children);
|
|
1012
|
+
};
|
|
1013
|
+
|
|
939
1014
|
exports.AppShell = AppShell;
|
|
940
1015
|
exports.ConsentManagerProvider = ConsentManagerProvider;
|
|
941
1016
|
exports.LanguageProvider = LanguageProvider;
|
|
@@ -944,6 +1019,7 @@ exports.MicroFrontendLink = MicroFrontendLink;
|
|
|
944
1019
|
exports.OrganisationProvider = OrganisationProvider;
|
|
945
1020
|
exports.OrganisationSelector = OrganisationSelector;
|
|
946
1021
|
exports.OrganisationsError = OrganisationsError;
|
|
1022
|
+
exports.PostHogProviderWrapper = PostHogProviderWrapper;
|
|
947
1023
|
exports.languageStorage = languageStorage;
|
|
948
1024
|
exports.organisationStorage = organisationStorage;
|
|
949
1025
|
exports.useConsentManager = useConsentManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.cjs.development.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx","../src/ConsentManagerProvider.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<OrganisationV3[]>;\n\nexport interface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n selectedOrganisationId: number;\n onChange: (organisationId: number) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n selectedOrganisationId,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<OrganisationV3[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: OrganisationV3[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={\n language === 'nb' || language === 'nb-NO'\n ? 'Organisasjon'\n : 'Organisation'\n }\n selectedOrganisationId={selectedOrganisationId}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n","import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Consents } from '@entur-partner/micro-frontend';\n\ndeclare global {\n interface Window {\n UC_UI: {\n showSecondLayer: () => void;\n };\n }\n}\n\nexport const DEFAULT_CONSENT_GIVEN = {\n Usercentrics: { consentGiven: false },\n PostHog: { consentGiven: false },\n Sentry: { consentGiven: false },\n} as const;\n\nconst SERVICE_NAMES = {\n Usercentrics: 'Usercentrics Consent Management Platform',\n PostHog: 'PostHog.com',\n Sentry: 'Sentry',\n} as const;\n\ninterface ServiceConsent {\n name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];\n consent: { given: boolean };\n}\n\nconst ConsentContext = createContext<Consents>(DEFAULT_CONSENT_GIVEN);\n\nexport const useConsentManager = () => {\n const context = useContext(ConsentContext);\n if (!context) {\n throw new Error(\n 'useConsentManager must be used within a ConsentManagerProvider'\n );\n }\n return context;\n};\n\nexport const ConsentManagerProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [consentManager, setConsentManager] = useState<Consents>(\n DEFAULT_CONSENT_GIVEN\n );\n\n useEffect(() => {\n const handleConsentEvent = async (event: Event) => {\n if (typeof window === 'undefined') return;\n\n const customEvent = event as CustomEvent;\n const services = Object.values(\n customEvent.detail.services as ServiceConsent[]\n );\n\n const updatedConsentManager = services\n .map((service) => {\n const serviceName = Object.entries(SERVICE_NAMES).find(\n (keyValue) => keyValue[1] === service.name\n )?.[0] as keyof typeof SERVICE_NAMES;\n\n // Ensure the service name is defined in SERVICE_NAMES\n assertIsDefined(\n serviceName,\n `Service name ${service.name} not found in SERVICE_NAMES`\n );\n\n return {\n [serviceName]: {\n consentGiven: service.consent.given,\n },\n };\n })\n .reduce(\n (acc, curr) => ({ ...acc, ...curr }),\n DEFAULT_CONSENT_GIVEN as Consents\n );\n setConsentManager(updatedConsentManager);\n window.location.href = '/';\n };\n\n window.addEventListener('UC_CONSENT', handleConsentEvent);\n\n return () => window.removeEventListener('UC_CONSENT', handleConsentEvent);\n }, []);\n\n return (\n <ConsentContext.Provider value={consentManager}>\n {children}\n </ConsentContext.Provider>\n );\n};\n"],"names":["EnvironmentBanner","_ref","environment","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","userLogout","logout","_window$location","window","location","protocol","hostname","port","logoutParams","returnTo","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","decoratedUser","wrap","_callee$","_context","prev","next","sent","t0","console","stop","apply","arguments","Loader","marginTop","space","extraLarge9","process","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","getToken","AppShell","_ref3","audience","domain","clientId","Auth0Provider","authorizationParams","redirect_uri","origin","params","Environment","Production","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","_extends","ex","preventDefault","defaultPrevented","button","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useContext","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","Provider","value","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","setItem","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_inheritsLoose","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","selectedOrganisationId","onChange","organisations","setOrganisations","_useLanguage","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","DEFAULT_CONSENT_GIVEN","Usercentrics","consentGiven","PostHog","Sentry","SERVICE_NAMES","ConsentContext","useConsentManager","ConsentManagerProvider","consentManager","setConsentManager","handleConsentEvent","customEvent","services","updatedConsentManager","abrupt","Object","values","detail","map","service","_Object$entries$find","serviceName","entries","find","keyValue","name","consent","given","reduce","acc","curr","_x","addEventListener","removeEventListener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-shell.cjs.development.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx","../src/types/ConsentTypes.ts","../src/util/convertUCServicesToConsents.ts","../src/ConsentManagerProvider.tsx","../src/PostHogProviderWrapper.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './types/UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n\nexport const UC_UI_STORAGE_KEY = 'ucData';\n\nexport const ucUiStorage = {\n get: () => localStorage.getItem(UC_UI_STORAGE_KEY),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<OrganisationV3[]>;\n\nexport interface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n selectedOrganisationId: number;\n onChange: (organisationId: number) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n selectedOrganisationId,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<OrganisationV3[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: OrganisationV3[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={\n language === 'nb' || language === 'nb-NO'\n ? 'Organisasjon'\n : 'Organisation'\n }\n selectedOrganisationId={selectedOrganisationId}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n","export const SERVICE_NAMES = {\n Usercentrics: 'Usercentrics Consent Management Platform',\n PostHog: 'PostHog.com',\n Sentry: 'Sentry',\n} as const;\n\nexport interface ServiceConsent {\n name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];\n consent: { given: boolean };\n}\n\nexport interface UCDataConsentDataFromLocalStorage {\n consent: {\n services: {\n [key: string]: {\n name: string;\n consent: boolean;\n };\n };\n };\n}\n\nexport type UCServiceArray = Array<\n UCDataConsentDataFromLocalStorage['consent']['services'][keyof UCDataConsentDataFromLocalStorage['consent']['services']]\n>;\n","import { Consents } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport {\n SERVICE_NAMES,\n ServiceConsent,\n UCServiceArray,\n} from '../types/ConsentTypes';\n\nexport const DEFAULT_CONSENT_GIVEN = {\n Usercentrics: { consentGiven: false },\n PostHog: { consentGiven: false },\n Sentry: { consentGiven: false },\n} as const;\n\nexport const convertUCServicesToConsents = (\n services: ServiceConsent[] | UCServiceArray\n): Consents => {\n return services\n .map((service) => {\n const serviceName = Object.entries(SERVICE_NAMES).find(\n (keyValue) => keyValue[1] === service.name\n )?.[0] as keyof typeof SERVICE_NAMES;\n\n // Ensure the service name exists in SERVICE_NAMES\n assertIsDefined(\n serviceName,\n `Service name ${service.name} not found in SERVICE_NAMES`\n );\n\n if (typeof service.consent == 'boolean') {\n const consentGiven = service.consent as boolean;\n return {\n [serviceName]: {\n consentGiven: consentGiven,\n },\n };\n } else if (\n typeof service.consent === 'object' &&\n 'given' in service.consent\n ) {\n const consentGiven = service.consent.given;\n return {\n [serviceName]: {\n consentGiven: consentGiven,\n },\n };\n }\n\n return {\n [serviceName]: {\n consentGiven: false,\n },\n };\n })\n .reduce(\n (acc, curr) => ({ ...acc, ...curr }),\n DEFAULT_CONSENT_GIVEN as Consents\n );\n};\n","import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from 'react';\nimport { Consents } from '@entur-partner/micro-frontend';\n\nimport { ucUiStorage } from './storage';\nimport {\n ServiceConsent,\n UCDataConsentDataFromLocalStorage,\n} from './types/ConsentTypes';\nimport {\n convertUCServicesToConsents,\n DEFAULT_CONSENT_GIVEN,\n} from './util/convertUCServicesToConsents';\n\ndeclare global {\n interface Window {\n UC_UI: {\n showSecondLayer: () => void;\n };\n }\n}\n\nconst ConsentContext = createContext<Consents>(DEFAULT_CONSENT_GIVEN);\n\nexport const useConsentManager = () => {\n const context = useContext(ConsentContext);\n return context;\n};\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const ConsentManagerProvider = ({ children }: Props) => {\n const [consentManager, setConsentManager] = useState<Consents>(\n DEFAULT_CONSENT_GIVEN\n );\n\n // Initialize consent manager from local storage once\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const ucData = ucUiStorage.get();\n\n if (ucData) {\n const data = JSON.parse(ucData) as UCDataConsentDataFromLocalStorage;\n const services = convertUCServicesToConsents(\n Object.values(data.consent.services)\n );\n\n setConsentManager(services);\n }\n }, []);\n\n // Listen for Usercentrics consent events and update consent manager state\n useEffect(() => {\n const handleConsentEvent = async (event: Event) => {\n if (typeof window === 'undefined') return;\n\n const customEvent = event as CustomEvent;\n const services = Object.values(\n customEvent.detail.services as ServiceConsent[]\n );\n\n const updatedConsentManager = convertUCServicesToConsents(services);\n setConsentManager(updatedConsentManager);\n window.location.href = '/';\n };\n\n window.addEventListener('UC_CONSENT', handleConsentEvent);\n\n return () => window.removeEventListener('UC_CONSENT', handleConsentEvent);\n }, []);\n\n return (\n <ConsentContext.Provider value={consentManager}>\n {children}\n </ConsentContext.Provider>\n );\n};\n","import React, { ReactNode, useEffect } from 'react';\nimport postHog from 'posthog-js';\nimport { PostHogProvider } from 'posthog-js/react';\n\nimport { useConsentManager } from './ConsentManagerProvider';\n\ntype Props = {\n /**\n * Debug mode for PostHog.\n */\n debug?: boolean;\n /**\n * PostHog API key for initializing the PostHog client.\n * If not provided, PostHog will not be initialized.\n */\n postHogApiKey?: string;\n /**\n * Flag to indicate if the application is running in a standalone mode or as a micro-frontend.\n */\n isStandalone: boolean;\n /**\n * Optional project identifier for PostHog.\n * This can be used to differentiate between different projects in PostHog.\n */\n project?: string;\n /**\n * Flag to force disable PostHog tracking.\n * If true, PostHog will not be initialized even if postHogApiKey is provided.\n */\n forceDisablePostHog?: boolean;\n children: ReactNode;\n};\n\nexport const PostHogProviderWrapper = ({\n debug = false,\n postHogApiKey,\n isStandalone,\n project,\n forceDisablePostHog = false,\n children,\n}: Props) => {\n const consents = useConsentManager();\n\n useEffect(() => {\n if (!postHogApiKey || forceDisablePostHog) {\n return;\n }\n\n if (consents?.PostHog.consentGiven) {\n postHog.opt_in_capturing();\n } else {\n postHog.opt_out_capturing();\n }\n }, [consents?.PostHog.consentGiven, forceDisablePostHog, postHogApiKey]);\n\n // If no API key is provided or PostHog is forced to be disabled, do not initialize PostHog\n if (!postHogApiKey || forceDisablePostHog) {\n if (!forceDisablePostHog) {\n console.warn(\n 'AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized.'\n );\n } else {\n console.warn(\n 'AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized.'\n );\n }\n\n return <>{children}</>;\n }\n\n postHog.init(\n postHogApiKey,\n {\n debug,\n api_host: isStandalone ? 'https://eu.posthog.com' : '/ingest',\n ui_host: 'https://eu.posthog.com',\n opt_out_capturing_by_default: true,\n },\n project\n );\n\n return <PostHogProvider client={postHog}>{children}</PostHogProvider>;\n};\n"],"names":["EnvironmentBanner","_ref","environment","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","userLogout","logout","_window$location","window","location","protocol","hostname","port","logoutParams","returnTo","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","decoratedUser","wrap","_callee$","_context","prev","next","sent","t0","console","stop","apply","arguments","Loader","marginTop","space","extraLarge9","process","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","getToken","AppShell","_ref3","audience","domain","clientId","Auth0Provider","authorizationParams","redirect_uri","origin","params","Environment","Production","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","_extends","ex","preventDefault","defaultPrevented","button","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useContext","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","Provider","value","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","setItem","LANGUAGE_STORAGE_KEY","languageStorage","UC_UI_STORAGE_KEY","ucUiStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_inheritsLoose","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","selectedOrganisationId","onChange","organisations","setOrganisations","_useLanguage","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","SERVICE_NAMES","Usercentrics","PostHog","Sentry","DEFAULT_CONSENT_GIVEN","consentGiven","convertUCServicesToConsents","services","map","service","_Object$entries$find","serviceName","Object","entries","find","keyValue","name","consent","given","reduce","acc","curr","ConsentContext","useConsentManager","ConsentManagerProvider","consentManager","setConsentManager","ucData","data","JSON","parse","values","handleConsentEvent","customEvent","updatedConsentManager","abrupt","detail","_x","addEventListener","removeEventListener","PostHogProviderWrapper","_ref$debug","debug","postHogApiKey","isStandalone","project","_ref$forceDisablePost","forceDisablePostHog","consents","postHog","opt_in_capturing","opt_out_capturing","warn","init","api_host","ui_host","opt_out_capturing_by_default","PostHogProvider","client"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("@entur/alert"),r=require("@entur/typography"),n=require("@entur/loader"),o=require("@entur/tokens"),a=require("@auth0/auth0-react"),i=require("@entur-partner/common"),u=require("@entur-partner/util");function c(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=c(t);function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(l=function(){return!!t})()}function f(){f=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var a=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new k(n||[]);return o(a,"_invoke",{value:C(t,r,i)}),a}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",d="suspendedYield",g="executing",v="completed",y={};function m(){}function w(){}function x(){}var E={};s(E,i,(function(){return this}));var b=Object.getPrototypeOf,O=b&&b(b(N([])));O&&O!==r&&n.call(O,i)&&(E=O);var S=x.prototype=m.prototype=Object.create(E);function L(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,i,u){var c=h(t[o],t,a);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,i,u)}),(function(t){r("throw",t,i,u)})):e.resolve(l).then((function(t){s.value=t,i(s)}),(function(t){return r("throw",t,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function C(e,r,n){var o=p;return function(a,i){if(o===g)throw Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:t,done:!0}}for(n.method=a,n.arg=i;;){var u=n.delegate;if(u){var c=I(u,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=g;var s=h(e,r,n);if("normal"===s.type){if(o=n.done?v:d,s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function I(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,I(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var a=h(o,e.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,y;var i=a.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function N(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return w.prototype=x,o(S,"constructor",{value:x,configurable:!0}),o(x,"constructor",{value:w,configurable:!0}),w.displayName=s(x,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,x):(t.__proto__=x,s(t,c,"GeneratorFunction")),t.prototype=Object.create(S),t},e.awrap=function(t){return{__await:t}},L(P.prototype),s(P.prototype,u,(function(){return this})),e.AsyncIterator=P,e.async=function(t,r,n,o,a){void 0===a&&(a=Promise);var i=new P(l(t,r,n,o),a);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},L(S),s(S,c,"Generator"),s(S,i,(function(){return this})),s(S,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=N,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(_),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return u.type="throw",u.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},e}function h(t,e,r,n,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}function p(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function i(t){h(a,n,o,i,u,"next",t)}function u(t){h(a,n,o,i,u,"throw",t)}i(void 0)}))}}function d(){return d=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},d.apply(this,arguments)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function v(t,e){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},v(t,e)}function y(t){var e="function"==typeof Map?new Map:void 0;return y=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(l())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,e);var o=new(t.bind.apply(t,n));return r&&v(o,r.prototype),o}(t,arguments,g(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),v(r,t)},y(t)}function m(t,e){if(null==t)return{};var r,n,o={},a=Object.keys(t);for(n=0;n<a.length;n++)e.indexOf(r=a[n])>=0||(o[r]=t[r]);return o}var w=function(t){return s.default.createElement("div",{className:"epp-environment-banner",style:{position:"fixed",zIndex:9999,top:0,left:0,right:0,width:"100vw",height:"16px",backgroundColor:i.getColorForEnvironment(t.environment)}})},x=function(i){var c=i.children,l=i.decorateUser,h=t.useState(void 0),d=h[0],g=h[1],v=a.useAuth0(),y=v.user,m=v.getAccessTokenSilently,w=v.loginWithRedirect,x=v.logout,E=v.isLoading,b=v.isAuthenticated,O=v.error;return t.useEffect((function(){var t=function(){var t=p(f().mark((function t(){var e;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,m();case 3:return e=t.sent,t.next=6,l(y,e);case 6:g(t.sent),t.next=13;break;case 10:t.prev=10,t.t0=t.catch(0),console.error("Error fetching user data:",t.t0);case 13:case"end":return t.stop()}}),t,null,[[0,10]])})));return function(){return t.apply(this,arguments)}}();b&&t()}),[l,m,b,y]),E||b?E||!d?s.default.createElement(n.Loader,{style:{marginTop:o.space.extraLarge9}},"Authenticating"):O?s.default.createElement(e.BannerAlertBox,{variant:"error",title:"Authentication failed",style:{maxWidth:"600px",margin:"0 auto"}},s.default.createElement(r.Paragraph,null,"Something went wrong while trying to authenticate you. If the problem persists you should contact"," ",s.default.createElement(r.Link,{href:"mailto:support@entur.org"},"support@entur.org")," to get it resolved."),s.default.createElement(r.Paragraph,null,"Authentication failed with: ",s.default.createElement(r.CodeText,null,null==O?void 0:O.toString()))):(u.assertIsDefined(d),s.default.createElement(s.default.Fragment,null,c({user:d,logout:function(){return t=window.location,x({logoutParams:{returnTo:t.protocol+"//"+t.hostname+":"+t.port}});var t},getToken:m}))):(w(),s.default.createElement(n.Loader,{style:{marginTop:o.space.extraLarge9}},"Redirecting to login page"))},E=["navigate","children","onClick","target"],b=s.default.createContext({addItems:function(){},getItemsForPath:function(){return[]},getMFNavigate:function(){},setMFNavigate:function(){}}),O=function(){return t.useContext(b)},S="EP::activeOrgId",L={get:function(){return localStorage.getItem(S)},set:function(t){return localStorage.setItem(S,t)}},P="EP::locale",C={get:function(){return localStorage.getItem(P)},set:function(t){return localStorage.setItem(P,t)}},I=s.default.createContext(void 0),j=s.default.createContext(void 0),_=function(){var e=t.useContext(j);return u.assertIsDefined(e),e},k=function(t){function e(){for(var e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(e=t.call.apply(t,[this].concat(n))||this).message="Failed fetching organisations",e}var r,n;return n=t,(r=e).prototype=Object.create(n.prototype),r.prototype.constructor=r,v(r,n),e}(y(Error)),N=["getToken","getOrganisations","selectedOrganisationId","onChange"],F={Usercentrics:{consentGiven:!1},PostHog:{consentGiven:!1},Sentry:{consentGiven:!1}},M={Usercentrics:"Usercentrics Consent Management Platform",PostHog:"PostHog.com",Sentry:"Sentry"},A=t.createContext(F);exports.AppShell=function(t){var e=t.children,r=t.environment;return s.default.createElement(a.Auth0Provider,{domain:t.domain,clientId:t.clientId,authorizationParams:{redirect_uri:window.location.origin,audience:t.audience}},s.default.createElement(x,{decorateUser:t.decorateUser},(function(t){return s.default.createElement(s.default.Fragment,null,r&&r!==i.Environment.Production&&s.default.createElement(w,{environment:r}),e(t))})))},exports.ConsentManagerProvider=function(e){var r=e.children,n=t.useState(F),o=n[0],a=n[1];return t.useEffect((function(){var t=function(){var t=p(f().mark((function t(e){var r,n;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("undefined"!=typeof window){t.next=2;break}return t.abrupt("return");case 2:r=Object.values(e.detail.services),n=r.map((function(t){var e,r,n=null==(e=Object.entries(M).find((function(e){return e[1]===t.name})))?void 0:e[0];return u.assertIsDefined(n,"Service name "+t.name+" not found in SERVICE_NAMES"),(r={})[n]={consentGiven:t.consent.given},r})).reduce((function(t,e){return d({},t,e)}),F),a(n),window.location.href="/";case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();return window.addEventListener("UC_CONSENT",t),function(){return window.removeEventListener("UC_CONSENT",t)}}),[]),s.default.createElement(A.Provider,{value:o},r)},exports.LanguageProvider=function(e){var r,n,o,a=e.children,i=(o=(r=t.useState(e.language))[1],t.useEffect((function(){C.set(n)}),[n=r[0]]),[n,o]);return s.default.createElement(j.Provider,{value:{language:i[0],setLanguage:i[1]}},a)},exports.MenuProvider=function(e){var r=e.children,n=t.useState({}),o=n[0],a=n[1],i=t.useState({}),u=i[0],c=i[1],l=t.useCallback((function(t,e){a((function(r){var n;return d({},r,((n={})[e]=t,n))}))}),[a]);return s.default.createElement(b.Provider,{value:{addItems:l,getItemsForPath:function(t){var e;return null!=(e=o[t])?e:[]},getMFNavigate:function(t){return u[t]},setMFNavigate:function(t,e){return c((function(r){var n;return d({},r,((n={})[t]=e,n))}))}}},r)},exports.MicroFrontendLink=function(t){var e=t.navigate,r=t.children,n=t.onClick,o=t.target,a=m(t,E);return s.default.createElement("a",d({onClick:function(t){try{n&&n(t)}catch(e){throw t.preventDefault(),e}t.defaultPrevented||0!==t.button||o&&"_self"!==o||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t)||(t.preventDefault(),e())},target:o},a),r)},exports.OrganisationProvider=function(e){var r,n,o,a=e.children,i=(o=(r=t.useState(Number(e.organisationId)))[1],t.useEffect((function(){L.set(n.toString())}),[n=r[0]]),[n,o]);return s.default.createElement(I.Provider,{value:{organisationId:i[0],setOrganisationId:i[1]}},a)},exports.OrganisationSelector=function(e){var r=e.getToken,o=e.getOrganisations,a=e.selectedOrganisationId,u=e.onChange,c=m(e,N),l=t.useState([]),h=l[0],g=l[1],v=_().language,y=t.useState("LOADING"),w=y[0],x=y[1];switch(t.useEffect((function(){var t=function(){var t=p(f().mark((function t(){var e,n;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r();case 2:if(e=t.sent,"string"!=typeof o){t.next=9;break}return t.next=6,fetch(o,{headers:{Authorization:"Bearer "+e,Accept:"application/json"}}).then((function(t){return t.json()}));case 6:n=t.sent,t.next=12;break;case 9:return t.next=11,o(e);case 11:n=t.sent;case 12:g(n),x("SUCCESS");case 14:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();t().catch((function(t){x("ERROR")}))}),[o,r]),w){case"LOADING":return s.default.createElement("div",{className:"eds-contrast"},s.default.createElement(n.SkeletonRectangle,{style:{height:"2.4rem"}}));case"SUCCESS":return s.default.createElement(i.OrganisationDropDown,d({label:"nb"===v||"nb-NO"===v?"Organisasjon":"Organisation",selectedOrganisationId:a,organisations:h,onChange:u},c));case"ERROR":throw new k;default:return null}},exports.OrganisationsError=k,exports.languageStorage=C,exports.organisationStorage=L,exports.useConsentManager=function(){var e=t.useContext(A);if(!e)throw new Error("useConsentManager must be used within a ConsentManagerProvider");return e},exports.useLanguage=_,exports.useMFNavigation=function(t){return(0,O().getMFNavigate)(t)},exports.useMenu=O,exports.useMenuGroupItems=function(e){return t.useContext(b).getItemsForPath(e)},exports.useOrganisation=function(){var e=t.useContext(I);return u.assertIsDefined(e),e},exports.useOrganisationId=function(){var e=t.useContext(I);return u.assertIsDefined(e),e.organisationId};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=require("@entur/alert"),n=require("@entur/typography"),r=require("@entur/loader"),o=require("@entur/tokens"),a=require("@auth0/auth0-react"),i=require("@entur-partner/common"),u=require("@entur-partner/util"),c=require("posthog-js"),s=require("posthog-js/react");function l(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var f=l(t),p=l(c);function d(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(d=function(){return!!t})()}function h(){h=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function s(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,n){return t[e]=n}}function l(t,e,n,r){var a=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new k(r||[]);return o(a,"_invoke",{value:_(t,n,i)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",d="suspendedYield",g="executing",v="completed",y={};function m(){}function w(){}function x(){}var b={};s(b,i,(function(){return this}));var E=Object.getPrototypeOf,O=E&&E(E(N([])));O&&O!==n&&r.call(O,i)&&(b=O);var P=x.prototype=m.prototype=Object.create(b);function S(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function n(o,a,i,u){var c=f(t[o],t,a);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,i,u)}),(function(t){n("throw",t,i,u)})):e.resolve(l).then((function(t){s.value=t,i(s)}),(function(t){return n("throw",t,i,u)}))}u(c.arg)}var a;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return a=a?a.then(o,o):o()}})}function _(e,n,r){var o=p;return function(a,i){if(o===g)throw Error("Generator is already running");if(o===v){if("throw"===a)throw i;return{value:t,done:!0}}for(r.method=a,r.arg=i;;){var u=r.delegate;if(u){var c=j(u,r);if(c){if(c===y)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=g;var s=f(e,n,r);if("normal"===s.type){if(o=r.done?v:d,s.arg===y)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(o=v,r.method="throw",r.arg=s.arg)}}}function j(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,j(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var a=f(o,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,y;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,y):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function N(e){if(e||""===e){var n=e[i];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return w.prototype=x,o(P,"constructor",{value:x,configurable:!0}),o(x,"constructor",{value:w,configurable:!0}),w.displayName=s(x,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,x):(t.__proto__=x,s(t,c,"GeneratorFunction")),t.prototype=Object.create(P),t},e.awrap=function(t){return{__await:t}},S(L.prototype),s(L.prototype,u,(function(){return this})),e.AsyncIterator=L,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new L(l(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},S(P),s(P,c,"Generator"),s(P,i,(function(){return this})),s(P,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=N,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(C),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function o(r,o){return u.type="throw",u.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],u=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,y):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:N(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),y}},e}function g(t,e,n,r,o,a,i){try{var u=t[a](i),c=u.value}catch(t){return void n(t)}u.done?e(c):Promise.resolve(c).then(r,o)}function v(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function i(t){g(a,r,o,i,u,"next",t)}function u(t){g(a,r,o,i,u,"throw",t)}i(void 0)}))}}function y(){return y=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},y.apply(this,arguments)}function m(t){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},m(t)}function w(t,e){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},w(t,e)}function x(t){var e="function"==typeof Map?new Map:void 0;return x=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(d())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&w(o,n.prototype),o}(t,arguments,m(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),w(n,t)},x(t)}function b(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)e.indexOf(n=a[r])>=0||(o[n]=t[n]);return o}var E=function(t){return f.default.createElement("div",{className:"epp-environment-banner",style:{position:"fixed",zIndex:9999,top:0,left:0,right:0,width:"100vw",height:"16px",backgroundColor:i.getColorForEnvironment(t.environment)}})},O=function(i){var c=i.children,s=i.decorateUser,l=t.useState(void 0),p=l[0],d=l[1],g=a.useAuth0(),y=g.user,m=g.getAccessTokenSilently,w=g.loginWithRedirect,x=g.logout,b=g.isLoading,E=g.isAuthenticated,O=g.error;return t.useEffect((function(){var t=function(){var t=v(h().mark((function t(){var e;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,m();case 3:return e=t.sent,t.next=6,s(y,e);case 6:d(t.sent),t.next=13;break;case 10:t.prev=10,t.t0=t.catch(0),console.error("Error fetching user data:",t.t0);case 13:case"end":return t.stop()}}),t,null,[[0,10]])})));return function(){return t.apply(this,arguments)}}();E&&t()}),[s,m,E,y]),b||E?b||!p?f.default.createElement(r.Loader,{style:{marginTop:o.space.extraLarge9}},"Authenticating"):O?f.default.createElement(e.BannerAlertBox,{variant:"error",title:"Authentication failed",style:{maxWidth:"600px",margin:"0 auto"}},f.default.createElement(n.Paragraph,null,"Something went wrong while trying to authenticate you. If the problem persists you should contact"," ",f.default.createElement(n.Link,{href:"mailto:support@entur.org"},"support@entur.org")," to get it resolved."),f.default.createElement(n.Paragraph,null,"Authentication failed with: ",f.default.createElement(n.CodeText,null,null==O?void 0:O.toString()))):(u.assertIsDefined(p),f.default.createElement(f.default.Fragment,null,c({user:p,logout:function(){return t=window.location,x({logoutParams:{returnTo:t.protocol+"//"+t.hostname+":"+t.port}});var t},getToken:m}))):(w(),f.default.createElement(r.Loader,{style:{marginTop:o.space.extraLarge9}},"Redirecting to login page"))},P=["navigate","children","onClick","target"],S=f.default.createContext({addItems:function(){},getItemsForPath:function(){return[]},getMFNavigate:function(){},setMFNavigate:function(){}}),L=function(){return t.useContext(S)},_="EP::activeOrgId",j={get:function(){return localStorage.getItem(_)},set:function(t){return localStorage.setItem(_,t)}},I="EP::locale",C={get:function(){return localStorage.getItem(I)},set:function(t){return localStorage.setItem(I,t)}},k=f.default.createContext(void 0),N=f.default.createContext(void 0),A=function(){var e=t.useContext(N);return u.assertIsDefined(e),e},F=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).message="Failed fetching organisations",e}var n,r;return r=t,(n=e).prototype=Object.create(r.prototype),n.prototype.constructor=n,w(n,r),e}(x(Error)),G=["getToken","getOrganisations","selectedOrganisationId","onChange"],M={Usercentrics:"Usercentrics Consent Management Platform",PostHog:"PostHog.com",Sentry:"Sentry"},T={Usercentrics:{consentGiven:!1},PostHog:{consentGiven:!1},Sentry:{consentGiven:!1}},D=function(t){return t.map((function(t){var e,n,r,o,a=null==(e=Object.entries(M).find((function(e){return e[1]===t.name})))?void 0:e[0];return u.assertIsDefined(a,"Service name "+t.name+" not found in SERVICE_NAMES"),"boolean"==typeof t.consent?((r={})[a]={consentGiven:t.consent},r):"object"==typeof t.consent&&"given"in t.consent?((o={})[a]={consentGiven:t.consent.given},o):((n={})[a]={consentGiven:!1},n)})).reduce((function(t,e){return y({},t,e)}),T)},H=t.createContext(T),R=function(){return t.useContext(H)};exports.AppShell=function(t){var e=t.children,n=t.environment;return f.default.createElement(a.Auth0Provider,{domain:t.domain,clientId:t.clientId,authorizationParams:{redirect_uri:window.location.origin,audience:t.audience}},f.default.createElement(O,{decorateUser:t.decorateUser},(function(t){return f.default.createElement(f.default.Fragment,null,n&&n!==i.Environment.Production&&f.default.createElement(E,{environment:n}),e(t))})))},exports.ConsentManagerProvider=function(e){var n=e.children,r=t.useState(T),o=r[0],a=r[1];return t.useEffect((function(){if("undefined"!=typeof window){var t=localStorage.getItem("ucData");if(t){var e=JSON.parse(t),n=D(Object.values(e.consent.services));a(n)}}}),[]),t.useEffect((function(){var t=function(){var t=v(h().mark((function t(e){var n,r;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if("undefined"!=typeof window){t.next=2;break}return t.abrupt("return");case 2:n=Object.values(e.detail.services),r=D(n),a(r),window.location.href="/";case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();return window.addEventListener("UC_CONSENT",t),function(){return window.removeEventListener("UC_CONSENT",t)}}),[]),f.default.createElement(H.Provider,{value:o},n)},exports.LanguageProvider=function(e){var n,r,o,a=e.children,i=(o=(n=t.useState(e.language))[1],t.useEffect((function(){C.set(r)}),[r=n[0]]),[r,o]);return f.default.createElement(N.Provider,{value:{language:i[0],setLanguage:i[1]}},a)},exports.MenuProvider=function(e){var n=e.children,r=t.useState({}),o=r[0],a=r[1],i=t.useState({}),u=i[0],c=i[1],s=t.useCallback((function(t,e){a((function(n){var r;return y({},n,((r={})[e]=t,r))}))}),[a]);return f.default.createElement(S.Provider,{value:{addItems:s,getItemsForPath:function(t){var e;return null!=(e=o[t])?e:[]},getMFNavigate:function(t){return u[t]},setMFNavigate:function(t,e){return c((function(n){var r;return y({},n,((r={})[t]=e,r))}))}}},n)},exports.MicroFrontendLink=function(t){var e=t.navigate,n=t.children,r=t.onClick,o=t.target,a=b(t,P);return f.default.createElement("a",y({onClick:function(t){try{r&&r(t)}catch(e){throw t.preventDefault(),e}t.defaultPrevented||0!==t.button||o&&"_self"!==o||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t)||(t.preventDefault(),e())},target:o},a),n)},exports.OrganisationProvider=function(e){var n,r,o,a=e.children,i=(o=(n=t.useState(Number(e.organisationId)))[1],t.useEffect((function(){j.set(r.toString())}),[r=n[0]]),[r,o]);return f.default.createElement(k.Provider,{value:{organisationId:i[0],setOrganisationId:i[1]}},a)},exports.OrganisationSelector=function(e){var n=e.getToken,o=e.getOrganisations,a=e.selectedOrganisationId,u=e.onChange,c=b(e,G),s=t.useState([]),l=s[0],p=s[1],d=A().language,g=t.useState("LOADING"),m=g[0],w=g[1];switch(t.useEffect((function(){var t=function(){var t=v(h().mark((function t(){var e,r;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n();case 2:if(e=t.sent,"string"!=typeof o){t.next=9;break}return t.next=6,fetch(o,{headers:{Authorization:"Bearer "+e,Accept:"application/json"}}).then((function(t){return t.json()}));case 6:r=t.sent,t.next=12;break;case 9:return t.next=11,o(e);case 11:r=t.sent;case 12:p(r),w("SUCCESS");case 14:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();t().catch((function(t){w("ERROR")}))}),[o,n]),m){case"LOADING":return f.default.createElement("div",{className:"eds-contrast"},f.default.createElement(r.SkeletonRectangle,{style:{height:"2.4rem"}}));case"SUCCESS":return f.default.createElement(i.OrganisationDropDown,y({label:"nb"===d||"nb-NO"===d?"Organisasjon":"Organisation",selectedOrganisationId:a,organisations:l,onChange:u},c));case"ERROR":throw new F;default:return null}},exports.OrganisationsError=F,exports.PostHogProviderWrapper=function(e){var n=e.debug,r=void 0!==n&&n,o=e.postHogApiKey,a=e.isStandalone,i=e.project,u=e.forceDisablePostHog,c=void 0!==u&&u,l=e.children,d=R();return t.useEffect((function(){o&&!c&&(null!=d&&d.PostHog.consentGiven?p.default.opt_in_capturing():p.default.opt_out_capturing())}),[null==d?void 0:d.PostHog.consentGiven,c,o]),!o||c?(c?console.warn("AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized."):console.warn("AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized."),f.default.createElement(f.default.Fragment,null,l)):(p.default.init(o,{debug:r,api_host:a?"https://eu.posthog.com":"/ingest",ui_host:"https://eu.posthog.com",opt_out_capturing_by_default:!0},i),f.default.createElement(s.PostHogProvider,{client:p.default},l))},exports.languageStorage=C,exports.organisationStorage=j,exports.useConsentManager=R,exports.useLanguage=A,exports.useMFNavigation=function(t){return(0,L().getMFNavigate)(t)},exports.useMenu=L,exports.useMenuGroupItems=function(e){return t.useContext(S).getItemsForPath(e)},exports.useOrganisation=function(){var e=t.useContext(k);return u.assertIsDefined(e),e},exports.useOrganisationId=function(){var e=t.useContext(k);return u.assertIsDefined(e),e.organisationId};
|
|
2
2
|
//# sourceMappingURL=app-shell.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.cjs.production.min.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/ConsentManagerProvider.tsx","../src/MicroFrontendLink.tsx","../src/OrganisationSelector.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Consents } from '@entur-partner/micro-frontend';\n\ndeclare global {\n interface Window {\n UC_UI: {\n showSecondLayer: () => void;\n };\n }\n}\n\nexport const DEFAULT_CONSENT_GIVEN = {\n Usercentrics: { consentGiven: false },\n PostHog: { consentGiven: false },\n Sentry: { consentGiven: false },\n} as const;\n\nconst SERVICE_NAMES = {\n Usercentrics: 'Usercentrics Consent Management Platform',\n PostHog: 'PostHog.com',\n Sentry: 'Sentry',\n} as const;\n\ninterface ServiceConsent {\n name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];\n consent: { given: boolean };\n}\n\nconst ConsentContext = createContext<Consents>(DEFAULT_CONSENT_GIVEN);\n\nexport const useConsentManager = () => {\n const context = useContext(ConsentContext);\n if (!context) {\n throw new Error(\n 'useConsentManager must be used within a ConsentManagerProvider'\n );\n }\n return context;\n};\n\nexport const ConsentManagerProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [consentManager, setConsentManager] = useState<Consents>(\n DEFAULT_CONSENT_GIVEN\n );\n\n useEffect(() => {\n const handleConsentEvent = async (event: Event) => {\n if (typeof window === 'undefined') return;\n\n const customEvent = event as CustomEvent;\n const services = Object.values(\n customEvent.detail.services as ServiceConsent[]\n );\n\n const updatedConsentManager = services\n .map((service) => {\n const serviceName = Object.entries(SERVICE_NAMES).find(\n (keyValue) => keyValue[1] === service.name\n )?.[0] as keyof typeof SERVICE_NAMES;\n\n // Ensure the service name is defined in SERVICE_NAMES\n assertIsDefined(\n serviceName,\n `Service name ${service.name} not found in SERVICE_NAMES`\n );\n\n return {\n [serviceName]: {\n consentGiven: service.consent.given,\n },\n };\n })\n .reduce(\n (acc, curr) => ({ ...acc, ...curr }),\n DEFAULT_CONSENT_GIVEN as Consents\n );\n setConsentManager(updatedConsentManager);\n window.location.href = '/';\n };\n\n window.addEventListener('UC_CONSENT', handleConsentEvent);\n\n return () => window.removeEventListener('UC_CONSENT', handleConsentEvent);\n }, []);\n\n return (\n <ConsentContext.Provider value={consentManager}>\n {children}\n </ConsentContext.Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<OrganisationV3[]>;\n\nexport interface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n selectedOrganisationId: number;\n onChange: (organisationId: number) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n selectedOrganisationId,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<OrganisationV3[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: OrganisationV3[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={\n language === 'nb' || language === 'nb-NO'\n ? 'Organisasjon'\n : 'Organisation'\n }\n selectedOrganisationId={selectedOrganisationId}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n"],"names":["EnvironmentBanner","_ref","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","environment","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","logout","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","wrap","_context","prev","next","sent","t0","console","stop","apply","this","arguments","Loader","marginTop","space","extraLarge9","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","_window$location","window","location","logoutParams","returnTo","protocol","hostname","port","getToken","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenu","useContext","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","value","setItem","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","LanguageContext","useLanguage","context","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","DEFAULT_CONSENT_GIVEN","Usercentrics","consentGiven","PostHog","Sentry","SERVICE_NAMES","ConsentContext","_ref3","Auth0Provider","domain","clientId","authorizationParams","redirect_uri","origin","audience","params","Environment","Production","consentManager","setConsentManager","handleConsentEvent","event","services","updatedConsentManager","abrupt","Object","values","detail","map","service","_Object$entries$find","serviceName","entries","find","keyValue","name","consent","given","reduce","acc","curr","_extends","_x","addEventListener","removeEventListener","Provider","activeLanguage","setLanguage","_useLanguageState","language","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","path","prevState","_extends2","_groups$path","navigation","_extends3","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","organisationId","setOrganisationId","_useOrganisationState","Number","getOrganisations","selectedOrganisationId","onChange","organisations","setOrganisations","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-shell.cjs.production.min.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/types/ConsentTypes.ts","../src/util/convertUCServicesToConsents.ts","../src/ConsentManagerProvider.tsx","../src/MicroFrontendLink.tsx","../src/OrganisationSelector.tsx","../src/PostHogProviderWrapper.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './types/UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n\nexport const UC_UI_STORAGE_KEY = 'ucData';\n\nexport const ucUiStorage = {\n get: () => localStorage.getItem(UC_UI_STORAGE_KEY),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","export const SERVICE_NAMES = {\n Usercentrics: 'Usercentrics Consent Management Platform',\n PostHog: 'PostHog.com',\n Sentry: 'Sentry',\n} as const;\n\nexport interface ServiceConsent {\n name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];\n consent: { given: boolean };\n}\n\nexport interface UCDataConsentDataFromLocalStorage {\n consent: {\n services: {\n [key: string]: {\n name: string;\n consent: boolean;\n };\n };\n };\n}\n\nexport type UCServiceArray = Array<\n UCDataConsentDataFromLocalStorage['consent']['services'][keyof UCDataConsentDataFromLocalStorage['consent']['services']]\n>;\n","import { Consents } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport {\n SERVICE_NAMES,\n ServiceConsent,\n UCServiceArray,\n} from '../types/ConsentTypes';\n\nexport const DEFAULT_CONSENT_GIVEN = {\n Usercentrics: { consentGiven: false },\n PostHog: { consentGiven: false },\n Sentry: { consentGiven: false },\n} as const;\n\nexport const convertUCServicesToConsents = (\n services: ServiceConsent[] | UCServiceArray\n): Consents => {\n return services\n .map((service) => {\n const serviceName = Object.entries(SERVICE_NAMES).find(\n (keyValue) => keyValue[1] === service.name\n )?.[0] as keyof typeof SERVICE_NAMES;\n\n // Ensure the service name exists in SERVICE_NAMES\n assertIsDefined(\n serviceName,\n `Service name ${service.name} not found in SERVICE_NAMES`\n );\n\n if (typeof service.consent == 'boolean') {\n const consentGiven = service.consent as boolean;\n return {\n [serviceName]: {\n consentGiven: consentGiven,\n },\n };\n } else if (\n typeof service.consent === 'object' &&\n 'given' in service.consent\n ) {\n const consentGiven = service.consent.given;\n return {\n [serviceName]: {\n consentGiven: consentGiven,\n },\n };\n }\n\n return {\n [serviceName]: {\n consentGiven: false,\n },\n };\n })\n .reduce(\n (acc, curr) => ({ ...acc, ...curr }),\n DEFAULT_CONSENT_GIVEN as Consents\n );\n};\n","import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from 'react';\nimport { Consents } from '@entur-partner/micro-frontend';\n\nimport { ucUiStorage } from './storage';\nimport {\n ServiceConsent,\n UCDataConsentDataFromLocalStorage,\n} from './types/ConsentTypes';\nimport {\n convertUCServicesToConsents,\n DEFAULT_CONSENT_GIVEN,\n} from './util/convertUCServicesToConsents';\n\ndeclare global {\n interface Window {\n UC_UI: {\n showSecondLayer: () => void;\n };\n }\n}\n\nconst ConsentContext = createContext<Consents>(DEFAULT_CONSENT_GIVEN);\n\nexport const useConsentManager = () => {\n const context = useContext(ConsentContext);\n return context;\n};\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const ConsentManagerProvider = ({ children }: Props) => {\n const [consentManager, setConsentManager] = useState<Consents>(\n DEFAULT_CONSENT_GIVEN\n );\n\n // Initialize consent manager from local storage once\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const ucData = ucUiStorage.get();\n\n if (ucData) {\n const data = JSON.parse(ucData) as UCDataConsentDataFromLocalStorage;\n const services = convertUCServicesToConsents(\n Object.values(data.consent.services)\n );\n\n setConsentManager(services);\n }\n }, []);\n\n // Listen for Usercentrics consent events and update consent manager state\n useEffect(() => {\n const handleConsentEvent = async (event: Event) => {\n if (typeof window === 'undefined') return;\n\n const customEvent = event as CustomEvent;\n const services = Object.values(\n customEvent.detail.services as ServiceConsent[]\n );\n\n const updatedConsentManager = convertUCServicesToConsents(services);\n setConsentManager(updatedConsentManager);\n window.location.href = '/';\n };\n\n window.addEventListener('UC_CONSENT', handleConsentEvent);\n\n return () => window.removeEventListener('UC_CONSENT', handleConsentEvent);\n }, []);\n\n return (\n <ConsentContext.Provider value={consentManager}>\n {children}\n </ConsentContext.Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<OrganisationV3[]>;\n\nexport interface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n selectedOrganisationId: number;\n onChange: (organisationId: number) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n selectedOrganisationId,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<OrganisationV3[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: OrganisationV3[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={\n language === 'nb' || language === 'nb-NO'\n ? 'Organisasjon'\n : 'Organisation'\n }\n selectedOrganisationId={selectedOrganisationId}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n","import React, { ReactNode, useEffect } from 'react';\nimport postHog from 'posthog-js';\nimport { PostHogProvider } from 'posthog-js/react';\n\nimport { useConsentManager } from './ConsentManagerProvider';\n\ntype Props = {\n /**\n * Debug mode for PostHog.\n */\n debug?: boolean;\n /**\n * PostHog API key for initializing the PostHog client.\n * If not provided, PostHog will not be initialized.\n */\n postHogApiKey?: string;\n /**\n * Flag to indicate if the application is running in a standalone mode or as a micro-frontend.\n */\n isStandalone: boolean;\n /**\n * Optional project identifier for PostHog.\n * This can be used to differentiate between different projects in PostHog.\n */\n project?: string;\n /**\n * Flag to force disable PostHog tracking.\n * If true, PostHog will not be initialized even if postHogApiKey is provided.\n */\n forceDisablePostHog?: boolean;\n children: ReactNode;\n};\n\nexport const PostHogProviderWrapper = ({\n debug = false,\n postHogApiKey,\n isStandalone,\n project,\n forceDisablePostHog = false,\n children,\n}: Props) => {\n const consents = useConsentManager();\n\n useEffect(() => {\n if (!postHogApiKey || forceDisablePostHog) {\n return;\n }\n\n if (consents?.PostHog.consentGiven) {\n postHog.opt_in_capturing();\n } else {\n postHog.opt_out_capturing();\n }\n }, [consents?.PostHog.consentGiven, forceDisablePostHog, postHogApiKey]);\n\n // If no API key is provided or PostHog is forced to be disabled, do not initialize PostHog\n if (!postHogApiKey || forceDisablePostHog) {\n if (!forceDisablePostHog) {\n console.warn(\n 'AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized.'\n );\n } else {\n console.warn(\n 'AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized.'\n );\n }\n\n return <>{children}</>;\n }\n\n postHog.init(\n postHogApiKey,\n {\n debug,\n api_host: isStandalone ? 'https://eu.posthog.com' : '/ingest',\n ui_host: 'https://eu.posthog.com',\n opt_out_capturing_by_default: true,\n },\n project\n );\n\n return <PostHogProvider client={postHog}>{children}</PostHogProvider>;\n};\n"],"names":["EnvironmentBanner","_ref","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","environment","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","logout","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","wrap","_context","prev","next","sent","t0","console","stop","apply","this","arguments","Loader","marginTop","space","extraLarge9","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","_window$location","window","location","logoutParams","returnTo","protocol","hostname","port","getToken","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenu","useContext","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","value","setItem","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","LanguageContext","useLanguage","context","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_wrapNativeSuper","Error","SERVICE_NAMES","Usercentrics","PostHog","Sentry","DEFAULT_CONSENT_GIVEN","consentGiven","convertUCServicesToConsents","services","map","service","_Object$entries$find","_ref3","serviceName","Object","entries","find","keyValue","name","consent","given","reduce","acc","curr","_extends","ConsentContext","useConsentManager","Auth0Provider","domain","clientId","authorizationParams","redirect_uri","origin","audience","params","Environment","Production","consentManager","setConsentManager","ucData","data","JSON","parse","values","handleConsentEvent","event","updatedConsentManager","abrupt","detail","_x","addEventListener","removeEventListener","Provider","activeLanguage","setLanguage","_useLanguageState","language","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","path","prevState","_extends2","_groups$path","navigation","_extends3","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","organisationId","setOrganisationId","_useOrganisationState","Number","getOrganisations","selectedOrganisationId","onChange","organisations","setOrganisations","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","_ref$debug","debug","postHogApiKey","isStandalone","project","_ref$forceDisablePost","forceDisablePostHog","consents","postHog","opt_in_capturing","opt_out_capturing","warn","init","api_host","ui_host","opt_out_capturing_by_default","PostHogProvider","client"],"mappings":"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"}
|
package/dist/app-shell.esm.js
CHANGED
|
@@ -6,6 +6,8 @@ import { space } from '@entur/tokens';
|
|
|
6
6
|
import { Auth0Provider, useAuth0 } from '@auth0/auth0-react';
|
|
7
7
|
import { getColorForEnvironment, Environment, OrganisationDropDown } from '@entur-partner/common';
|
|
8
8
|
import { assertIsDefined } from '@entur-partner/util';
|
|
9
|
+
import postHog from 'posthog-js';
|
|
10
|
+
import { PostHogProvider } from 'posthog-js/react';
|
|
9
11
|
|
|
10
12
|
function _construct(t, e, r) {
|
|
11
13
|
if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
|
|
@@ -680,6 +682,12 @@ var languageStorage = {
|
|
|
680
682
|
return localStorage.setItem(LANGUAGE_STORAGE_KEY, value);
|
|
681
683
|
}
|
|
682
684
|
};
|
|
685
|
+
var UC_UI_STORAGE_KEY = 'ucData';
|
|
686
|
+
var ucUiStorage = {
|
|
687
|
+
get: function get() {
|
|
688
|
+
return localStorage.getItem(UC_UI_STORAGE_KEY);
|
|
689
|
+
}
|
|
690
|
+
};
|
|
683
691
|
|
|
684
692
|
var OrganisationContext = /*#__PURE__*/React.createContext(undefined);
|
|
685
693
|
var useOrganisation = function useOrganisation() {
|
|
@@ -849,6 +857,12 @@ var OrganisationSelector = function OrganisationSelector(_ref) {
|
|
|
849
857
|
}
|
|
850
858
|
};
|
|
851
859
|
|
|
860
|
+
var SERVICE_NAMES = {
|
|
861
|
+
Usercentrics: 'Usercentrics Consent Management Platform',
|
|
862
|
+
PostHog: 'PostHog.com',
|
|
863
|
+
Sentry: 'Sentry'
|
|
864
|
+
};
|
|
865
|
+
|
|
852
866
|
var DEFAULT_CONSENT_GIVEN = {
|
|
853
867
|
Usercentrics: {
|
|
854
868
|
consentGiven: false
|
|
@@ -860,17 +874,38 @@ var DEFAULT_CONSENT_GIVEN = {
|
|
|
860
874
|
consentGiven: false
|
|
861
875
|
}
|
|
862
876
|
};
|
|
863
|
-
var
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
877
|
+
var convertUCServicesToConsents = function convertUCServicesToConsents(services) {
|
|
878
|
+
return services.map(function (service) {
|
|
879
|
+
var _Object$entries$find, _ref3;
|
|
880
|
+
var serviceName = (_Object$entries$find = Object.entries(SERVICE_NAMES).find(function (keyValue) {
|
|
881
|
+
return keyValue[1] === service.name;
|
|
882
|
+
})) == null ? void 0 : _Object$entries$find[0];
|
|
883
|
+
// Ensure the service name exists in SERVICE_NAMES
|
|
884
|
+
assertIsDefined(serviceName, "Service name " + service.name + " not found in SERVICE_NAMES");
|
|
885
|
+
if (typeof service.consent == 'boolean') {
|
|
886
|
+
var _ref;
|
|
887
|
+
var consentGiven = service.consent;
|
|
888
|
+
return _ref = {}, _ref[serviceName] = {
|
|
889
|
+
consentGiven: consentGiven
|
|
890
|
+
}, _ref;
|
|
891
|
+
} else if (typeof service.consent === 'object' && 'given' in service.consent) {
|
|
892
|
+
var _ref2;
|
|
893
|
+
var _consentGiven = service.consent.given;
|
|
894
|
+
return _ref2 = {}, _ref2[serviceName] = {
|
|
895
|
+
consentGiven: _consentGiven
|
|
896
|
+
}, _ref2;
|
|
897
|
+
}
|
|
898
|
+
return _ref3 = {}, _ref3[serviceName] = {
|
|
899
|
+
consentGiven: false
|
|
900
|
+
}, _ref3;
|
|
901
|
+
}).reduce(function (acc, curr) {
|
|
902
|
+
return _extends({}, acc, curr);
|
|
903
|
+
}, DEFAULT_CONSENT_GIVEN);
|
|
867
904
|
};
|
|
905
|
+
|
|
868
906
|
var ConsentContext = /*#__PURE__*/createContext(DEFAULT_CONSENT_GIVEN);
|
|
869
907
|
var useConsentManager = function useConsentManager() {
|
|
870
908
|
var context = useContext(ConsentContext);
|
|
871
|
-
if (!context) {
|
|
872
|
-
throw new Error('useConsentManager must be used within a ConsentManagerProvider');
|
|
873
|
-
}
|
|
874
909
|
return context;
|
|
875
910
|
};
|
|
876
911
|
var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
@@ -878,6 +913,17 @@ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
|
878
913
|
var _useState = useState(DEFAULT_CONSENT_GIVEN),
|
|
879
914
|
consentManager = _useState[0],
|
|
880
915
|
setConsentManager = _useState[1];
|
|
916
|
+
// Initialize consent manager from local storage once
|
|
917
|
+
useEffect(function () {
|
|
918
|
+
if (typeof window === 'undefined') return;
|
|
919
|
+
var ucData = ucUiStorage.get();
|
|
920
|
+
if (ucData) {
|
|
921
|
+
var data = JSON.parse(ucData);
|
|
922
|
+
var services = convertUCServicesToConsents(Object.values(data.consent.services));
|
|
923
|
+
setConsentManager(services);
|
|
924
|
+
}
|
|
925
|
+
}, []);
|
|
926
|
+
// Listen for Usercentrics consent events and update consent manager state
|
|
881
927
|
useEffect(function () {
|
|
882
928
|
var handleConsentEvent = /*#__PURE__*/function () {
|
|
883
929
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(event) {
|
|
@@ -893,19 +939,7 @@ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
|
893
939
|
case 2:
|
|
894
940
|
customEvent = event;
|
|
895
941
|
services = Object.values(customEvent.detail.services);
|
|
896
|
-
updatedConsentManager = services
|
|
897
|
-
var _Object$entries$find, _ref3;
|
|
898
|
-
var serviceName = (_Object$entries$find = Object.entries(SERVICE_NAMES).find(function (keyValue) {
|
|
899
|
-
return keyValue[1] === service.name;
|
|
900
|
-
})) == null ? void 0 : _Object$entries$find[0];
|
|
901
|
-
// Ensure the service name is defined in SERVICE_NAMES
|
|
902
|
-
assertIsDefined(serviceName, "Service name " + service.name + " not found in SERVICE_NAMES");
|
|
903
|
-
return _ref3 = {}, _ref3[serviceName] = {
|
|
904
|
-
consentGiven: service.consent.given
|
|
905
|
-
}, _ref3;
|
|
906
|
-
}).reduce(function (acc, curr) {
|
|
907
|
-
return _extends({}, acc, curr);
|
|
908
|
-
}, DEFAULT_CONSENT_GIVEN);
|
|
942
|
+
updatedConsentManager = convertUCServicesToConsents(services);
|
|
909
943
|
setConsentManager(updatedConsentManager);
|
|
910
944
|
window.location.href = '/';
|
|
911
945
|
case 7:
|
|
@@ -928,5 +962,45 @@ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
|
|
|
928
962
|
}, children);
|
|
929
963
|
};
|
|
930
964
|
|
|
931
|
-
|
|
965
|
+
var PostHogProviderWrapper = function PostHogProviderWrapper(_ref) {
|
|
966
|
+
var _ref$debug = _ref.debug,
|
|
967
|
+
debug = _ref$debug === void 0 ? false : _ref$debug,
|
|
968
|
+
postHogApiKey = _ref.postHogApiKey,
|
|
969
|
+
isStandalone = _ref.isStandalone,
|
|
970
|
+
project = _ref.project,
|
|
971
|
+
_ref$forceDisablePost = _ref.forceDisablePostHog,
|
|
972
|
+
forceDisablePostHog = _ref$forceDisablePost === void 0 ? false : _ref$forceDisablePost,
|
|
973
|
+
children = _ref.children;
|
|
974
|
+
var consents = useConsentManager();
|
|
975
|
+
useEffect(function () {
|
|
976
|
+
if (!postHogApiKey || forceDisablePostHog) {
|
|
977
|
+
return;
|
|
978
|
+
}
|
|
979
|
+
if (consents != null && consents.PostHog.consentGiven) {
|
|
980
|
+
postHog.opt_in_capturing();
|
|
981
|
+
} else {
|
|
982
|
+
postHog.opt_out_capturing();
|
|
983
|
+
}
|
|
984
|
+
}, [consents == null ? void 0 : consents.PostHog.consentGiven, forceDisablePostHog, postHogApiKey]);
|
|
985
|
+
// If no API key is provided or PostHog is forced to be disabled, do not initialize PostHog
|
|
986
|
+
if (!postHogApiKey || forceDisablePostHog) {
|
|
987
|
+
if (!forceDisablePostHog) {
|
|
988
|
+
console.warn('AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized.');
|
|
989
|
+
} else {
|
|
990
|
+
console.warn('AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized.');
|
|
991
|
+
}
|
|
992
|
+
return React.createElement(React.Fragment, null, children);
|
|
993
|
+
}
|
|
994
|
+
postHog.init(postHogApiKey, {
|
|
995
|
+
debug: debug,
|
|
996
|
+
api_host: isStandalone ? 'https://eu.posthog.com' : '/ingest',
|
|
997
|
+
ui_host: 'https://eu.posthog.com',
|
|
998
|
+
opt_out_capturing_by_default: true
|
|
999
|
+
}, project);
|
|
1000
|
+
return React.createElement(PostHogProvider, {
|
|
1001
|
+
client: postHog
|
|
1002
|
+
}, children);
|
|
1003
|
+
};
|
|
1004
|
+
|
|
1005
|
+
export { AppShell, ConsentManagerProvider, LanguageProvider, MenuProvider, MicroFrontendLink, OrganisationProvider, OrganisationSelector, OrganisationsError, PostHogProviderWrapper, languageStorage, organisationStorage, useConsentManager, useLanguage, useMFNavigation, useMenu, useMenuGroupItems, useOrganisation, useOrganisationId };
|
|
932
1006
|
//# sourceMappingURL=app-shell.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.esm.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx","../src/ConsentManagerProvider.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<OrganisationV3[]>;\n\nexport interface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n selectedOrganisationId: number;\n onChange: (organisationId: number) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n selectedOrganisationId,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<OrganisationV3[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: OrganisationV3[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={\n language === 'nb' || language === 'nb-NO'\n ? 'Organisasjon'\n : 'Organisation'\n }\n selectedOrganisationId={selectedOrganisationId}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n","import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\nimport { Consents } from '@entur-partner/micro-frontend';\n\ndeclare global {\n interface Window {\n UC_UI: {\n showSecondLayer: () => void;\n };\n }\n}\n\nexport const DEFAULT_CONSENT_GIVEN = {\n Usercentrics: { consentGiven: false },\n PostHog: { consentGiven: false },\n Sentry: { consentGiven: false },\n} as const;\n\nconst SERVICE_NAMES = {\n Usercentrics: 'Usercentrics Consent Management Platform',\n PostHog: 'PostHog.com',\n Sentry: 'Sentry',\n} as const;\n\ninterface ServiceConsent {\n name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];\n consent: { given: boolean };\n}\n\nconst ConsentContext = createContext<Consents>(DEFAULT_CONSENT_GIVEN);\n\nexport const useConsentManager = () => {\n const context = useContext(ConsentContext);\n if (!context) {\n throw new Error(\n 'useConsentManager must be used within a ConsentManagerProvider'\n );\n }\n return context;\n};\n\nexport const ConsentManagerProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [consentManager, setConsentManager] = useState<Consents>(\n DEFAULT_CONSENT_GIVEN\n );\n\n useEffect(() => {\n const handleConsentEvent = async (event: Event) => {\n if (typeof window === 'undefined') return;\n\n const customEvent = event as CustomEvent;\n const services = Object.values(\n customEvent.detail.services as ServiceConsent[]\n );\n\n const updatedConsentManager = services\n .map((service) => {\n const serviceName = Object.entries(SERVICE_NAMES).find(\n (keyValue) => keyValue[1] === service.name\n )?.[0] as keyof typeof SERVICE_NAMES;\n\n // Ensure the service name is defined in SERVICE_NAMES\n assertIsDefined(\n serviceName,\n `Service name ${service.name} not found in SERVICE_NAMES`\n );\n\n return {\n [serviceName]: {\n consentGiven: service.consent.given,\n },\n };\n })\n .reduce(\n (acc, curr) => ({ ...acc, ...curr }),\n DEFAULT_CONSENT_GIVEN as Consents\n );\n setConsentManager(updatedConsentManager);\n window.location.href = '/';\n };\n\n window.addEventListener('UC_CONSENT', handleConsentEvent);\n\n return () => window.removeEventListener('UC_CONSENT', handleConsentEvent);\n }, []);\n\n return (\n <ConsentContext.Provider value={consentManager}>\n {children}\n </ConsentContext.Provider>\n );\n};\n"],"names":["EnvironmentBanner","_ref","environment","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","userLogout","logout","_window$location","window","location","protocol","hostname","port","logoutParams","returnTo","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","decoratedUser","wrap","_callee$","_context","prev","next","sent","t0","console","stop","apply","arguments","Loader","marginTop","space","extraLarge9","process","env","NODE_ENV","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","getToken","AppShell","_ref3","audience","domain","clientId","Auth0Provider","authorizationParams","redirect_uri","origin","params","Environment","Production","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","_extends","ex","preventDefault","defaultPrevented","button","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useContext","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","Provider","value","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","setItem","LANGUAGE_STORAGE_KEY","languageStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_inheritsLoose","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","selectedOrganisationId","onChange","organisations","setOrganisations","_useLanguage","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","DEFAULT_CONSENT_GIVEN","Usercentrics","consentGiven","PostHog","Sentry","SERVICE_NAMES","ConsentContext","useConsentManager","ConsentManagerProvider","consentManager","setConsentManager","handleConsentEvent","customEvent","services","updatedConsentManager","abrupt","Object","values","detail","map","service","_Object$entries$find","serviceName","entries","find","keyValue","name","consent","given","reduce","acc","curr","_x","addEventListener","removeEventListener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-shell.esm.js","sources":["../src/EnvironmentBanner.tsx","../src/AppShell.tsx","../src/MicroFrontendLink.tsx","../src/MenuProvider.tsx","../src/storage.ts","../src/OrganisationProvider.tsx","../src/LanguageProvider.tsx","../src/OrganisationsError.ts","../src/OrganisationSelector.tsx","../src/types/ConsentTypes.ts","../src/util/convertUCServicesToConsents.ts","../src/ConsentManagerProvider.tsx","../src/PostHogProviderWrapper.tsx"],"sourcesContent":["import React from 'react';\nimport { Environment, getColorForEnvironment } from '@entur-partner/common';\n\ntype EnvironmentBannerProps = {\n environment: Exclude<Environment, Environment.Production>;\n};\n\nexport const EnvironmentBanner = ({ environment }: EnvironmentBannerProps) => {\n return (\n <div\n className=\"epp-environment-banner\"\n style={{\n position: 'fixed',\n zIndex: 9999,\n top: 0,\n left: 0,\n right: 0,\n width: '100vw',\n height: '16px',\n backgroundColor: getColorForEnvironment(environment),\n }}\n />\n );\n};\n","import React, { FC, ReactNode, useEffect, useState } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { CodeText, Link, Paragraph } from '@entur/typography';\nimport { Loader } from '@entur/loader';\nimport { space } from '@entur/tokens';\nimport {\n Auth0Provider,\n useAuth0,\n GetTokenSilentlyOptions,\n Auth0ContextInterface,\n} from '@auth0/auth0-react';\nimport { User } from '@entur-partner/micro-frontend';\nimport { Environment } from '@entur-partner/common';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { EnvironmentBanner } from './EnvironmentBanner';\nimport { DecorateUserFn } from './types/UserTypes';\n\nfunction userLogout(logout: Auth0ContextInterface['logout']) {\n const { protocol, hostname, port } = window.location;\n return logout({\n logoutParams: { returnTo: `${protocol}//${hostname}:${port}` },\n });\n}\n\nexport interface AppShellValues {\n logout: Auth0ContextInterface['logout'];\n user: User;\n getToken(options?: GetTokenSilentlyOptions): Promise<string>;\n}\n\ninterface AuthenticateProps {\n children: (options: AppShellValues) => ReactNode;\n decorateUser: DecorateUserFn;\n}\n\nconst Authenticate: FC<AuthenticateProps> = ({ children, decorateUser }) => {\n const [userWithPermission, setUserWithPermission] = useState<\n User | undefined\n >(undefined);\n const {\n user,\n getAccessTokenSilently,\n loginWithRedirect,\n logout,\n isLoading,\n isAuthenticated,\n error,\n } = useAuth0();\n\n useEffect(() => {\n const fetchUserData = async () => {\n try {\n const token = await getAccessTokenSilently();\n const decoratedUser = await decorateUser(user as User, token);\n setUserWithPermission(decoratedUser);\n } catch (error) {\n console.error('Error fetching user data:', error);\n }\n };\n\n if (isAuthenticated) {\n fetchUserData();\n }\n }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);\n\n if (!isLoading && !isAuthenticated) {\n loginWithRedirect();\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>\n Redirecting to login page\n </Loader>\n );\n }\n\n if (isLoading || !userWithPermission) {\n return (\n <Loader style={{ marginTop: space.extraLarge9 }}>Authenticating</Loader>\n );\n }\n\n if (error) {\n process.env.NODE_ENV !== 'production' && console.error(error);\n return (\n <BannerAlertBox\n variant=\"error\"\n title=\"Authentication failed\"\n style={{ maxWidth: '600px', margin: '0 auto' }}\n >\n <Paragraph>\n Something went wrong while trying to authenticate you. If the problem\n persists you should contact{' '}\n <Link href=\"mailto:support@entur.org\">support@entur.org</Link> to get\n it resolved.\n </Paragraph>\n <Paragraph>\n Authentication failed with: <CodeText>{error?.toString()}</CodeText>\n </Paragraph>\n </BannerAlertBox>\n );\n }\n assertIsDefined(userWithPermission);\n return (\n <>\n {children({\n user: userWithPermission,\n logout: () => userLogout(logout),\n getToken: getAccessTokenSilently,\n })}\n </>\n );\n};\n\nexport interface AppShellProps {\n children: (options: AppShellValues) => ReactNode;\n audience: string;\n domain: string;\n clientId: string;\n decorateUser: DecorateUserFn;\n redirectUri?: string;\n environment?: Environment;\n}\n\nexport const AppShell = ({\n children,\n audience,\n domain,\n clientId,\n decorateUser,\n environment,\n}: AppShellProps) => {\n return (\n <Auth0Provider\n domain={domain}\n clientId={clientId}\n authorizationParams={{\n redirect_uri: window.location.origin,\n audience: audience,\n }}\n >\n <Authenticate decorateUser={decorateUser}>\n {(params) => (\n <>\n {environment && environment !== Environment.Production && (\n <EnvironmentBanner environment={environment} />\n )}\n {children(params)}\n </>\n )}\n </Authenticate>\n </Auth0Provider>\n );\n};\n","import React, { FC, MouseEvent, ReactNode, AnchorHTMLAttributes } from 'react';\n\ninterface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n navigate: () => void;\n children: ReactNode;\n}\n\nfunction isModifiedEvent(event: MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const MicroFrontendLink: FC<LinkProps> = ({\n navigate,\n children,\n onClick,\n target,\n ...rest\n}) => {\n return (\n <a\n onClick={(event) => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but right clicks\n (!target || target === '_self') && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }}\n target={target}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import React, { FC, ReactNode, useCallback, useContext, useState } from 'react';\nimport { MenuItem, NavigationFunction } from '@entur-partner/micro-frontend';\n\ninterface MenuGroups {\n [path: string]: MenuItem[];\n}\n\ninterface MenuContextType {\n getItemsForPath: (path: string) => MenuItem[];\n addItems: (items: MenuItem[], path: string) => void;\n getMFNavigate: (path: string) => NavigationFunction | undefined;\n setMFNavigate: (path: string, navigation: NavigationFunction) => void;\n}\n\nexport const MenuContext = React.createContext<MenuContextType>({\n addItems: () => {},\n getItemsForPath: () => [],\n getMFNavigate: () => undefined,\n setMFNavigate: () => {},\n});\n\nexport const useMenuGroupItems = (path: string) => {\n const context = useContext(MenuContext);\n return context.getItemsForPath(path);\n};\n\nexport const useMenu = () => {\n return useContext(MenuContext);\n};\n\nexport const useMFNavigation = (path: string) => {\n const { getMFNavigate } = useMenu();\n return getMFNavigate(path);\n};\n\ninterface MenuProviderProps {\n children: ReactNode;\n}\n\nexport const MenuProvider: FC<MenuProviderProps> = ({ children }) => {\n const [groups, setGroups] = useState<MenuGroups>({});\n const [navFuncs, setNavFuncs] = useState<Record<string, NavigationFunction>>(\n {}\n );\n\n const addItems = useCallback(\n (newItems: MenuItem[], path: string) => {\n setGroups((prevState) => ({\n ...prevState,\n [path]: newItems,\n }));\n },\n [setGroups]\n );\n\n const getMFNavigate = (path: string) => navFuncs[path];\n const setMFNavigate = (path: string, navigation: NavigationFunction) =>\n setNavFuncs((prev) => ({ ...prev, [path]: navigation }));\n\n return (\n <MenuContext.Provider\n value={{\n addItems,\n getItemsForPath: (path) => groups[path] ?? [],\n getMFNavigate,\n setMFNavigate,\n }}\n >\n {children}\n </MenuContext.Provider>\n );\n};\n","export const ORGANISATION_STORAGE_KEY = 'EP::activeOrgId';\n\nexport const organisationStorage = {\n get: () => localStorage.getItem(ORGANISATION_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(ORGANISATION_STORAGE_KEY, value),\n};\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nexport const languageStorage = {\n get: () => localStorage.getItem(LANGUAGE_STORAGE_KEY),\n set: (value: string) => localStorage.setItem(LANGUAGE_STORAGE_KEY, value),\n};\n\nexport const UC_UI_STORAGE_KEY = 'ucData';\n\nexport const ucUiStorage = {\n get: () => localStorage.getItem(UC_UI_STORAGE_KEY),\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { organisationStorage } from './storage';\n\ninterface OrganisationContextType {\n organisationId: number;\n setOrganisationId: (organisationId: number) => void;\n}\n\nconst OrganisationContext = React.createContext<\n OrganisationContextType | undefined\n>(undefined);\n\nexport const useOrganisation = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context;\n};\n\nexport const useOrganisationId = () => {\n const context = useContext(OrganisationContext);\n assertIsDefined(context);\n return context.organisationId;\n};\n\nconst useOrganisationState = (\n initialOrganisationId: string\n): [number, Dispatch<SetStateAction<number>>] => {\n const [organisationId, setOrganisationId] = useState<number>(\n Number(initialOrganisationId)\n );\n\n useEffect(() => {\n organisationStorage.set(organisationId.toString());\n }, [organisationId]);\n\n return [organisationId, setOrganisationId];\n};\n\ninterface OrganisationProviderProps {\n children: ReactNode;\n organisationId: string;\n}\n\nexport const OrganisationProvider: FC<OrganisationProviderProps> = ({\n children,\n organisationId,\n}) => {\n const [orgId, setOrganisationId] = useOrganisationState(organisationId);\n return (\n <OrganisationContext.Provider\n value={{ organisationId: orgId, setOrganisationId }}\n >\n {children}\n </OrganisationContext.Provider>\n );\n};\n","import React, {\n FC,\n ReactNode,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { languageStorage } from './storage';\n\ninterface LanguageContextType {\n language: string;\n setLanguage: (language: string) => void;\n}\n\nconst LanguageContext = React.createContext<LanguageContextType | undefined>(\n undefined\n);\n\nconst useLanguageState = (\n language: string\n): [string, Dispatch<SetStateAction<string>>] => {\n const [activeLanguage, setLanguage] = useState(language);\n\n useEffect(() => {\n languageStorage.set(activeLanguage);\n }, [activeLanguage]);\n\n return [activeLanguage, setLanguage];\n};\n\nexport const useLanguage = () => {\n const context = useContext(LanguageContext);\n assertIsDefined(context);\n return context;\n};\n\ninterface LanguageProviderProps {\n children: ReactNode;\n language: string;\n}\n\nexport const LanguageProvider: FC<LanguageProviderProps> = ({\n children,\n language,\n}) => {\n const [activeLanguage, setLanguage] = useLanguageState(language);\n return (\n <LanguageContext.Provider value={{ language: activeLanguage, setLanguage }}>\n {children}\n </LanguageContext.Provider>\n );\n};\n","export class OrganisationsError extends Error {\n message = 'Failed fetching organisations';\n}\n","import React, { FC, useEffect, useState } from 'react';\nimport { OrganisationDropDown } from '@entur-partner/common';\nimport { SkeletonRectangle } from '@entur/loader';\nimport { GetTokenSilentlyOptions } from '@auth0/auth0-spa-js';\n\nimport { useLanguage } from './LanguageProvider';\nimport { OrganisationsError } from './OrganisationsError';\n\nexport type GetOrganisationsFn = (token: string) => Promise<OrganisationV3[]>;\n\nexport interface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\nexport interface OrganisationSelectorProps {\n getToken: (options?: GetTokenSilentlyOptions) => Promise<string>;\n getOrganisations: GetOrganisationsFn | string;\n selectedOrganisationId: number;\n onChange: (organisationId: number) => void;\n [key: string]: any;\n}\n\nexport const OrganisationSelector: FC<OrganisationSelectorProps> = ({\n getToken,\n getOrganisations,\n selectedOrganisationId,\n onChange,\n ...rest\n}) => {\n const [organisations, setOrganisations] = useState<OrganisationV3[]>([]);\n const { language } = useLanguage();\n\n const [status, setStatus] = useState<'LOADING' | 'ERROR' | 'SUCCESS'>(\n 'LOADING'\n );\n\n useEffect(() => {\n const fetchOrganisations = async () => {\n const token = await getToken();\n let organisations: OrganisationV3[];\n if (typeof getOrganisations === 'string') {\n organisations = await fetch(getOrganisations, {\n headers: {\n Authorization: `Bearer ${token}`,\n Accept: 'application/json',\n },\n }).then((response) => response.json());\n } else {\n organisations = await getOrganisations(token);\n }\n setOrganisations(organisations);\n setStatus('SUCCESS');\n };\n\n fetchOrganisations().catch((error) => {\n if (process.env.NODE_ENV === 'development') {\n console.error(error);\n }\n setStatus('ERROR');\n });\n }, [getOrganisations, getToken]);\n\n switch (status) {\n case 'LOADING':\n return (\n <div className=\"eds-contrast\">\n <SkeletonRectangle style={{ height: '2.4rem' }} />\n </div>\n );\n case 'SUCCESS':\n return (\n <OrganisationDropDown\n label={\n language === 'nb' || language === 'nb-NO'\n ? 'Organisasjon'\n : 'Organisation'\n }\n selectedOrganisationId={selectedOrganisationId}\n organisations={organisations}\n onChange={onChange}\n {...rest}\n />\n );\n case 'ERROR':\n throw new OrganisationsError();\n default:\n return null;\n }\n};\n","export const SERVICE_NAMES = {\n Usercentrics: 'Usercentrics Consent Management Platform',\n PostHog: 'PostHog.com',\n Sentry: 'Sentry',\n} as const;\n\nexport interface ServiceConsent {\n name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];\n consent: { given: boolean };\n}\n\nexport interface UCDataConsentDataFromLocalStorage {\n consent: {\n services: {\n [key: string]: {\n name: string;\n consent: boolean;\n };\n };\n };\n}\n\nexport type UCServiceArray = Array<\n UCDataConsentDataFromLocalStorage['consent']['services'][keyof UCDataConsentDataFromLocalStorage['consent']['services']]\n>;\n","import { Consents } from '@entur-partner/micro-frontend';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport {\n SERVICE_NAMES,\n ServiceConsent,\n UCServiceArray,\n} from '../types/ConsentTypes';\n\nexport const DEFAULT_CONSENT_GIVEN = {\n Usercentrics: { consentGiven: false },\n PostHog: { consentGiven: false },\n Sentry: { consentGiven: false },\n} as const;\n\nexport const convertUCServicesToConsents = (\n services: ServiceConsent[] | UCServiceArray\n): Consents => {\n return services\n .map((service) => {\n const serviceName = Object.entries(SERVICE_NAMES).find(\n (keyValue) => keyValue[1] === service.name\n )?.[0] as keyof typeof SERVICE_NAMES;\n\n // Ensure the service name exists in SERVICE_NAMES\n assertIsDefined(\n serviceName,\n `Service name ${service.name} not found in SERVICE_NAMES`\n );\n\n if (typeof service.consent == 'boolean') {\n const consentGiven = service.consent as boolean;\n return {\n [serviceName]: {\n consentGiven: consentGiven,\n },\n };\n } else if (\n typeof service.consent === 'object' &&\n 'given' in service.consent\n ) {\n const consentGiven = service.consent.given;\n return {\n [serviceName]: {\n consentGiven: consentGiven,\n },\n };\n }\n\n return {\n [serviceName]: {\n consentGiven: false,\n },\n };\n })\n .reduce(\n (acc, curr) => ({ ...acc, ...curr }),\n DEFAULT_CONSENT_GIVEN as Consents\n );\n};\n","import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n useEffect,\n} from 'react';\nimport { Consents } from '@entur-partner/micro-frontend';\n\nimport { ucUiStorage } from './storage';\nimport {\n ServiceConsent,\n UCDataConsentDataFromLocalStorage,\n} from './types/ConsentTypes';\nimport {\n convertUCServicesToConsents,\n DEFAULT_CONSENT_GIVEN,\n} from './util/convertUCServicesToConsents';\n\ndeclare global {\n interface Window {\n UC_UI: {\n showSecondLayer: () => void;\n };\n }\n}\n\nconst ConsentContext = createContext<Consents>(DEFAULT_CONSENT_GIVEN);\n\nexport const useConsentManager = () => {\n const context = useContext(ConsentContext);\n return context;\n};\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const ConsentManagerProvider = ({ children }: Props) => {\n const [consentManager, setConsentManager] = useState<Consents>(\n DEFAULT_CONSENT_GIVEN\n );\n\n // Initialize consent manager from local storage once\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const ucData = ucUiStorage.get();\n\n if (ucData) {\n const data = JSON.parse(ucData) as UCDataConsentDataFromLocalStorage;\n const services = convertUCServicesToConsents(\n Object.values(data.consent.services)\n );\n\n setConsentManager(services);\n }\n }, []);\n\n // Listen for Usercentrics consent events and update consent manager state\n useEffect(() => {\n const handleConsentEvent = async (event: Event) => {\n if (typeof window === 'undefined') return;\n\n const customEvent = event as CustomEvent;\n const services = Object.values(\n customEvent.detail.services as ServiceConsent[]\n );\n\n const updatedConsentManager = convertUCServicesToConsents(services);\n setConsentManager(updatedConsentManager);\n window.location.href = '/';\n };\n\n window.addEventListener('UC_CONSENT', handleConsentEvent);\n\n return () => window.removeEventListener('UC_CONSENT', handleConsentEvent);\n }, []);\n\n return (\n <ConsentContext.Provider value={consentManager}>\n {children}\n </ConsentContext.Provider>\n );\n};\n","import React, { ReactNode, useEffect } from 'react';\nimport postHog from 'posthog-js';\nimport { PostHogProvider } from 'posthog-js/react';\n\nimport { useConsentManager } from './ConsentManagerProvider';\n\ntype Props = {\n /**\n * Debug mode for PostHog.\n */\n debug?: boolean;\n /**\n * PostHog API key for initializing the PostHog client.\n * If not provided, PostHog will not be initialized.\n */\n postHogApiKey?: string;\n /**\n * Flag to indicate if the application is running in a standalone mode or as a micro-frontend.\n */\n isStandalone: boolean;\n /**\n * Optional project identifier for PostHog.\n * This can be used to differentiate between different projects in PostHog.\n */\n project?: string;\n /**\n * Flag to force disable PostHog tracking.\n * If true, PostHog will not be initialized even if postHogApiKey is provided.\n */\n forceDisablePostHog?: boolean;\n children: ReactNode;\n};\n\nexport const PostHogProviderWrapper = ({\n debug = false,\n postHogApiKey,\n isStandalone,\n project,\n forceDisablePostHog = false,\n children,\n}: Props) => {\n const consents = useConsentManager();\n\n useEffect(() => {\n if (!postHogApiKey || forceDisablePostHog) {\n return;\n }\n\n if (consents?.PostHog.consentGiven) {\n postHog.opt_in_capturing();\n } else {\n postHog.opt_out_capturing();\n }\n }, [consents?.PostHog.consentGiven, forceDisablePostHog, postHogApiKey]);\n\n // If no API key is provided or PostHog is forced to be disabled, do not initialize PostHog\n if (!postHogApiKey || forceDisablePostHog) {\n if (!forceDisablePostHog) {\n console.warn(\n 'AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized.'\n );\n } else {\n console.warn(\n 'AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized.'\n );\n }\n\n return <>{children}</>;\n }\n\n postHog.init(\n postHogApiKey,\n {\n debug,\n api_host: isStandalone ? 'https://eu.posthog.com' : '/ingest',\n ui_host: 'https://eu.posthog.com',\n opt_out_capturing_by_default: true,\n },\n project\n );\n\n return <PostHogProvider client={postHog}>{children}</PostHogProvider>;\n};\n"],"names":["EnvironmentBanner","_ref","environment","React","createElement","className","style","position","zIndex","top","left","right","width","height","backgroundColor","getColorForEnvironment","userLogout","logout","_window$location","window","location","protocol","hostname","port","logoutParams","returnTo","Authenticate","children","decorateUser","_useState","useState","undefined","userWithPermission","setUserWithPermission","_useAuth","useAuth0","user","getAccessTokenSilently","loginWithRedirect","isLoading","isAuthenticated","error","useEffect","fetchUserData","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","token","decoratedUser","wrap","_callee$","_context","prev","next","sent","t0","console","stop","apply","arguments","Loader","marginTop","space","extraLarge9","process","env","NODE_ENV","BannerAlertBox","variant","title","maxWidth","margin","Paragraph","Link","href","CodeText","toString","assertIsDefined","Fragment","getToken","AppShell","_ref3","audience","domain","clientId","Auth0Provider","authorizationParams","redirect_uri","origin","params","Environment","Production","isModifiedEvent","event","metaKey","altKey","ctrlKey","shiftKey","MicroFrontendLink","navigate","onClick","target","rest","_objectWithoutPropertiesLoose","_excluded","_extends","ex","preventDefault","defaultPrevented","button","MenuContext","createContext","addItems","getItemsForPath","getMFNavigate","setMFNavigate","useMenuGroupItems","path","context","useContext","useMenu","useMFNavigation","_useMenu","MenuProvider","groups","setGroups","_useState2","navFuncs","setNavFuncs","useCallback","newItems","prevState","_extends2","navigation","_extends3","Provider","value","_groups$path","ORGANISATION_STORAGE_KEY","organisationStorage","get","localStorage","getItem","set","setItem","LANGUAGE_STORAGE_KEY","languageStorage","UC_UI_STORAGE_KEY","ucUiStorage","OrganisationContext","useOrganisation","useOrganisationId","organisationId","useOrganisationState","initialOrganisationId","Number","setOrganisationId","OrganisationProvider","_useOrganisationState","orgId","LanguageContext","useLanguageState","language","activeLanguage","setLanguage","useLanguage","LanguageProvider","_useLanguageState","OrganisationsError","_Error","_this","_len","length","args","Array","_key","call","concat","message","_inheritsLoose","_wrapNativeSuper","Error","OrganisationSelector","getOrganisations","selectedOrganisationId","onChange","organisations","setOrganisations","_useLanguage","status","setStatus","fetchOrganisations","fetch","headers","Authorization","Accept","then","response","json","SkeletonRectangle","OrganisationDropDown","label","SERVICE_NAMES","Usercentrics","PostHog","Sentry","DEFAULT_CONSENT_GIVEN","consentGiven","convertUCServicesToConsents","services","map","service","_Object$entries$find","serviceName","Object","entries","find","keyValue","name","consent","given","reduce","acc","curr","ConsentContext","useConsentManager","ConsentManagerProvider","consentManager","setConsentManager","ucData","data","JSON","parse","values","handleConsentEvent","customEvent","updatedConsentManager","abrupt","detail","_x","addEventListener","removeEventListener","PostHogProviderWrapper","_ref$debug","debug","postHogApiKey","isStandalone","project","_ref$forceDisablePost","forceDisablePostHog","consents","postHog","opt_in_capturing","opt_out_capturing","warn","init","api_host","ui_host","opt_out_capturing_by_default","PostHogProvider","client"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,3 +7,4 @@ export { languageStorage, organisationStorage } from './storage';
|
|
|
7
7
|
export { OrganisationSelector, OrganisationSelectorProps, GetOrganisationsFn, } from './OrganisationSelector';
|
|
8
8
|
export { OrganisationsError } from './OrganisationsError';
|
|
9
9
|
export { ConsentManagerProvider, useConsentManager, } from './ConsentManagerProvider';
|
|
10
|
+
export { PostHogProviderWrapper } from './PostHogProviderWrapper';
|
package/dist/storage.d.ts
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const SERVICE_NAMES: {
|
|
2
|
+
readonly Usercentrics: "Usercentrics Consent Management Platform";
|
|
3
|
+
readonly PostHog: "PostHog.com";
|
|
4
|
+
readonly Sentry: "Sentry";
|
|
5
|
+
};
|
|
6
|
+
export interface ServiceConsent {
|
|
7
|
+
name: (typeof SERVICE_NAMES)[keyof typeof SERVICE_NAMES];
|
|
8
|
+
consent: {
|
|
9
|
+
given: boolean;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface UCDataConsentDataFromLocalStorage {
|
|
13
|
+
consent: {
|
|
14
|
+
services: {
|
|
15
|
+
[key: string]: {
|
|
16
|
+
name: string;
|
|
17
|
+
consent: boolean;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export type UCServiceArray = Array<UCDataConsentDataFromLocalStorage['consent']['services'][keyof UCDataConsentDataFromLocalStorage['consent']['services']]>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Consents } from '@entur-partner/micro-frontend';
|
|
2
|
+
import { ServiceConsent, UCServiceArray } from '../types/ConsentTypes';
|
|
3
|
+
export declare const DEFAULT_CONSENT_GIVEN: {
|
|
4
|
+
readonly Usercentrics: {
|
|
5
|
+
readonly consentGiven: false;
|
|
6
|
+
};
|
|
7
|
+
readonly PostHog: {
|
|
8
|
+
readonly consentGiven: false;
|
|
9
|
+
};
|
|
10
|
+
readonly Sentry: {
|
|
11
|
+
readonly consentGiven: false;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare const convertUCServicesToConsents: (services: ServiceConsent[] | UCServiceArray) => Consents;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur-partner/app-shell",
|
|
3
|
-
"version": "6.0.5-alpha.
|
|
3
|
+
"version": "6.0.5-alpha.4",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/app-shell.esm.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@auth0/auth0-react": "^2.2.4",
|
|
37
37
|
"@entur-partner/common": "^9.1.0",
|
|
38
|
-
"@entur-partner/micro-frontend": "^2.4.10-alpha.
|
|
38
|
+
"@entur-partner/micro-frontend": "^2.4.10-alpha.4",
|
|
39
39
|
"@entur-partner/util": "^1.2.4"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"reportFile": "jest-sonar-report.xml",
|
|
53
53
|
"indent": 4
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "e83359725f82c01038cd5a6a989f79f404b521c3"
|
|
56
56
|
}
|
|
File without changes
|