@trops/dash-core 0.1.104 → 0.1.106
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 +104 -13
- package/dist/electron/index.js.map +1 -1
- package/dist/index.esm.js +161 -34
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +161 -34
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -31077,13 +31077,16 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
|
|
|
31077
31077
|
children: authorName || "—"
|
|
31078
31078
|
})]
|
|
31079
31079
|
}), preview && preview.componentNames && preview.componentNames.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
31080
|
-
|
|
31081
|
-
|
|
31082
|
-
|
|
31083
|
-
|
|
31084
|
-
|
|
31085
|
-
|
|
31086
|
-
|
|
31080
|
+
children: [/*#__PURE__*/jsx("label", {
|
|
31081
|
+
className: "block text-sm font-medium opacity-70 mb-2",
|
|
31082
|
+
children: "Widgets Included"
|
|
31083
|
+
}), /*#__PURE__*/jsx("div", {
|
|
31084
|
+
className: "flex flex-wrap gap-1.5",
|
|
31085
|
+
children: preview.componentNames.map(function (name) {
|
|
31086
|
+
return /*#__PURE__*/jsx(Tag3, {
|
|
31087
|
+
text: name
|
|
31088
|
+
}, name);
|
|
31089
|
+
})
|
|
31087
31090
|
})]
|
|
31088
31091
|
}), /*#__PURE__*/jsx(TextArea, {
|
|
31089
31092
|
label: "Description",
|
|
@@ -31175,8 +31178,13 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
|
|
|
31175
31178
|
children: [/*#__PURE__*/jsx("span", {
|
|
31176
31179
|
className: "opacity-50 w-20 flex-shrink-0",
|
|
31177
31180
|
children: "Widgets"
|
|
31178
|
-
}), /*#__PURE__*/jsx("
|
|
31179
|
-
|
|
31181
|
+
}), /*#__PURE__*/jsx("div", {
|
|
31182
|
+
className: "flex flex-wrap gap-1",
|
|
31183
|
+
children: preview.componentNames.map(function (name) {
|
|
31184
|
+
return /*#__PURE__*/jsx(Tag3, {
|
|
31185
|
+
text: name
|
|
31186
|
+
}, name);
|
|
31187
|
+
})
|
|
31180
31188
|
})]
|
|
31181
31189
|
})]
|
|
31182
31190
|
})]
|
|
@@ -31248,12 +31256,22 @@ var PublishDashboardModal = function PublishDashboardModal(_ref) {
|
|
|
31248
31256
|
className: "text-xs text-amber-300/90",
|
|
31249
31257
|
children: "The following widgets are not currently on the registry. This may be intentional if they are private. Dashboards referencing these widgets can only be installed by users who already have them."
|
|
31250
31258
|
})]
|
|
31251
|
-
}), /*#__PURE__*/jsx("
|
|
31252
|
-
className: "
|
|
31259
|
+
}), /*#__PURE__*/jsx("div", {
|
|
31260
|
+
className: "space-y-2 mt-1",
|
|
31253
31261
|
children: result.warnings.map(function (w) {
|
|
31254
|
-
return /*#__PURE__*/
|
|
31255
|
-
children:
|
|
31256
|
-
|
|
31262
|
+
return /*#__PURE__*/jsxs("div", {
|
|
31263
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
31264
|
+
className: "text-xs font-semibold opacity-60",
|
|
31265
|
+
children: w["package"]
|
|
31266
|
+
}), /*#__PURE__*/jsx("div", {
|
|
31267
|
+
className: "flex flex-wrap gap-1 mt-1",
|
|
31268
|
+
children: w.widgets.map(function (name) {
|
|
31269
|
+
return /*#__PURE__*/jsx(Tag3, {
|
|
31270
|
+
text: name
|
|
31271
|
+
}, name);
|
|
31272
|
+
})
|
|
31273
|
+
})]
|
|
31274
|
+
}, w["package"]);
|
|
31257
31275
|
})
|
|
31258
31276
|
})]
|
|
31259
31277
|
}), result.registryCheckFailed && /*#__PURE__*/jsx("div", {
|
|
@@ -36366,6 +36384,23 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
|
|
|
36366
36384
|
}, idx);
|
|
36367
36385
|
})
|
|
36368
36386
|
})]
|
|
36387
|
+
}), widget.appOrigin && /*#__PURE__*/jsxs("div", {
|
|
36388
|
+
className: "flex items-center gap-1.5 text-xs opacity-50",
|
|
36389
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36390
|
+
icon: "laptop",
|
|
36391
|
+
className: "h-3 w-3"
|
|
36392
|
+
}), /*#__PURE__*/jsxs("span", {
|
|
36393
|
+
children: ["Built for ", widget.appOrigin]
|
|
36394
|
+
})]
|
|
36395
|
+
}), widget.missingApis && widget.missingApis.length > 0 && /*#__PURE__*/jsx("div", {
|
|
36396
|
+
className: "p-2 rounded bg-yellow-900/30 border border-yellow-700",
|
|
36397
|
+
children: /*#__PURE__*/jsxs("p", {
|
|
36398
|
+
className: "text-xs text-yellow-400",
|
|
36399
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36400
|
+
icon: "triangle-exclamation",
|
|
36401
|
+
className: "mr-1"
|
|
36402
|
+
}), "Incompatible \u2014 requires", " ", widget.missingApis.join(", "), " API", widget.missingApis.length !== 1 ? "s" : ""]
|
|
36403
|
+
})
|
|
36369
36404
|
}), widget.repository && /*#__PURE__*/jsxs("div", {
|
|
36370
36405
|
children: [/*#__PURE__*/jsx("span", {
|
|
36371
36406
|
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
@@ -36411,6 +36446,10 @@ function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
36411
36446
|
* Extracted from EnhancedWidgetDropdown so the same logic can power the
|
|
36412
36447
|
* Discover tab inside AppSettingsModal (and anywhere else).
|
|
36413
36448
|
*
|
|
36449
|
+
* Options:
|
|
36450
|
+
* filterByCapabilities – if true (default), only show packages compatible
|
|
36451
|
+
* with the app's API capabilities
|
|
36452
|
+
*
|
|
36414
36453
|
* Returns:
|
|
36415
36454
|
* packages – raw package objects from the registry
|
|
36416
36455
|
* flatWidgets – flattened widget entries with `isRegistry: true`
|
|
@@ -36421,8 +36460,13 @@ function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
36421
36460
|
* installError – install error string (or null)
|
|
36422
36461
|
* search() – manually trigger a search
|
|
36423
36462
|
* installPackage(widget) – install a specific registry widget
|
|
36463
|
+
* showAllPackages / setShowAllPackages – toggle to show incompatible packages
|
|
36464
|
+
* appCapabilities – the app's API namespaces
|
|
36424
36465
|
*/
|
|
36425
36466
|
var useRegistrySearch = function useRegistrySearch() {
|
|
36467
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
36468
|
+
_ref$filterByCapabili = _ref.filterByCapabilities,
|
|
36469
|
+
filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
|
|
36426
36470
|
var _useState = useState(false),
|
|
36427
36471
|
_useState2 = _slicedToArray(_useState, 2),
|
|
36428
36472
|
isLoading = _useState2[0],
|
|
@@ -36451,10 +36495,22 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36451
36495
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
36452
36496
|
installError = _useState12[0],
|
|
36453
36497
|
setInstallError = _useState12[1];
|
|
36498
|
+
var _useState13 = useState(false),
|
|
36499
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
36500
|
+
showAllPackages = _useState14[0],
|
|
36501
|
+
setShowAllPackages = _useState14[1];
|
|
36502
|
+
|
|
36503
|
+
// Discover app capabilities from window.mainApi
|
|
36504
|
+
var appCapabilities = useMemo(function () {
|
|
36505
|
+
if (typeof window !== "undefined" && window.mainApi) {
|
|
36506
|
+
return Object.keys(window.mainApi);
|
|
36507
|
+
}
|
|
36508
|
+
return [];
|
|
36509
|
+
}, []);
|
|
36454
36510
|
var search = useCallback(/*#__PURE__*/function () {
|
|
36455
|
-
var
|
|
36511
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
|
|
36456
36512
|
var _window$mainApi;
|
|
36457
|
-
var result, pkgs, widgets, _iterator, _step, pkg, _iterator2, _step2, widget, _t;
|
|
36513
|
+
var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
|
|
36458
36514
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
36459
36515
|
while (1) switch (_context.prev = _context.next) {
|
|
36460
36516
|
case 0:
|
|
@@ -36469,23 +36525,71 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36469
36525
|
setIsLoading(true);
|
|
36470
36526
|
setError(null);
|
|
36471
36527
|
_context.prev = 2;
|
|
36528
|
+
filters = {};
|
|
36529
|
+
if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
|
|
36530
|
+
filters.appCapabilities = appCapabilities;
|
|
36531
|
+
}
|
|
36472
36532
|
_context.next = 3;
|
|
36473
|
-
return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery,
|
|
36533
|
+
return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
|
|
36474
36534
|
case 3:
|
|
36475
36535
|
result = _context.sent;
|
|
36476
36536
|
pkgs = result.packages || [];
|
|
36477
36537
|
setPackages(pkgs);
|
|
36478
36538
|
|
|
36479
36539
|
// Flatten packages into widget entries
|
|
36540
|
+
capSet = new Set(appCapabilities.map(function (c) {
|
|
36541
|
+
return c.toLowerCase();
|
|
36542
|
+
}));
|
|
36480
36543
|
widgets = [];
|
|
36481
36544
|
_iterator = _createForOfIteratorHelper$2(pkgs);
|
|
36482
36545
|
try {
|
|
36483
36546
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
36484
36547
|
pkg = _step.value;
|
|
36485
|
-
|
|
36548
|
+
// Compute missing APIs for the entire package
|
|
36549
|
+
allApiProviders = [];
|
|
36550
|
+
_iterator2 = _createForOfIteratorHelper$2(pkg.providers || []);
|
|
36486
36551
|
try {
|
|
36487
36552
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
36488
|
-
|
|
36553
|
+
p = _step2.value;
|
|
36554
|
+
if (p.providerClass === "api" && p.required !== false) {
|
|
36555
|
+
allApiProviders.push(p.type);
|
|
36556
|
+
}
|
|
36557
|
+
}
|
|
36558
|
+
} catch (err) {
|
|
36559
|
+
_iterator2.e(err);
|
|
36560
|
+
} finally {
|
|
36561
|
+
_iterator2.f();
|
|
36562
|
+
}
|
|
36563
|
+
_iterator3 = _createForOfIteratorHelper$2(pkg.widgets || []);
|
|
36564
|
+
try {
|
|
36565
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
36566
|
+
w = _step3.value;
|
|
36567
|
+
_iterator5 = _createForOfIteratorHelper$2(w.providers || []);
|
|
36568
|
+
try {
|
|
36569
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
36570
|
+
_p = _step5.value;
|
|
36571
|
+
if (_p.providerClass === "api" && _p.required !== false) {
|
|
36572
|
+
allApiProviders.push(_p.type);
|
|
36573
|
+
}
|
|
36574
|
+
}
|
|
36575
|
+
} catch (err) {
|
|
36576
|
+
_iterator5.e(err);
|
|
36577
|
+
} finally {
|
|
36578
|
+
_iterator5.f();
|
|
36579
|
+
}
|
|
36580
|
+
}
|
|
36581
|
+
} catch (err) {
|
|
36582
|
+
_iterator3.e(err);
|
|
36583
|
+
} finally {
|
|
36584
|
+
_iterator3.f();
|
|
36585
|
+
}
|
|
36586
|
+
missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
|
|
36587
|
+
return !capSet.has(api.toLowerCase());
|
|
36588
|
+
});
|
|
36589
|
+
_iterator4 = _createForOfIteratorHelper$2(pkg.widgets || []);
|
|
36590
|
+
try {
|
|
36591
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
36592
|
+
widget = _step4.value;
|
|
36489
36593
|
widgets.push({
|
|
36490
36594
|
key: "".concat(pkg.name, "/").concat(widget.name),
|
|
36491
36595
|
name: widget.displayName || widget.name,
|
|
@@ -36503,13 +36607,16 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36503
36607
|
downloadUrl: pkg.downloadUrl || "",
|
|
36504
36608
|
repository: pkg.repository || "",
|
|
36505
36609
|
publishedAt: pkg.publishedAt || "",
|
|
36506
|
-
packageWidgets: pkg.widgets || []
|
|
36610
|
+
packageWidgets: pkg.widgets || [],
|
|
36611
|
+
appOrigin: pkg.appOrigin || null,
|
|
36612
|
+
packageProviders: pkg.providers || [],
|
|
36613
|
+
missingApis: missingApis
|
|
36507
36614
|
});
|
|
36508
36615
|
}
|
|
36509
36616
|
} catch (err) {
|
|
36510
|
-
|
|
36617
|
+
_iterator4.e(err);
|
|
36511
36618
|
} finally {
|
|
36512
|
-
|
|
36619
|
+
_iterator4.f();
|
|
36513
36620
|
}
|
|
36514
36621
|
}
|
|
36515
36622
|
} catch (err) {
|
|
@@ -36537,9 +36644,9 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36537
36644
|
}, _callee, null, [[2, 4, 5, 6]]);
|
|
36538
36645
|
}));
|
|
36539
36646
|
return function (_x) {
|
|
36540
|
-
return
|
|
36647
|
+
return _ref2.apply(this, arguments);
|
|
36541
36648
|
};
|
|
36542
|
-
}(), [searchQuery]);
|
|
36649
|
+
}(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
|
|
36543
36650
|
|
|
36544
36651
|
// Debounce search on query changes (300ms)
|
|
36545
36652
|
useEffect(function () {
|
|
@@ -36550,9 +36657,9 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36550
36657
|
return clearTimeout(timer);
|
|
36551
36658
|
};
|
|
36552
36659
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36553
|
-
}, [searchQuery]);
|
|
36660
|
+
}, [searchQuery, showAllPackages]);
|
|
36554
36661
|
var installPackage = useCallback(/*#__PURE__*/function () {
|
|
36555
|
-
var
|
|
36662
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
|
|
36556
36663
|
var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
|
|
36557
36664
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
36558
36665
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -36588,7 +36695,7 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36588
36695
|
}, _callee2, null, [[2, 4, 5, 6]]);
|
|
36589
36696
|
}));
|
|
36590
36697
|
return function (_x2) {
|
|
36591
|
-
return
|
|
36698
|
+
return _ref3.apply(this, arguments);
|
|
36592
36699
|
};
|
|
36593
36700
|
}(), []);
|
|
36594
36701
|
var retry = useCallback(function () {
|
|
@@ -36605,7 +36712,10 @@ var useRegistrySearch = function useRegistrySearch() {
|
|
|
36605
36712
|
installError: installError,
|
|
36606
36713
|
search: search,
|
|
36607
36714
|
installPackage: installPackage,
|
|
36608
|
-
retry: retry
|
|
36715
|
+
retry: retry,
|
|
36716
|
+
showAllPackages: showAllPackages,
|
|
36717
|
+
setShowAllPackages: setShowAllPackages,
|
|
36718
|
+
appCapabilities: appCapabilities
|
|
36609
36719
|
};
|
|
36610
36720
|
};
|
|
36611
36721
|
|
|
@@ -36631,7 +36741,9 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
36631
36741
|
isInstalling = _useRegistrySearch.isInstalling,
|
|
36632
36742
|
installError = _useRegistrySearch.installError,
|
|
36633
36743
|
installPackage = _useRegistrySearch.installPackage,
|
|
36634
|
-
retry = _useRegistrySearch.retry
|
|
36744
|
+
retry = _useRegistrySearch.retry,
|
|
36745
|
+
showAllPackages = _useRegistrySearch.showAllPackages,
|
|
36746
|
+
setShowAllPackages = _useRegistrySearch.setShowAllPackages;
|
|
36635
36747
|
var _useState = useState(null),
|
|
36636
36748
|
_useState2 = _slicedToArray(_useState, 2),
|
|
36637
36749
|
selectedPackageName = _useState2[0],
|
|
@@ -36796,10 +36908,15 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
36796
36908
|
className: "space-y-1",
|
|
36797
36909
|
children: packages.map(function (pkg) {
|
|
36798
36910
|
var widgetCount = (pkg.widgets || []).length;
|
|
36911
|
+
// Check if this package has incompatible API dependencies
|
|
36912
|
+
var pkgWidget = flatWidgets.find(function (w) {
|
|
36913
|
+
return w.packageName === pkg.name;
|
|
36914
|
+
});
|
|
36915
|
+
var hasIncompatible = (pkgWidget === null || pkgWidget === void 0 ? void 0 : pkgWidget.missingApis) && pkgWidget.missingApis.length > 0;
|
|
36799
36916
|
return /*#__PURE__*/jsx(Sidebar.Item, {
|
|
36800
36917
|
icon: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
36801
|
-
icon: "cube",
|
|
36802
|
-
className: "h-3.5 w-3.5"
|
|
36918
|
+
icon: hasIncompatible ? "triangle-exclamation" : "cube",
|
|
36919
|
+
className: "h-3.5 w-3.5 ".concat(hasIncompatible ? "text-yellow-500" : "")
|
|
36803
36920
|
}),
|
|
36804
36921
|
onClick: function onClick() {
|
|
36805
36922
|
return setSelectedPackageName(pkg.name);
|
|
@@ -36825,14 +36942,24 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
|
|
|
36825
36942
|
children: "Back"
|
|
36826
36943
|
})]
|
|
36827
36944
|
})
|
|
36828
|
-
}), /*#__PURE__*/
|
|
36945
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
36829
36946
|
className: "flex-shrink-0 px-4 py-3",
|
|
36830
|
-
children: /*#__PURE__*/jsx(SearchInput, {
|
|
36947
|
+
children: [/*#__PURE__*/jsx(SearchInput, {
|
|
36831
36948
|
value: searchQuery,
|
|
36832
36949
|
onChange: setSearchQuery,
|
|
36833
36950
|
placeholder: "Search packages...",
|
|
36834
36951
|
inputClassName: "py-1.5 text-xs"
|
|
36835
|
-
})
|
|
36952
|
+
}), /*#__PURE__*/jsxs("label", {
|
|
36953
|
+
className: "flex items-center gap-1.5 mt-2 text-xs opacity-50 cursor-pointer select-none",
|
|
36954
|
+
children: [/*#__PURE__*/jsx("input", {
|
|
36955
|
+
type: "checkbox",
|
|
36956
|
+
checked: showAllPackages,
|
|
36957
|
+
onChange: function onChange(e) {
|
|
36958
|
+
return setShowAllPackages(e.target.checked);
|
|
36959
|
+
},
|
|
36960
|
+
className: "rounded"
|
|
36961
|
+
}), "Show all packages"]
|
|
36962
|
+
})]
|
|
36836
36963
|
}), /*#__PURE__*/jsx("div", {
|
|
36837
36964
|
className: "flex-1 min-h-0 overflow-y-auto px-2",
|
|
36838
36965
|
children: listBody
|