@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/electron/index.js +68 -23
- package/dist/electron/index.js.map +1 -1
- package/dist/index.esm.js +404 -140
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +372 -99
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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$
|
|
3079
|
-
function _unsupportedIterableToArray$
|
|
3080
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
4286
|
-
function _unsupportedIterableToArray$
|
|
4287
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
6304
|
-
function _unsupportedIterableToArray$
|
|
6305
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
7086
|
-
function _unsupportedIterableToArray$
|
|
7087
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
13000
|
-
function _unsupportedIterableToArray$
|
|
13001
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
13628
|
-
function _unsupportedIterableToArray$
|
|
13629
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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
|
-
|
|
14168
|
-
|
|
14169
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
14449
|
-
function _unsupportedIterableToArray$
|
|
14450
|
-
function _arrayLikeToArray$
|
|
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
|
-
|
|
14539
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
17960
|
-
function _unsupportedIterableToArray$
|
|
17961
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
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$
|
|
20145
|
-
function _unsupportedIterableToArray$
|
|
20146
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
25521
|
-
function _unsupportedIterableToArray$
|
|
25522
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
28555
|
-
function _unsupportedIterableToArray$
|
|
28556
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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
|
-
|
|
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
|
-
*
|
|
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$
|
|
28863
|
-
function _unsupportedIterableToArray$
|
|
28864
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
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);
|