@trops/dash-core 0.1.237 → 0.1.239

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -2755,9 +2755,9 @@ var LayoutContainer = function LayoutContainer(_ref) {
2755
2755
 
2756
2756
  function ownKeys$E(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2757
2757
  function _objectSpread$E(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$E(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$E(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2758
- 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; } } }; }
2759
- 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; } }
2760
- 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; }
2758
+ 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; } } }; }
2759
+ 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; } }
2760
+ 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; }
2761
2761
  /**
2762
2762
  * Layout template definitions for the dashboard template picker.
2763
2763
  *
@@ -3031,7 +3031,7 @@ function createLayoutFromTemplate(template) {
3031
3031
  cols: template.cols,
3032
3032
  gap: "gap-2"
3033
3033
  };
3034
- var _iterator = _createForOfIteratorHelper$g(template.cells),
3034
+ var _iterator = _createForOfIteratorHelper$h(template.cells),
3035
3035
  _step;
3036
3036
  try {
3037
3037
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -3556,9 +3556,9 @@ var StarRating = function StarRating(_ref) {
3556
3556
  });
3557
3557
  };
3558
3558
 
3559
- 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; } } }; }
3560
- 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; } }
3561
- 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; }
3559
+ 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; } } }; }
3560
+ 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; } }
3561
+ 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; }
3562
3562
  function ownKeys$D(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3563
3563
  function _objectSpread$D(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3564
3564
  var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
@@ -3810,7 +3810,7 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
3810
3810
  toInstall = 0,
3811
3811
  unavailable = 0,
3812
3812
  hasUnavailableRequired = false;
3813
- var _iterator = _createForOfIteratorHelper$f(widgetDeps),
3813
+ var _iterator = _createForOfIteratorHelper$g(widgetDeps),
3814
3814
  _step;
3815
3815
  try {
3816
3816
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -5488,9 +5488,9 @@ var LayoutQuickAddMenu = function LayoutQuickAddMenu(_ref) {
5488
5488
  });
5489
5489
  };
5490
5490
 
5491
- 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; } } }; }
5492
- 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; } }
5493
- 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; }
5491
+ 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; } } }; }
5492
+ 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; } }
5493
+ 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; }
5494
5494
 
5495
5495
  /**
5496
5496
  * useRegistrySearch — shared hook for browsing and installing registry packages.
@@ -5597,13 +5597,13 @@ var useRegistrySearch = function useRegistrySearch() {
5597
5597
  return c.toLowerCase();
5598
5598
  }));
5599
5599
  widgets = [];
5600
- _iterator = _createForOfIteratorHelper$e(pkgs);
5600
+ _iterator = _createForOfIteratorHelper$f(pkgs);
5601
5601
  try {
5602
5602
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
5603
5603
  pkg = _step.value;
5604
5604
  // Compute missing APIs for the entire package
5605
5605
  allApiProviders = [];
5606
- _iterator2 = _createForOfIteratorHelper$e(pkg.providers || []);
5606
+ _iterator2 = _createForOfIteratorHelper$f(pkg.providers || []);
5607
5607
  try {
5608
5608
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
5609
5609
  p = _step2.value;
@@ -5616,11 +5616,11 @@ var useRegistrySearch = function useRegistrySearch() {
5616
5616
  } finally {
5617
5617
  _iterator2.f();
5618
5618
  }
5619
- _iterator3 = _createForOfIteratorHelper$e(pkg.widgets || []);
5619
+ _iterator3 = _createForOfIteratorHelper$f(pkg.widgets || []);
5620
5620
  try {
5621
5621
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
5622
5622
  w = _step3.value;
5623
- _iterator5 = _createForOfIteratorHelper$e(w.providers || []);
5623
+ _iterator5 = _createForOfIteratorHelper$f(w.providers || []);
5624
5624
  try {
5625
5625
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
5626
5626
  _p = _step5.value;
@@ -5642,7 +5642,7 @@ var useRegistrySearch = function useRegistrySearch() {
5642
5642
  missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
5643
5643
  return !capSet.has(api.toLowerCase());
5644
5644
  });
5645
- _iterator4 = _createForOfIteratorHelper$e(pkg.widgets || []);
5645
+ _iterator4 = _createForOfIteratorHelper$f(pkg.widgets || []);
5646
5646
  try {
5647
5647
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
5648
5648
  widget = _step4.value;
@@ -5654,6 +5654,7 @@ var useRegistrySearch = function useRegistrySearch() {
5654
5654
  providers: widget.providers || [],
5655
5655
  isRegistry: true,
5656
5656
  packageName: pkg.name,
5657
+ packageScope: pkg.scope || null,
5657
5658
  packageDisplayName: pkg.displayName || pkg.name,
5658
5659
  packageVersion: pkg.version,
5659
5660
  packageAuthor: pkg.author || "",
@@ -5716,7 +5717,7 @@ var useRegistrySearch = function useRegistrySearch() {
5716
5717
  }, [searchQuery, showAllPackages]);
5717
5718
  var installPackage = useCallback(/*#__PURE__*/function () {
5718
5719
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
5719
- var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
5720
+ var packageName, packageScope, downloadUrl, packageVersion, scopedId, resolvedUrl, _t2;
5720
5721
  return _regeneratorRuntime.wrap(function (_context2) {
5721
5722
  while (1) switch (_context2.prev = _context2.next) {
5722
5723
  case 0:
@@ -5729,10 +5730,11 @@ var useRegistrySearch = function useRegistrySearch() {
5729
5730
  setIsInstalling(true);
5730
5731
  setInstallError(null);
5731
5732
  _context2.prev = 2;
5732
- packageName = widget.packageName, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Resolve placeholders in the download URL
5733
+ packageName = widget.packageName, packageScope = widget.packageScope, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Build scoped ID (e.g. "@trops/slack") for the install key
5734
+ scopedId = packageScope ? "@".concat(packageScope.replace(/^@/, ""), "/").concat(packageName) : packageName; // Resolve placeholders in the download URL
5733
5735
  resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
5734
5736
  _context2.next = 3;
5735
- return window.mainApi.widgets.install(packageName, resolvedUrl);
5737
+ return window.mainApi.widgets.install(scopedId, resolvedUrl);
5736
5738
  case 3:
5737
5739
  _context2.next = 5;
5738
5740
  break;
@@ -6231,6 +6233,9 @@ function applyFilters(items, filters, mode) {
6231
6233
  });
6232
6234
  }
6233
6235
 
6236
+ 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; } } }; }
6237
+ 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; } }
6238
+ 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; }
6234
6239
  function ownKeys$B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6235
