@trops/dash-core 0.1.442 → 0.1.444

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3075,9 +3075,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
3075
3075
 
3076
3076
  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; }
3077
3077
  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; }
3078
- function _createForOfIteratorHelper$v(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$v(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3079
- function _unsupportedIterableToArray$v(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$v(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$v(r, a) : void 0; } }
3080
- function _arrayLikeToArray$v(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; }
3078
+ function _createForOfIteratorHelper$x(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$x(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3079
+ function _unsupportedIterableToArray$x(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$x(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$x(r, a) : void 0; } }
3080
+ function _arrayLikeToArray$x(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; }
3081
3081
  /**
3082
3082
  * Layout template definitions for the dashboard template picker.
3083
3083
  *
@@ -3351,7 +3351,7 @@ function createLayoutFromTemplate(template) {
3351
3351
  cols: template.cols,
3352
3352
  gap: "gap-2"
3353
3353
  };
3354
- var _iterator = _createForOfIteratorHelper$v(template.cells),
3354
+ var _iterator = _createForOfIteratorHelper$x(template.cells),
3355
3355
  _step;
3356
3356
  try {
3357
3357
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -4282,9 +4282,9 @@ var RegistryAuthModal = function RegistryAuthModal(_ref) {
4282
4282
  });
4283
4283
  };
4284
4284
 
4285
- function _createForOfIteratorHelper$u(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$u(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4286
- function _unsupportedIterableToArray$u(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$u(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$u(r, a) : void 0; } }
4287
- function _arrayLikeToArray$u(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; }
4285
+ function _createForOfIteratorHelper$w(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$w(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4286
+ function _unsupportedIterableToArray$w(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$w(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$w(r, a) : void 0; } }
4287
+ function _arrayLikeToArray$w(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4288
4288
  function ownKeys$X(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4289
4289
  function _objectSpread$X(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4290
4290
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
@@ -4525,7 +4525,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
4525
4525
  toInstall = 0,
4526
4526
  unavailable = 0,
4527
4527
  hasUnavailableRequired = false;
4528
- var _iterator = _createForOfIteratorHelper$u(widgetDeps),
4528
+ var _iterator = _createForOfIteratorHelper$w(widgetDeps),
4529
4529
  _step;
4530
4530
  try {
4531
4531
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -6300,9 +6300,9 @@ function cleanIpcError(message) {
6300
6300
  return match ? match[1] : message;
6301
6301
  }
6302
6302
 
6303
- 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; } } }; }
6304
- 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; } }
6305
- 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; }
6303
+ function _createForOfIteratorHelper$v(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$v(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; } } }; }
6304
+ function _unsupportedIterableToArray$v(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$v(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$v(r, a) : void 0; } }
6305
+ function _arrayLikeToArray$v(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; }
6306
6306
 
6307
6307
  /**
6308
6308
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -6416,13 +6416,13 @@ var useRegistrySearch = function useRegistrySearch() {
6416
6416
  return c.toLowerCase();
6417
6417
  }));
6418
6418
  widgets = [];
6419
- _iterator = _createForOfIteratorHelper$t(pkgs);
6419
+ _iterator = _createForOfIteratorHelper$v(pkgs);
6420
6420
  try {
6421
6421
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
6422
6422
  pkg = _step.value;
6423
6423
  // Compute missing APIs for the entire package
6424
6424
  allApiProviders = [];
6425
- _iterator2 = _createForOfIteratorHelper$t(pkg.providers || []);
6425
+ _iterator2 = _createForOfIteratorHelper$v(pkg.providers || []);
6426
6426
  try {
6427
6427
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
6428
6428
  p = _step2.value;
@@ -6435,11 +6435,11 @@ var useRegistrySearch = function useRegistrySearch() {
6435
6435
  } finally {
6436
6436
  _iterator2.f();
6437
6437
  }
6438
- _iterator3 = _createForOfIteratorHelper$t(pkg.widgets || []);
6438
+ _iterator3 = _createForOfIteratorHelper$v(pkg.widgets || []);
6439
6439
  try {
6440
6440
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6441
6441
  w = _step3.value;
6442
- _iterator5 = _createForOfIteratorHelper$t(w.providers || []);
6442
+ _iterator5 = _createForOfIteratorHelper$v(w.providers || []);
6443
6443
  try {
6444
6444
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
6445
6445
  _p = _step5.value;
@@ -6461,7 +6461,7 @@ var useRegistrySearch = function useRegistrySearch() {
6461
6461
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
6462
6462
  return !capSet.has(api.toLowerCase());
6463
6463
  });
6464
- _iterator4 = _createForOfIteratorHelper$t(pkg.widgets || []);
6464
+ _iterator4 = _createForOfIteratorHelper$v(pkg.widgets || []);
6465
6465
  try {
6466
6466
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
6467
6467
  widget = _step4.value;
@@ -7082,9 +7082,9 @@ function applyFilters(items, filters, mode) {
7082
7082
  });
7083
7083
  }
7084
7084
 
7085
- 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; } } }; }
7086
- 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; } }
7087
- 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; }
7085
+ function _createForOfIteratorHelper$u(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$u(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7086
+ function _unsupportedIterableToArray$u(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$u(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$u(r, a) : void 0; } }
7087
+ function _arrayLikeToArray$u(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7088
7088
  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; }
7089
7089
  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; }
7090
7090
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
@@ -7308,7 +7308,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
7308
7308
  installedNames = new Set(installedList.map(function (w) {
7309
7309
  return w.name;
7310
7310
  }));
7311
- _iterator = _createForOfIteratorHelper$s(state.selectedWidgets);
7311
+ _iterator = _createForOfIteratorHelper$u(state.selectedWidgets);
7312
7312
  _context2.prev = 13;
7313
7313
  _iterator.s();
7314
7314
  case 14:
@@ -12996,9 +12996,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
12996
12996
  };
12997
12997
 
12998
12998
  var _excluded$6 = ["rows", "cols"];
12999
- 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; } } }; }
13000
- 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; } }
13001
- 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; }
12999
+ 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; } } }; }
13000
+ 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; } }
13001
+ 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; }
13002
13002
  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; }
13003
13003
  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; }
13004
13004
  var defaultGrid = {
@@ -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$r(sortedKeys),
13154
+ var _iterator = _createForOfIteratorHelper$t(sortedKeys),
13155
13155
  _step;
13156
13156
  try {
13157
13157
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13624,9 +13624,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13624
13624
  });
13625
13625
  };
13626
13626
 
13627
- 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; } } }; }
13628
- 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; } }
13629
- 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; }
13627
+ 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; } } }; }
13628
+ 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; } }
13629
+ 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; }
13630
13630
  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; }
13631
13631
  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; }
13632
13632
  var DAYS = [{
@@ -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$q(tasks || []),
13958
+ var _iterator = _createForOfIteratorHelper$s(tasks || []),
13959
13959
  _step;
13960
13960
  try {
13961
13961
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -14164,9 +14164,59 @@ function pickWidgetRef(item) {
14164
14164
  return parts.length === 3 ? c : null;
14165
14165
  }
14166
14166
 
14167
- 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; } } }; }
14168
- 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; } }
14169
- 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; }
14167
+ /**
14168
+ * Cross-dashboard isolation gate. Layout items carry a `dashboardId`
14169
+ * stamp from `LayoutModel`; this helper drops items whose stamp
14170
+ * doesn't match the surrounding workspace's id. Used at every
14171
+ * workspace-walking surface (Listeners / Providers / Widgets tabs,
14172
+ * bulk-edit panes, dependency resolution) to prevent items leaked
14173
+ * from another dashboard's tree from showing up.
14174
+ *
14175
+ * STRICT mode (workspace has an id): item must have a matching
14176
+ * `dashboardId`. No dashboardId → reject. Different dashboardId → reject.
14177
+ *
14178
+ * PERMISSIVE mode (workspace has no id — synthetic test fixtures
14179
+ * and in-memory sandboxes): everything passes.
14180
+ *
14181
+ * @param {Object} item
14182
+ * @param {Object} workspace
14183
+ * @returns {boolean}
14184
+ */
14185
+ function belongsToWorkspace(item, workspace) {
14186
+ var wsId = workspace === null || workspace === void 0 ? void 0 : workspace.id;
14187
+ if (wsId === undefined || wsId === null) return true;
14188
+ var itemDashId = item === null || item === void 0 ? void 0 : item.dashboardId;
14189
+ if (itemDashId === undefined || itemDashId === null) return false;
14190
+ return String(itemDashId) === String(wsId);
14191
+ }
14192
+ var FRAMEWORK_CONTAINER_COMPONENTS$1 = new Set(["LayoutGridContainer", "Container", "LayoutContainer"]);
14193
+
14194
+ /**
14195
+ * Is this layout item a USER widget (i.e. something the user added
14196
+ * via the widget sidebar / drag-drop)? False for framework chrome —
14197
+ * `LayoutGridContainer`, `Container`, `LayoutContainer` — which the
14198
+ * dashboard config UI shouldn't expose as a configurable widget,
14199
+ * even though the layout walker visits them.
14200
+ *
14201
+ * Filter is by COMPONENT NAME only, not by `item.type`.
14202
+ * `LayoutModel` defaults `type: "layout"` when the source data
14203
+ * doesn't set it explicitly (`layout.type = "type" in obj ? obj.type
14204
+ * : "layout"`), and most persisted user widgets fall into that
14205
+ * default — so a `type !== "widget"` check would silently drop
14206
+ * legitimate widgets from every list.
14207
+ *
14208
+ * @param {Object} item
14209
+ * @returns {boolean}
14210
+ */
14211
+ function isUserWidget(item) {
14212
+ if (!item || _typeof(item) !== "object" || !item.component) return false;
14213
+ if (FRAMEWORK_CONTAINER_COMPONENTS$1.has(item.component)) return false;
14214
+ return true;
14215
+ }
14216
+
14217
+ 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; } } }; }
14218
+ 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; } }
14219
+ 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; }
14170
14220
 
