@trops/dash-core 0.1.115 → 0.1.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +930 -691
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +929 -689
- 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, Modal, Panel, Stepper,
|
|
3
|
+
import { isObject, ThemeContext, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, FontAwesomeIcon, Tag, Sidebar, Paragraph, Modal, Panel, Stepper, Heading3, MenuItem3, FormLabel, SelectMenu, Switch, CodeEditorInline, SettingsModal, SubHeading2, tailwindHeightFractions, Menu3, Panel3, DropdownPanel, MenuItem2, ButtonIcon2, DragComponent, ConfirmationModal, DropComponent, getStyleName, capitalizeFirstLetter, colorTypes, getCSSStyleForClassname, Panel2, Heading2, SubHeading, Paragraph2, Paragraph3, Button2, Button3, MenuItem, Tag2, Tag3, ButtonIcon3, DashPanel, colorNames, shades, themeVariants, Tabs3, DataList, Checkbox, StatCard, Card, Tabs, Accordion, Alert, Toast, ProgressBar, Toggle, Breadcrumbs, Card2, Tabs2, Accordion2, Alert2, Toast2, ProgressBar2, Toggle2, Breadcrumbs2, Card3, Accordion3, Alert3, Toast3, ProgressBar3, Toggle3, Breadcrumbs3, TextArea, SelectInput, 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';
|
|
@@ -13,13 +13,13 @@ import _createClass from '@babel/runtime/helpers/createClass';
|
|
|
13
13
|
import * as jsxRuntime from 'react/jsx-runtime';
|
|
14
14
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
15
15
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
16
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
17
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
16
18
|
import { Menu, Transition, Popover, Dialog, Disclosure } from '@headlessui/react';
|
|
17
19
|
import { EllipsisVerticalIcon } from '@heroicons/react/20/solid';
|
|
18
20
|
import clsx from 'clsx';
|
|
19
21
|
import { DndProvider, useDrag, useDrop } from 'react-dnd';
|
|
20
22
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
21
|
-
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
22
|
-
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
23
23
|
import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
|
|
24
24
|
import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
|
|
25
25
|
import _inherits from '@babel/runtime/helpers/inherits';
|
|
@@ -30,8 +30,8 @@ import algoliasearch from 'algoliasearch';
|
|
|
30
30
|
import { InstantSearch, Hits } from 'react-instantsearch-hooks-web';
|
|
31
31
|
import { Link } from 'react-router-dom';
|
|
32
32
|
|
|
33
|
-
function ownKeys$
|
|
34
|
-
function _objectSpread$
|
|
33
|
+
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; }
|
|
34
|
+
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; }
|
|
35
35
|
var event = {
|
|
36
36
|
list: new Map(),
|
|
37
37
|
// Map(1) { '<widget-UUID>' => { 'CustomSearchbar[10].searchQueryChanged': [] } }
|
|
@@ -93,7 +93,7 @@ var event = {
|
|
|
93
93
|
uuid: subscriber["uuid"]
|
|
94
94
|
};
|
|
95
95
|
if ("action" in subscriber && subscriber.action !== undefined) {
|
|
96
|
-
subscriber["action"](_objectSpread$
|
|
96
|
+
subscriber["action"](_objectSpread$B({}, objectToSend));
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
}
|
|
@@ -2533,8 +2533,8 @@ var DashboardWrapper = function DashboardWrapper(_ref) {
|
|
|
2533
2533
|
});
|
|
2534
2534
|
};
|
|
2535
2535
|
|
|
2536
|
-
function ownKeys$
|
|
2537
|
-
function _objectSpread$
|
|
2536
|
+
function ownKeys$A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2537
|
+
function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2538
2538
|
var DashboardThemeProvider = function DashboardThemeProvider(_ref) {
|
|
2539
2539
|
var themeKey = _ref.themeKey,
|
|
2540
2540
|
children = _ref.children;
|
|
@@ -2546,7 +2546,7 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref) {
|
|
|
2546
2546
|
var dashboardTheme = themes[themeKey];
|
|
2547
2547
|
var themeValue = dashboardTheme ? dashboardTheme[themeVariant] || null : null;
|
|
2548
2548
|
if (!themeValue) return null;
|
|
2549
|
-
return _objectSpread$
|
|
2549
|
+
return _objectSpread$A(_objectSpread$A({}, parentContext), {}, {
|
|
2550
2550
|
currentTheme: themeValue,
|
|
2551
2551
|
currentThemeKey: themeKey,
|
|
2552
2552
|
theme: themeValue,
|
|
@@ -2564,8 +2564,8 @@ var DashboardThemeProvider = function DashboardThemeProvider(_ref) {
|
|
|
2564
2564
|
});
|
|
2565
2565
|
};
|
|
2566
2566
|
|
|
2567
|
-
function ownKeys$
|
|
2568
|
-
function _objectSpread$
|
|
2567
|
+
function ownKeys$z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2568
|
+
function _objectSpread$z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$z(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2569
2569
|
var AppThemeScope = function AppThemeScope(_ref) {
|
|
2570
2570
|
var children = _ref.children;
|
|
2571
2571
|
var ctx = useContext(ThemeContext);
|
|
@@ -2573,7 +2573,7 @@ var AppThemeScope = function AppThemeScope(_ref) {
|
|
|
2573
2573
|
children: children
|
|
2574
2574
|
});
|
|
2575
2575
|
return /*#__PURE__*/jsx(ThemeContext.Provider, {
|
|
2576
|
-
value: _objectSpread$
|
|
2576
|
+
value: _objectSpread$z(_objectSpread$z({}, ctx), {}, {
|
|
2577
2577
|
currentTheme: ctx.appTheme,
|
|
2578
2578
|
currentThemeKey: ctx.appThemeKey,
|
|
2579
2579
|
theme: ctx.appTheme,
|
|
@@ -2685,8 +2685,8 @@ var LayoutContainer = function LayoutContainer(_ref) {
|
|
|
2685
2685
|
});
|
|
2686
2686
|
};
|
|
2687
2687
|
|
|
2688
|
-
function ownKeys$
|
|
2689
|
-
function _objectSpread$
|
|
2688
|
+
function ownKeys$y(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; }
|
|
2689
|
+
function _objectSpread$y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$y(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2690
2690
|
function _createForOfIteratorHelper$a(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$a(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
2691
2691
|
function _unsupportedIterableToArray$a(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$a(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$a(r, a) : void 0; } }
|
|
2692
2692
|
function _arrayLikeToArray$a(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -2930,7 +2930,7 @@ function createLayoutFromTemplate(template) {
|
|
|
2930
2930
|
try {
|
|
2931
2931
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
2932
2932
|
var cell = _step.value;
|
|
2933
|
-
grid[cell.key] = _objectSpread$
|
|
2933
|
+
grid[cell.key] = _objectSpread$y({
|
|
2934
2934
|
component: null,
|
|
2935
2935
|
hide: cell.hide || false
|
|
2936
2936
|
}, cell.span ? {
|
|
@@ -3272,6 +3272,642 @@ var FolderDetail = function FolderDetail(_ref) {
|
|
|
3272
3272
|
});
|
|
3273
3273
|
};
|
|
3274
3274
|
|
|
3275
|
+
var OptionCard$1 = function OptionCard(_ref) {
|
|
3276
|
+
var icon = _ref.icon,
|
|
3277
|
+
title = _ref.title,
|
|
3278
|
+
description = _ref.description,
|
|
3279
|
+
onClick = _ref.onClick;
|
|
3280
|
+
return /*#__PURE__*/jsxs("button", {
|
|
3281
|
+
type: "button",
|
|
3282
|
+
onClick: onClick,
|
|
3283
|
+
className: "w-full flex flex-row items-center gap-4 p-4 rounded-lg text-left transition-all bg-gray-700/50 hover:bg-gray-700 hover:ring-1 hover:ring-gray-600",
|
|
3284
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3285
|
+
className: "flex-shrink-0 h-8 w-8 flex items-center justify-center text-gray-400",
|
|
3286
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3287
|
+
icon: icon,
|
|
3288
|
+
className: "h-5 w-5"
|
|
3289
|
+
})
|
|
3290
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3291
|
+
className: "flex flex-col min-w-0",
|
|
3292
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3293
|
+
className: "text-sm font-medium text-gray-200",
|
|
3294
|
+
children: title
|
|
3295
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3296
|
+
className: "text-xs text-gray-500 mt-0.5",
|
|
3297
|
+
children: description
|
|
3298
|
+
})]
|
|
3299
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3300
|
+
className: "flex-shrink-0 ml-auto text-gray-600",
|
|
3301
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3302
|
+
icon: "chevron-right",
|
|
3303
|
+
className: "h-3 w-3"
|
|
3304
|
+
})
|
|
3305
|
+
})]
|
|
3306
|
+
});
|
|
3307
|
+
};
|
|
3308
|
+
var CreationMethodPicker = function CreationMethodPicker(_ref2) {
|
|
3309
|
+
var onSelect = _ref2.onSelect;
|
|
3310
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3311
|
+
className: "flex flex-row w-full h-full",
|
|
3312
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
3313
|
+
className: "flex flex-col w-1/3 p-6 py-10 space-y-4 justify-start",
|
|
3314
|
+
children: [/*#__PURE__*/jsx(Heading, {
|
|
3315
|
+
title: "New Dashboard",
|
|
3316
|
+
padding: false,
|
|
3317
|
+
textColor: "text-gray-300"
|
|
3318
|
+
}), /*#__PURE__*/jsx("p", {
|
|
3319
|
+
className: "text-base font-normal text-gray-400",
|
|
3320
|
+
children: "Choose how you'd like to create your new dashboard."
|
|
3321
|
+
})]
|
|
3322
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3323
|
+
className: "flex flex-col w-2/3 p-6 pt-10 space-y-3",
|
|
3324
|
+
children: [/*#__PURE__*/jsx(OptionCard$1, {
|
|
3325
|
+
icon: "plus",
|
|
3326
|
+
title: "New Dashboard",
|
|
3327
|
+
description: "Start from a blank template and customize your layout",
|
|
3328
|
+
onClick: function onClick() {
|
|
3329
|
+
return onSelect("template");
|
|
3330
|
+
}
|
|
3331
|
+
}), /*#__PURE__*/jsx(OptionCard$1, {
|
|
3332
|
+
icon: "file-zipper",
|
|
3333
|
+
title: "Import from File",
|
|
3334
|
+
description: "Import a dashboard from a .zip file on your computer",
|
|
3335
|
+
onClick: function onClick() {
|
|
3336
|
+
return onSelect("import");
|
|
3337
|
+
}
|
|
3338
|
+
}), /*#__PURE__*/jsx(OptionCard$1, {
|
|
3339
|
+
icon: "compass",
|
|
3340
|
+
title: "Search Registry",
|
|
3341
|
+
description: "Browse and install dashboards from the online registry",
|
|
3342
|
+
onClick: function onClick() {
|
|
3343
|
+
return onSelect("registry");
|
|
3344
|
+
}
|
|
3345
|
+
})]
|
|
3346
|
+
})]
|
|
3347
|
+
});
|
|
3348
|
+
};
|
|
3349
|
+
|
|
3350
|
+
var StarRating = function StarRating(_ref) {
|
|
3351
|
+
var appId = _ref.appId,
|
|
3352
|
+
packageName = _ref.packageName,
|
|
3353
|
+
_ref$interactive = _ref.interactive,
|
|
3354
|
+
interactive = _ref$interactive === void 0 ? true : _ref$interactive;
|
|
3355
|
+
var _useContext = useContext(ThemeContext),
|
|
3356
|
+
currentTheme = _useContext.currentTheme;
|
|
3357
|
+
var _useState = useState(0),
|
|
3358
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3359
|
+
rating = _useState2[0],
|
|
3360
|
+
setRating = _useState2[1];
|
|
3361
|
+
var _useState3 = useState(0),
|
|
3362
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3363
|
+
hoverRating = _useState4[0],
|
|
3364
|
+
setHoverRating = _useState4[1];
|
|
3365
|
+
var _useState5 = useState(true),
|
|
3366
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3367
|
+
loading = _useState6[0],
|
|
3368
|
+
setLoading = _useState6[1];
|
|
3369
|
+
useEffect(function () {
|
|
3370
|
+
var _window$mainApi;
|
|
3371
|
+
if (!appId || !packageName) return;
|
|
3372
|
+
var cancelled = false;
|
|
3373
|
+
setLoading(true);
|
|
3374
|
+
(_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.dashboardRatings) === null || _window$mainApi === void 0 || _window$mainApi.getDashboardRating(appId, packageName).then(function (result) {
|
|
3375
|
+
if (!cancelled && result !== null && result !== void 0 && result.rating) {
|
|
3376
|
+
setRating(result.rating);
|
|
3377
|
+
}
|
|
3378
|
+
})["catch"](function () {})["finally"](function () {
|
|
3379
|
+
if (!cancelled) setLoading(false);
|
|
3380
|
+
});
|
|
3381
|
+
return function () {
|
|
3382
|
+
cancelled = true;
|
|
3383
|
+
};
|
|
3384
|
+
}, [appId, packageName]);
|
|
3385
|
+
function handleClick(_x) {
|
|
3386
|
+
return _handleClick.apply(this, arguments);
|
|
3387
|
+
}
|
|
3388
|
+
function _handleClick() {
|
|
3389
|
+
_handleClick = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(value) {
|
|
3390
|
+
var newRating, _window$mainApi2;
|
|
3391
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
3392
|
+
while (1) switch (_context.prev = _context.next) {
|
|
3393
|
+
case 0:
|
|
3394
|
+
if (!(!interactive || !appId || !packageName)) {
|
|
3395
|
+
_context.next = 1;
|
|
3396
|
+
break;
|
|
3397
|
+
}
|
|
3398
|
+
return _context.abrupt("return");
|
|
3399
|
+
case 1:
|
|
3400
|
+
newRating = value === rating ? 0 : value;
|
|
3401
|
+
setRating(newRating);
|
|
3402
|
+
_context.prev = 2;
|
|
3403
|
+
_context.next = 3;
|
|
3404
|
+
return (_window$mainApi2 = window.mainApi) === null || _window$mainApi2 === void 0 || (_window$mainApi2 = _window$mainApi2.dashboardRatings) === null || _window$mainApi2 === void 0 ? void 0 : _window$mainApi2.saveDashboardRating(appId, packageName, newRating);
|
|
3405
|
+
case 3:
|
|
3406
|
+
_context.next = 5;
|
|
3407
|
+
break;
|
|
3408
|
+
case 4:
|
|
3409
|
+
_context.prev = 4;
|
|
3410
|
+
_context["catch"](2);
|
|
3411
|
+
case 5:
|
|
3412
|
+
case "end":
|
|
3413
|
+
return _context.stop();
|
|
3414
|
+
}
|
|
3415
|
+
}, _callee, null, [[2, 4]]);
|
|
3416
|
+
}));
|
|
3417
|
+
return _handleClick.apply(this, arguments);
|
|
3418
|
+
}
|
|
3419
|
+
if (loading) return null;
|
|
3420
|
+
var displayRating = hoverRating || rating;
|
|
3421
|
+
return /*#__PURE__*/jsx("div", {
|
|
3422
|
+
className: "flex items-center gap-0.5",
|
|
3423
|
+
onMouseLeave: function onMouseLeave() {
|
|
3424
|
+
return setHoverRating(0);
|
|
3425
|
+
},
|
|
3426
|
+
children: [1, 2, 3, 4, 5].map(function (star) {
|
|
3427
|
+
return /*#__PURE__*/jsx("button", {
|
|
3428
|
+
type: "button",
|
|
3429
|
+
disabled: !interactive,
|
|
3430
|
+
onClick: function onClick() {
|
|
3431
|
+
return handleClick(star);
|
|
3432
|
+
},
|
|
3433
|
+
onMouseEnter: function onMouseEnter() {
|
|
3434
|
+
return interactive && setHoverRating(star);
|
|
3435
|
+
},
|
|
3436
|
+
className: "p-0.5 transition-colors ".concat(interactive ? "cursor-pointer hover:scale-110" : "cursor-default"),
|
|
3437
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3438
|
+
icon: star <= displayRating ? "star" : ["far", "star"],
|
|
3439
|
+
className: "h-3.5 w-3.5 ".concat(star <= displayRating ? "text-yellow-400" : currentTheme["text-primary-medium"] || "text-gray-500")
|
|
3440
|
+
})
|
|
3441
|
+
}, star);
|
|
3442
|
+
})
|
|
3443
|
+
});
|
|
3444
|
+
};
|
|
3445
|
+
|
|
3446
|
+
var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
3447
|
+
var dashboardPackage = _ref.dashboardPackage,
|
|
3448
|
+
appId = _ref.appId;
|
|
3449
|
+
var _useContext = useContext(ThemeContext),
|
|
3450
|
+
currentTheme = _useContext.currentTheme;
|
|
3451
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
3452
|
+
grow: false
|
|
3453
|
+
});
|
|
3454
|
+
var _useState = useState(null),
|
|
3455
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3456
|
+
preview = _useState2[0],
|
|
3457
|
+
setPreview = _useState2[1];
|
|
3458
|
+
var _useState3 = useState(false),
|
|
3459
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3460
|
+
previewLoading = _useState4[0],
|
|
3461
|
+
setPreviewLoading = _useState4[1];
|
|
3462
|
+
var _useState5 = useState(false),
|
|
3463
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3464
|
+
isInstalling = _useState6[0],
|
|
3465
|
+
setIsInstalling = _useState6[1];
|
|
3466
|
+
var _useState7 = useState(null),
|
|
3467
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
3468
|
+
installResult = _useState8[0],
|
|
3469
|
+
setInstallResult = _useState8[1];
|
|
3470
|
+
var pkg = dashboardPackage;
|
|
3471
|
+
if (!pkg) return null;
|
|
3472
|
+
|
|
3473
|
+
// Load preview data on mount
|
|
3474
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
3475
|
+
useEffect(function () {
|
|
3476
|
+
var _window$mainApi;
|
|
3477
|
+
if (!pkg.name) return;
|
|
3478
|
+
var cancelled = false;
|
|
3479
|
+
setPreviewLoading(true);
|
|
3480
|
+
setPreview(null);
|
|
3481
|
+
setInstallResult(null);
|
|
3482
|
+
(_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.dashboardConfig) === null || _window$mainApi === void 0 || _window$mainApi.getDashboardPreview(pkg.name).then(function (result) {
|
|
3483
|
+
if (!cancelled) setPreview(result);
|
|
3484
|
+
})["catch"](function (err) {
|
|
3485
|
+
})["finally"](function () {
|
|
3486
|
+
if (!cancelled) setPreviewLoading(false);
|
|
3487
|
+
});
|
|
3488
|
+
return function () {
|
|
3489
|
+
cancelled = true;
|
|
3490
|
+
};
|
|
3491
|
+
}, [pkg.name]);
|
|
3492
|
+
function handleInstall() {
|
|
3493
|
+
return _handleInstall.apply(this, arguments);
|
|
3494
|
+
}
|
|
3495
|
+
function _handleInstall() {
|
|
3496
|
+
_handleInstall = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
3497
|
+
var _result$workspace, result, _t;
|
|
3498
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
3499
|
+
while (1) switch (_context.prev = _context.next) {
|
|
3500
|
+
case 0:
|
|
3501
|
+
if (!(!appId || !pkg.name)) {
|
|
3502
|
+
_context.next = 1;
|
|
3503
|
+
break;
|
|
3504
|
+
}
|
|
3505
|
+
return _context.abrupt("return");
|
|
3506
|
+
case 1:
|
|
3507
|
+
setIsInstalling(true);
|
|
3508
|
+
setInstallResult(null);
|
|
3509
|
+
_context.prev = 2;
|
|
3510
|
+
_context.next = 3;
|
|
3511
|
+
return window.mainApi.dashboardConfig.installDashboardFromRegistry(appId, pkg.name);
|
|
3512
|
+
case 3:
|
|
3513
|
+
result = _context.sent;
|
|
3514
|
+
setInstallResult({
|
|
3515
|
+
status: result !== null && result !== void 0 && result.success ? "success" : "error",
|
|
3516
|
+
message: result !== null && result !== void 0 && result.success ? "Dashboard \"".concat(((_result$workspace = result.workspace) === null || _result$workspace === void 0 ? void 0 : _result$workspace.name) || pkg.name, "\" installed successfully.") : (result === null || result === void 0 ? void 0 : result.error) || "Installation failed."
|
|
3517
|
+
});
|
|
3518
|
+
_context.next = 5;
|
|
3519
|
+
break;
|
|
3520
|
+
case 4:
|
|
3521
|
+
_context.prev = 4;
|
|
3522
|
+
_t = _context["catch"](2);
|
|
3523
|
+
setInstallResult({
|
|
3524
|
+
status: "error",
|
|
3525
|
+
message: _t.message || "Failed to install dashboard."
|
|
3526
|
+
});
|
|
3527
|
+
case 5:
|
|
3528
|
+
_context.prev = 5;
|
|
3529
|
+
setIsInstalling(false);
|
|
3530
|
+
return _context.finish(5);
|
|
3531
|
+
case 6:
|
|
3532
|
+
case "end":
|
|
3533
|
+
return _context.stop();
|
|
3534
|
+
}
|
|
3535
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
3536
|
+
}));
|
|
3537
|
+
return _handleInstall.apply(this, arguments);
|
|
3538
|
+
}
|
|
3539
|
+
var compatibility = preview === null || preview === void 0 ? void 0 : preview.compatibility;
|
|
3540
|
+
var widgetDeps = (preview === null || preview === void 0 ? void 0 : preview.widgets) || pkg.widgets || [];
|
|
3541
|
+
var providers = (preview === null || preview === void 0 ? void 0 : preview.providers) || [];
|
|
3542
|
+
var wiring = (preview === null || preview === void 0 ? void 0 : preview.wiring) || [];
|
|
3543
|
+
function getCompatIcon(status) {
|
|
3544
|
+
if (status === "installed") return {
|
|
3545
|
+
icon: "circle-check",
|
|
3546
|
+
color: "text-green-400"
|
|
3547
|
+
};
|
|
3548
|
+
if (status === "available") return {
|
|
3549
|
+
icon: "circle-down",
|
|
3550
|
+
color: "text-blue-400"
|
|
3551
|
+
};
|
|
3552
|
+
return {
|
|
3553
|
+
icon: "circle-xmark",
|
|
3554
|
+
color: "text-red-400"
|
|
3555
|
+
};
|
|
3556
|
+
}
|
|
3557
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3558
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
3559
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
3560
|
+
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
3561
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
3562
|
+
className: "flex flex-row items-center gap-3",
|
|
3563
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3564
|
+
className: "h-5 w-5 flex-shrink-0 flex items-center justify-center",
|
|
3565
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3566
|
+
icon: pkg.icon || "clone",
|
|
3567
|
+
className: "h-5 w-5"
|
|
3568
|
+
})
|
|
3569
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3570
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
3571
|
+
title: pkg.displayName || pkg.name,
|
|
3572
|
+
padding: false
|
|
3573
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3574
|
+
className: "flex items-center gap-2 mt-0.5",
|
|
3575
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
3576
|
+
className: "text-sm opacity-60",
|
|
3577
|
+
children: ["by ", pkg.author || "Unknown"]
|
|
3578
|
+
}), pkg.version && /*#__PURE__*/jsxs("span", {
|
|
3579
|
+
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
3580
|
+
children: ["v", pkg.version]
|
|
3581
|
+
})]
|
|
3582
|
+
})]
|
|
3583
|
+
})]
|
|
3584
|
+
}), appId && /*#__PURE__*/jsx(StarRating, {
|
|
3585
|
+
appId: appId,
|
|
3586
|
+
packageName: pkg.name,
|
|
3587
|
+
interactive: false
|
|
3588
|
+
}), /*#__PURE__*/jsx("hr", {
|
|
3589
|
+
className: currentTheme["border-primary-medium"]
|
|
3590
|
+
}), pkg.description && /*#__PURE__*/jsx("p", {
|
|
3591
|
+
className: "text-sm",
|
|
3592
|
+
children: pkg.description
|
|
3593
|
+
}), pkg.tags && pkg.tags.length > 0 && /*#__PURE__*/jsx("div", {
|
|
3594
|
+
className: "flex flex-wrap gap-1",
|
|
3595
|
+
children: pkg.tags.map(function (tag) {
|
|
3596
|
+
return /*#__PURE__*/jsx("span", {
|
|
3597
|
+
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-60"),
|
|
3598
|
+
children: tag
|
|
3599
|
+
}, tag);
|
|
3600
|
+
})
|
|
3601
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
3602
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3603
|
+
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
3604
|
+
children: "REQUIRED WIDGETS"
|
|
3605
|
+
}), previewLoading ? /*#__PURE__*/jsxs("div", {
|
|
3606
|
+
className: "flex items-center gap-2 py-2",
|
|
3607
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3608
|
+
className: "animate-spin rounded-full h-4 w-4 border-b-2 border-blue-500"
|
|
3609
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3610
|
+
className: "text-xs opacity-50",
|
|
3611
|
+
children: "Checking compatibility..."
|
|
3612
|
+
})]
|
|
3613
|
+
}) : /*#__PURE__*/jsx("div", {
|
|
3614
|
+
className: "space-y-1.5",
|
|
3615
|
+
children: widgetDeps.map(function (w, idx) {
|
|
3616
|
+
var _compatibility$widget;
|
|
3617
|
+
var status = (compatibility === null || compatibility === void 0 || (_compatibility$widget = compatibility.widgets) === null || _compatibility$widget === void 0 ? void 0 : _compatibility$widget[w.name || w.packageName]) || "unknown";
|
|
3618
|
+
var compat = getCompatIcon(status);
|
|
3619
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3620
|
+
className: "p-2 rounded ".concat(currentTheme["bg-primary-medium"], " flex items-center gap-2"),
|
|
3621
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3622
|
+
icon: compat.icon,
|
|
3623
|
+
className: "h-3.5 w-3.5 ".concat(compat.color)
|
|
3624
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3625
|
+
className: "text-sm",
|
|
3626
|
+
children: w.displayName || w.name || w.packageName
|
|
3627
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3628
|
+
className: "text-xs opacity-40 ml-auto",
|
|
3629
|
+
children: status === "installed" ? "Installed" : status === "available" ? "Will install" : "Unavailable"
|
|
3630
|
+
})]
|
|
3631
|
+
}, idx);
|
|
3632
|
+
})
|
|
3633
|
+
})]
|
|
3634
|
+
}), providers.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
3635
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3636
|
+
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
3637
|
+
children: "REQUIRED PROVIDERS"
|
|
3638
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3639
|
+
className: "space-y-1",
|
|
3640
|
+
children: providers.map(function (p, idx) {
|
|
3641
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3642
|
+
className: "flex items-center gap-2",
|
|
3643
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3644
|
+
className: "text-xs px-1.5 py-0.5 rounded bg-blue-900/30 text-blue-400",
|
|
3645
|
+
children: p.type
|
|
3646
|
+
}), p.required && /*#__PURE__*/jsx("span", {
|
|
3647
|
+
className: "text-[10px] opacity-40",
|
|
3648
|
+
children: "Required"
|
|
3649
|
+
})]
|
|
3650
|
+
}, idx);
|
|
3651
|
+
})
|
|
3652
|
+
})]
|
|
3653
|
+
}), wiring.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
3654
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3655
|
+
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
3656
|
+
children: "EVENT WIRING"
|
|
3657
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3658
|
+
className: "space-y-1",
|
|
3659
|
+
children: wiring.map(function (w, idx) {
|
|
3660
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3661
|
+
className: "text-xs p-2 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
3662
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
3663
|
+
className: "font-medium",
|
|
3664
|
+
children: w.from || "Source"
|
|
3665
|
+
}), /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3666
|
+
icon: "arrow-right",
|
|
3667
|
+
className: "h-2.5 w-2.5 mx-1.5 opacity-50"
|
|
3668
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3669
|
+
className: "font-medium",
|
|
3670
|
+
children: w.to || "Target"
|
|
3671
|
+
}), w.event && /*#__PURE__*/jsxs("span", {
|
|
3672
|
+
className: "opacity-50 ml-1.5",
|
|
3673
|
+
children: ["(", w.event, ")"]
|
|
3674
|
+
})]
|
|
3675
|
+
}, idx);
|
|
3676
|
+
})
|
|
3677
|
+
})]
|
|
3678
|
+
}), installResult && /*#__PURE__*/jsx("div", {
|
|
3679
|
+
className: "p-2 rounded border ".concat(installResult.status === "success" ? "bg-green-900/20 border-green-700" : "bg-red-900/30 border-red-700"),
|
|
3680
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
3681
|
+
className: "flex items-center gap-2",
|
|
3682
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3683
|
+
icon: installResult.status === "success" ? "circle-check" : "circle-xmark",
|
|
3684
|
+
className: "h-4 w-4 ".concat(installResult.status === "success" ? "text-green-400" : "text-red-400")
|
|
3685
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3686
|
+
className: "text-sm ".concat(installResult.status === "error" ? "text-red-400" : ""),
|
|
3687
|
+
children: installResult.message
|
|
3688
|
+
})]
|
|
3689
|
+
})
|
|
3690
|
+
})]
|
|
3691
|
+
}), (installResult === null || installResult === void 0 ? void 0 : installResult.status) !== "success" && /*#__PURE__*/jsx("div", {
|
|
3692
|
+
className: "flex items-center justify-end px-6 py-3 border-t ".concat(currentTheme["border-primary-medium"]),
|
|
3693
|
+
children: /*#__PURE__*/jsx(Button, {
|
|
3694
|
+
title: isInstalling ? "Installing..." : "Install Dashboard",
|
|
3695
|
+
bgColor: "bg-blue-600",
|
|
3696
|
+
hoverBackgroundColor: isInstalling ? "" : "hover:bg-blue-700",
|
|
3697
|
+
textSize: "text-sm",
|
|
3698
|
+
padding: "py-1.5 px-4",
|
|
3699
|
+
onClick: handleInstall,
|
|
3700
|
+
disabled: isInstalling
|
|
3701
|
+
})
|
|
3702
|
+
})]
|
|
3703
|
+
});
|
|
3704
|
+
};
|
|
3705
|
+
|
|
3706
|
+
var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
|
|
3707
|
+
var onBack = _ref.onBack,
|
|
3708
|
+
appId = _ref.appId;
|
|
3709
|
+
var _useContext = useContext(ThemeContext),
|
|
3710
|
+
currentTheme = _useContext.currentTheme;
|
|
3711
|
+
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
3712
|
+
grow: false
|
|
3713
|
+
});
|
|
3714
|
+
var _useState = useState([]),
|
|
3715
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3716
|
+
packages = _useState2[0],
|
|
3717
|
+
setPackages = _useState2[1];
|
|
3718
|
+
var _useState3 = useState(false),
|
|
3719
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3720
|
+
isLoading = _useState4[0],
|
|
3721
|
+
setIsLoading = _useState4[1];
|
|
3722
|
+
var _useState5 = useState(null),
|
|
3723
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3724
|
+
error = _useState6[0],
|
|
3725
|
+
setError = _useState6[1];
|
|
3726
|
+
var _useState7 = useState(""),
|
|
3727
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
3728
|
+
searchQuery = _useState8[0],
|
|
3729
|
+
setSearchQuery = _useState8[1];
|
|
3730
|
+
var _useState9 = useState(null),
|
|
3731
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
3732
|
+
selectedPackageName = _useState0[0],
|
|
3733
|
+
setSelectedPackageName = _useState0[1];
|
|
3734
|
+
var search = useCallback(/*#__PURE__*/function () {
|
|
3735
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
|
|
3736
|
+
var _window$mainApi;
|
|
3737
|
+
var result, _t;
|
|
3738
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
3739
|
+
while (1) switch (_context.prev = _context.next) {
|
|
3740
|
+
case 0:
|
|
3741
|
+
if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchDashboards) {
|
|
3742
|
+
_context.next = 1;
|
|
3743
|
+
break;
|
|
3744
|
+
}
|
|
3745
|
+
setPackages([]);
|
|
3746
|
+
return _context.abrupt("return");
|
|
3747
|
+
case 1:
|
|
3748
|
+
setIsLoading(true);
|
|
3749
|
+
setError(null);
|
|
3750
|
+
_context.prev = 2;
|
|
3751
|
+
_context.next = 3;
|
|
3752
|
+
return window.mainApi.registry.searchDashboards(query || "", {});
|
|
3753
|
+
case 3:
|
|
3754
|
+
result = _context.sent;
|
|
3755
|
+
setPackages((result === null || result === void 0 ? void 0 : result.packages) || []);
|
|
3756
|
+
_context.next = 5;
|
|
3757
|
+
break;
|
|
3758
|
+
case 4:
|
|
3759
|
+
_context.prev = 4;
|
|
3760
|
+
_t = _context["catch"](2);
|
|
3761
|
+
setError(_t.message || "Failed to search dashboard registry");
|
|
3762
|
+
setPackages([]);
|
|
3763
|
+
case 5:
|
|
3764
|
+
_context.prev = 5;
|
|
3765
|
+
setIsLoading(false);
|
|
3766
|
+
return _context.finish(5);
|
|
3767
|
+
case 6:
|
|
3768
|
+
case "end":
|
|
3769
|
+
return _context.stop();
|
|
3770
|
+
}
|
|
3771
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
3772
|
+
}));
|
|
3773
|
+
return function (_x) {
|
|
3774
|
+
return _ref2.apply(this, arguments);
|
|
3775
|
+
};
|
|
3776
|
+
}(), []);
|
|
3777
|
+
|
|
3778
|
+
// Debounce search on query changes
|
|
3779
|
+
useEffect(function () {
|
|
3780
|
+
var timer = setTimeout(function () {
|
|
3781
|
+
search(searchQuery);
|
|
3782
|
+
}, 300);
|
|
3783
|
+
return function () {
|
|
3784
|
+
return clearTimeout(timer);
|
|
3785
|
+
};
|
|
3786
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3787
|
+
}, [searchQuery]);
|
|
3788
|
+
var retry = function retry() {
|
|
3789
|
+
return search(searchQuery);
|
|
3790
|
+
};
|
|
3791
|
+
var selectedPackage = selectedPackageName ? packages.find(function (p) {
|
|
3792
|
+
return p.name === selectedPackageName;
|
|
3793
|
+
}) : null;
|
|
3794
|
+
|
|
3795
|
+
// If a package is selected, show its detail inline
|
|
3796
|
+
if (selectedPackage) {
|
|
3797
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3798
|
+
className: "flex flex-col flex-1 min-h-0",
|
|
3799
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3800
|
+
className: "flex-shrink-0 px-4 pt-4",
|
|
3801
|
+
children: /*#__PURE__*/jsxs("button", {
|
|
3802
|
+
type: "button",
|
|
3803
|
+
onClick: function onClick() {
|
|
3804
|
+
return setSelectedPackageName(null);
|
|
3805
|
+
},
|
|
3806
|
+
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
3807
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3808
|
+
icon: "arrow-left",
|
|
3809
|
+
className: "h-3 w-3"
|
|
3810
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3811
|
+
children: "Back"
|
|
3812
|
+
})]
|
|
3813
|
+
})
|
|
3814
|
+
}), /*#__PURE__*/jsx(RegistryDashboardDetail, {
|
|
3815
|
+
dashboardPackage: selectedPackage,
|
|
3816
|
+
appId: appId
|
|
3817
|
+
})]
|
|
3818
|
+
});
|
|
3819
|
+
}
|
|
3820
|
+
|
|
3821
|
+
// Package list view
|
|
3822
|
+
var listBody;
|
|
3823
|
+
if (isLoading) {
|
|
3824
|
+
listBody = /*#__PURE__*/jsx("div", {
|
|
3825
|
+
className: "flex items-center justify-center py-12",
|
|
3826
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
3827
|
+
className: "text-center",
|
|
3828
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3829
|
+
className: "animate-spin rounded-full h-6 w-6 border-b-2 border-blue-500 mx-auto mb-3"
|
|
3830
|
+
}), /*#__PURE__*/jsx(Paragraph, {
|
|
3831
|
+
className: "text-sm opacity-50",
|
|
3832
|
+
children: "Loading dashboards..."
|
|
3833
|
+
})]
|
|
3834
|
+
})
|
|
3835
|
+
});
|
|
3836
|
+
} else if (error) {
|
|
3837
|
+
listBody = /*#__PURE__*/jsxs("div", {
|
|
3838
|
+
className: "px-4 py-8 text-center",
|
|
3839
|
+
children: [/*#__PURE__*/jsx(Paragraph, {
|
|
3840
|
+
className: "text-sm text-red-400 mb-3",
|
|
3841
|
+
children: error
|
|
3842
|
+
}), /*#__PURE__*/jsx(Button, {
|
|
3843
|
+
title: "Retry",
|
|
3844
|
+
bgColor: "bg-gray-700",
|
|
3845
|
+
hoverBackgroundColor: "hover:bg-gray-600",
|
|
3846
|
+
textSize: "text-sm",
|
|
3847
|
+
padding: "py-1 px-3",
|
|
3848
|
+
onClick: retry
|
|
3849
|
+
})]
|
|
3850
|
+
});
|
|
3851
|
+
} else if (packages.length === 0) {
|
|
3852
|
+
listBody = /*#__PURE__*/jsx("div", {
|
|
3853
|
+
className: "px-4 py-8 text-center",
|
|
3854
|
+
children: /*#__PURE__*/jsx(Paragraph, {
|
|
3855
|
+
className: "text-sm opacity-50",
|
|
3856
|
+
children: searchQuery ? "No dashboards match your search." : "No dashboard packages available."
|
|
3857
|
+
})
|
|
3858
|
+
});
|
|
3859
|
+
} else {
|
|
3860
|
+
listBody = /*#__PURE__*/jsx("div", {
|
|
3861
|
+
className: "space-y-1",
|
|
3862
|
+
children: packages.map(function (pkg) {
|
|
3863
|
+
var widgetCount = (pkg.widgets || []).length;
|
|
3864
|
+
return /*#__PURE__*/jsx(Sidebar.Item, {
|
|
3865
|
+
icon: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3866
|
+
icon: pkg.icon || "clone",
|
|
3867
|
+
className: "h-3.5 w-3.5"
|
|
3868
|
+
}),
|
|
3869
|
+
onClick: function onClick() {
|
|
3870
|
+
return setSelectedPackageName(pkg.name);
|
|
3871
|
+
},
|
|
3872
|
+
badge: widgetCount > 0 ? "".concat(widgetCount) : undefined,
|
|
3873
|
+
children: pkg.displayName || pkg.name
|
|
3874
|
+
}, pkg.name);
|
|
3875
|
+
})
|
|
3876
|
+
});
|
|
3877
|
+
}
|
|
3878
|
+
return /*#__PURE__*/jsxs("div", {
|
|
3879
|
+
className: "flex flex-col flex-1 min-h-0 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
3880
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
3881
|
+
className: "flex-shrink-0 px-4 pt-4",
|
|
3882
|
+
children: /*#__PURE__*/jsxs("button", {
|
|
3883
|
+
type: "button",
|
|
3884
|
+
onClick: onBack,
|
|
3885
|
+
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
3886
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
3887
|
+
icon: "arrow-left",
|
|
3888
|
+
className: "h-3 w-3"
|
|
3889
|
+
}), /*#__PURE__*/jsx("span", {
|
|
3890
|
+
children: "Back"
|
|
3891
|
+
})]
|
|
3892
|
+
})
|
|
3893
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3894
|
+
className: "flex-shrink-0 px-4 py-3",
|
|
3895
|
+
children: /*#__PURE__*/jsx(SearchInput, {
|
|
3896
|
+
value: searchQuery,
|
|
3897
|
+
onChange: setSearchQuery,
|
|
3898
|
+
placeholder: "Search dashboards...",
|
|
3899
|
+
inputClassName: "py-1.5 text-xs"
|
|
3900
|
+
})
|
|
3901
|
+
}), /*#__PURE__*/jsx("div", {
|
|
3902
|
+
className: "flex-1 min-h-0 overflow-y-auto px-2",
|
|
3903
|
+
children: listBody
|
|
3904
|
+
}), !isLoading && !error && packages.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
3905
|
+
className: "flex-shrink-0 px-4 py-2 text-[10px] opacity-40 border-t border-white/10",
|
|
3906
|
+
children: [packages.length, " dashboard", packages.length !== 1 ? "s" : ""]
|
|
3907
|
+
})]
|
|
3908
|
+
});
|
|
3909
|
+
};
|
|
3910
|
+
|
|
3275
3911
|
var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
3276
3912
|
var open = _ref.open,
|
|
3277
3913
|
setIsOpen = _ref.setIsOpen,
|
|
@@ -3279,52 +3915,59 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
|
3279
3915
|
_ref$menuItems = _ref.menuItems,
|
|
3280
3916
|
menuItems = _ref$menuItems === void 0 ? [] : _ref$menuItems,
|
|
3281
3917
|
_ref$onSaveMenuItem = _ref.onSaveMenuItem,
|
|
3282
|
-
onSaveMenuItem = _ref$onSaveMenuItem === void 0 ? null : _ref$onSaveMenuItem
|
|
3918
|
+
onSaveMenuItem = _ref$onSaveMenuItem === void 0 ? null : _ref$onSaveMenuItem,
|
|
3919
|
+
appId = _ref.appId,
|
|
3920
|
+
onReloadWorkspaces = _ref.onReloadWorkspaces;
|
|
3283
3921
|
var _useContext = useContext(ThemeContext),
|
|
3284
3922
|
themes = _useContext.themes,
|
|
3285
3923
|
appThemeKey = _useContext.themeKey;
|
|
3286
|
-
var _useState = useState(
|
|
3924
|
+
var _useState = useState(null),
|
|
3287
3925
|
_useState2 = _slicedToArray(_useState, 2),
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
var _useState3 = useState(
|
|
3926
|
+
creationMethod = _useState2[0],
|
|
3927
|
+
setCreationMethod = _useState2[1];
|
|
3928
|
+
var _useState3 = useState(""),
|
|
3291
3929
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
var _useState5 = useState(0),
|
|
3930
|
+
dashboardName = _useState4[0],
|
|
3931
|
+
setDashboardName = _useState4[1];
|
|
3932
|
+
var _useState5 = useState(layoutTemplates[0]),
|
|
3295
3933
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
var _useState7 = useState(
|
|
3934
|
+
selectedTemplate = _useState6[0],
|
|
3935
|
+
setSelectedTemplate = _useState6[1];
|
|
3936
|
+
var _useState7 = useState(0),
|
|
3299
3937
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
3300
|
-
|
|
3301
|
-
|
|
3938
|
+
activeStep = _useState8[0],
|
|
3939
|
+
setActiveStep = _useState8[1];
|
|
3302
3940
|
var _useState9 = useState(null),
|
|
3303
3941
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
var _useState1 = useState(
|
|
3942
|
+
selectedMenuId = _useState0[0],
|
|
3943
|
+
setSelectedMenuId = _useState0[1];
|
|
3944
|
+
var _useState1 = useState(null),
|
|
3307
3945
|
_useState10 = _slicedToArray(_useState1, 2),
|
|
3308
|
-
|
|
3309
|
-
|
|
3946
|
+
selectedThemeKey = _useState10[0],
|
|
3947
|
+
setSelectedThemeKey = _useState10[1];
|
|
3948
|
+
var _useState11 = useState([]),
|
|
3949
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
3950
|
+
localMenuItems = _useState12[0],
|
|
3951
|
+
setLocalMenuItems = _useState12[1];
|
|
3310
3952
|
|
|
3311
3953
|
// Inline new-folder form state
|
|
3312
|
-
var
|
|
3313
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
3314
|
-
isCreatingFolder = _useState12[0],
|
|
3315
|
-
setIsCreatingFolder = _useState12[1];
|
|
3316
|
-
var _useState13 = useState(""),
|
|
3954
|
+
var _useState13 = useState(false),
|
|
3317
3955
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
var _useState15 = useState(
|
|
3956
|
+
isCreatingFolder = _useState14[0],
|
|
3957
|
+
setIsCreatingFolder = _useState14[1];
|
|
3958
|
+
var _useState15 = useState(""),
|
|
3321
3959
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
3322
|
-
|
|
3323
|
-
|
|
3960
|
+
newFolderName = _useState16[0],
|
|
3961
|
+
setNewFolderName = _useState16[1];
|
|
3962
|
+
var _useState17 = useState(null),
|
|
3963
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
3964
|
+
newFolderIcon = _useState18[0],
|
|
3965
|
+
setNewFolderIcon = _useState18[1];
|
|
3324
3966
|
|
|
3325
3967
|
// Reset state when modal opens
|
|
3326
3968
|
useEffect(function () {
|
|
3327
3969
|
if (open) {
|
|
3970
|
+
setCreationMethod(null);
|
|
3328
3971
|
setDashboardName("");
|
|
3329
3972
|
setActiveStep(0);
|
|
3330
3973
|
setLocalMenuItems(menuItems || []);
|
|
@@ -3372,16 +4015,85 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
|
3372
4015
|
setSelectedTemplate(template);
|
|
3373
4016
|
setActiveStep(2);
|
|
3374
4017
|
}
|
|
4018
|
+
function handleMethodSelect(method) {
|
|
4019
|
+
if (method === "import") {
|
|
4020
|
+
handleImportFromFile();
|
|
4021
|
+
} else {
|
|
4022
|
+
setCreationMethod(method);
|
|
4023
|
+
}
|
|
4024
|
+
}
|
|
4025
|
+
function handleImportFromFile() {
|
|
4026
|
+
return _handleImportFromFile.apply(this, arguments);
|
|
4027
|
+
}
|
|
4028
|
+
function _handleImportFromFile() {
|
|
4029
|
+
_handleImportFromFile = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
4030
|
+
var result;
|
|
4031
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
4032
|
+
while (1) switch (_context.prev = _context.next) {
|
|
4033
|
+
case 0:
|
|
4034
|
+
handleClose();
|
|
4035
|
+
_context.prev = 1;
|
|
4036
|
+
_context.next = 2;
|
|
4037
|
+
return window.mainApi.dashboardConfig.importDashboardConfig(appId);
|
|
4038
|
+
case 2:
|
|
4039
|
+
result = _context.sent;
|
|
4040
|
+
if (result && !result.canceled && result.success) {
|
|
4041
|
+
onReloadWorkspaces && onReloadWorkspaces();
|
|
4042
|
+
}
|
|
4043
|
+
_context.next = 4;
|
|
4044
|
+
break;
|
|
4045
|
+
case 3:
|
|
4046
|
+
_context.prev = 3;
|
|
4047
|
+
_context["catch"](1);
|
|
4048
|
+
case 4:
|
|
4049
|
+
case "end":
|
|
4050
|
+
return _context.stop();
|
|
4051
|
+
}
|
|
4052
|
+
}, _callee, null, [[1, 3]]);
|
|
4053
|
+
}));
|
|
4054
|
+
return _handleImportFromFile.apply(this, arguments);
|
|
4055
|
+
}
|
|
3375
4056
|
var selectedFolder = localMenuItems.find(function (item) {
|
|
3376
4057
|
return item.id === selectedMenuId;
|
|
3377
4058
|
});
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
4059
|
+
|
|
4060
|
+
// ─── Render body based on creationMethod ─────────────────────────
|
|
4061
|
+
function renderBody() {
|
|
4062
|
+
if (creationMethod === null) {
|
|
4063
|
+
return /*#__PURE__*/jsx(Panel, {
|
|
4064
|
+
backgroundColor: "bg-slate-800",
|
|
4065
|
+
padding: false,
|
|
4066
|
+
children: /*#__PURE__*/jsx(Panel.Body, {
|
|
4067
|
+
scrollable: false,
|
|
4068
|
+
className: "h-full",
|
|
4069
|
+
children: /*#__PURE__*/jsx("div", {
|
|
4070
|
+
className: "h-full p-6 pb-0",
|
|
4071
|
+
children: /*#__PURE__*/jsx(CreationMethodPicker, {
|
|
4072
|
+
onSelect: handleMethodSelect
|
|
4073
|
+
})
|
|
4074
|
+
})
|
|
4075
|
+
})
|
|
4076
|
+
});
|
|
4077
|
+
}
|
|
4078
|
+
if (creationMethod === "registry") {
|
|
4079
|
+
return /*#__PURE__*/jsx(Panel, {
|
|
4080
|
+
backgroundColor: "bg-slate-800",
|
|
4081
|
+
padding: false,
|
|
4082
|
+
children: /*#__PURE__*/jsx(Panel.Body, {
|
|
4083
|
+
scrollable: false,
|
|
4084
|
+
className: "h-full",
|
|
4085
|
+
children: /*#__PURE__*/jsx(DiscoverDashboardsDetail, {
|
|
4086
|
+
onBack: function onBack() {
|
|
4087
|
+
return setCreationMethod(null);
|
|
4088
|
+
},
|
|
4089
|
+
appId: appId
|
|
4090
|
+
})
|
|
4091
|
+
})
|
|
4092
|
+
});
|
|
4093
|
+
}
|
|
4094
|
+
|
|
4095
|
+
// creationMethod === "template" — existing 4-step wizard
|
|
4096
|
+
return /*#__PURE__*/jsx(Panel, {
|
|
3385
4097
|
backgroundColor: "bg-slate-800",
|
|
3386
4098
|
padding: false,
|
|
3387
4099
|
children: /*#__PURE__*/jsx(Panel.Body, {
|
|
@@ -3639,13 +4351,45 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
|
3639
4351
|
})]
|
|
3640
4352
|
})
|
|
3641
4353
|
})
|
|
3642
|
-
})
|
|
4354
|
+
});
|
|
4355
|
+
}
|
|
4356
|
+
|
|
4357
|
+
// ─── Render footer based on creationMethod ───────────────────────
|
|
4358
|
+
function renderFooter() {
|
|
4359
|
+
// Picker screen: just Cancel
|
|
4360
|
+
if (creationMethod === null) {
|
|
4361
|
+
return /*#__PURE__*/jsx(Modal.Footer, {
|
|
4362
|
+
children: /*#__PURE__*/jsx("div", {
|
|
4363
|
+
className: "flex flex-row space-x-2",
|
|
4364
|
+
children: /*#__PURE__*/jsx(Button, {
|
|
4365
|
+
onClick: handleClose,
|
|
4366
|
+
title: "Cancel",
|
|
4367
|
+
textSize: "text-base xl:text-lg",
|
|
4368
|
+
padding: "py-2 px-4",
|
|
4369
|
+
backgroundColor: "bg-gray-700",
|
|
4370
|
+
textColor: "text-gray-300",
|
|
4371
|
+
hoverTextColor: "hover:text-gray-100",
|
|
4372
|
+
hoverBackgroundColor: "hover:bg-gray-600"
|
|
4373
|
+
})
|
|
4374
|
+
})
|
|
4375
|
+
});
|
|
4376
|
+
}
|
|
4377
|
+
|
|
4378
|
+
// Registry screen: no footer (DiscoverDashboardsDetail has its own back button)
|
|
4379
|
+
if (creationMethod === "registry") {
|
|
4380
|
+
return null;
|
|
4381
|
+
}
|
|
4382
|
+
|
|
4383
|
+
// Template wizard footer
|
|
4384
|
+
return /*#__PURE__*/jsx(Modal.Footer, {
|
|
3643
4385
|
children: /*#__PURE__*/jsxs("div", {
|
|
3644
4386
|
className: "flex flex-row space-x-2",
|
|
3645
4387
|
children: [activeStep === 0 && /*#__PURE__*/jsxs(Fragment, {
|
|
3646
4388
|
children: [/*#__PURE__*/jsx(Button, {
|
|
3647
|
-
onClick:
|
|
3648
|
-
|
|
4389
|
+
onClick: function onClick() {
|
|
4390
|
+
return setCreationMethod(null);
|
|
4391
|
+
},
|
|
4392
|
+
title: "Back",
|
|
3649
4393
|
textSize: "text-base xl:text-lg",
|
|
3650
4394
|
padding: "py-2 px-4",
|
|
3651
4395
|
backgroundColor: "bg-gray-700",
|
|
@@ -3738,7 +4482,15 @@ var LayoutManagerModal = function LayoutManagerModal(_ref) {
|
|
|
3738
4482
|
})]
|
|
3739
4483
|
})]
|
|
3740
4484
|
})
|
|
3741
|
-
})
|
|
4485
|
+
});
|
|
4486
|
+
}
|
|
4487
|
+
return /*#__PURE__*/jsxs(Modal, {
|
|
4488
|
+
isOpen: open,
|
|
4489
|
+
setIsOpen: setIsOpen,
|
|
4490
|
+
width: "w-11/12 xl:w-5/6",
|
|
4491
|
+
height: "h-5/6",
|
|
4492
|
+
scrollable: false,
|
|
4493
|
+
children: [renderBody(), renderFooter()]
|
|
3742
4494
|
});
|
|
3743
4495
|
};
|
|
3744
4496
|
|
|
@@ -8324,8 +9076,8 @@ var deepEqual = function deepEqual(a, b, opts) {
|
|
|
8324
9076
|
|
|
8325
9077
|
var deepEqual$1 = /*@__PURE__*/getDefaultExportFromCjs(deepEqual);
|
|
8326
9078
|
|
|
8327
|
-
function ownKeys$
|
|
8328
|
-
function _objectSpread$
|
|
9079
|
+
function ownKeys$x(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; }
|
|
9080
|
+
function _objectSpread$x(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$x(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$x(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8329
9081
|
var PanelEditItem = function PanelEditItem(_ref) {
|
|
8330
9082
|
var _ComponentManager$get;
|
|
8331
9083
|
var workspace = _ref.workspace,
|
|
@@ -8351,35 +9103,6 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
8351
9103
|
var widgetConfig = itemSelected ? ComponentManager.config(itemSelected.component, itemSelected) : null;
|
|
8352
9104
|
var providerRequirements = (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.providers) || [];
|
|
8353
9105
|
var selectedProviders = (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.selectedProviders) || {};
|
|
8354
|
-
var notificationDefs = (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.notifications) || [];
|
|
8355
|
-
|
|
8356
|
-
// Notification preferences for this widget instance
|
|
8357
|
-
var _useState7 = useState({}),
|
|
8358
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
8359
|
-
notifPrefs = _useState8[0],
|
|
8360
|
-
setNotifPrefs = _useState8[1];
|
|
8361
|
-
var widgetUuid = (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.uuid) || (itemSelected === null || itemSelected === void 0 ? void 0 : itemSelected.uuidString);
|
|
8362
|
-
useEffect(function () {
|
|
8363
|
-
var _window$mainApi;
|
|
8364
|
-
if (notificationDefs.length > 0 && widgetUuid && (_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.notifications) !== null && _window$mainApi !== void 0 && _window$mainApi.getPreferences) {
|
|
8365
|
-
window.mainApi.notifications.getPreferences().then(function (result) {
|
|
8366
|
-
var _result$instances;
|
|
8367
|
-
setNotifPrefs(((_result$instances = result.instances) === null || _result$instances === void 0 ? void 0 : _result$instances[widgetUuid]) || {});
|
|
8368
|
-
});
|
|
8369
|
-
}
|
|
8370
|
-
}, [widgetUuid, notificationDefs.length]);
|
|
8371
|
-
function handleNotifToggle(typeKey, value) {
|
|
8372
|
-
var _window$mainApi2;
|
|
8373
|
-
var updated = _objectSpread$w(_objectSpread$w({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
|
|
8374
|
-
setNotifPrefs(updated);
|
|
8375
|
-
if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.notifications) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.setPreferences && widgetUuid) {
|
|
8376
|
-
window.mainApi.notifications.setPreferences(widgetUuid, _defineProperty({}, typeKey, value));
|
|
8377
|
-
}
|
|
8378
|
-
}
|
|
8379
|
-
function getNotifEnabled(typeKey, defaultEnabled) {
|
|
8380
|
-
if (typeof notifPrefs[typeKey] === "boolean") return notifPrefs[typeKey];
|
|
8381
|
-
return defaultEnabled;
|
|
8382
|
-
}
|
|
8383
9106
|
useEffect(function () {
|
|
8384
9107
|
if (deepEqual$1(item, itemSelected) === false) {
|
|
8385
9108
|
setItemSelected(function () {
|
|
@@ -8414,7 +9137,7 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
8414
9137
|
var uuid = newItem.uuid || newItem.uuidString;
|
|
8415
9138
|
if (uuid) {
|
|
8416
9139
|
workspaceTemp.selectedProviders = workspaceTemp.selectedProviders || {};
|
|
8417
|
-
workspaceTemp.selectedProviders[uuid] = _objectSpread$
|
|
9140
|
+
workspaceTemp.selectedProviders[uuid] = _objectSpread$x(_objectSpread$x({}, workspaceTemp.selectedProviders[uuid] || {}), {}, _defineProperty({}, providerType, providerId));
|
|
8418
9141
|
}
|
|
8419
9142
|
onUpdate(newItem, workspaceTemp);
|
|
8420
9143
|
forceUpdate();
|
|
@@ -8543,7 +9266,7 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
8543
9266
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
8544
9267
|
name = _ref5[0],
|
|
8545
9268
|
p = _ref5[1];
|
|
8546
|
-
return _objectSpread$
|
|
9269
|
+
return _objectSpread$x({
|
|
8547
9270
|
name: name
|
|
8548
9271
|
}, p);
|
|
8549
9272
|
});
|
|
@@ -8580,31 +9303,6 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
8580
9303
|
})]
|
|
8581
9304
|
}, providerType);
|
|
8582
9305
|
})]
|
|
8583
|
-
}), notificationDefs.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
8584
|
-
className: "flex flex-col space-y-3",
|
|
8585
|
-
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
8586
|
-
title: "Notifications",
|
|
8587
|
-
padding: false
|
|
8588
|
-
}), notificationDefs.map(function (notif) {
|
|
8589
|
-
return /*#__PURE__*/jsxs("div", {
|
|
8590
|
-
className: "flex flex-row items-center justify-between py-1",
|
|
8591
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
8592
|
-
className: "flex flex-col",
|
|
8593
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
8594
|
-
className: "text-sm",
|
|
8595
|
-
children: notif.displayName
|
|
8596
|
-
}), notif.description && /*#__PURE__*/jsx("span", {
|
|
8597
|
-
className: "text-xs opacity-50",
|
|
8598
|
-
children: notif.description
|
|
8599
|
-
})]
|
|
8600
|
-
}), /*#__PURE__*/jsx(Switch, {
|
|
8601
|
-
checked: getNotifEnabled(notif.key, notif.defaultEnabled),
|
|
8602
|
-
onChange: function onChange(value) {
|
|
8603
|
-
return handleNotifToggle(notif.key, value);
|
|
8604
|
-
}
|
|
8605
|
-
})]
|
|
8606
|
-
}, notif.key);
|
|
8607
|
-
})]
|
|
8608
9306
|
})]
|
|
8609
9307
|
});
|
|
8610
9308
|
};
|
|
@@ -8613,8 +9311,8 @@ var _excluded$5 = ["rows", "cols"];
|
|
|
8613
9311
|
function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(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; } } }; }
|
|
8614
9312
|
function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(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$9(r, a) : void 0; } }
|
|
8615
9313
|
function _arrayLikeToArray$9(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; }
|
|
8616
|
-
function ownKeys$
|
|
8617
|
-
function _objectSpread$
|
|
9314
|
+
function ownKeys$w(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; }
|
|
9315
|
+
function _objectSpread$w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$w(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8618
9316
|
var defaultGrid = {
|
|
8619
9317
|
rows: 1,
|
|
8620
9318
|
cols: 1,
|
|
@@ -8635,7 +9333,7 @@ function GridEditor(_ref) {
|
|
|
8635
9333
|
setGrid = _useState2[1];
|
|
8636
9334
|
var addRow = function addRow() {
|
|
8637
9335
|
var newRow = grid.rows;
|
|
8638
|
-
var newGrid = _objectSpread$
|
|
9336
|
+
var newGrid = _objectSpread$w(_objectSpread$w({}, grid), {}, {
|
|
8639
9337
|
rows: grid.rows + 1
|
|
8640
9338
|
});
|
|
8641
9339
|
for (var col = 0; col < grid.cols; col++) {
|
|
@@ -8650,7 +9348,7 @@ function GridEditor(_ref) {
|
|
|
8650
9348
|
};
|
|
8651
9349
|
var addColumn = function addColumn() {
|
|
8652
9350
|
var newCol = grid.cols;
|
|
8653
|
-
var newGrid = _objectSpread$
|
|
9351
|
+
var newGrid = _objectSpread$w(_objectSpread$w({}, grid), {}, {
|
|
8654
9352
|
cols: grid.cols + 1
|
|
8655
9353
|
});
|
|
8656
9354
|
for (var row = 0; row < grid.rows; row++) {
|
|
@@ -8683,8 +9381,8 @@ function GridEditor(_ref) {
|
|
|
8683
9381
|
});
|
|
8684
9382
|
}
|
|
8685
9383
|
if (grid[nextKey]) {
|
|
8686
|
-
var newGrid = _objectSpread$
|
|
8687
|
-
newGrid[currentKey] = _objectSpread$
|
|
9384
|
+
var newGrid = _objectSpread$w({}, grid);
|
|
9385
|
+
newGrid[currentKey] = _objectSpread$w(_objectSpread$w({}, newGrid[currentKey]), {}, {
|
|
8688
9386
|
colSpan: newGrid[currentKey].colSpan + 1
|
|
8689
9387
|
});
|
|
8690
9388
|
delete newGrid[nextKey];
|
|
@@ -8697,8 +9395,8 @@ function GridEditor(_ref) {
|
|
|
8697
9395
|
var currentKey = "".concat(row, ".").concat(col);
|
|
8698
9396
|
var belowKey = "".concat(row + 1, ".").concat(col);
|
|
8699
9397
|
if (grid[belowKey]) {
|
|
8700
|
-
var newGrid = _objectSpread$
|
|
8701
|
-
newGrid[currentKey] = _objectSpread$
|
|
9398
|
+
var newGrid = _objectSpread$w({}, grid);
|
|
9399
|
+
newGrid[currentKey] = _objectSpread$w(_objectSpread$w({}, newGrid[currentKey]), {}, {
|
|
8702
9400
|
rowSpan: newGrid[currentKey].rowSpan + 1
|
|
8703
9401
|
});
|
|
8704
9402
|
delete newGrid[belowKey];
|
|
@@ -8715,7 +9413,7 @@ function GridEditor(_ref) {
|
|
|
8715
9413
|
var splitCell = function splitCell(row, col) {
|
|
8716
9414
|
var key = "".concat(row, ".").concat(col);
|
|
8717
9415
|
var cell = grid[key];
|
|
8718
|
-
var newGrid = _objectSpread$
|
|
9416
|
+
var newGrid = _objectSpread$w({}, grid);
|
|
8719
9417
|
|
|
8720
9418
|
// we have to check the colspan, and since the colspan is greater than 1
|
|
8721
9419
|
// Only handle horizontal split if colSpan > 1
|
|
@@ -8731,13 +9429,13 @@ function GridEditor(_ref) {
|
|
|
8731
9429
|
var oldKey = "".concat(row, ".").concat(c);
|
|
8732
9430
|
var newKey = "".concat(row, ".").concat(c + 1);
|
|
8733
9431
|
if (newGrid[oldKey]) {
|
|
8734
|
-
newGrid[newKey] = _objectSpread$
|
|
9432
|
+
newGrid[newKey] = _objectSpread$w({}, newGrid[oldKey]);
|
|
8735
9433
|
delete newGrid[oldKey];
|
|
8736
9434
|
}
|
|
8737
9435
|
}
|
|
8738
9436
|
|
|
8739
9437
|
// Update the original cell's colSpan
|
|
8740
|
-
newGrid[key] = _objectSpread$
|
|
9438
|
+
newGrid[key] = _objectSpread$w(_objectSpread$w({}, cell), {}, {
|
|
8741
9439
|
colSpan: cell.colSpan - 1
|
|
8742
9440
|
});
|
|
8743
9441
|
|
|
@@ -8749,7 +9447,7 @@ function GridEditor(_ref) {
|
|
|
8749
9447
|
};
|
|
8750
9448
|
}
|
|
8751
9449
|
if (cell.rowSpan > 1) {
|
|
8752
|
-
newGrid[key] = _objectSpread$
|
|
9450
|
+
newGrid[key] = _objectSpread$w(_objectSpread$w({}, newGrid[key]), {}, {
|
|
8753
9451
|
rowSpan: cell.rowSpan - 1
|
|
8754
9452
|
});
|
|
8755
9453
|
newGrid["".concat(row + 1, ".").concat(col)] = {
|
|
@@ -8868,7 +9566,7 @@ function GridEditor(_ref) {
|
|
|
8868
9566
|
var fromKey = "".concat(from.row, ".").concat(from.col);
|
|
8869
9567
|
var toKey = "".concat(to.row, ".").concat(to.col);
|
|
8870
9568
|
if (fromKey === toKey) return;
|
|
8871
|
-
var newGrid = _objectSpread$
|
|
9569
|
+
var newGrid = _objectSpread$w({}, grid);
|
|
8872
9570
|
|
|
8873
9571
|
// Swap the cells
|
|
8874
9572
|
var temp = newGrid[fromKey];
|
|
@@ -8894,7 +9592,7 @@ function GridEditor(_ref) {
|
|
|
8894
9592
|
// console.log("Grid updated:", sequencedGrid);
|
|
8895
9593
|
}
|
|
8896
9594
|
function resetGridLayout() {
|
|
8897
|
-
var newGrid = _objectSpread$
|
|
9595
|
+
var newGrid = _objectSpread$w({}, defaultGrid);
|
|
8898
9596
|
setGrid(newGrid);
|
|
8899
9597
|
onUpdate(newGrid);
|
|
8900
9598
|
}
|
|
@@ -9172,6 +9870,72 @@ var PanelEditItemGrid = function PanelEditItemGrid(_ref) {
|
|
|
9172
9870
|
});
|
|
9173
9871
|
};
|
|
9174
9872
|
|
|
9873
|
+
function ownKeys$v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9874
|
+
function _objectSpread$v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$v(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9875
|
+
var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
|
|
9876
|
+
var item = _ref.item;
|
|
9877
|
+
_ref.workspace;
|
|
9878
|
+
_ref.onUpdate;
|
|
9879
|
+
var widgetConfig = item ? ComponentManager.config(item.component, item) : null;
|
|
9880
|
+
var notificationDefs = (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.notifications) || [];
|
|
9881
|
+
var _useState = useState({}),
|
|
9882
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
9883
|
+
notifPrefs = _useState2[0],
|
|
9884
|
+
setNotifPrefs = _useState2[1];
|
|
9885
|
+
var widgetUuid = (item === null || item === void 0 ? void 0 : item.uuid) || (item === null || item === void 0 ? void 0 : item.uuidString);
|
|
9886
|
+
useEffect(function () {
|
|
9887
|
+
var _window$mainApi;
|
|
9888
|
+
if (notificationDefs.length > 0 && widgetUuid && (_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.notifications) !== null && _window$mainApi !== void 0 && _window$mainApi.getPreferences) {
|
|
9889
|
+
window.mainApi.notifications.getPreferences().then(function (result) {
|
|
9890
|
+
var _result$instances;
|
|
9891
|
+
setNotifPrefs(((_result$instances = result.instances) === null || _result$instances === void 0 ? void 0 : _result$instances[widgetUuid]) || {});
|
|
9892
|
+
});
|
|
9893
|
+
}
|
|
9894
|
+
}, [widgetUuid, notificationDefs.length]);
|
|
9895
|
+
function handleNotifToggle(typeKey, value) {
|
|
9896
|
+
var _window$mainApi2;
|
|
9897
|
+
var updated = _objectSpread$v(_objectSpread$v({}, notifPrefs), {}, _defineProperty({}, typeKey, value));
|
|
9898
|
+
setNotifPrefs(updated);
|
|
9899
|
+
if ((_window$mainApi2 = window.mainApi) !== null && _window$mainApi2 !== void 0 && (_window$mainApi2 = _window$mainApi2.notifications) !== null && _window$mainApi2 !== void 0 && _window$mainApi2.setPreferences && widgetUuid) {
|
|
9900
|
+
window.mainApi.notifications.setPreferences(widgetUuid, _defineProperty({}, typeKey, value));
|
|
9901
|
+
}
|
|
9902
|
+
}
|
|
9903
|
+
function getNotifEnabled(typeKey, defaultEnabled) {
|
|
9904
|
+
if (typeof notifPrefs[typeKey] === "boolean") return notifPrefs[typeKey];
|
|
9905
|
+
return defaultEnabled;
|
|
9906
|
+
}
|
|
9907
|
+
if (!item || notificationDefs.length === 0) return null;
|
|
9908
|
+
return /*#__PURE__*/jsx("div", {
|
|
9909
|
+
className: "flex flex-col flex-1 min-h-0 overflow-y-auto p-6 space-y-6",
|
|
9910
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
9911
|
+
className: "flex flex-col space-y-3",
|
|
9912
|
+
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
9913
|
+
title: "Notifications",
|
|
9914
|
+
padding: false
|
|
9915
|
+
}), notificationDefs.map(function (notif) {
|
|
9916
|
+
return /*#__PURE__*/jsxs("div", {
|
|
9917
|
+
className: "flex flex-row items-center justify-between py-1",
|
|
9918
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
9919
|
+
className: "flex flex-col",
|
|
9920
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
9921
|
+
className: "text-sm",
|
|
9922
|
+
children: notif.displayName
|
|
9923
|
+
}), notif.description && /*#__PURE__*/jsx("span", {
|
|
9924
|
+
className: "text-xs opacity-50",
|
|
9925
|
+
children: notif.description
|
|
9926
|
+
})]
|
|
9927
|
+
}), /*#__PURE__*/jsx(Switch, {
|
|
9928
|
+
checked: getNotifEnabled(notif.key, notif.defaultEnabled),
|
|
9929
|
+
onChange: function onChange(value) {
|
|
9930
|
+
return handleNotifToggle(notif.key, value);
|
|
9931
|
+
}
|
|
9932
|
+
})]
|
|
9933
|
+
}, notif.key);
|
|
9934
|
+
})]
|
|
9935
|
+
})
|
|
9936
|
+
});
|
|
9937
|
+
};
|
|
9938
|
+
|
|
9175
9939
|
var PanelCode = function PanelCode(_ref) {
|
|
9176
9940
|
var workspace = _ref.workspace,
|
|
9177
9941
|
onUpdate = _ref.onUpdate,
|
|
@@ -9505,6 +10269,9 @@ var PanelEditItemHandlers = function PanelEditItemHandlers(_ref) {
|
|
|
9505
10269
|
};
|
|
9506
10270
|
|
|
9507
10271
|
var getSections = function getSections(item) {
|
|
10272
|
+
var _widgetConfig$notific;
|
|
10273
|
+
var widgetConfig = item ? ComponentManager.config(item.component, item) : null;
|
|
10274
|
+
var hasNotifications = (widgetConfig === null || widgetConfig === void 0 || (_widgetConfig$notific = widgetConfig.notifications) === null || _widgetConfig$notific === void 0 ? void 0 : _widgetConfig$notific.length) > 0;
|
|
9508
10275
|
return [{
|
|
9509
10276
|
key: "edit",
|
|
9510
10277
|
label: "Settings",
|
|
@@ -9513,6 +10280,10 @@ var getSections = function getSections(item) {
|
|
|
9513
10280
|
key: "grid_layout",
|
|
9514
10281
|
label: "Layout",
|
|
9515
10282
|
icon: "square"
|
|
10283
|
+
}] : []), _toConsumableArray(hasNotifications ? [{
|
|
10284
|
+
key: "notifications",
|
|
10285
|
+
label: "Notifications",
|
|
10286
|
+
icon: "bell"
|
|
9516
10287
|
}] : []), _toConsumableArray((item === null || item === void 0 ? void 0 : item.workspace) !== "layout" ? [{
|
|
9517
10288
|
key: "handlers",
|
|
9518
10289
|
label: "Listeners",
|
|
@@ -9627,6 +10398,10 @@ var LayoutBuilderConfigModal = function LayoutBuilderConfigModal(_ref) {
|
|
|
9627
10398
|
item: itemSelected,
|
|
9628
10399
|
onUpdate: handleEditChange,
|
|
9629
10400
|
workspace: workspaceSelected
|
|
10401
|
+
}), activeSection === "notifications" && /*#__PURE__*/jsx(PanelEditItemNotifications, {
|
|
10402
|
+
item: itemSelected,
|
|
10403
|
+
onUpdate: handleEditChange,
|
|
10404
|
+
workspace: workspaceSelected
|
|
9630
10405
|
}), activeSection === "handlers" && /*#__PURE__*/jsx(PanelEditItemHandlers, {
|
|
9631
10406
|
item: itemSelected,
|
|
9632
10407
|
onUpdate: handleEditChange,
|
|
@@ -30618,102 +31393,6 @@ var ThemeManagerModal = function ThemeManagerModal(_ref) {
|
|
|
30618
31393
|
});
|
|
30619
31394
|
};
|
|
30620
31395
|
|
|
30621
|
-
var StarRating = function StarRating(_ref) {
|
|
30622
|
-
var appId = _ref.appId,
|
|
30623
|
-
packageName = _ref.packageName,
|
|
30624
|
-
_ref$interactive = _ref.interactive,
|
|
30625
|
-
interactive = _ref$interactive === void 0 ? true : _ref$interactive;
|
|
30626
|
-
var _useContext = useContext(ThemeContext),
|
|
30627
|
-
currentTheme = _useContext.currentTheme;
|
|
30628
|
-
var _useState = useState(0),
|
|
30629
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
30630
|
-
rating = _useState2[0],
|
|
30631
|
-
setRating = _useState2[1];
|
|
30632
|
-
var _useState3 = useState(0),
|
|
30633
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
30634
|
-
hoverRating = _useState4[0],
|
|
30635
|
-
setHoverRating = _useState4[1];
|
|
30636
|
-
var _useState5 = useState(true),
|
|
30637
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
30638
|
-
loading = _useState6[0],
|
|
30639
|
-
setLoading = _useState6[1];
|
|
30640
|
-
useEffect(function () {
|
|
30641
|
-
var _window$mainApi;
|
|
30642
|
-
if (!appId || !packageName) return;
|
|
30643
|
-
var cancelled = false;
|
|
30644
|
-
setLoading(true);
|
|
30645
|
-
(_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.dashboardRatings) === null || _window$mainApi === void 0 || _window$mainApi.getDashboardRating(appId, packageName).then(function (result) {
|
|
30646
|
-
if (!cancelled && result !== null && result !== void 0 && result.rating) {
|
|
30647
|
-
setRating(result.rating);
|
|
30648
|
-
}
|
|
30649
|
-
})["catch"](function () {})["finally"](function () {
|
|
30650
|
-
if (!cancelled) setLoading(false);
|
|
30651
|
-
});
|
|
30652
|
-
return function () {
|
|
30653
|
-
cancelled = true;
|
|
30654
|
-
};
|
|
30655
|
-
}, [appId, packageName]);
|
|
30656
|
-
function handleClick(_x) {
|
|
30657
|
-
return _handleClick.apply(this, arguments);
|
|
30658
|
-
}
|
|
30659
|
-
function _handleClick() {
|
|
30660
|
-
_handleClick = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(value) {
|
|
30661
|
-
var newRating, _window$mainApi2;
|
|
30662
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
30663
|
-
while (1) switch (_context.prev = _context.next) {
|
|
30664
|
-
case 0:
|
|
30665
|
-
if (!(!interactive || !appId || !packageName)) {
|
|
30666
|
-
_context.next = 1;
|
|
30667
|
-
break;
|
|
30668
|
-
}
|
|
30669
|
-
return _context.abrupt("return");
|
|
30670
|
-
case 1:
|
|
30671
|
-
newRating = value === rating ? 0 : value;
|
|
30672
|
-
setRating(newRating);
|
|
30673
|
-
_context.prev = 2;
|
|
30674
|
-
_context.next = 3;
|
|
30675
|
-
return (_window$mainApi2 = window.mainApi) === null || _window$mainApi2 === void 0 || (_window$mainApi2 = _window$mainApi2.dashboardRatings) === null || _window$mainApi2 === void 0 ? void 0 : _window$mainApi2.saveDashboardRating(appId, packageName, newRating);
|
|
30676
|
-
case 3:
|
|
30677
|
-
_context.next = 5;
|
|
30678
|
-
break;
|
|
30679
|
-
case 4:
|
|
30680
|
-
_context.prev = 4;
|
|
30681
|
-
_context["catch"](2);
|
|
30682
|
-
case 5:
|
|
30683
|
-
case "end":
|
|
30684
|
-
return _context.stop();
|
|
30685
|
-
}
|
|
30686
|
-
}, _callee, null, [[2, 4]]);
|
|
30687
|
-
}));
|
|
30688
|
-
return _handleClick.apply(this, arguments);
|
|
30689
|
-
}
|
|
30690
|
-
if (loading) return null;
|
|
30691
|
-
var displayRating = hoverRating || rating;
|
|
30692
|
-
return /*#__PURE__*/jsx("div", {
|
|
30693
|
-
className: "flex items-center gap-0.5",
|
|
30694
|
-
onMouseLeave: function onMouseLeave() {
|
|
30695
|
-
return setHoverRating(0);
|
|
30696
|
-
},
|
|
30697
|
-
children: [1, 2, 3, 4, 5].map(function (star) {
|
|
30698
|
-
return /*#__PURE__*/jsx("button", {
|
|
30699
|
-
type: "button",
|
|
30700
|
-
disabled: !interactive,
|
|
30701
|
-
onClick: function onClick() {
|
|
30702
|
-
return handleClick(star);
|
|
30703
|
-
},
|
|
30704
|
-
onMouseEnter: function onMouseEnter() {
|
|
30705
|
-
return interactive && setHoverRating(star);
|
|
30706
|
-
},
|
|
30707
|
-
className: "p-0.5 transition-colors ".concat(interactive ? "cursor-pointer hover:scale-110" : "cursor-default"),
|
|
30708
|
-
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
30709
|
-
icon: star <= displayRating ? "star" : ["far", "star"],
|
|
30710
|
-
className: "h-3.5 w-3.5 ".concat(star <= displayRating ? "text-yellow-400" : currentTheme["text-primary-medium"] || "text-gray-500")
|
|
30711
|
-
})
|
|
30712
|
-
}, star);
|
|
30713
|
-
})
|
|
30714
|
-
});
|
|
30715
|
-
};
|
|
30716
|
-
|
|
30717
31396
|
var DASHBOARD_TAGS = ["productivity", "monitoring", "analytics", "communication", "developer", "sales", "marketing", "finance", "project-management", "social", "news", "utilities"];
|
|
30718
31397
|
|
|
30719
31398
|
/**
|
|
@@ -31803,471 +32482,6 @@ var DashboardDetail = function DashboardDetail(_ref2) {
|
|
|
31803
32482
|
});
|
|
31804
32483
|
};
|
|
31805
32484
|
|
|
31806
|
-
var RegistryDashboardDetail = function RegistryDashboardDetail(_ref) {
|
|
31807
|
-
var dashboardPackage = _ref.dashboardPackage,
|
|
31808
|
-
appId = _ref.appId;
|
|
31809
|
-
var _useContext = useContext(ThemeContext),
|
|
31810
|
-
currentTheme = _useContext.currentTheme;
|
|
31811
|
-
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
31812
|
-
grow: false
|
|
31813
|
-
});
|
|
31814
|
-
var _useState = useState(null),
|
|
31815
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
31816
|
-
preview = _useState2[0],
|
|
31817
|
-
setPreview = _useState2[1];
|
|
31818
|
-
var _useState3 = useState(false),
|
|
31819
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
31820
|
-
previewLoading = _useState4[0],
|
|
31821
|
-
setPreviewLoading = _useState4[1];
|
|
31822
|
-
var _useState5 = useState(false),
|
|
31823
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
31824
|
-
isInstalling = _useState6[0],
|
|
31825
|
-
setIsInstalling = _useState6[1];
|
|
31826
|
-
var _useState7 = useState(null),
|
|
31827
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
31828
|
-
installResult = _useState8[0],
|
|
31829
|
-
setInstallResult = _useState8[1];
|
|
31830
|
-
var pkg = dashboardPackage;
|
|
31831
|
-
if (!pkg) return null;
|
|
31832
|
-
|
|
31833
|
-
// Load preview data on mount
|
|
31834
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
31835
|
-
useEffect(function () {
|
|
31836
|
-
var _window$mainApi;
|
|
31837
|
-
if (!pkg.name) return;
|
|
31838
|
-
var cancelled = false;
|
|
31839
|
-
setPreviewLoading(true);
|
|
31840
|
-
setPreview(null);
|
|
31841
|
-
setInstallResult(null);
|
|
31842
|
-
(_window$mainApi = window.mainApi) === null || _window$mainApi === void 0 || (_window$mainApi = _window$mainApi.dashboardConfig) === null || _window$mainApi === void 0 || _window$mainApi.getDashboardPreview(pkg.name).then(function (result) {
|
|
31843
|
-
if (!cancelled) setPreview(result);
|
|
31844
|
-
})["catch"](function (err) {
|
|
31845
|
-
})["finally"](function () {
|
|
31846
|
-
if (!cancelled) setPreviewLoading(false);
|
|
31847
|
-
});
|
|
31848
|
-
return function () {
|
|
31849
|
-
cancelled = true;
|
|
31850
|
-
};
|
|
31851
|
-
}, [pkg.name]);
|
|
31852
|
-
function handleInstall() {
|
|
31853
|
-
return _handleInstall.apply(this, arguments);
|
|
31854
|
-
}
|
|
31855
|
-
function _handleInstall() {
|
|
31856
|
-
_handleInstall = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
31857
|
-
var _result$workspace, result, _t;
|
|
31858
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
31859
|
-
while (1) switch (_context.prev = _context.next) {
|
|
31860
|
-
case 0:
|
|
31861
|
-
if (!(!appId || !pkg.name)) {
|
|
31862
|
-
_context.next = 1;
|
|
31863
|
-
break;
|
|
31864
|
-
}
|
|
31865
|
-
return _context.abrupt("return");
|
|
31866
|
-
case 1:
|
|
31867
|
-
setIsInstalling(true);
|
|
31868
|
-
setInstallResult(null);
|
|
31869
|
-
_context.prev = 2;
|
|
31870
|
-
_context.next = 3;
|
|
31871
|
-
return window.mainApi.dashboardConfig.installDashboardFromRegistry(appId, pkg.name);
|
|
31872
|
-
case 3:
|
|
31873
|
-
result = _context.sent;
|
|
31874
|
-
setInstallResult({
|
|
31875
|
-
status: result !== null && result !== void 0 && result.success ? "success" : "error",
|
|
31876
|
-
message: result !== null && result !== void 0 && result.success ? "Dashboard \"".concat(((_result$workspace = result.workspace) === null || _result$workspace === void 0 ? void 0 : _result$workspace.name) || pkg.name, "\" installed successfully.") : (result === null || result === void 0 ? void 0 : result.error) || "Installation failed."
|
|
31877
|
-
});
|
|
31878
|
-
_context.next = 5;
|
|
31879
|
-
break;
|
|
31880
|
-
case 4:
|
|
31881
|
-
_context.prev = 4;
|
|
31882
|
-
_t = _context["catch"](2);
|
|
31883
|
-
setInstallResult({
|
|
31884
|
-
status: "error",
|
|
31885
|
-
message: _t.message || "Failed to install dashboard."
|
|
31886
|
-
});
|
|
31887
|
-
case 5:
|
|
31888
|
-
_context.prev = 5;
|
|
31889
|
-
setIsInstalling(false);
|
|
31890
|
-
return _context.finish(5);
|
|
31891
|
-
case 6:
|
|
31892
|
-
case "end":
|
|
31893
|
-
return _context.stop();
|
|
31894
|
-
}
|
|
31895
|
-
}, _callee, null, [[2, 4, 5, 6]]);
|
|
31896
|
-
}));
|
|
31897
|
-
return _handleInstall.apply(this, arguments);
|
|
31898
|
-
}
|
|
31899
|
-
var compatibility = preview === null || preview === void 0 ? void 0 : preview.compatibility;
|
|
31900
|
-
var widgetDeps = (preview === null || preview === void 0 ? void 0 : preview.widgets) || pkg.widgets || [];
|
|
31901
|
-
var providers = (preview === null || preview === void 0 ? void 0 : preview.providers) || [];
|
|
31902
|
-
var wiring = (preview === null || preview === void 0 ? void 0 : preview.wiring) || [];
|
|
31903
|
-
function getCompatIcon(status) {
|
|
31904
|
-
if (status === "installed") return {
|
|
31905
|
-
icon: "circle-check",
|
|
31906
|
-
color: "text-green-400"
|
|
31907
|
-
};
|
|
31908
|
-
if (status === "available") return {
|
|
31909
|
-
icon: "circle-down",
|
|
31910
|
-
color: "text-blue-400"
|
|
31911
|
-
};
|
|
31912
|
-
return {
|
|
31913
|
-
icon: "circle-xmark",
|
|
31914
|
-
color: "text-red-400"
|
|
31915
|
-
};
|
|
31916
|
-
}
|
|
31917
|
-
return /*#__PURE__*/jsxs("div", {
|
|
31918
|
-
className: "flex flex-col flex-1 min-h-0",
|
|
31919
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
31920
|
-
className: "flex-1 min-h-0 overflow-y-auto p-6 space-y-6 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
31921
|
-
children: [/*#__PURE__*/jsxs("div", {
|
|
31922
|
-
className: "flex flex-row items-center gap-3",
|
|
31923
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
31924
|
-
className: "h-5 w-5 flex-shrink-0 flex items-center justify-center",
|
|
31925
|
-
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
31926
|
-
icon: pkg.icon || "clone",
|
|
31927
|
-
className: "h-5 w-5"
|
|
31928
|
-
})
|
|
31929
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
31930
|
-
children: [/*#__PURE__*/jsx(SubHeading3, {
|
|
31931
|
-
title: pkg.displayName || pkg.name,
|
|
31932
|
-
padding: false
|
|
31933
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
31934
|
-
className: "flex items-center gap-2 mt-0.5",
|
|
31935
|
-
children: [/*#__PURE__*/jsxs("span", {
|
|
31936
|
-
className: "text-sm opacity-60",
|
|
31937
|
-
children: ["by ", pkg.author || "Unknown"]
|
|
31938
|
-
}), pkg.version && /*#__PURE__*/jsxs("span", {
|
|
31939
|
-
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
31940
|
-
children: ["v", pkg.version]
|
|
31941
|
-
})]
|
|
31942
|
-
})]
|
|
31943
|
-
})]
|
|
31944
|
-
}), appId && /*#__PURE__*/jsx(StarRating, {
|
|
31945
|
-
appId: appId,
|
|
31946
|
-
packageName: pkg.name,
|
|
31947
|
-
interactive: false
|
|
31948
|
-
}), /*#__PURE__*/jsx("hr", {
|
|
31949
|
-
className: currentTheme["border-primary-medium"]
|
|
31950
|
-
}), pkg.description && /*#__PURE__*/jsx("p", {
|
|
31951
|
-
className: "text-sm",
|
|
31952
|
-
children: pkg.description
|
|
31953
|
-
}), pkg.tags && pkg.tags.length > 0 && /*#__PURE__*/jsx("div", {
|
|
31954
|
-
className: "flex flex-wrap gap-1",
|
|
31955
|
-
children: pkg.tags.map(function (tag) {
|
|
31956
|
-
return /*#__PURE__*/jsx("span", {
|
|
31957
|
-
className: "text-xs px-2 py-0.5 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-60"),
|
|
31958
|
-
children: tag
|
|
31959
|
-
}, tag);
|
|
31960
|
-
})
|
|
31961
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
31962
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
31963
|
-
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
31964
|
-
children: "REQUIRED WIDGETS"
|
|
31965
|
-
}), previewLoading ? /*#__PURE__*/jsxs("div", {
|
|
31966
|
-
className: "flex items-center gap-2 py-2",
|
|
31967
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
31968
|
-
className: "animate-spin rounded-full h-4 w-4 border-b-2 border-blue-500"
|
|
31969
|
-
}), /*#__PURE__*/jsx("span", {
|
|
31970
|
-
className: "text-xs opacity-50",
|
|
31971
|
-
children: "Checking compatibility..."
|
|
31972
|
-
})]
|
|
31973
|
-
}) : /*#__PURE__*/jsx("div", {
|
|
31974
|
-
className: "space-y-1.5",
|
|
31975
|
-
children: widgetDeps.map(function (w, idx) {
|
|
31976
|
-
var _compatibility$widget;
|
|
31977
|
-
var status = (compatibility === null || compatibility === void 0 || (_compatibility$widget = compatibility.widgets) === null || _compatibility$widget === void 0 ? void 0 : _compatibility$widget[w.name || w.packageName]) || "unknown";
|
|
31978
|
-
var compat = getCompatIcon(status);
|
|
31979
|
-
return /*#__PURE__*/jsxs("div", {
|
|
31980
|
-
className: "p-2 rounded ".concat(currentTheme["bg-primary-medium"], " flex items-center gap-2"),
|
|
31981
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
31982
|
-
icon: compat.icon,
|
|
31983
|
-
className: "h-3.5 w-3.5 ".concat(compat.color)
|
|
31984
|
-
}), /*#__PURE__*/jsx("span", {
|
|
31985
|
-
className: "text-sm",
|
|
31986
|
-
children: w.displayName || w.name || w.packageName
|
|
31987
|
-
}), /*#__PURE__*/jsx("span", {
|
|
31988
|
-
className: "text-xs opacity-40 ml-auto",
|
|
31989
|
-
children: status === "installed" ? "Installed" : status === "available" ? "Will install" : "Unavailable"
|
|
31990
|
-
})]
|
|
31991
|
-
}, idx);
|
|
31992
|
-
})
|
|
31993
|
-
})]
|
|
31994
|
-
}), providers.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
31995
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
31996
|
-
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
31997
|
-
children: "REQUIRED PROVIDERS"
|
|
31998
|
-
}), /*#__PURE__*/jsx("div", {
|
|
31999
|
-
className: "space-y-1",
|
|
32000
|
-
children: providers.map(function (p, idx) {
|
|
32001
|
-
return /*#__PURE__*/jsxs("div", {
|
|
32002
|
-
className: "flex items-center gap-2",
|
|
32003
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
32004
|
-
className: "text-xs px-1.5 py-0.5 rounded bg-blue-900/30 text-blue-400",
|
|
32005
|
-
children: p.type
|
|
32006
|
-
}), p.required && /*#__PURE__*/jsx("span", {
|
|
32007
|
-
className: "text-[10px] opacity-40",
|
|
32008
|
-
children: "Required"
|
|
32009
|
-
})]
|
|
32010
|
-
}, idx);
|
|
32011
|
-
})
|
|
32012
|
-
})]
|
|
32013
|
-
}), wiring.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
32014
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
32015
|
-
className: "text-xs font-semibold opacity-50 mb-1 block",
|
|
32016
|
-
children: "EVENT WIRING"
|
|
32017
|
-
}), /*#__PURE__*/jsx("div", {
|
|
32018
|
-
className: "space-y-1",
|
|
32019
|
-
children: wiring.map(function (w, idx) {
|
|
32020
|
-
return /*#__PURE__*/jsxs("div", {
|
|
32021
|
-
className: "text-xs p-2 rounded ".concat(currentTheme["bg-primary-medium"], " opacity-70"),
|
|
32022
|
-
children: [/*#__PURE__*/jsx("span", {
|
|
32023
|
-
className: "font-medium",
|
|
32024
|
-
children: w.from || "Source"
|
|
32025
|
-
}), /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
32026
|
-
icon: "arrow-right",
|
|
32027
|
-
className: "h-2.5 w-2.5 mx-1.5 opacity-50"
|
|
32028
|
-
}), /*#__PURE__*/jsx("span", {
|
|
32029
|
-
className: "font-medium",
|
|
32030
|
-
children: w.to || "Target"
|
|
32031
|
-
}), w.event && /*#__PURE__*/jsxs("span", {
|
|
32032
|
-
className: "opacity-50 ml-1.5",
|
|
32033
|
-
children: ["(", w.event, ")"]
|
|
32034
|
-
})]
|
|
32035
|
-
}, idx);
|
|
32036
|
-
})
|
|
32037
|
-
})]
|
|
32038
|
-
}), installResult && /*#__PURE__*/jsx("div", {
|
|
32039
|
-
className: "p-2 rounded border ".concat(installResult.status === "success" ? "bg-green-900/20 border-green-700" : "bg-red-900/30 border-red-700"),
|
|
32040
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
32041
|
-
className: "flex items-center gap-2",
|
|
32042
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
32043
|
-
icon: installResult.status === "success" ? "circle-check" : "circle-xmark",
|
|
32044
|
-
className: "h-4 w-4 ".concat(installResult.status === "success" ? "text-green-400" : "text-red-400")
|
|
32045
|
-
}), /*#__PURE__*/jsx("span", {
|
|
32046
|
-
className: "text-sm ".concat(installResult.status === "error" ? "text-red-400" : ""),
|
|
32047
|
-
children: installResult.message
|
|
32048
|
-
})]
|
|
32049
|
-
})
|
|
32050
|
-
})]
|
|
32051
|
-
}), (installResult === null || installResult === void 0 ? void 0 : installResult.status) !== "success" && /*#__PURE__*/jsx("div", {
|
|
32052
|
-
className: "flex items-center justify-end px-6 py-3 border-t ".concat(currentTheme["border-primary-medium"]),
|
|
32053
|
-
children: /*#__PURE__*/jsx(Button, {
|
|
32054
|
-
title: isInstalling ? "Installing..." : "Install Dashboard",
|
|
32055
|
-
bgColor: "bg-blue-600",
|
|
32056
|
-
hoverBackgroundColor: isInstalling ? "" : "hover:bg-blue-700",
|
|
32057
|
-
textSize: "text-sm",
|
|
32058
|
-
padding: "py-1.5 px-4",
|
|
32059
|
-
onClick: handleInstall,
|
|
32060
|
-
disabled: isInstalling
|
|
32061
|
-
})
|
|
32062
|
-
})]
|
|
32063
|
-
});
|
|
32064
|
-
};
|
|
32065
|
-
|
|
32066
|
-
var DiscoverDashboardsDetail = function DiscoverDashboardsDetail(_ref) {
|
|
32067
|
-
var onBack = _ref.onBack,
|
|
32068
|
-
appId = _ref.appId;
|
|
32069
|
-
var _useContext = useContext(ThemeContext),
|
|
32070
|
-
currentTheme = _useContext.currentTheme;
|
|
32071
|
-
var panelStyles = getStylesForItem(themeObjects.PANEL, currentTheme, {
|
|
32072
|
-
grow: false
|
|
32073
|
-
});
|
|
32074
|
-
var _useState = useState([]),
|
|
32075
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
32076
|
-
packages = _useState2[0],
|
|
32077
|
-
setPackages = _useState2[1];
|
|
32078
|
-
var _useState3 = useState(false),
|
|
32079
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
32080
|
-
isLoading = _useState4[0],
|
|
32081
|
-
setIsLoading = _useState4[1];
|
|
32082
|
-
var _useState5 = useState(null),
|
|
32083
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
32084
|
-
error = _useState6[0],
|
|
32085
|
-
setError = _useState6[1];
|
|
32086
|
-
var _useState7 = useState(""),
|
|
32087
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
32088
|
-
searchQuery = _useState8[0],
|
|
32089
|
-
setSearchQuery = _useState8[1];
|
|
32090
|
-
var _useState9 = useState(null),
|
|
32091
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
32092
|
-
selectedPackageName = _useState0[0],
|
|
32093
|
-
setSelectedPackageName = _useState0[1];
|
|
32094
|
-
var search = useCallback(/*#__PURE__*/function () {
|
|
32095
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
|
|
32096
|
-
var _window$mainApi;
|
|
32097
|
-
var result, _t;
|
|
32098
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
32099
|
-
while (1) switch (_context.prev = _context.next) {
|
|
32100
|
-
case 0:
|
|
32101
|
-
if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchDashboards) {
|
|
32102
|
-
_context.next = 1;
|
|
32103
|
-
break;
|
|
32104
|
-
}
|
|
32105
|
-
setPackages([]);
|
|
32106
|
-
return _context.abrupt("return");
|
|
32107
|
-
case 1:
|
|
32108
|
-
setIsLoading(true);
|
|
32109
|
-
setError(null);
|
|
32110
|
-
_context.prev = 2;
|
|
32111
|
-
_context.next = 3;
|
|
32112
|
-
return window.mainApi.registry.searchDashboards(query || "", {});
|
|
32113
|
-
case 3:
|
|
32114
|
-
result = _context.sent;
|
|
32115
|
-
setPackages((result === null || result === void 0 ? void 0 : result.packages) || []);
|
|
32116
|
-
_context.next = 5;
|
|
32117
|
-
break;
|
|
32118
|
-
case 4:
|
|
32119
|
-
_context.prev = 4;
|
|
32120
|
-
_t = _context["catch"](2);
|
|
32121
|
-
setError(_t.message || "Failed to search dashboard registry");
|
|
32122
|
-
setPackages([]);
|
|
32123
|
-
case 5:
|
|
32124
|
-
_context.prev = 5;
|
|
32125
|
-
setIsLoading(false);
|
|
32126
|
-
return _context.finish(5);
|
|
32127
|
-
case 6:
|
|
32128
|
-
case "end":
|
|
32129
|
-
return _context.stop();
|
|
32130
|
-
}
|
|
32131
|
-
}, _callee, null, [[2, 4, 5, 6]]);
|
|
32132
|
-
}));
|
|
32133
|
-
return function (_x) {
|
|
32134
|
-
return _ref2.apply(this, arguments);
|
|
32135
|
-
};
|
|
32136
|
-
}(), []);
|
|
32137
|
-
|
|
32138
|
-
// Debounce search on query changes
|
|
32139
|
-
useEffect(function () {
|
|
32140
|
-
var timer = setTimeout(function () {
|
|
32141
|
-
search(searchQuery);
|
|
32142
|
-
}, 300);
|
|
32143
|
-
return function () {
|
|
32144
|
-
return clearTimeout(timer);
|
|
32145
|
-
};
|
|
32146
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32147
|
-
}, [searchQuery]);
|
|
32148
|
-
var retry = function retry() {
|
|
32149
|
-
return search(searchQuery);
|
|
32150
|
-
};
|
|
32151
|
-
var selectedPackage = selectedPackageName ? packages.find(function (p) {
|
|
32152
|
-
return p.name === selectedPackageName;
|
|
32153
|
-
}) : null;
|
|
32154
|
-
|
|
32155
|
-
// If a package is selected, show its detail inline
|
|
32156
|
-
if (selectedPackage) {
|
|
32157
|
-
return /*#__PURE__*/jsxs("div", {
|
|
32158
|
-
className: "flex flex-col flex-1 min-h-0",
|
|
32159
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
32160
|
-
className: "flex-shrink-0 px-4 pt-4",
|
|
32161
|
-
children: /*#__PURE__*/jsxs("button", {
|
|
32162
|
-
type: "button",
|
|
32163
|
-
onClick: function onClick() {
|
|
32164
|
-
return setSelectedPackageName(null);
|
|
32165
|
-
},
|
|
32166
|
-
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
32167
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
32168
|
-
icon: "arrow-left",
|
|
32169
|
-
className: "h-3 w-3"
|
|
32170
|
-
}), /*#__PURE__*/jsx("span", {
|
|
32171
|
-
children: "Back"
|
|
32172
|
-
})]
|
|
32173
|
-
})
|
|
32174
|
-
}), /*#__PURE__*/jsx(RegistryDashboardDetail, {
|
|
32175
|
-
dashboardPackage: selectedPackage,
|
|
32176
|
-
appId: appId
|
|
32177
|
-
})]
|
|
32178
|
-
});
|
|
32179
|
-
}
|
|
32180
|
-
|
|
32181
|
-
// Package list view
|
|
32182
|
-
var listBody;
|
|
32183
|
-
if (isLoading) {
|
|
32184
|
-
listBody = /*#__PURE__*/jsx("div", {
|
|
32185
|
-
className: "flex items-center justify-center py-12",
|
|
32186
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
32187
|
-
className: "text-center",
|
|
32188
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
32189
|
-
className: "animate-spin rounded-full h-6 w-6 border-b-2 border-blue-500 mx-auto mb-3"
|
|
32190
|
-
}), /*#__PURE__*/jsx(Paragraph, {
|
|
32191
|
-
className: "text-sm opacity-50",
|
|
32192
|
-
children: "Loading dashboards..."
|
|
32193
|
-
})]
|
|
32194
|
-
})
|
|
32195
|
-
});
|
|
32196
|
-
} else if (error) {
|
|
32197
|
-
listBody = /*#__PURE__*/jsxs("div", {
|
|
32198
|
-
className: "px-4 py-8 text-center",
|
|
32199
|
-
children: [/*#__PURE__*/jsx(Paragraph, {
|
|
32200
|
-
className: "text-sm text-red-400 mb-3",
|
|
32201
|
-
children: error
|
|
32202
|
-
}), /*#__PURE__*/jsx(Button, {
|
|
32203
|
-
title: "Retry",
|
|
32204
|
-
bgColor: "bg-gray-700",
|
|
32205
|
-
hoverBackgroundColor: "hover:bg-gray-600",
|
|
32206
|
-
textSize: "text-sm",
|
|
32207
|
-
padding: "py-1 px-3",
|
|
32208
|
-
onClick: retry
|
|
32209
|
-
})]
|
|
32210
|
-
});
|
|
32211
|
-
} else if (packages.length === 0) {
|
|
32212
|
-
listBody = /*#__PURE__*/jsx("div", {
|
|
32213
|
-
className: "px-4 py-8 text-center",
|
|
32214
|
-
children: /*#__PURE__*/jsx(Paragraph, {
|
|
32215
|
-
className: "text-sm opacity-50",
|
|
32216
|
-
children: searchQuery ? "No dashboards match your search." : "No dashboard packages available."
|
|
32217
|
-
})
|
|
32218
|
-
});
|
|
32219
|
-
} else {
|
|
32220
|
-
listBody = /*#__PURE__*/jsx("div", {
|
|
32221
|
-
className: "space-y-1",
|
|
32222
|
-
children: packages.map(function (pkg) {
|
|
32223
|
-
var widgetCount = (pkg.widgets || []).length;
|
|
32224
|
-
return /*#__PURE__*/jsx(Sidebar.Item, {
|
|
32225
|
-
icon: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
32226
|
-
icon: pkg.icon || "clone",
|
|
32227
|
-
className: "h-3.5 w-3.5"
|
|
32228
|
-
}),
|
|
32229
|
-
onClick: function onClick() {
|
|
32230
|
-
return setSelectedPackageName(pkg.name);
|
|
32231
|
-
},
|
|
32232
|
-
badge: widgetCount > 0 ? "".concat(widgetCount) : undefined,
|
|
32233
|
-
children: pkg.displayName || pkg.name
|
|
32234
|
-
}, pkg.name);
|
|
32235
|
-
})
|
|
32236
|
-
});
|
|
32237
|
-
}
|
|
32238
|
-
return /*#__PURE__*/jsxs("div", {
|
|
32239
|
-
className: "flex flex-col flex-1 min-h-0 ".concat(panelStyles.textColor || "text-gray-200"),
|
|
32240
|
-
children: [/*#__PURE__*/jsx("div", {
|
|
32241
|
-
className: "flex-shrink-0 px-4 pt-4",
|
|
32242
|
-
children: /*#__PURE__*/jsxs("button", {
|
|
32243
|
-
type: "button",
|
|
32244
|
-
onClick: onBack,
|
|
32245
|
-
className: "flex items-center gap-1.5 text-sm opacity-60 hover:opacity-100 transition-opacity",
|
|
32246
|
-
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
32247
|
-
icon: "arrow-left",
|
|
32248
|
-
className: "h-3 w-3"
|
|
32249
|
-
}), /*#__PURE__*/jsx("span", {
|
|
32250
|
-
children: "Back"
|
|
32251
|
-
})]
|
|
32252
|
-
})
|
|
32253
|
-
}), /*#__PURE__*/jsx("div", {
|
|
32254
|
-
className: "flex-shrink-0 px-4 py-3",
|
|
32255
|
-
children: /*#__PURE__*/jsx(SearchInput, {
|
|
32256
|
-
value: searchQuery,
|
|
32257
|
-
onChange: setSearchQuery,
|
|
32258
|
-
placeholder: "Search dashboards...",
|
|
32259
|
-
inputClassName: "py-1.5 text-xs"
|
|
32260
|
-
})
|
|
32261
|
-
}), /*#__PURE__*/jsx("div", {
|
|
32262
|
-
className: "flex-1 min-h-0 overflow-y-auto px-2",
|
|
32263
|
-
children: listBody
|
|
32264
|
-
}), !isLoading && !error && packages.length > 0 && /*#__PURE__*/jsxs("div", {
|
|
32265
|
-
className: "flex-shrink-0 px-4 py-2 text-[10px] opacity-40 border-t border-white/10",
|
|
32266
|
-
children: [packages.length, " dashboard", packages.length !== 1 ? "s" : ""]
|
|
32267
|
-
})]
|
|
32268
|
-
});
|
|
32269
|
-
};
|
|
32270
|
-
|
|
32271
32485
|
function ownKeys$9(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; }
|
|
32272
32486
|
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
32273
32487
|
var DashboardsSection = function DashboardsSection(_ref) {
|
|
@@ -40471,9 +40685,21 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
|
|
|
40471
40685
|
_useState36 = _slicedToArray(_useState35, 2),
|
|
40472
40686
|
appSettingsInitialSection = _useState36[0],
|
|
40473
40687
|
setAppSettingsInitialSection = _useState36[1];
|
|
40688
|
+
var _useState37 = useState(null),
|
|
40689
|
+
_useState38 = _slicedToArray(_useState37, 2),
|
|
40690
|
+
appSettingsInitialProvider = _useState38[0],
|
|
40691
|
+
setAppSettingsInitialProvider = _useState38[1];
|
|
40692
|
+
var _useState39 = useState(false),
|
|
40693
|
+
_useState40 = _slicedToArray(_useState39, 2),
|
|
40694
|
+
appSettingsCreateProvider = _useState40[0],
|
|
40695
|
+
setAppSettingsCreateProvider = _useState40[1];
|
|
40474
40696
|
function openAppSettings() {
|
|
40475
40697
|
var section = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "general";
|
|
40698
|
+
var providerName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
40699
|
+
var createProvider = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
40476
40700
|
setAppSettingsInitialSection(section);
|
|
40701
|
+
setAppSettingsInitialProvider(providerName);
|
|
40702
|
+
setAppSettingsCreateProvider(createProvider);
|
|
40477
40703
|
setIsAppSettingsOpen(true);
|
|
40478
40704
|
}
|
|
40479
40705
|
function handleProfileUpdated() {
|
|
@@ -41254,8 +41480,16 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
|
|
|
41254
41480
|
}), !popout && /*#__PURE__*/jsxs(Fragment, {
|
|
41255
41481
|
children: [/*#__PURE__*/jsx(AppSettingsModal, {
|
|
41256
41482
|
isOpen: isAppSettingsOpen,
|
|
41257
|
-
setIsOpen:
|
|
41483
|
+
setIsOpen: function setIsOpen(open) {
|
|
41484
|
+
setIsAppSettingsOpen(open);
|
|
41485
|
+
if (!open) {
|
|
41486
|
+
setAppSettingsInitialProvider(null);
|
|
41487
|
+
setAppSettingsCreateProvider(false);
|
|
41488
|
+
}
|
|
41489
|
+
},
|
|
41258
41490
|
initialSection: appSettingsInitialSection,
|
|
41491
|
+
initialProviderName: appSettingsInitialProvider,
|
|
41492
|
+
initialCreateProvider: appSettingsCreateProvider,
|
|
41259
41493
|
workspaces: workspaceConfig,
|
|
41260
41494
|
menuItems: menuItems,
|
|
41261
41495
|
dashApi: dashApi,
|
|
@@ -41295,7 +41529,9 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
|
|
|
41295
41529
|
setIsOpen: setIsLayoutPickerOpen,
|
|
41296
41530
|
onCreateWorkspace: handleCreateFromTemplate,
|
|
41297
41531
|
menuItems: menuItems,
|
|
41298
|
-
onSaveMenuItem: handleSaveNewMenuItem
|
|
41532
|
+
onSaveMenuItem: handleSaveNewMenuItem,
|
|
41533
|
+
appId: credentials === null || credentials === void 0 ? void 0 : credentials.appId,
|
|
41534
|
+
onReloadWorkspaces: loadWorkspaces
|
|
41299
41535
|
})]
|
|
41300
41536
|
})]
|
|
41301
41537
|
}), !popout && /*#__PURE__*/jsx(DashCommandPalette, {
|
|
@@ -41314,7 +41550,10 @@ var DashboardStageInner = function DashboardStageInner(_ref2) {
|
|
|
41314
41550
|
},
|
|
41315
41551
|
providers: (appContext === null || appContext === void 0 ? void 0 : appContext.providers) || {},
|
|
41316
41552
|
onCreateNewProvider: function onCreateNewProvider() {
|
|
41317
|
-
return openAppSettings("providers");
|
|
41553
|
+
return openAppSettings("providers", null, true);
|
|
41554
|
+
},
|
|
41555
|
+
onOpenProviderDetail: function onOpenProviderDetail(name) {
|
|
41556
|
+
return openAppSettings("providers", name);
|
|
41318
41557
|
},
|
|
41319
41558
|
themes: themes || {},
|
|
41320
41559
|
currentThemeKey: themeKey,
|
|
@@ -42705,5 +42944,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
|
|
|
42705
42944
|
|
|
42706
42945
|
ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
|
|
42707
42946
|
|
|
42708
|
-
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, 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, 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_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeManagerModal, ThemeModel, ThemeWrapper, 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, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, 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, 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, useMcpProvider, useNotifications, useProvider, useProviderClient, useWidgetEvents, useWidgetProviders, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, withProviderDetection };
|
|
42947
|
+
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, 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_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeManagerModal, ThemeModel, ThemeWrapper, 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, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, 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, 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, useMcpProvider, useNotifications, useProvider, useProviderClient, useWidgetEvents, useWidgetProviders, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, withProviderDetection };
|
|
42709
42948
|
//# sourceMappingURL=index.esm.js.map
|