@trops/dash-core 0.1.397 → 0.1.398

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.esm.js CHANGED
@@ -32,8 +32,8 @@ import { InstantSearch, Hits } from 'react-instantsearch-hooks-web';
32
32
  import { Link } from 'react-router-dom';
33
33
  import { marked } from 'marked';
34
34
 
35
- 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; }
36
- 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; }
35
+ 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; }
36
+ 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; }
37
37
  var event = {
38
38
  list: new Map(),
39
39
  // Map(1) { '<widget-UUID>' => { 'CustomSearchbar[10].searchQueryChanged': [] } }
@@ -95,7 +95,7 @@ var event = {
95
95
  uuid: subscriber["uuid"]
96
96
  };
97
97
  if ("action" in subscriber && subscriber.action !== undefined) {
98
- subscriber["action"](_objectSpread$V({}, objectToSend));
98
+ subscriber["action"](_objectSpread$W({}, objectToSend));
99
99
  }
100
100
  });
101
101
  }
@@ -2873,8 +2873,8 @@ var DashboardWrapper = function DashboardWrapper(_ref) {
2873
2873
  });
2874
2874
  };
2875
2875
 
2876
- 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; }
2877
- 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; }
2876
+ 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; }
2877
+ 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; }
2878
2878
  function ThemeBroadcast(_ref) {
2879
2879
  var ctx = _ref.ctx;
2880
2880
  useEffect(function () {
@@ -2907,7 +2907,7 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref2) {
2907
2907
  var dashboardTheme = themes[themeKey];
2908
2908
  var themeValue = dashboardTheme ? dashboardTheme[themeVariant] || null : null;
2909
2909
  if (!themeValue) return null;
2910
- return _objectSpread$U(_objectSpread$U({}, parentContext), {}, {
2910
+ return _objectSpread$V(_objectSpread$V({}, parentContext), {}, {
2911
2911
  currentTheme: themeValue,
2912
2912
  currentThemeKey: themeKey,
2913
2913
  theme: themeValue,
@@ -2934,8 +2934,8 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref2) {
2934
2934
  });
2935
2935
  };
2936
2936
 
2937
- 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; }
2938
- 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; }
2937
+ 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; }
2938
+ 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; }
2939
2939
  var AppThemeScope = function AppThemeScope(_ref) {
2940
2940
  var children = _ref.children;
2941
2941
  var ctx = useContext(ThemeContext);
@@ -2943,7 +2943,7 @@ var AppThemeScope = function AppThemeScope(_ref) {
2943
2943
  children: children
2944
2944
  });
2945
2945
  return /*#__PURE__*/jsx(ThemeContext.Provider, {
2946
- value: _objectSpread$T(_objectSpread$T({}, ctx), {}, {
2946
+ value: _objectSpread$U(_objectSpread$U({}, ctx), {}, {
2947
2947
  currentTheme: ctx.appTheme,
2948
2948
  currentThemeKey: ctx.appThemeKey,
2949
2949
  theme: ctx.appTheme,
@@ -3055,11 +3055,11 @@ var LayoutContainer = function LayoutContainer(_ref) {
3055
3055
  });
3056
3056
  };
3057
3057
 
3058
- 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; }
3059
- 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; }
3060
- 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; } } }; }
3061
- 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; } }
3062
- 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; }
3058
+ 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; }
3059
+ 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; }
3060
+ 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; } } }; }
3061
+ 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; } }
3062
+ 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; }
3063
3063
  /**
3064
3064
  * Layout template definitions for the dashboard template picker.
3065
3065
  *
@@ -3333,12 +3333,12 @@ function createLayoutFromTemplate(template) {
3333
3333
  cols: template.cols,
3334
3334
  gap: "gap-2"
3335
3335
  };
3336
- var _iterator = _createForOfIteratorHelper$s(template.cells),
3336
+ var _iterator = _createForOfIteratorHelper$t(template.cells),
3337
3337
  _step;
3338
3338
  try {
3339
3339
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
3340
3340
  var cell = _step.value;
3341
- grid[cell.key] = _objectSpread$S({
3341
+ grid[cell.key] = _objectSpread$T({
3342
3342
  component: null,
3343
3343
  hide: cell.hide || false
3344
3344
  }, cell.span ? {
@@ -4264,11 +4264,11 @@ var RegistryAuthModal = function RegistryAuthModal(_ref) {
4264
4264
  });
4265
4265
  };
4266
4266
 
4267
- function _createForOfIteratorHelper$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(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; } } }; }
4268
- function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(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$r(r, a) : void 0; } }
4269
- function _arrayLikeToArray$r(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; }
4270
- 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; }
4271
- 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; }
4267
+ 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; } } }; }
4268
+ 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; } }
4269
+ 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; }
4270
+ 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; }
4271
+ 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; }
4272
4272
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4273
4273
  var dashboardPackage = _ref.dashboardPackage,
4274
4274
  appId = _ref.appId,
@@ -4384,7 +4384,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4384
4384
  setProgressWidgets(function (prev) {
4385
4385
  var next = _toConsumableArray(prev);
4386
4386
  if (data.index >= 0 && data.index < next.length) {
4387
- next[data.index] = _objectSpread$R(_objectSpread$R({}, next[data.index]), {}, {
4387
+ next[data.index] = _objectSpread$S(_objectSpread$S({}, next[data.index]), {}, {
4388
4388
  status: data.status,
4389
4389
  error: data.error || null
4390
4390
  });
@@ -4480,7 +4480,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4480
4480
  var raw = preview === null || preview === void 0 ? void 0 : preview.compatibility;
4481
4481
  if (!raw) return raw;
4482
4482
  var cMap = ComponentManager.componentMap();
4483
- var augWidgets = _objectSpread$R({}, raw.widgets);
4483
+ var augWidgets = _objectSpread$S({}, raw.widgets);
4484
4484
  var fixedCount = 0;
4485
4485
  var _loop = function _loop() {
4486
4486
  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
@@ -4507,7 +4507,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4507
4507
  toInstall = 0,
4508
4508
  unavailable = 0,
4509
4509
  hasUnavailableRequired = false;
4510
- var _iterator = _createForOfIteratorHelper$r(widgetDeps),
4510
+ var _iterator = _createForOfIteratorHelper$s(widgetDeps),
4511
4511
  _step;
4512
4512
  try {
4513
4513
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -5063,8 +5063,8 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
5063
5063
  });
5064
5064
  };
5065
5065
 
5066
- 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; }
5067
- 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; }
5066
+ 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; }
5067
+ 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; }
5068
5068
  var LayoutManagerModal = function LayoutManagerModal(_ref) {
5069
5069
  var open = _ref.open,
5070
5070
  setIsOpen = _ref.setIsOpen,
@@ -5309,7 +5309,7 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
5309
5309
  }
5310
5310
  return _context2.abrupt("return");
5311
5311
  case 6:
5312
- updatedWorkspace = _objectSpread$Q(_objectSpread$Q({}, importedWorkspace), {}, {
5312
+ updatedWorkspace = _objectSpread$R(_objectSpread$R({}, importedWorkspace), {}, {
5313
5313
  name: dashboardName.trim(),
5314
5314
  menuId: menuId,
5315
5315
  themeKey: selectedThemeKey
@@ -6282,9 +6282,9 @@ function cleanIpcError(message) {
6282
6282
  return match ? match[1] : message;
6283
6283
  }
6284
6284
 
6285
- 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; } } }; }
6286
- 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; } }
6287
- 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; }
6285
+ function _createForOfIteratorHelper$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(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; } } }; }
6286
+ function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(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$r(r, a) : void 0; } }
6287
+ function _arrayLikeToArray$r(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; }
6288
6288
 
6289
6289
  /**
6290
6290
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -6398,13 +6398,13 @@ var useRegistrySearch = function useRegistrySearch() {
6398
6398
  return c.toLowerCase();
6399
6399
  }));
6400
6400
  widgets = [];
6401
- _iterator = _createForOfIteratorHelper$q(pkgs);
6401
+ _iterator = _createForOfIteratorHelper$r(pkgs);
6402
6402
  try {
6403
6403
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
6404
6404
  pkg = _step.value;
6405
6405
  // Compute missing APIs for the entire package
6406
6406
  allApiProviders = [];
6407
- _iterator2 = _createForOfIteratorHelper$q(pkg.providers || []);
6407
+ _iterator2 = _createForOfIteratorHelper$r(pkg.providers || []);
6408
6408
  try {
6409
6409
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
6410
6410
  p = _step2.value;
@@ -6417,11 +6417,11 @@ var useRegistrySearch = function useRegistrySearch() {
6417
6417
  } finally {
6418
6418
  _iterator2.f();
6419
6419
  }
6420
- _iterator3 = _createForOfIteratorHelper$q(pkg.widgets || []);
6420
+ _iterator3 = _createForOfIteratorHelper$r(pkg.widgets || []);
6421
6421
  try {
6422
6422
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6423
6423
  w = _step3.value;
6424
- _iterator5 = _createForOfIteratorHelper$q(w.providers || []);
6424
+ _iterator5 = _createForOfIteratorHelper$r(w.providers || []);
6425
6425
  try {
6426
6426
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
6427
6427
  _p = _step5.value;
@@ -6443,7 +6443,7 @@ var useRegistrySearch = function useRegistrySearch() {
6443
6443
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
6444
6444
  return !capSet.has(api.toLowerCase());
6445
6445
  });
6446
- _iterator4 = _createForOfIteratorHelper$q(pkg.widgets || []);
6446
+ _iterator4 = _createForOfIteratorHelper$r(pkg.widgets || []);
6447
6447
  try {
6448
6448
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
6449
6449
  widget = _step4.value;
@@ -7064,11 +7064,11 @@ function applyFilters(items, filters, mode) {
7064
7064
  });
7065
7065
  }
7066
7066
 
7067
- 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; } } }; }
7068
- 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; } }
7069
- 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; }
7070
- 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; }
7071
- 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; }
7067
+ 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; } } }; }
7068
+ 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; } }
7069
+ 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; }
7070
+ 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; }
7071
+ 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; }
7072
7072
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7073
7073
  var _state$selectedDashbo, _state$selectedDashbo2;
7074
7074
  var state = _ref.state,
@@ -7238,7 +7238,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7238
7238
  _context2.next = 7;
7239
7239
  break;
7240
7240
  }
7241
- updatedWorkspace = _objectSpread$P(_objectSpread$P({}, installResult.workspace), {}, {
7241
+ updatedWorkspace = _objectSpread$Q(_objectSpread$Q({}, installResult.workspace), {}, {
7242
7242
  name: name.trim(),
7243
7243
  menuId: menuId || 1,
7244
7244
  themeKey: theme
@@ -7290,7 +7290,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7290
7290
  installedNames = new Set(installedList.map(function (w) {
7291
7291
  return w.name;
7292
7292
  }));
7293
- _iterator = _createForOfIteratorHelper$p(state.selectedWidgets);
7293
+ _iterator = _createForOfIteratorHelper$q(state.selectedWidgets);
7294
7294
  _context2.prev = 13;
7295
7295
  _iterator.s();
7296
7296
  case 14:
@@ -7993,8 +7993,8 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7993
7993
  });
7994
7994
  };
7995
7995
 
7996
- function ownKeys$O(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; }
7997
- function _objectSpread$O(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7996
+ 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; }
7997
+ 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; }
7998
7998
  var TOTAL_STEPS = 2; // Steps 0-1: Discover, Customize
7999
7999
 
8000
8000
  var initialState = {
@@ -8020,20 +8020,20 @@ var initialState = {
8020
8020
  function wizardReducer(state, action) {
8021
8021
  switch (action.type) {
8022
8022
  case "SET_STEP":
8023
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8023
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8024
8024
  step: action.payload
8025
8025
  });
8026
8026
  case "SET_FILTERS":
8027
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8028
- filters: _objectSpread$O(_objectSpread$O({}, state.filters), action.payload)
8027
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8028
+ filters: _objectSpread$P(_objectSpread$P({}, state.filters), action.payload)
8029
8029
  });
8030
8030
  case "TOGGLE_FILTER_CATEGORY":
8031
8031
  {
8032
8032
  var categories = state.filters.categories.includes(action.payload) ? state.filters.categories.filter(function (c) {
8033
8033
  return c !== action.payload;
8034
8034
  }) : [].concat(_toConsumableArray(state.filters.categories), [action.payload]);
8035
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8036
- filters: _objectSpread$O(_objectSpread$O({}, state.filters), {}, {
8035
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8036
+ filters: _objectSpread$P(_objectSpread$P({}, state.filters), {}, {
8037
8037
  categories: categories
8038
8038
  })
8039
8039
  });
@@ -8043,15 +8043,15 @@ function wizardReducer(state, action) {
8043
8043
  var providers = state.filters.providers.includes(action.payload) ? state.filters.providers.filter(function (p) {
8044
8044
  return p !== action.payload;
8045
8045
  }) : [].concat(_toConsumableArray(state.filters.providers), [action.payload]);
8046
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8047
- filters: _objectSpread$O(_objectSpread$O({}, state.filters), {}, {
8046
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8047
+ filters: _objectSpread$P(_objectSpread$P({}, state.filters), {}, {
8048
8048
  providers: providers
8049
8049
  })
8050
8050
  });
8051
8051
  }
8052
8052
  case "SET_SEARCH_QUERY":
8053
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8054
- filters: _objectSpread$O(_objectSpread$O({}, state.filters), {}, {
8053
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8054
+ filters: _objectSpread$P(_objectSpread$P({}, state.filters), {}, {
8055
8055
  query: action.payload
8056
8056
  })
8057
8057
  });
@@ -8061,7 +8061,7 @@ function wizardReducer(state, action) {
8061
8061
  var widgetOrder = action.payload.map(function (w) {
8062
8062
  return w.name || w.key;
8063
8063
  });
8064
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8064
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8065
8065
  selectedWidgets: action.payload,
8066
8066
  layout: {
8067
8067
  templateKey: templateKey,
@@ -8081,7 +8081,7 @@ function wizardReducer(state, action) {
8081
8081
  var toggleWidgetOrder = selectedWidgets.map(function (w) {
8082
8082
  return w.name || w.key;
8083
8083
  });
8084
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8084
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8085
8085
  selectedWidgets: selectedWidgets,
8086
8086
  layout: {
8087
8087
  templateKey: toggleTemplateKey,
@@ -8090,29 +8090,29 @@ function wizardReducer(state, action) {
8090
8090
  });
8091
8091
  }
8092
8092
  case "SET_SELECTED_DASHBOARD":
8093
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8093
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8094
8094
  selectedDashboard: action.payload
8095
8095
  });
8096
8096
  case "SET_PATH":
8097
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8097
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8098
8098
  path: action.payload
8099
8099
  });
8100
8100
  case "SET_LAYOUT":
8101
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8101
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8102
8102
  layout: action.payload
8103
8103
  });
8104
8104
  case "REORDER_WIDGETS":
8105
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8106
- layout: _objectSpread$O(_objectSpread$O({}, state.layout), {}, {
8105
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8106
+ layout: _objectSpread$P(_objectSpread$P({}, state.layout), {}, {
8107
8107
  widgetOrder: action.payload
8108
8108
  })
8109
8109
  });
8110
8110
  case "SET_CUSTOMIZATION":
8111
- return _objectSpread$O(_objectSpread$O({}, state), {}, {
8112
- customization: _objectSpread$O(_objectSpread$O({}, state.customization), action.payload)
8111
+ return _objectSpread$P(_objectSpread$P({}, state), {}, {
8112
+ customization: _objectSpread$P(_objectSpread$P({}, state.customization), action.payload)
8113
8113
  });
8114
8114
  case "RESET":
8115
- return _objectSpread$O({}, initialState);
8115
+ return _objectSpread$P({}, initialState);
8116
8116
  default:
8117
8117
  return state;
8118
8118
  }
@@ -12764,8 +12764,8 @@ var deepEqual = function deepEqual(a, b, opts) {
12764
12764
 
12765
12765
  var deepEqual$1 = /*@__PURE__*/getDefaultExportFromCjs(deepEqual);
12766
12766
 
