@copart/ops-tool-kit 1.13.0-beta.17 → 1.13.0-beta.19

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.
@@ -49,7 +49,7 @@ var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
49
49
  var ReactRouterDOM__namespace = /*#__PURE__*/_interopNamespace(ReactRouterDOM);
50
50
 
51
51
  const name$1 = "@copart/ops-tool-kit";
52
- const version$3 = "1.13.0-beta.17";
52
+ const version$3 = "1.13.0-beta.19";
53
53
  const main$1 = "dist/ops-tool-kit.js";
54
54
  const style = "dist/ops-tool-kit.css";
55
55
  const files = [
@@ -202,25 +202,6 @@ var setup = (function (_ref) {
202
202
  warn: devLog('warn')
203
203
  };
204
204
  }();
205
- global.setUpInstana = function () {
206
- var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
207
- var isCoreApp = arguments.length > 1 ? arguments[1] : undefined;
208
- //devOnly.log('Instana setting up.')
209
- if (key && !(process.env.NODE_ENV !== "production") && isCoreApp) {
210
- (function (i, s, o, g, r, a, m) {
211
- i['InstanaEumObject'] = r;
212
- i[r] = i[r] || function () {
213
- (i[r].q = i[r].q || []).push(arguments);
214
- }, i[r].l = 1 * new Date();
215
- a = s.createElement(o), m = s.getElementsByTagName(o)[0];
216
- a.async = 1;
217
- a.src = g;
218
- m.parentNode.insertBefore(a, m);
219
- })(window, document, 'script', '//eum.instana.io/eum.min.js', 'ineum');
220
- ineum('reportingUrl', 'https://eum-us-west-2.instana.io');
221
- ineum('apiKey', key);
222
- }
223
- };
224
205
  });
225
206
 
226
207
  function styleInject(css, ref) {
@@ -311,6 +292,54 @@ function _createClass$2(e, r, t) {
311
292
  writable: !1
312
293
  }), e;
313
294
  }
