@trops/dash-core 0.1.639 → 0.1.640

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
@@ -161,8 +161,11 @@ var DashboardPublisher = {
161
161
  }, 0);
162
162
  }
163
163
  },
164
+ // meta.workspaceId — the publishing widget's dashboard. Forwarded over IPC
165
+ // so bots subscribed to one dashboard's widget ignore copies of it.
164
166
  pub: function pub(eventType, content) {
165
167
  var _window$mainApi;
168
+ var meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
166
169
  lastEventCache.set(eventType, {
167
170
  content: content,
168
171
  timestamp: Date.now()
@@ -189,7 +192,14 @@ var DashboardPublisher = {
189
192
 
190
193
  // Forward to other windows via IPC bridge
191
194
  if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.widgetEvent) {
192
- window.mainApi.widgetEvent.publish(eventType, content);
195
+ var workspaceId = meta && meta.workspaceId;
196
+ if (workspaceId != null && workspaceId !== "") {
197
+ window.mainApi.widgetEvent.publish(eventType, content, {
198
+ workspaceId: String(workspaceId)
199
+ });
200
+ } else {
201
+ window.mainApi.widgetEvent.publish(eventType, content);
202
+ }
193
203
  }
194
204
  },
195
205
  onMonitor: function onMonitor(callback) {
@@ -357,10 +367,12 @@ var WidgetApi = {
357
367
  publishEvent: function publishEvent() {
358
368
  var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
359
369
  var events = arguments.length > 1 ? arguments[1] : undefined;
370
+ var meta = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
360
371
  try {
361
372
  if (this.pub() !== null && name !== null && events !== null) {
362
373
  if ("pub" in this.pub()) {
363
- this.pub().pub(name, events);
374
+ // meta.workspaceId = the publishing widget's dashboard.
375
+ this.pub().pub(name, events, meta);
364
376
  }
365
377
  }
366
378
  } catch (e) {
@@ -2756,9 +2768,9 @@ function useWidgetRegistryVersion() {
2756
2768
  return version;
2757
2769
  }
2758
2770
 
2759
- function _createForOfIteratorHelper$M(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$M(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2760
- function _unsupportedIterableToArray$M(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$M(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$M(r, a) : void 0; } }
2761
- function _arrayLikeToArray$M(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2771
+ function _createForOfIteratorHelper$N(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$N(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2772
+ function _unsupportedIterableToArray$N(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$N(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$N(r, a) : void 0; } }
2773
+ function _arrayLikeToArray$N(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2762
2774
 
2763
2775
  /**
2764
2776
  * Walk a workspace layout and collect widget component keys that are
@@ -2772,7 +2784,7 @@ function collectComponentsFromLayout(layout) {
2772
2784
 
2773
2785
  // Collect IDs of layout items that are actively referenced by grid cells
2774
2786
  var activeItemIds = new Set();
2775
- var _iterator = _createForOfIteratorHelper$M(layout),
2787
+ var _iterator = _createForOfIteratorHelper$N(layout),
2776
2788
  _step;
2777
2789
  try {
2778
2790
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -2792,7 +2804,7 @@ function collectComponentsFromLayout(layout) {
2792
2804
  } finally {
2793
2805
  _iterator.f();
2794
2806
  }
2795
- var _iterator2 = _createForOfIteratorHelper$M(layout),
2807
+ var _iterator2 = _createForOfIteratorHelper$N(layout),
2796
2808
  _step2;
2797
2809
  try {
2798
2810
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -2826,7 +2838,7 @@ function findWidgetUsage(componentNames, workspaces) {
2826
2838
  if (!(componentNames !== null && componentNames !== void 0 && componentNames.length) || !(workspaces !== null && workspaces !== void 0 && workspaces.length)) return [];
2827
2839
  var nameSet = new Set(componentNames);
2828
2840
  var results = [];
2829
- var _iterator3 = _createForOfIteratorHelper$M(workspaces),
2841
+ var _iterator3 = _createForOfIteratorHelper$N(workspaces),
2830
2842
  _step3;
2831
2843
  try {
2832
2844
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -2967,7 +2979,7 @@ var useInstalledWidgets = function useInstalledWidgets() {
2967
2979
  _t = [];
2968
2980
  case 4:
2969
2981
  allDrafts = _t;
2970
- _iterator4 = _createForOfIteratorHelper$M(allDrafts);
2982
+ _iterator4 = _createForOfIteratorHelper$N(allDrafts);
2971
2983
  try {
2972
2984
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
2973
2985
  d = _step4.value;
@@ -3136,9 +3148,9 @@ var useInstalledWidgets = function useInstalledWidgets() {
3136
3148
  };
3137
3149
  };
3138
3150
 
3139
- function _createForOfIteratorHelper$L(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$L(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3140
- function _unsupportedIterableToArray$L(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$L(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$L(r, a) : void 0; } }
3141
- function _arrayLikeToArray$L(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3151
+ function _createForOfIteratorHelper$M(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$M(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
3152
+ function _unsupportedIterableToArray$M(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$M(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$M(r, a) : void 0; } }
3153
+ function _arrayLikeToArray$M(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
3142
3154
  function ownKeys$1a(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; }
3143
3155
  function _objectSpread$1a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3144
3156
 
@@ -3664,7 +3676,7 @@ function useWidgetUpdates() {
3664
3676
  // (install replaces the entire package, not just one widget)
3665
3677
  setUpdates(function (prev) {
3666
3678
  var next = new Map(prev);
3667
- var _iterator = _createForOfIteratorHelper$L(next),
3679
+ var _iterator = _createForOfIteratorHelper$M(next),
3668
3680
  _step;
3669
3681
  try {
3670
3682
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -3723,7 +3735,7 @@ function useWidgetUpdates() {
3723
3735
  var packagesWithUpdates = React.useMemo(function () {
3724
3736
  if (!updates || updates.size === 0) return [];
3725
3737
  var byPackage = new Map();
3726
- var _iterator2 = _createForOfIteratorHelper$L(updates),
3738
+ var _iterator2 = _createForOfIteratorHelper$M(updates),
3727
3739
  _step2;
3728
3740
  try {
3729
3741
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -3751,7 +3763,7 @@ function useWidgetUpdates() {
3751
3763
  } finally {
3752
3764
  _iterator2.f();
3753
3765
  }
3754
- var _iterator3 = _createForOfIteratorHelper$L(installedWidgets),
3766
+ var _iterator3 = _createForOfIteratorHelper$M(installedWidgets),
3755
3767
  _step3;
3756
3768
  try {
3757
3769
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -3882,7 +3894,7 @@ function useWidgetUpdates() {
3882
3894
  // packageId) → grant rows (which are keyed by widgetId like
3883
3895
  // `trops.slack.SlackChannels`).
3884
3896
  rowByComponentName = new Map();
3885
- _iterator4 = _createForOfIteratorHelper$L(allRows);
3897
+ _iterator4 = _createForOfIteratorHelper$M(allRows);
3886
3898
  try {
3887
3899
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
3888
3900
  r = _step4.value;
@@ -3895,7 +3907,7 @@ function useWidgetUpdates() {
3895
3907
  _iterator4.f();
3896
3908
  }
3897
3909
  widgetsWithMissing = [];
3898
- _iterator5 = _createForOfIteratorHelper$L(manifests);
3910
+ _iterator5 = _createForOfIteratorHelper$M(manifests);
3899
3911
  _context5.prev = 8;
3900
3912
  _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
3901
3913
  var _manifest$permissions;
@@ -3918,7 +3930,7 @@ function useWidgetUpdates() {
3918
3930
  pkgWidgets = installedWidgets.filter(function (w) {
3919
3931
  return (w.packageId || w.name) === packageId;
3920
3932
  });
3921
- _iterator6 = _createForOfIteratorHelper$L(pkgWidgets);
3933
+ _iterator6 = _createForOfIteratorHelper$M(pkgWidgets);
3922
3934
  _context4.prev = 2;
3923
3935
  _iterator6.s();
3924
3936
  case 3:
@@ -4030,7 +4042,7 @@ function useWidgetUpdates() {
4030
4042
  // Seed every selected package as pending so the modal renders
4031
4043
  // the full per-row state from the first paint.
4032
4044
  initial = new Map();
4033
- _iterator7 = _createForOfIteratorHelper$L(packageNames);
4045
+ _iterator7 = _createForOfIteratorHelper$M(packageNames);
4034
4046
  try {
4035
4047
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
4036
4048
  name = _step7.value;
@@ -4090,7 +4102,7 @@ function useWidgetUpdates() {
4090
4102
  // loop so the freshly-installed code can immediately use
4091
4103
  // what was approved (and is gated from what wasn't).
4092
4104
  accepted = decision.acceptedByWidgetId || {};
4093
- _iterator8 = _createForOfIteratorHelper$L(preflight.widgets);
4105
+ _iterator8 = _createForOfIteratorHelper$M(preflight.widgets);
4094
4106
  _context7.prev = 6;
4095
4107
  _iterator8.s();
4096
4108
  case 7:
@@ -4174,7 +4186,7 @@ function useWidgetUpdates() {
4174
4186
  // e.g. a stale registry zip or a verify mismatch).
4175
4187
  failedDetails = [];
4176
4188
  _context7.prev = 19;
4177
- _iterator9 = _createForOfIteratorHelper$L(packageNames);
4189
+ _iterator9 = _createForOfIteratorHelper$M(packageNames);
4178
4190
  _context7.prev = 20;
4179
4191
  _loop2 = /*#__PURE__*/_regeneratorRuntime.mark(function _loop2() {
4180
4192
  var pkgName, msg, _t0;
@@ -4281,7 +4293,7 @@ function useWidgetUpdates() {
4281
4293
  succeededSet = new Set(succeeded);
4282
4294
  setUpdates(function (prev) {
4283
4295
  var next = new Map(prev);
4284
- var _iterator0 = _createForOfIteratorHelper$L(next),
4296
+ var _iterator0 = _createForOfIteratorHelper$M(next),
4285
4297
  _step0;
4286
4298
  try {
4287
4299
  for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
@@ -4675,9 +4687,9 @@ function useRegistryAuth() {
4675
4687
 
4676
4688
  function ownKeys$18(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; }
4677
4689
  function _objectSpread$18(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$18(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$18(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4678
- function _createForOfIteratorHelper$K(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$K(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4679
- function _unsupportedIterableToArray$K(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$K(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$K(r, a) : void 0; } }
4680
- function _arrayLikeToArray$K(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4690
+ function _createForOfIteratorHelper$L(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$L(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
4691
+ function _unsupportedIterableToArray$L(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$L(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$L(r, a) : void 0; } }
4692
+ function _arrayLikeToArray$L(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
4681
4693
  var secondaryBtnClass$1 = "px-3 py-2 text-sm font-medium rounded bg-gray-700 hover:bg-gray-600 disabled:bg-gray-800 disabled:text-gray-500 disabled:cursor-not-allowed text-gray-100";
4682
4694
  var primaryBtnClass$1 = "px-3 py-2 text-sm font-medium rounded bg-blue-600 hover:bg-blue-500 disabled:bg-gray-700 disabled:text-gray-500 disabled:cursor-not-allowed text-white";
4683
4695
 
@@ -4697,7 +4709,7 @@ function flattenPreflightLines(missing) {
4697
4709
  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
4698
4710
  serverName = _Object$entries$_i[0],
4699
4711
  perms = _Object$entries$_i[1];
4700
- var _iterator = _createForOfIteratorHelper$K(perms.tools || []),
4712
+ var _iterator = _createForOfIteratorHelper$L(perms.tools || []),
4701
4713
  _step;
4702
4714
  try {
4703
4715
  var _loop2 = function _loop2() {
@@ -4724,7 +4736,7 @@ function flattenPreflightLines(missing) {
4724
4736
  } finally {
4725
4737
  _iterator.f();
4726
4738
  }
4727
- var _iterator2 = _createForOfIteratorHelper$K(perms.readPaths || []),
4739
+ var _iterator2 = _createForOfIteratorHelper$L(perms.readPaths || []),
4728
4740
  _step2;
4729
4741
  try {
4730
4742
  var _loop3 = function _loop3() {
@@ -4751,7 +4763,7 @@ function flattenPreflightLines(missing) {
4751
4763
  } finally {
4752
4764
  _iterator2.f();
4753
4765
  }
4754
- var _iterator3 = _createForOfIteratorHelper$K(perms.writePaths || []),
4766
+ var _iterator3 = _createForOfIteratorHelper$L(perms.writePaths || []),
4755
4767
  _step3;
4756
4768
  try {
4757
4769
  var _loop4 = function _loop4() {
@@ -4803,13 +4815,13 @@ var WidgetPreflightReview = function WidgetPreflightReview(_ref) {
4803
4815
  var _pendingPreflight$wid;
4804
4816
  if (!pendingPreflight || !((_pendingPreflight$wid = pendingPreflight.widgets) !== null && _pendingPreflight$wid !== void 0 && _pendingPreflight$wid.length)) return;
4805
4817
  var initial = {};
4806
- var _iterator4 = _createForOfIteratorHelper$K(pendingPreflight.widgets),
4818
+ var _iterator4 = _createForOfIteratorHelper$L(pendingPreflight.widgets),
4807
4819
  _step4;
4808
4820
  try {
4809
4821
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
4810
4822
  var w = _step4.value;
4811
4823
  initial[w.widgetId] = {};
4812
- var _iterator5 = _createForOfIteratorHelper$K(flattenPreflightLines(w.missing)),
4824
+ var _iterator5 = _createForOfIteratorHelper$L(flattenPreflightLines(w.missing)),
4813
4825
  _step5;
4814
4826
  try {
4815
4827
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -4846,7 +4858,7 @@ var WidgetPreflightReview = function WidgetPreflightReview(_ref) {
4846
4858
  // Build the per-widget addition blob from checked lines. Skip
4847
4859
  // widgets where the user unchecked everything.
4848
4860
  var acceptedByWidgetId = {};
4849
- var _iterator6 = _createForOfIteratorHelper$K(widgets),
4861
+ var _iterator6 = _createForOfIteratorHelper$L(widgets),
4850
4862
  _step6;
4851
4863
  try {
4852
4864
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -4854,7 +4866,7 @@ var WidgetPreflightReview = function WidgetPreflightReview(_ref) {
4854
4866
  var _lines = flattenPreflightLines(w.missing);
4855
4867
  var acc = {};
4856
4868
  var any = false;
4857
- var _iterator7 = _createForOfIteratorHelper$K(_lines),
4869
+ var _iterator7 = _createForOfIteratorHelper$L(_lines),
4858
4870
  _step7;
4859
4871
  try {
4860
4872
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
@@ -6139,9 +6151,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
6139
6151
 
6140
6152
  function ownKeys$15(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; }
6141
6153
  function _objectSpread$15(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$15(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$15(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6142
- function _createForOfIteratorHelper$J(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$J(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
6143
- function _unsupportedIterableToArray$J(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$J(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$J(r, a) : void 0; } }
6144
- function _arrayLikeToArray$J(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6154
+ function _createForOfIteratorHelper$K(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$K(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
6155
+ function _unsupportedIterableToArray$K(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$K(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$K(r, a) : void 0; } }
6156
+ function _arrayLikeToArray$K(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6145
6157
  /**
6146
6158
  * Layout template definitions for the dashboard template picker.
6147
6159
  *
@@ -6415,7 +6427,7 @@ function createLayoutFromTemplate(template) {
6415
6427
  cols: template.cols,
6416
6428
  gap: "gap-2"
6417
6429
  };
6418
- var _iterator = _createForOfIteratorHelper$J(template.cells),
6430
+ var _iterator = _createForOfIteratorHelper$K(template.cells),
6419
6431
  _step;
6420
6432
  try {
6421
6433
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -7437,9 +7449,9 @@ var DashboardInstallOptionsModal = function DashboardInstallOptionsModal(_ref) {
7437
7449
  });
7438
7450
  };
7439
7451
 
7440
- function _createForOfIteratorHelper$I(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$I(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7441
- function _unsupportedIterableToArray$I(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$I(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$I(r, a) : void 0; } }
7442
- function _arrayLikeToArray$I(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7452
+ function _createForOfIteratorHelper$J(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$J(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
7453
+ function _unsupportedIterableToArray$J(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$J(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$J(r, a) : void 0; } }
7454
+ function _arrayLikeToArray$J(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7443
7455
  function ownKeys$14(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; }
7444
7456
  function _objectSpread$14(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$14(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$14(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7445
7457
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
@@ -7808,7 +7820,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
7808
7820
  toInstall = 0,
7809
7821
  unavailable = 0,
7810
7822
  hasUnavailableRequired = false;
7811
- var _iterator = _createForOfIteratorHelper$I(widgetDeps),
7823
+ var _iterator = _createForOfIteratorHelper$J(widgetDeps),
7812
7824
  _step;
7813
7825
  try {
7814
7826
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -9509,9 +9521,9 @@ function cleanIpcError(message) {
9509
9521
  return match ? match[1] : message;
9510
9522
  }
9511
9523
 
9512
- function _createForOfIteratorHelper$H(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$H(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9513
- function _unsupportedIterableToArray$H(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$H(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$H(r, a) : void 0; } }
9514
- function _arrayLikeToArray$H(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9524
+ function _createForOfIteratorHelper$I(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$I(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
9525
+ function _unsupportedIterableToArray$I(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$I(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$I(r, a) : void 0; } }
9526
+ function _arrayLikeToArray$I(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
9515
9527
 
9516
9528
  /**
9517
9529
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -9625,13 +9637,13 @@ var useRegistrySearch = function useRegistrySearch() {
9625
9637
  return c.toLowerCase();
9626
9638
  }));
9627
9639
  widgets = [];
9628
- _iterator = _createForOfIteratorHelper$H(pkgs);
9640
+ _iterator = _createForOfIteratorHelper$I(pkgs);
9629
9641
  try {
9630
9642
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
9631
9643
  pkg = _step.value;
9632
9644
  // Compute missing APIs for the entire package
9633
9645
  allApiProviders = [];
9634
- _iterator2 = _createForOfIteratorHelper$H(pkg.providers || []);
9646
+ _iterator2 = _createForOfIteratorHelper$I(pkg.providers || []);
9635
9647
  try {
9636
9648
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
9637
9649
  p = _step2.value;
@@ -9644,11 +9656,11 @@ var useRegistrySearch = function useRegistrySearch() {
9644
9656
  } finally {
9645
9657
  _iterator2.f();
9646
9658
  }
9647
- _iterator3 = _createForOfIteratorHelper$H(pkg.widgets || []);
9659
+ _iterator3 = _createForOfIteratorHelper$I(pkg.widgets || []);
9648
9660
  try {
9649
9661
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
9650
9662
  w = _step3.value;
9651
- _iterator5 = _createForOfIteratorHelper$H(w.providers || []);
9663
+ _iterator5 = _createForOfIteratorHelper$I(w.providers || []);
9652
9664
  try {
9653
9665
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
9654
9666
  _p = _step5.value;
@@ -9670,7 +9682,7 @@ var useRegistrySearch = function useRegistrySearch() {
9670
9682
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
9671
9683
  return !capSet.has(api.toLowerCase());
9672
9684
  });
9673
- _iterator4 = _createForOfIteratorHelper$H(pkg.widgets || []);
9685
+ _iterator4 = _createForOfIteratorHelper$I(pkg.widgets || []);
9674
9686
  try {
9675
9687
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
9676
9688
  widget = _step4.value;
@@ -10457,9 +10469,9 @@ function WizardThemePreview(_ref) {
10457
10469
  });
10458
10470
  }
10459
10471
 
10460
- function _createForOfIteratorHelper$G(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$G(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10461
- function _unsupportedIterableToArray$G(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$G(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$G(r, a) : void 0; } }
10462
- function _arrayLikeToArray$G(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10472
+ function _createForOfIteratorHelper$H(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$H(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10473
+ function _unsupportedIterableToArray$H(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$H(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$H(r, a) : void 0; } }
10474
+ function _arrayLikeToArray$H(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10463
10475
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
10464
10476
  var _state$selectedDashbo, _state$selectedDashbo2, _state$layout;
10465
10477
  var state = _ref.state,
@@ -10678,7 +10690,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
10678
10690
  installedNames = new Set(installedList.map(function (w) {
10679
10691
  return w.name;
10680
10692
  }));
10681
- _iterator = _createForOfIteratorHelper$G(state.selectedWidgets);
10693
+ _iterator = _createForOfIteratorHelper$H(state.selectedWidgets);
10682
10694
  _context2.prev = 12;
10683
10695
  _iterator.s();
10684
10696
  case 13:
@@ -12366,9 +12378,9 @@ function mergeDownOp(grid, row, col) {
12366
12378
  }
12367
12379
 
12368
12380
  var _excluded$4 = ["rows", "cols"];
12369
- function _createForOfIteratorHelper$F(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$F(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
12370
- function _unsupportedIterableToArray$F(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$F(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$F(r, a) : void 0; } }
12371
- function _arrayLikeToArray$F(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12381
+ function _createForOfIteratorHelper$G(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$G(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
12382
+ function _unsupportedIterableToArray$G(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$G(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$G(r, a) : void 0; } }
12383
+ function _arrayLikeToArray$G(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12372
12384
  function ownKeys$11(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; }
12373
12385
  function _objectSpread$11(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$11(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$11(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12374
12386
  var defaultGrid = {
@@ -12490,7 +12502,7 @@ function GridEditor(_ref) {
12490
12502
  function sortObjectByKeys(obj) {
12491
12503
  var sortedKeys = Object.keys(obj).sort();
12492
12504
  var sortedObj = {};
12493
- var _iterator = _createForOfIteratorHelper$F(sortedKeys),
12505
+ var _iterator = _createForOfIteratorHelper$G(sortedKeys),
12494
12506
  _step;
12495
12507
  try {
12496
12508
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -12963,9 +12975,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
12963
12975
  });
12964
12976
  };
12965
12977
 
12966
- 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; } } }; }
12967
- 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; } }
12968
- 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; }
12978
+ function _createForOfIteratorHelper$F(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$F(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
12979
+ function _unsupportedIterableToArray$F(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$F(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$F(r, a) : void 0; } }
12980
+ function _arrayLikeToArray$F(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12969
12981
  function ownKeys$$(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; }
12970
12982
  function _objectSpread$$(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$$(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$$(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12971
12983
  var DAYS = [{
@@ -13294,7 +13306,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
13294
13306
  setIsLoading(true);
13295
13307
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
13296
13308
  var stateMap = {};
13297
- var _iterator = _createForOfIteratorHelper$E(tasks || []),
13309
+ var _iterator = _createForOfIteratorHelper$F(tasks || []),
13298
13310
  _step;
13299
13311
  try {
13300
13312
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13553,9 +13565,9 @@ function isUserWidget(item) {
13553
13565
  return true;
13554
13566
  }
13555
13567
 
13556
- 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; } } }; }
13557
- 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; } }
13558
- 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; }
13568
+ 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; } } }; }
13569
+ 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; } }
13570
+ 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; }
13559
13571
 
13560
13572
  /**
13561
13573
  * Resolve which provider name a given widget instance would bind to for
@@ -13587,7 +13599,7 @@ function resolveProviderName(_ref) {
13587
13599
  // array. Support both because different callers shape it either way.
13588
13600
  if (appProviders) {
13589
13601
  if (Array.isArray(appProviders)) {
13590
- var _iterator = _createForOfIteratorHelper$D(appProviders),
13602
+ var _iterator = _createForOfIteratorHelper$E(appProviders),
13591
13603
  _step;
13592
13604
  try {
13593
13605
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13647,7 +13659,7 @@ function forEachWidget(workspace, visit) {
13647
13659
  };
13648
13660
  var _walk = function walk(items) {
13649
13661
  if (!Array.isArray(items)) return;
13650
- var _iterator2 = _createForOfIteratorHelper$D(items),
13662
+ var _iterator2 = _createForOfIteratorHelper$E(items),
13651
13663
  _step2;
13652
13664
  try {
13653
13665
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -13688,7 +13700,7 @@ function forEachWidget(workspace, visit) {
13688
13700
  // widgets that only live there (e.g. AI-place writes that bypass
13689
13701
  // the page handler).
13690
13702
  if (Array.isArray(workspace.pages)) {
13691
- var _iterator3 = _createForOfIteratorHelper$D(workspace.pages),
13703
+ var _iterator3 = _createForOfIteratorHelper$E(workspace.pages),
13692
13704
  _step3;
13693
13705
  try {
13694
13706
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -13739,7 +13751,7 @@ function getUnresolvedProviders(_ref2) {
13739
13751
  // the same `type` listed twice (a Claude code-gen quirk), which
13740
13752
  // would otherwise produce duplicate rows in the Providers tab.
13741
13753
  var seenTypes = new Set();
13742
- var _iterator4 = _createForOfIteratorHelper$D(requirements),
13754
+ var _iterator4 = _createForOfIteratorHelper$E(requirements),
13743
13755
  _step4;
13744
13756
  try {
13745
13757
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -13782,7 +13794,7 @@ function getUnresolvedProviders(_ref2) {
13782
13794
  */
13783
13795
  function groupByProviderType(unresolved) {
13784
13796
  var byType = new Map();
13785
- var _iterator5 = _createForOfIteratorHelper$D(unresolved || []),
13797
+ var _iterator5 = _createForOfIteratorHelper$E(unresolved || []),
13786
13798
  _step5;
13787
13799
  try {
13788
13800
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -13824,7 +13836,7 @@ function getAllProviderBindings(_ref3) {
13824
13836
  // quirk) which would otherwise duplicate the per-widget row in
13825
13837
  // the Providers tab.
13826
13838
  var seenTypes = new Set();
13827
- var _iterator6 = _createForOfIteratorHelper$D(requirements),
13839
+ var _iterator6 = _createForOfIteratorHelper$E(requirements),
13828
13840
  _step6;
13829
13841
  try {
13830
13842
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -13866,9 +13878,9 @@ function getAllProviderBindings(_ref3) {
13866
13878
 
13867
13879
  function ownKeys$Z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13868
13880
  function _objectSpread$Z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13869
- 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; } } }; }
13870
- 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; } }
13871
- 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; }
13881
+ 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; } } }; }
13882
+ 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; } }
13883
+ 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; }
13872
13884
  var EVENT_STRING_RE = /^([^[]+)\[([^\]]+)\]\.(.+)$/;
13873
13885
 
13874
13886
  /** Parse "Component[itemId].event" → { component, itemId, event }. */
@@ -14038,7 +14050,7 @@ function getCurrentWiring(workspace) {
14038
14050
  // Live format is array; defensive guard for legacy object
14039
14051
  // form (a single source widget keyed under the handler).
14040
14052
  var events = Array.isArray(eventList) ? eventList : typeof eventList === "string" ? [eventList] : [];
14041
- var _iterator = _createForOfIteratorHelper$C(events),
14053
+ var _iterator = _createForOfIteratorHelper$D(events),
14042
14054
  _step;
14043
14055
  try {
14044
14056
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -14101,7 +14113,7 @@ function getOrphanedListeners(workspace, getWidgetConfig) {
14101
14113
  if (!byItemId.has(id)) byItemId.set(id, meta);
14102
14114
  });
14103
14115
  var orphans = [];
14104
- var _iterator2 = _createForOfIteratorHelper$C(wiring),
14116
+ var _iterator2 = _createForOfIteratorHelper$D(wiring),
14105
14117
  _step2;
14106
14118
  try {
14107
14119
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -14167,7 +14179,7 @@ function pruneDeadListenerReferences(workspace) {
14167
14179
  var liveKeys = new Set();
14168
14180
  var _walkForLive = function walkForLive(items) {
14169
14181
  if (!Array.isArray(items)) return;
14170
- var _iterator3 = _createForOfIteratorHelper$C(items),
14182
+ var _iterator3 = _createForOfIteratorHelper$D(items),
14171
14183
  _step3;
14172
14184
  try {
14173
14185
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -14188,7 +14200,7 @@ function pruneDeadListenerReferences(workspace) {
14188
14200
  };
14189
14201
  _walkForLive(workspace.layout);
14190
14202
  if (Array.isArray(workspace.pages)) {
14191
- var _iterator4 = _createForOfIteratorHelper$C(workspace.pages),
14203
+ var _iterator4 = _createForOfIteratorHelper$D(workspace.pages),
14192
14204
  _step4;
14193
14205
  try {
14194
14206
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -14205,7 +14217,7 @@ function pruneDeadListenerReferences(workspace) {
14205
14217
  var removed = 0;
14206
14218
  var _pruneListeners = function pruneListeners(items) {
14207
14219
  if (!Array.isArray(items)) return;
14208
- var _iterator5 = _createForOfIteratorHelper$C(items),
14220
+ var _iterator5 = _createForOfIteratorHelper$D(items),
14209
14221
  _step5;
14210
14222
  try {
14211
14223
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -14217,7 +14229,7 @@ function pruneDeadListenerReferences(workspace) {
14217
14229
  var events = item.listeners[handler];
14218
14230
  if (!Array.isArray(events)) continue;
14219
14231
  var kept = [];
14220
- var _iterator6 = _createForOfIteratorHelper$C(events),
14232
+ var _iterator6 = _createForOfIteratorHelper$D(events),
14221
14233
  _step6;
14222
14234
  try {
14223
14235
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -14252,7 +14264,7 @@ function pruneDeadListenerReferences(workspace) {
14252
14264
  };
14253
14265
  _pruneListeners(workspace.layout);
14254
14266
  if (Array.isArray(workspace.pages)) {
14255
- var _iterator7 = _createForOfIteratorHelper$C(workspace.pages),
14267
+ var _iterator7 = _createForOfIteratorHelper$D(workspace.pages),
14256
14268
  _step7;
14257
14269
  try {
14258
14270
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
@@ -14296,7 +14308,7 @@ function applyWiringChanges(workspace, _ref) {
14296
14308
  });
14297
14309
  return byReceiver.get(id);
14298
14310
  };
14299
- var _iterator8 = _createForOfIteratorHelper$C(adds),
14311
+ var _iterator8 = _createForOfIteratorHelper$D(adds),
14300
14312
  _step8;
14301
14313
  try {
14302
14314
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
@@ -14309,7 +14321,7 @@ function applyWiringChanges(workspace, _ref) {
14309
14321
  } finally {
14310
14322
  _iterator8.f();
14311
14323
  }
14312
- var _iterator9 = _createForOfIteratorHelper$C(removes),
14324
+ var _iterator9 = _createForOfIteratorHelper$D(removes),
14313
14325
  _step9;
14314
14326
  try {
14315
14327
  for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
@@ -14383,7 +14395,7 @@ function applyToItem(listeners, _ref2) {
14383
14395
  }
14384
14396
 
14385
14397
  // Removes first so a re-add (rare) lands.
14386
- var _iterator0 = _createForOfIteratorHelper$C(removes),
14398
+ var _iterator0 = _createForOfIteratorHelper$D(removes),
14387
14399
  _step0;
14388
14400
  try {
14389
14401
  var _loop = function _loop() {
@@ -14412,7 +14424,7 @@ function applyToItem(listeners, _ref2) {
14412
14424
  } finally {
14413
14425
  _iterator0.f();
14414
14426
  }
14415
- var _iterator1 = _createForOfIteratorHelper$C(adds),
14427
+ var _iterator1 = _createForOfIteratorHelper$D(adds),
14416
14428
  _step1;
14417
14429
  try {
14418
14430
  for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
@@ -17456,9 +17468,9 @@ function mcpJsonToFormState(jsonString, nextRowId) {
17456
17468
  return result;
17457
17469
  }
17458
17470
 
17459
- 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; } } }; }
17460
- 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; } }
17461
- 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; }
17471
+ 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; } } }; }
17472
+ 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; } }
17473
+ 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; }
17462
17474
  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; }
17463
17475
  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; }
17464
17476
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -17743,11 +17755,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
17743
17755
 
17744
17756
  // Flatten all widgets from all packages for the widget list
17745
17757
  flatWidgets = [];
17746
- _iterator = _createForOfIteratorHelper$B(result.packages || []);
17758
+ _iterator = _createForOfIteratorHelper$C(result.packages || []);
17747
17759
  try {
17748
17760
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
17749
17761
  pkg = _step.value;
17750
- _iterator2 = _createForOfIteratorHelper$B(pkg.widgets || []);
17762
+ _iterator2 = _createForOfIteratorHelper$C(pkg.widgets || []);
17751
17763
  try {
17752
17764
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
17753
17765
  widget = _step2.value;
@@ -19674,9 +19686,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
19674
19686
  };
19675
19687
  };
19676
19688
 
19677
- 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; } } }; }
19678
- 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; } }
19679
- 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; }
19689
+ 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; } } }; }
19690
+ 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; } }
19691
+ 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; }
19680
19692
  function formatCountdown(ms) {
19681
19693
  if (ms == null || ms < 0) return "--";
19682
19694
  if (ms < 1000) return "< 1s";
@@ -19793,7 +19805,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
19793
19805
 
19794
19806
  // Find soonest countdown among enabled tasks
19795
19807
  var soonestMs = null;
19796
- var _iterator = _createForOfIteratorHelper$A(enabledTasks),
19808
+ var _iterator = _createForOfIteratorHelper$B(enabledTasks),
19797
19809
  _step;
19798
19810
  try {
19799
19811
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -24215,7 +24227,11 @@ var WidgetHelpers = /*#__PURE__*/function () {
24215
24227
  key: "publishEvent",
24216
24228
  value: function publishEvent(eventName, payload) {
24217
24229
  if ("publishEvent" in this.api && typeof this.api["publishEvent"] === "function") {
24218
- this.api.publishEvent("".concat(this.params.component, "[").concat(this.params.id, "].").concat(eventName), payload);
24230
+ this.api.publishEvent("".concat(this.params.component, "[").concat(this.params.id, "].").concat(eventName), payload, null,
24231
+ // The widget's dashboard, so bots can tell copies of it apart.
24232
+ {
24233
+ workspaceId: this.params.dashboardId
24234
+ });
24219
24235
  }
24220
24236
  }
24221
24237
  }]);
@@ -25463,9 +25479,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
25463
25479
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
25464
25480
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
25465
25481
 
25466
- function _createForOfIteratorHelper$z(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$z(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; } } }; }
25467
- function _unsupportedIterableToArray$z(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$z(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$z(r, a) : void 0; } }
25468
- function _arrayLikeToArray$z(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; }
25482
+ 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; } } }; }
25483
+ 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; } }
25484
+ 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; }
25469
25485
  function ownKeys$M(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25470
25486
  function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25471
25487
 
@@ -26088,7 +26104,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
26088
26104
  return selectable["delete"](cn);
26089
26105
  });
26090
26106
  var resolved = new Set();
26091
- var _iterator = _createForOfIteratorHelper$z(selectable),
26107
+ var _iterator = _createForOfIteratorHelper$A(selectable),
26092
26108
  _step;
26093
26109
  try {
26094
26110
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28497,9 +28513,9 @@ function migrateBareComponentName(componentMap, component) {
28497
28513
 
28498
28514
  function ownKeys$K(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28499
28515
  function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
28500
- function _createForOfIteratorHelper$y(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$y(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; } } }; }
28501
- function _unsupportedIterableToArray$y(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$y(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$y(r, a) : void 0; } }
28502
- function _arrayLikeToArray$y(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; }
28516
+ function _createForOfIteratorHelper$z(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$z(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; } } }; }
28517
+ function _unsupportedIterableToArray$z(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$z(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$z(r, a) : void 0; } }
28518
+ function _arrayLikeToArray$z(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; }
28503
28519
  /**
28504
28520
  * The model for all layout components used primarily in the renderLayout method
28505
28521
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -28511,7 +28527,7 @@ function _arrayLikeToArray$y(r, a) { (null == a || a > r.length) && (a = r.lengt
28511
28527
  function sortObjectByKeys(obj) {
28512
28528
  var sortedKeys = Object.keys(obj).sort();
28513
28529
  var sortedObj = {};
28514
- var _iterator = _createForOfIteratorHelper$y(sortedKeys),
28530
+ var _iterator = _createForOfIteratorHelper$z(sortedKeys),
28515
28531
  _step;
28516
28532
  try {
28517
28533
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28829,9 +28845,9 @@ var SettingsModel = function SettingsModel() {
28829
28845
  return obj;
28830
28846
  };
28831
28847
 
28832
- function _createForOfIteratorHelper$x(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$x(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; } } }; }
28833
- function _unsupportedIterableToArray$x(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$x(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$x(r, a) : void 0; } }
28834
- function _arrayLikeToArray$x(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; }
28848
+ function _createForOfIteratorHelper$y(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$y(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; } } }; }
28849
+ function _unsupportedIterableToArray$y(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$y(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$y(r, a) : void 0; } }
28850
+ function _arrayLikeToArray$y(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; }
28835
28851
 
28836
28852
  /**
28837
28853
  * Workspace-level pre-pass that migrates legacy bare component
@@ -28906,7 +28922,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
28906
28922
  };
28907
28923
  var _walk = function walk(items) {
28908
28924
  if (!Array.isArray(items)) return;
28909
- var _iterator = _createForOfIteratorHelper$x(items),
28925
+ var _iterator = _createForOfIteratorHelper$y(items),
28910
28926
  _step;
28911
28927
  try {
28912
28928
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -28928,7 +28944,7 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
28928
28944
  };
28929
28945
  _walk(workspace.layout);
28930
28946
  if (Array.isArray(workspace.pages)) {
28931
- var _iterator2 = _createForOfIteratorHelper$x(workspace.pages),
28947
+ var _iterator2 = _createForOfIteratorHelper$y(workspace.pages),
28932
28948
  _step2;
28933
28949
  try {
28934
28950
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -28945,9 +28961,9 @@ function migrateScopedIdsInWorkspace(workspace, componentMap) {
28945
28961
  return counts;
28946
28962
  }
28947
28963
 
28948
- function _createForOfIteratorHelper$w(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$w(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; } } }; }
28949
- function _unsupportedIterableToArray$w(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$w(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$w(r, a) : void 0; } }
28950
- function _arrayLikeToArray$w(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; }
28964
+ function _createForOfIteratorHelper$x(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$x(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; } } }; }
28965
+ function _unsupportedIterableToArray$x(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$x(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$x(r, a) : void 0; } }
28966
+ function _arrayLikeToArray$x(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; }
28951
28967
  /**
28952
28968
  * cleanForeignWidgetsFromWorkspace.js
28953
28969
  *
@@ -28988,7 +29004,7 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
28988
29004
  var _cleanList = function cleanList(items) {
28989
29005
  if (!Array.isArray(items)) return items;
28990
29006
  var kept = [];
28991
- var _iterator = _createForOfIteratorHelper$w(items),
29007
+ var _iterator = _createForOfIteratorHelper$x(items),
28992
29008
  _step;
28993
29009
  try {
28994
29010
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -29025,7 +29041,7 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
29025
29041
  workspace.sidebarLayout = _cleanList(workspace.sidebarLayout);
29026
29042
  }
29027
29043
  if (Array.isArray(workspace.pages)) {
29028
- var _iterator2 = _createForOfIteratorHelper$w(workspace.pages),
29044
+ var _iterator2 = _createForOfIteratorHelper$x(workspace.pages),
29029
29045
  _step2;
29030
29046
  try {
29031
29047
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -29043,9 +29059,9 @@ function cleanForeignWidgetsFromWorkspace(workspace) {
29043
29059
  return summary;
29044
29060
  }
29045
29061
 
29046
- function _createForOfIteratorHelper$v(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$v(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; } } }; }
29047
- function _unsupportedIterableToArray$v(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$v(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$v(r, a) : void 0; } }
29048
- function _arrayLikeToArray$v(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; }
29062
+ function _createForOfIteratorHelper$w(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$w(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; } } }; }
29063
+ function _unsupportedIterableToArray$w(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$w(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$w(r, a) : void 0; } }
29064
+ function _arrayLikeToArray$w(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; }
29049
29065
  /**
29050
29066
  * migrateLayoutItemTypes.js
29051
29067
  *
@@ -29107,7 +29123,7 @@ function migrateLayoutItemTypes(workspace) {
29107
29123
  };
29108
29124
  var _walk = function walk(items) {
29109
29125
  if (!Array.isArray(items)) return;
29110
- var _iterator = _createForOfIteratorHelper$v(items),
29126
+ var _iterator = _createForOfIteratorHelper$w(items),
29111
29127
  _step;
29112
29128
  try {
29113
29129
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -29125,7 +29141,7 @@ function migrateLayoutItemTypes(workspace) {
29125
29141
  };
29126
29142
  _walk(workspace.layout);
29127
29143
  if (Array.isArray(workspace.pages)) {
29128
- var _iterator2 = _createForOfIteratorHelper$v(workspace.pages),
29144
+ var _iterator2 = _createForOfIteratorHelper$w(workspace.pages),
29129
29145
  _step2;
29130
29146
  try {
29131
29147
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -29697,9 +29713,9 @@ var ThemeModel = function ThemeModel() {
29697
29713
  }
29698
29714
  };
29699
29715
 
29700
- function _createForOfIteratorHelper$u(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$u(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29701
- function _unsupportedIterableToArray$u(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$u(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$u(r, a) : void 0; } }
29702
- function _arrayLikeToArray$u(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29716
+ function _createForOfIteratorHelper$v(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$v(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; } } }; }
29717
+ function _unsupportedIterableToArray$v(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$v(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$v(r, a) : void 0; } }
29718
+ function _arrayLikeToArray$v(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; }
29703
29719
  /*
29704
29720
  "component": AnalyticsReportsWidget,
29705
29721
  "type":"widget",
@@ -29817,7 +29833,7 @@ var ComponentConfigModel = function ComponentConfigModel() {
29817
29833
  if ("providers" in obj && Array.isArray(obj.providers)) {
29818
29834
  var seen = new Set();
29819
29835
  var cleaned = [];
29820
- var _iterator = _createForOfIteratorHelper$u(obj.providers),
29836
+ var _iterator = _createForOfIteratorHelper$v(obj.providers),
29821
29837
  _step;
29822
29838
  try {
29823
29839
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -29863,9 +29879,9 @@ var MenuItemModel = function MenuItemModel() {
29863
29879
  return m;
29864
29880
  };
29865
29881
 
29866
- function _createForOfIteratorHelper$t(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$t(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29867
- function _unsupportedIterableToArray$t(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$t(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$t(r, a) : void 0; } }
29868
- function _arrayLikeToArray$t(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29882
+ function _createForOfIteratorHelper$u(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$u(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
29883
+ function _unsupportedIterableToArray$u(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$u(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$u(r, a) : void 0; } }
29884
+ function _arrayLikeToArray$u(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29869
29885
  function ownKeys$I(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29870
29886
  function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
29871
29887
  /**
@@ -29925,7 +29941,7 @@ function mergeGridCellsOp(grid, cellNumbers, keepComponentId) {
29925
29941
  maxRow = -Infinity;
29926
29942
  var minCol = Infinity,
29927
29943
  maxCol = -Infinity;
29928
- var _iterator = _createForOfIteratorHelper$t(cellNumbers),
29944
+ var _iterator = _createForOfIteratorHelper$u(cellNumbers),
29929
29945
  _step;
29930
29946
  try {
29931
29947
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -29949,7 +29965,7 @@ function mergeGridCellsOp(grid, cellNumbers, keepComponentId) {
29949
29965
  } finally {
29950
29966
  _iterator.f();
29951
29967
  }
29952
- var _iterator2 = _createForOfIteratorHelper$t(cellNumbers),
29968
+ var _iterator2 = _createForOfIteratorHelper$u(cellNumbers),
29953
29969
  _step2;
29954
29970
  try {
29955
29971
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -29991,7 +30007,7 @@ function mergeGridCellsOp(grid, cellNumbers, keepComponentId) {
29991
30007
  _iterator2.f();
29992
30008
  }
29993
30009
  var componentsInRange = [];
29994
- var _iterator3 = _createForOfIteratorHelper$t(cellNumbers),
30010
+ var _iterator3 = _createForOfIteratorHelper$u(cellNumbers),
29995
30011
  _step3;
29996
30012
  try {
29997
30013
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -30029,7 +30045,7 @@ function mergeGridCellsOp(grid, cellNumbers, keepComponentId) {
30029
30045
  // other selected cells get hidden and have their component refs
30030
30046
  // cleared (so a stale ref in a hidden cell never re-renders).
30031
30047
  var keepCell = cellNumbers[0];
30032
- var _iterator4 = _createForOfIteratorHelper$t(cellNumbers),
30048
+ var _iterator4 = _createForOfIteratorHelper$u(cellNumbers),
30033
30049
  _step4;
30034
30050
  try {
30035
30051
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -30559,9 +30575,9 @@ function deleteGridColumnOp(grid, colNumber) {
30559
30575
  };
30560
30576
  }
30561
30577
 
30562
- function _createForOfIteratorHelper$s(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$s(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
30563
- function _unsupportedIterableToArray$s(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$s(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$s(r, a) : void 0; } }
30564
- function _arrayLikeToArray$s(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
30578
+ function _createForOfIteratorHelper$t(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$t(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
30579
+ function _unsupportedIterableToArray$t(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$t(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$t(r, a) : void 0; } }
30580
+ function _arrayLikeToArray$t(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
30565
30581
  /**
30566
30582
  * A Model for a Workspace (Dashboard)
30567
30583
  * The Dashboard in this instance is the entire Layout inclusive of the workspaces and widgets
@@ -30633,7 +30649,7 @@ var DashboardModel = /*#__PURE__*/function () {
30633
30649
 
30634
30650
  // Also normalize grids within pages
30635
30651
  if (this.pages.length > 0) {
30636
- var _iterator = _createForOfIteratorHelper$s(this.pages),
30652
+ var _iterator = _createForOfIteratorHelper$t(this.pages),
30637
30653
  _step;
30638
30654
  try {
30639
30655
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -32033,7 +32049,7 @@ var DashboardModel = /*#__PURE__*/function () {
32033
32049
  // destructive-delete behavior.
32034
32050
  var result = deleteGridRowOp(gridContainer.grid, rowNumber);
32035
32051
  gridContainer.grid = result.grid;
32036
- var _iterator2 = _createForOfIteratorHelper$s(result.orphanedComponents),
32052
+ var _iterator2 = _createForOfIteratorHelper$t(result.orphanedComponents),
32037
32053
  _step2;
32038
32054
  try {
32039
32055
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -32132,7 +32148,7 @@ var DashboardModel = /*#__PURE__*/function () {
32132
32148
  // Slice 11: pure helper.
32133
32149
  var result = deleteGridColumnOp(gridContainer.grid, colNumber);
32134
32150
  gridContainer.grid = result.grid;
32135
- var _iterator3 = _createForOfIteratorHelper$s(result.orphanedComponents),
32151
+ var _iterator3 = _createForOfIteratorHelper$t(result.orphanedComponents),
32136
32152
  _step3;
32137
32153
  try {
32138
32154
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -32227,7 +32243,7 @@ var DashboardModel = /*#__PURE__*/function () {
32227
32243
  try {
32228
32244
  // Collect all item IDs actively referenced by grid cells
32229
32245
  var activeItemIds = new Set();
32230
- var _iterator4 = _createForOfIteratorHelper$s(this.layout),
32246
+ var _iterator4 = _createForOfIteratorHelper$t(this.layout),
32231
32247
  _step4;
32232
32248
  try {
32233
32249
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -32267,7 +32283,7 @@ var DashboardModel = /*#__PURE__*/function () {
32267
32283
  });
32268
32284
 
32269
32285
  // Clean listener references on remaining items for each removed orphan
32270
- var _iterator5 = _createForOfIteratorHelper$s(orphanedIds),
32286
+ var _iterator5 = _createForOfIteratorHelper$t(orphanedIds),
32271
32287
  _step5;
32272
32288
  try {
32273
32289
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -33022,9 +33038,9 @@ var useDashboard = function useDashboard() {
33022
33038
  });
33023
33039
  };
33024
33040
 
33025
- function _createForOfIteratorHelper$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
33026
- function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$r(r, a) : void 0; } }
33027
- function _arrayLikeToArray$r(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
33041
+ function _createForOfIteratorHelper$s(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$s(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
33042
+ function _unsupportedIterableToArray$s(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$s(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$s(r, a) : void 0; } }
33043
+ function _arrayLikeToArray$s(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
33028
33044
 
33029
33045
  /**
33030
33046
  * useWidgetProviders Hook
@@ -33087,7 +33103,7 @@ var useWidgetProviders = function useWidgetProviders() {
33087
33103
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
33088
33104
  // 3. App-default: any provider in AppContext.providers flagged isDefaultForType
33089
33105
  var providers = {};
33090
- var _iterator = _createForOfIteratorHelper$r(providerDeclarations),
33106
+ var _iterator = _createForOfIteratorHelper$s(providerDeclarations),
33091
33107
  _step;
33092
33108
  try {
33093
33109
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -33146,9 +33162,9 @@ var useWidgetProviders = function useWidgetProviders() {
33146
33162
  };
33147
33163
  };
33148
33164
 
33149
- function _createForOfIteratorHelper$q(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$q(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
33150
- function _unsupportedIterableToArray$q(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$q(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$q(r, a) : void 0; } }
33151
- function _arrayLikeToArray$q(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
33165
+ function _createForOfIteratorHelper$r(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$r(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
33166
+ function _unsupportedIterableToArray$r(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$r(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$r(r, a) : void 0; } }
33167
+ function _arrayLikeToArray$r(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
33152
33168
 
33153
33169
  /**
33154
33170
  * Module-level shared state for MCP server connections.
@@ -33203,7 +33219,7 @@ function unionPathScope(grants, serverName) {
33203
33219
  allowedPaths: []
33204
33220
  };
33205
33221
  }
33206
- var _iterator = _createForOfIteratorHelper$q(grants),
33222
+ var _iterator = _createForOfIteratorHelper$r(grants),
33207
33223
  _step;
33208
33224
  try {
33209
33225
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -33216,7 +33232,7 @@ function unionPathScope(grants, serverName) {
33216
33232
  var serverPerms = servers[serverName];
33217
33233
  if (!serverPerms || _typeof(serverPerms) !== "object") continue;
33218
33234
  if (Array.isArray(serverPerms.readPaths)) {
33219
- var _iterator2 = _createForOfIteratorHelper$q(serverPerms.readPaths),
33235
+ var _iterator2 = _createForOfIteratorHelper$r(serverPerms.readPaths),
33220
33236
  _step2;
33221
33237
  try {
33222
33238
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -33230,7 +33246,7 @@ function unionPathScope(grants, serverName) {
33230
33246
  }
33231
33247
  }
33232
33248
  if (Array.isArray(serverPerms.writePaths)) {
33233
- var _iterator3 = _createForOfIteratorHelper$q(serverPerms.writePaths),
33249
+ var _iterator3 = _createForOfIteratorHelper$r(serverPerms.writePaths),
33234
33250
  _step3;
33235
33251
  try {
33236
33252
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -33918,13 +33934,17 @@ var useWidgetEvents = function useWidgetEvents() {
33918
33934
  id = _ref.id,
33919
33935
  uuid = _ref.uuid,
33920
33936
  events = _ref.events,
33921
- listenerConfig = _ref.listeners;
33937
+ listenerConfig = _ref.listeners,
33938
+ dashboardId = _ref.dashboardId;
33922
33939
  var publishEvent = React.useCallback(function (eventName, payload) {
33923
33940
  if (publisher && componentName && id != null) {
33924
33941
  var formattedName = "".concat(componentName, "[").concat(id, "].").concat(eventName);
33925
- publisher.pub(formattedName, payload);
33942
+ // Stamp the dashboard so bots can tell copies of a dashboard apart.
33943
+ publisher.pub(formattedName, payload, {
33944
+ workspaceId: dashboardId
33945
+ });
33926
33946
  }
33927
- }, [publisher, componentName, id]);
33947
+ }, [publisher, componentName, id, dashboardId]);
33928
33948
  var listen = React.useCallback(function (listeners, handlers) {
33929
33949
  if (publisher && uuid) {
33930
33950
  publisher.registerListeners(listeners, handlers, uuid);
@@ -34033,9 +34053,9 @@ var useNotifications = function useNotifications() {
34033
34053
  };
34034
34054
  };
34035
34055
 
34036
- function _createForOfIteratorHelper$p(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$p(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
34037
- function _unsupportedIterableToArray$p(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$p(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$p(r, a) : void 0; } }
34038
- function _arrayLikeToArray$p(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
34056
+ function _createForOfIteratorHelper$q(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$q(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
34057
+ function _unsupportedIterableToArray$q(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$q(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$q(r, a) : void 0; } }
34058
+ function _arrayLikeToArray$q(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
34039
34059
 
34040
34060
  /**
34041
34061
  * useScheduler Hook
@@ -34108,7 +34128,7 @@ var useScheduler = function useScheduler() {
34108
34128
  if (pending && pending.length > 0) {
34109
34129
  setPendingResults(pending);
34110
34130
  // Call handlers for each pending result
34111
- var _iterator = _createForOfIteratorHelper$p(pending),
34131
+ var _iterator = _createForOfIteratorHelper$q(pending),
34112
34132
  _step;
34113
34133
  try {
34114
34134
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -35347,9 +35367,9 @@ var CustomHexColorPane = function CustomHexColorPane(_ref) {
35347
35367
  });
35348
35368
  };
35349
35369
 
35350
- function _createForOfIteratorHelper$o(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$o(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
35351
- function _unsupportedIterableToArray$o(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$o(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$o(r, a) : void 0; } }
35352
- function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35370
+ function _createForOfIteratorHelper$p(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$p(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
35371
+ function _unsupportedIterableToArray$p(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$p(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$p(r, a) : void 0; } }
35372
+ function _arrayLikeToArray$p(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35353
35373
  function rgbDistSq(a, b) {
35354
35374
  var dr = a.r - b.r;
35355
35375
  var dg = a.g - b.g;
@@ -35367,13 +35387,13 @@ function nearestSwatch(hex, families) {
35367
35387
  var target = DashReact.hexToRgb(hex);
35368
35388
  if (!target) return null;
35369
35389
  var best = null;
35370
- var _iterator = _createForOfIteratorHelper$o(families),
35390
+ var _iterator = _createForOfIteratorHelper$p(families),
35371
35391
  _step;
35372
35392
  try {
35373
35393
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
35374
35394
  var family = _step.value;
35375
35395
  var grid = DashReact.getCuratedColorGrid(family) || [];
35376
- var _iterator2 = _createForOfIteratorHelper$o(grid),
35396
+ var _iterator2 = _createForOfIteratorHelper$p(grid),
35377
35397
  _step2;
35378
35398
  try {
35379
35399
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -40243,9 +40263,9 @@ function useRegistryAuthGate() {
40243
40263
 
40244
40264
  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; }
40245
40265
  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; }
40246
- function _createForOfIteratorHelper$n(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$n(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
40247
- function _unsupportedIterableToArray$n(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$n(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$n(r, a) : void 0; } }
40248
- function _arrayLikeToArray$n(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
40266
+ function _createForOfIteratorHelper$o(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$o(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
40267
+ function _unsupportedIterableToArray$o(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$o(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$o(r, a) : void 0; } }
40268
+ function _arrayLikeToArray$o(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
40249
40269
  var DASHBOARD_TAGS = ["productivity", "monitoring", "analytics", "communication", "developer", "sales", "marketing", "finance", "project-management", "social", "news", "utilities"];
40250
40270
  var BUMP_OPTIONS$1 = [{
40251
40271
  value: "patch",
@@ -40319,7 +40339,7 @@ function collectComponentConfigs() {
40319
40339
  // fixed "reference" entry.
40320
40340
  function seedSelections(plan, dashboardVisibility) {
40321
40341
  var selections = {};
40322
- var _iterator = _createForOfIteratorHelper$n(plan.widgets || []),
40342
+ var _iterator = _createForOfIteratorHelper$o(plan.widgets || []),
40323
40343
  _step;
40324
40344
  try {
40325
40345
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -40664,7 +40684,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
40664
40684
  React.useEffect(function () {
40665
40685
  if (!isOpen || step !== 5 || !plan || defaultsLoading) return;
40666
40686
  var packagesToScan = [];
40667
- var _iterator2 = _createForOfIteratorHelper$n(plan.widgets || []),
40687
+ var _iterator2 = _createForOfIteratorHelper$o(plan.widgets || []),
40668
40688
  _step2;
40669
40689
  try {
40670
40690
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -40703,7 +40723,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
40703
40723
  })).then(function (results) {
40704
40724
  setDefaultsByPackage(function (prev) {
40705
40725
  var next = _objectSpread$A({}, prev);
40706
- var _iterator3 = _createForOfIteratorHelper$n(results),
40726
+ var _iterator3 = _createForOfIteratorHelper$o(results),
40707
40727
  _step3;
40708
40728
  try {
40709
40729
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -40796,7 +40816,7 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
40796
40816
  break;
40797
40817
  }
40798
40818
  seenPackages = new Set();
40799
- _iterator4 = _createForOfIteratorHelper$n(plan.widgets || []);
40819
+ _iterator4 = _createForOfIteratorHelper$o(plan.widgets || []);
40800
40820
  _context2.prev = 4;
40801
40821
  _iterator4.s();
40802
40822
  case 5:
@@ -41710,7 +41730,7 @@ function DependencyTable(_ref4) {
41710
41730
  // row. Each row shows the list of component widgets that live inside it
41711
41731
  // so the user knows what's getting published.
41712
41732
  var byKey = new Map();
41713
- var _iterator5 = _createForOfIteratorHelper$n(plan.widgets || []),
41733
+ var _iterator5 = _createForOfIteratorHelper$o(plan.widgets || []),
41714
41734
  _step6;
41715
41735
  try {
41716
41736
  for (_iterator5.s(); !(_step6 = _iterator5.n()).done;) {
@@ -41881,7 +41901,7 @@ function DefaultsReviewList(_ref6) {
41881
41901
  // stays aligned with Dependencies — no surprises about WHICH
41882
41902
  // package's defaults you're editing.
41883
41903
  var rows = [];
41884
- var _iterator6 = _createForOfIteratorHelper$n((plan === null || plan === void 0 ? void 0 : plan.widgets) || []),
41904
+ var _iterator6 = _createForOfIteratorHelper$o((plan === null || plan === void 0 ? void 0 : plan.widgets) || []),
41885
41905
  _step7;
41886
41906
  try {
41887
41907
  for (_iterator6.s(); !(_step7 = _iterator6.n()).done;) {
@@ -45816,9 +45836,9 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
45816
45836
 
45817
45837
  function ownKeys$u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
45818
45838
  function _objectSpread$u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$u(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
45819
- function _createForOfIteratorHelper$m(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$m(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
45820
- function _unsupportedIterableToArray$m(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$m(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$m(r, a) : void 0; } }
45821
- function _arrayLikeToArray$m(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
45839
+ function _createForOfIteratorHelper$n(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$n(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
45840
+ function _unsupportedIterableToArray$n(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$n(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$n(r, a) : void 0; } }
45841
+ function _arrayLikeToArray$n(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
45822
45842
  function isValidWsUrl(url) {
45823
45843
  if (!url) return false;
45824
45844
  try {
@@ -45865,7 +45885,7 @@ function extractCredentialFields(url, headerRows) {
45865
45885
  fields.add(match[1]);
45866
45886
  }
45867
45887
  }
45868
- var _iterator = _createForOfIteratorHelper$m(headerRows),
45888
+ var _iterator = _createForOfIteratorHelper$n(headerRows),
45869
45889
  _step;
45870
45890
  try {
45871
45891
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -45970,7 +45990,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
45970
45990
  if (!url.trim()) errs.url = "WebSocket URL is required";else if (!isValidWsUrl(url)) errs.url = "URL must start with ws:// or wss://";
45971
45991
 
45972
45992
  // Check required credential fields are filled
45973
- var _iterator2 = _createForOfIteratorHelper$m(credentialFields),
45993
+ var _iterator2 = _createForOfIteratorHelper$n(credentialFields),
45974
45994
  _step2;
45975
45995
  try {
45976
45996
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -45993,7 +46013,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
45993
46013
 
45994
46014
  // Build headers object from rows
45995
46015
  var headers = {};
45996
- var _iterator3 = _createForOfIteratorHelper$m(headerRows),
46016
+ var _iterator3 = _createForOfIteratorHelper$n(headerRows),
45997
46017
  _step3;
45998
46018
  try {
45999
46019
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -46062,7 +46082,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
46062
46082
 
46063
46083
  // Build config from current form state (same as handleSave)
46064
46084
  headers = {};
46065
- _iterator4 = _createForOfIteratorHelper$m(headerRows);
46085
+ _iterator4 = _createForOfIteratorHelper$n(headerRows);
46066
46086
  try {
46067
46087
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
46068
46088
  row = _step4.value;
@@ -47356,6 +47376,140 @@ function parseCron(cron) {
47356
47376
  };
47357
47377
  }
47358
47378
 
47379
+ function _createForOfIteratorHelper$m(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$m(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
47380
+ function _unsupportedIterableToArray$m(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$m(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$m(r, a) : void 0; } }
47381
+ function _arrayLikeToArray$m(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
47382
+
47383
+ /**
47384
+ * @param {Array<object>} workspaces dashboards (each with id, name, layout/pages)
47385
+ * @param {(component: string) => object|null} getWidgetConfig
47386
+ * @returns {Array<{ workspaceId: string, name: string,
47387
+ * widgets: Array<{ ref: string, instanceId: string, label: string, events: string[] }> }>}
47388
+ * dashboards with at least one event-emitting widget
47389
+ */
47390
+ function buildWidgetEventCatalog(workspaces, getWidgetConfig) {
47391
+ if (!Array.isArray(workspaces)) return [];
47392
+ var out = [];
47393
+ var _iterator = _createForOfIteratorHelper$m(workspaces),
47394
+ _step;
47395
+ try {
47396
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
47397
+ var ws = _step.value;
47398
+ if (!ws || ws.id === undefined || ws.id === null) continue;
47399
+ var widgets = getEmitters(ws, getWidgetConfig).filter(function (e) {
47400
+ return e.itemId != null && e.events.length;
47401
+ }).map(function (e) {
47402
+ return {
47403
+ ref: e.component,
47404
+ instanceId: String(e.itemId),
47405
+ label: e.label || e.component,
47406
+ events: e.events
47407
+ };
47408
+ });
47409
+ if (!widgets.length) continue;
47410
+ out.push({
47411
+ workspaceId: String(ws.id),
47412
+ name: ws.name || "Dashboard ".concat(ws.id),
47413
+ widgets: widgets
47414
+ });
47415
+ }
47416
+ // Dashboards can share a name (e.g. copies of "Kitchen Sink"); number the
47417
+ // duplicates so each picker entry is distinguishable.
47418
+ } catch (err) {
47419
+ _iterator.e(err);
47420
+ } finally {
47421
+ _iterator.f();
47422
+ }
47423
+ var totals = {};
47424
+ for (var _i = 0, _out = out; _i < _out.length; _i++) {
47425
+ var w = _out[_i];
47426
+ totals[w.name] = (totals[w.name] || 0) + 1;
47427
+ }
47428
+ var seen = {};
47429
+ for (var _i2 = 0, _out2 = out; _i2 < _out2.length; _i2++) {
47430
+ var _w = _out2[_i2];
47431
+ if (totals[_w.name] > 1) {
47432
+ seen[_w.name] = (seen[_w.name] || 0) + 1;
47433
+ _w.name = "".concat(_w.name, " (").concat(seen[_w.name], ")");
47434
+ }
47435
+ }
47436
+ return out;
47437
+ }
47438
+
47439
+ /** A subscription to one widget event, picked from the catalog. */
47440
+ function widgetSubscription(workspace, widget, event) {
47441
+ return {
47442
+ eventType: formatEventString(widget.ref, widget.instanceId, event),
47443
+ source: {
47444
+ kind: "widget",
47445
+ ref: widget.ref,
47446
+ instanceId: widget.instanceId,
47447
+ event: event,
47448
+ workspaceId: workspace.workspaceId
47449
+ },
47450
+ label: "".concat(workspace.name, " \u203A ").concat(widget.label, " \u203A ").concat(event)
47451
+ };
47452
+ }
47453
+
47454
+ /**
47455
+ * How to show a saved subscription: its label from the live catalog, and
47456
+ * whether its widget/event is gone (`missing`). Subscriptions saved before
47457
+ * the picker (bare eventType) get a friendly label when they still resolve;
47458
+ * otherwise they show as typed.
47459
+ */
47460
+ function describeSubscription(sub, catalog) {
47461
+ var eventType = sub && sub.eventType;
47462
+ var _iterator2 = _createForOfIteratorHelper$m(catalog || []),
47463
+ _step2;
47464
+ try {
47465
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
47466
+ var ws = _step2.value;
47467
+ var _iterator3 = _createForOfIteratorHelper$m(ws.widgets),
47468
+ _step3;
47469
+ try {
47470
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
47471
+ var w = _step3.value;
47472
+ var _iterator4 = _createForOfIteratorHelper$m(w.events),
47473
+ _step4;
47474
+ try {
47475
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
47476
+ var ev = _step4.value;
47477
+ if (formatEventString(w.ref, w.instanceId, ev) === eventType) {
47478
+ return {
47479
+ label: widgetSubscription(ws, w, ev).label,
47480
+ missing: false
47481
+ };
47482
+ }
47483
+ }
47484
+ } catch (err) {
47485
+ _iterator4.e(err);
47486
+ } finally {
47487
+ _iterator4.f();
47488
+ }
47489
+ }
47490
+ } catch (err) {
47491
+ _iterator3.e(err);
47492
+ } finally {
47493
+ _iterator3.f();
47494
+ }
47495
+ }
47496
+ } catch (err) {
47497
+ _iterator2.e(err);
47498
+ } finally {
47499
+ _iterator2.f();
47500
+ }
47501
+ if (sub && sub.source) {
47502
+ return {
47503
+ label: sub.label || eventType,
47504
+ missing: true
47505
+ };
47506
+ }
47507
+ return {
47508
+ label: eventType || "",
47509
+ missing: false
47510
+ };
47511
+ }
47512
+
47359
47513
  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; }
47360
47514
  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; }
47361
47515
  var PROVIDER_LABELS = {
@@ -47445,6 +47599,9 @@ function prettyTool(name) {
47445
47599
  var words = String(name || "").split(/[-_\s]+/).filter(Boolean).join(" ");
47446
47600
  return words.charAt(0).toUpperCase() + words.slice(1);
47447
47601
  }
47602
+
47603
+ // Stable default so the event-catalog memo doesn't recompute every render.
47604
+ var EMPTY_LIST = [];
47448
47605
  function getMainApi() {
47449
47606
  return typeof window !== "undefined" ? window.mainApi : null;
47450
47607
  }
@@ -47456,6 +47613,10 @@ var BotDetail = function BotDetail(_ref) {
47456
47613
  isCreating = _ref$isCreating === void 0 ? false : _ref$isCreating,
47457
47614
  _ref$providers = _ref.providers,
47458
47615
  providers = _ref$providers === void 0 ? {} : _ref$providers,
47616
+ _ref$workspaces = _ref.workspaces,
47617
+ workspaces = _ref$workspaces === void 0 ? EMPTY_LIST : _ref$workspaces,
47618
+ _ref$getWidgetConfig = _ref.getWidgetConfig,
47619
+ getWidgetConfig = _ref$getWidgetConfig === void 0 ? null : _ref$getWidgetConfig,
47459
47620
  onSave = _ref.onSave,
47460
47621
  onCancel = _ref.onCancel,
47461
47622
  onDelete = _ref.onDelete;
@@ -47599,42 +47760,38 @@ var BotDetail = function BotDetail(_ref) {
47599
47760
  setSchedulePrompt = _useState36[1];
47600
47761
 
47601
47762
  // --- Run-on-events (subscriptions) ---
47602
- var _useState37 = React.useState(((bot === null || bot === void 0 ? void 0 : bot.subscriptions) || []).map(function (s) {
47763
+ // Picked, never typed: Dashboard › Widget › Event from the widgets' declared
47764
+ // events. Each saved subscription keeps its runtime eventType plus a
47765
+ // structured source (see eventCatalog.js).
47766
+ var _useState37 = React.useState(((bot === null || bot === void 0 ? void 0 : bot.subscriptions) || []).filter(function (s) {
47603
47767
  return s && s.eventType;
47604
- }).filter(Boolean)),
47768
+ })),
47605
47769
  _useState38 = _slicedToArray(_useState37, 2),
47606
47770
  subscriptions = _useState38[0],
47607
47771
  setSubscriptions = _useState38[1];
47772
+ var eventCatalog = React.useMemo(function () {
47773
+ return buildWidgetEventCatalog(workspaces, getWidgetConfig);
47774
+ }, [workspaces, getWidgetConfig]);
47608
47775
  var _useState39 = React.useState(""),
47609
47776
  _useState40 = _slicedToArray(_useState39, 2),
47610
- newEvent = _useState40[0],
47611
- setNewEvent = _useState40[1];
47612
- var _useState41 = React.useState([]),
47777
+ pickWorkspace = _useState40[0],
47778
+ setPickWorkspace = _useState40[1];
47779
+ var _useState41 = React.useState(""),
47613
47780
  _useState42 = _slicedToArray(_useState41, 2),
47614
- knownEvents = _useState42[0],
47615
- setKnownEvents = _useState42[1];
47616
- var _useState43 = React.useState(false),
47781
+ pickWidget = _useState42[0],
47782
+ setPickWidget = _useState42[1];
47783
+ var _useState43 = React.useState(""),
47617
47784
  _useState44 = _slicedToArray(_useState43, 2),
47618
- saving = _useState44[0],
47619
- setSaving = _useState44[1];
47620
- var _useState45 = React.useState(null),
47785
+ pickEvent = _useState44[0],
47786
+ setPickEvent = _useState44[1];
47787
+ var _useState45 = React.useState(false),
47621
47788
  _useState46 = _slicedToArray(_useState45, 2),
47622
- error = _useState46[0],
47623
- setError = _useState46[1];
47624
-
47625
- // Discover recently-seen widget event types to suggest as subscriptions.
47626
- React.useEffect(function () {
47627
- var _api$widgetEvent;
47628
- var alive = true;
47629
- var api = getMainApi();
47630
- if (!(api !== null && api !== void 0 && (_api$widgetEvent = api.widgetEvent) !== null && _api$widgetEvent !== void 0 && _api$widgetEvent.getLastEvents)) return undefined;
47631
- Promise.resolve(api.widgetEvent.getLastEvents()).then(function (events) {
47632
- if (alive && events) setKnownEvents(Object.keys(events).sort());
47633
- })["catch"](function () {});
47634
- return function () {
47635
- alive = false;
47636
- };
47637
- }, []);
47789
+ saving = _useState46[0],
47790
+ setSaving = _useState46[1];
47791
+ var _useState47 = React.useState(null),
47792
+ _useState48 = _slicedToArray(_useState47, 2),
47793
+ error = _useState48[0],
47794
+ setError = _useState48[1];
47638
47795
 
47639
47796
  // Discover the user's configured MCP providers — running or not. The bot
47640
47797
  // starts any that aren't running when it runs.
@@ -47748,26 +47905,31 @@ var BotDetail = function BotDetail(_ref) {
47748
47905
  return copy;
47749
47906
  });
47750
47907
  };
47751
- var addSubscription = function addSubscription(eventType) {
47752
- var ev = (eventType || "").trim();
47753
- if (!ev) return;
47908
+
47909
+ // Cascading picker options. A widget's option value is "ref|instanceId".
47910
+ var pickedWs = eventCatalog.find(function (w) {
47911
+ return w.workspaceId === pickWorkspace;
47912
+ });
47913
+ var pickedWidget = pickedWs ? pickedWs.widgets.find(function (w) {
47914
+ return "".concat(w.ref, "|").concat(w.instanceId) === pickWidget;
47915
+ }) : null;
47916
+ var addSubscription = function addSubscription() {
47917
+ if (!pickedWs || !pickedWidget || !pickEvent) return;
47918
+ var sub = widgetSubscription(pickedWs, pickedWidget, pickEvent);
47754
47919
  setSubscriptions(function (prev) {
47755
- return prev.includes(ev) ? prev : [].concat(_toConsumableArray(prev), [ev]);
47920
+ return prev.some(function (s) {
47921
+ return s.eventType === sub.eventType;
47922
+ }) ? prev : [].concat(_toConsumableArray(prev), [sub]);
47756
47923
  });
47757
- setNewEvent("");
47924
+ setPickEvent("");
47758
47925
  };
47759
47926
  var removeSubscription = function removeSubscription(eventType) {
47760
47927
  setSubscriptions(function (prev) {
47761
- return prev.filter(function (e) {
47762
- return e !== eventType;
47928
+ return prev.filter(function (s) {
47929
+ return s.eventType !== eventType;
47763
47930
  });
47764
47931
  });
47765
47932
  };
47766
-
47767
- // Recently-seen events not already subscribed — offered as one-click adds.
47768
- var eventSuggestions = knownEvents.filter(function (ev) {
47769
- return !subscriptions.includes(ev);
47770
- });
47771
47933
  var canSave = name.trim() && instructions.trim() && !saving;
47772
47934
  var handleSave = /*#__PURE__*/function () {
47773
47935
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
@@ -47803,11 +47965,7 @@ var BotDetail = function BotDetail(_ref) {
47803
47965
  return selectedServers.includes(server);
47804
47966
  })),
47805
47967
  schedules: schedules,
47806
- subscriptions: subscriptions.map(function (eventType) {
47807
- return {
47808
- eventType: eventType
47809
- };
47810
- })
47968
+ subscriptions: subscriptions
47811
47969
  });
47812
47970
  setSaving(true);
47813
47971
  _context2.prev = 1;
@@ -48038,53 +48196,84 @@ var BotDetail = function BotDetail(_ref) {
48038
48196
  className: "text-sm font-medium",
48039
48197
  children: "Run on events"
48040
48198
  }), subscriptions.length ? /*#__PURE__*/jsxRuntime.jsx("div", {
48041
- className: "flex flex-row flex-wrap gap-2",
48042
- children: subscriptions.map(function (ev) {
48043
- return /*#__PURE__*/jsxRuntime.jsxs("span", {
48044
- className: "flex flex-row items-center gap-1 text-xs px-2 py-1 rounded bg-gray-700",
48045
- children: [ev, /*#__PURE__*/jsxRuntime.jsx("button", {
48046
- type: "button",
48199
+ className: "flex flex-col gap-1",
48200
+ children: subscriptions.map(function (sub) {
48201
+ var _describeSubscription = describeSubscription(sub, eventCatalog),
48202
+ label = _describeSubscription.label,
48203
+ missing = _describeSubscription.missing;
48204
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
48205
+ className: "flex flex-row items-center justify-between gap-2",
48206
+ children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
48207
+ className: "text-sm",
48208
+ children: [label, missing ? /*#__PURE__*/jsxRuntime.jsxs("span", {
48209
+ className: "text-xs opacity-60",
48210
+ children: [" ", "(widget missing)"]
48211
+ }) : null]
48212
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.Button3, {
48213
+ title: "Remove",
48214
+ size: "xs",
48215
+ ariaLabel: "Remove ".concat(label),
48047
48216
  onClick: function onClick() {
48048
- return removeSubscription(ev);
48049
- },
48050
- className: "opacity-60 hover:opacity-100",
48051
- "aria-label": "Remove ".concat(ev),
48052
- children: "\xD7"
48217
+ return removeSubscription(sub.eventType);
48218
+ }
48053
48219
  })]
48054
- }, ev);
48220
+ }, sub.eventType);
48055
48221
  })
48056
48222
  }) : /*#__PURE__*/jsxRuntime.jsx("span", {
48057
48223
  className: "text-xs opacity-50",
48058
48224
  children: "This bot doesn't run on any events yet."
48059
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
48060
- className: "flex flex-row gap-2",
48061
- children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.InputText, {
48062
- value: newEvent,
48063
- onChange: setNewEvent,
48064
- placeholder: "Event name, e.g. pr.opened"
48065
- }), /*#__PURE__*/jsxRuntime.jsx(DashReact.Button, {
48066
- title: "Add",
48067
- onClick: function onClick() {
48068
- return addSubscription(newEvent);
48225
+ }), eventCatalog.length ? /*#__PURE__*/jsxRuntime.jsxs("div", {
48226
+ className: "flex flex-col gap-2",
48227
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.SelectInput, {
48228
+ label: "Dashboard",
48229
+ value: pickWorkspace,
48230
+ onChange: function onChange(v) {
48231
+ setPickWorkspace(v);
48232
+ setPickWidget("");
48233
+ setPickEvent("");
48234
+ },
48235
+ placeholder: "Choose a dashboard\u2026",
48236
+ options: eventCatalog.map(function (w) {
48237
+ return {
48238
+ value: w.workspaceId,
48239
+ label: w.name
48240
+ };
48241
+ })
48242
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.SelectInput, {
48243
+ label: "Widget",
48244
+ value: pickWidget,
48245
+ onChange: function onChange(v) {
48246
+ setPickWidget(v);
48247
+ setPickEvent("");
48069
48248
  },
48249
+ placeholder: "Choose a widget\u2026",
48250
+ options: (pickedWs ? pickedWs.widgets : []).map(function (w) {
48251
+ return {
48252
+ value: "".concat(w.ref, "|").concat(w.instanceId),
48253
+ label: w.label
48254
+ };
48255
+ })
48256
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.SelectInput, {
48257
+ label: "Event",
48258
+ value: pickEvent,
48259
+ onChange: setPickEvent,
48260
+ placeholder: "Choose an event\u2026",
48261
+ options: (pickedWidget ? pickedWidget.events : []).map(function (ev) {
48262
+ return {
48263
+ value: ev,
48264
+ label: ev
48265
+ };
48266
+ })
48267
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.Button, {
48268
+ title: "Add event",
48269
+ onClick: addSubscription,
48070
48270
  size: "sm",
48071
- disabled: !newEvent.trim()
48271
+ disabled: !pickedWidget || !pickEvent
48072
48272
  })]
48073
- }), eventSuggestions.length ? /*#__PURE__*/jsxRuntime.jsxs("div", {
48074
- className: "flex flex-row flex-wrap gap-1 items-center text-xs opacity-60",
48075
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
48076
- children: "Recently seen:"
48077
- }), eventSuggestions.slice(0, 8).map(function (ev) {
48078
- return /*#__PURE__*/jsxRuntime.jsx("button", {
48079
- type: "button",
48080
- onClick: function onClick() {
48081
- return addSubscription(ev);
48082
- },
48083
- className: "underline hover:opacity-100",
48084
- children: ev
48085
- }, ev);
48086
- })]
48087
- }) : null, /*#__PURE__*/jsxRuntime.jsx("span", {
48273
+ }) : /*#__PURE__*/jsxRuntime.jsx("span", {
48274
+ className: "text-xs opacity-50",
48275
+ children: "No widgets on your dashboards publish events yet. Add a widget that publishes events to a dashboard to trigger this bot from it."
48276
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
48088
48277
  className: "text-xs opacity-50",
48089
48278
  children: "The bot runs automatically when one of these events fires."
48090
48279
  })]
@@ -48117,8 +48306,23 @@ var BotDetail = function BotDetail(_ref) {
48117
48306
  });
48118
48307
  };
48119
48308
 
48309
+ var getWidgetConfig = function getWidgetConfig(name) {
48310
+ return name && ComponentManager.config(name) || null;
48311
+ };
48312
+
48313
+ /**
48314
+ * BotsSection — Settings → Bots. List-and-detail management for Bot Factory
48315
+ * bots, mirroring ProvidersSection. Data comes from the main process over
48316
+ * dashApi.bots.* (promise-based IPC bridge, exposed by dash-electron's
48317
+ * preload); the provider dropdown reads configured providers from AppContext.
48318
+ *
48319
+ * Watching runs / approvals lives in the Activity panel (a later slice); this
48320
+ * surface is create / configure / delete.
48321
+ */
48120
48322
  var BotsSection = function BotsSection(_ref) {
48121
- var _ref$dashApi = _ref.dashApi,
48323
+ var _ref$workspaces = _ref.workspaces,
48324
+ workspaces = _ref$workspaces === void 0 ? [] : _ref$workspaces,
48325
+ _ref$dashApi = _ref.dashApi,
48122
48326
  dashApi = _ref$dashApi === void 0 ? null : _ref$dashApi,
48123
48327
  _ref$createRequested = _ref.createRequested,
48124
48328
  createRequested = _ref$createRequested === void 0 ? false : _ref$createRequested,
@@ -48276,6 +48480,8 @@ var BotsSection = function BotsSection(_ref) {
48276
48480
  detailContent = /*#__PURE__*/jsxRuntime.jsx(BotDetail, {
48277
48481
  isCreating: true,
48278
48482
  providers: providers,
48483
+ workspaces: workspaces,
48484
+ getWidgetConfig: getWidgetConfig,
48279
48485
  onSave: handleSave,
48280
48486
  onCancel: function onCancel() {
48281
48487
  return setIsCreating(false);
@@ -48285,6 +48491,8 @@ var BotsSection = function BotsSection(_ref) {
48285
48491
  detailContent = /*#__PURE__*/jsxRuntime.jsx(BotDetail, {
48286
48492
  bot: selected,
48287
48493
  providers: providers,
48494
+ workspaces: workspaces,
48495
+ getWidgetConfig: getWidgetConfig,
48288
48496
  onSave: handleSave,
48289
48497
  onDelete: function onDelete() {
48290
48498
  return setDeleteTarget(selected.id);
@@ -57125,6 +57333,7 @@ var AppSettingsModal = function AppSettingsModal(_ref) {
57125
57333
  initialProviderType: initialProviderType,
57126
57334
  initialProviderClass: initialProviderClass
57127
57335
  }), activeSection === "bots" && /*#__PURE__*/jsxRuntime.jsx(BotsSection, {
57336
+ workspaces: workspaces,
57128
57337
  dashApi: dashApi,
57129
57338
  credentials: credentials,
57130
57339
  createRequested: createRequested,