@kud/gh-ink 0.50.2 → 0.51.0

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.d.ts CHANGED
@@ -150,6 +150,7 @@ interface InboxExtension {
150
150
  key: string;
151
151
  hint?: string;
152
152
  scope?: "item" | "global";
153
+ drills?: AnyItem["kind"][];
153
154
  body: (onExit: () => void, target?: ExtensionTarget) => ReactNode;
154
155
  }
155
156
 
package/dist/index.js CHANGED
@@ -2326,6 +2326,9 @@ var RepoPicker = ({
2326
2326
  );
2327
2327
  };
2328
2328
  var extensionFor = (input, extensions) => input ? extensions?.find((e) => e.key === input) : void 0;
2329
+ var drillExtensionFor = (item, extensions) => extensions?.find(
2330
+ (e) => e.scope === "item" && (e.drills?.includes(item.kind) ?? false)
2331
+ );
2329
2332
  var extensionLegend = (extensions) => (extensions ?? []).map((e) => [e.key, e.title]);
2330
2333
  var itemExtensions = (extensions) => (extensions ?? []).filter((e) => e.scope === "item");
2331
2334
  var BrowseScreen = ({
@@ -2521,6 +2524,13 @@ var BrowseScreen = ({
2521
2524
  useEffect(() => {
2522
2525
  if (refreshError) showFlash(`\u2717 ${refreshError.message}`);
2523
2526
  }, [refreshError]);
2527
+ const extensionTargetFor = (item) => ({
2528
+ item: item && !isHeader(item) ? item : void 0,
2529
+ ciJob: ciStatus?.job,
2530
+ login,
2531
+ onRemove: (row) => dismissItem(row),
2532
+ showFlash
2533
+ });
2524
2534
  const openDrillView = (item) => {
2525
2535
  const open = (fn, i) => {
2526
2536
  menu.close();
@@ -2529,6 +2539,12 @@ var BrowseScreen = ({
2529
2539
  };
2530
2540
  if (item.kind === "pr" && onOpenPr) return open(onOpenPr, item);
2531
2541
  if (item.kind === "issue" && onOpenIssue) return open(onOpenIssue, item);
2542
+ const ext = drillExtensionFor(item, extensions);
2543
+ if (ext && onOpenExt) {
2544
+ menu.close();
2545
+ onOpenExt(ext.id, extensionTargetFor(item));
2546
+ return true;
2547
+ }
2532
2548
  return false;
2533
2549
  };
2534
2550
  const openMenu = () => {
@@ -2687,17 +2703,7 @@ var BrowseScreen = ({
2687
2703
  }
2688
2704
  const ext = extensionFor(input, extensions);
2689
2705
  if (ext) {
2690
- onOpenExt?.(ext.id, {
2691
- // ExtensionTarget.item has always been documented as absent on a header
2692
- // row, and until the fence became selectable that was true for free.
2693
- // Now it has to be said: every extension body narrows on `kind` for a
2694
- // pr / issue / task and none of them expect a repo-header.
2695
- item: activeItem && !isHeader(activeItem) ? activeItem : void 0,
2696
- ciJob: ciStatus?.job,
2697
- login,
2698
- onRemove: (row) => dismissItem(row),
2699
- showFlash
2700
- });
2706
+ onOpenExt?.(ext.id, extensionTargetFor(activeItem));
2701
2707
  return;
2702
2708
  }
2703
2709
  if (activeItem?.kind === "repo-header") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kud/gh-ink",
3
- "version": "0.50.2",
3
+ "version": "0.51.0",
4
4
  "description": "Ink components for rendering GitHub PR review comments and health — controlled, presentation-only, built on @kud/ink-ui and fed by @kud/gh.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",