@trops/dash-core 0.1.187 → 0.1.189
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 +882 -365
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +924 -395
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import * as DashReact from '@trops/dash-react';
|
|
3
|
-
import { isObject, ThemeContext, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, FontAwesomeIcon, Tag, Sidebar, Paragraph, Modal, Panel, Stepper, Heading3, MenuItem3, FormLabel, SelectMenu, Switch, SelectInput, CodeEditorInline, SettingsModal, SubHeading2, tailwindHeightFractions, Menu3, Panel3, DropdownPanel, MenuItem2, ButtonIcon2, DragComponent, ConfirmationModal, DropComponent, getStyleName, capitalizeFirstLetter, colorTypes, getCSSStyleForClassname, Panel2, Heading2, SubHeading, Paragraph2, Paragraph3, Button2, Button3, MenuItem, Tag2, Tag3, ButtonIcon3, DashPanel, colorNames, shades, themeVariants,
|
|
3
|
+
import { isObject, ThemeContext, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, FontAwesomeIcon, Tag, Sidebar, Paragraph, Modal, Panel, Stepper, SelectableCard, Tabs3, Heading3, MenuItem3, FormLabel, SelectMenu, Switch, SelectInput, CodeEditorInline, SettingsModal, SubHeading2, tailwindHeightFractions, Menu3, Panel3, DropdownPanel, MenuItem2, ButtonIcon2, DragComponent, ConfirmationModal, DropComponent, getStyleName, capitalizeFirstLetter, colorTypes, getCSSStyleForClassname, Panel2, Heading2, SubHeading, Paragraph2, Paragraph3, Button2, Button3, MenuItem, Tag2, Tag3, ButtonIcon3, DashPanel, colorNames, shades, themeVariants, 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, ThemeFromUrlPane, TextArea, Icon2, AlgoliaSearchBox, CommandPalette, EmptyState, Navbar, withRouter, Menu as Menu$1 } from '@trops/dash-react';
|
|
4
4
|
export * from '@trops/dash-react';
|
|
5
5
|
export { ThemeContext } from '@trops/dash-react';
|
|
6
6
|
import _typeof from '@babel/runtime/helpers/typeof';
|
|
@@ -17,6 +17,7 @@ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
|
17
17
|
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
18
18
|
import { Menu, Transition, Popover, Dialog, Disclosure } from '@headlessui/react';
|
|
19
19
|
import { EllipsisVerticalIcon } from '@heroicons/react/20/solid';
|
|
20
|
+
import { findIconDefinition } from '@fortawesome/fontawesome-svg-core';
|
|
20
21
|
import clsx from 'clsx';
|
|
21
22
|
import { DndProvider, useDrag, useDrop } from 'react-dnd';
|
|
22
23
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
@@ -26,7 +27,6 @@ import _inherits from '@babel/runtime/helpers/inherits';
|
|
|
26
27
|
import colors from 'tailwindcss/colors';
|
|
27
28
|
import * as ReactDOM from 'react-dom';
|
|
28
29
|
import { createPortal } from 'react-dom';
|
|
29
|
-
import { findIconDefinition } from '@fortawesome/fontawesome-svg-core';
|
|
30
30
|
import algoliasearch from 'algoliasearch';
|
|
31
31
|
import { InstantSearch, Hits } from 'react-instantsearch-hooks-web';
|
|
32
32
|
import { Link } from 'react-router-dom';
|
|
@@ -5204,6 +5204,837 @@ var LayoutQuickAddMenu = function LayoutQuickAddMenu(_ref) {
|
|
|
5204
5204
|
});
|
|
5205
5205
|
};
|
|
5206
5206
|
|
|
5207
|
+
var CATEGORIES = [{
|
|
5208
|
+
key: "reporting",
|
|
5209
|
+
label: "Reporting",
|
|
5210
|
+
icon: "chart-bar",
|
|
5211
|
+
description: "Dashboards for data visualization and reports"
|
|
5212
|
+
}, {
|
|
5213
|
+
key: "monitoring",
|
|
5214
|
+
label: "Monitoring",
|
|
5215
|
+
icon: "heart-pulse",
|
|
5216
|
+
description: "System health, uptime, and performance monitoring"
|
|
5217
|
+
}, {
|
|
5218
|
+
key: "productivity",
|
|
5219
|
+
label: "Productivity",
|
|
5220
|
+
icon: "list-check",
|
|
5221
|
+
description: "Task tracking, calendars, and workflow management"
|
|
5222
|
+
}, {
|
|
5223
|
+
key: "development",
|
|
5224
|
+
label: "Development",
|
|
5225
|
+
icon: "code",
|
|
5226
|
+
description: "Code repos, CI/CD, and developer tools"
|
|
5227
|
+
}, {
|
|
5228
|
+
key: "communication",
|
|
5229
|
+
label: "Communication",
|
|
5230
|
+
icon: "comments",
|
|
5231
|
+
description: "Messages, channels, and team communication"
|
|
5232
|
+
}, {
|
|
5233
|
+
key: "custom",
|
|
5234
|
+
label: "Custom",
|
|
5235
|
+
icon: "grid-2",
|
|
5236
|
+
description: "Build a fully custom dashboard"
|
|
5237
|
+
}];
|
|
5238
|
+
|
|
5239
|
+
/**
|
|
5240
|
+
* WizardIntentStep
|
|
5241
|
+
*
|
|
5242
|
+
* Step 0 of the Dashboard Wizard. Presents category cards so the user
|
|
5243
|
+
* can indicate what kind of dashboard they want to build.
|
|
5244
|
+
* Multi-select — user can pick multiple categories.
|
|
5245
|
+
*
|
|
5246
|
+
* @param {Object} props
|
|
5247
|
+
* @param {Object} props.state - Wizard state from useWizardState
|
|
5248
|
+
* @param {Function} props.dispatch - Wizard dispatch from useWizardState
|
|
5249
|
+
*/
|
|
5250
|
+
var WizardIntentStep = function WizardIntentStep(_ref) {
|
|
5251
|
+
var state = _ref.state,
|
|
5252
|
+
dispatch = _ref.dispatch;
|
|
5253
|
+
var handleToggle = function handleToggle(key) {
|
|
5254
|
+
dispatch({
|
|
5255
|
+
type: "TOGGLE_INTENT",
|
|
5256
|
+
payload: key
|
|
5257
|
+
});
|
|
5258
|
+
};
|
|
5259
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5260
|
+
className: "wizard-intent-step",
|
|
5261
|
+
children: [/*#__PURE__*/jsx("h3", {
|
|
5262
|
+
className: "wizard-step-header",
|
|
5263
|
+
children: "What is this dashboard for?"
|
|
5264
|
+
}), /*#__PURE__*/jsx("div", {
|
|
5265
|
+
className: "wizard-card-grid",
|
|
5266
|
+
children: CATEGORIES.map(function (cat) {
|
|
5267
|
+
return /*#__PURE__*/jsx(SelectableCard, {
|
|
5268
|
+
icon: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5269
|
+
icon: cat.icon,
|
|
5270
|
+
fixedWidth: true
|
|
5271
|
+
}),
|
|
5272
|
+
label: cat.label,
|
|
5273
|
+
description: cat.description,
|
|
5274
|
+
selected: state.intent.includes(cat.key),
|
|
5275
|
+
onSelect: function onSelect() {
|
|
5276
|
+
return handleToggle(cat.key);
|
|
5277
|
+
}
|
|
5278
|
+
}, cat.key);
|
|
5279
|
+
})
|
|
5280
|
+
})]
|
|
5281
|
+
});
|
|
5282
|
+
};
|
|
5283
|
+
|
|
5284
|
+
var FALLBACK = "puzzle-piece";
|
|
5285
|
+
|
|
5286
|
+
/**
|
|
5287
|
+
* Resolve an icon name to a valid FontAwesome icon reference.
|
|
5288
|
+
* Tries solid (fas) first, then brand (fab). Returns "puzzle-piece" if
|
|
5289
|
+
* the icon is falsy or not found in either prefix.
|
|
5290
|
+
*/
|
|
5291
|
+
var resolveIcon = function resolveIcon(iconName) {
|
|
5292
|
+
if (!iconName) return FALLBACK;
|
|
5293
|
+
|
|
5294
|
+
// Already an array tuple like ["fab", "github"] — pass through
|
|
5295
|
+
if (Array.isArray(iconName)) return iconName;
|
|
5296
|
+
|
|
5297
|
+
// Try solid
|
|
5298
|
+
if (findIconDefinition({
|
|
5299
|
+
prefix: "fas",
|
|
5300
|
+
iconName: iconName
|
|
5301
|
+
})) return iconName;
|
|
5302
|
+
|
|
5303
|
+
// Try brand
|
|
5304
|
+
if (findIconDefinition({
|
|
5305
|
+
prefix: "fab",
|
|
5306
|
+
iconName: iconName
|
|
5307
|
+
})) return ["fab", iconName];
|
|
5308
|
+
return FALLBACK;
|
|
5309
|
+
};
|
|
5310
|
+
|
|
5311
|
+
var WizardProvidersStep = function WizardProvidersStep(_ref) {
|
|
5312
|
+
var state = _ref.state,
|
|
5313
|
+
dispatch = _ref.dispatch;
|
|
5314
|
+
var _useContext = useContext(AppContext),
|
|
5315
|
+
providersMap = _useContext.providers;
|
|
5316
|
+
var providerList = useMemo(function () {
|
|
5317
|
+
if (!providersMap || _typeof(providersMap) !== "object") return [];
|
|
5318
|
+
return Object.values(providersMap).map(function (p) {
|
|
5319
|
+
return {
|
|
5320
|
+
key: p.type || p.name,
|
|
5321
|
+
name: p.name,
|
|
5322
|
+
type: p.type,
|
|
5323
|
+
icon: p.icon || p.type,
|
|
5324
|
+
configured: !!(p.credentials && Object.keys(p.credentials).length > 0)
|
|
5325
|
+
};
|
|
5326
|
+
});
|
|
5327
|
+
}, [providersMap]);
|
|
5328
|
+
|
|
5329
|
+
// Pre-check configured providers on first render
|
|
5330
|
+
React__default.useEffect(function () {
|
|
5331
|
+
if (state.providers.length === 0 && providerList.length > 0) {
|
|
5332
|
+
var configuredKeys = providerList.filter(function (p) {
|
|
5333
|
+
return p.configured;
|
|
5334
|
+
}).map(function (p) {
|
|
5335
|
+
return p.key;
|
|
5336
|
+
});
|
|
5337
|
+
if (configuredKeys.length > 0) {
|
|
5338
|
+
dispatch({
|
|
5339
|
+
type: "SET_PROVIDERS",
|
|
5340
|
+
payload: configuredKeys
|
|
5341
|
+
});
|
|
5342
|
+
}
|
|
5343
|
+
}
|
|
5344
|
+
}, [providerList, state.providers.length, dispatch]);
|
|
5345
|
+
var handleToggle = function handleToggle(key) {
|
|
5346
|
+
dispatch({
|
|
5347
|
+
type: "TOGGLE_PROVIDER",
|
|
5348
|
+
payload: key
|
|
5349
|
+
});
|
|
5350
|
+
};
|
|
5351
|
+
if (providerList.length === 0) {
|
|
5352
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5353
|
+
className: "wizard-providers-step",
|
|
5354
|
+
children: [/*#__PURE__*/jsx("h3", {
|
|
5355
|
+
className: "wizard-step-header",
|
|
5356
|
+
children: "Which tools and services do you use?"
|
|
5357
|
+
}), /*#__PURE__*/jsx("p", {
|
|
5358
|
+
className: "wizard-empty-message",
|
|
5359
|
+
children: "No providers configured yet. Add providers in Settings first."
|
|
5360
|
+
})]
|
|
5361
|
+
});
|
|
5362
|
+
}
|
|
5363
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5364
|
+
className: "wizard-providers-step",
|
|
5365
|
+
children: [/*#__PURE__*/jsx("h3", {
|
|
5366
|
+
className: "wizard-step-header",
|
|
5367
|
+
children: "Which tools and services do you use?"
|
|
5368
|
+
}), /*#__PURE__*/jsx("div", {
|
|
5369
|
+
className: "wizard-card-grid",
|
|
5370
|
+
children: providerList.map(function (provider) {
|
|
5371
|
+
var isSelected = state.providers.includes(provider.key);
|
|
5372
|
+
var needsSetup = isSelected && !provider.configured;
|
|
5373
|
+
return /*#__PURE__*/jsx(SelectableCard, {
|
|
5374
|
+
icon: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5375
|
+
icon: resolveIcon(provider.icon),
|
|
5376
|
+
fixedWidth: true
|
|
5377
|
+
}),
|
|
5378
|
+
label: provider.name,
|
|
5379
|
+
description: needsSetup ? /*#__PURE__*/jsx("span", {
|
|
5380
|
+
className: "wizard-needs-setup-badge",
|
|
5381
|
+
children: "Needs setup"
|
|
5382
|
+
}) : null,
|
|
5383
|
+
selected: isSelected,
|
|
5384
|
+
onSelect: function onSelect() {
|
|
5385
|
+
return handleToggle(provider.key);
|
|
5386
|
+
}
|
|
5387
|
+
}, provider.key);
|
|
5388
|
+
})
|
|
5389
|
+
})]
|
|
5390
|
+
});
|
|
5391
|
+
};
|
|
5392
|
+
|
|
5393
|
+
function _createForOfIteratorHelper$e(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$e(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
5394
|
+
function _unsupportedIterableToArray$e(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$e(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$e(r, a) : void 0; } }
|
|
5395
|
+
function _arrayLikeToArray$e(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5396
|
+
|
|
5397
|
+
/**
|
|
5398
|
+
* useRegistrySearch — shared hook for browsing and installing registry packages.
|
|
5399
|
+
*
|
|
5400
|
+
* Extracted from EnhancedWidgetDropdown so the same logic can power the
|
|
5401
|
+
* Discover tab inside AppSettingsModal (and anywhere else).
|
|
5402
|
+
*
|
|
5403
|
+
* Options:
|
|
5404
|
+
* filterByCapabilities – if true (default), only show packages compatible
|
|
5405
|
+
* with the app's API capabilities
|
|
5406
|
+
*
|
|
5407
|
+
* Returns:
|
|
5408
|
+
* packages – raw package objects from the registry
|
|
5409
|
+
* flatWidgets – flattened widget entries with `isRegistry: true`
|
|
5410
|
+
* isLoading – true while a search request is in flight
|
|
5411
|
+
* error – error message string (or null)
|
|
5412
|
+
* searchQuery / setSearchQuery – controlled search input
|
|
5413
|
+
* isInstalling – true during an install
|
|
5414
|
+
* installError – install error string (or null)
|
|
5415
|
+
* search() – manually trigger a search
|
|
5416
|
+
* installPackage(widget) – install a specific registry widget
|
|
5417
|
+
* showAllPackages / setShowAllPackages – toggle to show incompatible packages
|
|
5418
|
+
* appCapabilities – the app's API namespaces
|
|
5419
|
+
*/
|
|
5420
|
+
var useRegistrySearch = function useRegistrySearch() {
|
|
5421
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
5422
|
+
_ref$filterByCapabili = _ref.filterByCapabilities,
|
|
5423
|
+
filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
|
|
5424
|
+
var _useState = useState(false),
|
|
5425
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5426
|
+
isLoading = _useState2[0],
|
|
5427
|
+
setIsLoading = _useState2[1];
|
|
5428
|
+
var _useState3 = useState(null),
|
|
5429
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
5430
|
+
error = _useState4[0],
|
|
5431
|
+
setError = _useState4[1];
|
|
5432
|
+
var _useState5 = useState([]),
|
|
5433
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
5434
|
+
packages = _useState6[0],
|
|
5435
|
+
setPackages = _useState6[1];
|
|
5436
|
+
var _useState7 = useState([]),
|
|
5437
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
5438
|
+
flatWidgets = _useState8[0],
|
|
5439
|
+
setFlatWidgets = _useState8[1];
|
|
5440
|
+
var _useState9 = useState(""),
|
|
5441
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
5442
|
+
searchQuery = _useState0[0],
|
|
5443
|
+
setSearchQuery = _useState0[1];
|
|
5444
|
+
var _useState1 = useState(false),
|
|
5445
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
5446
|
+
isInstalling = _useState10[0],
|
|
5447
|
+
setIsInstalling = _useState10[1];
|
|
5448
|
+
var _useState11 = useState(null),
|
|
5449
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
5450
|
+
installError = _useState12[0],
|
|
5451
|
+
setInstallError = _useState12[1];
|
|
5452
|
+
var _useState13 = useState(false),
|
|
5453
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
5454
|
+
showAllPackages = _useState14[0],
|
|
5455
|
+
setShowAllPackages = _useState14[1];
|
|
5456
|
+
|
|
5457
|
+
// Discover app capabilities from window.mainApi
|
|
5458
|
+
var appCapabilities = useMemo(function () {
|
|
5459
|
+
if (typeof window !== "undefined" && window.mainApi) {
|
|
5460
|
+
return Object.keys(window.mainApi);
|
|
5461
|
+
}
|
|
5462
|
+
return [];
|
|
5463
|
+
}, []);
|
|
5464
|
+
var search = useCallback(/*#__PURE__*/function () {
|
|
5465
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
|
|
5466
|
+
var _window$mainApi;
|
|
5467
|
+
var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
|
|
5468
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
5469
|
+
while (1) switch (_context.prev = _context.next) {
|
|
5470
|
+
case 0:
|
|
5471
|
+
if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.registry) {
|
|
5472
|
+
_context.next = 1;
|
|
5473
|
+
break;
|
|
5474
|
+
}
|
|
5475
|
+
setPackages([]);
|
|
5476
|
+
setFlatWidgets([]);
|
|
5477
|
+
return _context.abrupt("return");
|
|
5478
|
+
case 1:
|
|
5479
|
+
setIsLoading(true);
|
|
5480
|
+
setError(null);
|
|
5481
|
+
_context.prev = 2;
|
|
5482
|
+
filters = {};
|
|
5483
|
+
if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
|
|
5484
|
+
filters.appCapabilities = appCapabilities;
|
|
5485
|
+
}
|
|
5486
|
+
_context.next = 3;
|
|
5487
|
+
return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
|
|
5488
|
+
case 3:
|
|
5489
|
+
result = _context.sent;
|
|
5490
|
+
// Only include packages that contain at least one widget
|
|
5491
|
+
// (filters out theme-only packages, etc.)
|
|
5492
|
+
pkgs = (result.packages || []).filter(function (pkg) {
|
|
5493
|
+
return pkg.widgets && pkg.widgets.length > 0;
|
|
5494
|
+
});
|
|
5495
|
+
setPackages(pkgs);
|
|
5496
|
+
|
|
5497
|
+
// Flatten packages into widget entries
|
|
5498
|
+
capSet = new Set(appCapabilities.map(function (c) {
|
|
5499
|
+
return c.toLowerCase();
|
|
5500
|
+
}));
|
|
5501
|
+
widgets = [];
|
|
5502
|
+
_iterator = _createForOfIteratorHelper$e(pkgs);
|
|
5503
|
+
try {
|
|
5504
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
5505
|
+
pkg = _step.value;
|
|
5506
|
+
// Compute missing APIs for the entire package
|
|
5507
|
+
allApiProviders = [];
|
|
5508
|
+
_iterator2 = _createForOfIteratorHelper$e(pkg.providers || []);
|
|
5509
|
+
try {
|
|
5510
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
5511
|
+
p = _step2.value;
|
|
5512
|
+
if (p.providerClass === "api" && p.required !== false) {
|
|
5513
|
+
allApiProviders.push(p.type);
|
|
5514
|
+
}
|
|
5515
|
+
}
|
|
5516
|
+
} catch (err) {
|
|
5517
|
+
_iterator2.e(err);
|
|
5518
|
+
} finally {
|
|
5519
|
+
_iterator2.f();
|
|
5520
|
+
}
|
|
5521
|
+
_iterator3 = _createForOfIteratorHelper$e(pkg.widgets || []);
|
|
5522
|
+
try {
|
|
5523
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
5524
|
+
w = _step3.value;
|
|
5525
|
+
_iterator5 = _createForOfIteratorHelper$e(w.providers || []);
|
|
5526
|
+
try {
|
|
5527
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
5528
|
+
_p = _step5.value;
|
|
5529
|
+
if (_p.providerClass === "api" && _p.required !== false) {
|
|
5530
|
+
allApiProviders.push(_p.type);
|
|
5531
|
+
}
|
|
5532
|
+
}
|
|
5533
|
+
} catch (err) {
|
|
5534
|
+
_iterator5.e(err);
|
|
5535
|
+
} finally {
|
|
5536
|
+
_iterator5.f();
|
|
5537
|
+
}
|
|
5538
|
+
}
|
|
5539
|
+
} catch (err) {
|
|
5540
|
+
_iterator3.e(err);
|
|
5541
|
+
} finally {
|
|
5542
|
+
_iterator3.f();
|
|
5543
|
+
}
|
|
5544
|
+
missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
|
|
5545
|
+
return !capSet.has(api.toLowerCase());
|
|
5546
|
+
});
|
|
5547
|
+
_iterator4 = _createForOfIteratorHelper$e(pkg.widgets || []);
|
|
5548
|
+
try {
|
|
5549
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
5550
|
+
widget = _step4.value;
|
|
5551
|
+
widgets.push({
|
|
5552
|
+
key: "".concat(pkg.name, "/").concat(widget.name),
|
|
5553
|
+
name: widget.displayName || widget.name,
|
|
5554
|
+
description: widget.description || "",
|
|
5555
|
+
icon: widget.icon || null,
|
|
5556
|
+
providers: widget.providers || [],
|
|
5557
|
+
isRegistry: true,
|
|
5558
|
+
packageName: pkg.name,
|
|
5559
|
+
packageDisplayName: pkg.displayName || pkg.name,
|
|
5560
|
+
packageVersion: pkg.version,
|
|
5561
|
+
packageAuthor: pkg.author || "",
|
|
5562
|
+
packageDescription: pkg.description || "",
|
|
5563
|
+
packageTags: pkg.tags || [],
|
|
5564
|
+
packageCategory: pkg.category || "",
|
|
5565
|
+
downloadUrl: pkg.downloadUrl || "",
|
|
5566
|
+
repository: pkg.repository || "",
|
|
5567
|
+
publishedAt: pkg.publishedAt || "",
|
|
5568
|
+
packageWidgets: pkg.widgets || [],
|
|
5569
|
+
appOrigin: pkg.appOrigin || null,
|
|
5570
|
+
packageProviders: pkg.providers || [],
|
|
5571
|
+
missingApis: missingApis
|
|
5572
|
+
});
|
|
5573
|
+
}
|
|
5574
|
+
} catch (err) {
|
|
5575
|
+
_iterator4.e(err);
|
|
5576
|
+
} finally {
|
|
5577
|
+
_iterator4.f();
|
|
5578
|
+
}
|
|
5579
|
+
}
|
|
5580
|
+
} catch (err) {
|
|
5581
|
+
_iterator.e(err);
|
|
5582
|
+
} finally {
|
|
5583
|
+
_iterator.f();
|
|
5584
|
+
}
|
|
5585
|
+
setFlatWidgets(widgets);
|
|
5586
|
+
_context.next = 5;
|
|
5587
|
+
break;
|
|
5588
|
+
case 4:
|
|
5589
|
+
_context.prev = 4;
|
|
5590
|
+
_t = _context["catch"](2);
|
|
5591
|
+
setError(_t.message || "Failed to load registry");
|
|
5592
|
+
setPackages([]);
|
|
5593
|
+
setFlatWidgets([]);
|
|
5594
|
+
case 5:
|
|
5595
|
+
_context.prev = 5;
|
|
5596
|
+
setIsLoading(false);
|
|
5597
|
+
return _context.finish(5);
|
|
5598
|
+
case 6:
|
|
5599
|
+
case "end":
|
|
5600
|
+
return _context.stop();
|
|
5601
|
+
}
|
|
5602
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
5603
|
+
}));
|
|
5604
|
+
return function (_x) {
|
|
5605
|
+
return _ref2.apply(this, arguments);
|
|
5606
|
+
};
|
|
5607
|
+
}(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
|
|
5608
|
+
|
|
5609
|
+
// Debounce search on query changes (300ms)
|
|
5610
|
+
useEffect(function () {
|
|
5611
|
+
var timer = setTimeout(function () {
|
|
5612
|
+
search(searchQuery);
|
|
5613
|
+
}, 300);
|
|
5614
|
+
return function () {
|
|
5615
|
+
return clearTimeout(timer);
|
|
5616
|
+
};
|
|
5617
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
5618
|
+
}, [searchQuery, showAllPackages]);
|
|
5619
|
+
var installPackage = useCallback(/*#__PURE__*/function () {
|
|
5620
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
|
|
5621
|
+
var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
|
|
5622
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
5623
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
5624
|
+
case 0:
|
|
5625
|
+
if (!(!widget || !widget.isRegistry)) {
|
|
5626
|
+
_context2.next = 1;
|
|
5627
|
+
break;
|
|
5628
|
+
}
|
|
5629
|
+
return _context2.abrupt("return");
|
|
5630
|
+
case 1:
|
|
5631
|
+
setIsInstalling(true);
|
|
5632
|
+
setInstallError(null);
|
|
5633
|
+
_context2.prev = 2;
|
|
5634
|
+
packageName = widget.packageName, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Resolve placeholders in the download URL
|
|
5635
|
+
resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
|
|
5636
|
+
_context2.next = 3;
|
|
5637
|
+
return window.mainApi.widgets.install(packageName, resolvedUrl);
|
|
5638
|
+
case 3:
|
|
5639
|
+
_context2.next = 5;
|
|
5640
|
+
break;
|
|
5641
|
+
case 4:
|
|
5642
|
+
_context2.prev = 4;
|
|
5643
|
+
_t2 = _context2["catch"](2);
|
|
5644
|
+
setInstallError(_t2.message || "Failed to install package");
|
|
5645
|
+
case 5:
|
|
5646
|
+
_context2.prev = 5;
|
|
5647
|
+
setIsInstalling(false);
|
|
5648
|
+
return _context2.finish(5);
|
|
5649
|
+
case 6:
|
|
5650
|
+
case "end":
|
|
5651
|
+
return _context2.stop();
|
|
5652
|
+
}
|
|
5653
|
+
}, _callee2, null, [[2, 4, 5, 6]]);
|
|
5654
|
+
}));
|
|
5655
|
+
return function (_x2) {
|
|
5656
|
+
return _ref3.apply(this, arguments);
|
|
5657
|
+
};
|
|
5658
|
+
}(), []);
|
|
5659
|
+
var retry = useCallback(function () {
|
|
5660
|
+
search(searchQuery);
|
|
5661
|
+
}, [search, searchQuery]);
|
|
5662
|
+
return {
|
|
5663
|
+
packages: packages,
|
|
5664
|
+
flatWidgets: flatWidgets,
|
|
5665
|
+
isLoading: isLoading,
|
|
5666
|
+
error: error,
|
|
5667
|
+
searchQuery: searchQuery,
|
|
5668
|
+
setSearchQuery: setSearchQuery,
|
|
5669
|
+
isInstalling: isInstalling,
|
|
5670
|
+
installError: installError,
|
|
5671
|
+
search: search,
|
|
5672
|
+
installPackage: installPackage,
|
|
5673
|
+
retry: retry,
|
|
5674
|
+
showAllPackages: showAllPackages,
|
|
5675
|
+
setShowAllPackages: setShowAllPackages,
|
|
5676
|
+
appCapabilities: appCapabilities
|
|
5677
|
+
};
|
|
5678
|
+
};
|
|
5679
|
+
|
|
5680
|
+
var WizardResultsStep = function WizardResultsStep(_ref) {
|
|
5681
|
+
var state = _ref.state,
|
|
5682
|
+
dispatch = _ref.dispatch;
|
|
5683
|
+
var _useState = useState("prebuilt"),
|
|
5684
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5685
|
+
activeTab = _useState2[0],
|
|
5686
|
+
setActiveTab = _useState2[1];
|
|
5687
|
+
|
|
5688
|
+
// --- Dashboard search (Tab A) ---
|
|
5689
|
+
var _useState3 = useState([]),
|
|
5690
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
5691
|
+
dashboards = _useState4[0],
|
|
5692
|
+
setDashboards = _useState4[1];
|
|
5693
|
+
var _useState5 = useState(false),
|
|
5694
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
5695
|
+
dashLoading = _useState6[0],
|
|
5696
|
+
setDashLoading = _useState6[1];
|
|
5697
|
+
var _useState7 = useState(null),
|
|
5698
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
5699
|
+
dashError = _useState8[0],
|
|
5700
|
+
setDashError = _useState8[1];
|
|
5701
|
+
var dashFilters = useMemo(function () {
|
|
5702
|
+
return {
|
|
5703
|
+
category: state.intent.length ? state.intent.join(",") : undefined,
|
|
5704
|
+
providerTypes: state.providers.length ? state.providers : undefined
|
|
5705
|
+
};
|
|
5706
|
+
}, [state.intent, state.providers]);
|
|
5707
|
+
var searchDashboards = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
5708
|
+
var _window$mainApi;
|
|
5709
|
+
var result, _t;
|
|
5710
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
5711
|
+
while (1) switch (_context.prev = _context.next) {
|
|
5712
|
+
case 0:
|
|
5713
|
+
if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchDashboards) {
|
|
5714
|
+
_context.next = 1;
|
|
5715
|
+
break;
|
|
5716
|
+
}
|
|
5717
|
+
setDashboards([]);
|
|
5718
|
+
return _context.abrupt("return");
|
|
5719
|
+
case 1:
|
|
5720
|
+
setDashLoading(true);
|
|
5721
|
+
setDashError(null);
|
|
5722
|
+
_context.prev = 2;
|
|
5723
|
+
_context.next = 3;
|
|
5724
|
+
return window.mainApi.registry.searchDashboards("", dashFilters);
|
|
5725
|
+
case 3:
|
|
5726
|
+
result = _context.sent;
|
|
5727
|
+
setDashboards(result.packages || []);
|
|
5728
|
+
_context.next = 5;
|
|
5729
|
+
break;
|
|
5730
|
+
case 4:
|
|
5731
|
+
_context.prev = 4;
|
|
5732
|
+
_t = _context["catch"](2);
|
|
5733
|
+
setDashError(_t.message || "Failed to search dashboards");
|
|
5734
|
+
setDashboards([]);
|
|
5735
|
+
case 5:
|
|
5736
|
+
_context.prev = 5;
|
|
5737
|
+
setDashLoading(false);
|
|
5738
|
+
return _context.finish(5);
|
|
5739
|
+
case 6:
|
|
5740
|
+
case "end":
|
|
5741
|
+
return _context.stop();
|
|
5742
|
+
}
|
|
5743
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
5744
|
+
})), [dashFilters]);
|
|
5745
|
+
useEffect(function () {
|
|
5746
|
+
searchDashboards();
|
|
5747
|
+
}, [searchDashboards]);
|
|
5748
|
+
|
|
5749
|
+
// --- Widget search (Tab B) ---
|
|
5750
|
+
var _useRegistrySearch = useRegistrySearch({
|
|
5751
|
+
filterByCapabilities: true
|
|
5752
|
+
}),
|
|
5753
|
+
flatWidgets = _useRegistrySearch.flatWidgets,
|
|
5754
|
+
widgetsLoading = _useRegistrySearch.isLoading,
|
|
5755
|
+
widgetsError = _useRegistrySearch.error;
|
|
5756
|
+
|
|
5757
|
+
// Filter widgets by selected categories + providers
|
|
5758
|
+
var filteredWidgets = useMemo(function () {
|
|
5759
|
+
return flatWidgets.filter(function (w) {
|
|
5760
|
+
// Category filter: match if widget's category overlaps user intent
|
|
5761
|
+
var catMatch = state.intent.length === 0 || state.intent.some(function (cat) {
|
|
5762
|
+
return (w.packageCategory || "").toLowerCase() === cat.toLowerCase();
|
|
5763
|
+
});
|
|
5764
|
+
|
|
5765
|
+
// Provider filter: match if widget requires any of the selected providers
|
|
5766
|
+
var providerMatch = state.providers.length === 0 || (w.providers || []).some(function (p) {
|
|
5767
|
+
return state.providers.includes(p.type);
|
|
5768
|
+
}) || (w.packageProviders || []).some(function (p) {
|
|
5769
|
+
return state.providers.includes(p.type);
|
|
5770
|
+
});
|
|
5771
|
+
return catMatch && providerMatch;
|
|
5772
|
+
});
|
|
5773
|
+
}, [flatWidgets, state.intent, state.providers]);
|
|
5774
|
+
|
|
5775
|
+
// --- Tab change: set wizard path ---
|
|
5776
|
+
var handleTabChange = useCallback(function (tab) {
|
|
5777
|
+
setActiveTab(tab);
|
|
5778
|
+
dispatch({
|
|
5779
|
+
type: "SET_PATH",
|
|
5780
|
+
payload: tab === "prebuilt" ? "prebuilt" : "custom"
|
|
5781
|
+
});
|
|
5782
|
+
}, [dispatch]);
|
|
5783
|
+
|
|
5784
|
+
// Set initial path on mount
|
|
5785
|
+
useEffect(function () {
|
|
5786
|
+
if (!state.path) {
|
|
5787
|
+
dispatch({
|
|
5788
|
+
type: "SET_PATH",
|
|
5789
|
+
payload: "prebuilt"
|
|
5790
|
+
});
|
|
5791
|
+
}
|
|
5792
|
+
}, [state.path, dispatch]);
|
|
5793
|
+
|
|
5794
|
+
// --- Dashboard selection (single-select) ---
|
|
5795
|
+
var handleSelectDashboard = useCallback(function (dashboard) {
|
|
5796
|
+
dispatch({
|
|
5797
|
+
type: "SET_SELECTED_DASHBOARD",
|
|
5798
|
+
payload: dashboard
|
|
5799
|
+
});
|
|
5800
|
+
}, [dispatch]);
|
|
5801
|
+
|
|
5802
|
+
// --- Widget selection (multi-select) ---
|
|
5803
|
+
var handleToggleWidget = useCallback(function (widget) {
|
|
5804
|
+
dispatch({
|
|
5805
|
+
type: "TOGGLE_WIDGET",
|
|
5806
|
+
payload: widget
|
|
5807
|
+
});
|
|
5808
|
+
}, [dispatch]);
|
|
5809
|
+
var isWidgetSelected = useCallback(function (widget) {
|
|
5810
|
+
return state.selectedWidgets.some(function (w) {
|
|
5811
|
+
return w.name === widget.name;
|
|
5812
|
+
});
|
|
5813
|
+
}, [state.selectedWidgets]);
|
|
5814
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5815
|
+
className: "wizard-results-step",
|
|
5816
|
+
children: [/*#__PURE__*/jsx("h3", {
|
|
5817
|
+
className: "wizard-step-header",
|
|
5818
|
+
children: "Choose your starting point"
|
|
5819
|
+
}), /*#__PURE__*/jsxs(Tabs3, {
|
|
5820
|
+
value: activeTab,
|
|
5821
|
+
onValueChange: handleTabChange,
|
|
5822
|
+
className: "wizard-results-tabs",
|
|
5823
|
+
children: [/*#__PURE__*/jsxs(Tabs3.List, {
|
|
5824
|
+
className: "wizard-results-tab-list",
|
|
5825
|
+
children: [/*#__PURE__*/jsx(Tabs3.Trigger, {
|
|
5826
|
+
value: "prebuilt",
|
|
5827
|
+
children: "Pre-built Dashboards"
|
|
5828
|
+
}), /*#__PURE__*/jsxs(Tabs3.Trigger, {
|
|
5829
|
+
value: "custom",
|
|
5830
|
+
children: ["Build Your Own", state.selectedWidgets.length > 0 && /*#__PURE__*/jsx("span", {
|
|
5831
|
+
className: "wizard-count-badge",
|
|
5832
|
+
children: state.selectedWidgets.length
|
|
5833
|
+
})]
|
|
5834
|
+
})]
|
|
5835
|
+
}), /*#__PURE__*/jsx(Tabs3.Content, {
|
|
5836
|
+
value: "prebuilt",
|
|
5837
|
+
children: /*#__PURE__*/jsx(DashboardList, {
|
|
5838
|
+
dashboards: dashboards,
|
|
5839
|
+
isLoading: dashLoading,
|
|
5840
|
+
error: dashError,
|
|
5841
|
+
selectedDashboard: state.selectedDashboard,
|
|
5842
|
+
onSelect: handleSelectDashboard
|
|
5843
|
+
})
|
|
5844
|
+
}), /*#__PURE__*/jsx(Tabs3.Content, {
|
|
5845
|
+
value: "custom",
|
|
5846
|
+
children: /*#__PURE__*/jsx(WidgetList, {
|
|
5847
|
+
widgets: filteredWidgets,
|
|
5848
|
+
isLoading: widgetsLoading,
|
|
5849
|
+
error: widgetsError,
|
|
5850
|
+
isSelected: isWidgetSelected,
|
|
5851
|
+
onToggle: handleToggleWidget,
|
|
5852
|
+
selectedCount: state.selectedWidgets.length
|
|
5853
|
+
})
|
|
5854
|
+
})]
|
|
5855
|
+
})]
|
|
5856
|
+
});
|
|
5857
|
+
};
|
|
5858
|
+
|
|
5859
|
+
// --- Sub-components ---
|
|
5860
|
+
|
|
5861
|
+
var DashboardList = function DashboardList(_ref3) {
|
|
5862
|
+
var dashboards = _ref3.dashboards,
|
|
5863
|
+
isLoading = _ref3.isLoading,
|
|
5864
|
+
error = _ref3.error,
|
|
5865
|
+
selectedDashboard = _ref3.selectedDashboard,
|
|
5866
|
+
onSelect = _ref3.onSelect;
|
|
5867
|
+
if (isLoading) {
|
|
5868
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5869
|
+
className: "wizard-loading",
|
|
5870
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5871
|
+
icon: "spinner",
|
|
5872
|
+
spin: true,
|
|
5873
|
+
fixedWidth: true,
|
|
5874
|
+
className: "wizard-loading-icon"
|
|
5875
|
+
}), /*#__PURE__*/jsx("span", {
|
|
5876
|
+
children: "Searching dashboards..."
|
|
5877
|
+
})]
|
|
5878
|
+
});
|
|
5879
|
+
}
|
|
5880
|
+
if (error) {
|
|
5881
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5882
|
+
className: "wizard-error",
|
|
5883
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5884
|
+
icon: "circle-exclamation",
|
|
5885
|
+
fixedWidth: true
|
|
5886
|
+
}), /*#__PURE__*/jsx("span", {
|
|
5887
|
+
children: error
|
|
5888
|
+
})]
|
|
5889
|
+
});
|
|
5890
|
+
}
|
|
5891
|
+
if (dashboards.length === 0) {
|
|
5892
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5893
|
+
className: "wizard-empty",
|
|
5894
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5895
|
+
icon: "box-open",
|
|
5896
|
+
fixedWidth: true,
|
|
5897
|
+
className: "wizard-empty-icon"
|
|
5898
|
+
}), /*#__PURE__*/jsx("p", {
|
|
5899
|
+
children: "No pre-built dashboards match your selections."
|
|
5900
|
+
}), /*#__PURE__*/jsx("p", {
|
|
5901
|
+
className: "wizard-empty-hint",
|
|
5902
|
+
children: "Try the \"Build Your Own\" tab to pick individual widgets."
|
|
5903
|
+
})]
|
|
5904
|
+
});
|
|
5905
|
+
}
|
|
5906
|
+
return /*#__PURE__*/jsx("div", {
|
|
5907
|
+
className: "wizard-dashboard-list",
|
|
5908
|
+
children: dashboards.map(function (dash) {
|
|
5909
|
+
var isSelected = selectedDashboard && selectedDashboard.name === dash.name;
|
|
5910
|
+
var widgetCount = (dash.widgets || []).length;
|
|
5911
|
+
var providerNames = (dash.providers || []).map(function (p) {
|
|
5912
|
+
return p.name || p.type;
|
|
5913
|
+
}).join(", ");
|
|
5914
|
+
return /*#__PURE__*/jsxs("button", {
|
|
5915
|
+
type: "button",
|
|
5916
|
+
className: "wizard-dashboard-card ".concat(isSelected ? "wizard-dashboard-card--selected" : ""),
|
|
5917
|
+
onClick: function onClick() {
|
|
5918
|
+
return onSelect(dash);
|
|
5919
|
+
},
|
|
5920
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
5921
|
+
className: "wizard-dashboard-card-header",
|
|
5922
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5923
|
+
icon: resolveIcon(dash.icon || "grid-2"),
|
|
5924
|
+
fixedWidth: true,
|
|
5925
|
+
className: "wizard-dashboard-card-icon"
|
|
5926
|
+
}), /*#__PURE__*/jsx("span", {
|
|
5927
|
+
className: "wizard-dashboard-card-name",
|
|
5928
|
+
children: dash.displayName || dash.name
|
|
5929
|
+
}), isSelected && /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5930
|
+
icon: "circle-check",
|
|
5931
|
+
className: "wizard-dashboard-card-check"
|
|
5932
|
+
})]
|
|
5933
|
+
}), dash.description && /*#__PURE__*/jsx("p", {
|
|
5934
|
+
className: "wizard-dashboard-card-desc",
|
|
5935
|
+
children: dash.description
|
|
5936
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
5937
|
+
className: "wizard-dashboard-card-meta",
|
|
5938
|
+
children: [/*#__PURE__*/jsxs("span", {
|
|
5939
|
+
children: [widgetCount, " widget", widgetCount !== 1 ? "s" : ""]
|
|
5940
|
+
}), providerNames && /*#__PURE__*/jsx("span", {
|
|
5941
|
+
children: providerNames
|
|
5942
|
+
})]
|
|
5943
|
+
})]
|
|
5944
|
+
}, dash.name);
|
|
5945
|
+
})
|
|
5946
|
+
});
|
|
5947
|
+
};
|
|
5948
|
+
var WidgetList = function WidgetList(_ref4) {
|
|
5949
|
+
var widgets = _ref4.widgets,
|
|
5950
|
+
isLoading = _ref4.isLoading,
|
|
5951
|
+
error = _ref4.error,
|
|
5952
|
+
isSelected = _ref4.isSelected,
|
|
5953
|
+
onToggle = _ref4.onToggle,
|
|
5954
|
+
selectedCount = _ref4.selectedCount;
|
|
5955
|
+
if (isLoading) {
|
|
5956
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5957
|
+
className: "wizard-loading",
|
|
5958
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5959
|
+
icon: "spinner",
|
|
5960
|
+
spin: true,
|
|
5961
|
+
fixedWidth: true,
|
|
5962
|
+
className: "wizard-loading-icon"
|
|
5963
|
+
}), /*#__PURE__*/jsx("span", {
|
|
5964
|
+
children: "Searching widgets..."
|
|
5965
|
+
})]
|
|
5966
|
+
});
|
|
5967
|
+
}
|
|
5968
|
+
if (error) {
|
|
5969
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5970
|
+
className: "wizard-error",
|
|
5971
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5972
|
+
icon: "circle-exclamation",
|
|
5973
|
+
fixedWidth: true
|
|
5974
|
+
}), /*#__PURE__*/jsx("span", {
|
|
5975
|
+
children: error
|
|
5976
|
+
})]
|
|
5977
|
+
});
|
|
5978
|
+
}
|
|
5979
|
+
if (widgets.length === 0) {
|
|
5980
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5981
|
+
className: "wizard-empty",
|
|
5982
|
+
children: [/*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
5983
|
+
icon: "puzzle-piece",
|
|
5984
|
+
fixedWidth: true,
|
|
5985
|
+
className: "wizard-empty-icon"
|
|
5986
|
+
}), /*#__PURE__*/jsx("p", {
|
|
5987
|
+
children: "No widgets match your selections."
|
|
5988
|
+
}), /*#__PURE__*/jsx("p", {
|
|
5989
|
+
className: "wizard-empty-hint",
|
|
5990
|
+
children: "Try adjusting your categories or providers in the previous steps."
|
|
5991
|
+
})]
|
|
5992
|
+
});
|
|
5993
|
+
}
|
|
5994
|
+
return /*#__PURE__*/jsxs("div", {
|
|
5995
|
+
className: "wizard-widget-list",
|
|
5996
|
+
children: [selectedCount > 0 && /*#__PURE__*/jsxs("p", {
|
|
5997
|
+
className: "wizard-widget-count",
|
|
5998
|
+
children: [selectedCount, " widget", selectedCount !== 1 ? "s" : "", " selected"]
|
|
5999
|
+
}), widgets.map(function (widget) {
|
|
6000
|
+
var checked = isSelected(widget);
|
|
6001
|
+
return /*#__PURE__*/jsxs("button", {
|
|
6002
|
+
type: "button",
|
|
6003
|
+
className: "wizard-widget-card ".concat(checked ? "wizard-widget-card--selected" : ""),
|
|
6004
|
+
onClick: function onClick() {
|
|
6005
|
+
return onToggle(widget);
|
|
6006
|
+
},
|
|
6007
|
+
children: [/*#__PURE__*/jsx("div", {
|
|
6008
|
+
className: "wizard-widget-card-checkbox",
|
|
6009
|
+
children: /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
6010
|
+
icon: checked ? "square-check" : "square",
|
|
6011
|
+
fixedWidth: true
|
|
6012
|
+
})
|
|
6013
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
6014
|
+
className: "wizard-widget-card-info",
|
|
6015
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
6016
|
+
className: "wizard-widget-card-header",
|
|
6017
|
+
children: [widget.icon && /*#__PURE__*/jsx(FontAwesomeIcon, {
|
|
6018
|
+
icon: resolveIcon(widget.icon),
|
|
6019
|
+
fixedWidth: true,
|
|
6020
|
+
className: "wizard-widget-card-icon"
|
|
6021
|
+
}), /*#__PURE__*/jsx("span", {
|
|
6022
|
+
className: "wizard-widget-card-name",
|
|
6023
|
+
children: widget.name
|
|
6024
|
+
})]
|
|
6025
|
+
}), widget.description && /*#__PURE__*/jsx("p", {
|
|
6026
|
+
className: "wizard-widget-card-desc",
|
|
6027
|
+
children: widget.description
|
|
6028
|
+
}), widget.packageDisplayName && /*#__PURE__*/jsx("span", {
|
|
6029
|
+
className: "wizard-widget-card-package",
|
|
6030
|
+
children: widget.packageDisplayName
|
|
6031
|
+
})]
|
|
6032
|
+
})]
|
|
6033
|
+
}, widget.key);
|
|
6034
|
+
})]
|
|
6035
|
+
});
|
|
6036
|
+
};
|
|
6037
|
+
|
|
5207
6038
|
var LayoutBuilderAddItemModal = function LayoutBuilderAddItemModal(_ref) {
|
|
5208
6039
|
var workspace = _ref.workspace,
|
|
5209
6040
|
open = _ref.open,
|
|
@@ -9836,9 +10667,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
|
|
|
9836
10667
|
};
|
|
9837
10668
|
|
|
9838
10669
|
var _excluded$5 = ["rows", "cols"];
|
|
9839
|
-
function _createForOfIteratorHelper$
|
|
9840
|
-
function _unsupportedIterableToArray$
|
|
9841
|
-
function _arrayLikeToArray$
|
|
10670
|
+
function _createForOfIteratorHelper$d(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$d(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; } } }; }
|
|
10671
|
+
function _unsupportedIterableToArray$d(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$d(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$d(r, a) : void 0; } }
|
|
10672
|
+
function _arrayLikeToArray$d(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; }
|
|
9842
10673
|
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; }
|
|
9843
10674
|
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; }
|
|
9844
10675
|
var defaultGrid = {
|
|
@@ -9991,7 +10822,7 @@ function GridEditor(_ref) {
|
|
|
9991
10822
|
function sortObjectByKeys(obj) {
|
|
9992
10823
|
var sortedKeys = Object.keys(obj).sort();
|
|
9993
10824
|
var sortedObj = {};
|
|
9994
|
-
var _iterator = _createForOfIteratorHelper$
|
|
10825
|
+
var _iterator = _createForOfIteratorHelper$d(sortedKeys),
|
|
9995
10826
|
_step;
|
|
9996
10827
|
try {
|
|
9997
10828
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -10464,9 +11295,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
|
|
|
10464
11295
|
});
|
|
10465
11296
|
};
|
|
10466
11297
|
|
|
10467
|
-
function _createForOfIteratorHelper$
|
|
10468
|
-
function _unsupportedIterableToArray$
|
|
10469
|
-
function _arrayLikeToArray$
|
|
11298
|
+
function _createForOfIteratorHelper$c(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$c(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; } } }; }
|
|
11299
|
+
function _unsupportedIterableToArray$c(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$c(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$c(r, a) : void 0; } }
|
|
11300
|
+
function _arrayLikeToArray$c(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; }
|
|
10470
11301
|
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; }
|
|
10471
11302
|
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; }
|
|
10472
11303
|
var DAYS = [{
|
|
@@ -10795,7 +11626,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
|
|
|
10795
11626
|
setIsLoading(true);
|
|
10796
11627
|
window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
|
|
10797
11628
|
var stateMap = {};
|
|
10798
|
-
var _iterator = _createForOfIteratorHelper$
|
|
11629
|
+
var _iterator = _createForOfIteratorHelper$c(tasks || []),
|
|
10799
11630
|
_step;
|
|
10800
11631
|
try {
|
|
10801
11632
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -13645,9 +14476,9 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
|
|
|
13645
14476
|
});
|
|
13646
14477
|
};
|
|
13647
14478
|
|
|
13648
|
-
function _createForOfIteratorHelper$
|
|
13649
|
-
function _unsupportedIterableToArray$
|
|
13650
|
-
function _arrayLikeToArray$
|
|
14479
|
+
function _createForOfIteratorHelper$b(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$b(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; } } }; }
|
|
14480
|
+
function _unsupportedIterableToArray$b(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$b(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$b(r, a) : void 0; } }
|
|
14481
|
+
function _arrayLikeToArray$b(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; }
|
|
13651
14482
|
function ownKeys$u(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; }
|
|
13652
14483
|
function _objectSpread$u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$u(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13653
14484
|
var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
@@ -13914,11 +14745,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
|
|
|
13914
14745
|
|
|
13915
14746
|
// Flatten all widgets from all packages for the widget list
|
|
13916
14747
|
flatWidgets = [];
|
|
13917
|
-
_iterator = _createForOfIteratorHelper$
|
|
14748
|
+
_iterator = _createForOfIteratorHelper$b(result.packages || []);
|
|
13918
14749
|
try {
|
|
13919
14750
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
13920
14751
|
pkg = _step.value;
|
|
13921
|
-
_iterator2 = _createForOfIteratorHelper$
|
|
14752
|
+
_iterator2 = _createForOfIteratorHelper$b(pkg.widgets || []);
|
|
13922
14753
|
try {
|
|
13923
14754
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
13924
14755
|
widget = _step2.value;
|
|
@@ -15474,9 +16305,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
|
|
|
15474
16305
|
});
|
|
15475
16306
|
};
|
|
15476
16307
|
|
|
15477
|
-
function _createForOfIteratorHelper$
|
|
15478
|
-
function _unsupportedIterableToArray$
|
|
15479
|
-
function _arrayLikeToArray$
|
|
16308
|
+
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; } } }; }
|
|
16309
|
+
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; } }
|
|
16310
|
+
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; }
|
|
15480
16311
|
var WidgetCardHeader = function WidgetCardHeader(_ref) {
|
|
15481
16312
|
var item = _ref.item,
|
|
15482
16313
|
widget = _ref.widget,
|
|
@@ -15520,7 +16351,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
|
|
|
15520
16351
|
var el = headerRef.current;
|
|
15521
16352
|
if (!el) return;
|
|
15522
16353
|
var observer = new ResizeObserver(function (entries) {
|
|
15523
|
-
var _iterator = _createForOfIteratorHelper$
|
|
16354
|
+
var _iterator = _createForOfIteratorHelper$a(entries),
|
|
15524
16355
|
_step;
|
|
15525
16356
|
try {
|
|
15526
16357
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -15877,9 +16708,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
|
|
|
15877
16708
|
};
|
|
15878
16709
|
};
|
|
15879
16710
|
|
|
15880
|
-
function _createForOfIteratorHelper$
|
|
15881
|
-
function _unsupportedIterableToArray$
|
|
15882
|
-
function _arrayLikeToArray$
|
|
16711
|
+
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; } } }; }
|
|
16712
|
+
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; } }
|
|
16713
|
+
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; }
|
|
15883
16714
|
function formatCountdown(ms) {
|
|
15884
16715
|
if (ms == null || ms < 0) return "--";
|
|
15885
16716
|
if (ms < 1000) return "< 1s";
|
|
@@ -15996,7 +16827,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
|
|
|
15996
16827
|
|
|
15997
16828
|
// Find soonest countdown among enabled tasks
|
|
15998
16829
|
var soonestMs = null;
|
|
15999
|
-
var _iterator = _createForOfIteratorHelper$
|
|
16830
|
+
var _iterator = _createForOfIteratorHelper$9(enabledTasks),
|
|
16000
16831
|
_step;
|
|
16001
16832
|
try {
|
|
16002
16833
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -20609,9 +21440,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
|
|
|
20609
21440
|
var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
|
|
20610
21441
|
var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
|
|
20611
21442
|
|
|
20612
|
-
function _createForOfIteratorHelper$
|
|
20613
|
-
function _unsupportedIterableToArray$
|
|
20614
|
-
function _arrayLikeToArray$
|
|
21443
|
+
function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(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; } } }; }
|
|
21444
|
+
function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(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$8(r, a) : void 0; } }
|
|
21445
|
+
function _arrayLikeToArray$8(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; }
|
|
20615
21446
|
function ownKeys$n(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; }
|
|
20616
21447
|
function _objectSpread$n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$n(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20617
21448
|
var DraggableDroppableCellBody = function DraggableDroppableCellBody(_ref) {
|
|
@@ -21175,7 +22006,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
|
|
|
21175
22006
|
return selectable["delete"](cn);
|
|
21176
22007
|
});
|
|
21177
22008
|
var resolved = new Set();
|
|
21178
|
-
var _iterator = _createForOfIteratorHelper$
|
|
22009
|
+
var _iterator = _createForOfIteratorHelper$8(selectable),
|
|
21179
22010
|
_step;
|
|
21180
22011
|
try {
|
|
21181
22012
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -23315,9 +24146,9 @@ function isWidgetResolvable(componentKey) {
|
|
|
23315
24146
|
|
|
23316
24147
|
function ownKeys$m(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; }
|
|
23317
24148
|
function _objectSpread$m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$m(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23318
|
-
function _createForOfIteratorHelper$
|
|
23319
|
-
function _unsupportedIterableToArray$
|
|
23320
|
-
function _arrayLikeToArray$
|
|
24149
|
+
function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(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; } } }; }
|
|
24150
|
+
function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(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$7(r, a) : void 0; } }
|
|
24151
|
+
function _arrayLikeToArray$7(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; }
|
|
23321
24152
|
/**
|
|
23322
24153
|
* The model for all layout components used primarily in the renderLayout method
|
|
23323
24154
|
* @param {Object} layoutItem an object containing various attributes of the layout item
|
|
@@ -23329,7 +24160,7 @@ function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.lengt
|
|
|
23329
24160
|
function sortObjectByKeys(obj) {
|
|
23330
24161
|
var sortedKeys = Object.keys(obj).sort();
|
|
23331
24162
|
var sortedObj = {};
|
|
23332
|
-
var _iterator = _createForOfIteratorHelper$
|
|
24163
|
+
var _iterator = _createForOfIteratorHelper$7(sortedKeys),
|
|
23333
24164
|
_step;
|
|
23334
24165
|
try {
|
|
23335
24166
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -26595,9 +27426,9 @@ var useDashboard = function useDashboard() {
|
|
|
26595
27426
|
});
|
|
26596
27427
|
};
|
|
26597
27428
|
|
|
26598
|
-
function _createForOfIteratorHelper$
|
|
26599
|
-
function _unsupportedIterableToArray$
|
|
26600
|
-
function _arrayLikeToArray$
|
|
27429
|
+
function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(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; } } }; }
|
|
27430
|
+
function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(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$6(r, a) : void 0; } }
|
|
27431
|
+
function _arrayLikeToArray$6(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; }
|
|
26601
27432
|
|
|
26602
27433
|
/**
|
|
26603
27434
|
* useWidgetProviders Hook
|
|
@@ -26648,7 +27479,7 @@ var useWidgetProviders = function useWidgetProviders() {
|
|
|
26648
27479
|
// 1. Widget-level: stored directly on the layout item by handleSelectProvider
|
|
26649
27480
|
// 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
|
|
26650
27481
|
var providers = {};
|
|
26651
|
-
var _iterator = _createForOfIteratorHelper$
|
|
27482
|
+
var _iterator = _createForOfIteratorHelper$6(providerDeclarations),
|
|
26652
27483
|
_step;
|
|
26653
27484
|
try {
|
|
26654
27485
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -27383,9 +28214,9 @@ var useNotifications = function useNotifications() {
|
|
|
27383
28214
|
};
|
|
27384
28215
|
};
|
|
27385
28216
|
|
|
27386
|
-
function _createForOfIteratorHelper$
|
|
27387
|
-
function _unsupportedIterableToArray$
|
|
27388
|
-
function _arrayLikeToArray$
|
|
28217
|
+
function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(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; } } }; }
|
|
28218
|
+
function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(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$5(r, a) : void 0; } }
|
|
28219
|
+
function _arrayLikeToArray$5(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; }
|
|
27389
28220
|
|
|
27390
28221
|
/**
|
|
27391
28222
|
* useScheduler Hook
|
|
@@ -27458,7 +28289,7 @@ var useScheduler = function useScheduler() {
|
|
|
27458
28289
|
if (pending && pending.length > 0) {
|
|
27459
28290
|
setPendingResults(pending);
|
|
27460
28291
|
// Call handlers for each pending result
|
|
27461
|
-
var _iterator = _createForOfIteratorHelper$
|
|
28292
|
+
var _iterator = _createForOfIteratorHelper$5(pending),
|
|
27462
28293
|
_step;
|
|
27463
28294
|
try {
|
|
27464
28295
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -30635,36 +31466,9 @@ function loadWidgetBundle(source, widgetName) {
|
|
|
30635
31466
|
};
|
|
30636
31467
|
}
|
|
30637
31468
|
|
|
30638
|
-
var
|
|
30639
|
-
|
|
30640
|
-
|
|
30641
|
-
* Resolve an icon name to a valid FontAwesome icon reference.
|
|
30642
|
-
* Tries solid (fas) first, then brand (fab). Returns "puzzle-piece" if
|
|
30643
|
-
* the icon is falsy or not found in either prefix.
|
|
30644
|
-
*/
|
|
30645
|
-
var resolveIcon = function resolveIcon(iconName) {
|
|
30646
|
-
if (!iconName) return FALLBACK;
|
|
30647
|
-
|
|
30648
|
-
// Already an array tuple like ["fab", "github"] — pass through
|
|
30649
|
-
if (Array.isArray(iconName)) return iconName;
|
|
30650
|
-
|
|
30651
|
-
// Try solid
|
|
30652
|
-
if (findIconDefinition({
|
|
30653
|
-
prefix: "fas",
|
|
30654
|
-
iconName: iconName
|
|
30655
|
-
})) return iconName;
|
|
30656
|
-
|
|
30657
|
-
// Try brand
|
|
30658
|
-
if (findIconDefinition({
|
|
30659
|
-
prefix: "fab",
|
|
30660
|
-
iconName: iconName
|
|
30661
|
-
})) return ["fab", iconName];
|
|
30662
|
-
return FALLBACK;
|
|
30663
|
-
};
|
|
30664
|
-
|
|
30665
|
-
function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(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; } } }; }
|
|
30666
|
-
function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(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$5(r, a) : void 0; } }
|
|
30667
|
-
function _arrayLikeToArray$5(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; }
|
|
31469
|
+
function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(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; } } }; }
|
|
31470
|
+
function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(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$4(r, a) : void 0; } }
|
|
31471
|
+
function _arrayLikeToArray$4(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; }
|
|
30668
31472
|
/**
|
|
30669
31473
|
* Validation utilities for grid-first dashboard architecture
|
|
30670
31474
|
*
|
|
@@ -30903,7 +31707,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
|
|
|
30903
31707
|
|
|
30904
31708
|
// Validate each cell
|
|
30905
31709
|
var cells = [];
|
|
30906
|
-
var _iterator = _createForOfIteratorHelper$
|
|
31710
|
+
var _iterator = _createForOfIteratorHelper$4(cellNumbers),
|
|
30907
31711
|
_step;
|
|
30908
31712
|
try {
|
|
30909
31713
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -38647,9 +39451,9 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
|
|
|
38647
39451
|
|
|
38648
39452
|
function ownKeys$6(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; }
|
|
38649
39453
|
function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
38650
|
-
function _createForOfIteratorHelper$
|
|
38651
|
-
function _unsupportedIterableToArray$
|
|
38652
|
-
function _arrayLikeToArray$
|
|
39454
|
+
function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(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; } } }; }
|
|
39455
|
+
function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(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$3(r, a) : void 0; } }
|
|
39456
|
+
function _arrayLikeToArray$3(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; }
|
|
38653
39457
|
function isValidWsUrl(url) {
|
|
38654
39458
|
if (!url) return false;
|
|
38655
39459
|
try {
|
|
@@ -38696,7 +39500,7 @@ function extractCredentialFields(url, headerRows) {
|
|
|
38696
39500
|
fields.add(match[1]);
|
|
38697
39501
|
}
|
|
38698
39502
|
}
|
|
38699
|
-
var _iterator = _createForOfIteratorHelper$
|
|
39503
|
+
var _iterator = _createForOfIteratorHelper$3(headerRows),
|
|
38700
39504
|
_step;
|
|
38701
39505
|
try {
|
|
38702
39506
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -38799,7 +39603,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
|
|
|
38799
39603
|
if (!url.trim()) errs.url = "WebSocket URL is required";else if (!isValidWsUrl(url)) errs.url = "URL must start with ws:// or wss://";
|
|
38800
39604
|
|
|
38801
39605
|
// Check required credential fields are filled
|
|
38802
|
-
var _iterator2 = _createForOfIteratorHelper$
|
|
39606
|
+
var _iterator2 = _createForOfIteratorHelper$3(credentialFields),
|
|
38803
39607
|
_step2;
|
|
38804
39608
|
try {
|
|
38805
39609
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
@@ -38822,7 +39626,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
|
|
|
38822
39626
|
|
|
38823
39627
|
// Build headers object from rows
|
|
38824
39628
|
var headers = {};
|
|
38825
|
-
var _iterator3 = _createForOfIteratorHelper$
|
|
39629
|
+
var _iterator3 = _createForOfIteratorHelper$3(headerRows),
|
|
38826
39630
|
_step3;
|
|
38827
39631
|
try {
|
|
38828
39632
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
@@ -38891,7 +39695,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
|
|
|
38891
39695
|
|
|
38892
39696
|
// Build config from current form state (same as handleSave)
|
|
38893
39697
|
headers = {};
|
|
38894
|
-
_iterator4 = _createForOfIteratorHelper$
|
|
39698
|
+
_iterator4 = _createForOfIteratorHelper$3(headerRows);
|
|
38895
39699
|
try {
|
|
38896
39700
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
38897
39701
|
row = _step4.value;
|
|
@@ -41535,293 +42339,6 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
|
|
|
41535
42339
|
});
|
|
41536
42340
|
};
|
|
41537
42341
|
|
|
41538
|
-
function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(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; } } }; }
|
|
41539
|
-
function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(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$3(r, a) : void 0; } }
|
|
41540
|
-
function _arrayLikeToArray$3(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; }
|
|
41541
|
-
|
|
41542
|
-
/**
|
|
41543
|
-
* useRegistrySearch — shared hook for browsing and installing registry packages.
|
|
41544
|
-
*
|
|
41545
|
-
* Extracted from EnhancedWidgetDropdown so the same logic can power the
|
|
41546
|
-
* Discover tab inside AppSettingsModal (and anywhere else).
|
|
41547
|
-
*
|
|
41548
|
-
* Options:
|
|
41549
|
-
* filterByCapabilities – if true (default), only show packages compatible
|
|
41550
|
-
* with the app's API capabilities
|
|
41551
|
-
*
|
|
41552
|
-
* Returns:
|
|
41553
|
-
* packages – raw package objects from the registry
|
|
41554
|
-
* flatWidgets – flattened widget entries with `isRegistry: true`
|
|
41555
|
-
* isLoading – true while a search request is in flight
|
|
41556
|
-
* error – error message string (or null)
|
|
41557
|
-
* searchQuery / setSearchQuery – controlled search input
|
|
41558
|
-
* isInstalling – true during an install
|
|
41559
|
-
* installError – install error string (or null)
|
|
41560
|
-
* search() – manually trigger a search
|
|
41561
|
-
* installPackage(widget) – install a specific registry widget
|
|
41562
|
-
* showAllPackages / setShowAllPackages – toggle to show incompatible packages
|
|
41563
|
-
* appCapabilities – the app's API namespaces
|
|
41564
|
-
*/
|
|
41565
|
-
var useRegistrySearch = function useRegistrySearch() {
|
|
41566
|
-
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
41567
|
-
_ref$filterByCapabili = _ref.filterByCapabilities,
|
|
41568
|
-
filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
|
|
41569
|
-
var _useState = useState(false),
|
|
41570
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
41571
|
-
isLoading = _useState2[0],
|
|
41572
|
-
setIsLoading = _useState2[1];
|
|
41573
|
-
var _useState3 = useState(null),
|
|
41574
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
41575
|
-
error = _useState4[0],
|
|
41576
|
-
setError = _useState4[1];
|
|
41577
|
-
var _useState5 = useState([]),
|
|
41578
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
41579
|
-
packages = _useState6[0],
|
|
41580
|
-
setPackages = _useState6[1];
|
|
41581
|
-
var _useState7 = useState([]),
|
|
41582
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
41583
|
-
flatWidgets = _useState8[0],
|
|
41584
|
-
setFlatWidgets = _useState8[1];
|
|
41585
|
-
var _useState9 = useState(""),
|
|
41586
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
41587
|
-
searchQuery = _useState0[0],
|
|
41588
|
-
setSearchQuery = _useState0[1];
|
|
41589
|
-
var _useState1 = useState(false),
|
|
41590
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
41591
|
-
isInstalling = _useState10[0],
|
|
41592
|
-
setIsInstalling = _useState10[1];
|
|
41593
|
-
var _useState11 = useState(null),
|
|
41594
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
41595
|
-
installError = _useState12[0],
|
|
41596
|
-
setInstallError = _useState12[1];
|
|
41597
|
-
var _useState13 = useState(false),
|
|
41598
|
-
_useState14 = _slicedToArray(_useState13, 2),
|
|
41599
|
-
showAllPackages = _useState14[0],
|
|
41600
|
-
setShowAllPackages = _useState14[1];
|
|
41601
|
-
|
|
41602
|
-
// Discover app capabilities from window.mainApi
|
|
41603
|
-
var appCapabilities = useMemo(function () {
|
|
41604
|
-
if (typeof window !== "undefined" && window.mainApi) {
|
|
41605
|
-
return Object.keys(window.mainApi);
|
|
41606
|
-
}
|
|
41607
|
-
return [];
|
|
41608
|
-
}, []);
|
|
41609
|
-
var search = useCallback(/*#__PURE__*/function () {
|
|
41610
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
|
|
41611
|
-
var _window$mainApi;
|
|
41612
|
-
var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
|
|
41613
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
41614
|
-
while (1) switch (_context.prev = _context.next) {
|
|
41615
|
-
case 0:
|
|
41616
|
-
if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.registry) {
|
|
41617
|
-
_context.next = 1;
|
|
41618
|
-
break;
|
|
41619
|
-
}
|
|
41620
|
-
setPackages([]);
|
|
41621
|
-
setFlatWidgets([]);
|
|
41622
|
-
return _context.abrupt("return");
|
|
41623
|
-
case 1:
|
|
41624
|
-
setIsLoading(true);
|
|
41625
|
-
setError(null);
|
|
41626
|
-
_context.prev = 2;
|
|
41627
|
-
filters = {};
|
|
41628
|
-
if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
|
|
41629
|
-
filters.appCapabilities = appCapabilities;
|
|
41630
|
-
}
|
|
41631
|
-
_context.next = 3;
|
|
41632
|
-
return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
|
|
41633
|
-
case 3:
|
|
41634
|
-
result = _context.sent;
|
|
41635
|
-
// Only include packages that contain at least one widget
|
|
41636
|
-
// (filters out theme-only packages, etc.)
|
|
41637
|
-
pkgs = (result.packages || []).filter(function (pkg) {
|
|
41638
|
-
return pkg.widgets && pkg.widgets.length > 0;
|
|
41639
|
-
});
|
|
41640
|
-
setPackages(pkgs);
|
|
41641
|
-
|
|
41642
|
-
// Flatten packages into widget entries
|
|
41643
|
-
capSet = new Set(appCapabilities.map(function (c) {
|
|
41644
|
-
return c.toLowerCase();
|
|
41645
|
-
}));
|
|
41646
|
-
widgets = [];
|
|
41647
|
-
_iterator = _createForOfIteratorHelper$3(pkgs);
|
|
41648
|
-
try {
|
|
41649
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
41650
|
-
pkg = _step.value;
|
|
41651
|
-
// Compute missing APIs for the entire package
|
|
41652
|
-
allApiProviders = [];
|
|
41653
|
-
_iterator2 = _createForOfIteratorHelper$3(pkg.providers || []);
|
|
41654
|
-
try {
|
|
41655
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
41656
|
-
p = _step2.value;
|
|
41657
|
-
if (p.providerClass === "api" && p.required !== false) {
|
|
41658
|
-
allApiProviders.push(p.type);
|
|
41659
|
-
}
|
|
41660
|
-
}
|
|
41661
|
-
} catch (err) {
|
|
41662
|
-
_iterator2.e(err);
|
|
41663
|
-
} finally {
|
|
41664
|
-
_iterator2.f();
|
|
41665
|
-
}
|
|
41666
|
-
_iterator3 = _createForOfIteratorHelper$3(pkg.widgets || []);
|
|
41667
|
-
try {
|
|
41668
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
41669
|
-
w = _step3.value;
|
|
41670
|
-
_iterator5 = _createForOfIteratorHelper$3(w.providers || []);
|
|
41671
|
-
try {
|
|
41672
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
41673
|
-
_p = _step5.value;
|
|
41674
|
-
if (_p.providerClass === "api" && _p.required !== false) {
|
|
41675
|
-
allApiProviders.push(_p.type);
|
|
41676
|
-
}
|
|
41677
|
-
}
|
|
41678
|
-
} catch (err) {
|
|
41679
|
-
_iterator5.e(err);
|
|
41680
|
-
} finally {
|
|
41681
|
-
_iterator5.f();
|
|
41682
|
-
}
|
|
41683
|
-
}
|
|
41684
|
-
} catch (err) {
|
|
41685
|
-
_iterator3.e(err);
|
|
41686
|
-
} finally {
|
|
41687
|
-
_iterator3.f();
|
|
41688
|
-
}
|
|
41689
|
-
missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
|
|
41690
|
-
return !capSet.has(api.toLowerCase());
|
|
41691
|
-
});
|
|
41692
|
-
_iterator4 = _createForOfIteratorHelper$3(pkg.widgets || []);
|
|
41693
|
-
try {
|
|
41694
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
41695
|
-
widget = _step4.value;
|
|
41696
|
-
widgets.push({
|
|
41697
|
-
key: "".concat(pkg.name, "/").concat(widget.name),
|
|
41698
|
-
name: widget.displayName || widget.name,
|
|
41699
|
-
description: widget.description || "",
|
|
41700
|
-
icon: widget.icon || null,
|
|
41701
|
-
providers: widget.providers || [],
|
|
41702
|
-
isRegistry: true,
|
|
41703
|
-
packageName: pkg.name,
|
|
41704
|
-
packageDisplayName: pkg.displayName || pkg.name,
|
|
41705
|
-
packageVersion: pkg.version,
|
|
41706
|
-
packageAuthor: pkg.author || "",
|
|
41707
|
-
packageDescription: pkg.description || "",
|
|
41708
|
-
packageTags: pkg.tags || [],
|
|
41709
|
-
packageCategory: pkg.category || "",
|
|
41710
|
-
downloadUrl: pkg.downloadUrl || "",
|
|
41711
|
-
repository: pkg.repository || "",
|
|
41712
|
-
publishedAt: pkg.publishedAt || "",
|
|
41713
|
-
packageWidgets: pkg.widgets || [],
|
|
41714
|
-
appOrigin: pkg.appOrigin || null,
|
|
41715
|
-
packageProviders: pkg.providers || [],
|
|
41716
|
-
missingApis: missingApis
|
|
41717
|
-
});
|
|
41718
|
-
}
|
|
41719
|
-
} catch (err) {
|
|
41720
|
-
_iterator4.e(err);
|
|
41721
|
-
} finally {
|
|
41722
|
-
_iterator4.f();
|
|
41723
|
-
}
|
|
41724
|
-
}
|
|
41725
|
-
} catch (err) {
|
|
41726
|
-
_iterator.e(err);
|
|
41727
|
-
} finally {
|
|
41728
|
-
_iterator.f();
|
|
41729
|
-
}
|
|
41730
|
-
setFlatWidgets(widgets);
|
|
41731
|
-
_context.next = 5;
|
|
41732
|
-
break;
|
|
41733
|
-
case 4:
|
|
41734
|
-
_context.prev = 4;
|
|
41735
|
-
_t = _context["catch"](2);
|
|
41736
|
-
setError(_t.message || "Failed to load registry");
|
|
41737
|
-
setPackages([]);
|
|
41738
|
-
setFlatWidgets([]);
|
|
41739
|
-
case 5:
|
|
41740
|
-
_context.prev = 5;
|
|
41741
|
-
setIsLoading(false);
|
|
41742
|
-
return _context.finish(5);
|
|
41743
|
-
case 6:
|
|
41744
|
-
case "end":
|
|
41745
|
-
return _context.stop();
|
|
41746
|
-
}
|
|
41747
|
-
}, _callee, null, [[2, 4, 5, 6]]);
|
|
41748
|
-
}));
|
|
41749
|
-
return function (_x) {
|
|
41750
|
-
return _ref2.apply(this, arguments);
|
|
41751
|
-
};
|
|
41752
|
-
}(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
|
|
41753
|
-
|
|
41754
|
-
// Debounce search on query changes (300ms)
|
|
41755
|
-
useEffect(function () {
|
|
41756
|
-
var timer = setTimeout(function () {
|
|
41757
|
-
search(searchQuery);
|
|
41758
|
-
}, 300);
|
|
41759
|
-
return function () {
|
|
41760
|
-
return clearTimeout(timer);
|
|
41761
|
-
};
|
|
41762
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41763
|
-
}, [searchQuery, showAllPackages]);
|
|
41764
|
-
var installPackage = useCallback(/*#__PURE__*/function () {
|
|
41765
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
|
|
41766
|
-
var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
|
|
41767
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
41768
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
41769
|
-
case 0:
|
|
41770
|
-
if (!(!widget || !widget.isRegistry)) {
|
|
41771
|
-
_context2.next = 1;
|
|
41772
|
-
break;
|
|
41773
|
-
}
|
|
41774
|
-
return _context2.abrupt("return");
|
|
41775
|
-
case 1:
|
|
41776
|
-
setIsInstalling(true);
|
|
41777
|
-
setInstallError(null);
|
|
41778
|
-
_context2.prev = 2;
|
|
41779
|
-
packageName = widget.packageName, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Resolve placeholders in the download URL
|
|
41780
|
-
resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
|
|
41781
|
-
_context2.next = 3;
|
|
41782
|
-
return window.mainApi.widgets.install(packageName, resolvedUrl);
|
|
41783
|
-
case 3:
|
|
41784
|
-
_context2.next = 5;
|
|
41785
|
-
break;
|
|
41786
|
-
case 4:
|
|
41787
|
-
_context2.prev = 4;
|
|
41788
|
-
_t2 = _context2["catch"](2);
|
|
41789
|
-
setInstallError(_t2.message || "Failed to install package");
|
|
41790
|
-
case 5:
|
|
41791
|
-
_context2.prev = 5;
|
|
41792
|
-
setIsInstalling(false);
|
|
41793
|
-
return _context2.finish(5);
|
|
41794
|
-
case 6:
|
|
41795
|
-
case "end":
|
|
41796
|
-
return _context2.stop();
|
|
41797
|
-
}
|
|
41798
|
-
}, _callee2, null, [[2, 4, 5, 6]]);
|
|
41799
|
-
}));
|
|
41800
|
-
return function (_x2) {
|
|
41801
|
-
return _ref3.apply(this, arguments);
|
|
41802
|
-
};
|
|
41803
|
-
}(), []);
|
|
41804
|
-
var retry = useCallback(function () {
|
|
41805
|
-
search(searchQuery);
|
|
41806
|
-
}, [search, searchQuery]);
|
|
41807
|
-
return {
|
|
41808
|
-
packages: packages,
|
|
41809
|
-
flatWidgets: flatWidgets,
|
|
41810
|
-
isLoading: isLoading,
|
|
41811
|
-
error: error,
|
|
41812
|
-
searchQuery: searchQuery,
|
|
41813
|
-
setSearchQuery: setSearchQuery,
|
|
41814
|
-
isInstalling: isInstalling,
|
|
41815
|
-
installError: installError,
|
|
41816
|
-
search: search,
|
|
41817
|
-
installPackage: installPackage,
|
|
41818
|
-
retry: retry,
|
|
41819
|
-
showAllPackages: showAllPackages,
|
|
41820
|
-
setShowAllPackages: setShowAllPackages,
|
|
41821
|
-
appCapabilities: appCapabilities
|
|
41822
|
-
};
|
|
41823
|
-
};
|
|
41824
|
-
|
|
41825
42342
|
function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
41826
42343
|
function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$2(r, a) : void 0; } }
|
|
41827
42344
|
function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -48311,5 +48828,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
|
|
|
48311
48828
|
|
|
48312
48829
|
ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
|
|
48313
48830
|
|
|
48314
|
-
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_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, 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, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
|
|
48831
|
+
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_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, 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, WizardIntentStep, WizardProvidersStep, WizardResultsStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, addChildToLayoutItem, addItemToItemLayout, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, mcpJsonToFormState, numChildrenForLayout, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
|
|
48315
48832
|
//# sourceMappingURL=index.esm.js.map
|