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