@trops/dash-core 0.1.400 → 0.1.402

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3075,9 +3075,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
3075
3075
 
3076
3076
  function ownKeys$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
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; }
3078
+ 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; } } }; }
3079
+ 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; } }
3080
+ 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; }
3081
3081
  /**
3082
3082
  * Layout template definitions for the dashboard template picker.
3083
3083
  *
@@ -3351,7 +3351,7 @@ function createLayoutFromTemplate(template) {
3351
3351
  cols: template.cols,
3352
3352
  gap: "gap-2"
3353
3353
  };
3354
- var _iterator = _createForOfIteratorHelper$t(template.cells),
3354
+ var _iterator = _createForOfIteratorHelper$s(template.cells),
3355
3355
  _step;
3356
3356
  try {
3357
3357
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -4282,9 +4282,9 @@ var RegistryAuthModal = function RegistryAuthModal(_ref) {
4282
4282
  });
4283
4283
  };
4284
4284
 
4285
- function _createForOfIteratorHelper$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; }
4285
+ 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; } } }; }
4286
+ 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; } }
4287
+ 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; }
4288
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
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) {
@@ -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$s(widgetDeps),
4528
+ var _iterator = _createForOfIteratorHelper$r(widgetDeps),
4529
4529
  _step;
4530
4530
  try {
4531
4531
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -6300,9 +6300,9 @@ function cleanIpcError(message) {
6300
6300
  return match ? match[1] : message;
6301
6301
  }
6302
6302
 
6303
- function _createForOfIteratorHelper$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; }
6303
+ 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; } } }; }
6304
+ 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; } }
6305
+ 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; }
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$r(pkgs);
6419
+ _iterator = _createForOfIteratorHelper$q(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$r(pkg.providers || []);
6425
+ _iterator2 = _createForOfIteratorHelper$q(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$r(pkg.widgets || []);
6438
+ _iterator3 = _createForOfIteratorHelper$q(pkg.widgets || []);
6439
6439
  try {
6440
6440
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6441
6441
  w = _step3.value;
6442
- _iterator5 = _createForOfIteratorHelper$r(w.providers || []);
6442
+ _iterator5 = _createForOfIteratorHelper$q(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$r(pkg.widgets || []);
6464
+ _iterator4 = _createForOfIteratorHelper$q(pkg.widgets || []);
6465
6465
  try {
6466
6466
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
6467
6467
  widget = _step4.value;
@@ -7082,9 +7082,9 @@ function applyFilters(items, filters, mode) {
7082
7082
  });
7083
7083
  }
7084
7084
 
7085
- function _createForOfIteratorHelper$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; }
7085
+ 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; } } }; }
7086
+ 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; } }
7087
+ 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; }
7088
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
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) {
@@ -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$q(state.selectedWidgets);
7311
+ _iterator = _createForOfIteratorHelper$p(state.selectedWidgets);
7312
7312
  _context2.prev = 13;
7313
7313
  _iterator.s();
7314
7314
  case 14:
@@ -13014,9 +13014,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
13014
13014
  };
13015
13015
 
13016
13016
  var _excluded$6 = ["rows", "cols"];
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; }
13017
+ 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; } } }; }
13018
+ 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; } }
13019
+ 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; }
13020
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
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 = {
@@ -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$p(sortedKeys),
13172
+ var _iterator = _createForOfIteratorHelper$o(sortedKeys),
13173
13173
  _step;
13174
13174
  try {
13175
13175
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13642,9 +13642,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
13642
13642
  });
13643
13643
  };
13644
13644
 
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; }
13645
+ 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; } } }; }
13646
+ 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; } }
13647
+ 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; }
13648
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
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 = [{
@@ -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$o(tasks || []),
13976
+ var _iterator = _createForOfIteratorHelper$n(tasks || []),
13977
13977
  _step;
13978
13978
  try {
13979
13979
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -16837,9 +16837,9 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
16837
16837
  });
16838
16838
  };
16839
16839
 
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; }
16840
+ 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; } } }; }
16841
+ 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; } }
16842
+ 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; }
16843
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
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) {
@@ -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$n(result.packages || []);
17127
+ _iterator = _createForOfIteratorHelper$m(result.packages || []);
17128
17128
  try {
17129
17129
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
17130
17130
  pkg = _step.value;
17131
- _iterator2 = _createForOfIteratorHelper$n(pkg.widgets || []);
17131
+ _iterator2 = _createForOfIteratorHelper$m(pkg.widgets || []);
17132
17132
  try {
17133
17133
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
17134
17134
  widget = _step2.value;
@@ -18706,69 +18706,6 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
18706
18706
  });
18707
18707
  };
18708
18708
 
18709
- /**
18710
- * ProviderBadge
18711
- *
18712
- * Visual indicator of provider status for widgets.
18713
- * Shows connection status and allows quick access to provider configuration.
18714
- */
18715
-
18716
- var ProviderBadge = function ProviderBadge(_ref) {
18717
- var providerType = _ref.providerType;
18718
- _ref.providerId;
18719
- var providerName = _ref.providerName,
18720
- _ref$isConfigured = _ref.isConfigured,
18721
- isConfigured = _ref$isConfigured === void 0 ? false : _ref$isConfigured,
18722
- _ref$isRequired = _ref.isRequired,
18723
- isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
18724
- onClick = _ref.onClick,
18725
- _ref$className = _ref.className,
18726
- className = _ref$className === void 0 ? "" : _ref$className;
18727
- // Status variants
18728
- var getStatusStyle = function getStatusStyle() {
18729
- if (isConfigured) {
18730
- return {
18731
- bg: "bg-green-50 dark:bg-green-900/20",
18732
- border: "border-green-300 dark:border-green-700",
18733
- text: "text-green-700 dark:text-green-400",
18734
- icon: "✓",
18735
- label: providerName || "Connected"
18736
- };
18737
- }
18738
- if (isRequired) {
18739
- return {
18740
- bg: "bg-yellow-50 dark:bg-yellow-900/20",
18741
- border: "border-yellow-300 dark:border-yellow-700",
18742
- text: "text-yellow-700 dark:text-yellow-400",
18743
- icon: "⚠️",
18744
- label: "Required"
18745
- };
18746
- }
18747
- return {
18748
- bg: "bg-gray-50 dark:bg-gray-900/20",
18749
- border: "border-gray-300 dark:border-gray-700",
18750
- text: "text-gray-600 dark:text-gray-400",
18751
- icon: "○",
18752
- label: "Optional"
18753
- };
18754
- };
18755
- var status = getStatusStyle();
18756
- return /*#__PURE__*/jsxRuntime.jsxs("button", {
18757
- onClick: onClick,
18758
- className: "\n inline-flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium border\n ".concat(status.bg, " ").concat(status.border, " ").concat(status.text, "\n hover:opacity-80 transition-opacity\n ").concat(className, "\n "),
18759
- title: "".concat(providerType, ": ").concat(status.label),
18760
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
18761
- children: status.icon
18762
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
18763
- className: "capitalize",
18764
- children: providerType
18765
- })]
18766
- });
18767
- };
18768
-
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
18709
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
18773
18710
  var item = _ref.item,
