@trops/dash-core 0.1.150 → 0.1.152

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -2695,9 +2695,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
2695
2695
 
2696
2696
  function ownKeys$A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2697
2697
  function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2698
- function _createForOfIteratorHelper$d(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$d(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2699
- function _unsupportedIterableToArray$d(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$d(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$d(r, a) : void 0; } }
2700
- function _arrayLikeToArray$d(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2698
+ function _createForOfIteratorHelper$e(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$e(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2699
+ function _unsupportedIterableToArray$e(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$e(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$e(r, a) : void 0; } }
2700
+ function _arrayLikeToArray$e(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2701
2701
  /**
2702
2702
  * Layout template definitions for the dashboard template picker.
2703
2703
  *
@@ -2933,7 +2933,7 @@ function createLayoutFromTemplate(template) {
2933
2933
  cols: template.cols,
2934
2934
  gap: "gap-2"
2935
2935
  };
2936
- var _iterator = _createForOfIteratorHelper$d(template.cells),
2936
+ var _iterator = _createForOfIteratorHelper$e(template.cells),
2937
2937
  _step;
2938
2938
  try {
2939
2939
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -9776,9 +9776,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
9776
9776
  };
9777
9777
 
9778
9778
  var _excluded$5 = ["rows", "cols"];
9779
- function _createForOfIteratorHelper$c(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$c(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9780
- function _unsupportedIterableToArray$c(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$c(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$c(r, a) : void 0; } }
9781
- function _arrayLikeToArray$c(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9779
+ function _createForOfIteratorHelper$d(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$d(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9780
+ function _unsupportedIterableToArray$d(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$d(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$d(r, a) : void 0; } }
9781
+ function _arrayLikeToArray$d(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9782
9782
  function ownKeys$x(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9783
9783
  function _objectSpread$x(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$x(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$x(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9784
9784
  var defaultGrid = {
@@ -9931,7 +9931,7 @@ function GridEditor(_ref) {
9931
9931
  function sortObjectByKeys(obj) {
9932
9932
  var sortedKeys = Object.keys(obj).sort();
9933
9933
  var sortedObj = {};
9934
- var _iterator = _createForOfIteratorHelper$c(sortedKeys),
9934
+ var _iterator = _createForOfIteratorHelper$d(sortedKeys),
9935
9935
  _step;
9936
9936
  try {
9937
9937
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10404,9 +10404,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
10404
10404
  });
10405
10405
  };
10406
10406
 
10407
- function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10408
- function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$b(r, a) : void 0; } }
10409
- function _arrayLikeToArray$b(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10407
+ function _createForOfIteratorHelper$c(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$c(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10408
+ function _unsupportedIterableToArray$c(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$c(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$c(r, a) : void 0; } }
10409
+ function _arrayLikeToArray$c(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10410
10410
  function ownKeys$v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10411
10411
  function _objectSpread$v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$v(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10412
10412
  var DAYS = [{
@@ -10725,12 +10725,17 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
10725
10725
  _useState12 = _slicedToArray(_useState11, 2),
10726
10726
  taskStates = _useState12[0],
10727
10727
  setTaskStates = _useState12[1];
10728
+ var _useState13 = useState(true),
10729
+ _useState14 = _slicedToArray(_useState13, 2),
10730
+ isLoading = _useState14[0],
10731
+ setIsLoading = _useState14[1];
10728
10732
  useEffect(function () {
10729
10733
  var _window$mainApi4;
10730
10734
  if (scheduledTaskDefs.length > 0 && widgetUuid && (_window$mainApi4 = window.mainApi) !== null && _window$mainApi4 !== void 0 && (_window$mainApi4 = _window$mainApi4.scheduler) !== null && _window$mainApi4 !== void 0 && _window$mainApi4.getTasks) {
10735
+ setIsLoading(true);
10731
10736
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
10732
10737
  var stateMap = {};
10733
- var _iterator = _createForOfIteratorHelper$b(tasks || []),
10738
+ var _iterator = _createForOfIteratorHelper$c(tasks || []),
10734
10739
  _step;
10735
10740
  try {
10736
10741
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10743,10 +10748,25 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
10743
10748
  _iterator.f();
10744
10749
  }
10745
10750
  setTaskStates(stateMap);
10751
+ setIsLoading(false);
10746
10752
  });
10753
+ } else {
10754
+ setIsLoading(false);
10747
10755
  }
10748
10756
  }, [widgetUuid, scheduledTaskDefs.length]);
10749
10757
  if (!item || scheduledTaskDefs.length === 0) return null;
10758
+ if (isLoading) {
10759
+ return /*#__PURE__*/jsxs("div", {
10760
+ className: "flex flex-col flex-1 min-h-0 p-6",
10761
+ children: [/*#__PURE__*/jsx(SubHeading3, {
10762
+ title: "Schedule",
10763
+ padding: false
10764
+ }), /*#__PURE__*/jsx("div", {
10765
+ className: "text-sm opacity-50 mt-4",
10766
+ children: "Loading schedules..."
10767
+ })]
10768
+ });
10769
+ }
10750
10770
  return /*#__PURE__*/jsxs("div", {
10751
10771
  className: "flex flex-col flex-1 min-h-0 overflow-y-auto p-6 space-y-4",
10752
10772
  children: [/*#__PURE__*/jsx(SubHeading3, {
@@ -13565,9 +13585,9 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
13565
13585
  });
13566
13586
  };
13567
13587
 
13568
- function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13569
- function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$a(r, a) : void 0; } }
13570
- function _arrayLikeToArray$a(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13588
+ function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
13589
+ function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$b(r, a) : void 0; } }
13590
+ function _arrayLikeToArray$b(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13571
13591
  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; }
13572
13592
  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; }
13573
13593
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -13834,11 +13854,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
13834
13854
 
13835
13855
  // Flatten all widgets from all packages for the widget list
13836
13856
  flatWidgets = [];
13837
- _iterator = _createForOfIteratorHelper$a(result.packages || []);
13857
+ _iterator = _createForOfIteratorHelper$b(result.packages || []);
13838
13858
  try {
13839
13859
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
13840
13860
  pkg = _step.value;
13841
- _iterator2 = _createForOfIteratorHelper$a(pkg.widgets || []);
13861
+ _iterator2 = _createForOfIteratorHelper$b(pkg.widgets || []);
13842
13862
  try {
13843
13863
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
13844
13864
  widget = _step2.value;
@@ -15394,9 +15414,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
15394
15414
  });
15395
15415
  };
15396
15416
 
15397
- 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; } } }; }
15398
- 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; } }
15399
- 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; }
15417
+ function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
15418
+ function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$a(r, a) : void 0; } }
15419
+ function _arrayLikeToArray$a(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
15400
15420
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
15401
15421
  var item = _ref.item,
15402
15422
  widget = _ref.widget,
@@ -15440,7 +15460,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
15440
15460
  var el = headerRef.current;
15441
15461
  if (!el) return;
15442
15462
  var observer = new ResizeObserver(function (entries) {
15443
- var _iterator = _createForOfIteratorHelper$9(entries),
15463
+ var _iterator = _createForOfIteratorHelper$a(entries),
15444
15464
  _step;
15445
15465
  try {
15446
15466
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -15741,6 +15761,286 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
15741
15761
  });
15742
15762
  };
15743
15763
 
15764
+ /**
15765
+ * useWidgetSchedulerStatus
15766
+ *
15767
+ * Display-only hook for reading scheduler task state outside WidgetContext.
15768
+ * Used by WidgetCardStatusBar to show live timer status in the widget footer.
15769
+ *
15770
+ * Unlike useScheduler, this hook:
15771
+ * - Does NOT require WidgetContext (works outside the widget tree)
15772
+ * - Does NOT execute handlers — purely for display
15773
+ * - Calls mainApi.scheduler.getTasks() directly
15774
+ *
15775
+ * @param {string} widgetId - The widget instance UUID
15776
+ * @returns {{ tasks: Array, isLoading: boolean }}
15777
+ */
15778
+ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
15779
+ var _useState = useState([]),
15780
+ _useState2 = _slicedToArray(_useState, 2),
15781
+ tasks = _useState2[0],
15782
+ setTasks = _useState2[1];
15783
+ var _useState3 = useState(true),
15784
+ _useState4 = _slicedToArray(_useState3, 2),
15785
+ isLoading = _useState4[0],
15786
+ setIsLoading = _useState4[1];
15787
+ var fetchTasks = useCallback(function () {
15788
+ var _window$mainApi;
15789
+ if (!widgetId || !((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.scheduler)) {
15790
+ setIsLoading(false);
15791
+ return;
15792
+ }
15793
+ window.mainApi.scheduler.getTasks(widgetId).then(function (result) {
15794
+ setTasks(result || []);
15795
+ setIsLoading(false);
15796
+ });
15797
+ }, [widgetId]);
15798
+
15799
+ // Load tasks on mount
15800
+ useEffect(function () {
15801
+ fetchTasks();
15802
+ }, [fetchTasks]);
15803
+
15804
+ // Subscribe to task-fired events to auto-refresh
15805
+ useEffect(function () {
15806
+ var _window$mainApi2;
15807
+ if (!widgetId || !((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.scheduler) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.onTaskFired)) return;
15808
+ var removeListener = window.mainApi.scheduler.onTaskFired(function (data) {
15809
+ if (data.widgetId !== widgetId) return;
15810
+ fetchTasks();
15811
+ });
15812
+ return removeListener;
15813
+ }, [widgetId, fetchTasks]);
15814
+ return {
15815
+ tasks: tasks,
15816
+ isLoading: isLoading
15817
+ };
15818
+ };
15819
+
15820
+ 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; } } }; }
15821
+ 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; } }
15822
+ 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; }
15823
+ function formatCountdown(ms) {
15824
+ if (ms == null || ms < 0) return "--";
15825
+ if (ms < 1000) return "< 1s";
15826
+ var totalSeconds = Math.floor(ms / 1000);
15827
+ var hours = Math.floor(totalSeconds / 3600);
15828
+ var minutes = Math.floor(totalSeconds % 3600 / 60);
15829
+ var seconds = totalSeconds % 60;
15830
+ if (hours > 0) return "".concat(hours, "h ").concat(minutes, "m");
15831
+ if (minutes > 0) return "".concat(minutes, "m ").concat(seconds, "s");
15832
+ return "".concat(seconds, "s");
15833
+ }
15834
+
15835
+ /**
15836
+ * Format a timestamp as relative time ago.
15837
+ * @param {number|string} timestamp - epoch ms or ISO string
15838
+ * @returns {string} e.g. "2m ago", "1h ago", "just now"
15839
+ */
15840
+ function formatRelativeTime(timestamp) {
15841
+ if (!timestamp) return null;
15842
+ var ts = typeof timestamp === "string" ? new Date(timestamp).getTime() : timestamp;
15843
+ var diff = Date.now() - ts;
15844
+ if (diff < 60000) return "just now";
15845
+ if (diff < 3600000) return "".concat(Math.floor(diff / 60000), "m ago");
15846
+ if (diff < 86400000) return "".concat(Math.floor(diff / 3600000), "h ago");
15847
+ return "".concat(Math.floor(diff / 86400000), "d ago");
15848
+ }
15849
+
15850
+ /**
15851
+ * Format a task's schedule as a human-readable description.
15852
+ * @param {Object} task - scheduler task object
15853
+ * @returns {string} e.g. "Every 5 min", "Mon, Wed at 09:00"
15854
+ */
15855
+ function formatScheduleDescription(task) {
15856
+ if (task.scheduleType === "interval" && task.intervalMs) {
15857
+ var totalSeconds = Math.floor(task.intervalMs / 1000);
15858
+ if (totalSeconds < 60) return "Every ".concat(totalSeconds, "s");
15859
+ var minutes = Math.floor(totalSeconds / 60);
15860
+ if (minutes < 60) return "Every ".concat(minutes, " min");
15861
+ var hours = Math.floor(minutes / 60);
15862
+ var remainingMin = minutes % 60;
15863
+ if (remainingMin === 0) return "Every ".concat(hours, " hr");
15864
+ return "Every ".concat(hours, "h ").concat(remainingMin, "m");
15865
+ }
15866
+ if (task.scheduleType === "dayTime") {
15867
+ var dayMap = {
15868
+ mon: "Mon",
15869
+ tue: "Tue",
15870
+ wed: "Wed",
15871
+ thu: "Thu",
15872
+ fri: "Fri",
15873
+ sat: "Sat",
15874
+ sun: "Sun"
15875
+ };
15876
+ var days = (task.days || []).map(function (d) {
15877
+ return dayMap[d] || d;
15878
+ });
15879
+ var time = task.time || "00:00";
15880
+ if (days.length === 7) return "Daily at ".concat(time);
15881
+ if (days.length === 5 && ["mon", "tue", "wed", "thu", "fri"].every(function (d) {
15882
+ return (task.days || []).includes(d);
15883
+ })) {
15884
+ return "Mon\u2013Fri at ".concat(time);
15885
+ }
15886
+ return "".concat(days.join(", "), " at ").concat(time);
15887
+ }
15888
+ return "Scheduled";
15889
+ }
15890
+
15891
+ // ── Component ───────────────────────────────────────────────────────
15892
+
15893
+ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
15894
+ var item = _ref.item,
15895
+ _ref$className = _ref.className,
15896
+ className = _ref$className === void 0 ? "" : _ref$className;
15897
+ var _useState = useState(false),
15898
+ _useState2 = _slicedToArray(_useState, 2),
15899
+ expanded = _useState2[0],
15900
+ setExpanded = _useState2[1];
15901
+ var _useState3 = useState(Date.now()),
15902
+ _useState4 = _slicedToArray(_useState3, 2),
15903
+ now = _useState4[0],
15904
+ setNow = _useState4[1];
15905
+
15906
+ // Check if widget declares scheduledTasks in its config
15907
+ var widgetConfig = item !== null && item !== void 0 && item.component ? ComponentManager.config(item.component, item) : null;
15908
+ var declaredTasks = (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.scheduledTasks) || [];
15909
+
15910
+ // Fetch live task state from the scheduler
15911
+ var _useWidgetSchedulerSt = useWidgetSchedulerStatus(item === null || item === void 0 ? void 0 : item.uuid),
15912
+ tasks = _useWidgetSchedulerSt.tasks,
15913
+ isLoading = _useWidgetSchedulerSt.isLoading;
15914
+
15915
+ // Tick every second for live countdowns
15916
+ useEffect(function () {
15917
+ if (tasks.length === 0) return;
15918
+ var interval = setInterval(function () {
15919
+ return setNow(Date.now());
15920
+ }, 1000);
15921
+ return function () {
15922
+ return clearInterval(interval);
15923
+ };
15924
+ }, [tasks.length]);
15925
+
15926
+ // Don't render if widget doesn't declare scheduled tasks or none are configured
15927
+ if (declaredTasks.length === 0) return null;
15928
+ if (isLoading) return null;
15929
+ if (tasks.length === 0) return null;
15930
+ var enabledTasks = tasks.filter(function (t) {
15931
+ return t.enabled;
15932
+ });
15933
+ var allPaused = enabledTasks.length === 0;
15934
+
15935
+ // Find soonest countdown among enabled tasks
15936
+ var soonestMs = null;
15937
+ var _iterator = _createForOfIteratorHelper$9(enabledTasks),
15938
+ _step;
15939
+ try {
15940
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
15941
+ var _task = _step.value;
15942
+ if (_task.nextFireAt) {
15943
+ var remaining = _task.nextFireAt - now;
15944
+ if (soonestMs === null || remaining < soonestMs) {
15945
+ soonestMs = remaining;
15946
+ }
15947
+ }
15948
+ }
15949
+
15950
+ // Collapsed summary text
15951
+ } catch (err) {
15952
+ _iterator.e(err);
15953
+ } finally {
15954
+ _iterator.f();
15955
+ }
15956
+ var summaryText;
15957
+ if (allPaused) {
15958
+ summaryText = "".concat(tasks.length, " timer").concat(tasks.length > 1 ? "s" : "", " (paused)");
15959
+ } else if (tasks.length === 1) {
15960
+ var task = tasks[0];
15961
+ var label = task.displayName || task.taskKey;
15962
+ if (task.enabled && soonestMs != null) {
15963
+ summaryText = "".concat(label, " \xB7 ").concat(formatCountdown(soonestMs));
15964
+ } else {
15965
+ summaryText = "".concat(label, " (paused)");
15966
+ }
15967
+ } else {
15968
+ summaryText = "".concat(tasks.length, " timers \xB7 next in ").concat(formatCountdown(soonestMs));
15969
+ }
15970
+ return /*#__PURE__*/jsxs("div", {
15971
+ className: "border-t border-gray-700/50 bg-gray-900/30 select-none ".concat(className),
15972
+ children: [/*#__PURE__*/jsxs("button", {
15973
+ type: "button",
15974
+ onClick: function onClick() {
15975
+ return setExpanded(!expanded);
15976
+ },
15977
+ className: "flex items-center w-full px-3 py-1 text-xs gap-2 cursor-pointer transition-colors hover:bg-gray-800/40 ".concat(allPaused ? "text-gray-500" : "text-blue-400"),
15978
+ children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
15979
+ icon: "clock",
15980
+ className: "text-[10px] shrink-0"
15981
+ }), /*#__PURE__*/jsx("span", {
15982
+ className: "truncate flex-1 text-left",
15983
+ children: summaryText
15984
+ }), /*#__PURE__*/jsx(FontAwesomeIcon, {
15985
+ icon: expanded ? "chevron-up" : "chevron-down",
15986
+ className: "text-[10px] text-gray-500 shrink-0"
15987
+ })]
15988
+ }), expanded && /*#__PURE__*/jsxs("div", {
15989
+ className: "px-3 pb-2 pt-1 space-y-2",
15990
+ children: [/*#__PURE__*/jsx("div", {
15991
+ className: "text-[10px] font-semibold text-gray-400 uppercase tracking-wider",
15992
+ children: "Scheduled Tasks"
15993
+ }), tasks.map(function (task) {
15994
+ var remaining = task.enabled && task.nextFireAt ? task.nextFireAt - now : null;
15995
+ var lastFiredText = formatRelativeTime(task.lastFiredAt);
15996
+ return /*#__PURE__*/jsxs("div", {
15997
+ className: "flex flex-col gap-0.5",
15998
+ children: [/*#__PURE__*/jsxs("div", {
15999
+ className: "flex items-center justify-between text-xs",
16000
+ children: [/*#__PURE__*/jsxs("div", {
16001
+ className: "flex items-center gap-1.5",
16002
+ children: [/*#__PURE__*/jsx("span", {
16003
+ className: "inline-block w-1.5 h-1.5 rounded-full ".concat(task.enabled ? "bg-green-500" : "bg-gray-600")
16004
+ }), /*#__PURE__*/jsx("span", {
16005
+ className: task.enabled ? "text-gray-200" : "text-gray-500",
16006
+ children: task.displayName || task.taskKey
16007
+ }), !task.enabled && /*#__PURE__*/jsx("span", {
16008
+ className: "text-gray-600 text-[10px]",
16009
+ children: "(paused)"
16010
+ })]
16011
+ }), /*#__PURE__*/jsx("span", {
16012
+ className: "text-gray-500 text-[10px]",
16013
+ children: formatScheduleDescription(task)
16014
+ })]
16015
+ }), task.enabled && /*#__PURE__*/jsxs("div", {
16016
+ className: "text-[10px] text-gray-500 pl-4 flex items-center gap-1.5",
16017
+ children: [/*#__PURE__*/jsxs("span", {
16018
+ children: ["Next in ", formatCountdown(remaining)]
16019
+ }), lastFiredText && /*#__PURE__*/jsxs(Fragment, {
16020
+ children: [/*#__PURE__*/jsx("span", {
16021
+ className: "text-gray-700",
16022
+ children: "\xB7"
16023
+ }), /*#__PURE__*/jsxs("span", {
16024
+ children: ["Last: ", lastFiredText]
16025
+ })]
16026
+ }), task.fireCount > 0 && /*#__PURE__*/jsxs(Fragment, {
16027
+ children: [/*#__PURE__*/jsx("span", {
16028
+ className: "text-gray-700",
16029
+ children: "\xB7"
16030
+ }), /*#__PURE__*/jsxs("span", {
16031
+ children: ["#", task.fireCount]
16032
+ })]
16033
+ })]
16034
+ }), !task.enabled && /*#__PURE__*/jsx("div", {
16035
+ className: "text-[10px] text-gray-600 pl-4",
16036
+ children: formatScheduleDescription(task)
16037
+ })]
16038
+ }, task.taskId);
16039
+ })]
16040
+ })]
16041
+ });
16042
+ };
16043
+
15744
16044
  /**
15745
16045
  * WidgetCard
15746
16046
  *
@@ -15920,6 +16220,7 @@ var WidgetCard = function WidgetCard(_ref4) {
15920
16220
  WidgetCard.Header = WidgetCardHeader_Component;
15921
16221
  WidgetCard.Body = WidgetCardBody;
15922
16222
  WidgetCard.Footer = WidgetCardFooter;
16223
+ WidgetCard.StatusBar = WidgetCardStatusBar;
15923
16224
 
15924
16225
  var ProviderSelector = function ProviderSelector(_ref) {
15925
16226
  var isOpen = _ref.isOpen,
@@ -18790,6 +19091,8 @@ var WidgetContainerGridItem = function WidgetContainerGridItem(_ref) {
18790
19091
  }), /*#__PURE__*/jsx(WidgetCard.Footer, {
18791
19092
  item: item,
18792
19093
  onConfigure: handleOpenConfig
19094
+ }), /*#__PURE__*/jsx(WidgetCard.StatusBar, {
19095
+ item: item
18793
19096
  })]
