@trops/dash-core 0.1.422 → 0.1.425

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.
package/dist/index.js CHANGED
@@ -50,8 +50,8 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
50
50
  var jsxRuntime__namespace = /*#__PURE__*/_interopNamespaceDefault(jsxRuntime);
51
51
  var ReactDOM__namespace = /*#__PURE__*/_interopNamespaceDefault(ReactDOM);
52
52
 
53
- function ownKeys$Z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
54
- function _objectSpread$Z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
53
+ function ownKeys$_(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
54
+ function _objectSpread$_(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$_(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$_(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
55
55
  var event = {
56
56
  list: new Map(),
57
57
  // Map(1) { '<widget-UUID>' => { 'CustomSearchbar[10].searchQueryChanged': [] } }
@@ -113,7 +113,7 @@ var event = {
113
113
  uuid: subscriber["uuid"]
114
114
  };
115
115
  if ("action" in subscriber && subscriber.action !== undefined) {
116
- subscriber["action"](_objectSpread$Z({}, objectToSend));
116
+ subscriber["action"](_objectSpread$_({}, objectToSend));
117
117
  }
118
118
  });
119
119
  }
@@ -2891,8 +2891,8 @@ var DashboardWrapper = function DashboardWrapper(_ref) {
2891
2891
  });
2892
2892
  };
2893
2893
 