6240
  function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6236
6241
  var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
@@ -6326,7 +6331,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
6326
6331
 
6327
6332
  // --- Create logic (DASH-191: moved above useEffect so ref captures actual function) ---
6328
6333
  var handleCreate = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
6329
- var _state$customization, name, menuId, theme, result, _window$mainApi, installResult, updatedWorkspace, _window$mainApi2, template, layoutObj, widgetOrder, cells, widgetItems, nextId, _loop, i, fullLayout, workspace, _t;
6334
+ var _state$customization, name, menuId, theme, result, _window$mainApi, installResult, updatedWorkspace, _window$mainApi2, _window$mainApi3, template, installedList, installedNames, _iterator, _step, widget, scopedId, resolvedUrl, layoutObj, widgetOrder, cells, widgetItems, nextId, _loop, i, fullLayout, workspace, _t, _t2, _t3;
6330
6335
  return _regeneratorRuntime.wrap(function (_context2) {
6331
6336
  while (1) switch (_context2.prev = _context2.next) {
6332
6337
  case 0:
@@ -6380,7 +6385,7 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
6380
6385
  workspace: updatedWorkspace
6381
6386
  };
6382
6387
  case 6:
6383
- _context2.next = 15;
6388
+ _context2.next = 25;
6384
6389
  break;
6385
6390
  case 7:
6386
6391
  // Build-your-own path: create layout from template + place widgets
@@ -6393,6 +6398,66 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
6393
6398
  }
6394
6399
  throw new Error("No layout template selected.");
6395
6400
  case 8:
6401
+ if (!((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.widgets)) {
6402
+ _context2.next = 18;
6403
+ break;
6404
+ }
6405
+ _context2.next = 9;
6406
+ return window.mainApi.widgets.list();
6407
+ case 9:
6408
+ _t = _context2.sent;
6409
+ if (_t) {
6410
+ _context2.next = 10;
6411
+ break;
6412
+ }
6413
+ _t = [];
6414
+ case 10:
6415
+ installedList = _t;
6416
+ installedNames = new Set(installedList.map(function (w) {
6417
+ return w.name;
6418
+ }));
6419
+ _iterator = _createForOfIteratorHelper$e(state.selectedWidgets);
6420
+ _context2.prev = 11;
6421
+ _iterator.s();
6422
+ case 12:
6423
+ if ((_step = _iterator.n()).done) {
6424
+ _context2.next = 15;
6425
+ break;
6426
+ }
6427
+ widget = _step.value;
6428
+ if (widget.isRegistry) {
6429
+ _context2.next = 13;
6430
+ break;
6431
+ }
6432
+ return _context2.abrupt("continue", 14);
6433
+ case 13:
6434
+ scopedId = widget.packageScope ? "@".concat(widget.packageScope.replace(/^@/, ""), "/").concat(widget.packageName) : widget.packageName;
6435
+ if (!(!installedNames.has(scopedId) && !installedNames.has(widget.packageName))) {
6436
+ _context2.next = 14;
6437
+ break;
6438
+ }
6439
+ resolvedUrl = (widget.downloadUrl || "").replace(/\{version\}/g, widget.packageVersion || "").replace(/\{name\}/g, widget.packageName || "");
6440
+ if (!resolvedUrl) {
6441
+ _context2.next = 14;
6442
+ break;
6443
+ }
6444
+ _context2.next = 14;
6445
+ return window.mainApi.widgets.install(scopedId, resolvedUrl);
6446
+ case 14:
6447
+ _context2.next = 12;
6448
+ break;
6449
+ case 15:
6450
+ _context2.next = 17;
6451
+ break;
6452
+ case 16:
6453
+ _context2.prev = 16;
6454
+ _t2 = _context2["catch"](11);
6455
+ _iterator.e(_t2);
6456
+ case 17:
6457
+ _context2.prev = 17;
6458
+ _iterator.f();
6459
+ return _context2.finish(17);
6460
+ case 18:
6396
6461
  layoutObj = createLayoutFromTemplate(template, menuId || 1); // Place widgets into grid cells as proper layout items
6397
6462
  widgetOrder = state.layout.widgetOrder || [];
6398
6463
  cells = template.cells.filter(function (c) {
@@ -6429,31 +6494,31 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
6429
6494
  }, _loop);
6430
6495
  });