295
+ function _createForOfIteratorHelper(r, e) {
296
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
297
+ if (!t) {
298
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
299
+ t && (r = t);
300
+ var n = 0,
301
+ F = function () {};
302
+ return {
303
+ s: F,
304
+ n: function () {
305
+ return n >= r.length ? {
306
+ done: !0
307
+ } : {
308
+ done: !1,
309
+ value: r[n++]
310
+ };
311
+ },
312
+ e: function (r) {
313
+ throw r;
314
+ },
315
+ f: F
316
+ };
317
+ }
318
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
319
+ }
320
+ var o,
321
+ a = !0,
322
+ u = !1;
323
+ return {
324
+ s: function () {
325
+ t = t.call(r);
326
+ },
327
+ n: function () {
328
+ var r = t.next();
329
+ return a = r.done, r;
330
+ },
331
+ e: function (r) {
332
+ u = !0, o = r;
333
+ },
334
+ f: function () {
335
+ try {
336
+ a || null == t.return || t.return();
337
+ } finally {
338
+ if (u) throw o;
339
+ }
340
+ }
341
+ };
342
+ }
314
343
  function _defineProperty$2(e, r, t) {
315
344
  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
316
345
  value: t,
@@ -7094,38 +7123,6 @@ var values$1 = /*#__PURE__*/_curry1(function values(obj) {
7094
7123
  });
7095
7124
  var values$2 = values$1;
7096
7125
 
7097
- /**
7098
- * Makes an ascending comparator function out of a function that returns a value
7099
- * that can be compared with `<` and `>`.
7100
- *
7101
- * @func
7102
- * @memberOf R
7103
- * @since v0.23.0
7104
- * @category Function
7105
- * @sig Ord b => (a -> b) -> a -> a -> Number
7106
- * @param {Function} fn A function of arity one that returns a value that can be compared
7107
- * @param {*} a The first item to be compared.
7108
- * @param {*} b The second item to be compared.
7109
- * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0`
7110
- * @see R.descend
7111
- * @example
7112
- *
7113
- * const byAge = R.ascend(R.prop('age'));
7114
- * const people = [
7115
- * { name: 'Emma', age: 70 },
7116
- * { name: 'Peter', age: 78 },
7117
- * { name: 'Mikhail', age: 62 },
7118
- * ];
7119
- * const peopleByYoungestFirst = R.sort(byAge, people);
7120
- * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]
7121
- */
7122
- var ascend = /*#__PURE__*/_curry3(function ascend(fn, a, b) {
7123
- var aa = fn(a);
7124
- var bb = fn(b);
7125
- return aa < bb ? -1 : aa > bb ? 1 : 0;
7126
- });
7127
- var ascend$1 = ascend;
7128
-
7129
7126
  /**
7130
7127
  * Checks if the input value is `null` or `undefined`.
7131
7128
  *
@@ -8914,51 +8911,6 @@ var sort = /*#__PURE__*/_curry2(function sort(comparator, list) {
8914
8911
  });
8915
8912
  var sort$1 = sort;
8916
8913
 
8917
- /**
8918
- * Sorts a list according to a list of comparators.
8919
- *
8920
- * @func
8921
- * @memberOf R
8922
- * @since v0.23.0
8923
- * @category Relation
8924
- * @sig [(a, a) -> Number] -> [a] -> [a]
8925
- * @param {Array} functions A list of comparator functions.
8926
- * @param {Array} list The list to sort.
8927
- * @return {Array} A new list sorted according to the comarator functions.
8928
- * @example
8929
- *
8930
- * const alice = {
8931
- * name: 'alice',
8932
- * age: 40
8933
- * };
8934
- * const bob = {
8935
- * name: 'bob',
8936
- * age: 30
8937
- * };
8938
- * const clara = {
8939
- * name: 'clara',
8940
- * age: 40
8941
- * };
8942
- * const people = [clara, bob, alice];
8943
- * const ageNameSort = R.sortWith([
8944
- * R.descend(R.prop('age')),
8945
- * R.ascend(R.prop('name'))
8946
- * ]);
8947
- * ageNameSort(people); //=> [alice, clara, bob]
8948
- */
8949
- var sortWith = /*#__PURE__*/_curry2(function sortWith(fns, list) {
8950
- return Array.prototype.slice.call(list, 0).sort(function (a, b) {
8951
- var result = 0;
8952
- var i = 0;
8953
- while (result === 0 && i < fns.length) {
8954
- result = fns[i](a, b);
8955
- i += 1;
8956
- }
8957
- return result;
8958
- });
8959
- });
8960
- var sortWith$1 = sortWith;
8961
-
8962
8914
  /**
8963
8915
  * Checks if a list starts with the provided sublist.
8964
8916
  *
@@ -9311,22 +9263,15 @@ var isChrome = function isChrome() {
9311
9263
  };
9312
9264
  var isUserStatusHidden = function isUserStatusHidden() {
9313
9265
  var _window$toolkitEnv, _storage$coreConfig2, _storage$coreConfig3;
9314
- var isCoreApp = (_window$toolkitEnv = window.toolkitEnv) !== null && _window$toolkitEnv !== void 0 && _window$toolkitEnv.IS_CORE_APP ? window.toolkitEnv.IS_CORE_APP : process.env.IS_CORE_APP;
9266
+ var isEmbeddedRoute = window.location.pathname.includes('embedded');
9267
+ var isCoreApp = isEmbeddedRoute ? false : (_window$toolkitEnv = window.toolkitEnv) !== null && _window$toolkitEnv !== void 0 && _window$toolkitEnv.IS_CORE_APP ? window.toolkitEnv.IS_CORE_APP : process.env.IS_CORE_APP;
9315
9268
  if (isCoreApp) {
9316
9269
  var _storage$coreConfig;
9317
9270
  return ((_storage$coreConfig = storage$2.coreConfig) === null || _storage$coreConfig === void 0 ? void 0 : _storage$coreConfig.hideUserStatus) || false;
9318
9271
  }
9319
9272
  if ((_storage$coreConfig2 = storage$2.coreConfig) !== null && _storage$coreConfig2 !== void 0 && _storage$coreConfig2.checkUserStatusByApp) {
9320
- var _window$toolkitEnv2;
9321
- var appTiles = storage$2.getLocalItem('opsportal-core:config').tiles || [];
9322
- var appName = (_window$toolkitEnv2 = window.toolkitEnv) !== null && _window$toolkitEnv2 !== void 0 && _window$toolkitEnv2.APP_NAME ? window.toolkitEnv.APP_NAME : process.env.APP_NAME;
9323
- var appData = appTiles.find(function (tile) {
9324
- if (tile.appName) {
9325
- return tile.appName === appName;
9326
- } else {
9327
- return tile.path === "/".concat(appName);
9328
- }
9329
- });
9273
+ var coreAppConfig = storage$2.getLocalItem('opsportal-core:config') || {};
9274
+ var appData = findAppData(coreAppConfig.tiles || [], coreAppConfig.tileOverrides || []);
9330
9275
  return (appData === null || appData === void 0 ? void 0 : appData.showUserStatus) !== true;
9331
9276
  }
9332
9277
  return ((_storage$coreConfig3 = storage$2.coreConfig) === null || _storage$coreConfig3 === void 0 ? void 0 : _storage$coreConfig3.hideUserStatus) || false;
@@ -9359,8 +9304,10 @@ var ConfigFetcher = /*#__PURE__*/function (_React$Component) {
9359
9304
  _context.n = 1;
9360
9305
  break;
9361
9306
  }
9362
- return _context.a(2, _this.setState({
9363
- gotConfig: true
9307
+ return _context.a(2, _this.setState(function (state) {
9308
+ return {
9309
+ gotConfig: true
9310
+ };
9364
9311
  }));
9365
9312
  case 1:
9366
9313
  configUri = (_window$toolkitEnv2 = window.toolkitEnv) !== null && _window$toolkitEnv2 !== void 0 && _window$toolkitEnv2.CONFIG_URI ? window.toolkitEnv.CONFIG_URI : process.env.CONFIG_URI;
@@ -9376,11 +9323,10 @@ var ConfigFetcher = /*#__PURE__*/function (_React$Component) {
9376
9323
  return _context.a(2);
9377
9324
  case 3:
9378
9325
  storage$2.setItem('config', config);
9379
- if (config.instanaKey) {
9380
- window.setUpInstana(config.instanaKey, isCoreApp);
9381
- }
9382
- _this.setState({
9383
- gotConfig: true
9326
+ _this.setState(function (state) {
9327
+ return {
9328
+ gotConfig: true
9329
+ };
9384
9330
  });
9385
9331
  case 4:
9386
9332
  return _context.a(2);
@@ -21325,7 +21271,7 @@ FeedbackDialog.defaultProps = {
21325
21271
  }
21326
21272
  };
21327
21273
 
21328
- var css_248z$m = ".utilities_ops-app-frame_AppBarComponent_AppBar--root {\r\n background-color: var(--blue);\r\n background-color: var(--blue);\r\n height: 48px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n white-space: nowrap;\r\n /* padding-top: env(safe-area-inset-top, 0px); */\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--leftItems {\r\n width: 100%;\r\n display: flex;\r\n justify-content: start;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--appBarIcons {\r\n margin: 0 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--copartLogo {\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n margin-left: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--copartLogoNew {\r\n display: flex;\r\n margin: 3px 0 0 16px;\r\n grid-gap: 10px;\r\n gap: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--moduleName {\r\n color: white;\r\n font-size: 11px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items {\r\n color: white;\r\n cursor: pointer;\r\n font-size: 18px;\r\n display: flex;\r\n justify-content: center;\r\n margin: 8px !important;\r\n position: relative;\r\n width: 25px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--logout {\r\n margin-right: 24px !important;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items i {\r\n color: #fff;\r\n font-size: 20px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--lightBulbIcon i {\r\n color: #ffff00;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--language {\r\n width: auto;\r\n grid-gap: 4px;\r\n grid-gap: 5px;\r\n gap: 5px;\r\n display: flex;\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--yard {\r\n width: auto;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n background: #fff;\r\n color: #1D5AB9;\r\n font-weight: 600;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n grid-gap: 8px;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n padding: 2px 8px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--yard span i {\r\n color: #1D5AB9;\r\n font-size: 16px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--yard .utilities_ops-app-frame_AppBarComponent_AppBar--yardNumber {\r\n font-size: 14px;\r\n font-weight: 400;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid .utilities_ops-app-frame_AppBarComponent_AppBar--col {\r\n display: flex;\r\n color: white;\r\n font-size: 13px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid .utilities_ops-app-frame_AppBarComponent_AppBar--col svg {\r\n color: white;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--logo {\r\n width: 6rem;\r\n margin-top: 0rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--text {\r\n margin-top: 0.6rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--iconText {\r\n margin-top: 0.4rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchBar,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--placeholderDiv {\r\n margin-top: -0.2rem;\r\n margin-left: 2rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--appBarLeft > img.utilities_ops-app-frame_AppBarComponent_AppBar--logo {\r\n display: inline;\r\n display: initial;\r\n}\r\n\r\n@font-face {\r\n font-family: 'Open Sans';\r\n font-style: italic;\r\n font-weight: 600;\r\n src: url(https://fonts.gstatic.com/s/opensans/v18/memnYaGs126MiZpBA-UFUKXGUdhmIqOjjg.woff2)\r\n format('woff2');\r\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--appTitle {\r\n color: #fff;\r\n font-family: 'Open Sans', sans-serif;\r\n font-weight: 600;\r\n font-style: italic;\r\n font-size: 14px;\r\n position: relative;\r\n left: 16px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--item {\r\n display: flex;\r\n color: white;\r\n font-size: 13px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchIcon {\r\n /* margin-left: 10px;\r\n margin-right: 7px; */\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n background: #fff;\r\n color: #1D5AB9;\r\n font-weight: 600;\r\n border-radius: 4px;\r\n box-shadow: inset 0px -2px 0px rgba(0, 0, 0, 0.4), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13), 0px 0.3px 0.9px 0px rgba(0, 0, 0, 0.10);\r\n font-size: 14px;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n margin: 0 8px;\r\n padding: 6px 20px 7px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchIcon span {\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchIcon span i {\r\n font-size: 18px;\r\n color: #1D5AB9;\r\n}\r\n\r\n/* .searchIcon > div {\r\n margin-left: 7px;\r\n} */\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchWrapper i {\r\n color: #fff;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchWrapper span {\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault {\r\n color: white;\r\n cursor: default;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable {\r\n background-color: white;\r\n border-radius: 20px;\r\n margin: 5px;\r\n padding: 0px 10px;\r\n height: 25px;\r\n font-weight: bold;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--light {\r\n border: 1px solid #1d5ab9;\r\n justify-content: flex-start;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightDefault {\r\n color: black;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneOffline,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightAvailable {\r\n background-color: white;\r\n border-radius: 20px;\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightAvailable {\r\n color: green;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightAvailable i {\r\n color: green;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneOffline {\r\n color: red;\r\n margin: 5px 0px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneOffline svg {\r\n margin-right: 5px;\r\n margin-left: 5px;\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--SpinnerWrapper {\r\n margin-left: 5px;\r\n display: inline-flex;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault i {\r\n font-size: 16px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable i {\r\n line-height: unset;\r\n font-size: 16px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable {\r\n color: green;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault i,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable i,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable svg {\r\n margin-right: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable {\r\n color: red;\r\n}\r\n\r\n/* .userMenu {\r\n margin-left: 10px !important;\r\n margin-right: 5px !important;\r\n} */\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag {\r\n margin: 8px;\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag > div {\r\n margin-left: 7px;\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--feedback {\r\n margin: 0 !important;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--overflowItems {\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelp_button {\r\n cursor: pointer;\r\n position: relative;\r\n top: -2px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelp_button i {\r\n color: #fff;\r\n font-size: 22px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpDot {\r\n background-color: #ef5350;\r\n border-radius: 50%;\r\n position: absolute;\r\n top: 3px;\r\n left: 13px;\r\n width: 10px;\r\n height: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpTooltip{\r\n position: absolute;\r\n background: #fff;\r\n padding: 8px;\r\n right: 30px;\r\n top: -2px;\r\n border-radius: 2px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n cursor: auto;\r\n color: #000;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpTooltip::before{\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 100%;\r\n margin-top: -5px;\r\n border-width: 5px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpTooltip i{\r\n color: #000;\r\n font-size: 12px;\r\n margin-left: 5px;\r\n position: relative;\r\n top: 1px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer {\r\n position: absolute;\r\n display: flex;\r\n width: 100vw;\r\n bottom: 0;\r\n z-index: 10000;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaNoteIframe {\r\n position: absolute;\r\n bottom: 0;\r\n right: 0;\r\n height: 100%;\r\n width: 425px;\r\n max-width: 425px;\r\n background-color: white;\r\n border: 0px solid;\r\n padding: 20px 30px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHide {\r\n background-color: rgba(0,0,0,.5);\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--st0{fill:#0075E6;}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--st1{fill:#6A819C;}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--st2{fill:#FFFFFF;}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHideButton {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: absolute;\r\n top: 2px;\r\n right: 510px;\r\n height: 38px;\r\n width: 38px;\r\n background-color: white;\r\n z-index: 11000;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--profile {\r\n padding: 5px 7px;\r\n background: #fff;\r\n border-radius: 50%;\r\n font-weight: 600;\r\n color: #1d5ab9;\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchContainer {\r\n background: rgba(255, 255, 255, 0.40);\r\n backdrop-filter: blur(20px);\r\n position: absolute;\r\n top: 50px;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 999;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper{\r\n position: absolute;\r\n z-index: 10000;\r\n height: 100vh;\r\n width: 100vw;\r\n background-color: rgba(0,0,0,.5);\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebar {\r\n width: 425px;\r\n max-width: 425px;\r\n position: absolute;\r\n right: 0;\r\n /* height: calc(100vh - 100px); */\r\n /* padding: 15px; */\r\n background-color: white;\r\n overflow-y: auto;\r\n}\r\n\r\n@media only screen and (max-width: 1024px) {\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault i,\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable i,\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable svg {\r\n margin-right: 2px;\r\n }\r\n\r\n /* .searchIcon {\r\n margin-left: 5px;\r\n margin-right: 2px;\r\n }\r\n\r\n .searchIcon > div {\r\n margin-left: 2px;\r\n } */\r\n\r\n /* .userMenu {\r\n margin-left: 3px !important;\r\n margin-right: 3px !important;\r\n } */\r\n\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag {\r\n margin-left: 3px !important;\r\n margin-right: 3px !important;\r\n }\r\n\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag > div {\r\n margin-left: 2px;\r\n }\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--sideBarWrapper\r\n{\r\n position: absolute;\r\n z-index: 10000;\r\n height: 100vh;\r\n top: 100px;\r\n width: 100vw;\r\n background-color: rgba(0,0,0,.5);\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv\r\n{\r\n width: 425px;\r\n max-width: 425px;\r\n position: absolute;\r\n right: 0;\r\n /* height: calc(100vh - 100px); */\r\n background-color: white;\r\n overflow-y: auto;\r\n padding: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar {\r\n width: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar-track {\r\n background: #f1f1f1;\r\n border-radius: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar-thumb {\r\n background-color: #888;\r\n border-radius: 10px;\r\n border: 3px solid #f1f1f1;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar-thumb:hover {\r\n background-color: #555;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationsHeader{\r\n font-size: 24px;\r\n font-weight: 700;\r\n padding-bottom: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationsWrapper{\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n grid-gap: 6px;\r\n gap: 6px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount{\r\n background-color: #ef5350;\r\n color: white;\r\n font-size: 12px;\r\n width: 1rem;\r\n border-radius: 50%;\r\n position: absolute;\r\n top: -5px;\r\n left: 11px;\r\n height: 1rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount.utilities_ops-app-frame_AppBarComponent_AppBar--twoChars {\r\n width: 1.1rem;\r\n height: 1.1rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount.utilities_ops-app-frame_AppBarComponent_AppBar--threeChars {\r\n width: 1.3rem;\r\n height: 1.3rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--notificationIconWrapper {\r\n cursor: pointer;\r\n margin-left: 12px;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer {\r\n width: 0px;\r\n height: 0px;\r\n border-left: 8px solid transparent;\r\n border-right: 8px solid transparent;\r\n border-bottom: 11px solid white;\r\n position: absolute;\r\n bottom: -13px;\r\n right: 5px;\r\n}\r\n\r\n/* .arrowTipContainer.ideaNoteArrow {\r\n right: 16px;\r\n} */\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpArrow {\r\n right: 3px;\r\n bottom: -10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer.utilities_ops-app-frame_AppBarComponent_AppBar--profileArrow {\r\n bottom: -12px;\r\n right: 8px;\r\n border-left: 7px solid transparent;\r\n border-right: 7px solid transparent;\r\n border-bottom: 10px solid white;\r\n}\r\n\r\n@media (max-width: 1366px) {\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaNoteIframe {\r\n width: 400px;\r\n max-width: 400px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv {\r\n width: 400px;\r\n max-width: 400px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebar {\r\n width: 400px;\r\n max-width: 400px;\r\n}\r\n}\r\n\r\n@media (max-width: 768px) {\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv {\r\n width: 85%;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount{\r\n left: 12px;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer {\r\n right: 5px;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaNoteIframe {\r\n width: 85% !important;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer iframe {\r\n width: 85% !important;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHide .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHideButton {\r\n display: none;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebar {\r\n width: 85%;\r\n }\r\n}";
21274
+ var css_248z$m = ".utilities_ops-app-frame_AppBarComponent_AppBar--root {\r\n background-color: var(--blue);\r\n background-color: var(--blue);\r\n height: 48px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n white-space: nowrap;\r\n /* padding-top: env(safe-area-inset-top, 0px); */\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--leftItems {\r\n width: 100%;\r\n display: flex;\r\n justify-content: start;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--appBarIcons {\r\n margin: 0 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--copartLogo {\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n margin-left: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--copartLogoNew {\r\n display: flex;\r\n margin: 3px 0 0 16px;\r\n grid-gap: 10px;\r\n gap: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--moduleName {\r\n color: white;\r\n font-size: 11px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items {\r\n color: white;\r\n cursor: pointer;\r\n font-size: 18px;\r\n display: flex;\r\n justify-content: center;\r\n margin: 8px !important;\r\n position: relative;\r\n width: 25px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--logout {\r\n margin-right: 24px !important;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items i {\r\n color: #fff;\r\n font-size: 20px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--lightBulbIcon i {\r\n color: #ffff00;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--language {\r\n width: auto;\r\n grid-gap: 4px;\r\n grid-gap: 5px;\r\n gap: 5px;\r\n display: flex;\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--yard {\r\n width: auto;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n background: #fff;\r\n color: #1D5AB9;\r\n font-weight: 600;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n grid-gap: 8px;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n padding: 2px 8px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--yard span i {\r\n color: #1D5AB9;\r\n font-size: 16px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--yard .utilities_ops-app-frame_AppBarComponent_AppBar--yardNumber {\r\n font-size: 14px;\r\n font-weight: 400;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid .utilities_ops-app-frame_AppBarComponent_AppBar--col {\r\n display: flex;\r\n color: white;\r\n font-size: 13px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid .utilities_ops-app-frame_AppBarComponent_AppBar--col svg {\r\n color: white;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--logo {\r\n width: 6rem;\r\n margin-top: 0rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--text {\r\n margin-top: 0.6rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--iconText {\r\n margin-top: 0.4rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchBar,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--placeholderDiv {\r\n margin-top: -0.2rem;\r\n margin-left: 2rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--appBarLeft > img.utilities_ops-app-frame_AppBarComponent_AppBar--logo {\r\n display: inline;\r\n display: initial;\r\n}\r\n\r\n@font-face {\r\n font-family: 'Open Sans';\r\n font-style: italic;\r\n font-weight: 600;\r\n src: url(https://fonts.gstatic.com/s/opensans/v18/memnYaGs126MiZpBA-UFUKXGUdhmIqOjjg.woff2)\r\n format('woff2');\r\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--appTitle {\r\n color: #fff;\r\n font-family: 'Open Sans', sans-serif;\r\n font-weight: 600;\r\n font-style: italic;\r\n font-size: 14px;\r\n position: relative;\r\n left: 16px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--item {\r\n display: flex;\r\n color: white;\r\n font-size: 13px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchIcon {\r\n /* margin-left: 10px;\r\n margin-right: 7px; */\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n background: #fff;\r\n color: #1D5AB9;\r\n font-weight: 600;\r\n border-radius: 4px;\r\n box-shadow: inset 0px -2px 0px rgba(0, 0, 0, 0.4), 0px 1.6px 3.6px 0px rgba(0, 0, 0, 0.13), 0px 0.3px 0.9px 0px rgba(0, 0, 0, 0.10);\r\n font-size: 14px;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n margin: 0 8px;\r\n padding: 6px 20px 7px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchIcon span {\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchIcon span i {\r\n font-size: 18px;\r\n color: #1D5AB9;\r\n}\r\n\r\n/* .searchIcon > div {\r\n margin-left: 7px;\r\n} */\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchWrapper i {\r\n color: #fff;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchWrapper span {\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault {\r\n color: white;\r\n cursor: default;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable {\r\n background-color: white;\r\n border-radius: 20px;\r\n margin: 5px;\r\n padding: 0px 10px;\r\n height: 25px;\r\n font-weight: bold;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--light {\r\n border: 1px solid #1d5ab9;\r\n justify-content: flex-start;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightDefault {\r\n color: black;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneOffline,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightAvailable {\r\n background-color: white;\r\n border-radius: 20px;\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightAvailable {\r\n color: green;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--lightAvailable i {\r\n color: green;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneOffline {\r\n color: red;\r\n margin: 5px 0px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneOffline svg {\r\n margin-right: 5px;\r\n margin-left: 5px;\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--SpinnerWrapper {\r\n margin-left: 5px;\r\n display: inline-flex;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault i {\r\n font-size: 16px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable i {\r\n line-height: unset;\r\n font-size: 16px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable {\r\n color: green;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault i,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable i,\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable svg {\r\n margin-right: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable {\r\n color: red;\r\n}\r\n\r\n/* .userMenu {\r\n margin-left: 10px !important;\r\n margin-right: 5px !important;\r\n} */\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag {\r\n margin: 8px;\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag > div {\r\n margin-left: 7px;\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--feedback {\r\n margin: 0 !important;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--overflowItems {\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelp_button {\r\n cursor: pointer;\r\n position: relative;\r\n top: -2px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelp_button i {\r\n color: #fff;\r\n font-size: 22px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpDot {\r\n background-color: #ef5350;\r\n border-radius: 50%;\r\n position: absolute;\r\n top: 3px;\r\n left: 13px;\r\n width: 10px;\r\n height: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpTooltip{\r\n position: absolute;\r\n background: #fff;\r\n padding: 8px;\r\n right: 30px;\r\n top: -2px;\r\n border-radius: 2px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n cursor: auto;\r\n color: #000;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpTooltip::before{\r\n content: \"\";\r\n position: absolute;\r\n top: 50%;\r\n left: 100%;\r\n margin-top: -5px;\r\n border-width: 5px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpTooltip i{\r\n color: #000;\r\n font-size: 12px;\r\n margin-left: 5px;\r\n position: relative;\r\n top: 1px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer {\r\n position: absolute;\r\n display: flex;\r\n width: 100vw;\r\n bottom: 0;\r\n z-index: 10000;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaNoteIframe {\r\n position: absolute;\r\n bottom: 0;\r\n right: 0;\r\n height: 100%;\r\n width: 425px;\r\n max-width: 425px;\r\n background-color: white;\r\n border: 0px solid;\r\n padding: 20px 30px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHide {\r\n background-color: rgba(0,0,0,.5);\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--st0{fill:#0075E6;}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--st1{fill:#6A819C;}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--st2{fill:#FFFFFF;}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHideButton {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: absolute;\r\n top: 2px;\r\n right: 510px;\r\n height: 38px;\r\n width: 38px;\r\n background-color: white;\r\n z-index: 11000;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--profile {\r\n padding: 5px 7px;\r\n background: #fff;\r\n border-radius: 50%;\r\n font-weight: 600;\r\n color: #1d5ab9;\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--searchContainer {\r\n background: rgba(255, 255, 255, 0.40);\r\n backdrop-filter: blur(20px);\r\n position: absolute;\r\n top: 50px;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n z-index: 999;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper{\r\n position: absolute;\r\n z-index: 10000;\r\n height: 100vh;\r\n width: 100vw;\r\n background-color: rgba(0,0,0,.5);\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebar {\r\n width: 425px;\r\n max-width: 425px;\r\n position: absolute;\r\n right: 0;\r\n /* height: calc(100vh - 100px); */\r\n /* padding: 15px; */\r\n background-color: white;\r\n overflow-y: auto;\r\n}\r\n\r\n@media only screen and (max-width: 1024px) {\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--phoneDefault i,\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--phoneAvailable i,\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--phoneUnvailable svg {\r\n margin-right: 2px;\r\n }\r\n\r\n /* .searchIcon {\r\n margin-left: 5px;\r\n margin-right: 2px;\r\n }\r\n\r\n .searchIcon > div {\r\n margin-left: 2px;\r\n } */\r\n\r\n /* .userMenu {\r\n margin-left: 3px !important;\r\n margin-right: 3px !important;\r\n } */\r\n\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag {\r\n margin-left: 3px !important;\r\n margin-right: 3px !important;\r\n }\r\n\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--roleAndFlag > div {\r\n margin-left: 2px;\r\n }\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--sideBarWrapper\r\n{\r\n position: absolute;\r\n z-index: 10000;\r\n height: 100vh;\r\n top: 100px;\r\n width: 100vw;\r\n background-color: rgba(0,0,0,.5);\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv\r\n{\r\n width: 425px;\r\n max-width: 425px;\r\n position: absolute;\r\n right: 0;\r\n /* height: calc(100vh - 100px); */\r\n background-color: white;\r\n overflow-y: hidden;\r\n padding: 10px;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar {\r\n width: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar-track {\r\n background: #f1f1f1;\r\n border-radius: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar-thumb {\r\n background-color: #888;\r\n border-radius: 10px;\r\n border: 3px solid #f1f1f1;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv::-webkit-scrollbar-thumb:hover {\r\n background-color: #555;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationsHeader{\r\n font-size: 24px;\r\n font-weight: 700;\r\n padding-bottom: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationsWrapper{\r\n flex: 1;\r\n min-height: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount{\r\n background-color: #ef5350;\r\n color: white;\r\n font-size: 12px;\r\n width: 1rem;\r\n border-radius: 50%;\r\n position: absolute;\r\n top: -5px;\r\n left: 11px;\r\n height: 1rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount.utilities_ops-app-frame_AppBarComponent_AppBar--twoChars {\r\n width: 1.1rem;\r\n height: 1.1rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount.utilities_ops-app-frame_AppBarComponent_AppBar--threeChars {\r\n width: 1.3rem;\r\n height: 1.3rem;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--flex-grid-items.utilities_ops-app-frame_AppBarComponent_AppBar--notificationIconWrapper {\r\n cursor: pointer;\r\n margin-left: 12px;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer {\r\n width: 0px;\r\n height: 0px;\r\n border-left: 8px solid transparent;\r\n border-right: 8px solid transparent;\r\n border-bottom: 11px solid white;\r\n position: absolute;\r\n bottom: -13px;\r\n right: 5px;\r\n}\r\n\r\n/* .arrowTipContainer.ideaNoteArrow {\r\n right: 16px;\r\n} */\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer.utilities_ops-app-frame_AppBarComponent_AppBar--mihelpArrow {\r\n right: 3px;\r\n bottom: -10px;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer.utilities_ops-app-frame_AppBarComponent_AppBar--profileArrow {\r\n bottom: -12px;\r\n right: 8px;\r\n border-left: 7px solid transparent;\r\n border-right: 7px solid transparent;\r\n border-bottom: 10px solid white;\r\n}\r\n\r\n@media (max-width: 1366px) {\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaNoteIframe {\r\n width: 400px;\r\n max-width: 400px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv {\r\n width: 400px;\r\n max-width: 400px;\r\n}\r\n.utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebar {\r\n width: 400px;\r\n max-width: 400px;\r\n}\r\n}\r\n\r\n@media (max-width: 768px) {\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--innerNotificationDiv {\r\n width: 85%;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--notificationCount{\r\n left: 12px;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--arrowTipContainer {\r\n right: 5px;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaNoteIframe {\r\n width: 85% !important;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer iframe {\r\n width: 85% !important;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetContainer .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHide .utilities_ops-app-frame_AppBarComponent_AppBar--ideaWidgetHideButton {\r\n display: none;\r\n }\r\n .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebarWrapper .utilities_ops-app-frame_AppBarComponent_AppBar--settingsSidebar {\r\n width: 85%;\r\n }\r\n}";
21329
21275
  styleInject(css_248z$m);
21330
21276
 
21331
21277
  var LogOutMenu = function LogOutMenu(_ref) {
@@ -21552,7 +21498,7 @@ var MobileMenu = function MobileMenu(props) {
21552
21498
  var css_248z$j = ".utilities_ops-app-frame_AppBarComponent_CopartLogo_CopartLogo--CopartLogo {\r\n max-width: 80px;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_CopartLogo_CopartLogo--CopartLogoNew {\r\n max-width: 120px;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_AppBarComponent_CopartLogo_CopartLogo--logoLink {\r\n line-height: 0;\r\n}\r\n";
21553
21499
  styleInject(css_248z$j);
21554
21500
 
21555
- var _styleModuleImportMap$8 = {
21501
+ var _styleModuleImportMap$9 = {
21556
21502
  "./CopartLogo.css": {
21557
21503
  "CopartLogo": "utilities_ops-app-frame_AppBarComponent_CopartLogo_CopartLogo--CopartLogo",
21558
21504
  "CopartLogoNew": "utilities_ops-app-frame_AppBarComponent_CopartLogo_CopartLogo--CopartLogoNew",
@@ -21568,7 +21514,7 @@ var CopartLogo = function CopartLogo() {
21568
21514
  href: "/"
21569
21515
  }, /*#__PURE__*/React__namespace.createElement("img", {
21570
21516
  src: imageSrc,
21571
- className: _getClassName(enableNewToolkitFeatures ? "CopartLogoNew" : "CopartLogo", _styleModuleImportMap$8, {
21517
+ className: _getClassName(enableNewToolkitFeatures ? "CopartLogoNew" : "CopartLogo", _styleModuleImportMap$9, {
21572
21518
  "handleMissingStyleName": "warn"
21573
21519
  })
21574
21520
  }));
@@ -21773,7 +21719,7 @@ var unEscapeChars = function unEscapeChars(str) {
21773
21719
  var css_248z$i = ".utilities_ops-app-frame_Help_Help--backdrop {\r\n position: absolute;\r\n z-index: 10000;\r\n height: 100vh;\r\n top: 48px;\r\n width: 100vw;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--miHelpSideBar {\r\n width: 425px;\r\n max-width: 425px;\r\n position: absolute;\r\n right: 0;\r\n height: calc(100vh - 48px);\r\n padding: 15px;\r\n background-color: white;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n color: #323130;\r\n white-space: normal;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--miHelpSideBar::-webkit-scrollbar {\r\n width: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--miHelpSideBar::-webkit-scrollbar-track {\r\n background: #f1f1f1;\r\n border-radius: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--miHelpSideBar::-webkit-scrollbar-thumb {\r\n background-color: #888;\r\n border-radius: 10px;\r\n border: 3px solid #f1f1f1;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--miHelpSideBar::-webkit-scrollbar-thumb:hover {\r\n background-color: #555;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--title {\r\n font-weight: 600;\r\n font-size: 28px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--header {\r\n margin-bottom: 10px;\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--header .utilities_ops-app-frame_Help_Help--close,\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--close {\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--header .utilities_ops-app-frame_Help_Help--close i,\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--close i {\r\n font-size: 14px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--subHeader {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--subHeaderTitle {\r\n font-weight: 600;\r\n font-size: 20px;\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--subHeaderTitle .utilities_ops-app-frame_Help_Help--back {\r\n color: #1d5ab9;\r\n margin-right: 5px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--link {\r\n font-weight: 400;\r\n font-size: 14px;\r\n color: #1d5ab9;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--link i {\r\n font-size: 10px;\r\n position: relative;\r\n top: -5px;\r\n left: 3px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper {\r\n margin-top: 20px;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper h3,\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper h3 {\r\n font-weight: 400;\r\n font-size: 24px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper h3 i {\r\n color: #1d5ab9;\r\n font-size: 10px;\r\n position: relative;\r\n top: -8px;\r\n cursor: pointer;\r\n left: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper ul,\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper ul {\r\n list-style: none;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper ul li,\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper ul li {\r\n font-weight: 400;\r\n font-size: 14px;\r\n margin: 6px 0;\r\n display: flex;\r\n cursor: pointer;\r\n width: -webkit-fit-content;\r\n width: -moz-fit-content;\r\n width: fit-content;\r\n align-items: flex-start;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper ul li:hover,\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper ul li:hover {\r\n color: #1d5ab9;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper ul li img,\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper ul li img {\r\n width: 17px;\r\n margin-right: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpResourcesWrapper .utilities_ops-app-frame_Help_Help--viewMore {\r\n color: #1d5ab9;\r\n cursor: pointer;\r\n font-weight: 400;\r\n font-size: 14px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchWrapper {\r\n width: 100%;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchWrapper span {\r\n position: absolute;\r\n width: 29px;\r\n height: 29px;\r\n background: #f3f2f1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n bottom: 1.5px;\r\n right: 2px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--mihelpSearch {\r\n width: 100%;\r\n margin-top: 15px;\r\n padding: 0px 10px;\r\n height: 32px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchResultsWrapper {\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchResultsWrapper h3 {\r\n font-weight: 400;\r\n font-size: 24px;\r\n margin-top: 8px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchResultsWrapper .utilities_ops-app-frame_Help_Help--searchResult {\r\n width: 100%;\r\n margin-top: 20px;\r\n border-bottom: 1px solid #dcdcdc;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchResultsWrapper .utilities_ops-app-frame_Help_Help--searchResult p {\r\n margin-top: 13px;\r\n margin-bottom: 30px;\r\n text-overflow: ellipsis;\r\n width: 100%;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--spinnerWrapper {\r\n position: absolute;\r\n background: rgba(0, 0, 0, 0.5);\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--spinnerWrapper svg {\r\n position: absolute;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--overFlowHidden {\r\n overflow: hidden;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--nonInteractive {\r\n opacity: 0.3;\r\n pointer-events: none;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchTitlewrapper {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeswrapper {\r\n color: #cbcbcb;\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--like {\r\n margin-left: 10px;\r\n font-size: 10px;\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--like i {\r\n font-size: 14px;\r\n margin-right: 2px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchTitle {\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchTitle img {\r\n width: 18px;\r\n margin-right: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchTitle span {\r\n font-weight: 600;\r\n font-size: 18px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--searchTitle span:hover {\r\n color: #1d5ab9;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--faqContentWrapper {\r\n width: 100%;\r\n margin-top: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--faqContentWrapper h3 {\r\n font-weight: 300;\r\n font-size: 34px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--faqContentWrapper .utilities_ops-app-frame_Help_Help--faqsList {\r\n width: 100%;\r\n white-space: normal;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--faqContentWrapper .utilities_ops-app-frame_Help_Help--category {\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--faqContentWrapper .utilities_ops-app-frame_Help_Help--category h3 {\r\n color: #1d5ab9;\r\n font-weight: 600;\r\n font-size: 24px;\r\n margin-top: 18px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--accordian {\r\n border-top: 1px solid #dcdcdc;\r\n padding-top: 13px;\r\n margin-top: 18px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--accordian .utilities_ops-app-frame_Help_Help--question {\r\n font-weight: 400;\r\n font-size: 20px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--accordian .utilities_ops-app-frame_Help_Help--question span {\r\n transition: all 0.2s ease-out;\r\n display: flex;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--accordian .utilities_ops-app-frame_Help_Help--answer {\r\n font-weight: 400;\r\n font-size: 14px;\r\n height: auto;\r\n max-height: 0;\r\n transition: max-height 0.2s ease-out;\r\n overflow: hidden;\r\n margin-top: 13px;\r\n white-space: normal;\r\n}\r\n\r\n/* .accordian .answer span {\r\n white-space: break-spaces;\r\n } */\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNote {\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNote h3 {\r\n font-weight: 400;\r\n font-size: 24px;\r\n margin-top: 13px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNote .utilities_ops-app-frame_Help_Help--releaseNoteContent {\r\n margin-top: 10px;\r\n white-space: normal;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpArticle {\r\n width: 100%;\r\n white-space: normal;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpArticle h3 {\r\n font-weight: 400;\r\n font-size: 24px;\r\n margin-top: 13px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--helpArticle .utilities_ops-app-frame_Help_Help--helpArticleWrapper {\r\n margin-top: 10px;\r\n white-space: normal;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--articleFooter {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 30px;\r\n padding-bottom: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper .utilities_ops-app-frame_Help_Help--likeTxt {\r\n font-weight: 600;\r\n font-size: 14px;\r\n margin-right: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper .utilities_ops-app-frame_Help_Help--thanksText {\r\n color: rgb(45, 206, 137);\r\n font-weight: bold;\r\n font-size: 16px;\r\n margin-left: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper .utilities_ops-app-frame_Help_Help--feedbackWrapper {\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper .utilities_ops-app-frame_Help_Help--feedbackWrapper textarea {\r\n width: 300px;\r\n height: 100px;\r\n resize: none;\r\n display: block;\r\n margin-bottom: 11px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper .utilities_ops-app-frame_Help_Help--feedbackWrapper h5 {\r\n font-size: 18px;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likeWrapper .utilities_ops-app-frame_Help_Help--feedbackWrapper span {\r\n background-color: rgb(29, 90, 185);\r\n color: #fff;\r\n padding: 6px 12px;\r\n cursor: pointer;\r\n margin-right: 5px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likebtnWrapper {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n color: #2dce89;\r\n margin-right: 6px;\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likebtnWrapper svg {\r\n border: 1px solid #2dce89 !important;\r\n padding: 5px;\r\n height: 30px;\r\n width: 30px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likebtnWrapper.utilities_ops-app-frame_Help_Help--active svg,\r\n.utilities_ops-app-frame_Help_Help--likebtnWrapper svg:hover {\r\n background-color: #2dce89;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--likebtnWrapper.utilities_ops-app-frame_Help_Help--active svg path,\r\n.utilities_ops-app-frame_Help_Help--likebtnWrapper svg:hover path {\r\n fill: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--dislike {\r\n color: #f5365c !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--dislike svg {\r\n border: 1px solid #f5365c !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--dislike.utilities_ops-app-frame_Help_Help--active svg,\r\n.utilities_ops-app-frame_Help_Help--dislike svg:hover {\r\n background-color: #f5365c !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--dateWrapper {\r\n font-style: italic;\r\n /* font-weight: 700; */\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--dateWrapper b {\r\n font-weight: 700;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--dateWrapper span {\r\n font-weight: 400;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper {\r\n width: 100%;\r\n border-top: 1px solid #edebe9;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--relatedResourcesWrapper h3 {\r\n font-weight: 400;\r\n font-size: 24px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper {\r\n width: 100%;\r\n border: 1px solid #dcdcdc;\r\n padding: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n margin-top: 50px;\r\n position: relative;\r\n text-align: center;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper.utilities_ops-app-frame_Help_Help--noFlex {\r\n display: block;\r\n text-align: left;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper h2 {\r\n font-size: 34px !important;\r\n margin-bottom: 6px !important;\r\n margin-top: 0 !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper p {\r\n font-size: 14px !important;\r\n margin-bottom: 3px !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper p img {\r\n position: relative;\r\n top: 2px;\r\n margin-left: 2px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--submitBtn {\r\n background-color: #1d5ab9;\r\n color: #fff;\r\n padding: 6px 12px;\r\n font-weight: 600;\r\n font-size: 12px;\r\n cursor: pointer;\r\n margin-top: 7px;\r\n border-radius: 2px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--submitBtn.utilities_ops-app-frame_Help_Help--disable {\r\n pointer-events: none;\r\n cursor: default;\r\n background-color: #ccc;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--close {\r\n position: absolute;\r\n top: 0px;\r\n right: 10px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper h3 {\r\n font-weight: 800 !important;\r\n font-size: 20px !important;\r\n line-height: 27px !important;\r\n color: #1d5ab9 !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--CategoryWrapper,\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--questionWrapper {\r\n width: 100%;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--CategoryWrapper label,\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--questionWrapper label {\r\n font-weight: 600;\r\n font-size: 14px;\r\n color: #000100;\r\n margin: 10px 0;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--questionWrapper textarea {\r\n resize: none;\r\n height: 125px;\r\n margin-bottom: 20px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--highlightRed {\r\n font-weight: 600;\r\n color: #f5365c;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--submitQuestionWrapper .utilities_ops-app-frame_Help_Help--successMsg {\r\n color: #1d5ab9;\r\n font-size: 20px !important;\r\n margin-top: 12px;\r\n margin-bottom: 20px !important;\r\n font-weight: 600;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseDialogContent {\r\n max-width: 700px;\r\n min-width: 600px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseDialogContent .utilities_ops-app-frame_Help_Help--releaseDialogHeader {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n background: #edebe9;\r\n padding: 10px 20px;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseDialogContent .utilities_ops-app-frame_Help_Help--releaseDialogBody {\r\n padding: 20px 20px 30px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseDialogContent .utilities_ops-app-frame_Help_Help--releaseDialogHeader h3 {\r\n font-weight: 600;\r\n font-size: 20px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseDialogContent .utilities_ops-app-frame_Help_Help--releaseDialogHeader span {\r\n font-weight: 600;\r\n font-size: 14px;\r\n -webkit-text-decoration-line: underline;\r\n text-decoration-line: underline;\r\n color: #1d5ab9;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseDialogContent .utilities_ops-app-frame_Help_Help--releaseDialogHeader span i {\r\n font-size: 10px;\r\n position: relative;\r\n top: -6px;\r\n right: -1px;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNoteActive {\r\n padding: 22px;\r\n background-color: #1d5ab9;\r\n color: #fff;\r\n font-size: 32px !important;\r\n width: 100% !important;\r\n border-radius: 10px;\r\n align-items: center !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNoteActive:hover{\r\n color: #fff !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNoteActive img {\r\n width: 65px !important;\r\n margin-right: 25px !important;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNoteActive .utilities_ops-app-frame_Help_Help--releaseTitle {\r\n flex: 1;\r\n}\r\n\r\n.utilities_ops-app-frame_Help_Help--releaseNoteActive .utilities_ops-app-frame_Help_Help--checkNow {\r\n font-weight: 700;\r\n font-size: 14px;\r\n align-self: end;\r\n}\r\n\r\n@media (max-width: 1366px) {\r\n .utilities_ops-app-frame_Help_Help--miHelpSideBar {\r\n width: 400px;\r\n }\r\n}\r\n\r\n@media (max-width: 767px) {\r\n .utilities_ops-app-frame_Help_Help--miHelpSideBar {\r\n width: 85%;\r\n }\r\n}\r\n";
21774
21720
  styleInject(css_248z$i);
21775
21721
 
21776
- var _styleModuleImportMap$7 = {
21722
+ var _styleModuleImportMap$8 = {
21777
21723
  "../Help.css": {
21778
21724
  "backdrop": "utilities_ops-app-frame_Help_Help--backdrop",
21779
21725
  "miHelpSideBar": "utilities_ops-app-frame_Help_Help--miHelpSideBar",
@@ -21860,7 +21806,7 @@ var ArticleSection = function ArticleSection(_ref) {
21860
21806
  onClick: function onClick() {
21861
21807
  return clickhandler(viewMapper[articleDetails.type], article);
21862
21808
  },
21863
- className: _getClassName(highlightRelease ? 'releaseNoteActive' : '', _styleModuleImportMap$7, {
21809
+ className: _getClassName(highlightRelease ? 'releaseNoteActive' : '', _styleModuleImportMap$8, {
21864
21810
  "handleMissingStyleName": "warn"
21865
21811
  })
21866
21812
  }, /*#__PURE__*/React__default["default"].createElement("img", {
@@ -21983,7 +21929,7 @@ styleInject(css_248z$f);
21983
21929
  var css_248z$e = "/**\n * Colors\n */\n/**\n * Breakpoints & Media Queries\n */\n/**\n * SCSS Variables.\n *\n * Please use variables from this sheet to ensure consistency across the UI.\n * Don't add to this sheet unless you're pretty sure the value will be reused in many places.\n * For example, don't add rules to this sheet that affect block visuals. It's purely for UI.\n */\n/**\n * Colors\n */\n/**\n * Fonts & basic variables.\n */\n/**\n * Grid System.\n * https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/\n */\n/**\n * Dimensions.\n */\n/**\n * Shadows.\n */\n/**\n * Editor widths.\n */\n/**\n * Block & Editor UI.\n */\n/**\n * Block paddings.\n */\n/**\n * React Native specific.\n * These variables do not appear to be used anywhere else.\n */\n/**\n* Converts a hex value into the rgb equivalent.\n*\n* @param {string} hex - the hexadecimal value to convert\n* @return {string} comma separated rgb values\n*/\n/**\n * Breakpoint mixins\n */\n/**\n * Long content fade mixin\n *\n * Creates a fading overlay to signify that the content is longer\n * than the space allows.\n */\n/**\n * Focus styles.\n */\n/**\n * Applies editor left position to the selector passed as argument\n */\n/**\n * Styles that are reused verbatim in a few places\n */\n/**\n * Allows users to opt-out of animations via OS-level preferences.\n */\n/**\n * Reset default styles for JavaScript UI based pages.\n * This is a WP-admin agnostic reset\n */\n/**\n * Reset the WP Admin page styles for Gutenberg-like pages.\n */\n#start-resizable-editor-section {\n display: none;\n}\n\n.wp-block-audio figcaption {\n color: #555;\n font-size: 13px;\n text-align: center;\n}\n.is-dark-theme .wp-block-audio figcaption {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.wp-block-code {\n font-family: Menlo, Consolas, monaco, monospace;\n color: #1e1e1e;\n padding: 0.8em 1em;\n border: 1px solid #ddd;\n border-radius: 4px;\n}\n\n.wp-block-embed figcaption {\n color: #555;\n font-size: 13px;\n text-align: center;\n}\n.is-dark-theme .wp-block-embed figcaption {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.blocks-gallery-caption {\n color: #555;\n font-size: 13px;\n text-align: center;\n}\n.is-dark-theme .blocks-gallery-caption {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.wp-block-image figcaption {\n color: #555;\n font-size: 13px;\n text-align: center;\n}\n.is-dark-theme .wp-block-image figcaption {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.wp-block-pullquote {\n border-top: 4px solid currentColor;\n border-bottom: 4px solid currentColor;\n margin-bottom: 1.75em;\n color: currentColor;\n}\n.wp-block-pullquote cite,\n.wp-block-pullquote footer, .wp-block-pullquote__citation {\n color: currentColor;\n text-transform: uppercase;\n font-size: 0.8125em;\n font-style: normal;\n}\n\n.wp-block-quote {\n border-left: 0.25em solid currentColor;\n margin: 0 0 1.75em 0;\n padding-left: 1em;\n}\n.wp-block-quote cite,\n.wp-block-quote footer {\n color: currentColor;\n font-size: 0.8125em;\n position: relative;\n font-style: normal;\n}\n.wp-block-quote.has-text-align-right {\n border-left: none;\n border-right: 0.25em solid currentColor;\n padding-left: 0;\n padding-right: 1em;\n}\n.wp-block-quote.has-text-align-center {\n border: none;\n padding-left: 0;\n}\n.wp-block-quote.is-style-large, .wp-block-quote.is-large {\n border: none;\n}\n\n.wp-block-search .wp-block-search__label {\n font-weight: bold;\n}\n\n.wp-block-group.has-background {\n padding: 1.25em 2.375em;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n.wp-block-separator {\n border: none;\n border-bottom: 2px solid currentColor;\n margin-left: auto;\n margin-right: auto;\n opacity: 0.4;\n}\n.wp-block-separator:not(.is-style-wide):not(.is-style-dots) {\n width: 100px;\n}\n.wp-block-separator.has-background:not(.is-style-dots) {\n border-bottom: none;\n height: 1px;\n}\n.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots) {\n height: 2px;\n}\n\n.wp-block-table thead {\n border-bottom: 3px solid;\n}\n.wp-block-table tfoot {\n border-top: 3px solid;\n}\n.wp-block-table td,\n.wp-block-table th {\n padding: 0.5em;\n border: 1px solid;\n word-break: normal;\n}\n.wp-block-table figcaption {\n color: #555;\n font-size: 13px;\n text-align: center;\n}\n.is-dark-theme .wp-block-table figcaption {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.wp-block-video figcaption {\n color: #555;\n font-size: 13px;\n text-align: center;\n}\n.is-dark-theme .wp-block-video figcaption {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.wp-block-template-part.has-background {\n padding: 1.25em 2.375em;\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#end-resizable-editor-section {\n display: none;\n}";
21984
21930
  styleInject(css_248z$e);
21985
21931
 
21986
- var _styleModuleImportMap$6 = {
21932
+ var _styleModuleImportMap$7 = {
21987
21933
  "../wordpressStyles.css": {
21988
21934
  "helpArticleContent": "utilities_ops-app-frame_Help_wordpressStyles--helpArticleContent",
21989
21935
  "sr-only": "utilities_ops-app-frame_Help_wordpressStyles--sr-only",
@@ -22016,7 +21962,7 @@ function HelpArticleContent(_ref) {
22016
21962
  return /*#__PURE__*/React__default["default"].createElement("div", {
22017
21963
  className: "utilities_ops-app-frame_Help_wordpressStyles--helpArticleContent"
22018
21964
  }, /*#__PURE__*/React__default["default"].createElement("div", {
22019
- className: "elementor-kit-38 " + _getClassName(showQuestionSection ? 'nonInteractive' : '', _styleModuleImportMap$6, {
21965
+ className: "elementor-kit-38 " + _getClassName(showQuestionSection ? 'nonInteractive' : '', _styleModuleImportMap$7, {
22020
21966
  "handleMissingStyleName": "warn"
22021
21967
  })
22022
21968
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -22068,7 +22014,7 @@ var Dislike = function Dislike() {
22068
22014
  }));
22069
22015
  };
22070
22016
 
22071
- var _styleModuleImportMap$5 = {
22017
+ var _styleModuleImportMap$6 = {
22072
22018
  "../Help.css": {
22073
22019
  "backdrop": "utilities_ops-app-frame_Help_Help--backdrop",
22074
22020
  "miHelpSideBar": "utilities_ops-app-frame_Help_Help--miHelpSideBar",
@@ -22169,7 +22115,7 @@ var HelpArticle = function HelpArticle(_ref) {
22169
22115
  return /*#__PURE__*/React__default["default"].createElement("div", {
22170
22116
  className: "utilities_ops-app-frame_Help_Help--helpArticle"
22171
22117
  }, /*#__PURE__*/React__default["default"].createElement("h3", {
22172
- className: _getClassName(showQuestionSection ? 'nonInteractive' : '', _styleModuleImportMap$5, {
22118
+ className: _getClassName(showQuestionSection ? 'nonInteractive' : '', _styleModuleImportMap$6, {
22173
22119
  "handleMissingStyleName": "warn"
22174
22120
  })
22175
22121
  }, currentArticle.title), /*#__PURE__*/React__default["default"].createElement("div", {
@@ -22178,7 +22124,7 @@ var HelpArticle = function HelpArticle(_ref) {
22178
22124
  article: currentArticle,
22179
22125
  showQuestionSection: showQuestionSection
22180
22126
  }, /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
22181
- className: _getClassName("articleFooter ".concat(showQuestionSection ? 'nonInteractive' : ''), _styleModuleImportMap$5, {
22127
+ className: _getClassName("articleFooter ".concat(showQuestionSection ? 'nonInteractive' : ''), _styleModuleImportMap$6, {
22182
22128
  "handleMissingStyleName": "warn"
22183
22129
  })
22184
22130
  }, /*#__PURE__*/React__default["default"].createElement("span", {
@@ -22186,7 +22132,7 @@ var HelpArticle = function HelpArticle(_ref) {
22186
22132
  }, !currentArticle.showFeedback ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, !currentArticle.showThanksText ? /*#__PURE__*/React__default["default"].createElement("span", {
22187
22133
  className: "utilities_ops-app-frame_Help_Help--likeTxt"
22188
22134
  }, "Was this useful?") : null, /*#__PURE__*/React__default["default"].createElement("span", {
22189
- className: _getClassName("likebtnWrapper ".concat(currentArticle.liked ? 'active' : ''), _styleModuleImportMap$5, {
22135
+ className: _getClassName("likebtnWrapper ".concat(currentArticle.liked ? 'active' : ''), _styleModuleImportMap$6, {
22190
22136
  "handleMissingStyleName": "warn"
22191
22137
  })
22192
22138
  }, /*#__PURE__*/React__default["default"].createElement("span", {
@@ -22194,7 +22140,7 @@ var HelpArticle = function HelpArticle(_ref) {
22194
22140
  return likeHandler(currentArticle);
22195
22141
  }
22196
22142
  }, /*#__PURE__*/React__default["default"].createElement(Like, null)), /*#__PURE__*/React__default["default"].createElement("span", null, currentArticle.likes)), /*#__PURE__*/React__default["default"].createElement("span", {
22197
- className: _getClassName("likebtnWrapper dislike ".concat(currentArticle.disliked ? 'active' : ''), _styleModuleImportMap$5, {
22143
+ className: _getClassName("likebtnWrapper dislike ".concat(currentArticle.disliked ? 'active' : ''), _styleModuleImportMap$6, {
22198
22144
  "handleMissingStyleName": "warn"
22199
22145
  })
22200
22146
  }, /*#__PURE__*/React__default["default"].createElement("span", {
@@ -22222,7 +22168,7 @@ var HelpArticle = function HelpArticle(_ref) {
22222
22168
  }, "Skip")))), /*#__PURE__*/React__default["default"].createElement("span", {
22223
22169
  className: "utilities_ops-app-frame_Help_Help--dateWrapper"
22224
22170
  }, /*#__PURE__*/React__default["default"].createElement("b", null, "Last updated on:"), ' ', /*#__PURE__*/React__default["default"].createElement("span", null, currentArticle.updatedDate ? formatPublishDate(currentArticle.updatedDate) : null))), currentArticle.relatedHelpResources && /*#__PURE__*/React__default["default"].createElement("div", {
22225
- className: _getClassName("relatedResourcesWrapper ".concat(showQuestionSection ? 'nonInteractive' : ''), _styleModuleImportMap$5, {
22171
+ className: _getClassName("relatedResourcesWrapper ".concat(showQuestionSection ? 'nonInteractive' : ''), _styleModuleImportMap$6, {
22226
22172
  "handleMissingStyleName": "warn"
22227
22173
  })
22228
22174
  }, /*#__PURE__*/React__default["default"].createElement("h3", null, "Related Help Resources"), /*#__PURE__*/React__default["default"].createElement("ul", null, currentArticle.relatedHelpResources.map(function (article) {
@@ -22235,7 +22181,7 @@ var HelpArticle = function HelpArticle(_ref) {
22235
22181
  }), article.post_title);
22236
22182
  }))), /*#__PURE__*/React__default["default"].createElement("div", {
22237
22183
  ref: questionSectionRef,
22238
- className: _getClassName("submitQuestionWrapper ".concat(showQuestionSection && !showSuccessSection ? 'noFlex' : ''), _styleModuleImportMap$5, {
22184
+ className: _getClassName("submitQuestionWrapper ".concat(showQuestionSection && !showSuccessSection ? 'noFlex' : ''), _styleModuleImportMap$6, {
22239
22185
  "handleMissingStyleName": "warn"
22240
22186
  })
22241
22187
  }, !showQuestionSection ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("h2", null, "Got more questions?"), /*#__PURE__*/React__default["default"].createElement("p", null, "If these resources are not enough to satisfy your queries then"), /*#__PURE__*/React__default["default"].createElement("p", null, /*#__PURE__*/React__default["default"].createElement("b", null, "Feel free to submit your question here.")), /*#__PURE__*/React__default["default"].createElement("span", {
@@ -22294,7 +22240,7 @@ var HelpArticle = function HelpArticle(_ref) {
22294
22240
  }
22295
22241
  })), /*#__PURE__*/React__default["default"].createElement("span", {
22296
22242
  onClick: questionSubmitHandler,
22297
- className: _getClassName("submitBtn ".concat(!question.length || category === 'selectCategory' ? 'disable' : ''), _styleModuleImportMap$5, {
22243
+ className: _getClassName("submitBtn ".concat(!question.length || category === 'selectCategory' ? 'disable' : ''), _styleModuleImportMap$6, {
22298
22244
  "handleMissingStyleName": "warn"
22299
22245
  })
22300
22246
  }, "Submit")) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("img", {
@@ -22428,7 +22374,7 @@ var ReleaseNote = function ReleaseNote(_ref) {
22428
22374
  })));
22429
22375
  };
22430
22376
 
22431
- var _styleModuleImportMap$4 = {
22377
+ var _styleModuleImportMap$5 = {
22432
22378
  "./Help.css": {
22433
22379
  "backdrop": "utilities_ops-app-frame_Help_Help--backdrop",
22434
22380
  "miHelpSideBar": "utilities_ops-app-frame_Help_Help--miHelpSideBar",
@@ -23043,7 +22989,7 @@ var HelpSideBar = function HelpSideBar(_ref) {
23043
22989
  height: "calc(100dvh - ".concat(notifications !== null && notifications !== void 0 && notifications.length ? sideBarTopValue : 48, "px)")
23044
22990
  },
23045
22991
  ref: mihelpRef,
23046
- className: _getClassName("miHelpSideBar ".concat(!helpContent || isChrome() && overFlowHidden || !isChrome() && showQuestionSection ? 'overFlowHidden' : ''), _styleModuleImportMap$4, {
22992
+ className: _getClassName("miHelpSideBar ".concat(!helpContent || isChrome() && overFlowHidden || !isChrome() && showQuestionSection ? 'overFlowHidden' : ''), _styleModuleImportMap$5, {
23047
22993
  "handleMissingStyleName": "warn"
23048
22994
  })
23049
22995
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -23085,7 +23031,7 @@ var HelpSideBar = function HelpSideBar(_ref) {
23085
23031
  name: "open_in_new",
23086
23032
  variant: "material"
23087
23033
  }))), /*#__PURE__*/React__default["default"].createElement("div", {
23088
- className: _getClassName("searchWrapper ".concat(showQuestionSection ? 'nonInteractive' : ''), _styleModuleImportMap$4, {
23034
+ className: _getClassName("searchWrapper ".concat(showQuestionSection ? 'nonInteractive' : ''), _styleModuleImportMap$5, {
23089
23035
  "handleMissingStyleName": "warn"
23090
23036
  })
23091
23037
  }, /*#__PURE__*/React__default["default"].createElement("input", {
@@ -25542,7 +25488,7 @@ var SettingsView = /*#__PURE__*/function (_React$Component) {
25542
25488
  }]);
25543
25489
  }(React__default["default"].Component);
25544
25490
 
25545
- var css_248z$9 = ".utilities_ops-announcements_Banner--appBarContentBox {\r\n word-break: break-all;\r\n white-space: pre-wrap;\r\n font-weight: 600;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContent {\r\n padding: 10px 10px;\r\n font-size: 13px;\r\n width: 95%;\r\n display: flex;\r\n align-items: center;\r\n grid-gap: 20px;\r\n gap: 20px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationInfoBar {\r\n display: flex;\r\n color: #6c7a89;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n width: 90%;\r\n font-size: 12px;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationInfoBar b {\r\n color: #171717;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationInfoBox {\r\n color: white;\r\n width: 26px;\r\n min-height: 26px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContentBox {\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n overflow: hidden;\r\n /* font-weight: 600; */\r\n /* autoprefixer: off */\r\n -webkit-box-orient: vertical;\r\n /* autoprefixer: on */\r\n font-size: 12px;\r\n color: #201f1e;\r\n cursor: default;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContentBox * {\r\n display: inline;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContentBox a {\r\n text-decoration: underline;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationBarContentBox {\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n overflow: hidden;\r\n width: 95%;\r\n /* font-weight: 600; */\r\n /* autoprefixer: off */\r\n -webkit-box-orient: vertical;\r\n /* autoprefixer: on */\r\n font-size: 12px;\r\n padding: 5px 5px;\r\n min-height: 20px;\r\n padding: 4px 5px 3px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationInfoBox b {\r\n color: #171717;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationInfoBox i {\r\n font-size: 20px !important;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n grid-gap: 10px;\r\n gap: 10px;\r\n font-size: 12px;\r\n align-items: center;\r\n padding: 0px 10px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer .utilities_ops-announcements_Banner--notificationLeftBtn i {\r\n position: relative;\r\n right: -4px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer .utilities_ops-announcements_Banner--notificationCountContainer {\r\n width: 50px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationContainer {\r\n display: flex;\r\n flex-direction: row;\r\n /* padding: 10px 10px; */\r\n grid-gap: 5px;\r\n gap: 5px;\r\n min-height: 40px;\r\n width: 100%;\r\n /* padding-top: env(safe-area-inset-top, 0px);\r\n position: sticky;\r\n top: 0; */\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar.utilities_ops-announcements_Banner--notificationContainer {\r\n padding: 8px 6px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationInfoBox {\r\n color: white;\r\n width: 52px;\r\n min-height: 52px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationInfoBox {\r\n color: white;\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-right: 6px;\r\n}\r\n.utilities_ops-announcements_Banner--notificationBarBtn {\r\n width: 52px;\r\n min-height: 52px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar .utilities_ops-announcements_Banner--notificationBarBtn {\r\n width: auto;\r\n min-height: auto;\r\n align-items: flex-start;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer i {\r\n font-size: 22px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar .utilities_ops-announcements_Banner--notificationBarBtn i {\r\n font-size: 20px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationContainer.utilities_ops-announcements_Banner--tabNotificationBar {\r\n flex-direction: column;\r\n /* padding: 10px 10px; */\r\n grid-gap: 0px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationContainer.utilities_ops-announcements_Banner--tabNotificationBar i {\r\n font-size: 13px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--arrowTipContainer {\r\n width: 0px;\r\n height: 0px;\r\n border-left: 8px solid transparent;\r\n border-right: 8px solid transparent;\r\n border-bottom: 13px solid white;\r\n position: absolute;\r\n top: 51px;\r\n right: 50px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--appBarContentWrapper {\r\n padding-right: 10px;\r\n font-size: 12px;\r\n flex: 1 1 0%;\r\n display: flex;\r\n flex-direction: column;\r\n grid-gap: 4px;\r\n gap: 4px;\r\n margin-top: 5px;\r\n max-width: 100%;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar .utilities_ops-announcements_Banner--appBarContentWrapper {\r\n padding-left: 10px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--appBarContentWrapper b {\r\n color: #171717;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--feedUrl {\r\n text-decoration: none !important;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--feedUrl i {\r\n font-size: 14px;\r\n cursor: pointer;\r\n color: #1d5ab9;\r\n left: 2px;\r\n position: relative;\r\n top: 2px;\r\n margin-right: 3px;\r\n}\r\n\r\n@media (max-width: 1760px) {\r\n .utilities_ops-announcements_Banner--notificationBarContent input {\r\n width: 331px !important;\r\n }\r\n}\r\n";
25491
+ var css_248z$9 = ".utilities_ops-announcements_Banner--appBarContentBox {\r\n word-break: break-word;\r\n word-wrap: anywhere;\r\n white-space: pre-wrap;\r\n font-weight: 600;\r\n max-width: 100%;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContent {\r\n padding: 10px 10px;\r\n font-size: 13px;\r\n width: 95%;\r\n display: flex;\r\n align-items: center;\r\n grid-gap: 20px;\r\n gap: 20px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationInfoBar {\r\n display: flex;\r\n color: #6c7a89;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n width: 90%;\r\n font-size: 12px;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationInfoBar b {\r\n color: #171717;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationInfoBox {\r\n color: white;\r\n width: 26px;\r\n min-height: 26px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContentBox {\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n overflow: hidden;\r\n /* font-weight: 600; */\r\n /* autoprefixer: off */\r\n -webkit-box-orient: vertical;\r\n /* autoprefixer: on */\r\n font-size: 12px;\r\n color: #201f1e;\r\n cursor: default;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContentBox * {\r\n display: inline;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBarContentBox a {\r\n text-decoration: underline;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--tabNotificationBarContentBox {\r\n display: -webkit-box;\r\n -webkit-line-clamp: 2;\r\n overflow: hidden;\r\n width: 95%;\r\n /* font-weight: 600; */\r\n /* autoprefixer: off */\r\n -webkit-box-orient: vertical;\r\n /* autoprefixer: on */\r\n font-size: 12px;\r\n padding: 5px 5px;\r\n min-height: 20px;\r\n padding: 4px 5px 3px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationInfoBox b {\r\n color: #171717;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationInfoBox i {\r\n font-size: 20px !important;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n grid-gap: 10px;\r\n gap: 10px;\r\n font-size: 12px;\r\n align-items: center;\r\n padding: 0px 10px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer .utilities_ops-announcements_Banner--notificationLeftBtn i {\r\n position: relative;\r\n right: -4px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer .utilities_ops-announcements_Banner--notificationCountContainer {\r\n width: 50px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationContainer {\r\n display: flex;\r\n flex-direction: row;\r\n /* padding: 10px 10px; */\r\n grid-gap: 5px;\r\n gap: 5px;\r\n min-height: 40px;\r\n width: 100%;\r\n /* padding-top: env(safe-area-inset-top, 0px);\r\n position: sticky;\r\n top: 0; */\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar.utilities_ops-announcements_Banner--notificationContainer {\r\n padding: 8px 6px;\r\n min-width: 0;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationInfoBox {\r\n color: white;\r\n width: 52px;\r\n min-height: 52px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationInfoBox {\r\n color: white;\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-right: 6px;\r\n}\r\n.utilities_ops-announcements_Banner--notificationBarBtn {\r\n width: 52px;\r\n min-height: 52px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar .utilities_ops-announcements_Banner--notificationBarBtn {\r\n width: auto;\r\n min-height: auto;\r\n align-items: flex-start;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationBtnContainer i {\r\n font-size: 22px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar .utilities_ops-announcements_Banner--notificationBarBtn i {\r\n font-size: 20px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationContainer.utilities_ops-announcements_Banner--tabNotificationBar {\r\n flex-direction: column;\r\n /* padding: 10px 10px; */\r\n grid-gap: 0px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--notificationContainer.utilities_ops-announcements_Banner--tabNotificationBar i {\r\n font-size: 13px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--arrowTipContainer {\r\n width: 0px;\r\n height: 0px;\r\n border-left: 8px solid transparent;\r\n border-right: 8px solid transparent;\r\n border-bottom: 13px solid white;\r\n position: absolute;\r\n top: 51px;\r\n right: 50px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--appBarContentWrapper {\r\n padding-right: 10px;\r\n font-size: 12px;\r\n flex: 1 1 0%;\r\n min-width: 0;\r\n display: flex;\r\n flex-direction: column;\r\n grid-gap: 4px;\r\n gap: 4px;\r\n margin-top: 5px;\r\n max-width: 100%;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBarNotificationMeta {\r\n display: flex;\r\n flex-wrap: wrap;\r\n min-width: 0;\r\n align-items: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideBar .utilities_ops-announcements_Banner--appBarContentWrapper {\r\n padding-left: 10px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--appBarContentWrapper b {\r\n color: #171717;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--feedUrl {\r\n text-decoration: none !important;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--feedUrl i {\r\n font-size: 14px;\r\n cursor: pointer;\r\n color: #1d5ab9;\r\n left: 2px;\r\n position: relative;\r\n top: 2px;\r\n margin-right: 3px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroup {\r\n border: 1px solid #e1dfdd;\r\n border-radius: 8px;\r\n padding: 12px;\r\n margin-bottom: 12px;\r\n background-color: #ffffff;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupHeader {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-bottom: 10px;\r\n min-height: 28px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupHeaderWithBack {\r\n position: relative;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupHeaderTitle {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationBackBtn {\r\n position: absolute;\r\n left: 0;\r\n top: 50%;\r\n -webkit-transform: translateY(-50%);\r\n transform: translateY(-50%);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 0;\r\n margin: 0;\r\n border: none;\r\n background: none;\r\n color: #3261bd;\r\n cursor: pointer;\r\n width: 28px;\r\n height: 28px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationBackBtn i {\r\n font-size: 18px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupAppIcon {\r\n width: 20px;\r\n height: 20px;\r\n -o-object-fit: contain;\r\n object-fit: contain;\r\n -webkit-filter: invert(24%) sepia(100%) saturate(1350%) hue-rotate(201deg) brightness(96%) contrast(93%);\r\n filter: invert(24%) sepia(100%) saturate(1350%) hue-rotate(201deg) brightness(96%) contrast(93%);\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupAppIconPlaceholder {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 4px;\r\n background-color: #deecf9;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupAppName {\r\n color: #3261bd;\r\n color: var(--Type-Copart-Neue-Rest, #3261bd);\r\n font-family: 'Segoe UI', SegoeUI, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, sans-serif;\r\n font-size: 16px;\r\n font-style: normal;\r\n font-weight: 600;\r\n line-height: 20px;\r\n text-transform: uppercase;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationGroupList {\r\n display: flex;\r\n flex-direction: column;\r\n grid-gap: 6px;\r\n gap: 6px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRow {\r\n display: flex;\r\n align-items: flex-start;\r\n grid-gap: 8px;\r\n gap: 8px;\r\n padding: 8px 10px;\r\n border-radius: 4px;\r\n min-height: 36px;\r\n min-width: 0;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowIcon {\r\n color: white;\r\n width: 20px;\r\n height: 20px;\r\n min-width: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n margin-top: 1px;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowContent {\r\n flex: 1;\r\n min-width: 0;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #201f1e;\r\n line-height: 1.35;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowText {\r\n word-break: break-word;\r\n word-wrap: anywhere;\r\n white-space: normal;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowText * {\r\n display: inline;\r\n word-wrap: inherit;\r\n word-break: inherit;\r\n white-space: inherit;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowMeta {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-end;\r\n grid-gap: 4px;\r\n gap: 4px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowLink {\r\n text-decoration: none;\r\n line-height: 1;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowLink i {\r\n font-size: 16px;\r\n color: #1d5ab9;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationRowTime {\r\n font-size: 11px;\r\n color: #605e5c;\r\n font-weight: 400;\r\n white-space: nowrap;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationViewAll {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n grid-gap: 6px;\r\n gap: 6px;\r\n width: 100%;\r\n margin-top: 10px;\r\n padding: 0;\r\n border: none;\r\n background: none;\r\n color: #0f4cab;\r\n font-size: 13px;\r\n font-weight: 600;\r\n line-height: 1;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-announcements_Banner--sideNotificationViewAll i {\r\n display: inline-flex;\r\n align-items: center;\r\n font-size: 16px;\r\n line-height: 1;\r\n}\r\n\r\n@media (max-width: 1760px) {\r\n .utilities_ops-announcements_Banner--notificationBarContent input {\r\n width: 331px !important;\r\n }\r\n}\r\n";
25546
25492
  styleInject(css_248z$9);
25547
25493
 
25548
25494
  function getViewedNotifications() {
@@ -25569,15 +25515,39 @@ function addNotificationToViewedList(notification) {
25569
25515
  }
25570
25516
  }
25571
25517
 
25572
- function filterOutViewedNotifications(notifications) {
25573
- var viewedNotifications = getViewedNotifications();
25574
- return notifications.filter(function (notification) {
25575
- return !viewedNotifications[notification.notificationId];
25576
- });
25518
+ // Removes entries whose endsAt has already passed.
25519
+ // endsAt is stored as a UTC string without Z (e.g. '2024-01-15 14:30:00'),
25520
+ // matching the end_date_ts_utc format used in generateQuery's Solr filter.
25521
+ // Any entry with endsAt < now will never be returned by the API again, so it
25522
+ // can be safely dropped.
25523
+ function pruneExpiredViewedNotifications() {
25524
+ try {
25525
+ var viewed = getViewedNotifications();
25526
+ if (!viewed || _typeof$1(viewed) !== 'object' || Array.isArray(viewed)) return;
25527
+ var entries = Object.entries(viewed);
25528
+ if (!entries.length) return;
25529
+ var now = new Date();
25530
+ var pruned = Object.fromEntries(entries.filter(function (_ref) {
25531
+ var _ref2 = _slicedToArray(_ref, 2),
25532
+ entry = _ref2[1];
25533
+ if (!entry || !entry.endsAt) return false;
25534
+ var endsAt = new Date(String(entry.endsAt).replace(' ', 'T') + 'Z');
25535
+ return !isNaN(endsAt.getTime()) && endsAt > now;
25536
+ }));
25537
+ // Skip the write if nothing was pruned to avoid unnecessary localStorage I/O
25538
+ if (Object.keys(pruned).length === entries.length) return;
25539
+ localStorage.setItem('viewedNotifications', JSON.stringify(pruned));
25540
+ } catch (err) {
25541
+ console.error(err);
25542
+ }
25577
25543
  }
25578
- function isOutOfRange(startDate, endDate) {
25579
- var current = new Date();
25580
- return new Date(startDate) < current && current < new Date(endDate);
25544
+
25545
+ // Parses a UTC date string like '2024-01-15 14:30:00' (no Z suffix) into a Date object.
25546
+ // startsAt/endsAt come from the API with the T and Z stripped, so we restore them here.
25547
+ function parseAsUTCDate(dateStr) {
25548
+ if (!dateStr) return null;
25549
+ var d = new Date(String(dateStr).replace(' ', 'T') + 'Z');
25550
+ return isNaN(d.getTime()) ? null : d;
25581
25551
  }
25582
25552
  var getLocalEndTime = function getLocalEndTime(notification) {
25583
25553
  var endsAt = notification.endsAt,
@@ -25588,76 +25558,93 @@ var getLocalEndTime = function getLocalEndTime(notification) {
25588
25558
  if (isRecipientTimeZone && endDateTimeZone !== 'UTC') {
25589
25559
  return endsAt;
25590
25560
  }
25591
- return moment.utc(endsAt).local().format('YYYY-MM-DD HH:mm:ss');
25561
+ var d = parseAsUTCDate(endsAt);
25562
+ if (!d) return null;
25563
+ var pad = function pad(n) {
25564
+ return String(n).padStart(2, '0');
25565
+ };
25566
+ return "".concat(d.getFullYear(), "-").concat(pad(d.getMonth() + 1), "-").concat(pad(d.getDate()), " ").concat(pad(d.getHours()), ":").concat(pad(d.getMinutes()), ":").concat(pad(d.getSeconds()));
25592
25567
  };
25593
25568
  function filterOutExpiredNotifications(notifications) {
25569
+ var now = new Date();
25594
25570
  return filter$1(function (_ref) {
25595
25571
  var startsAt = _ref.startsAt,
25596
25572
  endsAt = _ref.endsAt,
25597
25573
  timeZoneType = _ref.timeZoneType,
25598
25574
  endDateTimeZone = _ref.endDateTimeZone;
25599
- var startTime = timeZoneType === 'Recipient TimeZone' || timeZoneType === 'RPTZ' ? startsAt : moment.utc(startsAt).local().format('YYYY-MM-DD HH:mm:ss');
25575
+ var isRecipientTZ = timeZoneType === 'Recipient TimeZone' || timeZoneType === 'RPTZ';
25576
+ var startDate = isRecipientTZ ? new Date(String(startsAt).replace(' ', 'T')) : parseAsUTCDate(startsAt);
25600
25577
  var localEndTime = getLocalEndTime({
25601
25578
  endsAt: endsAt,
25602
25579
  timeZoneType: timeZoneType,
25603
25580
  endDateTimeZone: endDateTimeZone
25604
25581
  });
25605
- if (!localEndTime) return false;
25606
- return isOutOfRange(startTime, localEndTime);
25582
+ if (!localEndTime || !startDate) return false;
25583
+ var endDate = new Date(String(localEndTime).replace(' ', 'T'));
25584
+ return startDate < now && now < endDate;
25607
25585
  })(notifications);
25608
25586
  }
25609
- function filterOutNotificationForOtherApps(notifications) {
25610
- var currentApp = window.location.pathname === '/' ? 'home' : window.location.pathname;
25611
- var tilesConfig = storage$2.getLocalItem('opsportal-core:config').tiles || [];
25612
- var tile = tilesConfig.find(function (item) {
25613
- return item.path === currentApp || "".concat(item.path, "/") === currentApp || currentApp.startsWith(item.path);
25614
- }) || {};
25615
- return notifications.filter(function (notification) {
25616
- var targetApps = pathOr$1(null, ['targetAudience', 'targetApplications'])(notification);
25617
- var apps = pathOr$1([], [0, 'applications'])(targetApps);
25618
- if (currentApp === 'home') {
25619
- return targetApps === null || apps.includes("Ops Home");
25620
- } else {
25621
- return targetApps === null || apps.includes(tile.title || '');
25622
- }
25623
- });
25624
- }
25625
- function filterOutNotificationByAudience(notifications) {
25626
- var userEmail = storage$2.userEmail;
25627
- var yardNumber = storage$2.activeYardNumber;
25628
- // const countryCodes = window.location.hostname.includes('.com') ? ["USA", "CAN"] : ["ARE", "OMN", "BHR", "IRL", "GBR"]
25629
- return notifications.filter(function (notification) {
25630
- // if (!countryCodes.includes(notification.countryCode)) return false
25631
- var targets = pathOr$1([], ['targetAudience', 'targets'], notification);
25632
- if (!targets.length) return true;
25633
- return targets.some(function (target) {
25634
- switch (target.type) {
25635
- case 'users':
25636
- var usersList = pathOr$1([], ['emails'])(target);
25637
- return usersList.includes(userEmail);
25638
- case 'groups':
25639
- var groups = pathOr$1([], ['groups'])(target);
25640
- return groups.some(function (group) {
25641
- var users = pathOr$1([], ['users'])(group);
25642
- return users.includes(userEmail) || users.includes('*');
25643
- });
25644
- case 'yards':
25645
- var yards = pathOr$1([], ['yards'], target);
25646
- return yards.includes(yardNumber);
25647
- default:
25648
- return false;
25649
- }
25650
- });
25651
- });
25652
- }
25653
- function filterOutInActiveNotification(notifications) {
25654
- return notifications.filter(function (notification) {
25655
- return (notification === null || notification === void 0 ? void 0 : notification.status) === 'A';
25656
- });
25657
- }
25658
25587
  function filterNotifications(notifications) {
25659
25588
  try {
25660
- return compose(filterOutInActiveNotification, filterOutNotificationByAudience, filterOutViewedNotifications, filterOutExpiredNotifications, filterOutNotificationForOtherApps)(notifications);
25589
+ var coreAppConfig = storage$2.getLocalItem('opsportal-core:config') || {};
25590
+ var filterByTargets = coreAppConfig.filterNotificationsByTargets;
25591
+ // filterOutViewedNotifications
25592
+ var viewedNotifications = getViewedNotifications();
25593
+ // filterOutExpiredNotifications
25594
+ var now = new Date();
25595
+ // filterOutNotificationByAudience — only when filterNotificationsByTargets is true;
25596
+ // otherwise audience/app filtering is handled by channel_names in Solr query
25597
+ var userEmail = filterByTargets ? storage$2.userEmail : null;
25598
+ var yardNumber = filterByTargets ? storage$2.activeYardNumber : null;
25599
+ // filterOutNotificationForOtherApps
25600
+ var currentApp = filterByTargets ? window.location.pathname === '/' ? 'home' : window.location.pathname : null;
25601
+ var tile = filterByTargets ? (coreAppConfig.tiles || []).find(function (item) {
25602
+ return item.path === currentApp || "".concat(item.path, "/") === currentApp || currentApp.startsWith(item.path);
25603
+ }) || {} : null;
25604
+ return notifications.filter(function (notification) {
25605
+ // filterOutInActiveNotification
25606
+ if ((notification === null || notification === void 0 ? void 0 : notification.status) !== 'A') return false;
25607
+
25608
+ // filterOutViewedNotifications
25609
+ if (viewedNotifications[notification.notificationId]) return false;
25610
+
25611
+ // filterOutExpiredNotifications
25612
+ var startsAt = notification.startsAt,
25613
+ endsAt = notification.endsAt,
25614
+ timeZoneType = notification.timeZoneType,
25615
+ endDateTimeZone = notification.endDateTimeZone;
25616
+ var isRecipientTZ = timeZoneType === 'Recipient TimeZone' || timeZoneType === 'RPTZ';
25617
+ var startDate = isRecipientTZ ? new Date(String(startsAt).replace(' ', 'T')) : parseAsUTCDate(startsAt);
25618
+ var endDate = !endsAt ? null : isRecipientTZ && endDateTimeZone !== 'UTC' ? new Date(String(endsAt).replace(' ', 'T')) : parseAsUTCDate(endsAt);
25619
+ if (!endDate || !startDate || !(startDate < now && now < endDate)) return false;
25620
+ if (filterByTargets) {
25621
+ // filterOutNotificationForOtherApps
25622
+ var targetApps = pathOr$1(null, ['targetAudience', 'targetApplications'])(notification);
25623
+ var apps = pathOr$1([], [0, 'applications'])(targetApps);
25624
+ var appMatch = currentApp === 'home' ? targetApps === null || apps.includes('Ops Home') : targetApps === null || apps.includes(tile.title || '');
25625
+ if (!appMatch) return false;
25626
+
25627
+ // filterOutNotificationByAudience
25628
+ var targets = pathOr$1([], ['targetAudience', 'targets'], notification);
25629
+ if (!targets.length) return true;
25630
+ return targets.some(function (target) {
25631
+ switch (target.type) {
25632
+ case 'users':
25633
+ return pathOr$1([], ['emails'])(target).includes(userEmail);
25634
+ case 'groups':
25635
+ return pathOr$1([], ['groups'])(target).some(function (group) {
25636
+ var users = pathOr$1([], ['users'])(group);
25637
+ return users.includes(userEmail) || users.includes('*');
25638
+ });
25639
+ case 'yards':
25640
+ return pathOr$1([], ['yards'], target).includes(yardNumber);
25641
+ default:
25642
+ return false;
25643
+ }
25644
+ });
25645
+ }
25646
+ return true;
25647
+ });
25661
25648
  } catch (err) {
25662
25649
  console.error(err);
25663
25650
  return notifications;
@@ -25671,24 +25658,71 @@ function getPriorityCode(category) {
25671
25658
  information: 1
25672
25659
  }[category.toLowerCase()];
25673
25660
  }
25674
- function sortNotifications(notifications) {
25675
- var newNotifications = clone$1(notifications);
25676
- var notificationsWithStartTs = newNotifications.map(function (n) {
25677
- var isRecipientTimeZone = n.timeZoneType === 'Recipient TimeZone' || n.timeZoneType === 'RPTZ';
25678
- var localStart = isRecipientTimeZone ? n.startsAt : moment.utc(n.startsAt).local().format('YYYY-MM-DD HH:mm:ss');
25679
- var startTimestamp = localStart ? new Date(localStart).getTime() : 0;
25680
- return _objectSpread2(_objectSpread2({}, n), {}, {
25681
- _startTimestamp: startTimestamp
25661
+ var MAX_NOTIFICATIONS_PER_APP_GROUP = 5;
25662
+ function getAppTileIcon(sourceApplication) {
25663
+ var _storage$getLocalItem;
25664
+ if (!sourceApplication) return null;
25665
+ var tiles = ((_storage$getLocalItem = storage$2.getLocalItem('opsportal-core:config')) === null || _storage$getLocalItem === void 0 ? void 0 : _storage$getLocalItem.tiles) || [];
25666
+ var normalized = sourceApplication.trim().toLowerCase();
25667
+ var tile = tiles.find(function (t) {
25668
+ return (t.title || '').trim().toLowerCase() === normalized || (t.appName || '').trim().toLowerCase() === normalized;
25669
+ });
25670
+ return tile ? tile.faIconUrl || tile.iconUrl : null;
25671
+ }
25672
+ function groupNotificationsByApp(notifications) {
25673
+ var maxPerGroup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : MAX_NOTIFICATIONS_PER_APP_GROUP;
25674
+ var groupMap = new Map();
25675
+ var groupOrder = [];
25676
+ notifications.forEach(function (notification) {
25677
+ var appName = notification.sourceApplication || 'Other';
25678
+ if (!groupMap.has(appName)) {
25679
+ groupMap.set(appName, []);
25680
+ groupOrder.push(appName);
25681
+ }
25682
+ groupMap.get(appName).push(notification);
25683
+ });
25684
+ groupOrder.sort(function (a, b) {
25685
+ return a.localeCompare(b, undefined, {
25686
+ sensitivity: 'base'
25682
25687
  });
25683
25688
  });
25684
- var dateSortedNotifications = notificationsWithStartTs.sort(function (a, b) {
25685
- return b._startTimestamp - a._startTimestamp;
25689
+ return groupOrder.map(function (appName) {
25690
+ var all = groupMap.get(appName);
25691
+ return {
25692
+ appName: appName,
25693
+ totalCount: all.length,
25694
+ notifications: all.slice(0, maxPerGroup),
25695
+ hasMore: all.length > maxPerGroup
25696
+ };
25697
+ });
25698
+ }
25699
+ function getExpandedAppGroup(notifications, appName) {
25700
+ var appNotifications = notifications.filter(function (notification) {
25701
+ return (notification.sourceApplication || 'Other') === appName;
25686
25702
  });
25703
+ return {
25704
+ appName: appName,
25705
+ totalCount: appNotifications.length,
25706
+ notifications: appNotifications,
25707
+ hasMore: false
25708
+ };
25709
+ }
25710
+ function sortNotifications(notifications) {
25687
25711
  try {
25688
- return sortWith$1([ascend$1(compose(getPriorityCode, prop$1('categoryDescription')))], dateSortedNotifications);
25712
+ return _toConsumableArray(notifications).map(function (n) {
25713
+ var isRecipientTZ = n.timeZoneType === 'Recipient TimeZone' || n.timeZoneType === 'RPTZ';
25714
+ var startDate = isRecipientTZ ? new Date(String(n.startsAt).replace(' ', 'T')) : parseAsUTCDate(n.startsAt);
25715
+ return _objectSpread2(_objectSpread2({}, n), {}, {
25716
+ _startTimestamp: startDate ? startDate.getTime() : 0,
25717
+ _priorityCode: getPriorityCode(n.categoryDescription)
25718
+ });
25719
+ }).sort(function (a, b) {
25720
+ var priorityDiff = (a._priorityCode != null ? a._priorityCode : 99) - (b._priorityCode != null ? b._priorityCode : 99);
25721
+ return priorityDiff !== 0 ? priorityDiff : b._startTimestamp - a._startTimestamp;
25722
+ });
25689
25723
  } catch (err) {
25690
25724
  console.error(err);
25691
- return dateSortedNotifications;
25725
+ return _toConsumableArray(notifications);
25692
25726
  }
25693
25727
  }
25694
25728
  startsWith$1('http://');
@@ -25720,9 +25754,10 @@ var getTimeDiff = function getTimeDiff(startsAt) {
25720
25754
  }
25721
25755
  return '';
25722
25756
  };
25757
+ var SANITIZE_REGEX = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>|<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi;
25723
25758
  var SanitizeNotificationContent = function SanitizeNotificationContent(str) {
25724
- var regex = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>|<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi;
25725
- return str.replace(regex, '');
25759
+ SANITIZE_REGEX.lastIndex = 0;
25760
+ return str.replace(SANITIZE_REGEX, '');
25726
25761
  };
25727
25762
 
25728
25763
  var useWindowSize = function useWindowSize() {
@@ -25829,6 +25864,7 @@ var Banner = function Banner(props) {
25829
25864
  startsAt = notification.startsAt,
25830
25865
  timeZoneType = notification.timeZoneType,
25831
25866
  showSideBar = notification.showSideBar,
25867
+ isGroupedSideBar = notification.isGroupedSideBar,
25832
25868
  action = notification.action,
25833
25869
  content = notification.content,
25834
25870
  sourceApplication = notification.sourceApplication,
@@ -25939,28 +25975,73 @@ var Banner = function Banner(props) {
25939
25975
  variant: "material"
25940
25976
  }))));
25941
25977
  };
25942
- var sideNotificationBar = function sideNotificationBar() {
25978
+ var categoryKey = categoryDescription.toLowerCase();
25979
+ var categoryColor = alertInfoColorMapping[categoryKey];
25980
+ var categoryBackground = alertBackgroundColorMapping[categoryKey];
25981
+ var groupedSideNotificationRow = function groupedSideNotificationRow() {
25943
25982
  return /*#__PURE__*/React__default["default"].createElement("div", {
25944
- className: "utilities_ops-announcements_Banner--notificationContainer utilities_ops-announcements_Banner--sideBar",
25983
+ className: "utilities_ops-announcements_Banner--sideNotificationRow",
25945
25984
  style: {
25946
- backgroundColor: alertBackgroundColorMapping[categoryDescription.toLowerCase()]
25985
+ backgroundColor: categoryBackground
25947
25986
  }
25948
25987
  }, /*#__PURE__*/React__default["default"].createElement("div", {
25949
- className: "utilities_ops-announcements_Banner--appBarContentWrapper",
25988
+ className: "utilities_ops-announcements_Banner--sideNotificationRowIcon",
25989
+ style: {
25990
+ backgroundColor: categoryColor
25991
+ }
25992
+ }, /*#__PURE__*/React__default["default"].createElement(coreComponents.IconV2, {
25993
+ name: alertToIconMapping[categoryKey],
25950
25994
  style: {
25951
- borderLeft: "2px solid ".concat(alertInfoColorMapping[categoryDescription.toLowerCase()])
25995
+ fontSize: '11px'
25952
25996
  }
25997
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
25998
+ className: "utilities_ops-announcements_Banner--sideNotificationRowContent"
25953
25999
  }, /*#__PURE__*/React__default["default"].createElement("div", {
26000
+ className: "utilities_ops-announcements_Banner--sideNotificationRowText",
26001
+ dangerouslySetInnerHTML: {
26002
+ __html: SanitizeNotificationContent(content)
26003
+ }
26004
+ }), action && ActionComponent && /*#__PURE__*/React__default["default"].createElement("div", {
26005
+ style: {
26006
+ marginTop: '4px'
26007
+ }
26008
+ }, /*#__PURE__*/React__default["default"].createElement(ActionComponent, {
26009
+ notification: notification,
26010
+ saveActionComponentState: saveActionComponentState
26011
+ }))), /*#__PURE__*/React__default["default"].createElement("div", {
26012
+ className: "utilities_ops-announcements_Banner--sideNotificationRowMeta"
26013
+ }, (feedUrl || link) && /*#__PURE__*/React__default["default"].createElement("a", {
26014
+ href: feedUrl || link,
26015
+ target: "_blank",
26016
+ rel: "noopener noreferrer",
26017
+ className: "utilities_ops-announcements_Banner--sideNotificationRowLink"
26018
+ }, /*#__PURE__*/React__default["default"].createElement(coreComponents.Icon, {
26019
+ name: "open_in_new",
26020
+ variant: "material"
26021
+ })), /*#__PURE__*/React__default["default"].createElement("span", {
26022
+ className: "utilities_ops-announcements_Banner--sideNotificationRowTime"
26023
+ }, timeDiff)));
26024
+ };
26025
+ var sideNotificationBar = function sideNotificationBar() {
26026
+ return isGroupedSideBar ? groupedSideNotificationRow() : /*#__PURE__*/React__default["default"].createElement("div", {
26027
+ className: "utilities_ops-announcements_Banner--notificationContainer utilities_ops-announcements_Banner--sideBar",
25954
26028
  style: {
25955
- display: 'flex'
26029
+ backgroundColor: categoryBackground
25956
26030
  }
26031
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
26032
+ className: "utilities_ops-announcements_Banner--appBarContentWrapper",
26033
+ style: {
26034
+ borderLeft: "2px solid ".concat(categoryColor)
26035
+ }
26036
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
26037
+ className: "utilities_ops-announcements_Banner--sideBarNotificationMeta"
25957
26038
  }, /*#__PURE__*/React__default["default"].createElement("div", {
25958
26039
  className: "utilities_ops-announcements_Banner--sideNotificationInfoBox",
25959
26040
  style: {
25960
- backgroundColor: alertInfoColorMapping[categoryDescription.toLowerCase()]
26041
+ backgroundColor: categoryColor
25961
26042
  }
25962
26043
  }, /*#__PURE__*/React__default["default"].createElement(coreComponents.IconV2, {
25963
- name: alertToIconMapping[categoryDescription.toLowerCase()],
26044
+ name: alertToIconMapping[categoryKey],
25964
26045
  style: {
25965
26046
  fontSize: '12px'
25966
26047
  }
@@ -26090,11 +26171,138 @@ var Banner = function Banner(props) {
26090
26171
  return mainNotificationBar();
26091
26172
  };
26092
26173
 
26174
+ var _styleModuleImportMap$4 = {
26175
+ "./Banner.css": {
26176
+ "appBarContentBox": "utilities_ops-announcements_Banner--appBarContentBox",
26177
+ "notificationBarContent": "utilities_ops-announcements_Banner--notificationBarContent",
26178
+ "tabNotificationInfoBar": "utilities_ops-announcements_Banner--tabNotificationInfoBar",
26179
+ "tabNotificationInfoBox": "utilities_ops-announcements_Banner--tabNotificationInfoBox",
26180
+ "notificationBarContentBox": "utilities_ops-announcements_Banner--notificationBarContentBox",
26181
+ "tabNotificationBarContentBox": "utilities_ops-announcements_Banner--tabNotificationBarContentBox",
26182
+ "notificationInfoBox": "utilities_ops-announcements_Banner--notificationInfoBox",
26183
+ "notificationBtnContainer": "utilities_ops-announcements_Banner--notificationBtnContainer",
26184
+ "notificationLeftBtn": "utilities_ops-announcements_Banner--notificationLeftBtn",
26185
+ "notificationCountContainer": "utilities_ops-announcements_Banner--notificationCountContainer",
26186
+ "notificationContainer": "utilities_ops-announcements_Banner--notificationContainer",
26187
+ "sideBar": "utilities_ops-announcements_Banner--sideBar",
26188
+ "sideNotificationInfoBox": "utilities_ops-announcements_Banner--sideNotificationInfoBox",
26189
+ "notificationBarBtn": "utilities_ops-announcements_Banner--notificationBarBtn",
26190
+ "tabNotificationBar": "utilities_ops-announcements_Banner--tabNotificationBar",
26191
+ "arrowTipContainer": "utilities_ops-announcements_Banner--arrowTipContainer",
26192
+ "appBarContentWrapper": "utilities_ops-announcements_Banner--appBarContentWrapper",
26193
+ "sideBarNotificationMeta": "utilities_ops-announcements_Banner--sideBarNotificationMeta",
26194
+ "feedUrl": "utilities_ops-announcements_Banner--feedUrl",
26195
+ "sideNotificationGroup": "utilities_ops-announcements_Banner--sideNotificationGroup",
26196
+ "sideNotificationGroupHeader": "utilities_ops-announcements_Banner--sideNotificationGroupHeader",
26197
+ "sideNotificationGroupHeaderWithBack": "utilities_ops-announcements_Banner--sideNotificationGroupHeaderWithBack",
26198
+ "sideNotificationGroupHeaderTitle": "utilities_ops-announcements_Banner--sideNotificationGroupHeaderTitle",
26199
+ "sideNotificationBackBtn": "utilities_ops-announcements_Banner--sideNotificationBackBtn",
26200
+ "sideNotificationGroupAppIcon": "utilities_ops-announcements_Banner--sideNotificationGroupAppIcon",
26201
+ "sideNotificationGroupAppIconPlaceholder": "utilities_ops-announcements_Banner--sideNotificationGroupAppIconPlaceholder",
26202
+ "sideNotificationGroupAppName": "utilities_ops-announcements_Banner--sideNotificationGroupAppName",
26203
+ "sideNotificationGroupList": "utilities_ops-announcements_Banner--sideNotificationGroupList",
26204
+ "sideNotificationRow": "utilities_ops-announcements_Banner--sideNotificationRow",
26205
+ "sideNotificationRowIcon": "utilities_ops-announcements_Banner--sideNotificationRowIcon",
26206
+ "sideNotificationRowContent": "utilities_ops-announcements_Banner--sideNotificationRowContent",
26207
+ "sideNotificationRowText": "utilities_ops-announcements_Banner--sideNotificationRowText",
26208
+ "sideNotificationRowMeta": "utilities_ops-announcements_Banner--sideNotificationRowMeta",
26209
+ "sideNotificationRowLink": "utilities_ops-announcements_Banner--sideNotificationRowLink",
26210
+ "sideNotificationRowTime": "utilities_ops-announcements_Banner--sideNotificationRowTime",
26211
+ "sideNotificationViewAll": "utilities_ops-announcements_Banner--sideNotificationViewAll"
26212
+ }
26213
+ };
26214
+ var SideNotificationGroup = function SideNotificationGroup(_ref) {
26215
+ var appName = _ref.appName,
26216
+ totalCount = _ref.totalCount,
26217
+ notifications = _ref.notifications,
26218
+ hasMore = _ref.hasMore,
26219
+ showBackButton = _ref.showBackButton,
26220
+ onBack = _ref.onBack,
26221
+ onViewAll = _ref.onViewAll,
26222
+ _onDismiss = _ref.onDismiss,
26223
+ ActionComponent = _ref.ActionComponent,
26224
+ saveActionComponentState = _ref.saveActionComponentState;
26225
+ var appIconUrl = getAppTileIcon(appName);
26226
+ return /*#__PURE__*/React__default["default"].createElement("div", {
26227
+ className: "utilities_ops-announcements_Banner--sideNotificationGroup"
26228
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
26229
+ className: _getClassName("sideNotificationGroupHeader".concat(showBackButton ? ' sideNotificationGroupHeaderWithBack' : ''), _styleModuleImportMap$4, {
26230
+ "handleMissingStyleName": "warn"
26231
+ })
26232
+ }, showBackButton && /*#__PURE__*/React__default["default"].createElement("button", {
26233
+ type: "button",
26234
+ className: "utilities_ops-announcements_Banner--sideNotificationBackBtn",
26235
+ onClick: onBack,
26236
+ "aria-label": "Back to all apps"
26237
+ }, /*#__PURE__*/React__default["default"].createElement(coreComponents.IconV2, {
26238
+ name: "angle-left"
26239
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
26240
+ className: "utilities_ops-announcements_Banner--sideNotificationGroupHeaderTitle"
26241
+ }, appIconUrl ? /*#__PURE__*/React__default["default"].createElement("img", {
26242
+ className: "utilities_ops-announcements_Banner--sideNotificationGroupAppIcon",
26243
+ src: appIconUrl,
26244
+ alt: ""
26245
+ }) : /*#__PURE__*/React__default["default"].createElement("div", {
26246
+ className: "utilities_ops-announcements_Banner--sideNotificationGroupAppIconPlaceholder"
26247
+ }), /*#__PURE__*/React__default["default"].createElement("span", {
26248
+ className: "utilities_ops-announcements_Banner--sideNotificationGroupAppName"
26249
+ }, appName, " (", totalCount, ")"))), /*#__PURE__*/React__default["default"].createElement("div", {
26250
+ className: "utilities_ops-announcements_Banner--sideNotificationGroupList"
26251
+ }, notifications.map(function (notification) {
26252
+ return /*#__PURE__*/React__default["default"].createElement(Banner, _extends$1({
26253
+ key: notification.notificationId
26254
+ }, notification, {
26255
+ showSideBar: true,
26256
+ isGroupedSideBar: true,
26257
+ onDismiss: function onDismiss() {
26258
+ return _onDismiss(notification);
26259
+ },
26260
+ ActionComponent: ActionComponent,
26261
+ saveActionComponentState: saveActionComponentState
26262
+ }));
26263
+ })), hasMore && /*#__PURE__*/React__default["default"].createElement("button", {
26264
+ type: "button",
26265
+ className: "utilities_ops-announcements_Banner--sideNotificationViewAll",
26266
+ onClick: onViewAll
26267
+ }, /*#__PURE__*/React__default["default"].createElement(coreComponents.Icon, {
26268
+ name: "open_in_new",
26269
+ variant: "material"
26270
+ }), /*#__PURE__*/React__default["default"].createElement("span", null, "View all")));
26271
+ };
26272
+
26273
+ var ESTIMATED_ITEM_HEIGHT = 80;
26274
+ var ESTIMATED_GROUP_HEIGHT = 320;
26275
+ var OVERSCAN = 3;
26276
+ function buildOffsets(count, itemHeights) {
26277
+ var defaultHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ESTIMATED_ITEM_HEIGHT;
26278
+ var offsets = new Array(count + 1);
26279
+ offsets[0] = 0;
26280
+ for (var i = 0; i < count; i++) {
26281
+ offsets[i + 1] = offsets[i] + (itemHeights[i] || defaultHeight) + 12;
26282
+ }
26283
+ return offsets;
26284
+ }
26285
+
26286
+ // Binary search: find the last index whose offset is <= scrollTop
26287
+ function findStartIndex(offsets, scrollTop) {
26288
+ var lo = 0;
26289
+ var hi = offsets.length - 2;
26290
+ while (lo < hi) {
26291
+ var mid = lo + hi + 1 >> 1;
26292
+ if (offsets[mid] <= scrollTop) {
26293
+ lo = mid;
26294
+ } else {
26295
+ hi = mid - 1;
26296
+ }
26297
+ }
26298
+ return lo;
26299
+ }
26093
26300
  var Notifications = function Notifications(_ref) {
26094
26301
  var notifications = _ref.notifications,
26095
26302
  _onDismiss = _ref.onDismiss;
26096
26303
  _ref.children;
26097
26304
  var showSideBar = _ref.showSideBar,
26305
+ sidebarOpen = _ref.sidebarOpen,
26098
26306
  ActionComponent = _ref.ActionComponent,
26099
26307
  saveActionComponentState = _ref.saveActionComponentState,
26100
26308
  notificationsTopContainerRef = _ref.notificationsTopContainerRef,
@@ -26108,18 +26316,131 @@ var Notifications = function Notifications(_ref) {
26108
26316
  _useState4 = _slicedToArray(_useState3, 2),
26109
26317
  last = _useState4[0],
26110
26318
  setLast = _useState4[1];
26319
+ var _useState5 = React.useState(null),
26320
+ _useState6 = _slicedToArray(_useState5, 2),
26321
+ expandedAppName = _useState6[0],
26322
+ setExpandedAppName = _useState6[1];
26323
+ var scrollRef = React.useRef(null);
26324
+ var itemHeightsRef = React.useRef({});
26325
+ var _useState7 = React.useState(0),
26326
+ _useState8 = _slicedToArray(_useState7, 2),
26327
+ scrollTop = _useState8[0],
26328
+ setScrollTop = _useState8[1];
26111
26329
  var onLeftButtonClick = function onLeftButtonClick() {
26112
26330
  return i === 0 ? setI(last) : setI(i - 1);
26113
26331
  };
26114
26332
  var onRightButtonClick = function onRightButtonClick() {
26115
26333
  return i === last ? setI(0) : setI(i + 1);
26116
26334
  };
26335
+ var resetSidebarView = React.useCallback(function () {
26336
+ setExpandedAppName(null);
26337
+ itemHeightsRef.current = {};
26338
+ setScrollTop(0);
26339
+ if (scrollRef.current) {
26340
+ scrollRef.current.scrollTop = 0;
26341
+ }
26342
+ }, []);
26117
26343
  React.useEffect(function () {
26118
26344
  if (notifications.length && notifications.length - 1 < i) {
26119
26345
  setI(notifications.length - 1);
26120
26346
  }
26121
26347
  setLast(notifications.length - 1);
26348
+ itemHeightsRef.current = {};
26349
+ if (expandedAppName) {
26350
+ var stillHasApp = notifications.some(function (n) {
26351
+ return (n.sourceApplication || 'Other') === expandedAppName;
26352
+ });
26353
+ if (!stillHasApp) {
26354
+ setExpandedAppName(null);
26355
+ }
26356
+ }
26122
26357
  }, [notifications]);
26358
+ React.useEffect(function () {
26359
+ if (sidebarOpen === false) {
26360
+ resetSidebarView();
26361
+ }
26362
+ }, [sidebarOpen, resetSidebarView]);
26363
+
26364
+ // Virtualizer state for the sidebar list
26365
+ var _useState9 = React.useState(600),
26366
+ _useState0 = _slicedToArray(_useState9, 2),
26367
+ viewportHeight = _useState0[0],
26368
+ setViewportHeight = _useState0[1];
26369
+ var rafPendingRef = React.useRef(false);
26370
+ var _useState1 = React.useState(0),
26371
+ _useState10 = _slicedToArray(_useState1, 2),
26372
+ forceUpdate = _useState10[1];
26373
+ React.useEffect(function () {
26374
+ var el = scrollRef.current;
26375
+ if (!el) return;
26376
+ var handleScroll = function handleScroll() {
26377
+ return setScrollTop(el.scrollTop);
26378
+ };
26379
+ var ro = new ResizeObserver(function (entries) {
26380
+ var _iterator = _createForOfIteratorHelper(entries),
26381
+ _step;
26382
+ try {
26383
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
26384
+ var entry = _step.value;
26385
+ setViewportHeight(entry.contentRect.height);
26386
+ }
26387
+ } catch (err) {
26388
+ _iterator.e(err);
26389
+ } finally {
26390
+ _iterator.f();
26391
+ }
26392
+ });
26393
+ el.addEventListener('scroll', handleScroll, {
26394
+ passive: true
26395
+ });
26396
+ ro.observe(el);
26397
+ return function () {
26398
+ el.removeEventListener('scroll', handleScroll);
26399
+ ro.disconnect();
26400
+ };
26401
+ }, [showSideBar]);
26402
+
26403
+ // Ref callback: measures rendered item height and triggers a rAF-batched re-render
26404
+ // when the measured height differs from the cached value.
26405
+ var measureItem = React.useCallback(function (index) {
26406
+ return function (node) {
26407
+ if (!node) return;
26408
+ var height = node.getBoundingClientRect().height;
26409
+ if (itemHeightsRef.current[index] === height) return;
26410
+ itemHeightsRef.current[index] = height;
26411
+ if (!rafPendingRef.current) {
26412
+ rafPendingRef.current = true;
26413
+ requestAnimationFrame(function () {
26414
+ rafPendingRef.current = false;
26415
+ forceUpdate(function (n) {
26416
+ return n + 1;
26417
+ });
26418
+ });
26419
+ }
26420
+ };
26421
+ }, []);
26422
+ var count = notifications.length;
26423
+ var notificationGroups = showSideBar ? expandedAppName ? [getExpandedAppGroup(notifications, expandedAppName)] : groupNotificationsByApp(notifications) : [];
26424
+ var handleViewAll = function handleViewAll(appName) {
26425
+ itemHeightsRef.current = {};
26426
+ setExpandedAppName(appName);
26427
+ setScrollTop(0);
26428
+ if (scrollRef.current) {
26429
+ scrollRef.current.scrollTop = 0;
26430
+ }
26431
+ };
26432
+ var handleBackToAllApps = function handleBackToAllApps() {
26433
+ resetSidebarView();
26434
+ };
26435
+ var virtualListCount = showSideBar ? notificationGroups.length : count;
26436
+ var estimatedHeight = showSideBar ? ESTIMATED_GROUP_HEIGHT : ESTIMATED_ITEM_HEIGHT;
26437
+ var offsets = buildOffsets(virtualListCount, itemHeightsRef.current, estimatedHeight);
26438
+ var totalHeight = offsets[virtualListCount];
26439
+ var rawStart = findStartIndex(offsets, scrollTop);
26440
+ var startIdx = Math.max(0, rawStart - OVERSCAN);
26441
+ var endRaw = rawStart;
26442
+ while (endRaw < virtualListCount && offsets[endRaw] < scrollTop + viewportHeight) endRaw++;
26443
+ var endIdx = Math.min(virtualListCount - 1, endRaw + OVERSCAN);
26123
26444
  var notification = notifications[i];
26124
26445
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, !isNil$2(notification) && !showSideBar ? /*#__PURE__*/React__default["default"].createElement(Banner, _extends$1({
26125
26446
  current: i + 1,
@@ -26137,21 +26458,48 @@ var Notifications = function Notifications(_ref) {
26137
26458
  notificationsTopContainerRef: notificationsTopContainerRef,
26138
26459
  mobileNotificationsTopContainerRef: mobileNotificationsTopContainerRef,
26139
26460
  setNotificationHeightFlag: setNotificationHeightFlag
26140
- })) : null, notifications.length > 0 && showSideBar ? notifications.map(function (notification) {
26141
- return /*#__PURE__*/React__default["default"].createElement(Banner, _extends$1({
26142
- key: notification.notificationId,
26143
- current: i + 1,
26144
- count: notifications.length,
26145
- showNavButtons: false,
26146
- onDismiss: function onDismiss() {
26147
- return _onDismiss(notification);
26148
- }
26149
- }, notification, {
26150
- showSideBar: showSideBar,
26461
+ })) : null, count > 0 && showSideBar ? /*#__PURE__*/React__default["default"].createElement("div", {
26462
+ ref: scrollRef,
26463
+ style: {
26464
+ height: '100%',
26465
+ overflowY: 'auto',
26466
+ overflowX: 'hidden'
26467
+ }
26468
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
26469
+ style: {
26470
+ height: totalHeight,
26471
+ position: 'relative',
26472
+ width: '100%'
26473
+ }
26474
+ }, Array.from({
26475
+ length: endIdx - startIdx + 1
26476
+ }, function (_, rel) {
26477
+ var index = startIdx + rel;
26478
+ var group = notificationGroups[index];
26479
+ return /*#__PURE__*/React__default["default"].createElement("div", {
26480
+ key: group.appName,
26481
+ ref: measureItem(index),
26482
+ style: {
26483
+ position: 'absolute',
26484
+ top: offsets[index],
26485
+ left: 0,
26486
+ width: '100%'
26487
+ }
26488
+ }, /*#__PURE__*/React__default["default"].createElement(SideNotificationGroup, {
26489
+ appName: group.appName,
26490
+ totalCount: group.totalCount,
26491
+ notifications: group.notifications,
26492
+ hasMore: group.hasMore,
26493
+ showBackButton: Boolean(expandedAppName),
26494
+ onBack: handleBackToAllApps,
26495
+ onViewAll: function onViewAll() {
26496
+ return handleViewAll(group.appName);
26497
+ },
26498
+ onDismiss: _onDismiss,
26151
26499
  ActionComponent: ActionComponent,
26152
26500
  saveActionComponentState: saveActionComponentState
26153
26501
  }));
26154
- }) : null);
26502
+ }))) : null);
26155
26503
  };
26156
26504
 
26157
26505
  var capitalizeAndReplaceUnderscores = function capitalizeAndReplaceUnderscores(role) {
@@ -27183,6 +27531,7 @@ var AppBar$1 = function AppBar(props) {
27183
27531
  notifications: notifications || [],
27184
27532
  onDismiss: onDismiss,
27185
27533
  showSideBar: true,
27534
+ sidebarOpen: notificationsVisible,
27186
27535
  ActionComponent: ActionComponent,
27187
27536
  saveActionComponentState: saveActionComponentState
27188
27537
  })))), showSearchContainer && /*#__PURE__*/React__default["default"].createElement("div", {
@@ -28997,26 +29346,9 @@ var getCurrentApp = function getCurrentApp() {
28997
29346
  return app;
28998
29347
  };
28999
29348
  var buildTargetingClause = function buildTargetingClause(yardNumber, email) {
29000
- encodeURIComponent(getCurrentApp());
29001
- // const clauses = [
29002
- // `(facilities:${yardNumber} AND -user_details:* AND -applications:* AND -group_user_details:*)`,
29003
- // `(-facilities:* AND user_details:"${email}" AND -applications:* AND -group_user_details:*)`,
29004
- // `(-facilities:* AND -user_details:* AND applications:"${app}" AND -group_user_details:*)`,
29005
- // `(-facilities:* AND -user_details:* AND -applications:* AND group_user_details:"${email}")`,
29006
- // `(facilities:${yardNumber} AND user_details:"${email}" AND -applications:* AND -group_user_details:*)`,
29007
- // `(facilities:${yardNumber} AND -user_details:* AND applications:"${app}" AND -group_user_details:*)`,
29008
- // `(facilities:${yardNumber} AND -user_details:* AND -applications:* AND group_user_details:"${email}")`,
29009
- // `(-facilities:* AND user_details:"${email}" AND applications:"${app}" AND -group_user_details:*)`,
29010
- // `(-facilities:* AND user_details:"${email}" AND -applications:* AND group_user_details:"${email}")`,
29011
- // `(-facilities:* AND -user_details:* AND applications:"${app}" AND group_user_details:"${email}")`,
29012
- // `(facilities:${yardNumber} AND user_details:"${email}" AND applications:"${app}" AND -group_user_details:*)`,
29013
- // `(facilities:${yardNumber} AND user_details:"${email}" AND -applications:* AND group_user_details:"${email}")`,
29014
- // `(facilities:${yardNumber} AND -user_details:* AND applications:"${app}" AND group_user_details:"${email}")`,
29015
- // `(-facilities:* AND user_details:"${email}" AND applications:"${app}" AND group_user_details:"${email}")`,
29016
- // `(facilities:${yardNumber} AND user_details:"${email}" AND applications:"${app}" AND group_user_details:"${email}")`,
29017
- // ]
29018
- // return clauses.join(' OR ')
29019
- return "(facilities:".concat(yardNumber, " OR user_details:\"").concat(email, "\" OR group_user_details:\"").concat(email, "\")");
29349
+ var app = encodeURIComponent(getCurrentApp());
29350
+ var clauses = ["(channel_names:".concat(yardNumber, ")"), "(channel_names:\"".concat(email, "\")"), "(channel_names:\"".concat(app, "\")"), "(channel_names:\"".concat(yardNumber, "%7C").concat(app, "\")"), "(channel_names:\"".concat(email, "%7C").concat(app, "\")")];
29351
+ return clauses.join(' OR ');
29020
29352
  };
29021
29353
  var generateQuery = function generateQuery(yardNumber, email) {
29022
29354
  var startDateTs = moment(new Date()).add(1, 'days').local().format('YYYY-MM-DDTHH:mm:ss[Z]');
@@ -29024,7 +29356,7 @@ var generateQuery = function generateQuery(yardNumber, email) {
29024
29356
  var startDateTsUTC = moment.utc(new Date()).add(1, 'days').format('YYYY-MM-DDTHH:mm:ss[Z]');
29025
29357
  var EndDateTsUTC = moment.utc(new Date()).format('YYYY-MM-DDTHH:mm:ss[Z]');
29026
29358
  var targetingClause = buildTargetingClause(yardNumber, email);
29027
- return "fq=(".concat(targetingClause, ")&fq=((start_date_timezone:\"UTC\" AND end_date_timezone:\"UTC\" AND start_date_ts_utc:[* TO ").concat(startDateTsUTC, "] AND end_date_ts_utc:[").concat(EndDateTsUTC, " TO *]) OR (!start_date_timezone:\"UTC\" AND !end_date_timezone:\"UTC\" AND start_date_ts_utc:[* TO ").concat(startDateTs, "] AND end_date_ts_utc:[").concat(EndDateTs, " TO *]) OR (!start_date_timezone:\"UTC\" AND end_date_timezone:\"UTC\" AND start_date_ts_utc:[* TO ").concat(startDateTs, "] AND end_date_ts_utc:[").concat(EndDateTsUTC, " TO *]))&fq=status:A&rows=10000&q=*:*");
29359
+ return "fq=(".concat(targetingClause, ")&fq=((start_date_timezone:\"UTC\" AND end_date_timezone:\"UTC\" AND start_date_ts_utc:[* TO ").concat(startDateTsUTC, "] AND end_date_ts_utc:[").concat(EndDateTsUTC, " TO *]) OR (!start_date_timezone:\"UTC\" AND !end_date_timezone:\"UTC\" AND start_date_ts_utc:[* TO ").concat(startDateTs, "] AND end_date_ts_utc:[").concat(EndDateTs, " TO *]) OR (!start_date_timezone:\"UTC\" AND end_date_timezone:\"UTC\" AND start_date_ts_utc:[* TO ").concat(startDateTs, "] AND end_date_ts_utc:[").concat(EndDateTsUTC, " TO *]))&fq=status:A&rows=1000&q=*:*");
29028
29360
  };
29029
29361
  var generateTargets = function generateTargets(notification) {
29030
29362
  var targets = [];
@@ -29108,6 +29440,9 @@ function fetchG2Notifications(updateNotifications, updateAllNotificationsList) {
29108
29440
  });
29109
29441
  compose(updateNotifications, filterNotifications)(modifiedNotifications);
29110
29442
  updateAllNotificationsList(modifiedNotifications, true);
29443
+ // Prune expired entries from viewedNotifications after the main logic
29444
+ // settles. Deferred so it never blocks the notifications render.
29445
+ setTimeout(pruneExpiredViewedNotifications, 0);
29111
29446
  }).catch(function (e) {
29112
29447
  console.log(e);
29113
29448
  });
@@ -29121,7 +29456,10 @@ function startWebSocketConnection(updateNotifications, updateAllNotificationsLis
29121
29456
  var onOpen = callbacks.onOpen,
29122
29457
  onClose = callbacks.onClose;
29123
29458
  var coreAppConfig = storage$2.getLocalItem('opsportal-core:config');
29124
- var webSocketURL = "".concat(coreAppConfig.webSocketURL, "/").concat((_storage$getSessionIt = storage$2.getSessionItem('dashboard')) === null || _storage$getSessionIt === void 0 ? void 0 : _storage$getSessionIt.selectedYard, ",").concat(storage$2.userEmail, ",").concat(encodeURIComponent(getCurrentApp()));
29459
+ var currentApp = encodeURIComponent(getCurrentApp());
29460
+ var selectedYard = (_storage$getSessionIt = storage$2.getSessionItem('dashboard')) === null || _storage$getSessionIt === void 0 ? void 0 : _storage$getSessionIt.selectedYard;
29461
+ var userEmail = storage$2.userEmail;
29462
+ var webSocketURL = "".concat(coreAppConfig.webSocketURL, "/").concat(selectedYard, ",").concat(userEmail, ",").concat(currentApp, ",").concat(selectedYard, "|").concat(currentApp, ",").concat(userEmail, "|").concat(currentApp);
29125
29463
  var domain = window.location.hostname.slice(window.location.hostname.indexOf('.copart'));
29126
29464
  var selectedCountryA3code = (_storage$getSessionIt2 = storage$2.getSessionItem('dashboard')) === null || _storage$getSessionIt2 === void 0 ? void 0 : _storage$getSessionIt2.selectedCountryA3code;
29127
29465
  var notificationCountry = selectedCountryA3code;
@@ -29148,13 +29486,19 @@ function startWebSocketConnection(updateNotifications, updateAllNotificationsLis
29148
29486
  var batch = notificationBuffer;
29149
29487
  notificationBuffer = [];
29150
29488
  flushTimerId = null;
29151
- var activeBatch = batch.filter(function (n) {
29489
+ var seenIds = new Map();
29490
+ batch.forEach(function (n) {
29491
+ var id = (n === null || n === void 0 ? void 0 : n.notification_id) || (n === null || n === void 0 ? void 0 : n.notificationId);
29492
+ if (id) seenIds.set(id, n);
29493
+ });
29494
+ var deduplicatedBatch = seenIds.size > 0 ? Array.from(seenIds.values()) : batch;
29495
+ var activeBatch = deduplicatedBatch.filter(function (n) {
29152
29496
  return (n === null || n === void 0 ? void 0 : n.status) === 'A';
29153
29497
  });
29154
29498
  if (activeBatch.length > 0) {
29155
29499
  compose(updateNotifications, filterNotifications)(activeBatch);
29156
29500
  }
29157
- updateAllNotificationsList(batch);
29501
+ updateAllNotificationsList(deduplicatedBatch);
29158
29502
  }
29159
29503
  function scheduleFlush() {
29160
29504
  if (flushTimerId === null) {
@@ -29189,7 +29533,7 @@ function startWebSocketConnection(updateNotifications, updateAllNotificationsLis
29189
29533
  return;
29190
29534
  }
29191
29535
 
29192
- // Handle notification messages: buffer and flush at interval
29536
+ // Buffer notifications deduplication happens at flush via notificationRegistry.
29193
29537
  var notification = Array.isArray(messageData) ? messageData : [messageData];
29194
29538
  if (notification.length > 0) {
29195
29539
  var _notificationBuffer;
@@ -29525,6 +29869,8 @@ var startTabLeaderCoordinator = function startTabLeaderCoordinator(_ref) {
29525
29869
  console.error('[TabLeaderCoordinator] BroadcastChannel creation failed:', error);
29526
29870
  bc = null;
29527
29871
  }
29872
+ var stopped = false;
29873
+ var pendingElectionTimeout = null;
29528
29874
  var isLeader = false;
29529
29875
  var renewTimer = null;
29530
29876
  var heartbeatTimer = null;
@@ -29570,7 +29916,7 @@ var startTabLeaderCoordinator = function startTabLeaderCoordinator(_ref) {
29570
29916
  });
29571
29917
  };
29572
29918
  var becomeLeader = function becomeLeader() {
29573
- if (isLeader) return;
29919
+ if (isLeader || stopped) return;
29574
29920
  isLeader = true;
29575
29921
  if (bc) {
29576
29922
  try {
@@ -29619,6 +29965,7 @@ var startTabLeaderCoordinator = function startTabLeaderCoordinator(_ref) {
29619
29965
  renewTimer = heartbeatTimer = interactionCheckTimer = null;
29620
29966
  };
29621
29967
  var tryBecomeLeader = function tryBecomeLeader() {
29968
+ if (stopped) return;
29622
29969
  var lock = readLock();
29623
29970
  var expired = !lock || lock.expiresAt <= now();
29624
29971
  if (expired) {
@@ -29662,10 +30009,15 @@ var startTabLeaderCoordinator = function startTabLeaderCoordinator(_ref) {
29662
30009
  window.addEventListener('beforeunload', handleBeforeUnload);
29663
30010
  window.addEventListener('pagehide', handleBeforeUnload);
29664
30011
  electionTimer = setInterval(function () {
29665
- setTimeout(tryBecomeLeader, Math.random() * JITTER_MS);
30012
+ pendingElectionTimeout = setTimeout(tryBecomeLeader, Math.random() * JITTER_MS);
29666
30013
  }, ELECTION_INTERVAL_MS);
29667
30014
  tryBecomeLeader();
29668
30015
  return function () {
30016
+ stopped = true;
30017
+ if (pendingElectionTimeout) {
30018
+ clearTimeout(pendingElectionTimeout);
30019
+ pendingElectionTimeout = null;
30020
+ }
29669
30021
  window.removeEventListener('storage', handleStorage);
29670
30022
  window.removeEventListener('beforeunload', handleBeforeUnload);
29671
30023
  window.removeEventListener('pagehide', handleBeforeUnload);
@@ -68244,6 +68596,16 @@ function ContextualHelp(_ref) {
68244
68596
  })));
68245
68597
  }
68246
68598
 
68599
+ var IFRAME_EVENTS = {
68600
+ UPDATE_URI: 'UPDATE_URI',
68601
+ UPDATE_CRUMBS: 'UPDATE_CRUMBS',
68602
+ SET_NAV_CONFIG: 'SET_NAV_CONFIG',
68603
+ UPDATE_NAV_COUNTS: 'UPDATE_NAV_COUNTS',
68604
+ REQUEST_NAV_COUNTS: 'REQUEST_NAV_COUNTS',
68605
+ NAV_COUNTS_RESPONSE: 'NAV_COUNTS_RESPONSE',
68606
+ SET_APP_ENV: 'SET_APP_ENV'
68607
+ };
68608
+
68247
68609
  var _excluded = ["signal"];
68248
68610
  var pending = new Map();
68249
68611
  var STORAGE_REQUEST_TIMEOUT_MS = 5000;
@@ -68459,18 +68821,18 @@ function getInitData() {
68459
68821
  }
68460
68822
  function postUpdateUri(uri) {
68461
68823
  var isPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
68462
- post('UPDATE_URI', {
68824
+ post(IFRAME_EVENTS.UPDATE_URI, {
68463
68825
  uri: uri,
68464
68826
  isPath: isPath
68465
68827
  });
68466
68828
  }
68467
68829
  function postUpdateCrumbs(crumbs) {
68468
- post('UPDATE_CRUMBS', {
68830
+ post(IFRAME_EVENTS.UPDATE_CRUMBS, {
68469
68831
  crumbs: crumbs
68470
68832
  });
68471
68833
  }
68472
68834
  function postNavConfig(navItems) {
68473
- post('SET_NAV_CONFIG', {
68835
+ post(IFRAME_EVENTS.SET_NAV_CONFIG, {
68474
68836
  navItems: navItems
68475
68837
  });
68476
68838
  }
@@ -68486,16 +68848,37 @@ function postNavConfig(navItems) {
68486
68848
  */
68487
68849
  function postNavCounts(countsByMenu) {
68488
68850
  if (!countsByMenu || _typeof$1(countsByMenu) !== 'object') return;
68489
- post('UPDATE_NAV_COUNTS', {
68851
+ post(IFRAME_EVENTS.UPDATE_NAV_COUNTS, {
68490
68852
  countsByMenu: countsByMenu
68491
68853
  });
68492
68854
  }
68855
+ function postNavCountsResponse(requestId, countsByMenu) {
68856
+ post(IFRAME_EVENTS.NAV_COUNTS_RESPONSE, {
68857
+ requestId: requestId,
68858
+ countsByMenu: countsByMenu || {}
68859
+ });
68860
+ }
68493
68861
  function postAppEnv(toolkitEnv, mihelpAgentProps) {
68494
- post('SET_APP_ENV', {
68862
+ post(IFRAME_EVENTS.SET_APP_ENV, {
68495
68863
  toolkitEnv: toolkitEnv,
68496
68864
  mihelpAgentProps: mihelpAgentProps
68497
68865
  });
68498
68866
  }
68867
+ function defaultToolkitEnv() {
68868
+ return {
68869
+ STACK: process.env.STACK,
68870
+ APP_NAME: process.env.APP_NAME,
68871
+ CORE_CONFIG_URI: process.env.CORE_CONFIG_URI,
68872
+ CONFIG_URI: process.env.CONFIG_URI
68873
+ };
68874
+ }
68875
+ var appEnvSent = false;
68876
+ function sendAppEnv(toolkitEnv) {
68877
+ var mihelpAgentProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
68878
+ if (appEnvSent) return;
68879
+ appEnvSent = true;
68880
+ postAppEnv(toolkitEnv || defaultToolkitEnv(), mihelpAgentProps);
68881
+ }
68499
68882
  function addMessageListener(callback) {
68500
68883
  var handler = function handler(event) {
68501
68884
  var data = event.data;
@@ -69756,7 +70139,9 @@ var iframeFacade = {
69756
70139
  postUpdateCrumbs: postUpdateCrumbs,
69757
70140
  postNavConfig: postNavConfig,
69758
70141
  postNavCounts: postNavCounts,
70142
+ postNavCountsResponse: postNavCountsResponse,
69759
70143
  postAppEnv: postAppEnv,
70144
+ sendAppEnv: sendAppEnv,
69760
70145
  addMessageListener: addMessageListener,
69761
70146
  getInitData: getInitData,
69762
70147
  getInitialUri: getInitialUri,
@@ -69764,7 +70149,8 @@ var iframeFacade = {
69764
70149
  setExtraLocal: setExtraLocal,
69765
70150
  setAppName: setAppName,
69766
70151
  getInitDataForBootstrap: getInitDataForBootstrap,
69767
- sendStorageGet: sendStorageGet
70152
+ sendStorageGet: sendStorageGet,
70153
+ IFRAME_EVENTS: IFRAME_EVENTS
69768
70154
  }
69769
70155
  };
69770
70156
 
@@ -69945,23 +70331,12 @@ function IframeRouteSync(_ref) {
69945
70331
  return null;
69946
70332
  }
69947
70333
 
69948
- function defaultToolkitEnv() {
69949
- return {
69950
- STACK: process.env.STACK,
69951
- APP_NAME: process.env.APP_NAME,
69952
- CORE_CONFIG_URI: process.env.CORE_CONFIG_URI,
69953
- CONFIG_URI: process.env.CONFIG_URI
69954
- };
69955
- }
69956
70334
  function AppEnvSender(_ref) {
69957
70335
  var toolkitEnv = _ref.toolkitEnv,
69958
70336
  _ref$mihelpAgentProps = _ref.mihelpAgentProps,
69959
70337
  mihelpAgentProps = _ref$mihelpAgentProps === void 0 ? null : _ref$mihelpAgentProps;
69960
- var sentRef = React.useRef(false);
69961
70338
  React.useEffect(function () {
69962
- if (sentRef.current) return;
69963
- sentRef.current = true;
69964
- postAppEnv(toolkitEnv || defaultToolkitEnv(), mihelpAgentProps);
70339
+ sendAppEnv(toolkitEnv, mihelpAgentProps);
69965
70340
  }, [toolkitEnv, mihelpAgentProps]);
69966
70341
  return null;
69967
70342
  }
@@ -69988,7 +70363,7 @@ function NavConfigSender(_ref) {
69988
70363
  }
69989
70364
 
69990
70365
  var DEFAULT_POLL_INTERVAL_MS = 60000;
69991
- function resolveCountsLoader(mod) {
70366
+ function resolveCountsLoader$1(mod) {
69992
70367
  if (!mod) return null;
69993
70368
  if (typeof mod === 'function') return mod;
69994
70369
  if (typeof mod.default === 'function') return mod.default;
@@ -70021,7 +70396,7 @@ function NavCountsSender(_ref) {
70021
70396
  Promise.resolve().then(function () {
70022
70397
  return countsLoader();
70023
70398
  }).then(function (mod) {
70024
- var loader = resolveCountsLoader(mod);
70399
+ var loader = resolveCountsLoader$1(mod);
70025
70400
  if (!loader) {
70026
70401
  throw new Error('[NavCountsSender] countsLoader must export a function');
70027
70402
  }
@@ -70052,78 +70427,78 @@ function NavCountsSender(_ref) {
70052
70427
  return null;
70053
70428
  }
70054
70429
 
70055
- var defaultContentStyle = {
70056
- height: '100%',
70057
- display: 'flex',
70058
- flexDirection: 'column',
70059
- overflow: 'hidden'
70060
- };
70061
- function IframeAppRootInner(_ref) {
70430
+ function resolveCountsLoader(mod) {
70431
+ if (!mod) return null;
70432
+ if (typeof mod === 'function') return mod;
70433
+ if (typeof mod.default === 'function') return mod.default;
70434
+ if (typeof mod.getNavCounts === 'function') return mod.getNavCounts;
70435
+ return null;
70436
+ }
70437
+ function NavCountsResponder(_ref) {
70438
+ var countsLoader = _ref.countsLoader,
70439
+ onError = _ref.onError;
70440
+ React.useEffect(function () {
70441
+ if (!countsLoader) return undefined;
70442
+ return addMessageListener(function (data) {
70443
+ if (!data || data.eventType !== IFRAME_EVENTS.REQUEST_NAV_COUNTS) return;
70444
+ var _ref2 = data.eventProps || {},
70445
+ menuItemName = _ref2.menuItemName,
70446
+ requestId = _ref2.requestId;
70447
+ Promise.resolve().then(function () {
70448
+ return countsLoader();
70449
+ }).then(function (mod) {
70450
+ var loader = resolveCountsLoader(mod);
70451
+ if (!loader) throw new Error('[NavCountsResponder] countsLoader must export a function');
70452
+ return loader(menuItemName);
70453
+ }).then(function (countsByMenu) {
70454
+ return postNavCountsResponse(requestId, countsByMenu || {});
70455
+ }).catch(function (err) {
70456
+ postNavCountsResponse(requestId, {}); // always respond so the shell spinner clears
70457
+ if (onError) onError(err);else console.warn('[NavCountsResponder] Failed to load/post nav counts:', err);
70458
+ });
70459
+ });
70460
+ }, [countsLoader, onError]);
70461
+ return null;
70462
+ }
70463
+
70464
+ function defaultRenderError() {
70465
+ return /*#__PURE__*/React__default["default"].createElement("div", {
70466
+ role: "alert",
70467
+ style: {
70468
+ padding: 24,
70469
+ textAlign: 'center'
70470
+ }
70471
+ }, /*#__PURE__*/React__default["default"].createElement("h2", null, "Unable to load this application"), /*#__PURE__*/React__default["default"].createElement("p", null, "Your permissions could not be loaded from the portal. Please refresh the page."));
70472
+ }
70473
+ function IframeAppShell(_ref) {
70062
70474
  var children = _ref.children,
70063
- contentStyle = _ref.contentStyle,
70064
- toolkitEnv = _ref.toolkitEnv,
70065
- mihelpAgentProps = _ref.mihelpAgentProps,
70475
+ permissionKey = _ref.permissionKey,
70476
+ onPermissionsReady = _ref.onPermissionsReady,
70066
70477
  navItemsLoader = _ref.navItemsLoader,
70067
70478
  navConfigOnError = _ref.navConfigOnError,
70068
- navCountsLoader = _ref.navCountsLoader,
70069
- navCountsPollIntervalMs = _ref.navCountsPollIntervalMs,
70479
+ countsLoader = _ref.countsLoader,
70070
70480
  navCountsOnError = _ref.navCountsOnError,
70071
- updateUriIsPath = _ref.updateUriIsPath,
70072
- suppressRouteSyncEcho = _ref.suppressRouteSyncEcho;
70481
+ _ref$updateUriIsPath = _ref.updateUriIsPath,
70482
+ updateUriIsPath = _ref$updateUriIsPath === void 0 ? false : _ref$updateUriIsPath,
70483
+ renderError = _ref.renderError;
70073
70484
  var _useRouterNavigation = useRouterNavigation(),
70074
70485
  navigate = _useRouterNavigation.navigate;
70486
+ var key = permissionKey || "".concat(getAppName(), ":permissions");
70487
+ var ready = Array.isArray(storage$1.getLocalItem(key));
70488
+ React.useEffect(function () {
70489
+ if (ready && onPermissionsReady) onPermissionsReady();
70490
+ }, [ready, onPermissionsReady]);
70075
70491
  return /*#__PURE__*/React__default["default"].createElement(CrumbProvider, {
70076
70492
  navigate: navigate
70077
- }, /*#__PURE__*/React__default["default"].createElement(AppEnvSender, {
70078
- toolkitEnv: toolkitEnv,
70079
- mihelpAgentProps: mihelpAgentProps
70080
- }), /*#__PURE__*/React__default["default"].createElement(IframeRouteSync, {
70081
- updateUriIsPath: updateUriIsPath,
70082
- suppressEcho: suppressRouteSyncEcho
70083
- }), navItemsLoader ? /*#__PURE__*/React__default["default"].createElement(NavConfigSender, {
70493
+ }, /*#__PURE__*/React__default["default"].createElement(IframeRouteSync, {
70494
+ updateUriIsPath: updateUriIsPath
70495
+ }), ready ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, navItemsLoader ? /*#__PURE__*/React__default["default"].createElement(NavConfigSender, {
70084
70496
  navItemsLoader: navItemsLoader,
70085
70497
  onError: navConfigOnError
70086
- }) : null, navCountsLoader ? /*#__PURE__*/React__default["default"].createElement(NavCountsSender, {
70087
- countsLoader: navCountsLoader,
70088
- pollIntervalMs: navCountsPollIntervalMs,
70498
+ }) : null, countsLoader ? /*#__PURE__*/React__default["default"].createElement(NavCountsResponder, {
70499
+ countsLoader: countsLoader,
70089
70500
  onError: navCountsOnError
70090
- }) : null, /*#__PURE__*/React__default["default"].createElement("div", {
70091
- style: contentStyle || defaultContentStyle
70092
- }, children));
70093
- }
70094
- function IframeAppRoot(_ref2) {
70095
- var _ref2$initialUri = _ref2.initialUri,
70096
- initialUri = _ref2$initialUri === void 0 ? '/' : _ref2$initialUri,
70097
- children = _ref2.children,
70098
- contentStyle = _ref2.contentStyle,
70099
- toolkitEnv = _ref2.toolkitEnv,
70100
- _ref2$mihelpAgentProp = _ref2.mihelpAgentProps,
70101
- mihelpAgentProps = _ref2$mihelpAgentProp === void 0 ? null : _ref2$mihelpAgentProp,
70102
- navItemsLoader = _ref2.navItemsLoader,
70103
- navConfigOnError = _ref2.navConfigOnError,
70104
- navCountsLoader = _ref2.navCountsLoader,
70105
- navCountsPollIntervalMs = _ref2.navCountsPollIntervalMs,
70106
- navCountsOnError = _ref2.navCountsOnError,
70107
- _ref2$updateUriIsPath = _ref2.updateUriIsPath,
70108
- updateUriIsPath = _ref2$updateUriIsPath === void 0 ? false : _ref2$updateUriIsPath,
70109
- _ref2$suppressRouteSy = _ref2.suppressRouteSyncEcho,
70110
- suppressRouteSyncEcho = _ref2$suppressRouteSy === void 0 ? true : _ref2$suppressRouteSy;
70111
- var initialPath = normalizeIframePath(initialUri);
70112
- return /*#__PURE__*/React__default["default"].createElement(ReactRouterDOM.MemoryRouter, {
70113
- initialEntries: [initialPath],
70114
- initialIndex: 0
70115
- }, /*#__PURE__*/React__default["default"].createElement(IframeAppRootInner, {
70116
- contentStyle: contentStyle,
70117
- toolkitEnv: toolkitEnv,
70118
- mihelpAgentProps: mihelpAgentProps,
70119
- navItemsLoader: navItemsLoader,
70120
- navConfigOnError: navConfigOnError,
70121
- navCountsLoader: navCountsLoader,
70122
- navCountsPollIntervalMs: navCountsPollIntervalMs,
70123
- navCountsOnError: navCountsOnError,
70124
- updateUriIsPath: updateUriIsPath,
70125
- suppressRouteSyncEcho: suppressRouteSyncEcho
70126
- }, children));
70501
+ }) : null, children) : (renderError || defaultRenderError)());
70127
70502
  }
70128
70503
 
70129
70504
  /**
@@ -70160,9 +70535,12 @@ function normalizePermissionKeys(permissionKeys) {
70160
70535
  if (!permissionKeys) return [];
70161
70536
  return Array.isArray(permissionKeys) ? permissionKeys : [permissionKeys];
70162
70537
  }
70538
+ function isNonEmptyObject(value) {
70539
+ return !!value && _typeof$1(value) === 'object' && !Array.isArray(value) && Object.keys(value).length > 0;
70540
+ }
70163
70541
  function isValidAppConfig(config, validateAppConfig) {
70164
70542
  if (validateAppConfig) return validateAppConfig(config);
70165
- return !!config;
70543
+ return isNonEmptyObject(config);
70166
70544
  }
70167
70545
  function hydrateAppConfig(_x) {
70168
70546
  return _hydrateAppConfig.apply(this, arguments);
@@ -70220,13 +70598,14 @@ function hydratePermissions(_x2) {
70220
70598
  * @param {string} [options.rootSelector] - Root element selector (default: #root then #app)
70221
70599
  * @param {(initData: *) => void} [options.onInitCache] - Called after setInitCache (e.g. initStoreData)
70222
70600
  * @param {(initialUri: string, rootNode: HTMLElement) => void} options.render - App render callback
70223
- * @param {'render'|'error'|'skip'} [options.standaloneMode='render'] - Behavior when not in iframe
70224
- * @param {(rootNode: HTMLElement) => void} [options.standaloneRender] - Custom standalone UI
70225
- * @param {string} [options.standaloneErrorMessage] - Message when standaloneMode is 'error'
70601
+ * @param {string} [options.standaloneErrorMessage] - Message when not in iframe
70226
70602
  * @param {boolean} [options.fetchConfigFromShell=true] - Fetch app config/permissions from shell
70227
70603
  * @param {string} [options.configFallbackUri] - Defaults to process.env.CONFIG_URI
70228
70604
  * @param {(config: *) => boolean} [options.validateAppConfig] - Config validity check before setExtraLocal
70229
70605
  * @param {boolean} [options.permissionsOnlyIfArray=true] - Only set permissions when shell returns an array
70606
+ * @param {boolean} [options.autoSendAppEnv=true] - Post toolkit env to shell during bootstrap
70607
+ * @param {object} [options.toolkitEnv] - Env payload; defaults to build-time process.env values
70608
+ * @param {object|null} [options.mihelpAgentProps=null] - Optional miHelp agent props for SET_APP_ENV
70230
70609
  */
70231
70610
  function _hydratePermissions() {
70232
70611
  _hydratePermissions = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee3(_ref2) {
@@ -70284,11 +70663,12 @@ function bootstrapIframeApp(_x3) {
70284
70663
  }
70285
70664
  function _bootstrapIframeApp() {
70286
70665
  _bootstrapIframeApp = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee4(options) {
70287
- var _ref4, _ref4$appName, appName, permissionKeys, rootSelector, onInitCache, render, _ref4$standaloneMode, standaloneMode, standaloneRender, _ref4$standaloneError, standaloneErrorMessage, _ref4$fetchConfigFrom, fetchConfigFromShell, _ref4$configFallbackU, configFallbackUri, validateAppConfig, _ref4$permissionsOnly, permissionsOnlyIfArray, rootNode, bridge, fetcher, storage, getInitialUri, getInitData, setInitCache, setExtraLocal, sendStorageGet, setAppName, _yield$Promise$all, _yield$Promise$all2, initialUri, initData, getCachedLocalItem, tasks, _t;
70666
+ var _ref4, _ref4$appName, appName, _ref4$permissionKeys, permissionKeys, rootSelector, onInitCache, render, _ref4$standaloneError, standaloneErrorMessage, _ref4$fetchConfigFrom, fetchConfigFromShell, _ref4$configFallbackU, configFallbackUri, validateAppConfig, _ref4$permissionsOnly, permissionsOnlyIfArray, _ref4$autoSendAppEnv, autoSendAppEnv, toolkitEnv, _ref4$mihelpAgentProp, mihelpAgentProps, rootNode, bridge, fetcher, storage, getInitialUri, getInitData, setInitCache, setExtraLocal, sendStorageGet, setAppName, sendAppEnv, _yield$Promise$all, _yield$Promise$all2, initialUri, initData, getCachedLocalItem, tasks, _t;
70288
70667
  return _regenerator().w(function (_context4) {
70289
70668
  while (1) switch (_context4.p = _context4.n) {
70290
70669
  case 0:
70291
- _ref4 = options || {}, _ref4$appName = _ref4.appName, appName = _ref4$appName === void 0 ? process.env.APP_NAME : _ref4$appName, permissionKeys = _ref4.permissionKeys, rootSelector = _ref4.rootSelector, onInitCache = _ref4.onInitCache, render = _ref4.render, _ref4$standaloneMode = _ref4.standaloneMode, standaloneMode = _ref4$standaloneMode === void 0 ? 'render' : _ref4$standaloneMode, standaloneRender = _ref4.standaloneRender, _ref4$standaloneError = _ref4.standaloneErrorMessage, standaloneErrorMessage = _ref4$standaloneError === void 0 ? 'This application must be opened from the parent portal.' : _ref4$standaloneError, _ref4$fetchConfigFrom = _ref4.fetchConfigFromShell, fetchConfigFromShell = _ref4$fetchConfigFrom === void 0 ? true : _ref4$fetchConfigFrom, _ref4$configFallbackU = _ref4.configFallbackUri, configFallbackUri = _ref4$configFallbackU === void 0 ? process.env.CONFIG_URI : _ref4$configFallbackU, validateAppConfig = _ref4.validateAppConfig, _ref4$permissionsOnly = _ref4.permissionsOnlyIfArray, permissionsOnlyIfArray = _ref4$permissionsOnly === void 0 ? true : _ref4$permissionsOnly;
70670
+ registerEarlyLoadUriListener();
70671
+ _ref4 = options || {}, _ref4$appName = _ref4.appName, appName = _ref4$appName === void 0 ? process.env.APP_NAME : _ref4$appName, _ref4$permissionKeys = _ref4.permissionKeys, permissionKeys = _ref4$permissionKeys === void 0 ? appName ? "".concat(appName, ":permissions") : null : _ref4$permissionKeys, rootSelector = _ref4.rootSelector, onInitCache = _ref4.onInitCache, render = _ref4.render, _ref4$standaloneError = _ref4.standaloneErrorMessage, standaloneErrorMessage = _ref4$standaloneError === void 0 ? 'This application must be opened from the parent portal.' : _ref4$standaloneError, _ref4$fetchConfigFrom = _ref4.fetchConfigFromShell, fetchConfigFromShell = _ref4$fetchConfigFrom === void 0 ? true : _ref4$fetchConfigFrom, _ref4$configFallbackU = _ref4.configFallbackUri, configFallbackUri = _ref4$configFallbackU === void 0 ? process.env.CONFIG_URI : _ref4$configFallbackU, validateAppConfig = _ref4.validateAppConfig, _ref4$permissionsOnly = _ref4.permissionsOnlyIfArray, permissionsOnlyIfArray = _ref4$permissionsOnly === void 0 ? true : _ref4$permissionsOnly, _ref4$autoSendAppEnv = _ref4.autoSendAppEnv, autoSendAppEnv = _ref4$autoSendAppEnv === void 0 ? true : _ref4$autoSendAppEnv, toolkitEnv = _ref4.toolkitEnv, _ref4$mihelpAgentProp = _ref4.mihelpAgentProps, mihelpAgentProps = _ref4$mihelpAgentProp === void 0 ? null : _ref4$mihelpAgentProp;
70292
70672
  if (!(typeof render !== 'function')) {
70293
70673
  _context4.n = 1;
70294
70674
  break;
@@ -70304,32 +70684,25 @@ function _bootstrapIframeApp() {
70304
70684
  return _context4.a(2);
70305
70685
  case 2:
70306
70686
  if (isInIframe()) {
70307
- _context4.n = 4;
70308
- break;
70309
- }
70310
- if (!(standaloneMode === 'error')) {
70311
70687
  _context4.n = 3;
70312
70688
  break;
70313
70689
  }
70314
- if (standaloneRender) standaloneRender(rootNode);else renderStandaloneError(rootNode, standaloneErrorMessage);
70690
+ renderStandaloneError(rootNode, standaloneErrorMessage);
70315
70691
  return _context4.a(2);
70316
70692
  case 3:
70317
- if (!(standaloneMode === 'skip')) {
70318
- _context4.n = 4;
70319
- break;
70320
- }
70321
- return _context4.a(2);
70322
- case 4:
70323
70693
  bridge = iframeFacade.bridge, fetcher = iframeFacade.fetcher, storage = iframeFacade.storage;
70324
- getInitialUri = bridge.getInitialUri, getInitData = bridge.getInitData, setInitCache = bridge.setInitCache, setExtraLocal = bridge.setExtraLocal, sendStorageGet = bridge.sendStorageGet, setAppName = bridge.setAppName;
70325
- _context4.n = 5;
70694
+ getInitialUri = bridge.getInitialUri, getInitData = bridge.getInitData, setInitCache = bridge.setInitCache, setExtraLocal = bridge.setExtraLocal, sendStorageGet = bridge.sendStorageGet, setAppName = bridge.setAppName, sendAppEnv = bridge.sendAppEnv;
70695
+ _context4.n = 4;
70326
70696
  return Promise.all([getInitialUri(), getInitData()]);
70327
- case 5:
70697
+ case 4:
70328
70698
  _yield$Promise$all = _context4.v;
70329
70699
  _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
70330
70700
  initialUri = _yield$Promise$all2[0];
70331
70701
  initData = _yield$Promise$all2[1];
70332
70702
  if (appName && typeof setAppName === 'function') setAppName(appName);
70703
+ if (autoSendAppEnv && typeof sendAppEnv === 'function') {
70704
+ sendAppEnv(toolkitEnv, mihelpAgentProps);
70705
+ }
70333
70706
  if (initData) {
70334
70707
  setInitCache(initData);
70335
70708
  if (onInitCache) onInitCache(initData);
@@ -70340,10 +70713,10 @@ function _bootstrapIframeApp() {
70340
70713
  return storage.getLocalItem(key);
70341
70714
  };
70342
70715
  if (!(fetchConfigFromShell && appName)) {
70343
- _context4.n = 9;
70716
+ _context4.n = 8;
70344
70717
  break;
70345
70718
  }
70346
- _context4.p = 6;
70719
+ _context4.p = 5;
70347
70720
  tasks = [hydrateAppConfig({
70348
70721
  appName: appName,
70349
70722
  getCachedLocalItem: getCachedLocalItem,
@@ -70362,21 +70735,21 @@ function _bootstrapIframeApp() {
70362
70735
  permissionsOnlyIfArray: permissionsOnlyIfArray
70363
70736
  }));
70364
70737
  }
70365
- _context4.n = 7;
70738
+ _context4.n = 6;
70366
70739
  return Promise.all(tasks);
70367
- case 7:
70368
- _context4.n = 9;
70740
+ case 6:
70741
+ _context4.n = 8;
70369
70742
  break;
70370
- case 8:
70371
- _context4.p = 8;
70743
+ case 7:
70744
+ _context4.p = 7;
70372
70745
  _t = _context4.v;
70373
70746
  console.warn('[Iframe] failed to fetch app config/permissions from shell:', _t);
70374
- case 9:
70747
+ case 8:
70375
70748
  render(initialUri, rootNode);
70376
- case 10:
70749
+ case 9:
70377
70750
  return _context4.a(2);
70378
70751
  }
70379
- }, _callee4, null, [[6, 8]]);
70752
+ }, _callee4, null, [[5, 7]]);
70380
70753
  }));
70381
70754
  return _bootstrapIframeApp.apply(this, arguments);
70382
70755
  }
@@ -81965,10 +82338,12 @@ exports.AutoRefresh = AutoRefresh;
81965
82338
  exports.CallLogger = CallLogger;
81966
82339
  exports.ContextualHelp = ContextualHelp;
81967
82340
  exports.Crumb = Crumb$1;
82341
+ exports.IFRAME_EVENTS = IFRAME_EVENTS;
81968
82342
  exports.IS_REACT_ROUTER_V6 = IS_REACT_ROUTER_V6;
81969
- exports.IframeAppRoot = IframeAppRoot;
82343
+ exports.IframeAppShell = IframeAppShell;
81970
82344
  exports.IframeRouteSync = IframeRouteSync;
81971
82345
  exports.NavConfigSender = NavConfigSender;
82346
+ exports.NavCountsResponder = NavCountsResponder;
81972
82347
  exports.NavCountsSender = NavCountsSender;
81973
82348
  exports.STANDARD_NAV_COUNT_THRESHOLDS = STANDARD_NAV_COUNT_THRESHOLDS;
81974
82349
  exports.accessHelpers = accessHelpers$1;