2894
- function ownKeys$Y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2895
- function _objectSpread$Y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Y(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2894
+ function ownKeys$Z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2895
+ function _objectSpread$Z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2896
2896
  function ThemeBroadcast(_ref) {
2897
2897
  var ctx = _ref.ctx;
2898
2898
  React.useEffect(function () {
@@ -2925,7 +2925,7 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref2) {
2925
2925
  var dashboardTheme = themes[themeKey];
2926
2926
  var themeValue = dashboardTheme ? dashboardTheme[themeVariant] || null : null;
2927
2927
  if (!themeValue) return null;
2928
- return _objectSpread$Y(_objectSpread$Y({}, parentContext), {}, {
2928
+ return _objectSpread$Z(_objectSpread$Z({}, parentContext), {}, {
2929
2929
  currentTheme: themeValue,
2930
2930
  currentThemeKey: themeKey,
2931
2931
  theme: themeValue,
@@ -2952,8 +2952,8 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref2) {
2952
2952
  });
2953
2953
  };
2954
2954
 
2955
- function ownKeys$X(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2956
- function _objectSpread$X(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2955
+ function ownKeys$Y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2956
+ function _objectSpread$Y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Y(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2957
2957
  var AppThemeScope = function AppThemeScope(_ref) {
2958
2958
  var children = _ref.children;
2959
2959
  var ctx = React.useContext(DashReact.ThemeContext);
@@ -2961,7 +2961,7 @@ var AppThemeScope = function AppThemeScope(_ref) {
2961
2961
  children: children
2962
2962
  });
2963
2963
  return /*#__PURE__*/jsxRuntime.jsx(DashReact.ThemeContext.Provider, {
2964
- value: _objectSpread$X(_objectSpread$X({}, ctx), {}, {
2964
+ value: _objectSpread$Y(_objectSpread$Y({}, ctx), {}, {
2965
2965
  currentTheme: ctx.appTheme,
2966
2966
  currentThemeKey: ctx.appThemeKey,
2967
2967
  theme: ctx.appTheme,
@@ -3073,8 +3073,8 @@ var LayoutContainer = function LayoutContainer(_ref) {
3073
3073
  });
3074
3074
  };
3075
3075
 
3076
- function ownKeys$W(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3077
- function _objectSpread$W(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3076
+ function ownKeys$X(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3077
+ function _objectSpread$X(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3078
3078
  function _createForOfIteratorHelper$t(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$t(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3079
3079
  function _unsupportedIterableToArray$t(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$t(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$t(r, a) : void 0; } }
3080
3080
  function _arrayLikeToArray$t(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -3356,7 +3356,7 @@ function createLayoutFromTemplate(template) {
3356
3356
  try {
3357
3357
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
3358
3358
  var cell = _step.value;
3359
- grid[cell.key] = _objectSpread$W({
3359
+ grid[cell.key] = _objectSpread$X({
3360
3360
  component: null,
3361
3361
  hide: cell.hide || false
3362
3362
  }, cell.span ? {
@@ -4285,8 +4285,8 @@ var RegistryAuthModal = function RegistryAuthModal(_ref) {
4285
4285
  function _createForOfIteratorHelper$s(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$s(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4286
4286
  function _unsupportedIterableToArray$s(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$s(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$s(r, a) : void 0; } }
4287
4287
  function _arrayLikeToArray$s(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4288
- function ownKeys$V(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4289
- function _objectSpread$V(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4288
+ function ownKeys$W(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4289
+ function _objectSpread$W(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4290
4290
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4291
4291
  var dashboardPackage = _ref.dashboardPackage,
4292
4292
  appId = _ref.appId,
@@ -4402,7 +4402,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4402
4402
  setProgressWidgets(function (prev) {
4403
4403
  var next = _toConsumableArray(prev);
4404
4404
  if (data.index >= 0 && data.index < next.length) {
4405
- next[data.index] = _objectSpread$V(_objectSpread$V({}, next[data.index]), {}, {
4405
+ next[data.index] = _objectSpread$W(_objectSpread$W({}, next[data.index]), {}, {
4406
4406
  status: data.status,
4407
4407
  error: data.error || null
4408
4408
  });
@@ -4498,7 +4498,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4498
4498
  var raw = preview === null || preview === void 0 ? void 0 : preview.compatibility;
4499
4499
  if (!raw) return raw;
4500
4500
  var cMap = ComponentManager.componentMap();
4501
- var augWidgets = _objectSpread$V({}, raw.widgets);
4501
+ var augWidgets = _objectSpread$W({}, raw.widgets);
4502
4502
  var fixedCount = 0;
4503
4503
  var _loop = function _loop() {
4504
4504
  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
@@ -5081,8 +5081,8 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
5081
5081
  });
5082
5082
  };
5083
5083
 
5084
- function ownKeys$U(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5085
- function _objectSpread$U(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5084
+ function ownKeys$V(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5085
+ function _objectSpread$V(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5086
5086
  var LayoutManagerModal = function LayoutManagerModal(_ref) {
5087
5087
  var open = _ref.open,
5088
5088
  setIsOpen = _ref.setIsOpen,
@@ -5327,7 +5327,7 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
5327
5327
  }
5328
5328
  return _context2.abrupt("return");
5329
5329
  case 6:
5330
- updatedWorkspace = _objectSpread$U(_objectSpread$U({}, importedWorkspace), {}, {
5330
+ updatedWorkspace = _objectSpread$V(_objectSpread$V({}, importedWorkspace), {}, {
5331
5331
  name: dashboardName.trim(),
5332
5332
  menuId: menuId,
5333
5333
  themeKey: selectedThemeKey
@@ -7085,8 +7085,8 @@ function applyFilters(items, filters, mode) {
7085
7085
  function _createForOfIteratorHelper$q(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$q(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7086
7086
  function _unsupportedIterableToArray$q(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$q(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$q(r, a) : void 0; } }
7087
7087
  function _arrayLikeToArray$q(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7088
- function ownKeys$T(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7089
- function _objectSpread$T(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7088
+ function ownKeys$U(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7089
+ function _objectSpread$U(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7090
7090
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7091
7091
  var _state$selectedDashbo, _state$selectedDashbo2;
7092
7092
  var state = _ref.state,
@@ -7256,7 +7256,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7256
7256
  _context2.next = 7;
7257
7257
  break;
7258
7258
  }
7259
- updatedWorkspace = _objectSpread$T(_objectSpread$T({}, installResult.workspace), {}, {
7259
+ updatedWorkspace = _objectSpread$U(_objectSpread$U({}, installResult.workspace), {}, {
7260
7260
  name: name.trim(),
7261
7261
  menuId: menuId || 1,
7262
7262
  themeKey: theme
@@ -8011,8 +8011,8 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
8011
8011
  });
8012
8012
  };
8013
8013
 
8014
- function ownKeys$S(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8015
- function _objectSpread$S(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8014
+ function ownKeys$T(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8015
+ function _objectSpread$T(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8016
8016
  var TOTAL_STEPS = 2; // Steps 0-1: Discover, Customize
8017
8017
 
8018
8018
  var initialState = {
@@ -8038,20 +8038,20 @@ var initialState = {
8038
8038
  function wizardReducer(state, action) {
8039
8039
  switch (action.type) {
8040
8040
  case "SET_STEP":
8041
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8041
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8042
8042
  step: action.payload
8043
8043
  });
8044
8044
  case "SET_FILTERS":
8045
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8046
- filters: _objectSpread$S(_objectSpread$S({}, state.filters), action.payload)
8045
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8046
+ filters: _objectSpread$T(_objectSpread$T({}, state.filters), action.payload)
8047
8047
  });
8048
8048
  case "TOGGLE_FILTER_CATEGORY":
8049
8049
  {
8050
8050
  var categories = state.filters.categories.includes(action.payload) ? state.filters.categories.filter(function (c) {
8051
8051
  return c !== action.payload;
8052
8052
  }) : [].concat(_toConsumableArray(state.filters.categories), [action.payload]);
8053
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8054
- filters: _objectSpread$S(_objectSpread$S({}, state.filters), {}, {
8053
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8054
+ filters: _objectSpread$T(_objectSpread$T({}, state.filters), {}, {
8055
8055
  categories: categories
8056
8056
  })
8057
8057
  });
@@ -8061,15 +8061,15 @@ function wizardReducer(state, action) {
8061
8061
  var providers = state.filters.providers.includes(action.payload) ? state.filters.providers.filter(function (p) {
8062
8062
  return p !== action.payload;
8063
8063
  }) : [].concat(_toConsumableArray(state.filters.providers), [action.payload]);
8064
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8065
- filters: _objectSpread$S(_objectSpread$S({}, state.filters), {}, {
8064
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8065
+ filters: _objectSpread$T(_objectSpread$T({}, state.filters), {}, {
8066
8066
  providers: providers
8067
8067
  })
8068
8068
  });
8069
8069
  }
8070
8070
  case "SET_SEARCH_QUERY":
8071
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8072
- filters: _objectSpread$S(_objectSpread$S({}, state.filters), {}, {
8071
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8072
+ filters: _objectSpread$T(_objectSpread$T({}, state.filters), {}, {
8073
8073
  query: action.payload
8074
8074
  })
8075
8075
  });
@@ -8079,7 +8079,7 @@ function wizardReducer(state, action) {
8079
8079
  var widgetOrder = action.payload.map(function (w) {
8080
8080
  return w.name || w.key;
8081
8081
  });
8082
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8082
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8083
8083
  selectedWidgets: action.payload,
8084
8084
  layout: {
8085
8085
  templateKey: templateKey,
@@ -8099,7 +8099,7 @@ function wizardReducer(state, action) {
8099
8099
  var toggleWidgetOrder = selectedWidgets.map(function (w) {
8100
8100
  return w.name || w.key;
8101
8101
  });
8102
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8102
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8103
8103
  selectedWidgets: selectedWidgets,
8104
8104
  layout: {
8105
8105
  templateKey: toggleTemplateKey,
@@ -8108,29 +8108,29 @@ function wizardReducer(state, action) {
8108
8108
  });
8109
8109
  }
8110
8110
  case "SET_SELECTED_DASHBOARD":
8111
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8111
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8112
8112
  selectedDashboard: action.payload
8113
8113
  });
8114
8114
  case "SET_PATH":
8115
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8115
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8116
8116
  path: action.payload
8117
8117
  });
8118
8118
  case "SET_LAYOUT":
8119
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8119
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8120
8120
  layout: action.payload
8121
8121
  });
8122
8122
  case "REORDER_WIDGETS":
8123
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8124
- layout: _objectSpread$S(_objectSpread$S({}, state.layout), {}, {
8123
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8124
+ layout: _objectSpread$T(_objectSpread$T({}, state.layout), {}, {
8125
8125
  widgetOrder: action.payload
8126
8126
  })
8127
8127
  });
8128
8128
  case "SET_CUSTOMIZATION":
8129
- return _objectSpread$S(_objectSpread$S({}, state), {}, {
8130
- customization: _objectSpread$S(_objectSpread$S({}, state.customization), action.payload)
8129
+ return _objectSpread$T(_objectSpread$T({}, state), {}, {
8130
+ customization: _objectSpread$T(_objectSpread$T({}, state.customization), action.payload)
8131
8131
  });
8132
8132
  case "RESET":
8133
- return _objectSpread$S({}, initialState);
8133
+ return _objectSpread$T({}, initialState);
8134
8134
  default:
8135
8135
  return state;
8136
8136
  }
@@ -8892,10 +8892,10 @@ var syntax = SyntaxError;
8892
8892
  var type = TypeError;
8893
8893
 
8894
8894
  /** @type {import('./gOPD')} */
8895
- var gOPD$6 = Object.getOwnPropertyDescriptor;
8895
+ var gOPD$5 = Object.getOwnPropertyDescriptor;
8896
8896
 
8897
8897
  /** @type {import('.')} */
8898
- var $gOPD$2 = gOPD$6;
8898
+ var $gOPD$2 = gOPD$5;
8899
8899
 
8900
8900
  if ($gOPD$2) {
8901
8901
  try {
@@ -9030,7 +9030,7 @@ defineProperties$1.supportsDescriptors = !!supportsDescriptors$2;
9030
9030
 
9031
9031
  var defineProperties_1 = defineProperties$1;
9032
9032
 
9033
- var callBind$7 = {exports: {}};
9033
+ var callBind$6 = {exports: {}};
9034
9034
 
9035
9035
  /** @type {import('.')} */
9036
9036
  var esObjectAtoms = Object;
@@ -9330,60 +9330,78 @@ var callBindApplyHelpers = function callBindBasic(args) {
9330
9330
  return $actualApply(bind$3, $call$1, args);
9331
9331
  };
9332
9332
 
9333
- var callBind$6 = callBindApplyHelpers;
9334
- var gOPD$5 = gopd$1;
9333
+ var get;
9334
+ var hasRequiredGet;
9335
+
9336
+ function requireGet () {
9337
+ if (hasRequiredGet) return get;
9338
+ hasRequiredGet = 1;
9335
9339
 
9336
- var hasProtoAccessor;
9337
- try {
9338
- // eslint-disable-next-line no-extra-parens, no-proto
9339
- hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;
9340
- } catch (e) {
9341
- if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {
9342
- throw e;
9340
+ var callBind = callBindApplyHelpers;
9341
+ var gOPD = gopd$1;
9342
+
9343
+ var hasProtoAccessor;
9344
+ try {
9345
+ // eslint-disable-next-line no-extra-parens, no-proto
9346
+ hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;
9347
+ } catch (e) {
9348
+ if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {
9349
+ throw e;
9350
+ }
9343
9351
  }
9344
- }
9345
9352
 
9346
- // eslint-disable-next-line no-extra-parens
9347
- var desc = !!hasProtoAccessor && gOPD$5 && gOPD$5(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));
9353
+ // eslint-disable-next-line no-extra-parens
9354
+ var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));
9348
9355
 
9349
- var $Object$3 = Object;
9350
- var $getPrototypeOf = $Object$3.getPrototypeOf;
9356
+ var $Object = Object;
9357
+ var $getPrototypeOf = $Object.getPrototypeOf;
9351
9358
 
9352
- /** @type {import('./get')} */
9353
- var get = desc && typeof desc.get === 'function'
9354
- ? callBind$6([desc.get])
9355
- : typeof $getPrototypeOf === 'function'
9356
- ? /** @type {import('./get')} */ function getDunder(value) {
9357
- // eslint-disable-next-line eqeqeq
9358
- return $getPrototypeOf(value == null ? value : $Object$3(value));
9359
- }
9360
- : false;
9359
+ /** @type {import('./get')} */
9360
+ get = desc && typeof desc.get === 'function'
9361
+ ? callBind([desc.get])
9362
+ : typeof $getPrototypeOf === 'function'
9363
+ ? /** @type {import('./get')} */ function getDunder(value) {
9364
+ // eslint-disable-next-line eqeqeq
9365
+ return $getPrototypeOf(value == null ? value : $Object(value));
9366
+ }
9367
+ : false;
9368
+ return get;
9369
+ }
9361
9370
 
9362
- var reflectGetProto = requireReflect_getPrototypeOf();
9363
- var originalGetProto = requireObject_getPrototypeOf();
9371
+ var getProto$3;
9372
+ var hasRequiredGetProto;
9364
9373
 
9365
- var getDunderProto = get;
9374
+ function requireGetProto () {
9375
+ if (hasRequiredGetProto) return getProto$3;
9376
+ hasRequiredGetProto = 1;
9366
9377
 
9367
- /** @type {import('.')} */
9368
- var getProto$3 = reflectGetProto
9369
- ? function getProto(O) {
9370
- // @ts-expect-error TS can't narrow inside a closure, for some reason
9371
- return reflectGetProto(O);
9372
- }
9373
- : originalGetProto
9378
+ var reflectGetProto = requireReflect_getPrototypeOf();
9379
+ var originalGetProto = requireObject_getPrototypeOf();
9380
+
9381
+ var getDunderProto = requireGet();
9382
+
9383
+ /** @type {import('.')} */
9384
+ getProto$3 = reflectGetProto
9374
9385
  ? function getProto(O) {
9375
- if (!O || (typeof O !== 'object' && typeof O !== 'function')) {
9376
- throw new TypeError('getProto: not an object');
9377
- }
9378
9386
  // @ts-expect-error TS can't narrow inside a closure, for some reason
9379
- return originalGetProto(O);
9387
+ return reflectGetProto(O);
9380
9388
  }
9381
- : getDunderProto
9389
+ : originalGetProto
9382
9390
  ? function getProto(O) {
9391
+ if (!O || (typeof O !== 'object' && typeof O !== 'function')) {
9392
+ throw new TypeError('getProto: not an object');
9393
+ }
9383
9394
  // @ts-expect-error TS can't narrow inside a closure, for some reason
9384
- return getDunderProto(O);
9395
+ return originalGetProto(O);
9385
9396
  }
9386
- : null;
9397
+ : getDunderProto
9398
+ ? function getProto(O) {
9399
+ // @ts-expect-error TS can't narrow inside a closure, for some reason
9400
+ return getDunderProto(O);
9401
+ }
9402
+ : null;
9403
+ return getProto$3;
9404
+ }
9387
9405
 
9388
9406
  var call = Function.prototype.call;
9389
9407
  var $hasOwn = Object.prototype.hasOwnProperty;
@@ -9446,7 +9464,7 @@ var ThrowTypeError = $gOPD$1
9446
9464
 
9447
9465
  var hasSymbols$3 = hasSymbols$4();
9448
9466
 
9449
- var getProto$2 = getProto$3;
9467
+ var getProto$2 = requireGetProto();
9450
9468
  var $ObjectGPO = requireObject_getPrototypeOf();
9451
9469
  var $ReflectGPO = requireReflect_getPrototypeOf();
9452
9470
 
@@ -9843,9 +9861,9 @@ var applyBind = function applyBind() {
9843
9861
  } else {
9844
9862
  module.exports.apply = applyBind$1;
9845
9863
  }
9846
- } (callBind$7));
9864
+ } (callBind$6));
9847
9865
 
9848
- var callBindExports = callBind$7.exports;
9866
+ var callBindExports = callBind$6.exports;
9849
9867
 
9850
9868
  var GetIntrinsic$7 = getIntrinsic;
9851
9869
 
@@ -10144,7 +10162,7 @@ var getPolyfill$3 = polyfill$2;
10144
10162
  var gOPD$2 = gopd$1;
10145
10163
  var defineProperty = Object.defineProperty;
10146
10164
  var $TypeError$5 = esErrors;
10147
- var getProto$1 = getProto$3;
10165
+ var getProto$1 = requireGetProto();
10148
10166
  var regex = /a/;
10149
10167
 
10150
10168
  var shim$3 = function shimFlags() {
@@ -12260,7 +12278,7 @@ var availableTypedArrays = availableTypedArrays$1;
12260
12278
  var callBind = callBindExports;
12261
12279
  var callBound$2 = callBound$i;
12262
12280
  var gOPD = gopd$1;
12263
- var getProto = getProto$3;
12281
+ var getProto = requireGetProto();
12264
12282
 
12265
12283
  var $toString = callBound$2('Object.prototype.toString');
12266
12284
  var hasToStringTag = shams();
@@ -12940,8 +12958,8 @@ var _excluded$6 = ["rows", "cols"];
12940
12958
  function _createForOfIteratorHelper$p(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$p(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
12941
12959
  function _unsupportedIterableToArray$p(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$p(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$p(r, a) : void 0; } }
12942
12960
  function _arrayLikeToArray$p(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12943
- function ownKeys$R(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12944
- function _objectSpread$R(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12961
+ function ownKeys$S(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12962
+ function _objectSpread$S(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12945
12963
  var defaultGrid = {
12946
12964
  rows: 1,
12947
12965
  cols: 1,
@@ -12962,7 +12980,7 @@ function GridEditor(_ref) {
12962
12980
  setGrid = _useState2[1];
12963
12981
  var addRow = function addRow() {
12964
12982
  var newRow = grid.rows;
12965
- var newGrid = _objectSpread$R(_objectSpread$R({}, grid), {}, {
12983
+ var newGrid = _objectSpread$S(_objectSpread$S({}, grid), {}, {
12966
12984
  rows: grid.rows + 1
12967
12985
  });
12968
12986
  for (var col = 0; col < grid.cols; col++) {
@@ -12977,7 +12995,7 @@ function GridEditor(_ref) {
12977
12995
  };
12978
12996
  var addColumn = function addColumn() {
12979
12997
  var newCol = grid.cols;
12980
- var newGrid = _objectSpread$R(_objectSpread$R({}, grid), {}, {
12998
+ var newGrid = _objectSpread$S(_objectSpread$S({}, grid), {}, {
12981
12999
  cols: grid.cols + 1
12982
13000
  });
12983
13001
  for (var row = 0; row < grid.rows; row++) {
@@ -13010,8 +13028,8 @@ function GridEditor(_ref) {
13010
13028
  });
13011
13029
  }
13012
13030
  if (grid[nextKey]) {
13013
- var newGrid = _objectSpread$R({}, grid);
13014
- newGrid[currentKey] = _objectSpread$R(_objectSpread$R({}, newGrid[currentKey]), {}, {
13031
+ var newGrid = _objectSpread$S({}, grid);
13032
+ newGrid[currentKey] = _objectSpread$S(_objectSpread$S({}, newGrid[currentKey]), {}, {
13015
13033
  colSpan: newGrid[currentKey].colSpan + 1
13016
13034
  });
13017
13035
  delete newGrid[nextKey];
@@ -13024,8 +13042,8 @@ function GridEditor(_ref) {
13024
13042
  var currentKey = "".concat(row, ".").concat(col);
13025
13043
  var belowKey = "".concat(row + 1, ".").concat(col);
13026
13044
  if (grid[belowKey]) {
13027
- var newGrid = _objectSpread$R({}, grid);
13028
- newGrid[currentKey] = _objectSpread$R(_objectSpread$R({}, newGrid[currentKey]), {}, {
13045
+ var newGrid = _objectSpread$S({}, grid);
13046
+ newGrid[currentKey] = _objectSpread$S(_objectSpread$S({}, newGrid[currentKey]), {}, {
13029
13047
  rowSpan: newGrid[currentKey].rowSpan + 1
13030
13048
  });
13031
13049
  delete newGrid[belowKey];
@@ -13042,7 +13060,7 @@ function GridEditor(_ref) {
13042
13060
  var splitCell = function splitCell(row, col) {
13043
13061
  var key = "".concat(row, ".").concat(col);
13044
13062
  var cell = grid[key];
13045
- var newGrid = _objectSpread$R({}, grid);
13063
+ var newGrid = _objectSpread$S({}, grid);
13046
13064
 
13047
13065
  // we have to check the colspan, and since the colspan is greater than 1
13048
13066
  // Only handle horizontal split if colSpan > 1
@@ -13058,13 +13076,13 @@ function GridEditor(_ref) {
13058
13076
  var oldKey = "".concat(row, ".").concat(c);
13059
13077
  var newKey = "".concat(row, ".").concat(c + 1);
13060
13078
  if (newGrid[oldKey]) {
13061
- newGrid[newKey] = _objectSpread$R({}, newGrid[oldKey]);
13079
+ newGrid[newKey] = _objectSpread$S({}, newGrid[oldKey]);
13062
13080
  delete newGrid[oldKey];
13063
13081
  }
13064
13082
  }
13065
13083
 
13066
13084
  // Update the original cell's colSpan
13067
- newGrid[key] = _objectSpread$R(_objectSpread$R({}, cell), {}, {
13085
+ newGrid[key] = _objectSpread$S(_objectSpread$S({}, cell), {}, {
13068
13086
  colSpan: cell.colSpan - 1
13069
13087
  });
13070
13088
 
@@ -13076,7 +13094,7 @@ function GridEditor(_ref) {
13076
13094
  };
13077
13095
  }
13078
13096
  if (cell.rowSpan > 1) {
13079
- newGrid[key] = _objectSpread$R(_objectSpread$R({}, newGrid[key]), {}, {
13097
+ newGrid[key] = _objectSpread$S(_objectSpread$S({}, newGrid[key]), {}, {
13080
13098
  rowSpan: cell.rowSpan - 1
13081
13099
  });
13082
13100
  newGrid["".concat(row + 1, ".").concat(col)] = {
@@ -13195,7 +13213,7 @@ function GridEditor(_ref) {
13195
13213
  var fromKey = "".concat(from.row, ".").concat(from.col);
13196
13214
  var toKey = "".concat(to.row, ".").concat(to.col);
13197
13215
  if (fromKey === toKey) return;
13198
- var newGrid = _objectSpread$R({}, grid);
13216
+ var newGrid = _objectSpread$S({}, grid);
13199
13217
 
13200
13218
  // Swap the cells
13201
13219
  var temp = newGrid[fromKey];
@@ -13221,7 +13239,7 @@ function GridEditor(_ref) {
13221
13239
  // console.log("Grid updated:", sequencedGrid);
13222
13240
  }
13223
13241
  function resetGridLayout() {
13224
- var newGrid = _objectSpread$R({}, defaultGrid);
13242
+ var newGrid = _objectSpread$S({}, defaultGrid);
13225
13243
  setGrid(newGrid);
13226
13244
  onUpdate(newGrid);
13227
13245
  }
@@ -13499,8 +13517,8 @@ var PanelEditItemGrid = function PanelEditItemGrid(_ref) {
13499
13517
  });
13500
13518
  };
13501
13519
 
13502
- function ownKeys$Q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13503
- function _objectSpread$Q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13520
+ function ownKeys$R(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13521
+ function _objectSpread$R(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13504
13522
  var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13505
13523
  var item = _ref.item;
13506
13524
  _ref.workspace;
@@ -13523,7 +13541,7 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13523
13541
  }, [widgetUuid, notificationDefs.length]);
13524
13542
  function handleNotifToggle(typeKey, value) {
13525
13543
  var _window$mainApi2;
13526
- var updated = _objectSpread$Q(_objectSpread$Q({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
13544
+ var updated = _objectSpread$R(_objectSpread$R({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
13527
13545
  setNotifPrefs(updated);
13528
13546
  if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.notifications) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.setPreferences && widgetUuid) {
13529
13547
  window.mainApi.notifications.setPreferences(widgetUuid, _defineProperty({}, typeKey, value));
@@ -13568,8 +13586,8 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13568
13586
  function _createForOfIteratorHelper$o(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$o(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13569
13587
  function _unsupportedIterableToArray$o(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$o(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$o(r, a) : void 0; } }
13570
13588
  function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13571
- function ownKeys$P(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13572
- function _objectSpread$P(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13589
+ function ownKeys$Q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13590
+ function _objectSpread$Q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13573
13591
  var DAYS = [{
13574
13592
  key: "mon",
13575
13593
  label: "Mon"
@@ -13670,7 +13688,7 @@ function TaskScheduleEditor(_ref) {
13670
13688
  var _window$mainApi;
13671
13689
  var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
13672
13690
  if (!((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.scheduler) !== null && _window$mainApi !== void 0 && _window$mainApi.registerTask)) return;
13673
- var payload = _objectSpread$P({
13691
+ var payload = _objectSpread$Q({
13674
13692
  widgetId: widgetId,
13675
13693
  widgetName: widgetName,
13676
13694
  workspaceId: workspaceId || "",
@@ -13945,6 +13963,25 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
13945
13963
  });
13946
13964
  };
13947
13965
 
13966
+ function ownKeys$P(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13967
+ function _objectSpread$P(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13968
+ var DERIVED_FIELDS = ["widgetConfig",
13969
+ // biggest offender — full component definition blob
13970
+ "uuid", "dashboardId", "parentWorkspaceName", "componentName", "siblingCount", "hasChildren", "canHaveChildren", "events",
13971
+ // declared by the widget's .dash.js, not editable per-item
13972
+ "eventHandlers"];
13973
+ function stripDerivedFields(item) {
13974
+ if (!item || _typeof(item) !== "object") return item;
13975
+ var out = {};
13976
+ for (var _i = 0, _Object$entries = Object.entries(item); _i < _Object$entries.length; _i++) {
13977
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
13978
+ k = _Object$entries$_i[0],
13979
+ v = _Object$entries$_i[1];
13980
+ if (DERIVED_FIELDS.includes(k)) continue;
13981
+ out[k] = v;
13982
+ }
13983
+ return out;
13984
+ }
13948
13985
  var PanelCode = function PanelCode(_ref) {
13949
13986
  var workspace = _ref.workspace,
13950
13987
  onUpdate = _ref.onUpdate,
@@ -13979,18 +14016,43 @@ var PanelCode = function PanelCode(_ref) {
13979
14016
  }
13980
14017
  // eslint-disable-next-line react-hooks/exhaustive-deps
13981
14018
  }, [workspace, item]);
14019
+ var displayJson = React.useMemo(function () {
14020
+ if (!itemSelected) return "";
14021
+ return JSON.stringify(stripDerivedFields(itemSelected), null, 2);
14022
+ }, [itemSelected]);
13982
14023
  function handleCodeChange(code) {
13983
- var itemToSave = JSON.parse(code);
13984
- onUpdate(itemToSave, workspaceSelected);
14024
+ try {
14025
+ var edited = JSON.parse(code);
14026
+ // Preserve the derived fields from the live item so save +
14027
+ // re-render stays in sync with what the rest of the layout
14028
+ // expects. LayoutModel re-derives these on reload, but losing
14029
+ // them between render cycles can cause flashes of "unknown
14030
+ // widget" state.
14031
+ var merged = _objectSpread$P({}, itemSelected);
14032
+ for (var _i2 = 0, _Object$keys = Object.keys(edited); _i2 < _Object$keys.length; _i2++) {
14033
+ var k = _Object$keys[_i2];
14034
+ merged[k] = edited[k];
14035
+ }
14036
+ onUpdate(merged, workspaceSelected);
14037
+ } catch (_unused) {
14038
+ // Malformed JSON — leave state alone; the editor keeps the
14039
+ // user's text so they can fix it.
14040
+ }
13985
14041
  }
13986
14042
  return itemSelected && workspaceSelected && /*#__PURE__*/jsxRuntime.jsx("div", {
13987
14043
  className: "flex flex-col flex-1 min-h-0",
13988
14044
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
13989
- className: "flex-1 min-h-0 overflow-hidden",
13990
- children: /*#__PURE__*/jsxRuntime.jsx(DashReact.CodeEditorInline, {
13991
- code: JSON.stringify(itemSelected, null, 2),
13992
- className: "h-full",
13993
- setCode: handleCodeChange
14045
+ className: "flex-1 min-h-0 overflow-hidden relative",
14046
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
14047
+ className: "absolute inset-0",
14048
+ children: /*#__PURE__*/jsxRuntime.jsx(DashReact.CodeEditorVS, {
14049
+ code: displayJson,
14050
+ language: "json",
14051
+ onChange: handleCodeChange,
14052
+ readOnly: false,
14053
+ minimapEnabled: false,
14054
+ padding: "p-0"
14055
+ })
13994
14056
  })
13995
14057
  })
13996
14058
  });
@@ -14526,6 +14588,39 @@ var LayoutBuilderConfigModal = function LayoutBuilderConfigModal(_ref) {
14526
14588
  var activeDef = sections.find(function (s) {
14527
14589
  return s.key === activeSection;
14528
14590
  }) || sections[0];
14591
+
14592
+ // Scope/package label for the footer so the user can tell which
14593
+ // package a widget comes from (ambiguous component names like
14594
+ // `ProspectListColumn` can live under either `@ai-built/…` or
14595
+ // `@trops/pipeline`). Same derivation order as WidgetCardHeader:
14596
+ // widget config id → widget config package → layout item workspace.
14597
+ var footerPackageLabel = function () {
14598
+ if (!itemSelected) return "";
14599
+ var cfg = ComponentManager.config(itemSelected.component, itemSelected);
14600
+ var dropTrailingComponent = function dropTrailingComponent(s) {
14601
+ if (typeof s !== "string") return "";
14602
+ var lastDot = s.lastIndexOf(".");
14603
+ return lastDot > 0 ? s.slice(0, lastDot) : s;
14604
+ };
14605
+ var fromId = dropTrailingComponent((cfg === null || cfg === void 0 ? void 0 : cfg.id) || "");
14606
+ if (fromId) return fromId;
14607
+ if (cfg !== null && cfg !== void 0 && cfg["package"]) return String(cfg["package"]);
14608
+ var ws = itemSelected.workspace;
14609
+ if (typeof ws === "string" && ws && ws !== "layout") {
14610
+ return ws.startsWith("@") ? ws : "@".concat(ws);
14611
+ }
14612
+ return "";
14613
+ }();
14614
+ var componentName = itemSelected ? itemSelected["component"] : "";
14615
+ var footerLeftContent = footerPackageLabel ? /*#__PURE__*/jsxRuntime.jsxs("span", {
14616
+ className: "flex flex-col leading-tight",
14617
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
14618
+ children: componentName
14619
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
14620
+ className: "text-[10px] opacity-50",
14621
+ children: footerPackageLabel
14622
+ })]
14623
+ }) : componentName;
14529
14624
  return itemSelected !== null && /*#__PURE__*/jsxRuntime.jsxs(DashReact.SettingsModal, {
14530
14625
  isOpen: open,
14531
14626
  setIsOpen: setIsOpen,
@@ -14588,7 +14683,7 @@ var LayoutBuilderConfigModal = function LayoutBuilderConfigModal(_ref) {
14588
14683
  workspace: workspaceSelected
14589
14684
  })]
14590
14685
  }), /*#__PURE__*/jsxRuntime.jsxs(DashReact.SettingsModal.Footer, {
14591
- leftContent: itemSelected["component"],
14686
+ leftContent: footerLeftContent,
14592
14687
  children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.Button, {
14593
14688
  title: "Cancel",
14594
14689
  onClick: function onClick() {
@@ -20774,7 +20869,8 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
20774
20869
  try {
20775
20870
  var hasChildren = config.type === "workspace";
20776
20871
  var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$I(_objectSpread$I({}, config), {}, {
20777
- component: widgetComponentName
20872
+ component: widgetComponentName,
20873
+ packageId: config._sourcePackage || config.packageId || null
20778
20874
  }), hasChildren);
20779
20875
  var newWidgetId = newLayout[newLayout.length - 1].id;
20780
20876
  var updatedGrid = newLayout.find(function (item) {
@@ -20818,7 +20914,11 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
20818
20914
  try {
20819
20915
  var newLayout = updateLayoutItem(ws.layout, {
20820
20916
  id: widgetId,
20821
- component: widgetComponentName
20917
+ component: widgetComponentName,
20918
+ // Stamp the replacement's source package onto the item so
20919
+ // publish-time attribution routes to the new package, not
20920
+ // whatever the item was previously carrying.
20921
+ packageId: config._sourcePackage || config.packageId || null
20822
20922
  });
20823
20923
  if (!newLayout) {
20824
20924
  return;
@@ -20927,13 +21027,11 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
20927
21027
  try {
20928
21028
  var dashboard = new DashboardModel(currentWorkspace);
20929
21029
  dashboard.removeItemFromLayout(id);
20930
- setCurrentWorkspace(dashboard.workspace());
20931
-
20932
- // const layout = currentWorkspace["layout"];
20933
- // const newLayout = removeItemFromLayout(layout, id);
20934
- // const newWorkspace = JSON.parse(JSON.stringify(currentWorkspace));
20935
- // newWorkspace["layout"] = newLayout;
20936
- // setCurrentWorkspace(newWorkspace);
21030
+ var nextWorkspace = dashboard.workspace();
21031
+ setCurrentWorkspace(nextWorkspace);
21032
+ if (typeof onWorkspaceChangeRef.current === "function") {
21033
+ onWorkspaceChangeRef.current(nextWorkspace);
21034
+ }
20937
21035
  } catch (e) {
20938
21036
  }
20939
21037
  }
@@ -21345,7 +21443,8 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
21345
21443
  if (!config) return;
21346
21444
  var widgetItem = _objectSpread$I(_objectSpread$I({}, config), {}, {
21347
21445
  component: widgetKey,
21348
- key: widgetKey
21446
+ key: widgetKey,
21447
+ packageId: config._sourcePackage || config.packageId || null
21349
21448
  });
21350
21449
 
21351
21450
  // Remove old widget from layout if the target cell is already occupied
@@ -21377,6 +21476,9 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
21377
21476
  var newWorkspace = JSON.parse(JSON.stringify(_workspace));
21378
21477
  newWorkspace["layout"] = newLayout;
21379
21478
  setCurrentWorkspace(newWorkspace);
21479
+ if (typeof onWorkspaceChangeRef.current === "function") {
21480
+ onWorkspaceChangeRef.current(newWorkspace);
21481
+ }
21380
21482
  } catch (e) {
21381
21483
  }
21382
21484
  }
@@ -21386,6 +21488,9 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
21386
21488
  dashboard.moveWidgetToCell(gridContainerId, sourceCellNumber, targetCellNumber);
21387
21489
  var newWorkspace = dashboard.workspace();
21388
21490
  setCurrentWorkspace(newWorkspace);
21491
+ if (typeof onWorkspaceChangeRef.current === "function") {
21492
+ onWorkspaceChangeRef.current(newWorkspace);
21493
+ }
21389
21494
  } catch (e) {
21390
21495
  }
21391
21496
  }
@@ -27597,6 +27702,17 @@ var LayoutModel = function LayoutModel(layoutItem, workspaceLayout, dashboardId)
27597
27702
  // Preserve provider selections for this widget
27598
27703
  layout.selectedProviders = "selectedProviders" in obj ? obj.selectedProviders : {};
27599
27704
 
27705
+ // Record the exact source package id (e.g. "@ai-built/pipeline")
27706
+ // from which this widget instance was added. Used by the publish
27707
+ // flow to attribute the widget to the correct package without
27708
+ // guessing when multiple installed packages declare the same
27709
+ // component name. Back-compat: read `_sourcePackage` (set by
27710
+ // dash-electron's widget registration) if `packageId` is missing.
27711
+ // Legacy layout items (added before this field existed) carry
27712
+ // neither — those still go through the ranking heuristic in
27713
+ // buildWidgetDependencies as a fallback.
27714
+ layout.packageId = "packageId" in obj ? obj["packageId"] : obj._sourcePackage ? obj._sourcePackage : null;
27715
+
27600
27716
  /**
27601
27717
  * @param {Object} grid Grid layout configuration
27602
27718
  * Structure: {
@@ -54986,6 +55102,139 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
54986
55102
  return b.required && !b.resolvedProviderName;
54987
55103
  }).length;
54988
55104
 
55105
+ // Dependencies tab data — groups every widget instance in the
55106
+ // workspace by the package it belongs to, so the user can audit
55107
+ // which packages the dashboard actually references (and see which
55108
+ // pages/sidebar hold each instance). Matches the same derivation
55109
+ // order we use in WidgetCardHeader / LayoutBuilderConfigModal's
55110
+ // footer so the same package label shows in every surface.
55111
+ var dependencies = React.useMemo(function () {
55112
+ var byPackage = new Map();
55113
+ var stripTrailingComponent = function stripTrailingComponent(s) {
55114
+ if (typeof s !== "string") return "";
55115
+ var lastDot = s.lastIndexOf(".");
55116
+ return lastDot > 0 ? s.slice(0, lastDot) : s;
55117
+ };
55118
+ var derivePackage = function derivePackage(item) {
55119
+ // The layout item records the exact source package id when the
55120
+ // widget was added. If present, trust it — no heuristics. This
55121
+ // matches the publish flow's attribution, so the Dependencies
55122
+ // tab and the Publish modal always agree.
55123
+ if (item !== null && item !== void 0 && item.packageId) return String(item.packageId);
55124
+ var cfg = typeof getWidgetConfig === "function" ? getWidgetConfig(item.component) : null;
55125
+ if (cfg !== null && cfg !== void 0 && cfg._sourcePackage) return String(cfg._sourcePackage);
55126
+ var fromId = stripTrailingComponent((cfg === null || cfg === void 0 ? void 0 : cfg.id) || "");
55127
+ if (fromId) return fromId;
55128
+ if (cfg !== null && cfg !== void 0 && cfg["package"]) return String(cfg["package"]);
55129
+ var ws = item === null || item === void 0 ? void 0 : item.workspace;
55130
+ if (typeof ws === "string" && ws && ws !== "layout") {
55131
+ return ws.startsWith("@") ? ws : "@".concat(ws);
55132
+ }
55133
+ return "(unknown)";
55134
+ };
55135
+
55136
+ // Tag each visit with its location so we can show users exactly
55137
+ // where in the tree a package is referenced. forEachWidget walks
55138
+ // the standard places but doesn't surface which one — so we do a
55139
+ // lightweight parallel walk and annotate.
55140
+ var annotatedWalks = [];
55141
+ if (Array.isArray(workspace === null || workspace === void 0 ? void 0 : workspace.layout)) {
55142
+ annotatedWalks.push({
55143
+ location: "root",
55144
+ layout: workspace.layout
55145
+ });
55146
+ }
55147
+ if (Array.isArray(workspace === null || workspace === void 0 ? void 0 : workspace.pages)) {
55148
+ var _iterator2 = _createForOfIteratorHelper$4(workspace.pages),
55149
+ _step2;
55150
+ try {
55151
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
55152
+ var page = _step2.value;
55153
+ if (Array.isArray(page === null || page === void 0 ? void 0 : page.layout)) {
55154
+ annotatedWalks.push({
55155
+ location: "page: ".concat(page.name || page.id || "?"),
55156
+ layout: page.layout
55157
+ });
55158
+ }
55159
+ }
55160
+ } catch (err) {
55161
+ _iterator2.e(err);
55162
+ } finally {
55163
+ _iterator2.f();
55164
+ }
55165
+ }
55166
+ if (Array.isArray(workspace === null || workspace === void 0 ? void 0 : workspace.sidebarLayout)) {
55167
+ annotatedWalks.push({
55168
+ location: "sidebar",
55169
+ layout: workspace.sidebarLayout
55170
+ });
55171
+ }
55172
+ var visitedByLocation = new WeakSet();
55173
+ var _collect = function collect(items, location) {
55174
+ if (!Array.isArray(items)) return;
55175
+ var _iterator3 = _createForOfIteratorHelper$4(items),
55176
+ _step3;
55177
+ try {
55178
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
55179
+ var item = _step3.value;
55180
+ if (!item || _typeof(item) !== "object") continue;
55181
+ if (item.component && !visitedByLocation.has(item)) {
55182
+ visitedByLocation.add(item);
55183
+ // Ignore layout containers — they're not widgets.
55184
+ if (item.component !== "Container" && item.component !== "LayoutGridContainer") {
55185
+ var pkg = derivePackage(item);
55186
+ if (!byPackage.has(pkg)) {
55187
+ byPackage.set(pkg, {
55188
+ packageLabel: pkg,
55189
+ components: new Map(),
55190
+ locations: new Set(),
55191
+ total: 0
55192
+ });
55193
+ }
55194
+ var entry = byPackage.get(pkg);
55195
+ entry.total += 1;
55196
+ entry.locations.add(location);
55197
+ var cKey = item.component;
55198
+ entry.components.set(cKey, (entry.components.get(cKey) || 0) + 1);
55199
+ }
55200
+ }
55201
+ if (Array.isArray(item.items)) _collect(item.items, location);
55202
+ if (Array.isArray(item.layout)) _collect(item.layout, location);
55203
+ }
55204
+ } catch (err) {
55205
+ _iterator3.e(err);
55206
+ } finally {
55207
+ _iterator3.f();
55208
+ }
55209
+ };
55210
+ for (var _i2 = 0, _annotatedWalks = annotatedWalks; _i2 < _annotatedWalks.length; _i2++) {
55211
+ var w = _annotatedWalks[_i2];
55212
+ _collect(w.layout, w.location);
55213
+ }
55214
+ return Array.from(byPackage.values()).map(function (e) {
55215
+ return _objectSpread$8(_objectSpread$8({}, e), {}, {
55216
+ components: Array.from(e.components.entries()).map(function (_ref2) {
55217
+ var _ref3 = _slicedToArray(_ref2, 2),
55218
+ component = _ref3[0],
55219
+ count = _ref3[1];
55220
+ return {
55221
+ component: component,
55222
+ count: count
55223
+ };
55224
+ }),
55225
+ locations: Array.from(e.locations)
55226
+ });
55227
+ }).sort(function (a, b) {
55228
+ return a.packageLabel.localeCompare(b.packageLabel);
55229
+ });
55230
+ }, [workspace, getWidgetConfig]);
55231
+ var dependencyCount = dependencies.length;
55232
+ // Second pass used for the badge when the user has an `(unknown)`
55233
+ // bucket — usually a sign of a stale reference they want to clean up.
55234
+ var hasUnknownDependency = dependencies.some(function (d) {
55235
+ return d.packageLabel === "(unknown)";
55236
+ });
55237
+
54989
55238
  // Listeners tab data — emitter list, receiver list, current wiring,
54990
55239
  // orphans. All recompute when the workspace or staged delta changes
54991
55240
  // so the UI reflects pending edits without saving first.
@@ -55021,11 +55270,11 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55021
55270
  }
55022
55271
  if (stagedListeners.adds.length > 0) {
55023
55272
  // Append; avoid duplicates against current state.
55024
- var _iterator2 = _createForOfIteratorHelper$4(stagedListeners.adds),
55025
- _step2;
55273
+ var _iterator4 = _createForOfIteratorHelper$4(stagedListeners.adds),
55274
+ _step4;
55026
55275
  try {
55027
55276
  var _loop = function _loop() {
55028
- var a = _step2.value;
55277
+ var a = _step4.value;
55029
55278
  if (!next.some(function (w) {
55030
55279
  return sameWiringEntry(w, a);
55031
55280
  })) {
@@ -55034,28 +55283,28 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55034
55283
  })]);
55035
55284
  }
55036
55285
  };
55037
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
55286
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
55038
55287
  _loop();
55039
55288
  }
55040
55289
  } catch (err) {
55041
- _iterator2.e(err);
55290
+ _iterator4.e(err);
55042
55291
  } finally {
55043
- _iterator2.f();
55292
+ _iterator4.f();
55044
55293
  }
55045
55294
  }
55046
55295
  if (orphans.length === 0) return next;
55047
55296
  var orphanIndex = new Map();
55048
- var _iterator3 = _createForOfIteratorHelper$4(orphans),
55049
- _step3;
55297
+ var _iterator5 = _createForOfIteratorHelper$4(orphans),
55298
+ _step5;
55050
55299
  try {
55051
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
55052
- var o = _step3.value;
55300
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
55301
+ var o = _step5.value;
55053
55302
  orphanIndex.set("".concat(o.receiverItemId, "|").concat(o.handlerName, "|").concat(o.sourceComponent, "|").concat(o.sourceItemId, "|").concat(o.eventName), o.reason);
55054
55303
  }
55055
55304
  } catch (err) {
55056
- _iterator3.e(err);
55305
+ _iterator5.e(err);
55057
55306
  } finally {
55058
- _iterator3.f();
55307
+ _iterator5.f();
55059
55308
  }
55060
55309
  return next.map(function (w) {
55061
55310
  var key = "".concat(w.receiverItemId, "|").concat(w.handlerName, "|").concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
@@ -55087,17 +55336,17 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55087
55336
  function stagePrefFieldForAll(targetWidgets, key, value) {
55088
55337
  setStagedPrefs(function (prev) {
55089
55338
  var next = _objectSpread$8({}, prev);
55090
- var _iterator4 = _createForOfIteratorHelper$4(targetWidgets),
55091
- _step4;
55339
+ var _iterator6 = _createForOfIteratorHelper$4(targetWidgets),
55340
+ _step6;
55092
55341
  try {
55093
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
55094
- var w = _step4.value;
55342
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
55343
+ var w = _step6.value;
55095
55344
  next[w.id] = _objectSpread$8(_objectSpread$8({}, next[w.id] || {}), {}, _defineProperty({}, key, value));
55096
55345
  }
55097
55346
  } catch (err) {
55098
- _iterator4.e(err);
55347
+ _iterator6.e(err);
55099
55348
  } finally {
55100
- _iterator4.f();
55349
+ _iterator6.f();
55101
55350
  }
55102
55351
  return next;
55103
55352
  });
@@ -55121,18 +55370,18 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55121
55370
  });
55122
55371
  setStaged(function (prev) {
55123
55372
  var next = _objectSpread$8({}, prev);
55124
- var _iterator5 = _createForOfIteratorHelper$4(affected),
55125
- _step5;
55373
+ var _iterator7 = _createForOfIteratorHelper$4(affected),
55374
+ _step7;
55126
55375
  try {
55127
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
55128
- var b = _step5.value;
55376
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
55377
+ var b = _step7.value;
55129
55378
  if (!b.widgetId) continue;
55130
55379
  next[b.widgetId] = _objectSpread$8(_objectSpread$8({}, next[b.widgetId] || {}), {}, _defineProperty({}, providerType, providerName || ""));
55131
55380
  }
55132
55381
  } catch (err) {
55133
- _iterator5.e(err);
55382
+ _iterator7.e(err);
55134
55383
  } finally {
55135
- _iterator5.f();
55384
+ _iterator7.f();
55136
55385
  }
55137
55386
  return next;
55138
55387
  });
@@ -55190,12 +55439,12 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55190
55439
  function handleSave() {
55191
55440
  // Provider changes
55192
55441
  var providerChanges = [];
55193
- for (var _i2 = 0, _Object$entries2 = Object.entries(staged); _i2 < _Object$entries2.length; _i2++) {
55194
- var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
55442
+ for (var _i3 = 0, _Object$entries2 = Object.entries(staged); _i3 < _Object$entries2.length; _i3++) {
55443
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
55195
55444
  widgetId = _Object$entries2$_i[0],
55196
55445
  byType = _Object$entries2$_i[1];
55197
- for (var _i3 = 0, _Object$entries3 = Object.entries(byType); _i3 < _Object$entries3.length; _i3++) {
55198
- var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2),
55446
+ for (var _i4 = 0, _Object$entries3 = Object.entries(byType); _i4 < _Object$entries3.length; _i4++) {
55447
+ var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i4], 2),
55199
55448
  providerType = _Object$entries3$_i[0],
55200
55449
  providerName = _Object$entries3$_i[1];
55201
55450
  providerChanges.push({
@@ -55216,12 +55465,12 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55216
55465
 
55217
55466
  // Widget userPrefs changes (Widgets tab)
55218
55467
  var prefChanges = [];
55219
- for (var _i4 = 0, _Object$entries4 = Object.entries(stagedPrefs); _i4 < _Object$entries4.length; _i4++) {
55220
- var _Object$entries4$_i = _slicedToArray(_Object$entries4[_i4], 2),
55468
+ for (var _i5 = 0, _Object$entries4 = Object.entries(stagedPrefs); _i5 < _Object$entries4.length; _i5++) {
55469
+ var _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2),
55221
55470
  _widgetId = _Object$entries4$_i[0],
55222
55471
  fields = _Object$entries4$_i[1];
55223
- for (var _i5 = 0, _Object$entries5 = Object.entries(fields); _i5 < _Object$entries5.length; _i5++) {
55224
- var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i5], 2),
55472
+ for (var _i6 = 0, _Object$entries5 = Object.entries(fields); _i6 < _Object$entries5.length; _i6++) {
55473
+ var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2),
55225
55474
  key = _Object$entries5$_i[0],
55226
55475
  value = _Object$entries5$_i[1];
55227
55476
  prefChanges.push({
@@ -55307,6 +55556,18 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55307
55556
  },
55308
55557
  className: "px-3 py-1.5 text-sm font-medium -mb-px border-b-2 ".concat(activeTab === "widgets" ? "border-indigo-400" : "border-transparent opacity-60 hover:opacity-100"),
55309
55558
  children: "Widgets"
55559
+ }), /*#__PURE__*/jsxRuntime.jsxs("button", {
55560
+ type: "button",
55561
+ onClick: function onClick() {
55562
+ return setActiveTab("dependencies");
55563
+ },
55564
+ className: "px-3 py-1.5 text-sm font-medium -mb-px border-b-2 ".concat(activeTab === "dependencies" ? "border-indigo-400" : "border-transparent opacity-60 hover:opacity-100"),
55565
+ children: ["Dependencies", dependencyCount > 0 && /*#__PURE__*/jsxRuntime.jsxs("span", {
55566
+ className: "ml-2 text-[10px] opacity-60",
55567
+ children: ["(", dependencyCount, ")"]
55568
+ }), hasUnknownDependency && /*#__PURE__*/jsxRuntime.jsx("span", {
55569
+ className: "ml-1 inline-block h-1.5 w-1.5 rounded-full bg-amber-400 align-middle"
55570
+ })]
55310
55571
  })]
55311
55572
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
55312
55573
  className: "flex-1 min-h-0 ".concat(activeTab === "widgets" ? "" : "p-5"),
@@ -55327,6 +55588,8 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55327
55588
  stagedPrefs: stagedPrefs,
55328
55589
  stagePrefField: stagePrefField,
55329
55590
  stagePrefFieldForAll: stagePrefFieldForAll
55591
+ }), activeTab === "dependencies" && /*#__PURE__*/jsxRuntime.jsx(DependenciesTab, {
55592
+ dependencies: dependencies
55330
55593
  })]
55331
55594
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
55332
55595
  className: "flex-shrink-0 flex flex-row justify-end gap-2 p-4 border-t border-white/10",
@@ -55349,12 +55612,12 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
55349
55612
  * dot per-type when any widget of that type is unresolved). Column 2
55350
55613
  * shows the selected type's bulk dropdown + per-widget dropdowns.
55351
55614
  */
55352
- function ProvidersTab(_ref2) {
55615
+ function ProvidersTab(_ref4) {
55353
55616
  var _typeEntries$, _selectedRows$;
55354
- var grouped = _ref2.grouped,
55355
- providersByType = _ref2.providersByType,
55356
- onBulk = _ref2.onBulk,
55357
- onPerWidget = _ref2.onPerWidget;
55617
+ var grouped = _ref4.grouped,
55618
+ providersByType = _ref4.providersByType,
55619
+ onBulk = _ref4.onBulk,
55620
+ onPerWidget = _ref4.onPerWidget;
55358
55621
  var typeEntries = React.useMemo(function () {
55359
55622
  return Array.from(grouped.entries());
55360
55623
  }, [grouped]);
@@ -55391,10 +55654,10 @@ function ProvidersTab(_ref2) {
55391
55654
  children: "Provider Types"
55392
55655
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
55393
55656
  className: "overflow-y-auto flex-1",
55394
- children: typeEntries.map(function (_ref3) {
55395
- var _ref4 = _slicedToArray(_ref3, 2),
55396
- providerType = _ref4[0],
55397
- rows = _ref4[1];
55657
+ children: typeEntries.map(function (_ref5) {
55658
+ var _ref6 = _slicedToArray(_ref5, 2),
55659
+ providerType = _ref6[0],
55660
+ rows = _ref6[1];
55398
55661
  var isActive = selectedType === providerType;
55399
55662
  var unresolvedHere = rows.filter(function (r) {
55400
55663
  return r.required && !r.resolvedProviderName;
@@ -55530,6 +55793,73 @@ function ProvidersTab(_ref2) {
55530
55793
  });
55531
55794
  }
55532
55795
 
55796
+ // ─── Dependencies tab ──────────────────────────────────────────────────────
55797
+
55798
+ /**
55799
+ * Read-only breakdown of every widget package referenced by the
55800
+ * workspace. Same source of truth as the dashboard publish plan (it
55801
+ * walks layout + pages + sidebar + nested LayoutGridContainer items),
55802
+ * surfaced earlier in the authoring flow so the user can verify which
55803
+ * packages the dashboard actually pulls in — and catch stale references
55804
+ * before hitting the Publish modal.
55805
+ *
55806
+ * `(unknown)` buckets mean a component we couldn't map back to a
55807
+ * package (no `config.id` / `config.package` / item.workspace hint).
55808
+ * Usually this is a stale layout item whose widget got uninstalled.
55809
+ */
55810
+ function DependenciesTab(_ref8) {
55811
+ var dependencies = _ref8.dependencies;
55812
+ if (!dependencies || dependencies.length === 0) {
55813
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
55814
+ className: "flex items-center justify-center h-full text-sm opacity-60 text-center",
55815
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
55816
+ children: "No widget packages referenced by this dashboard."
55817
+ })
55818
+ });
55819
+ }
55820
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
55821
+ className: "flex flex-col h-full min-h-0 overflow-y-auto gap-3",
55822
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
55823
+ className: "text-xs opacity-60",
55824
+ children: "Every widget instance in this workspace, grouped by the package it belongs to. Locations show where each package is referenced."
55825
+ }), dependencies.map(function (dep) {
55826
+ var isUnknown = dep.packageLabel === "(unknown)";
55827
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
55828
+ className: "border rounded-lg px-4 py-3 ".concat(isUnknown ? "bg-amber-900/10 border-amber-700/40" : "bg-white/5 border-white/10"),
55829
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
55830
+ className: "flex items-center gap-2 flex-wrap",
55831
+ children: [/*#__PURE__*/jsxRuntime.jsx("code", {
55832
+ className: "text-sm font-semibold ".concat(isUnknown ? "text-amber-200" : ""),
55833
+ children: dep.packageLabel
55834
+ }), /*#__PURE__*/jsxRuntime.jsxs("span", {
55835
+ className: "text-xs opacity-60",
55836
+ children: [dep.total, " instance", dep.total === 1 ? "" : "s"]
55837
+ }), isUnknown && /*#__PURE__*/jsxRuntime.jsx("span", {
55838
+ className: "text-[10px] text-amber-300 uppercase tracking-wide",
55839
+ children: "no package mapping"
55840
+ })]
55841
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
55842
+ className: "mt-2 text-xs opacity-70",
55843
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
55844
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
55845
+ className: "opacity-60 mr-1",
55846
+ children: "Widgets:"
55847
+ }), dep.components.map(function (c) {
55848
+ return "".concat(c.component).concat(c.count > 1 ? " \xD7".concat(c.count) : "");
55849
+ }).join(", ")]
55850
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
55851
+ className: "mt-1",
55852
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
55853
+ className: "opacity-60 mr-1",
55854
+ children: "Locations:"
55855
+ }), dep.locations.join(", ")]
55856
+ })]
55857
+ })]
55858
+ }, dep.packageLabel);
55859
+ })]
55860
+ });
55861
+ }
55862
+
55533
55863
  // ─── Listeners tab ──────────────────────────────────────────────────────────
55534
55864
 
55535
55865
  /**
@@ -55551,13 +55881,13 @@ function sameWiringEntry(a, b) {
55551
55881
  * adjusts wiring per handler from a single dropdown of all emitters'
55552
55882
  * (widget × event) pairs.
55553
55883
  */
55554
- function ListenersTab(_ref6) {
55884
+ function ListenersTab(_ref9) {
55555
55885
  var _receivers$;
55556
- var emitters = _ref6.emitters,
55557
- receivers = _ref6.receivers,
55558
- wiring = _ref6.wiring,
55559
- onAdd = _ref6.onAdd,
55560
- onRemove = _ref6.onRemove;
55886
+ var emitters = _ref9.emitters,
55887
+ receivers = _ref9.receivers,
55888
+ wiring = _ref9.wiring,
55889
+ onAdd = _ref9.onAdd,
55890
+ onRemove = _ref9.onRemove;
55561
55891
  var _useState11 = React.useState(((_receivers$ = receivers[0]) === null || _receivers$ === void 0 ? void 0 : _receivers$.key) || null),
55562
55892
  _useState12 = _slicedToArray(_useState11, 2),
55563
55893
  selectedReceiverKey = _useState12[0],
@@ -55581,17 +55911,17 @@ function ListenersTab(_ref6) {
55581
55911
  // Receiver lookup (by composite key) for label resolution in chips.
55582
55912
  var receiverByKey = React.useMemo(function () {
55583
55913
  var m = new Map();
55584
- var _iterator6 = _createForOfIteratorHelper$4(receivers),
55585
- _step6;
55914
+ var _iterator8 = _createForOfIteratorHelper$4(receivers),
55915
+ _step8;
55586
55916
  try {
55587
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
55588
- var r = _step6.value;
55917
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
55918
+ var r = _step8.value;
55589
55919
  m.set(r.key, r);
55590
55920
  }
55591
55921
  } catch (err) {
55592
- _iterator6.e(err);
55922
+ _iterator8.e(err);
55593
55923
  } finally {
55594
- _iterator6.f();
55924
+ _iterator8.f();
55595
55925
  }
55596
55926
  return m;
55597
55927
  }, [receivers]);
@@ -55665,24 +55995,24 @@ function ListenersTab(_ref6) {
55665
55995
  * third column. Matches the left-column look from
55666
55996
  * PanelEditItemHandlers.
55667
55997
  */
55668
- function HandlersColumn(_ref8) {
55669
- var receiver = _ref8.receiver,
55670
- myWiring = _ref8.myWiring,
55671
- selectedHandler = _ref8.selectedHandler,
55672
- onSelectHandler = _ref8.onSelectHandler;
55998
+ function HandlersColumn(_ref1) {
55999
+ var receiver = _ref1.receiver,
56000
+ myWiring = _ref1.myWiring,
56001
+ selectedHandler = _ref1.selectedHandler,
56002
+ onSelectHandler = _ref1.onSelectHandler;
55673
56003
  var countsByHandler = React.useMemo(function () {
55674
56004
  var m = new Map();
55675
- var _iterator7 = _createForOfIteratorHelper$4(myWiring),
55676
- _step7;
56005
+ var _iterator9 = _createForOfIteratorHelper$4(myWiring),
56006
+ _step9;
55677
56007
  try {
55678
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
55679
- var w = _step7.value;
56008
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
56009
+ var w = _step9.value;
55680
56010
  m.set(w.handlerName, (m.get(w.handlerName) || 0) + 1);
55681
56011
  }
55682
56012
  } catch (err) {
55683
- _iterator7.e(err);
56013
+ _iterator9.e(err);
55684
56014
  } finally {
55685
- _iterator7.f();
56015
+ _iterator9.f();
55686
56016
  }
55687
56017
  return m;
55688
56018
  }, [myWiring]);
@@ -55730,23 +56060,23 @@ function HandlersColumn(_ref8) {
55730
56060
  * Checked = wired; toggling commits an add/remove. Mirrors the
55731
56061
  * right-column UX of PanelEditItemHandlers.
55732
56062
  */
55733
- function EventsColumn(_ref9) {
55734
- var receiver = _ref9.receiver,
55735
- handlerName = _ref9.handlerName,
55736
- myWiring = _ref9.myWiring,
55737
- emitters = _ref9.emitters,
55738
- onAdd = _ref9.onAdd,
55739
- onRemove = _ref9.onRemove;
56063
+ function EventsColumn(_ref10) {
56064
+ var receiver = _ref10.receiver,
56065
+ handlerName = _ref10.handlerName,
56066
+ myWiring = _ref10.myWiring,
56067
+ emitters = _ref10.emitters,
56068
+ onAdd = _ref10.onAdd,
56069
+ onRemove = _ref10.onRemove;
55740
56070
  // Wired-for-this-handler: dedupe defensively (legacy workspaces
55741
56071
  // occasionally contain duplicate entries under the same handler).
55742
56072
  var wiredHere = React.useMemo(function () {
55743
56073
  var seen = new Set();
55744
56074
  var out = [];
55745
- var _iterator8 = _createForOfIteratorHelper$4(myWiring),
55746
- _step8;
56075
+ var _iterator0 = _createForOfIteratorHelper$4(myWiring),
56076
+ _step0;
55747
56077
  try {
55748
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
55749
- var w = _step8.value;
56078
+ for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
56079
+ var w = _step0.value;
55750
56080
  if (w.handlerName !== handlerName) continue;
55751
56081
  var key = "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
55752
56082
  if (seen.has(key)) continue;
@@ -55754,9 +56084,9 @@ function EventsColumn(_ref9) {
55754
56084
  out.push(w);
55755
56085
  }
55756
56086
  } catch (err) {
55757
- _iterator8.e(err);
56087
+ _iterator0.e(err);
55758
56088
  } finally {
55759
- _iterator8.f();
56089
+ _iterator0.f();
55760
56090
  }
55761
56091
  return out;
55762
56092
  }, [myWiring, handlerName]);
@@ -56906,6 +57236,42 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56906
57236
  });
56907
57237
  });
56908
57238
  }
57239
+
57240
+ // Mirror the change into the layout refs so the save path always
57241
+ // sees the same truth regardless of whether it reads from refs or
57242
+ // state. Previously a mutation that propagated via
57243
+ // onWorkspaceChange (drag-drop, swap, place, delete) would update
57244
+ // openTabs but leave sidebarWorkspaceRef/pageRefsMap stale, and
57245
+ // `handleClickSaveWorkspace` reads from those refs FIRST — so it
57246
+ // clobbered the new sidebarLayout with the stale ref contents on
57247
+ // save. Keeping everything in sync here closes that window.
57248
+ if (Array.isArray(wsModel.sidebarLayout)) {
57249
+ sidebarWorkspaceRef.current = _objectSpread$6(_objectSpread$6({}, sidebarWorkspaceRef.current || {}), {}, {
57250
+ layout: wsModel.sidebarLayout
57251
+ });
57252
+ }
57253
+ if (Array.isArray(wsModel.pages)) {
57254
+ var _iterator = _createForOfIteratorHelper$3(wsModel.pages),
57255
+ _step;
57256
+ try {
57257
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
57258
+ var page = _step.value;
57259
+ if (!page || !page.id || !Array.isArray(page.layout)) continue;
57260
+ if (!pageRefsMap.current[page.id]) {
57261
+ pageRefsMap.current[page.id] = {
57262
+ current: null
57263
+ };
57264
+ }
57265
+ pageRefsMap.current[page.id].current = _objectSpread$6(_objectSpread$6({}, pageRefsMap.current[page.id].current || {}), {}, {
57266
+ layout: page.layout
57267
+ });
57268
+ }
57269
+ } catch (err) {
57270
+ _iterator.e(err);
57271
+ } finally {
57272
+ _iterator.f();
57273
+ }
57274
+ }
56909
57275
  }
56910
57276
  }
56911
57277
  function handleProviderSelect(event) {
@@ -56952,14 +57318,14 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56952
57318
 
56953
57319
  // Start from the current map, layer changes on top.
56954
57320
  var nextSelectedProviders = _objectSpread$6({}, workspaceSelected.selectedProviders || {});
56955
- var _iterator = _createForOfIteratorHelper$3(changes),
56956
- _step;
57321
+ var _iterator2 = _createForOfIteratorHelper$3(changes),
57322
+ _step2;
56957
57323
  try {
56958
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
56959
- var _step$value = _step.value,
56960
- widgetId = _step$value.widgetId,
56961
- providerType = _step$value.providerType,
56962
- providerName = _step$value.providerName;
57324
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
57325
+ var _step2$value = _step2.value,
57326
+ widgetId = _step2$value.widgetId,
57327
+ providerType = _step2$value.providerType,
57328
+ providerName = _step2$value.providerName;
56963
57329
  if (!widgetId || !providerType) continue;
56964
57330
  var prevForWidget = nextSelectedProviders[widgetId] ? _objectSpread$6({}, nextSelectedProviders[widgetId]) : {};
56965
57331
  if (providerName) {
@@ -56972,9 +57338,9 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
56972
57338
  nextSelectedProviders[widgetId] = prevForWidget;
56973
57339
  }
56974
57340
  } catch (err) {
56975
- _iterator.e(err);
57341
+ _iterator2.e(err);
56976
57342
  } finally {
56977
- _iterator.f();
57343
+ _iterator2.f();
56978
57344
  }
56979
57345
  var updatedWorkspace = _objectSpread$6(_objectSpread$6({}, workspaceSelected), {}, {
56980
57346
  selectedProviders: nextSelectedProviders
@@ -57004,14 +57370,14 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
57004
57370
 
57005
57371
  // Group changes by widgetId so we can patch each item once.
57006
57372
  var byWidget = new Map();
57007
- var _iterator2 = _createForOfIteratorHelper$3(changes),
57008
- _step2;
57373
+ var _iterator3 = _createForOfIteratorHelper$3(changes),
57374
+ _step3;
57009
57375
  try {
57010
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
57011
- var _step2$value = _step2.value,
57012
- widgetId = _step2$value.widgetId,
57013
- key = _step2$value.key,
57014
- value = _step2$value.value;
57376
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
57377
+ var _step3$value = _step3.value,
57378
+ widgetId = _step3$value.widgetId,
57379
+ key = _step3$value.key,
57380
+ value = _step3$value.value;
57015
57381
  if (!widgetId || !key) continue;
57016
57382
  if (!byWidget.has(widgetId)) byWidget.set(widgetId, {});
57017
57383
  byWidget.get(widgetId)[key] = value;
@@ -57022,9 +57388,9 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
57022
57388
  // Uses forEachWidget's walk under the hood by visiting each item
57023
57389
  // in the cloned containers.
57024
57390
  } catch (err) {
57025
- _iterator2.e(err);
57391
+ _iterator3.e(err);
57026
57392
  } finally {
57027
- _iterator2.f();
57393
+ _iterator3.f();
57028
57394
  }
57029
57395
  var updatedWorkspace = JSON.parse(JSON.stringify(workspaceSelected));
57030
57396
  var patchItem = function patchItem(item) {