12767
- function ownKeys$N(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; }
12768
- function _objectSpread$N(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12767
+ function ownKeys$O(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; }
12768
+ function _objectSpread$O(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12769
12769
  var PanelEditItem = function PanelEditItem(_ref) {
12770
12770
  var _ComponentManager$get;
12771
12771
  var workspace = _ref.workspace,
@@ -12825,7 +12825,7 @@ var PanelEditItem = function PanelEditItem(_ref) {
12825
12825
  var uuid = newItem.uuid || newItem.uuidString;
12826
12826
  if (uuid) {
12827
12827
  workspaceTemp.selectedProviders = workspaceTemp.selectedProviders || {};
12828
- workspaceTemp.selectedProviders[uuid] = _objectSpread$N(_objectSpread$N({}, workspaceTemp.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
12828
+ workspaceTemp.selectedProviders[uuid] = _objectSpread$O(_objectSpread$O({}, workspaceTemp.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
12829
12829
  }
12830
12830
  onUpdate(newItem, workspaceTemp);
12831
12831
  forceUpdate();
@@ -12954,7 +12954,7 @@ var PanelEditItem = function PanelEditItem(_ref) {
12954
12954
  var _ref5 = _slicedToArray(_ref4, 2),
12955
12955
  name = _ref5[0],
12956
12956
  p = _ref5[1];
12957
- return _objectSpread$N({
12957
+ return _objectSpread$O({
12958
12958
  name: name
12959
12959
  }, p);
12960
12960
  });
@@ -12996,11 +12996,11 @@ var PanelEditItem = function PanelEditItem(_ref) {
12996
12996
  };
12997
12997
 
12998
12998
  var _excluded$6 = ["rows", "cols"];
12999
- 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; } } }; }
13000
- 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; } }
13001
- 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; }
13002
- function ownKeys$M(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; }
13003
- function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12999
+ 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; } } }; }
13000
+ 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; } }
13001
+ 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; }
13002
+ function ownKeys$N(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; }
13003
+ function _objectSpread$N(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13004
13004
  var defaultGrid = {
13005
13005
  rows: 1,
13006
13006
  cols: 1,
@@ -13021,7 +13021,7 @@ function GridEditor(_ref) {
13021
13021
  setGrid = _useState2[1];
13022
13022
  var addRow = function addRow() {
13023
13023
  var newRow = grid.rows;
13024
- var newGrid = _objectSpread$M(_objectSpread$M({}, grid), {}, {
13024
+ var newGrid = _objectSpread$N(_objectSpread$N({}, grid), {}, {
13025
13025
  rows: grid.rows + 1
13026
13026
  });
13027
13027
  for (var col = 0; col < grid.cols; col++) {
@@ -13036,7 +13036,7 @@ function GridEditor(_ref) {
13036
13036
  };
13037
13037
  var addColumn = function addColumn() {
13038
13038
  var newCol = grid.cols;
13039
- var newGrid = _objectSpread$M(_objectSpread$M({}, grid), {}, {
13039
+ var newGrid = _objectSpread$N(_objectSpread$N({}, grid), {}, {
13040
13040
  cols: grid.cols + 1
13041
13041
  });
13042
13042
  for (var row = 0; row < grid.rows; row++) {
@@ -13069,8 +13069,8 @@ function GridEditor(_ref) {
13069
13069
  });
13070
13070
  }
13071
13071
  if (grid[nextKey]) {
13072
- var newGrid = _objectSpread$M({}, grid);
13073
- newGrid[currentKey] = _objectSpread$M(_objectSpread$M({}, newGrid[currentKey]), {}, {
13072
+ var newGrid = _objectSpread$N({}, grid);
13073
+ newGrid[currentKey] = _objectSpread$N(_objectSpread$N({}, newGrid[currentKey]), {}, {
13074
13074
  colSpan: newGrid[currentKey].colSpan + 1
13075
13075
  });
13076
13076
  delete newGrid[nextKey];
@@ -13083,8 +13083,8 @@ function GridEditor(_ref) {
13083
13083
  var currentKey = "".concat(row, ".").concat(col);
13084
13084
  var belowKey = "".concat(row + 1, ".").concat(col);
13085
13085
  if (grid[belowKey]) {
13086
- var newGrid = _objectSpread$M({}, grid);
13087
- newGrid[currentKey] = _objectSpread$M(_objectSpread$M({}, newGrid[currentKey]), {}, {
13086
+ var newGrid = _objectSpread$N({}, grid);
13087
+ newGrid[currentKey] = _objectSpread$N(_objectSpread$N({}, newGrid[currentKey]), {}, {
13088
13088
  rowSpan: newGrid[currentKey].rowSpan + 1
13089
13089
  });
13090
13090
  delete newGrid[belowKey];
@@ -13101,7 +13101,7 @@ function GridEditor(_ref) {
13101
13101
  var splitCell = function splitCell(row, col) {
13102
13102
  var key = "".concat(row, ".").concat(col);
13103
13103
  var cell = grid[key];
13104
- var newGrid = _objectSpread$M({}, grid);
13104
+ var newGrid = _objectSpread$N({}, grid);
13105
13105
 
13106
13106
  // we have to check the colspan, and since the colspan is greater than 1
13107
13107
  // Only handle horizontal split if colSpan > 1
@@ -13117,13 +13117,13 @@ function GridEditor(_ref) {
13117
13117
  var oldKey = "".concat(row, ".").concat(c);
13118
13118
  var newKey = "".concat(row, ".").concat(c + 1);
13119
13119
  if (newGrid[oldKey]) {
13120
- newGrid[newKey] = _objectSpread$M({}, newGrid[oldKey]);
13120
+ newGrid[newKey] = _objectSpread$N({}, newGrid[oldKey]);
13121
13121
  delete newGrid[oldKey];
13122
13122
  }
13123
13123
  }
13124
13124
 
13125
13125
  // Update the original cell's colSpan
13126
- newGrid[key] = _objectSpread$M(_objectSpread$M({}, cell), {}, {
13126
+ newGrid[key] = _objectSpread$N(_objectSpread$N({}, cell), {}, {
13127
13127
  colSpan: cell.colSpan - 1
13128
13128
  });
13129
13129
 
@@ -13135,7 +13135,7 @@ function GridEditor(_ref) {
13135
13135
  };
13136
13136
  }
13137
13137
  if (cell.rowSpan > 1) {
13138
- newGrid[key] = _objectSpread$M(_objectSpread$M({}, newGrid[key]), {}, {
13138
+ newGrid[key] = _objectSpread$N(_objectSpread$N({}, newGrid[key]), {}, {
13139
13139
  rowSpan: cell.rowSpan - 1
13140
13140
  });
13141
13141
  newGrid["".concat(row + 1, ".").concat(col)] = {
@@ -13151,7 +13151,7 @@ function GridEditor(_ref) {
13151
13151
  function sortObjectByKeys(obj) {
13152
13152
  var sortedKeys = Object.keys(obj).sort();
13153
13153
  var sortedObj = {};
13154
- var _iterator = _createForOfIteratorHelper$o(sortedKeys),
13154
+ var _iterator = _createForOfIteratorHelper$p(sortedKeys),
13155
13155
  _step;
13156
13156
  try {
13157
13157
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13254,7 +13254,7 @@ function GridEditor(_ref) {
13254
13254
  var fromKey = "".concat(from.row, ".").concat(from.col);
13255
13255
  var toKey = "".concat(to.row, ".").concat(to.col);
13256
13256
  if (fromKey === toKey) return;
13257
- var newGrid = _objectSpread$M({}, grid);
13257
+ var newGrid = _objectSpread$N({}, grid);
13258
13258
 
13259
13259
  // Swap the cells
13260
13260
  var temp = newGrid[fromKey];
@@ -13280,7 +13280,7 @@ function GridEditor(_ref) {
13280
13280
  // console.log("Grid updated:", sequencedGrid);
13281
13281
  }
13282
13282
  function resetGridLayout() {
13283
- var newGrid = _objectSpread$M({}, defaultGrid);
13283
+ var newGrid = _objectSpread$N({}, defaultGrid);
13284
13284
  setGrid(newGrid);
13285
13285
  onUpdate(newGrid);
13286
13286
  }
@@ -13558,8 +13558,8 @@ var PanelEditItemGrid = function PanelEditItemGrid(_ref) {
13558
13558
  });
13559
13559
  };
13560
13560
 
13561
- function ownKeys$L(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; }
13562
- function _objectSpread$L(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$L(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$L(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13561
+ function ownKeys$M(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; }
13562
+ function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13563
13563
  var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13564
13564
  var item = _ref.item;
13565
13565
  _ref.workspace;
@@ -13582,7 +13582,7 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13582
13582
  }, [widgetUuid, notificationDefs.length]);
13583
13583
  function handleNotifToggle(typeKey, value) {
13584
13584
  var _window$mainApi2;
13585
- var updated = _objectSpread$L(_objectSpread$L({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
13585
+ var updated = _objectSpread$M(_objectSpread$M({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
13586
13586
  setNotifPrefs(updated);
13587
13587
  if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.notifications) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.setPreferences && widgetUuid) {
13588
13588
  window.mainApi.notifications.setPreferences(widgetUuid, _defineProperty({}, typeKey, value));
@@ -13624,11 +13624,11 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13624
13624
  });
13625
13625
  };
13626
13626
 
13627
- function _createForOfIteratorHelper$n(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$n(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; } } }; }
13628
- function _unsupportedIterableToArray$n(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$n(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$n(r, a) : void 0; } }
13629
- function _arrayLikeToArray$n(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; }
13630
- function ownKeys$K(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; }
13631
- function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13627
+ 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; } } }; }
13628
+ 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; } }
13629
+ 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; }
13630
+ function ownKeys$L(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; }
13631
+ function _objectSpread$L(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$L(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$L(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13632
13632
  var DAYS = [{
13633
13633
  key: "mon",
13634
13634
  label: "Mon"
@@ -13729,7 +13729,7 @@ function TaskScheduleEditor(_ref) {
13729
13729
  var _window$mainApi;
13730
13730
  var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
13731
13731
  if (!((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.scheduler) !== null && _window$mainApi !== void 0 && _window$mainApi.registerTask)) return;
13732
- var payload = _objectSpread$K({
13732
+ var payload = _objectSpread$L({
13733
13733
  widgetId: widgetId,
13734
13734
  widgetName: widgetName,
13735
13735
  workspaceId: workspaceId || "",
@@ -13955,7 +13955,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
13955
13955
  setIsLoading(true);
13956
13956
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
13957
13957
  var stateMap = {};
13958
- var _iterator = _createForOfIteratorHelper$n(tasks || []),
13958
+ var _iterator = _createForOfIteratorHelper$o(tasks || []),
13959
13959
  _step;
13960
13960
  try {
13961
13961
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -16014,8 +16014,8 @@ var WidgetIcon = function WidgetIcon(_ref) {
16014
16014
  });
16015
16015
  };
16016
16016
 
16017
- function ownKeys$J(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; }
16018
- function _objectSpread$J(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16017
+ function ownKeys$K(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; }
16018
+ function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16019
16019
  var ProviderForm = function ProviderForm(_ref) {
16020
16020
  var credentialSchema = _ref.credentialSchema,
16021
16021
  _ref$initialValues = _ref.initialValues,
@@ -16060,14 +16060,14 @@ var ProviderForm = function ProviderForm(_ref) {
16060
16060
  var oldKey = f.key;
16061
16061
  if (oldKey && formData[oldKey] !== undefined) {
16062
16062
  setFormData(function (fd) {
16063
- var updated = _objectSpread$J({}, fd);
16063
+ var updated = _objectSpread$K({}, fd);
16064
16064
  var val = updated[oldKey];
16065
16065
  delete updated[oldKey];
16066
16066
  if (newKey.trim()) updated[newKey] = val;
16067
16067
  return updated;
16068
16068
  });
16069
16069
  }
16070
- return _objectSpread$J(_objectSpread$J({}, f), {}, {
16070
+ return _objectSpread$K(_objectSpread$K({}, f), {}, {
16071
16071
  key: newKey
16072
16072
  });
16073
16073
  });
@@ -16079,14 +16079,14 @@ var ProviderForm = function ProviderForm(_ref) {
16079
16079
  });
16080
16080
  if (field !== null && field !== void 0 && field.key) {
16081
16081
  setFormData(function (prev) {
16082
- return _objectSpread$J(_objectSpread$J({}, prev), {}, _defineProperty({}, field.key, value));
16082
+ return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, field.key, value));
16083
16083
  });
16084
16084
  }
16085
16085
  };
16086
16086
  var handleDynamicSecretToggle = function handleDynamicSecretToggle(id) {
16087
16087
  setDynamicFields(function (prev) {
16088
16088
  return prev.map(function (f) {
16089
- return f.id === id ? _objectSpread$J(_objectSpread$J({}, f), {}, {
16089
+ return f.id === id ? _objectSpread$K(_objectSpread$K({}, f), {}, {
16090
16090
  secret: !f.secret
16091
16091
  }) : f;
16092
16092
  });
@@ -16108,7 +16108,7 @@ var ProviderForm = function ProviderForm(_ref) {
16108
16108
  });
16109
16109
  if (field !== null && field !== void 0 && field.key) {
16110
16110
  setFormData(function (prev) {
16111
- var updated = _objectSpread$J({}, prev);
16111
+ var updated = _objectSpread$K({}, prev);
16112
16112
  delete updated[field.key];
16113
16113
  return updated;
16114
16114
  });
@@ -16150,13 +16150,13 @@ var ProviderForm = function ProviderForm(_ref) {
16150
16150
  */
16151
16151
  var handleInputChange = function handleInputChange(fieldName, value) {
16152
16152
  setFormData(function (prev) {
16153
- return _objectSpread$J(_objectSpread$J({}, prev), {}, _defineProperty({}, fieldName, value));
16153
+ return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, fieldName, value));
16154
16154
  });
16155
16155
 
16156
16156
  // Clear error for this field if it was filled
16157
16157
  if (errors[fieldName] && value !== null && value !== void 0 && value.trim()) {
16158
16158
  setErrors(function (prev) {
16159
- var newErrors = _objectSpread$J({}, prev);
16159
+ var newErrors = _objectSpread$K({}, prev);
16160
16160
  delete newErrors[fieldName];
16161
16161
  return newErrors;
16162
16162
  });
@@ -16194,7 +16194,7 @@ var ProviderForm = function ProviderForm(_ref) {
16194
16194
  // Clear error if filled
16195
16195
  if (errors.providerName && value !== null && value !== void 0 && value.trim()) {
16196
16196
  setErrors(function (prev) {
16197
- var newErrors = _objectSpread$J({}, prev);
16197
+ var newErrors = _objectSpread$K({}, prev);
16198
16198
  delete newErrors.providerName;
16199
16199
  return newErrors;
16200
16200
  });
@@ -16431,8 +16431,8 @@ var ToolSelector$1 = function ToolSelector(_ref) {
16431
16431
  });
16432
16432
  };
16433
16433
 
16434
- function ownKeys$I(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; }
16435
- function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16434
+ function ownKeys$J(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; }
16435
+ function _objectSpread$J(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16436
16436
  /**
16437
16437
  * Shared MCP utility functions.
16438
16438
  *
@@ -16560,7 +16560,7 @@ function buildMcpConfigFromOverrides(baseMcpConfig, envMappingRows, headerRows)
16560
16560
  headerTemplate[name] = value;
16561
16561
  }
16562
16562
  });
16563
- var config = _objectSpread$I({}, baseMcpConfig);
16563
+ var config = _objectSpread$J({}, baseMcpConfig);
16564
16564
  if (Object.keys(headerTemplate).length > 0) {
16565
16565
  config.headerTemplate = headerTemplate;
16566
16566
  } else {
@@ -16578,7 +16578,7 @@ function buildMcpConfigFromOverrides(baseMcpConfig, envMappingRows, headerRows)
16578
16578
  envMapping[env] = cred;
16579
16579
  }
16580
16580
  });
16581
- return _objectSpread$I(_objectSpread$I({}, baseMcpConfig), {}, {
16581
+ return _objectSpread$J(_objectSpread$J({}, baseMcpConfig), {}, {
16582
16582
  envMapping: envMapping
16583
16583
  });
16584
16584
  }
@@ -16819,11 +16819,11 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
16819
16819
  });
16820
16820
  };
16821
16821
 
16822
- function _createForOfIteratorHelper$m(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$m(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; } } }; }
16823
- function _unsupportedIterableToArray$m(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$m(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$m(r, a) : void 0; } }
16824
- function _arrayLikeToArray$m(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; }
16825
- function ownKeys$H(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; }
16826
- function _objectSpread$H(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$H(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$H(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16822
+ function _createForOfIteratorHelper$n(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$n(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; } } }; }
16823
+ function _unsupportedIterableToArray$n(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$n(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$n(r, a) : void 0; } }
16824
+ function _arrayLikeToArray$n(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; }
16825
+ function ownKeys$I(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; }
16826
+ function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16827
16827
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
16828
16828
  var isOpen = _ref.isOpen,
16829
16829
  onClose = _ref.onClose,
@@ -17018,7 +17018,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17018
17018
  .map(function (entry) {
17019
17019
  var widget = allWidgets[entry.widgetKey];
17020
17020
  if (!widget) return null; // Widget no longer exists
17021
- return _objectSpread$H(_objectSpread$H({
17021
+ return _objectSpread$I(_objectSpread$I({
17022
17022
  key: entry.widgetKey
17023
17023
  }, widget), {}, {
17024
17024
  savedProviders: entry.providers || {},
@@ -17106,11 +17106,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17106
17106
 
17107
17107
  // Flatten all widgets from all packages for the widget list
17108
17108
  flatWidgets = [];
17109
- _iterator = _createForOfIteratorHelper$m(result.packages || []);
17109
+ _iterator = _createForOfIteratorHelper$n(result.packages || []);
17110
17110
  try {
17111
17111
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
17112
17112
  pkg = _step.value;
17113
- _iterator2 = _createForOfIteratorHelper$m(pkg.widgets || []);
17113
+ _iterator2 = _createForOfIteratorHelper$n(pkg.widgets || []);
17114
17114
  try {
17115
17115
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
17116
17116
  widget = _step2.value;
@@ -17169,7 +17169,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17169
17169
  // Get widgets from ComponentManager
17170
17170
  var allWidgets = ComponentManager.map();
17171
17171
  var widgetList = Object.keys(allWidgets).map(function (key) {
17172
- return _objectSpread$H({
17172
+ return _objectSpread$I({
17173
17173
  key: key
17174
17174
  }, allWidgets[key]);
17175
17175
  }).filter(function (widget) {
@@ -17400,7 +17400,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17400
17400
  setInlineCreateType(null);
17401
17401
  setInlineCreateSchema({});
17402
17402
  setInlineCreateError(null);
17403
- setSelectedProviders(_objectSpread$H(_objectSpread$H({}, selectedProviders), {}, _defineProperty({}, providerType, providerName)));
17403
+ setSelectedProviders(_objectSpread$I(_objectSpread$I({}, selectedProviders), {}, _defineProperty({}, providerType, providerName)));
17404
17404
  }
17405
17405
  };
17406
17406
  var handleInlineProviderSubmit = function handleInlineProviderSubmit(formData) {
@@ -17421,7 +17421,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17421
17421
 
17422
17422
  // Auto-select the newly created provider
17423
17423
  setSelectedProviders(function (prev) {
17424
- return _objectSpread$H(_objectSpread$H({}, prev), {}, _defineProperty({}, providerType, providerName));
17424
+ return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, providerType, providerName));
17425
17425
  });
17426
17426
 
17427
17427
  // Collapse the inline form
@@ -17475,11 +17475,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17475
17475
  };
17476
17476
  var inlineHandleCredentialChange = function inlineHandleCredentialChange(fieldName, value) {
17477
17477
  setInlineCredentialData(function (prev) {
17478
- return _objectSpread$H(_objectSpread$H({}, prev), {}, _defineProperty({}, fieldName, value));
17478
+ return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, fieldName, value));
17479
17479
  });
17480
17480
  if (inlineFormErrors[fieldName] && value !== null && value !== void 0 && value.trim()) {
17481
17481
  setInlineFormErrors(function (prev) {
17482
- var next = _objectSpread$H({}, prev);
17482
+ var next = _objectSpread$I({}, prev);
17483
17483
  delete next[fieldName];
17484
17484
  return next;
17485
17485
  });
@@ -17572,7 +17572,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17572
17572
  refreshProviders();
17573
17573
  }
17574
17574
  setSelectedProviders(function (prev) {
17575
- return _objectSpread$H(_objectSpread$H({}, prev), {}, _defineProperty({}, providerType, providerName));
17575
+ return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, providerType, providerName));
17576
17576
  });
17577
17577
 
17578
17578
  // Reset stepper state
@@ -17593,7 +17593,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17593
17593
  });
17594
17594
  };
17595
17595
  var handleConfigChange = function handleConfigChange(key, value) {
17596
- setUserConfigValues(_objectSpread$H(_objectSpread$H({}, userConfigValues), {}, _defineProperty({}, key, value)));
17596
+ setUserConfigValues(_objectSpread$I(_objectSpread$I({}, userConfigValues), {}, _defineProperty({}, key, value)));
17597
17597
  };
17598
17598
 
17599
17599
  // Install a package from the registry
@@ -17659,7 +17659,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17659
17659
  // Mark items as installed
17660
17660
  setProgressWidgets(function (prev) {
17661
17661
  return prev.map(function (w) {
17662
- return _objectSpread$H(_objectSpread$H({}, w), {}, {
17662
+ return _objectSpread$I(_objectSpread$I({}, w), {}, {
17663
17663
  status: "installed"
17664
17664
  });
17665
17665
  });
@@ -17678,7 +17678,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17678
17678
  setInstallError(msg);
17679
17679
  setProgressWidgets(function (prev) {
17680
17680
  return prev.map(function (w) {
17681
- return _objectSpread$H(_objectSpread$H({}, w), {}, {
17681
+ return _objectSpread$I(_objectSpread$I({}, w), {}, {
17682
17682
  status: "failed",
17683
17683
  error: msg
17684
17684
  });
@@ -17752,7 +17752,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17752
17752
 
17753
17753
  // Phase 3: Save to recent widgets
17754
17754
  saveToRecent(selectedWidget, selectedProviders, userConfigValues);
17755
- onSelectWidget(_objectSpread$H(_objectSpread$H({}, selectedWidget), {}, {
17755
+ onSelectWidget(_objectSpread$I(_objectSpread$I({}, selectedWidget), {}, {
17756
17756
  selectedProviders: selectedProviders,
17757
17757
  // Pass to parent
17758
17758
  userConfigValues: userConfigValues // Pass to parent
@@ -18389,7 +18389,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
18389
18389
  setInlineProviderName(value);
18390
18390
  if (inlineFormErrors.providerName && value !== null && value !== void 0 && value.trim()) {
18391
18391
  setInlineFormErrors(function (prev) {
18392
- var next = _objectSpread$H({}, prev);
18392
+ var next = _objectSpread$I({}, prev);
18393
18393
  delete next.providerName;
18394
18394
  return next;
18395
18395
  });
@@ -18748,9 +18748,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
18748
18748
  });
18749
18749
  };
18750
18750
 
18751
- function _createForOfIteratorHelper$l(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$l(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; } } }; }
18752
- function _unsupportedIterableToArray$l(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$l(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$l(r, a) : void 0; } }
18753
- function _arrayLikeToArray$l(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; }
18751
+ function _createForOfIteratorHelper$m(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$m(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; } } }; }
18752
+ function _unsupportedIterableToArray$m(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$m(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$m(r, a) : void 0; } }
18753
+ function _arrayLikeToArray$m(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; }
18754
18754
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
18755
18755
  var item = _ref.item,
18756
18756
  widget = _ref.widget,
@@ -18795,7 +18795,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
18795
18795
  var el = headerRef.current;
18796
18796
  if (!el) return;
18797
18797
  var observer = new ResizeObserver(function (entries) {
18798
- var _iterator = _createForOfIteratorHelper$l(entries),
18798
+ var _iterator = _createForOfIteratorHelper$m(entries),
18799
18799
  _step;
18800
18800
  try {
18801
18801
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -19187,9 +19187,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
19187
19187
  };
19188
19188
  };
19189
19189
 
19190
- function _createForOfIteratorHelper$k(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$k(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; } } }; }
19191
- function _unsupportedIterableToArray$k(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$k(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$k(r, a) : void 0; } }
19192
- function _arrayLikeToArray$k(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; }
19190
+ function _createForOfIteratorHelper$l(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$l(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; } } }; }
19191
+ function _unsupportedIterableToArray$l(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$l(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$l(r, a) : void 0; } }
19192
+ function _arrayLikeToArray$l(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; }
19193
19193
  function formatCountdown(ms) {
19194
19194
  if (ms == null || ms < 0) return "--";
19195
19195
  if (ms < 1000) return "< 1s";
@@ -19306,7 +19306,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
19306
19306
 
19307
19307
  // Find soonest countdown among enabled tasks
19308
19308
  var soonestMs = null;
19309
- var _iterator = _createForOfIteratorHelper$k(enabledTasks),
19309
+ var _iterator = _createForOfIteratorHelper$l(enabledTasks),
19310
19310
  _step;
19311
19311
  try {
19312
19312
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -19759,8 +19759,8 @@ var ProviderSelector = function ProviderSelector(_ref) {
19759
19759
  });
19760
19760
  };
19761
19761
 
19762
- function ownKeys$G(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; }
19763
- function _objectSpread$G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19762
+ function ownKeys$H(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; }
19763
+ function _objectSpread$H(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$H(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$H(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19764
19764
  var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
19765
19765
  var transport = _ref.transport,
19766
19766
  envMappingRows = _ref.envMappingRows,
@@ -19789,7 +19789,7 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
19789
19789
  var updateEnvRow = function updateEnvRow(id, field, value) {
19790
19790
  onEnvMappingRowsChange(function (prev) {
19791
19791
  return prev.map(function (row) {
19792
- return row.id === id ? _objectSpread$G(_objectSpread$G({}, row), {}, _defineProperty({}, field, value)) : row;
19792
+ return row.id === id ? _objectSpread$H(_objectSpread$H({}, row), {}, _defineProperty({}, field, value)) : row;
19793
19793
  });
19794
19794
  });
19795
19795
  };
@@ -19814,7 +19814,7 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
19814
19814
  var updateHeaderRow = function updateHeaderRow(id, field, value) {
19815
19815
  onHeaderRowsChange(function (prev) {
19816
19816
  return prev.map(function (row) {
19817
- return row.id === id ? _objectSpread$G(_objectSpread$G({}, row), {}, _defineProperty({}, field, value)) : row;
19817
+ return row.id === id ? _objectSpread$H(_objectSpread$H({}, row), {}, _defineProperty({}, field, value)) : row;
19818
19818
  });
19819
19819
  });
19820
19820
  };
@@ -19963,8 +19963,8 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
19963
19963
  });
19964
19964
  };
19965
19965
 
19966
- function ownKeys$F(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; }
19967
- function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19966
+ function ownKeys$G(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; }
19967
+ function _objectSpread$G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19968
19968
  var McpServerPicker = function McpServerPicker(_ref) {
19969
19969
  var _testResult$tools;
19970
19970
  var isOpen = _ref.isOpen,
@@ -20143,11 +20143,11 @@ var McpServerPicker = function McpServerPicker(_ref) {
20143
20143
  // Handle credential field changes
20144
20144
  var handleCredentialChange = function handleCredentialChange(fieldName, value) {
20145
20145
  setCredentialData(function (prev) {
20146
- return _objectSpread$F(_objectSpread$F({}, prev), {}, _defineProperty({}, fieldName, value));
20146
+ return _objectSpread$G(_objectSpread$G({}, prev), {}, _defineProperty({}, fieldName, value));
20147
20147
  });
20148
20148
  if (formErrors[fieldName] && value !== null && value !== void 0 && value.trim()) {
20149
20149
  setFormErrors(function (prev) {
20150
- var next = _objectSpread$F({}, prev);
20150
+ var next = _objectSpread$G({}, prev);
20151
20151
  delete next[fieldName];
20152
20152
  return next;
20153
20153
  });
@@ -20485,7 +20485,7 @@ var McpServerPicker = function McpServerPicker(_ref) {
20485
20485
  setProviderName(value);
20486
20486
  if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
20487
20487
  setFormErrors(function (prev) {
20488
- var next = _objectSpread$F({}, prev);
20488
+ var next = _objectSpread$G({}, prev);
20489
20489
  delete next.providerName;
20490
20490
  return next;
20491
20491
  });
@@ -20675,8 +20675,8 @@ var McpServerPicker = function McpServerPicker(_ref) {
20675
20675
  });
20676
20676
  };
20677
20677
 
20678
- function ownKeys$E(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; }
20679
- function _objectSpread$E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20678
+ function ownKeys$F(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; }
20679
+ function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20680
20680
  var USE_ENHANCED_WIDGET_SELECTOR = true; // Set to false to use original modal
20681
20681
 
20682
20682
  /**
@@ -20722,7 +20722,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
20722
20722
  var _ref3 = _slicedToArray(_ref2, 2),
20723
20723
  id = _ref3[0],
20724
20724
  p = _ref3[1];
20725
- return _objectSpread$E(_objectSpread$E({}, p), {}, {
20725
+ return _objectSpread$F(_objectSpread$F({}, p), {}, {
20726
20726
  id: id,
20727
20727
  name: p.name || id
20728
20728
  });
@@ -20809,7 +20809,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
20809
20809
  // so we use its layout to replace any corrupted grid data.
20810
20810
  if (workspace && workspace["layout"]) {
20811
20811
  var model = new DashboardModel(workspace);
20812
- setCurrentWorkspace(_objectSpread$E(_objectSpread$E({}, workspace), {}, {
20812
+ setCurrentWorkspace(_objectSpread$F(_objectSpread$F({}, workspace), {}, {
20813
20813
  layout: model.layout
20814
20814
  }));
20815
20815
  } else {
@@ -20858,7 +20858,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
20858
20858
  }
20859
20859
  try {
20860
20860
  var hasChildren = config.type === "workspace";
20861
- var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$E(_objectSpread$E({}, config), {}, {
20861
+ var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$F(_objectSpread$F({}, config), {}, {
20862
20862
  component: widgetComponentName
20863
20863
  }), hasChildren);
20864
20864
  var newWidgetId = newLayout[newLayout.length - 1].id;
@@ -21286,7 +21286,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
21286
21286
  var uuid = widget.uuid || widget.uuidString;
21287
21287
  if (uuid) {
21288
21288
  newWorkspace.selectedProviders = newWorkspace.selectedProviders || {};
21289
- newWorkspace.selectedProviders[uuid] = _objectSpread$E(_objectSpread$E({}, newWorkspace.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
21289
+ newWorkspace.selectedProviders[uuid] = _objectSpread$F(_objectSpread$F({}, newWorkspace.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
21290
21290
  }
21291
21291
  setCurrentWorkspace(newWorkspace);
21292
21292
  }
@@ -21422,7 +21422,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
21422
21422
  var _gridContainer$grid;
21423
21423
  var config = ComponentManager.config(widgetKey);
21424
21424
  if (!config) return;
21425
- var widgetItem = _objectSpread$E(_objectSpread$E({}, config), {}, {
21425
+ var widgetItem = _objectSpread$F(_objectSpread$F({}, config), {}, {
21426
21426
  component: widgetKey,
21427
21427
  key: widgetKey
21428
21428
  });
@@ -21676,7 +21676,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
21676
21676
  onSelectWidget: function onSelectWidget(widget) {
21677
21677
 
21678
21678
  // Add component property from widget.key
21679
- var widgetWithComponent = _objectSpread$E(_objectSpread$E({}, widget), {}, {
21679
+ var widgetWithComponent = _objectSpread$F(_objectSpread$F({}, widget), {}, {
21680
21680
  component: widget.key
21681
21681
  });
21682
21682
  handleClickConfirmAdd(widgetWithComponent, dropdownTarget);
@@ -23305,8 +23305,8 @@ var MissingProviderPrompt = function MissingProviderPrompt(_ref) {
23305
23305
  });
23306
23306
  };
23307
23307
 
23308
- function ownKeys$D(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; }
23309
- function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23308
+ function ownKeys$E(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; }
23309
+ function _objectSpread$E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23310
23310
  function _callSuper$4(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$4() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
23311
23311
  function _isNativeReflectConstruct$4() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$4 = function _isNativeReflectConstruct() { return !!t; })(); }
23312
23312
  var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
@@ -23361,7 +23361,7 @@ var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
23361
23361
  _defineProperty(_this, "handleProviderSelect", function (providerType, providerName, credentials) {
23362
23362
 
23363
23363
  // Update local selected providers state
23364
- var updatedSelected = _objectSpread$D(_objectSpread$D({}, _this.state.selectedProviders), {}, _defineProperty({}, providerType, providerName));
23364
+ var updatedSelected = _objectSpread$E(_objectSpread$E({}, _this.state.selectedProviders), {}, _defineProperty({}, providerType, providerName));
23365
23365
  _this.setState({
23366
23366
  selectedProviders: updatedSelected
23367
23367
  }, function () {
@@ -23435,8 +23435,8 @@ var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
23435
23435
  }(Component);
23436
23436
  _defineProperty(ProviderErrorBoundary, "contextType", ProviderContext);
23437
23437
 
23438
- function ownKeys$C(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; }
23439
- function _objectSpread$C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23438
+ function ownKeys$D(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; }
23439
+ function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23440
23440
  var withProviderDetection = function withProviderDetection(Component) {
23441
23441
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
23442
23442
  _ref$requiredProvider = _ref.requiredProviders,
@@ -23461,7 +23461,7 @@ var withProviderDetection = function withProviderDetection(Component) {
23461
23461
  onProviderSelect: onProviderSelect
23462
23462
  });
23463
23463
  }
23464
- return /*#__PURE__*/jsx(Component, _objectSpread$C({}, props));
23464
+ return /*#__PURE__*/jsx(Component, _objectSpread$D({}, props));
23465
23465
  };
23466
23466
  };
23467
23467
 
@@ -24137,8 +24137,8 @@ var WidgetNotFound = function WidgetNotFound(_ref) {
24137
24137
  });
24138
24138
  };
24139
24139
 
24140
- function ownKeys$B(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; }
24141
- function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24140
+ function ownKeys$C(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; }
24141
+ function _objectSpread$C(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24142
24142
  function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
24143
24143
  function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function _isNativeReflectConstruct() { return !!t; })(); }
24144
24144
  var WidgetErrorBoundary = /*#__PURE__*/function (_Component) {
@@ -24269,7 +24269,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
24269
24269
 
24270
24270
  // Build widgetData for WidgetContext — hooks read from this
24271
24271
  var uuidString = getUUID(params.uuid);
24272
- var widgetData = _objectSpread$B(_objectSpread$B({}, params), {}, {
24272
+ var widgetData = _objectSpread$C(_objectSpread$C({}, params), {}, {
24273
24273
  uuidString: uuidString,
24274
24274
  providers: (config === null || config === void 0 ? void 0 : config.providers) || [],
24275
24275
  notifications: (config === null || config === void 0 ? void 0 : config.notifications) || []
@@ -24293,7 +24293,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
24293
24293
  widgetData: widgetData
24294
24294
  };
24295
24295
  var hasScheduledTasks = ((config === null || config === void 0 ? void 0 : config.scheduledTasks) || []).length > 0;
24296
- var widgetElement = children === null ? /*#__PURE__*/jsx(WidgetComponent, _objectSpread$B(_objectSpread$B(_objectSpread$B({
24296
+ var widgetElement = children === null ? /*#__PURE__*/jsx(WidgetComponent, _objectSpread$C(_objectSpread$C(_objectSpread$C({
24297
24297
  id: "widget-nokids-".concat(widgetKey),
24298
24298
  listen: function listen(listeners, handlers) {
24299
24299
  return helpers.listen(listeners, handlers);
@@ -24307,7 +24307,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
24307
24307
  backgroundColor: bgColor,
24308
24308
  widgetConfig: helpers.config(),
24309
24309
  widgetEventNames: helpers.events()
24310
- }), "widget-nokids-".concat(widgetKey)) : /*#__PURE__*/jsx(WidgetComponent, _objectSpread$B(_objectSpread$B(_objectSpread$B({
24310
+ }), "widget-nokids-".concat(widgetKey)) : /*#__PURE__*/jsx(WidgetComponent, _objectSpread$C(_objectSpread$C(_objectSpread$C({
24311
24311
  listen: function listen(listeners, handlers) {
24312
24312
  return helpers.listen(listeners, handlers);
24313
24313
  },
@@ -24507,11 +24507,11 @@ var ExternalWidget = function ExternalWidget(_ref) {
24507
24507
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
24508
24508
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
24509
24509
 
24510
- function _createForOfIteratorHelper$j(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$j(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; } } }; }
24511
- function _unsupportedIterableToArray$j(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$j(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$j(r, a) : void 0; } }
24512
- function _arrayLikeToArray$j(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; }
24513
- function ownKeys$A(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; }
24514
- function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24510
+ function _createForOfIteratorHelper$k(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$k(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; } } }; }
24511
+ function _unsupportedIterableToArray$k(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$k(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$k(r, a) : void 0; } }
24512
+ function _arrayLikeToArray$k(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; }
24513
+ function ownKeys$B(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; }
24514
+ function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24515
24515
  var DraggableDroppableCellBody = function DraggableDroppableCellBody(_ref) {
24516
24516
  var cellNumber = _ref.cellNumber,
24517
24517
  gridContainerId = _ref.gridContainerId,
@@ -24709,7 +24709,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
24709
24709
  var _ref5 = _slicedToArray(_ref4, 2),
24710
24710
  id = _ref5[0],
24711
24711
  provider = _ref5[1];
24712
- return _objectSpread$A({
24712
+ return _objectSpread$B({
24713
24713
  id: id
24714
24714
  }, provider);
24715
24715
  }) : [];
@@ -25084,7 +25084,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
25084
25084
  return selectable["delete"](cn);
25085
25085
  });
25086
25086
  var resolved = new Set();
25087
- var _iterator = _createForOfIteratorHelper$j(selectable),
25087
+ var _iterator = _createForOfIteratorHelper$k(selectable),
25088
25088
  _step;
25089
25089
  try {
25090
25090
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25753,7 +25753,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
25753
25753
  var widgetSpecificSelections = (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[id]) || {};
25754
25754
 
25755
25755
  // Add provider-related props from workspace
25756
- var itemWithProviders = _objectSpread$A(_objectSpread$A({}, item), {}, {
25756
+ var itemWithProviders = _objectSpread$B(_objectSpread$B({}, item), {}, {
25757
25757
  selectedProviders: widgetSpecificSelections,
25758
25758
  onProviderSelect: onProviderSelect
25759
25759
  });
@@ -27258,11 +27258,11 @@ function isWidgetResolvable(componentKey) {
27258
27258
  // isMinOrderForItem
27259
27259
  // }
27260
27260
 
27261
- 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; }
27262
- 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; }
27263
- function _createForOfIteratorHelper$i(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$i(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; } } }; }
27264
- function _unsupportedIterableToArray$i(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$i(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$i(r, a) : void 0; } }
27265
- function _arrayLikeToArray$i(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; }
27261
+ function ownKeys$A(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; }
27262
+ function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27263
+ function _createForOfIteratorHelper$j(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$j(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; } } }; }
27264
+ function _unsupportedIterableToArray$j(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$j(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$j(r, a) : void 0; } }
27265
+ function _arrayLikeToArray$j(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; }
27266
27266
  /**
27267
27267
  * The model for all layout components used primarily in the renderLayout method
27268
27268
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -27274,7 +27274,7 @@ function _arrayLikeToArray$i(r, a) { (null == a || a > r.length) && (a = r.lengt
27274
27274
  function sortObjectByKeys(obj) {
27275
27275
  var sortedKeys = Object.keys(obj).sort();
27276
27276
  var sortedObj = {};
27277
- var _iterator = _createForOfIteratorHelper$i(sortedKeys),
27277
+ var _iterator = _createForOfIteratorHelper$j(sortedKeys),
27278
27278
  _step;
27279
27279
  try {
27280
27280
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -27415,7 +27415,7 @@ var LayoutModel = function LayoutModel(layoutItem, workspaceLayout, dashboardId)
27415
27415
 
27416
27416
  // Merge user-entered config values (from EnhancedWidgetDropdown) into userPrefs
27417
27417
  if ("userConfigValues" in obj && obj.userConfigValues) {
27418
- layout.userPrefs = _objectSpread$z(_objectSpread$z({}, layout.userPrefs), obj.userConfigValues);
27418
+ layout.userPrefs = _objectSpread$A(_objectSpread$A({}, layout.userPrefs), obj.userConfigValues);
27419
27419
  }
27420
27420
 
27421
27421
  // Preserve provider selections for this widget
@@ -27546,6 +27546,822 @@ var SettingsModel = function SettingsModel() {
27546
27546
  return obj;
27547
27547
  };
27548
27548
 
27549
+ function _createForOfIteratorHelper$i(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$i(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; } } }; }
27550
+ function _unsupportedIterableToArray$i(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$i(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$i(r, a) : void 0; } }
27551
+ function _arrayLikeToArray$i(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; }
27552
+ /**
27553
+ * providerResolution.js
27554
+ *
27555
+ * Shared helpers for walking a workspace and figuring out which widgets
27556
+ * have required providers that are still unresolved after the 3-layer
27557
+ * resolution (widget → workspace → app-default → null). Used by:
27558
+ *
27559
+ * - DashboardConfigModal to render the Providers tab
27560
+ * - DashboardStage toolbar to show the unresolved-count badge
27561
+ *
27562
+ * Both places need the same answer, so keep the logic here to avoid drift
27563
+ * with the resolution inside `useMcpProvider` / `useWebSocketProvider`.
27564
+ */
27565
+
27566
+ /**
27567
+ * Resolve which provider name a given widget instance would bind to for
27568
+ * the given provider type. Mirrors the 3-layer chain in useMcpProvider
27569
+ * and useWebSocketProvider exactly:
27570
+ *
27571
+ * 1. widget-level override (layoutItem.selectedProviders[type])
27572
+ * 2. workspace-level binding (workspace.selectedProviders[id][type])
27573
+ * 3. app default (any provider of matching type flagged
27574
+ * `isDefaultForType` in appProviders)
27575
+ * 4. null (truly unresolved)
27576
+ */
27577
+ function resolveProviderName(_ref) {
27578
+ var _layoutItem$selectedP, _workspace$selectedPr;
27579
+ var providerType = _ref.providerType,
27580
+ layoutItem = _ref.layoutItem,
27581
+ widgetId = _ref.widgetId,
27582
+ workspace = _ref.workspace,
27583
+ appProviders = _ref.appProviders;
27584
+ // 1. Widget-level
27585
+ var widgetLevel = layoutItem === null || layoutItem === void 0 || (_layoutItem$selectedP = layoutItem.selectedProviders) === null || _layoutItem$selectedP === void 0 ? void 0 : _layoutItem$selectedP[providerType];
27586
+ if (widgetLevel) return widgetLevel;
27587
+
27588
+ // 2. Workspace-level
27589
+ var workspaceLevel = widgetId && (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 || (_workspace$selectedPr = _workspace$selectedPr[widgetId]) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[providerType]);
27590
+ if (workspaceLevel) return workspaceLevel;
27591
+
27592
+ // 3. App default — appProviders is either a map keyed by name or an
27593
+ // array. Support both because different callers shape it either way.
27594
+ if (appProviders) {
27595
+ if (Array.isArray(appProviders)) {
27596
+ var _iterator = _createForOfIteratorHelper$i(appProviders),
27597
+ _step;
27598
+ try {
27599
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
27600
+ var data = _step.value;
27601
+ if ((data === null || data === void 0 ? void 0 : data.type) === providerType && (data === null || data === void 0 ? void 0 : data.isDefaultForType) === true) {
27602
+ return data.name;
27603
+ }
27604
+ }
27605
+ } catch (err) {
27606
+ _iterator.e(err);
27607
+ } finally {
27608
+ _iterator.f();
27609
+ }
27610
+ } else if (_typeof(appProviders) === "object") {
27611
+ for (var _i = 0, _Object$entries = Object.entries(appProviders); _i < _Object$entries.length; _i++) {
27612
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
27613
+ name = _Object$entries$_i[0],
27614
+ _data = _Object$entries$_i[1];
27615
+ if ((_data === null || _data === void 0 ? void 0 : _data.type) === providerType && (_data === null || _data === void 0 ? void 0 : _data.isDefaultForType) === true) {
27616
+ return name;
27617
+ }
27618
+ }
27619
+ }
27620
+ }
27621
+ return null;
27622
+ }
27623
+
27624
+ /**
27625
+ * Walk every layout container in a workspace and yield each widget
27626
+ * instance with its concrete layout item. Handles the main layout,
27627
+ * per-page layouts, the sidebar, and nested LayoutGridContainers whose
27628
+ * children are stored on `items`/`layout`.
27629
+ *
27630
+ * Deduplicates by object identity AND by stable id so that shared
27631
+ * references across pages (or two structurally-distinct items that
27632
+ * carry the same uuidString / id, which is the wiring key) are
27633
+ * visited exactly once. Pipeline-style workspaces re-reference the
27634
+ * same widget objects across page layouts; without this dedupe the
27635
+ * Providers/Listeners tabs render one row per reference.
27636
+ */
27637
+ function forEachWidget(workspace, visit) {
27638
+ if (!workspace) return;
27639
+ var visitedObjects = new WeakSet();
27640
+ var visitedIds = new Set();
27641
+ var stableId = function stableId(item) {
27642
+ return (item === null || item === void 0 ? void 0 : item.uuidString) || (item === null || item === void 0 ? void 0 : item.uuid) || ((item === null || item === void 0 ? void 0 : item.component) != null && (item === null || item === void 0 ? void 0 : item.id) != null ? "".concat(item.component, "|").concat(item.id) : null);
27643
+ };
27644
+ var _walk = function walk(items) {
27645
+ if (!Array.isArray(items)) return;
27646
+ var _iterator2 = _createForOfIteratorHelper$i(items),
27647
+ _step2;
27648
+ try {
27649
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
27650
+ var item = _step2.value;
27651
+ if (!item || _typeof(item) !== "object") continue;
27652
+ // A "widget" is any layout item with a component name.
27653
+ // Containers can have both a component name AND nested items
27654
+ // (e.g. LayoutGridContainer), so still recurse.
27655
+ if (item.component) {
27656
+ var id = stableId(item);
27657
+ var alreadyByRef = visitedObjects.has(item);
27658
+ var alreadyById = id != null && visitedIds.has(id);
27659
+ if (!alreadyByRef && !alreadyById) {
27660
+ visitedObjects.add(item);
27661
+ if (id != null) visitedIds.add(id);
27662
+ visit(item);
27663
+ }
27664
+ }
27665
+ if (Array.isArray(item.items)) _walk(item.items);
27666
+ if (Array.isArray(item.layout)) _walk(item.layout);
27667
+ }
27668
+ } catch (err) {
27669
+ _iterator2.e(err);
27670
+ } finally {
27671
+ _iterator2.f();
27672
+ }
27673
+ };
27674
+ _walk(workspace.layout);
27675
+ if (Array.isArray(workspace.pages)) {
27676
+ var _iterator3 = _createForOfIteratorHelper$i(workspace.pages),
27677
+ _step3;
27678
+ try {
27679
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
27680
+ var page = _step3.value;
27681
+ _walk(page === null || page === void 0 ? void 0 : page.layout);
27682
+ }
27683
+ } catch (err) {
27684
+ _iterator3.e(err);
27685
+ } finally {
27686
+ _iterator3.f();
27687
+ }
27688
+ }
27689
+ _walk(workspace.sidebarLayout);
27690
+ }
27691
+
27692
+ /**
27693
+ * Compute the list of unresolved required providers across a workspace.
27694
+ *
27695
+ * @param {object} args
27696
+ * @param {object} args.workspace The workspace (with layout/pages/sidebarLayout/selectedProviders).
27697
+ * @param {object|Array} args.appProviders
27698
+ * Map keyed by provider name, or an array of provider objects. Each
27699
+ * entry has at least `{ type, isDefaultForType }`.
27700
+ * @param {(componentName: string) => Array<{type, required?, providerClass?}>} args.getWidgetRequirements
27701
+ * Returns the `providers: [...]` declaration from the component's
27702
+ * `.dash.js` (via `ComponentManager.componentMap()[name].providers`).
27703
+ *
27704
+ * @returns {Array<{ widgetId, component, providerType, providerClass, layoutItem }>}
27705
+ * One entry per (widget instance, required provider type) that lacks
27706
+ * a binding.
27707
+ */
27708
+ function getUnresolvedProviders(_ref2) {
27709
+ var workspace = _ref2.workspace,
27710
+ appProviders = _ref2.appProviders,
27711
+ getWidgetRequirements = _ref2.getWidgetRequirements;
27712
+ if (!workspace || typeof getWidgetRequirements !== "function") return [];
27713
+ var unresolved = [];
27714
+ forEachWidget(workspace, function (item) {
27715
+ var requirements = getWidgetRequirements(item.component) || [];
27716
+ if (!Array.isArray(requirements) || requirements.length === 0) return;
27717
+ var widgetId = item.uuidString || item.uuid || item.id || null;
27718
+ var _iterator4 = _createForOfIteratorHelper$i(requirements),
27719
+ _step4;
27720
+ try {
27721
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
27722
+ var req = _step4.value;
27723
+ if (!req || !req.type) continue;
27724
+ if (req.required === false) continue; // optional, skip
27725
+
27726
+ var name = resolveProviderName({
27727
+ providerType: req.type,
27728
+ layoutItem: item,
27729
+ widgetId: widgetId,
27730
+ workspace: workspace,
27731
+ appProviders: appProviders
27732
+ });
27733
+ if (!name) {
27734
+ unresolved.push({
27735
+ widgetId: widgetId,
27736
+ component: item.component,
27737
+ providerType: req.type,
27738
+ providerClass: req.providerClass || null,
27739
+ layoutItem: item
27740
+ });
27741
+ }
27742
+ }
27743
+ } catch (err) {
27744
+ _iterator4.e(err);
27745
+ } finally {
27746
+ _iterator4.f();
27747
+ }
27748
+ });
27749
+ return unresolved;
27750
+ }
27751
+
27752
+ /**
27753
+ * Group an unresolved-provider list (or any `{widget, providerType}` list)
27754
+ * by provider type, so the Providers tab can render one row per unique
27755
+ * type with N widgets beneath.
27756
+ */
27757
+ function groupByProviderType(unresolved) {
27758
+ var byType = new Map();
27759
+ var _iterator5 = _createForOfIteratorHelper$i(unresolved || []),
27760
+ _step5;
27761
+ try {
27762
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
27763
+ var u = _step5.value;
27764
+ if (!(u !== null && u !== void 0 && u.providerType)) continue;
27765
+ if (!byType.has(u.providerType)) byType.set(u.providerType, []);
27766
+ byType.get(u.providerType).push(u);
27767
+ }
27768
+ } catch (err) {
27769
+ _iterator5.e(err);
27770
+ } finally {
27771
+ _iterator5.f();
27772
+ }
27773
+ return byType;
27774
+ }
27775
+
27776
+ /**
27777
+ * Summarize every widget in the workspace that requires ANY provider,
27778
+ * regardless of whether it's already resolved. Drives the Providers tab's
27779
+ * "show per-widget overrides" expansion — the modal lists all widgets so
27780
+ * the user can change an explicit override even for types that are
27781
+ * already resolved via the app default.
27782
+ */
27783
+ function getAllProviderBindings(_ref3) {
27784
+ var workspace = _ref3.workspace,
27785
+ appProviders = _ref3.appProviders,
27786
+ getWidgetRequirements = _ref3.getWidgetRequirements;
27787
+ if (!workspace || typeof getWidgetRequirements !== "function") return [];
27788
+ var bindings = [];
27789
+ forEachWidget(workspace, function (item) {
27790
+ var requirements = getWidgetRequirements(item.component) || [];
27791
+ if (!Array.isArray(requirements) || requirements.length === 0) return;
27792
+ var widgetId = item.uuidString || item.uuid || item.id || null;
27793
+ var _iterator6 = _createForOfIteratorHelper$i(requirements),
27794
+ _step6;
27795
+ try {
27796
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
27797
+ var req = _step6.value;
27798
+ if (!req || !req.type) continue;
27799
+ var name = resolveProviderName({
27800
+ providerType: req.type,
27801
+ layoutItem: item,
27802
+ widgetId: widgetId,
27803
+ workspace: workspace,
27804
+ appProviders: appProviders
27805
+ });
27806
+ bindings.push({
27807
+ widgetId: widgetId,
27808
+ component: item.component,
27809
+ providerType: req.type,
27810
+ providerClass: req.providerClass || null,
27811
+ required: req.required !== false,
27812
+ resolvedProviderName: name,
27813
+ layoutItem: item
27814
+ });
27815
+ }
27816
+ } catch (err) {
27817
+ _iterator6.e(err);
27818
+ } finally {
27819
+ _iterator6.f();
27820
+ }
27821
+ });
27822
+ return bindings;
27823
+ }
27824
+
27825
+ 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; }
27826
+ 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; }
27827
+ function _createForOfIteratorHelper$h(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$h(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; } } }; }
27828
+ function _unsupportedIterableToArray$h(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$h(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$h(r, a) : void 0; } }
27829
+ function _arrayLikeToArray$h(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; }
27830
+ var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
27831
+
27832
+ /** Parse "Component[itemId].event" → { component, itemId, event }. */
27833
+ function parseEventString(eventString) {
27834
+ if (typeof eventString !== "string") return null;
27835
+ var m = eventString.match(EVENT_STRING_RE);
27836
+ if (!m) return null;
27837
+ return {
27838
+ component: m[1],
27839
+ itemId: m[2],
27840
+ event: m[3]
27841
+ };
27842
+ }
27843
+
27844
+ /** Build an event string in the canonical runtime format. */
27845
+ function formatEventString(component, itemId, event) {
27846
+ return "".concat(component, "[").concat(itemId, "].").concat(event);
27847
+ }
27848
+
27849
+ /**
27850
+ * Get a stable id for a layout item. Layout items historically used
27851
+ * numeric `id`; some newer flows also carry `uuidString`/`uuid`. The
27852
+ * runtime event-string format uses whichever is `item.id`, so we
27853
+ * default to that and fall back to the others for resilience.
27854
+ */
27855
+ function itemIdOf(item) {
27856
+ if (item == null) return null;
27857
+ if (item.id !== undefined && item.id !== null) return String(item.id);
27858
+ if (item.uuidString) return item.uuidString;
27859
+ if (item.uuid) return item.uuid;
27860
+ return null;
27861
+ }
27862
+
27863
+ /**
27864
+ * Best-effort human label for a layout item: explicit title, then
27865
+ * widget config display name, then component name + short id.
27866
+ */
27867
+ function labelFor(item, getWidgetConfig) {
27868
+ var _item$userPrefs, _item$userConfig;
27869
+ var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || null;
27870
+ var explicit = (item === null || item === void 0 || (_item$userPrefs = item.userPrefs) === null || _item$userPrefs === void 0 ? void 0 : _item$userPrefs.title) || (item === null || item === void 0 || (_item$userConfig = item.userConfig) === null || _item$userConfig === void 0 ? void 0 : _item$userConfig.title);
27871
+ if (explicit) return explicit;
27872
+ if (cfg !== null && cfg !== void 0 && cfg.displayName) return cfg.displayName;
27873
+ var id = itemIdOf(item);
27874
+ return "".concat(item.component || "widget").concat(id ? "[".concat(String(id).slice(0, 6), "]") : "");
27875
+ }
27876
+
27877
+ /**
27878
+ * Read the events/eventHandlers metadata for a widget. Items can carry
27879
+ * the arrays inline (older pattern where they got cached onto the
27880
+ * layout item); the current component config carries them via the
27881
+ * ComponentManager catalog. We UNION both so we don't flag a binding
27882
+ * as orphaned just because an inline cache is stale — if the current
27883
+ * widget code declares the event/handler, the binding is valid.
27884
+ */
27885
+ function eventsOf(item, getWidgetConfig) {
27886
+ var inline = Array.isArray(item.events) ? item.events : [];
27887
+ var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
27888
+ var fromCfg = Array.isArray(cfg.events) ? cfg.events : [];
27889
+ return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
27890
+ }
27891
+ function eventHandlersOf(item, getWidgetConfig) {
27892
+ var inline = Array.isArray(item.eventHandlers) ? item.eventHandlers : [];
27893
+ var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
27894
+ var fromCfg = Array.isArray(cfg.eventHandlers) ? cfg.eventHandlers : [];
27895
+ return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
27896
+ }
27897
+
27898
+ /**
27899
+ * Every widget instance in the workspace that emits at least one event.
27900
+ * Deduplicated by `${component}|${itemId}` — the same compound key that
27901
+ * event strings use at runtime, so any "duplicate" in the tree (same
27902
+ * widget referenced across pages) resolves to the same wiring target.
27903
+ * @returns {Array<{ itemId, component, label, events: string[], key: string }>}
27904
+ */
27905
+ function getEmitters(workspace, getWidgetConfig) {
27906
+ var byKey = new Map();
27907
+ forEachWidget(workspace, function (item) {
27908
+ var events = eventsOf(item, getWidgetConfig);
27909
+ if (events.length === 0) return;
27910
+ var itemId = itemIdOf(item);
27911
+ if (itemId == null) return;
27912
+ var key = "".concat(item.component, "|").concat(itemId);
27913
+ if (byKey.has(key)) return;
27914
+ byKey.set(key, {
27915
+ key: key,
27916
+ itemId: itemId,
27917
+ component: item.component,
27918
+ label: labelFor(item, getWidgetConfig),
27919
+ events: events
27920
+ });
27921
+ });
27922
+ return Array.from(byKey.values());
27923
+ }
27924
+
27925
+ /**
27926
+ * Every widget instance in the workspace that accepts at least one
27927
+ * handler. Used to populate the receiver dropdown. Deduplicated by
27928
+ * `${component}|${itemId}` (see getEmitters).
27929
+ * @returns {Array<{ itemId, component, label, eventHandlers: string[], listeners: object, key: string }>}
27930
+ */
27931
+ function getReceivers(workspace, getWidgetConfig) {
27932
+ var byKey = new Map();
27933
+ forEachWidget(workspace, function (item) {
27934
+ var handlers = eventHandlersOf(item, getWidgetConfig);
27935
+ if (handlers.length === 0) return;
27936
+ var itemId = itemIdOf(item);
27937
+ if (itemId == null) return;
27938
+ var key = "".concat(item.component, "|").concat(itemId);
27939
+ if (byKey.has(key)) return;
27940
+ byKey.set(key, {
27941
+ key: key,
27942
+ itemId: itemId,
27943
+ component: item.component,
27944
+ label: labelFor(item, getWidgetConfig),
27945
+ eventHandlers: handlers,
27946
+ listeners: item.listeners || {}
27947
+ });
27948
+ });
27949
+ return Array.from(byKey.values());
27950
+ }
27951
+
27952
+ /**
27953
+ * Flatten every listener binding in the workspace into a list of
27954
+ * { receiverItemId, receiverComponent, handlerName, sourceComponent,
27955
+ * sourceItemId, eventName, raw } tuples. `raw` is the original
27956
+ * event string for round-trip fidelity on remove.
27957
+ */
27958
+ function getCurrentWiring(workspace) {
27959
+ var wiring = [];
27960
+ forEachWidget(workspace, function (item) {
27961
+ var receiverItemId = itemIdOf(item);
27962
+ if (receiverItemId == null) return;
27963
+ var listeners = item.listeners;
27964
+ if (!listeners || _typeof(listeners) !== "object") return;
27965
+ for (var _i = 0, _Object$entries = Object.entries(listeners); _i < _Object$entries.length; _i++) {
27966
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
27967
+ handlerName = _Object$entries$_i[0],
27968
+ eventList = _Object$entries$_i[1];
27969
+ // Live format is array; defensive guard for legacy object
27970
+ // form (a single source widget keyed under the handler).
27971
+ var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
27972
+ var _iterator = _createForOfIteratorHelper$h(events),
27973
+ _step;
27974
+ try {
27975
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
27976
+ var raw = _step.value;
27977
+ var parsed = parseEventString(raw);
27978
+ if (!parsed) continue;
27979
+ wiring.push({
27980
+ receiverItemId: receiverItemId,
27981
+ receiverComponent: item.component,
27982
+ handlerName: handlerName,
27983
+ sourceComponent: parsed.component,
27984
+ sourceItemId: parsed.itemId,
27985
+ eventName: parsed.event,
27986
+ raw: raw
27987
+ });
27988
+ }
27989
+ } catch (err) {
27990
+ _iterator.e(err);
27991
+ } finally {
27992
+ _iterator.f();
27993
+ }
27994
+ }
27995
+ });
27996
+ return wiring;
27997
+ }
27998
+
27999
+ /**
28000
+ * Detect listener bindings that are no longer valid: the source widget
28001
+ * doesn't exist in the workspace anymore, or the source widget doesn't
28002
+ * declare the event, or the receiver doesn't declare the handler.
28003
+ * Each entry includes a `reason` so the modal can show a sensible
28004
+ * message.
28005
+ */
28006
+ function getOrphanedListeners(workspace, getWidgetConfig) {
28007
+ var wiring = getCurrentWiring(workspace);
28008
+ if (wiring.length === 0) return [];
28009
+
28010
+ // Build two lookups:
28011
+ // byCompositeKey: `${component}|${itemId}` → widget meta (primary)
28012
+ // byItemId: `${itemId}` → widget meta (fallback,
28013
+ // used only for the "source-missing" check where
28014
+ // the wiring's component can't be trusted yet)
28015
+ // The composite key matches how the runtime event-string
28016
+ // (`Component[itemId].event`) identifies a widget, so orphan
28017
+ // decisions line up with what actually fires at runtime.
28018
+ var byCompositeKey = new Map();
28019
+ var byItemId = new Map();
28020
+ forEachWidget(workspace, function (item) {
28021
+ var id = itemIdOf(item);
28022
+ if (id == null) return;
28023
+ var meta = {
28024
+ component: item.component,
28025
+ events: eventsOf(item, getWidgetConfig),
28026
+ eventHandlers: eventHandlersOf(item, getWidgetConfig)
28027
+ };
28028
+ byCompositeKey.set("".concat(item.component, "|").concat(id), meta);
28029
+ // First-seen wins on numeric-id collisions; good enough for the
28030
+ // "does any widget with this id exist?" fallback.
28031
+ if (!byItemId.has(id)) byItemId.set(id, meta);
28032
+ });
28033
+ var orphans = [];
28034
+ var _iterator2 = _createForOfIteratorHelper$h(wiring),
28035
+ _step2;
28036
+ try {
28037
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
28038
+ var w = _step2.value;
28039
+ var srcKey = "".concat(w.sourceComponent, "|").concat(w.sourceItemId);
28040
+ var src = byCompositeKey.get(srcKey);
28041
+ if (!src) {
28042
+ // No (component, id) match. If some OTHER widget still owns
28043
+ // this id, the source component changed; otherwise it's truly
28044
+ // missing. Preserves the user's ability to see whether a
28045
+ // rename happened vs. a delete.
28046
+ var fallback = byItemId.get(String(w.sourceItemId));
28047
+ orphans.push(_objectSpread$z(_objectSpread$z({}, w), {}, {
28048
+ reason: fallback ? "source-component-mismatch" : "source-missing"
28049
+ }));
28050
+ continue;
28051
+ }
28052
+ if (!src.events.includes(w.eventName)) {
28053
+ orphans.push(_objectSpread$z(_objectSpread$z({}, w), {}, {
28054
+ reason: "event-not-emitted"
28055
+ }));
28056
+ continue;
28057
+ }
28058
+ var receiverKey = "".concat(w.receiverComponent, "|").concat(w.receiverItemId);
28059
+ var receiver = byCompositeKey.get(receiverKey);
28060
+ if (receiver && !receiver.eventHandlers.includes(w.handlerName)) {
28061
+ orphans.push(_objectSpread$z(_objectSpread$z({}, w), {}, {
28062
+ reason: "handler-not-declared"
28063
+ }));
28064
+ }
28065
+ }
28066
+ } catch (err) {
28067
+ _iterator2.e(err);
28068
+ } finally {
28069
+ _iterator2.f();
28070
+ }
28071
+ return orphans;
28072
+ }
28073
+
28074
+ /**
28075
+ * Mutate a workspace tree in place, removing listener bindings whose
28076
+ * source widget is not present in the workspace. Pure: doesn't need
28077
+ * ComponentManager, so it's safe to call from WorkspaceModel during
28078
+ * load — the workspace's own tree is the only source of truth.
28079
+ *
28080
+ * Handles the four cases producing a "source-missing" orphan:
28081
+ * - the emitter widget was deleted
28082
+ * - the emitter widget's id now belongs to a different component
28083
+ * (stored binding has stale component name)
28084
+ * - the source string failed to parse (legacy/garbage data)
28085
+ *
28086
+ * Leaves "event-not-emitted" / "handler-not-declared" cases untouched
28087
+ * because they require the current widget catalog to decide — those
28088
+ * are handled at runtime with full ComponentManager access.
28089
+ *
28090
+ * @returns {number} count of bindings removed (for logging/diagnostics)
28091
+ */
28092
+ function pruneDeadListenerReferences(workspace) {
28093
+ if (!workspace) return 0;
28094
+
28095
+ // Build the set of live widgets in the tree, keyed by the same
28096
+ // `${component}|${itemId}` the runtime uses to resolve events.
28097
+ var liveKeys = new Set();
28098
+ var _walkForLive = function walkForLive(items) {
28099
+ if (!Array.isArray(items)) return;
28100
+ var _iterator3 = _createForOfIteratorHelper$h(items),
28101
+ _step3;
28102
+ try {
28103
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
28104
+ var item = _step3.value;
28105
+ if (!item || _typeof(item) !== "object") continue;
28106
+ if (item.component) {
28107
+ var id = itemIdOf(item);
28108
+ if (id != null) liveKeys.add("".concat(item.component, "|").concat(id));
28109
+ }
28110
+ if (Array.isArray(item.items)) _walkForLive(item.items);
28111
+ if (Array.isArray(item.layout)) _walkForLive(item.layout);
28112
+ }
28113
+ } catch (err) {
28114
+ _iterator3.e(err);
28115
+ } finally {
28116
+ _iterator3.f();
28117
+ }
28118
+ };
28119
+ _walkForLive(workspace.layout);
28120
+ if (Array.isArray(workspace.pages)) {
28121
+ var _iterator4 = _createForOfIteratorHelper$h(workspace.pages),
28122
+ _step4;
28123
+ try {
28124
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
28125
+ var page = _step4.value;
28126
+ _walkForLive(page === null || page === void 0 ? void 0 : page.layout);
28127
+ }
28128
+ } catch (err) {
28129
+ _iterator4.e(err);
28130
+ } finally {
28131
+ _iterator4.f();
28132
+ }
28133
+ }
28134
+ _walkForLive(workspace.sidebarLayout);
28135
+ var removed = 0;
28136
+ var _pruneListeners = function pruneListeners(items) {
28137
+ if (!Array.isArray(items)) return;
28138
+ var _iterator5 = _createForOfIteratorHelper$h(items),
28139
+ _step5;
28140
+ try {
28141
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
28142
+ var item = _step5.value;
28143
+ if (!item || _typeof(item) !== "object") continue;
28144
+ if (item.listeners && _typeof(item.listeners) === "object") {
28145
+ for (var _i2 = 0, _Object$keys = Object.keys(item.listeners); _i2 < _Object$keys.length; _i2++) {
28146
+ var handler = _Object$keys[_i2];
28147
+ var events = item.listeners[handler];
28148
+ if (!Array.isArray(events)) continue;
28149
+ var kept = [];
28150
+ var _iterator6 = _createForOfIteratorHelper$h(events),
28151
+ _step6;
28152
+ try {
28153
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
28154
+ var raw = _step6.value;
28155
+ var parsed = parseEventString(raw);
28156
+ if (parsed && liveKeys.has("".concat(parsed.component, "|").concat(parsed.itemId))) {
28157
+ kept.push(raw);
28158
+ } else {
28159
+ removed += 1;
28160
+ }
28161
+ }
28162
+ } catch (err) {
28163
+ _iterator6.e(err);
28164
+ } finally {
28165
+ _iterator6.f();
28166
+ }
28167
+ if (kept.length === 0) {
28168
+ delete item.listeners[handler];
28169
+ } else if (kept.length !== events.length) {
28170
+ item.listeners[handler] = kept;
28171
+ }
28172
+ }
28173
+ }
28174
+ if (Array.isArray(item.items)) _pruneListeners(item.items);
28175
+ if (Array.isArray(item.layout)) _pruneListeners(item.layout);
28176
+ }
28177
+ } catch (err) {
28178
+ _iterator5.e(err);
28179
+ } finally {
28180
+ _iterator5.f();
28181
+ }
28182
+ };
28183
+ _pruneListeners(workspace.layout);
28184
+ if (Array.isArray(workspace.pages)) {
28185
+ var _iterator7 = _createForOfIteratorHelper$h(workspace.pages),
28186
+ _step7;
28187
+ try {
28188
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
28189
+ var _page = _step7.value;
28190
+ _pruneListeners(_page === null || _page === void 0 ? void 0 : _page.layout);
28191
+ }
28192
+ } catch (err) {
28193
+ _iterator7.e(err);
28194
+ } finally {
28195
+ _iterator7.f();
28196
+ }
28197
+ }
28198
+ _pruneListeners(workspace.sidebarLayout);
28199
+ return removed;
28200
+ }
28201
+
28202
+ /**
28203
+ * Apply a staged delta to a workspace's listener bindings and return a
28204
+ * NEW workspace object (deep-cloned along the modified path).
28205
+ *
28206
+ * `adds` / `removes` are arrays of
28207
+ * { receiverItemId, handlerName, sourceComponent, sourceItemId, eventName }
28208
+ *
28209
+ * Removes may also pass `raw` (the exact pre-existing event string) for
28210
+ * a precise match; otherwise we match on the canonical formatted form.
28211
+ */
28212
+ function applyWiringChanges(workspace, _ref) {
28213
+ var _ref$adds = _ref.adds,
28214
+ adds = _ref$adds === void 0 ? [] : _ref$adds,
28215
+ _ref$removes = _ref.removes,
28216
+ removes = _ref$removes === void 0 ? [] : _ref$removes;
28217
+ if (!workspace) return workspace;
28218
+ if (adds.length === 0 && removes.length === 0) return workspace;
28219
+
28220
+ // Group changes by receiver for cheap per-item updates.
28221
+ var byReceiver = new Map();
28222
+ var ensure = function ensure(id) {
28223
+ if (!byReceiver.has(id)) byReceiver.set(id, {
28224
+ adds: [],
28225
+ removes: []
28226
+ });
28227
+ return byReceiver.get(id);
28228
+ };
28229
+ var _iterator8 = _createForOfIteratorHelper$h(adds),
28230
+ _step8;
28231
+ try {
28232
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
28233
+ var a = _step8.value;
28234
+ if (!a.receiverItemId) continue;
28235
+ ensure(String(a.receiverItemId)).adds.push(a);
28236
+ }
28237
+ } catch (err) {
28238
+ _iterator8.e(err);
28239
+ } finally {
28240
+ _iterator8.f();
28241
+ }
28242
+ var _iterator9 = _createForOfIteratorHelper$h(removes),
28243
+ _step9;
28244
+ try {
28245
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
28246
+ var r = _step9.value;
28247
+ if (!r.receiverItemId) continue;
28248
+ ensure(String(r.receiverItemId)).removes.push(r);
28249
+ }
28250
+
28251
+ // Walk the tree and rebuild listeners on every touched item. We do
28252
+ // shallow clones along the path so React change detection is
28253
+ // reliable — but the tree shape is preserved.
28254
+ } catch (err) {
28255
+ _iterator9.e(err);
28256
+ } finally {
28257
+ _iterator9.f();
28258
+ }
28259
+ var cloneList = function cloneList(items) {
28260
+ return Array.isArray(items) ? items.map(function (item) {
28261
+ return transform(item);
28262
+ }) : items;
28263
+ };
28264
+ var transform = function transform(item) {
28265
+ if (!item || _typeof(item) !== "object") return item;
28266
+ var next = item;
28267
+ var id = itemIdOf(item);
28268
+ var change = id != null ? byReceiver.get(String(id)) : null;
28269
+ if (change) {
28270
+ var newListeners = applyToItem(item.listeners || {}, change);
28271
+ next = _objectSpread$z(_objectSpread$z({}, next), {}, {
28272
+ listeners: newListeners
28273
+ });
28274
+ }
28275
+ if (Array.isArray(next.items)) {
28276
+ next = _objectSpread$z(_objectSpread$z({}, next), {}, {
28277
+ items: cloneList(next.items)
28278
+ });
28279
+ }
28280
+ if (Array.isArray(next.layout)) {
28281
+ next = _objectSpread$z(_objectSpread$z({}, next), {}, {
28282
+ layout: cloneList(next.layout)
28283
+ });
28284
+ }
28285
+ return next;
28286
+ };
28287
+ var updatedWs = _objectSpread$z({}, workspace);
28288
+ if (Array.isArray(workspace.layout)) {
28289
+ updatedWs.layout = cloneList(workspace.layout);
28290
+ }
28291
+ if (Array.isArray(workspace.pages)) {
28292
+ updatedWs.pages = workspace.pages.map(function (page) {
28293
+ return _objectSpread$z(_objectSpread$z({}, page), {}, {
28294
+ layout: cloneList(page.layout)
28295
+ });
28296
+ });
28297
+ }
28298
+ if (Array.isArray(workspace.sidebarLayout)) {
28299
+ updatedWs.sidebarLayout = cloneList(workspace.sidebarLayout);
28300
+ }
28301
+ return updatedWs;
28302
+ }
28303
+ function applyToItem(listeners, _ref2) {
28304
+ var adds = _ref2.adds,
28305
+ removes = _ref2.removes;
28306
+ // Deep enough clone for handler arrays.
28307
+ var next = {};
28308
+ for (var _i3 = 0, _Object$entries2 = Object.entries(listeners); _i3 < _Object$entries2.length; _i3++) {
28309
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
28310
+ k = _Object$entries2$_i[0],
28311
+ v = _Object$entries2$_i[1];
28312
+ next[k] = Array.isArray(v) ? _toConsumableArray(v) : v;
28313
+ }
28314
+
28315
+ // Removes first so a re-add (rare) lands.
28316
+ var _iterator0 = _createForOfIteratorHelper$h(removes),
28317
+ _step0;
28318
+ try {
28319
+ var _loop = function _loop() {
28320
+ var r = _step0.value;
28321
+ var target = r.handlerName;
28322
+ if (!target) return 0; // continue
28323
+ var events = next[target];
28324
+ if (!Array.isArray(events)) return 0; // continue
28325
+ var eventStr = r.raw || formatEventString(r.sourceComponent, r.sourceItemId, r.eventName);
28326
+ var filtered = events.filter(function (e) {
28327
+ return e !== eventStr;
28328
+ });
28329
+ if (filtered.length === 0) {
28330
+ delete next[target];
28331
+ } else {
28332
+ next[target] = filtered;
28333
+ }
28334
+ },
28335
+ _ret;
28336
+ for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
28337
+ _ret = _loop();
28338
+ if (_ret === 0) continue;
28339
+ }
28340
+ } catch (err) {
28341
+ _iterator0.e(err);
28342
+ } finally {
28343
+ _iterator0.f();
28344
+ }
28345
+ var _iterator1 = _createForOfIteratorHelper$h(adds),
28346
+ _step1;
28347
+ try {
28348
+ for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
28349
+ var a = _step1.value;
28350
+ var target = a.handlerName;
28351
+ if (!target) continue;
28352
+ var eventStr = formatEventString(a.sourceComponent, a.sourceItemId, a.eventName);
28353
+ var existing = Array.isArray(next[target]) ? next[target] : [];
28354
+ if (existing.includes(eventStr)) continue;
28355
+ next[target] = [].concat(_toConsumableArray(existing), [eventStr]);
28356
+ }
28357
+ } catch (err) {
28358
+ _iterator1.e(err);
28359
+ } finally {
28360
+ _iterator1.f();
28361
+ }
28362
+ return next;
28363
+ }
28364
+
27549
28365
  /**
27550
28366
  * Default layout for a brand-new workspace: a single 1x1 grid container
27551
28367
  * with one empty cell. Mirrors DashboardModel._initializeLayout().
@@ -27673,6 +28489,13 @@ var WorkspaceModel = function WorkspaceModel(workspaceItem) {
27673
28489
  workspace.menuId = "menuId" in obj ? obj["menuId"] : 1;
27674
28490
  workspace.selectedProviders = "selectedProviders" in obj ? obj["selectedProviders"] : {};
27675
28491
  workspace.themeKey = "themeKey" in obj ? obj["themeKey"] : null;
28492
+
28493
+ // Strip any listener bindings whose source widget is no longer in
28494
+ // the tree. These "orphan" bindings are dead — they don't match any
28495
+ // live publisher and never fire — so they're safe to remove at load
28496
+ // time before the renderer wires up subscriptions. Keeps stored
28497
+ // workspaces self-consistent without the user having to do anything.
28498
+ pruneDeadListenerReferences(workspace);
27676
28499
  return sanitizeWorkspaceObject(workspace);
27677
28500
  // return workspace;
27678
28501
  };
@@ -28009,9 +28832,9 @@ var MenuItemModel = function MenuItemModel() {
28009
28832
 
28010
28833
  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; }
28011
28834
  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; }
28012
- function _createForOfIteratorHelper$h(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$h(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; } } }; }
28013
- function _unsupportedIterableToArray$h(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$h(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$h(r, a) : void 0; } }
28014
- function _arrayLikeToArray$h(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; }
28835
+ function _createForOfIteratorHelper$g(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$g(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; } } }; }
28836
+ function _unsupportedIterableToArray$g(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$g(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$g(r, a) : void 0; } }
28837
+ function _arrayLikeToArray$g(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; }
28015
28838
  /**
28016
28839
  * A Model for a Workspace (Dashboard)
28017
28840
  * The Dashboard in this instance is the entire Layout inclusive of the workspaces and widgets
@@ -28072,12 +28895,18 @@ var DashboardModel = /*#__PURE__*/function () {
28072
28895
  }
28073
28896
  obj = null;
28074
28897
 
28898
+ // Strip any listener bindings whose source widget is no longer in
28899
+ // the tree — dead bindings never fire and just clutter the stored
28900
+ // workspace. Safe at model-init time because it's purely tree-local
28901
+ // (doesn't need ComponentManager).
28902
+ pruneDeadListenerReferences(this);
28903
+
28075
28904
  // Normalize all grids on load to repair any persisted corruption
28076
28905
  this._normalizeAllGrids();
28077
28906
 
28078
28907
  // Also normalize grids within pages
28079
28908
  if (this.pages.length > 0) {
28080
- var _iterator = _createForOfIteratorHelper$h(this.pages),
28909
+ var _iterator = _createForOfIteratorHelper$g(this.pages),
28081
28910
  _step;
28082
28911
  try {
28083
28912
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -30053,7 +30882,7 @@ var DashboardModel = /*#__PURE__*/function () {
30053
30882
  try {
30054
30883
  // Collect all item IDs actively referenced by grid cells
30055
30884
  var activeItemIds = new Set();
30056
- var _iterator2 = _createForOfIteratorHelper$h(this.layout),
30885
+ var _iterator2 = _createForOfIteratorHelper$g(this.layout),
30057
30886
  _step2;
30058
30887
  try {
30059
30888
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -30093,7 +30922,7 @@ var DashboardModel = /*#__PURE__*/function () {
30093
30922
  });
30094
30923
 
30095
30924
  // Clean listener references on remaining items for each removed orphan
30096
- var _iterator3 = _createForOfIteratorHelper$h(orphanedIds),
30925
+ var _iterator3 = _createForOfIteratorHelper$g(orphanedIds),
30097
30926
  _step3;
30098
30927
  try {
30099
30928
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -30752,9 +31581,9 @@ var useDashboard = function useDashboard() {
30752
31581
  });
30753
31582
  };
30754
31583
 
30755
- function _createForOfIteratorHelper$g(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$g(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; } } }; }
30756
- function _unsupportedIterableToArray$g(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$g(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$g(r, a) : void 0; } }
30757
- function _arrayLikeToArray$g(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; }
31584
+ function _createForOfIteratorHelper$f(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$f(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; } } }; }
31585
+ function _unsupportedIterableToArray$f(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$f(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$f(r, a) : void 0; } }
31586
+ function _arrayLikeToArray$f(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; }
30758
31587
 
30759
31588
  /**
30760
31589
  * useWidgetProviders Hook
@@ -30805,7 +31634,7 @@ var useWidgetProviders = function useWidgetProviders() {
30805
31634
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
30806
31635
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
30807
31636
  var providers = {};
30808
- var _iterator = _createForOfIteratorHelper$g(providerDeclarations),
31637
+ var _iterator = _createForOfIteratorHelper$f(providerDeclarations),
30809
31638
  _step;
30810
31639
  try {
30811
31640
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -31560,9 +32389,9 @@ var useNotifications = function useNotifications() {
31560
32389
  };
31561
32390
  };
31562
32391
 
31563
- function _createForOfIteratorHelper$f(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$f(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; } } }; }
31564
- function _unsupportedIterableToArray$f(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$f(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$f(r, a) : void 0; } }
31565
- function _arrayLikeToArray$f(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; }
32392
+ function _createForOfIteratorHelper$e(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$e(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; } } }; }
32393
+ function _unsupportedIterableToArray$e(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$e(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$e(r, a) : void 0; } }
32394
+ function _arrayLikeToArray$e(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; }
31566
32395
 
31567
32396
  /**
31568
32397
  * useScheduler Hook
@@ -31635,7 +32464,7 @@ var useScheduler = function useScheduler() {
31635
32464
  if (pending && pending.length > 0) {
31636
32465
  setPendingResults(pending);
31637
32466
  // Call handlers for each pending result
31638
- var _iterator = _createForOfIteratorHelper$f(pending),
32467
+ var _iterator = _createForOfIteratorHelper$e(pending),
31639
32468
  _step;
31640
32469
  try {
31641
32470
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -34662,9 +35491,9 @@ function loadWidgetBundle(source, widgetName) {
34662
35491
  };
34663
35492
  }
34664
35493
 
34665
- function _createForOfIteratorHelper$e(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$e(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; } } }; }
34666
- function _unsupportedIterableToArray$e(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$e(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$e(r, a) : void 0; } }
34667
- function _arrayLikeToArray$e(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; }
35494
+ function _createForOfIteratorHelper$d(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$d(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; } } }; }
35495
+ function _unsupportedIterableToArray$d(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$d(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$d(r, a) : void 0; } }
35496
+ function _arrayLikeToArray$d(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; }
34668
35497
  /**
34669
35498
  * Validation utilities for grid-first dashboard architecture
34670
35499
  *
@@ -34903,7 +35732,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
34903
35732
 
34904
35733
  // Validate each cell
34905
35734
  var cells = [];
34906
- var _iterator = _createForOfIteratorHelper$e(cellNumbers),
35735
+ var _iterator = _createForOfIteratorHelper$d(cellNumbers),
34907
35736
  _step;
34908
35737
  try {
34909
35738
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -35251,9 +36080,9 @@ var HARMONY_STRATEGIES = [{
35251
36080
  label: "Custom"
35252
36081
  }];
35253
36082
 
35254
- function _createForOfIteratorHelper$d(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$d(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; } } }; }
35255
- function _unsupportedIterableToArray$d(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$d(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$d(r, a) : void 0; } }
35256
- function _arrayLikeToArray$d(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; }
36083
+ function _createForOfIteratorHelper$c(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$c(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; } } }; }
36084
+ function _unsupportedIterableToArray$c(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$c(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$c(r, a) : void 0; } }
36085
+ function _arrayLikeToArray$c(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; }
35257
36086
  /**
35258
36087
  * markdownFormParser.js
35259
36088
  *
@@ -35300,7 +36129,7 @@ function detectColumnType(header, cellValues) {
35300
36129
  }
35301
36130
 
35302
36131
  // Check if any cell has an enum pattern (template placeholders)
35303
- var _iterator = _createForOfIteratorHelper$d(cellValues),
36132
+ var _iterator = _createForOfIteratorHelper$c(cellValues),
35304
36133
  _step;
35305
36134
  try {
35306
36135
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -35309,7 +36138,7 @@ function detectColumnType(header, cellValues) {
35309
36138
  if (options) {
35310
36139
  // Include all unique existing cell values as valid options
35311
36140
  var allOptions = new Set(options);
35312
- var _iterator2 = _createForOfIteratorHelper$d(cellValues),
36141
+ var _iterator2 = _createForOfIteratorHelper$c(cellValues),
35313
36142
  _step2;
35314
36143
  try {
35315
36144
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -35519,7 +36348,7 @@ function parse(markdown) {
35519
36348
  */
35520
36349
  function serialize(blocks) {
35521
36350
  var parts = [];
35522
- var _iterator3 = _createForOfIteratorHelper$d(blocks),
36351
+ var _iterator3 = _createForOfIteratorHelper$c(blocks),
35523
36352
  _step3;
35524
36353
  try {
35525
36354
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -35534,7 +36363,7 @@ function serialize(blocks) {
35534
36363
  parts.push("| " + block.columns.map(function () {
35535
36364
  return "------";
35536
36365
  }).join(" | ") + " |");
35537
- var _iterator4 = _createForOfIteratorHelper$d(block.rows),
36366
+ var _iterator4 = _createForOfIteratorHelper$c(block.rows),
35538
36367
  _step4;
35539
36368
  try {
35540
36369
  var _loop2 = function _loop2() {
@@ -35555,7 +36384,7 @@ function serialize(blocks) {
35555
36384
  break;
35556
36385
  }
35557
36386
  case "list":
35558
- var _iterator5 = _createForOfIteratorHelper$d(block.items),
36387
+ var _iterator5 = _createForOfIteratorHelper$c(block.items),
35559
36388
  _step5;
35560
36389
  try {
35561
36390
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -35569,7 +36398,7 @@ function serialize(blocks) {
35569
36398
  }
35570
36399
  break;
35571
36400
  case "blockquote":
35572
- var _iterator6 = _createForOfIteratorHelper$d(block.text.split("\n")),
36401
+ var _iterator6 = _createForOfIteratorHelper$c(block.text.split("\n")),
35573
36402
  _step6;
35574
36403
  try {
35575
36404
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -39072,9 +39901,9 @@ var ThemeManagerModal = function ThemeManagerModal(_ref) {
39072
39901
 
39073
39902
  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; }
39074
39903
  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; }
39075
- function _createForOfIteratorHelper$c(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$c(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; } } }; }
39076
- function _unsupportedIterableToArray$c(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$c(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$c(r, a) : void 0; } }
39077
- function _arrayLikeToArray$c(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; }
39904
+ function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(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; } } }; }
39905
+ function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(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$b(r, a) : void 0; } }
39906
+ function _arrayLikeToArray$b(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; }
39078
39907
  var DASHBOARD_TAGS = ["productivity", "monitoring", "analytics", "communication", "developer", "sales", "marketing", "finance", "project-management", "social", "news", "utilities"];
39079
39908
  var BUMP_OPTIONS$1 = [{
39080
39909
  value: "patch",
@@ -39148,7 +39977,7 @@ function collectComponentConfigs() {
39148
39977
  // fixed "reference" entry.
39149
39978
  function seedSelections(plan, dashboardVisibility) {
39150
39979
  var selections = {};
39151
- var _iterator = _createForOfIteratorHelper$c(plan.widgets || []),
39980
+ var _iterator = _createForOfIteratorHelper$b(plan.widgets || []),
39152
39981
  _step;
39153
39982
  try {
39154
39983
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -39481,7 +40310,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
39481
40310
  break;
39482
40311
  }
39483
40312
  seenPackages = new Set();
39484
- _iterator2 = _createForOfIteratorHelper$c(plan.widgets || []);
40313
+ _iterator2 = _createForOfIteratorHelper$b(plan.widgets || []);
39485
40314
  _context2.prev = 2;
39486
40315
  _iterator2.s();
39487
40316
  case 3:
@@ -40346,7 +41175,7 @@ function DependencyTable(_ref4) {
40346
41175
  // row. Each row shows the list of component widgets that live inside it
40347
41176
  // so the user knows what's getting published.
40348
41177
  var byKey = new Map();
40349
- var _iterator3 = _createForOfIteratorHelper$c(plan.widgets || []),
41178
+ var _iterator3 = _createForOfIteratorHelper$b(plan.widgets || []),
40350
41179
  _step4;
40351
41180
  try {
40352
41181
  for (_iterator3.s(); !(_step4 = _iterator3.n()).done;) {
@@ -43976,9 +44805,9 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
43976
44805
 
43977
44806
  function ownKeys$j(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; }
43978
44807
  function _objectSpread$j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$j(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
43979
- function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(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; } } }; }
43980
- function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(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$b(r, a) : void 0; } }
43981
- function _arrayLikeToArray$b(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; }
44808
+ function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(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; } } }; }
44809
+ function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(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$a(r, a) : void 0; } }
44810
+ function _arrayLikeToArray$a(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; }
43982
44811
  function isValidWsUrl(url) {
43983
44812
  if (!url) return false;
43984
44813
  try {
@@ -44025,7 +44854,7 @@ function extractCredentialFields(url, headerRows) {
44025
44854
  fields.add(match[1]);
44026
44855
  }
44027
44856
  }
44028
- var _iterator = _createForOfIteratorHelper$b(headerRows),
44857
+ var _iterator = _createForOfIteratorHelper$a(headerRows),
44029
44858
  _step;
44030
44859
  try {
44031
44860
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -44128,7 +44957,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
44128
44957
  if (!url.trim()) errs.url = "WebSocket URL is required";else if (!isValidWsUrl(url)) errs.url = "URL must start with ws:// or wss://";
44129
44958
 
44130
44959
  // Check required credential fields are filled
44131
- var _iterator2 = _createForOfIteratorHelper$b(credentialFields),
44960
+ var _iterator2 = _createForOfIteratorHelper$a(credentialFields),
44132
44961
  _step2;
44133
44962
  try {
44134
44963
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -44151,7 +44980,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
44151
44980
 
44152
44981
  // Build headers object from rows
44153
44982
  var headers = {};
44154
- var _iterator3 = _createForOfIteratorHelper$b(headerRows),
44983
+ var _iterator3 = _createForOfIteratorHelper$a(headerRows),
44155
44984
  _step3;
44156
44985
  try {
44157
44986
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -44220,7 +45049,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
44220
45049
 
44221
45050
  // Build config from current form state (same as handleSave)
44222
45051
  headers = {};
44223
- _iterator4 = _createForOfIteratorHelper$b(headerRows);
45052
+ _iterator4 = _createForOfIteratorHelper$a(headerRows);
44224
45053
  try {
44225
45054
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
44226
45055
  row = _step4.value;
@@ -47379,9 +48208,9 @@ var InstallWidgetPicker = function InstallWidgetPicker(_ref2) {
47379
48208
 
47380
48209
  function ownKeys$g(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; }
47381
48210
  function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
47382
- function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(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; } } }; }
47383
- function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(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$a(r, a) : void 0; } }
47384
- function _arrayLikeToArray$a(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; }
48211
+ function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(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; } } }; }
48212
+ function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(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$9(r, a) : void 0; } }
48213
+ function _arrayLikeToArray$9(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; }
47385
48214
  var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47386
48215
  var onBack = _ref.onBack;
47387
48216
  var _useContext = useContext(ThemeContext),
@@ -47488,7 +48317,7 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47488
48317
  case 1:
47489
48318
  widgets = _context2.sent;
47490
48319
  names = new Set();
47491
- _iterator = _createForOfIteratorHelper$a(widgets);
48320
+ _iterator = _createForOfIteratorHelper$9(widgets);
47492
48321
  try {
47493
48322
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
47494
48323
  w = _step.value;
@@ -47594,12 +48423,12 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47594
48423
  var checkToolConflicts = function checkToolConflicts(widget) {
47595
48424
  var conflicts = [];
47596
48425
  var packageWidgets = widget.packageWidgets || [];
47597
- var _iterator2 = _createForOfIteratorHelper$a(packageWidgets),
48426
+ var _iterator2 = _createForOfIteratorHelper$9(packageWidgets),
47598
48427
  _step2;
47599
48428
  try {
47600
48429
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
47601
48430
  var w = _step2.value;
47602
- var _iterator3 = _createForOfIteratorHelper$a(w.providers || []),
48431
+ var _iterator3 = _createForOfIteratorHelper$9(w.providers || []),
47603
48432
  _step3;
47604
48433
  try {
47605
48434
  var _loop = function _loop() {
@@ -47612,7 +48441,7 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47612
48441
  prov = _ref5[1];
47613
48442
  return prov.type === p.type && prov.providerClass === "mcp" && prov.allowedTools;
47614
48443
  });
47615
- var _iterator4 = _createForOfIteratorHelper$a(matchingProviders),
48444
+ var _iterator4 = _createForOfIteratorHelper$9(matchingProviders),
47616
48445
  _step4;
47617
48446
  try {
47618
48447
  var _loop2 = function _loop2() {
@@ -47935,9 +48764,9 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
47935
48764
  });
47936
48765
  };
47937
48766
 
47938
- function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(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; } } }; }
47939
- function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(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$9(r, a) : void 0; } }
47940
- function _arrayLikeToArray$9(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; }
48767
+ function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(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; } } }; }
48768
+ function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(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$8(r, a) : void 0; } }
48769
+ function _arrayLikeToArray$8(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; }
47941
48770
 
47942
48771
  /**
47943
48772
  * Walk a workspace layout and collect widget component keys that are
@@ -47951,7 +48780,7 @@ function collectComponentsFromLayout(layout) {
47951
48780
 
47952
48781
  // Collect IDs of layout items that are actively referenced by grid cells
47953
48782
  var activeItemIds = new Set();
47954
- var _iterator = _createForOfIteratorHelper$9(layout),
48783
+ var _iterator = _createForOfIteratorHelper$8(layout),
47955
48784
  _step;
47956
48785
  try {
47957
48786
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -47971,7 +48800,7 @@ function collectComponentsFromLayout(layout) {
47971
48800
  } finally {
47972
48801
  _iterator.f();
47973
48802
  }
47974
- var _iterator2 = _createForOfIteratorHelper$9(layout),
48803
+ var _iterator2 = _createForOfIteratorHelper$8(layout),
47975
48804
  _step2;
47976
48805
  try {
47977
48806
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -48005,7 +48834,7 @@ function findWidgetUsage(componentNames, workspaces) {
48005
48834
  if (!(componentNames !== null && componentNames !== void 0 && componentNames.length) || !(workspaces !== null && workspaces !== void 0 && workspaces.length)) return [];
48006
48835
  var nameSet = new Set(componentNames);
48007
48836
  var results = [];
48008
- var _iterator3 = _createForOfIteratorHelper$9(workspaces),
48837
+ var _iterator3 = _createForOfIteratorHelper$8(workspaces),
48009
48838
  _step3;
48010
48839
  try {
48011
48840
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -48240,9 +49069,9 @@ var useInstalledWidgets = function useInstalledWidgets() {
48240
49069
  };
48241
49070
  };
48242
49071
 
48243
- function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(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; } } }; }
48244
- function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(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$8(r, a) : void 0; } }
48245
- function _arrayLikeToArray$8(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; }
49072
+ function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(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; } } }; }
49073
+ function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(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$7(r, a) : void 0; } }
49074
+ function _arrayLikeToArray$7(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; }
48246
49075
 
48247
49076
  /**
48248
49077
  * useWidgetUpdates — checks the registry for newer versions of installed widgets
@@ -48372,7 +49201,7 @@ function useWidgetUpdates() {
48372
49201
  // (install replaces the entire package, not just one widget)
48373
49202
  setUpdates(function (prev) {
48374
49203
  var next = new Map(prev);
48375
- var _iterator = _createForOfIteratorHelper$8(next),
49204
+ var _iterator = _createForOfIteratorHelper$7(next),
48376
49205
  _step;
48377
49206
  try {
48378
49207
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -52013,9 +52842,9 @@ var PopoverItem = function PopoverItem(_ref6) {
52013
52842
  });
52014
52843
  };
52015
52844
 
52016
- function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(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; } } }; }
52017
- function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(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$7(r, a) : void 0; } }
52018
- function _arrayLikeToArray$7(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; }
52845
+ function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(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; } } }; }
52846
+ function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(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$6(r, a) : void 0; } }
52847
+ function _arrayLikeToArray$6(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; }
52019
52848
  function ownKeys$9(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; }
52020
52849
  function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
52021
52850
  var DraggableWidgetItem = function DraggableWidgetItem(_ref) {
@@ -52557,7 +53386,7 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
52557
53386
  return _context2.abrupt("return");
52558
53387
  case 2:
52559
53388
  names = new Set();
52560
- _iterator = _createForOfIteratorHelper$7(widgets);
53389
+ _iterator = _createForOfIteratorHelper$6(widgets);
52561
53390
  try {
52562
53391
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
52563
53392
  w = _step.value;
@@ -52945,9 +53774,9 @@ var useMissingWidgets = function useMissingWidgets(workspace) {
52945
53774
 
52946
53775
  function ownKeys$8(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; }
52947
53776
  function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
52948
- function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(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; } } }; }
52949
- function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(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$6(r, a) : void 0; } }
52950
- function _arrayLikeToArray$6(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; }
53777
+ function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(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; } } }; }
53778
+ function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(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$5(r, a) : void 0; } }
53779
+ function _arrayLikeToArray$5(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; }
52951
53780
  var MissingWidgetsModal = function MissingWidgetsModal(_ref) {
52952
53781
  var _ref$missingComponent = _ref.missingComponents,
52953
53782
  missingComponents = _ref$missingComponent === void 0 ? [] : _ref$missingComponent,
@@ -52998,7 +53827,7 @@ var MissingWidgetsModal = function MissingWidgetsModal(_ref) {
52998
53827
  case 0:
52999
53828
  results = [];
53000
53829
  seen = new Set();
53001
- _iterator = _createForOfIteratorHelper$6(missingComponents);
53830
+ _iterator = _createForOfIteratorHelper$5(missingComponents);
53002
53831
  _context2.prev = 1;
53003
53832
  _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
53004
53833
  var componentKey, _getWidgetSearchQuery, packageName, widgetName, pkg, result;
@@ -53319,261 +54148,6 @@ var MissingWidgetsModal = function MissingWidgetsModal(_ref) {
53319
54148
  });
53320
54149
  };
53321
54150
 
53322
- function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(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; } } }; }
53323
- function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(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$5(r, a) : void 0; } }
53324
- function _arrayLikeToArray$5(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; }
53325
- /**
53326
- * providerResolution.js
53327
- *
53328
- * Shared helpers for walking a workspace and figuring out which widgets
53329
- * have required providers that are still unresolved after the 3-layer
53330
- * resolution (widget → workspace → app-default → null). Used by:
53331
- *
53332
- * - DashboardConfigModal to render the Providers tab
53333
- * - DashboardStage toolbar to show the unresolved-count badge
53334
- *
53335
- * Both places need the same answer, so keep the logic here to avoid drift
53336
- * with the resolution inside `useMcpProvider` / `useWebSocketProvider`.
53337
- */
53338
-
53339
- /**
53340
- * Resolve which provider name a given widget instance would bind to for
53341
- * the given provider type. Mirrors the 3-layer chain in useMcpProvider
53342
- * and useWebSocketProvider exactly:
53343
- *
53344
- * 1. widget-level override (layoutItem.selectedProviders[type])
53345
- * 2. workspace-level binding (workspace.selectedProviders[id][type])
53346
- * 3. app default (any provider of matching type flagged
53347
- * `isDefaultForType` in appProviders)
53348
- * 4. null (truly unresolved)
53349
- */
53350
- function resolveProviderName(_ref) {
53351
- var _layoutItem$selectedP, _workspace$selectedPr;
53352
- var providerType = _ref.providerType,
53353
- layoutItem = _ref.layoutItem,
53354
- widgetId = _ref.widgetId,
53355
- workspace = _ref.workspace,
53356
- appProviders = _ref.appProviders;
53357
- // 1. Widget-level
53358
- var widgetLevel = layoutItem === null || layoutItem === void 0 || (_layoutItem$selectedP = layoutItem.selectedProviders) === null || _layoutItem$selectedP === void 0 ? void 0 : _layoutItem$selectedP[providerType];
53359
- if (widgetLevel) return widgetLevel;
53360
-
53361
- // 2. Workspace-level
53362
- var workspaceLevel = widgetId && (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 || (_workspace$selectedPr = _workspace$selectedPr[widgetId]) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[providerType]);
53363
- if (workspaceLevel) return workspaceLevel;
53364
-
53365
- // 3. App default — appProviders is either a map keyed by name or an
53366
- // array. Support both because different callers shape it either way.
53367
- if (appProviders) {
53368
- if (Array.isArray(appProviders)) {
53369
- var _iterator = _createForOfIteratorHelper$5(appProviders),
53370
- _step;
53371
- try {
53372
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
53373
- var data = _step.value;
53374
- if ((data === null || data === void 0 ? void 0 : data.type) === providerType && (data === null || data === void 0 ? void 0 : data.isDefaultForType) === true) {
53375
- return data.name;
53376
- }
53377
- }
53378
- } catch (err) {
53379
- _iterator.e(err);
53380
- } finally {
53381
- _iterator.f();
53382
- }
53383
- } else if (_typeof(appProviders) === "object") {
53384
- for (var _i = 0, _Object$entries = Object.entries(appProviders); _i < _Object$entries.length; _i++) {
53385
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
53386
- name = _Object$entries$_i[0],
53387
- _data = _Object$entries$_i[1];
53388
- if ((_data === null || _data === void 0 ? void 0 : _data.type) === providerType && (_data === null || _data === void 0 ? void 0 : _data.isDefaultForType) === true) {
53389
- return name;
53390
- }
53391
- }
53392
- }
53393
- }
53394
- return null;
53395
- }
53396
-
53397
- /**
53398
- * Walk every layout container in a workspace and yield each widget
53399
- * instance with its concrete layout item. Handles the main layout,
53400
- * per-page layouts, the sidebar, and nested LayoutGridContainers whose
53401
- * children are stored on `items`/`layout`.
53402
- */
53403
- function forEachWidget(workspace, visit) {
53404
- if (!workspace) return;
53405
- var _walk = function walk(items) {
53406
- if (!Array.isArray(items)) return;
53407
- var _iterator2 = _createForOfIteratorHelper$5(items),
53408
- _step2;
53409
- try {
53410
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
53411
- var item = _step2.value;
53412
- if (!item || _typeof(item) !== "object") continue;
53413
- // A "widget" is any layout item with a component name.
53414
- // Containers can have both a component name AND nested items
53415
- // (e.g. LayoutGridContainer), so still recurse.
53416
- if (item.component) visit(item);
53417
- if (Array.isArray(item.items)) _walk(item.items);
53418
- if (Array.isArray(item.layout)) _walk(item.layout);
53419
- }
53420
- } catch (err) {
53421
- _iterator2.e(err);
53422
- } finally {
53423
- _iterator2.f();
53424
- }
53425
- };
53426
- _walk(workspace.layout);
53427
- if (Array.isArray(workspace.pages)) {
53428
- var _iterator3 = _createForOfIteratorHelper$5(workspace.pages),
53429
- _step3;
53430
- try {
53431
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
53432
- var page = _step3.value;
53433
- _walk(page === null || page === void 0 ? void 0 : page.layout);
53434
- }
53435
- } catch (err) {
53436
- _iterator3.e(err);
53437
- } finally {
53438
- _iterator3.f();
53439
- }
53440
- }
53441
- _walk(workspace.sidebarLayout);
53442
- }
53443
-
53444
- /**
53445
- * Compute the list of unresolved required providers across a workspace.
53446
- *
53447
- * @param {object} args
53448
- * @param {object} args.workspace The workspace (with layout/pages/sidebarLayout/selectedProviders).
53449
- * @param {object|Array} args.appProviders
53450
- * Map keyed by provider name, or an array of provider objects. Each
53451
- * entry has at least `{ type, isDefaultForType }`.
53452
- * @param {(componentName: string) => Array<{type, required?, providerClass?}>} args.getWidgetRequirements
53453
- * Returns the `providers: [...]` declaration from the component's
53454
- * `.dash.js` (via `ComponentManager.componentMap()[name].providers`).
53455
- *
53456
- * @returns {Array<{ widgetId, component, providerType, providerClass, layoutItem }>}
53457
- * One entry per (widget instance, required provider type) that lacks
53458
- * a binding.
53459
- */
53460
- function getUnresolvedProviders(_ref2) {
53461
- var workspace = _ref2.workspace,
53462
- appProviders = _ref2.appProviders,
53463
- getWidgetRequirements = _ref2.getWidgetRequirements;
53464
- if (!workspace || typeof getWidgetRequirements !== "function") return [];
53465
- var unresolved = [];
53466
- forEachWidget(workspace, function (item) {
53467
- var requirements = getWidgetRequirements(item.component) || [];
53468
- if (!Array.isArray(requirements) || requirements.length === 0) return;
53469
- var widgetId = item.uuidString || item.uuid || item.id || null;
53470
- var _iterator4 = _createForOfIteratorHelper$5(requirements),
53471
- _step4;
53472
- try {
53473
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
53474
- var req = _step4.value;
53475
- if (!req || !req.type) continue;
53476
- if (req.required === false) continue; // optional, skip
53477
-
53478
- var name = resolveProviderName({
53479
- providerType: req.type,
53480
- layoutItem: item,
53481
- widgetId: widgetId,
53482
- workspace: workspace,
53483
- appProviders: appProviders
53484
- });
53485
- if (!name) {
53486
- unresolved.push({
53487
- widgetId: widgetId,
53488
- component: item.component,
53489
- providerType: req.type,
53490
- providerClass: req.providerClass || null,
53491
- layoutItem: item
53492
- });
53493
- }
53494
- }
53495
- } catch (err) {
53496
- _iterator4.e(err);
53497
- } finally {
53498
- _iterator4.f();
53499
- }
53500
- });
53501
- return unresolved;
53502
- }
53503
-
53504
- /**
53505
- * Group an unresolved-provider list (or any `{widget, providerType}` list)
53506
- * by provider type, so the Providers tab can render one row per unique
53507
- * type with N widgets beneath.
53508
- */
53509
- function groupByProviderType(unresolved) {
53510
- var byType = new Map();
53511
- var _iterator5 = _createForOfIteratorHelper$5(unresolved || []),
53512
- _step5;
53513
- try {
53514
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
53515
- var u = _step5.value;
53516
- if (!(u !== null && u !== void 0 && u.providerType)) continue;
53517
- if (!byType.has(u.providerType)) byType.set(u.providerType, []);
53518
- byType.get(u.providerType).push(u);
53519
- }
53520
- } catch (err) {
53521
- _iterator5.e(err);
53522
- } finally {
53523
- _iterator5.f();
53524
- }
53525
- return byType;
53526
- }
53527
-
53528
- /**
53529
- * Summarize every widget in the workspace that requires ANY provider,
53530
- * regardless of whether it's already resolved. Drives the Providers tab's
53531
- * "show per-widget overrides" expansion — the modal lists all widgets so
53532
- * the user can change an explicit override even for types that are
53533
- * already resolved via the app default.
53534
- */
53535
- function getAllProviderBindings(_ref3) {
53536
- var workspace = _ref3.workspace,
53537
- appProviders = _ref3.appProviders,
53538
- getWidgetRequirements = _ref3.getWidgetRequirements;
53539
- if (!workspace || typeof getWidgetRequirements !== "function") return [];
53540
- var bindings = [];
53541
- forEachWidget(workspace, function (item) {
53542
- var requirements = getWidgetRequirements(item.component) || [];
53543
- if (!Array.isArray(requirements) || requirements.length === 0) return;
53544
- var widgetId = item.uuidString || item.uuid || item.id || null;
53545
- var _iterator6 = _createForOfIteratorHelper$5(requirements),
53546
- _step6;
53547
- try {
53548
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
53549
- var req = _step6.value;
53550
- if (!req || !req.type) continue;
53551
- var name = resolveProviderName({
53552
- providerType: req.type,
53553
- layoutItem: item,
53554
- widgetId: widgetId,
53555
- workspace: workspace,
53556
- appProviders: appProviders
53557
- });
53558
- bindings.push({
53559
- widgetId: widgetId,
53560
- component: item.component,
53561
- providerType: req.type,
53562
- providerClass: req.providerClass || null,
53563
- required: req.required !== false,
53564
- resolvedProviderName: name,
53565
- layoutItem: item
53566
- });
53567
- }
53568
- } catch (err) {
53569
- _iterator6.e(err);
53570
- } finally {
53571
- _iterator6.f();
53572
- }
53573
- });
53574
- return bindings;
53575
- }
53576
-
53577
54151
  function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(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; } } }; }
53578
54152
  function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(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$4(r, a) : void 0; } }
53579
54153
  function _arrayLikeToArray$4(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; }
@@ -53585,19 +54159,43 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
53585
54159
  workspace = _ref.workspace,
53586
54160
  appProviders = _ref.appProviders,
53587
54161
  getWidgetRequirements = _ref.getWidgetRequirements,
53588
- onSaveBindings = _ref.onSaveBindings;
54162
+ _ref$getWidgetConfig = _ref.getWidgetConfig,
54163
+ getWidgetConfig = _ref$getWidgetConfig === void 0 ? null : _ref$getWidgetConfig,
54164
+ onSaveBindings = _ref.onSaveBindings,
54165
+ onSaveListeners = _ref.onSaveListeners,
54166
+ _ref$initialTab = _ref.initialTab,
54167
+ initialTab = _ref$initialTab === void 0 ? "providers" : _ref$initialTab;
53589
54168
  var _useContext = useContext(ThemeContext),
53590
54169
  currentTheme = _useContext.currentTheme;
53591
54170
  var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
53592
54171
  grow: false
53593
54172
  });
53594
54173
 
54174
+ // Active tab. Defaults to whatever the parent requested via
54175
+ // `initialTab`. Resets on each open via the modal's mount cycle.
54176
+ var _useState = useState(initialTab),
54177
+ _useState2 = _slicedToArray(_useState, 2),
54178
+ activeTab = _useState2[0],
54179
+ setActiveTab = _useState2[1];
54180
+
53595
54181
  // Staged changes: widgetId -> { [providerType]: providerName }. Empty
53596
54182
  // until the user picks something; applied on Save via onSaveBindings.
53597
- var _useState = useState({}),
53598
- _useState2 = _slicedToArray(_useState, 2),
53599
- staged = _useState2[0],
53600
- setStaged = _useState2[1];
54183
+ var _useState3 = useState({}),
54184
+ _useState4 = _slicedToArray(_useState3, 2),
54185
+ staged = _useState4[0],
54186
+ setStaged = _useState4[1];
54187
+
54188
+ // Staged listener changes — collected in the Listeners tab's UI and
54189
+ // committed alongside provider changes when the user clicks Save.
54190
+ // Shape: { adds: [...], removes: [...] } where each item is
54191
+ // { receiverItemId, handlerName, sourceComponent, sourceItemId, eventName, raw? }.
54192
+ var _useState5 = useState({
54193
+ adds: [],
54194
+ removes: []
54195
+ }),
54196
+ _useState6 = _slicedToArray(_useState5, 2),
54197
+ stagedListeners = _useState6[0],
54198
+ setStagedListeners = _useState6[1];
53601
54199
  var bindings = useMemo(function () {
53602
54200
  return getAllProviderBindings({
53603
54201
  workspace: workspace,
@@ -53663,9 +54261,98 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
53663
54261
  var unresolvedCount = effectiveBindings.filter(function (b) {
53664
54262
  return b.required && !b.resolvedProviderName;
53665
54263
  }).length;
54264
+
54265
+ // Listeners tab data — emitter list, receiver list, current wiring,
54266
+ // orphans. All recompute when the workspace or staged delta changes
54267
+ // so the UI reflects pending edits without saving first.
54268
+ var wConfig = useMemo(function () {
54269
+ return typeof getWidgetConfig === "function" ? getWidgetConfig : function () {
54270
+ return null;
54271
+ };
54272
+ }, [getWidgetConfig]);
54273
+ var emitters = useMemo(function () {
54274
+ return getEmitters(workspace, wConfig);
54275
+ }, [workspace, wConfig]);
54276
+ var receivers = useMemo(function () {
54277
+ return getReceivers(workspace, wConfig);
54278
+ }, [workspace, wConfig]);
54279
+ var persistedWiring = useMemo(function () {
54280
+ return getCurrentWiring(workspace);
54281
+ }, [workspace]);
54282
+ var orphans = useMemo(function () {
54283
+ return getOrphanedListeners(workspace, wConfig);
54284
+ }, [workspace, wConfig]);
54285
+ var effectiveWiring = useMemo(function () {
54286
+ // Apply staged removes/adds to the persisted wiring for an
54287
+ // accurate "what will be there after save" view, then annotate
54288
+ // each entry with its orphan reason (if any) so HandlerCard chips
54289
+ // can render a stale-binding warning inline.
54290
+ var next = persistedWiring;
54291
+ if (stagedListeners.removes.length > 0) {
54292
+ next = next.filter(function (w) {
54293
+ return !stagedListeners.removes.some(function (r) {
54294
+ return sameWiringEntry(r, w);
54295
+ });
54296
+ });
54297
+ }
54298
+ if (stagedListeners.adds.length > 0) {
54299
+ // Append; avoid duplicates against current state.
54300
+ var _iterator2 = _createForOfIteratorHelper$4(stagedListeners.adds),
54301
+ _step2;
54302
+ try {
54303
+ var _loop = function _loop() {
54304
+ var a = _step2.value;
54305
+ if (!next.some(function (w) {
54306
+ return sameWiringEntry(w, a);
54307
+ })) {
54308
+ next = [].concat(_toConsumableArray(next), [_objectSpread$7(_objectSpread$7({}, a), {}, {
54309
+ raw: formatEventString(a.sourceComponent, a.sourceItemId, a.eventName)
54310
+ })]);
54311
+ }
54312
+ };
54313
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
54314
+ _loop();
54315
+ }
54316
+ } catch (err) {
54317
+ _iterator2.e(err);
54318
+ } finally {
54319
+ _iterator2.f();
54320
+ }
54321
+ }
54322
+ if (orphans.length === 0) return next;
54323
+ var orphanIndex = new Map();
54324
+ var _iterator3 = _createForOfIteratorHelper$4(orphans),
54325
+ _step3;
54326
+ try {
54327
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
54328
+ var o = _step3.value;
54329
+ orphanIndex.set("".concat(o.receiverItemId, "|").concat(o.handlerName, "|").concat(o.sourceComponent, "|").concat(o.sourceItemId, "|").concat(o.eventName), o.reason);
54330
+ }
54331
+ } catch (err) {
54332
+ _iterator3.e(err);
54333
+ } finally {
54334
+ _iterator3.f();
54335
+ }
54336
+ return next.map(function (w) {
54337
+ var key = "".concat(w.receiverItemId, "|").concat(w.handlerName, "|").concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
54338
+ var reason = orphanIndex.get(key);
54339
+ return reason ? _objectSpread$7(_objectSpread$7({}, w), {}, {
54340
+ isOrphan: true,
54341
+ orphanReason: reason
54342
+ }) : w;
54343
+ });
54344
+ }, [persistedWiring, stagedListeners, orphans]);
54345
+ // Orphans reduced by what the user has already staged for removal.
54346
+ useMemo(function () {
54347
+ return orphans.filter(function (o) {
54348
+ return !stagedListeners.removes.some(function (r) {
54349
+ return sameWiringEntry(r, o);
54350
+ });
54351
+ });
54352
+ }, [orphans, stagedListeners.removes]);
53666
54353
  var hasStagedChanges = Object.keys(staged).some(function (wid) {
53667
54354
  return Object.keys(staged[wid] || {}).length > 0;
53668
- });
54355
+ }) || stagedListeners.adds.length > 0 || stagedListeners.removes.length > 0;
53669
54356
  function stageBinding(widgetId, providerType, providerName) {
53670
54357
  setStaged(function (prev) {
53671
54358
  var next = _objectSpread$7({}, prev);
@@ -53685,24 +54372,75 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
53685
54372
  });
53686
54373
  setStaged(function (prev) {
53687
54374
  var next = _objectSpread$7({}, prev);
53688
- var _iterator2 = _createForOfIteratorHelper$4(affected),
53689
- _step2;
54375
+ var _iterator4 = _createForOfIteratorHelper$4(affected),
54376
+ _step4;
53690
54377
  try {
53691
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
53692
- var b = _step2.value;
54378
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
54379
+ var b = _step4.value;
53693
54380
  if (!b.widgetId) continue;
53694
54381
  next[b.widgetId] = _objectSpread$7(_objectSpread$7({}, next[b.widgetId] || {}), {}, _defineProperty({}, providerType, providerName || ""));
53695
54382
  }
53696
54383
  } catch (err) {
53697
- _iterator2.e(err);
54384
+ _iterator4.e(err);
53698
54385
  } finally {
53699
- _iterator2.f();
54386
+ _iterator4.f();
53700
54387
  }
53701
54388
  return next;
53702
54389
  });
53703
54390
  }