14171
14221
  /**
14172
14222
  * Resolve which provider name a given widget instance would bind to for
@@ -14198,7 +14248,7 @@ function resolveProviderName(_ref) {
14198
14248
  // array. Support both because different callers shape it either way.
14199
14249
  if (appProviders) {
14200
14250
  if (Array.isArray(appProviders)) {
14201
- var _iterator = _createForOfIteratorHelper$p(appProviders),
14251
+ var _iterator = _createForOfIteratorHelper$r(appProviders),
14202
14252
  _step;
14203
14253
  try {
14204
14254
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -14258,7 +14308,7 @@ function forEachWidget(workspace, visit) {
14258
14308
  };
14259
14309
  var _walk = function walk(items) {
14260
14310
  if (!Array.isArray(items)) return;
14261
- var _iterator2 = _createForOfIteratorHelper$p(items),
14311
+ var _iterator2 = _createForOfIteratorHelper$r(items),
14262
14312
  _step2;
14263
14313
  try {
14264
14314
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -14288,7 +14338,7 @@ function forEachWidget(workspace, visit) {
14288
14338
  };
14289
14339
  _walk(workspace.layout);
14290
14340
  if (Array.isArray(workspace.pages)) {
14291
- var _iterator3 = _createForOfIteratorHelper$p(workspace.pages),
14341
+ var _iterator3 = _createForOfIteratorHelper$r(workspace.pages),
14292
14342
  _step3;
14293
14343
  try {
14294
14344
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -14327,10 +14377,12 @@ function getUnresolvedProviders(_ref2) {
14327
14377
  if (!workspace || typeof getWidgetRequirements !== "function") return [];
14328
14378
  var unresolved = [];
14329
14379
  forEachWidget(workspace, function (item) {
14380
+ if (!isUserWidget(item)) return;
14381
+ if (!belongsToWorkspace(item, workspace)) return;
14330
14382
  var requirements = getWidgetRequirements(item.component) || [];
14331
14383
  if (!Array.isArray(requirements) || requirements.length === 0) return;
14332
14384
  var widgetId = item.uuidString || item.uuid || item.id || null;
14333
- var _iterator4 = _createForOfIteratorHelper$p(requirements),
14385
+ var _iterator4 = _createForOfIteratorHelper$r(requirements),
14334
14386
  _step4;
14335
14387
  try {
14336
14388
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -14371,7 +14423,7 @@ function getUnresolvedProviders(_ref2) {
14371
14423
  */
