@trops/dash-core 0.1.235 → 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/electron/index.js +109 -4
- package/dist/electron/index.js.map +1 -1
- package/dist/index.esm.js +323 -118
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +323 -118
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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$
|
|
2759
|
-
function _unsupportedIterableToArray$
|
|
2760
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
3560
|
-
function _unsupportedIterableToArray$
|
|
3561
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
5492
|
-
function _unsupportedIterableToArray$
|
|
5493
|
-
function _arrayLikeToArray$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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; //
|
|
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(
|
|
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 =
|
|
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
|
|
6497
|
+
case 19:
|
|
6433
6498
|
if (!(i < widgetOrder.length && i < cells.length)) {
|
|
6434
|
-
_context2.next =
|
|
6499
|
+
_context2.next = 21;
|
|
6435
6500
|
break;
|
|
6436
6501
|
}
|
|
6437
|
-
return _context2.delegateYield(_loop(i), "t0",
|
|
6438
|
-
case
|
|
6502
|
+
return _context2.delegateYield(_loop(i), "t0", 20);
|
|
6503
|
+
case 20:
|
|
6439
6504
|
i++;
|
|
6440
|
-
_context2.next =
|
|
6505
|
+
_context2.next = 19;
|
|
6441
6506
|
break;
|
|
6442
|
-
case
|
|
6507
|
+
case 21:
|
|
6443
6508
|
fullLayout = [layoutObj].concat(widgetItems);
|
|
6444
6509
|
if (!onCreateWorkspace) {
|
|
6445
|
-
_context2.next =
|
|
6510
|
+
_context2.next = 23;
|
|
6446
6511
|
break;
|
|
6447
6512
|
}
|
|
6448
|
-
_context2.next =
|
|
6513
|
+
_context2.next = 22;
|
|
6449
6514
|
return onCreateWorkspace(fullLayout, theme, name.trim());
|
|
6450
|
-
case
|
|
6515
|
+
case 22:
|
|
6451
6516
|
result = _context2.sent;
|
|
6452
|
-
_context2.next =
|
|
6517
|
+
_context2.next = 25;
|
|
6453
6518
|
break;
|
|
6454
|
-
case
|
|
6455
|
-
if (!((_window$
|
|
6456
|
-
_context2.next =
|
|
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 =
|
|
6530
|
+
_context2.next = 24;
|
|
6466
6531
|
return window.mainApi.workspace.saveWorkspaceForApplication(appId, workspace);
|
|
6467
|
-
case
|
|
6532
|
+
case 24:
|
|
6468
6533
|
result = {
|
|
6469
6534
|
success: true,
|
|
6470
6535
|
workspace: workspace
|
|
6471
6536
|
};
|
|
6472
|
-
case
|
|
6537
|
+
case 25:
|
|
6473
6538
|
if (result) {
|
|
6474
6539
|
setCreatedDashboard(result.workspace || result);
|
|
6475
6540
|
}
|
|
6476
|
-
_context2.next =
|
|
6541
|
+
_context2.next = 27;
|
|
6477
6542
|
break;
|
|
6478
|
-
case
|
|
6479
|
-
_context2.prev =
|
|
6480
|
-
|
|
6481
|
-
setError(
|
|
6482
|
-
case
|
|
6483
|
-
_context2.prev =
|
|
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(
|
|
6486
|
-
case
|
|
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)
|
|
@@ -43260,7 +43325,12 @@ var GeneralSection = function GeneralSection() {
|
|
|
43260
43325
|
|
|
43261
43326
|
var InstalledWidgetDetail = function InstalledWidgetDetail(_ref) {
|
|
43262
43327
|
var widget = _ref.widget,
|
|
43263
|
-
onDelete = _ref.onDelete
|
|
43328
|
+
onDelete = _ref.onDelete,
|
|
43329
|
+
_ref$updateInfo = _ref.updateInfo,
|
|
43330
|
+
updateInfo = _ref$updateInfo === void 0 ? null : _ref$updateInfo,
|
|
43331
|
+
onUpdate = _ref.onUpdate,
|
|
43332
|
+
_ref$isUpdating = _ref.isUpdating,
|
|
43333
|
+
isUpdating = _ref$isUpdating === void 0 ? false : _ref$isUpdating;
|
|
43264
43334
|
var _useContext = useContext(ThemeContext),
|
|
43265
43335
|
currentTheme = _useContext.currentTheme;
|
|
43266
43336
|
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
@@ -43293,7 +43363,19 @@ var InstalledWidgetDetail = function InstalledWidgetDetail(_ref) {
|
|
|
43293
43363
|
children: [/*#__PURE__*/jsx("span", {
|
|
43294
43364
|
className: "text-xs font-semibold opacity-50",
|
|
43295
43365
|
children: "VERSION"
|
|
43296
|
-
}), /*#__PURE__*/jsxs("span", {
|
|
43366
|
+
}), updateInfo ? /*#__PURE__*/jsxs("span", {
|
|
43367
|
+
className: "flex items-center gap-2 text-xs",
|
|
43368
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
43369
|
+
className: "px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-50 w-fit"),
|
|
43370
|
+
children: ["v", widget.version]
|
|
43371
|
+
}), /*#__PURE__*/jsx("span", {
|
|
43372
|
+
className: "opacity-40",
|
|
43373
|
+
children: "\u2192"
|
|
43374
|
+
}), /*#__PURE__*/jsxs("span", {
|
|
43375
|
+
className: "px-2 py-0.5 rounded bg-blue-900/30 text-blue-400 w-fit",
|
|
43376
|
+
children: ["v", updateInfo.latestVersion]
|
|
43377
|
+
})]
|
|
43378
|
+
}) : /*#__PURE__*/jsxs("span", {
|
|
43297
43379
|
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70 w-fit"),
|
|
43298
43380
|
children: ["v", widget.version]
|
|
43299
43381
|
})]
|
|
@@ -43361,7 +43443,14 @@ var InstalledWidgetDetail = function InstalledWidgetDetail(_ref) {
|
|
|
43361
43443
|
})]
|
|
43362
43444
|
}), widget.source !== "builtin" && /*#__PURE__*/jsxs("div", {
|
|
43363
43445
|
className: "flex-shrink-0 flex flex-row justify-end gap-2 px-6 py-4 border-t ".concat(currentTheme["border-primary-medium"] || "border-white/10"),
|
|
43364
|
-
children: [
|
|
43446
|
+
children: [updateInfo && /*#__PURE__*/jsx(Button, {
|
|
43447
|
+
title: isUpdating ? "Updating..." : "Update to v".concat(updateInfo.latestVersion),
|
|
43448
|
+
onClick: function onClick() {
|
|
43449
|
+
return onUpdate(widget.name);
|
|
43450
|
+
},
|
|
43451
|
+
disabled: isUpdating,
|
|
43452
|
+
size: "sm"
|
|
43453
|
+
}), widget.path && /*#__PURE__*/jsx(Button, {
|
|
43365
43454
|
title: "Open in Finder",
|
|
43366
43455
|
onClick: handleOpenInFinder,
|
|
43367
43456
|
size: "sm"
|
|
@@ -44130,7 +44219,8 @@ var useInstalledWidgets = function useInstalledWidgets() {
|
|
|
44130
44219
|
source: "installed",
|
|
44131
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) || [],
|
|
44132
44221
|
workspace: w.workspace || (cm === null || cm === void 0 ? void 0 : cm.workspace) || null,
|
|
44133
|
-
componentNames: w.componentNames || (cmKey ? [cmKey] : [])
|
|
44222
|
+
componentNames: w.componentNames || (cmKey ? [cmKey] : []),
|
|
44223
|
+
packageId: w.packageId || w.name
|
|
44134
44224
|
};
|
|
44135
44225
|
});
|
|
44136
44226
|
case 3:
|
|
@@ -44224,6 +44314,115 @@ var useInstalledWidgets = function useInstalledWidgets() {
|
|
|
44224
44314
|
};
|
|
44225
44315
|
};
|
|
44226
44316
|
|
|
44317
|
+
/**
|
|
44318
|
+
* useWidgetUpdates — checks the registry for newer versions of installed widgets
|
|
44319
|
+
* and provides a one-click update function.
|
|
44320
|
+
*
|
|
44321
|
+
* @param {Array} installedWidgets - Widgets from useInstalledWidgets()
|
|
44322
|
+
* @param {Function} onUpdated - Callback after a successful update (e.g. refresh)
|
|
44323
|
+
* @returns {{ updates: Map, isChecking: boolean, updateWidget: Function, isUpdating: string|null }}
|
|
44324
|
+
*/
|
|
44325
|
+
function useWidgetUpdates() {
|
|
44326
|
+
var installedWidgets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
44327
|
+
var onUpdated = arguments.length > 1 ? arguments[1] : undefined;
|
|
44328
|
+
var _useState = useState(new Map()),
|
|
44329
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
44330
|
+
updates = _useState2[0],
|
|
44331
|
+
setUpdates = _useState2[1];
|
|
44332
|
+
var _useState3 = useState(false),
|
|
44333
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
44334
|
+
isChecking = _useState4[0],
|
|
44335
|
+
setIsChecking = _useState4[1];
|
|
44336
|
+
var _useState5 = useState(null),
|
|
44337
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
44338
|
+
isUpdating = _useState6[0],
|
|
44339
|
+
setIsUpdating = _useState6[1];
|
|
44340
|
+
var checkedRef = useRef(false);
|
|
44341
|
+
|
|
44342
|
+
// Check for updates once when installed widgets are available
|
|
44343
|
+
useEffect(function () {
|
|
44344
|
+
var _window$mainApi;
|
|
44345
|
+
if (checkedRef.current) return;
|
|
44346
|
+
var installed = installedWidgets.filter(function (w) {
|
|
44347
|
+
return w.source === "installed" && w.version;
|
|
44348
|
+
});
|
|
44349
|
+
if (installed.length === 0) return;
|
|
44350
|
+
checkedRef.current = true;
|
|
44351
|
+
setIsChecking(true);
|
|
44352
|
+
var payload = installed.map(function (w) {
|
|
44353
|
+
return {
|
|
44354
|
+
name: w.name,
|
|
44355
|
+
version: w.version
|
|
44356
|
+
};
|
|
44357
|
+
});
|
|
44358
|
+
(_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.registry) === null || _window$mainApi === void 0 || _window$mainApi.checkUpdates(payload).then(function (results) {
|
|
44359
|
+
if (Array.isArray(results) && results.length > 0) {
|
|
44360
|
+
var map = new Map();
|
|
44361
|
+
results.forEach(function (r) {
|
|
44362
|
+
return map.set(r.name, r);
|
|
44363
|
+
});
|
|
44364
|
+
setUpdates(map);
|
|
44365
|
+
}
|
|
44366
|
+
})["catch"](function (err) {
|
|
44367
|
+
})["finally"](function () {
|
|
44368
|
+
setIsChecking(false);
|
|
44369
|
+
});
|
|
44370
|
+
}, [installedWidgets]);
|
|
44371
|
+
|
|
44372
|
+
// Update a single widget by downloading the latest version
|
|
44373
|
+
var updateWidget = useCallback(/*#__PURE__*/function () {
|
|
44374
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(name) {
|
|
44375
|
+
var info, resolvedUrl;
|
|
44376
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
44377
|
+
while (1) switch (_context.prev = _context.next) {
|
|
44378
|
+
case 0:
|
|
44379
|
+
info = updates.get(name);
|
|
44380
|
+
if (!(!info || !info.downloadUrl)) {
|
|
44381
|
+
_context.next = 1;
|
|
44382
|
+
break;
|
|
44383
|
+
}
|
|
44384
|
+
return _context.abrupt("return");
|
|
44385
|
+
case 1:
|
|
44386
|
+
setIsUpdating(name);
|
|
44387
|
+
_context.prev = 2;
|
|
44388
|
+
resolvedUrl = info.downloadUrl.replace(/\{version\}/g, info.latestVersion).replace(/\{name\}/g, name);
|
|
44389
|
+
_context.next = 3;
|
|
44390
|
+
return window.mainApi.widgets.install(name, resolvedUrl);
|
|
44391
|
+
case 3:
|
|
44392
|
+
// Remove from updates map on success
|
|
44393
|
+
setUpdates(function (prev) {
|
|
44394
|
+
var next = new Map(prev);
|
|
44395
|
+
next["delete"](name);
|
|
44396
|
+
return next;
|
|
44397
|
+
});
|
|
44398
|
+
if (onUpdated) onUpdated();
|
|
44399
|
+
_context.next = 5;
|
|
44400
|
+
break;
|
|
44401
|
+
case 4:
|
|
44402
|
+
_context.prev = 4;
|
|
44403
|
+
_context["catch"](2);
|
|
44404
|
+
case 5:
|
|
44405
|
+
_context.prev = 5;
|
|
44406
|
+
setIsUpdating(null);
|
|
44407
|
+
return _context.finish(5);
|
|
44408
|
+
case 6:
|
|
44409
|
+
case "end":
|
|
44410
|
+
return _context.stop();
|
|
44411
|
+
}
|
|
44412
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
44413
|
+
}));
|
|
44414
|
+
return function (_x) {
|
|
44415
|
+
return _ref.apply(this, arguments);
|
|
44416
|
+
};
|
|
44417
|
+
}(), [updates, onUpdated]);
|
|
44418
|
+
return {
|
|
44419
|
+
updates: updates,
|
|
44420
|
+
isChecking: isChecking,
|
|
44421
|
+
updateWidget: updateWidget,
|
|
44422
|
+
isUpdating: isUpdating
|
|
44423
|
+
};
|
|
44424
|
+
}
|
|
44425
|
+
|
|
44227
44426
|
function ownKeys$4(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; }
|
|
44228
44427
|
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
44229
44428
|
var WidgetsSection = function WidgetsSection(_ref) {
|
|
@@ -44245,6 +44444,10 @@ var WidgetsSection = function WidgetsSection(_ref) {
|
|
|
44245
44444
|
error = _useInstalledWidgets.error,
|
|
44246
44445
|
uninstallWidget = _useInstalledWidgets.uninstallWidget,
|
|
44247
44446
|
refresh = _useInstalledWidgets.refresh;
|
|
44447
|
+
var _useWidgetUpdates = useWidgetUpdates(widgets, refresh),
|
|
44448
|
+
updates = _useWidgetUpdates.updates,
|
|
44449
|
+
updateWidget = _useWidgetUpdates.updateWidget,
|
|
44450
|
+
isUpdating = _useWidgetUpdates.isUpdating;
|
|
44248
44451
|
var _useState = useState(null),
|
|
44249
44452
|
_useState2 = _slicedToArray(_useState, 2),
|
|
44250
44453
|
selectedWidgetName = _useState2[0],
|
|
@@ -44614,6 +44817,9 @@ var WidgetsSection = function WidgetsSection(_ref) {
|
|
|
44614
44817
|
className: "flex items-center gap-2",
|
|
44615
44818
|
children: [widget.displayName || widget.name, widget.source === "builtin" && /*#__PURE__*/jsx(Tag3, {
|
|
44616
44819
|
text: "Built-in"
|
|
44820
|
+
}), updates.has(widget.name) && /*#__PURE__*/jsx("span", {
|
|
44821
|
+
className: "text-[10px] text-blue-400 font-medium",
|
|
44822
|
+
children: "Update"
|
|
44617
44823
|
})]
|
|
44618
44824
|
})
|
|
44619
44825
|
}, widget.name);
|
|
@@ -44708,9 +44914,9 @@ var WidgetsSection = function WidgetsSection(_ref) {
|
|
|
44708
44914
|
})]
|
|
44709
44915
|
}), /*#__PURE__*/jsx(Sidebar.Content, {
|
|
44710
44916
|
children: listBody
|
|
44711
|
-
}), !isLoading && !error && widgets.length > 0 && /*#__PURE__*/
|
|
44917
|
+
}), !isLoading && !error && widgets.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
44712
44918
|
className: "px-3 py-2 text-[10px] opacity-40 flex-shrink-0 border-t border-white/10",
|
|
44713
|
-
children: function () {
|
|
44919
|
+
children: [function () {
|
|
44714
44920
|
var builtinCount = widgets.filter(function (w) {
|
|
44715
44921
|
return w.source === "builtin";
|
|
44716
44922
|
}).length;
|
|
@@ -44721,7 +44927,10 @@ var WidgetsSection = function WidgetsSection(_ref) {
|
|
|
44721
44927
|
if (builtinCount > 0) parts.push("".concat(builtinCount, " built-in"));
|
|
44722
44928
|
if (installedCount > 0) parts.push("".concat(installedCount, " installed"));
|
|
44723
44929
|
return parts.join(", ");
|
|
44724
|
-
}()
|
|
44930
|
+
}(), updates.size > 0 && /*#__PURE__*/jsxs("span", {
|
|
44931
|
+
className: "text-blue-400 ml-1",
|
|
44932
|
+
children: [" \xB7 ", updates.size, " update", updates.size !== 1 ? "s" : "", " available"]
|
|
44933
|
+
})]
|
|
44725
44934
|
})]
|
|
44726
44935
|
});
|
|
44727
44936
|
|
|
@@ -44785,7 +44994,10 @@ var WidgetsSection = function WidgetsSection(_ref) {
|
|
|
44785
44994
|
widget: selectedWidget,
|
|
44786
44995
|
onDelete: function onDelete(w) {
|
|
44787
44996
|
return handleDeleteRequest(w);
|
|
44788
|
-
}
|
|
44997
|
+
},
|
|
44998
|
+
updateInfo: updates.get(selectedWidget === null || selectedWidget === void 0 ? void 0 : selectedWidget.name) || null,
|
|
44999
|
+
onUpdate: updateWidget,
|
|
45000
|
+
isUpdating: isUpdating === (selectedWidget === null || selectedWidget === void 0 ? void 0 : selectedWidget.name)
|
|
44789
45001
|
});
|
|
44790
45002
|
}
|
|
44791
45003
|
|
|
@@ -47689,55 +47901,6 @@ var WidgetSidebar = function WidgetSidebar(_ref4) {
|
|
|
47689
47901
|
});
|
|
47690
47902
|
};
|
|
47691
47903
|
|
|
47692
|
-
var WELCOME_STORAGE_KEY = "dash:welcome-prompted";
|
|
47693
|
-
function markPrompted() {
|
|
47694
|
-
localStorage.setItem(WELCOME_STORAGE_KEY, "true");
|
|
47695
|
-
}
|
|
47696
|
-
var WelcomePrompt = function WelcomePrompt(_ref) {
|
|
47697
|
-
var isOpen = _ref.isOpen,
|
|
47698
|
-
onAccept = _ref.onAccept,
|
|
47699
|
-
onDismiss = _ref.onDismiss;
|
|
47700
|
-
var handleAccept = function handleAccept() {
|
|
47701
|
-
markPrompted();
|
|
47702
|
-
if (onAccept) onAccept();
|
|
47703
|
-
};
|
|
47704
|
-
var handleDismiss = function handleDismiss() {
|
|
47705
|
-
markPrompted();
|
|
47706
|
-
if (onDismiss) onDismiss();
|
|
47707
|
-
};
|
|
47708
|
-
return /*#__PURE__*/jsxs(Modal, {
|
|
47709
|
-
isOpen: isOpen,
|
|
47710
|
-
setIsOpen: handleDismiss,
|
|
47711
|
-
width: "w-[520px]",
|
|
47712
|
-
height: "h-auto",
|
|
47713
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
47714
|
-
className: "px-8 pt-8 pb-4 flex flex-col items-center text-center gap-4",
|
|
47715
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
47716
|
-
className: "text-4xl opacity-60",
|
|
47717
|
-
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
47718
|
-
icon: "table-cells-large"
|
|
47719
|
-
})
|
|
47720
|
-
}), /*#__PURE__*/jsx(SubHeading2, {
|
|
47721
|
-
children: "Welcome to Dash!"
|
|
47722
|
-
}), /*#__PURE__*/jsx(Paragraph2, {
|
|
47723
|
-
className: "max-w-sm",
|
|
47724
|
-
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."
|
|
47725
|
-
})]
|
|
47726
|
-
}), /*#__PURE__*/jsx(Modal.Footer, {
|
|
47727
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
47728
|
-
className: "flex flex-row gap-3 w-full justify-end",
|
|
47729
|
-
children: [/*#__PURE__*/jsx(Button2, {
|
|
47730
|
-
title: "Start Fresh",
|
|
47731
|
-
onClick: handleDismiss
|
|
47732
|
-
}), /*#__PURE__*/jsx(Button, {
|
|
47733
|
-
title: "Load Sample Dashboard",
|
|
47734
|
-
onClick: handleAccept
|
|
47735
|
-
})]
|
|
47736
|
-
})
|
|
47737
|
-
})]
|
|
47738
|
-
});
|
|
47739
|
-
};
|
|
47740
|
-
|
|
47741
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; }
|
|
47742
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; }
|
|
47743
47906
|
var DashboardStage = function DashboardStage(_ref) {
|
|
@@ -47752,21 +47915,18 @@ var DashboardStage = function DashboardStage(_ref) {
|
|
|
47752
47915
|
_ref$popout = _ref.popout,
|
|
47753
47916
|
popout = _ref$popout === void 0 ? false : _ref$popout,
|
|
47754
47917
|
_ref$popoutWorkspaceI = _ref.popoutWorkspaceId,
|
|
47755
|
-
popoutWorkspaceId = _ref$popoutWorkspaceI === void 0 ? null : _ref$popoutWorkspaceI
|
|
47756
|
-
_ref
|
|
47757
|
-
|
|
47758
|
-
_ref
|
|
47759
|
-
onAcceptWelcome = _ref$onAcceptWelcome === void 0 ? null : _ref$onAcceptWelcome,
|
|
47760
|
-
_ref$onDismissWelcome = _ref.onDismissWelcome,
|
|
47761
|
-
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;
|
|
47762
47922
|
return /*#__PURE__*/jsx(Profiler, {
|
|
47763
47923
|
id: "myapp",
|
|
47764
47924
|
onRender: function onRender() {},
|
|
47765
|
-
children: /*#__PURE__*/
|
|
47925
|
+
children: /*#__PURE__*/jsx(DashboardWrapper, {
|
|
47766
47926
|
dashApi: dashApi,
|
|
47767
47927
|
credentials: credentials,
|
|
47768
47928
|
backgroundColor: backgroundColor,
|
|
47769
|
-
children:
|
|
47929
|
+
children: /*#__PURE__*/jsx(DashboardStageInner, {
|
|
47770
47930
|
dashApi: dashApi,
|
|
47771
47931
|
credentials: credentials,
|
|
47772
47932
|
workspace: workspace,
|
|
@@ -47774,11 +47934,7 @@ var DashboardStage = function DashboardStage(_ref) {
|
|
|
47774
47934
|
backgroundColor: backgroundColor,
|
|
47775
47935
|
popout: popout,
|
|
47776
47936
|
popoutWorkspaceId: popoutWorkspaceId
|
|
47777
|
-
})
|
|
47778
|
-
isOpen: showWelcomePrompt,
|
|
47779
|
-
onAccept: onAcceptWelcome,
|
|
47780
|
-
onDismiss: onDismissWelcome
|
|
47781
|
-
})]
|
|
47937
|
+
})
|
|
47782
47938
|
})
|
|
47783
47939
|
});
|
|
47784
47940
|
};
|
|
@@ -48838,6 +48994,55 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
|
|
|
48838
48994
|
});
|
|
48839
48995
|
};
|
|
48840
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
|
+
|
|
48841
49046
|
var DashboardFooter = function DashboardFooter(_ref) {
|
|
48842
49047
|
var workspace = _ref.workspace,
|
|
48843
49048
|
preview = _ref.preview;
|