18774
18711
  widget = _ref.widget,
@@ -18794,43 +18731,15 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
18794
18731
  isSelectable = _ref$isSelectable === void 0 ? true : _ref$isSelectable,
18795
18732
  _ref$onToggleSelect = _ref.onToggleSelect,
18796
18733
  onToggleSelect = _ref$onToggleSelect === void 0 ? null : _ref$onToggleSelect;
18797
- var _useState = React.useState(null),
18734
+ // One overflow menu holds both provider pickers AND action items,
18735
+ // so the widget title always gets the full header width regardless
18736
+ // of cell size. Previous design kept provider badges + action
18737
+ // buttons inline (both flex-shrink-0) which cropped the title on
18738
+ // narrow cells and made the config button unreachable.
18739
+ var _useState = React.useState(false),
18798
18740
  _useState2 = _slicedToArray(_useState, 2),
18799
- showProviderDropdown = _useState2[0],
18800
- setShowProviderDropdown = _useState2[1];
18801
- var _useState3 = React.useState(false),
18802
- _useState4 = _slicedToArray(_useState3, 2),
18803
- isCompact = _useState4[0],
18804
- setIsCompact = _useState4[1];
18805
- var _useState5 = React.useState(false),
18806
- _useState6 = _slicedToArray(_useState5, 2),
18807
- showOverflowMenu = _useState6[0],
18808
- setShowOverflowMenu = _useState6[1];
18809
- var headerRef = React.useRef(null);
18810
-
18811
- // ResizeObserver to detect compact mode
18812
- React.useEffect(function () {
18813
- var el = headerRef.current;
18814
- if (!el) return;
18815
- var observer = new ResizeObserver(function (entries) {
18816
- var _iterator = _createForOfIteratorHelper$m(entries),
18817
- _step;
18818
- try {
18819
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
18820
- var entry = _step.value;
18821
- setIsCompact(entry.contentRect.width < 320);
18822
- }
18823
- } catch (err) {
18824
- _iterator.e(err);
18825
- } finally {
18826
- _iterator.f();
18827
- }
18828
- });
18829
- observer.observe(el);
18830
- return function () {
18831
- return observer.disconnect();
18832
- };
18833
- }, []);
18741
+ showOverflowMenu = _useState2[0],
18742
+ setShowOverflowMenu = _useState2[1];
18834
18743
 