54391
+
54392
+ // Listener tab staging helpers. We treat add/remove as queue
54393
+ // operations so the user can build up several edits before
54394
+ // committing. Toggling a binding that's already staged in the
54395
+ // opposite direction cancels the staged change rather than queuing
54396
+ // both — keeps the diff minimal and the save predictable.
54397
+ var stageListenerAdd = function stageListenerAdd(entry) {
54398
+ setStagedListeners(function (prev) {
54399
+ var removeIdx = prev.removes.findIndex(function (r) {
54400
+ return sameWiringEntry(r, entry);
54401
+ });
54402
+ if (removeIdx >= 0) {
54403
+ return {
54404
+ adds: prev.adds,
54405
+ removes: prev.removes.filter(function (_, i) {
54406
+ return i !== removeIdx;
54407
+ })
54408
+ };
54409
+ }
54410
+ if (prev.adds.some(function (a) {
54411
+ return sameWiringEntry(a, entry);
54412
+ })) return prev;
54413
+ return {
54414
+ adds: [].concat(_toConsumableArray(prev.adds), [entry]),
54415
+ removes: prev.removes
54416
+ };
54417
+ });
54418
+ };
54419
+ var stageListenerRemove = function stageListenerRemove(entry) {
54420
+ setStagedListeners(function (prev) {
54421
+ var addIdx = prev.adds.findIndex(function (a) {
54422
+ return sameWiringEntry(a, entry);
54423
+ });
54424
+ if (addIdx >= 0) {
54425
+ return {
54426
+ adds: prev.adds.filter(function (_, i) {
54427
+ return i !== addIdx;
54428
+ }),
54429
+ removes: prev.removes
54430
+ };
54431
+ }
54432
+ if (prev.removes.some(function (r) {
54433
+ return sameWiringEntry(r, entry);
54434
+ })) return prev;
54435
+ return {
54436
+ adds: prev.adds,
54437
+ removes: [].concat(_toConsumableArray(prev.removes), [entry])
54438
+ };
54439
+ });
54440
+ };
53704
54441
  function handleSave() {
53705
- var changes = [];
54442
+ // Provider changes
54443
+ var providerChanges = [];
53706
54444
  for (var _i2 = 0, _Object$entries2 = Object.entries(staged); _i2 < _Object$entries2.length; _i2++) {
53707
54445
  var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
53708
54446
  widgetId = _Object$entries2$_i[0],
@@ -53711,31 +54449,44 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
53711
54449
  var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2),
53712
54450
  providerType = _Object$entries3$_i[0],
53713
54451
  providerName = _Object$entries3$_i[1];
53714
- changes.push({
54452
+ providerChanges.push({
53715
54453
  widgetId: widgetId,
53716
54454
  providerType: providerType,
53717
54455
  providerName: providerName || null
53718
54456
  });
53719
54457
  }
53720
54458
  }
53721
- if (typeof onSaveBindings === "function") onSaveBindings(changes);
54459
+ if (providerChanges.length > 0 && typeof onSaveBindings === "function") {
54460
+ onSaveBindings(providerChanges);
54461
+ }
54462
+
54463
+ // Listener changes
54464
+ if ((stagedListeners.adds.length > 0 || stagedListeners.removes.length > 0) && typeof onSaveListeners === "function") {
54465
+ onSaveListeners(stagedListeners);
54466
+ }
53722
54467
  setStaged({});
54468
+ setStagedListeners({
54469
+ adds: [],
54470
+ removes: []
54471
+ });
53723
54472
  setIsOpen(false);
53724
54473
  }
