@entur-partner/app-shell 6.1.6 → 6.1.7

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.
@@ -0,0 +1,815 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var auth0React = require('@auth0/auth0-react');
6
+ var alert = require('@entur/alert');
7
+ var loader = require('@entur/loader');
8
+ var tokens = require('@entur/tokens');
9
+ var typography = require('@entur/typography');
10
+ var common = require('@entur-partner/common');
11
+ var util = require('@entur-partner/util');
12
+ var React = require('react');
13
+ var postHog = require('posthog-js');
14
+ var react = require('posthog-js/react');
15
+
16
+ function asyncGeneratorStep(n, t, e, r, o, a, c) {
17
+ try {
18
+ var i = n[a](c),
19
+ u = i.value;
20
+ } catch (n) {
21
+ return void e(n);
22
+ }
23
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
24
+ }
25
+ function _asyncToGenerator(n) {
26
+ return function () {
27
+ var t = this,
28
+ e = arguments;
29
+ return new Promise(function (r, o) {
30
+ var a = n.apply(t, e);
31
+ function _next(n) {
32
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
33
+ }
34
+ function _throw(n) {
35
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
36
+ }
37
+ _next(void 0);
38
+ });
39
+ };
40
+ }
41
+ function _construct(t, e, r) {
42
+ if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
43
+ var o = [null];
44
+ o.push.apply(o, e);
45
+ var p = new (t.bind.apply(t, o))();
46
+ return r && _setPrototypeOf(p, r.prototype), p;
47
+ }
48
+ function _extends() {
49
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
50
+ for (var e = 1; e < arguments.length; e++) {
51
+ var t = arguments[e];
52
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
53
+ }
54
+ return n;
55
+ }, _extends.apply(null, arguments);
56
+ }
57
+ function _getPrototypeOf(t) {
58
+ return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
59
+ return t.__proto__ || Object.getPrototypeOf(t);
60
+ }, _getPrototypeOf(t);
61
+ }
62
+ function _inheritsLoose(t, o) {
63
+ t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o);
64
+ }
65
+ function _isNativeFunction(t) {
66
+ try {
67
+ return -1 !== Function.toString.call(t).indexOf("[native code]");
68
+ } catch (n) {
69
+ return "function" == typeof t;
70
+ }
71
+ }
72
+ function _isNativeReflectConstruct() {
73
+ try {
74
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
75
+ } catch (t) {}
76
+ return (_isNativeReflectConstruct = function () {
77
+ return !!t;
78
+ })();
79
+ }
80
+ function _objectWithoutPropertiesLoose(r, e) {
81
+ if (null == r) return {};
82
+ var t = {};
83
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
84
+ if (-1 !== e.indexOf(n)) continue;
85
+ t[n] = r[n];
86
+ }
87
+ return t;
88
+ }
89
+ function _regenerator() {
90
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
91
+ var e,
92
+ t,
93
+ r = "function" == typeof Symbol ? Symbol : {},
94
+ n = r.iterator || "@@iterator",
95
+ o = r.toStringTag || "@@toStringTag";
96
+ function i(r, n, o, i) {
97
+ var c = n && n.prototype instanceof Generator ? n : Generator,
98
+ u = Object.create(c.prototype);
99
+ return _regeneratorDefine(u, "_invoke", function (r, n, o) {
100
+ var i,
101
+ c,
102
+ u,
103
+ f = 0,
104
+ p = o || [],
105
+ y = !1,
106
+ G = {
107
+ p: 0,
108
+ n: 0,
109
+ v: e,
110
+ a: d,
111
+ f: d.bind(e, 4),
112
+ d: function (t, r) {
113
+ return i = t, c = 0, u = e, G.n = r, a;
114
+ }
115
+ };
116
+ function d(r, n) {
117
+ for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
118
+ var o,
119
+ i = p[t],
120
+ d = G.p,
121
+ l = i[2];
122
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
123
+ }
124
+ if (o || r > 1) return a;
125
+ throw y = !0, n;
126
+ }
127
+ return function (o, p, l) {
128
+ if (f > 1) throw TypeError("Generator is already running");
129
+ for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
130
+ i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
131
+ try {
132
+ if (f = 2, i) {
133
+ if (c || (o = "next"), t = i[o]) {
134
+ if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
135
+ if (!t.done) return t;
136
+ u = t.value, c < 2 && (c = 0);
137
+ } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
138
+ i = e;
139
+ } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
140
+ } catch (t) {
141
+ i = e, c = 1, u = t;
142
+ } finally {
143
+ f = 1;
144
+ }
145
+ }
146
+ return {
147
+ value: t,
148
+ done: y
149
+ };
150
+ };
151
+ }(r, o, i), !0), u;
152
+ }
153
+ var a = {};
154
+ function Generator() {}
155
+ function GeneratorFunction() {}
156
+ function GeneratorFunctionPrototype() {}
157
+ t = Object.getPrototypeOf;
158
+ var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
159
+ return this;
160
+ }), t),
161
+ u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
162
+ function f(e) {
163
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
164
+ }
165
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
166
+ return this;
167
+ }), _regeneratorDefine(u, "toString", function () {
168
+ return "[object Generator]";
169
+ }), (_regenerator = function () {
170
+ return {
171
+ w: i,
172
+ m: f
173
+ };
174
+ })();
175
+ }
176
+ function _regeneratorDefine(e, r, n, t) {
177
+ var i = Object.defineProperty;
178
+ try {
179
+ i({}, "", {});
180
+ } catch (e) {
181
+ i = 0;
182
+ }
183
+ _regeneratorDefine = function (e, r, n, t) {
184
+ function o(r, n) {
185
+ _regeneratorDefine(e, r, function (e) {
186
+ return this._invoke(r, n, e);
187
+ });
188
+ }
189
+ r ? i ? i(e, r, {
190
+ value: n,
191
+ enumerable: !t,
192
+ configurable: !t,
193
+ writable: !t
194
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
195
+ }, _regeneratorDefine(e, r, n, t);
196
+ }
197
+ function _setPrototypeOf(t, e) {
198
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
199
+ return t.__proto__ = e, t;
200
+ }, _setPrototypeOf(t, e);
201
+ }
202
+ function _wrapNativeSuper(t) {
203
+ var r = "function" == typeof Map ? new Map() : void 0;
204
+ return _wrapNativeSuper = function (t) {
205
+ if (null === t || !_isNativeFunction(t)) return t;
206
+ if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
207
+ if (void 0 !== r) {
208
+ if (r.has(t)) return r.get(t);
209
+ r.set(t, Wrapper);
210
+ }
211
+ function Wrapper() {
212
+ return _construct(t, arguments, _getPrototypeOf(this).constructor);
213
+ }
214
+ return Wrapper.prototype = Object.create(t.prototype, {
215
+ constructor: {
216
+ value: Wrapper,
217
+ enumerable: !1,
218
+ writable: !0,
219
+ configurable: !0
220
+ }
221
+ }), _setPrototypeOf(Wrapper, t);
222
+ }, _wrapNativeSuper(t);
223
+ }
224
+
225
+ var EnvironmentBanner = function EnvironmentBanner(_ref) {
226
+ var environment = _ref.environment;
227
+ return React.createElement("div", {
228
+ className: "epp-environment-banner",
229
+ style: {
230
+ position: "fixed",
231
+ zIndex: 9999,
232
+ top: 0,
233
+ left: 0,
234
+ right: 0,
235
+ width: "100vw",
236
+ height: "16px",
237
+ backgroundColor: common.getColorForEnvironment(environment)
238
+ }
239
+ });
240
+ };
241
+
242
+ function userLogout(logout) {
243
+ var _window$location = window.location,
244
+ protocol = _window$location.protocol,
245
+ hostname = _window$location.hostname,
246
+ port = _window$location.port;
247
+ return logout({
248
+ logoutParams: {
249
+ returnTo: protocol + "//" + hostname + ":" + port
250
+ }
251
+ });
252
+ }
253
+ var Authenticate = function Authenticate(_ref) {
254
+ var children = _ref.children,
255
+ decorateUser = _ref.decorateUser;
256
+ var _useState = React.useState(undefined),
257
+ userWithPermission = _useState[0],
258
+ setUserWithPermission = _useState[1];
259
+ var _useAuth = auth0React.useAuth0(),
260
+ user = _useAuth.user,
261
+ getAccessTokenSilently = _useAuth.getAccessTokenSilently,
262
+ loginWithRedirect = _useAuth.loginWithRedirect,
263
+ _logout = _useAuth.logout,
264
+ isLoading = _useAuth.isLoading,
265
+ isAuthenticated = _useAuth.isAuthenticated,
266
+ error = _useAuth.error;
267
+ React.useEffect(function () {
268
+ var fetchUserData = /*#__PURE__*/function () {
269
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
270
+ var token, decoratedUser, _t;
271
+ return _regenerator().w(function (_context) {
272
+ while (1) switch (_context.p = _context.n) {
273
+ case 0:
274
+ _context.p = 0;
275
+ _context.n = 1;
276
+ return getAccessTokenSilently();
277
+ case 1:
278
+ token = _context.v;
279
+ _context.n = 2;
280
+ return decorateUser(user, token);
281
+ case 2:
282
+ decoratedUser = _context.v;
283
+ setUserWithPermission(decoratedUser);
284
+ _context.n = 4;
285
+ break;
286
+ case 3:
287
+ _context.p = 3;
288
+ _t = _context.v;
289
+ console.error("Error fetching user data:", _t);
290
+ case 4:
291
+ return _context.a(2);
292
+ }
293
+ }, _callee, null, [[0, 3]]);
294
+ }));
295
+ return function fetchUserData() {
296
+ return _ref2.apply(this, arguments);
297
+ };
298
+ }();
299
+ if (isAuthenticated) {
300
+ fetchUserData();
301
+ }
302
+ }, [decorateUser, getAccessTokenSilently, isAuthenticated, user]);
303
+ if (!isLoading && !isAuthenticated) {
304
+ loginWithRedirect();
305
+ return React.createElement(loader.Loader, {
306
+ style: {
307
+ marginTop: tokens.space.extraLarge9
308
+ }
309
+ }, "Redirecting to login page");
310
+ }
311
+ if (isLoading || !userWithPermission) {
312
+ return React.createElement(loader.Loader, {
313
+ style: {
314
+ marginTop: tokens.space.extraLarge9
315
+ }
316
+ }, "Authenticating");
317
+ }
318
+ if (error) {
319
+ console.error(error);
320
+ return React.createElement(alert.BannerAlertBox, {
321
+ variant: "error",
322
+ title: "Authentication failed",
323
+ style: {
324
+ maxWidth: "600px",
325
+ margin: "0 auto"
326
+ }
327
+ }, React.createElement(typography.Paragraph, null, "Something went wrong while trying to authenticate you. If the problem persists you should contact", " ", React.createElement(typography.Link, {
328
+ href: "mailto:support@entur.org"
329
+ }, "support@entur.org"), " to get it resolved."), React.createElement(typography.Paragraph, null, "Authentication failed with: ", React.createElement(typography.CodeText, null, error == null ? void 0 : error.toString())));
330
+ }
331
+ util.assertIsDefined(userWithPermission);
332
+ return React.createElement(React.Fragment, null, children({
333
+ user: userWithPermission,
334
+ logout: function logout() {
335
+ return userLogout(_logout);
336
+ },
337
+ getToken: getAccessTokenSilently
338
+ }));
339
+ };
340
+ var AppShell = function AppShell(_ref3) {
341
+ var children = _ref3.children,
342
+ audience = _ref3.audience,
343
+ domain = _ref3.domain,
344
+ clientId = _ref3.clientId,
345
+ decorateUser = _ref3.decorateUser,
346
+ environment = _ref3.environment;
347
+ return React.createElement(auth0React.Auth0Provider, {
348
+ domain: domain,
349
+ clientId: clientId,
350
+ authorizationParams: {
351
+ redirect_uri: window.location.origin,
352
+ audience: audience
353
+ }
354
+ }, React.createElement(Authenticate, {
355
+ decorateUser: decorateUser
356
+ }, function (params) {
357
+ return React.createElement(React.Fragment, null, environment && environment !== common.Environment.Production && React.createElement(EnvironmentBanner, {
358
+ environment: environment
359
+ }), children(params));
360
+ }));
361
+ };
362
+
363
+ var ORGANISATION_STORAGE_KEY = "EP::activeOrgId";
364
+ var organisationStorage = {
365
+ get: function get() {
366
+ return localStorage.getItem(ORGANISATION_STORAGE_KEY);
367
+ },
368
+ set: function set(value) {
369
+ return localStorage.setItem(ORGANISATION_STORAGE_KEY, value);
370
+ }
371
+ };
372
+ var LANGUAGE_STORAGE_KEY = "EP::locale";
373
+ var languageStorage = {
374
+ get: function get() {
375
+ return localStorage.getItem(LANGUAGE_STORAGE_KEY);
376
+ },
377
+ set: function set(value) {
378
+ return localStorage.setItem(LANGUAGE_STORAGE_KEY, value);
379
+ }
380
+ };
381
+ var UC_UI_STORAGE_KEY = "ucData";
382
+ var ucUiStorage = {
383
+ get: function get() {
384
+ return localStorage.getItem(UC_UI_STORAGE_KEY);
385
+ }
386
+ };
387
+
388
+ var SERVICE_NAMES = {
389
+ Usercentrics: "Usercentrics Consent Management Platform",
390
+ PostHog: "PostHog.com",
391
+ Sentry: "Sentry"
392
+ };
393
+
394
+ var DEFAULT_CONSENT_GIVEN = {
395
+ Usercentrics: {
396
+ consentGiven: false
397
+ },
398
+ PostHog: {
399
+ consentGiven: false
400
+ },
401
+ Sentry: {
402
+ consentGiven: false
403
+ }
404
+ };
405
+ var convertUCServicesToConsents = function convertUCServicesToConsents(services) {
406
+ return services.map(function (service) {
407
+ var _Object$entries$find, _ref3;
408
+ var serviceName = (_Object$entries$find = Object.entries(SERVICE_NAMES).find(function (keyValue) {
409
+ return keyValue[1] === service.name;
410
+ })) == null ? void 0 : _Object$entries$find[0];
411
+ // Ensure the service name exists in SERVICE_NAMES
412
+ util.assertIsDefined(serviceName, "Service name " + service.name + " not found in SERVICE_NAMES");
413
+ if (typeof service.consent === "boolean") {
414
+ var _ref;
415
+ var consentGiven = service.consent;
416
+ return _ref = {}, _ref[serviceName] = {
417
+ consentGiven: consentGiven
418
+ }, _ref;
419
+ } else if (typeof service.consent === "object" && "given" in service.consent) {
420
+ var _ref2;
421
+ var _consentGiven = service.consent.given;
422
+ return _ref2 = {}, _ref2[serviceName] = {
423
+ consentGiven: _consentGiven
424
+ }, _ref2;
425
+ }
426
+ return _ref3 = {}, _ref3[serviceName] = {
427
+ consentGiven: false
428
+ }, _ref3;
429
+ }).reduce(
430
+ // biome-ignore lint/performance/noAccumulatingSpread: Ignore it for now. No changes in code.
431
+ function (acc, curr) {
432
+ return _extends({}, acc, curr);
433
+ }, DEFAULT_CONSENT_GIVEN);
434
+ };
435
+
436
+ var ConsentContext = /*#__PURE__*/React.createContext(DEFAULT_CONSENT_GIVEN);
437
+ var useConsentManager = function useConsentManager() {
438
+ var context = React.useContext(ConsentContext);
439
+ return context;
440
+ };
441
+ var ConsentManagerProvider = function ConsentManagerProvider(_ref) {
442
+ var children = _ref.children;
443
+ var _useState = React.useState(DEFAULT_CONSENT_GIVEN),
444
+ consentManager = _useState[0],
445
+ setConsentManager = _useState[1];
446
+ // Initialize consent manager from local storage once
447
+ React.useEffect(function () {
448
+ if (typeof window === "undefined") return;
449
+ var ucData = ucUiStorage.get();
450
+ if (ucData) {
451
+ var data = JSON.parse(ucData);
452
+ var services = convertUCServicesToConsents(Object.values(data.consent.services));
453
+ setConsentManager(services);
454
+ }
455
+ }, []);
456
+ // Listen for Usercentrics consent events and update consent manager state
457
+ React.useEffect(function () {
458
+ var handleConsentEvent = /*#__PURE__*/function () {
459
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(event) {
460
+ var customEvent, services, updatedConsentManager;
461
+ return _regenerator().w(function (_context) {
462
+ while (1) switch (_context.n) {
463
+ case 0:
464
+ if (!(typeof window === "undefined")) {
465
+ _context.n = 1;
466
+ break;
467
+ }
468
+ return _context.a(2);
469
+ case 1:
470
+ customEvent = event;
471
+ services = Object.values(customEvent.detail.services);
472
+ updatedConsentManager = convertUCServicesToConsents(services);
473
+ setConsentManager(updatedConsentManager);
474
+ case 2:
475
+ return _context.a(2);
476
+ }
477
+ }, _callee);
478
+ }));
479
+ return function handleConsentEvent(_x) {
480
+ return _ref2.apply(this, arguments);
481
+ };
482
+ }();
483
+ window.addEventListener("UC_CONSENT", handleConsentEvent);
484
+ return function () {
485
+ return window.removeEventListener("UC_CONSENT", handleConsentEvent);
486
+ };
487
+ }, []);
488
+ return React.createElement(ConsentContext.Provider, {
489
+ value: consentManager
490
+ }, children);
491
+ };
492
+
493
+ var LanguageContext = /*#__PURE__*/React.createContext(undefined);
494
+ var useLanguageState = function useLanguageState(language) {
495
+ var _useState = React.useState(language),
496
+ activeLanguage = _useState[0],
497
+ setLanguage = _useState[1];
498
+ React.useEffect(function () {
499
+ languageStorage.set(activeLanguage);
500
+ }, [activeLanguage]);
501
+ return [activeLanguage, setLanguage];
502
+ };
503
+ var useLanguage = function useLanguage() {
504
+ var context = React.useContext(LanguageContext);
505
+ util.assertIsDefined(context);
506
+ return context;
507
+ };
508
+ var LanguageProvider = function LanguageProvider(_ref) {
509
+ var children = _ref.children,
510
+ language = _ref.language;
511
+ var _useLanguageState = useLanguageState(language),
512
+ activeLanguage = _useLanguageState[0],
513
+ setLanguage = _useLanguageState[1];
514
+ return React.createElement(LanguageContext.Provider, {
515
+ value: {
516
+ language: activeLanguage,
517
+ setLanguage: setLanguage
518
+ }
519
+ }, children);
520
+ };
521
+
522
+ var MenuContext = /*#__PURE__*/React.createContext({
523
+ addItems: function addItems() {},
524
+ getItemsForPath: function getItemsForPath() {
525
+ return [];
526
+ },
527
+ getMFNavigate: function getMFNavigate() {
528
+ return undefined;
529
+ },
530
+ setMFNavigate: function setMFNavigate() {}
531
+ });
532
+ var useMenuGroupItems = function useMenuGroupItems(path) {
533
+ var context = React.useContext(MenuContext);
534
+ return context.getItemsForPath(path);
535
+ };
536
+ var useMenu = function useMenu() {
537
+ return React.useContext(MenuContext);
538
+ };
539
+ var useMFNavigation = function useMFNavigation(path) {
540
+ var _useMenu = useMenu(),
541
+ getMFNavigate = _useMenu.getMFNavigate;
542
+ return getMFNavigate(path);
543
+ };
544
+ var MenuProvider = function MenuProvider(_ref) {
545
+ var children = _ref.children;
546
+ var _useState = React.useState({}),
547
+ groups = _useState[0],
548
+ setGroups = _useState[1];
549
+ var _useState2 = React.useState({}),
550
+ navFuncs = _useState2[0],
551
+ setNavFuncs = _useState2[1];
552
+ var addItems = React.useCallback(function (newItems, path) {
553
+ setGroups(function (prevState) {
554
+ var _extends2;
555
+ return _extends({}, prevState, (_extends2 = {}, _extends2[path] = newItems, _extends2));
556
+ });
557
+ }, []);
558
+ var getMFNavigate = function getMFNavigate(path) {
559
+ return navFuncs[path];
560
+ };
561
+ var setMFNavigate = function setMFNavigate(path, navigation) {
562
+ return setNavFuncs(function (prev) {
563
+ var _extends3;
564
+ return _extends({}, prev, (_extends3 = {}, _extends3[path] = navigation, _extends3));
565
+ });
566
+ };
567
+ return React.createElement(MenuContext.Provider, {
568
+ value: {
569
+ addItems: addItems,
570
+ getItemsForPath: function getItemsForPath(path) {
571
+ var _groups$path;
572
+ return (_groups$path = groups[path]) != null ? _groups$path : [];
573
+ },
574
+ getMFNavigate: getMFNavigate,
575
+ setMFNavigate: setMFNavigate
576
+ }
577
+ }, children);
578
+ };
579
+
580
+ var _excluded$1 = ["navigate", "children", "onClick", "target"];
581
+ function isModifiedEvent(event) {
582
+ return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
583
+ }
584
+ var MicroFrontendLink = function MicroFrontendLink(_ref) {
585
+ var navigate = _ref.navigate,
586
+ children = _ref.children,
587
+ _onClick = _ref.onClick,
588
+ target = _ref.target,
589
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
590
+ return (
591
+ // biome-ignore lint/a11y/noStaticElementInteractions: Ignore lint rule for now. No changes in code.
592
+ React.createElement("a", _extends({
593
+ // biome-ignore lint/a11y/useValidAnchor: Ignore lint rule for now. No changes in code.
594
+ onClick: function onClick(event) {
595
+ try {
596
+ if (_onClick) _onClick(event);
597
+ } catch (ex) {
598
+ event.preventDefault();
599
+ throw ex;
600
+ }
601
+ if (!event.defaultPrevented &&
602
+ // onClick prevented default
603
+ event.button === 0 && (
604
+ // ignore everything but right clicks
605
+ !target || target === "_self") &&
606
+ // let browser handle "target=_blank" etc.
607
+ !isModifiedEvent(event) // ignore clicks with modifier keys
608
+ ) {
609
+ event.preventDefault();
610
+ navigate();
611
+ }
612
+ },
613
+ target: target
614
+ }, rest), children)
615
+ );
616
+ };
617
+
618
+ var OrganisationContext = /*#__PURE__*/React.createContext(undefined);
619
+ var useOrganisation = function useOrganisation() {
620
+ var context = React.useContext(OrganisationContext);
621
+ util.assertIsDefined(context);
622
+ return context;
623
+ };
624
+ var useOrganisationId = function useOrganisationId() {
625
+ var context = React.useContext(OrganisationContext);
626
+ util.assertIsDefined(context);
627
+ return context.organisationId;
628
+ };
629
+ var useOrganisationState = function useOrganisationState(initialOrganisationId) {
630
+ var _useState = React.useState(Number(initialOrganisationId)),
631
+ organisationId = _useState[0],
632
+ setOrganisationId = _useState[1];
633
+ React.useEffect(function () {
634
+ organisationStorage.set(organisationId.toString());
635
+ }, [organisationId]);
636
+ return [organisationId, setOrganisationId];
637
+ };
638
+ var OrganisationProvider = function OrganisationProvider(_ref) {
639
+ var children = _ref.children,
640
+ organisationId = _ref.organisationId;
641
+ var _useOrganisationState = useOrganisationState(organisationId),
642
+ orgId = _useOrganisationState[0],
643
+ setOrganisationId = _useOrganisationState[1];
644
+ return React.createElement(OrganisationContext.Provider, {
645
+ value: {
646
+ organisationId: orgId,
647
+ setOrganisationId: setOrganisationId
648
+ }
649
+ }, children);
650
+ };
651
+
652
+ var OrganisationsError = /*#__PURE__*/function (_Error) {
653
+ function OrganisationsError() {
654
+ var _this;
655
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
656
+ args[_key] = arguments[_key];
657
+ }
658
+ _this = _Error.call.apply(_Error, [this].concat(args)) || this;
659
+ _this.message = "Failed fetching organisations";
660
+ return _this;
661
+ }
662
+ _inheritsLoose(OrganisationsError, _Error);
663
+ return OrganisationsError;
664
+ }(/*#__PURE__*/_wrapNativeSuper(Error));
665
+
666
+ var _excluded = ["getToken", "getOrganisations", "selectedOrganisationId", "onChange"];
667
+ var OrganisationSelector = function OrganisationSelector(_ref) {
668
+ var getToken = _ref.getToken,
669
+ getOrganisations = _ref.getOrganisations,
670
+ selectedOrganisationId = _ref.selectedOrganisationId,
671
+ onChange = _ref.onChange,
672
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
673
+ var _useState = React.useState([]),
674
+ organisations = _useState[0],
675
+ setOrganisations = _useState[1];
676
+ var _useLanguage = useLanguage(),
677
+ language = _useLanguage.language;
678
+ var _useState2 = React.useState("LOADING"),
679
+ status = _useState2[0],
680
+ setStatus = _useState2[1];
681
+ React.useEffect(function () {
682
+ var fetchOrganisations = /*#__PURE__*/function () {
683
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
684
+ var token, organisations;
685
+ return _regenerator().w(function (_context) {
686
+ while (1) switch (_context.n) {
687
+ case 0:
688
+ _context.n = 1;
689
+ return getToken();
690
+ case 1:
691
+ token = _context.v;
692
+ if (!(typeof getOrganisations === "string")) {
693
+ _context.n = 3;
694
+ break;
695
+ }
696
+ _context.n = 2;
697
+ return fetch(getOrganisations, {
698
+ headers: {
699
+ Authorization: "Bearer " + token,
700
+ Accept: "application/json"
701
+ }
702
+ }).then(function (response) {
703
+ return response.json();
704
+ });
705
+ case 2:
706
+ organisations = _context.v;
707
+ _context.n = 5;
708
+ break;
709
+ case 3:
710
+ _context.n = 4;
711
+ return getOrganisations(token);
712
+ case 4:
713
+ organisations = _context.v;
714
+ case 5:
715
+ setOrganisations(organisations);
716
+ setStatus("SUCCESS");
717
+ case 6:
718
+ return _context.a(2);
719
+ }
720
+ }, _callee);
721
+ }));
722
+ return function fetchOrganisations() {
723
+ return _ref2.apply(this, arguments);
724
+ };
725
+ }();
726
+ fetchOrganisations()["catch"](function (error) {
727
+ {
728
+ console.error(error);
729
+ }
730
+ setStatus("ERROR");
731
+ });
732
+ }, [getOrganisations, getToken]);
733
+ switch (status) {
734
+ case "LOADING":
735
+ return React.createElement("div", {
736
+ className: "eds-contrast"
737
+ }, React.createElement(loader.SkeletonRectangle, {
738
+ style: {
739
+ height: "2.4rem"
740
+ }
741
+ }));
742
+ case "SUCCESS":
743
+ return React.createElement(common.OrganisationDropDown, _extends({
744
+ label: language === "nb" || language === "nb-NO" ? "Organisasjon" : "Organisation",
745
+ selectedOrganisationId: selectedOrganisationId,
746
+ organisations: organisations,
747
+ onChange: onChange
748
+ }, rest));
749
+ case "ERROR":
750
+ throw new OrganisationsError();
751
+ default:
752
+ return null;
753
+ }
754
+ };
755
+
756
+ var PostHogProviderWrapper = function PostHogProviderWrapper(_ref) {
757
+ var _ref$debug = _ref.debug,
758
+ debug = _ref$debug === void 0 ? false : _ref$debug,
759
+ postHogApiKey = _ref.postHogApiKey,
760
+ isStandalone = _ref.isStandalone,
761
+ project = _ref.project,
762
+ _ref$forceDisablePost = _ref.forceDisablePostHog,
763
+ forceDisablePostHog = _ref$forceDisablePost === void 0 ? false : _ref$forceDisablePost,
764
+ children = _ref.children;
765
+ var consents = useConsentManager();
766
+ React.useEffect(function () {
767
+ if (!postHogApiKey || forceDisablePostHog) {
768
+ return;
769
+ }
770
+ if (consents != null && consents.PostHog.consentGiven) {
771
+ postHog.opt_in_capturing();
772
+ } else {
773
+ postHog.opt_out_capturing();
774
+ }
775
+ }, [consents.PostHog.consentGiven, forceDisablePostHog, postHogApiKey]);
776
+ // If no API key is provided or PostHog is forced to be disabled, do not initialize PostHog
777
+ if (!postHogApiKey || forceDisablePostHog) {
778
+ if (!forceDisablePostHog) {
779
+ console.warn("AppShellStandalone Warning: PostHog API key is not provided. PostHog will not be initialized.");
780
+ } else {
781
+ console.warn("AppShellStandalone Warning: PostHog tracking is disabled by force. PostHog will not be initialized.");
782
+ }
783
+ return React.createElement(React.Fragment, null, children);
784
+ }
785
+ postHog.init(postHogApiKey, {
786
+ debug: debug,
787
+ api_host: isStandalone ? "https://eu.posthog.com" : "/ingest",
788
+ ui_host: "https://eu.posthog.com",
789
+ opt_out_capturing_by_default: true,
790
+ autocapture: isStandalone
791
+ }, project);
792
+ return React.createElement(react.PostHogProvider, {
793
+ client: postHog
794
+ }, children);
795
+ };
796
+
797
+ exports.AppShell = AppShell;
798
+ exports.ConsentManagerProvider = ConsentManagerProvider;
799
+ exports.LanguageProvider = LanguageProvider;
800
+ exports.MenuProvider = MenuProvider;
801
+ exports.MicroFrontendLink = MicroFrontendLink;
802
+ exports.OrganisationProvider = OrganisationProvider;
803
+ exports.OrganisationSelector = OrganisationSelector;
804
+ exports.OrganisationsError = OrganisationsError;
805
+ exports.PostHogProviderWrapper = PostHogProviderWrapper;
806
+ exports.languageStorage = languageStorage;
807
+ exports.organisationStorage = organisationStorage;
808
+ exports.useConsentManager = useConsentManager;
809
+ exports.useLanguage = useLanguage;
810
+ exports.useMFNavigation = useMFNavigation;
811
+ exports.useMenu = useMenu;
812
+ exports.useMenuGroupItems = useMenuGroupItems;
813
+ exports.useOrganisation = useOrganisation;
814
+ exports.useOrganisationId = useOrganisationId;
815
+ //# sourceMappingURL=app-shell.cjs.development.js.map