6431
6496
  i = 0;
6432
- case 9:
6497
+ case 19:
6433
6498
  if (!(i < widgetOrder.length && i < cells.length)) {
6434
- _context2.next = 11;
6499
+ _context2.next = 21;
6435
6500
  break;
6436
6501
  }
6437
- return _context2.delegateYield(_loop(i), "t0", 10);
6438
- case 10:
6502
+ return _context2.delegateYield(_loop(i), "t0", 20);
6503
+ case 20:
6439
6504
  i++;
6440
- _context2.next = 9;
6505
+ _context2.next = 19;
6441
6506
  break;
6442
- case 11:
6507
+ case 21:
6443
6508
  fullLayout = [layoutObj].concat(widgetItems);
6444
6509
  if (!onCreateWorkspace) {
6445
- _context2.next = 13;
6510
+ _context2.next = 23;
6446
6511
  break;
6447
6512
  }
6448
- _context2.next = 12;
6513
+ _context2.next = 22;
6449
6514
  return onCreateWorkspace(fullLayout, theme, name.trim());
6450
- case 12:
6515
+ case 22:
6451
6516
  result = _context2.sent;
6452
- _context2.next = 15;
6517
+ _context2.next = 25;
6453
6518
  break;
6454
- case 13:
6455
- if (!((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.workspace) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.saveWorkspaceForApplication)) {
6456
- _context2.next = 15;
6519
+ case 23:
6520
+ if (!((_window$mainApi3 = window.mainApi) !== null && _window$mainApi3 !== void 0 && (_window$mainApi3 = _window$mainApi3.workspace) !== null && _window$mainApi3 !== void 0 && _window$mainApi3.saveWorkspaceForApplication)) {
6521
+ _context2.next = 25;
6457
6522
  break;
6458
6523
  }
6459
6524
  workspace = {
@@ -6462,32 +6527,32 @@ var WizardCustomizeStep = function WizardCustomizeStep(_ref) {
6462
6527
  themeKey: theme,
6463
6528
  layout: fullLayout
6464
6529
  };
6465
- _context2.next = 14;
6530
+ _context2.next = 24;
6466
6531
  return window.mainApi.workspace.saveWorkspaceForApplication(appId, workspace);
6467
- case 14:
6532
+ case 24:
6468
6533
  result = {
6469
6534
  success: true,
6470
6535
  workspace: workspace
6471
6536
  };
6472
- case 15:
6537
+ case 25:
6473
6538
  if (result) {
6474
6539
  setCreatedDashboard(result.workspace || result);
6475
6540
  }
6476
- _context2.next = 17;
6541
+ _context2.next = 27;
6477
6542
  break;
6478
- case 16:
6479
- _context2.prev = 16;
6480
- _t = _context2["catch"](1);
6481
- setError(_t.message || "Failed to create dashboard.");
6482
- case 17:
6483
- _context2.prev = 17;
6543
+ case 26:
6544
+ _context2.prev = 26;
6545
+ _t3 = _context2["catch"](1);
6546
+ setError(_t3.message || "Failed to create dashboard.");
6547
+ case 27:
6548
+ _context2.prev = 27;
6484
6549
  setCreating(false);
6485
- return _context2.finish(17);
6486
- case 18:
6550
+ return _context2.finish(27);
6551
+ case 28:
6487
6552
  case "end":
6488
6553
  return _context2.stop();
6489
6554
  }
6490
- }, _callee, null, [[1, 16, 17, 18]]);
6555
+ }, _callee, null, [[1, 26, 27, 28], [11, 16, 17, 18]]);
6491
6556
  })), [state, isPrebuilt, onInstallDashboard, onCreateWorkspace, appId]);