53725
54474
  function handleCancel() {
53726
54475
  setStaged({});
54476
+ setStagedListeners({
54477
+ adds: [],
54478
+ removes: []
54479
+ });
53727
54480
  setIsOpen(false);
53728
54481
  }
53729
54482
  if (!isOpen) return null;
53730
54483
  return /*#__PURE__*/jsx(Modal, {
53731
54484
  isOpen: isOpen,
53732
54485
  setIsOpen: handleCancel,
53733
- width: "w-full max-w-3xl",
54486
+ width: "w-11/12 xl:w-5/6",
54487
+ height: "h-5/6",
53734
54488
  children: /*#__PURE__*/jsxs("div", {
53735
- className: "flex flex-col rounded-lg overflow-clip border ".concat(panelStyles.backgroundColor || "", " ").concat(panelStyles.borderColor || "", " ").concat(panelStyles.textColor || ""),
53736
- style: {
53737
- maxHeight: "80vh"
53738
- },
54489
+ className: "flex flex-col h-full w-full rounded-lg overflow-clip border ".concat(panelStyles.backgroundColor || "", " ").concat(panelStyles.borderColor || "", " ").concat(panelStyles.textColor || ""),
53739
54490
  children: [/*#__PURE__*/jsxs("div", {
53740
54491
  className: "flex-shrink-0 flex flex-row items-center justify-between p-4 border-b border-white/10",
53741
54492
  children: [/*#__PURE__*/jsxs("div", {
@@ -53761,47 +54512,37 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
53761
54512
  })]
53762
54513
  }), /*#__PURE__*/jsxs("div", {
53763
54514
  className: "flex-shrink-0 flex flex-row items-center gap-2 px-4 pt-3 border-b border-white/10",
53764
- children: [/*#__PURE__*/jsx("div", {
53765
- className: "px-3 py-1.5 text-sm font-medium border-b-2 border-indigo-400 -mb-px",
53766
- children: "Providers"
53767
- }), /*#__PURE__*/jsx("div", {
53768
- className: "px-3 py-1.5 text-sm opacity-40 cursor-not-allowed",
53769
- children: "Listeners (coming soon)"
53770
- })]
53771
- }), /*#__PURE__*/jsxs("div", {
53772
- className: "p-5 space-y-4 overflow-y-auto flex-1",
53773
- children: [grouped.size === 0 && /*#__PURE__*/jsx("div", {
53774
- className: "text-sm opacity-60 text-center py-6",
53775
- children: "No widgets in this dashboard require providers."
53776
- }), Array.from(grouped.entries()).map(function (_ref2) {
53777
- var _ref3 = _slicedToArray(_ref2, 2),
53778
- providerType = _ref3[0],
53779
- rows = _ref3[1];
53780
- var options = providersByType.get(providerType) || [];
53781
- var unresolvedHere = rows.filter(function (r) {
53782
- return r.required && !r.resolvedProviderName;
53783
- }).length;
53784
- // The "top" dropdown reflects the currently-agreeable choice:
53785
- // if every row has the same resolved value, show it; otherwise
53786
- // show "" (mixed) so the dropdown is neutral.
53787
- var allSame = rows.every(function (r) {
53788
- return r.resolvedProviderName === rows[0].resolvedProviderName;
53789
- });
53790
- var topValue = allSame ? rows[0].resolvedProviderName || "" : "";
53791
- return /*#__PURE__*/jsx(ProviderTypeRow, {
53792
- providerType: providerType,
53793
- rows: rows,
53794
- options: options,
53795
- topValue: topValue,
53796
- unresolvedHere: unresolvedHere,
53797
- onBulk: function onBulk(name) {
53798
- return stageBulk(providerType, name);
53799
- },
53800
- onPerWidget: function onPerWidget(widgetId, name) {
53801
- return stageBinding(widgetId, providerType, name);
53802
- }
53803
- }, providerType);
54515
+ children: [/*#__PURE__*/jsxs("button", {
54516
+ type: "button",
54517
+ onClick: function onClick() {
54518
+ return setActiveTab("providers");
54519
+ },
54520
+ className: "px-3 py-1.5 text-sm font-medium -mb-px border-b-2 ".concat(activeTab === "providers" ? "border-indigo-400" : "border-transparent opacity-60 hover:opacity-100"),
54521
+ children: ["Providers", unresolvedCount > 0 && /*#__PURE__*/jsx("span", {
54522
+ className: "ml-2 inline-block h-1.5 w-1.5 rounded-full bg-amber-400 align-middle"
54523
+ })]
54524
+ }), /*#__PURE__*/jsx("button", {
54525
+ type: "button",
54526
+ onClick: function onClick() {
54527
+ return setActiveTab("listeners");
54528
+ },
54529
+ className: "px-3 py-1.5 text-sm font-medium -mb-px border-b-2 ".concat(activeTab === "listeners" ? "border-indigo-400" : "border-transparent opacity-60 hover:opacity-100"),
54530
+ children: "Listeners"
53804
54531
  })]
54532
+ }), /*#__PURE__*/jsx("div", {
54533
+ className: "p-5 flex-1 min-h-0",
54534
+ children: activeTab === "listeners" ? /*#__PURE__*/jsx(ListenersTab, {
54535
+ emitters: emitters,
54536
+ receivers: receivers,
54537
+ wiring: effectiveWiring,
54538
+ onAdd: stageListenerAdd,
54539
+ onRemove: stageListenerRemove
54540
+ }) : /*#__PURE__*/jsx(ProvidersTab, {
54541
+ grouped: grouped,
54542
+ providersByType: providersByType,
54543
+ onBulk: stageBulk,
54544
+ onPerWidget: stageBinding
54545
+ })
53805
54546
  }), /*#__PURE__*/jsxs("div", {
53806
54547
  className: "flex-shrink-0 flex flex-row justify-end gap-2 p-4 border-t border-white/10",
53807
54548
  children: [/*#__PURE__*/jsx(Button3, {
@@ -53818,114 +54559,507 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
53818
54559
  };
53819
54560
 
53820
54561
  /**
53821
- * A single provider-type row: bulk dropdown + expandable per-widget
53822
- * list. Local state for whether the per-widget overrides panel is open.
54562
+ * Providers tab with a sidebar/detail layout mirroring the Listeners
54563
+ * tab. Column 1 lists provider types in this workspace (with an amber
54564
+ * dot per-type when any widget of that type is unresolved). Column 2
54565
+ * shows the selected type's bulk dropdown + per-widget dropdowns.
53823
54566
  */
53824
- function ProviderTypeRow(_ref4) {
53825
- var providerType = _ref4.providerType,
53826
- rows = _ref4.rows,
53827
- options = _ref4.options,
53828
- topValue = _ref4.topValue,
53829
- unresolvedHere = _ref4.unresolvedHere,
53830
- onBulk = _ref4.onBulk,
53831
- onPerWidget = _ref4.onPerWidget;
53832
- var _useState3 = useState(unresolvedHere > 0),
53833
- _useState4 = _slicedToArray(_useState3, 2),
53834
- expanded = _useState4[0],
53835
- setExpanded = _useState4[1];
53836
- var widgetCount = rows.length;
54567
+ function ProvidersTab(_ref2) {
54568
+ var _typeEntries$, _selectedRows$;
54569
+ var grouped = _ref2.grouped,
54570
+ providersByType = _ref2.providersByType,
54571
+ onBulk = _ref2.onBulk,
54572
+ onPerWidget = _ref2.onPerWidget;
54573
+ var typeEntries = useMemo(function () {
54574
+ return Array.from(grouped.entries());
54575
+ }, [grouped]);
54576
+ var _useState7 = useState(((_typeEntries$ = typeEntries[0]) === null || _typeEntries$ === void 0 ? void 0 : _typeEntries$[0]) || null),
54577
+ _useState8 = _slicedToArray(_useState7, 2),
54578
+ selectedType = _useState8[0],
54579
+ setSelectedType = _useState8[1];
54580
+
54581
+ // If the selected type disappears (workspace changed), fall back.
54582
+ useMemo(function () {
54583
+ if (selectedType && !grouped.has(selectedType)) {
54584
+ var _typeEntries$2;
54585
+ setSelectedType(((_typeEntries$2 = typeEntries[0]) === null || _typeEntries$2 === void 0 ? void 0 : _typeEntries$2[0]) || null);
54586
+ }
54587
+ }, [grouped, selectedType, typeEntries]);
54588
+ if (typeEntries.length === 0) {
54589
+ return /*#__PURE__*/jsx("div", {
54590
+ className: "text-sm opacity-60 text-center py-6",
54591
+ children: "No widgets in this dashboard require providers."
54592
+ });
54593
+ }
54594
+ var selectedRows = selectedType ? grouped.get(selectedType) || [] : [];
54595
+ var selectedOptions = selectedType ? providersByType.get(selectedType) || [] : [];
54596
+ var allSame = selectedRows.length > 0 && selectedRows.every(function (r) {
54597
+ return r.resolvedProviderName === selectedRows[0].resolvedProviderName;
54598
+ });
54599
+ var topValue = allSame ? ((_selectedRows$ = selectedRows[0]) === null || _selectedRows$ === void 0 ? void 0 : _selectedRows$.resolvedProviderName) || "" : "";
53837
54600
  return /*#__PURE__*/jsxs("div", {
53838
- className: "bg-white/5 border border-white/10 rounded-lg p-3 space-y-3",
54601
+ className: "flex flex-row gap-3 h-full min-h-0",
53839
54602
  children: [/*#__PURE__*/jsxs("div", {
53840
- className: "flex flex-row items-center gap-3",
54603
+ className: "w-56 flex-shrink-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
53841
54604
  children: [/*#__PURE__*/jsx("div", {
53842
- className: "flex-1 min-w-0",
53843
- children: /*#__PURE__*/jsxs("div", {
53844
- className: "text-sm font-semibold flex items-center gap-2",
53845
- children: [/*#__PURE__*/jsx("code", {
53846
- className: "text-xs bg-white/10 px-1.5 py-0.5 rounded",
53847
- children: providerType
53848
- }), /*#__PURE__*/jsxs("span", {
53849
- className: "text-xs opacity-60",
53850
- children: [widgetCount, " widget", widgetCount === 1 ? "" : "s"]
53851
- }), unresolvedHere > 0 && /*#__PURE__*/jsxs("span", {
53852
- className: "text-xs text-amber-300 flex items-center gap-1",
53853
- children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
53854
- icon: "triangle-exclamation",
53855
- className: "h-3 w-3"
53856
- }), unresolvedHere, " unresolved"]
53857
- })]
54605
+ className: "px-3 py-2 text-xs font-semibold opacity-50 uppercase tracking-wider border-b border-white/10",
54606
+ children: "Provider Types"
54607
+ }), /*#__PURE__*/jsx("div", {
54608
+ className: "overflow-y-auto flex-1",
54609
+ children: typeEntries.map(function (_ref3) {
54610
+ var _ref4 = _slicedToArray(_ref3, 2),
54611
+ providerType = _ref4[0],
54612
+ rows = _ref4[1];
54613
+ var isActive = selectedType === providerType;
54614
+ var unresolvedHere = rows.filter(function (r) {
54615
+ return r.required && !r.resolvedProviderName;
54616
+ }).length;
54617
+ return /*#__PURE__*/jsxs("button", {
54618
+ type: "button",
54619
+ onClick: function onClick() {
54620
+ return setSelectedType(providerType);
54621
+ },
54622
+ className: "w-full text-left px-3 py-2 border-l-2 ".concat(isActive ? "bg-indigo-900/30 border-indigo-400" : "border-transparent hover:bg-white/5"),
54623
+ children: [/*#__PURE__*/jsxs("div", {
54624
+ className: "flex items-center gap-2",
54625
+ children: [/*#__PURE__*/jsx("span", {
54626
+ className: "text-sm font-medium truncate",
54627
+ children: providerType
54628
+ }), unresolvedHere > 0 && /*#__PURE__*/jsxs("span", {
54629
+ className: "text-[10px] text-amber-300 flex items-center gap-1",
54630
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
54631
+ icon: "triangle-exclamation",
54632
+ className: "h-2.5 w-2.5"
54633
+ }), unresolvedHere]
54634
+ })]
54635
+ }), /*#__PURE__*/jsxs("div", {
54636
+ className: "text-xs opacity-50 mt-0.5",
54637
+ children: [rows.length, " widget", rows.length === 1 ? "" : "s"]
54638
+ })]
54639
+ }, providerType);
53858
54640
  })
53859
- }), /*#__PURE__*/jsxs("select", {
53860
- value: topValue,
53861
- onChange: function onChange(e) {
53862
- return onBulk(e.target.value);
53863
- },
53864
- className: "bg-gray-800 border border-white/10 rounded px-3 py-1.5 text-sm min-w-[14rem]",
53865
- children: [/*#__PURE__*/jsx("option", {
53866
- value: "",
53867
- children: "\u2014 Select provider \u2014"
53868
- }), options.map(function (opt) {
53869
- return /*#__PURE__*/jsxs("option", {
53870
- value: opt.name,
53871
- children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
53872
- }, opt.name);
53873
- })]
53874
54641
  })]
53875
- }), /*#__PURE__*/jsxs("button", {
53876
- type: "button",
53877
- onClick: function onClick() {
53878
- return setExpanded(function (v) {
53879
- return !v;
53880
- });
53881
- },
53882
- className: "text-xs opacity-60 hover:opacity-100 flex items-center gap-1",
53883
- children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
53884
- icon: expanded ? "chevron-down" : "chevron-right",
53885
- className: "h-3 w-3"
53886
- }), expanded ? "Hide" : "Show", " per-widget overrides"]
53887
- }), expanded && /*#__PURE__*/jsx("div", {
53888
- className: "pl-3 border-l border-white/10 space-y-2",
53889
- children: rows.map(function (row) {
53890
- var _row$layoutItem;
53891
- var hasExplicitOverride = !!((_row$layoutItem = row.layoutItem) !== null && _row$layoutItem !== void 0 && (_row$layoutItem = _row$layoutItem.selectedProviders) !== null && _row$layoutItem !== void 0 && _row$layoutItem[providerType]);
53892
- return /*#__PURE__*/jsxs("div", {
53893
- className: "flex flex-row items-center gap-3",
54642
+ }), /*#__PURE__*/jsx("div", {
54643
+ className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
54644
+ children: selectedType ? /*#__PURE__*/jsxs(Fragment, {
54645
+ children: [/*#__PURE__*/jsxs("div", {
54646
+ className: "px-4 py-3 border-b border-white/10 flex-shrink-0",
53894
54647
  children: [/*#__PURE__*/jsxs("div", {
53895
- className: "flex-1 min-w-0 text-xs",
54648
+ className: "text-sm font-semibold",
54649
+ children: [selectedType, " ", /*#__PURE__*/jsx("span", {
54650
+ className: "opacity-60 font-normal",
54651
+ children: "provider"
54652
+ })]
54653
+ }), /*#__PURE__*/jsx("div", {
54654
+ className: "text-xs opacity-60 mt-1",
54655
+ children: "Apply one provider to every widget of this type, or adjust per-widget below."
54656
+ })]
54657
+ }), /*#__PURE__*/jsxs("div", {
54658
+ className: "flex-1 overflow-y-auto p-4 space-y-4",
54659
+ children: [/*#__PURE__*/jsxs("div", {
54660
+ className: "flex items-center gap-3",
53896
54661
  children: [/*#__PURE__*/jsx("span", {
53897
- className: "font-mono opacity-80 truncate",
53898
- children: row.component || "widget"
53899
- }), /*#__PURE__*/jsx("span", {
53900
- className: "opacity-40 mx-1",
53901
- children: "\xB7"
53902
- }), /*#__PURE__*/jsx("span", {
53903
- className: "font-mono opacity-40 truncate",
53904
- children: (row.widgetId || "").slice(0, 8)
53905
- }), hasExplicitOverride && /*#__PURE__*/jsx("span", {
53906
- className: "ml-2 text-[10px] text-indigo-300 uppercase tracking-wide",
53907
- children: "widget override"
53908
- }), !row.resolvedProviderName && row.required && /*#__PURE__*/jsx("span", {
53909
- className: "ml-2 text-[10px] text-amber-300 uppercase tracking-wide",
53910
- children: "unresolved"
54662
+ className: "text-xs opacity-60 flex-shrink-0 w-20",
54663
+ children: "Bulk assign"
54664
+ }), /*#__PURE__*/jsxs("select", {
54665
+ value: topValue,
54666
+ onChange: function onChange(e) {
54667
+ return onBulk(selectedType, e.target.value);
54668
+ },
54669
+ className: "flex-1 bg-gray-800 border border-white/10 rounded px-3 py-1.5 text-sm",
54670
+ children: [/*#__PURE__*/jsx("option", {
54671
+ value: "",
54672
+ children: "\u2014 Select provider \u2014"
54673
+ }), selectedOptions.map(function (opt) {
54674
+ return /*#__PURE__*/jsxs("option", {
54675
+ value: opt.name,
54676
+ children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
54677
+ }, opt.name);
54678
+ })]
53911
54679
  })]
53912
- }), /*#__PURE__*/jsxs("select", {
53913
- value: row.resolvedProviderName || "",
53914
- onChange: function onChange(e) {
53915
- return onPerWidget(row.widgetId, e.target.value);
53916
- },
53917
- className: "bg-gray-800 border border-white/10 rounded px-2 py-1 text-xs min-w-[12rem]",
53918
- children: [/*#__PURE__*/jsx("option", {
53919
- value: "",
53920
- children: "\u2014 none \u2014"
53921
- }), options.map(function (opt) {
53922
- return /*#__PURE__*/jsxs("option", {
53923
- value: opt.name,
53924
- children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
53925
- }, opt.name);
54680
+ }), /*#__PURE__*/jsxs("div", {
54681
+ children: [/*#__PURE__*/jsx("div", {
54682
+ className: "text-xs font-semibold opacity-50 uppercase tracking-wider mb-2",
54683
+ children: "Per-widget"
54684
+ }), /*#__PURE__*/jsx("div", {
54685
+ children: selectedRows.map(function (row) {
54686
+ var _row$layoutItem;
54687
+ var hasExplicitOverride = !!((_row$layoutItem = row.layoutItem) !== null && _row$layoutItem !== void 0 && (_row$layoutItem = _row$layoutItem.selectedProviders) !== null && _row$layoutItem !== void 0 && _row$layoutItem[selectedType]);
54688
+ var isRequired = !!row.required;
54689
+ var isMissing = !row.resolvedProviderName;
54690
+ var needsAttention = isRequired && isMissing;
54691
+ return /*#__PURE__*/jsxs("div", {
54692
+ className: "flex flex-row items-center gap-3 py-2 px-2 rounded border-l-2 ".concat(needsAttention ? "bg-red-900 border-red-500" : "border-transparent"),
54693
+ children: [/*#__PURE__*/jsxs("div", {
54694
+ className: "flex-1 min-w-0",
54695
+ children: [/*#__PURE__*/jsxs("div", {
54696
+ className: "text-sm truncate flex items-center gap-1.5 ".concat(needsAttention ? "font-semibold text-red-100" : "font-medium"),
54697
+ children: [/*#__PURE__*/jsx("span", {
54698
+ className: "truncate",
54699
+ children: row.component || "widget"
54700
+ }), isRequired && /*#__PURE__*/jsx("span", {
54701
+ className: needsAttention ? "text-red-300" : "text-indigo-300",
54702
+ title: "Required provider",
54703
+ "aria-label": "required",
54704
+ children: "*"
54705
+ })]
54706
+ }), /*#__PURE__*/jsxs("div", {
54707
+ className: "flex items-center gap-1.5 mt-1 text-[10px]",
54708
+ children: [/*#__PURE__*/jsx("span", {
54709
+ className: "uppercase tracking-wide px-1.5 py-0.5 rounded font-semibold ".concat(needsAttention ? "bg-red-600 text-white" : isRequired ? "bg-indigo-800 text-indigo-100" : "bg-gray-700 text-gray-300"),
54710
+ children: isRequired ? "required" : "optional"
54711
+ }), hasExplicitOverride && /*#__PURE__*/jsx("span", {
54712
+ className: "uppercase tracking-wide px-1.5 py-0.5 rounded font-semibold bg-indigo-900 text-indigo-200",
54713
+ children: "override"
54714
+ }), /*#__PURE__*/jsx("span", {
54715
+ className: "opacity-40 truncate ml-1",
54716
+ children: (row.widgetId || "").slice(0, 8)
54717
+ })]
54718
+ })]
54719
+ }), /*#__PURE__*/jsxs("select", {
54720
+ value: row.resolvedProviderName || "",
54721
+ onChange: function onChange(e) {
54722
+ return onPerWidget(row.widgetId, selectedType, e.target.value);
54723
+ },
54724
+ className: "bg-gray-800 border rounded px-2 py-1 text-xs min-w-[12rem] ".concat(needsAttention ? "border-red-400" : "border-gray-700"),
54725
+ children: [/*#__PURE__*/jsx("option", {
54726
+ value: "",
54727
+ children: "\u2014 none \u2014"
54728
+ }), selectedOptions.map(function (opt) {
54729
+ return /*#__PURE__*/jsxs("option", {
54730
+ value: opt.name,
54731
+ children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
54732
+ }, opt.name);
54733
+ })]
54734
+ })]
54735
+ }, "".concat(row.widgetId, ":").concat(row.providerType));
54736
+ })
54737
+ })]
54738
+ })]
54739
+ })]
54740
+ }) : /*#__PURE__*/jsx("div", {
54741
+ className: "flex-1 flex items-center justify-center text-sm opacity-60",
54742
+ children: "Pick a provider type to bulk-assign or adjust per widget."
54743
+ })
54744
+ })]
54745
+ });
54746
+ }
54747
+
54748
+ // ─── Listeners tab ──────────────────────────────────────────────────────────
54749
+
54750
+ /**
54751
+ * Match two wiring entries on the four fields that uniquely identify
54752
+ * a listener binding (receiver + handler + source + event). Used to
54753
+ * dedupe stages, cancel opposite-direction stages, and detect "is
54754
+ * this binding already there".
54755
+ */
54756
+ function sameWiringEntry(a, b) {
54757
+ if (!a || !b) return false;
54758
+ return String(a.receiverItemId) === String(b.receiverItemId) && a.handlerName === b.handlerName && a.sourceComponent === b.sourceComponent && String(a.sourceItemId) === String(b.sourceItemId) && a.eventName === b.eventName;
54759
+ }
54760
+
54761
+ /**
54762
+ * Receiver-centric sidebar/detail layout. Mirrors the per-widget
54763
+ * PanelEditItemHandlers pattern (handler-by-handler editing) but
54764
+ * scoped to the whole dashboard. Picking a widget on the left shows
54765
+ * its handlers + currently wired sources on the right; the user
54766
+ * adjusts wiring per handler from a single dropdown of all emitters'
54767
+ * (widget × event) pairs.
54768
+ */
54769
+ function ListenersTab(_ref6) {
54770
+ var _receivers$;
54771
+ var emitters = _ref6.emitters,
54772
+ receivers = _ref6.receivers,
54773
+ wiring = _ref6.wiring,
54774
+ onAdd = _ref6.onAdd,
54775
+ onRemove = _ref6.onRemove;
54776
+ var _useState1 = useState(((_receivers$ = receivers[0]) === null || _receivers$ === void 0 ? void 0 : _receivers$.key) || null),
54777
+ _useState10 = _slicedToArray(_useState1, 2),
54778
+ selectedReceiverKey = _useState10[0],
54779
+ setSelectedReceiverKey = _useState10[1];
54780
+ var _useState11 = useState(null),
54781
+ _useState12 = _slicedToArray(_useState11, 2),
54782
+ selectedHandler = _useState12[0],
54783
+ setSelectedHandler = _useState12[1];
54784
+
54785
+ // Re-anchor selection if the previously-selected widget disappeared
54786
+ // (workspace switched, widget deleted, etc.).
54787
+ useMemo(function () {
54788
+ if (selectedReceiverKey && !receivers.some(function (r) {
54789
+ return r.key === selectedReceiverKey;
54790
+ })) {
54791
+ var _receivers$2;
54792
+ setSelectedReceiverKey(((_receivers$2 = receivers[0]) === null || _receivers$2 === void 0 ? void 0 : _receivers$2.key) || null);
54793
+ }
54794
+ }, [receivers, selectedReceiverKey]);
54795
+
54796
+ // Receiver lookup (by composite key) for label resolution in chips.
54797
+ var receiverByKey = useMemo(function () {
54798
+ var m = new Map();
54799
+ var _iterator5 = _createForOfIteratorHelper$4(receivers),
54800
+ _step5;
54801
+ try {
54802
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
54803
+ var r = _step5.value;
54804
+ m.set(r.key, r);
54805
+ }
54806
+ } catch (err) {
54807
+ _iterator5.e(err);
54808
+ } finally {
54809
+ _iterator5.f();
54810
+ }
54811
+ return m;
54812
+ }, [receivers]);
54813
+ if (receivers.length === 0) {
54814
+ return /*#__PURE__*/jsx("div", {
54815
+ className: "flex items-center justify-center h-full text-sm opacity-60 text-center",
54816
+ children: /*#__PURE__*/jsxs("div", {
54817
+ children: ["No widgets in this dashboard declare event handlers.", emitters.length > 0 && /*#__PURE__*/jsxs("div", {
54818
+ className: "mt-2",
54819
+ children: ["(", emitters.length, " widget", emitters.length === 1 ? "" : "s", " emit events but nothing is set up to receive.)"]
54820
+ })]
54821
+ })
54822
+ });
54823
+ }
54824
+ var selectedReceiver = selectedReceiverKey ? receiverByKey.get(selectedReceiverKey) || null : null;
54825
+ return /*#__PURE__*/jsx("div", {
54826
+ className: "flex flex-col gap-3 h-full min-h-0",
54827
+ children: /*#__PURE__*/jsxs("div", {
54828
+ className: "flex flex-row gap-3 flex-1 min-h-0",
54829
+ children: [/*#__PURE__*/jsxs("div", {
54830
+ className: "w-56 flex-shrink-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
54831
+ children: [/*#__PURE__*/jsx("div", {
54832
+ className: "px-3 py-2 text-xs font-semibold opacity-50 uppercase tracking-wider border-b border-white/10",
54833
+ children: "Widgets"
54834
+ }), /*#__PURE__*/jsx("div", {
54835
+ className: "overflow-y-auto flex-1",
54836
+ children: receivers.map(function (r) {
54837
+ var isActive = r.key === selectedReceiverKey;
54838
+ return /*#__PURE__*/jsx("button", {
54839
+ type: "button",
54840
+ onClick: function onClick() {
54841
+ return setSelectedReceiverKey(r.key);
54842
+ },
54843
+ className: "w-full text-left px-3 py-2 border-l-2 ".concat(isActive ? "bg-indigo-900/30 border-indigo-400" : "border-transparent hover:bg-white/5"),
54844
+ children: /*#__PURE__*/jsx("span", {
54845
+ className: "text-sm font-medium truncate",
54846
+ children: r.label
54847
+ })
54848
+ }, r.key);
54849
+ })
54850
+ })]
54851
+ }), selectedReceiver ? /*#__PURE__*/jsxs(Fragment, {
54852
+ children: [/*#__PURE__*/jsx(HandlersColumn, {
54853
+ receiver: selectedReceiver,
54854
+ myWiring: wiring.filter(function (w) {
54855
+ return w.receiverComponent === selectedReceiver.component && String(w.receiverItemId) === String(selectedReceiver.itemId);
54856
+ }),
54857
+ selectedHandler: selectedHandler && selectedReceiver.eventHandlers.includes(selectedHandler) ? selectedHandler : null,
54858
+ onSelectHandler: setSelectedHandler
54859
+ }), /*#__PURE__*/jsx(EventsColumn, {
54860
+ receiver: selectedReceiver,
54861
+ handlerName: selectedHandler && selectedReceiver.eventHandlers.includes(selectedHandler) ? selectedHandler : null,
54862
+ myWiring: wiring.filter(function (w) {
54863
+ return w.receiverComponent === selectedReceiver.component && String(w.receiverItemId) === String(selectedReceiver.itemId);
54864
+ }),
54865
+ emitters: emitters,
54866
+ onAdd: onAdd,
54867
+ onRemove: onRemove
54868
+ })]
54869
+ }) : /*#__PURE__*/jsx("div", {
54870
+ className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg flex items-center justify-center text-sm opacity-60",
54871
+ children: "Pick a widget on the left to wire its handlers."
54872
+ })]
54873
+ })
54874
+ });
54875
+ }
54876
+
54877
+ /**
54878
+ * Second column (within ListenersTab): the selected receiver's
54879
+ * handlers with connection counts. Picking one lights up the
54880
+ * third column. Matches the left-column look from
54881
+ * PanelEditItemHandlers.
54882
+ */
54883
+ function HandlersColumn(_ref8) {
54884
+ var receiver = _ref8.receiver,
54885
+ myWiring = _ref8.myWiring,
54886
+ selectedHandler = _ref8.selectedHandler,
54887
+ onSelectHandler = _ref8.onSelectHandler;
54888
+ var countsByHandler = useMemo(function () {
54889
+ var m = new Map();
54890
+ var _iterator6 = _createForOfIteratorHelper$4(myWiring),
54891
+ _step6;
54892
+ try {
54893
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
54894
+ var w = _step6.value;
54895
+ m.set(w.handlerName, (m.get(w.handlerName) || 0) + 1);
54896
+ }
54897
+ } catch (err) {
54898
+ _iterator6.e(err);
54899
+ } finally {
54900
+ _iterator6.f();
54901
+ }
54902
+ return m;
54903
+ }, [myWiring]);
54904
+ return /*#__PURE__*/jsxs("div", {
54905
+ className: "w-56 flex-shrink-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
54906
+ children: [/*#__PURE__*/jsx("div", {
54907
+ className: "px-3 py-2 text-xs font-semibold opacity-50 uppercase tracking-wider border-b border-white/10",
54908
+ children: "Event Handlers"
54909
+ }), /*#__PURE__*/jsx("div", {
54910
+ className: "overflow-y-auto flex-1",
54911
+ children: receiver.eventHandlers.length === 0 ? /*#__PURE__*/jsx("div", {
54912
+ className: "text-xs opacity-50 text-center py-6 px-3",
54913
+ children: "This widget declares no event handlers."
54914
+ }) : receiver.eventHandlers.map(function (h) {
54915
+ var isActive = h === selectedHandler;
54916
+ var count = countsByHandler.get(h) || 0;
54917
+ return /*#__PURE__*/jsxs("button", {
54918
+ type: "button",
54919
+ onClick: function onClick() {
54920
+ return onSelectHandler(h);
54921
+ },
54922
+ className: "w-full text-left px-3 py-2 text-sm flex items-center justify-between gap-2 border-l-2 ".concat(isActive ? "bg-indigo-900/30 border-indigo-400" : "border-transparent hover:bg-white/5"),
54923
+ children: [/*#__PURE__*/jsxs("span", {
54924
+ className: "flex items-center gap-2 min-w-0",
54925
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
54926
+ icon: "bolt",
54927
+ className: "h-3 w-3 opacity-60 flex-shrink-0"
54928
+ }), /*#__PURE__*/jsx("code", {
54929
+ className: "truncate",
54930
+ children: h
53926
54931
  })]
54932
+ }), /*#__PURE__*/jsx("span", {
54933
+ className: "text-xs opacity-60 flex-shrink-0",
54934
+ children: count
53927
54935
  })]
53928
- }, "".concat(row.widgetId, ":").concat(row.providerType));
54936
+ }, h);
54937
+ })
54938
+ })]
54939
+ });
54940
+ }
54941
+
54942
+ /**
54943
+ * Third column: for the selected (receiver, handler), show every
54944
+ * emitter widget as a section with a checkbox list of its events.
54945
+ * Checked = wired; toggling commits an add/remove. Mirrors the
54946
+ * right-column UX of PanelEditItemHandlers.
54947
+ */
54948
+ function EventsColumn(_ref9) {
54949
+ var receiver = _ref9.receiver,
54950
+ handlerName = _ref9.handlerName,
54951
+ myWiring = _ref9.myWiring,
54952
+ emitters = _ref9.emitters,
54953
+ onAdd = _ref9.onAdd,
54954
+ onRemove = _ref9.onRemove;
54955
+ // Wired-for-this-handler: dedupe defensively (legacy workspaces
54956
+ // occasionally contain duplicate entries under the same handler).
54957
+ var wiredHere = useMemo(function () {
54958
+ var seen = new Set();
54959
+ var out = [];
54960
+ var _iterator7 = _createForOfIteratorHelper$4(myWiring),
54961
+ _step7;
54962
+ try {
54963
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
54964
+ var w = _step7.value;
54965
+ if (w.handlerName !== handlerName) continue;
54966
+ var key = "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
54967
+ if (seen.has(key)) continue;
54968
+ seen.add(key);
54969
+ out.push(w);
54970
+ }
54971
+ } catch (err) {
54972
+ _iterator7.e(err);
54973
+ } finally {
54974
+ _iterator7.f();
54975
+ }
54976
+ return out;
54977
+ }, [myWiring, handlerName]);
54978
+ var wiredKeys = useMemo(function () {
54979
+ return new Set(wiredHere.map(function (w) {
54980
+ return "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
54981
+ }));
54982
+ }, [wiredHere]);
54983
+
54984
+ // Separate orphans — these reference sources no longer in the
54985
+ // workspace, so they don't appear in the emitter sections below.
54986
+ wiredHere.filter(function (w) {
54987
+ return w.isOrphan;
54988
+ });
54989
+ if (!handlerName) {
54990
+ return /*#__PURE__*/jsx("div", {
54991
+ className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg flex items-center justify-center text-sm opacity-60",
54992
+ children: "Select a handler to view available events."
54993
+ });
54994
+ }
54995
+ function toggle(source) {
54996
+ var key = "".concat(source.sourceComponent, "|").concat(source.sourceItemId, "|").concat(source.eventName);
54997
+ if (wiredKeys.has(key)) {
54998
+ var existing = wiredHere.find(function (w) {
54999
+ return "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName) === key;
55000
+ });
55001
+ onRemove(existing);
55002
+ } else {
55003
+ onAdd({
55004
+ receiverItemId: receiver.itemId,
55005
+ receiverComponent: receiver.component,
55006
+ handlerName: handlerName,
55007
+ sourceComponent: source.sourceComponent,
55008
+ sourceItemId: source.sourceItemId,
55009
+ eventName: source.eventName
55010
+ });
55011
+ }
55012
+ }
55013
+
55014
+ // Hide the selected receiver from its own emitter list — a widget
55015
+ // listening to its own events is almost always a mistake.
55016
+ var emittersForList = emitters.filter(function (e) {
55017
+ return !(e.component === receiver.component && String(e.itemId) === String(receiver.itemId));
55018
+ });
55019
+ return /*#__PURE__*/jsxs("div", {
55020
+ className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
55021
+ children: [/*#__PURE__*/jsxs("div", {
55022
+ className: "flex-shrink-0 px-4 py-2 border-b border-white/10 text-xs opacity-60",
55023
+ children: ["Check an event to fire", " ", /*#__PURE__*/jsx("code", {
55024
+ className: "text-xs",
55025
+ children: handlerName
55026
+ }), " on", " ", /*#__PURE__*/jsx("span", {
55027
+ className: "font-medium",
55028
+ children: receiver.label
55029
+ }), "."]
55030
+ }), /*#__PURE__*/jsx("div", {
55031
+ className: "flex-1 overflow-y-auto p-4 space-y-5",
55032
+ children: emittersForList.length === 0 ? /*#__PURE__*/jsx("div", {
55033
+ className: "text-sm opacity-60",
55034
+ children: "No other widgets in this dashboard emit events."
55035
+ }) : emittersForList.map(function (e) {
55036
+ return /*#__PURE__*/jsxs("div", {
55037
+ className: "space-y-1",
55038
+ children: [/*#__PURE__*/jsx("div", {
55039
+ className: "text-xs font-semibold opacity-50 uppercase tracking-wider",
55040
+ children: e.label
55041
+ }), e.events.map(function (eventName) {
55042
+ var key = "".concat(e.component, "|").concat(e.itemId, "|").concat(eventName);
55043
+ var selected = wiredKeys.has(key);
55044
+ return /*#__PURE__*/jsxs("label", {
55045
+ className: "flex items-center gap-3 px-3 py-1.5 rounded-md cursor-pointer text-sm ".concat(selected ? "opacity-100" : "opacity-70 hover:opacity-100"),
55046
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
55047
+ icon: selected ? "square-check" : "square",
55048
+ className: "h-4 w-4 flex-shrink-0",
55049
+ onClick: function onClick(ev) {
55050
+ ev.preventDefault();
55051
+ toggle({
55052
+ sourceComponent: e.component,
55053
+ sourceItemId: e.itemId,
55054
+ eventName: eventName
55055
+ });
55056
+ }
55057
+ }), /*#__PURE__*/jsx("span", {
55058
+ children: eventName
55059
+ })]
55060
+ }, key);
55061
+ })]
55062
+ }, e.key || "".concat(e.component, "|").concat(e.itemId));
53929
55063
  })
53930
55064
  })]
53931
55065
  });
@@ -54192,7 +55326,7 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
54192
55326
  _useState42 = _slicedToArray(_useState41, 2),
54193
55327
  isConfigModalOpen = _useState42[0],
54194
55328
  setIsConfigModalOpen = _useState42[1];
54195
- var configModalAutoOpenedFor = useRef(new Set());
55329
+ useRef(new Set());
54196
55330
  var _useState43 = useState(new Set()),
54197
55331
  _useState44 = _slicedToArray(_useState43, 2),
54198
55332
  dismissedUnresolvedForWorkspace = _useState44[0],
@@ -54727,7 +55861,29 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
54727
55861
  }
54728
55862
  }
54729
55863
 
54730
- // ─── Unresolved providers (Dashboard Config modal + auto-open) ───
55864
+ // ─── Bulk listener binding save ──────────────────────────────────
55865
+ // Takes { adds, removes } from the Dashboard Config modal's
55866
+ // Listeners tab and writes the updated workspace once. Applies the
55867
+ // delta via applyWiringChanges (uses item.listeners directly so the
55868
+ // existing PanelEditItemHandlers / runtime stays consistent).
55869
+ function handleBulkListenerBindings(changes) {
55870
+ if (!workspaceSelected || !dashApi || !(credentials !== null && credentials !== void 0 && credentials.appId)) return;
55871
+ if (!changes || (!changes.adds || changes.adds.length === 0) && (!changes.removes || changes.removes.length === 0)) {
55872
+ return;
55873
+ }
55874
+ var updatedWorkspace = applyWiringChanges(workspaceSelected, changes);
55875
+ updateTabWorkspace(updatedWorkspace);
55876
+ try {
55877
+ dashApi.saveWorkspace(credentials.appId, updatedWorkspace, function (e, result) {
55878
+ return (void 0);
55879
+ }, function (e, error) {
55880
+ return (void 0);
55881
+ });
55882
+ } catch (e) {
55883
+ }
55884
+ }
55885
+
55886
+ // ─── Unresolved providers + listener orphans (modal + auto-open) ─
54731
55887
  var unresolvedProviders = useMemo(function () {
54732
55888
  return getUnresolvedProviders({
54733
55889
  workspace: workspaceSelected,
@@ -54738,19 +55894,16 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
54738
55894
  }
54739
55895
  });
54740
55896
  }, [workspaceSelected, appContext === null || appContext === void 0 ? void 0 : appContext.providers]);
