@trops/dash-core 0.1.38 → 0.1.39

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
@@ -2655,9 +2655,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
2655
2655
 
2656
2656
  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; }
2657
2657
  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; }
2658
- 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; } } }; }
2659
- 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; } }
2660
- 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; }
2658
+ 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; } } }; }
2659
+ 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; } }
2660
+ 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; }
2661
2661
  /**
2662
2662
  * Layout template definitions for the dashboard template picker.
2663
2663
  *
@@ -2893,7 +2893,7 @@ function createLayoutFromTemplate(template) {
2893
2893
  cols: template.cols,
2894
2894
  gap: "gap-2"
2895
2895
  };
2896
- var _iterator = _createForOfIteratorHelper$8(template.cells),
2896
+ var _iterator = _createForOfIteratorHelper$9(template.cells),
2897
2897
  _step;
2898
2898
  try {
2899
2899
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -4405,9 +4405,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
4405
4405
  };
4406
4406
 
4407
4407
  var _excluded$5 = ["rows", "cols"];
4408
- 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; } } }; }
4409
- 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; } }
4410
- 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; }
4408
+ 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; } } }; }
4409
+ 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; } }
4410
+ 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; }
4411
4411
  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; }
4412
4412
  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; }
4413
4413
  var defaultGrid = {
@@ -4560,7 +4560,7 @@ function GridEditor(_ref) {
4560
4560
  function sortObjectByKeys(obj) {
4561
4561
  var sortedKeys = Object.keys(obj).sort();
4562
4562
  var sortedObj = {};
4563
- var _iterator = _createForOfIteratorHelper$7(sortedKeys),
4563
+ var _iterator = _createForOfIteratorHelper$8(sortedKeys),
4564
4564
  _step;
4565
4565
  try {
4566
4566
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -7099,9 +7099,9 @@ var ProviderForm = function ProviderForm(_ref) {
7099
7099
  });
7100
7100
  };
7101
7101
 
7102
- 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; } } }; }
7103
- 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; } }
7104
- 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; }
7102
+ 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; } } }; }
7103
+ 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; } }
7104
+ 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; }
7105
7105
  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; }
7106
7106
  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; }
7107
7107
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -7310,11 +7310,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
7310
7310
 
7311
7311
  // Flatten all widgets from all packages for the widget list
7312
7312
  flatWidgets = [];
7313
- _iterator = _createForOfIteratorHelper$6(result.packages || []);
7313
+ _iterator = _createForOfIteratorHelper$7(result.packages || []);
7314
7314
  try {
7315
7315
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
7316
7316
  pkg = _step.value;
7317
- _iterator2 = _createForOfIteratorHelper$6(pkg.widgets || []);
7317
+ _iterator2 = _createForOfIteratorHelper$7(pkg.widgets || []);
7318
7318
  try {
7319
7319
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
7320
7320
  widget = _step2.value;
@@ -8480,9 +8480,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
8480
8480
  });
8481
8481
  };
8482
8482
 
8483
- 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; } } }; }
8484
- 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; } }
8485
- 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; }
8483
+ 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; } } }; }
8484
+ 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; } }
8485
+ 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; }
8486
8486
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
8487
8487
  var item = _ref.item,
8488
8488
  widget = _ref.widget,
@@ -8526,7 +8526,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
8526
8526
  var el = headerRef.current;
8527
8527
  if (!el) return;
8528
8528
  var observer = new ResizeObserver(function (entries) {
8529
- var _iterator = _createForOfIteratorHelper$5(entries),
8529
+ var _iterator = _createForOfIteratorHelper$6(entries),
8530
8530
  _step;
8531
8531
  try {
8532
8532
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13236,9 +13236,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
13236
13236
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
13237
13237
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
13238
13238
 
13239
- 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; } } }; }
13240
- 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; } }
13241
- 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; }
13239
+ 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; } } }; }
13240
+ 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; } }
13241
+ 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; }
13242
13242
  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; }
13243
13243
  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; }
13244
13244
  var DraggableCellBody = function DraggableCellBody(_ref) {
@@ -13584,7 +13584,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
13584
13584
  return selectable["delete"](cn);
13585
13585
  });
13586
13586
  var resolved = new Set();
13587
- var _iterator = _createForOfIteratorHelper$4(selectable),
13587
+ var _iterator = _createForOfIteratorHelper$5(selectable),
13588
13588
  _step;
13589
13589
  try {
13590
13590
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -15646,9 +15646,9 @@ function isWidgetResolvable(componentKey) {
15646
15646
 
15647
15647
  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; }
15648
15648
  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; }
15649
- function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(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; } } }; }
15650
- function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(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$3(r, a) : void 0; } }
15651
- function _arrayLikeToArray$3(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; }
15649
+ 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; } } }; }
15650
+ 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; } }
15651
+ 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; }
15652
15652
  /**
15653
15653
  * The model for all layout components used primarily in the renderLayout method
15654
15654
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -15660,7 +15660,7 @@ function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.lengt
15660
15660
  function sortObjectByKeys(obj) {
15661
15661
  var sortedKeys = Object.keys(obj).sort();
15662
15662
  var sortedObj = {};
15663
- var _iterator = _createForOfIteratorHelper$3(sortedKeys),
15663
+ var _iterator = _createForOfIteratorHelper$4(sortedKeys),
15664
15664
  _step;
15665
15665
  try {
15666
15666
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -18803,9 +18803,9 @@ var useDashboard = function useDashboard() {
18803
18803
  });
18804
18804
  };
18805
18805
 
18806
- function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(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; } } }; }
18807
- function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(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$2(r, a) : void 0; } }
18808
- function _arrayLikeToArray$2(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; }
18806
+ function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(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; } } }; }
18807
+ function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(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$3(r, a) : void 0; } }
18808
+ function _arrayLikeToArray$3(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; }
18809
18809
 
18810
18810
  /**
18811
18811
  * useWidgetProviders Hook
@@ -18856,7 +18856,7 @@ var useWidgetProviders = function useWidgetProviders() {
18856
18856
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
18857
18857
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
18858
18858
  var providers = {};
18859
- var _iterator = _createForOfIteratorHelper$2(providerDeclarations),
18859
+ var _iterator = _createForOfIteratorHelper$3(providerDeclarations),
18860
18860
  _step;
18861
18861
  try {
18862
18862
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -21661,9 +21661,9 @@ var resolveIcon = function resolveIcon(iconName) {
21661
21661
  return FALLBACK;
21662
21662
  };
21663
21663
 
21664
- function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(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; } } }; }
21665
- function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(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$1(r, a) : void 0; } }
21666
- function _arrayLikeToArray$1(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; }
21664
+ function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(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; } } }; }
21665
+ function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(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$2(r, a) : void 0; } }
21666
+ function _arrayLikeToArray$2(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; }
21667
21667
  /**
21668
21668
  * Validation utilities for grid-first dashboard architecture
21669
21669
  *
@@ -21902,7 +21902,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
21902
21902
 
21903
21903
  // Validate each cell
21904
21904
  var cells = [];
21905
- var _iterator = _createForOfIteratorHelper$1(cellNumbers),
21905
+ var _iterator = _createForOfIteratorHelper$2(cellNumbers),
21906
21906
  _step;
21907
21907
  try {
21908
21908
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28300,9 +28300,9 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
28300
28300
  });
28301
28301
  };
28302
28302
 
28303
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(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; } } }; }
28304
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(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, a) : void 0; } }
28305
- function _arrayLikeToArray(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; }
28303
+ function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(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; } } }; }
28304
+ function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(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$1(r, a) : void 0; } }
28305
+ function _arrayLikeToArray$1(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; }
28306
28306
 
28307
28307
  /**
28308
28308
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -28377,11 +28377,11 @@ var useRegistrySearch = function useRegistrySearch() {
28377
28377
 
28378
28378
  // Flatten packages into widget entries
28379
28379
  widgets = [];
28380
- _iterator = _createForOfIteratorHelper(pkgs);
28380
+ _iterator = _createForOfIteratorHelper$1(pkgs);
28381
28381
  try {
28382
28382
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
28383
28383
  pkg = _step.value;
28384
- _iterator2 = _createForOfIteratorHelper(pkg.widgets || []);
28384
+ _iterator2 = _createForOfIteratorHelper$1(pkg.widgets || []);
28385
28385
  try {
28386
28386
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
28387
28387
  widget = _step2.value;
@@ -28657,6 +28657,71 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
28657
28657
  });
28658
28658
  };
28659
28659
 
28660
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(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; } } }; }
28661
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(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, a) : void 0; } }
28662
+ function _arrayLikeToArray(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; }
28663
+
28664
+ /**
28665
+ * Walk a workspace layout array (possibly nested via LayoutGridContainer
28666
+ * children) and collect every `item.component` value.
28667
+ */
28668
+ function collectComponentsFromLayout(layout) {
28669
+ var components = [];
28670
+ if (!Array.isArray(layout)) return components;
28671
+ var _iterator = _createForOfIteratorHelper(layout),
28672
+ _step;
28673
+ try {
28674
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
28675
+ var item = _step.value;
28676
+ if (item.component) components.push(item.component);
28677
+ if (Array.isArray(item.children)) {
28678
+ components.push.apply(components, _toConsumableArray(collectComponentsFromLayout(item.children)));
28679
+ }
28680
+ }
28681
+ } catch (err) {
28682
+ _iterator.e(err);
28683
+ } finally {
28684
+ _iterator.f();
28685
+ }
28686
+ return components;
28687
+ }
28688
+
28689
+ /**
28690
+ * Check which workspaces use any of the given component names.
28691
+ *
28692
+ * @param {string[]} componentNames – CM keys the widget package registers
28693
+ * @param {object[]} workspaces – workspace objects with .layout arrays
28694
+ * @returns {{ workspaceId: string, workspaceName: string, count: number }[]}
28695
+ */
28696
+ function findWidgetUsage(componentNames, workspaces) {
28697
+ if (!(componentNames !== null && componentNames !== void 0 && componentNames.length) || !(workspaces !== null && workspaces !== void 0 && workspaces.length)) return [];
28698
+ var nameSet = new Set(componentNames);
28699
+ var results = [];
28700
+ var _iterator2 = _createForOfIteratorHelper(workspaces),
28701
+ _step2;
28702
+ try {
28703
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
28704
+ var ws = _step2.value;
28705
+ var comps = collectComponentsFromLayout(ws.layout);
28706
+ var count = comps.filter(function (c) {
28707
+ return nameSet.has(c);
28708
+ }).length;
28709
+ if (count > 0) {
28710
+ results.push({
28711
+ workspaceId: ws.id,
28712
+ workspaceName: ws.name || ws.id,
28713
+ count: count
28714
+ });
28715
+ }
28716
+ }
28717
+ } catch (err) {
28718
+ _iterator2.e(err);
28719
+ } finally {
28720
+ _iterator2.f();
28721
+ }
28722
+ return results;
28723
+ }
28724
+
28660
28725
  /**
28661
28726
  * useInstalledWidgets — hook for listing and managing installed widgets.
28662
28727
  *
@@ -28702,13 +28767,15 @@ var useInstalledWidgets = function useInstalledWidgets() {
28702
28767
  name: key,
28703
28768
  displayName: config.name || key,
28704
28769
  author: config.author || null,
28770
+ "package": config["package"] || null,
28705
28771
  description: config.description || null,
28706
28772
  icon: config.icon || null,
28707
28773
  version: null,
28708
28774
  path: null,
28709
28775
  source: "builtin",
28710
28776
  providers: config.providers || [],
28711
- workspace: config.workspace || null
28777
+ workspace: config.workspace || null,
28778
+ componentNames: [key]
28712
28779
  };
28713
28780
  }); // ── Installed widgets from WidgetRegistry ───────────────
28714
28781
  // Registry entries now include .dash.js fields (icon, providers,
@@ -28738,13 +28805,15 @@ var useInstalledWidgets = function useInstalledWidgets() {
28738
28805
  name: w.name,
28739
28806
  displayName: w.displayName || (cm === null || cm === void 0 ? void 0 : cm.name) || cmKey || w.name,
28740
28807
  author: w.author || (cm === null || cm === void 0 ? void 0 : cm.author) || null,
28808
+ "package": w["package"] || (cm === null || cm === void 0 ? void 0 : cm["package"]) || null,
28741
28809
  description: w.description || (cm === null || cm === void 0 ? void 0 : cm.description) || null,
28742
28810
  icon: w.icon || (cm === null || cm === void 0 ? void 0 : cm.icon) || null,
28743
28811
  version: w.version || null,
28744
28812
  path: w.path || null,
28745
28813
  source: "installed",
28746
28814
  providers: (_w$providers = w.providers) !== null && _w$providers !== void 0 && _w$providers.length ? w.providers : (cm === null || cm === void 0 ? void 0 : cm.providers) || [],
28747
- workspace: w.workspace || (cm === null || cm === void 0 ? void 0 : cm.workspace) || null
28815
+ workspace: w.workspace || (cm === null || cm === void 0 ? void 0 : cm.workspace) || null,
28816
+ componentNames: w.componentNames || (cmKey ? [cmKey] : [])
28748
28817
  };
28749
28818
  });
28750
28819
  case 3:
@@ -28839,7 +28908,10 @@ var useInstalledWidgets = function useInstalledWidgets() {
28839
28908
  };
28840
28909
 
28841
28910
  var WidgetsSection = function WidgetsSection(_ref) {
28842
- var _ref$createRequested = _ref.createRequested,
28911
+ var _ref$workspaces = _ref.workspaces,
28912
+ workspaces = _ref$workspaces === void 0 ? [] : _ref$workspaces;
28913
+ _ref.credentials;
28914
+ var _ref$createRequested = _ref.createRequested,
28843
28915
  createRequested = _ref$createRequested === void 0 ? false : _ref$createRequested,
28844
28916
  _ref$onCreateAcknowle = _ref.onCreateAcknowledged,
28845
28917
  onCreateAcknowledged = _ref$onCreateAcknowle === void 0 ? null : _ref$onCreateAcknowle;
@@ -28867,10 +28939,99 @@ var WidgetsSection = function WidgetsSection(_ref) {
28867
28939
  _useState6 = _slicedToArray(_useState5, 2),
28868
28940
  deleteTarget = _useState6[0],
28869
28941
  setDeleteTarget = _useState6[1];
28870
- var _useState7 = React.useState(null),
28942
+ var _useState7 = React.useState([]),
28871
28943
  _useState8 = _slicedToArray(_useState7, 2),
28872
- installResult = _useState8[0],
28873
- setInstallResult = _useState8[1];
28944
+ deleteUsage = _useState8[0],
28945
+ setDeleteUsage = _useState8[1];
28946
+ var _useState9 = React.useState(null),
28947
+ _useState0 = _slicedToArray(_useState9, 2),
28948
+ installResult = _useState0[0],
28949
+ setInstallResult = _useState0[1];
28950
+
28951
+ // ── Filter state ────────────────────────────────────────────────────
28952
+ var _useState1 = React.useState(""),
28953
+ _useState10 = _slicedToArray(_useState1, 2),
28954
+ searchQuery = _useState10[0],
28955
+ setSearchQuery = _useState10[1];
28956
+ var _useState11 = React.useState("all"),
28957
+ _useState12 = _slicedToArray(_useState11, 2),
28958
+ filterSource = _useState12[0],
28959
+ setFilterSource = _useState12[1]; // "all" | "builtin" | "installed"
28960
+ var _useState13 = React.useState("all"),
28961
+ _useState14 = _slicedToArray(_useState13, 2),
28962
+ filterAuthor = _useState14[0],
28963
+ setFilterAuthor = _useState14[1];
28964
+ var _useState15 = React.useState("all"),
28965
+ _useState16 = _slicedToArray(_useState15, 2),
28966
+ filterProvider = _useState16[0],
28967
+ setFilterProvider = _useState16[1];
28968
+
28969
+ // ── Derived filter options ──────────────────────────────────────────
28970
+ var uniqueAuthors = React.useMemo(function () {
28971
+ return _toConsumableArray(new Set(widgets.map(function (w) {
28972
+ return w["package"] || w.author || "Other";
28973
+ }))).sort();
28974
+ }, [widgets]);
28975
+ var uniqueProviders = React.useMemo(function () {
28976
+ return _toConsumableArray(new Set(widgets.flatMap(function (w) {
28977
+ return (w.providers || []).map(function (p) {
28978
+ return p.type;
28979
+ });
28980
+ }))).sort();
28981
+ }, [widgets]);
28982
+
28983
+ // ── Filtered + grouped widgets ──────────────────────────────────────
28984
+ var _useMemo = React.useMemo(function () {
28985
+ var filtered = widgets.filter(function (w) {
28986
+ // Search: match name, displayName, or description
28987
+ if (searchQuery) {
28988
+ var q = searchQuery.toLowerCase();
28989
+ var matchesSearch = (w.displayName || "").toLowerCase().includes(q) || (w.name || "").toLowerCase().includes(q) || (w.description || "").toLowerCase().includes(q);
28990
+ if (!matchesSearch) return false;
28991
+ }
28992
+ // Source filter
28993
+ if (filterSource !== "all" && w.source !== filterSource) return false;
28994
+ // Author/package filter
28995
+ if (filterAuthor !== "all") {
28996
+ if ((w["package"] || w.author || "Other") !== filterAuthor) return false;
28997
+ }
28998
+ // Provider filter
28999
+ if (filterProvider !== "all") {
29000
+ if (filterProvider === "none") {
29001
+ if (w.providers && w.providers.length > 0) return false;
29002
+ } else {
29003
+ if (!w.providers || !w.providers.some(function (p) {
29004
+ return p.type === filterProvider;
29005
+ })) return false;
29006
+ }
29007
+ }
29008
+ return true;
29009
+ });
29010
+
29011
+ // Group by package > author > "Other"
29012
+ var groups = {};
29013
+ filtered.forEach(function (w) {
29014
+ var group = w["package"] || w.author || "Other";
29015
+ if (!groups[group]) groups[group] = [];
29016
+ groups[group].push(w);
29017
+ });
29018
+ return {
29019
+ filteredGrouped: groups,
29020
+ filteredCount: filtered.length,
29021
+ totalCount: widgets.length
29022
+ };
29023
+ }, [widgets, searchQuery, filterSource, filterAuthor, filterProvider]),
29024
+ filteredGrouped = _useMemo.filteredGrouped,
29025
+ filteredCount = _useMemo.filteredCount,
29026
+ totalCount = _useMemo.totalCount;
29027
+ var hasActiveFilters = searchQuery || filterSource !== "all" || filterAuthor !== "all" || filterProvider !== "all";
29028
+ var clearFilters = function clearFilters() {
29029
+ setSearchQuery("");
29030
+ setFilterSource("all");
29031
+ setFilterAuthor("all");
29032
+ setFilterProvider("all");
29033
+ };
29034
+ var selectClassName = "w-full px-2 py-1 rounded text-xs bg-transparent border ".concat(currentTheme["border-primary-medium"] || "border-gray-700", " ").concat(currentTheme["text-primary-light"] || "text-gray-300", " focus:outline-none appearance-none cursor-pointer");
28874
29035
 
28875
29036
  // Respond to external create trigger from header button
28876
29037
  var prevCreateRequested = React.useRef(false);
@@ -28889,6 +29050,14 @@ var WidgetsSection = function WidgetsSection(_ref) {
28889
29050
  var selectedWidget = selectedWidgetName ? widgets.find(function (w) {
28890
29051
  return w.name === selectedWidgetName;
28891
29052
  }) : null;
29053
+
29054
+ // ── Uninstall with usage check ──────────────────────────────────────
29055
+
29056
+ function handleDeleteRequest(widget) {
29057
+ var usage = findWidgetUsage(widget.componentNames, workspaces);
29058
+ setDeleteUsage(usage);
29059
+ setDeleteTarget(widget);
29060
+ }
28892
29061
  function handleConfirmDelete() {
28893
29062
  return _handleConfirmDelete.apply(this, arguments);
28894
29063
  }
@@ -28917,6 +29086,7 @@ var WidgetsSection = function WidgetsSection(_ref) {
28917
29086
  _context["catch"](1);
28918
29087
  case 4:
28919
29088
  setDeleteTarget(null);
29089
+ setDeleteUsage([]);
28920
29090
  case 5:
28921
29091
  case "end":
28922
29092
  return _context.stop();
@@ -29097,33 +29267,126 @@ var WidgetsSection = function WidgetsSection(_ref) {
29097
29267
  className: "text-sm opacity-40 py-8 text-center block",
29098
29268
  children: "No widgets available"
29099
29269
  });
29270
+ } else if (filteredCount === 0) {
29271
+ listBody = /*#__PURE__*/jsxRuntime.jsx("span", {
29272
+ className: "text-sm opacity-40 py-8 text-center block",
29273
+ children: "No widgets match filters"
29274
+ });
29100
29275
  } else {
29101
- listBody = widgets.map(function (widget) {
29102
- var isSelected = selectedWidgetName === widget.name && !installMode;
29103
- return /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Item, {
29104
- icon: /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
29105
- icon: resolveIcon(widget.icon),
29106
- className: "h-3.5 w-3.5"
29107
- }),
29108
- active: isSelected,
29109
- onClick: function onClick() {
29110
- setSelectedWidgetName(widget.name);
29111
- setInstallMode(null);
29112
- setInstallResult(null);
29113
- },
29114
- className: isSelected ? "bg-white/10 opacity-100" : "",
29115
- children: /*#__PURE__*/jsxRuntime.jsxs("span", {
29116
- className: "flex items-center gap-2",
29117
- children: [widget.displayName || widget.name, widget.source === "builtin" && /*#__PURE__*/jsxRuntime.jsx(DashReact.Tag3, {
29118
- text: "Built-in"
29119
- })]
29120
- })
29121
- }, widget.name);
29276
+ var groupKeys = Object.keys(filteredGrouped).sort();
29277
+ var showGroupHeaders = groupKeys.length > 1;
29278
+ listBody = groupKeys.map(function (group) {
29279
+ var groupWidgets = filteredGrouped[group];
29280
+ var items = groupWidgets.map(function (widget) {
29281
+ var isSelected = selectedWidgetName === widget.name && !installMode;
29282
+ return /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Item, {
29283
+ icon: /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
29284
+ icon: resolveIcon(widget.icon),
29285
+ className: "h-3.5 w-3.5"
29286
+ }),
29287
+ active: isSelected,
29288
+ onClick: function onClick() {
29289
+ setSelectedWidgetName(widget.name);
29290
+ setInstallMode(null);
29291
+ setInstallResult(null);
29292
+ },
29293
+ className: isSelected ? "bg-white/10 opacity-100" : "",
29294
+ children: /*#__PURE__*/jsxRuntime.jsxs("span", {
29295
+ className: "flex items-center gap-2",
29296
+ children: [widget.displayName || widget.name, widget.source === "builtin" && /*#__PURE__*/jsxRuntime.jsx(DashReact.Tag3, {
29297
+ text: "Built-in"
29298
+ })]
29299
+ })
29300
+ }, widget.name);
29301
+ });
29302
+ if (showGroupHeaders) {
29303
+ return /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Group, {
29304
+ label: group,
29305
+ children: items
29306
+ }, group);
29307
+ }
29308
+ return items;
29122
29309
  });
