@trops/dash-core 0.1.105 → 0.1.106

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
@@ -4554,7 +4554,7 @@ hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBu
4554
4554
  var hasPropertyDescriptors_1 = hasPropertyDescriptors;
4555
4555
 
4556
4556
  var keys = objectKeys$2;
4557
- var hasSymbols$4 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
4557
+ var hasSymbols$5 = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
4558
4558
 
4559
4559
  var toStr$4 = Object.prototype.toString;
4560
4560
  var concat = Array.prototype.concat;
@@ -4587,7 +4587,7 @@ var defineProperty$1 = function (object, name, value, predicate) {
4587
4587
  var defineProperties$1 = function (object, map) {
4588
4588
  var predicates = arguments.length > 2 ? arguments[2] : {};
4589
4589
  var props = keys(map);
4590
- if (hasSymbols$4) {
4590
+ if (hasSymbols$5) {
4591
4591
  props = concat.call(props, Object.getOwnPropertySymbols(map));
4592
4592
  }
4593
4593
  for (var i = 0; i < props.length; i += 1) {
@@ -4653,11 +4653,11 @@ var sign$1 = function sign(number) {
4653
4653
  };
4654
4654
 
4655
4655
  var shams$1;
4656
- var hasRequiredShams$1;
4656
+ var hasRequiredShams;
4657
4657
 
4658
- function requireShams$1 () {
4659
- if (hasRequiredShams$1) return shams$1;
4660
- hasRequiredShams$1 = 1;
4658
+ function requireShams () {
4659
+ if (hasRequiredShams) return shams$1;
4660
+ hasRequiredShams = 1;
4661
4661
 
4662
4662
  /** @type {import('./shams')} */
4663
4663
  /* eslint complexity: [2, 18], max-statements: [2, 33] */
@@ -4706,10 +4706,10 @@ function requireShams$1 () {
4706
4706
  }
4707
4707
 
4708
4708
  var origSymbol = typeof Symbol !== 'undefined' && Symbol;
4709
- var hasSymbolSham = requireShams$1();
4709
+ var hasSymbolSham = requireShams();
4710
4710
 
4711
4711
  /** @type {import('.')} */
4712
- var hasSymbols$3 = function hasNativeSymbols() {
4712
+ var hasSymbols$4 = function hasNativeSymbols() {
4713
4713
  if (typeof origSymbol !== 'function') { return false; }
4714
4714
  if (typeof Symbol !== 'function') { return false; }
4715
4715
  if (typeof origSymbol('foo') !== 'symbol') { return false; }
@@ -5013,7 +5013,7 @@ var ThrowTypeError = $gOPD$1
5013
5013
  }())
5014
5014
  : throwTypeError;
5015
5015
 
5016
- var hasSymbols$2 = hasSymbols$3();
5016
+ var hasSymbols$3 = hasSymbols$4();
5017
5017
 
5018
5018
  var getProto$2 = getProto$3;
5019
5019
  var $ObjectGPO = requireObject_getPrototypeOf();
@@ -5031,7 +5031,7 @@ var INTRINSICS = {
5031
5031
  '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError,
5032
5032
  '%Array%': Array,
5033
5033
  '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer,
5034
- '%ArrayIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
5034
+ '%ArrayIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2([][Symbol.iterator]()) : undefined$1,
5035
5035
  '%AsyncFromSyncIteratorPrototype%': undefined$1,
5036
5036
  '%AsyncFunction%': needsEval,
5037
5037
  '%AsyncGenerator%': needsEval,
@@ -5062,10 +5062,10 @@ var INTRINSICS = {
5062
5062
  '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array,
5063
5063
  '%isFinite%': isFinite,
5064
5064
  '%isNaN%': isNaN,
5065
- '%IteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
5065
+ '%IteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(getProto$2([][Symbol.iterator]())) : undefined$1,
5066
5066
  '%JSON%': typeof JSON === 'object' ? JSON : undefined$1,
5067
5067
  '%Map%': typeof Map === 'undefined' ? undefined$1 : Map,
5068
- '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
5068
+ '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Map()[Symbol.iterator]()),
5069
5069
  '%Math%': Math,
5070
5070
  '%Number%': Number,
5071
5071
  '%Object%': $Object$2,
@@ -5079,11 +5079,11 @@ var INTRINSICS = {
5079
5079
  '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect,
5080
5080
  '%RegExp%': RegExp,
5081
5081
  '%Set%': typeof Set === 'undefined' ? undefined$1 : Set,
5082
- '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$2 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
5082
+ '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$3 || !getProto$2 ? undefined$1 : getProto$2(new Set()[Symbol.iterator]()),
5083
5083
  '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer,
5084
5084
  '%String%': String,
5085
- '%StringIteratorPrototype%': hasSymbols$2 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
5086
- '%Symbol%': hasSymbols$2 ? Symbol : undefined$1,
5085
+ '%StringIteratorPrototype%': hasSymbols$3 && getProto$2 ? getProto$2(''[Symbol.iterator]()) : undefined$1,
5086
+ '%Symbol%': hasSymbols$3 ? Symbol : undefined$1,
5087
5087
  '%SyntaxError%': $SyntaxError$1,
5088
5088
  '%ThrowTypeError%': ThrowTypeError,
5089
5089
  '%TypedArray%': TypedArray,
@@ -5436,12 +5436,12 @@ var callBound$i = function callBoundIntrinsic(name, allowMissing) {
5436
5436
 
5437
5437
  // modified from https://github.com/es-shims/es6-shim
5438
5438
  var objectKeys$1 = objectKeys$2;
5439
- var hasSymbols$1 = requireShams$1()();
5439
+ var hasSymbols$2 = requireShams()();
5440
5440
  var callBound$h = callBound$i;
5441
5441
  var $Object$1 = esObjectAtoms;
5442
5442
  var $push = callBound$h('Array.prototype.push');
5443
5443
  var $propIsEnumerable = callBound$h('Object.prototype.propertyIsEnumerable');
5444
- var originalGetSymbols = hasSymbols$1 ? $Object$1.getOwnPropertySymbols : null;
5444
+ var originalGetSymbols = hasSymbols$2 ? $Object$1.getOwnPropertySymbols : null;
5445
5445
 
5446
5446
  // eslint-disable-next-line no-unused-vars
5447
5447
  var implementation$8 = function assign(target, source1) {
@@ -5455,7 +5455,7 @@ var implementation$8 = function assign(target, source1) {
5455
5455
 
5456
5456
  // step 3.a.ii:
5457
5457
  var keys = objectKeys$1(from);
5458
- var getSymbols = hasSymbols$1 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
5458
+ var getSymbols = hasSymbols$2 && ($Object$1.getOwnPropertySymbols || originalGetSymbols);
5459
5459
  if (getSymbols) {
5460
5460
  var syms = getSymbols(from);
5461
5461
  for (var j = 0; j < syms.length; ++j) {
@@ -5752,23 +5752,14 @@ var regexp_prototype_flags = flagsBound;
5752
5752
 
5753
5753
  var esGetIterator = {exports: {}};
5754
5754
 
5755
- var shams;
5756
- var hasRequiredShams;
5755
+ var hasSymbols$1 = requireShams();
5757
5756
 
5758
- function requireShams () {
5759
- if (hasRequiredShams) return shams;
5760
- hasRequiredShams = 1;
5761
-
5762
- var hasSymbols = requireShams$1();
5763
-
5764
- /** @type {import('.')} */
5765
- shams = function hasToStringTagShams() {
5766
- return hasSymbols() && !!Symbol.toStringTag;
5767
- };
5768
- return shams;
5769
- }
5757
+ /** @type {import('.')} */
5758
+ var shams = function hasToStringTagShams() {
5759
+ return hasSymbols$1() && !!Symbol.toStringTag;
5760
+ };
5770
5761
 
5771
- var hasToStringTag$7 = requireShams()();
5762
+ var hasToStringTag$7 = shams();
5772
5763
  var callBound$f = callBound$i;
5773
5764
 
5774
5765
  var $toString$7 = callBound$f('Object.prototype.toString');
@@ -6805,7 +6796,7 @@ var tryStringObject = function tryStringObject(value) {
6805
6796
  /** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */
6806
6797
  var $toString$6 = callBound$c('Object.prototype.toString');
6807
6798
  var strClass = '[object String]';
6808
- var hasToStringTag$6 = requireShams()();
6799
+ var hasToStringTag$6 = shams();
6809
6800
 
6810
6801
  /** @type {import('.')} */
6811
6802
  var isString$2 = function isString(value) {
@@ -6921,7 +6912,7 @@ var isSet$2 = exported$1 || function isSet(x) {
6921
6912
  var isArguments$1 = isArguments$2;
6922
6913
  var getStopIterationIterator = stopIterationIterator;
6923
6914
 
6924
- if (hasSymbols$3() || requireShams$1()()) {
6915
+ if (hasSymbols$4() || requireShams()()) {
6925
6916
  var $iterator = Symbol.iterator;
6926
6917
  // Symbol is available natively or shammed
6927
6918
  // natively:
@@ -7210,7 +7201,7 @@ var tryDateObject = function tryDateGetDayCall(value) {
7210
7201
  /** @type {(value: unknown) => string} */
7211
7202
  var toStr$2 = callBound$9('Object.prototype.toString');
7212
7203
  var dateClass = '[object Date]';
7213
- var hasToStringTag$5 = requireShams()();
7204
+ var hasToStringTag$5 = shams();
7214
7205
 
7215
7206
  /** @type {import('.')} */
7216
7207
  var isDateObject = function isDateObject(value) {
@@ -7221,7 +7212,7 @@ var isDateObject = function isDateObject(value) {
7221
7212
  };
7222
7213
 
7223
7214
  var callBound$8 = callBound$i;
7224
- var hasToStringTag$4 = requireShams()();
7215
+ var hasToStringTag$4 = shams();
7225
7216
  var hasOwn = hasown;
7226
7217
  var gOPD$1 = gopd$1;
7227
7218
 
@@ -7326,7 +7317,7 @@ var tryNumberObject = function tryNumberObject(value) {
7326
7317
  };
7327
7318
  var $toString$3 = callBound$6('Object.prototype.toString');
7328
7319
  var numClass = '[object Number]';
7329
- var hasToStringTag$3 = requireShams()();
7320
+ var hasToStringTag$3 = shams();
7330
7321
 
7331
7322
  /** @type {import('.')} */
7332
7323
  var isNumberObject = function isNumberObject(value) {
@@ -7353,7 +7344,7 @@ var tryBooleanObject = function booleanBrandCheck(value) {
7353
7344
  }
7354
7345
  };
7355
7346
  var boolClass = '[object Boolean]';
7356
- var hasToStringTag$2 = requireShams()();
7347
+ var hasToStringTag$2 = shams();
7357
7348
 
7358
7349
  /** @type {import('.')} */
7359
7350
  var isBooleanObject = function isBoolean(value) {
@@ -7395,7 +7386,7 @@ function requireSafeRegexTest () {
7395
7386
 
7396
7387
  var callBound$4 = callBound$i;
7397
7388
  var $toString$1 = callBound$4('Object.prototype.toString');
7398
- var hasSymbols = hasSymbols$3();
7389
+ var hasSymbols = hasSymbols$4();
7399
7390
  var safeRegexTest = requireSafeRegexTest();
7400
7391
 
7401
7392
  if (hasSymbols) {
@@ -7841,7 +7832,7 @@ var gOPD = gopd$1;
7841
7832
  var getProto = getProto$3;
7842
7833
 
7843
7834
  var $toString = callBound$2('Object.prototype.toString');
7844
- var hasToStringTag = requireShams()();
7835
+ var hasToStringTag = shams();
7845
7836
 
7846
7837
  var g = typeof globalThis === 'undefined' ? commonjsGlobal : globalThis;
7847
7838
  var typedArrays = availableTypedArrays();
@@ -36412,6 +36403,23 @@ var RegistryPackageDetail = function RegistryPackageDetail(_ref) {
36412
36403
  }, idx);
36413
36404
  })
36414
36405
  })]
36406
+ }), widget.appOrigin && /*#__PURE__*/jsxRuntime.jsxs("div", {
36407
+ className: "flex items-center gap-1.5 text-xs opacity-50",
36408
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
36409
+ icon: "laptop",
36410
+ className: "h-3 w-3"
36411
+ }), /*#__PURE__*/jsxRuntime.jsxs("span", {
36412
+ children: ["Built for ", widget.appOrigin]
36413
+ })]
36414
+ }), widget.missingApis && widget.missingApis.length > 0 && /*#__PURE__*/jsxRuntime.jsx("div", {
36415
+ className: "p-2 rounded bg-yellow-900/30 border border-yellow-700",
36416
+ children: /*#__PURE__*/jsxRuntime.jsxs("p", {
36417
+ className: "text-xs text-yellow-400",
36418
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
36419
+ icon: "triangle-exclamation",
36420
+ className: "mr-1"
36421
+ }), "Incompatible \u2014 requires", " ", widget.missingApis.join(", "), " API", widget.missingApis.length !== 1 ? "s" : ""]
36422
+ })
36415
36423
  }), widget.repository && /*#__PURE__*/jsxRuntime.jsxs("div", {
36416
36424
  children: [/*#__PURE__*/jsxRuntime.jsx("span", {
36417
36425
  className: "text-xs font-semibold opacity-50 mb-1 block",
@@ -36457,6 +36465,10 @@ function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.lengt
36457
36465
  * Extracted from EnhancedWidgetDropdown so the same logic can power the
36458
36466
  * Discover tab inside AppSettingsModal (and anywhere else).
36459
36467
  *
36468
+ * Options:
36469
+ * filterByCapabilities – if true (default), only show packages compatible
36470
+ * with the app's API capabilities
36471
+ *
36460
36472
  * Returns:
36461
36473
  * packages – raw package objects from the registry
36462
36474
  * flatWidgets – flattened widget entries with `isRegistry: true`
@@ -36467,8 +36479,13 @@ function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.lengt
36467
36479
  * installError – install error string (or null)
36468
36480
  * search() – manually trigger a search
36469
36481
  * installPackage(widget) – install a specific registry widget
36482
+ * showAllPackages / setShowAllPackages – toggle to show incompatible packages
36483
+ * appCapabilities – the app's API namespaces
36470
36484
  */
36471
36485
  var useRegistrySearch = function useRegistrySearch() {
36486
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
36487
+ _ref$filterByCapabili = _ref.filterByCapabilities,
36488
+ filterByCapabilities = _ref$filterByCapabili === void 0 ? true : _ref$filterByCapabili;
36472
36489
  var _useState = React.useState(false),
36473
36490
  _useState2 = _slicedToArray(_useState, 2),
36474
36491
  isLoading = _useState2[0],
@@ -36497,10 +36514,22 @@ var useRegistrySearch = function useRegistrySearch() {
36497
36514
  _useState12 = _slicedToArray(_useState11, 2),
36498
36515
  installError = _useState12[0],
36499
36516
  setInstallError = _useState12[1];
36517
+ var _useState13 = React.useState(false),
36518
+ _useState14 = _slicedToArray(_useState13, 2),
36519
+ showAllPackages = _useState14[0],
36520
+ setShowAllPackages = _useState14[1];
36521
+
36522
+ // Discover app capabilities from window.mainApi
36523
+ var appCapabilities = React.useMemo(function () {
36524
+ if (typeof window !== "undefined" && window.mainApi) {
36525
+ return Object.keys(window.mainApi);
36526
+ }
36527
+ return [];
36528
+ }, []);
36500
36529
  var search = React.useCallback(/*#__PURE__*/function () {
36501
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
36530
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query) {
36502
36531
  var _window$mainApi;
36503
- var result, pkgs, widgets, _iterator, _step, pkg, _iterator2, _step2, widget, _t;
36532
+ var filters, result, pkgs, capSet, widgets, _iterator, _step, pkg, allApiProviders, _iterator2, _step2, p, _iterator3, _step3, w, _iterator5, _step5, _p, missingApis, _iterator4, _step4, widget, _t;
36504
36533
  return _regeneratorRuntime.wrap(function (_context) {
36505
36534
  while (1) switch (_context.prev = _context.next) {
36506
36535
  case 0:
@@ -36515,23 +36544,71 @@ var useRegistrySearch = function useRegistrySearch() {
36515
36544
  setIsLoading(true);
36516
36545
  setError(null);
36517
36546
  _context.prev = 2;
36547
+ filters = {};
36548
+ if (filterByCapabilities && !showAllPackages && appCapabilities.length) {
36549
+ filters.appCapabilities = appCapabilities;
36550
+ }
36518
36551
  _context.next = 3;
36519
- return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, {});
36552
+ return window.mainApi.registry.search(query !== null && query !== void 0 ? query : searchQuery, filters);
36520
36553
  case 3:
36521
36554
  result = _context.sent;
36522
36555
  pkgs = result.packages || [];
36523
36556
  setPackages(pkgs);
36524
36557
 
36525
36558
  // Flatten packages into widget entries
36559
+ capSet = new Set(appCapabilities.map(function (c) {
36560
+ return c.toLowerCase();
36561
+ }));
36526
36562
  widgets = [];
36527
36563
  _iterator = _createForOfIteratorHelper$2(pkgs);
36528
36564
  try {
36529
36565
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
36530
36566
  pkg = _step.value;
36531
- _iterator2 = _createForOfIteratorHelper$2(pkg.widgets || []);
36567
+ // Compute missing APIs for the entire package
36568
+ allApiProviders = [];
36569
+ _iterator2 = _createForOfIteratorHelper$2(pkg.providers || []);
36532
36570
  try {
36533
36571
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
36534
- widget = _step2.value;
36572
+ p = _step2.value;
36573
+ if (p.providerClass === "api" && p.required !== false) {
36574
+ allApiProviders.push(p.type);
36575
+ }
36576
+ }
36577
+ } catch (err) {
36578
+ _iterator2.e(err);
36579
+ } finally {
36580
+ _iterator2.f();
36581
+ }
36582
+ _iterator3 = _createForOfIteratorHelper$2(pkg.widgets || []);
36583
+ try {
36584
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
36585
+ w = _step3.value;
36586
+ _iterator5 = _createForOfIteratorHelper$2(w.providers || []);
36587
+ try {
36588
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
36589
+ _p = _step5.value;
36590
+ if (_p.providerClass === "api" && _p.required !== false) {
36591
+ allApiProviders.push(_p.type);
36592
+ }
36593
+ }
36594
+ } catch (err) {
36595
+ _iterator5.e(err);
36596
+ } finally {
36597
+ _iterator5.f();
36598
+ }
36599
+ }
36600
+ } catch (err) {
36601
+ _iterator3.e(err);
36602
+ } finally {
36603
+ _iterator3.f();
36604
+ }
36605
+ missingApis = _toConsumableArray(new Set(allApiProviders)).filter(function (api) {
36606
+ return !capSet.has(api.toLowerCase());
36607
+ });
36608
+ _iterator4 = _createForOfIteratorHelper$2(pkg.widgets || []);
36609
+ try {
36610
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
36611
+ widget = _step4.value;
36535
36612
  widgets.push({
36536
36613
  key: "".concat(pkg.name, "/").concat(widget.name),
36537
36614
  name: widget.displayName || widget.name,
@@ -36549,13 +36626,16 @@ var useRegistrySearch = function useRegistrySearch() {
36549
36626
  downloadUrl: pkg.downloadUrl || "",
36550
36627
  repository: pkg.repository || "",
36551
36628
  publishedAt: pkg.publishedAt || "",
36552
- packageWidgets: pkg.widgets || []
36629
+ packageWidgets: pkg.widgets || [],
36630
+ appOrigin: pkg.appOrigin || null,
36631
+ packageProviders: pkg.providers || [],
36632
+ missingApis: missingApis
36553
36633
  });
36554
36634
  }
36555
36635
  } catch (err) {
36556
- _iterator2.e(err);
36636
+ _iterator4.e(err);
36557
36637
  } finally {
36558
- _iterator2.f();
36638
+ _iterator4.f();
36559
36639
  }
36560
36640
  }
36561
36641
  } catch (err) {
@@ -36583,9 +36663,9 @@ var useRegistrySearch = function useRegistrySearch() {
36583
36663
  }, _callee, null, [[2, 4, 5, 6]]);
36584
36664
  }));
36585
36665
  return function (_x) {
36586
- return _ref.apply(this, arguments);
36666
+ return _ref2.apply(this, arguments);
36587
36667
  };
36588
- }(), [searchQuery]);
36668
+ }(), [searchQuery, filterByCapabilities, showAllPackages, appCapabilities]);
36589
36669
 
36590
36670
  // Debounce search on query changes (300ms)
36591
36671
  React.useEffect(function () {
@@ -36596,9 +36676,9 @@ var useRegistrySearch = function useRegistrySearch() {
36596
36676
  return clearTimeout(timer);
36597
36677
  };
36598
36678
  // eslint-disable-next-line react-hooks/exhaustive-deps
36599
- }, [searchQuery]);
36679
+ }, [searchQuery, showAllPackages]);
36600
36680
  var installPackage = React.useCallback(/*#__PURE__*/function () {
36601
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
36681
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(widget) {
36602
36682
  var packageName, downloadUrl, packageVersion, resolvedUrl, _t2;
36603
36683
  return _regeneratorRuntime.wrap(function (_context2) {
36604
36684
  while (1) switch (_context2.prev = _context2.next) {
@@ -36634,7 +36714,7 @@ var useRegistrySearch = function useRegistrySearch() {
36634
36714
  }, _callee2, null, [[2, 4, 5, 6]]);
36635
36715
  }));
36636
36716
  return function (_x2) {
36637
- return _ref2.apply(this, arguments);
36717
+ return _ref3.apply(this, arguments);
36638
36718
  };
36639
36719
  }(), []);
36640
36720
  var retry = React.useCallback(function () {
@@ -36651,7 +36731,10 @@ var useRegistrySearch = function useRegistrySearch() {
36651
36731
  installError: installError,
36652
36732
  search: search,
36653
36733
  installPackage: installPackage,
36654
- retry: retry
36734
+ retry: retry,
36735
+ showAllPackages: showAllPackages,
36736
+ setShowAllPackages: setShowAllPackages,
36737
+ appCapabilities: appCapabilities
36655
36738
  };
36656
36739
  };
36657
36740
 
@@ -36677,7 +36760,9 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
36677
36760
  isInstalling = _useRegistrySearch.isInstalling,
36678
36761
  installError = _useRegistrySearch.installError,
36679
36762
  installPackage = _useRegistrySearch.installPackage,
36680
- retry = _useRegistrySearch.retry;
36763
+ retry = _useRegistrySearch.retry,
36764
+ showAllPackages = _useRegistrySearch.showAllPackages,
36765
+ setShowAllPackages = _useRegistrySearch.setShowAllPackages;
36681
36766
  var _useState = React.useState(null),
36682
36767
  _useState2 = _slicedToArray(_useState, 2),
36683
36768
  selectedPackageName = _useState2[0],
@@ -36842,10 +36927,15 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
36842
36927
  className: "space-y-1",
36843
36928
  children: packages.map(function (pkg) {
36844
36929
  var widgetCount = (pkg.widgets || []).length;
36930
+ // Check if this package has incompatible API dependencies
36931
+ var pkgWidget = flatWidgets.find(function (w) {
36932
+ return w.packageName === pkg.name;
36933
+ });
36934
+ var hasIncompatible = (pkgWidget === null || pkgWidget === void 0 ? void 0 : pkgWidget.missingApis) && pkgWidget.missingApis.length > 0;
36845
36935
  return /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Item, {
36846
36936
  icon: /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
36847
- icon: "cube",
36848
- className: "h-3.5 w-3.5"
36937
+ icon: hasIncompatible ? "triangle-exclamation" : "cube",
36938
+ className: "h-3.5 w-3.5 ".concat(hasIncompatible ? "text-yellow-500" : "")
36849
36939
  }),
36850
36940
  onClick: function onClick() {
36851
36941
  return setSelectedPackageName(pkg.name);
@@ -36871,14 +36961,24 @@ var DiscoverWidgetsDetail = function DiscoverWidgetsDetail(_ref) {
36871
36961
  children: "Back"
36872
36962
  })]
36873
36963
  })
36874
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
36964
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
36875
36965
  className: "flex-shrink-0 px-4 py-3",
36876
- children: /*#__PURE__*/jsxRuntime.jsx(DashReact.SearchInput, {
36966
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.SearchInput, {
36877
36967
  value: searchQuery,
36878
36968
  onChange: setSearchQuery,
36879
36969
  placeholder: "Search packages...",
36880
36970
  inputClassName: "py-1.5 text-xs"
36881
- })
36971
+ }), /*#__PURE__*/jsxRuntime.jsxs("label", {
36972
+ className: "flex items-center gap-1.5 mt-2 text-xs opacity-50 cursor-pointer select-none",
36973
+ children: [/*#__PURE__*/jsxRuntime.jsx("input", {
36974
+ type: "checkbox",
36975
+ checked: showAllPackages,
36976
+ onChange: function onChange(e) {
36977
+ return setShowAllPackages(e.target.checked);
36978
+ },
36979
+ className: "rounded"
36980
+ }), "Show all packages"]
36981
+ })]
36882
36982
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
36883
36983
  className: "flex-1 min-h-0 overflow-y-auto px-2",
36884
36984
  children: listBody