@copart/ops-tool-kit 1.13.0-beta.12 → 1.13.0-beta.14

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.
@@ -48,7 +48,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
48
48
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
49
49
 
50
50
  const name$1 = "@copart/ops-tool-kit";
51
- const version$3 = "1.13.0-beta.12";
51
+ const version$3 = "1.13.0-beta.14";
52
52
  const main$1 = "dist/ops-tool-kit.js";
53
53
  const style = "dist/ops-tool-kit.css";
54
54
  const files = [
@@ -63583,6 +63583,47 @@ var formatNumber = function formatNumber(number) {
63583
63583
  return sign * Math.abs(number) + unitlist[unit];
63584
63584
  };
63585
63585
 
63586
+ /**
63587
+ * Default badge color thresholds used by many portal apps (e.g. MiOrg open tasks).
63588
+ * Matches legacy getStatus(count) logic: >1000 → 1, >500 → 2, >0 → 3.
63589
+ */
63590
+ var STANDARD_NAV_COUNT_THRESHOLDS = [{
63591
+ above: 1000,
63592
+ status: 1
63593
+ }, {
63594
+ above: 500,
63595
+ status: 2
63596
+ }, {
63597
+ above: 0,
63598
+ status: 3
63599
+ }];
63600
+
63601
+ /**
63602
+ * Resolve badge status from a count using getStatus (in-app) or countStatusThresholds (iframe shell).
63603
+ *
63604
+ * @param {number|string|null|undefined} count
63605
+ * @param {{ getStatus?: (n: number) => number, countStatusThresholds?: Array<{ above?: number, min?: number, status: number }> }} navItem
63606
+ * @returns {number|undefined}
63607
+ */
63608
+ function resolveCountStatus(count) {
63609
+ var navItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
63610
+ if (count == null || count === '') return undefined;
63611
+ var num = Number(count);
63612
+ if (Number.isNaN(num)) return undefined;
63613
+ if (typeof navItem.getStatus === 'function') {
63614
+ return navItem.getStatus(num);
63615
+ }
63616
+ var thresholds = navItem.countStatusThresholds;
63617
+ if (!Array.isArray(thresholds) || thresholds.length === 0) return undefined;
63618
+ for (var i = 0; i < thresholds.length; i += 1) {
63619
+ var threshold = thresholds[i];
63620
+ if (!threshold || threshold.status == null) continue;
63621
+ if (threshold.above != null && num > threshold.above) return threshold.status;
63622
+ if (threshold.min != null && num >= threshold.min) return threshold.status;
63623
+ }
63624
+ return undefined;
63625
+ }
63626
+
63586
63627
  var css_248z$2 = ".utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer {\r\n display: flex;\r\n flex-direction: column;\r\n position: absolute;\r\n background: #3A4454;\r\n min-width: 50px;\r\n max-width: 50px;\r\n height: 100%;\r\n color: #ffffff;\r\n font-size: 14px;\r\n z-index: 101;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu {\r\n min-width: 70px;\r\n max-width: 70px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--withCounts {\r\n min-width: 100px;\r\n max-width: 100px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader {\r\n min-width: 0px;\r\n max-width: 0px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen {\r\n max-width: 500px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: none;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton.utilities_ops-app-frame_NavigationBar_NavigationBar--showExpandIcons{\r\n min-width: auto;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton{\r\n min-width: auto;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenu {\r\n flex: 1;\r\n overflow-y: auto;\r\n -ms-overflow-style: none;\r\n scrollbar-width: none;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenu::-webkit-scrollbar { \r\n display: none;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem {\r\n display: flex;\r\n width: 100%;\r\n padding: 6px 12px 6px 12px;\r\n border-radius: 5px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled {\r\n cursor: default;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelected {\r\n color: #323130;\r\n background-color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelectedStatus {\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n margin-left: auto;\r\n margin-right: 10px;\r\n min-width: none;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--withCounts:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px;\r\n text-align: right;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable:not(:hover) .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: auto;\r\n text-align: auto;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px !important;\r\n text-align: right !important;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--expandedMenu {\r\n background-color: #73A6FF;\r\n transition: background-color 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i {\r\n margin-left: auto;\r\n font-size: 12px;\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--selected .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemCount {\r\n margin: 0 10px 0 auto;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon {\r\n min-width: 20px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i {\r\n font-size: 14px;\r\n /* width: 20px; */\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i {\r\n color: #A19F9D;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelected .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelectedStatus .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i{\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelected .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelectedStatus .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1NoHover .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n margin-right: 6px !important;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i {\r\n color: #A19F9D;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 0px;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton.utilities_ops-app-frame_NavigationBar_NavigationBar--showExpandIcons i, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 12px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n max-width: 0;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n margin-top: 2px;\r\n font-weight: 100;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n max-width: 100%;\r\n margin: 2px 10px 0 10px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n color: #A19F9D;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n max-width: 100%;\r\n margin: 0 5px 0 0;\r\n font-weight: 600;\r\n margin-left: 0px;\r\n cursor: auto;\r\n cursor: initial;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n margin: 0;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon {\r\n margin-right: 0px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem {\r\n padding-left: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName > span {\r\n display: inline;\r\n display: initial;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n margin-left: auto;\r\n margin-right: 10px;\r\n min-width: none;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--withCounts:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px;\r\n text-align: right;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable:not(:hover) .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: auto;\r\n text-align: auto;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px !important;\r\n text-align: right !important;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i {\r\n margin-left: auto;\r\n font-size: 12px;\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--selected .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton.utilities_ops-app-frame_NavigationBar_NavigationBar--showExpandIcons i{\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 12px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel2 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon {\r\n margin-right: 6px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel3 {\r\n display: flex;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel3 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem {\r\n padding: 6px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--statusColor {\r\n position: absolute;\r\n width: 10px;\r\n height: 95%;\r\n left: -13px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--level1NavItem {\r\n width: 13px;\r\n margin-left: 1px;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--level1NavItem, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--level1NavItem {\r\n width: 100%;\r\n margin-left: 1px;\r\n transition-delay: 0.25s;\r\n}";
63587
63628
  styleInject(css_248z$2);
63588
63629
 
@@ -64329,9 +64370,9 @@ var NavigationMenuLevel3 = function NavigationMenuLevel3(_ref6) {
64329
64370
  var isHoverEnabled = showNavIconInHeader || isHover;
64330
64371
  var countText = !isHoverEnabled ? formatNumber(count) : count;
64331
64372
  var status, statusColor;
64332
- if (countText && navItem.getStatus && navItem.getStatus) {
64333
- status = navItem.getStatus(count);
64334
- statusColor = statusColors[status];
64373
+ if (countText != null && countText !== '') {
64374
+ status = resolveCountStatus(count, navItem);
64375
+ if (status != null) statusColor = statusColors[status];
64335
64376
  }
64336
64377
  var position = (navItem === null || navItem === void 0 ? void 0 : navItem.statusColorPosition) || '';
64337
64378
  var isDisabled = typeof navItem.disabled === 'function' ? navItem.disabled() : navItem.disabled;
@@ -68107,6 +68148,7 @@ function ContextualHelp(_ref) {
68107
68148
 
68108
68149
  var _excluded = ["signal"];
68109
68150
  var pending = new Map();
68151
+ var STORAGE_REQUEST_TIMEOUT_MS = 5000;
68110
68152
  function requestId() {
68111
68153
  return "bridge-".concat(Date.now(), "-").concat(Math.random().toString(36).slice(2, 9));
68112
68154
  }
@@ -68234,11 +68276,29 @@ function sendFetchRequest(payload) {
68234
68276
  });
68235
68277
  }
68236
68278
  function sendStorageGet(payload) {
68237
- return new Promise(function (resolve) {
68279
+ var timeoutMs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : STORAGE_REQUEST_TIMEOUT_MS;
68280
+ return new Promise(function (_resolve) {
68238
68281
  var id = requestId();
68282
+ var timer = setTimeout(function () {
68283
+ if (pending.has(id)) {
68284
+ pending.delete(id);
68285
+ console.warn('[iframe-bridge/transport] STORAGE_GET timed out', {
68286
+ op: payload === null || payload === void 0 ? void 0 : payload.op,
68287
+ key: payload === null || payload === void 0 ? void 0 : payload.key,
68288
+ timeoutMs: timeoutMs
68289
+ });
68290
+ _resolve(undefined);
68291
+ }
68292
+ }, timeoutMs);
68239
68293
  pending.set(id, {
68240
- resolve: resolve,
68241
- reject: function reject() {}
68294
+ resolve: function resolve(result) {
68295
+ clearTimeout(timer);
68296
+ _resolve(result);
68297
+ },
68298
+ reject: function reject() {
68299
+ clearTimeout(timer);
68300
+ _resolve(undefined);
68301
+ }
68242
68302
  });
68243
68303
  post('STORAGE_GET', _objectSpread2(_objectSpread2({}, payload), {}, {
68244
68304
  requestId: id
@@ -68246,11 +68306,29 @@ function sendStorageGet(payload) {
68246
68306
  });
68247
68307
  }
68248
68308
  function sendStorageSet(payload) {
68249
- return new Promise(function (resolve) {
68309
+ var timeoutMs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : STORAGE_REQUEST_TIMEOUT_MS;
68310
+ return new Promise(function (_resolve2) {
68250
68311
  var id = requestId();
68312
+ var timer = setTimeout(function () {
68313
+ if (pending.has(id)) {
68314
+ pending.delete(id);
68315
+ console.warn('[iframe-bridge/transport] STORAGE_SET timed out', {
68316
+ op: payload === null || payload === void 0 ? void 0 : payload.op,
68317
+ key: payload === null || payload === void 0 ? void 0 : payload.key,
68318
+ timeoutMs: timeoutMs
68319
+ });
68320
+ _resolve2(undefined);
68321
+ }
68322
+ }, timeoutMs);
68251
68323
  pending.set(id, {
68252
- resolve: resolve,
68253
- reject: function reject() {}
68324
+ resolve: function resolve(result) {
68325
+ clearTimeout(timer);
68326
+ _resolve2(result);
68327
+ },
68328
+ reject: function reject() {
68329
+ clearTimeout(timer);
68330
+ _resolve2(undefined);
68331
+ }
68254
68332
  });
68255
68333
  post('STORAGE_SET', _objectSpread2(_objectSpread2({}, payload), {}, {
68256
68334
  requestId: id
@@ -68258,22 +68336,22 @@ function sendStorageSet(payload) {
68258
68336
  });
68259
68337
  }
68260
68338
  function getInitData() {
68261
- return new Promise(function (_resolve) {
68339
+ return new Promise(function (_resolve3) {
68262
68340
  var id = requestId();
68263
68341
  var timer = setTimeout(function () {
68264
68342
  if (pending.has(id)) {
68265
68343
  pending.delete(id);
68266
- _resolve(null);
68344
+ _resolve3(null);
68267
68345
  }
68268
68346
  }, 5000);
68269
68347
  pending.set(id, {
68270
68348
  resolve: function resolve(result) {
68271
68349
  clearTimeout(timer);
68272
- _resolve(result);
68350
+ _resolve3(result);
68273
68351
  },
68274
68352
  reject: function reject() {
68275
68353
  clearTimeout(timer);
68276
- _resolve(null);
68354
+ _resolve3(null);
68277
68355
  }
68278
68356
  });
68279
68357
  post('GET_INIT_DATA', {
@@ -68298,6 +68376,19 @@ function postNavConfig(navItems) {
68298
68376
  navItems: navItems
68299
68377
  });
68300
68378
  }
68379
+
68380
+ /**
68381
+ * Push nav badge counts to the shell.
68382
+ * @param {Record<string, Record<string, number>>} countsByMenu
68383
+ * Top-level menu route/name → sub-route counts, e.g.
68384
+ * { tasks: { 'open-tasks': 5 }, admin: { 'staged-users': 2 } }
68385
+ */
68386
+ function postNavCounts(countsByMenu) {
68387
+ if (!countsByMenu || _typeof$1(countsByMenu) !== 'object') return;
68388
+ post('UPDATE_NAV_COUNTS', {
68389
+ countsByMenu: countsByMenu
68390
+ });
68391
+ }
68301
68392
  function postAppEnv(toolkitEnv, mihelpAgentProps) {
68302
68393
  post('SET_APP_ENV', {
68303
68394
  toolkitEnv: toolkitEnv,
@@ -68410,6 +68501,17 @@ function setInitCache(initData) {
68410
68501
  count: Array.isArray(initData[k]) ? initData[k].length : 'not-array'
68411
68502
  });
68412
68503
  });
68504
+ var appConfigKeys = Object.keys(initData).filter(function (k) {
68505
+ return k.endsWith(':config') && k !== 'opsportal-core:config';
68506
+ });
68507
+ appConfigKeys.forEach(function (k) {
68508
+ var _initData$k;
68509
+ cache.local[k] = initData[k];
68510
+ console.log('[iframe-bridge/storage] setInitCache mapped app config', {
68511
+ key: k,
68512
+ hasRunConfig: Boolean((_initData$k = initData[k]) === null || _initData$k === void 0 ? void 0 : _initData$k.runConfig)
68513
+ });
68514
+ });
68413
68515
  }
68414
68516
  function setExtraLocal(key, value) {
68415
68517
  cache.local[key] = value;
@@ -69552,6 +69654,7 @@ var iframeFacade = {
69552
69654
  postUpdateUri: postUpdateUri,
69553
69655
  postUpdateCrumbs: postUpdateCrumbs,
69554
69656
  postNavConfig: postNavConfig,
69657
+ postNavCounts: postNavCounts,
69555
69658
  postAppEnv: postAppEnv,
69556
69659
  addMessageListener: addMessageListener,
69557
69660
  getInitData: getInitData,
@@ -69569,6 +69672,20 @@ function normalizeIframePath(uri) {
69569
69672
  return uri.startsWith('/') ? uri : "/".concat(uri);
69570
69673
  }
69571
69674
 
69675
+ function serializeCountStatusThresholds(thresholds) {
69676
+ if (!Array.isArray(thresholds)) return undefined;
69677
+ var serialized = thresholds.filter(function (t) {
69678
+ return t && t.status != null && (t.above != null || t.min != null);
69679
+ }).map(function (t) {
69680
+ var entry = {
69681
+ status: t.status
69682
+ };
69683
+ if (t.above != null) entry.above = t.above;
69684
+ if (t.min != null) entry.min = t.min;
69685
+ return entry;
69686
+ });
69687
+ return serialized.length > 0 ? serialized : undefined;
69688
+ }
69572
69689
  function serializeNavItems(items) {
69573
69690
  if (!Array.isArray(items)) return [];
69574
69691
  return items.map(function (item) {
@@ -69596,6 +69713,11 @@ function serializeNavItems(items) {
69596
69713
  serialized.hidden = item.hidden;
69597
69714
  }
69598
69715
  if (item.isLandingPage) serialized.isLandingPage = true;
69716
+ if (typeof item.statusColorPosition === 'string') {
69717
+ serialized.statusColorPosition = item.statusColorPosition;
69718
+ }
69719
+ var thresholds = serializeCountStatusThresholds(item.countStatusThresholds);
69720
+ if (thresholds) serialized.countStatusThresholds = thresholds;
69599
69721
  if (item.subMenuItems && item.subMenuItems.length > 0) {
69600
69722
  serialized.subMenuItems = serializeNavItems(item.subMenuItems);
69601
69723
  }
@@ -69679,6 +69801,70 @@ function NavConfigSender(_ref) {
69679
69801
  return null;
69680
69802
  }
69681
69803
 
69804
+ var DEFAULT_POLL_INTERVAL_MS = 60000;
69805
+ function resolveCountsLoader(mod) {
69806
+ if (!mod) return null;
69807
+ if (typeof mod === 'function') return mod;
69808
+ if (typeof mod.default === 'function') return mod.default;
69809
+ if (typeof mod.getNavCounts === 'function') return mod.getNavCounts;
69810
+ return null;
69811
+ }
69812
+
69813
+ /**
69814
+ * Polls nav badge counts inside the iframe and pushes them to the shell via UPDATE_NAV_COUNTS.
69815
+ *
69816
+ * @param {Object} props
69817
+ * @param {() => Promise<{ default?: Function, getNavCounts?: Function } | Function>} props.countsLoader
69818
+ * Dynamic import returning a function that resolves to countsByMenu, e.g.
69819
+ * { tasks: { 'open-tasks': 5 }, admin: { 'staged-users': 2 } }
69820
+ * @param {number} [props.pollIntervalMs=60000] Set to 0 to post once on mount only.
69821
+ * @param {(err: Error) => void} [props.onError]
69822
+ */
69823
+ function NavCountsSender(_ref) {
69824
+ var countsLoader = _ref.countsLoader,
69825
+ _ref$pollIntervalMs = _ref.pollIntervalMs,
69826
+ pollIntervalMs = _ref$pollIntervalMs === void 0 ? DEFAULT_POLL_INTERVAL_MS : _ref$pollIntervalMs,
69827
+ onError = _ref.onError;
69828
+ var mountedRef = React.useRef(true);
69829
+ React.useEffect(function () {
69830
+ mountedRef.current = true;
69831
+ if (!countsLoader) return undefined;
69832
+ var intervalId;
69833
+ var fetchAndPost = function fetchAndPost() {
69834
+ Promise.resolve().then(function () {
69835
+ return countsLoader();
69836
+ }).then(function (mod) {
69837
+ var loader = resolveCountsLoader(mod);
69838
+ if (!loader) {
69839
+ throw new Error('[NavCountsSender] countsLoader must export a function');
69840
+ }
69841
+ return loader();
69842
+ }).then(function (countsByMenu) {
69843
+ if (!mountedRef.current) return;
69844
+ if (countsByMenu && _typeof$1(countsByMenu) === 'object') {
69845
+ postNavCounts(countsByMenu);
69846
+ }
69847
+ }).catch(function (err) {
69848
+ if (!mountedRef.current) return;
69849
+ if (onError) {
69850
+ onError(err);
69851
+ } else {
69852
+ console.warn('[NavCountsSender] Failed to load/post nav counts:', err);
69853
+ }
69854
+ });
69855
+ };
69856
+ fetchAndPost();
69857
+ if (pollIntervalMs > 0) {
69858
+ intervalId = setInterval(fetchAndPost, pollIntervalMs);
69859
+ }
69860
+ return function () {
69861
+ mountedRef.current = false;
69862
+ if (intervalId) clearInterval(intervalId);
69863
+ };
69864
+ }, [countsLoader, pollIntervalMs, onError]);
69865
+ return null;
69866
+ }
69867
+
69682
69868
  var defaultContentStyle = {
69683
69869
  height: '100%',
69684
69870
  display: 'flex',
@@ -69692,6 +69878,9 @@ function IframeAppRootInner(_ref) {
69692
69878
  mihelpAgentProps = _ref.mihelpAgentProps,
69693
69879
  navItemsLoader = _ref.navItemsLoader,
69694
69880
  navConfigOnError = _ref.navConfigOnError,
69881
+ navCountsLoader = _ref.navCountsLoader,
69882
+ navCountsPollIntervalMs = _ref.navCountsPollIntervalMs,
69883
+ navCountsOnError = _ref.navCountsOnError,
69695
69884
  updateUriIsPath = _ref.updateUriIsPath,
69696
69885
  suppressRouteSyncEcho = _ref.suppressRouteSyncEcho;
69697
69886
  var history = reactRouterDom.useHistory();
@@ -69708,6 +69897,10 @@ function IframeAppRootInner(_ref) {
69708
69897
  }), navItemsLoader ? /*#__PURE__*/React__default["default"].createElement(NavConfigSender, {
69709
69898
  navItemsLoader: navItemsLoader,
69710
69899
  onError: navConfigOnError
69900
+ }) : null, navCountsLoader ? /*#__PURE__*/React__default["default"].createElement(NavCountsSender, {
69901
+ countsLoader: navCountsLoader,
69902
+ pollIntervalMs: navCountsPollIntervalMs,
69903
+ onError: navCountsOnError
69711
69904
  }) : null, /*#__PURE__*/React__default["default"].createElement("div", {
69712
69905
  style: contentStyle || defaultContentStyle
69713
69906
  }, children));
@@ -69722,6 +69915,9 @@ function IframeAppRoot(_ref2) {
69722
69915
  mihelpAgentProps = _ref2$mihelpAgentProp === void 0 ? null : _ref2$mihelpAgentProp,
69723
69916
  navItemsLoader = _ref2.navItemsLoader,
69724
69917
  navConfigOnError = _ref2.navConfigOnError,
69918
+ navCountsLoader = _ref2.navCountsLoader,
69919
+ navCountsPollIntervalMs = _ref2.navCountsPollIntervalMs,
69920
+ navCountsOnError = _ref2.navCountsOnError,
69725
69921
  _ref2$updateUriIsPath = _ref2.updateUriIsPath,
69726
69922
  updateUriIsPath = _ref2$updateUriIsPath === void 0 ? false : _ref2$updateUriIsPath,
69727
69923
  _ref2$suppressRouteSy = _ref2.suppressRouteSyncEcho,
@@ -69736,6 +69932,9 @@ function IframeAppRoot(_ref2) {
69736
69932
  mihelpAgentProps: mihelpAgentProps,
69737
69933
  navItemsLoader: navItemsLoader,
69738
69934
  navConfigOnError: navConfigOnError,
69935
+ navCountsLoader: navCountsLoader,
69936
+ navCountsPollIntervalMs: navCountsPollIntervalMs,
69937
+ navCountsOnError: navCountsOnError,
69739
69938
  updateUriIsPath: updateUriIsPath,
69740
69939
  suppressRouteSyncEcho: suppressRouteSyncEcho
69741
69940
  }, children));
@@ -69784,31 +69983,39 @@ function hydrateAppConfig(_x) {
69784
69983
  }
69785
69984
  function _hydrateAppConfig() {
69786
69985
  _hydrateAppConfig = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
69787
- var appName, sendStorageGet, setExtraLocal, fetcher, configFallbackUri, validateAppConfig, appConfig;
69986
+ var appName, getCachedLocalItem, sendStorageGet, setExtraLocal, fetcher, configFallbackUri, validateAppConfig, configKey, appConfig;
69788
69987
  return _regenerator().w(function (_context) {
69789
69988
  while (1) switch (_context.n) {
69790
69989
  case 0:
69791
- appName = _ref.appName, sendStorageGet = _ref.sendStorageGet, setExtraLocal = _ref.setExtraLocal, fetcher = _ref.fetcher, configFallbackUri = _ref.configFallbackUri, validateAppConfig = _ref.validateAppConfig;
69990
+ appName = _ref.appName, getCachedLocalItem = _ref.getCachedLocalItem, sendStorageGet = _ref.sendStorageGet, setExtraLocal = _ref.setExtraLocal, fetcher = _ref.fetcher, configFallbackUri = _ref.configFallbackUri, validateAppConfig = _ref.validateAppConfig;
69991
+ configKey = "".concat(appName, ":config");
69992
+ appConfig = getCachedLocalItem(configKey);
69993
+ if (isValidAppConfig(appConfig, validateAppConfig)) {
69994
+ _context.n = 2;
69995
+ break;
69996
+ }
69792
69997
  _context.n = 1;
69793
69998
  return sendStorageGet({
69794
69999
  op: 'getLocalItem',
69795
- key: "".concat(appName, ":config")
70000
+ key: configKey
69796
70001
  });
69797
70002
  case 1:
69798
70003
  appConfig = _context.v;
70004
+ case 2:
69799
70005
  if (!(!isValidAppConfig(appConfig, validateAppConfig) && configFallbackUri && fetcher)) {
69800
- _context.n = 3;
70006
+ _context.n = 4;
69801
70007
  break;
69802
70008
  }
69803
- _context.n = 2;
70009
+ console.log('[Iframe] fetching app config from', configFallbackUri);
70010
+ _context.n = 3;
69804
70011
  return fetcher.getConfig(configFallbackUri);
69805
- case 2:
69806
- appConfig = _context.v;
69807
70012
  case 3:
70013
+ appConfig = _context.v;
70014
+ case 4:
69808
70015
  if (isValidAppConfig(appConfig, validateAppConfig)) {
69809
- setExtraLocal("".concat(appName, ":config"), appConfig);
70016
+ setExtraLocal(configKey, appConfig);
69810
70017
  }
69811
- case 4:
70018
+ case 5:
69812
70019
  return _context.a(2);
69813
70020
  }
69814
70021
  }, _callee);
@@ -69837,11 +70044,11 @@ function hydratePermissions(_x2) {
69837
70044
  */
69838
70045
  function _hydratePermissions() {
69839
70046
  _hydratePermissions = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee3(_ref2) {
69840
- var permissionKeys, sendStorageGet, setExtraLocal, permissionsOnlyIfArray, keys;
70047
+ var permissionKeys, getCachedLocalItem, sendStorageGet, setExtraLocal, permissionsOnlyIfArray, keys;
69841
70048
  return _regenerator().w(function (_context3) {
69842
70049
  while (1) switch (_context3.n) {
69843
70050
  case 0:
69844
- permissionKeys = _ref2.permissionKeys, sendStorageGet = _ref2.sendStorageGet, setExtraLocal = _ref2.setExtraLocal, permissionsOnlyIfArray = _ref2.permissionsOnlyIfArray;
70051
+ permissionKeys = _ref2.permissionKeys, getCachedLocalItem = _ref2.getCachedLocalItem, sendStorageGet = _ref2.sendStorageGet, setExtraLocal = _ref2.setExtraLocal, permissionsOnlyIfArray = _ref2.permissionsOnlyIfArray;
69845
70052
  keys = normalizePermissionKeys(permissionKeys);
69846
70053
  _context3.n = 1;
69847
70054
  return Promise.all(keys.map(/*#__PURE__*/function () {
@@ -69850,6 +70057,11 @@ function _hydratePermissions() {
69850
70057
  return _regenerator().w(function (_context2) {
69851
70058
  while (1) switch (_context2.n) {
69852
70059
  case 0:
70060
+ perms = getCachedLocalItem(key);
70061
+ if (!(perms == null || permissionsOnlyIfArray && !Array.isArray(perms))) {
70062
+ _context2.n = 2;
70063
+ break;
70064
+ }
69853
70065
  _context2.n = 1;
69854
70066
  return sendStorageGet({
69855
70067
  op: 'getLocalItem',
@@ -69857,14 +70069,15 @@ function _hydratePermissions() {
69857
70069
  });
69858
70070
  case 1:
69859
70071
  perms = _context2.v;
70072
+ case 2:
69860
70073
  if (!(permissionsOnlyIfArray && !Array.isArray(perms))) {
69861
- _context2.n = 2;
70074
+ _context2.n = 3;
69862
70075
  break;
69863
70076
  }
69864
70077
  return _context2.a(2);
69865
- case 2:
69866
- if (perms != null) setExtraLocal(key, perms);
69867
70078
  case 3:
70079
+ if (perms != null) setExtraLocal(key, perms);
70080
+ case 4:
69868
70081
  return _context2.a(2);
69869
70082
  }
69870
70083
  }, _callee2);
@@ -69885,7 +70098,7 @@ function bootstrapIframeApp(_x3) {
69885
70098
  }
69886
70099
  function _bootstrapIframeApp() {
69887
70100
  _bootstrapIframeApp = _asyncToGenerator$1(/*#__PURE__*/_regenerator().m(function _callee4(options) {
69888
- 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, getInitialUri, getInitData, setInitCache, setExtraLocal, sendStorageGet, setAppName, _yield$Promise$all, _yield$Promise$all2, initialUri, initData, tasks, _t;
70101
+ 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;
69889
70102
  return _regenerator().w(function (_context4) {
69890
70103
  while (1) switch (_context4.p = _context4.n) {
69891
70104
  case 0:
@@ -69921,7 +70134,7 @@ function _bootstrapIframeApp() {
69921
70134
  }
69922
70135
  return _context4.a(2);
69923
70136
  case 4:
69924
- bridge = iframeFacade.bridge, fetcher = iframeFacade.fetcher;
70137
+ bridge = iframeFacade.bridge, fetcher = iframeFacade.fetcher, storage = iframeFacade.storage;
69925
70138
  getInitialUri = bridge.getInitialUri, getInitData = bridge.getInitData, setInitCache = bridge.setInitCache, setExtraLocal = bridge.setExtraLocal, sendStorageGet = bridge.sendStorageGet, setAppName = bridge.setAppName;
69926
70139
  _context4.n = 5;
69927
70140
  return Promise.all([getInitialUri(), getInitData()]);
@@ -69931,12 +70144,15 @@ function _bootstrapIframeApp() {
69931
70144
  initialUri = _yield$Promise$all2[0];
69932
70145
  initData = _yield$Promise$all2[1];
69933
70146
  if (appName && typeof setAppName === 'function') setAppName(appName);
69934
- if (!initData) {
69935
- _context4.n = 9;
69936
- break;
70147
+ if (initData) {
70148
+ setInitCache(initData);
70149
+ if (onInitCache) onInitCache(initData);
70150
+ } else {
70151
+ console.warn('[Iframe] no initData from shell');
69937
70152
  }
69938
- setInitCache(initData);
69939
- if (onInitCache) onInitCache(initData);
70153
+ getCachedLocalItem = function getCachedLocalItem(key) {
70154
+ return storage.getLocalItem(key);
70155
+ };
69940
70156
  if (!(fetchConfigFromShell && appName)) {
69941
70157
  _context4.n = 9;
69942
70158
  break;
@@ -69944,6 +70160,7 @@ function _bootstrapIframeApp() {
69944
70160
  _context4.p = 6;
69945
70161
  tasks = [hydrateAppConfig({
69946
70162
  appName: appName,
70163
+ getCachedLocalItem: getCachedLocalItem,
69947
70164
  sendStorageGet: sendStorageGet,
69948
70165
  setExtraLocal: setExtraLocal,
69949
70166
  fetcher: fetcher,
@@ -69953,6 +70170,7 @@ function _bootstrapIframeApp() {
69953
70170
  if (permissionKeys) {
69954
70171
  tasks.push(hydratePermissions({
69955
70172
  permissionKeys: permissionKeys,
70173
+ getCachedLocalItem: getCachedLocalItem,
69956
70174
  sendStorageGet: sendStorageGet,
69957
70175
  setExtraLocal: setExtraLocal,
69958
70176
  permissionsOnlyIfArray: permissionsOnlyIfArray
@@ -81564,12 +81782,15 @@ exports.Crumb = Crumb$1;
81564
81782
  exports.IframeAppRoot = IframeAppRoot;
81565
81783
  exports.IframeRouteSync = IframeRouteSync;
81566
81784
  exports.NavConfigSender = NavConfigSender;
81785
+ exports.NavCountsSender = NavCountsSender;
81786
+ exports.STANDARD_NAV_COUNT_THRESHOLDS = STANDARD_NAV_COUNT_THRESHOLDS;
81567
81787
  exports.accessHelpers = accessHelpers$1;
81568
81788
  exports.bootstrapIframeApp = bootstrapIframeApp;
81569
81789
  exports.fetcher = fetcher$1;
81570
81790
  exports.iframeFacade = iframeFacade;
81571
81791
  exports.normalizeIframePath = normalizeIframePath;
81572
81792
  exports.registerEarlyLoadUriListener = registerEarlyLoadUriListener;
81793
+ exports.resolveCountStatus = resolveCountStatus;
81573
81794
  exports.serializeNavItems = serializeNavItems;
81574
81795
  exports.storage = storage$2;
81575
81796
  //# sourceMappingURL=ops-tool-kit.js.map