@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.js CHANGED
@@ -5408,6 +5408,651 @@ var WizardProvidersStep = function WizardProvidersStep(_ref) {
5408
5408
  });
5409
5409
  };
5410
5410
 
5411
+ 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; } } }; }
5412
+ 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; } }
5413
+ 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; }
5414
+
5415
+ /**
5416
+ * useRegistrySearch — shared hook for browsing and installing registry packages.
5417
+ *
5418
+ * Extracted from EnhancedWidgetDropdown so the same logic can power the
5419
+ * Discover tab inside AppSettingsModal (and anywhere else).
5420
+ *
5421
+ * Options:
5422
+ * filterByCapabilities – if true (default), only show packages compatible
5423
+ * with the app's API capabilities
5424
+ *
5425
+ * Returns:
5426
+ * packages – raw package objects from the registry
5427
+ * flatWidgets – flattened widget entries with `isRegistry: true`
5428
+ * isLoading – true while a search request is in flight
5429
+ * error – error message string (or null)
5430
+ * searchQuery / setSearchQuery – controlled search input
5431
+ * isInstalling – true during an install
5432
+ * installError – install error string (or null)
5433
+ * search() – manually trigger a search
5434
+ * installPackage(widget) – install a specific registry widget
5435
+ * showAllPackages / setShowAllPackages – toggle to show incompatible packages
5436
+ * appCapabilities – the app's API namespaces
5437
+ */
5438
+ var useRegistrySearch = function useRegistrySearch() {
5439
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
5440
+ _ref$filterByCapabili = _ref.filterByCapabilities,
5441
+ filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
5442
+ var _useState = React.useState(false),
5443
+ _useState2 = _slicedToArray(_useState, 2),
5444
+ isLoading = _useState2[0],
5445
+ setIsLoading = _useState2[1];
5446
+ var _useState3 = React.useState(null),
5447
+ _useState4 = _slicedToArray(_useState3, 2),
5448
+ error = _useState4[0],
5449
+ setError = _useState4[1];
5450
+ var _useState5 = React.useState([]),
5451
+ _useState6 = _slicedToArray(_useState5, 2),
5452
+ packages = _useState6[0],
5453
+ setPackages = _useState6[1];
5454
+ var _useState7 = React.useState([]),
5455
+ _useState8 = _slicedToArray(_useState7, 2),
5456
+ flatWidgets = _useState8[0],
5457
+ setFlatWidgets = _useState8[1];
5458
+ var _useState9 = React.useState(""),
5459
+ _useState0 = _slicedToArray(_useState9, 2),
5460
+ searchQuery = _useState0[0],
5461
+ setSearchQuery = _useState0[1];
5462
+ var _useState1 = React.useState(false),
5463
+ _useState10 = _slicedToArray(_useState1, 2),
5464
+ isInstalling = _useState10[0],
5465
+ setIsInstalling = _useState10[1];
5466
+ var _useState11 = React.useState(null),
5467
+ _useState12 = _slicedToArray(_useState11, 2),
5468
+ installError = _useState12[0],
5469
+ setInstallError = _useState12[1];
5470
+ var _useState13 = React.useState(false),
5471
+ _useState14 = _slicedToArray(_useState13, 2),
5472
+ showAllPackages = _useState14[0],
5473
+ setShowAllPackages = _useState14[1];
5474
+
5475
+ // Discover app capabilities from window.mainApi
5476
+ var appCapabilities = React.useMemo(function () {
5477
+ if (typeof window !== "undefined" && window.mainApi) {
5478
+ return Object.keys(window.mainApi);
5479
+ }
5480
+ return [];
5481
+ }, []);
5482
+ var search = React.useCallback(/*#__PURE__*/function () {
5483
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
5484
+ var _window$mainApi;
5485
+ var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
5486
+ return _regeneratorRuntime.wrap(function (_context) {
5487
+ while (1) switch (_context.prev = _context.next) {
5488
+ case 0:
5489
+ if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.registry) {
5490
+ _context.next = 1;
5491
+ break;
5492
+ }
5493
+ setPackages([]);
5494
+ setFlatWidgets([]);
5495
+ return _context.abrupt("return");
5496
+ case 1:
5497
+ setIsLoading(true);
5498
+ setError(null);
5499
+ _context.prev = 2;
5500
+ filters = {};
5501
+ if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
5502
+ filters.appCapabilities = appCapabilities;
5503
+ }
5504
+ _context.next = 3;
5505
+ return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
5506
+ case 3:
5507
+ result = _context.sent;
5508
+ // Only include packages that contain at least one widget
5509
+ // (filters out theme-only packages, etc.)
5510
+ pkgs = (result.packages || []).filter(function (pkg) {
5511
+ return pkg.widgets && pkg.widgets.length > 0;
5512
+ });
5513
+ setPackages(pkgs);
5514
+
5515
+ // Flatten packages into widget entries
5516
+ capSet = new Set(appCapabilities.map(function (c) {
5517
+ return c.toLowerCase();
5518
+ }));
5519
+ widgets = [];
5520
+ _iterator = _createForOfIteratorHelper$e(pkgs);
5521
+ try {
5522
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
5523
+ pkg = _step.value;
5524
+ // Compute missing APIs for the entire package
5525
+ allApiProviders = [];
5526
+ _iterator2 = _createForOfIteratorHelper$e(pkg.providers || []);
5527
+ try {
5528
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
5529
+ p = _step2.value;
5530
+ if (p.providerClass === "api" && p.required !== false) {
5531
+ allApiProviders.push(p.type);
5532
+ }
5533
+ }
5534
+ } catch (err) {
5535
+ _iterator2.e(err);
5536
+ } finally {
5537
+ _iterator2.f();
5538
+ }
5539
+ _iterator3 = _createForOfIteratorHelper$e(pkg.widgets || []);
5540
+ try {
5541
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
5542
+ w = _step3.value;
5543
+ _iterator5 = _createForOfIteratorHelper$e(w.providers || []);
5544
+ try {
5545
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
5546
+ _p = _step5.value;
5547
+ if (_p.providerClass === "api" && _p.required !== false) {
5548
+ allApiProviders.push(_p.type);
5549
+ }
5550
+ }
5551
+ } catch (err) {
5552
+ _iterator5.e(err);
5553
+ } finally {
5554
+ _iterator5.f();
5555
+ }
5556
+ }
5557
+ } catch (err) {
5558
+ _iterator3.e(err);
5559
+ } finally {
5560
+ _iterator3.f();
5561
+ }
5562
+ missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
5563
+ return !capSet.has(api.toLowerCase());
5564
+ });
5565
+ _iterator4 = _createForOfIteratorHelper$e(pkg.widgets || []);
5566
+ try {
5567
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
5568
+ widget = _step4.value;
5569
+ widgets.push({
5570
+ key: "".concat(pkg.name, "/").concat(widget.name),
5571
+ name: widget.displayName || widget.name,
5572
+ description: widget.description || "",
5573
+ icon: widget.icon || null,
5574
+ providers: widget.providers || [],
5575
+ isRegistry: true,
5576
+ packageName: pkg.name,
5577
+ packageDisplayName: pkg.displayName || pkg.name,
5578
+ packageVersion: pkg.version,
5579
+ packageAuthor: pkg.author || "",
5580
+ packageDescription: pkg.description || "",
5581
+ packageTags: pkg.tags || [],
5582
+ packageCategory: pkg.category || "",
5583
+ downloadUrl: pkg.downloadUrl || "",
5584
+ repository: pkg.repository || "",
5585
+ publishedAt: pkg.publishedAt || "",
5586
+ packageWidgets: pkg.widgets || [],
5587
+ appOrigin: pkg.appOrigin || null,
5588
+ packageProviders: pkg.providers || [],
5589
+ missingApis: missingApis
5590
+ });
5591
+ }
5592
+ } catch (err) {
5593
+ _iterator4.e(err);
5594
+ } finally {
5595
+ _iterator4.f();
5596
+ }
5597
+ }
5598
+ } catch (err) {
5599
+ _iterator.e(err);
5600
+ } finally {
5601
+ _iterator.f();
5602
+ }
5603
+ setFlatWidgets(widgets);
5604
+ _context.next = 5;
5605
+ break;
5606
+ case 4:
5607
+ _context.prev = 4;
5608
+ _t = _context["catch"](2);
5609
+ setError(_t.message || "Failed to load registry");
5610
+ setPackages([]);
5611
+ setFlatWidgets([]);
5612
+ case 5:
5613
+ _context.prev = 5;
5614
+ setIsLoading(false);
5615
+ return _context.finish(5);
5616
+ case 6:
5617
+ case "end":
5618
+ return _context.stop();
5619
+ }
5620
+ }, _callee, null, [[2, 4, 5, 6]]);
5621
+ }));
5622
+ return function (_x) {
5623
+ return _ref2.apply(this, arguments);
5624
+ };
5625
+ }(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
5626
+
5627
+ // Debounce search on query changes (300ms)
5628
+ React.useEffect(function () {
5629
+ var timer = setTimeout(function () {
5630
+ search(searchQuery);
5631
+ }, 300);
5632
+ return function () {
5633
+ return clearTimeout(timer);
5634
+ };
5635
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5636
+ }, [searchQuery, showAllPackages]);
5637
+ var installPackage = React.useCallback(/*#__PURE__*/function () {
5638
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
5639
+ var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
5640
+ return _regeneratorRuntime.wrap(function (_context2) {
5641
+ while (1) switch (_context2.prev = _context2.next) {
5642
+ case 0:
5643
+ if (!(!widget || !widget.isRegistry)) {
5644
+ _context2.next = 1;
5645
+ break;
5646
+ }
5647
+ return _context2.abrupt("return");
5648
+ case 1:
5649
+ setIsInstalling(true);
5650
+ setInstallError(null);
5651
+ _context2.prev = 2;
5652
+ packageName = widget.packageName, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Resolve placeholders in the download URL
5653
+ resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
5654
+ _context2.next = 3;
5655
+ return window.mainApi.widgets.install(packageName, resolvedUrl);
5656
+ case 3:
5657
+ _context2.next = 5;
5658
+ break;
5659
+ case 4:
5660
+ _context2.prev = 4;
5661
+ _t2 = _context2["catch"](2);
5662
+ setInstallError(_t2.message || "Failed to install package");
5663
+ case 5:
5664
+ _context2.prev = 5;
5665
+ setIsInstalling(false);
5666
+ return _context2.finish(5);
5667
+ case 6:
5668
+ case "end":
5669
+ return _context2.stop();
5670
+ }
5671
+ }, _callee2, null, [[2, 4, 5, 6]]);
5672
+ }));
5673
+ return function (_x2) {
5674
+ return _ref3.apply(this, arguments);
5675
+ };
5676
+ }(), []);
5677
+ var retry = React.useCallback(function () {
5678
+ search(searchQuery);
5679
+ }, [search, searchQuery]);
5680
+ return {
5681
+ packages: packages,
5682
+ flatWidgets: flatWidgets,
5683
+ isLoading: isLoading,
5684
+ error: error,
5685
+ searchQuery: searchQuery,
5686
+ setSearchQuery: setSearchQuery,
5687
+ isInstalling: isInstalling,
5688
+ installError: installError,
5689
+ search: search,
5690
+ installPackage: installPackage,
5691
+ retry: retry,
5692
+ showAllPackages: showAllPackages,
5693
+ setShowAllPackages: setShowAllPackages,
5694
+ appCapabilities: appCapabilities
5695
+ };
5696
+ };
5697
+
5698
+ var WizardResultsStep = function WizardResultsStep(_ref) {
5699
+ var state = _ref.state,
5700
+ dispatch = _ref.dispatch;
5701
+ var _useState = React.useState("prebuilt"),
5702
+ _useState2 = _slicedToArray(_useState, 2),
5703
+ activeTab = _useState2[0],
5704
+ setActiveTab = _useState2[1];
5705
+
5706
+ // --- Dashboard search (Tab A) ---
5707
+ var _useState3 = React.useState([]),
5708
+ _useState4 = _slicedToArray(_useState3, 2),
5709
+ dashboards = _useState4[0],
5710
+ setDashboards = _useState4[1];
5711
+ var _useState5 = React.useState(false),
5712
+ _useState6 = _slicedToArray(_useState5, 2),
5713
+ dashLoading = _useState6[0],
5714
+ setDashLoading = _useState6[1];
5715
+ var _useState7 = React.useState(null),
5716
+ _useState8 = _slicedToArray(_useState7, 2),
5717
+ dashError = _useState8[0],
5718
+ setDashError = _useState8[1];
5719
+ var dashFilters = React.useMemo(function () {
5720
+ return {
5721
+ category: state.intent.length ? state.intent.join(",") : undefined,
5722
+ providerTypes: state.providers.length ? state.providers : undefined
5723
+ };
5724
+ }, [state.intent, state.providers]);
5725
+ var searchDashboards = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
5726
+ var _window$mainApi;
5727
+ var result, _t;
5728
+ return _regeneratorRuntime.wrap(function (_context) {
5729
+ while (1) switch (_context.prev = _context.next) {
5730
+ case 0:
5731
+ if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && (_window$mainApi = _window$mainApi.registry) !== null && _window$mainApi !== void 0 && _window$mainApi.searchDashboards) {
5732
+ _context.next = 1;
5733
+ break;
5734
+ }
5735
+ setDashboards([]);
5736
+ return _context.abrupt("return");
5737
+ case 1:
5738
+ setDashLoading(true);
5739
+ setDashError(null);
5740
+ _context.prev = 2;
5741
+ _context.next = 3;
5742
+ return window.mainApi.registry.searchDashboards("", dashFilters);
5743
+ case 3:
5744
+ result = _context.sent;
5745
+ setDashboards(result.packages || []);
5746
+ _context.next = 5;
5747
+ break;
5748
+ case 4:
5749
+ _context.prev = 4;
5750
+ _t = _context["catch"](2);
5751
+ setDashError(_t.message || "Failed to search dashboards");
5752
+ setDashboards([]);
5753
+ case 5:
5754
+ _context.prev = 5;
5755
+ setDashLoading(false);
5756
+ return _context.finish(5);
5757
+ case 6:
5758
+ case "end":
5759
+ return _context.stop();
5760
+ }
5761
+ }, _callee, null, [[2, 4, 5, 6]]);
5762
+ })), [dashFilters]);
5763
+ React.useEffect(function () {
5764
+ searchDashboards();
5765
+ }, [searchDashboards]);
5766
+
5767
+ // --- Widget search (Tab B) ---
5768
+ var _useRegistrySearch = useRegistrySearch({
5769
+ filterByCapabilities: true
5770
+ }),
5771
+ flatWidgets = _useRegistrySearch.flatWidgets,
5772
+ widgetsLoading = _useRegistrySearch.isLoading,
5773
+ widgetsError = _useRegistrySearch.error;
5774
+
5775
+ // Filter widgets by selected categories + providers
5776
+ var filteredWidgets = React.useMemo(function () {
5777
+ return flatWidgets.filter(function (w) {
5778
+ // Category filter: match if widget's category overlaps user intent
5779
+ var catMatch = state.intent.length === 0 || state.intent.some(function (cat) {
5780
+ return (w.packageCategory || "").toLowerCase() === cat.toLowerCase();
5781
+ });
5782
+
5783
+ // Provider filter: match if widget requires any of the selected providers
5784
+ var providerMatch = state.providers.length === 0 || (w.providers || []).some(function (p) {
5785
+ return state.providers.includes(p.type);
5786
+ }) || (w.packageProviders || []).some(function (p) {
5787
+ return state.providers.includes(p.type);
5788
+ });
5789
+ return catMatch && providerMatch;
5790
+ });
5791
+ }, [flatWidgets, state.intent, state.providers]);
5792
+
5793
+ // --- Tab change: set wizard path ---
5794
+ var handleTabChange = React.useCallback(function (tab) {
5795
+ setActiveTab(tab);
5796
+ dispatch({
5797
+ type: "SET_PATH",
5798
+ payload: tab === "prebuilt" ? "prebuilt" : "custom"
5799
+ });
5800
+ }, [dispatch]);
5801
+
5802
+ // Set initial path on mount
5803
+ React.useEffect(function () {
5804
+ if (!state.path) {
5805
+ dispatch({
5806
+ type: "SET_PATH",
5807
+ payload: "prebuilt"
5808
+ });
5809
+ }
5810
+ }, [state.path, dispatch]);
5811
+
5812
+ // --- Dashboard selection (single-select) ---
5813
+ var handleSelectDashboard = React.useCallback(function (dashboard) {
5814
+ dispatch({
5815
+ type: "SET_SELECTED_DASHBOARD",
5816
+ payload: dashboard
5817
+ });
5818
+ }, [dispatch]);
5819
+
5820
+ // --- Widget selection (multi-select) ---
5821
+ var handleToggleWidget = React.useCallback(function (widget) {
5822
+ dispatch({
5823
+ type: "TOGGLE_WIDGET",
5824
+ payload: widget
5825
+ });
5826
+ }, [dispatch]);
5827
+ var isWidgetSelected = React.useCallback(function (widget) {
5828
+ return state.selectedWidgets.some(function (w) {
5829
+ return w.name === widget.name;
5830
+ });
5831
+ }, [state.selectedWidgets]);
5832
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5833
+ className: "wizard-results-step",
5834
+ children: [/*#__PURE__*/jsxRuntime.jsx("h3", {
5835
+ className: "wizard-step-header",
5836
+ children: "Choose your starting point"
5837
+ }), /*#__PURE__*/jsxRuntime.jsxs(DashReact.Tabs3, {
5838
+ value: activeTab,
5839
+ onValueChange: handleTabChange,
5840
+ className: "wizard-results-tabs",
5841
+ children: [/*#__PURE__*/jsxRuntime.jsxs(DashReact.Tabs3.List, {
5842
+ className: "wizard-results-tab-list",
5843
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.Tabs3.Trigger, {
5844
+ value: "prebuilt",
5845
+ children: "Pre-built Dashboards"
5846
+ }), /*#__PURE__*/jsxRuntime.jsxs(DashReact.Tabs3.Trigger, {
5847
+ value: "custom",
5848
+ children: ["Build Your Own", state.selectedWidgets.length > 0 && /*#__PURE__*/jsxRuntime.jsx("span", {
5849
+ className: "wizard-count-badge",
5850
+ children: state.selectedWidgets.length
5851
+ })]
5852
+ })]
5853
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.Tabs3.Content, {
5854
+ value: "prebuilt",
5855
+ children: /*#__PURE__*/jsxRuntime.jsx(DashboardList, {
5856
+ dashboards: dashboards,
5857
+ isLoading: dashLoading,
5858
+ error: dashError,
5859
+ selectedDashboard: state.selectedDashboard,
5860
+ onSelect: handleSelectDashboard
5861
+ })
5862
+ }), /*#__PURE__*/jsxRuntime.jsx(DashReact.Tabs3.Content, {
5863
+ value: "custom",
5864
+ children: /*#__PURE__*/jsxRuntime.jsx(WidgetList, {
5865
+ widgets: filteredWidgets,
5866
+ isLoading: widgetsLoading,
5867
+ error: widgetsError,
5868
+ isSelected: isWidgetSelected,
5869
+ onToggle: handleToggleWidget,
5870
+ selectedCount: state.selectedWidgets.length
5871
+ })
5872
+ })]
5873
+ })]
5874
+ });
5875
+ };
5876
+
5877
+ // --- Sub-components ---
5878
+
5879
+ var DashboardList = function DashboardList(_ref3) {
5880
+ var dashboards = _ref3.dashboards,
5881
+ isLoading = _ref3.isLoading,
5882
+ error = _ref3.error,
5883
+ selectedDashboard = _ref3.selectedDashboard,
5884
+ onSelect = _ref3.onSelect;
5885
+ if (isLoading) {
5886
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5887
+ className: "wizard-loading",
5888
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5889
+ icon: "spinner",
5890
+ spin: true,
5891
+ fixedWidth: true,
5892
+ className: "wizard-loading-icon"
5893
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
5894
+ children: "Searching dashboards..."
5895
+ })]
5896
+ });
5897
+ }
5898
+ if (error) {
5899
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5900
+ className: "wizard-error",
5901
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5902
+ icon: "circle-exclamation",
5903
+ fixedWidth: true
5904
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
5905
+ children: error
5906
+ })]
5907
+ });
5908
+ }
5909
+ if (dashboards.length === 0) {
5910
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5911
+ className: "wizard-empty",
5912
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5913
+ icon: "box-open",
5914
+ fixedWidth: true,
5915
+ className: "wizard-empty-icon"
5916
+ }), /*#__PURE__*/jsxRuntime.jsx("p", {
5917
+ children: "No pre-built dashboards match your selections."
5918
+ }), /*#__PURE__*/jsxRuntime.jsx("p", {
5919
+ className: "wizard-empty-hint",
5920
+ children: "Try the \"Build Your Own\" tab to pick individual widgets."
5921
+ })]
5922
+ });
5923
+ }
5924
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
5925
+ className: "wizard-dashboard-list",
5926
+ children: dashboards.map(function (dash) {
5927
+ var isSelected = selectedDashboard && selectedDashboard.name === dash.name;
5928
+ var widgetCount = (dash.widgets || []).length;
5929
+ var providerNames = (dash.providers || []).map(function (p) {
5930
+ return p.name || p.type;
5931
+ }).join(", ");
5932
+ return /*#__PURE__*/jsxRuntime.jsxs("button", {
5933
+ type: "button",
5934
+ className: "wizard-dashboard-card ".concat(isSelected ? "wizard-dashboard-card--selected" : ""),
5935
+ onClick: function onClick() {
5936
+ return onSelect(dash);
5937
+ },
5938
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
5939
+ className: "wizard-dashboard-card-header",
5940
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5941
+ icon: resolveIcon(dash.icon || "grid-2"),
5942
+ fixedWidth: true,
5943
+ className: "wizard-dashboard-card-icon"
5944
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
5945
+ className: "wizard-dashboard-card-name",
5946
+ children: dash.displayName || dash.name
5947
+ }), isSelected && /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5948
+ icon: "circle-check",
5949
+ className: "wizard-dashboard-card-check"
5950
+ })]
5951
+ }), dash.description && /*#__PURE__*/jsxRuntime.jsx("p", {
5952
+ className: "wizard-dashboard-card-desc",
5953
+ children: dash.description
5954
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
5955
+ className: "wizard-dashboard-card-meta",
5956
+ children: [/*#__PURE__*/jsxRuntime.jsxs("span", {
5957
+ children: [widgetCount, " widget", widgetCount !== 1 ? "s" : ""]
5958
+ }), providerNames && /*#__PURE__*/jsxRuntime.jsx("span", {
5959
+ children: providerNames
5960
+ })]
5961
+ })]
5962
+ }, dash.name);
5963
+ })
5964
+ });
5965
+ };
5966
+ var WidgetList = function WidgetList(_ref4) {
5967
+ var widgets = _ref4.widgets,
5968
+ isLoading = _ref4.isLoading,
5969
+ error = _ref4.error,
5970
+ isSelected = _ref4.isSelected,
5971
+ onToggle = _ref4.onToggle,
5972
+ selectedCount = _ref4.selectedCount;
5973
+ if (isLoading) {
5974
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5975
+ className: "wizard-loading",
5976
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5977
+ icon: "spinner",
5978
+ spin: true,
5979
+ fixedWidth: true,
5980
+ className: "wizard-loading-icon"
5981
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
5982
+ children: "Searching widgets..."
5983
+ })]
5984
+ });
5985
+ }
5986
+ if (error) {
5987
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5988
+ className: "wizard-error",
5989
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
5990
+ icon: "circle-exclamation",
5991
+ fixedWidth: true
5992
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
5993
+ children: error
5994
+ })]
5995
+ });
5996
+ }
5997
+ if (widgets.length === 0) {
5998
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
5999
+ className: "wizard-empty",
6000
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
6001
+ icon: "puzzle-piece",
6002
+ fixedWidth: true,
6003
+ className: "wizard-empty-icon"
6004
+ }), /*#__PURE__*/jsxRuntime.jsx("p", {
6005
+ children: "No widgets match your selections."
6006
+ }), /*#__PURE__*/jsxRuntime.jsx("p", {
6007
+ className: "wizard-empty-hint",
6008
+ children: "Try adjusting your categories or providers in the previous steps."
6009
+ })]
6010
+ });
6011
+ }
6012
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
6013
+ className: "wizard-widget-list",
6014
+ children: [selectedCount > 0 && /*#__PURE__*/jsxRuntime.jsxs("p", {
6015
+ className: "wizard-widget-count",
6016
+ children: [selectedCount, " widget", selectedCount !== 1 ? "s" : "", " selected"]
6017
+ }), widgets.map(function (widget) {
6018
+ var checked = isSelected(widget);
6019
+ return /*#__PURE__*/jsxRuntime.jsxs("button", {
6020
+ type: "button",
6021
+ className: "wizard-widget-card ".concat(checked ? "wizard-widget-card--selected" : ""),
6022
+ onClick: function onClick() {
6023
+ return onToggle(widget);
6024
+ },
6025
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
6026
+ className: "wizard-widget-card-checkbox",
6027
+ children: /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
6028
+ icon: checked ? "square-check" : "square",
6029
+ fixedWidth: true
6030
+ })
6031
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
6032
+ className: "wizard-widget-card-info",
6033
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
6034
+ className: "wizard-widget-card-header",
6035
+ children: [widget.icon && /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
6036
+ icon: resolveIcon(widget.icon),
6037
+ fixedWidth: true,
6038
+ className: "wizard-widget-card-icon"
6039
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
6040
+ className: "wizard-widget-card-name",
6041
+ children: widget.name
6042
+ })]
6043
+ }), widget.description && /*#__PURE__*/jsxRuntime.jsx("p", {
6044
+ className: "wizard-widget-card-desc",
6045
+ children: widget.description
6046
+ }), widget.packageDisplayName && /*#__PURE__*/jsxRuntime.jsx("span", {
6047
+ className: "wizard-widget-card-package",
6048
+ children: widget.packageDisplayName
6049
+ })]
6050
+ })]
6051
+ }, widget.key);
6052
+ })]
6053
+ });
6054
+ };
6055
+
5411
6056
  var LayoutBuilderAddItemModal = function LayoutBuilderAddItemModal(_ref) {
5412
6057
  var workspace = _ref.workspace,
5413
6058
  open = _ref.open,
@@ -6011,7 +6656,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
6011
6656
  var hasPropertyDescriptors_1 = hasPropertyDescriptors;
6012
6657
 
6013
6658
  var keys = objectKeys$2;
6014
- var hasSymbols$5 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
6659
+ var hasSymbols$4 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
6015
6660
 
6016
6661
  var toStr$4 = Object.prototype.toString;
6017
6662
  var concat = Array.prototype.concat;
@@ -6044,7 +6689,7 @@ var defineProperty$1 = function (object, name, value, predicate) {
6044
6689
  var defineProperties$1 = function (object, map) {
6045
6690
  var predicates = arguments.length > 2 ? arguments[2] : {};
6046
6691
  var props = keys(map);
6047
- if (hasSymbols$5) {
6692
+ if (hasSymbols$4) {
6048
6693
  props = concat.call(props, Object.getOwnPropertySymbols(map));
6049
6694
  }
6050
6695
  for (var i = 0; i < props.length; i += 1) {
@@ -6110,11 +6755,11 @@ var sign$1 = function sign(number) {
6110
6755
  };
6111
6756
 
6112
6757
  var shams$1;
6113
- var hasRequiredShams;
6758
+ var hasRequiredShams$1;
6114
6759
 
6115
- function requireShams () {
6116
- if (hasRequiredShams) return shams$1;
6117
- hasRequiredShams = 1;
6760
+ function requireShams$1 () {
6761
+ if (hasRequiredShams$1) return shams$1;
6762
+ hasRequiredShams$1 = 1;
6118
6763
 
6119
6764
  /** @type {import('./shams')} */
6120
6765
  /* eslint complexity: [2, 18], max-statements: [2, 33] */
@@ -6163,10 +6808,10 @@ function requireShams () {
6163
6808
  }
6164
6809
 
6165
6810
  var origSymbol = typeof Symbol !== 'undefined' && Symbol;
6166
- var hasSymbolSham = requireShams();
6811
+ var hasSymbolSham = requireShams$1();
6167
6812
 
6168
6813
  /** @type {import('.')} */
6169
- var hasSymbols$4 = function hasNativeSymbols() {
6814
+ var hasSymbols$3 = function hasNativeSymbols() {
6170
6815
  if (typeof origSymbol !== 'function') { return false; }
6171
6816
  if (typeof Symbol !== 'function') { return false; }
6172
6817
  if (typeof origSymbol('foo') !== 'symbol') { return false; }
@@ -6470,7 +7115,7 @@ var ThrowTypeError = $gOPD$1
6470
7115
  }())
6471
7116
  : throwTypeError;
6472
7117
 
6473
- var hasSymbols$3 = hasSymbols$4();
7118
+ var hasSymbols$2 = hasSymbols$3();
6474
7119
 
6475
7120
  var getProto$2 = getProto$3;
6476
7121
  var $ObjectGPO = requireObject_getPrototypeOf();
@@ -6488,7 +7133,7 @@ var INTRINSICS = {
6488
7133
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
6489
7134
  '%Array%': Array,
6490
7135
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
6491
- '%ArrayIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
7136
+ '%ArrayIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
6492
7137
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
6493
7138
  '%AsyncFunction%': needsEval,
6494
7139
  '%AsyncGenerator%': needsEval,
@@ -6519,10 +7164,10 @@ var INTRINSICS = {
6519
7164
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
6520
7165
  '%isFinite%': isFinite,
6521
7166
  '%isNaN%': isNaN,
6522
- '%IteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
7167
+ '%IteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
6523
7168
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
6524
7169
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
6525
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
7170
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
6526
7171
  '%Math%': Math,
6527
7172
  '%Number%': Number,
6528
7173
  '%Object%': $Object$2,
@@ -6536,11 +7181,11 @@ var INTRINSICS = {
6536
7181
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
6537
7182
  '%RegExp%': RegExp,
6538
7183
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
6539
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
7184
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
6540
7185
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
6541
7186
  '%String%': String,
6542
- '%StringIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
6543
- '%Symbol%': hasSymbols$3 ? Symbol : undefined$1,
7187
+ '%StringIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
7188
+ '%Symbol%': hasSymbols$2 ? Symbol : undefined$1,
6544
7189
  '%SyntaxError%': $SyntaxError$1,
6545
7190
  '%ThrowTypeError%': ThrowTypeError,
6546
7191
  '%TypedArray%': TypedArray,
@@ -6893,12 +7538,12 @@ var callBound$i = function callBoundIntrinsic(name, allowMissing) {
6893
7538
 
6894
7539
  // modified from https://github.com/es-shims/es6-shim
6895
7540
  var objectKeys$1 = objectKeys$2;
6896
- var hasSymbols$2 = requireShams()();
7541
+ var hasSymbols$1 = requireShams$1()();
6897
7542
  var callBound$h = callBound$i;
6898
7543
  var $Object$1 = esObjectAtoms;
6899
7544
  var $push = callBound$h('Array.prototype.push');
6900
7545
  var $propIsEnumerable = callBound$h('Object.prototype.propertyIsEnumerable');
6901
- var originalGetSymbols = hasSymbols$2 ? $Object$1.getOwnPropertySymbols : null;
7546
+ var originalGetSymbols = hasSymbols$1 ? $Object$1.getOwnPropertySymbols : null;
6902
7547
 
6903
7548
  // eslint-disable-next-line no-unused-vars
6904
7549
  var implementation$8 = function assign(target, source1) {
@@ -6912,7 +7557,7 @@ var implementation$8 = function assign(target, source1) {
6912
7557
 
6913
7558
  // step 3.a.ii:
6914
7559
  var keys = objectKeys$1(from);
6915
- var getSymbols = hasSymbols$2 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
7560
+ var getSymbols = hasSymbols$1 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
6916
7561
  if (getSymbols) {
6917
7562
  var syms = getSymbols(from);
6918
7563
  for (var j = 0; j < syms.length; ++j) {
@@ -7209,14 +7854,23 @@ var regexp_prototype_flags = flagsBound;
7209
7854
 
7210
7855
  var esGetIterator = {exports: {}};
7211
7856
 
7212
- var hasSymbols$1 = requireShams();
7857
+ var shams;
7858
+ var hasRequiredShams;
7213
7859
 
7214
- /** @type {import('.')} */
7215
- var shams = function hasToStringTagShams() {
7216
- return hasSymbols$1() && !!Symbol.toStringTag;
7217
- };
7860
+ function requireShams () {
7861
+ if (hasRequiredShams) return shams;
7862
+ hasRequiredShams = 1;
7863
+
7864
+ var hasSymbols = requireShams$1();
7865
+
7866
+ /** @type {import('.')} */
7867
+ shams = function hasToStringTagShams() {
7868
+ return hasSymbols() && !!Symbol.toStringTag;
7869
+ };
7870
+ return shams;
7871
+ }
7218
7872
 
7219
- var hasToStringTag$7 = shams();
7873
+ var hasToStringTag$7 = requireShams()();
7220
7874
  var callBound$f = callBound$i;
7221
7875
 
7222
7876
  var $toString$7 = callBound$f('Object.prototype.toString');
@@ -8253,7 +8907,7 @@ var tryStringObject = function tryStringObject(value) {
8253
8907
  /** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */
8254
8908
  var $toString$6 = callBound$c('Object.prototype.toString');
8255
8909
  var strClass = '[object String]';
8256
- var hasToStringTag$6 = shams();
8910
+ var hasToStringTag$6 = requireShams()();
8257
8911
 
8258
8912
  /** @type {import('.')} */
8259
8913
  var isString$2 = function isString(value) {
@@ -8369,7 +9023,7 @@ var isSet$2 = exported$1 || function isSet(x) {
8369
9023
  var isArguments$1 = isArguments$2;
8370
9024
  var getStopIterationIterator = stopIterationIterator;
8371
9025
 
8372
- if (hasSymbols$4() || requireShams()()) {
9026
+ if (hasSymbols$3() || requireShams$1()()) {
8373
9027
  var $iterator = Symbol.iterator;
8374
9028
  // Symbol is available natively or shammed
8375
9029
  // natively:
@@ -8658,7 +9312,7 @@ var tryDateObject = function tryDateGetDayCall(value) {
8658
9312
  /** @type {(value: unknown) => string} */
8659
9313
  var toStr$2 = callBound$9('Object.prototype.toString');
8660
9314
  var dateClass = '[object Date]';
8661
- var hasToStringTag$5 = shams();
9315
+ var hasToStringTag$5 = requireShams()();
8662
9316
 
8663
9317
  /** @type {import('.')} */
8664
9318
  var isDateObject = function isDateObject(value) {
@@ -8669,7 +9323,7 @@ var isDateObject = function isDateObject(value) {
8669
9323
  };
8670
9324
 
8671
9325
  var callBound$8 = callBound$i;
8672
- var hasToStringTag$4 = shams();
9326
+ var hasToStringTag$4 = requireShams()();
8673
9327
  var hasOwn = hasown;
8674
9328
  var gOPD$1 = gopd$1;
8675
9329
 
@@ -8774,7 +9428,7 @@ var tryNumberObject = function tryNumberObject(value) {
8774
9428
  };
8775
9429
  var $toString$3 = callBound$6('Object.prototype.toString');
8776
9430
  var numClass = '[object Number]';
8777
- var hasToStringTag$3 = shams();
9431
+ var hasToStringTag$3 = requireShams()();
8778
9432
 
8779
9433
  /** @type {import('.')} */
8780
9434
  var isNumberObject = function isNumberObject(value) {
@@ -8801,7 +9455,7 @@ var tryBooleanObject = function booleanBrandCheck(value) {
8801
9455
  }
8802
9456
  };
8803
9457
  var boolClass = '[object Boolean]';
8804
- var hasToStringTag$2 = shams();
9458
+ var hasToStringTag$2 = requireShams()();
8805
9459
 
8806
9460
  /** @type {import('.')} */
8807
9461
  var isBooleanObject = function isBoolean(value) {
@@ -8843,7 +9497,7 @@ function requireSafeRegexTest () {
8843
9497
 
8844
9498
  var callBound$4 = callBound$i;
8845
9499
  var $toString$1 = callBound$4('Object.prototype.toString');
8846
- var hasSymbols = hasSymbols$4();
9500
+ var hasSymbols = hasSymbols$3();
8847
9501
  var safeRegexTest = requireSafeRegexTest();
8848
9502
 
8849
9503
  if (hasSymbols) {
@@ -9289,7 +9943,7 @@ var gOPD = gopd$1;
9289
9943
  var getProto = getProto$3;
9290
9944
 
9291
9945
  var $toString = callBound$2('Object.prototype.toString');
9292
- var hasToStringTag = shams();
9946
+ var hasToStringTag = requireShams()();
9293
9947
 
9294
9948
  var g = typeof globalThis === 'undefined' ? commonjsGlobal : globalThis;
9295
9949
  var typedArrays = availableTypedArrays();
@@ -10040,9 +10694,9 @@ var PanelEditItem = function PanelEditItem(_ref) {
10040
10694
  };
10041
10695
 
10042
10696
  var _excluded$5 = ["rows", "cols"];
10043
- 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; } } }; }
10044
- 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; } }
10045
- 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; }
10697
+ 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; } } }; }
10698
+ 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; } }
10699
+ 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; }
10046
10700
  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; }
10047
10701
  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; }
10048
10702
  var defaultGrid = {
@@ -10195,7 +10849,7 @@ function GridEditor(_ref) {
10195
10849
  function sortObjectByKeys(obj) {
10196
10850
  var sortedKeys = Object.keys(obj).sort();
10197
10851
  var sortedObj = {};
10198
- var _iterator = _createForOfIteratorHelper$e(sortedKeys),
10852
+ var _iterator = _createForOfIteratorHelper$d(sortedKeys),
10199
10853
  _step;
10200
10854
  try {
10201
10855
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -10668,9 +11322,9 @@ var PanelEditItemNotifications = function PanelEditItemNotifications(_ref) {
10668
11322
  });
10669
11323
  };
10670
11324
 
10671
- 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; } } }; }
10672
- 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; } }
10673
- 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; }
11325
+ 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; } } }; }
11326
+ 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; } }
11327
+ 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; }
10674
11328
  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; }