14372
14424
  function groupByProviderType(unresolved) {
14373
14425
  var byType = new Map();
14374
- var _iterator5 = _createForOfIteratorHelper$p(unresolved || []),
14426
+ var _iterator5 = _createForOfIteratorHelper$r(unresolved || []),
14375
14427
  _step5;
14376
14428
  try {
14377
14429
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -14402,10 +14454,12 @@ function getAllProviderBindings(_ref3) {
14402
14454
  if (!workspace || typeof getWidgetRequirements !== "function") return [];
14403
14455
  var bindings = [];
14404
14456
  forEachWidget(workspace, function (item) {
14457
+ if (!isUserWidget(item)) return;
14458
+ if (!belongsToWorkspace(item, workspace)) return;
14405
14459
  var requirements = getWidgetRequirements(item.component) || [];
14406
14460
  if (!Array.isArray(requirements) || requirements.length === 0) return;
14407
14461
  var widgetId = item.uuidString || item.uuid || item.id || null;
14408
- var _iterator6 = _createForOfIteratorHelper$p(requirements),
14462
+ var _iterator6 = _createForOfIteratorHelper$r(requirements),
14409
14463
  _step6;
14410
14464
  try {
14411
14465
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -14445,9 +14499,9 @@ function getAllProviderBindings(_ref3) {
14445
14499
 
14446
14500
  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; }
14447
14501
  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; }
14448
- 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; } } }; }
14449
- 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; } }
14450
- 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; }
14502
+ 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; } } }; }
14503
+ 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; } }
14504
+ 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; }
14451
14505
  var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
14452
14506
 
14453
14507
  /** Parse "Component[itemId].event" → { component, itemId, event }. */
@@ -14534,29 +14588,9 @@ function eventHandlersOf(item, getWidgetConfig) {
14534
14588
  return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
14535
14589
  }
14536
14590
 
14537
- /**
14538
- * Cross-dashboard isolation gate. Every layout item carries a
14539
- * `dashboardId` stamp from `LayoutModel`; this helper drops items
14540
- * whose stamp doesn't match the surrounding workspace's id. Closes
14541
- * the loophole where a workspace tree somehow ends up holding refs
14542
- * to items from another dashboard (shared array reference, stale
14543
- * cache, etc.) — without this, the dashboard config modal's
14544
- * Listeners / Providers / Widgets tabs surface widgets the user
14545
- * isn't editing and can't actually wire to.
14546
- *
14547
- * Intentionally permissive: when the workspace has no id (synthetic
14548
- * test workspace, in-memory sandbox) OR an item has no dashboardId
14549
- * stamp (legacy pre-LayoutModel data), the item passes through.
14550
- * Strict matching only applies when BOTH have ids — which is the
14551
- * case in production after a full LayoutModel pass.
14552
- */
14553
- function belongsToWorkspace(item, workspace) {
14554
- var wsId = workspace === null || workspace === void 0 ? void 0 : workspace.id;
14555
- if (wsId === undefined || wsId === null) return true;
14556
- var itemDashId = item === null || item === void 0 ? void 0 : item.dashboardId;
14557
- if (itemDashId === undefined || itemDashId === null) return true;
14558
- return String(itemDashId) === String(wsId);
14559
- }
14591
+ // belongsToWorkspace lives in `widgetIdentity.js` (imported above) so
14592
+ // every workspace-walker Listeners, Providers, Widgets, bulk-edit
14593
+ // panes uses the same cross-dashboard isolation gate.
14560
14594
 
