@trops/dash-core 0.1.188 → 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 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, SelectableCard, 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, Tabs3, DataList, Checkbox, StatCard, Card, Tabs, Accordion, Alert, Toast, ProgressBar, Toggle, Breadcrumbs, Card2, Tabs2, Accordion2, Alert2, Toast2, ProgressBar2, Toggle2, Breadcrumbs2, Card3, Accordion3, Alert3, Toast3, ProgressBar3, Toggle3, Breadcrumbs3, ThemeFromUrlPane, TextArea, Icon2, AlgoliaSearchBox, CommandPalette, EmptyState, Navbar, withRouter, Menu as Menu$1 } 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, 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';
@@ -5390,6 +5390,651 @@ var WizardProvidersStep = function WizardProvidersStep(_ref) {
5390
5390
  });
5391
5391
  };
5392
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
+
5393
6038
  var LayoutBuilderAddItemModal = function LayoutBuilderAddItemModal(_ref) {
5394
6039
  var workspace = _ref.workspace,
5395
6040
  open = _ref.open,
@@ -10022,9 +10667,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
10022
10667
  };
10023
10668
 
10024
10669
  var _excluded$5 = ["rows", "cols"];
10025
- 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; } } }; }
10026
- 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; } }
10027
- 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; }
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; }
10028
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; }
10029
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; }
10030
10675
  var defaultGrid = {
@@ -10177,7 +10822,7 @@ function GridEditor(_ref) {
10177
10822
  function sortObjectByKeys(obj) {
10178
10823
  var sortedKeys = Object.keys(obj).sort();
10179
10824
  var sortedObj = {};
10180
- var _iterator = _createForOfIteratorHelper$e(sortedKeys),
10825
+ var _iterator = _createForOfIteratorHelper$d(sortedKeys),
10181
10826
  _step;
10182
10827
  try {
10183
10828
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10650,9 +11295,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
10650
11295
  });
10651
11296
  };
10652
11297
 
10653
- 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; } } }; }
10654
- 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; } }
10655
- 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; }
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; }
10656
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; }
10657
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; }
10658
11303
  var DAYS = [{
@@ -10981,7 +11626,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
10981
11626
  setIsLoading(true);
10982
11627
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
10983
11628
  var stateMap = {};
10984
- var _iterator = _createForOfIteratorHelper$d(tasks || []),
11629
+ var _iterator = _createForOfIteratorHelper$c(tasks || []),
10985
11630
  _step;
10986
11631
  try {
10987
11632
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13831,9 +14476,9 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
13831
14476
  });
13832
14477
  };
13833
14478
 
13834
- 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; } } }; }
13835
- 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; } }
13836
- 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; }
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; }
13837
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; }
13838
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; }
13839
14484
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -14100,11 +14745,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
14100
14745
 
14101
14746
  // Flatten all widgets from all packages for the widget list
14102
14747
  flatWidgets = [];
14103
- _iterator = _createForOfIteratorHelper$c(result.packages || []);
14748
+ _iterator = _createForOfIteratorHelper$b(result.packages || []);
14104
14749
  try {
14105
14750
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
14106
14751
  pkg = _step.value;
14107
- _iterator2 = _createForOfIteratorHelper$c(pkg.widgets || []);
14752
+ _iterator2 = _createForOfIteratorHelper$b(pkg.widgets || []);
14108
14753
  try {
14109
14754
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
14110
14755
  widget = _step2.value;
@@ -15660,9 +16305,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
15660
16305
  });
15661
16306
  };
15662
16307
 
15663
- 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; } } }; }
15664
- 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; } }
15665
- 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; }
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; }
15666
16311
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
15667
16312
  var item = _ref.item,
15668
16313
  widget = _ref.widget,
@@ -15706,7 +16351,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
15706
16351
  var el = headerRef.current;
15707
16352
  if (!el) return;