54741
- var unresolvedCount = unresolvedProviders.length;
55897
+ var unresolvedProvidersCount = unresolvedProviders.length;
55898
+ // Listener orphans are pruned in WorkspaceModel / DashboardModel at
55899
+ // load time, so the badge only counts unresolved provider bindings.
55900
+ var unresolvedCount = unresolvedProvidersCount;
54742
55901
 
54743
- // Auto-open the Dashboard Config modal the FIRST time a workspace with
54744
- // unresolved providers is loaded in this session. Tracked per workspace
54745
- // id so switching tabs or re-selecting doesn't nag the user every time.
54746
- useEffect(function () {
54747
- if (!(workspaceSelected !== null && workspaceSelected !== void 0 && workspaceSelected.id)) return;
54748
- if (unresolvedCount === 0) return;
54749
- if (configModalAutoOpenedFor.current.has(workspaceSelected.id)) return;
54750
- if (dismissedUnresolvedForWorkspace.has(workspaceSelected.id)) return;
54751
- configModalAutoOpenedFor.current.add(workspaceSelected.id);
54752
- setIsConfigModalOpen(true);
54753
- }, [workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.id, unresolvedCount, dismissedUnresolvedForWorkspace]);
55902
+ // (No auto-open.) Earlier versions popped the modal on first load
55903
+ // when anything was unresolved turned out to be jarring,
55904
+ // especially on dashboards that had a long-standing orphan list.
55905
+ // Awareness is delivered passively now: the gear icon's amber dot
55906
+ // and the banner. The user opens the modal when they're ready.
54754
55907
 