14561
14595
  /**
14562
14596
  * Every widget instance in the workspace that emits at least one event.
@@ -14568,6 +14602,7 @@ function belongsToWorkspace(item, workspace) {
14568
14602
  function getEmitters(workspace, getWidgetConfig) {
14569
14603
  var byKey = new Map();
14570
14604
  forEachWidget(workspace, function (item) {
14605
+ if (!isUserWidget(item)) return;
14571
14606
  if (!belongsToWorkspace(item, workspace)) return;
14572
14607
  var events = eventsOf(item, getWidgetConfig);
14573
14608
  if (events.length === 0) return;
@@ -14595,6 +14630,7 @@ function getEmitters(workspace, getWidgetConfig) {
14595
14630
  function getReceivers(workspace, getWidgetConfig) {
14596
14631
  var byKey = new Map();
14597
14632
  forEachWidget(workspace, function (item) {
14633
+ if (!isUserWidget(item)) return;
14598
14634
  if (!belongsToWorkspace(item, workspace)) return;
14599
14635
  var handlers = eventHandlersOf(item, getWidgetConfig);
14600
14636
  if (handlers.length === 0) return;
@@ -14635,7 +14671,7 @@ function getCurrentWiring(workspace) {
14635
14671
  // Live format is array; defensive guard for legacy object
14636
14672
  // form (a single source widget keyed under the handler).
14637
14673
  var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
14638
- var _iterator = _createForOfIteratorHelper$o(events),
14674
+ var _iterator = _createForOfIteratorHelper$q(events),
14639
14675
  _step;
14640
14676
  try {
14641
14677
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -14698,7 +14734,7 @@ function getOrphanedListeners(workspace, getWidgetConfig) {
14698
14734
  if (!byItemId.has(id)) byItemId.set(id, meta);
14699
14735
  });
14700
14736
  var orphans = [];
14701
- var _iterator2 = _createForOfIteratorHelper$o(wiring),
14737
+ var _iterator2 = _createForOfIteratorHelper$q(wiring),
14702
14738
  _step2;
14703
14739
  try {
14704
14740
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -14764,7 +14800,7 @@ function pruneDeadListenerReferences(workspace) {
14764
14800
  var liveKeys = new Set();
14765
14801
  var _walkForLive = function walkForLive(items) {
14766
14802
  if (!Array.isArray(items)) return;
14767
- var _iterator3 = _createForOfIteratorHelper$o(items),
14803
+ var _iterator3 = _createForOfIteratorHelper$q(items),
14768
14804
  _step3;
14769
14805
  try {
14770
14806
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -14785,7 +14821,7 @@ function pruneDeadListenerReferences(workspace) {
14785
14821
  };
14786
14822
  _walkForLive(workspace.layout);
14787
14823
  if (Array.isArray(workspace.pages)) {
14788
- var _iterator4 = _createForOfIteratorHelper$o(workspace.pages),
14824
+ var _iterator4 = _createForOfIteratorHelper$q(workspace.pages),
14789
14825
  _step4;
14790
14826
  try {
14791
14827
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -14802,7 +14838,7 @@ function pruneDeadListenerReferences(workspace) {
14802
14838
  var removed = 0;
14803
14839
  var _pruneListeners = function pruneListeners(items) {
14804
14840
  if (!Array.isArray(items)) return;
14805
- var _iterator5 = _createForOfIteratorHelper$o(items),
14841
+ var _iterator5 = _createForOfIteratorHelper$q(items),
14806
14842
  _step5;
14807
14843
  try {
14808
14844
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -14814,7 +14850,7 @@ function pruneDeadListenerReferences(workspace) {
14814
14850
  var events = item.listeners[handler];
14815
14851
  if (!Array.isArray(events)) continue;
14816
14852
  var kept = [];
14817
- var _iterator6 = _createForOfIteratorHelper$o(events),
14853
+ var _iterator6 = _createForOfIteratorHelper$q(events),
14818
14854
  _step6;
14819
14855
  try {
14820
14856
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -14849,7 +14885,7 @@ function pruneDeadListenerReferences(workspace) {
14849
14885
  };
14850
14886
  _pruneListeners(workspace.layout);
14851
14887
  if (Array.isArray(workspace.pages)) {
14852
- var _iterator7 = _createForOfIteratorHelper$o(workspace.pages),
14888
+ var _iterator7 = _createForOfIteratorHelper$q(workspace.pages),
14853
14889
  _step7;
14854
14890
  try {
14855
14891
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
@@ -14893,7 +14929,7 @@ function applyWiringChanges(workspace, _ref) {
14893
14929
  });
14894
14930
  return byReceiver.get(id);
14895
14931
  };
14896
- var _iterator8 = _createForOfIteratorHelper$o(adds),
14932
+ var _iterator8 = _createForOfIteratorHelper$q(adds),
14897
14933
  _step8;
14898
14934
  try {
14899
14935
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
@@ -14906,7 +14942,7 @@ function applyWiringChanges(workspace, _ref) {
14906
14942
  } finally {
14907
14943
  _iterator8.f();
14908
14944
  }
14909
- var _iterator9 = _createForOfIteratorHelper$o(removes),
14945
+ var _iterator9 = _createForOfIteratorHelper$q(removes),
14910
14946
  _step9;
14911
14947
  try {
14912
14948
  for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
@@ -14980,7 +15016,7 @@ function applyToItem(listeners, _ref2) {
14980
15016
  }
14981
15017
 
14982
15018
  // Removes first so a re-add (rare) lands.
14983
- var _iterator0 = _createForOfIteratorHelper$o(removes),
15019
+ var _iterator0 = _createForOfIteratorHelper$q(removes),
14984
15020
  _step0;
14985
15021
  try {
14986
15022
  var _loop = function _loop() {
@@ -15009,7 +15045,7 @@ function applyToItem(listeners, _ref2) {
15009
15045
  } finally {
15010
15046
  _iterator0.f();
15011
15047
  }
15012
- var _iterator1 = _createForOfIteratorHelper$o(adds),
15048
+ var _iterator1 = _createForOfIteratorHelper$q(adds),
15013
15049
  _step1;
15014
15050
  try {
15015
15051
  for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
@@ -17956,9 +17992,9 @@ function mcpJsonToFormState(jsonString, nextRowId) {
17956
17992
  return result;
17957
17993
  }
17958
17994
 
17959
- 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; } } }; }
17960
- 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; } }
17961
- 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; }
17995
+ 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; } } }; }
17996
+ 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; } }
17997
+ 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; }
17962
17998
  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; }
17963
17999
  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; }
17964
18000
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -18243,11 +18279,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
18243
18279
 
18244
18280
  // Flatten all widgets from all packages for the widget list
18245
18281
  flatWidgets = [];
18246
- _iterator = _createForOfIteratorHelper$n(result.packages || []);
18282
+ _iterator = _createForOfIteratorHelper$p(result.packages || []);
18247
18283
  try {
18248
18284
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
18249
18285
  pkg = _step.value;
18250
- _iterator2 = _createForOfIteratorHelper$n(pkg.widgets || []);
18286
+ _iterator2 = _createForOfIteratorHelper$p(pkg.widgets || []);
18251
18287
  try {
18252
18288
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
18253
18289
  widget = _step2.value;
@@ -20141,9 +20177,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
20141
20177
  };
20142
20178
  };
20143
20179
 
20144
- 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; } } }; }
20145
- 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; } }
20146
- 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; }
20180
+ 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; } } }; }
20181
+ 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; } }
20182
+ 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; }
20147
20183
  function formatCountdown(ms) {
20148
20184
  if (ms == null || ms < 0) return "--";
20149
20185
  if (ms < 1000) return "< 1s";
@@ -20260,7 +20296,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
20260
20296
 
20261
20297
  // Find soonest countdown among enabled tasks
20262
20298
  var soonestMs = null;
20263
- var _iterator = _createForOfIteratorHelper$m(enabledTasks),
20299
+ var _iterator = _createForOfIteratorHelper$o(enabledTasks),
20264
20300
  _step;
20265
20301
  try {
20266
20302
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -25517,9 +25553,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
25517
25553
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
25518
25554
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
25519
25555
 
25520
- 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; } } }; }
25521
- 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; } }
25522
- 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; }
25556
+ 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; } } }; }
25557
+ 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; } }
25558
+ 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; }
25523
25559
  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; }
25524
25560
  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; }
25525
25561
 
@@ -26142,7 +26178,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
26142
26178
  return selectable["delete"](cn);
26143
26179
  });
26144
26180
  var resolved = new Set();
26145
- var _iterator = _createForOfIteratorHelper$l(selectable),
26181
+ var _iterator = _createForOfIteratorHelper$n(selectable),
26146
26182
  _step;
26147
26183
  try {
26148
26184
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28551,9 +28587,9 @@ function migrateBareComponentName(componentMap, component) {
28551
28587
 
28552
28588
  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; }
28553
28589
  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; }
28554
- 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; } } }; }
28555
- 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; } }
28556
- 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; }
28590
+ 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; } } }; }
28591
+ 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; } }
28592
+ 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; }
28557
28593
  /**
28558
28594
  * The model for all layout components used primarily in the renderLayout method
28559
28595
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -28565,7 +28601,7 @@ function _arrayLikeToArray$k(r, a) { (null == a || a > r.length) && (a = r.lengt
28565
28601
  function sortObjectByKeys(obj) {
28566
28602
  var sortedKeys = Object.keys(obj).sort();
28567
28603
  var sortedObj = {};
28568
- var _iterator = _createForOfIteratorHelper$k(sortedKeys),
28604
+ var _iterator = _createForOfIteratorHelper$m(sortedKeys),
28569
28605
  _step;
28570
28606
  try {
28571
28607
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28648,16 +28684,34 @@ var LayoutModel = function LayoutModel(layoutItem, workspaceLayout, dashboardId)
28648
28684
  /**
28649
28685
  * @param {Boolean} canHaveChildren if the layout item can have children (if widget - cannot!)
28650
28686
  */