10675
11329
  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; }
10676
11330
  var DAYS = [{
@@ -10999,7 +11653,7 @@ var PanelEditItemSchedule = function PanelEditItemSchedule(_ref2) {
10999
11653
  setIsLoading(true);
11000
11654
  window.mainApi.scheduler.getTasks(widgetUuid).then(function (tasks) {
11001
11655
  var stateMap = {};
11002
- var _iterator = _createForOfIteratorHelper$d(tasks || []),
11656
+ var _iterator = _createForOfIteratorHelper$c(tasks || []),
11003
11657
  _step;
11004
11658
  try {
11005
11659
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -13849,9 +14503,9 @@ var getUserConfigurableProviders = function getUserConfigurableProviders(provide
13849
14503
  });
13850
14504
  };
13851
14505
 
13852
- 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; } } }; }
13853
- 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; } }
13854
- 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; }
14506
+ 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; } } }; }
14507
+ 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; } }
14508
+ 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; }
13855
14509
  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; }
13856
14510
  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; }
13857
14511
  var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
@@ -14118,11 +14772,11 @@ var EnhancedWidgetDropdown = function EnhancedWidgetDropdown(_ref) {
14118
14772
 
14119
14773
  // Flatten all widgets from all packages for the widget list
14120
14774
  flatWidgets = [];
14121
- _iterator = _createForOfIteratorHelper$c(result.packages || []);
14775
+ _iterator = _createForOfIteratorHelper$b(result.packages || []);
14122
14776
  try {
14123
14777
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
14124
14778
  pkg = _step.value;
14125
- _iterator2 = _createForOfIteratorHelper$c(pkg.widgets || []);
14779
+ _iterator2 = _createForOfIteratorHelper$b(pkg.widgets || []);
14126
14780
  try {
14127
14781
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
14128
14782
  widget = _step2.value;
@@ -15678,9 +16332,9 @@ var ProviderBadge = function ProviderBadge(_ref) {
15678
16332
  });
15679
16333
  };
15680
16334
 
15681
- 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; } } }; }
15682
- 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; } }
15683
- 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; }
16335
+ 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; } } }; }
16336
+ 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; } }
16337
+ 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; }
15684
16338
  var WidgetCardHeader = function WidgetCardHeader(_ref) {
15685
16339
  var item = _ref.item,
15686
16340
  widget = _ref.widget,
@@ -15724,7 +16378,7 @@ var WidgetCardHeader = function WidgetCardHeader(_ref) {
15724
16378
  var el = headerRef.current;
15725
16379
  if (!el) return;
15726
16380
  var observer = new ResizeObserver(function (entries) {
15727
- var _iterator = _createForOfIteratorHelper$b(entries),
16381
+ var _iterator = _createForOfIteratorHelper$a(entries),
15728
16382
  _step;
15729
16383
  try {
15730
16384
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -16081,9 +16735,9 @@ var useWidgetSchedulerStatus = function useWidgetSchedulerStatus(widgetId) {
16081
16735
  };
16082
16736
  };
16083
16737
 
16084
- 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; } } }; }
16085
- 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; } }
16086
- 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; }
16738
+ 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; } } }; }
16739
+ 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; } }
16740
+ 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; }
16087
16741
  function formatCountdown(ms) {
16088
16742
  if (ms == null || ms < 0) return "--";
16089
16743
  if (ms < 1000) return "< 1s";
@@ -16200,7 +16854,7 @@ var WidgetCardStatusBar = function WidgetCardStatusBar(_ref) {
16200
16854
 
16201
16855
  // Find soonest countdown among enabled tasks
16202
16856
  var soonestMs = null;
16203
- var _iterator = _createForOfIteratorHelper$a(enabledTasks),
16857
+ var _iterator = _createForOfIteratorHelper$9(enabledTasks),
16204
16858
  _step;
16205
16859
  try {
16206
16860
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -20813,9 +21467,9 @@ var ExternalWidget = function ExternalWidget(_ref) {
20813
21467
  var GRID_CELL_WIDGET_TYPE = "grid-cell-widget";
20814
21468
  var SIDEBAR_WIDGET_TYPE = "sidebar-widget";
20815
21469
 
20816
- 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; } } }; }
20817
- 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; } }
20818
- 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; }
21470
+ 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; } } }; }
21471
+ 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; } }
21472
+ 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; }
20819
21473
  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; }