54755
55908
  // ─── Sidebar State ────────────────────────────────────────────────
54756
55909
  var sidebarEnabled = (workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.sidebarEnabled) || false;
@@ -55502,7 +56655,7 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
55502
56655
  onSidebarChange: popout ? null : handleSidebarToggle,
55503
56656
  scrollableEnabled: workspacePages.length <= 1 ? getRootScrollable() : undefined,
55504
56657
  onScrollableChange: workspacePages.length <= 1 && !popout ? handleScrollableChange : null,
55505
- onOpenConfig: popout ? null : function () {
56658
+ onOpenConfig: popout || previewMode ? null : function () {
55506
56659
  return setIsConfigModalOpen(true);
55507
56660
  },
55508
56661
  configUnresolvedCount: unresolvedCount
@@ -55536,14 +56689,14 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
55536
56689
  className: "h-3 w-3"
55537
56690
  })
55538
56691
  })]
55539
- }), unresolvedCount > 0 && !dismissedUnresolvedForWorkspace.has(workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.id) && /*#__PURE__*/jsxs("div", {
56692
+ }), unresolvedCount > 0 && !previewMode && !dismissedUnresolvedForWorkspace.has(workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.id) && /*#__PURE__*/jsxs("div", {
55540
56693
  className: "flex items-center gap-2 px-4 py-2 bg-amber-500/10 border-b border-amber-500/20 flex-shrink-0",
55541
56694
  children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
55542
56695
  icon: "triangle-exclamation",
55543
56696
  className: "h-3.5 w-3.5 text-amber-400 flex-shrink-0"
55544
- }), /*#__PURE__*/jsxs("span", {
56697
+ }), /*#__PURE__*/jsx("span", {
55545
56698
  className: "text-xs text-amber-300/90 flex-1",
55546
- children: [unresolvedCount, " widget", unresolvedCount === 1 ? "" : "s", " in this dashboard need a provider wired up."]
56699
+ children: [unresolvedProvidersCount > 0 && "".concat(unresolvedProvidersCount, " widget").concat(unresolvedProvidersCount === 1 ? "" : "s", " need").concat(unresolvedProvidersCount === 1 ? "s" : "", " a provider")].filter(Boolean).join(" · ")
55547
56700
  }), /*#__PURE__*/jsx("button", {
55548
56701
  type: "button",
55549
56702
  onClick: function onClick() {
@@ -55732,7 +56885,12 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
55732
56885
  var _ComponentManager$com2;
55733
56886
  return name && ((_ComponentManager$com2 = ComponentManager.componentMap()[name]) === null || _ComponentManager$com2 === void 0 ? void 0 : _ComponentManager$com2.providers) || [];
55734
56887
  },
55735
- onSaveBindings: handleBulkProviderBindings
56888
+ getWidgetConfig: function getWidgetConfig(name) {
56889
+ return name && ComponentManager.componentMap()[name] || null;
56890
+ },
56891
+ onSaveBindings: handleBulkProviderBindings,
56892
+ onSaveListeners: handleBulkListenerBindings,
56893
+ initialTab: "providers"
55736
56894
  })]
55737
56895
  })]
55738
56896
  }), !popout && /*#__PURE__*/jsx(DashCommandPalette, {
@@ -55976,10 +57134,7 @@ var DashboardHeader = function DashboardHeader(_ref) {
55976
57134
  className: "font-bold text-base"
55977
57135
  }), /*#__PURE__*/jsxs("div", {
55978
57136
  className: "flex flex-row items-center gap-1",
55979
- children: [onOpenConfig !== null && /*#__PURE__*/jsx(DashboardConfigButton, {
55980
- onClick: onOpenConfig,
55981
- unresolvedCount: configUnresolvedCount
55982
- }), onPopout !== null && /*#__PURE__*/jsx(ButtonIcon, {
57137
+ children: [onPopout !== null && /*#__PURE__*/jsx(ButtonIcon, {
55983
57138
  icon: "arrow-up-right-from-square",
55984
57139
  onClick: onPopout,
55985
57140
  hoverBackgroundColor: "hover:bg-indigo-700"