15708
16353
  var observer = new ResizeObserver(function (entries) {
15709
- var _iterator = _createForOfIteratorHelper$b(entries),
16354
+ var _iterator = _createForOfIteratorHelper$a(entries),
15710
16355
  _step;
15711
16356
  try {
15712
16357
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -16063,9 +16708,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
16063
16708
  };
16064
16709
  };
16065
16710
 
16066
- 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; } } }; }
16067
- 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; } }
16068
- 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; }
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; }
16069
16714
  function formatCountdown(ms) {
16070
16715
  if (ms == null || ms < 0) return "--";
16071
16716
  if (ms < 1000) return "< 1s";
@@ -16182,7 +16827,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
16182
16827
 
16183
16828
  // Find soonest countdown among enabled tasks
16184
16829
  var soonestMs = null;
16185
- var _iterator = _createForOfIteratorHelper$a(enabledTasks),
16830
+ var _iterator = _createForOfIteratorHelper$9(enabledTasks),
16186
16831
  _step;
16187
16832
  try {
16188
16833
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -20795,9 +21440,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
20795
21440
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
20796
21441
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
20797
21442
 
20798
- 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; } } }; }
20799
- 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; } }
20800
- 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; }
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; }
20801
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; }
20802
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; }
20803
21448
  var DraggableDroppableCellBody = function DraggableDroppableCellBody(_ref) {
@@ -21361,7 +22006,7 @@ var LayoutGridContainer = /*#__PURE__*/memo(function (_ref3) {
21361
22006
  return selectable["delete"](cn);
21362
22007
  });
21363
22008
  var resolved = new Set();
21364
- var _iterator = _createForOfIteratorHelper$9(selectable),
22009
+ var _iterator = _createForOfIteratorHelper$8(selectable),
21365
22010
  _step;
21366
22011
  try {
21367
22012
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -23501,9 +24146,9 @@ function isWidgetResolvable(componentKey) {
23501
24146
 
23502
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; }
23503
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; }
23504
- 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; } } }; }
23505
- 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; } }
23506
- 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; }
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; }
23507
24152
  /**
23508
24153
  * The model for all layout components used primarily in the renderLayout method
23509
24154
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -23515,7 +24160,7 @@ function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.lengt
23515
24160
  function sortObjectByKeys(obj) {
23516
24161
  var sortedKeys = Object.keys(obj).sort();
23517
24162
  var sortedObj = {};
23518
- var _iterator = _createForOfIteratorHelper$8(sortedKeys),
24163
+ var _iterator = _createForOfIteratorHelper$7(sortedKeys),
23519
24164
  _step;
23520
24165
  try {
23521
24166
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -26781,9 +27426,9 @@ var useDashboard = function useDashboard() {
26781
27426
  });
26782
27427
  };
26783
27428
 
26784
- 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; } } }; }
26785
- 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; } }
26786
- 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; }
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; }
26787
27432
 
26788
27433
  /**
26789
27434
  * useWidgetProviders Hook
@@ -26834,7 +27479,7 @@ var useWidgetProviders = function useWidgetProviders() {
26834
27479
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
26835
27480
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
26836
27481
  var providers = {};
26837
- var _iterator = _createForOfIteratorHelper$7(providerDeclarations),
27482
+ var _iterator = _createForOfIteratorHelper$6(providerDeclarations),
26838
27483
  _step;
26839
27484
  try {
26840
27485
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -27569,9 +28214,9 @@ var useNotifications = function useNotifications() {
27569
28214
  };
27570
28215
  };
27571
28216
 
27572
- 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; } } }; }
27573
- 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; } }
27574
- 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; }
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; }
27575
28220
 
27576
28221
  /**
27577
28222
  * useScheduler Hook
@@ -27644,7 +28289,7 @@ var useScheduler = function useScheduler() {
27644
28289
  if (pending && pending.length > 0) {
27645
28290
  setPendingResults(pending);
27646
28291
  // Call handlers for each pending result
27647
- var _iterator = _createForOfIteratorHelper$6(pending),
28292
+ var _iterator = _createForOfIteratorHelper$5(pending),
27648
28293
  _step;
27649
28294
  try {
27650
28295
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -30821,9 +31466,9 @@ function loadWidgetBundle(source, widgetName) {
30821
31466
  };
30822
31467
  }
30823
31468
 
30824
- 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; } } }; }
30825
- 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; } }
30826
- 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; }
30827
31472
  /**
30828
31473
  * Validation utilities for grid-first dashboard architecture
30829
31474
  *
@@ -31062,7 +31707,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
31062
31707
 
31063
31708
  // Validate each cell
31064
31709
  var cells = [];
31065
- var _iterator = _createForOfIteratorHelper$5(cellNumbers),
31710
+ var _iterator = _createForOfIteratorHelper$4(cellNumbers),
31066
31711
  _step;
31067
31712
  try {
31068
31713
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -38806,9 +39451,9 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
38806
39451
 
38807
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; }
38808
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; }
38809
- 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; } } }; }
38810
- 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; } }
38811
- 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; }
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; }
38812
39457
  function isValidWsUrl(url) {
38813
39458
  if (!url) return false;
38814
39459
  try {
@@ -38855,7 +39500,7 @@ function extractCredentialFields(url, headerRows) {
38855
39500
  fields.add(match[1]);
38856
39501
  }
38857
39502
  }
38858
- var _iterator = _createForOfIteratorHelper$4(headerRows),
39503
+ var _iterator = _createForOfIteratorHelper$3(headerRows),
38859
39504
  _step;
38860
39505
  try {
38861
39506
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -38958,7 +39603,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
38958
39603
  if (!url.trim()) errs.url = "WebSocket URL is required";else if (!isValidWsUrl(url)) errs.url = "URL must start with ws:// or wss://";
38959
39604
 
38960
39605
  // Check required credential fields are filled
38961
- var _iterator2 = _createForOfIteratorHelper$4(credentialFields),
39606
+ var _iterator2 = _createForOfIteratorHelper$3(credentialFields),
38962
39607
  _step2;
38963
39608
  try {
38964
39609
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -38981,7 +39626,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
38981
39626
 
38982
39627
  // Build headers object from rows
38983
39628
  var headers = {};
38984
- var _iterator3 = _createForOfIteratorHelper$4(headerRows),
39629
+ var _iterator3 = _createForOfIteratorHelper$3(headerRows),
38985
39630
  _step3;
38986
39631
  try {
38987
39632
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -39050,7 +39695,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
39050
39695
 
39051
39696
  // Build config from current form state (same as handleSave)
39052
39697
  headers = {};
39053
- _iterator4 = _createForOfIteratorHelper$4(headerRows);
39698
+ _iterator4 = _createForOfIteratorHelper$3(headerRows);
39054
39699
  try {
39055
39700
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
39056
39701
  row = _step4.value;
@@ -41694,293 +42339,6 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
41694
42339
  });
41695
42340
  };
41696
42341
 
41697
- 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; } } }; }
41698
- 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; } }
41699
- 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; }
41700
-
41701
- /**
41702
- * useRegistrySearch — shared hook for browsing and installing registry packages.
41703
- *
41704
- * Extracted from EnhancedWidgetDropdown so the same logic can power the
41705
- * Discover tab inside AppSettingsModal (and anywhere else).
41706
- *
41707
- * Options:
41708
- * filterByCapabilities – if true (default), only show packages compatible
41709
- * with the app's API capabilities
41710
- *
41711
- * Returns:
41712
- * packages – raw package objects from the registry
41713
- * flatWidgets – flattened widget entries with `isRegistry: true`
41714
- * isLoading – true while a search request is in flight
41715
- * error – error message string (or null)
41716
- * searchQuery / setSearchQuery – controlled search input
41717
- * isInstalling – true during an install
41718
- * installError – install error string (or null)
41719
- * search() – manually trigger a search
41720
- * installPackage(widget) – install a specific registry widget
41721
- * showAllPackages / setShowAllPackages – toggle to show incompatible packages
41722
- * appCapabilities – the app's API namespaces
41723
- */
41724
- var useRegistrySearch = function useRegistrySearch() {
41725
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
41726
- _ref$filterByCapabili = _ref.filterByCapabilities,
41727
- filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
41728
- var _useState = useState(false),
41729
- _useState2 = _slicedToArray(_useState, 2),
41730
- isLoading = _useState2[0],
41731
- setIsLoading = _useState2[1];
41732
- var _useState3 = useState(null),
41733
- _useState4 = _slicedToArray(_useState3, 2),
41734
- error = _useState4[0],
41735
- setError = _useState4[1];
41736
- var _useState5 = useState([]),
41737
- _useState6 = _slicedToArray(_useState5, 2),
41738
- packages = _useState6[0],
41739
- setPackages = _useState6[1];
41740
- var _useState7 = useState([]),
41741
- _useState8 = _slicedToArray(_useState7, 2),
41742
- flatWidgets = _useState8[0],
41743
- setFlatWidgets = _useState8[1];
41744
- var _useState9 = useState(""),
41745
- _useState0 = _slicedToArray(_useState9, 2),
41746
- searchQuery = _useState0[0],
41747
- setSearchQuery = _useState0[1];
41748
- var _useState1 = useState(false),
41749
- _useState10 = _slicedToArray(_useState1, 2),
41750
- isInstalling = _useState10[0],
41751
- setIsInstalling = _useState10[1];
41752
- var _useState11 = useState(null),
41753
- _useState12 = _slicedToArray(_useState11, 2),
41754
- installError = _useState12[0],
41755
- setInstallError = _useState12[1];
41756
- var _useState13 = useState(false),
41757
- _useState14 = _slicedToArray(_useState13, 2),
41758
- showAllPackages = _useState14[0],
41759
- setShowAllPackages = _useState14[1];
41760
-
41761
- // Discover app capabilities from window.mainApi
41762
- var appCapabilities = useMemo(function () {
41763
- if (typeof window !== "undefined" && window.mainApi) {
41764
- return Object.keys(window.mainApi);
41765
- }
41766
- return [];
41767
- }, []);
41768
- var search = useCallback(/*#__PURE__*/function () {
41769
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
41770
- var _window$mainApi;
41771
- var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
41772
- return _regeneratorRuntime.wrap(function (_context) {
41773
- while (1) switch (_context.prev = _context.next) {
41774
- case 0:
41775
- if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.registry) {
41776
- _context.next = 1;
41777
- break;
41778
- }
41779
- setPackages([]);
41780
- setFlatWidgets([]);
41781
- return _context.abrupt("return");
41782
- case 1:
41783
- setIsLoading(true);
41784
- setError(null);
41785
- _context.prev = 2;
41786
- filters = {};
41787
- if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
41788
- filters.appCapabilities = appCapabilities;
41789
- }
41790
- _context.next = 3;
41791
- return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
41792
- case 3:
41793
- result = _context.sent;
41794
- // Only include packages that contain at least one widget
41795
- // (filters out theme-only packages, etc.)
41796
- pkgs = (result.packages || []).filter(function (pkg) {
41797
- return pkg.widgets && pkg.widgets.length > 0;
41798
- });
41799
- setPackages(pkgs);
41800
-
41801
- // Flatten packages into widget entries
41802
- capSet = new Set(appCapabilities.map(function (c) {
41803
- return c.toLowerCase();
41804
- }));
41805
- widgets = [];
41806
- _iterator = _createForOfIteratorHelper$3(pkgs);
41807
- try {
41808
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
41809
- pkg = _step.value;
41810
- // Compute missing APIs for the entire package
41811
- allApiProviders = [];
41812
- _iterator2 = _createForOfIteratorHelper$3(pkg.providers || []);
41813
- try {
41814
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
41815
- p = _step2.value;
41816
- if (p.providerClass === "api" && p.required !== false) {
41817
- allApiProviders.push(p.type);
41818
- }
41819
- }
41820
- } catch (err) {
41821
- _iterator2.e(err);
41822
- } finally {
41823
- _iterator2.f();
41824
- }
41825
- _iterator3 = _createForOfIteratorHelper$3(pkg.widgets || []);
41826
- try {
41827
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
41828
- w = _step3.value;
41829
- _iterator5 = _createForOfIteratorHelper$3(w.providers || []);
41830
- try {
41831
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
41832
- _p = _step5.value;
41833
- if (_p.providerClass === "api" && _p.required !== false) {
41834
- allApiProviders.push(_p.type);
41835
- }
41836
- }
41837
- } catch (err) {
41838
- _iterator5.e(err);
41839
- } finally {
41840
- _iterator5.f();
41841
- }
41842
- }
41843
- } catch (err) {
41844
- _iterator3.e(err);
41845
- } finally {
41846
- _iterator3.f();
41847
- }
41848
- missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
41849
- return !capSet.has(api.toLowerCase());
41850
- });
41851
- _iterator4 = _createForOfIteratorHelper$3(pkg.widgets || []);
41852
- try {
41853
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
41854
- widget = _step4.value;
41855
- widgets.push({
41856
- key: "".concat(pkg.name, "/").concat(widget.name),
41857
- name: widget.displayName || widget.name,
41858
- description: widget.description || "",
41859
- icon: widget.icon || null,
41860
- providers: widget.providers || [],
41861
- isRegistry: true,
41862
- packageName: pkg.name,
41863
- packageDisplayName: pkg.displayName || pkg.name,
41864
- packageVersion: pkg.version,
41865
- packageAuthor: pkg.author || "",
41866
- packageDescription: pkg.description || "",
41867
- packageTags: pkg.tags || [],
41868
- packageCategory: pkg.category || "",
41869
- downloadUrl: pkg.downloadUrl || "",
41870
- repository: pkg.repository || "",
41871
- publishedAt: pkg.publishedAt || "",
41872
- packageWidgets: pkg.widgets || [],
41873
- appOrigin: pkg.appOrigin || null,
41874
- packageProviders: pkg.providers || [],
41875
- missingApis: missingApis
41876
- });
41877
- }
41878
- } catch (err) {
41879
- _iterator4.e(err);
41880
- } finally {
41881
- _iterator4.f();
41882
- }
41883
- }
41884
- } catch (err) {
41885
- _iterator.e(err);
41886
- } finally {
41887
- _iterator.f();
41888
- }
41889
- setFlatWidgets(widgets);
41890
- _context.next = 5;
41891
- break;
41892
- case 4:
41893
- _context.prev = 4;
41894
- _t = _context["catch"](2);
41895
- setError(_t.message || "Failed to load registry");
41896
- setPackages([]);
41897
- setFlatWidgets([]);
41898
- case 5:
41899
- _context.prev = 5;
41900
- setIsLoading(false);
41901
- return _context.finish(5);
41902
- case 6:
41903
- case "end":
41904
- return _context.stop();
41905
- }
41906
- }, _callee, null, [[2, 4, 5, 6]]);
41907
- }));
41908
- return function (_x) {
41909
- return _ref2.apply(this, arguments);
41910
- };
41911
- }(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
41912
-
41913
- // Debounce search on query changes (300ms)
41914
- useEffect(function () {
41915
- var timer = setTimeout(function () {
41916
- search(searchQuery);
41917
- }, 300);
41918
- return function () {
41919
- return clearTimeout(timer);
41920
- };
41921
- // eslint-disable-next-line react-hooks/exhaustive-deps
41922
- }, [searchQuery, showAllPackages]);
41923
- var installPackage = useCallback(/*#__PURE__*/function () {
41924
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
41925
- var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
41926
- return _regeneratorRuntime.wrap(function (_context2) {
41927
- while (1) switch (_context2.prev = _context2.next) {
41928
- case 0:
41929
- if (!(!widget || !widget.isRegistry)) {
41930
- _context2.next = 1;
41931
- break;
41932
- }
41933
- return _context2.abrupt("return");
41934
- case 1:
41935
- setIsInstalling(true);
41936
- setInstallError(null);
41937
- _context2.prev = 2;
41938
- packageName = widget.packageName, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Resolve placeholders in the download URL
41939
- resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
41940
- _context2.next = 3;
41941
- return window.mainApi.widgets.install(packageName, resolvedUrl);
41942
- case 3:
41943
- _context2.next = 5;
41944
- break;
41945
- case 4:
41946
- _context2.prev = 4;
41947
- _t2 = _context2["catch"](2);
41948
- setInstallError(_t2.message || "Failed to install package");
41949
- case 5:
41950
- _context2.prev = 5;
41951
- setIsInstalling(false);
41952
- return _context2.finish(5);
41953
- case 6:
41954
- case "end":
41955
- return _context2.stop();
41956
- }
41957
- }, _callee2, null, [[2, 4, 5, 6]]);
41958
- }));
41959
- return function (_x2) {
41960
- return _ref3.apply(this, arguments);
41961
- };
41962
- }(), []);
41963
- var retry = useCallback(function () {
41964
- search(searchQuery);
41965
- }, [search, searchQuery]);
41966
- return {
41967
- packages: packages,
41968
- flatWidgets: flatWidgets,
41969
- isLoading: isLoading,
41970
- error: error,
41971
- searchQuery: searchQuery,
41972
- setSearchQuery: setSearchQuery,
41973
- isInstalling: isInstalling,
41974
- installError: installError,
41975
- search: search,
41976
- installPackage: installPackage,
41977
- retry: retry,
41978
- showAllPackages: showAllPackages,
41979
- setShowAllPackages: setShowAllPackages,
41980
- appCapabilities: appCapabilities
41981
- };
41982
- };
41983
-
41984
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; } } }; }
41985
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; } }
41986
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; }
@@ -48470,5 +48828,5 @@ var WorkspaceMenu = function WorkspaceMenu(_ref) {
48470
48828
 
48471
48829
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
48472
48830
 
48473
- 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, 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 };
48474
48832
  //# sourceMappingURL=index.esm.js.map