@commercetools-frontend/staff-bar 0.0.0

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,1014 @@
1
+ import _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';
2
+ import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
3
+ import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
4
+ import _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
5
+ import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';
6
+ import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
7
+ import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
8
+ import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
9
+ import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
10
+ import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
11
+ import { useState, useEffect, useMemo, useCallback } from 'react';
12
+ import { css } from '@emotion/react';
13
+ import ReactDOM from 'react-dom';
14
+ import { Marking } from '@commercetools-frontend/fullstory';
15
+ import { Spacings, Text, SelectInput, IconButton, FlatButton, SecondaryButton, Constraints, ToggleInput, Stamp, CheckboxInput, InformationIcon, AngleUpIcon, AngleDownIcon } from '@commercetools-frontend/ui-kit';
16
+ import _includesInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/includes';
17
+ import _findInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/find';
18
+ import _flatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/flat';
19
+ import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
20
+ import { jsxs, jsx, Fragment } from '@emotion/react/jsx-runtime';
21
+ import _Object$entries from '@babel/runtime-corejs3/core-js-stable/object/entries';
22
+ import _sliceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/slice';
23
+ import isEqual from 'lodash/isEqual';
24
+ import { useModalState, InfoDialog } from '@commercetools-frontend/application-components';
25
+ import { useMcQuery } from '@commercetools-frontend/application-shell';
26
+ import { GRAPHQL_TARGETS } from '@commercetools-frontend/constants';
27
+ import _someInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/some';
28
+ import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors';
29
+ import _JSON$stringify from '@babel/runtime-corejs3/core-js-stable/json/stringify';
30
+ import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
31
+ import '@babel/runtime-corejs3/core-js-stable/reflect/construct';
32
+ import '@babel/runtime-corejs3/helpers/classCallCheck';
33
+ import '@babel/runtime-corejs3/helpers/createClass';
34
+ import '@babel/runtime-corejs3/helpers/possibleConstructorReturn';
35
+ import '@babel/runtime-corejs3/helpers/getPrototypeOf';
36
+ import '@babel/runtime-corejs3/helpers/inherits';
37
+ import _URLSearchParams from '@babel/runtime-corejs3/core-js-stable/url-search-params';
38
+ import { useHistory, useLocation } from 'react-router-dom';
39
+ import sortBy from 'lodash/sortBy';
40
+
41
+ var config = {
42
+ AmazonWebServicesATT: {
43
+ MerchantCenterFrontend: {
44
+ url: "https://mc.att.us-east-1.aws.commercetools.com"
45
+ }
46
+ },
47
+ AmazonWebServicesChina: {
48
+ MerchantCenterFrontend: {
49
+ url: "https://mc.cn-northwest-1.aws.commercetools.cn"
50
+ }
51
+ },
52
+ AmazonWebServicesChinaStaging: {
53
+ MerchantCenterFrontend: {
54
+ url: "https://mc.cn-northwest-1.aws.commercetoolscn.cn"
55
+ }
56
+ },
57
+ AmazonWebServicesFrankfurt: {
58
+ MerchantCenterFrontend: {
59
+ url: "https://mc.eu-central-1.aws.commercetools.com"
60
+ }
61
+ },
62
+ AmazonWebServicesOhio: {
63
+ MerchantCenterFrontend: {
64
+ url: "https://mc.us-east-2.aws.commercetools.com"
65
+ }
66
+ },
67
+ AmazonWebServicesVolkswagen: {
68
+ MerchantCenterFrontend: {
69
+ url: "https://mc.vw.eu-central-1.aws.commercetools.com"
70
+ }
71
+ },
72
+ AmazonWebServicesVolkswagenStaging: {
73
+ MerchantCenterFrontend: {
74
+ url: "https://mc.vw-stage.eu-central-1.aws.commercetools.com"
75
+ }
76
+ },
77
+ AzureEuropeStaging: {
78
+ MerchantCenterFrontend: {
79
+ url: "https://mc.northeurope.azure.escemo.com"
80
+ }
81
+ },
82
+ GoogleCloudPlatformAustralia: {
83
+ MerchantCenterFrontend: {
84
+ url: "https://mc.australia-southeast1.gcp.commercetools.com"
85
+ }
86
+ },
87
+ GoogleCloudPlatformEurope: {
88
+ MerchantCenterFrontend: {
89
+ url: "https://mc.europe-west1.gcp.commercetools.com"
90
+ }
91
+ },
92
+ GoogleCloudPlatformEuropeStaging: {
93
+ MerchantCenterFrontend: {
94
+ url: "https://mc.europe-west1.gcp.escemo.com"
95
+ }
96
+ },
97
+ GoogleCloudPlatformUnitedStates: {
98
+ MerchantCenterFrontend: {
99
+ url: "https://mc.us-central1.gcp.commercetools.com"
100
+ }
101
+ }
102
+ };
103
+
104
+ var _context, _context2, _context3, _context4;
105
+ const LOCAL_ENV = {
106
+ label: 'Local Dev',
107
+ value: 'http://localhost:3001'
108
+ };
109
+ const PREVIEW_BRANCH = {
110
+ label: 'Preview Branch',
111
+ value: ''
112
+ };
113
+ const IS_STAFFBAR_OPEN = 'isStaffBarOpen';
114
+
115
+ // Type guard to help with filtering arrays for nullish elements.
116
+ function nonNullable(value) {
117
+ return value !== null && value !== undefined;
118
+ }
119
+ const getOptionsForEnvironment = (label, config) => {
120
+ return {
121
+ label,
122
+ value: config.MerchantCenterFrontend.url
123
+ };
124
+ };
125
+ const GCP = _filterInstanceProperty(_context = [getOptionsForEnvironment('GCP Australia', config.GoogleCloudPlatformAustralia), getOptionsForEnvironment('GCP Europe', config.GoogleCloudPlatformEurope), getOptionsForEnvironment('GCP USA', config.GoogleCloudPlatformUnitedStates), getOptionsForEnvironment('GCP Europe (Staging)', config.GoogleCloudPlatformEuropeStaging)]).call(_context, nonNullable);
126
+ const AWS = _filterInstanceProperty(_context2 = [getOptionsForEnvironment('AWS China', config.AmazonWebServicesChina), getOptionsForEnvironment('AWS Frankfurt', config.AmazonWebServicesFrankfurt), getOptionsForEnvironment('AWS Ohio', config.AmazonWebServicesOhio), getOptionsForEnvironment('AWS China (Staging)', config.AmazonWebServicesChinaStaging)]).call(_context2, nonNullable);
127
+ const Azure = _filterInstanceProperty(_context3 = [getOptionsForEnvironment('Azure Europe (Staging)', config.AzureEuropeStaging)]).call(_context3, nonNullable);
128
+ const PRIVATE = _filterInstanceProperty(_context4 = [getOptionsForEnvironment('AWS AT&T', config.AmazonWebServicesATT), getOptionsForEnvironment('AWS Volkswagen', config.AmazonWebServicesVolkswagen), getOptionsForEnvironment('AWS Volkswagen (Staging)', config.AmazonWebServicesVolkswagenStaging)]).call(_context4, nonNullable);
129
+ const ENV = [{
130
+ options: GCP,
131
+ group: 'GCP'
132
+ }, {
133
+ options: AWS,
134
+ group: 'AWS'
135
+ }, {
136
+ options: Azure,
137
+ group: 'Azure'
138
+ }, {
139
+ options: PRIVATE,
140
+ group: 'Private'
141
+ }];
142
+
143
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$5() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
144
+ var _ref$5 = process.env.NODE_ENV === "production" ? {
145
+ name: "10r8dle",
146
+ styles: "width:206px"
147
+ } : {
148
+ name: "mnd5nn-EnvironmentSwitcher",
149
+ styles: "width:206px;label:EnvironmentSwitcher;",
150
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVudmlyb25tZW50LXN3aXRjaGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQ2dCIiwiZmlsZSI6ImVudmlyb25tZW50LXN3aXRjaGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3RJbnB1dCwgU3BhY2luZ3MsIFRleHQgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnO1xuaW1wb3J0IHsgRU5WLCBMT0NBTF9FTlYsIFBSRVZJRVdfQlJBTkNIIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBFbnZpcm9ubWVudFN3aXRjaGVyID0gKCkgPT4ge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50VVJMID0gd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luO1xuICAgIGlmIChjdXJyZW50VVJMID09PSBMT0NBTF9FTlYudmFsdWUpIHtcbiAgICAgIEVOVlswXT8ub3B0aW9ucy51bnNoaWZ0KExPQ0FMX0VOVik7XG4gICAgfVxuICAgIGlmIChjdXJyZW50VVJMLmluY2x1ZGVzKCdwcmV2aWV3JykpIHtcbiAgICAgIEVOVlswXT8ub3B0aW9ucy51bnNoaWZ0KFBSRVZJRVdfQlJBTkNIKTtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRVUkwuaW5jbHVkZXMoJ3ByZXZpZXcnKSkge1xuICAgICAgc2V0VmFsdWUoJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRWYWx1ZShcbiAgICAgICAgRU5WLm1hcCgoeyBvcHRpb25zIH0pID0+IG9wdGlvbnMpXG4gICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgIC5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBjdXJyZW50VVJMKT8udmFsdWVcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPFNwYWNpbmdzLklubGluZSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8VGV4dC5EZXRhaWw+RW52aXJvbm1lbnQ8L1RleHQuRGV0YWlsPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICB3aWR0aDogMjA2cHg7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxTZWxlY3RJbnB1dFxuICAgICAgICAgIGlkPXsnZW52LXNlbGVjdG9yJ31cbiAgICAgICAgICBuYW1lPXsnZW52IHNlbGVjdG9yJ31cbiAgICAgICAgICBpc1NlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgIGhvcml6b250YWxDb25zdHJhaW50PXs1fVxuICAgICAgICAgIG1lbnVQb3J0YWxUYXJnZXQ9e2RvY3VtZW50LmJvZHl9XG4gICAgICAgICAgbWVudVBvcnRhbFpJbmRleD17MzAwMDB9XG4gICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlIGFzIHN0cmluZyk7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGV2ZW50LnRhcmdldC52YWx1ZSBhcyBzdHJpbmcsICdfc2VsZicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9wdGlvbnM9e0VOVn1cbiAgICAgICAgICBzaG93T3B0aW9uR3JvdXBEaXZpZGVyXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEVudmlyb25tZW50U3dpdGNoZXI7XG4iXX0= */",
151
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$5
152
+ };
153
+ const EnvironmentSwitcher = () => {
154
+ const _useState = useState(),
155
+ _useState2 = _slicedToArray(_useState, 2),
156
+ value = _useState2[0],
157
+ setValue = _useState2[1];
158
+ useEffect(() => {
159
+ var _window;
160
+ const currentURL = (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.origin;
161
+ if (currentURL === LOCAL_ENV.value) {
162
+ var _ENV$;
163
+ (_ENV$ = ENV[0]) === null || _ENV$ === void 0 || _ENV$.options.unshift(LOCAL_ENV);
164
+ }
165
+ if (_includesInstanceProperty(currentURL).call(currentURL, 'preview')) {
166
+ var _ENV$2;
167
+ (_ENV$2 = ENV[0]) === null || _ENV$2 === void 0 || _ENV$2.options.unshift(PREVIEW_BRANCH);
168
+ }
169
+ if (_includesInstanceProperty(currentURL).call(currentURL, 'preview')) {
170
+ setValue('');
171
+ } else {
172
+ var _ENV$map$flat$find, _context, _context2;
173
+ setValue((_ENV$map$flat$find = _findInstanceProperty(_context = _flatInstanceProperty(_context2 = _mapInstanceProperty(ENV).call(ENV, _ref2 => {
174
+ let options = _ref2.options;
175
+ return options;
176
+ })).call(_context2)).call(_context, _ref3 => {
177
+ let value = _ref3.value;
178
+ return value === currentURL;
179
+ })) === null || _ENV$map$flat$find === void 0 ? void 0 : _ENV$map$flat$find.value);
180
+ }
181
+ // eslint-disable-next-line react-hooks/exhaustive-deps
182
+ }, []);
183
+ return jsxs(Spacings.Inline, {
184
+ alignItems: "center",
185
+ children: [jsx(Text.Detail, {
186
+ children: "Environment"
187
+ }), jsx("div", {
188
+ css: _ref$5,
189
+ children: jsx(SelectInput, {
190
+ id: 'env-selector',
191
+ name: 'env selector',
192
+ isSearchable: false,
193
+ horizontalConstraint: 5,
194
+ menuPortalTarget: document.body,
195
+ menuPortalZIndex: 30000,
196
+ onChange: event => {
197
+ setValue(event.target.value);
198
+ if (event.target.value) {
199
+ window.open(event.target.value, '_self');
200
+ }
201
+ },
202
+ value: value,
203
+ options: ENV,
204
+ showOptionGroupDivider: true
205
+ })
206
+ })]
207
+ });
208
+ };
209
+
210
+ const GITHUB_PR_URL = 'https://github.com/commercetools/merchant-center-frontend/pull/';
211
+ // Session storage keys
212
+ const FEATURE_FLAG_KEY = 'toggled-feature-flags';
213
+ const ACTIVE_TEAM_ID_KEY = 'activeTeamId';
214
+ const ENABLE_LOG_KEY = 'enable-log';
215
+ const USER_ROLES_WITH_ALLOWED_ACCESS = ['Engineer', 'ProductProjectManagerOrOwner'];
216
+
217
+ var FetchStaffBarUser = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchStaffBarUser" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", alias: { kind: "Name", value: "user" }, name: { kind: "Name", value: "me" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingGroup" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "launchdarklyTrackingSubgroup" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "businessRole" }, arguments: [], directives: [] }] } }] } }], loc: { start: 0, end: 132, source: { body: "query FetchStaffBarUser {\n user: me {\n id\n launchdarklyTrackingGroup\n launchdarklyTrackingSubgroup\n businessRole\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
218
+ const useStaffBarUser = () => {
219
+ var _data$user, _data$user2, _data$user3;
220
+ const _useMcQuery = useMcQuery(FetchStaffBarUser, {
221
+ context: {
222
+ target: GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND
223
+ },
224
+ // Use cache to avoid users from mocking response in browser to enable staffbar
225
+ fetchPolicy: 'cache-only'
226
+ }),
227
+ data = _useMcQuery.data,
228
+ error = _useMcQuery.error;
229
+ return {
230
+ userId: data === null || data === void 0 || (_data$user = data.user) === null || _data$user === void 0 ? void 0 : _data$user.id,
231
+ isStaffMember: (data === null || data === void 0 || (_data$user2 = data.user) === null || _data$user2 === void 0 ? void 0 : _data$user2.launchdarklyTrackingGroup) === 'commercetools',
232
+ isDevMember: _includesInstanceProperty(USER_ROLES_WITH_ALLOWED_ACCESS).call(USER_ROLES_WITH_ALLOWED_ACCESS, data === null || data === void 0 || (_data$user3 = data.user) === null || _data$user3 === void 0 ? void 0 : _data$user3.businessRole),
233
+ error
234
+ };
235
+ };
236
+
237
+ const getActiveTeamId = () => window.sessionStorage.getItem(ACTIVE_TEAM_ID_KEY);
238
+ const setActiveTeamId = teamId => window.sessionStorage.setItem(ACTIVE_TEAM_ID_KEY, teamId);
239
+ const removeActiveTeamId = () => window.sessionStorage.removeItem(ACTIVE_TEAM_ID_KEY);
240
+
241
+ var FetchTeamsByProjectQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchTeamsByProjectQuery" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "where" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "String" } } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "myProjects" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "where" }, value: { kind: "Variable", name: { kind: "Name", value: "where" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "results" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "owner" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "teams" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "membersRef" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }] } }], loc: { start: 0, end: 286, source: { body: "query FetchTeamsByProjectQuery($where: String!) {\n myProjects(where: $where) {\n results {\n id\n key\n name\n owner {\n id\n name\n teams {\n id\n name\n membersRef {\n id\n }\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
242
+ const defaultTeam = {
243
+ label: 'Default',
244
+ value: ''
245
+ };
246
+ const onlyTeamsWithMembership = function (userId) {
247
+ let teams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
248
+ return teams.length ? _filterInstanceProperty(teams).call(teams, team => {
249
+ var _team$membersRef;
250
+ return (_team$membersRef = team.membersRef) === null || _team$membersRef === void 0 ? void 0 : _someInstanceProperty(_team$membersRef).call(_team$membersRef, memberRef => memberRef.id === userId);
251
+ }) : [];
252
+ };
253
+ const getAdminTeamId = function () {
254
+ var _teams$find;
255
+ let teams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
256
+ return (_teams$find = _findInstanceProperty(teams).call(teams, team => team.name === 'Administrators')) === null || _teams$find === void 0 ? void 0 : _teams$find.id;
257
+ };
258
+ const getStoredTeamId = function (storedId) {
259
+ let teams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
260
+ return _findInstanceProperty(teams).call(teams, team => team.id === storedId);
261
+ };
262
+ const transformTeamsToOptions = function () {
263
+ let teams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
264
+ const hasAdminTeam = Boolean(getAdminTeamId(teams));
265
+ const options = _mapInstanceProperty(teams).call(teams, team => ({
266
+ label: team === null || team === void 0 ? void 0 : team.name,
267
+ value: team === null || team === void 0 ? void 0 : team.id
268
+ }));
269
+ if (hasAdminTeam) {
270
+ return options;
271
+ } else if (options.length) {
272
+ return [defaultTeam, ...options];
273
+ } else {
274
+ return [];
275
+ }
276
+ };
277
+ const useTeams = () => {
278
+ var _data$myProjects, _ref;
279
+ const projectKey = useApplicationContext(applicationContext => {
280
+ var _applicationContext$p;
281
+ return (_applicationContext$p = applicationContext.project) === null || _applicationContext$p === void 0 ? void 0 : _applicationContext$p.key;
282
+ });
283
+ const _useStaffBarUser = useStaffBarUser(),
284
+ userId = _useStaffBarUser.userId;
285
+ const _useMcQuery = useMcQuery(FetchTeamsByProjectQuery, {
286
+ skip: !projectKey,
287
+ variables: {
288
+ where: "key=\"".concat(projectKey, "\"")
289
+ },
290
+ context: {
291
+ target: GRAPHQL_TARGETS.ADMINISTRATION_SERVICE
292
+ }
293
+ }),
294
+ data = _useMcQuery.data,
295
+ error = _useMcQuery.error,
296
+ loading = _useMcQuery.loading;
297
+ const teams = data === null || data === void 0 || (_data$myProjects = data.myProjects) === null || _data$myProjects === void 0 || (_data$myProjects = _data$myProjects.results) === null || _data$myProjects === void 0 || (_data$myProjects = _data$myProjects[0]) === null || _data$myProjects === void 0 || (_data$myProjects = _data$myProjects.owner) === null || _data$myProjects === void 0 ? void 0 : _data$myProjects.teams;
298
+ useEffect(() => {
299
+ if (loading) {
300
+ return;
301
+ }
302
+
303
+ // If user already simulated the permission and tries to change project then we need to clear the stored teamId
304
+ // otherwise the newly selected project might be from different organization and user will see 404 page.
305
+ const storedId = getActiveTeamId();
306
+ if (storedId && !getStoredTeamId(storedId, teams)) {
307
+ removeActiveTeamId();
308
+ window.location.reload();
309
+ }
310
+ }, [loading, teams]);
311
+ const options = transformTeamsToOptions(onlyTeamsWithMembership(userId || '', teams));
312
+ const adminTeamId = getAdminTeamId(onlyTeamsWithMembership(userId || '', teams));
313
+ const storedId = getActiveTeamId();
314
+ const activeTeamId = (_ref = storedId !== null && storedId !== void 0 ? storedId : adminTeamId) !== null && _ref !== void 0 ? _ref : defaultTeam.value;
315
+ return {
316
+ data,
317
+ options,
318
+ activeTeamId,
319
+ isLimitedPermission: storedId && storedId !== adminTeamId,
320
+ error,
321
+ loading
322
+ };
323
+ };
324
+
325
+ var _window$__flopflip__;
326
+ const launchdarklyAdapter = (_window$__flopflip__ = window.__flopflip__) === null || _window$__flopflip__ === void 0 ? void 0 : _window$__flopflip__.launchdarkly;
327
+ function getFlagValue(flag, defaultValue) {
328
+ // @ts-expect-error: getFlag exists not on all adapters and hence
329
+ // not the generic type. For ours it exists.
330
+ const result = launchdarklyAdapter === null || launchdarklyAdapter === void 0 ? void 0 : launchdarklyAdapter.getFlag(flag);
331
+ if (typeof result === 'boolean') {
332
+ return result;
333
+ } else if (typeof (result === null || result === void 0 ? void 0 : result.value) === 'boolean') {
334
+ return result;
335
+ }
336
+ return defaultValue;
337
+ }
338
+ function setFlag(flagName, flagValue) {
339
+ let lockFlags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
340
+ launchdarklyAdapter === null || launchdarklyAdapter === void 0 || launchdarklyAdapter.updateFlags({
341
+ [flagName]: flagValue
342
+ }, {
343
+ lockFlags
344
+ });
345
+ }
346
+
347
+ const getFromSessionStorage = key => {
348
+ const storedValue = window.sessionStorage.getItem(key);
349
+ return storedValue ? JSON.parse(storedValue) : {};
350
+ };
351
+ const setToSessionStorage = (key, value) => window.sessionStorage.setItem(key, _JSON$stringify(value));
352
+
353
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$4() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
354
+ var _ref$4 = process.env.NODE_ENV === "production" ? {
355
+ name: "mdo41b",
356
+ styles: "box-sizing:border-box;width:100%;margin:0;border:0;border-top-width:1px;border-style:solid;border-top-color:var(--color-neutral-90)"
357
+ } : {
358
+ name: "p3joim-Divider",
359
+ styles: "box-sizing:border-box;width:100%;margin:0;border:0;border-top-width:1px;border-style:solid;border-top-color:var(--color-neutral-90);label:Divider;",
360
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRpdmlkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtjIiwiZmlsZSI6ImRpdmlkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaXZpZGVyKCkge1xuICByZXR1cm4gKFxuICAgIDxoclxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1uZXV0cmFsLTkwKTtcbiAgICAgIGB9XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */",
361
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$4
362
+ };
363
+ function Divider() {
364
+ return jsx("hr", {
365
+ css: _ref$4
366
+ });
367
+ }
368
+
369
+ function ownKeys$2(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
370
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context4 = ownKeys$2(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context5 = ownKeys$2(Object(t))).call(_context5, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
371
+ var FeatureFlagTogglerIllustration = function FeatureFlagTogglerIllustration(props) {
372
+ return jsx("svg", _objectSpread$2(_objectSpread$2({}, props), {}, {
373
+ children: jsx("path", {
374
+ d: "M4.91 9.818c-1.365 0-2.524-.477-3.478-1.432C.477 7.432 0 6.273 0 4.91c0-1.364.477-2.523 1.432-3.477C2.386.477 3.545 0 4.909 0h8.182c1.364 0 2.523.477 3.477 1.432C17.523 2.386 18 3.545 18 4.909c0 1.364-.477 2.523-1.432 3.477-.954.955-2.114 1.432-3.477 1.432H4.909Zm0-1.227h8.18c1.024 0 1.893-.358 2.609-1.074.716-.716 1.074-1.585 1.074-2.608 0-1.023-.358-1.892-1.074-2.608-.716-.716-1.585-1.074-2.608-1.074H4.909c-1.023 0-1.892.358-2.608 1.074-.716.716-1.074 1.585-1.074 2.608 0 1.023.358 1.892 1.074 2.608.716.716 1.585 1.074 2.608 1.074Zm-.023-1.616c.574 0 1.062-.2 1.464-.602a1.99 1.99 0 0 0 .604-1.463c0-.573-.201-1.061-.603-1.463a1.99 1.99 0 0 0-1.462-.604c-.574 0-1.062.2-1.464.602a1.99 1.99 0 0 0-.603 1.463c0 .573.2 1.061.602 1.464a1.99 1.99 0 0 0 1.462.603Z",
375
+ fill: "#000"
376
+ })
377
+ }));
378
+ };
379
+ FeatureFlagTogglerIllustration.defaultProps = {
380
+ width: "18",
381
+ height: "10",
382
+ fill: "none",
383
+ xmlns: "http://www.w3.org/2000/svg"
384
+ };
385
+ function toggleFeatureFlag(flag, value) {
386
+ const cachedFeatureFlag = getFromSessionStorage(FEATURE_FLAG_KEY);
387
+ setToSessionStorage(FEATURE_FLAG_KEY, _objectSpread$2(_objectSpread$2({}, cachedFeatureFlag), {}, {
388
+ [flag]: value
389
+ }));
390
+ setFlag(flag, value);
391
+ }
392
+ const FeatureFlagToggler = props => {
393
+ var _context, _props$featureFlags;
394
+ const modalState = useModalState();
395
+ const _useState = useState(false),
396
+ _useState2 = _slicedToArray(_useState, 2),
397
+ toggleAll = _useState2[0],
398
+ setToggleAll = _useState2[1];
399
+ const cachedFeatureFlag = getFromSessionStorage(FEATURE_FLAG_KEY);
400
+ const _useStaffBarUser = useStaffBarUser(),
401
+ isDevMember = _useStaffBarUser.isDevMember;
402
+ const _useState3 = useState(_mapInstanceProperty(_context = _Object$entries((_props$featureFlags = props.featureFlags) !== null && _props$featureFlags !== void 0 ? _props$featureFlags : {})).call(_context, _ref => {
403
+ var _cachedFeatureFlag$fe;
404
+ let _ref2 = _slicedToArray(_ref, 2),
405
+ featureName = _ref2[0],
406
+ toggleValue = _ref2[1];
407
+ return {
408
+ featureName,
409
+ toggleValue: (_cachedFeatureFlag$fe = cachedFeatureFlag[featureName]) !== null && _cachedFeatureFlag$fe !== void 0 ? _cachedFeatureFlag$fe : getFlagValue(featureName, toggleValue)
410
+ };
411
+ })),
412
+ _useState4 = _slicedToArray(_useState3, 2),
413
+ options = _useState4[0],
414
+ setOptions = _useState4[1];
415
+ const originalValues = useMemo(() => {
416
+ var _context2, _props$featureFlags2;
417
+ return _mapInstanceProperty(_context2 = _Object$entries((_props$featureFlags2 = props.featureFlags) !== null && _props$featureFlags2 !== void 0 ? _props$featureFlags2 : {})).call(_context2, _ref3 => {
418
+ var _getFlagValue;
419
+ let _ref4 = _slicedToArray(_ref3, 2),
420
+ featureName = _ref4[0],
421
+ toggleValue = _ref4[1];
422
+ return {
423
+ featureName,
424
+ toggleValue: (_getFlagValue = getFlagValue(featureName, toggleValue)) !== null && _getFlagValue !== void 0 ? _getFlagValue : 'false'
425
+ };
426
+ });
427
+ },
428
+ // eslint-disable-next-line react-hooks/exhaustive-deps
429
+ []);
430
+ const isTouched = useMemo(() => !isEqual(originalValues, options), [originalValues, options]);
431
+ useEffect(() => {
432
+ // Persist toggled flags from other application
433
+ if (_Object$keys(cachedFeatureFlag).length) {
434
+ var _context3;
435
+ _forEachInstanceProperty(_context3 = _Object$entries(cachedFeatureFlag)).call(_context3, _ref5 => {
436
+ let _ref6 = _slicedToArray(_ref5, 2),
437
+ featureName = _ref6[0],
438
+ value = _ref6[1];
439
+ if (_findInstanceProperty(options).call(options, option => option.featureName === featureName)) {
440
+ toggleFeatureFlag(featureName, value);
441
+ }
442
+ });
443
+ }
444
+ // eslint-disable-next-line react-hooks/exhaustive-deps
445
+ }, []);
446
+ const isToggled = toggleValue => {
447
+ if (typeof toggleValue === 'object' && toggleValue.value !== undefined) {
448
+ return toggleValue.value;
449
+ }
450
+ return toggleValue;
451
+ };
452
+ const toTitleCase = function () {
453
+ let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
454
+ const result = value.replace(/([A-Z])/g, ' $1');
455
+ return result.charAt(0).toUpperCase() + _sliceInstanceProperty(result).call(result, 1);
456
+ };
457
+ const toggleAndGenerateNewOption = _ref7 => {
458
+ let featureName = _ref7.featureName,
459
+ toggleValue = _ref7.toggleValue,
460
+ options = _ref7.options,
461
+ index = _ref7.index;
462
+ const newOptions = [...options];
463
+ if (typeof toggleValue === 'boolean') {
464
+ toggleFeatureFlag(featureName, !toggleValue);
465
+ newOptions[index] = _objectSpread$2(_objectSpread$2({}, newOptions[index]), {}, {
466
+ toggleValue: !toggleValue
467
+ });
468
+ } else {
469
+ toggleFeatureFlag(featureName, {
470
+ value: !(toggleValue !== null && toggleValue !== void 0 && toggleValue.value)
471
+ });
472
+ newOptions[index] = _objectSpread$2(_objectSpread$2({}, newOptions[index]), {}, {
473
+ toggleValue: {
474
+ value: !(toggleValue !== null && toggleValue !== void 0 && toggleValue.value)
475
+ }
476
+ });
477
+ }
478
+ return newOptions;
479
+ };
480
+ const handleToggleAll = useCallback(() => {
481
+ let newOptions = [...options];
482
+ _forEachInstanceProperty(options).call(options, (_ref8, index) => {
483
+ let featureName = _ref8.featureName,
484
+ toggleValue = _ref8.toggleValue;
485
+ newOptions = toggleAndGenerateNewOption({
486
+ featureName,
487
+ toggleValue: typeof toggleValue === 'boolean' ? toggleAll : {
488
+ value: toggleAll
489
+ },
490
+ index,
491
+ options: [...newOptions]
492
+ });
493
+ });
494
+ setOptions(newOptions);
495
+ setToggleAll(!toggleAll);
496
+ }, [toggleAll, options]);
497
+ const handleToggle = useCallback(_ref9 => {
498
+ let featureName = _ref9.featureName,
499
+ toggleValue = _ref9.toggleValue,
500
+ index = _ref9.index;
501
+ const newOptions = toggleAndGenerateNewOption({
502
+ featureName,
503
+ toggleValue,
504
+ index,
505
+ options: [...options]
506
+ });
507
+ setOptions(newOptions);
508
+ }, [options]);
509
+ const handleRevert = () => {
510
+ _forEachInstanceProperty(originalValues).call(originalValues, (_ref10, index) => {
511
+ let featureName = _ref10.featureName,
512
+ toggleValue = _ref10.toggleValue;
513
+ toggleAndGenerateNewOption({
514
+ featureName,
515
+ toggleValue: typeof toggleValue === 'boolean' ? !toggleValue : {
516
+ value: !toggleValue.value
517
+ },
518
+ index,
519
+ options: [...options]
520
+ });
521
+ });
522
+ setOptions(originalValues);
523
+ setToggleAll(false);
524
+ window.sessionStorage.removeItem(FEATURE_FLAG_KEY);
525
+ };
526
+ if (!isDevMember) return null;
527
+ if (!options.length) return null;
528
+ return jsxs(Fragment, {
529
+ children: [jsx(IconButton, {
530
+ label: "Toggle Feature Flags",
531
+ icon: jsx(FeatureFlagTogglerIllustration, {}),
532
+ onClick: modalState.openModal,
533
+ color: "info"
534
+ }), jsx(InfoDialog, {
535
+ title: 'Feature flags',
536
+ isOpen: modalState.isModalOpen,
537
+ onClose: modalState.closeModal,
538
+ zIndex: 30000,
539
+ getParentSelector: () => document.body,
540
+ children: jsxs(Spacings.Stack, {
541
+ scale: "m",
542
+ children: [jsxs(Spacings.Inline, {
543
+ justifyContent: "flex-end",
544
+ scale: "m",
545
+ alignItems: "center",
546
+ children: [jsx(FlatButton, {
547
+ onClick: handleToggleAll,
548
+ label: "Toggle All"
549
+ }), jsx(SecondaryButton, {
550
+ label: "Revert",
551
+ onClick: handleRevert,
552
+ isDisabled: !isTouched
553
+ })]
554
+ }), jsx(Spacings.Stack, {
555
+ scale: "m",
556
+ children: _mapInstanceProperty(options).call(options, (_ref11, index) => {
557
+ let featureName = _ref11.featureName,
558
+ toggleValue = _ref11.toggleValue;
559
+ return jsx(Constraints.Horizontal, {
560
+ max: 'scale',
561
+ children: jsxs(Spacings.Stack, {
562
+ scale: "m",
563
+ children: [jsxs(Spacings.Inline, {
564
+ justifyContent: "space-between",
565
+ alignItems: "center",
566
+ children: [jsxs("div", {
567
+ children: [jsx(Text.Body, {
568
+ children: toTitleCase(featureName)
569
+ }), jsxs(Text.Detail, {
570
+ tone: "secondary",
571
+ children: ["flag key: ", featureName]
572
+ })]
573
+ }), jsx(ToggleInput, {
574
+ size: "small",
575
+ isChecked: isToggled(toggleValue),
576
+ onChange: () => handleToggle({
577
+ featureName,
578
+ toggleValue,
579
+ index
580
+ })
581
+ })]
582
+ }), jsx(Divider, {})]
583
+ })
584
+ }, featureName);
585
+ })
586
+ })]
587
+ })
588
+ })]
589
+ });
590
+ };
591
+
592
+ function ownKeys$1(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
593
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys$1(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys$1(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
594
+ var GitHubIcon = function GitHubIcon(props) {
595
+ return jsx("svg", _objectSpread$1(_objectSpread$1({}, props), {}, {
596
+ children: jsx("path", {
597
+ d: "M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"
598
+ })
599
+ }));
600
+ };
601
+ GitHubIcon.defaultProps = {
602
+ xmlns: "http://www.w3.org/2000/svg",
603
+ width: "24",
604
+ height: "24"
605
+ };
606
+ function GitHubPullRequestLink() {
607
+ const previewUrl = window.location.hostname.match(/mc-(\d+)\.mc-preview/);
608
+ if (!previewUrl) return null;
609
+ const _previewUrl = _slicedToArray(previewUrl, 2),
610
+ PRNumber = _previewUrl[1];
611
+ return jsx(IconButton, {
612
+ label: "GitHub Pull Request",
613
+ icon: jsx(GitHubIcon, {}),
614
+ onClick: () => {
615
+ var _context;
616
+ window.open(_concatInstanceProperty(_context = "".concat(GITHUB_PR_URL)).call(_context, PRNumber));
617
+ }
618
+ });
619
+ }
620
+
621
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$3() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
622
+ var _ref$3 = process.env.NODE_ENV === "production" ? {
623
+ name: "1jeqx8",
624
+ styles: "width:242px"
625
+ } : {
626
+ name: "959kup-TeamSwitcher",
627
+ styles: "width:242px;label:TeamSwitcher;",
628
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlYW0tc3dpdGNoZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdEa0IiLCJmaWxlIjoidGVhbS1zd2l0Y2hlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7XG4gIFNlbGVjdElucHV0LFxuICBUZXh0LFxuICBTcGFjaW5ncyxcbiAgU3RhbXAsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCc7XG5pbXBvcnQgeyB1c2VUZWFtcyB9IGZyb20gJy4uLy4uL2hvb2tzJztcbmltcG9ydCB7IHJlbW92ZUFjdGl2ZVRlYW1JZCwgc2V0QWN0aXZlVGVhbUlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWN0aXZlLXRlYW0nO1xuXG5jb25zdCBUZWFtU3dpdGNoZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgb3B0aW9ucywgYWN0aXZlVGVhbUlkLCBpc0xpbWl0ZWRQZXJtaXNzaW9uIH0gPSB1c2VUZWFtcygpO1xuXG4gIGlmICghb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBib3R0b21PcHRpb24gPSB7XG4gICAgb3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NlbGVjdCBhIHRlYW0gdG8gbGltaXQgcGVybWlzc2lvbnMgdG8gdGhvc2Ugb2YgdGhhdCB0ZWFtLicsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgaXNEaXNhYmxlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgY29uc3Qgb3B0aW9uc1dpdGhCb3R0b21PcHRpb24gPSBbXG4gICAge1xuICAgICAgb3B0aW9ucyxcbiAgICB9LFxuICAgIGJvdHRvbU9wdGlvbixcbiAgXTtcblxuICBjb25zdCBwb3J0YWxDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiW2lkPSdsZWZ0LW9mLXByb2ZpbGUnXVwiKTtcblxuICBjb25zdCBjb250YWluZXIgPSAoXG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0aWQ9XCJsaW1pdGVkLXBlcm1pc3Npb25cIlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIHotaW5kZXg6IDIwMDAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGB9XG4gICAgPlxuICAgICAgPFN0YW1wIHRvbmU9XCJ3YXJuaW5nXCIgbGFiZWw9XCJMaW1pdGVkIFBlcm1pc3Npb25cIiAvPlxuICAgIDwvZGl2PlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTcGFjaW5ncy5JbmxpbmUgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICA8VGV4dC5EZXRhaWw+VGVhbTwvVGV4dC5EZXRhaWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIHdpZHRoOiAyNDJweDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPFNlbGVjdElucHV0XG4gICAgICAgICAgICBpZD1cInRlYW0tc2VsZWN0b3JcIlxuICAgICAgICAgICAgbmFtZT1cIlRlYW0gU2VsZWN0b3JcIlxuICAgICAgICAgICAgaXNTZWFyY2hhYmxlPXt0cnVlfVxuICAgICAgICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9ezV9XG4gICAgICAgICAgICBtZW51UG9ydGFsVGFyZ2V0PXtkb2N1bWVudC5ib2R5fVxuICAgICAgICAgICAgbWVudVBvcnRhbFpJbmRleD17MzAwMDB9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVUZWFtSWQoZXZlbnQudGFyZ2V0LnZhbHVlIGFzIHN0cmluZyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQWN0aXZlVGVhbUlkKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdmFsdWU9e2FjdGl2ZVRlYW1JZH1cbiAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnNXaXRoQm90dG9tT3B0aW9ufVxuICAgICAgICAgICAgc2hvd09wdGlvbkdyb3VwRGl2aWRlclxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICB7aXNMaW1pdGVkUGVybWlzc2lvbiAmJlxuICAgICAgICBwb3J0YWxDb250YWluZXIgJiZcbiAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKGNvbnRhaW5lciwgcG9ydGFsQ29udGFpbmVyKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRlYW1Td2l0Y2hlcjtcbiJdfQ== */",
629
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
630
+ };
631
+ var _ref2$2 = process.env.NODE_ENV === "production" ? {
632
+ name: "14ronv",
633
+ styles: "z-index:20001;display:flex;align-items:center;margin-right:16px;height:100%"
634
+ } : {
635
+ name: "1d9e80f-container",
636
+ styles: "z-index:20001;display:flex;align-items:center;margin-right:16px;height:100%;label:container;",
637
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlYW0tc3dpdGNoZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVDYyIsImZpbGUiOiJ0ZWFtLXN3aXRjaGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHtcbiAgU2VsZWN0SW5wdXQsXG4gIFRleHQsXG4gIFNwYWNpbmdzLFxuICBTdGFtcCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvdWkta2l0JztcbmltcG9ydCB7IHVzZVRlYW1zIH0gZnJvbSAnLi4vLi4vaG9va3MnO1xuaW1wb3J0IHsgcmVtb3ZlQWN0aXZlVGVhbUlkLCBzZXRBY3RpdmVUZWFtSWQgfSBmcm9tICcuLi8uLi91dGlscy9hY3RpdmUtdGVhbSc7XG5cbmNvbnN0IFRlYW1Td2l0Y2hlciA9ICgpID0+IHtcbiAgY29uc3QgeyBvcHRpb25zLCBhY3RpdmVUZWFtSWQsIGlzTGltaXRlZFBlcm1pc3Npb24gfSA9IHVzZVRlYW1zKCk7XG5cbiAgaWYgKCFvcHRpb25zPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGJvdHRvbU9wdGlvbiA9IHtcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnU2VsZWN0IGEgdGVhbSB0byBsaW1pdCBwZXJtaXNzaW9ucyB0byB0aG9zZSBvZiB0aGF0IHRlYW0uJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICBjb25zdCBvcHRpb25zV2l0aEJvdHRvbU9wdGlvbiA9IFtcbiAgICB7XG4gICAgICBvcHRpb25zLFxuICAgIH0sXG4gICAgYm90dG9tT3B0aW9uLFxuICBdO1xuXG4gIGNvbnN0IHBvcnRhbENvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbaWQ9J2xlZnQtb2YtcHJvZmlsZSddXCIpO1xuXG4gIGNvbnN0IGNvbnRhaW5lciA9IChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cImxpbWl0ZWQtcGVybWlzc2lvblwiXG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgei1pbmRleDogMjAwMDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYH1cbiAgICA+XG4gICAgICA8U3RhbXAgdG9uZT1cIndhcm5pbmdcIiBsYWJlbD1cIkxpbWl0ZWQgUGVybWlzc2lvblwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNwYWNpbmdzLklubGluZSBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgIDxUZXh0LkRldGFpbD5UZWFtPC9UZXh0LkRldGFpbD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgd2lkdGg6IDI0MnB4O1xuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8U2VsZWN0SW5wdXRcbiAgICAgICAgICAgIGlkPVwidGVhbS1zZWxlY3RvclwiXG4gICAgICAgICAgICBuYW1lPVwiVGVhbSBTZWxlY3RvclwiXG4gICAgICAgICAgICBpc1NlYXJjaGFibGU9e3RydWV9XG4gICAgICAgICAgICBob3Jpem9udGFsQ29uc3RyYWludD17NX1cbiAgICAgICAgICAgIG1lbnVQb3J0YWxUYXJnZXQ9e2RvY3VtZW50LmJvZHl9XG4gICAgICAgICAgICBtZW51UG9ydGFsWkluZGV4PXszMDAwMH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZVRlYW1JZChldmVudC50YXJnZXQudmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZW1vdmVBY3RpdmVUZWFtSWQoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB2YWx1ZT17YWN0aXZlVGVhbUlkfVxuICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc1dpdGhCb3R0b21PcHRpb259XG4gICAgICAgICAgICBzaG93T3B0aW9uR3JvdXBEaXZpZGVyXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIHtpc0xpbWl0ZWRQZXJtaXNzaW9uICYmXG4gICAgICAgIHBvcnRhbENvbnRhaW5lciAmJlxuICAgICAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoY29udGFpbmVyLCBwb3J0YWxDb250YWluZXIpfVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGVhbVN3aXRjaGVyO1xuIl19 */",
638
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
639
+ };
640
+ const TeamSwitcher = () => {
641
+ const _useTeams = useTeams(),
642
+ options = _useTeams.options,
643
+ activeTeamId = _useTeams.activeTeamId,
644
+ isLimitedPermission = _useTeams.isLimitedPermission;
645
+ if (!(options !== null && options !== void 0 && options.length)) {
646
+ return null;
647
+ }
648
+ const bottomOption = {
649
+ options: [{
650
+ label: 'Select a team to limit permissions to those of that team.',
651
+ value: '',
652
+ isDisabled: true
653
+ }]
654
+ };
655
+ const optionsWithBottomOption = [{
656
+ options
657
+ }, bottomOption];
658
+ const portalContainer = document.querySelector("[id='left-of-profile']");
659
+ const container = jsx("div", {
660
+ "data-testid": "limited-permission",
661
+ css: _ref2$2,
662
+ children: jsx(Stamp, {
663
+ tone: "warning",
664
+ label: "Limited Permission"
665
+ })
666
+ });
667
+ return jsxs(Fragment, {
668
+ children: [jsxs(Spacings.Inline, {
669
+ alignItems: "center",
670
+ children: [jsx(Text.Detail, {
671
+ children: "Team"
672
+ }), jsx("div", {
673
+ css: _ref$3,
674
+ children: jsx(SelectInput, {
675
+ id: "team-selector",
676
+ name: "Team Selector",
677
+ isSearchable: true,
678
+ horizontalConstraint: 5,
679
+ menuPortalTarget: document.body,
680
+ menuPortalZIndex: 30000,
681
+ onChange: event => {
682
+ if (event.target.value) {
683
+ setActiveTeamId(event.target.value);
684
+ } else {
685
+ removeActiveTeamId();
686
+ }
687
+ window.location.reload();
688
+ },
689
+ value: activeTeamId,
690
+ options: optionsWithBottomOption,
691
+ showOptionGroupDivider: true
692
+ })
693
+ })]
694
+ }), isLimitedPermission && portalContainer && /*#__PURE__*/ReactDOM.createPortal(container, portalContainer)]
695
+ });
696
+ };
697
+
698
+ const LogEnabler = () => {
699
+ const history = useHistory();
700
+ const location = useLocation();
701
+ const queryParams = new _URLSearchParams(location.search);
702
+ const debugFromQueryParams = queryParams.get('debug');
703
+ const isDebugLoggingEnabled = debugFromQueryParams === 'true';
704
+
705
+ // Synchronize the debug params.
706
+ useEffect(() => {
707
+ if (debugFromQueryParams) {
708
+ window.sessionStorage.setItem(ENABLE_LOG_KEY, debugFromQueryParams);
709
+ } else {
710
+ // Restore the query param based on the cached state.
711
+ const cachedDebugState = window.sessionStorage.getItem(ENABLE_LOG_KEY);
712
+ if (cachedDebugState) {
713
+ const cachedIsDebugLoggingEnabled = cachedDebugState === 'true';
714
+ queryParams.set('debug', String(cachedIsDebugLoggingEnabled));
715
+ history.push({
716
+ pathname: location.pathname,
717
+ search: queryParams.toString()
718
+ });
719
+ }
720
+ }
721
+ // eslint-disable-next-line react-hooks/exhaustive-deps
722
+ }, [debugFromQueryParams]);
723
+ function handleDebugLoggingChange() {
724
+ const nextIsDebugLoggingEnabled = !isDebugLoggingEnabled;
725
+
726
+ // Cache the new debug state value.
727
+ window.sessionStorage.setItem(ENABLE_LOG_KEY, String(nextIsDebugLoggingEnabled));
728
+
729
+ // Sync the state with the query params. This is what counts!
730
+ if (nextIsDebugLoggingEnabled) {
731
+ queryParams.set('debug', String(nextIsDebugLoggingEnabled));
732
+ } else {
733
+ queryParams.delete('debug');
734
+ }
735
+ history.push({
736
+ pathname: location.pathname,
737
+ search: queryParams.toString()
738
+ });
739
+ }
740
+ return jsx(CheckboxInput, {
741
+ onChange: handleDebugLoggingChange,
742
+ isChecked: isDebugLoggingEnabled,
743
+ children: "Enable Logs"
744
+ });
745
+ };
746
+
747
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
748
+ function getDurationBetween(type, deployedAt) {
749
+ const deployedDate = new Date(deployedAt);
750
+ const today = new Date();
751
+ let value;
752
+ switch (type) {
753
+ case 'minutes':
754
+ value = 60000;
755
+ break;
756
+ case 'hours':
757
+ value = 3600000;
758
+ break;
759
+ case 'days':
760
+ default:
761
+ value = 8.64e7;
762
+ break;
763
+ }
764
+ return Math.round(Math.abs(+deployedDate - +today) / value);
765
+ }
766
+ var _ref$2 = process.env.NODE_ENV === "production" ? {
767
+ name: "1nxezmo",
768
+ styles: "cursor:pointer!important;position:absolute;left:0;width:100%;button{width:100%;opacity:0;}"
769
+ } : {
770
+ name: "1q8580e-DeploymentTracker",
771
+ styles: "cursor:pointer!important;position:absolute;left:0;width:100%;button{width:100%;opacity:0;};label:DeploymentTracker;",
772
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlcGxveW1lbnQtdHJhY2tlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0prQiIsImZpbGUiOiJkZXBsb3ltZW50LXRyYWNrZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQge1xuICBJbmZvRGlhbG9nLFxuICB1c2VNb2RhbFN0YXRlLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQ29uc3RyYWludHMsXG4gIFNlY29uZGFyeUJ1dHRvbixcbiAgU3BhY2luZ3MsXG4gIFN0YW1wLFxuICBUZXh0LFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnO1xuaW1wb3J0IERpdmlkZXIgZnJvbSAnLi4vZGl2aWRlcic7XG5pbXBvcnQgeyBMT0NBTF9FTlYgfSBmcm9tICcuLi9lbnZpcm9ubWVudC1zd2l0Y2hlci9jb25zdGFudHMnO1xuXG5kZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xudHlwZSBUVmVyc2lvbiA9IEFycmF5PHtcbiAgYXBwOiBzdHJpbmc7XG4gIGJ1aWxkOiB7XG4gICAgZGVwbG95ZWRBdDogc3RyaW5nO1xuICB9O1xufT47XG5cbmZ1bmN0aW9uIGdldER1cmF0aW9uQmV0d2VlbihcbiAgdHlwZTogJ21pbnV0ZXMnIHwgJ2hvdXJzJyB8ICdkYXlzJyxcbiAgZGVwbG95ZWRBdDogc3RyaW5nXG4pIHtcbiAgY29uc3QgZGVwbG95ZWREYXRlID0gbmV3IERhdGUoZGVwbG95ZWRBdCk7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgbGV0IHZhbHVlO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgIHZhbHVlID0gNjAwMDA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdob3Vycyc6XG4gICAgICB2YWx1ZSA9IDM2MDAwMDA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdkYXlzJzpcbiAgICBkZWZhdWx0OlxuICAgICAgdmFsdWUgPSA4LjY0ZTc7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLmFicygrZGVwbG95ZWREYXRlIC0gK3RvZGF5KSAvIHZhbHVlKTtcbn1cblxuY29uc3QgRGVwbG95bWVudFRyYWNrZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgaXNNb2RhbE9wZW4sIG9wZW5Nb2RhbCwgY2xvc2VNb2RhbCB9ID0gdXNlTW9kYWxTdGF0ZSgpO1xuICBjb25zdCBbdmVyc2lvbnMsIHNldFZlcnNpb25zXSA9IHVzZVN0YXRlPFRWZXJzaW9uPihbXSk7XG4gIGNvbnN0IGdldEN1cnJlbnRBcHBsaWNhdGlvbk5hbWUgPSAoKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCB7IGVudHJ5UG9pbnRVcmlQYXRoIH0gPSB3aW5kb3cuYXBwO1xuICAgIHN3aXRjaCAoZW50cnlQb2ludFVyaVBhdGgpIHtcbiAgICAgIGNhc2UgJ3dlbGNvbWUnOlxuICAgICAgICByZXR1cm4gJ2ZhbGxiYWNrJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBlbnRyeVBvaW50VXJpUGF0aDtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGN1cnJlbnRBcHBsaWNhdGlvbiA9IGdldEN1cnJlbnRBcHBsaWNhdGlvbk5hbWUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBVUkwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgICAgaWYgKFVSTCA9PT0gTE9DQUxfRU5WLnZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7VVJMfS92ZXJzaW9uc2AsIHtcbiAgICAgICAgICBzaWduYWw6IGFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgdmVyc2lvbnM7XG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIHZlcnNpb25zID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICAgIHNldFZlcnNpb25zKHNvcnRCeSh2ZXJzaW9ucywgKHZlcnNpb24pID0+IHZlcnNpb24uYXBwKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEZldGNoaW5nIHRoZSB2ZXJzaW9ucyByZXR1cm5lZCBhICR7cmVzcG9uc2Uuc3RhdHVzfSBIVFRQIHN0YXR1cyBjb2RlLmA7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmZXRjaERhdGEoKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGdldExhc3RVcGRhdGUgPSAoXG4gICAgYXBwbGljYXRpb246IHN0cmluZ1xuICApOiB7IHZhbHVlOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9ID0+IHtcbiAgICBjb25zdCBkZXBsb3llZEF0ID0gdmVyc2lvbnMuZmluZCgodmVyc2lvbikgPT4gdmVyc2lvbi5hcHAgPT09IGFwcGxpY2F0aW9uKVxuICAgICAgPy5idWlsZD8uZGVwbG95ZWRBdDtcblxuICAgIGlmICghZGVwbG95ZWRBdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IDAsIHRleHQ6ICctLScgfTtcbiAgICB9XG5cbiAgICB2YXIgZGF5cyA9IGdldER1cmF0aW9uQmV0d2VlbignZGF5cycsIGRlcGxveWVkQXQpO1xuICAgIGlmIChkYXlzIDwgMSkge1xuICAgICAgdmFyIGhvdXJzID0gZ2V0RHVyYXRpb25CZXR3ZWVuKCdob3VycycsIGRlcGxveWVkQXQpO1xuICAgICAgaWYgKGhvdXJzIDwgMSkge1xuICAgICAgICBjb25zdCBtaW51dGVzID0gZ2V0RHVyYXRpb25CZXR3ZWVuKCdtaW51dGVzJywgZGVwbG95ZWRBdCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IE51bWJlcihtaW51dGVzLnRvRml4ZWQoMCkpLFxuICAgICAgICAgIHRleHQ6IGAke21pbnV0ZXMudG9GaXhlZCgwKX0gbWludXRlcyBhZ29gLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IE51bWJlcihob3Vycy50b0ZpeGVkKDApKSxcbiAgICAgICAgdGV4dDogYCR7aG91cnMudG9GaXhlZCgwKX0gaG91cnMgYWdvYCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogTnVtYmVyKGRheXMudG9GaXhlZCgwKSksXG4gICAgICB0ZXh0OiBgJHtkYXlzLnRvRml4ZWQoMCl9IGRheXMgYWdvYCxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGdldFRvbmUgPSAoeyB2YWx1ZSwgdGV4dCB9OiB7IHZhbHVlOiBudW1iZXI7IHRleHQ6IHN0cmluZyB9KSA9PiB7XG4gICAgaWYgKHRleHQuaW5jbHVkZXMoJ2RheXMnKSkge1xuICAgICAgaWYgKHZhbHVlID49IDUpIHJldHVybiAnY3JpdGljYWwnO1xuICAgICAgaWYgKHZhbHVlID49IDIpIHJldHVybiAnd2FybmluZyc7XG4gICAgfVxuICAgIHJldHVybiAncHJpbWFyeSc7XG4gIH07XG5cbiAgaWYgKCF2ZXJzaW9ucz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYH1cbiAgICA+XG4gICAgICA8U3RhbXAgdG9uZT17Z2V0VG9uZShnZXRMYXN0VXBkYXRlKGN1cnJlbnRBcHBsaWNhdGlvbikpfT5cbiAgICAgICAgTGFzdCBkZXBsb3llZDoge2dldExhc3RVcGRhdGUoY3VycmVudEFwcGxpY2F0aW9uKS50ZXh0fVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8U2Vjb25kYXJ5QnV0dG9uIGxhYmVsPVwiXCIgb25DbGljaz17b3Blbk1vZGFsfSBzaXplPVwibWVkaXVtXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1N0YW1wPlxuICAgICAgPEluZm9EaWFsb2dcbiAgICAgICAgaXNPcGVuPXtpc01vZGFsT3Blbn1cbiAgICAgICAgdGl0bGU9eydBcHAgRGVwbG95bWVudCBpbmZvcm1hdGlvbid9XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlTW9kYWx9XG4gICAgICA+XG4gICAgICAgIDxTcGFjaW5ncy5TdGFjaz5cbiAgICAgICAgICB7dmVyc2lvbnMubWFwKCh2ZXJzaW9uKSA9PiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIGtleT17dmVyc2lvbi5hcHB9IGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxDb25zdHJhaW50cy5Ib3Jpem9udGFsIG1heD17Nn0+XG4gICAgICAgICAgICAgICAgICA8VGV4dC5Cb2R5Pnt2ZXJzaW9uLmFwcH08L1RleHQuQm9keT5cbiAgICAgICAgICAgICAgICA8L0NvbnN0cmFpbnRzLkhvcml6b250YWw+XG4gICAgICAgICAgICAgICAgPFN0YW1wIHRvbmU9e2dldFRvbmUoZ2V0TGFzdFVwZGF0ZSh2ZXJzaW9uLmFwcCkpfT5cbiAgICAgICAgICAgICAgICAgIHtnZXRMYXN0VXBkYXRlKHZlcnNpb24uYXBwKS50ZXh0fVxuICAgICAgICAgICAgICAgIDwvU3RhbXA+XG4gICAgICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgICA8L0luZm9EaWFsb2c+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZXBsb3ltZW50VHJhY2tlcjtcbiJdfQ== */",
773
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
774
+ };
775
+ var _ref2$1 = process.env.NODE_ENV === "production" ? {
776
+ name: "bjn8wh",
777
+ styles: "position:relative"
778
+ } : {
779
+ name: "6dj265-DeploymentTracker",
780
+ styles: "position:relative;label:DeploymentTracker;",
781
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlcGxveW1lbnQtdHJhY2tlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUljIiwiZmlsZSI6ImRlcGxveW1lbnQtdHJhY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCB7XG4gIEluZm9EaWFsb2csXG4gIHVzZU1vZGFsU3RhdGUsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBBcHBsaWNhdGlvbldpbmRvdyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDb25zdHJhaW50cyxcbiAgU2Vjb25kYXJ5QnV0dG9uLFxuICBTcGFjaW5ncyxcbiAgU3RhbXAsXG4gIFRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCc7XG5pbXBvcnQgRGl2aWRlciBmcm9tICcuLi9kaXZpZGVyJztcbmltcG9ydCB7IExPQ0FMX0VOViB9IGZyb20gJy4uL2Vudmlyb25tZW50LXN3aXRjaGVyL2NvbnN0YW50cyc7XG5cbmRlY2xhcmUgbGV0IHdpbmRvdzogQXBwbGljYXRpb25XaW5kb3c7XG50eXBlIFRWZXJzaW9uID0gQXJyYXk8e1xuICBhcHA6IHN0cmluZztcbiAgYnVpbGQ6IHtcbiAgICBkZXBsb3llZEF0OiBzdHJpbmc7XG4gIH07XG59PjtcblxuZnVuY3Rpb24gZ2V0RHVyYXRpb25CZXR3ZWVuKFxuICB0eXBlOiAnbWludXRlcycgfCAnaG91cnMnIHwgJ2RheXMnLFxuICBkZXBsb3llZEF0OiBzdHJpbmdcbikge1xuICBjb25zdCBkZXBsb3llZERhdGUgPSBuZXcgRGF0ZShkZXBsb3llZEF0KTtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICBsZXQgdmFsdWU7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgdmFsdWUgPSA2MDAwMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgIHZhbHVlID0gMzYwMDAwMDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2RheXMnOlxuICAgIGRlZmF1bHQ6XG4gICAgICB2YWx1ZSA9IDguNjRlNztcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBNYXRoLnJvdW5kKE1hdGguYWJzKCtkZXBsb3llZERhdGUgLSArdG9kYXkpIC8gdmFsdWUpO1xufVxuXG5jb25zdCBEZXBsb3ltZW50VHJhY2tlciA9ICgpID0+IHtcbiAgY29uc3QgeyBpc01vZGFsT3Blbiwgb3Blbk1vZGFsLCBjbG9zZU1vZGFsIH0gPSB1c2VNb2RhbFN0YXRlKCk7XG4gIGNvbnN0IFt2ZXJzaW9ucywgc2V0VmVyc2lvbnNdID0gdXNlU3RhdGU8VFZlcnNpb24+KFtdKTtcbiAgY29uc3QgZ2V0Q3VycmVudEFwcGxpY2F0aW9uTmFtZSA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHsgZW50cnlQb2ludFVyaVBhdGggfSA9IHdpbmRvdy5hcHA7XG4gICAgc3dpdGNoIChlbnRyeVBvaW50VXJpUGF0aCkge1xuICAgICAgY2FzZSAnd2VsY29tZSc6XG4gICAgICAgIHJldHVybiAnZmFsbGJhY2snO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGVudHJ5UG9pbnRVcmlQYXRoO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY3VycmVudEFwcGxpY2F0aW9uID0gZ2V0Q3VycmVudEFwcGxpY2F0aW9uTmFtZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgICBpZiAoVVJMID09PSBMT0NBTF9FTlYudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtVUkx9L3ZlcnNpb25zYCwge1xuICAgICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCB2ZXJzaW9ucztcbiAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdmVyc2lvbnMgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgc2V0VmVyc2lvbnMoc29ydEJ5KHZlcnNpb25zLCAodmVyc2lvbikgPT4gdmVyc2lvbi5hcHApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRmV0Y2hpbmcgdGhlIHZlcnNpb25zIHJldHVybmVkIGEgJHtyZXNwb25zZS5zdGF0dXN9IEhUVFAgc3RhdHVzIGNvZGUuYDtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZldGNoRGF0YSgpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgZ2V0TGFzdFVwZGF0ZSA9IChcbiAgICBhcHBsaWNhdGlvbjogc3RyaW5nXG4gICk6IHsgdmFsdWU6IG51bWJlcjsgdGV4dDogc3RyaW5nIH0gPT4ge1xuICAgIGNvbnN0IGRlcGxveWVkQXQgPSB2ZXJzaW9ucy5maW5kKCh2ZXJzaW9uKSA9PiB2ZXJzaW9uLmFwcCA9PT0gYXBwbGljYXRpb24pXG4gICAgICA/LmJ1aWxkPy5kZXBsb3llZEF0O1xuXG4gICAgaWYgKCFkZXBsb3llZEF0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogMCwgdGV4dDogJy0tJyB9O1xuICAgIH1cblxuICAgIHZhciBkYXlzID0gZ2V0RHVyYXRpb25CZXR3ZWVuKCdkYXlzJywgZGVwbG95ZWRBdCk7XG4gICAgaWYgKGRheXMgPCAxKSB7XG4gICAgICB2YXIgaG91cnMgPSBnZXREdXJhdGlvbkJldHdlZW4oJ2hvdXJzJywgZGVwbG95ZWRBdCk7XG4gICAgICBpZiAoaG91cnMgPCAxKSB7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBnZXREdXJhdGlvbkJldHdlZW4oJ21pbnV0ZXMnLCBkZXBsb3llZEF0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogTnVtYmVyKG1pbnV0ZXMudG9GaXhlZCgwKSksXG4gICAgICAgICAgdGV4dDogYCR7bWludXRlcy50b0ZpeGVkKDApfSBtaW51dGVzIGFnb2AsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogTnVtYmVyKGhvdXJzLnRvRml4ZWQoMCkpLFxuICAgICAgICB0ZXh0OiBgJHtob3Vycy50b0ZpeGVkKDApfSBob3VycyBhZ29gLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBOdW1iZXIoZGF5cy50b0ZpeGVkKDApKSxcbiAgICAgIHRleHQ6IGAke2RheXMudG9GaXhlZCgwKX0gZGF5cyBhZ29gLFxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgZ2V0VG9uZSA9ICh7IHZhbHVlLCB0ZXh0IH06IHsgdmFsdWU6IG51bWJlcjsgdGV4dDogc3RyaW5nIH0pID0+IHtcbiAgICBpZiAodGV4dC5pbmNsdWRlcygnZGF5cycpKSB7XG4gICAgICBpZiAodmFsdWUgPj0gNSkgcmV0dXJuICdjcml0aWNhbCc7XG4gICAgICBpZiAodmFsdWUgPj0gMikgcmV0dXJuICd3YXJuaW5nJztcbiAgICB9XG4gICAgcmV0dXJuICdwcmltYXJ5JztcbiAgfTtcblxuICBpZiAoIXZlcnNpb25zPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBgfVxuICAgID5cbiAgICAgIDxTdGFtcCB0b25lPXtnZXRUb25lKGdldExhc3RVcGRhdGUoY3VycmVudEFwcGxpY2F0aW9uKSl9PlxuICAgICAgICBMYXN0IGRlcGxveWVkOiB7Z2V0TGFzdFVwZGF0ZShjdXJyZW50QXBwbGljYXRpb24pLnRleHR9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxTZWNvbmRhcnlCdXR0b24gbGFiZWw9XCJcIiBvbkNsaWNrPXtvcGVuTW9kYWx9IHNpemU9XCJtZWRpdW1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvU3RhbXA+XG4gICAgICA8SW5mb0RpYWxvZ1xuICAgICAgICBpc09wZW49e2lzTW9kYWxPcGVufVxuICAgICAgICB0aXRsZT17J0FwcCBEZXBsb3ltZW50IGluZm9ybWF0aW9uJ31cbiAgICAgICAgb25DbG9zZT17Y2xvc2VNb2RhbH1cbiAgICAgID5cbiAgICAgICAgPFNwYWNpbmdzLlN0YWNrPlxuICAgICAgICAgIHt2ZXJzaW9ucy5tYXAoKHZlcnNpb24pID0+IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxTcGFjaW5ncy5JbmxpbmUga2V5PXt2ZXJzaW9uLmFwcH0ganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPENvbnN0cmFpbnRzLkhvcml6b250YWwgbWF4PXs2fT5cbiAgICAgICAgICAgICAgICAgIDxUZXh0LkJvZHk+e3ZlcnNpb24uYXBwfTwvVGV4dC5Cb2R5PlxuICAgICAgICAgICAgICAgIDwvQ29uc3RyYWludHMuSG9yaXpvbnRhbD5cbiAgICAgICAgICAgICAgICA8U3RhbXAgdG9uZT17Z2V0VG9uZShnZXRMYXN0VXBkYXRlKHZlcnNpb24uYXBwKSl9PlxuICAgICAgICAgICAgICAgICAge2dldExhc3RVcGRhdGUodmVyc2lvbi5hcHApLnRleHR9XG4gICAgICAgICAgICAgICAgPC9TdGFtcD5cbiAgICAgICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TcGFjaW5ncy5TdGFjaz5cbiAgICAgIDwvSW5mb0RpYWxvZz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlcGxveW1lbnRUcmFja2VyO1xuIl19 */",
782
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
783
+ };
784
+ const DeploymentTracker = () => {
785
+ const _useModalState = useModalState(),
786
+ isModalOpen = _useModalState.isModalOpen,
787
+ openModal = _useModalState.openModal,
788
+ closeModal = _useModalState.closeModal;
789
+ const _useState = useState([]),
790
+ _useState2 = _slicedToArray(_useState, 2),
791
+ versions = _useState2[0],
792
+ setVersions = _useState2[1];
793
+ const getCurrentApplicationName = () => {
794
+ const entryPointUriPath = window.app.entryPointUriPath;
795
+ switch (entryPointUriPath) {
796
+ case 'welcome':
797
+ return 'fallback';
798
+ default:
799
+ return entryPointUriPath;
800
+ }
801
+ };
802
+ const currentApplication = getCurrentApplicationName();
803
+ useEffect(() => {
804
+ const abortController = new AbortController();
805
+ const fetchData = async () => {
806
+ let URL = window.location.origin;
807
+ if (URL === LOCAL_ENV.value) {
808
+ return;
809
+ }
810
+ try {
811
+ const response = await fetch("".concat(URL, "/versions"), {
812
+ signal: abortController.signal
813
+ });
814
+ let versions;
815
+ if (response.ok) {
816
+ versions = await response.json();
817
+ setVersions(sortBy(versions, version => version.app));
818
+ } else {
819
+ const errorMessage = "Fetching the versions returned a ".concat(response.status, " HTTP status code.");
820
+ // eslint-disable-next-line no-console
821
+ console.error(errorMessage);
822
+ }
823
+ } catch (error) {
824
+ // eslint-disable-next-line no-console
825
+ console.error(error);
826
+ }
827
+ };
828
+ fetchData();
829
+ return () => {
830
+ abortController.abort();
831
+ };
832
+ }, []);
833
+ const getLastUpdate = application => {
834
+ var _versions$find;
835
+ const deployedAt = (_versions$find = _findInstanceProperty(versions).call(versions, version => version.app === application)) === null || _versions$find === void 0 || (_versions$find = _versions$find.build) === null || _versions$find === void 0 ? void 0 : _versions$find.deployedAt;
836
+ if (!deployedAt) {
837
+ return {
838
+ value: 0,
839
+ text: '--'
840
+ };
841
+ }
842
+ var days = getDurationBetween('days', deployedAt);
843
+ if (days < 1) {
844
+ var hours = getDurationBetween('hours', deployedAt);
845
+ if (hours < 1) {
846
+ const minutes = getDurationBetween('minutes', deployedAt);
847
+ return {
848
+ value: Number(minutes.toFixed(0)),
849
+ text: "".concat(minutes.toFixed(0), " minutes ago")
850
+ };
851
+ }
852
+ return {
853
+ value: Number(hours.toFixed(0)),
854
+ text: "".concat(hours.toFixed(0), " hours ago")
855
+ };
856
+ }
857
+ return {
858
+ value: Number(days.toFixed(0)),
859
+ text: "".concat(days.toFixed(0), " days ago")
860
+ };
861
+ };
862
+ const getTone = _ref3 => {
863
+ let value = _ref3.value,
864
+ text = _ref3.text;
865
+ if (_includesInstanceProperty(text).call(text, 'days')) {
866
+ if (value >= 5) return 'critical';
867
+ if (value >= 2) return 'warning';
868
+ }
869
+ return 'primary';
870
+ };
871
+ if (!(versions !== null && versions !== void 0 && versions.length)) return null;
872
+ return jsxs("div", {
873
+ css: _ref2$1,
874
+ children: [jsxs(Stamp, {
875
+ tone: getTone(getLastUpdate(currentApplication)),
876
+ children: ["Last deployed: ", getLastUpdate(currentApplication).text, jsx("div", {
877
+ css: _ref$2,
878
+ children: jsx(SecondaryButton, {
879
+ label: "",
880
+ onClick: openModal,
881
+ size: "medium"
882
+ })
883
+ })]
884
+ }), jsx(InfoDialog, {
885
+ isOpen: isModalOpen,
886
+ title: 'App Deployment information',
887
+ onClose: closeModal,
888
+ children: jsx(Spacings.Stack, {
889
+ children: _mapInstanceProperty(versions).call(versions, version => jsxs(Fragment, {
890
+ children: [jsxs(Spacings.Inline, {
891
+ justifyContent: "space-between",
892
+ children: [jsx(Constraints.Horizontal, {
893
+ max: 6,
894
+ children: jsx(Text.Body, {
895
+ children: version.app
896
+ })
897
+ }), jsx(Stamp, {
898
+ tone: getTone(getLastUpdate(version.app)),
899
+ children: getLastUpdate(version.app).text
900
+ })]
901
+ }, version.app), jsx(Divider, {})]
902
+ }))
903
+ })
904
+ })]
905
+ });
906
+ };
907
+
908
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
909
+ var _ref$1 = process.env.NODE_ENV === "production" ? {
910
+ name: "tkfx1x",
911
+ styles: ">button{margin-right:27px!important;}"
912
+ } : {
913
+ name: "9bxmbw-StaffBarInfo",
914
+ styles: ">button{margin-right:27px!important;};label:StaffBarInfo;",
915
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YWZmLWJhci1pbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQmMiLCJmaWxlIjoic3RhZmYtYmFyLWluZm8udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHtcbiAgSW5mb0RpYWxvZyxcbiAgdXNlTW9kYWxTdGF0ZSxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBJY29uQnV0dG9uLFxuICBJbmZvcm1hdGlvbkljb24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCc7XG5cbmZ1bmN0aW9uIFN0YWZmQmFySW5mbygpIHtcbiAgY29uc3QgaW5mb01vZGFsU3RhdGUgPSB1c2VNb2RhbFN0YXRlKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgPiBidXR0b24ge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMjdweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICBgfVxuICAgID5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICBsYWJlbD1cIlwiXG4gICAgICAgIGljb249ezxJbmZvcm1hdGlvbkljb24gLz59XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBpbmZvTW9kYWxTdGF0ZS5vcGVuTW9kYWwoKTtcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICA8SW5mb0RpYWxvZ1xuICAgICAgICBpc09wZW49e2luZm9Nb2RhbFN0YXRlLmlzTW9kYWxPcGVufVxuICAgICAgICB0aXRsZT17J0Fib3V0IHRoZSBTdGFmZiBiYXInfVxuICAgICAgICBvbkNsb3NlPXtpbmZvTW9kYWxTdGF0ZS5jbG9zZU1vZGFsfVxuICAgICAgICBnZXRQYXJlbnRTZWxlY3Rvcj17KCkgPT4gZG9jdW1lbnQuYm9keX1cbiAgICAgICAgekluZGV4PXszMDAwMH1cbiAgICAgICAgc2l6ZT17MTJ9XG4gICAgICA+XG4gICAgICAgIDxUZXh0LkRldGFpbD5cbiAgICAgICAgICBTdGFmZiBiYXIgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgYXZhaWxhYmxlIG9ubHkgdG8gY29tbWVyY2V0b29sc1xuICAgICAgICAgIGVtcGxveWVlcy4gSXQgYWxsb3dzIHRvIHF1aWNrbHkgc3dpdGNoIGVudmlyb25tZW50LCB0b2dnbGUgZGlmZmVyZW50XG4gICAgICAgICAgZmVhdHVyZSBmbGFncyBhbmQgb3RoZXIgdXNlZnVsIGFjdGlvbnMuIFRoaXMgZmVhdHVyZSBpcyBub3QgdmlzaWJsZSB0b1xuICAgICAgICAgIGVuZCBjdXN0b21lcnMgbm9yIHBhcnRuZXJzLlxuICAgICAgICA8L1RleHQuRGV0YWlsPlxuICAgICAgPC9JbmZvRGlhbG9nPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTdGFmZkJhckluZm87XG4iXX0= */",
916
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
917
+ };
918
+ function StaffBarInfo() {
919
+ const infoModalState = useModalState();
920
+ return jsxs("div", {
921
+ css: _ref$1,
922
+ children: [jsx(IconButton, {
923
+ size: "medium",
924
+ label: "",
925
+ icon: jsx(InformationIcon, {}),
926
+ onClick: () => {
927
+ infoModalState.openModal();
928
+ }
929
+ }), jsx(InfoDialog, {
930
+ isOpen: infoModalState.isModalOpen,
931
+ title: 'About the Staff bar',
932
+ onClose: infoModalState.closeModal,
933
+ getParentSelector: () => document.body,
934
+ zIndex: 30000,
935
+ size: 12,
936
+ children: jsx(Text.Detail, {
937
+ children: "Staff bar is an experimental feature available only to commercetools employees. It allows to quickly switch environment, toggle different feature flags and other useful actions. This feature is not visible to end customers nor partners."
938
+ })
939
+ })]
940
+ });
941
+ }
942
+
943
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
944
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
945
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
946
+ var _ref = process.env.NODE_ENV === "production" ? {
947
+ name: "16u25pc",
948
+ styles: "position:absolute;height:24px;width:56px;background:var(--color-accent-10);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.25);border-radius:0px 0px 4px 4px;left:calc(50% - 23px);bottom:-23px;cursor:pointer;z-index:30000;display:flex;align-items:center;justify-content:center;:hover{background:var(--color-accent-20);}"
949
+ } : {
950
+ name: "y4jgqz-container",
951
+ styles: "position:absolute;height:24px;width:56px;background:var(--color-accent-10);box-shadow:0px 1px 2px rgba(0, 0, 0, 0.25);border-radius:0px 0px 4px 4px;left:calc(50% - 23px);bottom:-23px;cursor:pointer;z-index:30000;display:flex;align-items:center;justify-content:center;:hover{background:var(--color-accent-20);};label:container;",
952
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YWZmLWJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcURrQiIsImZpbGUiOiJzdGFmZi1iYXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IE1hcmtpbmcgYXMgRnVsbFN0b3J5TWFya2luZyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2Z1bGxzdG9yeSc7XG5pbXBvcnQge1xuICBBbmdsZURvd25JY29uLFxuICBBbmdsZVVwSWNvbixcbiAgU3BhY2luZ3MsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCc7XG5pbXBvcnQge1xuICBFbnZpcm9ubWVudFN3aXRjaGVyLFxuICBGZWF0dXJlRmxhZ1RvZ2dsZXIsXG4gIEdpdGh1YlB1bGxSZXF1ZXN0TGluayxcbiAgTG9nRW5hYmxlcixcbiAgVGVhbVN3aXRjaGVyLFxuICBEZXBsb3ltZW50VHJhY2tlcixcbiAgU3RhZmZCYXJJbmZvLFxufSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSVNfU1RBRkZCQVJfT1BFTiB9IGZyb20gJy4vY29tcG9uZW50cy9lbnZpcm9ubWVudC1zd2l0Y2hlci9jb25zdGFudHMnO1xuaW1wb3J0IHVzZVN0YWZmQmFyVXNlciBmcm9tICcuL2hvb2tzL3VzZS1zdGFmZi1iYXItdXNlcic7XG5pbXBvcnQgdHlwZSB7IFRTdGFmZkJhckNvbnRhaW5lclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBDeXByZXNzOiBhbnk7XG4gIH1cbn1cblxuZnVuY3Rpb24gU3RhZmZCYXIocHJvcHM6IFRTdGFmZkJhckNvbnRhaW5lclByb3BzKSB7XG4gIGNvbnN0IHsgaXNTdGFmZk1lbWJlciwgZXJyb3IgfSA9IHVzZVN0YWZmQmFyVXNlcigpO1xuXG4gIGNvbnN0IFtpc1N0YWZmQmFyT3Blbiwgc2V0SXNTdGFmZkJhck9wZW5dID0gdXNlU3RhdGUoXG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oSVNfU1RBRkZCQVJfT1BFTikgPT09ICd0cnVlJ1xuICApO1xuXG4gIGNvbnN0IGNvbnRhaW5lciA9IChcbiAgICA8ZGl2XG4gICAgICB7Li4uRnVsbFN0b3J5TWFya2luZy5hcHBseU1hcmtlcignU3RhZmYgQmFyJyl9XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYH1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGhlaWdodDogJHtpc1N0YWZmQmFyT3BlbiA/ICc1NnB4JyA6ICcwJ307XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC05NSk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDE1MG1zO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInN0YWZmYmFyLWhhbmRsZVwiXG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudC0xMCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA0cHggNHB4O1xuICAgICAgICAgICAgbGVmdDogY2FsYyg1MCUgLSAyM3B4KTtcbiAgICAgICAgICAgIGJvdHRvbTogLTIzcHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB6LWluZGV4OiAzMDAwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICA6aG92ZXIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1hY2NlbnQtMjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGB9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgICAgIElTX1NUQUZGQkFSX09QRU4sXG4gICAgICAgICAgICAgICghaXNTdGFmZkJhck9wZW4pLnRvU3RyaW5nKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzZXRJc1N0YWZmQmFyT3BlbighaXNTdGFmZkJhck9wZW4pO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7aXNTdGFmZkJhck9wZW4gPyAoXG4gICAgICAgICAgICA8QW5nbGVVcEljb24gY29sb3I9XCJzdXJmYWNlXCIgc2l6ZT1cIm1lZGl1bVwiIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxBbmdsZURvd25JY29uIGNvbG9yPVwic3VyZmFjZVwiIHNpemU9XCJtZWRpdW1cIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8U3BhY2luZ3MuSW5zZXRTcXVpc2ggc2NhbGU9XCJtXCI+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZSBqdXN0aWZ5Q29udGVudD1cInNwYWNlLWJldHdlZW5cIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibFwiPlxuICAgICAgICAgICAgICA8R2l0aHViUHVsbFJlcXVlc3RMaW5rIC8+XG4gICAgICAgICAgICAgIDxGZWF0dXJlRmxhZ1RvZ2dsZXIgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9IC8+XG4gICAgICAgICAgICAgIDxFbnZpcm9ubWVudFN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgIDxUZWFtU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgey8qIG90aGVyIHRvb2xzIGdvZXMgaGVyZSAqL31cbiAgICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgPFNwYWNpbmdzLklubGluZSBzY2FsZT1cImxcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxEZXBsb3ltZW50VHJhY2tlciAvPlxuICAgICAgICAgICAgICA8TG9nRW5hYmxlciAvPlxuICAgICAgICAgICAgICA8U3RhZmZCYXJJbmZvIC8+XG4gICAgICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgICAgPC9TcGFjaW5ncy5JbnNldFNxdWlzaD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xuXG4gIGNvbnN0IHBvcnRhbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhYm92ZS10b3AtbmF2aWdhdGlvbicpO1xuXG4gIGlmIChlcnJvciB8fCAhaXNTdGFmZk1lbWJlciB8fCAhcG9ydGFsQ29udGFpbmVyKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChjb250YWluZXIsIHBvcnRhbENvbnRhaW5lcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0YWZmQmFyO1xuIl19 */",
953
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
954
+ };
955
+ var _ref2 = process.env.NODE_ENV === "production" ? {
956
+ name: "bjn8wh",
957
+ styles: "position:relative"
958
+ } : {
959
+ name: "p4e9kp-container",
960
+ styles: "position:relative;label:container;",
961
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YWZmLWJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUNjIiwiZmlsZSI6InN0YWZmLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgTWFya2luZyBhcyBGdWxsU3RvcnlNYXJraW5nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvZnVsbHN0b3J5JztcbmltcG9ydCB7XG4gIEFuZ2xlRG93bkljb24sXG4gIEFuZ2xlVXBJY29uLFxuICBTcGFjaW5ncyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvdWkta2l0JztcbmltcG9ydCB7XG4gIEVudmlyb25tZW50U3dpdGNoZXIsXG4gIEZlYXR1cmVGbGFnVG9nZ2xlcixcbiAgR2l0aHViUHVsbFJlcXVlc3RMaW5rLFxuICBMb2dFbmFibGVyLFxuICBUZWFtU3dpdGNoZXIsXG4gIERlcGxveW1lbnRUcmFja2VyLFxuICBTdGFmZkJhckluZm8sXG59IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBJU19TVEFGRkJBUl9PUEVOIH0gZnJvbSAnLi9jb21wb25lbnRzL2Vudmlyb25tZW50LXN3aXRjaGVyL2NvbnN0YW50cyc7XG5pbXBvcnQgdXNlU3RhZmZCYXJVc2VyIGZyb20gJy4vaG9va3MvdXNlLXN0YWZmLWJhci11c2VyJztcbmltcG9ydCB0eXBlIHsgVFN0YWZmQmFyQ29udGFpbmVyUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEN5cHJlc3M6IGFueTtcbiAgfVxufVxuXG5mdW5jdGlvbiBTdGFmZkJhcihwcm9wczogVFN0YWZmQmFyQ29udGFpbmVyUHJvcHMpIHtcbiAgY29uc3QgeyBpc1N0YWZmTWVtYmVyLCBlcnJvciB9ID0gdXNlU3RhZmZCYXJVc2VyKCk7XG5cbiAgY29uc3QgW2lzU3RhZmZCYXJPcGVuLCBzZXRJc1N0YWZmQmFyT3Blbl0gPSB1c2VTdGF0ZShcbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShJU19TVEFGRkJBUl9PUEVOKSA9PT0gJ3RydWUnXG4gICk7XG5cbiAgY29uc3QgY29udGFpbmVyID0gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5GdWxsU3RvcnlNYXJraW5nLmFwcGx5TWFya2VyKCdTdGFmZiBCYXInKX1cbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBgfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgaGVpZ2h0OiAke2lzU3RhZmZCYXJPcGVuID8gJzU2cHgnIDogJzAnfTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1uZXV0cmFsLTk1KTtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMTUwbXM7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwic3RhZmZiYXItaGFuZGxlXCJcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYWNjZW50LTEwKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwcHggMHB4IDRweCA0cHg7XG4gICAgICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDIzcHgpO1xuICAgICAgICAgICAgYm90dG9tOiAtMjNweDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHotaW5kZXg6IDMwMDAwO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIDpob3ZlciB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudC0yMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgICAgSVNfU1RBRkZCQVJfT1BFTixcbiAgICAgICAgICAgICAgKCFpc1N0YWZmQmFyT3BlbikudG9TdHJpbmcoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNldElzU3RhZmZCYXJPcGVuKCFpc1N0YWZmQmFyT3Blbik7XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc1N0YWZmQmFyT3BlbiA/IChcbiAgICAgICAgICAgIDxBbmdsZVVwSWNvbiBjb2xvcj1cInN1cmZhY2VcIiBzaXplPVwibWVkaXVtXCIgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gY29sb3I9XCJzdXJmYWNlXCIgc2l6ZT1cIm1lZGl1bVwiIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxTcGFjaW5ncy5JbnNldFNxdWlzaCBzY2FsZT1cIm1cIj5cbiAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJsXCI+XG4gICAgICAgICAgICAgIDxHaXRodWJQdWxsUmVxdWVzdExpbmsgLz5cbiAgICAgICAgICAgICAgPEZlYXR1cmVGbGFnVG9nZ2xlciBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc30gLz5cbiAgICAgICAgICAgICAgPEVudmlyb25tZW50U3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgPFRlYW1Td2l0Y2hlciAvPlxuICAgICAgICAgICAgICB7Lyogb3RoZXIgdG9vbHMgZ29lcyBoZXJlICovfVxuICAgICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgPERlcGxveW1lbnRUcmFja2VyIC8+XG4gICAgICAgICAgICAgIDxMb2dFbmFibGVyIC8+XG4gICAgICAgICAgICAgIDxTdGFmZkJhckluZm8gLz5cbiAgICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLkluc2V0U3F1aXNoPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgY29uc3QgcG9ydGFsQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fib3ZlLXRvcC1uYXZpZ2F0aW9uJyk7XG5cbiAgaWYgKGVycm9yIHx8ICFpc1N0YWZmTWVtYmVyIHx8ICFwb3J0YWxDb250YWluZXIpIHJldHVybiBudWxsO1xuICByZXR1cm4gUmVhY3RET00uY3JlYXRlUG9ydGFsKGNvbnRhaW5lciwgcG9ydGFsQ29udGFpbmVyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU3RhZmZCYXI7XG4iXX0= */",
962
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
963
+ };
964
+ function StaffBar(props) {
965
+ const _useStaffBarUser = useStaffBarUser(),
966
+ isStaffMember = _useStaffBarUser.isStaffMember,
967
+ error = _useStaffBarUser.error;
968
+ const _useState = useState(localStorage.getItem(IS_STAFFBAR_OPEN) === 'true'),
969
+ _useState2 = _slicedToArray(_useState, 2),
970
+ isStaffBarOpen = _useState2[0],
971
+ setIsStaffBarOpen = _useState2[1];
972
+ const container = jsx("div", _objectSpread(_objectSpread({}, Marking.applyMarker('Staff Bar')), {}, {
973
+ css: _ref2,
974
+ children: jsxs("div", {
975
+ css: /*#__PURE__*/css("height:", isStaffBarOpen ? '56px' : '0', ";background:var(--color-neutral-95);transition:height 150ms;overflow:hidden;" + (process.env.NODE_ENV === "production" ? "" : ";label:container;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YWZmLWJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNENnQiIsImZpbGUiOiJzdGFmZi1iYXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IE1hcmtpbmcgYXMgRnVsbFN0b3J5TWFya2luZyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2Z1bGxzdG9yeSc7XG5pbXBvcnQge1xuICBBbmdsZURvd25JY29uLFxuICBBbmdsZVVwSWNvbixcbiAgU3BhY2luZ3MsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCc7XG5pbXBvcnQge1xuICBFbnZpcm9ubWVudFN3aXRjaGVyLFxuICBGZWF0dXJlRmxhZ1RvZ2dsZXIsXG4gIEdpdGh1YlB1bGxSZXF1ZXN0TGluayxcbiAgTG9nRW5hYmxlcixcbiAgVGVhbVN3aXRjaGVyLFxuICBEZXBsb3ltZW50VHJhY2tlcixcbiAgU3RhZmZCYXJJbmZvLFxufSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgSVNfU1RBRkZCQVJfT1BFTiB9IGZyb20gJy4vY29tcG9uZW50cy9lbnZpcm9ubWVudC1zd2l0Y2hlci9jb25zdGFudHMnO1xuaW1wb3J0IHVzZVN0YWZmQmFyVXNlciBmcm9tICcuL2hvb2tzL3VzZS1zdGFmZi1iYXItdXNlcic7XG5pbXBvcnQgdHlwZSB7IFRTdGFmZkJhckNvbnRhaW5lclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBDeXByZXNzOiBhbnk7XG4gIH1cbn1cblxuZnVuY3Rpb24gU3RhZmZCYXIocHJvcHM6IFRTdGFmZkJhckNvbnRhaW5lclByb3BzKSB7XG4gIGNvbnN0IHsgaXNTdGFmZk1lbWJlciwgZXJyb3IgfSA9IHVzZVN0YWZmQmFyVXNlcigpO1xuXG4gIGNvbnN0IFtpc1N0YWZmQmFyT3Blbiwgc2V0SXNTdGFmZkJhck9wZW5dID0gdXNlU3RhdGUoXG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oSVNfU1RBRkZCQVJfT1BFTikgPT09ICd0cnVlJ1xuICApO1xuXG4gIGNvbnN0IGNvbnRhaW5lciA9IChcbiAgICA8ZGl2XG4gICAgICB7Li4uRnVsbFN0b3J5TWFya2luZy5hcHBseU1hcmtlcignU3RhZmYgQmFyJyl9XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYH1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGhlaWdodDogJHtpc1N0YWZmQmFyT3BlbiA/ICc1NnB4JyA6ICcwJ307XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItbmV1dHJhbC05NSk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDE1MG1zO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cInN0YWZmYmFyLWhhbmRsZVwiXG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudC0xMCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA0cHggNHB4O1xuICAgICAgICAgICAgbGVmdDogY2FsYyg1MCUgLSAyM3B4KTtcbiAgICAgICAgICAgIGJvdHRvbTogLTIzcHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB6LWluZGV4OiAzMDAwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICA6aG92ZXIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1hY2NlbnQtMjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGB9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgICAgIElTX1NUQUZGQkFSX09QRU4sXG4gICAgICAgICAgICAgICghaXNTdGFmZkJhck9wZW4pLnRvU3RyaW5nKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzZXRJc1N0YWZmQmFyT3BlbighaXNTdGFmZkJhck9wZW4pO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7aXNTdGFmZkJhck9wZW4gPyAoXG4gICAgICAgICAgICA8QW5nbGVVcEljb24gY29sb3I9XCJzdXJmYWNlXCIgc2l6ZT1cIm1lZGl1bVwiIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxBbmdsZURvd25JY29uIGNvbG9yPVwic3VyZmFjZVwiIHNpemU9XCJtZWRpdW1cIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8U3BhY2luZ3MuSW5zZXRTcXVpc2ggc2NhbGU9XCJtXCI+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZSBqdXN0aWZ5Q29udGVudD1cInNwYWNlLWJldHdlZW5cIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibFwiPlxuICAgICAgICAgICAgICA8R2l0aHViUHVsbFJlcXVlc3RMaW5rIC8+XG4gICAgICAgICAgICAgIDxGZWF0dXJlRmxhZ1RvZ2dsZXIgZmVhdHVyZUZsYWdzPXtwcm9wcy5mZWF0dXJlRmxhZ3N9IC8+XG4gICAgICAgICAgICAgIDxFbnZpcm9ubWVudFN3aXRjaGVyIC8+XG4gICAgICAgICAgICAgIDxUZWFtU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgey8qIG90aGVyIHRvb2xzIGdvZXMgaGVyZSAqL31cbiAgICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgPFNwYWNpbmdzLklubGluZSBzY2FsZT1cImxcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxEZXBsb3ltZW50VHJhY2tlciAvPlxuICAgICAgICAgICAgICA8TG9nRW5hYmxlciAvPlxuICAgICAgICAgICAgICA8U3RhZmZCYXJJbmZvIC8+XG4gICAgICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgICAgPC9TcGFjaW5ncy5JbnNldFNxdWlzaD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xuXG4gIGNvbnN0IHBvcnRhbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhYm92ZS10b3AtbmF2aWdhdGlvbicpO1xuXG4gIGlmIChlcnJvciB8fCAhaXNTdGFmZk1lbWJlciB8fCAhcG9ydGFsQ29udGFpbmVyKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChjb250YWluZXIsIHBvcnRhbENvbnRhaW5lcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0YWZmQmFyO1xuIl19 */"),
976
+ children: [jsx("div", {
977
+ "data-testid": "staffbar-handle",
978
+ css: _ref,
979
+ onClick: () => {
980
+ localStorage.setItem(IS_STAFFBAR_OPEN, (!isStaffBarOpen).toString());
981
+ setIsStaffBarOpen(!isStaffBarOpen);
982
+ },
983
+ children: isStaffBarOpen ? jsx(AngleUpIcon, {
984
+ color: "surface",
985
+ size: "medium"
986
+ }) : jsx(AngleDownIcon, {
987
+ color: "surface",
988
+ size: "medium"
989
+ })
990
+ }), jsx(Spacings.InsetSquish, {
991
+ scale: "m",
992
+ children: jsxs(Spacings.Inline, {
993
+ justifyContent: "space-between",
994
+ alignItems: "center",
995
+ children: [jsxs(Spacings.Inline, {
996
+ scale: "l",
997
+ children: [jsx(GitHubPullRequestLink, {}), jsx(FeatureFlagToggler, {
998
+ featureFlags: props.featureFlags
999
+ }), jsx(EnvironmentSwitcher, {}), jsx(TeamSwitcher, {})]
1000
+ }), jsxs(Spacings.Inline, {
1001
+ scale: "l",
1002
+ alignItems: "center",
1003
+ children: [jsx(DeploymentTracker, {}), jsx(LogEnabler, {}), jsx(StaffBarInfo, {})]
1004
+ })]
1005
+ })
1006
+ })]
1007
+ })
1008
+ }));
1009
+ const portalContainer = document.getElementById('above-top-navigation');
1010
+ if (error || !isStaffMember || !portalContainer) return null;
1011
+ return /*#__PURE__*/ReactDOM.createPortal(container, portalContainer);
1012
+ }
1013
+
1014
+ export { StaffBar as default };