20820
21474
  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; }
20821
21475
  var DraggableDroppableCellBody = function DraggableDroppableCellBody(_ref) {
@@ -21379,7 +22033,7 @@ var LayoutGridContainer = /*#__PURE__*/React.memo(function (_ref3) {
21379
22033
  return selectable["delete"](cn);
21380
22034
  });
21381
22035
  var resolved = new Set();
21382
- var _iterator = _createForOfIteratorHelper$9(selectable),
22036
+ var _iterator = _createForOfIteratorHelper$8(selectable),
21383
22037
  _step;
21384
22038
  try {
21385
22039
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -23519,9 +24173,9 @@ function isWidgetResolvable(componentKey) {
23519
24173
 
23520
24174
  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; }
23521
24175
  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; }
23522
- 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; } } }; }
23523
- 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; } }
23524
- 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; }
24176
+ 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; } } }; }
24177
+ 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; } }
24178
+ 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; }
23525
24179
  /**
23526
24180
  * The model for all layout components used primarily in the renderLayout method
23527
24181
  * @param {Object} layoutItem an object containing various attributes of the layout item
@@ -23533,7 +24187,7 @@ function _arrayLikeToArray$8(r, a) { (null == a || a > r.length) && (a = r.lengt
23533
24187
  function sortObjectByKeys(obj) {
23534
24188
  var sortedKeys = Object.keys(obj).sort();
23535
24189
  var sortedObj = {};
23536
- var _iterator = _createForOfIteratorHelper$8(sortedKeys),
24190
+ var _iterator = _createForOfIteratorHelper$7(sortedKeys),
23537
24191
  _step;
23538
24192
  try {
23539
24193
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -26799,9 +27453,9 @@ var useDashboard = function useDashboard() {
26799
27453
  });
26800
27454
  };
26801
27455
 
26802
- 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; } } }; }
26803
- 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; } }
26804
- 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; }
27456
+ 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; } } }; }
27457
+ 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; } }
27458
+ 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; }
26805
27459
 
26806
27460
  /**
26807
27461
  * useWidgetProviders Hook
@@ -26852,7 +27506,7 @@ var useWidgetProviders = function useWidgetProviders() {
26852
27506
  // 1. Widget-level: stored directly on the layout item by handleSelectProvider
26853
27507
  // 2. Workspace-level: stored as workspace.selectedProviders[widgetId][providerType]
26854
27508
  var providers = {};
26855
- var _iterator = _createForOfIteratorHelper$7(providerDeclarations),
27509
+ var _iterator = _createForOfIteratorHelper$6(providerDeclarations),
26856
27510
  _step;
26857
27511
  try {
26858
27512
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -27587,9 +28241,9 @@ var useNotifications = function useNotifications() {
27587
28241
  };
27588
28242
  };
27589
28243
 
27590
- 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; } } }; }
27591
- 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; } }
27592
- 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; }
28244
+ 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; } } }; }
28245
+ 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; } }
28246
+ 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; }
27593
28247
 
27594
28248
  /**
27595
28249
  * useScheduler Hook
@@ -27662,7 +28316,7 @@ var useScheduler = function useScheduler() {
27662
28316
  if (pending && pending.length > 0) {
27663
28317
  setPendingResults(pending);
27664
28318
  // Call handlers for each pending result
27665
- var _iterator = _createForOfIteratorHelper$6(pending),
28319
+ var _iterator = _createForOfIteratorHelper$5(pending),
27666
28320
  _step;
27667
28321
  try {
27668
28322
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -30839,9 +31493,9 @@ function loadWidgetBundle(source, widgetName) {
30839
31493
  };
30840
31494
  }
30841
31495
 
30842
- 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; } } }; }
30843
- 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; } }
30844
- 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; }
31496
+ 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; } } }; }
31497
+ 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; } }
31498
+ 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; }
30845
31499
  /**
30846
31500
  * Validation utilities for grid-first dashboard architecture
30847
31501
  *
@@ -31080,7 +31734,7 @@ var validateCellMerge = function validateCellMerge(cellNumbers, grid) {
31080
31734
 
31081
31735
  // Validate each cell
31082
31736
  var cells = [];
31083
- var _iterator = _createForOfIteratorHelper$5(cellNumbers),
31737
+ var _iterator = _createForOfIteratorHelper$4(cellNumbers),
31084
31738
  _step;
31085
31739
  try {
31086
31740
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -38824,9 +39478,9 @@ var McpCatalogDetail = function McpCatalogDetail(_ref) {
38824
39478
 
38825
39479
  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; }
38826
39480
  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; }
38827
- 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; } } }; }
38828
- 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; } }
38829
- 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; }
39481
+ 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; } } }; }
39482
+ 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; } }
39483
+ 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; }
38830
39484
  function isValidWsUrl(url) {
38831
39485
  if (!url) return false;
38832
39486
  try {
@@ -38873,7 +39527,7 @@ function extractCredentialFields(url, headerRows) {
38873
39527
  fields.add(match[1]);
38874
39528
  }
38875
39529
  }
38876
- var _iterator = _createForOfIteratorHelper$4(headerRows),
39530
+ var _iterator = _createForOfIteratorHelper$3(headerRows),
38877
39531
  _step;
38878
39532
  try {
38879
39533
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -38976,7 +39630,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
38976
39630
  if (!url.trim()) errs.url = "WebSocket URL is required";else if (!isValidWsUrl(url)) errs.url = "URL must start with ws:// or wss://";
38977
39631
 
38978
39632
  // Check required credential fields are filled
38979
- var _iterator2 = _createForOfIteratorHelper$4(credentialFields),
39633
+ var _iterator2 = _createForOfIteratorHelper$3(credentialFields),
38980
39634
  _step2;
38981
39635
  try {
38982
39636
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -38999,7 +39653,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
38999
39653
 
39000
39654
  // Build headers object from rows
39001
39655
  var headers = {};
39002
- var _iterator3 = _createForOfIteratorHelper$4(headerRows),
39656
+ var _iterator3 = _createForOfIteratorHelper$3(headerRows),
39003
39657
  _step3;
39004
39658
  try {
39005
39659
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -39068,7 +39722,7 @@ var WebSocketProviderForm = function WebSocketProviderForm(_ref) {
39068
39722
 
39069
39723
  // Build config from current form state (same as handleSave)
39070
39724
  headers = {};
39071
- _iterator4 = _createForOfIteratorHelper$4(headerRows);
39725
+ _iterator4 = _createForOfIteratorHelper$3(headerRows);
39072
39726
  try {
39073
39727
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
39074
39728
  row = _step4.value;
@@ -41712,293 +42366,6 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
41712
42366
  });
41713
42367
  };
41714
42368
 
41715
- 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; } } }; }
41716
- 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; } }
41717
- 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; }
41718
-
41719
- /**
41720
- * useRegistrySearch — shared hook for browsing and installing registry packages.
41721
- *
41722
- * Extracted from EnhancedWidgetDropdown so the same logic can power the
41723
- * Discover tab inside AppSettingsModal (and anywhere else).
41724
- *
41725
- * Options:
41726
- * filterByCapabilities – if true (default), only show packages compatible
41727
- * with the app's API capabilities
41728
- *
41729
- * Returns:
41730
- * packages – raw package objects from the registry
41731
- * flatWidgets – flattened widget entries with `isRegistry: true`
41732
- * isLoading – true while a search request is in flight
41733
- * error – error message string (or null)
41734
- * searchQuery / setSearchQuery – controlled search input
41735
- * isInstalling – true during an install
41736
- * installError – install error string (or null)
41737
- * search() – manually trigger a search
41738
- * installPackage(widget) – install a specific registry widget
41739
- * showAllPackages / setShowAllPackages – toggle to show incompatible packages
41740
- * appCapabilities – the app's API namespaces
41741
- */
41742
- var useRegistrySearch = function useRegistrySearch() {
41743
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
41744
- _ref$filterByCapabili = _ref.filterByCapabilities,
41745
- filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
41746
- var _useState = React.useState(false),
41747
- _useState2 = _slicedToArray(_useState, 2),
41748
- isLoading = _useState2[0],
41749
- setIsLoading = _useState2[1];
41750
- var _useState3 = React.useState(null),
41751
- _useState4 = _slicedToArray(_useState3, 2),
41752
- error = _useState4[0],
41753
- setError = _useState4[1];
41754
- var _useState5 = React.useState([]),
41755
- _useState6 = _slicedToArray(_useState5, 2),
41756
- packages = _useState6[0],
41757
- setPackages = _useState6[1];
41758
- var _useState7 = React.useState([]),
41759
- _useState8 = _slicedToArray(_useState7, 2),
41760
- flatWidgets = _useState8[0],
41761
- setFlatWidgets = _useState8[1];
41762
- var _useState9 = React.useState(""),
41763
- _useState0 = _slicedToArray(_useState9, 2),
41764
- searchQuery = _useState0[0],
41765
- setSearchQuery = _useState0[1];
41766
- var _useState1 = React.useState(false),
41767
- _useState10 = _slicedToArray(_useState1, 2),
41768
- isInstalling = _useState10[0],
41769
- setIsInstalling = _useState10[1];
41770
- var _useState11 = React.useState(null),
41771
- _useState12 = _slicedToArray(_useState11, 2),
41772
- installError = _useState12[0],
41773
- setInstallError = _useState12[1];
41774
- var _useState13 = React.useState(false),
41775
- _useState14 = _slicedToArray(_useState13, 2),
41776
- showAllPackages = _useState14[0],
41777
- setShowAllPackages = _useState14[1];
41778
-
41779
- // Discover app capabilities from window.mainApi
41780
- var appCapabilities = React.useMemo(function () {
41781
- if (typeof window !== "undefined" && window.mainApi) {
41782
- return Object.keys(window.mainApi);
41783
- }
41784
- return [];
41785
- }, []);
41786
- var search = React.useCallback(/*#__PURE__*/function () {
41787
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
41788
- var _window$mainApi;
41789
- var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
41790
- return _regeneratorRuntime.wrap(function (_context) {
41791
- while (1) switch (_context.prev = _context.next) {
41792
- case 0:
41793
- if ((_window$mainApi = window.mainApi) !== null && _window$mainApi !== void 0 && _window$mainApi.registry) {
41794
- _context.next = 1;
41795
- break;
41796
- }
41797
- setPackages([]);
41798
- setFlatWidgets([]);
41799
- return _context.abrupt("return");
41800
- case 1:
41801
- setIsLoading(true);
41802
- setError(null);
41803
- _context.prev = 2;
41804
- filters = {};
41805
- if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
41806
- filters.appCapabilities = appCapabilities;
41807
- }
41808
- _context.next = 3;
41809
- return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
41810
- case 3:
41811
- result = _context.sent;
41812
- // Only include packages that contain at least one widget
41813
- // (filters out theme-only packages, etc.)
41814
- pkgs = (result.packages || []).filter(function (pkg) {
41815
- return pkg.widgets && pkg.widgets.length > 0;
41816
- });
41817
- setPackages(pkgs);
41818
-
41819
- // Flatten packages into widget entries
41820
- capSet = new Set(appCapabilities.map(function (c) {
41821
- return c.toLowerCase();
41822
- }));
41823
- widgets = [];
41824
- _iterator = _createForOfIteratorHelper$3(pkgs);
41825
- try {
41826
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
41827
- pkg = _step.value;
41828
- // Compute missing APIs for the entire package
41829
- allApiProviders = [];
41830
- _iterator2 = _createForOfIteratorHelper$3(pkg.providers || []);
41831
- try {
41832
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
41833
- p = _step2.value;
41834
- if (p.providerClass === "api" && p.required !== false) {
41835
- allApiProviders.push(p.type);
41836
- }
41837
- }
41838
- } catch (err) {
41839
- _iterator2.e(err);
41840
- } finally {
41841
- _iterator2.f();
41842
- }
41843
- _iterator3 = _createForOfIteratorHelper$3(pkg.widgets || []);
41844
- try {
41845
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
41846
- w = _step3.value;
41847
- _iterator5 = _createForOfIteratorHelper$3(w.providers || []);
41848
- try {
41849
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
41850
- _p = _step5.value;
41851
- if (_p.providerClass === "api" && _p.required !== false) {
41852
- allApiProviders.push(_p.type);
41853
- }
41854
- }
41855
- } catch (err) {
41856
- _iterator5.e(err);
41857
- } finally {
41858
- _iterator5.f();
41859
- }
41860
- }
41861
- } catch (err) {
41862
- _iterator3.e(err);
41863
- } finally {
41864
- _iterator3.f();
41865
- }
41866
- missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
41867
- return !capSet.has(api.toLowerCase());
41868
- });
41869
- _iterator4 = _createForOfIteratorHelper$3(pkg.widgets || []);
41870
- try {
41871
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
41872
- widget = _step4.value;
41873
- widgets.push({
41874
- key: "".concat(pkg.name, "/").concat(widget.name),
41875
- name: widget.displayName || widget.name,
41876
- description: widget.description || "",
41877
- icon: widget.icon || null,
41878
- providers: widget.providers || [],
41879
- isRegistry: true,
41880
- packageName: pkg.name,
41881
- packageDisplayName: pkg.displayName || pkg.name,
41882
- packageVersion: pkg.version,
41883
- packageAuthor: pkg.author || "",
41884
- packageDescription: pkg.description || "",
41885
- packageTags: pkg.tags || [],
41886
- packageCategory: pkg.category || "",
41887
- downloadUrl: pkg.downloadUrl || "",
41888
- repository: pkg.repository || "",
41889
- publishedAt: pkg.publishedAt || "",
41890
- packageWidgets: pkg.widgets || [],
41891
- appOrigin: pkg.appOrigin || null,
41892
- packageProviders: pkg.providers || [],
41893
- missingApis: missingApis
41894
- });
41895
- }
41896
- } catch (err) {
41897
- _iterator4.e(err);
41898
- } finally {
41899
- _iterator4.f();
41900
- }
41901
- }
41902
- } catch (err) {
41903
- _iterator.e(err);
41904
- } finally {
41905
- _iterator.f();
41906
- }
41907
- setFlatWidgets(widgets);
41908
- _context.next = 5;
41909
- break;
41910
- case 4:
41911
- _context.prev = 4;
41912
- _t = _context["catch"](2);
41913
- setError(_t.message || "Failed to load registry");
41914
- setPackages([]);
41915
- setFlatWidgets([]);
41916
- case 5:
41917
- _context.prev = 5;
41918
- setIsLoading(false);
41919
- return _context.finish(5);
41920
- case 6:
41921
- case "end":
41922
- return _context.stop();
41923
- }
41924
- }, _callee, null, [[2, 4, 5, 6]]);
41925
- }));
41926
- return function (_x) {
41927
- return _ref2.apply(this, arguments);
41928
- };
41929
- }(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
41930
-
41931
- // Debounce search on query changes (300ms)
41932
- React.useEffect(function () {
41933
- var timer = setTimeout(function () {
41934
- search(searchQuery);
41935
- }, 300);
41936
- return function () {
41937
- return clearTimeout(timer);
41938
- };
41939
- // eslint-disable-next-line react-hooks/exhaustive-deps
41940
- }, [searchQuery, showAllPackages]);
41941
- var installPackage = React.useCallback(/*#__PURE__*/function () {
41942
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
41943
- var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
41944
- return _regeneratorRuntime.wrap(function (_context2) {
41945
- while (1) switch (_context2.prev = _context2.next) {
41946
- case 0:
41947
- if (!(!widget || !widget.isRegistry)) {
41948
- _context2.next = 1;
41949
- break;
41950
- }
41951
- return _context2.abrupt("return");
41952
- case 1:
41953
- setIsInstalling(true);
41954
- setInstallError(null);
41955
- _context2.prev = 2;
41956
- packageName = widget.packageName, downloadUrl = widget.downloadUrl, packageVersion = widget.packageVersion; // Resolve placeholders in the download URL
41957
- resolvedUrl = downloadUrl.replace(/\{version\}/g, packageVersion).replace(/\{name\}/g, packageName);
41958
- _context2.next = 3;
41959
- return window.mainApi.widgets.install(packageName, resolvedUrl);
41960
- case 3:
41961
- _context2.next = 5;
41962
- break;
41963
- case 4:
41964
- _context2.prev = 4;
41965
- _t2 = _context2["catch"](2);
41966
- setInstallError(_t2.message || "Failed to install package");
41967
- case 5:
41968
- _context2.prev = 5;
41969
- setIsInstalling(false);
41970
- return _context2.finish(5);
41971
- case 6:
41972
- case "end":
41973
- return _context2.stop();
41974
- }
41975
- }, _callee2, null, [[2, 4, 5, 6]]);
41976
- }));
41977
- return function (_x2) {
41978
- return _ref3.apply(this, arguments);
41979
- };
41980
- }(), []);
41981
- var retry = React.useCallback(function () {
41982
- search(searchQuery);
41983
- }, [search, searchQuery]);
41984
- return {
41985
- packages: packages,
41986
- flatWidgets: flatWidgets,
41987
- isLoading: isLoading,
41988
- error: error,
41989
- searchQuery: searchQuery,
41990
- setSearchQuery: setSearchQuery,
41991
- isInstalling: isInstalling,
41992
- installError: installError,
41993
- search: search,
41994
- installPackage: installPackage,
41995
- retry: retry,
41996
- showAllPackages: showAllPackages,
41997
- setShowAllPackages: setShowAllPackages,
41998
- appCapabilities: appCapabilities
41999
- };
42000
- };
42001
-
42002
42369
  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; } } }; }
42003
42370
  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; } }
42004
42371
  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; }
@@ -48681,6 +49048,7 @@ exports.WidgetProviderWrapper = WidgetProviderWrapper;
48681
49048
  exports.WidgetSidebar = WidgetSidebar;
48682
49049
  exports.WizardIntentStep = WizardIntentStep;
48683
49050
  exports.WizardProvidersStep = WizardProvidersStep;
49051
+ exports.WizardResultsStep = WizardResultsStep;
48684
49052
  exports.Workspace = Workspace;
48685
49053
  exports.WorkspaceContext = WorkspaceContext;
48686
49054
  exports.WorkspaceFooter = WorkspaceFooter;