@trops/dash-core 0.1.397 → 0.1.399
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 +1864 -680
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1864 -680
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -50,8 +50,8 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
|
50
50
|
var jsxRuntime__namespace = /*#__PURE__*/_interopNamespaceDefault(jsxRuntime);
|
|
51
51
|
var ReactDOM__namespace = /*#__PURE__*/_interopNamespaceDefault(ReactDOM);
|
|
52
52
|
|
|
53
|
-
function ownKeys$
|
|
54
|
-
function _objectSpread$
|
|
53
|
+
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; }
|
|
54
|
+
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; }
|
|
55
55
|
var event = {
|
|
56
56
|
list: new Map(),
|
|
57
57
|
// Map(1) { '<widget-UUID>' => { 'CustomSearchbar[10].searchQueryChanged': [] } }
|
|
@@ -113,7 +113,7 @@ var event = {
|
|
|
113
113
|
uuid: subscriber["uuid"]
|
|
114
114
|
};
|
|
115
115
|
if ("action" in subscriber && subscriber.action !== undefined) {
|
|
116
|
-
subscriber["action"](_objectSpread$
|
|
116
|
+
subscriber["action"](_objectSpread$W({}, objectToSend));
|
|
117
117
|
}
|
|
118
118
|
});
|
|
119
119
|
}
|
|
@@ -2891,8 +2891,8 @@ var DashboardWrapper = function DashboardWrapper(_ref) {
|
|
|
2891
2891
|
});
|
|
2892
2892
|
};
|
|
2893
2893
|
|
|
2894
|
-
function ownKeys$
|
|
2895
|
-
function _objectSpread$
|
|
2894
|
+
function ownKeys$V(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2895
|
+
function _objectSpread$V(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2896
2896
|
function ThemeBroadcast(_ref) {
|
|
2897
2897
|
var ctx = _ref.ctx;
|
|
2898
2898
|
React.useEffect(function () {
|
|
@@ -2925,7 +2925,7 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref2) {
|
|
|
2925
2925
|
var dashboardTheme = themes[themeKey];
|
|
2926
2926
|
var themeValue = dashboardTheme ? dashboardTheme[themeVariant] || null : null;
|
|
2927
2927
|
if (!themeValue) return null;
|
|
2928
|
-
return _objectSpread$
|
|
2928
|
+
return _objectSpread$V(_objectSpread$V({}, parentContext), {}, {
|
|
2929
2929
|
currentTheme: themeValue,
|
|
2930
2930
|
currentThemeKey: themeKey,
|
|
2931
2931
|
theme: themeValue,
|
|
@@ -2952,8 +2952,8 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref2) {
|
|
|
2952
2952
|
});
|
|
2953
2953
|
};
|
|
2954
2954
|
|
|
2955
|
-
function ownKeys$
|
|
2956
|
-
function _objectSpread$
|
|
2955
|
+
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; }
|
|
2956
|
+
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; }
|
|
2957
2957
|
var AppThemeScope = function AppThemeScope(_ref) {
|
|
2958
2958
|
var children = _ref.children;
|
|
2959
2959
|
var ctx = React.useContext(DashReact.ThemeContext);
|
|
@@ -2961,7 +2961,7 @@ var AppThemeScope = function AppThemeScope(_ref) {
|
|
|
2961
2961
|
children: children
|
|
2962
2962
|
});
|
|
2963
2963
|
return /*#__PURE__*/jsxRuntime.jsx(DashReact.ThemeContext.Provider, {
|
|
2964
|
-
value: _objectSpread$
|
|
2964
|
+
value: _objectSpread$U(_objectSpread$U({}, ctx), {}, {
|
|
2965
2965
|
currentTheme: ctx.appTheme,
|
|
2966
2966
|
currentThemeKey: ctx.appThemeKey,
|
|
2967
2967
|
theme: ctx.appTheme,
|
|
@@ -3073,11 +3073,11 @@ var LayoutContainer = function LayoutContainer(_ref) {
|
|
|
3073
3073
|
});
|
|
3074
3074
|
};
|
|
3075
3075
|
|
|
3076
|
-
function ownKeys$
|
|
3077
|
-
function _objectSpread$
|
|
3078
|
-
function _createForOfIteratorHelper$
|
|
3079
|
-
function _unsupportedIterableToArray$
|
|
3080
|
-
function _arrayLikeToArray$
|
|
3076
|
+
function ownKeys$T(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3077
|
+
function _objectSpread$T(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3078
|
+
function _createForOfIteratorHelper$t(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$t(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
3079
|
+
function _unsupportedIterableToArray$t(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$t(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$t(r, a) : void 0; } }
|
|
3080
|
+
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; }
|
|
3081
3081
|
/**
|
|
3082
3082
|
* Layout template definitions for the dashboard template picker.
|
|
3083
3083
|
*
|
|
@@ -3351,12 +3351,12 @@ function createLayoutFromTemplate(template) {
|
|
|
3351
3351
|
cols: template.cols,
|
|
3352
3352
|
gap: "gap-2"
|
|
3353
3353
|
};
|
|
3354
|
-
var _iterator = _createForOfIteratorHelper$
|
|
3354
|
+
var _iterator = _createForOfIteratorHelper$t(template.cells),
|
|
3355
3355
|
_step;
|
|
3356
3356
|
try {
|
|
3357
3357
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
3358
3358
|
var cell = _step.value;
|
|
3359
|
-
grid[cell.key] = _objectSpread$
|
|
3359
|
+
grid[cell.key] = _objectSpread$T({
|
|
3360
3360
|
component: null,
|
|
3361
3361
|
hide: cell.hide || false
|
|
3362
3362
|
}, cell.span ? {
|
|
@@ -4282,11 +4282,11 @@ var RegistryAuthModal = function RegistryAuthModal(_ref) {
|
|
|
4282
4282
|
});
|
|
4283
4283
|
};
|
|
4284
4284
|
|
|
4285
|
-
function _createForOfIteratorHelper$
|
|
4286
|
-
function _unsupportedIterableToArray$
|
|
4287
|
-
function _arrayLikeToArray$
|
|
4288
|
-
function ownKeys$
|
|
4289
|
-
function _objectSpread$
|
|
4285
|
+
function _createForOfIteratorHelper$s(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$s(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4286
|
+
function _unsupportedIterableToArray$s(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$s(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$s(r, a) : void 0; } }
|
|
4287
|
+
function _arrayLikeToArray$s(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4288
|
+
function ownKeys$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; }
|
|
4289
|
+
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; }
|
|
4290
4290
|
var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
4291
4291
|
var dashboardPackage = _ref.dashboardPackage,
|
|
4292
4292
|
appId = _ref.appId,
|
|
@@ -4402,7 +4402,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
4402
4402
|
setProgressWidgets(function (prev) {
|
|
4403
4403
|
var next = _toConsumableArray(prev);
|
|
4404
4404
|
if (data.index >= 0 && data.index < next.length) {
|
|
4405
|
-
next[data.index] = _objectSpread$
|
|
4405
|
+
next[data.index] = _objectSpread$S(_objectSpread$S({}, next[data.index]), {}, {
|
|
4406
4406
|
status: data.status,
|
|
4407
4407
|
error: data.error || null
|
|
4408
4408
|
});
|
|
@@ -4498,7 +4498,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
4498
4498
|
var raw = preview === null || preview === void 0 ? void 0 : preview.compatibility;
|
|
4499
4499
|
if (!raw) return raw;
|
|
4500
4500
|
var cMap = ComponentManager.componentMap();
|
|
4501
|
-
var augWidgets = _objectSpread$
|
|
4501
|
+
var augWidgets = _objectSpread$S({}, raw.widgets);
|
|
4502
4502
|
var fixedCount = 0;
|
|
4503
4503
|
var _loop = function _loop() {
|
|
4504
4504
|
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
@@ -4525,7 +4525,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
4525
4525
|
toInstall = 0,
|
|
4526
4526
|
unavailable = 0,
|
|
4527
4527
|
hasUnavailableRequired = false;
|
|
4528
|
-
var _iterator = _createForOfIteratorHelper$
|
|
4528
|
+
var _iterator = _createForOfIteratorHelper$s(widgetDeps),
|
|
4529
4529
|
_step;
|
|
4530
4530
|
try {
|
|
4531
4531
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -5081,8 +5081,8 @@ var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
|
|
|
5081
5081
|
});
|
|
5082
5082
|
};
|
|
5083
5083
|
|
|
5084
|
-
function ownKeys$
|
|
5085
|
-
function _objectSpread$
|
|
5084
|
+
function ownKeys$R(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5085
|
+
function _objectSpread$R(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5086
5086
|
var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
5087
5087
|
var open = _ref.open,
|
|
5088
5088
|
setIsOpen = _ref.setIsOpen,
|
|
@@ -5327,7 +5327,7 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
|
5327
5327
|
}
|
|
5328
5328
|
return _context2.abrupt("return");
|
|
5329
5329
|
case 6:
|
|
5330
|
-
updatedWorkspace = _objectSpread$
|
|
5330
|
+
updatedWorkspace = _objectSpread$R(_objectSpread$R({}, importedWorkspace), {}, {
|
|
5331
5331
|
name: dashboardName.trim(),
|
|
5332
5332
|
menuId: menuId,
|
|
5333
5333
|
themeKey: selectedThemeKey
|
|
@@ -6300,9 +6300,9 @@ function cleanIpcError(message) {
|
|
|
6300
6300
|
return match ? match[1] : message;
|
|
6301
6301
|
}
|
|
6302
6302
|
|
|
6303
|
-
function _createForOfIteratorHelper$
|
|
6304
|
-
function _unsupportedIterableToArray$
|
|
6305
|
-
function _arrayLikeToArray$
|
|
6303
|
+
function _createForOfIteratorHelper$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; } } }; }
|
|
6304
|
+
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; } }
|
|
6305
|
+
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; }
|
|
6306
6306
|
|
|
6307
6307
|
/**
|
|
6308
6308
|
* useRegistrySearch — shared hook for browsing and installing registry packages.
|
|
@@ -6416,13 +6416,13 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
6416
6416
|
return c.toLowerCase();
|
|
6417
6417
|
}));
|
|
6418
6418
|
widgets = [];
|
|
6419
|
-
_iterator = _createForOfIteratorHelper$
|
|
6419
|
+
_iterator = _createForOfIteratorHelper$r(pkgs);
|
|
6420
6420
|
try {
|
|
6421
6421
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
6422
6422
|
pkg = _step.value;
|
|
6423
6423
|
// Compute missing APIs for the entire package
|
|
6424
6424
|
allApiProviders = [];
|
|
6425
|
-
_iterator2 = _createForOfIteratorHelper$
|
|
6425
|
+
_iterator2 = _createForOfIteratorHelper$r(pkg.providers || []);
|
|
6426
6426
|
try {
|
|
6427
6427
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
6428
6428
|
p = _step2.value;
|
|
@@ -6435,11 +6435,11 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
6435
6435
|
} finally {
|
|
6436
6436
|
_iterator2.f();
|
|
6437
6437
|
}
|
|
6438
|
-
_iterator3 = _createForOfIteratorHelper$
|
|
6438
|
+
_iterator3 = _createForOfIteratorHelper$r(pkg.widgets || []);
|
|
6439
6439
|
try {
|
|
6440
6440
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
6441
6441
|
w = _step3.value;
|
|
6442
|
-
_iterator5 = _createForOfIteratorHelper$
|
|
6442
|
+
_iterator5 = _createForOfIteratorHelper$r(w.providers || []);
|
|
6443
6443
|
try {
|
|
6444
6444
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
6445
6445
|
_p = _step5.value;
|
|
@@ -6461,7 +6461,7 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
6461
6461
|
missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
|
|
6462
6462
|
return !capSet.has(api.toLowerCase());
|
|
6463
6463
|
});
|
|
6464
|
-
_iterator4 = _createForOfIteratorHelper$
|
|
6464
|
+
_iterator4 = _createForOfIteratorHelper$r(pkg.widgets || []);
|
|
6465
6465
|
try {
|
|
6466
6466
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
6467
6467
|
widget = _step4.value;
|
|
@@ -7082,11 +7082,11 @@ function applyFilters(items, filters, mode) {
|
|
|
7082
7082
|
});
|
|
7083
7083
|
}
|
|
7084
7084
|
|
|
7085
|
-
function _createForOfIteratorHelper$
|
|
7086
|
-
function _unsupportedIterableToArray$
|
|
7087
|
-
function _arrayLikeToArray$
|
|
7088
|
-
function ownKeys$
|
|
7089
|
-
function _objectSpread$
|
|
7085
|
+
function _createForOfIteratorHelper$q(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$q(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
7086
|
+
function _unsupportedIterableToArray$q(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$q(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$q(r, a) : void 0; } }
|
|
7087
|
+
function _arrayLikeToArray$q(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
7088
|
+
function ownKeys$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; }
|
|
7089
|
+
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; }
|
|
7090
7090
|
var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
|
|
7091
7091
|
var _state$selectedDashbo, _state$selectedDashbo2;
|
|
7092
7092
|
var state = _ref.state,
|
|
@@ -7256,7 +7256,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
|
|
|
7256
7256
|
_context2.next = 7;
|
|
7257
7257
|
break;
|
|
7258
7258
|
}
|
|
7259
|
-
updatedWorkspace = _objectSpread$
|
|
7259
|
+
updatedWorkspace = _objectSpread$Q(_objectSpread$Q({}, installResult.workspace), {}, {
|
|
7260
7260
|
name: name.trim(),
|
|
7261
7261
|
menuId: menuId || 1,
|
|
7262
7262
|
themeKey: theme
|
|
@@ -7308,7 +7308,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
|
|
|
7308
7308
|
installedNames = new Set(installedList.map(function (w) {
|
|
7309
7309
|
return w.name;
|
|
7310
7310
|
}));
|
|
7311
|
-
_iterator = _createForOfIteratorHelper$
|
|
7311
|
+
_iterator = _createForOfIteratorHelper$q(state.selectedWidgets);
|
|
7312
7312
|
_context2.prev = 13;
|
|
7313
7313
|
_iterator.s();
|
|
7314
7314
|
case 14:
|
|
@@ -8011,8 +8011,8 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
|
|
|
8011
8011
|
});
|
|
8012
8012
|
};
|
|
8013
8013
|
|
|
8014
|
-
function ownKeys$
|
|
8015
|
-
function _objectSpread$
|
|
8014
|
+
function ownKeys$P(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8015
|
+
function _objectSpread$P(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8016
8016
|
var TOTAL_STEPS = 2; // Steps 0-1: Discover, Customize
|
|
8017
8017
|
|
|
8018
8018
|
var initialState = {
|
|
@@ -8038,20 +8038,20 @@ var initialState = {
|
|
|
8038
8038
|
function wizardReducer(state, action) {
|
|
8039
8039
|
switch (action.type) {
|
|
8040
8040
|
case "SET_STEP":
|
|
8041
|
-
return _objectSpread$
|
|
8041
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8042
8042
|
step: action.payload
|
|
8043
8043
|
});
|
|
8044
8044
|
case "SET_FILTERS":
|
|
8045
|
-
return _objectSpread$
|
|
8046
|
-
filters: _objectSpread$
|
|
8045
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8046
|
+
filters: _objectSpread$P(_objectSpread$P({}, state.filters), action.payload)
|
|
8047
8047
|
});
|
|
8048
8048
|
case "TOGGLE_FILTER_CATEGORY":
|
|
8049
8049
|
{
|
|
8050
8050
|
var categories = state.filters.categories.includes(action.payload) ? state.filters.categories.filter(function (c) {
|
|
8051
8051
|
return c !== action.payload;
|
|
8052
8052
|
}) : [].concat(_toConsumableArray(state.filters.categories), [action.payload]);
|
|
8053
|
-
return _objectSpread$
|
|
8054
|
-
filters: _objectSpread$
|
|
8053
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8054
|
+
filters: _objectSpread$P(_objectSpread$P({}, state.filters), {}, {
|
|
8055
8055
|
categories: categories
|
|
8056
8056
|
})
|
|
8057
8057
|
});
|
|
@@ -8061,15 +8061,15 @@ function wizardReducer(state, action) {
|
|
|
8061
8061
|
var providers = state.filters.providers.includes(action.payload) ? state.filters.providers.filter(function (p) {
|
|
8062
8062
|
return p !== action.payload;
|
|
8063
8063
|
}) : [].concat(_toConsumableArray(state.filters.providers), [action.payload]);
|
|
8064
|
-
return _objectSpread$
|
|
8065
|
-
filters: _objectSpread$
|
|
8064
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8065
|
+
filters: _objectSpread$P(_objectSpread$P({}, state.filters), {}, {
|
|
8066
8066
|
providers: providers
|
|
8067
8067
|
})
|
|
8068
8068
|
});
|
|
8069
8069
|
}
|
|
8070
8070
|
case "SET_SEARCH_QUERY":
|
|
8071
|
-
return _objectSpread$
|
|
8072
|
-
filters: _objectSpread$
|
|
8071
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8072
|
+
filters: _objectSpread$P(_objectSpread$P({}, state.filters), {}, {
|
|
8073
8073
|
query: action.payload
|
|
8074
8074
|
})
|
|
8075
8075
|
});
|
|
@@ -8079,7 +8079,7 @@ function wizardReducer(state, action) {
|
|
|
8079
8079
|
var widgetOrder = action.payload.map(function (w) {
|
|
8080
8080
|
return w.name || w.key;
|
|
8081
8081
|
});
|
|
8082
|
-
return _objectSpread$
|
|
8082
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8083
8083
|
selectedWidgets: action.payload,
|
|
8084
8084
|
layout: {
|
|
8085
8085
|
templateKey: templateKey,
|
|
@@ -8099,7 +8099,7 @@ function wizardReducer(state, action) {
|
|
|
8099
8099
|
var toggleWidgetOrder = selectedWidgets.map(function (w) {
|
|
8100
8100
|
return w.name || w.key;
|
|
8101
8101
|
});
|
|
8102
|
-
return _objectSpread$
|
|
8102
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8103
8103
|
selectedWidgets: selectedWidgets,
|
|
8104
8104
|
layout: {
|
|
8105
8105
|
templateKey: toggleTemplateKey,
|
|
@@ -8108,29 +8108,29 @@ function wizardReducer(state, action) {
|
|
|
8108
8108
|
});
|
|
8109
8109
|
}
|
|
8110
8110
|
case "SET_SELECTED_DASHBOARD":
|
|
8111
|
-
return _objectSpread$
|
|
8111
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8112
8112
|
selectedDashboard: action.payload
|
|
8113
8113
|
});
|
|
8114
8114
|
case "SET_PATH":
|
|
8115
|
-
return _objectSpread$
|
|
8115
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8116
8116
|
path: action.payload
|
|
8117
8117
|
});
|
|
8118
8118
|
case "SET_LAYOUT":
|
|
8119
|
-
return _objectSpread$
|
|
8119
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8120
8120
|
layout: action.payload
|
|
8121
8121
|
});
|
|
8122
8122
|
case "REORDER_WIDGETS":
|
|
8123
|
-
return _objectSpread$
|
|
8124
|
-
layout: _objectSpread$
|
|
8123
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8124
|
+
layout: _objectSpread$P(_objectSpread$P({}, state.layout), {}, {
|
|
8125
8125
|
widgetOrder: action.payload
|
|
8126
8126
|
})
|
|
8127
8127
|
});
|
|
8128
8128
|
case "SET_CUSTOMIZATION":
|
|
8129
|
-
return _objectSpread$
|
|
8130
|
-
customization: _objectSpread$
|
|
8129
|
+
return _objectSpread$P(_objectSpread$P({}, state), {}, {
|
|
8130
|
+
customization: _objectSpread$P(_objectSpread$P({}, state.customization), action.payload)
|
|
8131
8131
|
});
|
|
8132
8132
|
case "RESET":
|
|
8133
|
-
return _objectSpread$
|
|
8133
|
+
return _objectSpread$P({}, initialState);
|
|
8134
8134
|
default:
|
|
8135
8135
|
return state;
|
|
8136
8136
|
}
|
|
@@ -12782,8 +12782,8 @@ var deepEqual = function deepEqual(a, b, opts) {
|
|
|
12782
12782
|
|
|
12783
12783
|
var deepEqual$1 = /*@__PURE__*/getDefaultExportFromCjs(deepEqual);
|
|
12784
12784
|
|
|
12785
|
-
function ownKeys$
|
|
12786
|
-
function _objectSpread$
|
|
12785
|
+
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; }
|
|
12786
|
+
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; }
|
|
12787
12787
|
var PanelEditItem = function PanelEditItem(_ref) {
|
|
12788
12788
|
var _ComponentManager$get;
|
|
12789
12789
|
var workspace = _ref.workspace,
|
|
@@ -12843,7 +12843,7 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
12843
12843
|
var uuid = newItem.uuid || newItem.uuidString;
|
|
12844
12844
|
if (uuid) {
|
|
12845
12845
|
workspaceTemp.selectedProviders = workspaceTemp.selectedProviders || {};
|
|
12846
|
-
workspaceTemp.selectedProviders[uuid] = _objectSpread$
|
|
12846
|
+
workspaceTemp.selectedProviders[uuid] = _objectSpread$O(_objectSpread$O({}, workspaceTemp.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
|
|
12847
12847
|
}
|
|
12848
12848
|
onUpdate(newItem, workspaceTemp);
|
|
12849
12849
|
forceUpdate();
|
|
@@ -12972,7 +12972,7 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
12972
12972
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
12973
12973
|
name = _ref5[0],
|
|
12974
12974
|
p = _ref5[1];
|
|
12975
|
-
return _objectSpread$
|
|
12975
|
+
return _objectSpread$O({
|
|
12976
12976
|
name: name
|
|
12977
12977
|
}, p);
|
|
12978
12978
|
});
|
|
@@ -13014,11 +13014,11 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
13014
13014
|
};
|
|
13015
13015
|
|
|
13016
13016
|
var _excluded$6 = ["rows", "cols"];
|
|
13017
|
-
function _createForOfIteratorHelper$
|
|
13018
|
-
function _unsupportedIterableToArray$
|
|
13019
|
-
function _arrayLikeToArray$
|
|
13020
|
-
function ownKeys$
|
|
13021
|
-
function _objectSpread$
|
|
13017
|
+
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; } } }; }
|
|
13018
|
+
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; } }
|
|
13019
|
+
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; }
|
|
13020
|
+
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; }
|
|
13021
|
+
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; }
|
|
13022
13022
|
var defaultGrid = {
|
|
13023
13023
|
rows: 1,
|
|
13024
13024
|
cols: 1,
|
|
@@ -13039,7 +13039,7 @@ function GridEditor(_ref) {
|
|
|
13039
13039
|
setGrid = _useState2[1];
|
|
13040
13040
|
var addRow = function addRow() {
|
|
13041
13041
|
var newRow = grid.rows;
|
|
13042
|
-
var newGrid = _objectSpread$
|
|
13042
|
+
var newGrid = _objectSpread$N(_objectSpread$N({}, grid), {}, {
|
|
13043
13043
|
rows: grid.rows + 1
|
|
13044
13044
|
});
|
|
13045
13045
|
for (var col = 0; col < grid.cols; col++) {
|
|
@@ -13054,7 +13054,7 @@ function GridEditor(_ref) {
|
|
|
13054
13054
|
};
|
|
13055
13055
|
var addColumn = function addColumn() {
|
|
13056
13056
|
var newCol = grid.cols;
|
|
13057
|
-
var newGrid = _objectSpread$
|
|
13057
|
+
var newGrid = _objectSpread$N(_objectSpread$N({}, grid), {}, {
|
|
13058
13058
|
cols: grid.cols + 1
|
|
13059
13059
|
});
|
|
13060
13060
|
for (var row = 0; row < grid.rows; row++) {
|
|
@@ -13087,8 +13087,8 @@ function GridEditor(_ref) {
|
|
|
13087
13087
|
});
|
|
13088
13088
|
}
|
|
13089
13089
|
if (grid[nextKey]) {
|
|
13090
|
-
var newGrid = _objectSpread$
|
|
13091
|
-
newGrid[currentKey] = _objectSpread$
|
|
13090
|
+
var newGrid = _objectSpread$N({}, grid);
|
|
13091
|
+
newGrid[currentKey] = _objectSpread$N(_objectSpread$N({}, newGrid[currentKey]), {}, {
|
|
13092
13092
|
colSpan: newGrid[currentKey].colSpan + 1
|
|
13093
13093
|
});
|
|
13094
13094
|
delete newGrid[nextKey];
|
|
@@ -13101,8 +13101,8 @@ function GridEditor(_ref) {
|
|
|
13101
13101
|
var currentKey = "".concat(row, ".").concat(col);
|
|
13102
13102
|
var belowKey = "".concat(row + 1, ".").concat(col);
|
|
13103
13103
|
if (grid[belowKey]) {
|
|
13104
|
-
var newGrid = _objectSpread$
|
|
13105
|
-
newGrid[currentKey] = _objectSpread$
|
|
13104
|
+
var newGrid = _objectSpread$N({}, grid);
|
|
13105
|
+
newGrid[currentKey] = _objectSpread$N(_objectSpread$N({}, newGrid[currentKey]), {}, {
|
|
13106
13106
|
rowSpan: newGrid[currentKey].rowSpan + 1
|
|
13107
13107
|
});
|
|
13108
13108
|
delete newGrid[belowKey];
|
|
@@ -13119,7 +13119,7 @@ function GridEditor(_ref) {
|
|
|
13119
13119
|
var splitCell = function splitCell(row, col) {
|
|
13120
13120
|
var key = "".concat(row, ".").concat(col);
|
|
13121
13121
|
var cell = grid[key];
|
|
13122
|
-
var newGrid = _objectSpread$
|
|
13122
|
+
var newGrid = _objectSpread$N({}, grid);
|
|
13123
13123
|
|
|
13124
13124
|
// we have to check the colspan, and since the colspan is greater than 1
|
|
13125
13125
|
// Only handle horizontal split if colSpan > 1
|
|
@@ -13135,13 +13135,13 @@ function GridEditor(_ref) {
|
|
|
13135
13135
|
var oldKey = "".concat(row, ".").concat(c);
|
|
13136
13136
|
var newKey = "".concat(row, ".").concat(c + 1);
|
|
13137
13137
|
if (newGrid[oldKey]) {
|
|
13138
|
-
newGrid[newKey] = _objectSpread$
|
|
13138
|
+
newGrid[newKey] = _objectSpread$N({}, newGrid[oldKey]);
|
|
13139
13139
|
delete newGrid[oldKey];
|
|
13140
13140
|
}
|
|
13141
13141
|
}
|
|
13142
13142
|
|
|
13143
13143
|
// Update the original cell's colSpan
|
|
13144
|
-
newGrid[key] = _objectSpread$
|
|
13144
|
+
newGrid[key] = _objectSpread$N(_objectSpread$N({}, cell), {}, {
|
|
13145
13145
|
colSpan: cell.colSpan - 1
|
|
13146
13146
|
});
|
|
13147
13147
|
|
|
@@ -13153,7 +13153,7 @@ function GridEditor(_ref) {
|
|
|
13153
13153
|
};
|
|
13154
13154
|
}
|
|
13155
13155
|
if (cell.rowSpan > 1) {
|
|
13156
|
-
newGrid[key] = _objectSpread$
|
|
13156
|
+
newGrid[key] = _objectSpread$N(_objectSpread$N({}, newGrid[key]), {}, {
|
|
13157
13157
|
rowSpan: cell.rowSpan - 1
|
|
13158
13158
|
});
|
|
13159
13159
|
newGrid["".concat(row + 1, ".").concat(col)] = {
|
|
@@ -13169,7 +13169,7 @@ function GridEditor(_ref) {
|
|
|
13169
13169
|
function sortObjectByKeys(obj) {
|
|
13170
13170
|
var sortedKeys = Object.keys(obj).sort();
|
|
13171
13171
|
var sortedObj = {};
|
|
13172
|
-
var _iterator = _createForOfIteratorHelper$
|
|
13172
|
+
var _iterator = _createForOfIteratorHelper$p(sortedKeys),
|
|
13173
13173
|
_step;
|
|
13174
13174
|
try {
|
|
13175
13175
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -13272,7 +13272,7 @@ function GridEditor(_ref) {
|
|
|
13272
13272
|
var fromKey = "".concat(from.row, ".").concat(from.col);
|
|
13273
13273
|
var toKey = "".concat(to.row, ".").concat(to.col);
|
|
13274
13274
|
if (fromKey === toKey) return;
|
|
13275
|
-
var newGrid = _objectSpread$
|
|
13275
|
+
var newGrid = _objectSpread$N({}, grid);
|
|
13276
13276
|
|
|
13277
13277
|
// Swap the cells
|
|
13278
13278
|
var temp = newGrid[fromKey];
|
|
@@ -13298,7 +13298,7 @@ function GridEditor(_ref) {
|
|
|
13298
13298
|
// console.log("Grid updated:", sequencedGrid);
|
|
13299
13299
|
}
|
|
13300
13300
|
function resetGridLayout() {
|
|
13301
|
-
var newGrid = _objectSpread$
|
|
13301
|
+
var newGrid = _objectSpread$N({}, defaultGrid);
|
|
13302
13302
|
setGrid(newGrid);
|
|
13303
13303
|
onUpdate(newGrid);
|
|
13304
13304
|
}
|
|
@@ -13576,8 +13576,8 @@ var PanelEditItemGrid = function PanelEditItemGrid(_ref) {
|
|
|
13576
13576
|
});
|
|
13577
13577
|
};
|
|
13578
13578
|
|
|
13579
|
-
function ownKeys$
|
|
13580
|
-
function _objectSpread$
|
|
13579
|
+
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; }
|
|
13580
|
+
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; }
|
|
13581
13581
|
var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
|
|
13582
13582
|
var item = _ref.item;
|
|
13583
13583
|
_ref.workspace;
|
|
@@ -13600,7 +13600,7 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
|
|
|
13600
13600
|
}, [widgetUuid, notificationDefs.length]);
|
|
13601
13601
|
function handleNotifToggle(typeKey, value) {
|
|
13602
13602
|
var _window$mainApi2;
|
|
13603
|
-
var updated = _objectSpread$
|
|
13603
|
+
var updated = _objectSpread$M(_objectSpread$M({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
|
|
13604
13604
|
setNotifPrefs(updated);
|
|
13605
13605
|
if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.notifications) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.setPreferences && widgetUuid) {
|
|
13606
13606
|
window.mainApi.notifications.setPreferences(widgetUuid, _defineProperty({}, typeKey, value));
|
|
@@ -13642,11 +13642,11 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
|
|
|
13642
13642
|
});
|
|
13643
13643
|
};
|
|
13644
13644
|
|
|
13645
|
-
function _createForOfIteratorHelper$
|
|
13646
|
-
function _unsupportedIterableToArray$
|
|
13647
|
-
function _arrayLikeToArray$
|
|
13648
|
-
function ownKeys$
|
|
13649
|
-
function _objectSpread$
|
|
13645
|
+
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; } } }; }
|
|
13646
|
+
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; } }
|
|
13647
|
+
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; }
|
|
13648
|
+
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; }
|
|
13649
|
+
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; }
|
|
13650
13650
|
var DAYS = [{
|
|
13651
13651
|
key: "mon",
|
|
13652
13652
|
label: "Mon"
|
|
@@ -13747,7 +13747,7 @@ function TaskScheduleEditor(_ref) {
|
|
|
13747
13747
|
var _window$mainApi;
|
|
13748
13748
|
var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
13749
13749
|
if (!((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.scheduler) !== null && _window$mainApi !== void 0 && _window$mainApi.registerTask)) return;
|
|
13750
|
-
var payload = _objectSpread$
|
|
13750
|
+
var payload = _objectSpread$L({
|
|
13751
13751
|
widgetId: widgetId,
|
|
13752
13752
|
widgetName: widgetName,
|
|
13753
13753
|
workspaceId: workspaceId || "",
|
|
@@ -13973,7 +13973,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
|
|
|
13973
13973
|
setIsLoading(true);
|
|
13974
13974
|
window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
|
|
13975
13975
|
var stateMap = {};
|
|
13976
|
-
var _iterator = _createForOfIteratorHelper$
|
|
13976
|
+
var _iterator = _createForOfIteratorHelper$o(tasks || []),
|
|
13977
13977
|
_step;
|
|
13978
13978
|
try {
|
|
13979
13979
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -16032,8 +16032,8 @@ var WidgetIcon = function WidgetIcon(_ref) {
|
|
|
16032
16032
|
});
|
|
16033
16033
|
};
|
|
16034
16034
|
|
|
16035
|
-
function ownKeys$
|
|
16036
|
-
function _objectSpread$
|
|
16035
|
+
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; }
|
|
16036
|
+
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; }
|
|
16037
16037
|
var ProviderForm = function ProviderForm(_ref) {
|
|
16038
16038
|
var credentialSchema = _ref.credentialSchema,
|
|
16039
16039
|
_ref$initialValues = _ref.initialValues,
|
|
@@ -16078,14 +16078,14 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16078
16078
|
var oldKey = f.key;
|
|
16079
16079
|
if (oldKey && formData[oldKey] !== undefined) {
|
|
16080
16080
|
setFormData(function (fd) {
|
|
16081
|
-
var updated = _objectSpread$
|
|
16081
|
+
var updated = _objectSpread$K({}, fd);
|
|
16082
16082
|
var val = updated[oldKey];
|
|
16083
16083
|
delete updated[oldKey];
|
|
16084
16084
|
if (newKey.trim()) updated[newKey] = val;
|
|
16085
16085
|
return updated;
|
|
16086
16086
|
});
|
|
16087
16087
|
}
|
|
16088
|
-
return _objectSpread$
|
|
16088
|
+
return _objectSpread$K(_objectSpread$K({}, f), {}, {
|
|
16089
16089
|
key: newKey
|
|
16090
16090
|
});
|
|
16091
16091
|
});
|
|
@@ -16097,14 +16097,14 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16097
16097
|
});
|
|
16098
16098
|
if (field !== null && field !== void 0 && field.key) {
|
|
16099
16099
|
setFormData(function (prev) {
|
|
16100
|
-
return _objectSpread$
|
|
16100
|
+
return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, field.key, value));
|
|
16101
16101
|
});
|
|
16102
16102
|
}
|
|
16103
16103
|
};
|
|
16104
16104
|
var handleDynamicSecretToggle = function handleDynamicSecretToggle(id) {
|
|
16105
16105
|
setDynamicFields(function (prev) {
|
|
16106
16106
|
return prev.map(function (f) {
|
|
16107
|
-
return f.id === id ? _objectSpread$
|
|
16107
|
+
return f.id === id ? _objectSpread$K(_objectSpread$K({}, f), {}, {
|
|
16108
16108
|
secret: !f.secret
|
|
16109
16109
|
}) : f;
|
|
16110
16110
|
});
|
|
@@ -16126,7 +16126,7 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16126
16126
|
});
|
|
16127
16127
|
if (field !== null && field !== void 0 && field.key) {
|
|
16128
16128
|
setFormData(function (prev) {
|
|
16129
|
-
var updated = _objectSpread$
|
|
16129
|
+
var updated = _objectSpread$K({}, prev);
|
|
16130
16130
|
delete updated[field.key];
|
|
16131
16131
|
return updated;
|
|
16132
16132
|
});
|
|
@@ -16168,13 +16168,13 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16168
16168
|
*/
|
|
16169
16169
|
var handleInputChange = function handleInputChange(fieldName, value) {
|
|
16170
16170
|
setFormData(function (prev) {
|
|
16171
|
-
return _objectSpread$
|
|
16171
|
+
return _objectSpread$K(_objectSpread$K({}, prev), {}, _defineProperty({}, fieldName, value));
|
|
16172
16172
|
});
|
|
16173
16173
|
|
|
16174
16174
|
// Clear error for this field if it was filled
|
|
16175
16175
|
if (errors[fieldName] && value !== null && value !== void 0 && value.trim()) {
|
|
16176
16176
|
setErrors(function (prev) {
|
|
16177
|
-
var newErrors = _objectSpread$
|
|
16177
|
+
var newErrors = _objectSpread$K({}, prev);
|
|
16178
16178
|
delete newErrors[fieldName];
|
|
16179
16179
|
return newErrors;
|
|
16180
16180
|
});
|
|
@@ -16212,7 +16212,7 @@ var ProviderForm = function ProviderForm(_ref) {
|
|
|
16212
16212
|
// Clear error if filled
|
|
16213
16213
|
if (errors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
16214
16214
|
setErrors(function (prev) {
|
|
16215
|
-
var newErrors = _objectSpread$
|
|
16215
|
+
var newErrors = _objectSpread$K({}, prev);
|
|
16216
16216
|
delete newErrors.providerName;
|
|
16217
16217
|
return newErrors;
|
|
16218
16218
|
});
|
|
@@ -16449,8 +16449,8 @@ var ToolSelector$1 = function ToolSelector(_ref) {
|
|
|
16449
16449
|
});
|
|
16450
16450
|
};
|
|
16451
16451
|
|
|
16452
|
-
function ownKeys$
|
|
16453
|
-
function _objectSpread$
|
|
16452
|
+
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; }
|
|
16453
|
+
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; }
|
|
16454
16454
|
/**
|
|
16455
16455
|
* Shared MCP utility functions.
|
|
16456
16456
|
*
|
|
@@ -16578,7 +16578,7 @@ function buildMcpConfigFromOverrides(baseMcpConfig, envMappingRows, headerRows)
|
|
|
16578
16578
|
headerTemplate[name] = value;
|
|
16579
16579
|
}
|
|
16580
16580
|
});
|
|
16581
|
-
var config = _objectSpread$
|
|
16581
|
+
var config = _objectSpread$J({}, baseMcpConfig);
|
|
16582
16582
|
if (Object.keys(headerTemplate).length > 0) {
|
|
16583
16583
|
config.headerTemplate = headerTemplate;
|
|
16584
16584
|
} else {
|
|
@@ -16596,7 +16596,7 @@ function buildMcpConfigFromOverrides(baseMcpConfig, envMappingRows, headerRows)
|
|
|
16596
16596
|
envMapping[env] = cred;
|
|
16597
16597
|
}
|
|
16598
16598
|
});
|
|
16599
|
-
return _objectSpread$
|
|
16599
|
+
return _objectSpread$J(_objectSpread$J({}, baseMcpConfig), {}, {
|
|
16600
16600
|
envMapping: envMapping
|
|
16601
16601
|
});
|
|
16602
16602
|
}
|
|
@@ -16837,11 +16837,11 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
|
|
|
16837
16837
|
});
|
|
16838
16838
|
};
|
|
16839
16839
|
|
|
16840
|
-
function _createForOfIteratorHelper$
|
|
16841
|
-
function _unsupportedIterableToArray$
|
|
16842
|
-
function _arrayLikeToArray$
|
|
16843
|
-
function ownKeys$
|
|
16844
|
-
function _objectSpread$
|
|
16840
|
+
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; } } }; }
|
|
16841
|
+
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; } }
|
|
16842
|
+
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; }
|
|
16843
|
+
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; }
|
|
16844
|
+
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; }
|
|
16845
16845
|
var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
16846
16846
|
var isOpen = _ref.isOpen,
|
|
16847
16847
|
onClose = _ref.onClose,
|
|
@@ -17036,7 +17036,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17036
17036
|
.map(function (entry) {
|
|
17037
17037
|
var widget = allWidgets[entry.widgetKey];
|
|
17038
17038
|
if (!widget) return null; // Widget no longer exists
|
|
17039
|
-
return _objectSpread$
|
|
17039
|
+
return _objectSpread$I(_objectSpread$I({
|
|
17040
17040
|
key: entry.widgetKey
|
|
17041
17041
|
}, widget), {}, {
|
|
17042
17042
|
savedProviders: entry.providers || {},
|
|
@@ -17124,11 +17124,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17124
17124
|
|
|
17125
17125
|
// Flatten all widgets from all packages for the widget list
|
|
17126
17126
|
flatWidgets = [];
|
|
17127
|
-
_iterator = _createForOfIteratorHelper$
|
|
17127
|
+
_iterator = _createForOfIteratorHelper$n(result.packages || []);
|
|
17128
17128
|
try {
|
|
17129
17129
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
17130
17130
|
pkg = _step.value;
|
|
17131
|
-
_iterator2 = _createForOfIteratorHelper$
|
|
17131
|
+
_iterator2 = _createForOfIteratorHelper$n(pkg.widgets || []);
|
|
17132
17132
|
try {
|
|
17133
17133
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
17134
17134
|
widget = _step2.value;
|
|
@@ -17187,7 +17187,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17187
17187
|
// Get widgets from ComponentManager
|
|
17188
17188
|
var allWidgets = ComponentManager.map();
|
|
17189
17189
|
var widgetList = Object.keys(allWidgets).map(function (key) {
|
|
17190
|
-
return _objectSpread$
|
|
17190
|
+
return _objectSpread$I({
|
|
17191
17191
|
key: key
|
|
17192
17192
|
}, allWidgets[key]);
|
|
17193
17193
|
}).filter(function (widget) {
|
|
@@ -17418,7 +17418,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17418
17418
|
setInlineCreateType(null);
|
|
17419
17419
|
setInlineCreateSchema({});
|
|
17420
17420
|
setInlineCreateError(null);
|
|
17421
|
-
setSelectedProviders(_objectSpread$
|
|
17421
|
+
setSelectedProviders(_objectSpread$I(_objectSpread$I({}, selectedProviders), {}, _defineProperty({}, providerType, providerName)));
|
|
17422
17422
|
}
|
|
17423
17423
|
};
|
|
17424
17424
|
var handleInlineProviderSubmit = function handleInlineProviderSubmit(formData) {
|
|
@@ -17439,7 +17439,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17439
17439
|
|
|
17440
17440
|
// Auto-select the newly created provider
|
|
17441
17441
|
setSelectedProviders(function (prev) {
|
|
17442
|
-
return _objectSpread$
|
|
17442
|
+
return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, providerType, providerName));
|
|
17443
17443
|
});
|
|
17444
17444
|
|
|
17445
17445
|
// Collapse the inline form
|
|
@@ -17493,11 +17493,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17493
17493
|
};
|
|
17494
17494
|
var inlineHandleCredentialChange = function inlineHandleCredentialChange(fieldName, value) {
|
|
17495
17495
|
setInlineCredentialData(function (prev) {
|
|
17496
|
-
return _objectSpread$
|
|
17496
|
+
return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, fieldName, value));
|
|
17497
17497
|
});
|
|
17498
17498
|
if (inlineFormErrors[fieldName] && value !== null && value !== void 0 && value.trim()) {
|
|
17499
17499
|
setInlineFormErrors(function (prev) {
|
|
17500
|
-
var next = _objectSpread$
|
|
17500
|
+
var next = _objectSpread$I({}, prev);
|
|
17501
17501
|
delete next[fieldName];
|
|
17502
17502
|
return next;
|
|
17503
17503
|
});
|
|
@@ -17590,7 +17590,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17590
17590
|
refreshProviders();
|
|
17591
17591
|
}
|
|
17592
17592
|
setSelectedProviders(function (prev) {
|
|
17593
|
-
return _objectSpread$
|
|
17593
|
+
return _objectSpread$I(_objectSpread$I({}, prev), {}, _defineProperty({}, providerType, providerName));
|
|
17594
17594
|
});
|
|
17595
17595
|
|
|
17596
17596
|
// Reset stepper state
|
|
@@ -17611,7 +17611,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17611
17611
|
});
|
|
17612
17612
|
};
|
|
17613
17613
|
var handleConfigChange = function handleConfigChange(key, value) {
|
|
17614
|
-
setUserConfigValues(_objectSpread$
|
|
17614
|
+
setUserConfigValues(_objectSpread$I(_objectSpread$I({}, userConfigValues), {}, _defineProperty({}, key, value)));
|
|
17615
17615
|
};
|
|
17616
17616
|
|
|
17617
17617
|
// Install a package from the registry
|
|
@@ -17677,7 +17677,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17677
17677
|
// Mark items as installed
|
|
17678
17678
|
setProgressWidgets(function (prev) {
|
|
17679
17679
|
return prev.map(function (w) {
|
|
17680
|
-
return _objectSpread$
|
|
17680
|
+
return _objectSpread$I(_objectSpread$I({}, w), {}, {
|
|
17681
17681
|
status: "installed"
|
|
17682
17682
|
});
|
|
17683
17683
|
});
|
|
@@ -17696,7 +17696,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17696
17696
|
setInstallError(msg);
|
|
17697
17697
|
setProgressWidgets(function (prev) {
|
|
17698
17698
|
return prev.map(function (w) {
|
|
17699
|
-
return _objectSpread$
|
|
17699
|
+
return _objectSpread$I(_objectSpread$I({}, w), {}, {
|
|
17700
17700
|
status: "failed",
|
|
17701
17701
|
error: msg
|
|
17702
17702
|
});
|
|
@@ -17770,7 +17770,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
17770
17770
|
|
|
17771
17771
|
// Phase 3: Save to recent widgets
|
|
17772
17772
|
saveToRecent(selectedWidget, selectedProviders, userConfigValues);
|
|
17773
|
-
onSelectWidget(_objectSpread$
|
|
17773
|
+
onSelectWidget(_objectSpread$I(_objectSpread$I({}, selectedWidget), {}, {
|
|
17774
17774
|
selectedProviders: selectedProviders,
|
|
17775
17775
|
// Pass to parent
|
|
17776
17776
|
userConfigValues: userConfigValues // Pass to parent
|
|
@@ -18407,7 +18407,7 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
18407
18407
|
setInlineProviderName(value);
|
|
18408
18408
|
if (inlineFormErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
18409
18409
|
setInlineFormErrors(function (prev) {
|
|
18410
|
-
var next = _objectSpread$
|
|
18410
|
+
var next = _objectSpread$I({}, prev);
|
|
18411
18411
|
delete next.providerName;
|
|
18412
18412
|
return next;
|
|
18413
18413
|
});
|
|
@@ -18766,9 +18766,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
|
|
|
18766
18766
|
});
|
|
18767
18767
|
};
|
|
18768
18768
|
|
|
18769
|
-
function _createForOfIteratorHelper$
|
|
18770
|
-
function _unsupportedIterableToArray$
|
|
18771
|
-
function _arrayLikeToArray$
|
|
18769
|
+
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; } } }; }
|
|
18770
|
+
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; } }
|
|
18771
|
+
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; }
|
|
18772
18772
|
var WidgetCardHeader = function WidgetCardHeader(_ref) {
|
|
18773
18773
|
var item = _ref.item,
|
|
18774
18774
|
widget = _ref.widget,
|
|
@@ -18813,7 +18813,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
|
|
|
18813
18813
|
var el = headerRef.current;
|
|
18814
18814
|
if (!el) return;
|
|
18815
18815
|
var observer = new ResizeObserver(function (entries) {
|
|
18816
|
-
var _iterator = _createForOfIteratorHelper$
|
|
18816
|
+
var _iterator = _createForOfIteratorHelper$m(entries),
|
|
18817
18817
|
_step;
|
|
18818
18818
|
try {
|
|
18819
18819
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -19205,9 +19205,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
|
|
|
19205
19205
|
};
|
|
19206
19206
|
};
|
|
19207
19207
|
|
|
19208
|
-
function _createForOfIteratorHelper$
|
|
19209
|
-
function _unsupportedIterableToArray$
|
|
19210
|
-
function _arrayLikeToArray$
|
|
19208
|
+
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; } } }; }
|
|
19209
|
+
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; } }
|
|
19210
|
+
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; }
|
|
19211
19211
|
function formatCountdown(ms) {
|
|
19212
19212
|
if (ms == null || ms < 0) return "--";
|
|
19213
19213
|
if (ms < 1000) return "< 1s";
|
|
@@ -19324,7 +19324,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
|
|
|
19324
19324
|
|
|
19325
19325
|
// Find soonest countdown among enabled tasks
|
|
19326
19326
|
var soonestMs = null;
|
|
19327
|
-
var _iterator = _createForOfIteratorHelper$
|
|
19327
|
+
var _iterator = _createForOfIteratorHelper$l(enabledTasks),
|
|
19328
19328
|
_step;
|
|
19329
19329
|
try {
|
|
19330
19330
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -19777,8 +19777,8 @@ var ProviderSelector = function ProviderSelector(_ref) {
|
|
|
19777
19777
|
});
|
|
19778
19778
|
};
|
|
19779
19779
|
|
|
19780
|
-
function ownKeys$
|
|
19781
|
-
function _objectSpread$
|
|
19780
|
+
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; }
|
|
19781
|
+
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; }
|
|
19782
19782
|
var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
19783
19783
|
var transport = _ref.transport,
|
|
19784
19784
|
envMappingRows = _ref.envMappingRows,
|
|
@@ -19807,7 +19807,7 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
|
19807
19807
|
var updateEnvRow = function updateEnvRow(id, field, value) {
|
|
19808
19808
|
onEnvMappingRowsChange(function (prev) {
|
|
19809
19809
|
return prev.map(function (row) {
|
|
19810
|
-
return row.id === id ? _objectSpread$
|
|
19810
|
+
return row.id === id ? _objectSpread$H(_objectSpread$H({}, row), {}, _defineProperty({}, field, value)) : row;
|
|
19811
19811
|
});
|
|
19812
19812
|
});
|
|
19813
19813
|
};
|
|
@@ -19832,7 +19832,7 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
|
19832
19832
|
var updateHeaderRow = function updateHeaderRow(id, field, value) {
|
|
19833
19833
|
onHeaderRowsChange(function (prev) {
|
|
19834
19834
|
return prev.map(function (row) {
|
|
19835
|
-
return row.id === id ? _objectSpread$
|
|
19835
|
+
return row.id === id ? _objectSpread$H(_objectSpread$H({}, row), {}, _defineProperty({}, field, value)) : row;
|
|
19836
19836
|
});
|
|
19837
19837
|
});
|
|
19838
19838
|
};
|
|
@@ -19981,8 +19981,8 @@ var AdvancedMcpConfig = function AdvancedMcpConfig(_ref) {
|
|
|
19981
19981
|
});
|
|
19982
19982
|
};
|
|
19983
19983
|
|
|
19984
|
-
function ownKeys$
|
|
19985
|
-
function _objectSpread$
|
|
19984
|
+
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; }
|
|
19985
|
+
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; }
|
|
19986
19986
|
var McpServerPicker = function McpServerPicker(_ref) {
|
|
19987
19987
|
var _testResult$tools;
|
|
19988
19988
|
var isOpen = _ref.isOpen,
|
|
@@ -20161,11 +20161,11 @@ var McpServerPicker = function McpServerPicker(_ref) {
|
|
|
20161
20161
|
// Handle credential field changes
|
|
20162
20162
|
var handleCredentialChange = function handleCredentialChange(fieldName, value) {
|
|
20163
20163
|
setCredentialData(function (prev) {
|
|
20164
|
-
return _objectSpread$
|
|
20164
|
+
return _objectSpread$G(_objectSpread$G({}, prev), {}, _defineProperty({}, fieldName, value));
|
|
20165
20165
|
});
|
|
20166
20166
|
if (formErrors[fieldName] && value !== null && value !== void 0 && value.trim()) {
|
|
20167
20167
|
setFormErrors(function (prev) {
|
|
20168
|
-
var next = _objectSpread$
|
|
20168
|
+
var next = _objectSpread$G({}, prev);
|
|
20169
20169
|
delete next[fieldName];
|
|
20170
20170
|
return next;
|
|
20171
20171
|
});
|
|
@@ -20503,7 +20503,7 @@ var McpServerPicker = function McpServerPicker(_ref) {
|
|
|
20503
20503
|
setProviderName(value);
|
|
20504
20504
|
if (formErrors.providerName && value !== null && value !== void 0 && value.trim()) {
|
|
20505
20505
|
setFormErrors(function (prev) {
|
|
20506
|
-
var next = _objectSpread$
|
|
20506
|
+
var next = _objectSpread$G({}, prev);
|
|
20507
20507
|
delete next.providerName;
|
|
20508
20508
|
return next;
|
|
20509
20509
|
});
|
|
@@ -20693,8 +20693,8 @@ var McpServerPicker = function McpServerPicker(_ref) {
|
|
|
20693
20693
|
});
|
|
20694
20694
|
};
|
|
20695
20695
|
|
|
20696
|
-
function ownKeys$
|
|
20697
|
-
function _objectSpread$
|
|
20696
|
+
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; }
|
|
20697
|
+
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; }
|
|
20698
20698
|
var USE_ENHANCED_WIDGET_SELECTOR = true; // Set to false to use original modal
|
|
20699
20699
|
|
|
20700
20700
|
/**
|
|
@@ -20740,7 +20740,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
20740
20740
|
var _ref3 = _slicedToArray(_ref2, 2),
|
|
20741
20741
|
id = _ref3[0],
|
|
20742
20742
|
p = _ref3[1];
|
|
20743
|
-
return _objectSpread$
|
|
20743
|
+
return _objectSpread$F(_objectSpread$F({}, p), {}, {
|
|
20744
20744
|
id: id,
|
|
20745
20745
|
name: p.name || id
|
|
20746
20746
|
});
|
|
@@ -20827,7 +20827,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
20827
20827
|
// so we use its layout to replace any corrupted grid data.
|
|
20828
20828
|
if (workspace && workspace["layout"]) {
|
|
20829
20829
|
var model = new DashboardModel(workspace);
|
|
20830
|
-
setCurrentWorkspace(_objectSpread$
|
|
20830
|
+
setCurrentWorkspace(_objectSpread$F(_objectSpread$F({}, workspace), {}, {
|
|
20831
20831
|
layout: model.layout
|
|
20832
20832
|
}));
|
|
20833
20833
|
} else {
|
|
@@ -20876,7 +20876,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
20876
20876
|
}
|
|
20877
20877
|
try {
|
|
20878
20878
|
var hasChildren = config.type === "workspace";
|
|
20879
|
-
var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$
|
|
20879
|
+
var newLayout = addItemToItemLayout(ws.layout, gridItem.id, _objectSpread$F(_objectSpread$F({}, config), {}, {
|
|
20880
20880
|
component: widgetComponentName
|
|
20881
20881
|
}), hasChildren);
|
|
20882
20882
|
var newWidgetId = newLayout[newLayout.length - 1].id;
|
|
@@ -21304,7 +21304,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
21304
21304
|
var uuid = widget.uuid || widget.uuidString;
|
|
21305
21305
|
if (uuid) {
|
|
21306
21306
|
newWorkspace.selectedProviders = newWorkspace.selectedProviders || {};
|
|
21307
|
-
newWorkspace.selectedProviders[uuid] = _objectSpread$
|
|
21307
|
+
newWorkspace.selectedProviders[uuid] = _objectSpread$F(_objectSpread$F({}, newWorkspace.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
|
|
21308
21308
|
}
|
|
21309
21309
|
setCurrentWorkspace(newWorkspace);
|
|
21310
21310
|
}
|
|
@@ -21440,7 +21440,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
21440
21440
|
var _gridContainer$grid;
|
|
21441
21441
|
var config = ComponentManager.config(widgetKey);
|
|
21442
21442
|
if (!config) return;
|
|
21443
|
-
var widgetItem = _objectSpread$
|
|
21443
|
+
var widgetItem = _objectSpread$F(_objectSpread$F({}, config), {}, {
|
|
21444
21444
|
component: widgetKey,
|
|
21445
21445
|
key: widgetKey
|
|
21446
21446
|
});
|
|
@@ -21694,7 +21694,7 @@ var LayoutBuilder = function LayoutBuilder(_ref) {
|
|
|
21694
21694
|
onSelectWidget: function onSelectWidget(widget) {
|
|
21695
21695
|
|
|
21696
21696
|
// Add component property from widget.key
|
|
21697
|
-
var widgetWithComponent = _objectSpread$
|
|
21697
|
+
var widgetWithComponent = _objectSpread$F(_objectSpread$F({}, widget), {}, {
|
|
21698
21698
|
component: widget.key
|
|
21699
21699
|
});
|
|
21700
21700
|
handleClickConfirmAdd(widgetWithComponent, dropdownTarget);
|
|
@@ -23323,8 +23323,8 @@ var MissingProviderPrompt = function MissingProviderPrompt(_ref) {
|
|
|
23323
23323
|
});
|
|
23324
23324
|
};
|
|
23325
23325
|
|
|
23326
|
-
function ownKeys$
|
|
23327
|
-
function _objectSpread$
|
|
23326
|
+
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; }
|
|
23327
|
+
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; }
|
|
23328
23328
|
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)); }
|
|
23329
23329
|
function _isNativeReflectConstruct$4() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$4 = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
23330
23330
|
var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
@@ -23379,7 +23379,7 @@ var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
23379
23379
|
_defineProperty(_this, "handleProviderSelect", function (providerType, providerName, credentials) {
|
|
23380
23380
|
|
|
23381
23381
|
// Update local selected providers state
|
|
23382
|
-
var updatedSelected = _objectSpread$
|
|
23382
|
+
var updatedSelected = _objectSpread$E(_objectSpread$E({}, _this.state.selectedProviders), {}, _defineProperty({}, providerType, providerName));
|
|
23383
23383
|
_this.setState({
|
|
23384
23384
|
selectedProviders: updatedSelected
|
|
23385
23385
|
}, function () {
|
|
@@ -23453,8 +23453,8 @@ var ProviderErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
|
23453
23453
|
}(React.Component);
|
|
23454
23454
|
_defineProperty(ProviderErrorBoundary, "contextType", ProviderContext);
|
|
23455
23455
|
|
|
23456
|
-
function ownKeys$
|
|
23457
|
-
function _objectSpread$
|
|
23456
|
+
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; }
|
|
23457
|
+
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; }
|
|
23458
23458
|
var withProviderDetection = function withProviderDetection(Component) {
|
|
23459
23459
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
23460
23460
|
_ref$requiredProvider = _ref.requiredProviders,
|
|
@@ -23479,7 +23479,7 @@ var withProviderDetection = function withProviderDetection(Component) {
|
|
|
23479
23479
|
onProviderSelect: onProviderSelect
|
|
23480
23480
|
});
|
|
23481
23481
|
}
|
|
23482
|
-
return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread$
|
|
23482
|
+
return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread$D({}, props));
|
|
23483
23483
|
};
|
|
23484
23484
|
};
|
|
23485
23485
|
|
|
@@ -24155,8 +24155,8 @@ var WidgetNotFound = function WidgetNotFound(_ref) {
|
|
|
24155
24155
|
});
|
|
24156
24156
|
};
|
|
24157
24157
|
|
|
24158
|
-
function ownKeys$
|
|
24159
|
-
function _objectSpread$
|
|
24158
|
+
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; }
|
|
24159
|
+
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; }
|
|
24160
24160
|
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)); }
|
|
24161
24161
|
function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24162
24162
|
var WidgetErrorBoundary = /*#__PURE__*/function (_Component) {
|
|
@@ -24239,6 +24239,35 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24239
24239
|
children = _ref$children === void 0 ? null : _ref$children;
|
|
24240
24240
|
var _useContext = React.useContext(DashboardContext),
|
|
24241
24241
|
dashApi = _useContext.dashApi;
|
|
24242
|
+
|
|
24243
|
+
// When a widget package is updated via Settings > Widgets (or the AI
|
|
24244
|
+
// Widget Builder), the main process broadcasts "widget:installed"
|
|
24245
|
+
// and Dash.js rebroadcasts a "dash:widget-installed" CustomEvent on
|
|
24246
|
+
// window. We listen here, per-instance, and bump a local version
|
|
24247
|
+
// counter when OUR component is the one that was updated. The counter
|
|
24248
|
+
// is embedded in the child's React key so only matching instances
|
|
24249
|
+
// re-mount — unrelated widgets, the sidebar, and the Settings modal
|
|
24250
|
+
// are untouched. Replaces the old global stageKey remount in Dash.js.
|
|
24251
|
+
var _useState = React.useState(0),
|
|
24252
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
24253
|
+
componentVersion = _useState2[0],
|
|
24254
|
+
setComponentVersion = _useState2[1];
|
|
24255
|
+
React.useEffect(function () {
|
|
24256
|
+
var onWidgetInstalled = function onWidgetInstalled(e) {
|
|
24257
|
+
var _e$detail;
|
|
24258
|
+
var installed = e === null || e === void 0 || (_e$detail = e.detail) === null || _e$detail === void 0 ? void 0 : _e$detail.widgetName;
|
|
24259
|
+
if (!installed) return;
|
|
24260
|
+
if (installed === component) {
|
|
24261
|
+
setComponentVersion(function (v) {
|
|
24262
|
+
return v + 1;
|
|
24263
|
+
});
|
|
24264
|
+
}
|
|
24265
|
+
};
|
|
24266
|
+
window.addEventListener("dash:widget-installed", onWidgetInstalled);
|
|
24267
|
+
return function () {
|
|
24268
|
+
return window.removeEventListener("dash:widget-installed", onWidgetInstalled);
|
|
24269
|
+
};
|
|
24270
|
+
}, [component]);
|
|
24242
24271
|
try {
|
|
24243
24272
|
var m = ComponentManager.componentMap();
|
|
24244
24273
|
if (component && m) {
|
|
@@ -24287,7 +24316,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24287
24316
|
|
|
24288
24317
|
// Build widgetData for WidgetContext — hooks read from this
|
|
24289
24318
|
var uuidString = DashReact.getUUID(params.uuid);
|
|
24290
|
-
var widgetData = _objectSpread$
|
|
24319
|
+
var widgetData = _objectSpread$C(_objectSpread$C({}, params), {}, {
|
|
24291
24320
|
uuidString: uuidString,
|
|
24292
24321
|
providers: (config === null || config === void 0 ? void 0 : config.providers) || [],
|
|
24293
24322
|
notifications: (config === null || config === void 0 ? void 0 : config.notifications) || []
|
|
@@ -24311,7 +24340,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24311
24340
|
widgetData: widgetData
|
|
24312
24341
|
};
|
|
24313
24342
|
var hasScheduledTasks = ((config === null || config === void 0 ? void 0 : config.scheduledTasks) || []).length > 0;
|
|
24314
|
-
var widgetElement = children === null ? /*#__PURE__*/jsxRuntime.jsx(WidgetComponent, _objectSpread$
|
|
24343
|
+
var widgetElement = children === null ? /*#__PURE__*/jsxRuntime.jsx(WidgetComponent, _objectSpread$C(_objectSpread$C(_objectSpread$C({
|
|
24315
24344
|
id: "widget-nokids-".concat(widgetKey),
|
|
24316
24345
|
listen: function listen(listeners, handlers) {
|
|
24317
24346
|
return helpers.listen(listeners, handlers);
|
|
@@ -24325,7 +24354,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24325
24354
|
backgroundColor: bgColor,
|
|
24326
24355
|
widgetConfig: helpers.config(),
|
|
24327
24356
|
widgetEventNames: helpers.events()
|
|
24328
|
-
}), "widget-nokids-".concat(widgetKey)) : /*#__PURE__*/jsxRuntime.jsx(WidgetComponent, _objectSpread$
|
|
24357
|
+
}), "widget-nokids-".concat(widgetKey, "-v").concat(componentVersion)) : /*#__PURE__*/jsxRuntime.jsx(WidgetComponent, _objectSpread$C(_objectSpread$C(_objectSpread$C({
|
|
24329
24358
|
listen: function listen(listeners, handlers) {
|
|
24330
24359
|
return helpers.listen(listeners, handlers);
|
|
24331
24360
|
},
|
|
@@ -24338,7 +24367,7 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
|
|
|
24338
24367
|
}, params), userPrefs), {}, {
|
|
24339
24368
|
backgroundColor: bgColor,
|
|
24340
24369
|
children: children
|
|
24341
|
-
}), "widget-kids-".concat(widgetKey));
|
|
24370
|
+
}), "widget-kids-".concat(widgetKey, "-v").concat(componentVersion));
|
|
24342
24371
|
|
|
24343
24372
|
// Wrap widget rendering with WidgetContext + error boundary
|
|
24344
24373
|
return /*#__PURE__*/jsxRuntime.jsx(WidgetContext.Provider, {
|
|
@@ -24525,11 +24554,11 @@ var ExternalWidget = function ExternalWidget(_ref) {
|
|
|
24525
24554
|
var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
|
|
24526
24555
|
var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
|
|
24527
24556
|
|
|
24528
|
-
function _createForOfIteratorHelper$
|
|
24529
|
-
function _unsupportedIterableToArray$
|
|
24530
|
-
function _arrayLikeToArray$
|
|
24531
|
-
function ownKeys$
|
|
24532
|
-
function _objectSpread$
|
|
24557
|
+
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; } } }; }
|
|
24558
|
+
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; } }
|
|
24559
|
+
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; }
|
|
24560
|
+
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; }
|
|
24561
|
+
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; }
|
|
24533
24562
|
var DraggableDroppableCellBody = function DraggableDroppableCellBody(_ref) {
|
|
24534
24563
|
var cellNumber = _ref.cellNumber,
|
|
24535
24564
|
gridContainerId = _ref.gridContainerId,
|
|
@@ -24727,7 +24756,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
|
|
|
24727
24756
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
24728
24757
|
id = _ref5[0],
|
|
24729
24758
|
provider = _ref5[1];
|
|
24730
|
-
return _objectSpread$
|
|
24759
|
+
return _objectSpread$B({
|
|
24731
24760
|
id: id
|
|
24732
24761
|
}, provider);
|
|
24733
24762
|
}) : [];
|
|
@@ -25102,7 +25131,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
|
|
|
25102
25131
|
return selectable["delete"](cn);
|
|
25103
25132
|
});
|
|
25104
25133
|
var resolved = new Set();
|
|
25105
|
-
var _iterator = _createForOfIteratorHelper$
|
|
25134
|
+
var _iterator = _createForOfIteratorHelper$k(selectable),
|
|
25106
25135
|
_step;
|
|
25107
25136
|
try {
|
|
25108
25137
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -25771,7 +25800,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
|
|
|
25771
25800
|
var widgetSpecificSelections = (workspace === null || workspace === void 0 || (_workspace$selectedPr = workspace.selectedProviders) === null || _workspace$selectedPr === void 0 ? void 0 : _workspace$selectedPr[id]) || {};
|
|
25772
25801
|
|
|
25773
25802
|
// Add provider-related props from workspace
|
|
25774
|
-
var itemWithProviders = _objectSpread$
|
|
25803
|
+
var itemWithProviders = _objectSpread$B(_objectSpread$B({}, item), {}, {
|
|
25775
25804
|
selectedProviders: widgetSpecificSelections,
|
|
25776
25805
|
onProviderSelect: onProviderSelect
|
|
25777
25806
|
});
|
|
@@ -27276,11 +27305,11 @@ function isWidgetResolvable(componentKey) {
|
|
|
27276
27305
|
// isMinOrderForItem
|
|
27277
27306
|
// }
|
|
27278
27307
|
|
|
27279
|
-
function ownKeys$
|
|
27280
|
-
function _objectSpread$
|
|
27281
|
-
function _createForOfIteratorHelper$
|
|
27282
|
-
function _unsupportedIterableToArray$
|
|
27283
|
-
function _arrayLikeToArray$
|
|
27308
|
+
function ownKeys$A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27309
|
+
function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
27310
|
+
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; } } }; }
|
|
27311
|
+
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; } }
|
|
27312
|
+
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; }
|
|
27284
27313
|
/**
|
|
27285
27314
|
* The model for all layout components used primarily in the renderLayout method
|
|
27286
27315
|
* @param {Object} layoutItem an object containing various attributes of the layout item
|
|
@@ -27292,7 +27321,7 @@ function _arrayLikeToArray$i(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
27292
27321
|
function sortObjectByKeys(obj) {
|
|
27293
27322
|
var sortedKeys = Object.keys(obj).sort();
|
|
27294
27323
|
var sortedObj = {};
|
|
27295
|
-
var _iterator = _createForOfIteratorHelper$
|
|
27324
|
+
var _iterator = _createForOfIteratorHelper$j(sortedKeys),
|
|
27296
27325
|
_step;
|
|
27297
27326
|
try {
|
|
27298
27327
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -27433,7 +27462,7 @@ var LayoutModel = function LayoutModel(layoutItem, workspaceLayout, dashboardId)
|
|
|
27433
27462
|
|
|
27434
27463
|
// Merge user-entered config values (from EnhancedWidgetDropdown) into userPrefs
|
|
27435
27464
|
if ("userConfigValues" in obj && obj.userConfigValues) {
|
|
27436
|
-
layout.userPrefs = _objectSpread$
|
|
27465
|
+
layout.userPrefs = _objectSpread$A(_objectSpread$A({}, layout.userPrefs), obj.userConfigValues);
|
|
27437
27466
|
}
|
|
27438
27467
|
|
|
27439
27468
|
// Preserve provider selections for this widget
|
|
@@ -27564,6 +27593,822 @@ var SettingsModel = function SettingsModel() {
|
|
|
27564
27593
|
return obj;
|
|
27565
27594
|
};
|
|
27566
27595
|
|
|
27596
|
+
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; } } }; }
|
|
27597
|
+
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; } }
|
|
27598
|
+
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; }
|
|
27599
|
+
/**
|
|
27600
|
+
* providerResolution.js
|
|
27601
|
+
*
|
|
27602
|
+
* Shared helpers for walking a workspace and figuring out which widgets
|
|
27603
|
+
* have required providers that are still unresolved after the 3-layer
|
|
27604
|
+
* resolution (widget → workspace → app-default → null). Used by:
|
|
27605
|
+
*
|
|
27606
|
+
* - DashboardConfigModal to render the Providers tab
|
|
27607
|
+
* - DashboardStage toolbar to show the unresolved-count badge
|
|
27608
|
+
*
|
|
27609
|
+
* Both places need the same answer, so keep the logic here to avoid drift
|
|
27610
|
+
* with the resolution inside `useMcpProvider` / `useWebSocketProvider`.
|
|
27611
|
+
*/
|
|
27612
|
+
|
|
27613
|
+
/**
|
|
27614
|
+
* Resolve which provider name a given widget instance would bind to for
|
|
27615
|
+
* the given provider type. Mirrors the 3-layer chain in useMcpProvider
|
|
27616
|
+
* and useWebSocketProvider exactly:
|
|
27617
|
+
*
|
|
27618
|
+
* 1. widget-level override (layoutItem.selectedProviders[type])
|
|
27619
|
+
* 2. workspace-level binding (workspace.selectedProviders[id][type])
|
|
27620
|
+
* 3. app default (any provider of matching type flagged
|
|
27621
|
+
* `isDefaultForType` in appProviders)
|
|
27622
|
+
* 4. null (truly unresolved)
|
|
27623
|
+
*/
|
|
27624
|
+
function resolveProviderName(_ref) {
|
|
27625
|
+
var _layoutItem$selectedP, _workspace$selectedPr;
|
|
27626
|
+
var providerType = _ref.providerType,
|
|
27627
|
+
layoutItem = _ref.layoutItem,
|
|
27628
|
+
widgetId = _ref.widgetId,
|
|
27629
|
+
workspace = _ref.workspace,
|
|
27630
|
+
appProviders = _ref.appProviders;
|
|
27631
|
+
// 1. Widget-level
|
|
27632
|
+
var widgetLevel = layoutItem === null || layoutItem === void 0 || (_layoutItem$selectedP = layoutItem.selectedProviders) === null || _layoutItem$selectedP === void 0 ? void 0 : _layoutItem$selectedP[providerType];
|
|
27633
|
+
if (widgetLevel) return widgetLevel;
|
|
27634
|
+
|
|
27635
|
+
// 2. Workspace-level
|
|
27636
|
+
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]);
|
|
27637
|
+
if (workspaceLevel) return workspaceLevel;
|
|
27638
|
+
|
|
27639
|
+
// 3. App default — appProviders is either a map keyed by name or an
|
|
27640
|
+
// array. Support both because different callers shape it either way.
|
|
27641
|
+
if (appProviders) {
|
|
27642
|
+
if (Array.isArray(appProviders)) {
|
|
27643
|
+
var _iterator = _createForOfIteratorHelper$i(appProviders),
|
|
27644
|
+
_step;
|
|
27645
|
+
try {
|
|
27646
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
27647
|
+
var data = _step.value;
|
|
27648
|
+
if ((data === null || data === void 0 ? void 0 : data.type) === providerType && (data === null || data === void 0 ? void 0 : data.isDefaultForType) === true) {
|
|
27649
|
+
return data.name;
|
|
27650
|
+
}
|
|
27651
|
+
}
|
|
27652
|
+
} catch (err) {
|
|
27653
|
+
_iterator.e(err);
|
|
27654
|
+
} finally {
|
|
27655
|
+
_iterator.f();
|
|
27656
|
+
}
|
|
27657
|
+
} else if (_typeof(appProviders) === "object") {
|
|
27658
|
+
for (var _i = 0, _Object$entries = Object.entries(appProviders); _i < _Object$entries.length; _i++) {
|
|
27659
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
27660
|
+
name = _Object$entries$_i[0],
|
|
27661
|
+
_data = _Object$entries$_i[1];
|
|
27662
|
+
if ((_data === null || _data === void 0 ? void 0 : _data.type) === providerType && (_data === null || _data === void 0 ? void 0 : _data.isDefaultForType) === true) {
|
|
27663
|
+
return name;
|
|
27664
|
+
}
|
|
27665
|
+
}
|
|
27666
|
+
}
|
|
27667
|
+
}
|
|
27668
|
+
return null;
|
|
27669
|
+
}
|
|
27670
|
+
|
|
27671
|
+
/**
|
|
27672
|
+
* Walk every layout container in a workspace and yield each widget
|
|
27673
|
+
* instance with its concrete layout item. Handles the main layout,
|
|
27674
|
+
* per-page layouts, the sidebar, and nested LayoutGridContainers whose
|
|
27675
|
+
* children are stored on `items`/`layout`.
|
|
27676
|
+
*
|
|
27677
|
+
* Deduplicates by object identity AND by stable id so that shared
|
|
27678
|
+
* references across pages (or two structurally-distinct items that
|
|
27679
|
+
* carry the same uuidString / id, which is the wiring key) are
|
|
27680
|
+
* visited exactly once. Pipeline-style workspaces re-reference the
|
|
27681
|
+
* same widget objects across page layouts; without this dedupe the
|
|
27682
|
+
* Providers/Listeners tabs render one row per reference.
|
|
27683
|
+
*/
|
|
27684
|
+
function forEachWidget(workspace, visit) {
|
|
27685
|
+
if (!workspace) return;
|
|
27686
|
+
var visitedObjects = new WeakSet();
|
|
27687
|
+
var visitedIds = new Set();
|
|
27688
|
+
var stableId = function stableId(item) {
|
|
27689
|
+
return (item === null || item === void 0 ? void 0 : item.uuidString) || (item === null || item === void 0 ? void 0 : item.uuid) || ((item === null || item === void 0 ? void 0 : item.component) != null && (item === null || item === void 0 ? void 0 : item.id) != null ? "".concat(item.component, "|").concat(item.id) : null);
|
|
27690
|
+
};
|
|
27691
|
+
var _walk = function walk(items) {
|
|
27692
|
+
if (!Array.isArray(items)) return;
|
|
27693
|
+
var _iterator2 = _createForOfIteratorHelper$i(items),
|
|
27694
|
+
_step2;
|
|
27695
|
+
try {
|
|
27696
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
27697
|
+
var item = _step2.value;
|
|
27698
|
+
if (!item || _typeof(item) !== "object") continue;
|
|
27699
|
+
// A "widget" is any layout item with a component name.
|
|
27700
|
+
// Containers can have both a component name AND nested items
|
|
27701
|
+
// (e.g. LayoutGridContainer), so still recurse.
|
|
27702
|
+
if (item.component) {
|
|
27703
|
+
var id = stableId(item);
|
|
27704
|
+
var alreadyByRef = visitedObjects.has(item);
|
|
27705
|
+
var alreadyById = id != null && visitedIds.has(id);
|
|
27706
|
+
if (!alreadyByRef && !alreadyById) {
|
|
27707
|
+
visitedObjects.add(item);
|
|
27708
|
+
if (id != null) visitedIds.add(id);
|
|
27709
|
+
visit(item);
|
|
27710
|
+
}
|
|
27711
|
+
}
|
|
27712
|
+
if (Array.isArray(item.items)) _walk(item.items);
|
|
27713
|
+
if (Array.isArray(item.layout)) _walk(item.layout);
|
|
27714
|
+
}
|
|
27715
|
+
} catch (err) {
|
|
27716
|
+
_iterator2.e(err);
|
|
27717
|
+
} finally {
|
|
27718
|
+
_iterator2.f();
|
|
27719
|
+
}
|
|
27720
|
+
};
|
|
27721
|
+
_walk(workspace.layout);
|
|
27722
|
+
if (Array.isArray(workspace.pages)) {
|
|
27723
|
+
var _iterator3 = _createForOfIteratorHelper$i(workspace.pages),
|
|
27724
|
+
_step3;
|
|
27725
|
+
try {
|
|
27726
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
27727
|
+
var page = _step3.value;
|
|
27728
|
+
_walk(page === null || page === void 0 ? void 0 : page.layout);
|
|
27729
|
+
}
|
|
27730
|
+
} catch (err) {
|
|
27731
|
+
_iterator3.e(err);
|
|
27732
|
+
} finally {
|
|
27733
|
+
_iterator3.f();
|
|
27734
|
+
}
|
|
27735
|
+
}
|
|
27736
|
+
_walk(workspace.sidebarLayout);
|
|
27737
|
+
}
|
|
27738
|
+
|
|
27739
|
+
/**
|
|
27740
|
+
* Compute the list of unresolved required providers across a workspace.
|
|
27741
|
+
*
|
|
27742
|
+
* @param {object} args
|
|
27743
|
+
* @param {object} args.workspace The workspace (with layout/pages/sidebarLayout/selectedProviders).
|
|
27744
|
+
* @param {object|Array} args.appProviders
|
|
27745
|
+
* Map keyed by provider name, or an array of provider objects. Each
|
|
27746
|
+
* entry has at least `{ type, isDefaultForType }`.
|
|
27747
|
+
* @param {(componentName: string) => Array<{type, required?, providerClass?}>} args.getWidgetRequirements
|
|
27748
|
+
* Returns the `providers: [...]` declaration from the component's
|
|
27749
|
+
* `.dash.js` (via `ComponentManager.componentMap()[name].providers`).
|
|
27750
|
+
*
|
|
27751
|
+
* @returns {Array<{ widgetId, component, providerType, providerClass, layoutItem }>}
|
|
27752
|
+
* One entry per (widget instance, required provider type) that lacks
|
|
27753
|
+
* a binding.
|
|
27754
|
+
*/
|
|
27755
|
+
function getUnresolvedProviders(_ref2) {
|
|
27756
|
+
var workspace = _ref2.workspace,
|
|
27757
|
+
appProviders = _ref2.appProviders,
|
|
27758
|
+
getWidgetRequirements = _ref2.getWidgetRequirements;
|
|
27759
|
+
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
27760
|
+
var unresolved = [];
|
|
27761
|
+
forEachWidget(workspace, function (item) {
|
|
27762
|
+
var requirements = getWidgetRequirements(item.component) || [];
|
|
27763
|
+
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
27764
|
+
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
27765
|
+
var _iterator4 = _createForOfIteratorHelper$i(requirements),
|
|
27766
|
+
_step4;
|
|
27767
|
+
try {
|
|
27768
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
27769
|
+
var req = _step4.value;
|
|
27770
|
+
if (!req || !req.type) continue;
|
|
27771
|
+
if (req.required === false) continue; // optional, skip
|
|
27772
|
+
|
|
27773
|
+
var name = resolveProviderName({
|
|
27774
|
+
providerType: req.type,
|
|
27775
|
+
layoutItem: item,
|
|
27776
|
+
widgetId: widgetId,
|
|
27777
|
+
workspace: workspace,
|
|
27778
|
+
appProviders: appProviders
|
|
27779
|
+
});
|
|
27780
|
+
if (!name) {
|
|
27781
|
+
unresolved.push({
|
|
27782
|
+
widgetId: widgetId,
|
|
27783
|
+
component: item.component,
|
|
27784
|
+
providerType: req.type,
|
|
27785
|
+
providerClass: req.providerClass || null,
|
|
27786
|
+
layoutItem: item
|
|
27787
|
+
});
|
|
27788
|
+
}
|
|
27789
|
+
}
|
|
27790
|
+
} catch (err) {
|
|
27791
|
+
_iterator4.e(err);
|
|
27792
|
+
} finally {
|
|
27793
|
+
_iterator4.f();
|
|
27794
|
+
}
|
|
27795
|
+
});
|
|
27796
|
+
return unresolved;
|
|
27797
|
+
}
|
|
27798
|
+
|
|
27799
|
+
/**
|
|
27800
|
+
* Group an unresolved-provider list (or any `{widget, providerType}` list)
|
|
27801
|
+
* by provider type, so the Providers tab can render one row per unique
|
|
27802
|
+
* type with N widgets beneath.
|
|
27803
|
+
*/
|
|
27804
|
+
function groupByProviderType(unresolved) {
|
|
27805
|
+
var byType = new Map();
|
|
27806
|
+
var _iterator5 = _createForOfIteratorHelper$i(unresolved || []),
|
|
27807
|
+
_step5;
|
|
27808
|
+
try {
|
|
27809
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
27810
|
+
var u = _step5.value;
|
|
27811
|
+
if (!(u !== null && u !== void 0 && u.providerType)) continue;
|
|
27812
|
+
if (!byType.has(u.providerType)) byType.set(u.providerType, []);
|
|
27813
|
+
byType.get(u.providerType).push(u);
|
|
27814
|
+
}
|
|
27815
|
+
} catch (err) {
|
|
27816
|
+
_iterator5.e(err);
|
|
27817
|
+
} finally {
|
|
27818
|
+
_iterator5.f();
|
|
27819
|
+
}
|
|
27820
|
+
return byType;
|
|
27821
|
+
}
|
|
27822
|
+
|
|
27823
|
+
/**
|
|
27824
|
+
* Summarize every widget in the workspace that requires ANY provider,
|
|
27825
|
+
* regardless of whether it's already resolved. Drives the Providers tab's
|
|
27826
|
+
* "show per-widget overrides" expansion — the modal lists all widgets so
|
|
27827
|
+
* the user can change an explicit override even for types that are
|
|
27828
|
+
* already resolved via the app default.
|
|
27829
|
+
*/
|
|
27830
|
+
function getAllProviderBindings(_ref3) {
|
|
27831
|
+
var workspace = _ref3.workspace,
|
|
27832
|
+
appProviders = _ref3.appProviders,
|
|
27833
|
+
getWidgetRequirements = _ref3.getWidgetRequirements;
|
|
27834
|
+
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
27835
|
+
var bindings = [];
|
|
27836
|
+
forEachWidget(workspace, function (item) {
|
|
27837
|
+
var requirements = getWidgetRequirements(item.component) || [];
|
|
27838
|
+
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
27839
|
+
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
27840
|
+
var _iterator6 = _createForOfIteratorHelper$i(requirements),
|
|
27841
|
+
_step6;
|
|
27842
|
+
try {
|
|
27843
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
27844
|
+
var req = _step6.value;
|
|
27845
|
+
if (!req || !req.type) continue;
|
|
27846
|
+
var name = resolveProviderName({
|
|
27847
|
+
providerType: req.type,
|
|
27848
|
+
layoutItem: item,
|
|
27849
|
+
widgetId: widgetId,
|
|
27850
|
+
workspace: workspace,
|
|
27851
|
+
appProviders: appProviders
|
|
27852
|
+
});
|
|
27853
|
+
bindings.push({
|
|
27854
|
+
widgetId: widgetId,
|
|
27855
|
+
component: item.component,
|
|
27856
|
+
providerType: req.type,
|
|
27857
|
+
providerClass: req.providerClass || null,
|
|
27858
|
+
required: req.required !== false,
|
|
27859
|
+
resolvedProviderName: name,
|
|
27860
|
+
layoutItem: item
|
|
27861
|
+
});
|
|
27862
|
+
}
|
|
27863
|
+
} catch (err) {
|
|
27864
|
+
_iterator6.e(err);
|
|
27865
|
+
} finally {
|
|
27866
|
+
_iterator6.f();
|
|
27867
|
+
}
|
|
27868
|
+
});
|
|
27869
|
+
return bindings;
|
|
27870
|
+
}
|
|
27871
|
+
|
|
27872
|
+
function ownKeys$z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27873
|
+
function _objectSpread$z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
27874
|
+
function _createForOfIteratorHelper$h(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$h(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
27875
|
+
function _unsupportedIterableToArray$h(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$h(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$h(r, a) : void 0; } }
|
|
27876
|
+
function _arrayLikeToArray$h(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
27877
|
+
var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
|
|
27878
|
+
|
|
27879
|
+
/** Parse "Component[itemId].event" → { component, itemId, event }. */
|
|
27880
|
+
function parseEventString(eventString) {
|
|
27881
|
+
if (typeof eventString !== "string") return null;
|
|
27882
|
+
var m = eventString.match(EVENT_STRING_RE);
|
|
27883
|
+
if (!m) return null;
|
|
27884
|
+
return {
|
|
27885
|
+
component: m[1],
|
|
27886
|
+
itemId: m[2],
|
|
27887
|
+
event: m[3]
|
|
27888
|
+
};
|
|
27889
|
+
}
|
|
27890
|
+
|
|
27891
|
+
/** Build an event string in the canonical runtime format. */
|
|
27892
|
+
function formatEventString(component, itemId, event) {
|
|
27893
|
+
return "".concat(component, "[").concat(itemId, "].").concat(event);
|
|
27894
|
+
}
|
|
27895
|
+
|
|
27896
|
+
/**
|
|
27897
|
+
* Get a stable id for a layout item. Layout items historically used
|
|
27898
|
+
* numeric `id`; some newer flows also carry `uuidString`/`uuid`. The
|
|
27899
|
+
* runtime event-string format uses whichever is `item.id`, so we
|
|
27900
|
+
* default to that and fall back to the others for resilience.
|
|
27901
|
+
*/
|
|
27902
|
+
function itemIdOf(item) {
|
|
27903
|
+
if (item == null) return null;
|
|
27904
|
+
if (item.id !== undefined && item.id !== null) return String(item.id);
|
|
27905
|
+
if (item.uuidString) return item.uuidString;
|
|
27906
|
+
if (item.uuid) return item.uuid;
|
|
27907
|
+
return null;
|
|
27908
|
+
}
|
|
27909
|
+
|
|
27910
|
+
/**
|
|
27911
|
+
* Best-effort human label for a layout item: explicit title, then
|
|
27912
|
+
* widget config display name, then component name + short id.
|
|
27913
|
+
*/
|
|
27914
|
+
function labelFor(item, getWidgetConfig) {
|
|
27915
|
+
var _item$userPrefs, _item$userConfig;
|
|
27916
|
+
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || null;
|
|
27917
|
+
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);
|
|
27918
|
+
if (explicit) return explicit;
|
|
27919
|
+
if (cfg !== null && cfg !== void 0 && cfg.displayName) return cfg.displayName;
|
|
27920
|
+
var id = itemIdOf(item);
|
|
27921
|
+
return "".concat(item.component || "widget").concat(id ? "[".concat(String(id).slice(0, 6), "]") : "");
|
|
27922
|
+
}
|
|
27923
|
+
|
|
27924
|
+
/**
|
|
27925
|
+
* Read the events/eventHandlers metadata for a widget. Items can carry
|
|
27926
|
+
* the arrays inline (older pattern where they got cached onto the
|
|
27927
|
+
* layout item); the current component config carries them via the
|
|
27928
|
+
* ComponentManager catalog. We UNION both so we don't flag a binding
|
|
27929
|
+
* as orphaned just because an inline cache is stale — if the current
|
|
27930
|
+
* widget code declares the event/handler, the binding is valid.
|
|
27931
|
+
*/
|
|
27932
|
+
function eventsOf(item, getWidgetConfig) {
|
|
27933
|
+
var inline = Array.isArray(item.events) ? item.events : [];
|
|
27934
|
+
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
|
|
27935
|
+
var fromCfg = Array.isArray(cfg.events) ? cfg.events : [];
|
|
27936
|
+
return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
|
|
27937
|
+
}
|
|
27938
|
+
function eventHandlersOf(item, getWidgetConfig) {
|
|
27939
|
+
var inline = Array.isArray(item.eventHandlers) ? item.eventHandlers : [];
|
|
27940
|
+
var cfg = (getWidgetConfig === null || getWidgetConfig === void 0 ? void 0 : getWidgetConfig(item.component)) || {};
|
|
27941
|
+
var fromCfg = Array.isArray(cfg.eventHandlers) ? cfg.eventHandlers : [];
|
|
27942
|
+
return _toConsumableArray(new Set([].concat(_toConsumableArray(inline), _toConsumableArray(fromCfg))));
|
|
27943
|
+
}
|
|
27944
|
+
|
|
27945
|
+
/**
|
|
27946
|
+
* Every widget instance in the workspace that emits at least one event.
|
|
27947
|
+
* Deduplicated by `${component}|${itemId}` — the same compound key that
|
|
27948
|
+
* event strings use at runtime, so any "duplicate" in the tree (same
|
|
27949
|
+
* widget referenced across pages) resolves to the same wiring target.
|
|
27950
|
+
* @returns {Array<{ itemId, component, label, events: string[], key: string }>}
|
|
27951
|
+
*/
|
|
27952
|
+
function getEmitters(workspace, getWidgetConfig) {
|
|
27953
|
+
var byKey = new Map();
|
|
27954
|
+
forEachWidget(workspace, function (item) {
|
|
27955
|
+
var events = eventsOf(item, getWidgetConfig);
|
|
27956
|
+
if (events.length === 0) return;
|
|
27957
|
+
var itemId = itemIdOf(item);
|
|
27958
|
+
if (itemId == null) return;
|
|
27959
|
+
var key = "".concat(item.component, "|").concat(itemId);
|
|
27960
|
+
if (byKey.has(key)) return;
|
|
27961
|
+
byKey.set(key, {
|
|
27962
|
+
key: key,
|
|
27963
|
+
itemId: itemId,
|
|
27964
|
+
component: item.component,
|
|
27965
|
+
label: labelFor(item, getWidgetConfig),
|
|
27966
|
+
events: events
|
|
27967
|
+
});
|
|
27968
|
+
});
|
|
27969
|
+
return Array.from(byKey.values());
|
|
27970
|
+
}
|
|
27971
|
+
|
|
27972
|
+
/**
|
|
27973
|
+
* Every widget instance in the workspace that accepts at least one
|
|
27974
|
+
* handler. Used to populate the receiver dropdown. Deduplicated by
|
|
27975
|
+
* `${component}|${itemId}` (see getEmitters).
|
|
27976
|
+
* @returns {Array<{ itemId, component, label, eventHandlers: string[], listeners: object, key: string }>}
|
|
27977
|
+
*/
|
|
27978
|
+
function getReceivers(workspace, getWidgetConfig) {
|
|
27979
|
+
var byKey = new Map();
|
|
27980
|
+
forEachWidget(workspace, function (item) {
|
|
27981
|
+
var handlers = eventHandlersOf(item, getWidgetConfig);
|
|
27982
|
+
if (handlers.length === 0) return;
|
|
27983
|
+
var itemId = itemIdOf(item);
|
|
27984
|
+
if (itemId == null) return;
|
|
27985
|
+
var key = "".concat(item.component, "|").concat(itemId);
|
|
27986
|
+
if (byKey.has(key)) return;
|
|
27987
|
+
byKey.set(key, {
|
|
27988
|
+
key: key,
|
|
27989
|
+
itemId: itemId,
|
|
27990
|
+
component: item.component,
|
|
27991
|
+
label: labelFor(item, getWidgetConfig),
|
|
27992
|
+
eventHandlers: handlers,
|
|
27993
|
+
listeners: item.listeners || {}
|
|
27994
|
+
});
|
|
27995
|
+
});
|
|
27996
|
+
return Array.from(byKey.values());
|
|
27997
|
+
}
|
|
27998
|
+
|
|
27999
|
+
/**
|
|
28000
|
+
* Flatten every listener binding in the workspace into a list of
|
|
28001
|
+
* { receiverItemId, receiverComponent, handlerName, sourceComponent,
|
|
28002
|
+
* sourceItemId, eventName, raw } tuples. `raw` is the original
|
|
28003
|
+
* event string for round-trip fidelity on remove.
|
|
28004
|
+
*/
|
|
28005
|
+
function getCurrentWiring(workspace) {
|
|
28006
|
+
var wiring = [];
|
|
28007
|
+
forEachWidget(workspace, function (item) {
|
|
28008
|
+
var receiverItemId = itemIdOf(item);
|
|
28009
|
+
if (receiverItemId == null) return;
|
|
28010
|
+
var listeners = item.listeners;
|
|
28011
|
+
if (!listeners || _typeof(listeners) !== "object") return;
|
|
28012
|
+
for (var _i = 0, _Object$entries = Object.entries(listeners); _i < _Object$entries.length; _i++) {
|
|
28013
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
28014
|
+
handlerName = _Object$entries$_i[0],
|
|
28015
|
+
eventList = _Object$entries$_i[1];
|
|
28016
|
+
// Live format is array; defensive guard for legacy object
|
|
28017
|
+
// form (a single source widget keyed under the handler).
|
|
28018
|
+
var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
|
|
28019
|
+
var _iterator = _createForOfIteratorHelper$h(events),
|
|
28020
|
+
_step;
|
|
28021
|
+
try {
|
|
28022
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
28023
|
+
var raw = _step.value;
|
|
28024
|
+
var parsed = parseEventString(raw);
|
|
28025
|
+
if (!parsed) continue;
|
|
28026
|
+
wiring.push({
|
|
28027
|
+
receiverItemId: receiverItemId,
|
|
28028
|
+
receiverComponent: item.component,
|
|
28029
|
+
handlerName: handlerName,
|
|
28030
|
+
sourceComponent: parsed.component,
|
|
28031
|
+
sourceItemId: parsed.itemId,
|
|
28032
|
+
eventName: parsed.event,
|
|
28033
|
+
raw: raw
|
|
28034
|
+
});
|
|
28035
|
+
}
|
|
28036
|
+
} catch (err) {
|
|
28037
|
+
_iterator.e(err);
|
|
28038
|
+
} finally {
|
|
28039
|
+
_iterator.f();
|
|
28040
|
+
}
|
|
28041
|
+
}
|
|
28042
|
+
});
|
|
28043
|
+
return wiring;
|
|
28044
|
+
}
|
|
28045
|
+
|
|
28046
|
+
/**
|
|
28047
|
+
* Detect listener bindings that are no longer valid: the source widget
|
|
28048
|
+
* doesn't exist in the workspace anymore, or the source widget doesn't
|
|
28049
|
+
* declare the event, or the receiver doesn't declare the handler.
|
|
28050
|
+
* Each entry includes a `reason` so the modal can show a sensible
|
|
28051
|
+
* message.
|
|
28052
|
+
*/
|
|
28053
|
+
function getOrphanedListeners(workspace, getWidgetConfig) {
|
|
28054
|
+
var wiring = getCurrentWiring(workspace);
|
|
28055
|
+
if (wiring.length === 0) return [];
|
|
28056
|
+
|
|
28057
|
+
// Build two lookups:
|
|
28058
|
+
// byCompositeKey: `${component}|${itemId}` → widget meta (primary)
|
|
28059
|
+
// byItemId: `${itemId}` → widget meta (fallback,
|
|
28060
|
+
// used only for the "source-missing" check where
|
|
28061
|
+
// the wiring's component can't be trusted yet)
|
|
28062
|
+
// The composite key matches how the runtime event-string
|
|
28063
|
+
// (`Component[itemId].event`) identifies a widget, so orphan
|
|
28064
|
+
// decisions line up with what actually fires at runtime.
|
|
28065
|
+
var byCompositeKey = new Map();
|
|
28066
|
+
var byItemId = new Map();
|
|
28067
|
+
forEachWidget(workspace, function (item) {
|
|
28068
|
+
var id = itemIdOf(item);
|
|
28069
|
+
if (id == null) return;
|
|
28070
|
+
var meta = {
|
|
28071
|
+
component: item.component,
|
|
28072
|
+
events: eventsOf(item, getWidgetConfig),
|
|
28073
|
+
eventHandlers: eventHandlersOf(item, getWidgetConfig)
|
|
28074
|
+
};
|
|
28075
|
+
byCompositeKey.set("".concat(item.component, "|").concat(id), meta);
|
|
28076
|
+
// First-seen wins on numeric-id collisions; good enough for the
|
|
28077
|
+
// "does any widget with this id exist?" fallback.
|
|
28078
|
+
if (!byItemId.has(id)) byItemId.set(id, meta);
|
|
28079
|
+
});
|
|
28080
|
+
var orphans = [];
|
|
28081
|
+
var _iterator2 = _createForOfIteratorHelper$h(wiring),
|
|
28082
|
+
_step2;
|
|
28083
|
+
try {
|
|
28084
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
28085
|
+
var w = _step2.value;
|
|
28086
|
+
var srcKey = "".concat(w.sourceComponent, "|").concat(w.sourceItemId);
|
|
28087
|
+
var src = byCompositeKey.get(srcKey);
|
|
28088
|
+
if (!src) {
|
|
28089
|
+
// No (component, id) match. If some OTHER widget still owns
|
|
28090
|
+
// this id, the source component changed; otherwise it's truly
|
|
28091
|
+
// missing. Preserves the user's ability to see whether a
|
|
28092
|
+
// rename happened vs. a delete.
|
|
28093
|
+
var fallback = byItemId.get(String(w.sourceItemId));
|
|
28094
|
+
orphans.push(_objectSpread$z(_objectSpread$z({}, w), {}, {
|
|
28095
|
+
reason: fallback ? "source-component-mismatch" : "source-missing"
|
|
28096
|
+
}));
|
|
28097
|
+
continue;
|
|
28098
|
+
}
|
|
28099
|
+
if (!src.events.includes(w.eventName)) {
|
|
28100
|
+
orphans.push(_objectSpread$z(_objectSpread$z({}, w), {}, {
|
|
28101
|
+
reason: "event-not-emitted"
|
|
28102
|
+
}));
|
|
28103
|
+
continue;
|
|
28104
|
+
}
|
|
28105
|
+
var receiverKey = "".concat(w.receiverComponent, "|").concat(w.receiverItemId);
|
|
28106
|
+
var receiver = byCompositeKey.get(receiverKey);
|
|
28107
|
+
if (receiver && !receiver.eventHandlers.includes(w.handlerName)) {
|
|
28108
|
+
orphans.push(_objectSpread$z(_objectSpread$z({}, w), {}, {
|
|
28109
|
+
reason: "handler-not-declared"
|
|
28110
|
+
}));
|
|
28111
|
+
}
|
|
28112
|
+
}
|
|
28113
|
+
} catch (err) {
|
|
28114
|
+
_iterator2.e(err);
|
|
28115
|
+
} finally {
|
|
28116
|
+
_iterator2.f();
|
|
28117
|
+
}
|
|
28118
|
+
return orphans;
|
|
28119
|
+
}
|
|
28120
|
+
|
|
28121
|
+
/**
|
|
28122
|
+
* Mutate a workspace tree in place, removing listener bindings whose
|
|
28123
|
+
* source widget is not present in the workspace. Pure: doesn't need
|
|
28124
|
+
* ComponentManager, so it's safe to call from WorkspaceModel during
|
|
28125
|
+
* load — the workspace's own tree is the only source of truth.
|
|
28126
|
+
*
|
|
28127
|
+
* Handles the four cases producing a "source-missing" orphan:
|
|
28128
|
+
* - the emitter widget was deleted
|
|
28129
|
+
* - the emitter widget's id now belongs to a different component
|
|
28130
|
+
* (stored binding has stale component name)
|
|
28131
|
+
* - the source string failed to parse (legacy/garbage data)
|
|
28132
|
+
*
|
|
28133
|
+
* Leaves "event-not-emitted" / "handler-not-declared" cases untouched
|
|
28134
|
+
* because they require the current widget catalog to decide — those
|
|
28135
|
+
* are handled at runtime with full ComponentManager access.
|
|
28136
|
+
*
|
|
28137
|
+
* @returns {number} count of bindings removed (for logging/diagnostics)
|
|
28138
|
+
*/
|
|
28139
|
+
function pruneDeadListenerReferences(workspace) {
|
|
28140
|
+
if (!workspace) return 0;
|
|
28141
|
+
|
|
28142
|
+
// Build the set of live widgets in the tree, keyed by the same
|
|
28143
|
+
// `${component}|${itemId}` the runtime uses to resolve events.
|
|
28144
|
+
var liveKeys = new Set();
|
|
28145
|
+
var _walkForLive = function walkForLive(items) {
|
|
28146
|
+
if (!Array.isArray(items)) return;
|
|
28147
|
+
var _iterator3 = _createForOfIteratorHelper$h(items),
|
|
28148
|
+
_step3;
|
|
28149
|
+
try {
|
|
28150
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
28151
|
+
var item = _step3.value;
|
|
28152
|
+
if (!item || _typeof(item) !== "object") continue;
|
|
28153
|
+
if (item.component) {
|
|
28154
|
+
var id = itemIdOf(item);
|
|
28155
|
+
if (id != null) liveKeys.add("".concat(item.component, "|").concat(id));
|
|
28156
|
+
}
|
|
28157
|
+
if (Array.isArray(item.items)) _walkForLive(item.items);
|
|
28158
|
+
if (Array.isArray(item.layout)) _walkForLive(item.layout);
|
|
28159
|
+
}
|
|
28160
|
+
} catch (err) {
|
|
28161
|
+
_iterator3.e(err);
|
|
28162
|
+
} finally {
|
|
28163
|
+
_iterator3.f();
|
|
28164
|
+
}
|
|
28165
|
+
};
|
|
28166
|
+
_walkForLive(workspace.layout);
|
|
28167
|
+
if (Array.isArray(workspace.pages)) {
|
|
28168
|
+
var _iterator4 = _createForOfIteratorHelper$h(workspace.pages),
|
|
28169
|
+
_step4;
|
|
28170
|
+
try {
|
|
28171
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
28172
|
+
var page = _step4.value;
|
|
28173
|
+
_walkForLive(page === null || page === void 0 ? void 0 : page.layout);
|
|
28174
|
+
}
|
|
28175
|
+
} catch (err) {
|
|
28176
|
+
_iterator4.e(err);
|
|
28177
|
+
} finally {
|
|
28178
|
+
_iterator4.f();
|
|
28179
|
+
}
|
|
28180
|
+
}
|
|
28181
|
+
_walkForLive(workspace.sidebarLayout);
|
|
28182
|
+
var removed = 0;
|
|
28183
|
+
var _pruneListeners = function pruneListeners(items) {
|
|
28184
|
+
if (!Array.isArray(items)) return;
|
|
28185
|
+
var _iterator5 = _createForOfIteratorHelper$h(items),
|
|
28186
|
+
_step5;
|
|
28187
|
+
try {
|
|
28188
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
28189
|
+
var item = _step5.value;
|
|
28190
|
+
if (!item || _typeof(item) !== "object") continue;
|
|
28191
|
+
if (item.listeners && _typeof(item.listeners) === "object") {
|
|
28192
|
+
for (var _i2 = 0, _Object$keys = Object.keys(item.listeners); _i2 < _Object$keys.length; _i2++) {
|
|
28193
|
+
var handler = _Object$keys[_i2];
|
|
28194
|
+
var events = item.listeners[handler];
|
|
28195
|
+
if (!Array.isArray(events)) continue;
|
|
28196
|
+
var kept = [];
|
|
28197
|
+
var _iterator6 = _createForOfIteratorHelper$h(events),
|
|
28198
|
+
_step6;
|
|
28199
|
+
try {
|
|
28200
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
28201
|
+
var raw = _step6.value;
|
|
28202
|
+
var parsed = parseEventString(raw);
|
|
28203
|
+
if (parsed && liveKeys.has("".concat(parsed.component, "|").concat(parsed.itemId))) {
|
|
28204
|
+
kept.push(raw);
|
|
28205
|
+
} else {
|
|
28206
|
+
removed += 1;
|
|
28207
|
+
}
|
|
28208
|
+
}
|
|
28209
|
+
} catch (err) {
|
|
28210
|
+
_iterator6.e(err);
|
|
28211
|
+
} finally {
|
|
28212
|
+
_iterator6.f();
|
|
28213
|
+
}
|
|
28214
|
+
if (kept.length === 0) {
|
|
28215
|
+
delete item.listeners[handler];
|
|
28216
|
+
} else if (kept.length !== events.length) {
|
|
28217
|
+
item.listeners[handler] = kept;
|
|
28218
|
+
}
|
|
28219
|
+
}
|
|
28220
|
+
}
|
|
28221
|
+
if (Array.isArray(item.items)) _pruneListeners(item.items);
|
|
28222
|
+
if (Array.isArray(item.layout)) _pruneListeners(item.layout);
|
|
28223
|
+
}
|
|
28224
|
+
} catch (err) {
|
|
28225
|
+
_iterator5.e(err);
|
|
28226
|
+
} finally {
|
|
28227
|
+
_iterator5.f();
|
|
28228
|
+
}
|
|
28229
|
+
};
|
|
28230
|
+
_pruneListeners(workspace.layout);
|
|
28231
|
+
if (Array.isArray(workspace.pages)) {
|
|
28232
|
+
var _iterator7 = _createForOfIteratorHelper$h(workspace.pages),
|
|
28233
|
+
_step7;
|
|
28234
|
+
try {
|
|
28235
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
28236
|
+
var _page = _step7.value;
|
|
28237
|
+
_pruneListeners(_page === null || _page === void 0 ? void 0 : _page.layout);
|
|
28238
|
+
}
|
|
28239
|
+
} catch (err) {
|
|
28240
|
+
_iterator7.e(err);
|
|
28241
|
+
} finally {
|
|
28242
|
+
_iterator7.f();
|
|
28243
|
+
}
|
|
28244
|
+
}
|
|
28245
|
+
_pruneListeners(workspace.sidebarLayout);
|
|
28246
|
+
return removed;
|
|
28247
|
+
}
|
|
28248
|
+
|
|
28249
|
+
/**
|
|
28250
|
+
* Apply a staged delta to a workspace's listener bindings and return a
|
|
28251
|
+
* NEW workspace object (deep-cloned along the modified path).
|
|
28252
|
+
*
|
|
28253
|
+
* `adds` / `removes` are arrays of
|
|
28254
|
+
* { receiverItemId, handlerName, sourceComponent, sourceItemId, eventName }
|
|
28255
|
+
*
|
|
28256
|
+
* Removes may also pass `raw` (the exact pre-existing event string) for
|
|
28257
|
+
* a precise match; otherwise we match on the canonical formatted form.
|
|
28258
|
+
*/
|
|
28259
|
+
function applyWiringChanges(workspace, _ref) {
|
|
28260
|
+
var _ref$adds = _ref.adds,
|
|
28261
|
+
adds = _ref$adds === void 0 ? [] : _ref$adds,
|
|
28262
|
+
_ref$removes = _ref.removes,
|
|
28263
|
+
removes = _ref$removes === void 0 ? [] : _ref$removes;
|
|
28264
|
+
if (!workspace) return workspace;
|
|
28265
|
+
if (adds.length === 0 && removes.length === 0) return workspace;
|
|
28266
|
+
|
|
28267
|
+
// Group changes by receiver for cheap per-item updates.
|
|
28268
|
+
var byReceiver = new Map();
|
|
28269
|
+
var ensure = function ensure(id) {
|
|
28270
|
+
if (!byReceiver.has(id)) byReceiver.set(id, {
|
|
28271
|
+
adds: [],
|
|
28272
|
+
removes: []
|
|
28273
|
+
});
|
|
28274
|
+
return byReceiver.get(id);
|
|
28275
|
+
};
|
|
28276
|
+
var _iterator8 = _createForOfIteratorHelper$h(adds),
|
|
28277
|
+
_step8;
|
|
28278
|
+
try {
|
|
28279
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
28280
|
+
var a = _step8.value;
|
|
28281
|
+
if (!a.receiverItemId) continue;
|
|
28282
|
+
ensure(String(a.receiverItemId)).adds.push(a);
|
|
28283
|
+
}
|
|
28284
|
+
} catch (err) {
|
|
28285
|
+
_iterator8.e(err);
|
|
28286
|
+
} finally {
|
|
28287
|
+
_iterator8.f();
|
|
28288
|
+
}
|
|
28289
|
+
var _iterator9 = _createForOfIteratorHelper$h(removes),
|
|
28290
|
+
_step9;
|
|
28291
|
+
try {
|
|
28292
|
+
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
28293
|
+
var r = _step9.value;
|
|
28294
|
+
if (!r.receiverItemId) continue;
|
|
28295
|
+
ensure(String(r.receiverItemId)).removes.push(r);
|
|
28296
|
+
}
|
|
28297
|
+
|
|
28298
|
+
// Walk the tree and rebuild listeners on every touched item. We do
|
|
28299
|
+
// shallow clones along the path so React change detection is
|
|
28300
|
+
// reliable — but the tree shape is preserved.
|
|
28301
|
+
} catch (err) {
|
|
28302
|
+
_iterator9.e(err);
|
|
28303
|
+
} finally {
|
|
28304
|
+
_iterator9.f();
|
|
28305
|
+
}
|
|
28306
|
+
var cloneList = function cloneList(items) {
|
|
28307
|
+
return Array.isArray(items) ? items.map(function (item) {
|
|
28308
|
+
return transform(item);
|
|
28309
|
+
}) : items;
|
|
28310
|
+
};
|
|
28311
|
+
var transform = function transform(item) {
|
|
28312
|
+
if (!item || _typeof(item) !== "object") return item;
|
|
28313
|
+
var next = item;
|
|
28314
|
+
var id = itemIdOf(item);
|
|
28315
|
+
var change = id != null ? byReceiver.get(String(id)) : null;
|
|
28316
|
+
if (change) {
|
|
28317
|
+
var newListeners = applyToItem(item.listeners || {}, change);
|
|
28318
|
+
next = _objectSpread$z(_objectSpread$z({}, next), {}, {
|
|
28319
|
+
listeners: newListeners
|
|
28320
|
+
});
|
|
28321
|
+
}
|
|
28322
|
+
if (Array.isArray(next.items)) {
|
|
28323
|
+
next = _objectSpread$z(_objectSpread$z({}, next), {}, {
|
|
28324
|
+
items: cloneList(next.items)
|
|
28325
|
+
});
|
|
28326
|
+
}
|
|
28327
|
+
if (Array.isArray(next.layout)) {
|
|
28328
|
+
next = _objectSpread$z(_objectSpread$z({}, next), {}, {
|
|
28329
|
+
layout: cloneList(next.layout)
|
|
28330
|
+
});
|
|
28331
|
+
}
|
|
28332
|
+
return next;
|
|
28333
|
+
};
|
|
28334
|
+
var updatedWs = _objectSpread$z({}, workspace);
|
|
28335
|
+
if (Array.isArray(workspace.layout)) {
|
|
28336
|
+
updatedWs.layout = cloneList(workspace.layout);
|
|
28337
|
+
}
|
|
28338
|
+
if (Array.isArray(workspace.pages)) {
|
|
28339
|
+
updatedWs.pages = workspace.pages.map(function (page) {
|
|
28340
|
+
return _objectSpread$z(_objectSpread$z({}, page), {}, {
|
|
28341
|
+
layout: cloneList(page.layout)
|
|
28342
|
+
});
|
|
28343
|
+
});
|
|
28344
|
+
}
|
|
28345
|
+
if (Array.isArray(workspace.sidebarLayout)) {
|
|
28346
|
+
updatedWs.sidebarLayout = cloneList(workspace.sidebarLayout);
|
|
28347
|
+
}
|
|
28348
|
+
return updatedWs;
|
|
28349
|
+
}
|
|
28350
|
+
function applyToItem(listeners, _ref2) {
|
|
28351
|
+
var adds = _ref2.adds,
|
|
28352
|
+
removes = _ref2.removes;
|
|
28353
|
+
// Deep enough clone for handler arrays.
|
|
28354
|
+
var next = {};
|
|
28355
|
+
for (var _i3 = 0, _Object$entries2 = Object.entries(listeners); _i3 < _Object$entries2.length; _i3++) {
|
|
28356
|
+
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
|
|
28357
|
+
k = _Object$entries2$_i[0],
|
|
28358
|
+
v = _Object$entries2$_i[1];
|
|
28359
|
+
next[k] = Array.isArray(v) ? _toConsumableArray(v) : v;
|
|
28360
|
+
}
|
|
28361
|
+
|
|
28362
|
+
// Removes first so a re-add (rare) lands.
|
|
28363
|
+
var _iterator0 = _createForOfIteratorHelper$h(removes),
|
|
28364
|
+
_step0;
|
|
28365
|
+
try {
|
|
28366
|
+
var _loop = function _loop() {
|
|
28367
|
+
var r = _step0.value;
|
|
28368
|
+
var target = r.handlerName;
|
|
28369
|
+
if (!target) return 0; // continue
|
|
28370
|
+
var events = next[target];
|
|
28371
|
+
if (!Array.isArray(events)) return 0; // continue
|
|
28372
|
+
var eventStr = r.raw || formatEventString(r.sourceComponent, r.sourceItemId, r.eventName);
|
|
28373
|
+
var filtered = events.filter(function (e) {
|
|
28374
|
+
return e !== eventStr;
|
|
28375
|
+
});
|
|
28376
|
+
if (filtered.length === 0) {
|
|
28377
|
+
delete next[target];
|
|
28378
|
+
} else {
|
|
28379
|
+
next[target] = filtered;
|
|
28380
|
+
}
|
|
28381
|
+
},
|
|
28382
|
+
_ret;
|
|
28383
|
+
for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
|
|
28384
|
+
_ret = _loop();
|
|
28385
|
+
if (_ret === 0) continue;
|
|
28386
|
+
}
|
|
28387
|
+
} catch (err) {
|
|
28388
|
+
_iterator0.e(err);
|
|
28389
|
+
} finally {
|
|
28390
|
+
_iterator0.f();
|
|
28391
|
+
}
|
|
28392
|
+
var _iterator1 = _createForOfIteratorHelper$h(adds),
|
|
28393
|
+
_step1;
|
|
28394
|
+
try {
|
|
28395
|
+
for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
|
|
28396
|
+
var a = _step1.value;
|
|
28397
|
+
var target = a.handlerName;
|
|
28398
|
+
if (!target) continue;
|
|
28399
|
+
var eventStr = formatEventString(a.sourceComponent, a.sourceItemId, a.eventName);
|
|
28400
|
+
var existing = Array.isArray(next[target]) ? next[target] : [];
|
|
28401
|
+
if (existing.includes(eventStr)) continue;
|
|
28402
|
+
next[target] = [].concat(_toConsumableArray(existing), [eventStr]);
|
|
28403
|
+
}
|
|
28404
|
+
} catch (err) {
|
|
28405
|
+
_iterator1.e(err);
|
|
28406
|
+
} finally {
|
|
28407
|
+
_iterator1.f();
|
|
28408
|
+
}
|
|
28409
|
+
return next;
|
|
28410
|
+
}
|
|
28411
|
+
|
|
27567
28412
|
/**
|
|
27568
28413
|
* Default layout for a brand-new workspace: a single 1x1 grid container
|
|
27569
28414
|
* with one empty cell. Mirrors DashboardModel._initializeLayout().
|
|
@@ -27691,6 +28536,13 @@ var WorkspaceModel = function WorkspaceModel(workspaceItem) {
|
|
|
27691
28536
|
workspace.menuId = "menuId" in obj ? obj["menuId"] : 1;
|
|
27692
28537
|
workspace.selectedProviders = "selectedProviders" in obj ? obj["selectedProviders"] : {};
|
|
27693
28538
|
workspace.themeKey = "themeKey" in obj ? obj["themeKey"] : null;
|
|
28539
|
+
|
|
28540
|
+
// Strip any listener bindings whose source widget is no longer in
|
|
28541
|
+
// the tree. These "orphan" bindings are dead — they don't match any
|
|
28542
|
+
// live publisher and never fire — so they're safe to remove at load
|
|
28543
|
+
// time before the renderer wires up subscriptions. Keeps stored
|
|
28544
|
+
// workspaces self-consistent without the user having to do anything.
|
|
28545
|
+
pruneDeadListenerReferences(workspace);
|
|
27694
28546
|
return sanitizeWorkspaceObject(workspace);
|
|
27695
28547
|
// return workspace;
|
|
27696
28548
|
};
|
|
@@ -28027,9 +28879,9 @@ var MenuItemModel = function MenuItemModel() {
|
|
|
28027
28879
|
|
|
28028
28880
|
function ownKeys$y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
28029
28881
|
function _objectSpread$y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$y(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28030
|
-
function _createForOfIteratorHelper$
|
|
28031
|
-
function _unsupportedIterableToArray$
|
|
28032
|
-
function _arrayLikeToArray$
|
|
28882
|
+
function _createForOfIteratorHelper$g(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$g(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
28883
|
+
function _unsupportedIterableToArray$g(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$g(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$g(r, a) : void 0; } }
|
|
28884
|
+
function _arrayLikeToArray$g(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
28033
28885
|
/**
|
|
28034
28886
|
* A Model for a Workspace (Dashboard)
|
|
28035
28887
|
* The Dashboard in this instance is the entire Layout inclusive of the workspaces and widgets
|
|
@@ -28090,12 +28942,18 @@ var DashboardModel = /*#__PURE__*/function () {
|
|
|
28090
28942
|
}
|
|
28091
28943
|
obj = null;
|
|
28092
28944
|
|
|
28945
|
+
// Strip any listener bindings whose source widget is no longer in
|
|
28946
|
+
// the tree — dead bindings never fire and just clutter the stored
|
|
28947
|
+
// workspace. Safe at model-init time because it's purely tree-local
|
|
28948
|
+
// (doesn't need ComponentManager).
|
|
28949
|
+
pruneDeadListenerReferences(this);
|
|
28950
|
+
|
|
28093
28951
|
// Normalize all grids on load to repair any persisted corruption
|
|
28094
28952
|
this._normalizeAllGrids();
|
|
28095
28953
|
|
|
28096
28954
|
// Also normalize grids within pages
|
|
28097
28955
|
if (this.pages.length > 0) {
|
|
28098
|
-
var _iterator = _createForOfIteratorHelper$
|
|
28956
|
+
var _iterator = _createForOfIteratorHelper$g(this.pages),
|
|
28099
28957
|
_step;
|
|
28100
28958
|
try {
|
|
28101
28959
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -30071,7 +30929,7 @@ var DashboardModel = /*#__PURE__*/function () {
|
|
|
30071
30929
|
try {
|
|
30072
30930
|
// Collect all item IDs actively referenced by grid cells
|
|
30073
30931
|
var activeItemIds = new Set();
|
|
30074
|
-
var _iterator2 = _createForOfIteratorHelper$
|
|
30932
|
+
var _iterator2 = _createForOfIteratorHelper$g(this.layout),
|
|
30075
30933
|
_step2;
|
|
30076
30934
|
try {
|
|
30077
30935
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
@@ -30111,7 +30969,7 @@ var DashboardModel = /*#__PURE__*/function () {
|
|
|
30111
30969
|
});
|
|
30112
30970
|
|
|
30113
30971
|
// Clean listener references on remaining items for each removed orphan
|
|
30114
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
30972
|
+
var _iterator3 = _createForOfIteratorHelper$g(orphanedIds),
|
|
30115
30973
|
_step3;
|
|
30116
30974
|
try {
|
|
30117
30975
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
@@ -30770,9 +31628,9 @@ var useDashboard = function useDashboard() {
|
|
|
30770
31628
|
});
|
|
30771
31629
|
};
|
|
30772
31630
|
|
|
30773
|
-
function _createForOfIteratorHelper$
|
|
30774
|
-
function _unsupportedIterableToArray$
|
|
30775
|
-
function _arrayLikeToArray$
|
|
31631
|
+
function _createForOfIteratorHelper$f(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$f(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
31632
|
+
function _unsupportedIterableToArray$f(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$f(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$f(r, a) : void 0; } }
|
|
31633
|
+
function _arrayLikeToArray$f(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
30776
31634
|
|
|
30777
31635
|
/**
|
|
30778
31636
|
* useWidgetProviders Hook
|
|
@@ -30823,7 +31681,7 @@ var useWidgetProviders = function useWidgetProviders() {
|
|
|
30823
31681
|
// 1. Widget-level: stored directly on the layout item by handleSelectProvider
|
|
30824
31682
|
// 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
|
|
30825
31683
|
var providers = {};
|
|
30826
|
-
var _iterator = _createForOfIteratorHelper$
|
|
31684
|
+
var _iterator = _createForOfIteratorHelper$f(providerDeclarations),
|
|
30827
31685
|
_step;
|
|
30828
31686
|
try {
|
|
30829
31687
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -31578,9 +32436,9 @@ var useNotifications = function useNotifications() {
|
|
|
31578
32436
|
};
|
|
31579
32437
|
};
|
|
31580
32438
|
|
|
31581
|
-
function _createForOfIteratorHelper$
|
|
31582
|
-
function _unsupportedIterableToArray$
|
|
31583
|
-
function _arrayLikeToArray$
|
|
32439
|
+
function _createForOfIteratorHelper$e(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$e(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
32440
|
+
function _unsupportedIterableToArray$e(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$e(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$e(r, a) : void 0; } }
|
|
32441
|
+
function _arrayLikeToArray$e(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
31584
32442
|
|
|
31585
32443
|
/**
|
|
31586
32444
|
* useScheduler Hook
|
|
@@ -31653,7 +32511,7 @@ var useScheduler = function useScheduler() {
|
|
|
31653
32511
|
if (pending && pending.length > 0) {
|
|
31654
32512
|
setPendingResults(pending);
|
|
31655
32513
|
// Call handlers for each pending result
|
|
31656
|
-
var _iterator = _createForOfIteratorHelper$
|
|
32514
|
+
var _iterator = _createForOfIteratorHelper$e(pending),
|
|
31657
32515
|
_step;
|
|
31658
32516
|
try {
|
|
31659
32517
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -34680,9 +35538,9 @@ function loadWidgetBundle(source, widgetName) {
|
|
|
34680
35538
|
};
|
|
34681
35539
|
}
|
|
34682
35540
|
|
|
34683
|
-
function _createForOfIteratorHelper$
|
|
34684
|
-
function _unsupportedIterableToArray$
|
|
34685
|
-
function _arrayLikeToArray$
|
|
35541
|
+
function _createForOfIteratorHelper$d(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$d(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
35542
|
+
function _unsupportedIterableToArray$d(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$d(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$d(r, a) : void 0; } }
|
|
35543
|
+
function _arrayLikeToArray$d(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
34686
35544
|
/**
|
|
34687
35545
|
* Validation utilities for grid-first dashboard architecture
|
|
34688
35546
|
*
|
|
@@ -34921,7 +35779,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
|
|
|
34921
35779
|
|
|
34922
35780
|
// Validate each cell
|
|
34923
35781
|
var cells = [];
|
|
34924
|
-
var _iterator = _createForOfIteratorHelper$
|
|
35782
|
+
var _iterator = _createForOfIteratorHelper$d(cellNumbers),
|
|
34925
35783
|
_step;
|
|
34926
35784
|
try {
|
|
34927
35785
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -35269,9 +36127,9 @@ var HARMONY_STRATEGIES = [{
|
|
|
35269
36127
|
label: "Custom"
|
|
35270
36128
|
}];
|
|
35271
36129
|
|
|
35272
|
-
function _createForOfIteratorHelper$
|
|
35273
|
-
function _unsupportedIterableToArray$
|
|
35274
|
-
function _arrayLikeToArray$
|
|
36130
|
+
function _createForOfIteratorHelper$c(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$c(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
36131
|
+
function _unsupportedIterableToArray$c(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$c(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$c(r, a) : void 0; } }
|
|
36132
|
+
function _arrayLikeToArray$c(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
35275
36133
|
/**
|
|
35276
36134
|
* markdownFormParser.js
|
|
35277
36135
|
*
|
|
@@ -35318,7 +36176,7 @@ function detectColumnType(header, cellValues) {
|
|
|
35318
36176
|
}
|
|
35319
36177
|
|
|
35320
36178
|
// Check if any cell has an enum pattern (template placeholders)
|
|
35321
|
-
var _iterator = _createForOfIteratorHelper$
|
|
36179
|
+
var _iterator = _createForOfIteratorHelper$c(cellValues),
|
|
35322
36180
|
_step;
|
|
35323
36181
|
try {
|
|
35324
36182
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -35327,7 +36185,7 @@ function detectColumnType(header, cellValues) {
|
|
|
35327
36185
|
if (options) {
|
|
35328
36186
|
// Include all unique existing cell values as valid options
|
|
35329
36187
|
var allOptions = new Set(options);
|
|
35330
|
-
var _iterator2 = _createForOfIteratorHelper$
|
|
36188
|
+
var _iterator2 = _createForOfIteratorHelper$c(cellValues),
|
|
35331
36189
|
_step2;
|
|
35332
36190
|
try {
|
|
35333
36191
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
@@ -35537,7 +36395,7 @@ function parse(markdown) {
|
|
|
35537
36395
|
*/
|
|
35538
36396
|
function serialize(blocks) {
|
|
35539
36397
|
var parts = [];
|
|
35540
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
36398
|
+
var _iterator3 = _createForOfIteratorHelper$c(blocks),
|
|
35541
36399
|
_step3;
|
|
35542
36400
|
try {
|
|
35543
36401
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
@@ -35552,7 +36410,7 @@ function serialize(blocks) {
|
|
|
35552
36410
|
parts.push("| " + block.columns.map(function () {
|
|
35553
36411
|
return "------";
|
|
35554
36412
|
}).join(" | ") + " |");
|
|
35555
|
-
var _iterator4 = _createForOfIteratorHelper$
|
|
36413
|
+
var _iterator4 = _createForOfIteratorHelper$c(block.rows),
|
|
35556
36414
|
_step4;
|
|
35557
36415
|
try {
|
|
35558
36416
|
var _loop2 = function _loop2() {
|
|
@@ -35573,7 +36431,7 @@ function serialize(blocks) {
|
|
|
35573
36431
|
break;
|
|
35574
36432
|
}
|
|
35575
36433
|
case "list":
|
|
35576
|
-
var _iterator5 = _createForOfIteratorHelper$
|
|
36434
|
+
var _iterator5 = _createForOfIteratorHelper$c(block.items),
|
|
35577
36435
|
_step5;
|
|
35578
36436
|
try {
|
|
35579
36437
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
@@ -35587,7 +36445,7 @@ function serialize(blocks) {
|
|
|
35587
36445
|
}
|
|
35588
36446
|
break;
|
|
35589
36447
|
case "blockquote":
|
|
35590
|
-
var _iterator6 = _createForOfIteratorHelper$
|
|
36448
|
+
var _iterator6 = _createForOfIteratorHelper$c(block.text.split("\n")),
|
|
35591
36449
|
_step6;
|
|
35592
36450
|
try {
|
|
35593
36451
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
@@ -39090,9 +39948,9 @@ var ThemeManagerModal = function ThemeManagerModal(_ref) {
|
|
|
39090
39948
|
|
|
39091
39949
|
function ownKeys$p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
39092
39950
|
function _objectSpread$p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$p(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
39093
|
-
function _createForOfIteratorHelper$
|
|
39094
|
-
function _unsupportedIterableToArray$
|
|
39095
|
-
function _arrayLikeToArray$
|
|
39951
|
+
function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
39952
|
+
function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$b(r, a) : void 0; } }
|
|
39953
|
+
function _arrayLikeToArray$b(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
39096
39954
|
var DASHBOARD_TAGS = ["productivity", "monitoring", "analytics", "communication", "developer", "sales", "marketing", "finance", "project-management", "social", "news", "utilities"];
|
|
39097
39955
|
var BUMP_OPTIONS$1 = [{
|
|
39098
39956
|
value: "patch",
|
|
@@ -39166,7 +40024,7 @@ function collectComponentConfigs() {
|
|
|
39166
40024
|
// fixed "reference" entry.
|
|
39167
40025
|
function seedSelections(plan, dashboardVisibility) {
|
|
39168
40026
|
var selections = {};
|
|
39169
|
-
var _iterator = _createForOfIteratorHelper$
|
|
40027
|
+
var _iterator = _createForOfIteratorHelper$b(plan.widgets || []),
|
|
39170
40028
|
_step;
|
|
39171
40029
|
try {
|
|
39172
40030
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -39499,7 +40357,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
|
|
|
39499
40357
|
break;
|
|
39500
40358
|
}
|
|
39501
40359
|
seenPackages = new Set();
|
|
39502
|
-
_iterator2 = _createForOfIteratorHelper$
|
|
40360
|
+
_iterator2 = _createForOfIteratorHelper$b(plan.widgets || []);
|
|
39503
40361
|
_context2.prev = 2;
|
|
39504
40362
|
_iterator2.s();
|
|
39505
40363
|
case 3:
|
|
@@ -40364,7 +41222,7 @@ function DependencyTable(_ref4) {
|
|
|
40364
41222
|
// row. Each row shows the list of component widgets that live inside it
|
|
40365
41223
|
// so the user knows what's getting published.
|
|
40366
41224
|
var byKey = new Map();
|
|
40367
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
41225
|
+
var _iterator3 = _createForOfIteratorHelper$b(plan.widgets || []),
|
|
40368
41226
|
_step4;
|
|
40369
41227
|
try {
|
|
40370
41228
|
for (_iterator3.s(); !(_step4 = _iterator3.n()).done;) {
|
|
@@ -43994,9 +44852,9 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
43994
44852
|
|
|
43995
44853
|
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; }
|
|
43996
44854
|
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; }
|
|
43997
|
-
function _createForOfIteratorHelper$
|
|
43998
|
-
function _unsupportedIterableToArray$
|
|
43999
|
-
function _arrayLikeToArray$
|
|
44855
|
+
function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
44856
|
+
function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$a(r, a) : void 0; } }
|
|
44857
|
+
function _arrayLikeToArray$a(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
44000
44858
|
function isValidWsUrl(url) {
|
|
44001
44859
|
if (!url) return false;
|
|
44002
44860
|
try {
|
|
@@ -44043,7 +44901,7 @@ function extractCredentialFields(url, headerRows) {
|
|
|
44043
44901
|
fields.add(match[1]);
|
|
44044
44902
|
}
|
|
44045
44903
|
}
|
|
44046
|
-
var _iterator = _createForOfIteratorHelper$
|
|
44904
|
+
var _iterator = _createForOfIteratorHelper$a(headerRows),
|
|
44047
44905
|
_step;
|
|
44048
44906
|
try {
|
|
44049
44907
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -44146,7 +45004,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
|
|
|
44146
45004
|
if (!url.trim()) errs.url = "WebSocket URL is required";else if (!isValidWsUrl(url)) errs.url = "URL must start with ws:// or wss://";
|
|
44147
45005
|
|
|
44148
45006
|
// Check required credential fields are filled
|
|
44149
|
-
var _iterator2 = _createForOfIteratorHelper$
|
|
45007
|
+
var _iterator2 = _createForOfIteratorHelper$a(credentialFields),
|
|
44150
45008
|
_step2;
|
|
44151
45009
|
try {
|
|
44152
45010
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
@@ -44169,7 +45027,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
|
|
|
44169
45027
|
|
|
44170
45028
|
// Build headers object from rows
|
|
44171
45029
|
var headers = {};
|
|
44172
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
45030
|
+
var _iterator3 = _createForOfIteratorHelper$a(headerRows),
|
|
44173
45031
|
_step3;
|
|
44174
45032
|
try {
|
|
44175
45033
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
@@ -44238,7 +45096,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
|
|
|
44238
45096
|
|
|
44239
45097
|
// Build config from current form state (same as handleSave)
|
|
44240
45098
|
headers = {};
|
|
44241
|
-
_iterator4 = _createForOfIteratorHelper$
|
|
45099
|
+
_iterator4 = _createForOfIteratorHelper$a(headerRows);
|
|
44242
45100
|
try {
|
|
44243
45101
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
44244
45102
|
row = _step4.value;
|
|
@@ -47397,9 +48255,9 @@ var InstallWidgetPicker = function InstallWidgetPicker(_ref2) {
|
|
|
47397
48255
|
|
|
47398
48256
|
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; }
|
|
47399
48257
|
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; }
|
|
47400
|
-
function _createForOfIteratorHelper$
|
|
47401
|
-
function _unsupportedIterableToArray$
|
|
47402
|
-
function _arrayLikeToArray$
|
|
48258
|
+
function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
48259
|
+
function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$9(r, a) : void 0; } }
|
|
48260
|
+
function _arrayLikeToArray$9(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
47403
48261
|
var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
47404
48262
|
var onBack = _ref.onBack;
|
|
47405
48263
|
var _useContext = React.useContext(DashReact.ThemeContext),
|
|
@@ -47506,7 +48364,7 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
47506
48364
|
case 1:
|
|
47507
48365
|
widgets = _context2.sent;
|
|
47508
48366
|
names = new Set();
|
|
47509
|
-
_iterator = _createForOfIteratorHelper$
|
|
48367
|
+
_iterator = _createForOfIteratorHelper$9(widgets);
|
|
47510
48368
|
try {
|
|
47511
48369
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
47512
48370
|
w = _step.value;
|
|
@@ -47612,12 +48470,12 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
47612
48470
|
var checkToolConflicts = function checkToolConflicts(widget) {
|
|
47613
48471
|
var conflicts = [];
|
|
47614
48472
|
var packageWidgets = widget.packageWidgets || [];
|
|
47615
|
-
var _iterator2 = _createForOfIteratorHelper$
|
|
48473
|
+
var _iterator2 = _createForOfIteratorHelper$9(packageWidgets),
|
|
47616
48474
|
_step2;
|
|
47617
48475
|
try {
|
|
47618
48476
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
47619
48477
|
var w = _step2.value;
|
|
47620
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
48478
|
+
var _iterator3 = _createForOfIteratorHelper$9(w.providers || []),
|
|
47621
48479
|
_step3;
|
|
47622
48480
|
try {
|
|
47623
48481
|
var _loop = function _loop() {
|
|
@@ -47630,7 +48488,7 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
47630
48488
|
prov = _ref5[1];
|
|
47631
48489
|
return prov.type === p.type && prov.providerClass === "mcp" && prov.allowedTools;
|
|
47632
48490
|
});
|
|
47633
|
-
var _iterator4 = _createForOfIteratorHelper$
|
|
48491
|
+
var _iterator4 = _createForOfIteratorHelper$9(matchingProviders),
|
|
47634
48492
|
_step4;
|
|
47635
48493
|
try {
|
|
47636
48494
|
var _loop2 = function _loop2() {
|
|
@@ -47953,9 +48811,9 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
47953
48811
|
});
|
|
47954
48812
|
};
|
|
47955
48813
|
|
|
47956
|
-
function _createForOfIteratorHelper$
|
|
47957
|
-
function _unsupportedIterableToArray$
|
|
47958
|
-
function _arrayLikeToArray$
|
|
48814
|
+
function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
48815
|
+
function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$8(r, a) : void 0; } }
|
|
48816
|
+
function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
47959
48817
|
|
|
47960
48818
|
/**
|
|
47961
48819
|
* Walk a workspace layout and collect widget component keys that are
|
|
@@ -47969,7 +48827,7 @@ function collectComponentsFromLayout(layout) {
|
|
|
47969
48827
|
|
|
47970
48828
|
// Collect IDs of layout items that are actively referenced by grid cells
|
|
47971
48829
|
var activeItemIds = new Set();
|
|
47972
|
-
var _iterator = _createForOfIteratorHelper$
|
|
48830
|
+
var _iterator = _createForOfIteratorHelper$8(layout),
|
|
47973
48831
|
_step;
|
|
47974
48832
|
try {
|
|
47975
48833
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -47989,7 +48847,7 @@ function collectComponentsFromLayout(layout) {
|
|
|
47989
48847
|
} finally {
|
|
47990
48848
|
_iterator.f();
|
|
47991
48849
|
}
|
|
47992
|
-
var _iterator2 = _createForOfIteratorHelper$
|
|
48850
|
+
var _iterator2 = _createForOfIteratorHelper$8(layout),
|
|
47993
48851
|
_step2;
|
|
47994
48852
|
try {
|
|
47995
48853
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
@@ -48023,7 +48881,7 @@ function findWidgetUsage(componentNames, workspaces) {
|
|
|
48023
48881
|
if (!(componentNames !== null && componentNames !== void 0 && componentNames.length) || !(workspaces !== null && workspaces !== void 0 && workspaces.length)) return [];
|
|
48024
48882
|
var nameSet = new Set(componentNames);
|
|
48025
48883
|
var results = [];
|
|
48026
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
48884
|
+
var _iterator3 = _createForOfIteratorHelper$8(workspaces),
|
|
48027
48885
|
_step3;
|
|
48028
48886
|
try {
|
|
48029
48887
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
@@ -48258,9 +49116,9 @@ var useInstalledWidgets = function useInstalledWidgets() {
|
|
|
48258
49116
|
};
|
|
48259
49117
|
};
|
|
48260
49118
|
|
|
48261
|
-
function _createForOfIteratorHelper$
|
|
48262
|
-
function _unsupportedIterableToArray$
|
|
48263
|
-
function _arrayLikeToArray$
|
|
49119
|
+
function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
49120
|
+
function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$7(r, a) : void 0; } }
|
|
49121
|
+
function _arrayLikeToArray$7(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
48264
49122
|
|
|
48265
49123
|
/**
|
|
48266
49124
|
* useWidgetUpdates — checks the registry for newer versions of installed widgets
|
|
@@ -48390,7 +49248,7 @@ function useWidgetUpdates() {
|
|
|
48390
49248
|
// (install replaces the entire package, not just one widget)
|
|
48391
49249
|
setUpdates(function (prev) {
|
|
48392
49250
|
var next = new Map(prev);
|
|
48393
|
-
var _iterator = _createForOfIteratorHelper$
|
|
49251
|
+
var _iterator = _createForOfIteratorHelper$7(next),
|
|
48394
49252
|
_step;
|
|
48395
49253
|
try {
|
|
48396
49254
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -52031,9 +52889,9 @@ var PopoverItem = function PopoverItem(_ref6) {
|
|
|
52031
52889
|
});
|
|
52032
52890
|
};
|
|
52033
52891
|
|
|
52034
|
-
function _createForOfIteratorHelper$
|
|
52035
|
-
function _unsupportedIterableToArray$
|
|
52036
|
-
function _arrayLikeToArray$
|
|
52892
|
+
function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
52893
|
+
function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$6(r, a) : void 0; } }
|
|
52894
|
+
function _arrayLikeToArray$6(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
52037
52895
|
function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
52038
52896
|
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
52039
52897
|
var DraggableWidgetItem = function DraggableWidgetItem(_ref) {
|
|
@@ -52575,7 +53433,7 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
|
|
|
52575
53433
|
return _context2.abrupt("return");
|
|
52576
53434
|
case 2:
|
|
52577
53435
|
names = new Set();
|
|
52578
|
-
_iterator = _createForOfIteratorHelper$
|
|
53436
|
+
_iterator = _createForOfIteratorHelper$6(widgets);
|
|
52579
53437
|
try {
|
|
52580
53438
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
52581
53439
|
w = _step.value;
|
|
@@ -52963,9 +53821,9 @@ var useMissingWidgets = function useMissingWidgets(workspace) {
|
|
|
52963
53821
|
|
|
52964
53822
|
function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
52965
53823
|
function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
52966
|
-
function _createForOfIteratorHelper$
|
|
52967
|
-
function _unsupportedIterableToArray$
|
|
52968
|
-
function _arrayLikeToArray$
|
|
53824
|
+
function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
53825
|
+
function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$5(r, a) : void 0; } }
|
|
53826
|
+
function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
52969
53827
|
var MissingWidgetsModal = function MissingWidgetsModal(_ref) {
|
|
52970
53828
|
var _ref$missingComponent = _ref.missingComponents,
|
|
52971
53829
|
missingComponents = _ref$missingComponent === void 0 ? [] : _ref$missingComponent,
|
|
@@ -53016,7 +53874,7 @@ var MissingWidgetsModal = function MissingWidgetsModal(_ref) {
|
|
|
53016
53874
|
case 0:
|
|
53017
53875
|
results = [];
|
|
53018
53876
|
seen = new Set();
|
|
53019
|
-
_iterator = _createForOfIteratorHelper$
|
|
53877
|
+
_iterator = _createForOfIteratorHelper$5(missingComponents);
|
|
53020
53878
|
_context2.prev = 1;
|
|
53021
53879
|
_loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
|
|
53022
53880
|
var componentKey, _getWidgetSearchQuery, packageName, widgetName, pkg, result;
|
|
@@ -53337,261 +54195,6 @@ var MissingWidgetsModal = function MissingWidgetsModal(_ref) {
|
|
|
53337
54195
|
});
|
|
53338
54196
|
};
|
|
53339
54197
|
|
|
53340
|
-
function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
53341
|
-
function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$5(r, a) : void 0; } }
|
|
53342
|
-
function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
53343
|
-
/**
|
|
53344
|
-
* providerResolution.js
|
|
53345
|
-
*
|
|
53346
|
-
* Shared helpers for walking a workspace and figuring out which widgets
|
|
53347
|
-
* have required providers that are still unresolved after the 3-layer
|
|
53348
|
-
* resolution (widget → workspace → app-default → null). Used by:
|
|
53349
|
-
*
|
|
53350
|
-
* - DashboardConfigModal to render the Providers tab
|
|
53351
|
-
* - DashboardStage toolbar to show the unresolved-count badge
|
|
53352
|
-
*
|
|
53353
|
-
* Both places need the same answer, so keep the logic here to avoid drift
|
|
53354
|
-
* with the resolution inside `useMcpProvider` / `useWebSocketProvider`.
|
|
53355
|
-
*/
|
|
53356
|
-
|
|
53357
|
-
/**
|
|
53358
|
-
* Resolve which provider name a given widget instance would bind to for
|
|
53359
|
-
* the given provider type. Mirrors the 3-layer chain in useMcpProvider
|
|
53360
|
-
* and useWebSocketProvider exactly:
|
|
53361
|
-
*
|
|
53362
|
-
* 1. widget-level override (layoutItem.selectedProviders[type])
|
|
53363
|
-
* 2. workspace-level binding (workspace.selectedProviders[id][type])
|
|
53364
|
-
* 3. app default (any provider of matching type flagged
|
|
53365
|
-
* `isDefaultForType` in appProviders)
|
|
53366
|
-
* 4. null (truly unresolved)
|
|
53367
|
-
*/
|
|
53368
|
-
function resolveProviderName(_ref) {
|
|
53369
|
-
var _layoutItem$selectedP, _workspace$selectedPr;
|
|
53370
|
-
var providerType = _ref.providerType,
|
|
53371
|
-
layoutItem = _ref.layoutItem,
|
|
53372
|
-
widgetId = _ref.widgetId,
|
|
53373
|
-
workspace = _ref.workspace,
|
|
53374
|
-
appProviders = _ref.appProviders;
|
|
53375
|
-
// 1. Widget-level
|
|
53376
|
-
var widgetLevel = layoutItem === null || layoutItem === void 0 || (_layoutItem$selectedP = layoutItem.selectedProviders) === null || _layoutItem$selectedP === void 0 ? void 0 : _layoutItem$selectedP[providerType];
|
|
53377
|
-
if (widgetLevel) return widgetLevel;
|
|
53378
|
-
|
|
53379
|
-
// 2. Workspace-level
|
|
53380
|
-
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]);
|
|
53381
|
-
if (workspaceLevel) return workspaceLevel;
|
|
53382
|
-
|
|
53383
|
-
// 3. App default — appProviders is either a map keyed by name or an
|
|
53384
|
-
// array. Support both because different callers shape it either way.
|
|
53385
|
-
if (appProviders) {
|
|
53386
|
-
if (Array.isArray(appProviders)) {
|
|
53387
|
-
var _iterator = _createForOfIteratorHelper$5(appProviders),
|
|
53388
|
-
_step;
|
|
53389
|
-
try {
|
|
53390
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
53391
|
-
var data = _step.value;
|
|
53392
|
-
if ((data === null || data === void 0 ? void 0 : data.type) === providerType && (data === null || data === void 0 ? void 0 : data.isDefaultForType) === true) {
|
|
53393
|
-
return data.name;
|
|
53394
|
-
}
|
|
53395
|
-
}
|
|
53396
|
-
} catch (err) {
|
|
53397
|
-
_iterator.e(err);
|
|
53398
|
-
} finally {
|
|
53399
|
-
_iterator.f();
|
|
53400
|
-
}
|
|
53401
|
-
} else if (_typeof(appProviders) === "object") {
|
|
53402
|
-
for (var _i = 0, _Object$entries = Object.entries(appProviders); _i < _Object$entries.length; _i++) {
|
|
53403
|
-
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
53404
|
-
name = _Object$entries$_i[0],
|
|
53405
|
-
_data = _Object$entries$_i[1];
|
|
53406
|
-
if ((_data === null || _data === void 0 ? void 0 : _data.type) === providerType && (_data === null || _data === void 0 ? void 0 : _data.isDefaultForType) === true) {
|
|
53407
|
-
return name;
|
|
53408
|
-
}
|
|
53409
|
-
}
|
|
53410
|
-
}
|
|
53411
|
-
}
|
|
53412
|
-
return null;
|
|
53413
|
-
}
|
|
53414
|
-
|
|
53415
|
-
/**
|
|
53416
|
-
* Walk every layout container in a workspace and yield each widget
|
|
53417
|
-
* instance with its concrete layout item. Handles the main layout,
|
|
53418
|
-
* per-page layouts, the sidebar, and nested LayoutGridContainers whose
|
|
53419
|
-
* children are stored on `items`/`layout`.
|
|
53420
|
-
*/
|
|
53421
|
-
function forEachWidget(workspace, visit) {
|
|
53422
|
-
if (!workspace) return;
|
|
53423
|
-
var _walk = function walk(items) {
|
|
53424
|
-
if (!Array.isArray(items)) return;
|
|
53425
|
-
var _iterator2 = _createForOfIteratorHelper$5(items),
|
|
53426
|
-
_step2;
|
|
53427
|
-
try {
|
|
53428
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
53429
|
-
var item = _step2.value;
|
|
53430
|
-
if (!item || _typeof(item) !== "object") continue;
|
|
53431
|
-
// A "widget" is any layout item with a component name.
|
|
53432
|
-
// Containers can have both a component name AND nested items
|
|
53433
|
-
// (e.g. LayoutGridContainer), so still recurse.
|
|
53434
|
-
if (item.component) visit(item);
|
|
53435
|
-
if (Array.isArray(item.items)) _walk(item.items);
|
|
53436
|
-
if (Array.isArray(item.layout)) _walk(item.layout);
|
|
53437
|
-
}
|
|
53438
|
-
} catch (err) {
|
|
53439
|
-
_iterator2.e(err);
|
|
53440
|
-
} finally {
|
|
53441
|
-
_iterator2.f();
|
|
53442
|
-
}
|
|
53443
|
-
};
|
|
53444
|
-
_walk(workspace.layout);
|
|
53445
|
-
if (Array.isArray(workspace.pages)) {
|
|
53446
|
-
var _iterator3 = _createForOfIteratorHelper$5(workspace.pages),
|
|
53447
|
-
_step3;
|
|
53448
|
-
try {
|
|
53449
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
53450
|
-
var page = _step3.value;
|
|
53451
|
-
_walk(page === null || page === void 0 ? void 0 : page.layout);
|
|
53452
|
-
}
|
|
53453
|
-
} catch (err) {
|
|
53454
|
-
_iterator3.e(err);
|
|
53455
|
-
} finally {
|
|
53456
|
-
_iterator3.f();
|
|
53457
|
-
}
|
|
53458
|
-
}
|
|
53459
|
-
_walk(workspace.sidebarLayout);
|
|
53460
|
-
}
|
|
53461
|
-
|
|
53462
|
-
/**
|
|
53463
|
-
* Compute the list of unresolved required providers across a workspace.
|
|
53464
|
-
*
|
|
53465
|
-
* @param {object} args
|
|
53466
|
-
* @param {object} args.workspace The workspace (with layout/pages/sidebarLayout/selectedProviders).
|
|
53467
|
-
* @param {object|Array} args.appProviders
|
|
53468
|
-
* Map keyed by provider name, or an array of provider objects. Each
|
|
53469
|
-
* entry has at least `{ type, isDefaultForType }`.
|
|
53470
|
-
* @param {(componentName: string) => Array<{type, required?, providerClass?}>} args.getWidgetRequirements
|
|
53471
|
-
* Returns the `providers: [...]` declaration from the component's
|
|
53472
|
-
* `.dash.js` (via `ComponentManager.componentMap()[name].providers`).
|
|
53473
|
-
*
|
|
53474
|
-
* @returns {Array<{ widgetId, component, providerType, providerClass, layoutItem }>}
|
|
53475
|
-
* One entry per (widget instance, required provider type) that lacks
|
|
53476
|
-
* a binding.
|
|
53477
|
-
*/
|
|
53478
|
-
function getUnresolvedProviders(_ref2) {
|
|
53479
|
-
var workspace = _ref2.workspace,
|
|
53480
|
-
appProviders = _ref2.appProviders,
|
|
53481
|
-
getWidgetRequirements = _ref2.getWidgetRequirements;
|
|
53482
|
-
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
53483
|
-
var unresolved = [];
|
|
53484
|
-
forEachWidget(workspace, function (item) {
|
|
53485
|
-
var requirements = getWidgetRequirements(item.component) || [];
|
|
53486
|
-
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
53487
|
-
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
53488
|
-
var _iterator4 = _createForOfIteratorHelper$5(requirements),
|
|
53489
|
-
_step4;
|
|
53490
|
-
try {
|
|
53491
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
53492
|
-
var req = _step4.value;
|
|
53493
|
-
if (!req || !req.type) continue;
|
|
53494
|
-
if (req.required === false) continue; // optional, skip
|
|
53495
|
-
|
|
53496
|
-
var name = resolveProviderName({
|
|
53497
|
-
providerType: req.type,
|
|
53498
|
-
layoutItem: item,
|
|
53499
|
-
widgetId: widgetId,
|
|
53500
|
-
workspace: workspace,
|
|
53501
|
-
appProviders: appProviders
|
|
53502
|
-
});
|
|
53503
|
-
if (!name) {
|
|
53504
|
-
unresolved.push({
|
|
53505
|
-
widgetId: widgetId,
|
|
53506
|
-
component: item.component,
|
|
53507
|
-
providerType: req.type,
|
|
53508
|
-
providerClass: req.providerClass || null,
|
|
53509
|
-
layoutItem: item
|
|
53510
|
-
});
|
|
53511
|
-
}
|
|
53512
|
-
}
|
|
53513
|
-
} catch (err) {
|
|
53514
|
-
_iterator4.e(err);
|
|
53515
|
-
} finally {
|
|
53516
|
-
_iterator4.f();
|
|
53517
|
-
}
|
|
53518
|
-
});
|
|
53519
|
-
return unresolved;
|
|
53520
|
-
}
|
|
53521
|
-
|
|
53522
|
-
/**
|
|
53523
|
-
* Group an unresolved-provider list (or any `{widget, providerType}` list)
|
|
53524
|
-
* by provider type, so the Providers tab can render one row per unique
|
|
53525
|
-
* type with N widgets beneath.
|
|
53526
|
-
*/
|
|
53527
|
-
function groupByProviderType(unresolved) {
|
|
53528
|
-
var byType = new Map();
|
|
53529
|
-
var _iterator5 = _createForOfIteratorHelper$5(unresolved || []),
|
|
53530
|
-
_step5;
|
|
53531
|
-
try {
|
|
53532
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
53533
|
-
var u = _step5.value;
|
|
53534
|
-
if (!(u !== null && u !== void 0 && u.providerType)) continue;
|
|
53535
|
-
if (!byType.has(u.providerType)) byType.set(u.providerType, []);
|
|
53536
|
-
byType.get(u.providerType).push(u);
|
|
53537
|
-
}
|
|
53538
|
-
} catch (err) {
|
|
53539
|
-
_iterator5.e(err);
|
|
53540
|
-
} finally {
|
|
53541
|
-
_iterator5.f();
|
|
53542
|
-
}
|
|
53543
|
-
return byType;
|
|
53544
|
-
}
|
|
53545
|
-
|
|
53546
|
-
/**
|
|
53547
|
-
* Summarize every widget in the workspace that requires ANY provider,
|
|
53548
|
-
* regardless of whether it's already resolved. Drives the Providers tab's
|
|
53549
|
-
* "show per-widget overrides" expansion — the modal lists all widgets so
|
|
53550
|
-
* the user can change an explicit override even for types that are
|
|
53551
|
-
* already resolved via the app default.
|
|
53552
|
-
*/
|
|
53553
|
-
function getAllProviderBindings(_ref3) {
|
|
53554
|
-
var workspace = _ref3.workspace,
|
|
53555
|
-
appProviders = _ref3.appProviders,
|
|
53556
|
-
getWidgetRequirements = _ref3.getWidgetRequirements;
|
|
53557
|
-
if (!workspace || typeof getWidgetRequirements !== "function") return [];
|
|
53558
|
-
var bindings = [];
|
|
53559
|
-
forEachWidget(workspace, function (item) {
|
|
53560
|
-
var requirements = getWidgetRequirements(item.component) || [];
|
|
53561
|
-
if (!Array.isArray(requirements) || requirements.length === 0) return;
|
|
53562
|
-
var widgetId = item.uuidString || item.uuid || item.id || null;
|
|
53563
|
-
var _iterator6 = _createForOfIteratorHelper$5(requirements),
|
|
53564
|
-
_step6;
|
|
53565
|
-
try {
|
|
53566
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
53567
|
-
var req = _step6.value;
|
|
53568
|
-
if (!req || !req.type) continue;
|
|
53569
|
-
var name = resolveProviderName({
|
|
53570
|
-
providerType: req.type,
|
|
53571
|
-
layoutItem: item,
|
|
53572
|
-
widgetId: widgetId,
|
|
53573
|
-
workspace: workspace,
|
|
53574
|
-
appProviders: appProviders
|
|
53575
|
-
});
|
|
53576
|
-
bindings.push({
|
|
53577
|
-
widgetId: widgetId,
|
|
53578
|
-
component: item.component,
|
|
53579
|
-
providerType: req.type,
|
|
53580
|
-
providerClass: req.providerClass || null,
|
|
53581
|
-
required: req.required !== false,
|
|
53582
|
-
resolvedProviderName: name,
|
|
53583
|
-
layoutItem: item
|
|
53584
|
-
});
|
|
53585
|
-
}
|
|
53586
|
-
} catch (err) {
|
|
53587
|
-
_iterator6.e(err);
|
|
53588
|
-
} finally {
|
|
53589
|
-
_iterator6.f();
|
|
53590
|
-
}
|
|
53591
|
-
});
|
|
53592
|
-
return bindings;
|
|
53593
|
-
}
|
|
53594
|
-
|
|
53595
54198
|
function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
53596
54199
|
function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$4(r, a) : void 0; } }
|
|
53597
54200
|
function _arrayLikeToArray$4(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -53603,19 +54206,43 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
53603
54206
|
workspace = _ref.workspace,
|
|
53604
54207
|
appProviders = _ref.appProviders,
|
|
53605
54208
|
getWidgetRequirements = _ref.getWidgetRequirements,
|
|
53606
|
-
|
|
54209
|
+
_ref$getWidgetConfig = _ref.getWidgetConfig,
|
|
54210
|
+
getWidgetConfig = _ref$getWidgetConfig === void 0 ? null : _ref$getWidgetConfig,
|
|
54211
|
+
onSaveBindings = _ref.onSaveBindings,
|
|
54212
|
+
onSaveListeners = _ref.onSaveListeners,
|
|
54213
|
+
_ref$initialTab = _ref.initialTab,
|
|
54214
|
+
initialTab = _ref$initialTab === void 0 ? "providers" : _ref$initialTab;
|
|
53607
54215
|
var _useContext = React.useContext(DashReact.ThemeContext),
|
|
53608
54216
|
currentTheme = _useContext.currentTheme;
|
|
53609
54217
|
var panelStyles = DashReact.getStylesForItem(DashReact.themeObjects.PANEL, currentTheme, {
|
|
53610
54218
|
grow: false
|
|
53611
54219
|
});
|
|
53612
54220
|
|
|
54221
|
+
// Active tab. Defaults to whatever the parent requested via
|
|
54222
|
+
// `initialTab`. Resets on each open via the modal's mount cycle.
|
|
54223
|
+
var _useState = React.useState(initialTab),
|
|
54224
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
54225
|
+
activeTab = _useState2[0],
|
|
54226
|
+
setActiveTab = _useState2[1];
|
|
54227
|
+
|
|
53613
54228
|
// Staged changes: widgetId -> { [providerType]: providerName }. Empty
|
|
53614
54229
|
// until the user picks something; applied on Save via onSaveBindings.
|
|
53615
|
-
var
|
|
53616
|
-
|
|
53617
|
-
staged =
|
|
53618
|
-
setStaged =
|
|
54230
|
+
var _useState3 = React.useState({}),
|
|
54231
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
54232
|
+
staged = _useState4[0],
|
|
54233
|
+
setStaged = _useState4[1];
|
|
54234
|
+
|
|
54235
|
+
// Staged listener changes — collected in the Listeners tab's UI and
|
|
54236
|
+
// committed alongside provider changes when the user clicks Save.
|
|
54237
|
+
// Shape: { adds: [...], removes: [...] } where each item is
|
|
54238
|
+
// { receiverItemId, handlerName, sourceComponent, sourceItemId, eventName, raw? }.
|
|
54239
|
+
var _useState5 = React.useState({
|
|
54240
|
+
adds: [],
|
|
54241
|
+
removes: []
|
|
54242
|
+
}),
|
|
54243
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
54244
|
+
stagedListeners = _useState6[0],
|
|
54245
|
+
setStagedListeners = _useState6[1];
|
|
53619
54246
|
var bindings = React.useMemo(function () {
|
|
53620
54247
|
return getAllProviderBindings({
|
|
53621
54248
|
workspace: workspace,
|
|
@@ -53681,9 +54308,98 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
53681
54308
|
var unresolvedCount = effectiveBindings.filter(function (b) {
|
|
53682
54309
|
return b.required && !b.resolvedProviderName;
|
|
53683
54310
|
}).length;
|
|
54311
|
+
|
|
54312
|
+
// Listeners tab data — emitter list, receiver list, current wiring,
|
|
54313
|
+
// orphans. All recompute when the workspace or staged delta changes
|
|
54314
|
+
// so the UI reflects pending edits without saving first.
|
|
54315
|
+
var wConfig = React.useMemo(function () {
|
|
54316
|
+
return typeof getWidgetConfig === "function" ? getWidgetConfig : function () {
|
|
54317
|
+
return null;
|
|
54318
|
+
};
|
|
54319
|
+
}, [getWidgetConfig]);
|
|
54320
|
+
var emitters = React.useMemo(function () {
|
|
54321
|
+
return getEmitters(workspace, wConfig);
|
|
54322
|
+
}, [workspace, wConfig]);
|
|
54323
|
+
var receivers = React.useMemo(function () {
|
|
54324
|
+
return getReceivers(workspace, wConfig);
|
|
54325
|
+
}, [workspace, wConfig]);
|
|
54326
|
+
var persistedWiring = React.useMemo(function () {
|
|
54327
|
+
return getCurrentWiring(workspace);
|
|
54328
|
+
}, [workspace]);
|
|
54329
|
+
var orphans = React.useMemo(function () {
|
|
54330
|
+
return getOrphanedListeners(workspace, wConfig);
|
|
54331
|
+
}, [workspace, wConfig]);
|
|
54332
|
+
var effectiveWiring = React.useMemo(function () {
|
|
54333
|
+
// Apply staged removes/adds to the persisted wiring for an
|
|
54334
|
+
// accurate "what will be there after save" view, then annotate
|
|
54335
|
+
// each entry with its orphan reason (if any) so HandlerCard chips
|
|
54336
|
+
// can render a stale-binding warning inline.
|
|
54337
|
+
var next = persistedWiring;
|
|
54338
|
+
if (stagedListeners.removes.length > 0) {
|
|
54339
|
+
next = next.filter(function (w) {
|
|
54340
|
+
return !stagedListeners.removes.some(function (r) {
|
|
54341
|
+
return sameWiringEntry(r, w);
|
|
54342
|
+
});
|
|
54343
|
+
});
|
|
54344
|
+
}
|
|
54345
|
+
if (stagedListeners.adds.length > 0) {
|
|
54346
|
+
// Append; avoid duplicates against current state.
|
|
54347
|
+
var _iterator2 = _createForOfIteratorHelper$4(stagedListeners.adds),
|
|
54348
|
+
_step2;
|
|
54349
|
+
try {
|
|
54350
|
+
var _loop = function _loop() {
|
|
54351
|
+
var a = _step2.value;
|
|
54352
|
+
if (!next.some(function (w) {
|
|
54353
|
+
return sameWiringEntry(w, a);
|
|
54354
|
+
})) {
|
|
54355
|
+
next = [].concat(_toConsumableArray(next), [_objectSpread$7(_objectSpread$7({}, a), {}, {
|
|
54356
|
+
raw: formatEventString(a.sourceComponent, a.sourceItemId, a.eventName)
|
|
54357
|
+
})]);
|
|
54358
|
+
}
|
|
54359
|
+
};
|
|
54360
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
54361
|
+
_loop();
|
|
54362
|
+
}
|
|
54363
|
+
} catch (err) {
|
|
54364
|
+
_iterator2.e(err);
|
|
54365
|
+
} finally {
|
|
54366
|
+
_iterator2.f();
|
|
54367
|
+
}
|
|
54368
|
+
}
|
|
54369
|
+
if (orphans.length === 0) return next;
|
|
54370
|
+
var orphanIndex = new Map();
|
|
54371
|
+
var _iterator3 = _createForOfIteratorHelper$4(orphans),
|
|
54372
|
+
_step3;
|
|
54373
|
+
try {
|
|
54374
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
54375
|
+
var o = _step3.value;
|
|
54376
|
+
orphanIndex.set("".concat(o.receiverItemId, "|").concat(o.handlerName, "|").concat(o.sourceComponent, "|").concat(o.sourceItemId, "|").concat(o.eventName), o.reason);
|
|
54377
|
+
}
|
|
54378
|
+
} catch (err) {
|
|
54379
|
+
_iterator3.e(err);
|
|
54380
|
+
} finally {
|
|
54381
|
+
_iterator3.f();
|
|
54382
|
+
}
|
|
54383
|
+
return next.map(function (w) {
|
|
54384
|
+
var key = "".concat(w.receiverItemId, "|").concat(w.handlerName, "|").concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
|
|
54385
|
+
var reason = orphanIndex.get(key);
|
|
54386
|
+
return reason ? _objectSpread$7(_objectSpread$7({}, w), {}, {
|
|
54387
|
+
isOrphan: true,
|
|
54388
|
+
orphanReason: reason
|
|
54389
|
+
}) : w;
|
|
54390
|
+
});
|
|
54391
|
+
}, [persistedWiring, stagedListeners, orphans]);
|
|
54392
|
+
// Orphans reduced by what the user has already staged for removal.
|
|
54393
|
+
React.useMemo(function () {
|
|
54394
|
+
return orphans.filter(function (o) {
|
|
54395
|
+
return !stagedListeners.removes.some(function (r) {
|
|
54396
|
+
return sameWiringEntry(r, o);
|
|
54397
|
+
});
|
|
54398
|
+
});
|
|
54399
|
+
}, [orphans, stagedListeners.removes]);
|
|
53684
54400
|
var hasStagedChanges = Object.keys(staged).some(function (wid) {
|
|
53685
54401
|
return Object.keys(staged[wid] || {}).length > 0;
|
|
53686
|
-
});
|
|
54402
|
+
}) || stagedListeners.adds.length > 0 || stagedListeners.removes.length > 0;
|
|
53687
54403
|
function stageBinding(widgetId, providerType, providerName) {
|
|
53688
54404
|
setStaged(function (prev) {
|
|
53689
54405
|
var next = _objectSpread$7({}, prev);
|
|
@@ -53703,24 +54419,75 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
53703
54419
|
});
|
|
53704
54420
|
setStaged(function (prev) {
|
|
53705
54421
|
var next = _objectSpread$7({}, prev);
|
|
53706
|
-
var
|
|
53707
|
-
|
|
54422
|
+
var _iterator4 = _createForOfIteratorHelper$4(affected),
|
|
54423
|
+
_step4;
|
|
53708
54424
|
try {
|
|
53709
|
-
for (
|
|
53710
|
-
var b =
|
|
54425
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
54426
|
+
var b = _step4.value;
|
|
53711
54427
|
if (!b.widgetId) continue;
|
|
53712
54428
|
next[b.widgetId] = _objectSpread$7(_objectSpread$7({}, next[b.widgetId] || {}), {}, _defineProperty({}, providerType, providerName || ""));
|
|
53713
54429
|
}
|
|
53714
54430
|
} catch (err) {
|
|
53715
|
-
|
|
54431
|
+
_iterator4.e(err);
|
|
53716
54432
|
} finally {
|
|
53717
|
-
|
|
54433
|
+
_iterator4.f();
|
|
53718
54434
|
}
|
|
53719
54435
|
return next;
|
|
53720
54436
|
});
|
|
53721
54437
|
}
|
|
54438
|
+
|
|
54439
|
+
// Listener tab staging helpers. We treat add/remove as queue
|
|
54440
|
+
// operations so the user can build up several edits before
|
|
54441
|
+
// committing. Toggling a binding that's already staged in the
|
|
54442
|
+
// opposite direction cancels the staged change rather than queuing
|
|
54443
|
+
// both — keeps the diff minimal and the save predictable.
|
|
54444
|
+
var stageListenerAdd = function stageListenerAdd(entry) {
|
|
54445
|
+
setStagedListeners(function (prev) {
|
|
54446
|
+
var removeIdx = prev.removes.findIndex(function (r) {
|
|
54447
|
+
return sameWiringEntry(r, entry);
|
|
54448
|
+
});
|
|
54449
|
+
if (removeIdx >= 0) {
|
|
54450
|
+
return {
|
|
54451
|
+
adds: prev.adds,
|
|
54452
|
+
removes: prev.removes.filter(function (_, i) {
|
|
54453
|
+
return i !== removeIdx;
|
|
54454
|
+
})
|
|
54455
|
+
};
|
|
54456
|
+
}
|
|
54457
|
+
if (prev.adds.some(function (a) {
|
|
54458
|
+
return sameWiringEntry(a, entry);
|
|
54459
|
+
})) return prev;
|
|
54460
|
+
return {
|
|
54461
|
+
adds: [].concat(_toConsumableArray(prev.adds), [entry]),
|
|
54462
|
+
removes: prev.removes
|
|
54463
|
+
};
|
|
54464
|
+
});
|
|
54465
|
+
};
|
|
54466
|
+
var stageListenerRemove = function stageListenerRemove(entry) {
|
|
54467
|
+
setStagedListeners(function (prev) {
|
|
54468
|
+
var addIdx = prev.adds.findIndex(function (a) {
|
|
54469
|
+
return sameWiringEntry(a, entry);
|
|
54470
|
+
});
|
|
54471
|
+
if (addIdx >= 0) {
|
|
54472
|
+
return {
|
|
54473
|
+
adds: prev.adds.filter(function (_, i) {
|
|
54474
|
+
return i !== addIdx;
|
|
54475
|
+
}),
|
|
54476
|
+
removes: prev.removes
|
|
54477
|
+
};
|
|
54478
|
+
}
|
|
54479
|
+
if (prev.removes.some(function (r) {
|
|
54480
|
+
return sameWiringEntry(r, entry);
|
|
54481
|
+
})) return prev;
|
|
54482
|
+
return {
|
|
54483
|
+
adds: prev.adds,
|
|
54484
|
+
removes: [].concat(_toConsumableArray(prev.removes), [entry])
|
|
54485
|
+
};
|
|
54486
|
+
});
|
|
54487
|
+
};
|
|
53722
54488
|
function handleSave() {
|
|
53723
|
-
|
|
54489
|
+
// Provider changes
|
|
54490
|
+
var providerChanges = [];
|
|
53724
54491
|
for (var _i2 = 0, _Object$entries2 = Object.entries(staged); _i2 < _Object$entries2.length; _i2++) {
|
|
53725
54492
|
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
|
|
53726
54493
|
widgetId = _Object$entries2$_i[0],
|
|
@@ -53729,31 +54496,44 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
53729
54496
|
var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2),
|
|
53730
54497
|
providerType = _Object$entries3$_i[0],
|
|
53731
54498
|
providerName = _Object$entries3$_i[1];
|
|
53732
|
-
|
|
54499
|
+
providerChanges.push({
|
|
53733
54500
|
widgetId: widgetId,
|
|
53734
54501
|
providerType: providerType,
|
|
53735
54502
|
providerName: providerName || null
|
|
53736
54503
|
});
|
|
53737
54504
|
}
|
|
53738
54505
|
}
|
|
53739
|
-
if (typeof onSaveBindings === "function")
|
|
54506
|
+
if (providerChanges.length > 0 && typeof onSaveBindings === "function") {
|
|
54507
|
+
onSaveBindings(providerChanges);
|
|
54508
|
+
}
|
|
54509
|
+
|
|
54510
|
+
// Listener changes
|
|
54511
|
+
if ((stagedListeners.adds.length > 0 || stagedListeners.removes.length > 0) && typeof onSaveListeners === "function") {
|
|
54512
|
+
onSaveListeners(stagedListeners);
|
|
54513
|
+
}
|
|
53740
54514
|
setStaged({});
|
|
54515
|
+
setStagedListeners({
|
|
54516
|
+
adds: [],
|
|
54517
|
+
removes: []
|
|
54518
|
+
});
|
|
53741
54519
|
setIsOpen(false);
|
|
53742
54520
|
}
|
|
53743
54521
|
function handleCancel() {
|
|
53744
54522
|
setStaged({});
|
|
54523
|
+
setStagedListeners({
|
|
54524
|
+
adds: [],
|
|
54525
|
+
removes: []
|
|
54526
|
+
});
|
|
53745
54527
|
setIsOpen(false);
|
|
53746
54528
|
}
|
|
53747
54529
|
if (!isOpen) return null;
|
|
53748
54530
|
return /*#__PURE__*/jsxRuntime.jsx(DashReact.Modal, {
|
|
53749
54531
|
isOpen: isOpen,
|
|
53750
54532
|
setIsOpen: handleCancel,
|
|
53751
|
-
width: "w-
|
|
54533
|
+
width: "w-11/12 xl:w-5/6",
|
|
54534
|
+
height: "h-5/6",
|
|
53752
54535
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53753
|
-
className: "flex flex-col rounded-lg overflow-clip border ".concat(panelStyles.backgroundColor || "", " ").concat(panelStyles.borderColor || "", " ").concat(panelStyles.textColor || ""),
|
|
53754
|
-
style: {
|
|
53755
|
-
maxHeight: "80vh"
|
|
53756
|
-
},
|
|
54536
|
+
className: "flex flex-col h-full w-full rounded-lg overflow-clip border ".concat(panelStyles.backgroundColor || "", " ").concat(panelStyles.borderColor || "", " ").concat(panelStyles.textColor || ""),
|
|
53757
54537
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53758
54538
|
className: "flex-shrink-0 flex flex-row items-center justify-between p-4 border-b border-white/10",
|
|
53759
54539
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
@@ -53779,47 +54559,37 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
53779
54559
|
})]
|
|
53780
54560
|
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53781
54561
|
className: "flex-shrink-0 flex flex-row items-center gap-2 px-4 pt-3 border-b border-white/10",
|
|
53782
|
-
children: [/*#__PURE__*/jsxRuntime.
|
|
53783
|
-
|
|
53784
|
-
|
|
53785
|
-
|
|
53786
|
-
|
|
53787
|
-
|
|
53788
|
-
|
|
53789
|
-
|
|
53790
|
-
|
|
53791
|
-
|
|
53792
|
-
|
|
53793
|
-
|
|
53794
|
-
|
|
53795
|
-
|
|
53796
|
-
|
|
53797
|
-
|
|
53798
|
-
var options = providersByType.get(providerType) || [];
|
|
53799
|
-
var unresolvedHere = rows.filter(function (r) {
|
|
53800
|
-
return r.required && !r.resolvedProviderName;
|
|
53801
|
-
}).length;
|
|
53802
|
-
// The "top" dropdown reflects the currently-agreeable choice:
|
|
53803
|
-
// if every row has the same resolved value, show it; otherwise
|
|
53804
|
-
// show "" (mixed) so the dropdown is neutral.
|
|
53805
|
-
var allSame = rows.every(function (r) {
|
|
53806
|
-
return r.resolvedProviderName === rows[0].resolvedProviderName;
|
|
53807
|
-
});
|
|
53808
|
-
var topValue = allSame ? rows[0].resolvedProviderName || "" : "";
|
|
53809
|
-
return /*#__PURE__*/jsxRuntime.jsx(ProviderTypeRow, {
|
|
53810
|
-
providerType: providerType,
|
|
53811
|
-
rows: rows,
|
|
53812
|
-
options: options,
|
|
53813
|
-
topValue: topValue,
|
|
53814
|
-
unresolvedHere: unresolvedHere,
|
|
53815
|
-
onBulk: function onBulk(name) {
|
|
53816
|
-
return stageBulk(providerType, name);
|
|
53817
|
-
},
|
|
53818
|
-
onPerWidget: function onPerWidget(widgetId, name) {
|
|
53819
|
-
return stageBinding(widgetId, providerType, name);
|
|
53820
|
-
}
|
|
53821
|
-
}, providerType);
|
|
54562
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("button", {
|
|
54563
|
+
type: "button",
|
|
54564
|
+
onClick: function onClick() {
|
|
54565
|
+
return setActiveTab("providers");
|
|
54566
|
+
},
|
|
54567
|
+
className: "px-3 py-1.5 text-sm font-medium -mb-px border-b-2 ".concat(activeTab === "providers" ? "border-indigo-400" : "border-transparent opacity-60 hover:opacity-100"),
|
|
54568
|
+
children: ["Providers", unresolvedCount > 0 && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54569
|
+
className: "ml-2 inline-block h-1.5 w-1.5 rounded-full bg-amber-400 align-middle"
|
|
54570
|
+
})]
|
|
54571
|
+
}), /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
54572
|
+
type: "button",
|
|
54573
|
+
onClick: function onClick() {
|
|
54574
|
+
return setActiveTab("listeners");
|
|
54575
|
+
},
|
|
54576
|
+
className: "px-3 py-1.5 text-sm font-medium -mb-px border-b-2 ".concat(activeTab === "listeners" ? "border-indigo-400" : "border-transparent opacity-60 hover:opacity-100"),
|
|
54577
|
+
children: "Listeners"
|
|
53822
54578
|
})]
|
|
54579
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54580
|
+
className: "p-5 flex-1 min-h-0",
|
|
54581
|
+
children: activeTab === "listeners" ? /*#__PURE__*/jsxRuntime.jsx(ListenersTab, {
|
|
54582
|
+
emitters: emitters,
|
|
54583
|
+
receivers: receivers,
|
|
54584
|
+
wiring: effectiveWiring,
|
|
54585
|
+
onAdd: stageListenerAdd,
|
|
54586
|
+
onRemove: stageListenerRemove
|
|
54587
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(ProvidersTab, {
|
|
54588
|
+
grouped: grouped,
|
|
54589
|
+
providersByType: providersByType,
|
|
54590
|
+
onBulk: stageBulk,
|
|
54591
|
+
onPerWidget: stageBinding
|
|
54592
|
+
})
|
|
53823
54593
|
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53824
54594
|
className: "flex-shrink-0 flex flex-row justify-end gap-2 p-4 border-t border-white/10",
|
|
53825
54595
|
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.Button3, {
|
|
@@ -53836,114 +54606,507 @@ var DashboardConfigModal = function DashboardConfigModal(_ref) {
|
|
|
53836
54606
|
};
|
|
53837
54607
|
|
|
53838
54608
|
/**
|
|
53839
|
-
*
|
|
53840
|
-
*
|
|
54609
|
+
* Providers tab with a sidebar/detail layout mirroring the Listeners
|
|
54610
|
+
* tab. Column 1 lists provider types in this workspace (with an amber
|
|
54611
|
+
* dot per-type when any widget of that type is unresolved). Column 2
|
|
54612
|
+
* shows the selected type's bulk dropdown + per-widget dropdowns.
|
|
53841
54613
|
*/
|
|
53842
|
-
function
|
|
53843
|
-
var
|
|
53844
|
-
|
|
53845
|
-
|
|
53846
|
-
|
|
53847
|
-
|
|
53848
|
-
|
|
53849
|
-
|
|
53850
|
-
|
|
53851
|
-
|
|
53852
|
-
|
|
53853
|
-
|
|
53854
|
-
|
|
54614
|
+
function ProvidersTab(_ref2) {
|
|
54615
|
+
var _typeEntries$, _selectedRows$;
|
|
54616
|
+
var grouped = _ref2.grouped,
|
|
54617
|
+
providersByType = _ref2.providersByType,
|
|
54618
|
+
onBulk = _ref2.onBulk,
|
|
54619
|
+
onPerWidget = _ref2.onPerWidget;
|
|
54620
|
+
var typeEntries = React.useMemo(function () {
|
|
54621
|
+
return Array.from(grouped.entries());
|
|
54622
|
+
}, [grouped]);
|
|
54623
|
+
var _useState7 = React.useState(((_typeEntries$ = typeEntries[0]) === null || _typeEntries$ === void 0 ? void 0 : _typeEntries$[0]) || null),
|
|
54624
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
54625
|
+
selectedType = _useState8[0],
|
|
54626
|
+
setSelectedType = _useState8[1];
|
|
54627
|
+
|
|
54628
|
+
// If the selected type disappears (workspace changed), fall back.
|
|
54629
|
+
React.useMemo(function () {
|
|
54630
|
+
if (selectedType && !grouped.has(selectedType)) {
|
|
54631
|
+
var _typeEntries$2;
|
|
54632
|
+
setSelectedType(((_typeEntries$2 = typeEntries[0]) === null || _typeEntries$2 === void 0 ? void 0 : _typeEntries$2[0]) || null);
|
|
54633
|
+
}
|
|
54634
|
+
}, [grouped, selectedType, typeEntries]);
|
|
54635
|
+
if (typeEntries.length === 0) {
|
|
54636
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54637
|
+
className: "text-sm opacity-60 text-center py-6",
|
|
54638
|
+
children: "No widgets in this dashboard require providers."
|
|
54639
|
+
});
|
|
54640
|
+
}
|
|
54641
|
+
var selectedRows = selectedType ? grouped.get(selectedType) || [] : [];
|
|
54642
|
+
var selectedOptions = selectedType ? providersByType.get(selectedType) || [] : [];
|
|
54643
|
+
var allSame = selectedRows.length > 0 && selectedRows.every(function (r) {
|
|
54644
|
+
return r.resolvedProviderName === selectedRows[0].resolvedProviderName;
|
|
54645
|
+
});
|
|
54646
|
+
var topValue = allSame ? ((_selectedRows$ = selectedRows[0]) === null || _selectedRows$ === void 0 ? void 0 : _selectedRows$.resolvedProviderName) || "" : "";
|
|
53855
54647
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53856
|
-
className: "
|
|
54648
|
+
className: "flex flex-row gap-3 h-full min-h-0",
|
|
53857
54649
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53858
|
-
className: "
|
|
54650
|
+
className: "w-56 flex-shrink-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
|
|
53859
54651
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
53860
|
-
className: "
|
|
53861
|
-
children:
|
|
53862
|
-
|
|
53863
|
-
|
|
53864
|
-
|
|
53865
|
-
|
|
53866
|
-
|
|
53867
|
-
|
|
53868
|
-
|
|
53869
|
-
|
|
53870
|
-
|
|
53871
|
-
|
|
53872
|
-
|
|
53873
|
-
|
|
53874
|
-
|
|
53875
|
-
|
|
54652
|
+
className: "px-3 py-2 text-xs font-semibold opacity-50 uppercase tracking-wider border-b border-white/10",
|
|
54653
|
+
children: "Provider Types"
|
|
54654
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54655
|
+
className: "overflow-y-auto flex-1",
|
|
54656
|
+
children: typeEntries.map(function (_ref3) {
|
|
54657
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
54658
|
+
providerType = _ref4[0],
|
|
54659
|
+
rows = _ref4[1];
|
|
54660
|
+
var isActive = selectedType === providerType;
|
|
54661
|
+
var unresolvedHere = rows.filter(function (r) {
|
|
54662
|
+
return r.required && !r.resolvedProviderName;
|
|
54663
|
+
}).length;
|
|
54664
|
+
return /*#__PURE__*/jsxRuntime.jsxs("button", {
|
|
54665
|
+
type: "button",
|
|
54666
|
+
onClick: function onClick() {
|
|
54667
|
+
return setSelectedType(providerType);
|
|
54668
|
+
},
|
|
54669
|
+
className: "w-full text-left px-3 py-2 border-l-2 ".concat(isActive ? "bg-indigo-900/30 border-indigo-400" : "border-transparent hover:bg-white/5"),
|
|
54670
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54671
|
+
className: "flex items-center gap-2",
|
|
54672
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54673
|
+
className: "text-sm font-medium truncate",
|
|
54674
|
+
children: providerType
|
|
54675
|
+
}), unresolvedHere > 0 && /*#__PURE__*/jsxRuntime.jsxs("span", {
|
|
54676
|
+
className: "text-[10px] text-amber-300 flex items-center gap-1",
|
|
54677
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
|
|
54678
|
+
icon: "triangle-exclamation",
|
|
54679
|
+
className: "h-2.5 w-2.5"
|
|
54680
|
+
}), unresolvedHere]
|
|
54681
|
+
})]
|
|
54682
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54683
|
+
className: "text-xs opacity-50 mt-0.5",
|
|
54684
|
+
children: [rows.length, " widget", rows.length === 1 ? "" : "s"]
|
|
54685
|
+
})]
|
|
54686
|
+
}, providerType);
|
|
53876
54687
|
})
|
|
53877
|
-
}), /*#__PURE__*/jsxRuntime.jsxs("select", {
|
|
53878
|
-
value: topValue,
|
|
53879
|
-
onChange: function onChange(e) {
|
|
53880
|
-
return onBulk(e.target.value);
|
|
53881
|
-
},
|
|
53882
|
-
className: "bg-gray-800 border border-white/10 rounded px-3 py-1.5 text-sm min-w-[14rem]",
|
|
53883
|
-
children: [/*#__PURE__*/jsxRuntime.jsx("option", {
|
|
53884
|
-
value: "",
|
|
53885
|
-
children: "\u2014 Select provider \u2014"
|
|
53886
|
-
}), options.map(function (opt) {
|
|
53887
|
-
return /*#__PURE__*/jsxRuntime.jsxs("option", {
|
|
53888
|
-
value: opt.name,
|
|
53889
|
-
children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
|
|
53890
|
-
}, opt.name);
|
|
53891
|
-
})]
|
|
53892
54688
|
})]
|
|
53893
|
-
}), /*#__PURE__*/jsxRuntime.
|
|
53894
|
-
|
|
53895
|
-
|
|
53896
|
-
|
|
53897
|
-
|
|
53898
|
-
});
|
|
53899
|
-
},
|
|
53900
|
-
className: "text-xs opacity-60 hover:opacity-100 flex items-center gap-1",
|
|
53901
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
|
|
53902
|
-
icon: expanded ? "chevron-down" : "chevron-right",
|
|
53903
|
-
className: "h-3 w-3"
|
|
53904
|
-
}), expanded ? "Hide" : "Show", " per-widget overrides"]
|
|
53905
|
-
}), expanded && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
53906
|
-
className: "pl-3 border-l border-white/10 space-y-2",
|
|
53907
|
-
children: rows.map(function (row) {
|
|
53908
|
-
var _row$layoutItem;
|
|
53909
|
-
var hasExplicitOverride = !!((_row$layoutItem = row.layoutItem) !== null && _row$layoutItem !== void 0 && (_row$layoutItem = _row$layoutItem.selectedProviders) !== null && _row$layoutItem !== void 0 && _row$layoutItem[providerType]);
|
|
53910
|
-
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53911
|
-
className: "flex flex-row items-center gap-3",
|
|
54689
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54690
|
+
className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
|
|
54691
|
+
children: selectedType ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
54692
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54693
|
+
className: "px-4 py-3 border-b border-white/10 flex-shrink-0",
|
|
53912
54694
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
53913
|
-
className: "
|
|
54695
|
+
className: "text-sm font-semibold",
|
|
54696
|
+
children: [selectedType, " ", /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54697
|
+
className: "opacity-60 font-normal",
|
|
54698
|
+
children: "provider"
|
|
54699
|
+
})]
|
|
54700
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54701
|
+
className: "text-xs opacity-60 mt-1",
|
|
54702
|
+
children: "Apply one provider to every widget of this type, or adjust per-widget below."
|
|
54703
|
+
})]
|
|
54704
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54705
|
+
className: "flex-1 overflow-y-auto p-4 space-y-4",
|
|
54706
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54707
|
+
className: "flex items-center gap-3",
|
|
53914
54708
|
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
53915
|
-
className: "
|
|
53916
|
-
children:
|
|
53917
|
-
}), /*#__PURE__*/jsxRuntime.
|
|
53918
|
-
|
|
53919
|
-
|
|
53920
|
-
|
|
53921
|
-
|
|
53922
|
-
|
|
53923
|
-
|
|
53924
|
-
|
|
53925
|
-
|
|
53926
|
-
|
|
53927
|
-
|
|
53928
|
-
|
|
54709
|
+
className: "text-xs opacity-60 flex-shrink-0 w-20",
|
|
54710
|
+
children: "Bulk assign"
|
|
54711
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("select", {
|
|
54712
|
+
value: topValue,
|
|
54713
|
+
onChange: function onChange(e) {
|
|
54714
|
+
return onBulk(selectedType, e.target.value);
|
|
54715
|
+
},
|
|
54716
|
+
className: "flex-1 bg-gray-800 border border-white/10 rounded px-3 py-1.5 text-sm",
|
|
54717
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("option", {
|
|
54718
|
+
value: "",
|
|
54719
|
+
children: "\u2014 Select provider \u2014"
|
|
54720
|
+
}), selectedOptions.map(function (opt) {
|
|
54721
|
+
return /*#__PURE__*/jsxRuntime.jsxs("option", {
|
|
54722
|
+
value: opt.name,
|
|
54723
|
+
children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
|
|
54724
|
+
}, opt.name);
|
|
54725
|
+
})]
|
|
53929
54726
|
})]
|
|
53930
|
-
}), /*#__PURE__*/jsxRuntime.jsxs("
|
|
53931
|
-
|
|
53932
|
-
|
|
53933
|
-
|
|
53934
|
-
},
|
|
53935
|
-
|
|
53936
|
-
|
|
53937
|
-
|
|
53938
|
-
|
|
53939
|
-
|
|
53940
|
-
|
|
53941
|
-
|
|
53942
|
-
|
|
53943
|
-
|
|
54727
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54728
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54729
|
+
className: "text-xs font-semibold opacity-50 uppercase tracking-wider mb-2",
|
|
54730
|
+
children: "Per-widget"
|
|
54731
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54732
|
+
children: selectedRows.map(function (row) {
|
|
54733
|
+
var _row$layoutItem;
|
|
54734
|
+
var hasExplicitOverride = !!((_row$layoutItem = row.layoutItem) !== null && _row$layoutItem !== void 0 && (_row$layoutItem = _row$layoutItem.selectedProviders) !== null && _row$layoutItem !== void 0 && _row$layoutItem[selectedType]);
|
|
54735
|
+
var isRequired = !!row.required;
|
|
54736
|
+
var isMissing = !row.resolvedProviderName;
|
|
54737
|
+
var needsAttention = isRequired && isMissing;
|
|
54738
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54739
|
+
className: "flex flex-row items-center gap-3 py-2 px-2 rounded border-l-2 ".concat(needsAttention ? "bg-red-900 border-red-500" : "border-transparent"),
|
|
54740
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54741
|
+
className: "flex-1 min-w-0",
|
|
54742
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54743
|
+
className: "text-sm truncate flex items-center gap-1.5 ".concat(needsAttention ? "font-semibold text-red-100" : "font-medium"),
|
|
54744
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54745
|
+
className: "truncate",
|
|
54746
|
+
children: row.component || "widget"
|
|
54747
|
+
}), isRequired && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54748
|
+
className: needsAttention ? "text-red-300" : "text-indigo-300",
|
|
54749
|
+
title: "Required provider",
|
|
54750
|
+
"aria-label": "required",
|
|
54751
|
+
children: "*"
|
|
54752
|
+
})]
|
|
54753
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54754
|
+
className: "flex items-center gap-1.5 mt-1 text-[10px]",
|
|
54755
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54756
|
+
className: "uppercase tracking-wide px-1.5 py-0.5 rounded font-semibold ".concat(needsAttention ? "bg-red-600 text-white" : isRequired ? "bg-indigo-800 text-indigo-100" : "bg-gray-700 text-gray-300"),
|
|
54757
|
+
children: isRequired ? "required" : "optional"
|
|
54758
|
+
}), hasExplicitOverride && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54759
|
+
className: "uppercase tracking-wide px-1.5 py-0.5 rounded font-semibold bg-indigo-900 text-indigo-200",
|
|
54760
|
+
children: "override"
|
|
54761
|
+
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54762
|
+
className: "opacity-40 truncate ml-1",
|
|
54763
|
+
children: (row.widgetId || "").slice(0, 8)
|
|
54764
|
+
})]
|
|
54765
|
+
})]
|
|
54766
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("select", {
|
|
54767
|
+
value: row.resolvedProviderName || "",
|
|
54768
|
+
onChange: function onChange(e) {
|
|
54769
|
+
return onPerWidget(row.widgetId, selectedType, e.target.value);
|
|
54770
|
+
},
|
|
54771
|
+
className: "bg-gray-800 border rounded px-2 py-1 text-xs min-w-[12rem] ".concat(needsAttention ? "border-red-400" : "border-gray-700"),
|
|
54772
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("option", {
|
|
54773
|
+
value: "",
|
|
54774
|
+
children: "\u2014 none \u2014"
|
|
54775
|
+
}), selectedOptions.map(function (opt) {
|
|
54776
|
+
return /*#__PURE__*/jsxRuntime.jsxs("option", {
|
|
54777
|
+
value: opt.name,
|
|
54778
|
+
children: [opt.name, opt.isDefaultForType ? " (default)" : ""]
|
|
54779
|
+
}, opt.name);
|
|
54780
|
+
})]
|
|
54781
|
+
})]
|
|
54782
|
+
}, "".concat(row.widgetId, ":").concat(row.providerType));
|
|
54783
|
+
})
|
|
54784
|
+
})]
|
|
54785
|
+
})]
|
|
54786
|
+
})]
|
|
54787
|
+
}) : /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54788
|
+
className: "flex-1 flex items-center justify-center text-sm opacity-60",
|
|
54789
|
+
children: "Pick a provider type to bulk-assign or adjust per widget."
|
|
54790
|
+
})
|
|
54791
|
+
})]
|
|
54792
|
+
});
|
|
54793
|
+
}
|
|
54794
|
+
|
|
54795
|
+
// ─── Listeners tab ──────────────────────────────────────────────────────────
|
|
54796
|
+
|
|
54797
|
+
/**
|
|
54798
|
+
* Match two wiring entries on the four fields that uniquely identify
|
|
54799
|
+
* a listener binding (receiver + handler + source + event). Used to
|
|
54800
|
+
* dedupe stages, cancel opposite-direction stages, and detect "is
|
|
54801
|
+
* this binding already there".
|
|
54802
|
+
*/
|
|
54803
|
+
function sameWiringEntry(a, b) {
|
|
54804
|
+
if (!a || !b) return false;
|
|
54805
|
+
return String(a.receiverItemId) === String(b.receiverItemId) && a.handlerName === b.handlerName && a.sourceComponent === b.sourceComponent && String(a.sourceItemId) === String(b.sourceItemId) && a.eventName === b.eventName;
|
|
54806
|
+
}
|
|
54807
|
+
|
|
54808
|
+
/**
|
|
54809
|
+
* Receiver-centric sidebar/detail layout. Mirrors the per-widget
|
|
54810
|
+
* PanelEditItemHandlers pattern (handler-by-handler editing) but
|
|
54811
|
+
* scoped to the whole dashboard. Picking a widget on the left shows
|
|
54812
|
+
* its handlers + currently wired sources on the right; the user
|
|
54813
|
+
* adjusts wiring per handler from a single dropdown of all emitters'
|
|
54814
|
+
* (widget × event) pairs.
|
|
54815
|
+
*/
|
|
54816
|
+
function ListenersTab(_ref6) {
|
|
54817
|
+
var _receivers$;
|
|
54818
|
+
var emitters = _ref6.emitters,
|
|
54819
|
+
receivers = _ref6.receivers,
|
|
54820
|
+
wiring = _ref6.wiring,
|
|
54821
|
+
onAdd = _ref6.onAdd,
|
|
54822
|
+
onRemove = _ref6.onRemove;
|
|
54823
|
+
var _useState1 = React.useState(((_receivers$ = receivers[0]) === null || _receivers$ === void 0 ? void 0 : _receivers$.key) || null),
|
|
54824
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
54825
|
+
selectedReceiverKey = _useState10[0],
|
|
54826
|
+
setSelectedReceiverKey = _useState10[1];
|
|
54827
|
+
var _useState11 = React.useState(null),
|
|
54828
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
54829
|
+
selectedHandler = _useState12[0],
|
|
54830
|
+
setSelectedHandler = _useState12[1];
|
|
54831
|
+
|
|
54832
|
+
// Re-anchor selection if the previously-selected widget disappeared
|
|
54833
|
+
// (workspace switched, widget deleted, etc.).
|
|
54834
|
+
React.useMemo(function () {
|
|
54835
|
+
if (selectedReceiverKey && !receivers.some(function (r) {
|
|
54836
|
+
return r.key === selectedReceiverKey;
|
|
54837
|
+
})) {
|
|
54838
|
+
var _receivers$2;
|
|
54839
|
+
setSelectedReceiverKey(((_receivers$2 = receivers[0]) === null || _receivers$2 === void 0 ? void 0 : _receivers$2.key) || null);
|
|
54840
|
+
}
|
|
54841
|
+
}, [receivers, selectedReceiverKey]);
|
|
54842
|
+
|
|
54843
|
+
// Receiver lookup (by composite key) for label resolution in chips.
|
|
54844
|
+
var receiverByKey = React.useMemo(function () {
|
|
54845
|
+
var m = new Map();
|
|
54846
|
+
var _iterator5 = _createForOfIteratorHelper$4(receivers),
|
|
54847
|
+
_step5;
|
|
54848
|
+
try {
|
|
54849
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
54850
|
+
var r = _step5.value;
|
|
54851
|
+
m.set(r.key, r);
|
|
54852
|
+
}
|
|
54853
|
+
} catch (err) {
|
|
54854
|
+
_iterator5.e(err);
|
|
54855
|
+
} finally {
|
|
54856
|
+
_iterator5.f();
|
|
54857
|
+
}
|
|
54858
|
+
return m;
|
|
54859
|
+
}, [receivers]);
|
|
54860
|
+
if (receivers.length === 0) {
|
|
54861
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54862
|
+
className: "flex items-center justify-center h-full text-sm opacity-60 text-center",
|
|
54863
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54864
|
+
children: ["No widgets in this dashboard declare event handlers.", emitters.length > 0 && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54865
|
+
className: "mt-2",
|
|
54866
|
+
children: ["(", emitters.length, " widget", emitters.length === 1 ? "" : "s", " emit events but nothing is set up to receive.)"]
|
|
54867
|
+
})]
|
|
54868
|
+
})
|
|
54869
|
+
});
|
|
54870
|
+
}
|
|
54871
|
+
var selectedReceiver = selectedReceiverKey ? receiverByKey.get(selectedReceiverKey) || null : null;
|
|
54872
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54873
|
+
className: "flex flex-col gap-3 h-full min-h-0",
|
|
54874
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54875
|
+
className: "flex flex-row gap-3 flex-1 min-h-0",
|
|
54876
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54877
|
+
className: "w-56 flex-shrink-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
|
|
54878
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54879
|
+
className: "px-3 py-2 text-xs font-semibold opacity-50 uppercase tracking-wider border-b border-white/10",
|
|
54880
|
+
children: "Widgets"
|
|
54881
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54882
|
+
className: "overflow-y-auto flex-1",
|
|
54883
|
+
children: receivers.map(function (r) {
|
|
54884
|
+
var isActive = r.key === selectedReceiverKey;
|
|
54885
|
+
return /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
54886
|
+
type: "button",
|
|
54887
|
+
onClick: function onClick() {
|
|
54888
|
+
return setSelectedReceiverKey(r.key);
|
|
54889
|
+
},
|
|
54890
|
+
className: "w-full text-left px-3 py-2 border-l-2 ".concat(isActive ? "bg-indigo-900/30 border-indigo-400" : "border-transparent hover:bg-white/5"),
|
|
54891
|
+
children: /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54892
|
+
className: "text-sm font-medium truncate",
|
|
54893
|
+
children: r.label
|
|
54894
|
+
})
|
|
54895
|
+
}, r.key);
|
|
54896
|
+
})
|
|
54897
|
+
})]
|
|
54898
|
+
}), selectedReceiver ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
54899
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(HandlersColumn, {
|
|
54900
|
+
receiver: selectedReceiver,
|
|
54901
|
+
myWiring: wiring.filter(function (w) {
|
|
54902
|
+
return w.receiverComponent === selectedReceiver.component && String(w.receiverItemId) === String(selectedReceiver.itemId);
|
|
54903
|
+
}),
|
|
54904
|
+
selectedHandler: selectedHandler && selectedReceiver.eventHandlers.includes(selectedHandler) ? selectedHandler : null,
|
|
54905
|
+
onSelectHandler: setSelectedHandler
|
|
54906
|
+
}), /*#__PURE__*/jsxRuntime.jsx(EventsColumn, {
|
|
54907
|
+
receiver: selectedReceiver,
|
|
54908
|
+
handlerName: selectedHandler && selectedReceiver.eventHandlers.includes(selectedHandler) ? selectedHandler : null,
|
|
54909
|
+
myWiring: wiring.filter(function (w) {
|
|
54910
|
+
return w.receiverComponent === selectedReceiver.component && String(w.receiverItemId) === String(selectedReceiver.itemId);
|
|
54911
|
+
}),
|
|
54912
|
+
emitters: emitters,
|
|
54913
|
+
onAdd: onAdd,
|
|
54914
|
+
onRemove: onRemove
|
|
54915
|
+
})]
|
|
54916
|
+
}) : /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54917
|
+
className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg flex items-center justify-center text-sm opacity-60",
|
|
54918
|
+
children: "Pick a widget on the left to wire its handlers."
|
|
54919
|
+
})]
|
|
54920
|
+
})
|
|
54921
|
+
});
|
|
54922
|
+
}
|
|
54923
|
+
|
|
54924
|
+
/**
|
|
54925
|
+
* Second column (within ListenersTab): the selected receiver's
|
|
54926
|
+
* handlers with connection counts. Picking one lights up the
|
|
54927
|
+
* third column. Matches the left-column look from
|
|
54928
|
+
* PanelEditItemHandlers.
|
|
54929
|
+
*/
|
|
54930
|
+
function HandlersColumn(_ref8) {
|
|
54931
|
+
var receiver = _ref8.receiver,
|
|
54932
|
+
myWiring = _ref8.myWiring,
|
|
54933
|
+
selectedHandler = _ref8.selectedHandler,
|
|
54934
|
+
onSelectHandler = _ref8.onSelectHandler;
|
|
54935
|
+
var countsByHandler = React.useMemo(function () {
|
|
54936
|
+
var m = new Map();
|
|
54937
|
+
var _iterator6 = _createForOfIteratorHelper$4(myWiring),
|
|
54938
|
+
_step6;
|
|
54939
|
+
try {
|
|
54940
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
54941
|
+
var w = _step6.value;
|
|
54942
|
+
m.set(w.handlerName, (m.get(w.handlerName) || 0) + 1);
|
|
54943
|
+
}
|
|
54944
|
+
} catch (err) {
|
|
54945
|
+
_iterator6.e(err);
|
|
54946
|
+
} finally {
|
|
54947
|
+
_iterator6.f();
|
|
54948
|
+
}
|
|
54949
|
+
return m;
|
|
54950
|
+
}, [myWiring]);
|
|
54951
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
54952
|
+
className: "w-56 flex-shrink-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
|
|
54953
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54954
|
+
className: "px-3 py-2 text-xs font-semibold opacity-50 uppercase tracking-wider border-b border-white/10",
|
|
54955
|
+
children: "Event Handlers"
|
|
54956
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54957
|
+
className: "overflow-y-auto flex-1",
|
|
54958
|
+
children: receiver.eventHandlers.length === 0 ? /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
54959
|
+
className: "text-xs opacity-50 text-center py-6 px-3",
|
|
54960
|
+
children: "This widget declares no event handlers."
|
|
54961
|
+
}) : receiver.eventHandlers.map(function (h) {
|
|
54962
|
+
var isActive = h === selectedHandler;
|
|
54963
|
+
var count = countsByHandler.get(h) || 0;
|
|
54964
|
+
return /*#__PURE__*/jsxRuntime.jsxs("button", {
|
|
54965
|
+
type: "button",
|
|
54966
|
+
onClick: function onClick() {
|
|
54967
|
+
return onSelectHandler(h);
|
|
54968
|
+
},
|
|
54969
|
+
className: "w-full text-left px-3 py-2 text-sm flex items-center justify-between gap-2 border-l-2 ".concat(isActive ? "bg-indigo-900/30 border-indigo-400" : "border-transparent hover:bg-white/5"),
|
|
54970
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
|
|
54971
|
+
className: "flex items-center gap-2 min-w-0",
|
|
54972
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
|
|
54973
|
+
icon: "bolt",
|
|
54974
|
+
className: "h-3 w-3 opacity-60 flex-shrink-0"
|
|
54975
|
+
}), /*#__PURE__*/jsxRuntime.jsx("code", {
|
|
54976
|
+
className: "truncate",
|
|
54977
|
+
children: h
|
|
53944
54978
|
})]
|
|
54979
|
+
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
54980
|
+
className: "text-xs opacity-60 flex-shrink-0",
|
|
54981
|
+
children: count
|
|
53945
54982
|
})]
|
|
53946
|
-
},
|
|
54983
|
+
}, h);
|
|
54984
|
+
})
|
|
54985
|
+
})]
|
|
54986
|
+
});
|
|
54987
|
+
}
|
|
54988
|
+
|
|
54989
|
+
/**
|
|
54990
|
+
* Third column: for the selected (receiver, handler), show every
|
|
54991
|
+
* emitter widget as a section with a checkbox list of its events.
|
|
54992
|
+
* Checked = wired; toggling commits an add/remove. Mirrors the
|
|
54993
|
+
* right-column UX of PanelEditItemHandlers.
|
|
54994
|
+
*/
|
|
54995
|
+
function EventsColumn(_ref9) {
|
|
54996
|
+
var receiver = _ref9.receiver,
|
|
54997
|
+
handlerName = _ref9.handlerName,
|
|
54998
|
+
myWiring = _ref9.myWiring,
|
|
54999
|
+
emitters = _ref9.emitters,
|
|
55000
|
+
onAdd = _ref9.onAdd,
|
|
55001
|
+
onRemove = _ref9.onRemove;
|
|
55002
|
+
// Wired-for-this-handler: dedupe defensively (legacy workspaces
|
|
55003
|
+
// occasionally contain duplicate entries under the same handler).
|
|
55004
|
+
var wiredHere = React.useMemo(function () {
|
|
55005
|
+
var seen = new Set();
|
|
55006
|
+
var out = [];
|
|
55007
|
+
var _iterator7 = _createForOfIteratorHelper$4(myWiring),
|
|
55008
|
+
_step7;
|
|
55009
|
+
try {
|
|
55010
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
55011
|
+
var w = _step7.value;
|
|
55012
|
+
if (w.handlerName !== handlerName) continue;
|
|
55013
|
+
var key = "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
|
|
55014
|
+
if (seen.has(key)) continue;
|
|
55015
|
+
seen.add(key);
|
|
55016
|
+
out.push(w);
|
|
55017
|
+
}
|
|
55018
|
+
} catch (err) {
|
|
55019
|
+
_iterator7.e(err);
|
|
55020
|
+
} finally {
|
|
55021
|
+
_iterator7.f();
|
|
55022
|
+
}
|
|
55023
|
+
return out;
|
|
55024
|
+
}, [myWiring, handlerName]);
|
|
55025
|
+
var wiredKeys = React.useMemo(function () {
|
|
55026
|
+
return new Set(wiredHere.map(function (w) {
|
|
55027
|
+
return "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName);
|
|
55028
|
+
}));
|
|
55029
|
+
}, [wiredHere]);
|
|
55030
|
+
|
|
55031
|
+
// Separate orphans — these reference sources no longer in the
|
|
55032
|
+
// workspace, so they don't appear in the emitter sections below.
|
|
55033
|
+
wiredHere.filter(function (w) {
|
|
55034
|
+
return w.isOrphan;
|
|
55035
|
+
});
|
|
55036
|
+
if (!handlerName) {
|
|
55037
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
55038
|
+
className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg flex items-center justify-center text-sm opacity-60",
|
|
55039
|
+
children: "Select a handler to view available events."
|
|
55040
|
+
});
|
|
55041
|
+
}
|
|
55042
|
+
function toggle(source) {
|
|
55043
|
+
var key = "".concat(source.sourceComponent, "|").concat(source.sourceItemId, "|").concat(source.eventName);
|
|
55044
|
+
if (wiredKeys.has(key)) {
|
|
55045
|
+
var existing = wiredHere.find(function (w) {
|
|
55046
|
+
return "".concat(w.sourceComponent, "|").concat(w.sourceItemId, "|").concat(w.eventName) === key;
|
|
55047
|
+
});
|
|
55048
|
+
onRemove(existing);
|
|
55049
|
+
} else {
|
|
55050
|
+
onAdd({
|
|
55051
|
+
receiverItemId: receiver.itemId,
|
|
55052
|
+
receiverComponent: receiver.component,
|
|
55053
|
+
handlerName: handlerName,
|
|
55054
|
+
sourceComponent: source.sourceComponent,
|
|
55055
|
+
sourceItemId: source.sourceItemId,
|
|
55056
|
+
eventName: source.eventName
|
|
55057
|
+
});
|
|
55058
|
+
}
|
|
55059
|
+
}
|
|
55060
|
+
|
|
55061
|
+
// Hide the selected receiver from its own emitter list — a widget
|
|
55062
|
+
// listening to its own events is almost always a mistake.
|
|
55063
|
+
var emittersForList = emitters.filter(function (e) {
|
|
55064
|
+
return !(e.component === receiver.component && String(e.itemId) === String(receiver.itemId));
|
|
55065
|
+
});
|
|
55066
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
55067
|
+
className: "flex-1 min-w-0 bg-white/5 border border-white/10 rounded-lg overflow-hidden flex flex-col",
|
|
55068
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
55069
|
+
className: "flex-shrink-0 px-4 py-2 border-b border-white/10 text-xs opacity-60",
|
|
55070
|
+
children: ["Check an event to fire", " ", /*#__PURE__*/jsxRuntime.jsx("code", {
|
|
55071
|
+
className: "text-xs",
|
|
55072
|
+
children: handlerName
|
|
55073
|
+
}), " on", " ", /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
55074
|
+
className: "font-medium",
|
|
55075
|
+
children: receiver.label
|
|
55076
|
+
}), "."]
|
|
55077
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
55078
|
+
className: "flex-1 overflow-y-auto p-4 space-y-5",
|
|
55079
|
+
children: emittersForList.length === 0 ? /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
55080
|
+
className: "text-sm opacity-60",
|
|
55081
|
+
children: "No other widgets in this dashboard emit events."
|
|
55082
|
+
}) : emittersForList.map(function (e) {
|
|
55083
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
55084
|
+
className: "space-y-1",
|
|
55085
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
55086
|
+
className: "text-xs font-semibold opacity-50 uppercase tracking-wider",
|
|
55087
|
+
children: e.label
|
|
55088
|
+
}), e.events.map(function (eventName) {
|
|
55089
|
+
var key = "".concat(e.component, "|").concat(e.itemId, "|").concat(eventName);
|
|
55090
|
+
var selected = wiredKeys.has(key);
|
|
55091
|
+
return /*#__PURE__*/jsxRuntime.jsxs("label", {
|
|
55092
|
+
className: "flex items-center gap-3 px-3 py-1.5 rounded-md cursor-pointer text-sm ".concat(selected ? "opacity-100" : "opacity-70 hover:opacity-100"),
|
|
55093
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
|
|
55094
|
+
icon: selected ? "square-check" : "square",
|
|
55095
|
+
className: "h-4 w-4 flex-shrink-0",
|
|
55096
|
+
onClick: function onClick(ev) {
|
|
55097
|
+
ev.preventDefault();
|
|
55098
|
+
toggle({
|
|
55099
|
+
sourceComponent: e.component,
|
|
55100
|
+
sourceItemId: e.itemId,
|
|
55101
|
+
eventName: eventName
|
|
55102
|
+
});
|
|
55103
|
+
}
|
|
55104
|
+
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
55105
|
+
children: eventName
|
|
55106
|
+
})]
|
|
55107
|
+
}, key);
|
|
55108
|
+
})]
|
|
55109
|
+
}, e.key || "".concat(e.component, "|").concat(e.itemId));
|
|
53947
55110
|
})
|
|
53948
55111
|
})]
|
|
53949
55112
|
});
|
|
@@ -54210,7 +55373,7 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
|
|
|
54210
55373
|
_useState42 = _slicedToArray(_useState41, 2),
|
|
54211
55374
|
isConfigModalOpen = _useState42[0],
|
|
54212
55375
|
setIsConfigModalOpen = _useState42[1];
|
|
54213
|
-
|
|
55376
|
+
React.useRef(new Set());
|
|
54214
55377
|
var _useState43 = React.useState(new Set()),
|
|
54215
55378
|
_useState44 = _slicedToArray(_useState43, 2),
|
|
54216
55379
|
dismissedUnresolvedForWorkspace = _useState44[0],
|
|
@@ -54745,7 +55908,29 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
|
|
|
54745
55908
|
}
|
|
54746
55909
|
}
|
|
54747
55910
|
|
|
54748
|
-
// ───
|
|
55911
|
+
// ─── Bulk listener binding save ──────────────────────────────────
|
|
55912
|
+
// Takes { adds, removes } from the Dashboard Config modal's
|
|
55913
|
+
// Listeners tab and writes the updated workspace once. Applies the
|
|
55914
|
+
// delta via applyWiringChanges (uses item.listeners directly so the
|
|
55915
|
+
// existing PanelEditItemHandlers / runtime stays consistent).
|
|
55916
|
+
function handleBulkListenerBindings(changes) {
|
|
55917
|
+
if (!workspaceSelected || !dashApi || !(credentials !== null && credentials !== void 0 && credentials.appId)) return;
|
|
55918
|
+
if (!changes || (!changes.adds || changes.adds.length === 0) && (!changes.removes || changes.removes.length === 0)) {
|
|
55919
|
+
return;
|
|
55920
|
+
}
|
|
55921
|
+
var updatedWorkspace = applyWiringChanges(workspaceSelected, changes);
|
|
55922
|
+
updateTabWorkspace(updatedWorkspace);
|
|
55923
|
+
try {
|
|
55924
|
+
dashApi.saveWorkspace(credentials.appId, updatedWorkspace, function (e, result) {
|
|
55925
|
+
return (void 0);
|
|
55926
|
+
}, function (e, error) {
|
|
55927
|
+
return (void 0);
|
|
55928
|
+
});
|
|
55929
|
+
} catch (e) {
|
|
55930
|
+
}
|
|
55931
|
+
}
|
|
55932
|
+
|
|
55933
|
+
// ─── Unresolved providers + listener orphans (modal + auto-open) ─
|
|
54749
55934
|
var unresolvedProviders = React.useMemo(function () {
|
|
54750
55935
|
return getUnresolvedProviders({
|
|
54751
55936
|
workspace: workspaceSelected,
|
|
@@ -54756,19 +55941,16 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
|
|
|
54756
55941
|
}
|
|
54757
55942
|
});
|
|
54758
55943
|
}, [workspaceSelected, appContext === null || appContext === void 0 ? void 0 : appContext.providers]);
|
|
54759
|
-
var
|
|
55944
|
+
var unresolvedProvidersCount = unresolvedProviders.length;
|
|
55945
|
+
// Listener orphans are pruned in WorkspaceModel / DashboardModel at
|
|
55946
|
+
// load time, so the badge only counts unresolved provider bindings.
|
|
55947
|
+
var unresolvedCount = unresolvedProvidersCount;
|
|
54760
55948
|
|
|
54761
|
-
//
|
|
54762
|
-
//
|
|
54763
|
-
//
|
|
54764
|
-
|
|
54765
|
-
|
|
54766
|
-
if (unresolvedCount === 0) return;
|
|
54767
|
-
if (configModalAutoOpenedFor.current.has(workspaceSelected.id)) return;
|
|
54768
|
-
if (dismissedUnresolvedForWorkspace.has(workspaceSelected.id)) return;
|
|
54769
|
-
configModalAutoOpenedFor.current.add(workspaceSelected.id);
|
|
54770
|
-
setIsConfigModalOpen(true);
|
|
54771
|
-
}, [workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.id, unresolvedCount, dismissedUnresolvedForWorkspace]);
|
|
55949
|
+
// (No auto-open.) Earlier versions popped the modal on first load
|
|
55950
|
+
// when anything was unresolved — turned out to be jarring,
|
|
55951
|
+
// especially on dashboards that had a long-standing orphan list.
|
|
55952
|
+
// Awareness is delivered passively now: the gear icon's amber dot
|
|
55953
|
+
// and the banner. The user opens the modal when they're ready.
|
|
54772
55954
|
|
|
54773
55955
|
// ─── Sidebar State ────────────────────────────────────────────────
|
|
54774
55956
|
var sidebarEnabled = (workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.sidebarEnabled) || false;
|
|
@@ -55520,7 +56702,7 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
|
|
|
55520
56702
|
onSidebarChange: popout ? null : handleSidebarToggle,
|
|
55521
56703
|
scrollableEnabled: workspacePages.length <= 1 ? getRootScrollable() : undefined,
|
|
55522
56704
|
onScrollableChange: workspacePages.length <= 1 && !popout ? handleScrollableChange : null,
|
|
55523
|
-
onOpenConfig: popout ? null : function () {
|
|
56705
|
+
onOpenConfig: popout || previewMode ? null : function () {
|
|
55524
56706
|
return setIsConfigModalOpen(true);
|
|
55525
56707
|
},
|
|
55526
56708
|
configUnresolvedCount: unresolvedCount
|
|
@@ -55554,14 +56736,14 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
|
|
|
55554
56736
|
className: "h-3 w-3"
|
|
55555
56737
|
})
|
|
55556
56738
|
})]
|
|
55557
|
-
}), unresolvedCount > 0 && !dismissedUnresolvedForWorkspace.has(workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.id) && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
56739
|
+
}), unresolvedCount > 0 && !previewMode && !dismissedUnresolvedForWorkspace.has(workspaceSelected === null || workspaceSelected === void 0 ? void 0 : workspaceSelected.id) && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
55558
56740
|
className: "flex items-center gap-2 px-4 py-2 bg-amber-500/10 border-b border-amber-500/20 flex-shrink-0",
|
|
55559
56741
|
children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
|
|
55560
56742
|
icon: "triangle-exclamation",
|
|
55561
56743
|
className: "h-3.5 w-3.5 text-amber-400 flex-shrink-0"
|
|
55562
|
-
}), /*#__PURE__*/jsxRuntime.
|
|
56744
|
+
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
55563
56745
|
className: "text-xs text-amber-300/90 flex-1",
|
|
55564
|
-
children: [
|
|
56746
|
+
children: [unresolvedProvidersCount > 0 && "".concat(unresolvedProvidersCount, " widget").concat(unresolvedProvidersCount === 1 ? "" : "s", " need").concat(unresolvedProvidersCount === 1 ? "s" : "", " a provider")].filter(Boolean).join(" · ")
|
|
55565
56747
|
}), /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
55566
56748
|
type: "button",
|
|
55567
56749
|
onClick: function onClick() {
|
|
@@ -55750,7 +56932,12 @@ var DashboardStageInner = function DashboardStageInner(_ref3) {
|
|
|
55750
56932
|
var _ComponentManager$com2;
|
|
55751
56933
|
return name && ((_ComponentManager$com2 = ComponentManager.componentMap()[name]) === null || _ComponentManager$com2 === void 0 ? void 0 : _ComponentManager$com2.providers) || [];
|
|
55752
56934
|
},
|
|
55753
|
-
|
|
56935
|
+
getWidgetConfig: function getWidgetConfig(name) {
|
|
56936
|
+
return name && ComponentManager.componentMap()[name] || null;
|
|
56937
|
+
},
|
|
56938
|
+
onSaveBindings: handleBulkProviderBindings,
|
|
56939
|
+
onSaveListeners: handleBulkListenerBindings,
|
|
56940
|
+
initialTab: "providers"
|
|
55754
56941
|
})]
|
|
55755
56942
|
})]
|
|
55756
56943
|
}), !popout && /*#__PURE__*/jsxRuntime.jsx(DashCommandPalette, {
|
|
@@ -55994,10 +57181,7 @@ var DashboardHeader = function DashboardHeader(_ref) {
|
|
|
55994
57181
|
className: "font-bold text-base"
|
|
55995
57182
|
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
55996
57183
|
className: "flex flex-row items-center gap-1",
|
|
55997
|
-
children: [
|
|
55998
|
-
onClick: onOpenConfig,
|
|
55999
|
-
unresolvedCount: configUnresolvedCount
|
|
56000
|
-
}), onPopout !== null && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon, {
|
|
57184
|
+
children: [onPopout !== null && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon, {
|
|
56001
57185
|
icon: "arrow-up-right-from-square",
|
|
56002
57186
|
onClick: onPopout,
|
|
56003
57187
|
hoverBackgroundColor: "hover:bg-indigo-700"
|