6492
6557
 
6493
6558
  // Expose handleCreate and creating state to parent via ref (DASH-183)
@@ -44154,7 +44219,8 @@ var useInstalledWidgets = function useInstalledWidgets() {
44154
44219
  source: "installed",
44155
44220
  providers: (_w$providers = w.providers) !== null && _w$providers !== void 0 && _w$providers.length ? w.providers : (cm === null || cm === void 0 ? void 0 : cm.providers) || [],
44156
44221
  workspace: w.workspace || (cm === null || cm === void 0 ? void 0 : cm.workspace) || null,
44157
- componentNames: w.componentNames || (cmKey ? [cmKey] : [])
44222
+ componentNames: w.componentNames || (cmKey ? [cmKey] : []),
44223
+ packageId: w.packageId || w.name
44158
44224
  };
44159
44225
  });
44160
44226
  case 3:
@@ -47835,55 +47901,6 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
47835
47901
  });
47836
47902
  };
47837
47903
 
47838
- var WELCOME_STORAGE_KEY = "dash:welcome-prompted";
47839
- function markPrompted() {
47840
- localStorage.setItem(WELCOME_STORAGE_KEY, "true");
47841
- }
47842
- var WelcomePrompt = function WelcomePrompt(_ref) {
47843
- var isOpen = _ref.isOpen,
47844
- onAccept = _ref.onAccept,
47845
- onDismiss = _ref.onDismiss;
47846
- var handleAccept = function handleAccept() {
47847
- markPrompted();
47848
- if (onAccept) onAccept();
47849
- };
47850
- var handleDismiss = function handleDismiss() {
47851
- markPrompted();
47852
- if (onDismiss) onDismiss();
47853
- };
47854
- return /*#__PURE__*/jsxs(Modal, {
47855
- isOpen: isOpen,
47856
- setIsOpen: handleDismiss,
47857
- width: "w-[520px]",
47858
- height: "h-auto",
47859
- children: [/*#__PURE__*/jsxs("div", {
47860
- className: "px-8 pt-8 pb-4 flex flex-col items-center text-center gap-4",
47861
- children: [/*#__PURE__*/jsx("div", {
47862
- className: "text-4xl opacity-60",
47863
- children: /*#__PURE__*/jsx(FontAwesomeIcon, {
47864
- icon: "table-cells-large"
47865
- })
47866
- }), /*#__PURE__*/jsx(SubHeading2, {
47867
- children: "Welcome to Dash!"
47868
- }), /*#__PURE__*/jsx(Paragraph2, {
47869
- className: "max-w-sm",
47870
- children: "Get started with a sample dashboard that showcases widgets for AI chat, notes, GitHub, Slack, Gmail, Calendar, and more \u2014 all in a ready-made 4x3 grid."
47871
- })]
47872
- }), /*#__PURE__*/jsx(Modal.Footer, {
47873
- children: /*#__PURE__*/jsxs("div", {
47874
- className: "flex flex-row gap-3 w-full justify-end",
47875
- children: [/*#__PURE__*/jsx(Button2, {
47876
- title: "Start Fresh",
47877
- onClick: handleDismiss
47878
- }), /*#__PURE__*/jsx(Button, {
47879
- title: "Load Sample Dashboard",
47880
- onClick: handleAccept
47881
- })]
47882
- })
47883
- })]
47884
- });
47885
- };
47886
-
47887
47904
  function ownKeys$1(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; }