18835
18744
  // Support both 'item' and 'widget' props
18836
18745
  var widgetItem = item || widget;
@@ -18873,16 +18782,6 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
18873
18782
  return selectedProviders[providerType] != null;
18874
18783
  };
18875
18784
 
18876
- // Get provider name
18877
- var getProviderName = function getProviderName(providerType) {
18878
- var providerId = selectedProviders[providerType];
18879
- if (!providerId) return null;
18880
- var provider = providers.find(function (p) {
18881
- return p.id === providerId;
18882
- });
18883
- return provider === null || provider === void 0 ? void 0 : provider.name;
18884
- };
18885
-
18886
18785
  // Handle provider selection
18887
18786
  var handleProviderSelect = function handleProviderSelect(providerType, providerId) {
18888
18787
  if (providerId === "_new") {
@@ -18892,10 +18791,17 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
18892
18791
  } else {
18893
18792
  onProviderChange(providerType, providerId);
18894
18793
  }
18895
- setShowProviderDropdown(null);
18896
18794
  };
18897
18795
 
18898
- // Build overflow actions for compact mode
18796
+ // True when any required provider lacks a selection — drives the
18797
+ // amber dot on the overflow button so the user can see unresolved
18798
+ // state at a glance without opening the menu.
18799
+ var hasUnresolvedRequiredProvider = providerRequirements.some(function (req) {
18800
+ return req.required && !isProviderConfigured(req.type);
18801
+ });
18802
+
18803
+ // Build overflow actions list — single source of truth for both
18804
+ // the dropdown items and any future quick-access surface.
18899
18805
  var overflowActions = [];
18900
18806
  if (onConfigure) {
18901
18807
  overflowActions.push({
@@ -18958,7 +18864,6 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
18958
18864
  });
18959
18865
  }
18960
18866
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
18961
- ref: headerRef,
18962
18867
  className: "flex items-center gap-3 px-3 py-2.5 bg-transparent border-b border-gray-700 ".concat(isSelected ? "ring-2 ring-blue-500 ring-inset" : ""),
