@trops/dash-core 0.1.435 → 0.1.437
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1497 -1347
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1497 -1347
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -3057,9 +3057,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
|
|
|
3057
3057
|
|
|
3058
3058
|
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; }
|
|
3059
3059
|
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; }
|
|
3060
|
-
function _createForOfIteratorHelper$
|
|
3061
|
-
function _unsupportedIterableToArray$
|
|
3062
|
-
function _arrayLikeToArray$
|
|
3060
|
+
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; } } }; }
|
|
3061
|
+
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; } }
|
|
3062
|
+
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; }
|
|
3063
3063
|
/**
|
|
3064
3064
|
* Layout template definitions for the dashboard template picker.
|
|
3065
3065
|
*
|
|
@@ -3333,7 +3333,7 @@ function createLayoutFromTemplate(template) {
|
|
|
3333
3333
|
cols: template.cols,
|
|
3334
3334
|
gap: "gap-2"
|
|
3335
3335
|
};
|
|
3336
|
-
var _iterator = _createForOfIteratorHelper$
|
|
3336
|
+
var _iterator = _createForOfIteratorHelper$u(template.cells),
|
|
3337
3337
|
_step;
|
|
3338
3338
|
try {
|
|
3339
3339
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -4264,9 +4264,9 @@ var RegistryAuthModal = function RegistryAuthModal(_ref) {
|
|
|
4264
4264
|
});
|
|
4265
4265
|
};
|
|
4266
4266
|
|
|
4267
|
-
function _createForOfIteratorHelper$
|
|
4268
|
-
function _unsupportedIterableToArray$
|
|
4269
|
-
function _arrayLikeToArray$
|
|
4267
|
+
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; } } }; }
|
|
4268
|
+
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; } }
|
|
4269
|
+
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; }
|
|
4270
4270
|
function ownKeys$W(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4271
4271
|
function _objectSpread$W(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4272
4272
|
var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
@@ -4507,7 +4507,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
4507
4507
|
toInstall = 0,
|
|
4508
4508
|
unavailable = 0,
|
|
4509
4509
|
hasUnavailableRequired = false;
|
|
4510
|
-
var _iterator = _createForOfIteratorHelper$
|
|
4510
|
+
var _iterator = _createForOfIteratorHelper$t(widgetDeps),
|
|
4511
4511
|
_step;
|
|
4512
4512
|
try {
|
|
4513
4513
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -6282,9 +6282,9 @@ function cleanIpcError(message) {
|
|
|
6282
6282
|
return match ? match[1] : message;
|
|
6283
6283
|
}
|
|
6284
6284
|
|
|
6285
|
-
function _createForOfIteratorHelper$
|
|
6286
|
-
function _unsupportedIterableToArray$
|
|
6287
|
-
function _arrayLikeToArray$
|
|
6285
|
+
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; } } }; }
|
|
6286
|
+
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; } }
|
|
6287
|
+
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; }
|
|
6288
6288
|
|
|
6289
6289
|
/**
|
|
6290
6290
|
* useRegistrySearch — shared hook for browsing and installing registry packages.
|
|
@@ -6398,13 +6398,13 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
6398
6398
|
return c.toLowerCase();
|
|
6399
6399
|
}));
|
|
6400
6400
|
widgets = [];
|
|
6401
|
-
_iterator = _createForOfIteratorHelper$
|
|
6401
|
+
_iterator = _createForOfIteratorHelper$s(pkgs);
|
|
6402
6402
|
try {
|
|
6403
6403
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
6404
6404
|
pkg = _step.value;
|
|
6405
6405
|
// Compute missing APIs for the entire package
|
|
6406
6406
|
allApiProviders = [];
|
|
6407
|
-
_iterator2 = _createForOfIteratorHelper$
|
|
6407
|
+
_iterator2 = _createForOfIteratorHelper$s(pkg.providers || []);
|
|
6408
6408
|
try {
|
|
6409
6409
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
6410
6410
|
p = _step2.value;
|
|
@@ -6417,11 +6417,11 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
6417
6417
|
} finally {
|
|
6418
6418
|
_iterator2.f();
|
|
6419
6419
|
}
|
|
6420
|
-
_iterator3 = _createForOfIteratorHelper$
|
|
6420
|
+
_iterator3 = _createForOfIteratorHelper$s(pkg.widgets || []);
|
|
6421
6421
|
try {
|
|
6422
6422
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
6423
6423
|
w = _step3.value;
|
|
6424
|
-
_iterator5 = _createForOfIteratorHelper$
|
|
6424
|
+
_iterator5 = _createForOfIteratorHelper$s(w.providers || []);
|
|
6425
6425
|
try {
|
|
6426
6426
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
6427
6427
|
_p = _step5.value;
|
|
@@ -6443,7 +6443,7 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
6443
6443
|
missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
|
|
6444
6444
|
return !capSet.has(api.toLowerCase());
|
|
6445
6445
|
});
|
|
6446
|
-
_iterator4 = _createForOfIteratorHelper$
|
|
6446
|
+
_iterator4 = _createForOfIteratorHelper$s(pkg.widgets || []);
|
|
6447
6447
|
try {
|
|
6448
6448
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
6449
6449
|
widget = _step4.value;
|
|
@@ -7064,9 +7064,9 @@ function applyFilters(items, filters, mode) {
|
|
|
7064
7064
|
});
|
|
7065
7065
|
}
|
|
7066
7066
|
|
|
7067
|
-
function _createForOfIteratorHelper$
|
|
7068
|
-
function _unsupportedIterableToArray$
|
|
7069
|
-
function _arrayLikeToArray$
|
|
7067
|
+
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; } } }; }
|
|
7068
|
+
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; } }
|
|
7069
|
+
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; }
|
|
7070
7070
|
function ownKeys$U(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7071
7071
|
function _objectSpread$U(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7072
7072
|
var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
|
|
@@ -7290,7 +7290,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
|
|
|
7290
7290
|
installedNames = new Set(installedList.map(function (w) {
|
|
7291
7291
|
return w.name;
|
|
7292
7292
|
}));
|
|
7293
|
-
_iterator = _createForOfIteratorHelper$
|
|
7293
|
+
_iterator = _createForOfIteratorHelper$r(state.selectedWidgets);
|
|
7294
7294
|
_context2.prev = 13;
|
|
7295
7295
|
_iterator.s();
|
|
7296
7296
|
case 14:
|
|
@@ -12919,9 +12919,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
12919
12919
|
};
|
|
12920
12920
|
|
|
12921
12921
|
var _excluded$6 = ["rows", "cols"];
|
|
12922
|
-
function _createForOfIteratorHelper$
|
|
12923
|
-
function _unsupportedIterableToArray$
|
|
12924
|
-
function _arrayLikeToArray$
|
|
12922
|
+
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; } } }; }
|
|
12923
|
+
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; } }
|
|
12924
|
+
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; }
|
|
12925
12925
|
function ownKeys$S(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12926
12926
|
function _objectSpread$S(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12927
12927
|
var defaultGrid = {
|
|
@@ -13074,7 +13074,7 @@ function GridEditor(_ref) {
|
|
|
13074
13074
|
function sortObjectByKeys(obj) {
|
|
13075
13075
|
var sortedKeys = Object.keys(obj).sort();
|
|
13076
13076
|
var sortedObj = {};
|
|
13077
|
-
var _iterator = _createForOfIteratorHelper$
|
|
13077
|
+
var _iterator = _createForOfIteratorHelper$q(sortedKeys),
|
|
13078
13078
|
_step;
|
|
13079
13079
|
try {
|
|
13080
13080
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -13547,9 +13547,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
|
|
|
13547
13547
|
});
|
|
13548
13548
|
};
|
|
13549
13549
|
|
|
13550
|
-
function _createForOfIteratorHelper$
|
|
13551
|
-
function _unsupportedIterableToArray$
|
|
13552
|
-
function _arrayLikeToArray$
|
|
13550
|
+
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; } } }; }
|
|
13551
|
+
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; } }
|
|
13552
|
+
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; }
|
|
13553
13553
|
function ownKeys$Q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13554
13554
|
function _objectSpread$Q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13555
13555
|
var DAYS = [{
|
|
@@ -13878,7 +13878,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
|
|
|
13878
13878
|
setIsLoading(true);
|
|
13879
13879
|
window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
|
|
13880
13880
|
var stateMap = {};
|
|
13881
|
-
var _iterator = _createForOfIteratorHelper$
|
|
13881
|
+
var _iterator = _createForOfIteratorHelper$p(tasks || []),
|
|
13882
13882
|
_step;
|
|
13883
13883
|
try {
|
|
13884
13884
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -14022,296 +14022,1126 @@ var PanelCode = function PanelCode(_ref) {
|
|
|
14022
14022
|
});
|
|
14023
14023
|
};
|
|
14024
14024
|
|
|
14025
|
-
var
|
|
14026
|
-
|
|
14027
|
-
|
|
14028
|
-
|
|
14029
|
-
|
|
14030
|
-
|
|
14031
|
-
|
|
14032
|
-
|
|
14033
|
-
|
|
14034
|
-
|
|
14035
|
-
|
|
14036
|
-
|
|
14037
|
-
|
|
14038
|
-
|
|
14039
|
-
|
|
14040
|
-
|
|
14041
|
-
return /*#__PURE__*/jsxs("div", {
|
|
14042
|
-
className: "flex flex-row flex-1 min-h-0 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
14043
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
14044
|
-
className: "flex flex-col flex-shrink-0 ".concat(listWidth, " border-r ").concat(headerStyles.borderColor || "", " overflow-y-auto"),
|
|
14045
|
-
children: listContent
|
|
14046
|
-
}), /*#__PURE__*/jsx("div", {
|
|
14047
|
-
className: "flex flex-col flex-1 min-w-0 min-h-0",
|
|
14048
|
-
children: detailContent ? /*#__PURE__*/jsx("div", {
|
|
14049
|
-
className: "flex flex-col flex-1 min-h-0",
|
|
14050
|
-
children: detailContent
|
|
14051
|
-
}) : /*#__PURE__*/jsx("div", {
|
|
14052
|
-
className: "flex flex-1 items-center justify-center",
|
|
14053
|
-
children: /*#__PURE__*/jsx("span", {
|
|
14054
|
-
className: "text-sm opacity-40",
|
|
14055
|
-
children: emptyDetailMessage
|
|
14056
|
-
})
|
|
14057
|
-
})
|
|
14058
|
-
})]
|
|
14059
|
-
});
|
|
14060
|
-
};
|
|
14025
|
+
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; } } }; }
|
|
14026
|
+
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; } }
|
|
14027
|
+
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; }
|
|
14028
|
+
/**
|
|
14029
|
+
* providerResolution.js
|
|
14030
|
+
*
|
|
14031
|
+
* Shared helpers for walking a workspace and figuring out which widgets
|
|
14032
|
+
* have required providers that are still unresolved after the 3-layer
|
|
14033
|
+
* resolution (widget → workspace → app-default → null). Used by:
|
|
14034
|
+
*
|
|
14035
|
+
* - DashboardConfigModal to render the Providers tab
|
|
14036
|
+
* - DashboardStage toolbar to show the unresolved-count badge
|
|
14037
|
+
*
|
|
14038
|
+
* Both places need the same answer, so keep the logic here to avoid drift
|
|
14039
|
+
* with the resolution inside `useMcpProvider` / `useWebSocketProvider`.
|
|
14040
|
+
*/
|
|
14061
14041
|
|
|
14062
|
-
|
|
14063
|
-
|
|
14064
|
-
|
|
14065
|
-
|
|
14066
|
-
|
|
14067
|
-
|
|
14068
|
-
|
|
14069
|
-
|
|
14070
|
-
|
|
14071
|
-
|
|
14072
|
-
|
|
14073
|
-
|
|
14074
|
-
|
|
14075
|
-
var
|
|
14076
|
-
|
|
14077
|
-
|
|
14078
|
-
|
|
14079
|
-
|
|
14080
|
-
|
|
14081
|
-
|
|
14082
|
-
|
|
14083
|
-
|
|
14084
|
-
|
|
14085
|
-
|
|
14086
|
-
|
|
14087
|
-
|
|
14088
|
-
|
|
14089
|
-
|
|
14090
|
-
|
|
14091
|
-
|
|
14092
|
-
|
|
14093
|
-
|
|
14094
|
-
|
|
14095
|
-
|
|
14096
|
-
|
|
14097
|
-
|
|
14098
|
-
|
|
14042
|
+
/**
|
|
14043
|
+
* Resolve which provider name a given widget instance would bind to for
|
|
14044
|
+
* the given provider type. Mirrors the 3-layer chain in useMcpProvider
|
|
14045
|
+
* and useWebSocketProvider exactly:
|
|
14046
|
+
*
|
|
14047
|
+
* 1. widget-level override (layoutItem.selectedProviders[type])
|
|
14048
|
+
* 2. workspace-level binding (workspace.selectedProviders[id][type])
|
|
14049
|
+
* 3. app default (any provider of matching type flagged
|
|
14050
|
+
* `isDefaultForType` in appProviders)
|
|
14051
|
+
* 4. null (truly unresolved)
|
|
14052
|
+
*/
|
|
14053
|
+
function resolveProviderName(_ref) {
|
|
14054
|
+
var _layoutItem$selectedP, _workspace$selectedPr;
|
|
14055
|
+
var providerType = _ref.providerType,
|
|
14056
|
+
layoutItem = _ref.layoutItem,
|
|
14057
|
+
widgetId = _ref.widgetId,
|
|
14058
|
+
workspace = _ref.workspace,
|
|
14059
|
+
appProviders = _ref.appProviders;
|
|
14060
|
+
// 1. Widget-level
|
|
14061
|
+
var widgetLevel = layoutItem === null || layoutItem === void 0 || (_layoutItem$selectedP = layoutItem.selectedProviders) === null || _layoutItem$selectedP === void 0 ? void 0 : _layoutItem$selectedP[providerType];
|
|
14062
|
+
if (widgetLevel) return widgetLevel;
|
|
14063
|
+
|
|
14064
|
+
// 2. Workspace-level
|
|
14065
|
+
var workspaceLevel = widgetId && (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 || (_workspace$selectedPr = _workspace$selectedPr[widgetId]) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[providerType]);
|
|
14066
|
+
if (workspaceLevel) return workspaceLevel;
|
|
14067
|
+
|
|
14068
|
+
// 3. App default — appProviders is either a map keyed by name or an
|
|
14069
|
+
// array. Support both because different callers shape it either way.
|
|
14070
|
+
if (appProviders) {
|
|
14071
|
+
if (Array.isArray(appProviders)) {
|
|
14072
|
+
var _iterator = _createForOfIteratorHelper$o(appProviders),
|
|
14073
|
+
_step;
|
|
14074
|
+
try {
|
|
14075
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
14076
|
+
var data = _step.value;
|
|
14077
|
+
if ((data === null || data === void 0 ? void 0 : data.type) === providerType && (data === null || data === void 0 ? void 0 : data.isDefaultForType) === true) {
|
|
14078
|
+
return data.name;
|
|
14079
|
+
}
|
|
14099
14080
|
}
|
|
14100
|
-
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
14104
|
-
currentListeners[eventHandlerSelected] = uniqueEventsSelected;
|
|
14105
|
-
handleSaveChanges(currentListeners);
|
|
14081
|
+
} catch (err) {
|
|
14082
|
+
_iterator.e(err);
|
|
14083
|
+
} finally {
|
|
14084
|
+
_iterator.f();
|
|
14106
14085
|
}
|
|
14107
|
-
}
|
|
14108
|
-
|
|
14109
|
-
|
|
14110
|
-
|
|
14111
|
-
|
|
14112
|
-
|
|
14113
|
-
|
|
14114
|
-
var currentListeners = deepCopy(itemSelected["listeners"] || {});
|
|
14115
|
-
var eventsSelectedTemp = eventHandlerSelected in currentListeners ? currentListeners[eventHandlerSelected].filter(function (event) {
|
|
14116
|
-
return event !== eventString;
|
|
14117
|
-
}) : [];
|
|
14118
|
-
if (eventsSelectedTemp.length > 0) {
|
|
14119
|
-
if (eventHandlerSelected in currentListeners) {
|
|
14120
|
-
currentListeners[eventHandlerSelected] = eventsSelectedTemp;
|
|
14121
|
-
}
|
|
14122
|
-
} else {
|
|
14123
|
-
delete currentListeners[eventHandlerSelected];
|
|
14086
|
+
} else if (_typeof(appProviders) === "object") {
|
|
14087
|
+
for (var _i = 0, _Object$entries = Object.entries(appProviders); _i < _Object$entries.length; _i++) {
|
|
14088
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
14089
|
+
name = _Object$entries$_i[0],
|
|
14090
|
+
_data = _Object$entries$_i[1];
|
|
14091
|
+
if ((_data === null || _data === void 0 ? void 0 : _data.type) === providerType && (_data === null || _data === void 0 ? void 0 : _data.isDefaultForType) === true) {
|
|
14092
|
+
return name;
|
|
14124
14093
|
}
|
|
14125
|
-
handleSaveChanges(currentListeners);
|
|
14126
14094
|
}
|
|
14127
|
-
} catch (e) {
|
|
14128
|
-
// remove event failed
|
|
14129
14095
|
}
|
|
14130
14096
|
}
|
|
14131
|
-
|
|
14132
|
-
|
|
14133
|
-
|
|
14134
|
-
|
|
14135
|
-
|
|
14136
|
-
|
|
14137
|
-
|
|
14138
|
-
|
|
14139
|
-
|
|
14140
|
-
|
|
14141
|
-
|
|
14142
|
-
|
|
14143
|
-
|
|
14144
|
-
|
|
14097
|
+
return null;
|
|
14098
|
+
}
|
|
14099
|
+
|
|
14100
|
+
/**
|
|
14101
|
+
* Walk every layout container in a workspace and yield each widget
|
|
14102
|
+
* instance with its concrete layout item. Handles the main layout,
|
|
14103
|
+
* per-page layouts, the sidebar, and nested LayoutGridContainers whose
|
|
14104
|
+
* children are stored on `items`/`layout`.
|
|
14105
|
+
*
|
|
14106
|
+
* Deduplicates by object identity AND by stable id so that shared
|
|
14107
|
+
* references across pages (or two structurally-distinct items that
|
|
14108
|
+
* carry the same uuidString / id, which is the wiring key) are
|
|
14109
|
+
* visited exactly once. Pipeline-style workspaces re-reference the
|
|
14110
|
+
* same widget objects across page layouts; without this dedupe the
|
|
14111
|
+
* Providers/Listeners tabs render one row per reference.
|
|
14112
|
+
*/
|
|
14113
|
+
function forEachWidget(workspace, visit) {
|
|
14114
|
+
if (!workspace) return;
|
|
14115
|
+
var visitedObjects = new WeakSet();
|
|
14116
|
+
var visitedIds = new Set();
|
|
14117
|
+
|
|
14118
|
+
// Canonical identity: `component|id-ish`. Including the component
|
|
14119
|
+
// prefix in every form aligns this with `canonicalItemKey` in
|
|
14120
|
+
// listenerResolution.js — they MUST agree or duplicates slip
|
|
14121
|
+
// between the visit loop and downstream dedupes. Prefer uuidString
|
|
14122
|
+
// (stable across sessions), then uuid, then numeric id.
|
|
14123
|
+
var stableId = function stableId(item) {
|
|
14124
|
+
if (!item || !item.component) return null;
|
|
14125
|
+
if (item.uuidString) return "".concat(item.component, "|").concat(item.uuidString);
|
|
14126
|
+
if (item.uuid) return "".concat(item.component, "|").concat(item.uuid);
|
|
14127
|
+
if (item.id != null) return "".concat(item.component, "|").concat(item.id);
|
|
14145
14128
|
return null;
|
|
14146
|
-
}
|
|
14147
|
-
function
|
|
14148
|
-
|
|
14129
|
+
};
|
|
14130
|
+
var _walk = function walk(items) {
|
|
14131
|
+
if (!Array.isArray(items)) return;
|
|
14132
|
+
var _iterator2 = _createForOfIteratorHelper$o(items),
|
|
14133
|
+
_step2;
|
|
14149
14134
|
try {
|
|
14150
|
-
|
|
14151
|
-
var
|
|
14152
|
-
|
|
14153
|
-
|
|
14154
|
-
|
|
14155
|
-
|
|
14135
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
14136
|
+
var item = _step2.value;
|
|
14137
|
+
if (!item || _typeof(item) !== "object") continue;
|
|
14138
|
+
// A "widget" is any layout item with a component name.
|
|
14139
|
+
// Containers can have both a component name AND nested items
|
|
14140
|
+
// (e.g. LayoutGridContainer), so still recurse.
|
|
14141
|
+
if (item.component) {
|
|
14142
|
+
var id = stableId(item);
|
|
14143
|
+
var alreadyByRef = visitedObjects.has(item);
|
|
14144
|
+
var alreadyById = id != null && visitedIds.has(id);
|
|
14145
|
+
if (!alreadyByRef && !alreadyById) {
|
|
14146
|
+
visitedObjects.add(item);
|
|
14147
|
+
if (id != null) visitedIds.add(id);
|
|
14148
|
+
visit(item);
|
|
14149
|
+
}
|
|
14150
|
+
}
|
|
14151
|
+
if (Array.isArray(item.items)) _walk(item.items);
|
|
14152
|
+
if (Array.isArray(item.layout)) _walk(item.layout);
|
|
14156
14153
|
}
|
|
14157
|
-
} catch (
|
|
14158
|
-
|
|
14154
|
+
} catch (err) {
|
|
14155
|
+
_iterator2.e(err);
|
|
14156
|
+
} finally {
|
|
14157
|
+
_iterator2.f();
|
|
14159
14158
|
}
|
|
14160
|
-
}
|
|
14161
|
-
|
|
14159
|
+
};
|
|
14160
|
+
_walk(workspace.layout);
|
|
14161
|
+
if (Array.isArray(workspace.pages)) {
|
|
14162
|
+
var _iterator3 = _createForOfIteratorHelper$o(workspace.pages),
|
|
14163
|
+
_step3;
|
|
14162
14164
|
try {
|
|
14163
|
-
|
|
14164
|
-
var
|
|
14165
|
-
|
|
14166
|
-
return itemListeners[eventHandlerSelected].includes(event);
|
|
14167
|
-
}
|
|
14168
|
-
return false;
|
|
14165
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
14166
|
+
var page = _step3.value;
|
|
14167
|
+
_walk(page === null || page === void 0 ? void 0 : page.layout);
|
|
14169
14168
|
}
|
|
14170
|
-
|
|
14171
|
-
|
|
14172
|
-
|
|
14169
|
+
} catch (err) {
|
|
14170
|
+
_iterator3.e(err);
|
|
14171
|
+
} finally {
|
|
14172
|
+
_iterator3.f();
|
|
14173
14173
|
}
|
|
14174
14174
|
}
|
|
14175
|
+
_walk(workspace.sidebarLayout);
|
|
14176
|
+
}
|
|
14175
14177
|
|
|
14176
|
-
|
|
14177
|
-
|
|
14178
|
-
|
|
14179
|
-
|
|
14178
|
+
/**
|
|
14179
|
+
* Compute the list of unresolved required providers across a workspace.
|
|
14180
|
+
*
|
|
14181
|
+
* @param {object} args
|
|
14182
|
+
* @param {object} args.workspace The workspace (with layout/pages/sidebarLayout/selectedProviders).
|
|
14183
|
+
* @param {object|Array} args.appProviders
|
|
14184
|
+
* Map keyed by provider name, or an array of provider objects. Each
|
|
14185
|
+
* entry has at least `{ type, isDefaultForType }`.
|
|
14186
|
+
* @param {(componentName: string) => Array<{type, required?, providerClass?}>} args.getWidgetRequirements
|
|
14187
|
+
* Returns the `providers: [...]` declaration from the component's
|
|
14188
|
+
* `.dash.js` (via `ComponentManager.componentMap()[name].providers`).
|
|
14189
|
+
*
|
|
14190
|
+
* @returns {Array<{ widgetId, component, providerType, providerClass, layoutItem }>}
|
|
14191
|
+
* One entry per (widget instance, required provider type) that lacks
|
|
14192
|
+
* a binding.
|
|
14193
|
+
*/
|
|
14194
|
+
function getUnresolvedProviders(_ref2) {
|
|
14195
|
+
var workspace = _ref2.workspace,
|
|
14196
|
+
appProviders = _ref2.appProviders,
|
|
14197
|
+
getWidgetRequirements = _ref2.getWidgetRequirements;
|
|
14198
|
+
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
14199
|
+
var unresolved = [];
|
|
14200
|
+
forEachWidget(workspace, function (item) {
|
|
14201
|
+
var requirements = getWidgetRequirements(item.component) || [];
|
|
14202
|
+
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
14203
|
+
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
14204
|
+
var _iterator4 = _createForOfIteratorHelper$o(requirements),
|
|
14205
|
+
_step4;
|
|
14206
|
+
try {
|
|
14207
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
14208
|
+
var req = _step4.value;
|
|
14209
|
+
if (!req || !req.type) continue;
|
|
14210
|
+
if (req.required === false) continue; // optional, skip
|
|
14180
14211
|
|
|
14181
|
-
|
|
14182
|
-
|
|
14183
|
-
|
|
14184
|
-
|
|
14185
|
-
|
|
14186
|
-
|
|
14187
|
-
|
|
14188
|
-
if (
|
|
14189
|
-
|
|
14190
|
-
|
|
14191
|
-
|
|
14192
|
-
|
|
14212
|
+
var name = resolveProviderName({
|
|
14213
|
+
providerType: req.type,
|
|
14214
|
+
layoutItem: item,
|
|
14215
|
+
widgetId: widgetId,
|
|
14216
|
+
workspace: workspace,
|
|
14217
|
+
appProviders: appProviders
|
|
14218
|
+
});
|
|
14219
|
+
if (!name) {
|
|
14220
|
+
unresolved.push({
|
|
14221
|
+
widgetId: widgetId,
|
|
14222
|
+
component: item.component,
|
|
14223
|
+
providerType: req.type,
|
|
14224
|
+
providerClass: req.providerClass || null,
|
|
14225
|
+
layoutItem: item
|
|
14226
|
+
});
|
|
14227
|
+
}
|
|
14228
|
+
}
|
|
14229
|
+
} catch (err) {
|
|
14230
|
+
_iterator4.e(err);
|
|
14231
|
+
} finally {
|
|
14232
|
+
_iterator4.f();
|
|
14193
14233
|
}
|
|
14194
|
-
return all;
|
|
14195
|
-
}
|
|
14196
|
-
var layoutArray = getAllWidgetLayouts(workspaceSelected);
|
|
14197
|
-
var sourceWidgets = layoutArray.filter(function (l) {
|
|
14198
|
-
return l["component"] !== "Container" && l["component"] !== "LayoutContainer";
|
|
14199
|
-
}).filter(function (e) {
|
|
14200
|
-
return Array.isArray(e.events) && e.events.length > 0;
|
|
14201
|
-
}).filter(function (li) {
|
|
14202
|
-
return li["component"] !== (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected["component"]);
|
|
14203
14234
|
});
|
|
14235
|
+
return unresolved;
|
|
14236
|
+
}
|
|
14204
14237
|
|
|
14205
|
-
|
|
14206
|
-
|
|
14207
|
-
|
|
14208
|
-
|
|
14209
|
-
|
|
14210
|
-
|
|
14211
|
-
|
|
14238
|
+
/**
|
|
14239
|
+
* Group an unresolved-provider list (or any `{widget, providerType}` list)
|
|
14240
|
+
* by provider type, so the Providers tab can render one row per unique
|
|
14241
|
+
* type with N widgets beneath.
|
|
14242
|
+
*/
|
|
14243
|
+
function groupByProviderType(unresolved) {
|
|
14244
|
+
var byType = new Map();
|
|
14245
|
+
var _iterator5 = _createForOfIteratorHelper$o(unresolved || []),
|
|
14246
|
+
_step5;
|
|
14247
|
+
try {
|
|
14248
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
14249
|
+
var u = _step5.value;
|
|
14250
|
+
if (!(u !== null && u !== void 0 && u.providerType)) continue;
|
|
14251
|
+
if (!byType.has(u.providerType)) byType.set(u.providerType, []);
|
|
14252
|
+
byType.get(u.providerType).push(u);
|
|
14212
14253
|
}
|
|
14213
|
-
})
|
|
14254
|
+
} catch (err) {
|
|
14255
|
+
_iterator5.e(err);
|
|
14256
|
+
} finally {
|
|
14257
|
+
_iterator5.f();
|
|
14258
|
+
}
|
|
14259
|
+
return byType;
|
|
14260
|
+
}
|
|
14214
14261
|
|
|
14215
|
-
|
|
14216
|
-
|
|
14217
|
-
|
|
14218
|
-
|
|
14219
|
-
|
|
14220
|
-
|
|
14221
|
-
|
|
14222
|
-
|
|
14223
|
-
|
|
14224
|
-
|
|
14225
|
-
|
|
14262
|
+
/**
|
|
14263
|
+
* Summarize every widget in the workspace that requires ANY provider,
|
|
14264
|
+
* regardless of whether it's already resolved. Drives the Providers tab's
|
|
14265
|
+
* "show per-widget overrides" expansion — the modal lists all widgets so
|
|
14266
|
+
* the user can change an explicit override even for types that are
|
|
14267
|
+
* already resolved via the app default.
|
|
14268
|
+
*/
|
|
14269
|
+
function getAllProviderBindings(_ref3) {
|
|
14270
|
+
var workspace = _ref3.workspace,
|
|
14271
|
+
appProviders = _ref3.appProviders,
|
|
14272
|
+
getWidgetRequirements = _ref3.getWidgetRequirements;
|
|
14273
|
+
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
14274
|
+
var bindings = [];
|
|
14275
|
+
forEachWidget(workspace, function (item) {
|
|
14276
|
+
var requirements = getWidgetRequirements(item.component) || [];
|
|
14277
|
+
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
14278
|
+
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
14279
|
+
var _iterator6 = _createForOfIteratorHelper$o(requirements),
|
|
14280
|
+
_step6;
|
|
14281
|
+
try {
|
|
14282
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
14283
|
+
var req = _step6.value;
|
|
14284
|
+
if (!req || !req.type) continue;
|
|
14285
|
+
var name = resolveProviderName({
|
|
14286
|
+
providerType: req.type,
|
|
14287
|
+
layoutItem: item,
|
|
14288
|
+
widgetId: widgetId,
|
|
14289
|
+
workspace: workspace,
|
|
14290
|
+
appProviders: appProviders
|
|
14291
|
+
});
|
|
14292
|
+
bindings.push({
|
|
14293
|
+
widgetId: widgetId,
|
|
14294
|
+
component: item.component,
|
|
14295
|
+
providerType: req.type,
|
|
14296
|
+
providerClass: req.providerClass || null,
|
|
14297
|
+
required: req.required !== false,
|
|
14298
|
+
resolvedProviderName: name,
|
|
14299
|
+
layoutItem: item
|
|
14300
|
+
});
|
|
14226
14301
|
}
|
|
14302
|
+
} catch (err) {
|
|
14303
|
+
_iterator6.e(err);
|
|
14304
|
+
} finally {
|
|
14305
|
+
_iterator6.f();
|
|
14227
14306
|
}
|
|
14228
14307
|
});
|
|
14308
|
+
return bindings;
|
|
14309
|
+
}
|
|
14229
14310
|
|
|
14230
|
-
|
|
14231
|
-
|
|
14232
|
-
|
|
14233
|
-
|
|
14311
|
+
function ownKeys$O(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14312
|
+
function _objectSpread$O(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14313
|
+
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; } } }; }
|
|
14314
|
+
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; } }
|
|
14315
|
+
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; }
|
|
14316
|
+
var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
|
|
14234
14317
|
|
|
14235
|
-
|
|
14236
|
-
|
|
14237
|
-
|
|
14238
|
-
|
|
14239
|
-
|
|
14240
|
-
|
|
14241
|
-
|
|
14242
|
-
|
|
14243
|
-
|
|
14244
|
-
|
|
14245
|
-
|
|
14246
|
-
className: "h-3.5 w-3.5"
|
|
14247
|
-
}),
|
|
14248
|
-
active: isActive,
|
|
14249
|
-
onClick: function onClick() {
|
|
14250
|
-
return handleSelectEventHandler(handler);
|
|
14251
|
-
},
|
|
14252
|
-
badge: count > 0 ? String(count) : null,
|
|
14253
|
-
className: isActive ? "bg-white/10 opacity-100" : "",
|
|
14254
|
-
children: handler
|
|
14255
|
-
}, handler);
|
|
14256
|
-
}), eventHandlers.length === 0 && /*#__PURE__*/jsx("span", {
|
|
14257
|
-
className: "text-sm opacity-40 py-8 text-center",
|
|
14258
|
-
children: "No handlers available"
|
|
14259
|
-
})]
|
|
14260
|
-
});
|
|
14318
|
+
/** Parse "Component[itemId].event" → { component, itemId, event }. */
|
|
14319
|
+
function parseEventString(eventString) {
|
|
14320
|
+
if (typeof eventString !== "string") return null;
|
|
14321
|
+
var m = eventString.match(EVENT_STRING_RE);
|
|
14322
|
+
if (!m) return null;
|
|
14323
|
+
return {
|
|
14324
|
+
component: m[1],
|
|
14325
|
+
itemId: m[2],
|
|
14326
|
+
event: m[3]
|
|
14327
|
+
};
|
|
14328
|
+
}
|
|
14261
14329
|
|
|
14262
|
-
|
|
14263
|
-
|
|
14264
|
-
|
|
14265
|
-
|
|
14266
|
-
|
|
14267
|
-
|
|
14268
|
-
|
|
14269
|
-
|
|
14270
|
-
|
|
14271
|
-
|
|
14272
|
-
|
|
14273
|
-
|
|
14274
|
-
|
|
14275
|
-
|
|
14276
|
-
|
|
14277
|
-
|
|
14278
|
-
|
|
14279
|
-
|
|
14280
|
-
|
|
14281
|
-
|
|
14282
|
-
|
|
14283
|
-
|
|
14284
|
-
|
|
14285
|
-
|
|
14286
|
-
|
|
14287
|
-
|
|
14288
|
-
|
|
14289
|
-
|
|
14290
|
-
|
|
14291
|
-
|
|
14292
|
-
|
|
14293
|
-
|
|
14294
|
-
|
|
14295
|
-
|
|
14296
|
-
|
|
14297
|
-
|
|
14298
|
-
|
|
14299
|
-
|
|
14300
|
-
|
|
14301
|
-
|
|
14302
|
-
|
|
14303
|
-
|
|
14304
|
-
|
|
14305
|
-
|
|
14306
|
-
|
|
14307
|
-
|
|
14308
|
-
|
|
14309
|
-
|
|
14310
|
-
|
|
14311
|
-
|
|
14312
|
-
|
|
14313
|
-
|
|
14314
|
-
|
|
14330
|
+
/** Build an event string in the canonical runtime format. */
|
|
14331
|
+
function formatEventString(component, itemId, event) {
|
|
14332
|
+
return "".concat(component, "[").concat(itemId, "].").concat(event);
|
|
14333
|
+
}
|
|
14334
|
+
|
|
14335
|
+
/**
|
|
14336
|
+
* Get a stable id for a layout item. Layout items historically used
|
|
14337
|
+
* numeric `id`; some newer flows also carry `uuidString`/`uuid`. The
|
|
14338
|
+
* runtime event-string format uses whichever is `item.id`, so we
|
|
14339
|
+
* default to that and fall back to the others for resilience.
|
|
14340
|
+
*/
|
|
14341
|
+
function itemIdOf(item) {
|
|
14342
|
+
if (item == null) return null;
|
|
14343
|
+
if (item.id !== undefined && item.id !== null) return String(item.id);
|
|
14344
|
+
if (item.uuidString) return item.uuidString;
|
|
14345
|
+
if (item.uuid) return item.uuid;
|
|
14346
|
+
return null;
|
|
14347
|
+
}
|
|
14348
|
+
|
|
14349
|
+
/**
|
|
14350
|
+
* Canonical identity key for a layout item: `component|id-ish`.
|
|
14351
|
+
* Single source of truth for dedupe in every query below and in
|
|
14352
|
+
* `forEachWidget` (providerResolution.js). Including the component
|
|
14353
|
+
* prefix prevents two structurally-different widgets from colliding
|
|
14354
|
+
* when they happen to share a uuid (rare, but possible when items
|
|
14355
|
+
* are pasted between workspaces).
|
|
14356
|
+
*
|
|
14357
|
+
* Priority matches forEachWidget's stableId so a widget that
|
|
14358
|
+
* forEachWidget visited once produces exactly one map entry across
|
|
14359
|
+
* every listener-side consumer — no more `STAGEGATECHECKLIST[4]`
|
|
14360
|
+
* appearing twice because one caller used `uuidString` and the
|
|
14361
|
+
* other used `id`.
|
|
14362
|
+
*/
|
|
14363
|
+
function canonicalItemKey(item) {
|
|
14364
|
+
if (!item || !item.component) return null;
|
|
14365
|
+
if (item.uuidString) return "".concat(item.component, "|").concat(item.uuidString);
|
|
14366
|
+
if (item.uuid) return "".concat(item.component, "|").concat(item.uuid);
|
|
14367
|
+
if (item.id !== undefined && item.id !== null) {
|
|
14368
|
+
return "".concat(item.component, "|").concat(item.id);
|
|
14369
|
+
}
|
|
14370
|
+
return null;
|
|
14371
|
+
}
|
|
14372
|
+
|
|
14373
|
+
/**
|
|
14374
|
+
* Best-effort human label for a layout item: explicit title, then
|
|
14375
|
+
* widget config display name, then component name + short id.
|
|
14376
|
+
*/
|
|
14377
|
+
function labelFor(item, getWidgetConfig) {
|
|
14378
|
+
var _item$userPrefs, _item$userConfig;
|
|
14379
|
+
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || null;
|
|
14380
|
+
var explicit = (item === null || item === void 0 || (_item$userPrefs = item.userPrefs) === null || _item$userPrefs === void 0 ? void 0 : _item$userPrefs.title) || (item === null || item === void 0 || (_item$userConfig = item.userConfig) === null || _item$userConfig === void 0 ? void 0 : _item$userConfig.title);
|
|
14381
|
+
if (explicit) return explicit;
|
|
14382
|
+
if (cfg !== null && cfg !== void 0 && cfg.displayName) return cfg.displayName;
|
|
14383
|
+
var id = itemIdOf(item);
|
|
14384
|
+
return "".concat(item.component || "widget").concat(id ? "[".concat(String(id).slice(0, 6), "]") : "");
|
|
14385
|
+
}
|
|
14386
|
+
|
|
14387
|
+
/**
|
|
14388
|
+
* Read the events/eventHandlers metadata for a widget. Items can carry
|
|
14389
|
+
* the arrays inline (older pattern where they got cached onto the
|
|
14390
|
+
* layout item); the current component config carries them via the
|
|
14391
|
+
* ComponentManager catalog. We UNION both so we don't flag a binding
|
|
14392
|
+
* as orphaned just because an inline cache is stale — if the current
|
|
14393
|
+
* widget code declares the event/handler, the binding is valid.
|
|
14394
|
+
*/
|
|
14395
|
+
function eventsOf(item, getWidgetConfig) {
|
|
14396
|
+
var inline = Array.isArray(item.events) ? item.events : [];
|
|
14397
|
+
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
|
|
14398
|
+
var fromCfg = Array.isArray(cfg.events) ? cfg.events : [];
|
|
14399
|
+
return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
|
|
14400
|
+
}
|
|
14401
|
+
function eventHandlersOf(item, getWidgetConfig) {
|
|
14402
|
+
var inline = Array.isArray(item.eventHandlers) ? item.eventHandlers : [];
|
|
14403
|
+
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
|
|
14404
|
+
var fromCfg = Array.isArray(cfg.eventHandlers) ? cfg.eventHandlers : [];
|
|
14405
|
+
return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
|
|
14406
|
+
}
|
|
14407
|
+
|
|
14408
|
+
/**
|
|
14409
|
+
* Every widget instance in the workspace that emits at least one event.
|
|
14410
|
+
* Deduplicated by `${component}|${itemId}` — the same compound key that
|
|
14411
|
+
* event strings use at runtime, so any "duplicate" in the tree (same
|
|
14412
|
+
* widget referenced across pages) resolves to the same wiring target.
|
|
14413
|
+
* @returns {Array<{ itemId, component, label, events: string[], key: string }>}
|
|
14414
|
+
*/
|
|
14415
|
+
function getEmitters(workspace, getWidgetConfig) {
|
|
14416
|
+
var byKey = new Map();
|
|
14417
|
+
forEachWidget(workspace, function (item) {
|
|
14418
|
+
var events = eventsOf(item, getWidgetConfig);
|
|
14419
|
+
if (events.length === 0) return;
|
|
14420
|
+
var key = canonicalItemKey(item);
|
|
14421
|
+
if (!key) return;
|
|
14422
|
+
if (byKey.has(key)) return;
|
|
14423
|
+
byKey.set(key, {
|
|
14424
|
+
key: key,
|
|
14425
|
+
itemId: itemIdOf(item),
|
|
14426
|
+
component: item.component,
|
|
14427
|
+
label: labelFor(item, getWidgetConfig),
|
|
14428
|
+
events: events
|
|
14429
|
+
});
|
|
14430
|
+
});
|
|
14431
|
+
return Array.from(byKey.values());
|
|
14432
|
+
}
|
|
14433
|
+
|
|
14434
|
+
/**
|
|
14435
|
+
* Every widget instance in the workspace that accepts at least one
|
|
14436
|
+
* handler. Used to populate the receiver dropdown. Deduplicated by
|
|
14437
|
+
* `${component}|${itemId}` (see getEmitters).
|
|
14438
|
+
* @returns {Array<{ itemId, component, label, eventHandlers: string[], listeners: object, key: string }>}
|
|
14439
|
+
*/
|
|
14440
|
+
function getReceivers(workspace, getWidgetConfig) {
|
|
14441
|
+
var byKey = new Map();
|
|
14442
|
+
forEachWidget(workspace, function (item) {
|
|
14443
|
+
var handlers = eventHandlersOf(item, getWidgetConfig);
|
|
14444
|
+
if (handlers.length === 0) return;
|
|
14445
|
+
var key = canonicalItemKey(item);
|
|
14446
|
+
if (!key) return;
|
|
14447
|
+
if (byKey.has(key)) return;
|
|
14448
|
+
byKey.set(key, {
|
|
14449
|
+
key: key,
|
|
14450
|
+
itemId: itemIdOf(item),
|
|
14451
|
+
component: item.component,
|
|
14452
|
+
label: labelFor(item, getWidgetConfig),
|
|
14453
|
+
eventHandlers: handlers,
|
|
14454
|
+
listeners: item.listeners || {}
|
|
14455
|
+
});
|
|
14456
|
+
});
|
|
14457
|
+
return Array.from(byKey.values());
|
|
14458
|
+
}
|
|
14459
|
+
|
|
14460
|
+
/**
|
|
14461
|
+
* Flatten every listener binding in the workspace into a list of
|
|
14462
|
+
* { receiverItemId, receiverComponent, handlerName, sourceComponent,
|
|
14463
|
+
* sourceItemId, eventName, raw } tuples. `raw` is the original
|
|
14464
|
+
* event string for round-trip fidelity on remove.
|
|
14465
|
+
*/
|
|
14466
|
+
function getCurrentWiring(workspace) {
|
|
14467
|
+
var wiring = [];
|
|
14468
|
+
forEachWidget(workspace, function (item) {
|
|
14469
|
+
var receiverItemId = itemIdOf(item);
|
|
14470
|
+
if (receiverItemId == null) return;
|
|
14471
|
+
var listeners = item.listeners;
|
|
14472
|
+
if (!listeners || _typeof(listeners) !== "object") return;
|
|
14473
|
+
for (var _i = 0, _Object$entries = Object.entries(listeners); _i < _Object$entries.length; _i++) {
|
|
14474
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
14475
|
+
handlerName = _Object$entries$_i[0],
|
|
14476
|
+
eventList = _Object$entries$_i[1];
|
|
14477
|
+
// Live format is array; defensive guard for legacy object
|
|
14478
|
+
// form (a single source widget keyed under the handler).
|
|
14479
|
+
var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
|
|
14480
|
+
var _iterator = _createForOfIteratorHelper$n(events),
|
|
14481
|
+
_step;
|
|
14482
|
+
try {
|
|
14483
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
14484
|
+
var raw = _step.value;
|
|
14485
|
+
var parsed = parseEventString(raw);
|
|
14486
|
+
if (!parsed) continue;
|
|
14487
|
+
wiring.push({
|
|
14488
|
+
receiverItemId: receiverItemId,
|
|
14489
|
+
receiverComponent: item.component,
|
|
14490
|
+
handlerName: handlerName,
|
|
14491
|
+
sourceComponent: parsed.component,
|
|
14492
|
+
sourceItemId: parsed.itemId,
|
|
14493
|
+
eventName: parsed.event,
|
|
14494
|
+
raw: raw
|
|
14495
|
+
});
|
|
14496
|
+
}
|
|
14497
|
+
} catch (err) {
|
|
14498
|
+
_iterator.e(err);
|
|
14499
|
+
} finally {
|
|
14500
|
+
_iterator.f();
|
|
14501
|
+
}
|
|
14502
|
+
}
|
|
14503
|
+
});
|
|
14504
|
+
return wiring;
|
|
14505
|
+
}
|
|
14506
|
+
|
|
14507
|
+
/**
|
|
14508
|
+
* Detect listener bindings that are no longer valid: the source widget
|
|
14509
|
+
* doesn't exist in the workspace anymore, or the source widget doesn't
|
|
14510
|
+
* declare the event, or the receiver doesn't declare the handler.
|
|
14511
|
+
* Each entry includes a `reason` so the modal can show a sensible
|
|
14512
|
+
* message.
|
|
14513
|
+
*/
|
|
14514
|
+
function getOrphanedListeners(workspace, getWidgetConfig) {
|
|
14515
|
+
var wiring = getCurrentWiring(workspace);
|
|
14516
|
+
if (wiring.length === 0) return [];
|
|
14517
|
+
|
|
14518
|
+
// Build two lookups:
|
|
14519
|
+
// byCompositeKey: `${component}|${itemId}` → widget meta (primary)
|
|
14520
|
+
// byItemId: `${itemId}` → widget meta (fallback,
|
|
14521
|
+
// used only for the "source-missing" check where
|
|
14522
|
+
// the wiring's component can't be trusted yet)
|
|
14523
|
+
// The composite key matches how the runtime event-string
|
|
14524
|
+
// (`Component[itemId].event`) identifies a widget, so orphan
|
|
14525
|
+
// decisions line up with what actually fires at runtime.
|
|
14526
|
+
var byCompositeKey = new Map();
|
|
14527
|
+
var byItemId = new Map();
|
|
14528
|
+
forEachWidget(workspace, function (item) {
|
|
14529
|
+
var id = itemIdOf(item);
|
|
14530
|
+
if (id == null) return;
|
|
14531
|
+
var meta = {
|
|
14532
|
+
component: item.component,
|
|
14533
|
+
events: eventsOf(item, getWidgetConfig),
|
|
14534
|
+
eventHandlers: eventHandlersOf(item, getWidgetConfig)
|
|
14535
|
+
};
|
|
14536
|
+
byCompositeKey.set("".concat(item.component, "|").concat(id), meta);
|
|
14537
|
+
// First-seen wins on numeric-id collisions; good enough for the
|
|
14538
|
+
// "does any widget with this id exist?" fallback.
|
|
14539
|
+
if (!byItemId.has(id)) byItemId.set(id, meta);
|
|
14540
|
+
});
|
|
14541
|
+
var orphans = [];
|
|
14542
|
+
var _iterator2 = _createForOfIteratorHelper$n(wiring),
|
|
14543
|
+
_step2;
|
|
14544
|
+
try {
|
|
14545
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
14546
|
+
var w = _step2.value;
|
|
14547
|
+
var srcKey = "".concat(w.sourceComponent, "|").concat(w.sourceItemId);
|
|
14548
|
+
var src = byCompositeKey.get(srcKey);
|
|
14549
|
+
if (!src) {
|
|
14550
|
+
// No (component, id) match. If some OTHER widget still owns
|
|
14551
|
+
// this id, the source component changed; otherwise it's truly
|
|
14552
|
+
// missing. Preserves the user's ability to see whether a
|
|
14553
|
+
// rename happened vs. a delete.
|
|
14554
|
+
var fallback = byItemId.get(String(w.sourceItemId));
|
|
14555
|
+
orphans.push(_objectSpread$O(_objectSpread$O({}, w), {}, {
|
|
14556
|
+
reason: fallback ? "source-component-mismatch" : "source-missing"
|
|
14557
|
+
}));
|
|
14558
|
+
continue;
|
|
14559
|
+
}
|
|
14560
|
+
if (!src.events.includes(w.eventName)) {
|
|
14561
|
+
orphans.push(_objectSpread$O(_objectSpread$O({}, w), {}, {
|
|
14562
|
+
reason: "event-not-emitted"
|
|
14563
|
+
}));
|
|
14564
|
+
continue;
|
|
14565
|
+
}
|
|
14566
|
+
var receiverKey = "".concat(w.receiverComponent, "|").concat(w.receiverItemId);
|
|
14567
|
+
var receiver = byCompositeKey.get(receiverKey);
|
|
14568
|
+
if (receiver && !receiver.eventHandlers.includes(w.handlerName)) {
|
|
14569
|
+
orphans.push(_objectSpread$O(_objectSpread$O({}, w), {}, {
|
|
14570
|
+
reason: "handler-not-declared"
|
|
14571
|
+
}));
|
|
14572
|
+
}
|
|
14573
|
+
}
|
|
14574
|
+
} catch (err) {
|
|
14575
|
+
_iterator2.e(err);
|
|
14576
|
+
} finally {
|
|
14577
|
+
_iterator2.f();
|
|
14578
|
+
}
|
|
14579
|
+
return orphans;
|
|
14580
|
+
}
|
|
14581
|
+
|
|
14582
|
+
/**
|
|
14583
|
+
* Mutate a workspace tree in place, removing listener bindings whose
|
|
14584
|
+
* source widget is not present in the workspace. Pure: doesn't need
|
|
14585
|
+
* ComponentManager, so it's safe to call from WorkspaceModel during
|
|
14586
|
+
* load — the workspace's own tree is the only source of truth.
|
|
14587
|
+
*
|
|
14588
|
+
* Handles the four cases producing a "source-missing" orphan:
|
|
14589
|
+
* - the emitter widget was deleted
|
|
14590
|
+
* - the emitter widget's id now belongs to a different component
|
|
14591
|
+
* (stored binding has stale component name)
|
|
14592
|
+
* - the source string failed to parse (legacy/garbage data)
|
|
14593
|
+
*
|
|
14594
|
+
* Leaves "event-not-emitted" / "handler-not-declared" cases untouched
|
|
14595
|
+
* because they require the current widget catalog to decide — those
|
|
14596
|
+
* are handled at runtime with full ComponentManager access.
|
|
14597
|
+
*
|
|
14598
|
+
* @returns {number} count of bindings removed (for logging/diagnostics)
|
|
14599
|
+
*/
|
|
14600
|
+
function pruneDeadListenerReferences(workspace) {
|
|
14601
|
+
if (!workspace) return 0;
|
|
14602
|
+
|
|
14603
|
+
// Build the set of live widgets in the tree, keyed by the same
|
|
14604
|
+
// `${component}|${itemId}` the runtime uses to resolve events.
|
|
14605
|
+
var liveKeys = new Set();
|
|
14606
|
+
var _walkForLive = function walkForLive(items) {
|
|
14607
|
+
if (!Array.isArray(items)) return;
|
|
14608
|
+
var _iterator3 = _createForOfIteratorHelper$n(items),
|
|
14609
|
+
_step3;
|
|
14610
|
+
try {
|
|
14611
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
14612
|
+
var item = _step3.value;
|
|
14613
|
+
if (!item || _typeof(item) !== "object") continue;
|
|
14614
|
+
if (item.component) {
|
|
14615
|
+
var id = itemIdOf(item);
|
|
14616
|
+
if (id != null) liveKeys.add("".concat(item.component, "|").concat(id));
|
|
14617
|
+
}
|
|
14618
|
+
if (Array.isArray(item.items)) _walkForLive(item.items);
|
|
14619
|
+
if (Array.isArray(item.layout)) _walkForLive(item.layout);
|
|
14620
|
+
}
|
|
14621
|
+
} catch (err) {
|
|
14622
|
+
_iterator3.e(err);
|
|
14623
|
+
} finally {
|
|
14624
|
+
_iterator3.f();
|
|
14625
|
+
}
|
|
14626
|
+
};
|
|
14627
|
+
_walkForLive(workspace.layout);
|
|
14628
|
+
if (Array.isArray(workspace.pages)) {
|
|
14629
|
+
var _iterator4 = _createForOfIteratorHelper$n(workspace.pages),
|
|
14630
|
+
_step4;
|
|
14631
|
+
try {
|
|
14632
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
14633
|
+
var page = _step4.value;
|
|
14634
|
+
_walkForLive(page === null || page === void 0 ? void 0 : page.layout);
|
|
14635
|
+
}
|
|
14636
|
+
} catch (err) {
|
|
14637
|
+
_iterator4.e(err);
|
|
14638
|
+
} finally {
|
|
14639
|
+
_iterator4.f();
|
|
14640
|
+
}
|
|
14641
|
+
}
|
|
14642
|
+
_walkForLive(workspace.sidebarLayout);
|
|
14643
|
+
var removed = 0;
|
|
14644
|
+
var _pruneListeners = function pruneListeners(items) {
|
|
14645
|
+
if (!Array.isArray(items)) return;
|
|
14646
|
+
var _iterator5 = _createForOfIteratorHelper$n(items),
|
|
14647
|
+
_step5;
|
|
14648
|
+
try {
|
|
14649
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
14650
|
+
var item = _step5.value;
|
|
14651
|
+
if (!item || _typeof(item) !== "object") continue;
|
|
14652
|
+
if (item.listeners && _typeof(item.listeners) === "object") {
|
|
14653
|
+
for (var _i2 = 0, _Object$keys = Object.keys(item.listeners); _i2 < _Object$keys.length; _i2++) {
|
|
14654
|
+
var handler = _Object$keys[_i2];
|
|
14655
|
+
var events = item.listeners[handler];
|
|
14656
|
+
if (!Array.isArray(events)) continue;
|
|
14657
|
+
var kept = [];
|
|
14658
|
+
var _iterator6 = _createForOfIteratorHelper$n(events),
|
|
14659
|
+
_step6;
|
|
14660
|
+
try {
|
|
14661
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
14662
|
+
var raw = _step6.value;
|
|
14663
|
+
var parsed = parseEventString(raw);
|
|
14664
|
+
if (parsed && liveKeys.has("".concat(parsed.component, "|").concat(parsed.itemId))) {
|
|
14665
|
+
kept.push(raw);
|
|
14666
|
+
} else {
|
|
14667
|
+
removed += 1;
|
|
14668
|
+
}
|
|
14669
|
+
}
|
|
14670
|
+
} catch (err) {
|
|
14671
|
+
_iterator6.e(err);
|
|
14672
|
+
} finally {
|
|
14673
|
+
_iterator6.f();
|
|
14674
|
+
}
|
|
14675
|
+
if (kept.length === 0) {
|
|
14676
|
+
delete item.listeners[handler];
|
|
14677
|
+
} else if (kept.length !== events.length) {
|
|
14678
|
+
item.listeners[handler] = kept;
|
|
14679
|
+
}
|
|
14680
|
+
}
|
|
14681
|
+
}
|
|
14682
|
+
if (Array.isArray(item.items)) _pruneListeners(item.items);
|
|
14683
|
+
if (Array.isArray(item.layout)) _pruneListeners(item.layout);
|
|
14684
|
+
}
|
|
14685
|
+
} catch (err) {
|
|
14686
|
+
_iterator5.e(err);
|
|
14687
|
+
} finally {
|
|
14688
|
+
_iterator5.f();
|
|
14689
|
+
}
|
|
14690
|
+
};
|
|
14691
|
+
_pruneListeners(workspace.layout);
|
|
14692
|
+
if (Array.isArray(workspace.pages)) {
|
|
14693
|
+
var _iterator7 = _createForOfIteratorHelper$n(workspace.pages),
|
|
14694
|
+
_step7;
|
|
14695
|
+
try {
|
|
14696
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
14697
|
+
var _page = _step7.value;
|
|
14698
|
+
_pruneListeners(_page === null || _page === void 0 ? void 0 : _page.layout);
|
|
14699
|
+
}
|
|
14700
|
+
} catch (err) {
|
|
14701
|
+
_iterator7.e(err);
|
|
14702
|
+
} finally {
|
|
14703
|
+
_iterator7.f();
|
|
14704
|
+
}
|
|
14705
|
+
}
|
|
14706
|
+
_pruneListeners(workspace.sidebarLayout);
|
|
14707
|
+
return removed;
|
|
14708
|
+
}
|
|
14709
|
+
|
|
14710
|
+
/**
|
|
14711
|
+
* Apply a staged delta to a workspace's listener bindings and return a
|
|
14712
|
+
* NEW workspace object (deep-cloned along the modified path).
|
|
14713
|
+
*
|
|
14714
|
+
* `adds` / `removes` are arrays of
|
|
14715
|
+
* { receiverItemId, handlerName, sourceComponent, sourceItemId, eventName }
|
|
14716
|
+
*
|
|
14717
|
+
* Removes may also pass `raw` (the exact pre-existing event string) for
|
|
14718
|
+
* a precise match; otherwise we match on the canonical formatted form.
|
|
14719
|
+
*/
|
|
14720
|
+
function applyWiringChanges(workspace, _ref) {
|
|
14721
|
+
var _ref$adds = _ref.adds,
|
|
14722
|
+
adds = _ref$adds === void 0 ? [] : _ref$adds,
|
|
14723
|
+
_ref$removes = _ref.removes,
|
|
14724
|
+
removes = _ref$removes === void 0 ? [] : _ref$removes;
|
|
14725
|
+
if (!workspace) return workspace;
|
|
14726
|
+
if (adds.length === 0 && removes.length === 0) return workspace;
|
|
14727
|
+
|
|
14728
|
+
// Group changes by receiver for cheap per-item updates.
|
|
14729
|
+
var byReceiver = new Map();
|
|
14730
|
+
var ensure = function ensure(id) {
|
|
14731
|
+
if (!byReceiver.has(id)) byReceiver.set(id, {
|
|
14732
|
+
adds: [],
|
|
14733
|
+
removes: []
|
|
14734
|
+
});
|
|
14735
|
+
return byReceiver.get(id);
|
|
14736
|
+
};
|
|
14737
|
+
var _iterator8 = _createForOfIteratorHelper$n(adds),
|
|
14738
|
+
_step8;
|
|
14739
|
+
try {
|
|
14740
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
14741
|
+
var a = _step8.value;
|
|
14742
|
+
if (!a.receiverItemId) continue;
|
|
14743
|
+
ensure(String(a.receiverItemId)).adds.push(a);
|
|
14744
|
+
}
|
|
14745
|
+
} catch (err) {
|
|
14746
|
+
_iterator8.e(err);
|
|
14747
|
+
} finally {
|
|
14748
|
+
_iterator8.f();
|
|
14749
|
+
}
|
|
14750
|
+
var _iterator9 = _createForOfIteratorHelper$n(removes),
|
|
14751
|
+
_step9;
|
|
14752
|
+
try {
|
|
14753
|
+
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
14754
|
+
var r = _step9.value;
|
|
14755
|
+
if (!r.receiverItemId) continue;
|
|
14756
|
+
ensure(String(r.receiverItemId)).removes.push(r);
|
|
14757
|
+
}
|
|
14758
|
+
|
|
14759
|
+
// Walk the tree and rebuild listeners on every touched item. We do
|
|
14760
|
+
// shallow clones along the path so React change detection is
|
|
14761
|
+
// reliable — but the tree shape is preserved.
|
|
14762
|
+
} catch (err) {
|
|
14763
|
+
_iterator9.e(err);
|
|
14764
|
+
} finally {
|
|
14765
|
+
_iterator9.f();
|
|
14766
|
+
}
|
|
14767
|
+
var cloneList = function cloneList(items) {
|
|
14768
|
+
return Array.isArray(items) ? items.map(function (item) {
|
|
14769
|
+
return transform(item);
|
|
14770
|
+
}) : items;
|
|
14771
|
+
};
|
|
14772
|
+
var transform = function transform(item) {
|
|
14773
|
+
if (!item || _typeof(item) !== "object") return item;
|
|
14774
|
+
var next = item;
|
|
14775
|
+
var id = itemIdOf(item);
|
|
14776
|
+
var change = id != null ? byReceiver.get(String(id)) : null;
|
|
14777
|
+
if (change) {
|
|
14778
|
+
var newListeners = applyToItem(item.listeners || {}, change);
|
|
14779
|
+
next = _objectSpread$O(_objectSpread$O({}, next), {}, {
|
|
14780
|
+
listeners: newListeners
|
|
14781
|
+
});
|
|
14782
|
+
}
|
|
14783
|
+
if (Array.isArray(next.items)) {
|
|
14784
|
+
next = _objectSpread$O(_objectSpread$O({}, next), {}, {
|
|
14785
|
+
items: cloneList(next.items)
|
|
14786
|
+
});
|
|
14787
|
+
}
|
|
14788
|
+
if (Array.isArray(next.layout)) {
|
|
14789
|
+
next = _objectSpread$O(_objectSpread$O({}, next), {}, {
|
|
14790
|
+
layout: cloneList(next.layout)
|
|
14791
|
+
});
|
|
14792
|
+
}
|
|
14793
|
+
return next;
|
|
14794
|
+
};
|
|
14795
|
+
var updatedWs = _objectSpread$O({}, workspace);
|
|
14796
|
+
if (Array.isArray(workspace.layout)) {
|
|
14797
|
+
updatedWs.layout = cloneList(workspace.layout);
|
|
14798
|
+
}
|
|
14799
|
+
if (Array.isArray(workspace.pages)) {
|
|
14800
|
+
updatedWs.pages = workspace.pages.map(function (page) {
|
|
14801
|
+
return _objectSpread$O(_objectSpread$O({}, page), {}, {
|
|
14802
|
+
layout: cloneList(page.layout)
|
|
14803
|
+
});
|
|
14804
|
+
});
|
|
14805
|
+
}
|
|
14806
|
+
if (Array.isArray(workspace.sidebarLayout)) {
|
|
14807
|
+
updatedWs.sidebarLayout = cloneList(workspace.sidebarLayout);
|
|
14808
|
+
}
|
|
14809
|
+
return updatedWs;
|
|
14810
|
+
}
|
|
14811
|
+
function applyToItem(listeners, _ref2) {
|
|
14812
|
+
var adds = _ref2.adds,
|
|
14813
|
+
removes = _ref2.removes;
|
|
14814
|
+
// Deep enough clone for handler arrays.
|
|
14815
|
+
var next = {};
|
|
14816
|
+
for (var _i3 = 0, _Object$entries2 = Object.entries(listeners); _i3 < _Object$entries2.length; _i3++) {
|
|
14817
|
+
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
|
|
14818
|
+
k = _Object$entries2$_i[0],
|
|
14819
|
+
v = _Object$entries2$_i[1];
|
|
14820
|
+
next[k] = Array.isArray(v) ? _toConsumableArray(v) : v;
|
|
14821
|
+
}
|
|
14822
|
+
|
|
14823
|
+
// Removes first so a re-add (rare) lands.
|
|
14824
|
+
var _iterator0 = _createForOfIteratorHelper$n(removes),
|
|
14825
|
+
_step0;
|
|
14826
|
+
try {
|
|
14827
|
+
var _loop = function _loop() {
|
|
14828
|
+
var r = _step0.value;
|
|
14829
|
+
var target = r.handlerName;
|
|
14830
|
+
if (!target) return 0; // continue
|
|
14831
|
+
var events = next[target];
|
|
14832
|
+
if (!Array.isArray(events)) return 0; // continue
|
|
14833
|
+
var eventStr = r.raw || formatEventString(r.sourceComponent, r.sourceItemId, r.eventName);
|
|
14834
|
+
var filtered = events.filter(function (e) {
|
|
14835
|
+
return e !== eventStr;
|
|
14836
|
+
});
|
|
14837
|
+
if (filtered.length === 0) {
|
|
14838
|
+
delete next[target];
|
|
14839
|
+
} else {
|
|
14840
|
+
next[target] = filtered;
|
|
14841
|
+
}
|
|
14842
|
+
},
|
|
14843
|
+
_ret;
|
|
14844
|
+
for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
|
|
14845
|
+
_ret = _loop();
|
|
14846
|
+
if (_ret === 0) continue;
|
|
14847
|
+
}
|
|
14848
|
+
} catch (err) {
|
|
14849
|
+
_iterator0.e(err);
|
|
14850
|
+
} finally {
|
|
14851
|
+
_iterator0.f();
|
|
14852
|
+
}
|
|
14853
|
+
var _iterator1 = _createForOfIteratorHelper$n(adds),
|
|
14854
|
+
_step1;
|
|
14855
|
+
try {
|
|
14856
|
+
for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
|
|
14857
|
+
var a = _step1.value;
|
|
14858
|
+
var target = a.handlerName;
|
|
14859
|
+
if (!target) continue;
|
|
14860
|
+
var eventStr = formatEventString(a.sourceComponent, a.sourceItemId, a.eventName);
|
|
14861
|
+
var existing = Array.isArray(next[target]) ? next[target] : [];
|
|
14862
|
+
if (existing.includes(eventStr)) continue;
|
|
14863
|
+
next[target] = [].concat(_toConsumableArray(existing), [eventStr]);
|
|
14864
|
+
}
|
|
14865
|
+
} catch (err) {
|
|
14866
|
+
_iterator1.e(err);
|
|
14867
|
+
} finally {
|
|
14868
|
+
_iterator1.f();
|
|
14869
|
+
}
|
|
14870
|
+
return next;
|
|
14871
|
+
}
|
|
14872
|
+
|
|
14873
|
+
var SectionLayout = function SectionLayout(_ref) {
|
|
14874
|
+
var listContent = _ref.listContent,
|
|
14875
|
+
_ref$detailContent = _ref.detailContent,
|
|
14876
|
+
detailContent = _ref$detailContent === void 0 ? null : _ref$detailContent,
|
|
14877
|
+
_ref$listWidth = _ref.listWidth,
|
|
14878
|
+
listWidth = _ref$listWidth === void 0 ? "w-80" : _ref$listWidth,
|
|
14879
|
+
_ref$emptyDetailMessa = _ref.emptyDetailMessage,
|
|
14880
|
+
emptyDetailMessage = _ref$emptyDetailMessa === void 0 ? "Select an item to view details" : _ref$emptyDetailMessa;
|
|
14881
|
+
var _useContext = useContext(ThemeContext),
|
|
14882
|
+
currentTheme = _useContext.currentTheme;
|
|
14883
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
14884
|
+
grow: false
|
|
14885
|
+
});
|
|
14886
|
+
var headerStyles = getStylesForItem(themeObjects.PANEL_HEADER, currentTheme, {
|
|
14887
|
+
grow: false
|
|
14888
|
+
});
|
|
14889
|
+
return /*#__PURE__*/jsxs("div", {
|
|
14890
|
+
className: "flex flex-row flex-1 min-h-0 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
14891
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
14892
|
+
className: "flex flex-col flex-shrink-0 ".concat(listWidth, " border-r ").concat(headerStyles.borderColor || "", " overflow-y-auto"),
|
|
14893
|
+
children: listContent
|
|
14894
|
+
}), /*#__PURE__*/jsx("div", {
|
|
14895
|
+
className: "flex flex-col flex-1 min-w-0 min-h-0",
|
|
14896
|
+
children: detailContent ? /*#__PURE__*/jsx("div", {
|
|
14897
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
14898
|
+
children: detailContent
|
|
14899
|
+
}) : /*#__PURE__*/jsx("div", {
|
|
14900
|
+
className: "flex flex-1 items-center justify-center",
|
|
14901
|
+
children: /*#__PURE__*/jsx("span", {
|
|
14902
|
+
className: "text-sm opacity-40",
|
|
14903
|
+
children: emptyDetailMessage
|
|
14904
|
+
})
|
|
14905
|
+
})
|
|
14906
|
+
})]
|
|
14907
|
+
});
|
|
14908
|
+
};
|
|
14909
|
+
|
|
14910
|
+
var PanelEditItemHandlers = function PanelEditItemHandlers(_ref) {
|
|
14911
|
+
var workspace = _ref.workspace,
|
|
14912
|
+
onUpdate = _ref.onUpdate,
|
|
14913
|
+
_ref$item = _ref.item,
|
|
14914
|
+
item = _ref$item === void 0 ? null : _ref$item;
|
|
14915
|
+
var _useState = useState(item),
|
|
14916
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
14917
|
+
itemSelected = _useState2[0],
|
|
14918
|
+
setItemSelected = _useState2[1];
|
|
14919
|
+
var _useState3 = useState(workspace),
|
|
14920
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
14921
|
+
workspaceSelected = _useState4[0],
|
|
14922
|
+
setWorkspaceSelected = _useState4[1];
|
|
14923
|
+
var _useState5 = useState(null),
|
|
14924
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
14925
|
+
eventHandlerSelected = _useState6[0],
|
|
14926
|
+
setEventHandlerSelected = _useState6[1];
|
|
14927
|
+
useEffect(function () {
|
|
14928
|
+
if (deepEqual$1(item, itemSelected) === false) {
|
|
14929
|
+
setItemSelected(function () {
|
|
14930
|
+
return item;
|
|
14931
|
+
});
|
|
14932
|
+
}
|
|
14933
|
+
if (deepEqual$1(workspace, workspaceSelected) === false) {
|
|
14934
|
+
setWorkspaceSelected(function () {
|
|
14935
|
+
return workspace;
|
|
14936
|
+
});
|
|
14937
|
+
}
|
|
14938
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
14939
|
+
}, [workspace, item]);
|
|
14940
|
+
|
|
14941
|
+
// Build the deduped list of source widgets — every widget in the
|
|
14942
|
+
// workspace that emits at least one event AND isn't the receiver
|
|
14943
|
+
// itself. forEachWidget dedupes by `${component}|${id}` so a widget
|
|
14944
|
+
// referenced from multiple locations (root layout AND pages) shows
|
|
14945
|
+
// up once.
|
|
14946
|
+
var sourceWidgets = function () {
|
|
14947
|
+
var list = [];
|
|
14948
|
+
var seen = new Set();
|
|
14949
|
+
forEachWidget(workspaceSelected, function (li) {
|
|
14950
|
+
if (!li || !li.component) return;
|
|
14951
|
+
if (li.component === "Container" || li.component === "LayoutContainer") {
|
|
14952
|
+
return;
|
|
14953
|
+
}
|
|
14954
|
+
if (li.id === (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.id) && li.component === (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.component)) {
|
|
14955
|
+
return;
|
|
14956
|
+
}
|
|
14957
|
+
if (!Array.isArray(li.events) || li.events.length === 0) return;
|
|
14958
|
+
var key = "".concat(li.component, "|").concat(li.id);
|
|
14959
|
+
if (seen.has(key)) return;
|
|
14960
|
+
seen.add(key);
|
|
14961
|
+
list.push(li);
|
|
14962
|
+
});
|
|
14963
|
+
return list;
|
|
14964
|
+
}();
|
|
14965
|
+
function handleSelectEventHandler(handler) {
|
|
14966
|
+
setEventHandlerSelected(function () {
|
|
14967
|
+
return handler;
|
|
14968
|
+
});
|
|
14969
|
+
}
|
|
14970
|
+
function commitChange(_ref2) {
|
|
14971
|
+
var _ref2$adds = _ref2.adds,
|
|
14972
|
+
adds = _ref2$adds === void 0 ? [] : _ref2$adds,
|
|
14973
|
+
_ref2$removes = _ref2.removes,
|
|
14974
|
+
removes = _ref2$removes === void 0 ? [] : _ref2$removes;
|
|
14975
|
+
if (!workspaceSelected || !itemSelected) return;
|
|
14976
|
+
if (adds.length === 0 && removes.length === 0) return;
|
|
14977
|
+
var nextWorkspace = applyWiringChanges(workspaceSelected, {
|
|
14978
|
+
adds: adds,
|
|
14979
|
+
removes: removes
|
|
14980
|
+
});
|
|
14981
|
+
// Find the post-change receiver item so the parent's onUpdate
|
|
14982
|
+
// gets the updated layout-item shape (some callers cache it).
|
|
14983
|
+
var nextItem = itemSelected;
|
|
14984
|
+
forEachWidget(nextWorkspace, function (li) {
|
|
14985
|
+
if ((li === null || li === void 0 ? void 0 : li.id) === itemSelected.id && li.component === itemSelected.component) {
|
|
14986
|
+
nextItem = li;
|
|
14987
|
+
}
|
|
14988
|
+
});
|
|
14989
|
+
setWorkspaceSelected(nextWorkspace);
|
|
14990
|
+
setItemSelected(nextItem);
|
|
14991
|
+
onUpdate(nextItem, nextWorkspace);
|
|
14992
|
+
}
|
|
14993
|
+
function handleSelectEvent(eventString) {
|
|
14994
|
+
if (!eventString || !eventHandlerSelected) return;
|
|
14995
|
+
var parsed = parseEventString(eventString);
|
|
14996
|
+
if (!parsed) return;
|
|
14997
|
+
commitChange({
|
|
14998
|
+
adds: [{
|
|
14999
|
+
receiverItemId: itemSelected.id,
|
|
15000
|
+
handlerName: eventHandlerSelected,
|
|
15001
|
+
sourceComponent: parsed.component,
|
|
15002
|
+
sourceItemId: parsed.itemId,
|
|
15003
|
+
eventName: parsed.event
|
|
15004
|
+
}]
|
|
15005
|
+
});
|
|
15006
|
+
}
|
|
15007
|
+
function handleRemoveEvent(eventString) {
|
|
15008
|
+
if (!eventString || !eventHandlerSelected) return;
|
|
15009
|
+
var parsed = parseEventString(eventString);
|
|
15010
|
+
if (!parsed) return;
|
|
15011
|
+
commitChange({
|
|
15012
|
+
removes: [{
|
|
15013
|
+
receiverItemId: itemSelected.id,
|
|
15014
|
+
handlerName: eventHandlerSelected,
|
|
15015
|
+
sourceComponent: parsed.component,
|
|
15016
|
+
sourceItemId: parsed.itemId,
|
|
15017
|
+
eventName: parsed.event,
|
|
15018
|
+
raw: eventString
|
|
15019
|
+
}]
|
|
15020
|
+
});
|
|
15021
|
+
}
|
|
15022
|
+
function isSelectedEvent(event) {
|
|
15023
|
+
if (!event || !eventHandlerSelected) return false;
|
|
15024
|
+
var itemListeners = (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected["listeners"]) || {};
|
|
15025
|
+
var list = itemListeners[eventHandlerSelected];
|
|
15026
|
+
return Array.isArray(list) && list.includes(event);
|
|
15027
|
+
}
|
|
15028
|
+
|
|
15029
|
+
// Get the event handlers for the current item
|
|
15030
|
+
var eventHandlers = Array.isArray(itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.eventHandlers) ? itemSelected.eventHandlers.filter(function (value, index, array) {
|
|
15031
|
+
return array.indexOf(value) === index;
|
|
15032
|
+
}) : [];
|
|
15033
|
+
|
|
15034
|
+
// Build a set of valid event strings so we only count "connected"
|
|
15035
|
+
// listeners that still point at a live emitter. Stale references
|
|
15036
|
+
// are dropped from the count even before pruneDeadListenerReferences
|
|
15037
|
+
// runs on the next save.
|
|
15038
|
+
var validEventStrings = new Set();
|
|
15039
|
+
sourceWidgets.forEach(function (li) {
|
|
15040
|
+
if (Array.isArray(li.events)) {
|
|
15041
|
+
li.events.forEach(function (event) {
|
|
15042
|
+
validEventStrings.add(formatEventString(li.component, li.id, event));
|
|
15043
|
+
});
|
|
15044
|
+
}
|
|
15045
|
+
});
|
|
15046
|
+
|
|
15047
|
+
// Get the listeners for the current item, filtering out orphaned references
|
|
15048
|
+
var rawListeners = itemSelected ? itemSelected["listeners"] || {} : {};
|
|
15049
|
+
var listeners = {};
|
|
15050
|
+
Object.keys(rawListeners).forEach(function (handler) {
|
|
15051
|
+
var events = rawListeners[handler];
|
|
15052
|
+
if (Array.isArray(events)) {
|
|
15053
|
+
var validEvents = events.filter(function (e) {
|
|
15054
|
+
return validEventStrings.has(e);
|
|
15055
|
+
});
|
|
15056
|
+
if (validEvents.length > 0) {
|
|
15057
|
+
listeners[handler] = validEvents;
|
|
15058
|
+
}
|
|
15059
|
+
}
|
|
15060
|
+
});
|
|
15061
|
+
function getConnectedCount(handler) {
|
|
15062
|
+
return (listeners[handler] || []).length;
|
|
15063
|
+
}
|
|
15064
|
+
|
|
15065
|
+
// Build the list content (left column)
|
|
15066
|
+
var listContent = /*#__PURE__*/jsxs(Sidebar.Content, {
|
|
15067
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
15068
|
+
className: "px-3 py-2 text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
15069
|
+
children: "Event Handlers"
|
|
15070
|
+
}), eventHandlers.map(function (handler) {
|
|
15071
|
+
var count = getConnectedCount(handler);
|
|
15072
|
+
var isActive = eventHandlerSelected === handler;
|
|
15073
|
+
return /*#__PURE__*/jsx(Sidebar.Item, {
|
|
15074
|
+
icon: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
15075
|
+
icon: "bolt",
|
|
15076
|
+
className: "h-3.5 w-3.5"
|
|
15077
|
+
}),
|
|
15078
|
+
active: isActive,
|
|
15079
|
+
onClick: function onClick() {
|
|
15080
|
+
return handleSelectEventHandler(handler);
|
|
15081
|
+
},
|
|
15082
|
+
badge: count > 0 ? String(count) : null,
|
|
15083
|
+
className: isActive ? "bg-white/10 opacity-100" : "",
|
|
15084
|
+
children: handler
|
|
15085
|
+
}, handler);
|
|
15086
|
+
}), eventHandlers.length === 0 && /*#__PURE__*/jsx("span", {
|
|
15087
|
+
className: "text-sm opacity-40 py-8 text-center",
|
|
15088
|
+
children: "No handlers available"
|
|
15089
|
+
})]
|
|
15090
|
+
});
|
|
15091
|
+
|
|
15092
|
+
// Build the detail content (right column) — when a handler is selected
|
|
15093
|
+
var connectedCount = eventHandlerSelected ? getConnectedCount(eventHandlerSelected) : 0;
|
|
15094
|
+
var detailContent = eventHandlerSelected ? /*#__PURE__*/jsx("div", {
|
|
15095
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
15096
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
15097
|
+
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6",
|
|
15098
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
15099
|
+
className: "flex flex-col space-y-1",
|
|
15100
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
15101
|
+
title: eventHandlerSelected,
|
|
15102
|
+
padding: false
|
|
15103
|
+
}), /*#__PURE__*/jsxs("span", {
|
|
15104
|
+
className: "text-sm opacity-70",
|
|
15105
|
+
children: [connectedCount, " event", connectedCount !== 1 ? "s" : "", " connected"]
|
|
15106
|
+
})]
|
|
15107
|
+
}), sourceWidgets.map(function (layout) {
|
|
15108
|
+
return /*#__PURE__*/jsxs("div", {
|
|
15109
|
+
className: "flex flex-col space-y-2",
|
|
15110
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
15111
|
+
className: "text-xs font-semibold opacity-40 uppercase tracking-wider",
|
|
15112
|
+
children: [layout["component"], " [", layout["id"], "]"]
|
|
15113
|
+
}), layout.events.filter(function (value, index, array) {
|
|
15114
|
+
return array.indexOf(value) === index;
|
|
15115
|
+
}).map(function (event) {
|
|
15116
|
+
var eventString = formatEventString(layout.component, layout.id, event);
|
|
15117
|
+
var selected = isSelectedEvent(eventString);
|
|
15118
|
+
return /*#__PURE__*/jsxs("div", {
|
|
15119
|
+
onClick: function onClick() {
|
|
15120
|
+
return selected ? handleRemoveEvent(eventString) : handleSelectEvent(eventString);
|
|
15121
|
+
},
|
|
15122
|
+
className: "flex flex-row items-center gap-3 px-3 py-2 rounded-md cursor-pointer ".concat(selected ? "opacity-100" : "opacity-60 hover:opacity-80"),
|
|
15123
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
15124
|
+
icon: selected ? "square-check" : "square",
|
|
15125
|
+
className: "h-4 w-4 flex-shrink-0"
|
|
15126
|
+
}), /*#__PURE__*/jsx("span", {
|
|
15127
|
+
className: "text-sm",
|
|
15128
|
+
children: event
|
|
15129
|
+
})]
|
|
15130
|
+
}, eventString);
|
|
15131
|
+
})]
|
|
15132
|
+
}, "".concat(layout.component, "|").concat(layout.id));
|
|
15133
|
+
}), sourceWidgets.length === 0 && /*#__PURE__*/jsx("span", {
|
|
15134
|
+
className: "text-sm opacity-40",
|
|
15135
|
+
children: "No events available from other widgets"
|
|
15136
|
+
})]
|
|
15137
|
+
})
|
|
15138
|
+
}) : null;
|
|
15139
|
+
if (!itemSelected || !workspaceSelected) {
|
|
15140
|
+
return null;
|
|
15141
|
+
}
|
|
15142
|
+
return /*#__PURE__*/jsx(SectionLayout, {
|
|
15143
|
+
listContent: listContent,
|
|
15144
|
+
detailContent: detailContent,
|
|
14315
15145
|
listWidth: "w-72",
|
|
14316
15146
|
emptyDetailMessage: "Select a handler to view available events"
|
|
14317
15147
|
});
|
|
@@ -14336,8 +15166,8 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
|
|
|
14336
15166
|
});
|
|
14337
15167
|
};
|
|
14338
15168
|
|
|
14339
|
-
function ownKeys$
|
|
14340
|
-
function _objectSpread$
|
|
15169
|
+
function ownKeys$N(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15170
|
+
function _objectSpread$N(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14341
15171
|
var PanelEditItemProviders = function PanelEditItemProviders(_ref) {
|
|
14342
15172
|
var workspace = _ref.workspace,
|
|
14343
15173
|
onUpdate = _ref.onUpdate,
|
|
@@ -14369,7 +15199,7 @@ var PanelEditItemProviders = function PanelEditItemProviders(_ref) {
|
|
|
14369
15199
|
var selectedProviders = itemSelected.selectedProviders || {};
|
|
14370
15200
|
function handleProviderChange(providerType, providerName) {
|
|
14371
15201
|
var updatedItem = deepCopy(itemSelected);
|
|
14372
|
-
var nextProviders = _objectSpread$
|
|
15202
|
+
var nextProviders = _objectSpread$N({}, updatedItem.selectedProviders || {});
|
|
14373
15203
|
if (providerName) {
|
|
14374
15204
|
nextProviders[providerType] = providerName;
|
|
14375
15205
|
} else {
|
|
@@ -14410,7 +15240,7 @@ var PanelEditItemProviders = function PanelEditItemProviders(_ref) {
|
|
|
14410
15240
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
14411
15241
|
name = _ref5[0],
|
|
14412
15242
|
p = _ref5[1];
|
|
14413
|
-
return _objectSpread$
|
|
15243
|
+
return _objectSpread$N({
|
|
14414
15244
|
name: name
|
|
14415
15245
|
}, p);
|
|
14416
15246
|
});
|
|
@@ -14565,18 +15395,14 @@ var LayoutBuilderConfigModal = function LayoutBuilderConfigModal(_ref) {
|
|
|
14565
15395
|
return s.key === activeSection;
|
|
14566
15396
|
}) || sections[0];
|
|
14567
15397
|
|
|
14568
|
-
// Footer label:
|
|
14569
|
-
//
|
|
15398
|
+
// Footer label: full scoped id (`scope.package.Component`) so the
|
|
15399
|
+
// user always sees the underlying widget identity, even when the
|
|
15400
|
+
// primary title is a custom per-instance label. No workspace fallback.
|
|
14570
15401
|
var footerPackageLabel = function () {
|
|
14571
15402
|
var scopedId = (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.component) || "";
|
|
14572
15403
|
if (typeof scopedId !== "string") return "";
|
|
14573
15404
|
var parts = scopedId.split(".");
|
|
14574
|
-
|
|
14575
|
-
var _parts = _slicedToArray(parts, 2),
|
|
14576
|
-
scope = _parts[0],
|
|
14577
|
-
pkg = _parts[1];
|
|
14578
|
-
if (!scope || !pkg) return "";
|
|
14579
|
-
return "@".concat(scope, "/").concat(pkg);
|
|
15405
|
+
return parts.length === 3 ? scopedId : "";
|
|
14580
15406
|
}();
|
|
14581
15407
|
var componentName = itemSelected ? itemSelected["component"] : "";
|
|
14582
15408
|
var footerLeftContent = footerPackageLabel ? /*#__PURE__*/jsxs("span", {
|
|
@@ -16161,8 +16987,8 @@ var WidgetIcon = function WidgetIcon(_ref) {
|
|
|
16161
16987
|
});
|
|
16162
16988
|
};
|
|
16163
16989
|
|
|
16164
|
-
function ownKeys$
|
|
16165
|
-
function _objectSpread$
|
|
16990
|
+
function ownKeys$M(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16991
|
+
function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16166
16992
|
var ProviderForm = function ProviderForm(_ref) {
|
|
16167
16993
|
var credentialSchema = _ref.credentialSchema,
|
|
16168
16994
|
_ref$initialValues = _ref.initialValues,
|
|
@@ -16207,14 +17033,14 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16207
17033
|
var oldKey = f.key;
|
|
16208
17034
|
if (oldKey && formData[oldKey] !== undefined) {
|
|
16209
17035
|
setFormData(function (fd) {
|
|
16210
|
-
var updated = _objectSpread$
|
|
17036
|
+
var updated = _objectSpread$M({}, fd);
|
|
16211
17037
|
var val = updated[oldKey];
|
|
16212
17038
|
delete updated[oldKey];
|
|
16213
17039
|
if (newKey.trim()) updated[newKey] = val;
|
|
16214
17040
|
return updated;
|
|
16215
17041
|
});
|
|
16216
17042
|
}
|
|
16217
|
-
return _objectSpread$
|
|
17043
|
+
return _objectSpread$M(_objectSpread$M({}, f), {}, {
|
|
16218
17044
|
key: newKey
|
|
16219
17045
|
});
|
|
16220
17046
|
});
|
|
@@ -16226,14 +17052,14 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16226
17052
|
});
|
|
16227
17053
|
if (field !== null && field !== void 0 && field.key) {
|
|
16228
17054
|
setFormData(function (prev) {
|
|
16229
|
-
return _objectSpread$
|
|
17055
|
+
return _objectSpread$M(_objectSpread$M({}, prev), {}, _defineProperty({}, field.key, value));
|
|
16230
17056
|
});
|
|
16231
17057
|
}
|
|
16232
17058
|
};
|
|
16233
17059
|
var handleDynamicSecretToggle = function handleDynamicSecretToggle(id) {
|
|
16234
17060
|
setDynamicFields(function (prev) {
|
|
16235
17061
|
return prev.map(function (f) {
|
|
16236
|
-
return f.id === id ? _objectSpread$
|
|
17062
|
+
return f.id === id ? _objectSpread$M(_objectSpread$M({}, f), {}, {
|
|
16237
17063
|
secret: !f.secret
|
|
16238
17064
|
}) : f;
|
|
16239
17065
|
});
|
|
@@ -16255,7 +17081,7 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16255
17081
|
});
|
|
16256
17082
|
if (field !== null && field !== void 0 && field.key) {
|
|
16257
17083
|
setFormData(function (prev) {
|
|
16258
|
-
var updated = _objectSpread$
|
|
17084
|
+
var updated = _objectSpread$M({}, prev);
|
|
16259
17085
|
delete updated[field.key];
|
|
16260
17086
|
return updated;
|
|
16261
17087
|
});
|
|
@@ -16297,13 +17123,13 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16297
17123
|
*/
|
|
16298
17124
|
var handleInputChange = function handleInputChange(fieldName, value) {
|
|
16299
17125
|
setFormData(function (prev) {
|
|
16300
|
-
return _objectSpread$
|
|
17126
|
+
return _objectSpread$M(_objectSpread$M({}, prev), {}, _defineProperty({}, fieldName, value));
|
|
16301
17127
|
});
|
|
16302
17128
|
|
|
16303
17129
|
// Clear error for this field if it was filled
|
|
16304
17130
|
if (errors[fieldName] && value !== null && value !== void 0 && value.trim()) {
|
|
16305
17131
|
setErrors(function (prev) {
|
|
16306
|
-
var newErrors = _objectSpread$
|
|
17132
|
+
var newErrors = _objectSpread$M({}, prev);
|
|
16307
17133
|
delete newErrors[fieldName];
|
|
16308
17134
|
return newErrors;
|
|
16309
17135
|
});
|
|
@@ -16341,7 +17167,7 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16341
17167
|
// Clear error if filled
|
|
16342
17168
|
if (errors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
16343
17169
|
setErrors(function (prev) {
|
|
16344
|
-
var newErrors = _objectSpread$
|
|
17170
|
+
var newErrors = _objectSpread$M({}, prev);
|
|
16345
17171
|
delete newErrors.providerName;
|
|
16346
17172
|
return newErrors;
|
|
16347
17173
|
});
|
|
@@ -16578,8 +17404,8 @@ var ToolSelector$1 = function ToolSelector(_ref) {
|
|
|
16578
17404
|
});
|
|
16579
17405
|
};
|
|
16580
17406
|
|
|
16581
|
-
function ownKeys$
|
|
16582
|
-
function _objectSpread$
|
|
17407
|
+
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; }
|
|
17408
|
+
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; }
|
|
16583
17409
|
/**
|
|
16584
17410
|
* Shared MCP utility functions.
|
|
16585
17411
|
*
|
|
@@ -16707,7 +17533,7 @@ function buildMcpConfigFromOverrides(baseMcpConfig, envMappingRows, headerRows)
|
|
|
16707
17533
|
headerTemplate[name] = value;
|
|
16708
17534
|
}
|
|
16709
17535
|
});
|
|
16710
|
-
var config = _objectSpread$
|
|
17536
|
+
var config = _objectSpread$L({}, baseMcpConfig);
|
|
16711
17537
|
if (Object.keys(headerTemplate).length > 0) {
|
|
16712
17538
|
config.headerTemplate = headerTemplate;
|
|
16713
17539
|
} else {
|
|
@@ -16725,7 +17551,7 @@ function buildMcpConfigFromOverrides(baseMcpConfig, envMappingRows, headerRows)
|
|
|
16725
17551
|
envMapping[env] = cred;
|
|
16726
17552
|
}
|
|
16727
17553
|
});
|
|
16728
|
-
return _objectSpread$
|
|
17554
|
+
return _objectSpread$L(_objectSpread$L({}, baseMcpConfig), {}, {
|
|
16729
17555
|
envMapping: envMapping
|
|
16730
17556
|
});
|
|
16731
17557
|
}
|
|
@@ -16959,11 +17785,11 @@ function mcpJsonToFormState(jsonString, nextRowId) {
|
|
|
16959
17785
|
return result;
|
|
16960
17786
|
}
|
|
16961
17787
|
|
|
16962
|
-
function _createForOfIteratorHelper$
|
|
16963
|
-
function _unsupportedIterableToArray$
|
|
16964
|
-
function _arrayLikeToArray$
|
|
16965
|
-
function ownKeys$
|
|
16966
|
-
function _objectSpread$
|
|
17788
|
+
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; } } }; }
|
|
17789
|
+
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; } }
|
|
17790
|
+
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; }
|
|
17791
|
+
function ownKeys$K(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17792
|
+
function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16967
17793
|
var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
16968
17794
|
var isOpen = _ref.isOpen,
|
|
16969
17795
|
onClose = _ref.onClose,
|
|
@@ -17158,7 +17984,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17158
17984
|
.map(function (entry) {
|
|
17159
17985
|
var widget = allWidgets[entry.widgetKey];
|
|
17160
17986
|
if (!widget) return null; // Widget no longer exists
|
|
17161
|
-
return _objectSpread$
|
|
17987
|
+
return _objectSpread$K(_objectSpread$K({
|
|
17162
17988
|
key: entry.widgetKey
|
|
17163
17989
|
}, widget), {}, {
|
|
17164
17990
|
savedProviders: entry.providers || {},
|
|
@@ -17246,11 +18072,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17246
18072
|
|
|
17247
18073
|
// Flatten all widgets from all packages for the widget list
|
|
17248
18074
|
flatWidgets = [];
|
|
17249
|
-
_iterator = _createForOfIteratorHelper$
|
|
18075
|
+
_iterator = _createForOfIteratorHelper$m(result.packages || []);
|
|
17250
18076
|
try {
|
|
17251
18077
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
17252
18078
|
pkg = _step.value;
|
|
17253
|
-
_iterator2 = _createForOfIteratorHelper$
|
|
18079
|
+
_iterator2 = _createForOfIteratorHelper$m(pkg.widgets || []);
|
|
17254
18080
|
try {
|
|
17255
18081
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
17256
18082
|
widget = _step2.value;
|
|
@@ -17309,7 +18135,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17309
18135
|
// Get widgets from ComponentManager
|
|
17310
18136
|
var allWidgets = ComponentManager.map();
|
|
17311
18137
|
var widgetList = Object.keys(allWidgets).map(function (key) {
|
|
17312
|
-
return _objectSpread$
|
|
18138
|
+
return _objectSpread$K({
|
|
17313
18139
|
key: key
|
|
17314
18140
|
}, allWidgets[key]);
|
|
17315
18141
|
}).filter(function (widget) {
|
|
@@ -17540,7 +18366,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17540
18366
|
setInlineCreateType(null);
|
|
17541
18367
|
setInlineCreateSchema({});
|
|
17542
18368
|
setInlineCreateError(null);
|
|
17543
|
-
setSelectedProviders(_objectSpread$
|
|
18369
|
+
setSelectedProviders(_objectSpread$K(_objectSpread$K({}, selectedProviders), {}, _defineProperty({}, providerType, providerName)));
|
|
17544
18370
|
}
|
|
17545
18371
|
};
|
|
17546
18372
|
var handleInlineProviderSubmit = function handleInlineProviderSubmit(formData) {
|
|
@@ -17561,7 +18387,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17561
18387
|
|
|
17562
18388
|
// Auto-select the newly created provider
|
|
17563
18389
|
setSelectedProviders(function (prev) {
|
|
17564
|
-
return _objectSpread$
|
|
18390
|
+
return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, providerType, providerName));
|
|
17565
18391
|
});
|
|
17566
18392
|
|
|
17567
18393
|
// Collapse the inline form
|
|
@@ -17615,11 +18441,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17615
18441
|
};
|
|
17616
18442
|
var inlineHandleCredentialChange = function inlineHandleCredentialChange(fieldName, value) {
|
|
17617
18443
|
setInlineCredentialData(function (prev) {
|
|
17618
|
-
return _objectSpread$
|
|
18444
|
+
return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, fieldName, value));
|
|
17619
18445
|
});
|
|
17620
18446
|
if (inlineFormErrors[fieldName] && value !== null && value !== void 0 && value.trim()) {
|
|
17621
18447
|
setInlineFormErrors(function (prev) {
|
|
17622
|
-
var next = _objectSpread$
|
|
18448
|
+
var next = _objectSpread$K({}, prev);
|
|
17623
18449
|
delete next[fieldName];
|
|
17624
18450
|
return next;
|
|
17625
18451
|
});
|
|
@@ -17712,7 +18538,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17712
18538
|
refreshProviders();
|
|
17713
18539
|
}
|
|
17714
18540
|
setSelectedProviders(function (prev) {
|
|
17715
|
-
return _objectSpread$
|
|
18541
|
+
return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, providerType, providerName));
|
|
17716
18542
|
});
|
|
17717
18543
|
|
|
17718
18544
|
// Reset stepper state
|
|
@@ -17733,7 +18559,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17733
18559
|
});
|
|
17734
18560
|
};
|
|
17735
18561
|
var handleConfigChange = function handleConfigChange(key, value) {
|
|
17736
|
-
setUserConfigValues(_objectSpread$
|
|
18562
|
+
setUserConfigValues(_objectSpread$K(_objectSpread$K({}, userConfigValues), {}, _defineProperty({}, key, value)));
|
|
17737
18563
|
};
|
|
17738
18564
|
|
|
17739
18565
|
// Install a package from the registry
|
|
@@ -17799,7 +18625,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17799
18625
|
// Mark items as installed
|
|
17800
18626
|
setProgressWidgets(function (prev) {
|
|
17801
18627
|
return prev.map(function (w) {
|
|
17802
|
-
return _objectSpread$
|
|
18628
|
+
return _objectSpread$K(_objectSpread$K({}, w), {}, {
|
|
17803
18629
|
status: "installed"
|
|
17804
18630
|
});
|
|
17805
18631
|
});
|
|
@@ -17818,7 +18644,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17818
18644
|
setInstallError(msg);
|
|
17819
18645
|
setProgressWidgets(function (prev) {
|
|
17820
18646
|
return prev.map(function (w) {
|
|
17821
|
-
return _objectSpread$
|
|
18647
|
+
return _objectSpread$K(_objectSpread$K({}, w), {}, {
|
|
17822
18648
|
status: "failed",
|
|
17823
18649
|
error: msg
|
|
17824
18650
|
});
|
|
@@ -17892,7 +18718,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17892
18718
|
|
|
17893
18719
|
// Phase 3: Save to recent widgets
|
|
17894
18720
|
saveToRecent(selectedWidget, selectedProviders, userConfigValues);
|
|
17895
|
-
onSelectWidget(_objectSpread$
|
|
18721
|
+
onSelectWidget(_objectSpread$K(_objectSpread$K({}, selectedWidget), {}, {
|
|
17896
18722
|
selectedProviders: selectedProviders,
|
|
17897
18723
|
// Pass to parent
|
|
17898
18724
|
userConfigValues: userConfigValues // Pass to parent
|
|
@@ -18535,7 +19361,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
18535
19361
|
setInlineProviderName(value);
|
|
18536
19362
|
if (inlineFormErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
18537
19363
|
setInlineFormErrors(function (prev) {
|
|
18538
|
-
var next = _objectSpread$
|
|
19364
|
+
var next = _objectSpread$K({}, prev);
|
|
18539
19365
|
delete next.providerName;
|
|
18540
19366
|
return next;
|
|
18541
19367
|
});
|
|
@@ -18879,24 +19705,40 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
|
|
|
18879
19705
|
// Detect missing widgets (component key exists but not in ComponentManager)
|
|
18880
19706
|
var isWidgetMissing = (widgetItem === null || widgetItem === void 0 ? void 0 : widgetItem.component) && !widgetConfig;
|
|
18881
19707
|
|
|
18882
|
-
//
|
|
18883
|
-
|
|
19708
|
+
// Display name priority: per-instance user title → widget's default
|
|
19709
|
+
// title → developer's friendly displayName → widget config name →
|
|
19710
|
+
// bare component name (last segment) → full scoped id (last resort).
|
|
19711
|
+
// Mirrors WidgetsTab so the same widget shows the same name in both
|
|
19712
|
+
// surfaces.
|
|
19713
|
+
var widgetName = function (_widgetItem$userPrefs, _widgetConfig$userCon) {
|
|
19714
|
+
var prefsTitle = widgetItem === null || widgetItem === void 0 || (_widgetItem$userPrefs = widgetItem.userPrefs) === null || _widgetItem$userPrefs === void 0 ? void 0 : _widgetItem$userPrefs.title;
|
|
19715
|
+
if (typeof prefsTitle === "string" && prefsTitle.trim()) return prefsTitle;
|
|
19716
|
+
var configDefault = widgetConfig === null || widgetConfig === void 0 || (_widgetConfig$userCon = widgetConfig.userConfig) === null || _widgetConfig$userCon === void 0 || (_widgetConfig$userCon = _widgetConfig$userCon.title) === null || _widgetConfig$userCon === void 0 ? void 0 : _widgetConfig$userCon.defaultValue;
|
|
19717
|
+
if (typeof configDefault === "string" && configDefault.trim()) {
|
|
19718
|
+
return configDefault;
|
|
19719
|
+
}
|
|
19720
|
+
if (widgetConfig !== null && widgetConfig !== void 0 && widgetConfig.displayName) return widgetConfig.displayName;
|
|
19721
|
+
if (widgetConfig !== null && widgetConfig !== void 0 && widgetConfig.name) return widgetConfig.name;
|
|
19722
|
+
if (widgetItem !== null && widgetItem !== void 0 && widgetItem.name) return widgetItem.name;
|
|
19723
|
+
var comp = widgetItem === null || widgetItem === void 0 ? void 0 : widgetItem.component;
|
|
19724
|
+
if (typeof comp === "string") {
|
|
19725
|
+
var parts = comp.split(".");
|
|
19726
|
+
if (parts.length === 3) return parts[2];
|
|
19727
|
+
return comp;
|
|
19728
|
+
}
|
|
19729
|
+
return "Widget";
|
|
19730
|
+
}();
|
|
18884
19731
|
|
|
18885
|
-
//
|
|
18886
|
-
//
|
|
18887
|
-
//
|
|
18888
|
-
//
|
|
18889
|
-
//
|
|
19732
|
+
// Show the full scoped registry id (`scope.package.Component`) as
|
|
19733
|
+
// the subtitle. The friendly title on line 1 may be a custom user
|
|
19734
|
+
// title that doesn't reveal which widget is mounted; the subtitle
|
|
19735
|
+
// pins down the underlying identity. Strict — the layout item is
|
|
19736
|
+
// the source of truth.
|
|
18890
19737
|
var packageLabel = function () {
|
|
18891
19738
|
var scopedId = (widgetItem === null || widgetItem === void 0 ? void 0 : widgetItem.component) || (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.id) || "";
|
|
18892
19739
|
if (typeof scopedId !== "string") return "";
|
|
18893
19740
|
var parts = scopedId.split(".");
|
|
18894
|
-
|
|
18895
|
-
var _parts = _slicedToArray(parts, 2),
|
|
18896
|
-
scope = _parts[0],
|
|
18897
|
-
pkg = _parts[1];
|
|
18898
|
-
if (!scope || !pkg) return "";
|
|
18899
|
-
return "@".concat(scope, "/").concat(pkg);
|
|
19741
|
+
return parts.length === 3 ? scopedId : "";
|
|
18900
19742
|
}();
|
|
18901
19743
|
|
|
18902
19744
|
// Get provider requirements from widget config (not from item directly)
|
|
@@ -19151,9 +19993,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
|
|
|
19151
19993
|
};
|
|
19152
19994
|
};
|
|
19153
19995
|
|
|
19154
|
-
function _createForOfIteratorHelper$
|
|
19155
|
-
function _unsupportedIterableToArray$
|
|
19156
|
-
function _arrayLikeToArray$
|
|
19996
|
+
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; } } }; }
|
|
19997
|
+
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; } }
|
|
19998
|
+
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; }
|
|
19157
19999
|
function formatCountdown(ms) {
|
|
19158
20000
|
if (ms == null || ms < 0) return "--";
|
|
19159
20001
|
if (ms < 1000) return "< 1s";
|
|
@@ -19270,7 +20112,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
|
|
|
19270
20112
|
|
|
19271
20113
|
// Find soonest countdown among enabled tasks
|
|
19272
20114
|
var soonestMs = null;
|
|
19273
|
-
var _iterator = _createForOfIteratorHelper$
|
|
20115
|
+
var _iterator = _createForOfIteratorHelper$l(enabledTasks),
|
|
19274
20116
|
_step;
|
|
19275
20117
|
try {
|
|
19276
20118
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -19723,8 +20565,8 @@ var ProviderSelector = function ProviderSelector(_ref) {
|
|
|
19723
20565
|
});
|
|
19724
20566
|
};
|
|
19725
20567
|
|
|
19726
|
-
function ownKeys$
|
|
19727
|
-
function _objectSpread$
|
|
20568
|
+
function ownKeys$J(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20569
|
+
function _objectSpread$J(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19728
20570
|
var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
19729
20571
|
var transport = _ref.transport,
|
|
19730
20572
|
envMappingRows = _ref.envMappingRows,
|
|
@@ -19753,7 +20595,7 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
|
19753
20595
|
var updateEnvRow = function updateEnvRow(id, field, value) {
|
|
19754
20596
|
onEnvMappingRowsChange(function (prev) {
|
|
19755
20597
|
return prev.map(function (row) {
|
|
19756
|
-
return row.id === id ? _objectSpread$
|
|
20598
|
+
return row.id === id ? _objectSpread$J(_objectSpread$J({}, row), {}, _defineProperty({}, field, value)) : row;
|
|
19757
20599
|
});
|
|
19758
20600
|
});
|
|
19759
20601
|
};
|
|
@@ -19778,7 +20620,7 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
|
19778
20620
|
var updateHeaderRow = function updateHeaderRow(id, field, value) {
|
|
19779
20621
|
onHeaderRowsChange(function (prev) {
|
|
19780
20622
|
return prev.map(function (row) {
|
|
19781
|
-
return row.id === id ? _objectSpread$
|
|
20623
|
+
return row.id === id ? _objectSpread$J(_objectSpread$J({}, row), {}, _defineProperty({}, field, value)) : row;
|
|
19782
20624
|
});
|
|
19783
20625
|
});
|
|
19784
20626
|
};
|
|
@@ -19927,8 +20769,8 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
|
19927
20769
|
});
|
|
19928
20770
|
};
|
|
19929
20771
|
|
|
19930
|
-
function ownKeys$
|
|
19931
|
-
function _objectSpread$
|
|
20772
|
+
function ownKeys$I(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20773
|
+
function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19932
20774
|
var McpServerPicker = function McpServerPicker(_ref) {
|
|
19933
20775
|
var _testResult$tools;
|
|
19934
20776
|
var isOpen = _ref.isOpen,
|
|
@@ -20107,11 +20949,11 @@ var McpServerPicker = function McpServerPicker(_ref) {
|
|
|
20107
20949
|
// Handle credential field changes
|
|
20108
20950
|
var handleCredentialChange = function handleCredentialChange(fieldName, value) {
|
|
20109
20951
|
setCredentialData(function (prev) {
|
|
20110
|
-
return _objectSpread$
|
|
20952
|
+
return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, fieldName, value));
|
|
20111
20953
|
});
|
|
20112
20954
|
if (formErrors[fieldName] && value !== null && value !== void 0 && value.trim()) {
|
|
20113
20955
|
setFormErrors(function (prev) {
|
|
20114
|
-
var next = _objectSpread$
|
|
20956
|
+
var next = _objectSpread$I({}, prev);
|
|
20115
20957
|
delete next[fieldName];
|
|
20116
20958
|
return next;
|
|
20117
20959
|
});
|
|
@@ -20449,7 +21291,7 @@ var McpServerPicker = function McpServerPicker(_ref) {
|
|
|
20449
21291
|
setProviderName(value);
|
|
20450
21292
|
if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
20451
21293
|
setFormErrors(function (prev) {
|
|
20452
|
-
var next = _objectSpread$
|
|
21294
|
+
var next = _objectSpread$I({}, prev);
|
|
20453
21295
|
delete next.providerName;
|
|
20454
21296
|
return next;
|
|
20455
21297
|
});
|
|
@@ -20639,8 +21481,8 @@ var McpServerPicker = function McpServerPicker(_ref) {
|
|
|
20639
21481
|
});
|
|
20640
21482
|
};
|
|
20641
21483
|
|
|
20642
|
-
function ownKeys$
|
|
20643
|
-
function _objectSpread$
|
|
21484
|
+
function ownKeys$H(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21485
|
+
function _objectSpread$H(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$H(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$H(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20644
21486
|
var USE_ENHANCED_WIDGET_SELECTOR = true; // Set to false to use original modal
|
|
20645
21487
|
|
|
20646
21488
|
/**
|
|
@@ -20686,7 +21528,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
20686
21528
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
20687
21529
|
id = _ref3[0],
|
|
20688
21530
|
p = _ref3[1];
|
|
20689
|
-
return _objectSpread$
|
|
21531
|
+
return _objectSpread$H(_objectSpread$H({}, p), {}, {
|
|
20690
21532
|
id: id,
|
|
20691
21533
|
name: p.name || id
|
|
20692
21534
|
});
|
|
@@ -20773,7 +21615,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
20773
21615
|
// so we use its layout to replace any corrupted grid data.
|
|
20774
21616
|
if (workspace && workspace["layout"]) {
|
|
20775
21617
|
var model = new DashboardModel(workspace);
|
|
20776
|
-
setCurrentWorkspace(_objectSpread$
|
|
21618
|
+
setCurrentWorkspace(_objectSpread$H(_objectSpread$H({}, workspace), {}, {
|
|
20777
21619
|
layout: model.layout
|
|
20778
21620
|
}));
|
|
20779
21621
|
} else {
|
|
@@ -20833,7 +21675,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
20833
21675
|
}
|
|
20834
21676
|
try {
|
|
20835
21677
|
var hasChildren = config.type === "workspace";
|
|
20836
|
-
var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$
|
|
21678
|
+
var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$H(_objectSpread$H({}, config), {}, {
|
|
20837
21679
|
component: widgetComponentName,
|
|
20838
21680
|
packageId: config._sourcePackage || config.packageId || null
|
|
20839
21681
|
}), hasChildren);
|
|
@@ -21270,7 +22112,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
21270
22112
|
var uuid = widget.uuid || widget.uuidString;
|
|
21271
22113
|
if (uuid) {
|
|
21272
22114
|
newWorkspace.selectedProviders = newWorkspace.selectedProviders || {};
|
|
21273
|
-
newWorkspace.selectedProviders[uuid] = _objectSpread$
|
|
22115
|
+
newWorkspace.selectedProviders[uuid] = _objectSpread$H(_objectSpread$H({}, newWorkspace.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
|
|
21274
22116
|
}
|
|
21275
22117
|
setCurrentWorkspace(newWorkspace);
|
|
21276
22118
|
}
|
|
@@ -21406,7 +22248,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
21406
22248
|
var _gridContainer$grid;
|
|
21407
22249
|
var config = ComponentManager.config(widgetKey);
|
|
21408
22250
|
if (!config) return;
|
|
21409
|
-
var widgetItem = _objectSpread$
|
|
22251
|
+
var widgetItem = _objectSpread$H(_objectSpread$H({}, config), {}, {
|
|
21410
22252
|
component: widgetKey,
|
|
21411
22253
|
key: widgetKey,
|
|
21412
22254
|
packageId: config._sourcePackage || config.packageId || null
|
|
@@ -21667,7 +22509,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
21667
22509
|
onSelectWidget: function onSelectWidget(widget) {
|
|
21668
22510
|
|
|
21669
22511
|
// Add component property from widget.key
|
|
21670
|
-
var widgetWithComponent = _objectSpread$
|
|
22512
|
+
var widgetWithComponent = _objectSpread$H(_objectSpread$H({}, widget), {}, {
|
|
21671
22513
|
component: widget.key
|
|
21672
22514
|
});
|
|
21673
22515
|
handleClickConfirmAdd(widgetWithComponent, dropdownTarget);
|
|
@@ -23296,8 +24138,8 @@ var MissingProviderPrompt = function MissingProviderPrompt(_ref) {
|
|
|
23296
24138
|
});
|
|
23297
24139
|
};
|
|
23298
24140
|
|
|
23299
|
-
function ownKeys$
|
|
23300
|
-
function _objectSpread$
|
|
24141
|
+
function ownKeys$G(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
24142
|
+
function _objectSpread$G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23301
24143
|
function _callSuper$4(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$4() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
23302
24144
|
function _isNativeReflectConstruct$4() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$4 = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
23303
24145
|
var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
@@ -23352,7 +24194,7 @@ var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
23352
24194
|
_defineProperty(_this, "handleProviderSelect", function (providerType, providerName, credentials) {
|
|
23353
24195
|
|
|
23354
24196
|
// Update local selected providers state
|
|
23355
|
-
var updatedSelected = _objectSpread$
|
|
24197
|
+
var updatedSelected = _objectSpread$G(_objectSpread$G({}, _this.state.selectedProviders), {}, _defineProperty({}, providerType, providerName));
|
|
23356
24198
|
_this.setState({
|
|
23357
24199
|
selectedProviders: updatedSelected
|
|
23358
24200
|
}, function () {
|
|
@@ -23426,8 +24268,8 @@ var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
23426
24268
|
}(Component);
|
|
23427
24269
|
_defineProperty(ProviderErrorBoundary, "contextType", ProviderContext);
|
|
23428
24270
|
|
|
23429
|
-
function ownKeys$
|
|
23430
|
-
function _objectSpread$
|
|
24271
|
+
function ownKeys$F(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
24272
|
+
function _objectSpread$F(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$F(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$F(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23431
24273
|
var withProviderDetection = function withProviderDetection(Component) {
|
|
23432
24274
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
23433
24275
|
_ref$requiredProvider = _ref.requiredProviders,
|
|
@@ -23452,7 +24294,7 @@ var withProviderDetection = function withProviderDetection(Component) {
|
|
|
23452
24294
|
onProviderSelect: onProviderSelect
|
|
23453
24295
|
});
|
|
23454
24296
|
}
|
|
23455
|
-
return /*#__PURE__*/jsx(Component, _objectSpread$
|
|
24297
|
+
return /*#__PURE__*/jsx(Component, _objectSpread$F({}, props));
|
|
23456
24298
|
};
|
|
23457
24299
|
};
|
|
23458
24300
|
|
|
@@ -24128,8 +24970,8 @@ var WidgetNotFound = function WidgetNotFound(_ref) {
|
|
|
24128
24970
|
});
|
|
24129
24971
|
};
|
|
24130
24972
|
|
|
24131
|
-
function ownKeys$
|
|
24132
|
-
function _objectSpread$
|
|
24973
|
+
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; }
|
|
24974
|
+
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; }
|
|
24133
24975
|
function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
24134
24976
|
function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24135
24977
|
var WidgetErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
@@ -24289,7 +25131,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24289
25131
|
|
|
24290
25132
|
// Build widgetData for WidgetContext — hooks read from this
|
|
24291
25133
|
var uuidString = getUUID(params.uuid);
|
|
24292
|
-
var widgetData = _objectSpread$
|
|
25134
|
+
var widgetData = _objectSpread$E(_objectSpread$E({}, params), {}, {
|
|
24293
25135
|
uuidString: uuidString,
|
|
24294
25136
|
providers: (config === null || config === void 0 ? void 0 : config.providers) || [],
|
|
24295
25137
|
notifications: (config === null || config === void 0 ? void 0 : config.notifications) || []
|
|
@@ -24313,7 +25155,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24313
25155
|
widgetData: widgetData
|
|
24314
25156
|
};
|
|
24315
25157
|
var hasScheduledTasks = ((config === null || config === void 0 ? void 0 : config.scheduledTasks) || []).length > 0;
|
|
24316
|
-
var widgetElement = children === null ? /*#__PURE__*/jsx(WidgetComponent, _objectSpread$
|
|
25158
|
+
var widgetElement = children === null ? /*#__PURE__*/jsx(WidgetComponent, _objectSpread$E(_objectSpread$E(_objectSpread$E({
|
|
24317
25159
|
id: "widget-nokids-".concat(widgetKey),
|
|
24318
25160
|
listen: function listen(listeners, handlers) {
|
|
24319
25161
|
return helpers.listen(listeners, handlers);
|
|
@@ -24327,7 +25169,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24327
25169
|
backgroundColor: bgColor,
|
|
24328
25170
|
widgetConfig: helpers.config(),
|
|
24329
25171
|
widgetEventNames: helpers.events()
|
|
24330
|
-
}), "widget-nokids-".concat(widgetKey, "-v").concat(componentVersion)) : /*#__PURE__*/jsx(WidgetComponent, _objectSpread$
|
|
25172
|
+
}), "widget-nokids-".concat(widgetKey, "-v").concat(componentVersion)) : /*#__PURE__*/jsx(WidgetComponent, _objectSpread$E(_objectSpread$E(_objectSpread$E({
|
|
24331
25173
|
listen: function listen(listeners, handlers) {
|
|
24332
25174
|
return helpers.listen(listeners, handlers);
|
|
24333
25175
|
},
|
|
@@ -24527,11 +25369,11 @@ var ExternalWidget = function ExternalWidget(_ref) {
|
|
|
24527
25369
|
var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
|
|
24528
25370
|
var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
|
|
24529
25371
|
|
|
24530
|
-
function _createForOfIteratorHelper$
|
|
24531
|
-
function _unsupportedIterableToArray$
|
|
24532
|
-
function _arrayLikeToArray$
|
|
24533
|
-
function ownKeys$
|
|
24534
|
-
function _objectSpread$
|
|
25372
|
+
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; } } }; }
|
|
25373
|
+
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; } }
|
|
25374
|
+
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; }
|
|
25375
|
+
function ownKeys$D(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
25376
|
+
function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
24535
25377
|
|
|
24536
25378
|
// Identifies which "bucket" of the workspace a LayoutBuilder belongs
|
|
24537
25379
|
// to so drop handlers on grid cells can distinguish a same-container
|
|
@@ -24777,7 +25619,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
|
|
|
24777
25619
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
24778
25620
|
id = _ref5[0],
|
|
24779
25621
|
provider = _ref5[1];
|
|
24780
|
-
return _objectSpread$
|
|
25622
|
+
return _objectSpread$D({
|
|
24781
25623
|
id: id
|
|
24782
25624
|
}, provider);
|
|
24783
25625
|
}) : [];
|
|
@@ -25152,7 +25994,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
|
|
|
25152
25994
|
return selectable["delete"](cn);
|
|
25153
25995
|
});
|
|
25154
25996
|
var resolved = new Set();
|
|
25155
|
-
var _iterator = _createForOfIteratorHelper$
|
|
25997
|
+
var _iterator = _createForOfIteratorHelper$k(selectable),
|
|
25156
25998
|
_step;
|
|
25157
25999
|
try {
|
|
25158
26000
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -25826,7 +26668,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
|
|
|
25826
26668
|
var widgetSpecificSelections = (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[id]) || {};
|
|
25827
26669
|
|
|
25828
26670
|
// Add provider-related props from workspace
|
|
25829
|
-
var itemWithProviders = _objectSpread$
|
|
26671
|
+
var itemWithProviders = _objectSpread$D(_objectSpread$D({}, item), {}, {
|
|
25830
26672
|
selectedProviders: widgetSpecificSelections,
|
|
25831
26673
|
onProviderSelect: onProviderSelect
|
|
25832
26674
|
});
|
|
@@ -26044,8 +26886,8 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
|
|
|
26044
26886
|
}) : renderComponentContainer(children);
|
|
26045
26887
|
});
|
|
26046
26888
|
|
|
26047
|
-
function ownKeys$
|
|
26048
|
-
function _objectSpread$
|
|
26889
|
+
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; }
|
|
26890
|
+
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; }
|
|
26049
26891
|
function compareChildren(a, b) {
|
|
26050
26892
|
if (a.order < b.order) {
|
|
26051
26893
|
return -1;
|
|
@@ -27133,7 +27975,7 @@ function moveWidgetAcrossContainers(workspace, sourceGridId, sourceCell, targetG
|
|
|
27133
27975
|
|
|
27134
27976
|
// Rewire the grid pointers first (swap works for empty target too —
|
|
27135
27977
|
// targetWidgetId is null then and the source cell becomes empty).
|
|
27136
|
-
sourceGrid.grid[sourceCell] = _objectSpread$
|
|
27978
|
+
sourceGrid.grid[sourceCell] = _objectSpread$C(_objectSpread$C({}, sourceCellData), {}, {
|
|
27137
27979
|
component: targetWidgetId
|
|
27138
27980
|
});
|
|
27139
27981
|
if (!targetCellData) {
|
|
@@ -27142,7 +27984,7 @@ function moveWidgetAcrossContainers(workspace, sourceGridId, sourceCell, targetG
|
|
|
27142
27984
|
hide: false
|
|
27143
27985
|
};
|
|
27144
27986
|
} else {
|
|
27145
|
-
targetGrid.grid[targetCell] = _objectSpread$
|
|
27987
|
+
targetGrid.grid[targetCell] = _objectSpread$C(_objectSpread$C({}, targetCellData), {}, {
|
|
27146
27988
|
component: sourceWidgetId
|
|
27147
27989
|
});
|
|
27148
27990
|
}
|
|
@@ -27559,11 +28401,11 @@ function migrateBareComponentName(componentMap, component) {
|
|
|
27559
28401
|
return component;
|
|
27560
28402
|
}
|
|
27561
28403
|
|
|
27562
|
-
function ownKeys$
|
|
27563
|
-
function _objectSpread$
|
|
27564
|
-
function _createForOfIteratorHelper$
|
|
27565
|
-
function _unsupportedIterableToArray$
|
|
27566
|
-
function _arrayLikeToArray$
|
|
28404
|
+
function ownKeys$B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
28405
|
+
function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28406
|
+
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; } } }; }
|
|
28407
|
+
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; } }
|
|
28408
|
+
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; }
|
|
27567
28409
|
/**
|
|
27568
28410
|
* The model for all layout components used primarily in the renderLayout method
|
|
27569
28411
|
* @param {Object} layoutItem an object containing various attributes of the layout item
|
|
@@ -27575,7 +28417,7 @@ function _arrayLikeToArray$k(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
27575
28417
|
function sortObjectByKeys(obj) {
|
|
27576
28418
|
var sortedKeys = Object.keys(obj).sort();
|
|
27577
28419
|
var sortedObj = {};
|
|
27578
|
-
var _iterator = _createForOfIteratorHelper$
|
|
28420
|
+
var _iterator = _createForOfIteratorHelper$j(sortedKeys),
|
|
27579
28421
|
_step;
|
|
27580
28422
|
try {
|
|
27581
28423
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -27727,7 +28569,7 @@ var LayoutModel = function LayoutModel(layoutItem, workspaceLayout, dashboardId)
|
|
|
27727
28569
|
|
|
27728
28570
|
// Merge user-entered config values (from EnhancedWidgetDropdown) into userPrefs
|
|
27729
28571
|
if ("userConfigValues" in obj && obj.userConfigValues) {
|
|
27730
|
-
layout.userPrefs = _objectSpread$
|
|
28572
|
+
layout.userPrefs = _objectSpread$B(_objectSpread$B({}, layout.userPrefs), obj.userConfigValues);
|
|
27731
28573
|
}
|
|
27732
28574
|
|
|
27733
28575
|
// Preserve provider selections for this widget
|
|
@@ -27765,956 +28607,224 @@ var LayoutModel = function LayoutModel(layoutItem, workspaceLayout, dashboardId)
|
|
|
27765
28607
|
if (!layout.grid.rows) layout.grid.rows = 1;
|
|
27766
28608
|
if (!layout.grid.cols) layout.grid.cols = 1;
|
|
27767
28609
|
|
|
27768
|
-
// Set default gap if not specified
|
|
27769
|
-
if (!layout.grid.gap) layout.grid.gap = "gap-2";
|
|
27770
|
-
|
|
27771
|
-
// Sort grid object keys for consistent ordering
|
|
27772
|
-
layout.grid = sortObjectByKeys(layout.grid);
|
|
27773
|
-
|
|
27774
|
-
// If type is not explicitly set and grid exists, set type to "grid"
|
|
27775
|
-
if (layout.type === "layout" && "grid" in obj) {
|
|
27776
|
-
layout.type = "grid";
|
|
27777
|
-
}
|
|
27778
|
-
}
|
|
27779
|
-
layout.parentWorkspaceName = "parentWorkspaceName" in obj ? obj["parentWorkspaceName"] : null;
|
|
27780
|
-
|
|
27781
|
-
// last check for this being a container...
|
|
27782
|
-
// we are forcing ALL containers to be w full and h full
|
|
27783
|
-
// not sure this is a good idea, but...
|
|
27784
|
-
if ("workspace" in layout || layout.type !== "widget") {
|
|
27785
|
-
// if (layout.workspace === "layout") {
|
|
27786
|
-
if (layout.width === "") {
|
|
27787
|
-
layout.width = "w-full";
|
|
27788
|
-
}
|
|
27789
|
-
// if (layout.height === "") {
|
|
27790
|
-
layout.height = "h-full";
|
|
27791
|
-
// }
|
|
27792
|
-
// if (layout.scrollable === "") {
|
|
27793
|
-
// layout.scrollable = true;
|
|
27794
|
-
// }
|
|
27795
|
-
if (layout.direction === "") {
|
|
27796
|
-
layout.direction = "col";
|
|
27797
|
-
}
|
|
27798
|
-
// }
|
|
27799
|
-
}
|
|
27800
|
-
|
|
27801
|
-
// lets check to see if we already have the parent workspace?
|
|
27802
|
-
if (layout.parentWorkspaceName === null) {
|
|
27803
|
-
// get the nearest workspace and assign this as the parent for rendering
|
|
27804
|
-
var tempLayout = deepCopy(layout);
|
|
27805
|
-
var parentWS = getNearestParentWorkspace(workspaceLayout, tempLayout, tempLayout);
|
|
27806
|
-
var parentWorkspaceName = "layout";
|
|
27807
|
-
if (parentWS) {
|
|
27808
|
-
if ("workspace" in parentWS) {
|
|
27809
|
-
parentWorkspaceName = parentWS["workspace"];
|
|
27810
|
-
}
|
|
27811
|
-
}
|
|
27812
|
-
layout.parentWorkspaceName = parentWorkspaceName;
|
|
27813
|
-
}
|
|
27814
|
-
return layout;
|
|
27815
|
-
} catch (e) {
|
|
27816
|
-
return null;
|
|
27817
|
-
}
|
|
27818
|
-
};
|
|
27819
|
-
|
|
27820
|
-
/**
|
|
27821
|
-
* Handle all of the data for a color (theme)
|
|
27822
|
-
* @param {Object} obj the color object we would like to use to populate the model (optional)
|
|
27823
|
-
*/
|
|
27824
|
-
var ColorModel = function ColorModel() {
|
|
27825
|
-
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
27826
|
-
try {
|
|
27827
|
-
if (obj) {
|
|
27828
|
-
// console.log("cm: ", obj);
|
|
27829
|
-
var temp = deepCopy(obj);
|
|
27830
|
-
var color = {};
|
|
27831
|
-
color.panelType = "panelType" in temp ? temp.panelType : "main";
|
|
27832
|
-
color.colorName = "colorName" in temp ? temp.colorName : "white";
|
|
27833
|
-
color.colorType = "colorType" in temp ? temp.colorType !== undefined && temp.colorType !== null ? temp.colorType : "primary" : "primary";
|
|
27834
|
-
color.shade = "shade" in temp ? temp.shade : 500;
|
|
27835
|
-
color.variant = "variant" in temp ? temp.variant : "dark";
|
|
27836
|
-
color.level = "level" in temp ? temp.level : "light";
|
|
27837
|
-
color.objectType = "objectType" in temp ? temp.objectType : "bg";
|
|
27838
|
-
color.styleName = getStyleName(color.objectType); //'background';
|
|
27839
|
-
|
|
27840
|
-
/**
|
|
27841
|
-
* generate the display name
|
|
27842
|
-
*/
|
|
27843
|
-
color.displayName = "displayName" in temp ? temp.name : capitalizeFirstLetter(color.colorName);
|
|
27844
|
-
|
|
27845
|
-
/**
|
|
27846
|
-
* Strings for the theme class name and the class to be used in className
|
|
27847
|
-
*/
|
|
27848
|
-
color.themeClass = "".concat(color.objectType, "-").concat(color.colorType, "-").concat(color.level);
|
|
27849
|
-
color["class"] = "".concat(color.objectType, "-").concat(color.colorName, "-").concat(color.shade);
|
|
27850
|
-
|
|
27851
|
-
/**
|
|
27852
|
-
* Grab the hex code via tailwind for the tailwind color
|
|
27853
|
-
* This may change as we move to hex codes for selection
|
|
27854
|
-
*/
|
|
27855
|
-
color.hex = colors[color.colorName];
|
|
27856
|
-
return color;
|
|
27857
|
-
}
|
|
27858
|
-
return null;
|
|
27859
|
-
} catch (e) {
|
|
27860
|
-
return obj;
|
|
27861
|
-
}
|
|
27862
|
-
};
|
|
27863
|
-
|
|
27864
|
-
var SettingsModel = function SettingsModel() {
|
|
27865
|
-
var settingsObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
27866
|
-
var obj = deepCopy(settingsObject);
|
|
27867
|
-
obj["debug"] = "debug" in obj ? obj["debug"] : false;
|
|
27868
|
-
obj["theme"] = "theme" in obj ? obj["theme"] : null;
|
|
27869
|
-
return obj;
|
|
27870
|
-
};
|
|
27871
|
-
|
|
27872
|
-
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; } } }; }
|
|
27873
|
-
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; } }
|
|
27874
|
-
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; }
|
|
27875
|
-
/**
|
|
27876
|
-
* providerResolution.js
|
|
27877
|
-
*
|
|
27878
|
-
* Shared helpers for walking a workspace and figuring out which widgets
|
|
27879
|
-
* have required providers that are still unresolved after the 3-layer
|
|
27880
|
-
* resolution (widget → workspace → app-default → null). Used by:
|
|
27881
|
-
*
|
|
27882
|
-
* - DashboardConfigModal to render the Providers tab
|
|
27883
|
-
* - DashboardStage toolbar to show the unresolved-count badge
|
|
27884
|
-
*
|
|
27885
|
-
* Both places need the same answer, so keep the logic here to avoid drift
|
|
27886
|
-
* with the resolution inside `useMcpProvider` / `useWebSocketProvider`.
|
|
27887
|
-
*/
|
|
27888
|
-
|
|
27889
|
-
/**
|
|
27890
|
-
* Resolve which provider name a given widget instance would bind to for
|
|
27891
|
-
* the given provider type. Mirrors the 3-layer chain in useMcpProvider
|
|
27892
|
-
* and useWebSocketProvider exactly:
|
|
27893
|
-
*
|
|
27894
|
-
* 1. widget-level override (layoutItem.selectedProviders[type])
|
|
27895
|
-
* 2. workspace-level binding (workspace.selectedProviders[id][type])
|
|
27896
|
-
* 3. app default (any provider of matching type flagged
|
|
27897
|
-
* `isDefaultForType` in appProviders)
|
|
27898
|
-
* 4. null (truly unresolved)
|
|
27899
|
-
*/
|
|
27900
|
-
function resolveProviderName(_ref) {
|
|
27901
|
-
var _layoutItem$selectedP, _workspace$selectedPr;
|
|
27902
|
-
var providerType = _ref.providerType,
|
|
27903
|
-
layoutItem = _ref.layoutItem,
|
|
27904
|
-
widgetId = _ref.widgetId,
|
|
27905
|
-
workspace = _ref.workspace,
|
|
27906
|
-
appProviders = _ref.appProviders;
|
|
27907
|
-
// 1. Widget-level
|
|
27908
|
-
var widgetLevel = layoutItem === null || layoutItem === void 0 || (_layoutItem$selectedP = layoutItem.selectedProviders) === null || _layoutItem$selectedP === void 0 ? void 0 : _layoutItem$selectedP[providerType];
|
|
27909
|
-
if (widgetLevel) return widgetLevel;
|
|
27910
|
-
|
|
27911
|
-
// 2. Workspace-level
|
|
27912
|
-
var workspaceLevel = widgetId && (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 || (_workspace$selectedPr = _workspace$selectedPr[widgetId]) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[providerType]);
|
|
27913
|
-
if (workspaceLevel) return workspaceLevel;
|
|
27914
|
-
|
|
27915
|
-
// 3. App default — appProviders is either a map keyed by name or an
|
|
27916
|
-
// array. Support both because different callers shape it either way.
|
|
27917
|
-
if (appProviders) {
|
|
27918
|
-
if (Array.isArray(appProviders)) {
|
|
27919
|
-
var _iterator = _createForOfIteratorHelper$j(appProviders),
|
|
27920
|
-
_step;
|
|
27921
|
-
try {
|
|
27922
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
27923
|
-
var data = _step.value;
|
|
27924
|
-
if ((data === null || data === void 0 ? void 0 : data.type) === providerType && (data === null || data === void 0 ? void 0 : data.isDefaultForType) === true) {
|
|
27925
|
-
return data.name;
|
|
27926
|
-
}
|
|
27927
|
-
}
|
|
27928
|
-
} catch (err) {
|
|
27929
|
-
_iterator.e(err);
|
|
27930
|
-
} finally {
|
|
27931
|
-
_iterator.f();
|
|
27932
|
-
}
|
|
27933
|
-
} else if (_typeof(appProviders) === "object") {
|
|
27934
|
-
for (var _i = 0, _Object$entries = Object.entries(appProviders); _i < _Object$entries.length; _i++) {
|
|
27935
|
-
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
27936
|
-
name = _Object$entries$_i[0],
|
|
27937
|
-
_data = _Object$entries$_i[1];
|
|
27938
|
-
if ((_data === null || _data === void 0 ? void 0 : _data.type) === providerType && (_data === null || _data === void 0 ? void 0 : _data.isDefaultForType) === true) {
|
|
27939
|
-
return name;
|
|
27940
|
-
}
|
|
27941
|
-
}
|
|
27942
|
-
}
|
|
27943
|
-
}
|
|
27944
|
-
return null;
|
|
27945
|
-
}
|
|
27946
|
-
|
|
27947
|
-
/**
|
|
27948
|
-
* Walk every layout container in a workspace and yield each widget
|
|
27949
|
-
* instance with its concrete layout item. Handles the main layout,
|
|
27950
|
-
* per-page layouts, the sidebar, and nested LayoutGridContainers whose
|
|
27951
|
-
* children are stored on `items`/`layout`.
|
|
27952
|
-
*
|
|
27953
|
-
* Deduplicates by object identity AND by stable id so that shared
|
|
27954
|
-
* references across pages (or two structurally-distinct items that
|
|
27955
|
-
* carry the same uuidString / id, which is the wiring key) are
|
|
27956
|
-
* visited exactly once. Pipeline-style workspaces re-reference the
|
|
27957
|
-
* same widget objects across page layouts; without this dedupe the
|
|
27958
|
-
* Providers/Listeners tabs render one row per reference.
|
|
27959
|
-
*/
|
|
27960
|
-
function forEachWidget(workspace, visit) {
|
|
27961
|
-
if (!workspace) return;
|
|
27962
|
-
var visitedObjects = new WeakSet();
|
|
27963
|
-
var visitedIds = new Set();
|
|
27964
|
-
|
|
27965
|
-
// Canonical identity: `component|id-ish`. Including the component
|
|
27966
|
-
// prefix in every form aligns this with `canonicalItemKey` in
|
|
27967
|
-
// listenerResolution.js — they MUST agree or duplicates slip
|
|
27968
|
-
// between the visit loop and downstream dedupes. Prefer uuidString
|
|
27969
|
-
// (stable across sessions), then uuid, then numeric id.
|
|
27970
|
-
var stableId = function stableId(item) {
|
|
27971
|
-
if (!item || !item.component) return null;
|
|
27972
|
-
if (item.uuidString) return "".concat(item.component, "|").concat(item.uuidString);
|
|
27973
|
-
if (item.uuid) return "".concat(item.component, "|").concat(item.uuid);
|
|
27974
|
-
if (item.id != null) return "".concat(item.component, "|").concat(item.id);
|
|
27975
|
-
return null;
|
|
27976
|
-
};
|
|
27977
|
-
var _walk = function walk(items) {
|
|
27978
|
-
if (!Array.isArray(items)) return;
|
|
27979
|
-
var _iterator2 = _createForOfIteratorHelper$j(items),
|
|
27980
|
-
_step2;
|
|
27981
|
-
try {
|
|
27982
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
27983
|
-
var item = _step2.value;
|
|
27984
|
-
if (!item || _typeof(item) !== "object") continue;
|
|
27985
|
-
// A "widget" is any layout item with a component name.
|
|
27986
|
-
// Containers can have both a component name AND nested items
|
|
27987
|
-
// (e.g. LayoutGridContainer), so still recurse.
|
|
27988
|
-
if (item.component) {
|
|
27989
|
-
var id = stableId(item);
|
|
27990
|
-
var alreadyByRef = visitedObjects.has(item);
|
|
27991
|
-
var alreadyById = id != null && visitedIds.has(id);
|
|
27992
|
-
if (!alreadyByRef && !alreadyById) {
|
|
27993
|
-
visitedObjects.add(item);
|
|
27994
|
-
if (id != null) visitedIds.add(id);
|
|
27995
|
-
visit(item);
|
|
27996
|
-
}
|
|
27997
|
-
}
|
|
27998
|
-
if (Array.isArray(item.items)) _walk(item.items);
|
|
27999
|
-
if (Array.isArray(item.layout)) _walk(item.layout);
|
|
28000
|
-
}
|
|
28001
|
-
} catch (err) {
|
|
28002
|
-
_iterator2.e(err);
|
|
28003
|
-
} finally {
|
|
28004
|
-
_iterator2.f();
|
|
28005
|
-
}
|
|
28006
|
-
};
|
|
28007
|
-
_walk(workspace.layout);
|
|
28008
|
-
if (Array.isArray(workspace.pages)) {
|
|
28009
|
-
var _iterator3 = _createForOfIteratorHelper$j(workspace.pages),
|
|
28010
|
-
_step3;
|
|
28011
|
-
try {
|
|
28012
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
28013
|
-
var page = _step3.value;
|
|
28014
|
-
_walk(page === null || page === void 0 ? void 0 : page.layout);
|
|
28015
|
-
}
|
|
28016
|
-
} catch (err) {
|
|
28017
|
-
_iterator3.e(err);
|
|
28018
|
-
} finally {
|
|
28019
|
-
_iterator3.f();
|
|
28020
|
-
}
|
|
28021
|
-
}
|
|
28022
|
-
_walk(workspace.sidebarLayout);
|
|
28023
|
-
}
|
|
28024
|
-
|
|
28025
|
-
/**
|
|
28026
|
-
* Compute the list of unresolved required providers across a workspace.
|
|
28027
|
-
*
|
|
28028
|
-
* @param {object} args
|
|
28029
|
-
* @param {object} args.workspace The workspace (with layout/pages/sidebarLayout/selectedProviders).
|
|
28030
|
-
* @param {object|Array} args.appProviders
|
|
28031
|
-
* Map keyed by provider name, or an array of provider objects. Each
|
|
28032
|
-
* entry has at least `{ type, isDefaultForType }`.
|
|
28033
|
-
* @param {(componentName: string) => Array<{type, required?, providerClass?}>} args.getWidgetRequirements
|
|
28034
|
-
* Returns the `providers: [...]` declaration from the component's
|
|
28035
|
-
* `.dash.js` (via `ComponentManager.componentMap()[name].providers`).
|
|
28036
|
-
*
|
|
28037
|
-
* @returns {Array<{ widgetId, component, providerType, providerClass, layoutItem }>}
|
|
28038
|
-
* One entry per (widget instance, required provider type) that lacks
|
|
28039
|
-
* a binding.
|
|
28040
|
-
*/
|
|
28041
|
-
function getUnresolvedProviders(_ref2) {
|
|
28042
|
-
var workspace = _ref2.workspace,
|
|
28043
|
-
appProviders = _ref2.appProviders,
|
|
28044
|
-
getWidgetRequirements = _ref2.getWidgetRequirements;
|
|
28045
|
-
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
28046
|
-
var unresolved = [];
|
|
28047
|
-
forEachWidget(workspace, function (item) {
|
|
28048
|
-
var requirements = getWidgetRequirements(item.component) || [];
|
|
28049
|
-
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
28050
|
-
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
28051
|
-
var _iterator4 = _createForOfIteratorHelper$j(requirements),
|
|
28052
|
-
_step4;
|
|
28053
|
-
try {
|
|
28054
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
28055
|
-
var req = _step4.value;
|
|
28056
|
-
if (!req || !req.type) continue;
|
|
28057
|
-
if (req.required === false) continue; // optional, skip
|
|
28058
|
-
|
|
28059
|
-
var name = resolveProviderName({
|
|
28060
|
-
providerType: req.type,
|
|
28061
|
-
layoutItem: item,
|
|
28062
|
-
widgetId: widgetId,
|
|
28063
|
-
workspace: workspace,
|
|
28064
|
-
appProviders: appProviders
|
|
28065
|
-
});
|
|
28066
|
-
if (!name) {
|
|
28067
|
-
unresolved.push({
|
|
28068
|
-
widgetId: widgetId,
|
|
28069
|
-
component: item.component,
|
|
28070
|
-
providerType: req.type,
|
|
28071
|
-
providerClass: req.providerClass || null,
|
|
28072
|
-
layoutItem: item
|
|
28073
|
-
});
|
|
28074
|
-
}
|
|
28075
|
-
}
|
|
28076
|
-
} catch (err) {
|
|
28077
|
-
_iterator4.e(err);
|
|
28078
|
-
} finally {
|
|
28079
|
-
_iterator4.f();
|
|
28080
|
-
}
|
|
28081
|
-
});
|
|
28082
|
-
return unresolved;
|
|
28083
|
-
}
|
|
28084
|
-
|
|
28085
|
-
/**
|
|
28086
|
-
* Group an unresolved-provider list (or any `{widget, providerType}` list)
|
|
28087
|
-
* by provider type, so the Providers tab can render one row per unique
|
|
28088
|
-
* type with N widgets beneath.
|
|
28089
|
-
*/
|
|
28090
|
-
function groupByProviderType(unresolved) {
|
|
28091
|
-
var byType = new Map();
|
|
28092
|
-
var _iterator5 = _createForOfIteratorHelper$j(unresolved || []),
|
|
28093
|
-
_step5;
|
|
28094
|
-
try {
|
|
28095
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
28096
|
-
var u = _step5.value;
|
|
28097
|
-
if (!(u !== null && u !== void 0 && u.providerType)) continue;
|
|
28098
|
-
if (!byType.has(u.providerType)) byType.set(u.providerType, []);
|
|
28099
|
-
byType.get(u.providerType).push(u);
|
|
28100
|
-
}
|
|
28101
|
-
} catch (err) {
|
|
28102
|
-
_iterator5.e(err);
|
|
28103
|
-
} finally {
|
|
28104
|
-
_iterator5.f();
|
|
28105
|
-
}
|
|
28106
|
-
return byType;
|
|
28107
|
-
}
|
|
28108
|
-
|
|
28109
|
-
/**
|
|
28110
|
-
* Summarize every widget in the workspace that requires ANY provider,
|
|
28111
|
-
* regardless of whether it's already resolved. Drives the Providers tab's
|
|
28112
|
-
* "show per-widget overrides" expansion — the modal lists all widgets so
|
|
28113
|
-
* the user can change an explicit override even for types that are
|
|
28114
|
-
* already resolved via the app default.
|
|
28115
|
-
*/
|
|
28116
|
-
function getAllProviderBindings(_ref3) {
|
|
28117
|
-
var workspace = _ref3.workspace,
|
|
28118
|
-
appProviders = _ref3.appProviders,
|
|
28119
|
-
getWidgetRequirements = _ref3.getWidgetRequirements;
|
|
28120
|
-
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
28121
|
-
var bindings = [];
|
|
28122
|
-
forEachWidget(workspace, function (item) {
|
|
28123
|
-
var requirements = getWidgetRequirements(item.component) || [];
|
|
28124
|
-
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
28125
|
-
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
28126
|
-
var _iterator6 = _createForOfIteratorHelper$j(requirements),
|
|
28127
|
-
_step6;
|
|
28128
|
-
try {
|
|
28129
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
28130
|
-
var req = _step6.value;
|
|
28131
|
-
if (!req || !req.type) continue;
|
|
28132
|
-
var name = resolveProviderName({
|
|
28133
|
-
providerType: req.type,
|
|
28134
|
-
layoutItem: item,
|
|
28135
|
-
widgetId: widgetId,
|
|
28136
|
-
workspace: workspace,
|
|
28137
|
-
appProviders: appProviders
|
|
28138
|
-
});
|
|
28139
|
-
bindings.push({
|
|
28140
|
-
widgetId: widgetId,
|
|
28141
|
-
component: item.component,
|
|
28142
|
-
providerType: req.type,
|
|
28143
|
-
providerClass: req.providerClass || null,
|
|
28144
|
-
required: req.required !== false,
|
|
28145
|
-
resolvedProviderName: name,
|
|
28146
|
-
layoutItem: item
|
|
28147
|
-
});
|
|
28148
|
-
}
|
|
28149
|
-
} catch (err) {
|
|
28150
|
-
_iterator6.e(err);
|
|
28151
|
-
} finally {
|
|
28152
|
-
_iterator6.f();
|
|
28153
|
-
}
|
|
28154
|
-
});
|
|
28155
|
-
return bindings;
|
|
28156
|
-
}
|
|
28157
|
-
|
|
28158
|
-
function ownKeys$B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
28159
|
-
function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28160
|
-
function _createForOfIteratorHelper$i(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$i(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
28161
|
-
function _unsupportedIterableToArray$i(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$i(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$i(r, a) : void 0; } }
|
|
28162
|
-
function _arrayLikeToArray$i(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
28163
|
-
var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
|
|
28164
|
-
|
|
28165
|
-
/** Parse "Component[itemId].event" → { component, itemId, event }. */
|
|
28166
|
-
function parseEventString(eventString) {
|
|
28167
|
-
if (typeof eventString !== "string") return null;
|
|
28168
|
-
var m = eventString.match(EVENT_STRING_RE);
|
|
28169
|
-
if (!m) return null;
|
|
28170
|
-
return {
|
|
28171
|
-
component: m[1],
|
|
28172
|
-
itemId: m[2],
|
|
28173
|
-
event: m[3]
|
|
28174
|
-
};
|
|
28175
|
-
}
|
|
28176
|
-
|
|
28177
|
-
/** Build an event string in the canonical runtime format. */
|
|
28178
|
-
function formatEventString(component, itemId, event) {
|
|
28179
|
-
return "".concat(component, "[").concat(itemId, "].").concat(event);
|
|
28180
|
-
}
|
|
28181
|
-
|
|
28182
|
-
/**
|
|
28183
|
-
* Get a stable id for a layout item. Layout items historically used
|
|
28184
|
-
* numeric `id`; some newer flows also carry `uuidString`/`uuid`. The
|
|
28185
|
-
* runtime event-string format uses whichever is `item.id`, so we
|
|
28186
|
-
* default to that and fall back to the others for resilience.
|
|
28187
|
-
*/
|
|
28188
|
-
function itemIdOf(item) {
|
|
28189
|
-
if (item == null) return null;
|
|
28190
|
-
if (item.id !== undefined && item.id !== null) return String(item.id);
|
|
28191
|
-
if (item.uuidString) return item.uuidString;
|
|
28192
|
-
if (item.uuid) return item.uuid;
|
|
28193
|
-
return null;
|
|
28194
|
-
}
|
|
28195
|
-
|
|
28196
|
-
/**
|
|
28197
|
-
* Canonical identity key for a layout item: `component|id-ish`.
|
|
28198
|
-
* Single source of truth for dedupe in every query below and in
|
|
28199
|
-
* `forEachWidget` (providerResolution.js). Including the component
|
|
28200
|
-
* prefix prevents two structurally-different widgets from colliding
|
|
28201
|
-
* when they happen to share a uuid (rare, but possible when items
|
|
28202
|
-
* are pasted between workspaces).
|
|
28203
|
-
*
|
|
28204
|
-
* Priority matches forEachWidget's stableId so a widget that
|
|
28205
|
-
* forEachWidget visited once produces exactly one map entry across
|
|
28206
|
-
* every listener-side consumer — no more `STAGEGATECHECKLIST[4]`
|
|
28207
|
-
* appearing twice because one caller used `uuidString` and the
|
|
28208
|
-
* other used `id`.
|
|
28209
|
-
*/
|
|
28210
|
-
function canonicalItemKey(item) {
|
|
28211
|
-
if (!item || !item.component) return null;
|
|
28212
|
-
if (item.uuidString) return "".concat(item.component, "|").concat(item.uuidString);
|
|
28213
|
-
if (item.uuid) return "".concat(item.component, "|").concat(item.uuid);
|
|
28214
|
-
if (item.id !== undefined && item.id !== null) {
|
|
28215
|
-
return "".concat(item.component, "|").concat(item.id);
|
|
28216
|
-
}
|
|
28217
|
-
return null;
|
|
28218
|
-
}
|
|
28219
|
-
|
|
28220
|
-
/**
|
|
28221
|
-
* Best-effort human label for a layout item: explicit title, then
|
|
28222
|
-
* widget config display name, then component name + short id.
|
|
28223
|
-
*/
|
|
28224
|
-
function labelFor(item, getWidgetConfig) {
|
|
28225
|
-
var _item$userPrefs, _item$userConfig;
|
|
28226
|
-
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || null;
|
|
28227
|
-
var explicit = (item === null || item === void 0 || (_item$userPrefs = item.userPrefs) === null || _item$userPrefs === void 0 ? void 0 : _item$userPrefs.title) || (item === null || item === void 0 || (_item$userConfig = item.userConfig) === null || _item$userConfig === void 0 ? void 0 : _item$userConfig.title);
|
|
28228
|
-
if (explicit) return explicit;
|
|
28229
|
-
if (cfg !== null && cfg !== void 0 && cfg.displayName) return cfg.displayName;
|
|
28230
|
-
var id = itemIdOf(item);
|
|
28231
|
-
return "".concat(item.component || "widget").concat(id ? "[".concat(String(id).slice(0, 6), "]") : "");
|
|
28232
|
-
}
|
|
28233
|
-
|
|
28234
|
-
/**
|
|
28235
|
-
* Read the events/eventHandlers metadata for a widget. Items can carry
|
|
28236
|
-
* the arrays inline (older pattern where they got cached onto the
|
|
28237
|
-
* layout item); the current component config carries them via the
|
|
28238
|
-
* ComponentManager catalog. We UNION both so we don't flag a binding
|
|
28239
|
-
* as orphaned just because an inline cache is stale — if the current
|
|
28240
|
-
* widget code declares the event/handler, the binding is valid.
|
|
28241
|
-
*/
|
|
28242
|
-
function eventsOf(item, getWidgetConfig) {
|
|
28243
|
-
var inline = Array.isArray(item.events) ? item.events : [];
|
|
28244
|
-
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
|
|
28245
|
-
var fromCfg = Array.isArray(cfg.events) ? cfg.events : [];
|
|
28246
|
-
return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
|
|
28247
|
-
}
|
|
28248
|
-
function eventHandlersOf(item, getWidgetConfig) {
|
|
28249
|
-
var inline = Array.isArray(item.eventHandlers) ? item.eventHandlers : [];
|
|
28250
|
-
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
|
|
28251
|
-
var fromCfg = Array.isArray(cfg.eventHandlers) ? cfg.eventHandlers : [];
|
|
28252
|
-
return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
|
|
28253
|
-
}
|
|
28254
|
-
|
|
28255
|
-
/**
|
|
28256
|
-
* Every widget instance in the workspace that emits at least one event.
|
|
28257
|
-
* Deduplicated by `${component}|${itemId}` — the same compound key that
|
|
28258
|
-
* event strings use at runtime, so any "duplicate" in the tree (same
|
|
28259
|
-
* widget referenced across pages) resolves to the same wiring target.
|
|
28260
|
-
* @returns {Array<{ itemId, component, label, events: string[], key: string }>}
|
|
28261
|
-
*/
|
|
28262
|
-
function getEmitters(workspace, getWidgetConfig) {
|
|
28263
|
-
var byKey = new Map();
|
|
28264
|
-
forEachWidget(workspace, function (item) {
|
|
28265
|
-
var events = eventsOf(item, getWidgetConfig);
|
|
28266
|
-
if (events.length === 0) return;
|
|
28267
|
-
var key = canonicalItemKey(item);
|
|
28268
|
-
if (!key) return;
|
|
28269
|
-
if (byKey.has(key)) return;
|
|
28270
|
-
byKey.set(key, {
|
|
28271
|
-
key: key,
|
|
28272
|
-
itemId: itemIdOf(item),
|
|
28273
|
-
component: item.component,
|
|
28274
|
-
label: labelFor(item, getWidgetConfig),
|
|
28275
|
-
events: events
|
|
28276
|
-
});
|
|
28277
|
-
});
|
|
28278
|
-
return Array.from(byKey.values());
|
|
28279
|
-
}
|
|
28280
|
-
|
|
28281
|
-
/**
|
|
28282
|
-
* Every widget instance in the workspace that accepts at least one
|
|
28283
|
-
* handler. Used to populate the receiver dropdown. Deduplicated by
|
|
28284
|
-
* `${component}|${itemId}` (see getEmitters).
|
|
28285
|
-
* @returns {Array<{ itemId, component, label, eventHandlers: string[], listeners: object, key: string }>}
|
|
28286
|
-
*/
|
|
28287
|
-
function getReceivers(workspace, getWidgetConfig) {
|
|
28288
|
-
var byKey = new Map();
|
|
28289
|
-
forEachWidget(workspace, function (item) {
|
|
28290
|
-
var handlers = eventHandlersOf(item, getWidgetConfig);
|
|
28291
|
-
if (handlers.length === 0) return;
|
|
28292
|
-
var key = canonicalItemKey(item);
|
|
28293
|
-
if (!key) return;
|
|
28294
|
-
if (byKey.has(key)) return;
|
|
28295
|
-
byKey.set(key, {
|
|
28296
|
-
key: key,
|
|
28297
|
-
itemId: itemIdOf(item),
|
|
28298
|
-
component: item.component,
|
|
28299
|
-
label: labelFor(item, getWidgetConfig),
|
|
28300
|
-
eventHandlers: handlers,
|
|
28301
|
-
listeners: item.listeners || {}
|
|
28302
|
-
});
|
|
28303
|
-
});
|
|
28304
|
-
return Array.from(byKey.values());
|
|
28305
|
-
}
|
|
28610
|
+
// Set default gap if not specified
|
|
28611
|
+
if (!layout.grid.gap) layout.grid.gap = "gap-2";
|
|
28306
28612
|
|
|
28307
|
-
|
|
28308
|
-
|
|
28309
|
-
|
|
28310
|
-
|
|
28311
|
-
|
|
28312
|
-
|
|
28313
|
-
|
|
28314
|
-
|
|
28315
|
-
|
|
28316
|
-
|
|
28317
|
-
|
|
28318
|
-
|
|
28319
|
-
|
|
28320
|
-
|
|
28321
|
-
|
|
28322
|
-
|
|
28323
|
-
|
|
28324
|
-
|
|
28325
|
-
//
|
|
28326
|
-
|
|
28327
|
-
|
|
28328
|
-
|
|
28329
|
-
|
|
28330
|
-
|
|
28331
|
-
|
|
28332
|
-
|
|
28333
|
-
|
|
28334
|
-
|
|
28335
|
-
|
|
28336
|
-
|
|
28337
|
-
|
|
28338
|
-
|
|
28339
|
-
|
|
28340
|
-
|
|
28341
|
-
|
|
28342
|
-
|
|
28613
|
+
// Sort grid object keys for consistent ordering
|
|
28614
|
+
layout.grid = sortObjectByKeys(layout.grid);
|
|
28615
|
+
|
|
28616
|
+
// If type is not explicitly set and grid exists, set type to "grid"
|
|
28617
|
+
if (layout.type === "layout" && "grid" in obj) {
|
|
28618
|
+
layout.type = "grid";
|
|
28619
|
+
}
|
|
28620
|
+
}
|
|
28621
|
+
layout.parentWorkspaceName = "parentWorkspaceName" in obj ? obj["parentWorkspaceName"] : null;
|
|
28622
|
+
|
|
28623
|
+
// last check for this being a container...
|
|
28624
|
+
// we are forcing ALL containers to be w full and h full
|
|
28625
|
+
// not sure this is a good idea, but...
|
|
28626
|
+
if ("workspace" in layout || layout.type !== "widget") {
|
|
28627
|
+
// if (layout.workspace === "layout") {
|
|
28628
|
+
if (layout.width === "") {
|
|
28629
|
+
layout.width = "w-full";
|
|
28630
|
+
}
|
|
28631
|
+
// if (layout.height === "") {
|
|
28632
|
+
layout.height = "h-full";
|
|
28633
|
+
// }
|
|
28634
|
+
// if (layout.scrollable === "") {
|
|
28635
|
+
// layout.scrollable = true;
|
|
28636
|
+
// }
|
|
28637
|
+
if (layout.direction === "") {
|
|
28638
|
+
layout.direction = "col";
|
|
28639
|
+
}
|
|
28640
|
+
// }
|
|
28641
|
+
}
|
|
28642
|
+
|
|
28643
|
+
// lets check to see if we already have the parent workspace?
|
|
28644
|
+
if (layout.parentWorkspaceName === null) {
|
|
28645
|
+
// get the nearest workspace and assign this as the parent for rendering
|
|
28646
|
+
var tempLayout = deepCopy(layout);
|
|
28647
|
+
var parentWS = getNearestParentWorkspace(workspaceLayout, tempLayout, tempLayout);
|
|
28648
|
+
var parentWorkspaceName = "layout";
|
|
28649
|
+
if (parentWS) {
|
|
28650
|
+
if ("workspace" in parentWS) {
|
|
28651
|
+
parentWorkspaceName = parentWS["workspace"];
|
|
28343
28652
|
}
|
|
28344
|
-
} catch (err) {
|
|
28345
|
-
_iterator.e(err);
|
|
28346
|
-
} finally {
|
|
28347
|
-
_iterator.f();
|
|
28348
28653
|
}
|
|
28654
|
+
layout.parentWorkspaceName = parentWorkspaceName;
|
|
28349
28655
|
}
|
|
28350
|
-
|
|
28351
|
-
|
|
28352
|
-
|
|
28656
|
+
return layout;
|
|
28657
|
+
} catch (e) {
|
|
28658
|
+
return null;
|
|
28659
|
+
}
|
|
28660
|
+
};
|
|
28353
28661
|
|
|
28354
28662
|
/**
|
|
28355
|
-
*
|
|
28356
|
-
*
|
|
28357
|
-
* declare the event, or the receiver doesn't declare the handler.
|
|
28358
|
-
* Each entry includes a `reason` so the modal can show a sensible
|
|
28359
|
-
* message.
|
|
28663
|
+
* Handle all of the data for a color (theme)
|
|
28664
|
+
* @param {Object} obj the color object we would like to use to populate the model (optional)
|
|
28360
28665
|
*/
|
|
28361
|
-
function
|
|
28362
|
-
var
|
|
28363
|
-
if (wiring.length === 0) return [];
|
|
28364
|
-
|
|
28365
|
-
// Build two lookups:
|
|
28366
|
-
// byCompositeKey: `${component}|${itemId}` → widget meta (primary)
|
|
28367
|
-
// byItemId: `${itemId}` → widget meta (fallback,
|
|
28368
|
-
// used only for the "source-missing" check where
|
|
28369
|
-
// the wiring's component can't be trusted yet)
|
|
28370
|
-
// The composite key matches how the runtime event-string
|
|
28371
|
-
// (`Component[itemId].event`) identifies a widget, so orphan
|
|
28372
|
-
// decisions line up with what actually fires at runtime.
|
|
28373
|
-
var byCompositeKey = new Map();
|
|
28374
|
-
var byItemId = new Map();
|
|
28375
|
-
forEachWidget(workspace, function (item) {
|
|
28376
|
-
var id = itemIdOf(item);
|
|
28377
|
-
if (id == null) return;
|
|
28378
|
-
var meta = {
|
|
28379
|
-
component: item.component,
|
|
28380
|
-
events: eventsOf(item, getWidgetConfig),
|
|
28381
|
-
eventHandlers: eventHandlersOf(item, getWidgetConfig)
|
|
28382
|
-
};
|
|
28383
|
-
byCompositeKey.set("".concat(item.component, "|").concat(id), meta);
|
|
28384
|
-
// First-seen wins on numeric-id collisions; good enough for the
|
|
28385
|
-
// "does any widget with this id exist?" fallback.
|
|
28386
|
-
if (!byItemId.has(id)) byItemId.set(id, meta);
|
|
28387
|
-
});
|
|
28388
|
-
var orphans = [];
|
|
28389
|
-
var _iterator2 = _createForOfIteratorHelper$i(wiring),
|
|
28390
|
-
_step2;
|
|
28666
|
+
var ColorModel = function ColorModel() {
|
|
28667
|
+
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
28391
28668
|
try {
|
|
28392
|
-
|
|
28393
|
-
|
|
28394
|
-
var
|
|
28395
|
-
var
|
|
28396
|
-
|
|
28397
|
-
|
|
28398
|
-
|
|
28399
|
-
|
|
28400
|
-
|
|
28401
|
-
|
|
28402
|
-
|
|
28403
|
-
|
|
28404
|
-
|
|
28405
|
-
|
|
28406
|
-
|
|
28407
|
-
|
|
28408
|
-
|
|
28409
|
-
|
|
28410
|
-
|
|
28411
|
-
|
|
28412
|
-
|
|
28413
|
-
|
|
28414
|
-
|
|
28415
|
-
|
|
28416
|
-
|
|
28417
|
-
|
|
28418
|
-
|
|
28419
|
-
|
|
28669
|
+
if (obj) {
|
|
28670
|
+
// console.log("cm: ", obj);
|
|
28671
|
+
var temp = deepCopy(obj);
|
|
28672
|
+
var color = {};
|
|
28673
|
+
color.panelType = "panelType" in temp ? temp.panelType : "main";
|
|
28674
|
+
color.colorName = "colorName" in temp ? temp.colorName : "white";
|
|
28675
|
+
color.colorType = "colorType" in temp ? temp.colorType !== undefined && temp.colorType !== null ? temp.colorType : "primary" : "primary";
|
|
28676
|
+
color.shade = "shade" in temp ? temp.shade : 500;
|
|
28677
|
+
color.variant = "variant" in temp ? temp.variant : "dark";
|
|
28678
|
+
color.level = "level" in temp ? temp.level : "light";
|
|
28679
|
+
color.objectType = "objectType" in temp ? temp.objectType : "bg";
|
|
28680
|
+
color.styleName = getStyleName(color.objectType); //'background';
|
|
28681
|
+
|
|
28682
|
+
/**
|
|
28683
|
+
* generate the display name
|
|
28684
|
+
*/
|
|
28685
|
+
color.displayName = "displayName" in temp ? temp.name : capitalizeFirstLetter(color.colorName);
|
|
28686
|
+
|
|
28687
|
+
/**
|
|
28688
|
+
* Strings for the theme class name and the class to be used in className
|
|
28689
|
+
*/
|
|
28690
|
+
color.themeClass = "".concat(color.objectType, "-").concat(color.colorType, "-").concat(color.level);
|
|
28691
|
+
color["class"] = "".concat(color.objectType, "-").concat(color.colorName, "-").concat(color.shade);
|
|
28692
|
+
|
|
28693
|
+
/**
|
|
28694
|
+
* Grab the hex code via tailwind for the tailwind color
|
|
28695
|
+
* This may change as we move to hex codes for selection
|
|
28696
|
+
*/
|
|
28697
|
+
color.hex = colors[color.colorName];
|
|
28698
|
+
return color;
|
|
28420
28699
|
}
|
|
28421
|
-
|
|
28422
|
-
|
|
28423
|
-
|
|
28424
|
-
_iterator2.f();
|
|
28700
|
+
return null;
|
|
28701
|
+
} catch (e) {
|
|
28702
|
+
return obj;
|
|
28425
28703
|
}
|
|
28426
|
-
|
|
28427
|
-
|
|
28704
|
+
};
|
|
28705
|
+
|
|
28706
|
+
var SettingsModel = function SettingsModel() {
|
|
28707
|
+
var settingsObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
28708
|
+
var obj = deepCopy(settingsObject);
|
|
28709
|
+
obj["debug"] = "debug" in obj ? obj["debug"] : false;
|
|
28710
|
+
obj["theme"] = "theme" in obj ? obj["theme"] : null;
|
|
28711
|
+
return obj;
|
|
28712
|
+
};
|
|
28713
|
+
|
|
28714
|
+
function _createForOfIteratorHelper$i(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$i(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
28715
|
+
function _unsupportedIterableToArray$i(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$i(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$i(r, a) : void 0; } }
|
|
28716
|
+
function _arrayLikeToArray$i(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
28428
28717
|
|
|
28429
28718
|
/**
|
|
28430
|
-
*
|
|
28431
|
-
*
|
|
28432
|
-
*
|
|
28433
|
-
*
|
|
28719
|
+
* Workspace-level pre-pass that migrates legacy bare component
|
|
28720
|
+
* references throughout an entire workspace. Runs ONCE on workspace
|
|
28721
|
+
* load (from `WorkspaceModel`); after this pass every layout item
|
|
28722
|
+
* carries a fully scoped `component` AND every listener event string
|
|
28723
|
+
* (`Comp[id].evt`) references the matching scoped component.
|
|
28434
28724
|
*
|
|
28435
|
-
*
|
|
28436
|
-
* - the emitter widget was deleted
|
|
28437
|
-
* - the emitter widget's id now belongs to a different component
|
|
28438
|
-
* (stored binding has stale component name)
|
|
28439
|
-
* - the source string failed to parse (legacy/garbage data)
|
|
28725
|
+
* Why workspace-level (and not per-LayoutModel item)?
|
|
28440
28726
|
*
|
|
28441
|
-
*
|
|
28442
|
-
*
|
|
28443
|
-
*
|
|
28727
|
+
* - Listeners can reference widgets across pages/sidebar/root, so
|
|
28728
|
+
* migrating one item's listeners requires knowing the scoped form
|
|
28729
|
+
* of widgets in OTHER items. Per-item migration can't see that.
|
|
28730
|
+
* - `pruneDeadListenerReferences` (called immediately after) walks
|
|
28731
|
+
* the whole workspace and needs every item's `component` AND
|
|
28732
|
+
* every listener string to use the same identity space. If
|
|
28733
|
+
* listeners still reference bare names but live items are scoped,
|
|
28734
|
+
* prune treats every legacy listener as an orphan and silently
|
|
28735
|
+
* deletes the user's wiring.
|
|
28444
28736
|
*
|
|
28445
|
-
*
|
|
28737
|
+
* Mutating in place is intentional — `WorkspaceModel` already deep-
|
|
28738
|
+
* copies the input, so the surface mutation is contained to that
|
|
28739
|
+
* working copy.
|
|
28740
|
+
*
|
|
28741
|
+
* @param {object} workspace
|
|
28742
|
+
* @param {object} componentMap - registry map keyed by scoped ids
|
|
28743
|
+
* @returns {{components: number, listeners: number}} migration counts
|
|
28446
28744
|
*/
|
|
28447
|
-
function
|
|
28448
|
-
|
|
28745
|
+
function migrateScopedIdsInWorkspace(workspace, componentMap) {
|
|
28746
|
+
var counts = {
|
|
28747
|
+
components: 0,
|
|
28748
|
+
listeners: 0
|
|
28749
|
+
};
|
|
28750
|
+
if (!workspace || !componentMap) return counts;
|
|
28751
|
+
var migrateComponent = function migrateComponent(item) {
|
|
28752
|
+
if (!item || _typeof(item) !== "object" || !item.component) return;
|
|
28753
|
+
var before = item.component;
|
|
28754
|
+
var after = migrateBareComponentName(componentMap, before);
|
|
28755
|
+
if (after !== before) {
|
|
28756
|
+
item.component = after;
|
|
28757
|
+
counts.components += 1;
|
|
28758
|
+
}
|
|
28759
|
+
};
|
|
28449
28760
|
|
|
28450
|
-
//
|
|
28451
|
-
//
|
|
28452
|
-
|
|
28453
|
-
var
|
|
28454
|
-
|
|
28455
|
-
|
|
28456
|
-
|
|
28457
|
-
|
|
28458
|
-
|
|
28459
|
-
|
|
28460
|
-
|
|
28461
|
-
|
|
28462
|
-
|
|
28463
|
-
|
|
28761
|
+
// Listener event strings parse as `Comp[id].evt`. Only the `Comp`
|
|
28762
|
+
// portion is migrated; the id is the receiver's stable layout id
|
|
28763
|
+
// (numeric or uuid) and the event name is widget-defined.
|
|
28764
|
+
var EVENT_RE = /^([^[]+)(\[[^\]]+\]\..+)$/;
|
|
28765
|
+
var migrateListenerStrings = function migrateListenerStrings(item) {
|
|
28766
|
+
if (!item || _typeof(item) !== "object") return;
|
|
28767
|
+
var listeners = item.listeners;
|
|
28768
|
+
if (!listeners || _typeof(listeners) !== "object") return;
|
|
28769
|
+
for (var _i = 0, _Object$keys = Object.keys(listeners); _i < _Object$keys.length; _i++) {
|
|
28770
|
+
var handler = _Object$keys[_i];
|
|
28771
|
+
var events = listeners[handler];
|
|
28772
|
+
if (!Array.isArray(events)) continue;
|
|
28773
|
+
for (var i = 0; i < events.length; i += 1) {
|
|
28774
|
+
var raw = events[i];
|
|
28775
|
+
if (typeof raw !== "string") continue;
|
|
28776
|
+
var m = raw.match(EVENT_RE);
|
|
28777
|
+
if (!m) continue;
|
|
28778
|
+
var _m = _slicedToArray(m, 3),
|
|
28779
|
+
comp = _m[1],
|
|
28780
|
+
rest = _m[2];
|
|
28781
|
+
var migrated = migrateBareComponentName(componentMap, comp);
|
|
28782
|
+
if (migrated !== comp) {
|
|
28783
|
+
events[i] = "".concat(migrated).concat(rest);
|
|
28784
|
+
counts.listeners += 1;
|
|
28464
28785
|
}
|
|
28465
|
-
if (Array.isArray(item.items)) _walkForLive(item.items);
|
|
28466
|
-
if (Array.isArray(item.layout)) _walkForLive(item.layout);
|
|
28467
28786
|
}
|
|
28468
|
-
} catch (err) {
|
|
28469
|
-
_iterator3.e(err);
|
|
28470
|
-
} finally {
|
|
28471
|
-
_iterator3.f();
|
|
28472
28787
|
}
|
|
28473
28788
|
};
|
|
28474
|
-
|
|
28475
|
-
if (Array.isArray(workspace.pages)) {
|
|
28476
|
-
var _iterator4 = _createForOfIteratorHelper$i(workspace.pages),
|
|
28477
|
-
_step4;
|
|
28478
|
-
try {
|
|
28479
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
28480
|
-
var page = _step4.value;
|
|
28481
|
-
_walkForLive(page === null || page === void 0 ? void 0 : page.layout);
|
|
28482
|
-
}
|
|
28483
|
-
} catch (err) {
|
|
28484
|
-
_iterator4.e(err);
|
|
28485
|
-
} finally {
|
|
28486
|
-
_iterator4.f();
|
|
28487
|
-
}
|
|
28488
|
-
}
|
|
28489
|
-
_walkForLive(workspace.sidebarLayout);
|
|
28490
|
-
var removed = 0;
|
|
28491
|
-
var _pruneListeners = function pruneListeners(items) {
|
|
28789
|
+
var _walk = function walk(items) {
|
|
28492
28790
|
if (!Array.isArray(items)) return;
|
|
28493
|
-
var
|
|
28494
|
-
|
|
28791
|
+
var _iterator = _createForOfIteratorHelper$i(items),
|
|
28792
|
+
_step;
|
|
28495
28793
|
try {
|
|
28496
|
-
for (
|
|
28497
|
-
var item =
|
|
28794
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
28795
|
+
var item = _step.value;
|
|
28498
28796
|
if (!item || _typeof(item) !== "object") continue;
|
|
28499
|
-
|
|
28500
|
-
|
|
28501
|
-
|
|
28502
|
-
|
|
28503
|
-
|
|
28504
|
-
|
|
28505
|
-
|
|
28506
|
-
_step6;
|
|
28507
|
-
try {
|
|
28508
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
28509
|
-
var raw = _step6.value;
|
|
28510
|
-
var parsed = parseEventString(raw);
|
|
28511
|
-
if (parsed && liveKeys.has("".concat(parsed.component, "|").concat(parsed.itemId))) {
|
|
28512
|
-
kept.push(raw);
|
|
28513
|
-
} else {
|
|
28514
|
-
removed += 1;
|
|
28515
|
-
}
|
|
28516
|
-
}
|
|
28517
|
-
} catch (err) {
|
|
28518
|
-
_iterator6.e(err);
|
|
28519
|
-
} finally {
|
|
28520
|
-
_iterator6.f();
|
|
28521
|
-
}
|
|
28522
|
-
if (kept.length === 0) {
|
|
28523
|
-
delete item.listeners[handler];
|
|
28524
|
-
} else if (kept.length !== events.length) {
|
|
28525
|
-
item.listeners[handler] = kept;
|
|
28526
|
-
}
|
|
28527
|
-
}
|
|
28528
|
-
}
|
|
28529
|
-
if (Array.isArray(item.items)) _pruneListeners(item.items);
|
|
28530
|
-
if (Array.isArray(item.layout)) _pruneListeners(item.layout);
|
|
28797
|
+
// Migrate this item, then recurse — order matters so that
|
|
28798
|
+
// pre-existing listeners on this item see the registry as it
|
|
28799
|
+
// was, not the (possibly newly-renamed) component name.
|
|
28800
|
+
migrateComponent(item);
|
|
28801
|
+
migrateListenerStrings(item);
|
|
28802
|
+
if (Array.isArray(item.items)) _walk(item.items);
|
|
28803
|
+
if (Array.isArray(item.layout)) _walk(item.layout);
|
|
28531
28804
|
}
|
|
28532
28805
|
} catch (err) {
|
|
28533
|
-
|
|
28806
|
+
_iterator.e(err);
|
|
28534
28807
|
} finally {
|
|
28535
|
-
|
|
28808
|
+
_iterator.f();
|
|
28536
28809
|
}
|
|
28537
28810
|
};
|
|
28538
|
-
|
|
28811
|
+
_walk(workspace.layout);
|
|
28539
28812
|
if (Array.isArray(workspace.pages)) {
|
|
28540
|
-
var
|
|
28541
|
-
|
|
28813
|
+
var _iterator2 = _createForOfIteratorHelper$i(workspace.pages),
|
|
28814
|
+
_step2;
|
|
28542
28815
|
try {
|
|
28543
|
-
for (
|
|
28544
|
-
var
|
|
28545
|
-
|
|
28816
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
28817
|
+
var page = _step2.value;
|
|
28818
|
+
_walk(page === null || page === void 0 ? void 0 : page.layout);
|
|
28546
28819
|
}
|
|
28547
28820
|
} catch (err) {
|
|
28548
|
-
|
|
28821
|
+
_iterator2.e(err);
|
|
28549
28822
|
} finally {
|
|
28550
|
-
|
|
28551
|
-
}
|
|
28552
|
-
}
|
|
28553
|
-
_pruneListeners(workspace.sidebarLayout);
|
|
28554
|
-
return removed;
|
|
28555
|
-
}
|
|
28556
|
-
|
|
28557
|
-
/**
|
|
28558
|
-
* Apply a staged delta to a workspace's listener bindings and return a
|
|
28559
|
-
* NEW workspace object (deep-cloned along the modified path).
|
|
28560
|
-
*
|
|
28561
|
-
* `adds` / `removes` are arrays of
|
|
28562
|
-
* { receiverItemId, handlerName, sourceComponent, sourceItemId, eventName }
|
|
28563
|
-
*
|
|
28564
|
-
* Removes may also pass `raw` (the exact pre-existing event string) for
|
|
28565
|
-
* a precise match; otherwise we match on the canonical formatted form.
|
|
28566
|
-
*/
|
|
28567
|
-
function applyWiringChanges(workspace, _ref) {
|
|
28568
|
-
var _ref$adds = _ref.adds,
|
|
28569
|
-
adds = _ref$adds === void 0 ? [] : _ref$adds,
|
|
28570
|
-
_ref$removes = _ref.removes,
|
|
28571
|
-
removes = _ref$removes === void 0 ? [] : _ref$removes;
|
|
28572
|
-
if (!workspace) return workspace;
|
|
28573
|
-
if (adds.length === 0 && removes.length === 0) return workspace;
|
|
28574
|
-
|
|
28575
|
-
// Group changes by receiver for cheap per-item updates.
|
|
28576
|
-
var byReceiver = new Map();
|
|
28577
|
-
var ensure = function ensure(id) {
|
|
28578
|
-
if (!byReceiver.has(id)) byReceiver.set(id, {
|
|
28579
|
-
adds: [],
|
|
28580
|
-
removes: []
|
|
28581
|
-
});
|
|
28582
|
-
return byReceiver.get(id);
|
|
28583
|
-
};
|
|
28584
|
-
var _iterator8 = _createForOfIteratorHelper$i(adds),
|
|
28585
|
-
_step8;
|
|
28586
|
-
try {
|
|
28587
|
-
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
28588
|
-
var a = _step8.value;
|
|
28589
|
-
if (!a.receiverItemId) continue;
|
|
28590
|
-
ensure(String(a.receiverItemId)).adds.push(a);
|
|
28591
|
-
}
|
|
28592
|
-
} catch (err) {
|
|
28593
|
-
_iterator8.e(err);
|
|
28594
|
-
} finally {
|
|
28595
|
-
_iterator8.f();
|
|
28596
|
-
}
|
|
28597
|
-
var _iterator9 = _createForOfIteratorHelper$i(removes),
|
|
28598
|
-
_step9;
|
|
28599
|
-
try {
|
|
28600
|
-
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
28601
|
-
var r = _step9.value;
|
|
28602
|
-
if (!r.receiverItemId) continue;
|
|
28603
|
-
ensure(String(r.receiverItemId)).removes.push(r);
|
|
28604
|
-
}
|
|
28605
|
-
|
|
28606
|
-
// Walk the tree and rebuild listeners on every touched item. We do
|
|
28607
|
-
// shallow clones along the path so React change detection is
|
|
28608
|
-
// reliable — but the tree shape is preserved.
|
|
28609
|
-
} catch (err) {
|
|
28610
|
-
_iterator9.e(err);
|
|
28611
|
-
} finally {
|
|
28612
|
-
_iterator9.f();
|
|
28613
|
-
}
|
|
28614
|
-
var cloneList = function cloneList(items) {
|
|
28615
|
-
return Array.isArray(items) ? items.map(function (item) {
|
|
28616
|
-
return transform(item);
|
|
28617
|
-
}) : items;
|
|
28618
|
-
};
|
|
28619
|
-
var transform = function transform(item) {
|
|
28620
|
-
if (!item || _typeof(item) !== "object") return item;
|
|
28621
|
-
var next = item;
|
|
28622
|
-
var id = itemIdOf(item);
|
|
28623
|
-
var change = id != null ? byReceiver.get(String(id)) : null;
|
|
28624
|
-
if (change) {
|
|
28625
|
-
var newListeners = applyToItem(item.listeners || {}, change);
|
|
28626
|
-
next = _objectSpread$B(_objectSpread$B({}, next), {}, {
|
|
28627
|
-
listeners: newListeners
|
|
28628
|
-
});
|
|
28629
|
-
}
|
|
28630
|
-
if (Array.isArray(next.items)) {
|
|
28631
|
-
next = _objectSpread$B(_objectSpread$B({}, next), {}, {
|
|
28632
|
-
items: cloneList(next.items)
|
|
28633
|
-
});
|
|
28634
|
-
}
|
|
28635
|
-
if (Array.isArray(next.layout)) {
|
|
28636
|
-
next = _objectSpread$B(_objectSpread$B({}, next), {}, {
|
|
28637
|
-
layout: cloneList(next.layout)
|
|
28638
|
-
});
|
|
28639
|
-
}
|
|
28640
|
-
return next;
|
|
28641
|
-
};
|
|
28642
|
-
var updatedWs = _objectSpread$B({}, workspace);
|
|
28643
|
-
if (Array.isArray(workspace.layout)) {
|
|
28644
|
-
updatedWs.layout = cloneList(workspace.layout);
|
|
28645
|
-
}
|
|
28646
|
-
if (Array.isArray(workspace.pages)) {
|
|
28647
|
-
updatedWs.pages = workspace.pages.map(function (page) {
|
|
28648
|
-
return _objectSpread$B(_objectSpread$B({}, page), {}, {
|
|
28649
|
-
layout: cloneList(page.layout)
|
|
28650
|
-
});
|
|
28651
|
-
});
|
|
28652
|
-
}
|
|
28653
|
-
if (Array.isArray(workspace.sidebarLayout)) {
|
|
28654
|
-
updatedWs.sidebarLayout = cloneList(workspace.sidebarLayout);
|
|
28655
|
-
}
|
|
28656
|
-
return updatedWs;
|
|
28657
|
-
}
|
|
28658
|
-
function applyToItem(listeners, _ref2) {
|
|
28659
|
-
var adds = _ref2.adds,
|
|
28660
|
-
removes = _ref2.removes;
|
|
28661
|
-
// Deep enough clone for handler arrays.
|
|
28662
|
-
var next = {};
|
|
28663
|
-
for (var _i3 = 0, _Object$entries2 = Object.entries(listeners); _i3 < _Object$entries2.length; _i3++) {
|
|
28664
|
-
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
|
|
28665
|
-
k = _Object$entries2$_i[0],
|
|
28666
|
-
v = _Object$entries2$_i[1];
|
|
28667
|
-
next[k] = Array.isArray(v) ? _toConsumableArray(v) : v;
|
|
28668
|
-
}
|
|
28669
|
-
|
|
28670
|
-
// Removes first so a re-add (rare) lands.
|
|
28671
|
-
var _iterator0 = _createForOfIteratorHelper$i(removes),
|
|
28672
|
-
_step0;
|
|
28673
|
-
try {
|
|
28674
|
-
var _loop = function _loop() {
|
|
28675
|
-
var r = _step0.value;
|
|
28676
|
-
var target = r.handlerName;
|
|
28677
|
-
if (!target) return 0; // continue
|
|
28678
|
-
var events = next[target];
|
|
28679
|
-
if (!Array.isArray(events)) return 0; // continue
|
|
28680
|
-
var eventStr = r.raw || formatEventString(r.sourceComponent, r.sourceItemId, r.eventName);
|
|
28681
|
-
var filtered = events.filter(function (e) {
|
|
28682
|
-
return e !== eventStr;
|
|
28683
|
-
});
|
|
28684
|
-
if (filtered.length === 0) {
|
|
28685
|
-
delete next[target];
|
|
28686
|
-
} else {
|
|
28687
|
-
next[target] = filtered;
|
|
28688
|
-
}
|
|
28689
|
-
},
|
|
28690
|
-
_ret;
|
|
28691
|
-
for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
|
|
28692
|
-
_ret = _loop();
|
|
28693
|
-
if (_ret === 0) continue;
|
|
28694
|
-
}
|
|
28695
|
-
} catch (err) {
|
|
28696
|
-
_iterator0.e(err);
|
|
28697
|
-
} finally {
|
|
28698
|
-
_iterator0.f();
|
|
28699
|
-
}
|
|
28700
|
-
var _iterator1 = _createForOfIteratorHelper$i(adds),
|
|
28701
|
-
_step1;
|
|
28702
|
-
try {
|
|
28703
|
-
for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
|
|
28704
|
-
var a = _step1.value;
|
|
28705
|
-
var target = a.handlerName;
|
|
28706
|
-
if (!target) continue;
|
|
28707
|
-
var eventStr = formatEventString(a.sourceComponent, a.sourceItemId, a.eventName);
|
|
28708
|
-
var existing = Array.isArray(next[target]) ? next[target] : [];
|
|
28709
|
-
if (existing.includes(eventStr)) continue;
|
|
28710
|
-
next[target] = [].concat(_toConsumableArray(existing), [eventStr]);
|
|
28823
|
+
_iterator2.f();
|
|
28711
28824
|
}
|
|
28712
|
-
} catch (err) {
|
|
28713
|
-
_iterator1.e(err);
|
|
28714
|
-
} finally {
|
|
28715
|
-
_iterator1.f();
|
|
28716
28825
|
}
|
|
28717
|
-
|
|
28826
|
+
_walk(workspace.sidebarLayout);
|
|
28827
|
+
return counts;
|
|
28718
28828
|
}
|
|
28719
28829
|
|
|
28720
28830
|
/**
|
|
@@ -28853,14 +28963,21 @@ var WorkspaceModel = function WorkspaceModel(workspaceItem) {
|
|
|
28853
28963
|
workspace.selectedProviders = "selectedProviders" in obj ? obj["selectedProviders"] : {};
|
|
28854
28964
|
workspace.themeKey = "themeKey" in obj ? obj["themeKey"] : null;
|
|
28855
28965
|
|
|
28966
|
+
// Migrate legacy bare component refs (`PipelineKanban`) and the
|
|
28967
|
+
// listener event strings that reference them (`PipelineKanban[5].evt`)
|
|
28968
|
+
// to the canonical scoped form (`trops.pipeline.PipelineKanban`).
|
|
28969
|
+
// Runs BEFORE pruneDeadListenerReferences — without this, prune
|
|
28970
|
+
// sees bare listener strings vs scoped layout items, treats every
|
|
28971
|
+
// legacy listener as an orphan, and silently deletes the user's
|
|
28972
|
+
// wiring on first load post-v0.1.435.
|
|
28973
|
+
migrateScopedIdsInWorkspace(workspace, ComponentManager.componentMap());
|
|
28974
|
+
|
|
28856
28975
|
// Strip any listener bindings whose source widget is no longer in
|
|
28857
28976
|
// the tree. These "orphan" bindings are dead — they don't match any
|
|
28858
28977
|
// live publisher and never fire — so they're safe to remove at load
|
|
28859
|
-
// time before the renderer wires up subscriptions.
|
|
28860
|
-
// workspaces self-consistent without the user having to do anything.
|
|
28978
|
+
// time before the renderer wires up subscriptions.
|
|
28861
28979
|
pruneDeadListenerReferences(workspace);
|
|
28862
28980
|
return sanitizeWorkspaceObject(workspace);
|
|
28863
|
-
// return workspace;
|
|
28864
28981
|
};
|
|
28865
28982
|
|
|
28866
28983
|
/**
|
|
@@ -55101,21 +55218,53 @@ function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
55101
55218
|
var ALL_WIDGETS_ID = "__ALL__";
|
|
55102
55219
|
|
|
55103
55220
|
/**
|
|
55104
|
-
*
|
|
55105
|
-
*
|
|
55106
|
-
*
|
|
55107
|
-
*
|
|
55108
|
-
*
|
|
55109
|
-
*
|
|
55110
|
-
*
|
|
55221
|
+
* Pick the most user-friendly display name for a widget instance.
|
|
55222
|
+
* Priority: per-instance user title → widget's default title → widget
|
|
55223
|
+
* developer's friendly displayName → widget config name → the bare
|
|
55224
|
+
* component name (last segment of the scoped id) → the full scoped
|
|
55225
|
+
* id (last resort, never preferred — but always present).
|
|
55226
|
+
*
|
|
55227
|
+
* This is what shows on the primary line of the WidgetsTab list and
|
|
55228
|
+
* detail header. The full scoped registry id (`scope.package.X`) is
|
|
55229
|
+
* surfaced separately via `pickWidgetRef` below, so the user sees
|
|
55230
|
+
* BOTH a friendly name and an unambiguous reference.
|
|
55231
|
+
*/
|
|
55232
|
+
function pickDisplayName(item, cfg) {
|
|
55233
|
+
var _item$userPrefs, _item$userConfig;
|
|
55234
|
+
var prefsTitle = item === null || item === void 0 || (_item$userPrefs = item.userPrefs) === null || _item$userPrefs === void 0 ? void 0 : _item$userPrefs.title;
|
|
55235
|
+
if (typeof prefsTitle === "string" && prefsTitle.trim()) return prefsTitle;
|
|
55236
|
+
var configDefault = item === null || item === void 0 || (_item$userConfig = item.userConfig) === null || _item$userConfig === void 0 || (_item$userConfig = _item$userConfig.title) === null || _item$userConfig === void 0 ? void 0 : _item$userConfig.defaultValue;
|
|
55237
|
+
if (typeof configDefault === "string" && configDefault.trim()) {
|
|
55238
|
+
return configDefault;
|
|
55239
|
+
}
|
|
55240
|
+
if (cfg !== null && cfg !== void 0 && cfg.displayName) return cfg.displayName;
|
|
55241
|
+
if (cfg !== null && cfg !== void 0 && cfg.name) return cfg.name;
|
|
55242
|
+
var bare = bareComponentName(item === null || item === void 0 ? void 0 : item.component);
|
|
55243
|
+
if (bare) return bare;
|
|
55244
|
+
return (item === null || item === void 0 ? void 0 : item.component) || "Widget";
|
|
55245
|
+
}
|
|
55246
|
+
|
|
55247
|
+
/**
|
|
55248
|
+
* Format the full scoped registry id (`scope.package.Component`) for
|
|
55249
|
+
* the subtitle. The friendly display name on line 1 may be a custom
|
|
55250
|
+
* per-instance title that doesn't reveal which widget is actually
|
|
55251
|
+
* mounted — the subtitle pins down the underlying widget identity so
|
|
55252
|
+
* the user can always see "this 'Q4 Pipeline' is actually a
|
|
55253
|
+
* `trops.pipeline.SalesPipeline`".
|
|
55254
|
+
*
|
|
55255
|
+
* Falls back to the cfg fields when the layout item is non-canonical
|
|
55256
|
+
* (legacy bare names that LayoutModel couldn't migrate). Returns
|
|
55257
|
+
* null when even those are missing — caller hides the subtitle.
|
|
55111
55258
|
*/
|
|
55112
|
-
function
|
|
55113
|
-
if (
|
|
55114
|
-
var scope =
|
|
55115
|
-
var pkg =
|
|
55116
|
-
|
|
55117
|
-
if (pkg) return
|
|
55118
|
-
|
|
55259
|
+
function pickWidgetRef(item, cfg) {
|
|
55260
|
+
if (parseScopedComponentId(item === null || item === void 0 ? void 0 : item.component)) return item.component;
|
|
55261
|
+
var scope = (cfg === null || cfg === void 0 ? void 0 : cfg.scope) || (item === null || item === void 0 ? void 0 : item.scope);
|
|
55262
|
+
var pkg = (cfg === null || cfg === void 0 ? void 0 : cfg.packageName) || (item === null || item === void 0 ? void 0 : item.packageName);
|
|
55263
|
+
var comp = bareComponentName(item === null || item === void 0 ? void 0 : item.component) || (cfg === null || cfg === void 0 ? void 0 : cfg.name);
|
|
55264
|
+
if (!scope || !pkg || !comp) return (item === null || item === void 0 ? void 0 : item.component) || null;
|
|
55265
|
+
var bareScope = String(scope).replace(/^@/, "");
|
|
55266
|
+
var barePkg = String(pkg).replace(new RegExp("^@?".concat(bareScope, "/")), "");
|
|
55267
|
+
return "".concat(bareScope, ".").concat(barePkg, ".").concat(comp);
|
|
55119
55268
|
}
|
|
55120
55269
|
|
|
55121
55270
|
/**
|
|
@@ -55162,13 +55311,11 @@ var WidgetsTab = function WidgetsTab(_ref) {
|
|
|
55162
55311
|
result.push({
|
|
55163
55312
|
id: id,
|
|
55164
55313
|
component: item.component,
|
|
55165
|
-
displayName: item
|
|
55314
|
+
displayName: pickDisplayName(item, cfg),
|
|
55315
|
+
widgetRef: pickWidgetRef(item, cfg),
|
|
55166
55316
|
section: section,
|
|
55167
55317
|
userConfig: cfg.userConfig || {},
|
|
55168
55318
|
userPrefs: item.userPrefs || {},
|
|
55169
|
-
// Identity fields for the registry-identifier label. Prefer
|
|
55170
|
-
// values from the widget's component manager entry since the
|
|
55171
|
-
// layout item itself often doesn't carry scope/packageName.
|
|
55172
55319
|
scope: cfg.scope || item.scope || null,
|
|
55173
55320
|
packageName: cfg.packageName || cfg.name || item.packageName || null
|
|
55174
55321
|
});
|
|
@@ -55306,6 +55453,10 @@ var WidgetsTab = function WidgetsTab(_ref) {
|
|
|
55306
55453
|
className: "text-[10px] bg-amber-500/20 text-amber-300 px-1.5 rounded",
|
|
55307
55454
|
children: stagedForWidget
|
|
55308
55455
|
})]
|
|
55456
|
+
}), w.widgetRef && /*#__PURE__*/jsx("div", {
|
|
55457
|
+
className: "text-[10px] text-gray-500 font-mono truncate mt-0.5",
|
|
55458
|
+
title: w.widgetRef,
|
|
55459
|
+
children: w.widgetRef
|
|
55309
55460
|
}), /*#__PURE__*/jsx("div", {
|
|
55310
55461
|
className: "text-[10px] text-gray-600 mt-0.5",
|
|
55311
55462
|
children: fieldCount === 0 ? "No configurable fields" : "".concat(fieldCount, " field").concat(fieldCount === 1 ? "" : "s")
|
|
@@ -55338,20 +55489,19 @@ function SingleWidgetPane(_ref4) {
|
|
|
55338
55489
|
effectivePrefs = _ref4.effectivePrefs,
|
|
55339
55490
|
onFieldChange = _ref4.onFieldChange;
|
|
55340
55491
|
var hasFields = Object.keys(widget.userConfig).length > 0;
|
|
55341
|
-
var scopedId = buildScopedId(widget);
|
|
55342
55492
|
return /*#__PURE__*/jsxs("div", {
|
|
55343
55493
|
children: [/*#__PURE__*/jsxs("div", {
|
|
55344
55494
|
className: "mb-3",
|
|
55345
55495
|
children: [/*#__PURE__*/jsx("div", {
|
|
55346
55496
|
className: "text-gray-200 font-semibold",
|
|
55347
55497
|
children: widget.displayName
|
|
55348
|
-
}), /*#__PURE__*/
|
|
55349
|
-
className: "text-xs text-gray-500",
|
|
55350
|
-
|
|
55351
|
-
|
|
55352
|
-
|
|
55353
|
-
|
|
55354
|
-
children:
|
|
55498
|
+
}), widget.widgetRef && /*#__PURE__*/jsx("div", {
|
|
55499
|
+
className: "text-xs text-gray-500 font-mono truncate mt-0.5",
|
|
55500
|
+
title: widget.widgetRef,
|
|
55501
|
+
children: widget.widgetRef
|
|
55502
|
+
}), /*#__PURE__*/jsx("div", {
|
|
55503
|
+
className: "text-xs text-gray-600 mt-0.5",
|
|
55504
|
+
children: widget.section
|
|
55355
55505
|
})]
|
|
55356
55506
|
}), hasFields ? /*#__PURE__*/jsx(PanelEditForm, {
|
|
55357
55507
|
userConfig: widget.userConfig,
|
|
@@ -55597,11 +55747,11 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
55597
55747
|
var derivePackage = function derivePackage(item) {
|
|
55598
55748
|
var scopedId = typeof (item === null || item === void 0 ? void 0 : item.component) === "string" ? item.component : "";
|
|
55599
55749
|
var parts = scopedId.split(".");
|
|
55600
|
-
if (parts.length === 3) {
|
|
55601
|
-
|
|
55602
|
-
|
|
55603
|
-
|
|
55604
|
-
|
|
55750
|
+
if (parts.length === 3 && parts[0] && parts[1]) {
|
|
55751
|
+
// Group rows by `@scope/package` so two widgets from the same
|
|
55752
|
+
// package show up under one heading. The full scoped id is
|
|
55753
|
+
// surfaced per-row in the table (column-level identity).
|
|
55754
|
+
return "@".concat(parts[0], "/").concat(parts[1]);
|
|
55605
55755
|
}
|
|
55606
55756
|
// Defensive: an explicit packageId on the item still wins for
|
|
55607
55757
|
// legacy items the migration couldn't auto-resolve.
|