@trops/dash-core 0.1.245 → 0.1.249
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 +152 -27
- package/dist/electron/index.js.map +1 -1
- package/dist/index.esm.js +633 -223
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +591 -189
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import * as DashReact from '@trops/dash-react';
|
|
3
|
-
import { isObject, ThemeContext, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, FontAwesomeIcon, Tag, Sidebar, Paragraph,
|
|
3
|
+
import { isObject, ThemeContext, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, FontAwesomeIcon, Tag, Modal, Sidebar, Paragraph, Panel, Stepper, Tag2, Tag3, Card2, Card3, Heading3, MenuItem3, FormLabel, SelectMenu, Switch, SelectInput, CodeEditorInline, SettingsModal, SubHeading2, tailwindHeightFractions, Menu3, Panel3, DropdownPanel, MenuItem2, ButtonIcon2, DragComponent, ConfirmationModal, DropComponent, getStyleName, capitalizeFirstLetter, colorTypes, getCSSStyleForClassname, Panel2, Heading2, SubHeading, Paragraph2, Paragraph3, Button2, Button3, MenuItem, ButtonIcon3, DashPanel, colorNames, shades, themeVariants, Tabs3, DataList, Checkbox, StatCard, Card, Tabs, Accordion, Alert, Toast, ProgressBar, Toggle, Breadcrumbs, Tabs2, Accordion2, Alert2, Toast2, ProgressBar2, Toggle2, Breadcrumbs2, Accordion3, Alert3, Toast3, ProgressBar3, Toggle3, Breadcrumbs3, ThemeFromUrlPane, TextArea, Icon2, AlgoliaSearchBox, CommandPalette, EmptyState, Navbar, withRouter, Menu as Menu$1 } from '@trops/dash-react';
|
|
4
4
|
export * from '@trops/dash-react';
|
|
5
5
|
export { ThemeContext } from '@trops/dash-react';
|
|
6
6
|
import _typeof from '@babel/runtime/helpers/typeof';
|
|
@@ -3556,6 +3556,102 @@ var StarRating = function StarRating(_ref) {
|
|
|
3556
3556
|
});
|
|
3557
3557
|
};
|
|
3558
3558
|
|
|
3559
|
+
var InstallProgressModal = function InstallProgressModal(_ref) {
|
|
3560
|
+
var isOpen = _ref.isOpen,
|
|
3561
|
+
setIsOpen = _ref.setIsOpen,
|
|
3562
|
+
_ref$widgets = _ref.widgets,
|
|
3563
|
+
widgets = _ref$widgets === void 0 ? [] : _ref$widgets,
|
|
3564
|
+
_ref$isComplete = _ref.isComplete,
|
|
3565
|
+
isComplete = _ref$isComplete === void 0 ? false : _ref$isComplete,
|
|
3566
|
+
onDone = _ref.onDone;
|
|
3567
|
+
var _useContext = useContext(ThemeContext),
|
|
3568
|
+
currentTheme = _useContext.currentTheme;
|
|
3569
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
3570
|
+
grow: false
|
|
3571
|
+
});
|
|
3572
|
+
|
|
3573
|
+
// Prevent dismissal while installation is in progress
|
|
3574
|
+
var guardedSetIsOpen = function guardedSetIsOpen(val) {
|
|
3575
|
+
if (isComplete) setIsOpen(val);
|
|
3576
|
+
};
|
|
3577
|
+
var doneCount = widgets.filter(function (w) {
|
|
3578
|
+
return w.status === "installed" || w.status === "already-installed" || w.status === "failed";
|
|
3579
|
+
}).length;
|
|
3580
|
+
function statusIcon(status) {
|
|
3581
|
+
switch (status) {
|
|
3582
|
+
case "downloading":
|
|
3583
|
+
return /*#__PURE__*/jsx("div", {
|
|
3584
|
+
className: "animate-spin rounded-full h-4 w-4 border-b-2 border-blue-400 flex-shrink-0"
|
|
3585
|
+
});
|
|
3586
|
+
case "installed":
|
|
3587
|
+
case "already-installed":
|
|
3588
|
+
return /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3589
|
+
icon: "circle-check",
|
|
3590
|
+
className: "h-4 w-4 text-green-400 flex-shrink-0"
|
|
3591
|
+
});
|
|
3592
|
+
case "failed":
|
|
3593
|
+
return /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3594
|
+
icon: "circle-xmark",
|
|
3595
|
+
className: "h-4 w-4 text-red-400 flex-shrink-0"
|
|
3596
|
+
});
|
|
3597
|
+
default:
|
|
3598
|
+
// pending
|
|
3599
|
+
return /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3600
|
+
icon: "clock",
|
|
3601
|
+
className: "h-4 w-4 opacity-30 flex-shrink-0"
|
|
3602
|
+
});
|
|
3603
|
+
}
|
|
3604
|
+
}
|
|
3605
|
+
return /*#__PURE__*/jsx(Modal, {
|
|
3606
|
+
isOpen: isOpen,
|
|
3607
|
+
setIsOpen: guardedSetIsOpen,
|
|
3608
|
+
width: "w-[440px]",
|
|
3609
|
+
height: "auto",
|
|
3610
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
3611
|
+
className: "flex flex-col rounded-lg overflow-hidden ".concat(panelStyles.backgroundColor || "bg-gray-900", " ").concat(panelStyles.textColor || "text-gray-200"),
|
|
3612
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3613
|
+
className: "px-5 pt-5 pb-3",
|
|
3614
|
+
children: /*#__PURE__*/jsx("h3", {
|
|
3615
|
+
className: "text-sm font-semibold",
|
|
3616
|
+
children: isComplete ? "Installation Complete" : "Installing widget ".concat(doneCount + 1, " of ").concat(widgets.length, "...")
|
|
3617
|
+
})
|
|
3618
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3619
|
+
className: "px-5 pb-3 space-y-1.5 max-h-64 overflow-y-auto",
|
|
3620
|
+
children: widgets.map(function (w, idx) {
|
|
3621
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3622
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
3623
|
+
className: "flex items-center gap-2.5 p-2 rounded ".concat(currentTheme["bg-primary-medium"] || "bg-white/5"),
|
|
3624
|
+
children: [statusIcon(w.status), /*#__PURE__*/jsx("span", {
|
|
3625
|
+
className: "text-sm flex-1 truncate",
|
|
3626
|
+
children: w.displayName
|
|
3627
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3628
|
+
className: "text-[10px] opacity-40",
|
|
3629
|
+
children: w.status === "already-installed" ? "Already installed" : w.status === "downloading" ? "Downloading..." : w.status === "installed" ? "Installed" : w.status === "failed" ? "Failed" : "Pending"
|
|
3630
|
+
})]
|
|
3631
|
+
}), w.status === "failed" && w.error && /*#__PURE__*/jsx("p", {
|
|
3632
|
+
className: "text-[10px] text-red-400/80 mt-0.5 ml-7 truncate",
|
|
3633
|
+
children: w.error
|
|
3634
|
+
})]
|
|
3635
|
+
}, idx);
|
|
3636
|
+
})
|
|
3637
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3638
|
+
className: "flex items-center justify-end px-5 py-3 border-t ".concat(currentTheme["border-primary-medium"] || "border-white/10"),
|
|
3639
|
+
children: /*#__PURE__*/jsx(Button, {
|
|
3640
|
+
title: "Done",
|
|
3641
|
+
bgColor: isComplete ? "bg-blue-600" : "bg-gray-700",
|
|
3642
|
+
hoverBackgroundColor: isComplete ? "hover:bg-blue-700" : "",
|
|
3643
|
+
textSize: "text-sm",
|
|
3644
|
+
padding: "py-1.5 px-4",
|
|
3645
|
+
onClick: function onClick() {
|
|
3646
|
+
if (isComplete && onDone) onDone();
|
|
3647
|
+
},
|
|
3648
|
+
disabled: !isComplete
|
|
3649
|
+
})
|
|
3650
|
+
})]
|
|
3651
|
+
})
|
|
3652
|
+
});
|
|
3653
|
+
};
|
|
3654
|
+
|
|
3559
3655
|
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
3656
|
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
3657
|
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; }
|
|
@@ -3598,15 +3694,30 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
3598
3694
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
3599
3695
|
authError = _useState12[0],
|
|
3600
3696
|
setAuthError = _useState12[1];
|
|
3697
|
+
var _useState13 = useState(false),
|
|
3698
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
3699
|
+
showProgressModal = _useState14[0],
|
|
3700
|
+
setShowProgressModal = _useState14[1];
|
|
3701
|
+
var _useState15 = useState([]),
|
|
3702
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
3703
|
+
progressWidgets = _useState16[0],
|
|
3704
|
+
setProgressWidgets = _useState16[1];
|
|
3705
|
+
var _useState17 = useState(false),
|
|
3706
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
3707
|
+
progressComplete = _useState18[0],
|
|
3708
|
+
setProgressComplete = _useState18[1];
|
|
3709
|
+
var progressResultRef = useRef(null);
|
|
3601
3710
|
var pollIntervalRef = useRef(null);
|
|
3711
|
+
var cleanupProgressRef = useRef(null);
|
|
3602
3712
|
var pkg = dashboardPackage;
|
|
3603
3713
|
if (!pkg) return null;
|
|
3604
3714
|
|
|
3605
|
-
// Clean up polling on unmount
|
|
3715
|
+
// Clean up polling and progress listener on unmount
|
|
3606
3716
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
3607
3717
|
useEffect(function () {
|
|
3608
3718
|
return function () {
|
|
3609
3719
|
if (pollIntervalRef.current) clearInterval(pollIntervalRef.current);
|
|
3720
|
+
if (cleanupProgressRef.current) cleanupProgressRef.current();
|
|
3610
3721
|
};
|
|
3611
3722
|
}, []);
|
|
3612
3723
|
|
|
@@ -3635,10 +3746,10 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
3635
3746
|
}, [pkg.name]);
|
|
3636
3747
|
function handleInstall() {
|
|
3637
3748
|
return _handleInstall.apply(this, arguments);
|
|
3638
|
-
}
|
|
3749
|
+
} // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
3639
3750
|
function _handleInstall() {
|
|
3640
3751
|
_handleInstall = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
3641
|
-
var
|
|
3752
|
+
var deps, _window$mainApi2, _window$mainApi2$onIn, result, _result$workspace2, _t;
|
|
3642
3753
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
3643
3754
|
while (1) switch (_context.prev = _context.next) {
|
|
3644
3755
|
case 0:
|
|
@@ -3652,6 +3763,35 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
3652
3763
|
setInstallResult(null);
|
|
3653
3764
|
setAuthFlow(null);
|
|
3654
3765
|
setAuthError(null);
|
|
3766
|
+
|
|
3767
|
+
// Initialize progress modal from widget deps
|
|
3768
|
+
deps = widgetDeps.length > 0 ? widgetDeps : [];
|
|
3769
|
+
if (deps.length > 0) {
|
|
3770
|
+
setProgressWidgets(deps.map(function (w) {
|
|
3771
|
+
return {
|
|
3772
|
+
packageName: w["package"] || w.name,
|
|
3773
|
+
displayName: w.displayName || w.name || w["package"],
|
|
3774
|
+
status: "pending"
|
|
3775
|
+
};
|
|
3776
|
+
}));
|
|
3777
|
+
setProgressComplete(false);
|
|
3778
|
+
setShowProgressModal(true);
|
|
3779
|
+
|
|
3780
|
+
// Register progress listener
|
|
3781
|
+
if (cleanupProgressRef.current) cleanupProgressRef.current();
|
|
3782
|
+
cleanupProgressRef.current = (_window$mainApi2 = window.mainApi) === null || _window$mainApi2 === void 0 || (_window$mainApi2 = _window$mainApi2.dashboardConfig) === null || _window$mainApi2 === void 0 || (_window$mainApi2$onIn = _window$mainApi2.onInstallProgress) === null || _window$mainApi2$onIn === void 0 ? void 0 : _window$mainApi2$onIn.call(_window$mainApi2, function (data) {
|
|
3783
|
+
setProgressWidgets(function (prev) {
|
|
3784
|
+
var next = _toConsumableArray(prev);
|
|
3785
|
+
if (data.index >= 0 && data.index < next.length) {
|
|
3786
|
+
next[data.index] = _objectSpread$D(_objectSpread$D({}, next[data.index]), {}, {
|
|
3787
|
+
status: data.status,
|
|
3788
|
+
error: data.error || null
|
|
3789
|
+
});
|
|
3790
|
+
}
|
|
3791
|
+
return next;
|
|
3792
|
+
});
|
|
3793
|
+
});
|
|
3794
|
+
}
|
|
3655
3795
|
_context.prev = 2;
|
|
3656
3796
|
_context.next = 3;
|
|
3657
3797
|
return window.mainApi.dashboardConfig.installDashboardFromRegistry(appId, pkg.name);
|
|
@@ -3661,33 +3801,52 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
3661
3801
|
_context.next = 4;
|
|
3662
3802
|
break;
|
|
3663
3803
|
}
|
|
3664
|
-
// Auth needed — show inline auth prompt
|
|
3804
|
+
// Auth needed — close progress modal, show inline auth prompt
|
|
3805
|
+
setShowProgressModal(false);
|
|
3665
3806
|
setIsInstalling(false);
|
|
3666
3807
|
setInstallResult({
|
|
3667
3808
|
status: "auth",
|
|
3668
3809
|
message: result.error || "Sign in to install this dashboard."
|
|
3669
3810
|
});
|
|
3811
|
+
if (cleanupProgressRef.current) {
|
|
3812
|
+
cleanupProgressRef.current();
|
|
3813
|
+
cleanupProgressRef.current = null;
|
|
3814
|
+
}
|
|
3670
3815
|
return _context.abrupt("return");
|
|
3671
3816
|
case 4:
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3817
|
+
// Store result for use when modal closes
|
|
3818
|
+
progressResultRef.current = result;
|
|
3819
|
+
setProgressComplete(true);
|
|
3820
|
+
|
|
3821
|
+
// If no progress modal was shown, apply result directly
|
|
3822
|
+
if (deps.length === 0) {
|
|
3823
|
+
setInstallResult({
|
|
3824
|
+
status: result !== null && result !== void 0 && result.success ? "success" : "error",
|
|
3825
|
+
message: result !== null && result !== void 0 && result.success ? "Dashboard \"".concat(((_result$workspace2 = result.workspace) === null || _result$workspace2 === void 0 ? void 0 : _result$workspace2.name) || pkg.name, "\" installed successfully.") : (result === null || result === void 0 ? void 0 : result.error) || "Installation failed."
|
|
3826
|
+
});
|
|
3827
|
+
if (result !== null && result !== void 0 && result.success && onInstallComplete) {
|
|
3828
|
+
onInstallComplete(result);
|
|
3829
|
+
}
|
|
3678
3830
|
}
|
|
3679
3831
|
_context.next = 6;
|
|
3680
3832
|
break;
|
|
3681
3833
|
case 5:
|
|
3682
3834
|
_context.prev = 5;
|
|
3683
3835
|
_t = _context["catch"](2);
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3836
|
+
setProgressComplete(true);
|
|
3837
|
+
if (deps.length === 0) {
|
|
3838
|
+
setInstallResult({
|
|
3839
|
+
status: "error",
|
|
3840
|
+
message: _t.message || "Failed to install dashboard."
|
|
3841
|
+
});
|
|
3842
|
+
}
|
|
3688
3843
|
case 6:
|
|
3689
3844
|
_context.prev = 6;
|
|
3690
3845
|
setIsInstalling(false);
|
|
3846
|
+
if (cleanupProgressRef.current) {
|
|
3847
|
+
cleanupProgressRef.current();
|
|
3848
|
+
cleanupProgressRef.current = null;
|
|
3849
|
+
}
|
|
3691
3850
|
return _context.finish(6);
|
|
3692
3851
|
case 7:
|
|
3693
3852
|
case "end":
|
|
@@ -3697,6 +3856,20 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
3697
3856
|
}));
|
|
3698
3857
|
return _handleInstall.apply(this, arguments);
|
|
3699
3858
|
}
|
|
3859
|
+
var handleProgressDone = useCallback(function () {
|
|
3860
|
+
setShowProgressModal(false);
|
|
3861
|
+
var result = progressResultRef.current;
|
|
3862
|
+
if (result) {
|
|
3863
|
+
var _result$workspace;
|
|
3864
|
+
setInstallResult({
|
|
3865
|
+
status: result.success ? "success" : "error",
|
|
3866
|
+
message: result.success ? "Dashboard \"".concat(((_result$workspace = result.workspace) === null || _result$workspace === void 0 ? void 0 : _result$workspace.name) || pkg.name, "\" installed successfully.") : result.error || "Installation failed."
|
|
3867
|
+
});
|
|
3868
|
+
if (result.success && onInstallComplete) {
|
|
3869
|
+
onInstallComplete(result);
|
|
3870
|
+
}
|
|
3871
|
+
}
|
|
3872
|
+
}, [pkg.name, onInstallComplete]);
|
|
3700
3873
|
function handleSignIn() {
|
|
3701
3874
|
return _handleSignIn.apply(this, arguments);
|
|
3702
3875
|
}
|
|
@@ -4078,6 +4251,12 @@ var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
|
4078
4251
|
onClick: handleInstall,
|
|
4079
4252
|
disabled: isInstalling
|
|
4080
4253
|
})
|
|
4254
|
+
}), /*#__PURE__*/jsx(InstallProgressModal, {
|
|
4255
|
+
isOpen: showProgressModal,
|
|
4256
|
+
setIsOpen: setShowProgressModal,
|
|
4257
|
+
widgets: progressWidgets,
|
|
4258
|
+
isComplete: progressComplete,
|
|
4259
|
+
onDone: handleProgressDone
|
|
4081
4260
|
})]
|
|
4082
4261
|
});
|
|
4083
4262
|
};
|
|
@@ -8136,7 +8315,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
|
|
|
8136
8315
|
var hasPropertyDescriptors_1 = hasPropertyDescriptors;
|
|
8137
8316
|
|
|
8138
8317
|
var keys = objectKeys$2;
|
|
8139
|
-
var hasSymbols$
|
|
8318
|
+
var hasSymbols$4 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
|
|
8140
8319
|
|
|
8141
8320
|
var toStr$4 = Object.prototype.toString;
|
|
8142
8321
|
var concat = Array.prototype.concat;
|
|
@@ -8169,7 +8348,7 @@ var defineProperty$1 = function (object, name, value, predicate) {
|
|
|
8169
8348
|
var defineProperties$1 = function (object, map) {
|
|
8170
8349
|
var predicates = arguments.length > 2 ? arguments[2] : {};
|
|
8171
8350
|
var props = keys(map);
|
|
8172
|
-
if (hasSymbols$
|
|
8351
|
+
if (hasSymbols$4) {
|
|
8173
8352
|
props = concat.call(props, Object.getOwnPropertySymbols(map));
|
|
8174
8353
|
}
|
|
8175
8354
|
for (var i = 0; i < props.length; i += 1) {
|
|
@@ -8235,11 +8414,11 @@ var sign$1 = function sign(number) {
|
|
|
8235
8414
|
};
|
|
8236
8415
|
|
|
8237
8416
|
var shams$1;
|
|
8238
|
-
var hasRequiredShams;
|
|
8417
|
+
var hasRequiredShams$1;
|
|
8239
8418
|
|
|
8240
|
-
function requireShams () {
|
|
8241
|
-
if (hasRequiredShams) return shams$1;
|
|
8242
|
-
hasRequiredShams = 1;
|
|
8419
|
+
function requireShams$1 () {
|
|
8420
|
+
if (hasRequiredShams$1) return shams$1;
|
|
8421
|
+
hasRequiredShams$1 = 1;
|
|
8243
8422
|
|
|
8244
8423
|
/** @type {import('./shams')} */
|
|
8245
8424
|
/* eslint complexity: [2, 18], max-statements: [2, 33] */
|
|
@@ -8288,10 +8467,10 @@ function requireShams () {
|
|
|
8288
8467
|
}
|
|
8289
8468
|
|
|
8290
8469
|
var origSymbol = typeof Symbol !== 'undefined' && Symbol;
|
|
8291
|
-
var hasSymbolSham = requireShams();
|
|
8470
|
+
var hasSymbolSham = requireShams$1();
|
|
8292
8471
|
|
|
8293
8472
|
/** @type {import('.')} */
|
|
8294
|
-
var hasSymbols$
|
|
8473
|
+
var hasSymbols$3 = function hasNativeSymbols() {
|
|
8295
8474
|
if (typeof origSymbol !== 'function') { return false; }
|
|
8296
8475
|
if (typeof Symbol !== 'function') { return false; }
|
|
8297
8476
|
if (typeof origSymbol('foo') !== 'symbol') { return false; }
|
|
@@ -8595,7 +8774,7 @@ var ThrowTypeError = $gOPD$1
|
|
|
8595
8774
|
}())
|
|
8596
8775
|
: throwTypeError;
|
|
8597
8776
|
|
|
8598
|
-
var hasSymbols$
|
|
8777
|
+
var hasSymbols$2 = hasSymbols$3();
|
|
8599
8778
|
|
|
8600
8779
|
var getProto$2 = getProto$3;
|
|
8601
8780
|
var $ObjectGPO = requireObject_getPrototypeOf();
|
|
@@ -8613,7 +8792,7 @@ var INTRINSICS = {
|
|
|
8613
8792
|
'%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
|
|
8614
8793
|
'%Array%': Array,
|
|
8615
8794
|
'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
|
|
8616
|
-
'%ArrayIteratorPrototype%': hasSymbols$
|
|
8795
|
+
'%ArrayIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
|
|
8617
8796
|
'%AsyncFromSyncIteratorPrototype%': undefined$1,
|
|
8618
8797
|
'%AsyncFunction%': needsEval,
|
|
8619
8798
|
'%AsyncGenerator%': needsEval,
|
|
@@ -8644,10 +8823,10 @@ var INTRINSICS = {
|
|
|
8644
8823
|
'%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
|
|
8645
8824
|
'%isFinite%': isFinite,
|
|
8646
8825
|
'%isNaN%': isNaN,
|
|
8647
|
-
'%IteratorPrototype%': hasSymbols$
|
|
8826
|
+
'%IteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
|
|
8648
8827
|
'%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
|
|
8649
8828
|
'%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
|
|
8650
|
-
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$
|
|
8829
|
+
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
|
|
8651
8830
|
'%Math%': Math,
|
|
8652
8831
|
'%Number%': Number,
|
|
8653
8832
|
'%Object%': $Object$2,
|
|
@@ -8661,11 +8840,11 @@ var INTRINSICS = {
|
|
|
8661
8840
|
'%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
|
|
8662
8841
|
'%RegExp%': RegExp,
|
|
8663
8842
|
'%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
|
|
8664
|
-
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$
|
|
8843
|
+
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
|
|
8665
8844
|
'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
|
|
8666
8845
|
'%String%': String,
|
|
8667
|
-
'%StringIteratorPrototype%': hasSymbols$
|
|
8668
|
-
'%Symbol%': hasSymbols$
|
|
8846
|
+
'%StringIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
|
|
8847
|
+
'%Symbol%': hasSymbols$2 ? Symbol : undefined$1,
|
|
8669
8848
|
'%SyntaxError%': $SyntaxError$1,
|
|
8670
8849
|
'%ThrowTypeError%': ThrowTypeError,
|
|
8671
8850
|
'%TypedArray%': TypedArray,
|
|
@@ -9018,12 +9197,12 @@ var callBound$i = function callBoundIntrinsic(name, allowMissing) {
|
|
|
9018
9197
|
|
|
9019
9198
|
// modified from https://github.com/es-shims/es6-shim
|
|
9020
9199
|
var objectKeys$1 = objectKeys$2;
|
|
9021
|
-
var hasSymbols$
|
|
9200
|
+
var hasSymbols$1 = requireShams$1()();
|
|
9022
9201
|
var callBound$h = callBound$i;
|
|
9023
9202
|
var $Object$1 = esObjectAtoms;
|
|
9024
9203
|
var $push = callBound$h('Array.prototype.push');
|
|
9025
9204
|
var $propIsEnumerable = callBound$h('Object.prototype.propertyIsEnumerable');
|
|
9026
|
-
var originalGetSymbols = hasSymbols$
|
|
9205
|
+
var originalGetSymbols = hasSymbols$1 ? $Object$1.getOwnPropertySymbols : null;
|
|
9027
9206
|
|
|
9028
9207
|
// eslint-disable-next-line no-unused-vars
|
|
9029
9208
|
var implementation$8 = function assign(target, source1) {
|
|
@@ -9037,7 +9216,7 @@ var implementation$8 = function assign(target, source1) {
|
|
|
9037
9216
|
|
|
9038
9217
|
// step 3.a.ii:
|
|
9039
9218
|
var keys = objectKeys$1(from);
|
|
9040
|
-
var getSymbols = hasSymbols$
|
|
9219
|
+
var getSymbols = hasSymbols$1 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
|
|
9041
9220
|
if (getSymbols) {
|
|
9042
9221
|
var syms = getSymbols(from);
|
|
9043
9222
|
for (var j = 0; j < syms.length; ++j) {
|
|
@@ -9334,14 +9513,23 @@ var regexp_prototype_flags = flagsBound;
|
|
|
9334
9513
|
|
|
9335
9514
|
var esGetIterator = {exports: {}};
|
|
9336
9515
|
|
|
9337
|
-
var
|
|
9516
|
+
var shams;
|
|
9517
|
+
var hasRequiredShams;
|
|
9338
9518
|
|
|
9339
|
-
|
|
9340
|
-
|
|
9341
|
-
|
|
9342
|
-
|
|
9519
|
+
function requireShams () {
|
|
9520
|
+
if (hasRequiredShams) return shams;
|
|
9521
|
+
hasRequiredShams = 1;
|
|
9522
|
+
|
|
9523
|
+
var hasSymbols = requireShams$1();
|
|
9524
|
+
|
|
9525
|
+
/** @type {import('.')} */
|
|
9526
|
+
shams = function hasToStringTagShams() {
|
|
9527
|
+
return hasSymbols() && !!Symbol.toStringTag;
|
|
9528
|
+
};
|
|
9529
|
+
return shams;
|
|
9530
|
+
}
|
|
9343
9531
|
|
|
9344
|
-
var hasToStringTag$7 =
|
|
9532
|
+
var hasToStringTag$7 = requireShams()();
|
|
9345
9533
|
var callBound$f = callBound$i;
|
|
9346
9534
|
|
|
9347
9535
|
var $toString$7 = callBound$f('Object.prototype.toString');
|
|
@@ -10378,7 +10566,7 @@ var tryStringObject = function tryStringObject(value) {
|
|
|
10378
10566
|
/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */
|
|
10379
10567
|
var $toString$6 = callBound$c('Object.prototype.toString');
|
|
10380
10568
|
var strClass = '[object String]';
|
|
10381
|
-
var hasToStringTag$6 =
|
|
10569
|
+
var hasToStringTag$6 = requireShams()();
|
|
10382
10570
|
|
|
10383
10571
|
/** @type {import('.')} */
|
|
10384
10572
|
var isString$2 = function isString(value) {
|
|
@@ -10494,7 +10682,7 @@ var isSet$2 = exported$1 || function isSet(x) {
|
|
|
10494
10682
|
var isArguments$1 = isArguments$2;
|
|
10495
10683
|
var getStopIterationIterator = stopIterationIterator;
|
|
10496
10684
|
|
|
10497
|
-
if (hasSymbols$
|
|
10685
|
+
if (hasSymbols$3() || requireShams$1()()) {
|
|
10498
10686
|
var $iterator = Symbol.iterator;
|
|
10499
10687
|
// Symbol is available natively or shammed
|
|
10500
10688
|
// natively:
|
|
@@ -10783,7 +10971,7 @@ var tryDateObject = function tryDateGetDayCall(value) {
|
|
|
10783
10971
|
/** @type {(value: unknown) => string} */
|
|
10784
10972
|
var toStr$2 = callBound$9('Object.prototype.toString');
|
|
10785
10973
|
var dateClass = '[object Date]';
|
|
10786
|
-
var hasToStringTag$5 =
|
|
10974
|
+
var hasToStringTag$5 = requireShams()();
|
|
10787
10975
|
|
|
10788
10976
|
/** @type {import('.')} */
|
|
10789
10977
|
var isDateObject = function isDateObject(value) {
|
|
@@ -10794,7 +10982,7 @@ var isDateObject = function isDateObject(value) {
|
|
|
10794
10982
|
};
|
|
10795
10983
|
|
|
10796
10984
|
var callBound$8 = callBound$i;
|
|
10797
|
-
var hasToStringTag$4 =
|
|
10985
|
+
var hasToStringTag$4 = requireShams()();
|
|
10798
10986
|
var hasOwn = hasown;
|
|
10799
10987
|
var gOPD$1 = gopd$1;
|
|
10800
10988
|
|
|
@@ -10899,7 +11087,7 @@ var tryNumberObject = function tryNumberObject(value) {
|
|
|
10899
11087
|
};
|
|
10900
11088
|
var $toString$3 = callBound$6('Object.prototype.toString');
|
|
10901
11089
|
var numClass = '[object Number]';
|
|
10902
|
-
var hasToStringTag$3 =
|
|
11090
|
+
var hasToStringTag$3 = requireShams()();
|
|
10903
11091
|
|
|
10904
11092
|
/** @type {import('.')} */
|
|
10905
11093
|
var isNumberObject = function isNumberObject(value) {
|
|
@@ -10926,7 +11114,7 @@ var tryBooleanObject = function booleanBrandCheck(value) {
|
|
|
10926
11114
|
}
|
|
10927
11115
|
};
|
|
10928
11116
|
var boolClass = '[object Boolean]';
|
|
10929
|
-
var hasToStringTag$2 =
|
|
11117
|
+
var hasToStringTag$2 = requireShams()();
|
|
10930
11118
|
|
|
10931
11119
|
/** @type {import('.')} */
|
|
10932
11120
|
var isBooleanObject = function isBoolean(value) {
|
|
@@ -10968,7 +11156,7 @@ function requireSafeRegexTest () {
|
|
|
10968
11156
|
|
|
10969
11157
|
var callBound$4 = callBound$i;
|
|
10970
11158
|
var $toString$1 = callBound$4('Object.prototype.toString');
|
|
10971
|
-
var hasSymbols = hasSymbols$
|
|
11159
|
+
var hasSymbols = hasSymbols$3();
|
|
10972
11160
|
var safeRegexTest = requireSafeRegexTest();
|
|
10973
11161
|
|
|
10974
11162
|
if (hasSymbols) {
|
|
@@ -11414,7 +11602,7 @@ var gOPD = gopd$1;
|
|
|
11414
11602
|
var getProto = getProto$3;
|
|
11415
11603
|
|
|
11416
11604
|
var $toString = callBound$2('Object.prototype.toString');
|
|
11417
|
-
var hasToStringTag =
|
|
11605
|
+
var hasToStringTag = requireShams()();
|
|
11418
11606
|
|
|
11419
11607
|
var g = typeof globalThis === 'undefined' ? commonjsGlobal : globalThis;
|
|
11420
11608
|
var typedArrays = availableTypedArrays();
|
|
@@ -22935,6 +23123,397 @@ var ExternalWidget = function ExternalWidget(_ref) {
|
|
|
22935
23123
|
});
|
|
22936
23124
|
};
|
|
22937
23125
|
|
|
23126
|
+
var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
|
|
23127
|
+
var widget = _ref.widget,
|
|
23128
|
+
onInstall = _ref.onInstall,
|
|
23129
|
+
_ref$isInstalling = _ref.isInstalling,
|
|
23130
|
+
isInstalling = _ref$isInstalling === void 0 ? false : _ref$isInstalling,
|
|
23131
|
+
_ref$installError = _ref.installError,
|
|
23132
|
+
installError = _ref$installError === void 0 ? null : _ref$installError,
|
|
23133
|
+
_ref$isInstalled = _ref.isInstalled,
|
|
23134
|
+
isInstalled = _ref$isInstalled === void 0 ? false : _ref$isInstalled;
|
|
23135
|
+
var _useContext = useContext(ThemeContext),
|
|
23136
|
+
currentTheme = _useContext.currentTheme;
|
|
23137
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
23138
|
+
grow: false
|
|
23139
|
+
});
|
|
23140
|
+
if (!widget) return null;
|
|
23141
|
+
return /*#__PURE__*/jsxs("div", {
|
|
23142
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
23143
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
23144
|
+
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
23145
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
23146
|
+
className: "flex flex-row items-center gap-3",
|
|
23147
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
23148
|
+
className: "h-5 w-5 flex-shrink-0 flex items-center justify-center",
|
|
23149
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23150
|
+
icon: widget.icon || "cube",
|
|
23151
|
+
className: "h-5 w-5"
|
|
23152
|
+
})
|
|
23153
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
23154
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
23155
|
+
className: "flex items-center gap-2",
|
|
23156
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
23157
|
+
title: widget.packageDisplayName,
|
|
23158
|
+
padding: false
|
|
23159
|
+
}), isInstalled && /*#__PURE__*/jsx("span", {
|
|
23160
|
+
className: "text-[10px] px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-400 flex-shrink-0",
|
|
23161
|
+
children: "Installed"
|
|
23162
|
+
})]
|
|
23163
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
23164
|
+
className: "flex items-center gap-2 mt-0.5",
|
|
23165
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
23166
|
+
className: "text-sm opacity-60",
|
|
23167
|
+
children: ["by ", widget.packageAuthor || "Unknown"]
|
|
23168
|
+
}), /*#__PURE__*/jsxs("span", {
|
|
23169
|
+
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
23170
|
+
children: ["v", widget.packageVersion]
|
|
23171
|
+
})]
|
|
23172
|
+
})]
|
|
23173
|
+
})]
|
|
23174
|
+
}), /*#__PURE__*/jsx("hr", {
|
|
23175
|
+
className: currentTheme["border-primary-medium"]
|
|
23176
|
+
}), widget.packageDescription && /*#__PURE__*/jsx("p", {
|
|
23177
|
+
className: "text-sm",
|
|
23178
|
+
children: widget.packageDescription
|
|
23179
|
+
}), widget.packageTags && widget.packageTags.length > 0 && /*#__PURE__*/jsx("div", {
|
|
23180
|
+
className: "flex flex-wrap gap-1",
|
|
23181
|
+
children: widget.packageTags.map(function (tag) {
|
|
23182
|
+
return /*#__PURE__*/jsx("span", {
|
|
23183
|
+
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-60"),
|
|
23184
|
+
children: tag
|
|
23185
|
+
}, tag);
|
|
23186
|
+
})
|
|
23187
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
23188
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
23189
|
+
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
23190
|
+
children: "INCLUDED WIDGETS"
|
|
23191
|
+
}), /*#__PURE__*/jsx("div", {
|
|
23192
|
+
className: "space-y-1.5",
|
|
23193
|
+
children: (widget.packageWidgets || []).map(function (w, idx) {
|
|
23194
|
+
return /*#__PURE__*/jsxs("div", {
|
|
23195
|
+
className: "p-2 rounded ".concat(currentTheme["bg-primary-medium"]),
|
|
23196
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
23197
|
+
className: "text-sm font-medium",
|
|
23198
|
+
children: w.displayName || w.name
|
|
23199
|
+
}), w.description && /*#__PURE__*/jsx("div", {
|
|
23200
|
+
className: "text-xs opacity-50 mt-0.5",
|
|
23201
|
+
children: w.description
|
|
23202
|
+
}), getUserConfigurableProviders(w.providers).length > 0 && /*#__PURE__*/jsxs("div", {
|
|
23203
|
+
className: "space-y-1 mt-1",
|
|
23204
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
23205
|
+
className: "flex gap-1 flex-wrap",
|
|
23206
|
+
children: getUserConfigurableProviders(w.providers).map(function (p, pidx) {
|
|
23207
|
+
return /*#__PURE__*/jsxs("span", {
|
|
23208
|
+
className: "text-xs px-1.5 py-0.5 rounded bg-blue-900/30 text-blue-400",
|
|
23209
|
+
children: [p.type, p.required ? " *" : ""]
|
|
23210
|
+
}, pidx);
|
|
23211
|
+
})
|
|
23212
|
+
}), getUserConfigurableProviders(w.providers).some(function (p) {
|
|
23213
|
+
var _p$requiredTools;
|
|
23214
|
+
return ((_p$requiredTools = p.requiredTools) === null || _p$requiredTools === void 0 ? void 0 : _p$requiredTools.length) > 0;
|
|
23215
|
+
}) && /*#__PURE__*/jsx("div", {
|
|
23216
|
+
className: "flex flex-wrap gap-1 ml-1",
|
|
23217
|
+
children: getUserConfigurableProviders(w.providers).filter(function (p) {
|
|
23218
|
+
var _p$requiredTools2;
|
|
23219
|
+
return ((_p$requiredTools2 = p.requiredTools) === null || _p$requiredTools2 === void 0 ? void 0 : _p$requiredTools2.length) > 0;
|
|
23220
|
+
}).flatMap(function (p) {
|
|
23221
|
+
return p.requiredTools.map(function (tool) {
|
|
23222
|
+
return /*#__PURE__*/jsx("span", {
|
|
23223
|
+
className: "text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 opacity-60",
|
|
23224
|
+
children: tool
|
|
23225
|
+
}, "".concat(p.type, "-").concat(tool));
|
|
23226
|
+
});
|
|
23227
|
+
})
|
|
23228
|
+
})]
|
|
23229
|
+
})]
|
|
23230
|
+
}, idx);
|
|
23231
|
+
})
|
|
23232
|
+
})]
|
|
23233
|
+
}), widget.appOrigin && /*#__PURE__*/jsxs("div", {
|
|
23234
|
+
className: "flex items-center gap-1.5 text-xs opacity-50",
|
|
23235
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23236
|
+
icon: "laptop",
|
|
23237
|
+
className: "h-3 w-3"
|
|
23238
|
+
}), /*#__PURE__*/jsxs("span", {
|
|
23239
|
+
children: ["Built for ", widget.appOrigin]
|
|
23240
|
+
})]
|
|
23241
|
+
}), widget.missingApis && widget.missingApis.length > 0 && /*#__PURE__*/jsx("div", {
|
|
23242
|
+
className: "p-2 rounded bg-yellow-900/30 border border-yellow-700",
|
|
23243
|
+
children: /*#__PURE__*/jsxs("p", {
|
|
23244
|
+
className: "text-xs text-yellow-400",
|
|
23245
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23246
|
+
icon: "triangle-exclamation",
|
|
23247
|
+
className: "mr-1"
|
|
23248
|
+
}), "Incompatible \u2014 requires ", widget.missingApis.join(", "), " API", widget.missingApis.length !== 1 ? "s" : ""]
|
|
23249
|
+
})
|
|
23250
|
+
}), widget.repository && /*#__PURE__*/jsxs("div", {
|
|
23251
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
23252
|
+
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
23253
|
+
children: "REPOSITORY"
|
|
23254
|
+
}), /*#__PURE__*/jsx("button", {
|
|
23255
|
+
type: "button",
|
|
23256
|
+
onClick: function onClick() {
|
|
23257
|
+
var _window$mainApi;
|
|
23258
|
+
return (_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.shell) === null || _window$mainApi === void 0 ? void 0 : _window$mainApi.openExternal(widget.repository);
|
|
23259
|
+
},
|
|
23260
|
+
className: "text-sm text-blue-400 hover:text-blue-300 hover:underline transition-colors break-all text-left",
|
|
23261
|
+
children: widget.repository
|
|
23262
|
+
})]
|
|
23263
|
+
}), installError && /*#__PURE__*/jsx("div", {
|
|
23264
|
+
className: "p-2 rounded bg-red-900/30 border border-red-700",
|
|
23265
|
+
children: /*#__PURE__*/jsx("p", {
|
|
23266
|
+
className: "text-xs text-red-400",
|
|
23267
|
+
children: installError
|
|
23268
|
+
})
|
|
23269
|
+
})]
|
|
23270
|
+
}), /*#__PURE__*/jsx("div", {
|
|
23271
|
+
className: "flex items-center justify-end px-6 py-3 border-t ".concat(currentTheme["border-primary-medium"]),
|
|
23272
|
+
children: /*#__PURE__*/jsx(Button, {
|
|
23273
|
+
title: isInstalled ? "Installed" : isInstalling ? "Installing..." : "Install Package",
|
|
23274
|
+
bgColor: isInstalled ? "bg-emerald-600/50" : "bg-blue-600",
|
|
23275
|
+
hoverBackgroundColor: isInstalled || isInstalling ? "" : "hover:bg-blue-700",
|
|
23276
|
+
textSize: "text-sm",
|
|
23277
|
+
padding: "py-1.5 px-4",
|
|
23278
|
+
onClick: onInstall,
|
|
23279
|
+
disabled: isInstalling || isInstalled
|
|
23280
|
+
})
|
|
23281
|
+
})]
|
|
23282
|
+
});
|
|
23283
|
+
};
|
|
23284
|
+
|
|
23285
|
+
function getWidgetSearchQuery(componentKey) {
|
|
23286
|
+
var parts = componentKey.split(".");
|
|
23287
|
+
if (parts.length >= 3) {
|
|
23288
|
+
return {
|
|
23289
|
+
packageName: parts[1],
|
|
23290
|
+
widgetName: parts[2],
|
|
23291
|
+
scope: parts[0]
|
|
23292
|
+
};
|
|
23293
|
+
}
|
|
23294
|
+
return {
|
|
23295
|
+
packageName: null,
|
|
23296
|
+
widgetName: componentKey,
|
|
23297
|
+
scope: null
|
|
23298
|
+
};
|
|
23299
|
+
}
|
|
23300
|
+
|
|
23301
|
+
/**
|
|
23302
|
+
* Convert a raw registry package object into the flat widget shape
|
|
23303
|
+
* expected by RegistryPackageDetail.
|
|
23304
|
+
*/
|
|
23305
|
+
function packageToFlatWidget(pkg) {
|
|
23306
|
+
return {
|
|
23307
|
+
key: "".concat(pkg.name, "/0"),
|
|
23308
|
+
name: pkg.displayName || pkg.name,
|
|
23309
|
+
icon: pkg.icon || null,
|
|
23310
|
+
isRegistry: true,
|
|
23311
|
+
packageName: pkg.name,
|
|
23312
|
+
packageScope: pkg.scope || null,
|
|
23313
|
+
packageDisplayName: pkg.displayName || pkg.name,
|
|
23314
|
+
packageVersion: pkg.version,
|
|
23315
|
+
packageAuthor: pkg.author || "",
|
|
23316
|
+
packageDescription: pkg.description || "",
|
|
23317
|
+
packageTags: pkg.tags || [],
|
|
23318
|
+
packageCategory: pkg.category || "",
|
|
23319
|
+
downloadUrl: pkg.downloadUrl || "",
|
|
23320
|
+
repository: pkg.repository || "",
|
|
23321
|
+
publishedAt: pkg.publishedAt || "",
|
|
23322
|
+
packageWidgets: pkg.widgets || [],
|
|
23323
|
+
appOrigin: pkg.appOrigin || null,
|
|
23324
|
+
packageProviders: pkg.providers || [],
|
|
23325
|
+
missingApis: []
|
|
23326
|
+
};
|
|
23327
|
+
}
|
|
23328
|
+
|
|
23329
|
+
/**
|
|
23330
|
+
* WidgetNotFound — rendered in place of an unresolvable widget.
|
|
23331
|
+
*
|
|
23332
|
+
* Shows the existing "Widget Not Found" error display and adds a
|
|
23333
|
+
* "Find in Registry" button that does an exact registry lookup and
|
|
23334
|
+
* opens an install modal.
|
|
23335
|
+
*/
|
|
23336
|
+
var WidgetNotFound = function WidgetNotFound(_ref) {
|
|
23337
|
+
var component = _ref.component;
|
|
23338
|
+
var _useState = useState(false),
|
|
23339
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
23340
|
+
showModal = _useState2[0],
|
|
23341
|
+
setShowModal = _useState2[1];
|
|
23342
|
+
var _useState3 = useState(null),
|
|
23343
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
23344
|
+
registryWidget = _useState4[0],
|
|
23345
|
+
setRegistryWidget = _useState4[1];
|
|
23346
|
+
var _useState5 = useState(false),
|
|
23347
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
23348
|
+
isLoading = _useState6[0],
|
|
23349
|
+
setIsLoading = _useState6[1];
|
|
23350
|
+
var _useState7 = useState(false),
|
|
23351
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
23352
|
+
notFound = _useState8[0],
|
|
23353
|
+
setNotFound = _useState8[1];
|
|
23354
|
+
var _useState9 = useState(false),
|
|
23355
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
23356
|
+
isInstalling = _useState0[0],
|
|
23357
|
+
setIsInstalling = _useState0[1];
|
|
23358
|
+
var _useState1 = useState(null),
|
|
23359
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
23360
|
+
installError = _useState10[0],
|
|
23361
|
+
setInstallError = _useState10[1];
|
|
23362
|
+
var lookupWidget = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
23363
|
+
var _getWidgetSearchQuery, packageName, widgetName, pkg, result;
|
|
23364
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
23365
|
+
while (1) switch (_context.prev = _context.next) {
|
|
23366
|
+
case 0:
|
|
23367
|
+
setShowModal(true);
|
|
23368
|
+
setIsLoading(true);
|
|
23369
|
+
setNotFound(false);
|
|
23370
|
+
setRegistryWidget(null);
|
|
23371
|
+
setInstallError(null);
|
|
23372
|
+
_getWidgetSearchQuery = getWidgetSearchQuery(component), packageName = _getWidgetSearchQuery.packageName, widgetName = _getWidgetSearchQuery.widgetName;
|
|
23373
|
+
_context.prev = 1;
|
|
23374
|
+
pkg = null; // Scoped ID — exact package lookup
|
|
23375
|
+
if (!packageName) {
|
|
23376
|
+
_context.next = 3;
|
|
23377
|
+
break;
|
|
23378
|
+
}
|
|
23379
|
+
_context.next = 2;
|
|
23380
|
+
return window.mainApi.registry.getPackage(packageName);
|
|
23381
|
+
case 2:
|
|
23382
|
+
pkg = _context.sent;
|
|
23383
|
+
case 3:
|
|
23384
|
+
if (pkg) {
|
|
23385
|
+
_context.next = 5;
|
|
23386
|
+
break;
|
|
23387
|
+
}
|
|
23388
|
+
_context.next = 4;
|
|
23389
|
+
return window.mainApi.registry.search(widgetName);
|
|
23390
|
+
case 4:
|
|
23391
|
+
result = _context.sent;
|
|
23392
|
+
pkg = (result.packages || []).find(function (p) {
|
|
23393
|
+
return (p.widgets || []).some(function (w) {
|
|
23394
|
+
return w.name === widgetName;
|
|
23395
|
+
});
|
|
23396
|
+
});
|
|
23397
|
+
case 5:
|
|
23398
|
+
if (pkg) {
|
|
23399
|
+
setRegistryWidget(packageToFlatWidget(pkg));
|
|
23400
|
+
} else {
|
|
23401
|
+
setNotFound(true);
|
|
23402
|
+
}
|
|
23403
|
+
_context.next = 7;
|
|
23404
|
+
break;
|
|
23405
|
+
case 6:
|
|
23406
|
+
_context.prev = 6;
|
|
23407
|
+
_context["catch"](1);
|
|
23408
|
+
setNotFound(true);
|
|
23409
|
+
case 7:
|
|
23410
|
+
setIsLoading(false);
|
|
23411
|
+
case 8:
|
|
23412
|
+
case "end":
|
|
23413
|
+
return _context.stop();
|
|
23414
|
+
}
|
|
23415
|
+
}, _callee, null, [[1, 6]]);
|
|
23416
|
+
})), [component]);
|
|
23417
|
+
var handleInstall = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
23418
|
+
var packageName, packageScope, downloadUrl, packageVersion, scopedId, resolvedUrl, _t2;
|
|
23419
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
23420
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
23421
|
+
case 0:
|
|
23422
|
+
if (registryWidget) {
|
|
23423
|
+
_context2.next = 1;
|
|
23424
|
+
break;
|
|
23425
|
+
}
|
|
23426
|
+
return _context2.abrupt("return");
|
|
23427
|
+
case 1:
|
|
23428
|
+
setIsInstalling(true);
|
|
23429
|
+
setInstallError(null);
|
|
23430
|
+
_context2.prev = 2;
|
|
23431
|
+
packageName = registryWidget.packageName, packageScope = registryWidget.packageScope, downloadUrl = registryWidget.downloadUrl, packageVersion = registryWidget.packageVersion;
|
|
23432
|
+
scopedId = packageScope ? "@".concat(packageScope.replace(/^@/, ""), "/").concat(packageName) : packageName;
|
|
23433
|
+
resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
|
|
23434
|
+
_context2.next = 3;
|
|
23435
|
+
return window.mainApi.widgets.install(scopedId, resolvedUrl);
|
|
23436
|
+
case 3:
|
|
23437
|
+
setShowModal(false);
|
|
23438
|
+
_context2.next = 5;
|
|
23439
|
+
break;
|
|
23440
|
+
case 4:
|
|
23441
|
+
_context2.prev = 4;
|
|
23442
|
+
_t2 = _context2["catch"](2);
|
|
23443
|
+
setInstallError(_t2.message || "Failed to install package");
|
|
23444
|
+
case 5:
|
|
23445
|
+
setIsInstalling(false);
|
|
23446
|
+
case 6:
|
|
23447
|
+
case "end":
|
|
23448
|
+
return _context2.stop();
|
|
23449
|
+
}
|
|
23450
|
+
}, _callee2, null, [[2, 4]]);
|
|
23451
|
+
})), [registryWidget]);
|
|
23452
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
23453
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
23454
|
+
className: "flex flex-col h-full justify-center items-center w-full z-10 gap-2 p-4 text-center",
|
|
23455
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23456
|
+
icon: "triangle-exclamation",
|
|
23457
|
+
className: "h-6 w-6 text-amber-500"
|
|
23458
|
+
}), /*#__PURE__*/jsx("div", {
|
|
23459
|
+
className: "text-sm font-semibold text-gray-300",
|
|
23460
|
+
children: "Widget Not Found"
|
|
23461
|
+
}), /*#__PURE__*/jsx("div", {
|
|
23462
|
+
className: "text-xs text-gray-500 font-mono",
|
|
23463
|
+
children: component
|
|
23464
|
+
}), /*#__PURE__*/jsx("div", {
|
|
23465
|
+
className: "text-xs text-gray-600 mt-1",
|
|
23466
|
+
children: "This widget may have been uninstalled or renamed."
|
|
23467
|
+
}), /*#__PURE__*/jsxs("button", {
|
|
23468
|
+
type: "button",
|
|
23469
|
+
className: "flex items-center gap-1.5 text-xs text-blue-400 hover:text-blue-300 transition-colors mt-2",
|
|
23470
|
+
onClick: lookupWidget,
|
|
23471
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23472
|
+
icon: "magnifying-glass",
|
|
23473
|
+
className: "h-3 w-3"
|
|
23474
|
+
}), "Find in Registry"]
|
|
23475
|
+
})]
|
|
23476
|
+
}), showModal && /*#__PURE__*/jsxs(Modal, {
|
|
23477
|
+
title: "Registry Package",
|
|
23478
|
+
width: "w-1/3",
|
|
23479
|
+
height: "h-auto",
|
|
23480
|
+
onClose: function onClose() {
|
|
23481
|
+
return setShowModal(false);
|
|
23482
|
+
},
|
|
23483
|
+
children: [isLoading && /*#__PURE__*/jsx("div", {
|
|
23484
|
+
className: "flex items-center justify-center p-12",
|
|
23485
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23486
|
+
icon: "spinner",
|
|
23487
|
+
className: "h-5 w-5 text-gray-400 animate-spin"
|
|
23488
|
+
})
|
|
23489
|
+
}), !isLoading && registryWidget && /*#__PURE__*/jsx(RegistryPackageDetail, {
|
|
23490
|
+
widget: registryWidget,
|
|
23491
|
+
onInstall: handleInstall,
|
|
23492
|
+
isInstalling: isInstalling,
|
|
23493
|
+
installError: installError
|
|
23494
|
+
}), !isLoading && notFound && /*#__PURE__*/jsxs("div", {
|
|
23495
|
+
className: "flex flex-col items-center justify-center gap-3 p-12 text-center",
|
|
23496
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
23497
|
+
icon: "triangle-exclamation",
|
|
23498
|
+
className: "h-6 w-6 text-amber-500"
|
|
23499
|
+
}), /*#__PURE__*/jsx("div", {
|
|
23500
|
+
className: "text-sm text-gray-400",
|
|
23501
|
+
children: "This widget is not available in the registry."
|
|
23502
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
23503
|
+
title: "Close",
|
|
23504
|
+
bgColor: "bg-gray-600",
|
|
23505
|
+
hoverBackgroundColor: "hover:bg-gray-700",
|
|
23506
|
+
textSize: "text-sm",
|
|
23507
|
+
padding: "py-1.5 px-4",
|
|
23508
|
+
onClick: function onClick() {
|
|
23509
|
+
return setShowModal(false);
|
|
23510
|
+
}
|
|
23511
|
+
})]
|
|
23512
|
+
})]
|
|
23513
|
+
})]
|
|
23514
|
+
});
|
|
23515
|
+
};
|
|
23516
|
+
|
|
22938
23517
|
var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
|
|
22939
23518
|
var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
|
|
22940
23519
|
|
|
@@ -24959,21 +25538,8 @@ function renderComponent(component, id) {
|
|
|
24959
25538
|
// WidgetFactory.render() always returns a React element (truthy),
|
|
24960
25539
|
// so the old ternary fallback could never fire.
|
|
24961
25540
|
if (!isWidgetResolvable(component)) {
|
|
24962
|
-
return /*#__PURE__*/
|
|
24963
|
-
|
|
24964
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
24965
|
-
icon: "triangle-exclamation",
|
|
24966
|
-
className: "h-6 w-6 text-amber-500"
|
|
24967
|
-
}), /*#__PURE__*/jsx("div", {
|
|
24968
|
-
className: "text-sm font-semibold text-gray-300",
|
|
24969
|
-
children: "Widget Not Found"
|
|
24970
|
-
}), /*#__PURE__*/jsx("div", {
|
|
24971
|
-
className: "text-xs text-gray-500 font-mono",
|
|
24972
|
-
children: component
|
|
24973
|
-
}), /*#__PURE__*/jsx("div", {
|
|
24974
|
-
className: "text-xs text-gray-600 mt-1",
|
|
24975
|
-
children: "This widget may have been uninstalled or renamed."
|
|
24976
|
-
})]
|
|
25541
|
+
return /*#__PURE__*/jsx(WidgetNotFound, {
|
|
25542
|
+
component: component
|
|
24977
25543
|
});
|
|
24978
25544
|
}
|
|
24979
25545
|
if ("height" in params) {
|
|
@@ -38290,7 +38856,10 @@ var DashboardsSection = function DashboardsSection(_ref) {
|
|
|
38290
38856
|
setInstallMode(null);
|
|
38291
38857
|
setViewMode("grouped");
|
|
38292
38858
|
},
|
|
38293
|
-
appId: appId
|
|
38859
|
+
appId: appId,
|
|
38860
|
+
onInstallComplete: function onInstallComplete() {
|
|
38861
|
+
onReloadWorkspaces && onReloadWorkspaces();
|
|
38862
|
+
}
|
|
38294
38863
|
});
|
|
38295
38864
|
} else if (selectedWorkspace) {
|
|
38296
38865
|
detailContent = /*#__PURE__*/jsx(DashboardDetail, {
|
|
@@ -43728,165 +44297,6 @@ var InstallWidgetPicker = function InstallWidgetPicker(_ref2) {
|
|
|
43728
44297
|
});
|
|
43729
44298
|
};
|
|
43730
44299
|
|
|
43731
|
-
var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
|
|
43732
|
-
var widget = _ref.widget,
|
|
43733
|
-
onInstall = _ref.onInstall,
|
|
43734
|
-
_ref$isInstalling = _ref.isInstalling,
|
|
43735
|
-
isInstalling = _ref$isInstalling === void 0 ? false : _ref$isInstalling,
|
|
43736
|
-
_ref$installError = _ref.installError,
|
|
43737
|
-
installError = _ref$installError === void 0 ? null : _ref$installError,
|
|
43738
|
-
_ref$isInstalled = _ref.isInstalled,
|
|
43739
|
-
isInstalled = _ref$isInstalled === void 0 ? false : _ref$isInstalled;
|
|
43740
|
-
var _useContext = useContext(ThemeContext),
|
|
43741
|
-
currentTheme = _useContext.currentTheme;
|
|
43742
|
-
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
43743
|
-
grow: false
|
|
43744
|
-
});
|
|
43745
|
-
if (!widget) return null;
|
|
43746
|
-
return /*#__PURE__*/jsxs("div", {
|
|
43747
|
-
className: "flex flex-col flex-1 min-h-0",
|
|
43748
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
43749
|
-
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
43750
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
43751
|
-
className: "flex flex-row items-center gap-3",
|
|
43752
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
43753
|
-
className: "h-5 w-5 flex-shrink-0 flex items-center justify-center",
|
|
43754
|
-
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
43755
|
-
icon: widget.icon || "cube",
|
|
43756
|
-
className: "h-5 w-5"
|
|
43757
|
-
})
|
|
43758
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
43759
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
43760
|
-
className: "flex items-center gap-2",
|
|
43761
|
-
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
43762
|
-
title: widget.packageDisplayName,
|
|
43763
|
-
padding: false
|
|
43764
|
-
}), isInstalled && /*#__PURE__*/jsx("span", {
|
|
43765
|
-
className: "text-[10px] px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-400 flex-shrink-0",
|
|
43766
|
-
children: "Installed"
|
|
43767
|
-
})]
|
|
43768
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
43769
|
-
className: "flex items-center gap-2 mt-0.5",
|
|
43770
|
-
children: [/*#__PURE__*/jsxs("span", {
|
|
43771
|
-
className: "text-sm opacity-60",
|
|
43772
|
-
children: ["by ", widget.packageAuthor || "Unknown"]
|
|
43773
|
-
}), /*#__PURE__*/jsxs("span", {
|
|
43774
|
-
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
43775
|
-
children: ["v", widget.packageVersion]
|
|
43776
|
-
})]
|
|
43777
|
-
})]
|
|
43778
|
-
})]
|
|
43779
|
-
}), /*#__PURE__*/jsx("hr", {
|
|
43780
|
-
className: currentTheme["border-primary-medium"]
|
|
43781
|
-
}), widget.packageDescription && /*#__PURE__*/jsx("p", {
|
|
43782
|
-
className: "text-sm",
|
|
43783
|
-
children: widget.packageDescription
|
|
43784
|
-
}), widget.packageTags && widget.packageTags.length > 0 && /*#__PURE__*/jsx("div", {
|
|
43785
|
-
className: "flex flex-wrap gap-1",
|
|
43786
|
-
children: widget.packageTags.map(function (tag) {
|
|
43787
|
-
return /*#__PURE__*/jsx("span", {
|
|
43788
|
-
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-60"),
|
|
43789
|
-
children: tag
|
|
43790
|
-
}, tag);
|
|
43791
|
-
})
|
|
43792
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
43793
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
43794
|
-
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
43795
|
-
children: "INCLUDED WIDGETS"
|
|
43796
|
-
}), /*#__PURE__*/jsx("div", {
|
|
43797
|
-
className: "space-y-1.5",
|
|
43798
|
-
children: (widget.packageWidgets || []).map(function (w, idx) {
|
|
43799
|
-
return /*#__PURE__*/jsxs("div", {
|
|
43800
|
-
className: "p-2 rounded ".concat(currentTheme["bg-primary-medium"]),
|
|
43801
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
43802
|
-
className: "text-sm font-medium",
|
|
43803
|
-
children: w.displayName || w.name
|
|
43804
|
-
}), w.description && /*#__PURE__*/jsx("div", {
|
|
43805
|
-
className: "text-xs opacity-50 mt-0.5",
|
|
43806
|
-
children: w.description
|
|
43807
|
-
}), getUserConfigurableProviders(w.providers).length > 0 && /*#__PURE__*/jsxs("div", {
|
|
43808
|
-
className: "space-y-1 mt-1",
|
|
43809
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
43810
|
-
className: "flex gap-1 flex-wrap",
|
|
43811
|
-
children: getUserConfigurableProviders(w.providers).map(function (p, pidx) {
|
|
43812
|
-
return /*#__PURE__*/jsxs("span", {
|
|
43813
|
-
className: "text-xs px-1.5 py-0.5 rounded bg-blue-900/30 text-blue-400",
|
|
43814
|
-
children: [p.type, p.required ? " *" : ""]
|
|
43815
|
-
}, pidx);
|
|
43816
|
-
})
|
|
43817
|
-
}), getUserConfigurableProviders(w.providers).some(function (p) {
|
|
43818
|
-
var _p$requiredTools;
|
|
43819
|
-
return ((_p$requiredTools = p.requiredTools) === null || _p$requiredTools === void 0 ? void 0 : _p$requiredTools.length) > 0;
|
|
43820
|
-
}) && /*#__PURE__*/jsx("div", {
|
|
43821
|
-
className: "flex flex-wrap gap-1 ml-1",
|
|
43822
|
-
children: getUserConfigurableProviders(w.providers).filter(function (p) {
|
|
43823
|
-
var _p$requiredTools2;
|
|
43824
|
-
return ((_p$requiredTools2 = p.requiredTools) === null || _p$requiredTools2 === void 0 ? void 0 : _p$requiredTools2.length) > 0;
|
|
43825
|
-
}).flatMap(function (p) {
|
|
43826
|
-
return p.requiredTools.map(function (tool) {
|
|
43827
|
-
return /*#__PURE__*/jsx("span", {
|
|
43828
|
-
className: "text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 opacity-60",
|
|
43829
|
-
children: tool
|
|
43830
|
-
}, "".concat(p.type, "-").concat(tool));
|
|
43831
|
-
});
|
|
43832
|
-
})
|
|
43833
|
-
})]
|
|
43834
|
-
})]
|
|
43835
|
-
}, idx);
|
|
43836
|
-
})
|
|
43837
|
-
})]
|
|
43838
|
-
}), widget.appOrigin && /*#__PURE__*/jsxs("div", {
|
|
43839
|
-
className: "flex items-center gap-1.5 text-xs opacity-50",
|
|
43840
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
43841
|
-
icon: "laptop",
|
|
43842
|
-
className: "h-3 w-3"
|
|
43843
|
-
}), /*#__PURE__*/jsxs("span", {
|
|
43844
|
-
children: ["Built for ", widget.appOrigin]
|
|
43845
|
-
})]
|
|
43846
|
-
}), widget.missingApis && widget.missingApis.length > 0 && /*#__PURE__*/jsx("div", {
|
|
43847
|
-
className: "p-2 rounded bg-yellow-900/30 border border-yellow-700",
|
|
43848
|
-
children: /*#__PURE__*/jsxs("p", {
|
|
43849
|
-
className: "text-xs text-yellow-400",
|
|
43850
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
43851
|
-
icon: "triangle-exclamation",
|
|
43852
|
-
className: "mr-1"
|
|
43853
|
-
}), "Incompatible \u2014 requires ", widget.missingApis.join(", "), " API", widget.missingApis.length !== 1 ? "s" : ""]
|
|
43854
|
-
})
|
|
43855
|
-
}), widget.repository && /*#__PURE__*/jsxs("div", {
|
|
43856
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
43857
|
-
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
43858
|
-
children: "REPOSITORY"
|
|
43859
|
-
}), /*#__PURE__*/jsx("button", {
|
|
43860
|
-
type: "button",
|
|
43861
|
-
onClick: function onClick() {
|
|
43862
|
-
var _window$mainApi;
|
|
43863
|
-
return (_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.shell) === null || _window$mainApi === void 0 ? void 0 : _window$mainApi.openExternal(widget.repository);
|
|
43864
|
-
},
|
|
43865
|
-
className: "text-sm text-blue-400 hover:text-blue-300 hover:underline transition-colors break-all text-left",
|
|
43866
|
-
children: widget.repository
|
|
43867
|
-
})]
|
|
43868
|
-
}), installError && /*#__PURE__*/jsx("div", {
|
|
43869
|
-
className: "p-2 rounded bg-red-900/30 border border-red-700",
|
|
43870
|
-
children: /*#__PURE__*/jsx("p", {
|
|
43871
|
-
className: "text-xs text-red-400",
|
|
43872
|
-
children: installError
|
|
43873
|
-
})
|
|
43874
|
-
})]
|
|
43875
|
-
}), /*#__PURE__*/jsx("div", {
|
|
43876
|
-
className: "flex items-center justify-end px-6 py-3 border-t ".concat(currentTheme["border-primary-medium"]),
|
|
43877
|
-
children: /*#__PURE__*/jsx(Button, {
|
|
43878
|
-
title: isInstalled ? "Installed" : isInstalling ? "Installing..." : "Install Package",
|
|
43879
|
-
bgColor: isInstalled ? "bg-emerald-600/50" : "bg-blue-600",
|
|
43880
|
-
hoverBackgroundColor: isInstalled || isInstalling ? "" : "hover:bg-blue-700",
|
|
43881
|
-
textSize: "text-sm",
|
|
43882
|
-
padding: "py-1.5 px-4",
|
|
43883
|
-
onClick: onInstall,
|
|
43884
|
-
disabled: isInstalling || isInstalled
|
|
43885
|
-
})
|
|
43886
|
-
})]
|
|
43887
|
-
});
|
|
43888
|
-
};
|
|
43889
|
-
|
|
43890
44300
|
function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(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; } } }; }
|
|
43891
44301
|
function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(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$2(r, a) : void 0; } }
|
|
43892
44302
|
function _arrayLikeToArray$2(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; }
|
|
@@ -50600,5 +51010,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
|
|
|
50600
51010
|
|
|
50601
51011
|
ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
|
|
50602
51012
|
|
|
50603
|
-
export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWizardModal, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, WELCOME_STORAGE_KEY, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, WelcomePrompt, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, WizardCustomizeStep, WizardDiscoverStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
|
|
51013
|
+
export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWizardModal, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, LAYOUT_SAVE, LAYOUT_SAVE_COMPLETE, LAYOUT_SAVE_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, WELCOME_STORAGE_KEY, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, WelcomePrompt, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetNotFound, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, WizardCustomizeStep, WizardDiscoverStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
|
|
50604
51014
|
//# sourceMappingURL=index.esm.js.map
|