18963
18868
  children: [onToggleSelect && /*#__PURE__*/jsxRuntime.jsx("button", {
18964
18869
  className: "w-5 h-5 rounded-full border-2 flex items-center justify-center transition-colors flex-shrink-0 ".concat(isSelected ? "bg-blue-500 border-blue-500 text-white" : isSelectable ? "bg-gray-800/80 border-blue-400 animate-pulse" : "bg-gray-800/80 border-gray-500 opacity-30 cursor-not-allowed"),
@@ -18985,151 +18890,82 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
18985
18890
  children: "(not found)"
18986
18891
  })]
18987
18892
  })]
18988
- }), providerRequirements.length > 0 && /*#__PURE__*/jsxRuntime.jsx("div", {
18989
- className: "flex items-center gap-2 flex-shrink-0",
18990
- children: providerRequirements.map(function (providerReq) {
18991
- var providerType = providerReq.type;
18992
- var isConfigured = isProviderConfigured(providerType);
18993
- var providerName = getProviderName(providerType);
18994
- var availableProviders = getProvidersForType(providerType);
18995
- var selectedProviderId = selectedProviders[providerType];
18996
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
18997
- className: "relative",
18998
- children: [/*#__PURE__*/jsxRuntime.jsx(ProviderBadge, {
18999
- providerType: providerType,
19000
- providerId: selectedProviderId,
19001
- providerName: providerName,
19002
- isConfigured: isConfigured,
19003
- isRequired: providerReq.required,
19004
- onClick: function onClick() {
19005
- setShowOverflowMenu(false);
19006
- setShowProviderDropdown(showProviderDropdown === providerType ? null : providerType);
19007
- }
19008
- }), /*#__PURE__*/jsxRuntime.jsxs(DashReact.DropdownPanel, {
19009
- isOpen: showProviderDropdown === providerType,
19010
- onClose: function onClose() {
19011
- return setShowProviderDropdown(null);
19012
- },
19013
- position: "absolute top-full right-0 mt-1",
19014
- portal: true,
19015
- direction: "right",
19016
- children: [availableProviders.length > 0 ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
19017
- children: [/*#__PURE__*/jsxRuntime.jsxs(DashReact.DropdownPanel.Header, {
19018
- children: ["Select ", providerType]
19019
- }), availableProviders.map(function (provider) {
19020
- var isSelected = provider.id === selectedProviderId;
19021
- return /*#__PURE__*/jsxRuntime.jsx(DashReact.MenuItem2, {
19022
- onClick: function onClick() {
19023
- return handleProviderSelect(providerType, provider.id);
19024
- },
19025
- selected: isSelected,
19026
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
19027
- className: "flex items-center gap-2 w-full",
19028
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
19029
- className: "w-4 text-center text-xs flex-shrink-0 ".concat(isSelected ? "text-green-400" : "opacity-0"),
19030
- children: "\u2713"
19031
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
19032
- className: "flex-1 min-w-0",
19033
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
19034
- className: "font-medium",
19035
- children: provider.name
19036
- }), provider.description && /*#__PURE__*/jsxRuntime.jsx("div", {
19037
- className: "text-xs opacity-60 mt-0.5",
19038
- children: provider.description
19039
- })]
19040
- })]
19041
- })
19042
- }, provider.id);
19043
- }), /*#__PURE__*/jsxRuntime.jsx(DashReact.DropdownPanel.Divider, {})]
19044
- }) : /*#__PURE__*/jsxRuntime.jsxs("div", {
19045
- className: "px-3 py-2 text-xs opacity-50 italic",
19046
- children: ["No ", providerType, " providers configured"]
19047
- }), !providerReq.required && /*#__PURE__*/jsxRuntime.jsx(DashReact.MenuItem2, {
19048
- onClick: function onClick() {
19049
- handleProviderSelect(providerType, "_unset");
19050
- },
19051
- children: /*#__PURE__*/jsxRuntime.jsxs("span", {
19052
- className: "text-gray-400",
19053
- children: ["\xD7 Unset ", providerType]
19054
- })
19055
- }), /*#__PURE__*/jsxRuntime.jsx(DashReact.MenuItem2, {
19056
- onClick: function onClick() {
19057
- handleProviderSelect(providerType, "_new");
19058
- },
19059
- children: /*#__PURE__*/jsxRuntime.jsxs("span", {
19060
- className: "text-blue-400",
19061
- children: ["+ Create New ", providerType]
19062
- })
19063
- })]
19064
- })]
19065
- }, providerType);
19066
- })
19067
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
19068
- className: "flex items-center gap-0.5 flex-shrink-0",
19069
- children: !isCompact ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
19070
- children: [onConfigure && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19071
- icon: "cog",
19072
- onClick: function onClick() {
19073
- return onConfigure(widgetItem);
19074
- },
19075
- title: "Configure widget",
19076
- theme: false
19077
- }), onEditWithAI && widgetItem && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19078
- icon: "wand-magic-sparkles",
19079
- onClick: function onClick() {
19080
- return onEditWithAI(widgetItem);
19081
- },
19082
- title: "Edit with AI",
19083
- theme: false
19084
- }), onSplitHorizontal && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19085
- icon: "arrows-left-right",
19086
- onClick: function onClick(e) {
19087
- e.stopPropagation();
19088
- onSplitHorizontal();
19089
- },
19090
- title: "Split horizontally (left/right)",
19091
- theme: false
19092
- }), onSplitVertical && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19093
- icon: "arrows-up-down",
19094
- onClick: function onClick(e) {
19095
- e.stopPropagation();
19096
- onSplitVertical();
19097
- },
19098
- title: "Split vertically (top/bottom)",
19099
- theme: false
19100
- }), handleDelete && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19101
- icon: "trash",
19102
- onClick: function onClick() {
19103
- return handleDelete(widgetItem);
19104
- },
19105
- title: "Remove widget",
19106
- theme: false
19107
- }), onMoreOptions && /*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
18893
+ }), (providerRequirements.length > 0 || overflowActions.length > 0 || onMoreOptions) && /*#__PURE__*/jsxRuntime.jsxs("div", {
18894
+ className: "relative flex-shrink-0",
18895
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
18896
+ className: "relative inline-flex",
18897
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19108
18898
  icon: "ellipsis-vertical",
19109
18899
  onClick: function onClick() {
19110
- return onMoreOptions(widget);
18900
+ return setShowOverflowMenu(function (v) {
18901
+ return !v;
18902
+ });
19111
18903
  },
19112
- title: "More options",
18904
+ title: "Providers & actions",
19113
18905
  theme: false
18906
+ }), hasUnresolvedRequiredProvider && /*#__PURE__*/jsxRuntime.jsx("span", {
18907
+ className: "absolute top-1 right-1 h-2 w-2 rounded-full bg-amber-400 border border-black pointer-events-none",
18908
+ title: "Required provider not set"
19114
18909
  })]