28651
- layout.canHaveChildren = "canHaveChildren" in obj ? obj.canHaveChildren !== undefined ? obj.canHaveChildren : obj.type !== "widget" : true;
28687
+ // Containers can have children; widgets cannot. Defaults derived
28688
+ // from component name so a pre-v0.1.444 layout item without an
28689
+ // explicit `canHaveChildren` field still classifies correctly.
28690
+ var isContainerComponent = obj.component === "LayoutGridContainer" || obj.component === "Container" || obj.component === "LayoutContainer";
28691
+ layout.canHaveChildren = "canHaveChildren" in obj ? obj.canHaveChildren !== undefined ? obj.canHaveChildren : isContainerComponent : isContainerComponent;
28652
28692
  layout.width = "width" in obj ? obj.width : "w-full";
28653
28693
  layout.height = "height" in obj ? obj.height : "h-full";
28654
28694
  layout.parent = "parent" in obj ? obj.parent : 0;
28655
28695
 
28656
28696
  /**
28657
28697
  * @param {String} type The type of the component (widget|grid|workspace|layout)
28658
- * Note: "grid" is the new primary container type, "layout"/"workspace" are deprecated
28698
+ *
28699
+ * Default is "widget" because users only ever ADD widgets via the
28700
+ * sidebar / drag-drop. Framework chrome (LayoutGridContainer,
28701
+ * Container, etc.) is created by the framework itself and ALWAYS
28702
+ * sets `type` explicitly. Defaulting to "widget" means user data
28703
+ * persisted without an explicit type is correctly typed as a widget
28704
+ * by every consumer (widgets list, listener filter, validation).
28705
+ *
28706
+ * Pre-v0.1.444 the default was "layout", which silently mistyped
28707
+ * thousands of widget instances and broke the WidgetsTab list
28708
+ * filter. The bare-component fallback of `obj.type ||
28709
+ * (FRAMEWORK_CONTAINERS.has(obj.component) ? "layout" : "widget")`
28710
+ * is a defensive snap-back: if a framework container was
28711
+ * persisted without a type, force the right one rather than
28712
+ * trust the new default.
28659
28713
  */