29123
29310
  }
29124
29311
  var listContent = /*#__PURE__*/jsxRuntime.jsxs("div", {
29125
29312
  className: "flex flex-col h-full",
29126
- children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Content, {
29313
+ children: [!isLoading && !error && widgets.length > 0 && /*#__PURE__*/jsxRuntime.jsxs("div", {
29314
+ className: "flex flex-col gap-2 px-3 py-2 flex-shrink-0 border-b border-white/10",
29315
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.SearchInput, {
29316
+ value: searchQuery,
29317
+ onChange: setSearchQuery,
29318
+ placeholder: "Search widgets...",
29319
+ inputClassName: "py-1.5 text-xs"
29320
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
29321
+ className: "flex bg-white/5 rounded-md p-0.5",
29322
+ children: [{
29323
+ key: "all",
29324
+ label: "All"
29325
+ }, {
29326
+ key: "builtin",
29327
+ label: "Built-in"
29328
+ }, {
29329
+ key: "installed",
29330
+ label: "Installed"
29331
+ }].map(function (tab) {
29332
+ return /*#__PURE__*/jsxRuntime.jsx("button", {
29333
+ type: "button",
29334
+ onClick: function onClick() {
29335
+ return setFilterSource(tab.key);
29336
+ },
29337
+ className: "flex-1 px-2 py-0.5 rounded text-[11px] transition-colors ".concat(filterSource === tab.key ? "bg-white/10 font-medium opacity-90" : "opacity-50 hover:opacity-70"),
29338
+ children: tab.label
29339
+ }, tab.key);
29340
+ })
29341
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
29342
+ className: "grid grid-cols-2 gap-1.5",
29343
+ children: [/*#__PURE__*/jsxRuntime.jsxs("select", {
29344
+ value: filterAuthor,
29345
+ onChange: function onChange(e) {
29346
+ return setFilterAuthor(e.target.value);
29347
+ },
29348
+ className: selectClassName,
29349
+ children: [/*#__PURE__*/jsxRuntime.jsx("option", {
29350
+ value: "all",
29351
+ children: "All Authors"
29352
+ }), uniqueAuthors.map(function (a) {
29353
+ return /*#__PURE__*/jsxRuntime.jsx("option", {
29354
+ value: a,
29355
+ children: a
29356
+ }, a);
29357
+ })]
29358
+ }), /*#__PURE__*/jsxRuntime.jsxs("select", {
29359
+ value: filterProvider,
29360
+ onChange: function onChange(e) {
29361
+ return setFilterProvider(e.target.value);
29362
+ },
29363
+ className: selectClassName,
29364
+ children: [/*#__PURE__*/jsxRuntime.jsx("option", {
29365
+ value: "all",
29366
+ children: "All Providers"
29367
+ }), /*#__PURE__*/jsxRuntime.jsx("option", {
29368
+ value: "none",
29369
+ children: "No Providers"
29370
+ }), uniqueProviders.map(function (p) {
29371
+ return /*#__PURE__*/jsxRuntime.jsx("option", {
29372
+ value: p,
29373
+ children: p
29374
+ }, p);
29375
+ })]
29376
+ })]
29377
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
29378
+ className: "flex items-center justify-between text-[10px] px-0.5",
29379
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
29380
+ className: "opacity-50",
29381
+ children: hasActiveFilters ? "".concat(filteredCount, " of ").concat(totalCount, " widgets") : "".concat(totalCount, " widgets")
29382
+ }), hasActiveFilters && /*#__PURE__*/jsxRuntime.jsx("button", {
29383
+ type: "button",
29384
+ onClick: clearFilters,
29385
+ className: "opacity-60 hover:opacity-100 transition-opacity text-gray-300 hover:bg-white/10 px-1.5 py-0.5 rounded",
29386
+ children: "Clear"
29387
+ })]
29388
+ })]
29389
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Content, {
29127
29390
  children: listBody
29128
29391
  }), !isLoading && !error && widgets.length > 0 && /*#__PURE__*/jsxRuntime.jsx("div", {
29129
29392
  className: "px-3 py-2 text-[10px] opacity-40 flex-shrink-0 border-t border-white/10",
@@ -29201,10 +29464,14 @@ var WidgetsSection = function WidgetsSection(_ref) {
29201
29464
  detailContent = /*#__PURE__*/jsxRuntime.jsx(InstalledWidgetDetail, {
29202
29465
  widget: selectedWidget,
29203
29466
  onDelete: function onDelete(w) {
29204
- return setDeleteTarget(w);
29467
+ return handleDeleteRequest(w);
29205
29468
  }
29206
29469
  });
29207
29470
  }
29471
+
29472
+ // ── Uninstall confirmation message ──────────────────────────────────
29473
+
29474
+ var deleteMessage = deleteUsage.length > 0 ? "\"".concat((deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.displayName) || (deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.name), "\" is currently used in ").concat(deleteUsage.length, " dashboard").concat(deleteUsage.length !== 1 ? "s" : "", ". Uninstalling will leave orphaned layout items on these dashboards.") : "Are you sure you want to uninstall \"".concat((deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.displayName) || (deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.name), "\"?");
29208
29475
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
29209
29476
  children: [/*#__PURE__*/jsxRuntime.jsx(SectionLayout, {
29210
29477
  listContent: listContent,
@@ -29213,16 +29480,36 @@ var WidgetsSection = function WidgetsSection(_ref) {
29213
29480
  }), /*#__PURE__*/jsxRuntime.jsx(DashReact.ConfirmationModal, {
29214
29481
  isOpen: !!deleteTarget,
29215
29482
  setIsOpen: function setIsOpen() {
29216
- return setDeleteTarget(null);
29483
+ setDeleteTarget(null);
29484
+ setDeleteUsage([]);
29217
29485
  },
29218
29486
  title: "Uninstall Widget",
29219
- message: "Are you sure you want to uninstall \"".concat((deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.displayName) || (deleteTarget === null || deleteTarget === void 0 ? void 0 : deleteTarget.name), "\"?"),
29487
+ message: deleteMessage,
29220
29488
  confirmLabel: "Uninstall",
29221
29489
  variant: "danger",
29222
29490
  onConfirm: handleConfirmDelete,
29223
29491
  onCancel: function onCancel() {
29224
- return setDeleteTarget(null);
29225
- }
29492
+ setDeleteTarget(null);
29493
+ setDeleteUsage([]);
29494
+ },
29495
+ children: deleteUsage.length > 0 && /*#__PURE__*/jsxRuntime.jsxs("div", {
29496
+ className: "mt-2 space-y-1",
29497
+ children: [/*#__PURE__*/jsxRuntime.jsx("span", {
29498
+ className: "text-xs font-semibold opacity-70",
29499
+ children: "Affected dashboards:"
29500
+ }), deleteUsage.map(function (u) {
29501
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
29502
+ className: "text-xs opacity-60 flex items-center gap-1.5 pl-2",
29503
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
29504
+ icon: "triangle-exclamation",
29505
+ className: "h-3 w-3 text-yellow-500"
29506
+ }), u.workspaceName, " ", /*#__PURE__*/jsxRuntime.jsxs("span", {
29507
+ className: "opacity-50",
29508
+ children: ["(", u.count, " instance", u.count !== 1 ? "s" : "", ")"]
29509
+ })]
29510
+ }, u.workspaceId);
29511
+ })]
29512
+ })
29226
29513
  })]
29227
29514
  });
29228
29515
  };
@@ -29372,6 +29659,8 @@ var AppSettingsModal = function AppSettingsModal(_ref) {
29372
29659
  return setCreateRequested(false);
29373
29660
  }
29374
29661
  }), activeSection === "widgets" && /*#__PURE__*/jsxRuntime.jsx(WidgetsSection, {
29662
+ workspaces: workspaces,
29663
+ credentials: credentials,
29375
29664
  createRequested: createRequested,
29376
29665
  onCreateAcknowledged: function onCreateAcknowledged() {
29377
29666
  return setCreateRequested(false);