18794
19097
  }), (item.type !== "widget") && /*#__PURE__*/jsxs(Fragment, {
18795
19098
  children: [/*#__PURE__*/jsxs("div", {
@@ -18851,6 +19154,8 @@ var WidgetContainerGridItem = function WidgetContainerGridItem(_ref) {
18851
19154
  }), /*#__PURE__*/jsx(WidgetCard.Footer, {
18852
19155
  item: item,
18853
19156
  onConfigure: handleOpenConfig
19157
+ }), /*#__PURE__*/jsx(WidgetCard.StatusBar, {
19158
+ item: item
18854
19159
  })]
18855
19160
  }), (item.type !== "widget") && /*#__PURE__*/jsxs(Fragment, {
18856
19161
  children: [/*#__PURE__*/jsx("div", {
@@ -20034,38 +20339,48 @@ var WidgetRenderer = function WidgetRenderer(_ref) {
20034
20339
  var widgetContextValue = {
20035
20340
  widgetData: widgetData
20036
20341
  };
20342
+ var hasScheduledTasks = ((config === null || config === void 0 ? void 0 : config.scheduledTasks) || []).length > 0;
20343
+ var widgetElement = children === null ? /*#__PURE__*/jsx(WidgetComponent, _objectSpread$m(_objectSpread$m(_objectSpread$m({
20344
+ id: "widget-nokids-".concat(widgetKey),
20345
+ listen: function listen(listeners, handlers) {
20346
+ return helpers.listen(listeners, handlers);
20347
+ },
20348
+ publishEvent: function publishEvent(eventName, payload) {
20349
+ return helpers.publishEvent(eventName, payload);
20350
+ },
20351
+ api: w
20352
+ }, params), userPrefs), {}, {
20353
+ backgroundColor: bgColor,
20354
+ widgetConfig: helpers.config(),
20355
+ widgetEventNames: helpers.events()
20356
+ }), "widget-nokids-".concat(widgetKey)) : /*#__PURE__*/jsx(WidgetComponent, _objectSpread$m(_objectSpread$m(_objectSpread$m({
20357
+ listen: function listen(listeners, handlers) {
20358
+ return helpers.listen(listeners, handlers);
20359
+ },
20360
+ publishEvent: function publishEvent(eventName, payload) {
20361
+ return helpers.publishEvent(eventName, payload);
20362
+ },
20363
+ api: w,
20364
+ id: "widget-kids-".concat(widgetKey)
20365
+ }, params), userPrefs), {}, {
20366
+ backgroundColor: bgColor,
20367
+ children: children
20368
+ }), "widget-kids-".concat(widgetKey));
20037
20369
 
20038
20370
  // Wrap widget rendering with WidgetContext + error boundary
20039
20371
  return /*#__PURE__*/jsx(WidgetContext.Provider, {
20040
20372
  value: widgetContextValue,
20041
20373
  children: /*#__PURE__*/jsx(WidgetErrorBoundary, {
20042
20374
  widgetName: component,
20043
- children: children === null ? /*#__PURE__*/jsx(WidgetComponent, _objectSpread$m(_objectSpread$m(_objectSpread$m({
20044
- id: "widget-nokids-".concat(widgetKey),
20045
- listen: function listen(listeners, handlers) {
20046
- return helpers.listen(listeners, handlers);
20047
- },
20048
- publishEvent: function publishEvent(eventName, payload) {
20049
- return helpers.publishEvent(eventName, payload);
20050
- },
20051
- api: w
20052
- }, params), userPrefs), {}, {
20053
- backgroundColor: bgColor,
20054
- widgetConfig: helpers.config(),
20055
- widgetEventNames: helpers.events()
20056
- }), "widget-nokids-".concat(widgetKey)) : /*#__PURE__*/jsx(WidgetComponent, _objectSpread$m(_objectSpread$m(_objectSpread$m({
20057
- listen: function listen(listeners, handlers) {
20058
- return helpers.listen(listeners, handlers);
20059
- },
20060
- publishEvent: function publishEvent(eventName, payload) {
20061
- return helpers.publishEvent(eventName, payload);
20062
- },
20063
- api: w,
20064
- id: "widget-kids-".concat(widgetKey)
20065
- }, params), userPrefs), {}, {
20066
- backgroundColor: bgColor,
20067
- children: children
20068
- }), "widget-kids-".concat(widgetKey))
20375
+ children: hasScheduledTasks ? /*#__PURE__*/jsxs("div", {
20376
+ className: "flex flex-col w-full h-full min-h-0",
20377
+ children: [/*#__PURE__*/jsx("div", {
20378
+ className: "flex-1 min-h-0 overflow-auto",
20379
+ children: widgetElement
20380
+ }), /*#__PURE__*/jsx(WidgetCardStatusBar, {
20381
+ item: params
20382
+ })]
20383
+ }) : widgetElement
20069
20384
  })
20070
20385
  });
20071
20386
  }
@@ -45714,5 +46029,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
45714
46029
 
45715
46030
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
45716
46031
 
45717
- export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWidgetEvents, useWidgetProviders, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, withProviderDetection };
46032
+ export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, withProviderDetection };
45718
46033
  //# sourceMappingURL=index.esm.js.map