28660
- layout.type = "type" in obj ? obj.type : "layout";
28714
+ layout.type = "type" in obj ? obj.type : obj.component === "LayoutGridContainer" ? "grid" : obj.component === "Container" || obj.component === "LayoutContainer" ? "layout" : "widget";
28661
28715
 
28662
28716
  /**
28663
28717
  * @param {String} workspace The name of the Workspace the component belongs to (can exist in as a child)
@@ -28859,9 +28913,9 @@ var SettingsModel = function SettingsModel() {
28859
28913
  return obj;
28860
28914
  };
28861
28915
 
28862
- 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; } } }; }
28863
- 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; } }
28864
- 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; }
28916
+ 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; } } }; }
28917
+ 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; } }
28918
+ 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; }
28865
28919
 
28866
28920
  /**
28867
28921
  * Workspace-level pre-pass that migrates legacy bare component
@@ -28936,7 +28990,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
28936
28990
  };
28937
28991
  var _walk = function walk(items) {
28938
28992
  if (!Array.isArray(items)) return;
28939
- var _iterator = _createForOfIteratorHelper$j(items),
28993
+ var _iterator = _createForOfIteratorHelper$l(items),
28940
28994
  _step;
28941
28995
  try {
28942
28996
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28958,7 +29012,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
28958
29012
  };
28959
29013
  _walk(workspace.layout);
28960
29014
  if (Array.isArray(workspace.pages)) {
28961
- var _iterator2 = _createForOfIteratorHelper$j(workspace.pages),
29015
+ var _iterator2 = _createForOfIteratorHelper$l(workspace.pages),
28962
29016
  _step2;
28963
29017
  try {
28964
29018
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -28975,6 +29029,203 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
28975
29029
  return counts;
28976
29030
  }
28977
29031
 
29032
+ 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; } } }; }
29033
+ 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; } }
29034
+ 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; }
29035
+ /**
29036
+ * cleanForeignWidgetsFromWorkspace.js
29037
+ *
29038
+ * One-shot data cleanup that runs at workspace load time. Removes
29039
+ * any layout item whose `dashboardId` doesn't match the workspace's
29040
+ * own id. These are "foreign" items — leaked into this workspace's
29041
+ * tree by some earlier bug (most commonly a shared array reference
29042
+ * across two open dashboards' sidebar layouts).
29043
+ *
29044
+ * Without this pass, the items linger in `workspaces.json` forever
29045
+ * and re-appear in every Listeners / Providers / Widgets tab the
29046
+ * user opens. Filtering at the UI layer hides them but doesn't fix
29047
+ * the persistent state. This utility writes the corrupted items
29048
+ * out so the next save persists the cleaned shape.
29049
+ *
29050
+ * Mutates in place. Idempotent — running twice on a clean workspace
29051
+ * is a no-op. Returns a summary of what was removed for diagnostics
29052
+ * (callers can log it to surface the cleanup to the user).
29053
+ *
29054
+ * Items WITHOUT a `dashboardId` stamp are NOT removed — they're
29055
+ * either deeply-nested items LayoutModel didn't reach OR legacy
29056
+ * pre-stamping data. Stripping them would lose legitimate widgets.
29057
+ * They're stamped with the workspace's id instead, which is
29058
+ * idempotent and self-correcting.
29059
+ *
29060
+ * @param {Object} workspace - workspace object (mutated in place)
29061
+ * @returns {{ removed: number, stamped: number }}
29062
+ */
29063
+ function cleanForeignWidgetsFromWorkspace(workspace) {
29064
+ var summary = {
29065
+ removed: 0,
29066
+ stamped: 0
29067
+ };
29068
+ if (!workspace || workspace.id === undefined || workspace.id === null) {
29069
+ return summary;
29070
+ }
29071
+ var wsId = String(workspace.id);
29072
+ var _cleanList = function cleanList(items) {
29073
+ if (!Array.isArray(items)) return items;
29074
+ var kept = [];
29075
+ var _iterator = _createForOfIteratorHelper$k(items),
29076
+ _step;
29077
+ try {
29078
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
29079
+ var item = _step.value;
29080
+ if (!item || _typeof(item) !== "object") continue;
29081
+ var stamp = item.dashboardId;
29082
+ if (stamp !== undefined && stamp !== null && String(stamp) !== wsId) {
29083
+ // Foreign item — drop it.
29084
+ summary.removed += 1;
29085
+ continue;
29086
+ }
29087
+ if (stamp === undefined || stamp === null) {
29088
+ // Unstamped — adopt into this workspace.
29089
+ item.dashboardId = workspace.id;
29090
+ summary.stamped += 1;
29091
+ }
29092
+ // Recurse into nested arrays so foreign items inside grid
29093
+ // containers' `items` / nested `layout` are caught too.
29094
+ if (Array.isArray(item.items)) item.items = _cleanList(item.items);
29095
+ if (Array.isArray(item.layout)) item.layout = _cleanList(item.layout);
29096
+ kept.push(item);
29097
+ }
29098
+ } catch (err) {
29099
+ _iterator.e(err);
29100
+ } finally {
29101
+ _iterator.f();
29102
+ }
29103
+ return kept;
29104
+ };
29105
+ if (Array.isArray(workspace.layout)) {
29106
+ workspace.layout = _cleanList(workspace.layout);
29107
+ }
29108
+ if (Array.isArray(workspace.sidebarLayout)) {
29109
+ workspace.sidebarLayout = _cleanList(workspace.sidebarLayout);
29110
+ }
29111
+ if (Array.isArray(workspace.pages)) {
29112
+ var _iterator2 = _createForOfIteratorHelper$k(workspace.pages),
29113
+ _step2;
29114
+ try {
29115
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
29116
+ var page = _step2.value;
29117
+ if (page && Array.isArray(page.layout)) {
29118
+ page.layout = _cleanList(page.layout);
29119
+ }
29120
+ }
29121
+ } catch (err) {
29122
+ _iterator2.e(err);
29123
+ } finally {
29124
+ _iterator2.f();
29125
+ }
29126
+ }
29127
+ return summary;
29128
+ }
29129
+
29130
+ 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; } } }; }
29131
+ 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; } }
29132
+ 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; }
29133
+ /**
29134
+ * migrateLayoutItemTypes.js
29135
+ *
29136
+ * One-shot data migration that runs at workspace load time. Fixes
29137
+ * legacy `item.type` values where user widgets were persisted with
29138
+ * the old `LayoutModel` default (`type: "layout"`) — that default
29139
+ * silently mis-classified every widget as a container, which broke
29140
+ * any downstream code that filtered "is this a user widget?" by
29141
+ * type field.
29142
+ *
29143
+ * Post-v0.1.444 LayoutModel defaults `type` based on component
29144
+ * name. This migration applies the same logic to ALREADY-PERSISTED
29145
+ * items so old workspaces.json data heals on next save.
29146
+ *
29147
+ * Rules:
29148
+ * - `component === "LayoutGridContainer"` → `type: "grid"`
29149
+ * - `component === "Container"` / `"LayoutContainer"` → `type: "layout"`
29150
+ * - Anything else → `type: "widget"`
29151
+ *
29152
+ * Mutates in place. Idempotent — running on a clean workspace is
29153
+ * a no-op. Returns a count of items whose type was corrected.
29154
+ *
29155
+ * @param {Object} workspace
29156
+ * @returns {{ corrected: number }}
29157
+ */
29158
+
29159
+ var FRAMEWORK_CONTAINER_COMPONENTS = new Set(["LayoutGridContainer", "Container", "LayoutContainer"]);
29160
+ function expectedType(component) {
29161
+ if (component === "LayoutGridContainer") return "grid";
29162
+ if (component === "Container" || component === "LayoutContainer") {
29163
+ return "layout";
29164
+ }
29165
+ return "widget";
29166
+ }
29167
+ function migrateLayoutItemTypes(workspace) {
29168
+ var summary = {
29169
+ corrected: 0
29170
+ };
29171
+ if (!workspace) return summary;
29172
+ var fixItem = function fixItem(item) {
29173
+ if (!item || _typeof(item) !== "object" || !item.component) return;
29174
+ var want = expectedType(item.component);
29175
+ // Only correct OBVIOUS misclassifications. If the persisted type
29176
+ // is `widget` but the component is a known container — fix it.
29177
+ // If a user widget is typed `layout` (the old default) — fix it.
29178
+ // Don't disturb items that were intentionally typed something
29179
+ // unusual (e.g. `workspace`) on a non-container component.
29180
+ var current = item.type;
29181
+ var isContainer = FRAMEWORK_CONTAINER_COMPONENTS.has(item.component);
29182
+ if (isContainer && current !== want) {
29183
+ item.type = want;
29184
+ summary.corrected += 1;
29185
+ return;
29186
+ }
29187
+ if (!isContainer && (current === "layout" || current === undefined)) {
29188
+ item.type = "widget";
29189
+ summary.corrected += 1;
29190
+ }
29191
+ };
29192
+ var _walk = function walk(items) {
29193
+ if (!Array.isArray(items)) return;
29194
+ var _iterator = _createForOfIteratorHelper$j(items),
29195
+ _step;
29196
+ try {
29197
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
29198
+ var item = _step.value;
29199
+ if (!item || _typeof(item) !== "object") continue;
29200
+ fixItem(item);
29201
+ if (Array.isArray(item.items)) _walk(item.items);
29202
+ if (Array.isArray(item.layout)) _walk(item.layout);
29203
+ }
29204
+ } catch (err) {
29205
+ _iterator.e(err);
29206
+ } finally {
29207
+ _iterator.f();
29208
+ }
29209
+ };
29210
+ _walk(workspace.layout);
29211
+ if (Array.isArray(workspace.pages)) {
29212
+ var _iterator2 = _createForOfIteratorHelper$j(workspace.pages),
29213
+ _step2;
29214
+ try {
29215
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
29216
+ var page = _step2.value;
29217
+ _walk(page === null || page === void 0 ? void 0 : page.layout);
29218
+ }
29219
+ } catch (err) {
29220
+ _iterator2.e(err);
29221
+ } finally {
29222
+ _iterator2.f();
29223
+ }
29224
+ }
29225
+ _walk(workspace.sidebarLayout);
29226
+ return summary;
29227
+ }
29228
+
28978
29229
  /**
28979
29230
  * Default layout for a brand-new workspace: a single 1x1 grid container
28980
29231
  * with one empty cell. Mirrors DashboardModel._initializeLayout().
@@ -29111,6 +29362,13 @@ var WorkspaceModel = function WorkspaceModel(workspaceItem) {
29111
29362
  workspace.selectedProviders = "selectedProviders" in obj ? obj["selectedProviders"] : {};
29112
29363
  workspace.themeKey = "themeKey" in obj ? obj["themeKey"] : null;
29113
29364
 
29365
+ // Cross-dashboard contamination cleanup. Some earlier code path
29366
+ // (most likely a shared sidebarLayout array reference between two
29367
+ // open dashboards) leaked items from other workspaces' trees into
29368
+ // this one. Running on every load means the next save writes the
29369
+ // cleaned shape; corrupted state is self-healing.
29370
+ cleanForeignWidgetsFromWorkspace(workspace);
29371
+
29114
29372
  // Migrate legacy bare component refs (`PipelineKanban`) and the
29115
29373
  // listener event strings that reference them (`PipelineKanban[5].evt`)
29116
29374
  // to the canonical scoped form (`trops.pipeline.PipelineKanban`).
@@ -29120,6 +29378,14 @@ var WorkspaceModel = function WorkspaceModel(workspaceItem) {
29120
29378
  // wiring on first load post-v0.1.435.
29121
29379
  migrateScopedIdsInWorkspace(workspace, ComponentManager.componentMap());
29122
29380
 
29381
+ // Pre-v0.1.444 LayoutModel defaulted `item.type` to "layout" — every
29382
+ // widget instance persisted without an explicit type was silently
29383
+ // typed as a container, breaking any UI that filtered by type.
29384
+ // The new default infers from component name; this migration applies
29385
+ // the same inference to legacy on-disk data so existing
29386
+ // workspaces.json heals on the next save.
29387
+ migrateLayoutItemTypes(workspace);
29388
+
29123
29389
  // Strip any listener bindings whose source widget is no longer in
29124
29390
  // the tree. These "orphan" bindings are dead — they don't match any
29125
29391
  // live publisher and never fire — so they're safe to remove at load
@@ -55373,6 +55639,13 @@ var WidgetsTab = function WidgetsTab(_ref) {
55373
55639
  var result = [];
55374
55640
  var pushFromSection = function pushFromSection(section) {
55375
55641
  return function (item) {
55642
+ // Skip framework chrome (LayoutGridContainer / Container) —
55643
+ // the WidgetsTab is for user-configurable widgets only.
55644
+ if (!isUserWidget(item)) return;
55645
+ // Cross-dashboard isolation: skip items whose dashboardId
55646
+ // stamp doesn't match this workspace. Closes the same leak
55647
+ // the Listeners tab already filters against.
55648
+ if (!belongsToWorkspace(item, workspace)) return;
55376
55649
  var id = item.uuidString || item.uuid || item.id;
55377
55650
  if (!id || seen.has(id)) return;
55378
55651
  seen.add(id);