19115
- }) : overflowActions.length > 0 ? /*#__PURE__*/jsxRuntime.jsxs("div", {
19116
- className: "relative",
19117
- children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.ButtonIcon2, {
19118
- icon: "chevron-down",
19119
- onClick: function onClick() {
19120
- setShowProviderDropdown(null);
19121
- setShowOverflowMenu(!showOverflowMenu);
19122
- },
19123
- title: "Actions",
19124
- theme: false
19125
- }), /*#__PURE__*/jsxRuntime.jsxs(DashReact.DropdownPanel, {
19126
- isOpen: showOverflowMenu,
19127
- onClose: function onClose() {
19128
- return setShowOverflowMenu(false);
19129
- },
19130
- position: "absolute top-full right-0 mt-1",
19131
- portal: true,
19132
- align: "right",
18910
+ }), /*#__PURE__*/jsxRuntime.jsxs(DashReact.DropdownPanel, {
18911
+ isOpen: showOverflowMenu,
18912
+ onClose: function onClose() {
18913
+ return setShowOverflowMenu(false);
18914
+ },
18915
+ position: "absolute top-full right-0 mt-1",
18916
+ portal: true,
18917
+ align: "right",
18918
+ children: [providerRequirements.length > 0 && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
18919
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.DropdownPanel.Header, {
18920
+ children: "Providers"
18921
+ }), providerRequirements.map(function (providerReq) {
18922
+ var providerType = providerReq.type;
18923
+ var availableProviders = getProvidersForType(providerType);
18924
+ var selectedProviderId = selectedProviders[providerType] || "";
18925
+ var isConfigured = isProviderConfigured(providerType);
18926
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
18927
+ className: "px-3 py-2 text-xs",
18928
+ onClick: function onClick(e) {
18929
+ return e.stopPropagation();
18930
+ },
18931
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
18932
+ className: "flex items-center gap-2 mb-1",
18933
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
18934
+ className: "font-medium text-gray-200",
18935
+ children: providerType
18936
+ }), providerReq.required && !isConfigured && /*#__PURE__*/jsxRuntime.jsx("span", {
18937
+ className: "text-[10px] text-amber-300 uppercase tracking-wide",
18938
+ children: "required"
18939
+ })]
18940
+ }), /*#__PURE__*/jsxRuntime.jsxs("select", {
18941
+ value: selectedProviderId,
18942
+ onChange: function onChange(e) {
18943
+ var v = e.target.value;
18944
+ if (v === "_new") {
18945
+ handleProviderSelect(providerType, "_new");
18946
+ } else if (v === "") {
18947
+ handleProviderSelect(providerType, "_unset");
18948
+ } else {
18949
+ handleProviderSelect(providerType, v);
18950
+ }
18951
+ },
18952
+ className: "w-full bg-gray-800 border border-gray-700 text-gray-100 text-xs rounded px-2 py-1",
18953
+ children: [/*#__PURE__*/jsxRuntime.jsx("option", {
18954
+ value: "",
18955
+ children: providerReq.required ? "— select provider —" : "— none —"
18956
+ }), availableProviders.map(function (provider) {
18957
+ return /*#__PURE__*/jsxRuntime.jsx("option", {
18958
+ value: provider.id,
18959
+ children: provider.name
18960
+ }, provider.id);
18961
+ }), /*#__PURE__*/jsxRuntime.jsx("option", {
18962
+ value: "_new",
18963
+ children: "+ Create new\u2026"
18964
+ })]
18965
+ })]
18966
+ }, providerType);
18967
+ }), overflowActions.length > 0 && /*#__PURE__*/jsxRuntime.jsx(DashReact.DropdownPanel.Divider, {})]
18968
+ }), overflowActions.length > 0 && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
19133
18969
  children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.DropdownPanel.Header, {
19134
18970
  children: "Actions"
19135
18971
  }), overflowActions.map(function (action) {
@@ -19144,7 +18980,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
19144
18980
  }, action.label);
19145
18981
  })]
19146
18982
  })]
19147
- }) : null
18983
+ })]
19148
18984
  })]
19149
18985
  });
19150
18986
  };
@@ -25735,6 +25571,11 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
25735
25571
  widgetComponentName: cellComponent.component,
25736
25572
  widgetId: cellComponent.id,
25737
25573
  selectedProviders: cellComponent.selectedProviders || null,
25574
+ // Pass the live widget's userPrefs so the
25575
+ // preview renders the same configured state
25576
+ // the user sees on the dashboard (titles,
25577
+ // defaults, etc.) instead of blank values.
25578
+ userPrefs: cellComponent.userPrefs || null,
25738
25579
  sourcePackage: ((_ComponentManager$con = ComponentManager.config(cellComponent.component, cellComponent)) === null || _ComponentManager$con === void 0 ? void 0 : _ComponentManager$con._sourcePackage) || null
25739
25580
  }
25740
25581
  }));