47888
47905
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
47889
47906
  var DashboardStage = function DashboardStage(_ref) {
@@ -47898,21 +47915,18 @@ var DashboardStage = function DashboardStage(_ref) {
47898
47915
  _ref$popout = _ref.popout,
47899
47916
  popout = _ref$popout === void 0 ? false : _ref$popout,
47900
47917
  _ref$popoutWorkspaceI = _ref.popoutWorkspaceId,
47901
- popoutWorkspaceId = _ref$popoutWorkspaceI === void 0 ? null : _ref$popoutWorkspaceI,
47902
- _ref$showWelcomePromp = _ref.showWelcomePrompt,
47903
- showWelcomePrompt = _ref$showWelcomePromp === void 0 ? false : _ref$showWelcomePromp,
47904
- _ref$onAcceptWelcome = _ref.onAcceptWelcome,
47905
- onAcceptWelcome = _ref$onAcceptWelcome === void 0 ? null : _ref$onAcceptWelcome,
47906
- _ref$onDismissWelcome = _ref.onDismissWelcome,
47907
- onDismissWelcome = _ref$onDismissWelcome === void 0 ? null : _ref$onDismissWelcome;
47918
+ popoutWorkspaceId = _ref$popoutWorkspaceI === void 0 ? null : _ref$popoutWorkspaceI;
47919
+ _ref.showWelcomePrompt;
47920
+ _ref.onAcceptWelcome;
47921
+ _ref.onDismissWelcome;
47908
47922
  return /*#__PURE__*/jsx(Profiler, {
47909
47923
  id: "myapp",
47910
47924
  onRender: function onRender() {},
47911
- children: /*#__PURE__*/jsxs(DashboardWrapper, {
47925
+ children: /*#__PURE__*/jsx(DashboardWrapper, {
47912
47926
  dashApi: dashApi,
47913
47927
  credentials: credentials,
47914
47928
  backgroundColor: backgroundColor,
47915
- children: [/*#__PURE__*/jsx(DashboardStageInner, {
47929
+ children: /*#__PURE__*/jsx(DashboardStageInner, {
47916
47930
  dashApi: dashApi,
47917
47931
  credentials: credentials,
47918
47932
  workspace: workspace,
@@ -47920,11 +47934,7 @@ var DashboardStage = function DashboardStage(_ref) {
47920
47934
  backgroundColor: backgroundColor,
47921
47935
  popout: popout,
47922
47936
  popoutWorkspaceId: popoutWorkspaceId
47923
- }), /*#__PURE__*/jsx(WelcomePrompt, {
47924
- isOpen: showWelcomePrompt,
47925
- onAccept: onAcceptWelcome,
47926
- onDismiss: onDismissWelcome
47927
- })]
47937
+ })
47928
47938
  })
47929
47939
  });
47930
47940
  };
@@ -48984,6 +48994,55 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
48984
48994
  });
48985
48995
  };
48986
48996
 
48997
+ var WELCOME_STORAGE_KEY = "dash:welcome-prompted";
48998
+ function markPrompted() {
48999
+ localStorage.setItem(WELCOME_STORAGE_KEY, "true");
49000
+ }
49001
+ var WelcomePrompt = function WelcomePrompt(_ref) {
49002
+ var isOpen = _ref.isOpen,
49003
+ onAccept = _ref.onAccept,
49004
+ onDismiss = _ref.onDismiss;
49005
+ var handleAccept = function handleAccept() {
49006
+ markPrompted();
49007
+ if (onAccept) onAccept();
49008
+ };
49009
+ var handleDismiss = function handleDismiss() {
49010
+ markPrompted();
49011
+ if (onDismiss) onDismiss();
49012
+ };
49013
+ return /*#__PURE__*/jsxs(Modal, {
49014
+ isOpen: isOpen,
49015
+ setIsOpen: handleDismiss,
49016
+ width: "w-[520px]",
49017
+ height: "h-auto",
49018
+ children: [/*#__PURE__*/jsxs("div", {
49019
+ className: "px-8 pt-8 pb-4 flex flex-col items-center text-center gap-4",
49020
+ children: [/*#__PURE__*/jsx("div", {
49021
+ className: "text-4xl opacity-60",
49022
+ children: /*#__PURE__*/jsx(FontAwesomeIcon, {
49023
+ icon: "table-cells-large"
49024
+ })
49025
+ }), /*#__PURE__*/jsx(SubHeading2, {
49026
+ children: "Welcome to Dash!"
49027
+ }), /*#__PURE__*/jsx(Paragraph2, {
49028
+ className: "max-w-sm",
49029
+ children: "Get started with a sample dashboard that showcases widgets for AI chat, notes, GitHub, Slack, Gmail, Calendar, and more \u2014 all in a ready-made 4x3 grid."
49030
+ })]
49031
+ }), /*#__PURE__*/jsx(Modal.Footer, {
49032
+ children: /*#__PURE__*/jsxs("div", {
49033
+ className: "flex flex-row gap-3 w-full justify-end",
49034
+ children: [/*#__PURE__*/jsx(Button2, {
49035
+ title: "Start Fresh",
49036
+ onClick: handleDismiss
49037
+ }), /*#__PURE__*/jsx(Button, {
49038
+ title: "Load Sample Dashboard",
49039
+ onClick: handleAccept
49040
+ })]
49041
+ })
49042
+ })]
49043
+ });
49044
+ };
49045
+
48987
49046
  var DashboardFooter = function DashboardFooter(_ref) {
48988
49047
  var workspace = _ref.workspace,
48989
49048
  preview = _ref.preview;