@grimoire-rs/indexer 0.1.8 → 0.2.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/README.md +38 -0
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/config.d.ts +21 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -2
- package/dist/config.js.map +1 -1
- package/dist/enrich/index.d.ts.map +1 -1
- package/dist/enrich/index.js +62 -0
- package/dist/enrich/index.js.map +1 -1
- package/dist/renderer/astro/components/BrandMark.d.ts +14 -0
- package/dist/renderer/astro/components/BrandMark.d.ts.map +1 -0
- package/dist/renderer/astro/components/BrandMark.js +16 -0
- package/dist/renderer/astro/components/BrandMark.js.map +1 -0
- package/dist/renderer/astro/components/BrandMark.tsx +19 -0
- package/dist/renderer/astro/components/Catalog.d.ts.map +1 -1
- package/dist/renderer/astro/components/Catalog.js +310 -18
- package/dist/renderer/astro/components/Catalog.js.map +1 -1
- package/dist/renderer/astro/components/Catalog.tsx +445 -63
- package/dist/renderer/astro/components/CommandField.astro +43 -0
- package/dist/renderer/astro/components/PickerMenu.astro +68 -0
- package/dist/renderer/astro/components/VersionMenu.astro +6 -2
- package/dist/renderer/astro/content.config.ts +23 -5
- package/dist/renderer/astro/layouts/Base.astro +794 -66
- package/dist/renderer/astro/lib/catalog.d.ts +24 -0
- package/dist/renderer/astro/lib/catalog.d.ts.map +1 -1
- package/dist/renderer/astro/lib/catalog.js +62 -0
- package/dist/renderer/astro/lib/catalog.js.map +1 -1
- package/dist/renderer/astro/lib/catalog.ts +62 -0
- package/dist/renderer/astro/lib/code.d.ts +22 -0
- package/dist/renderer/astro/lib/code.d.ts.map +1 -0
- package/dist/renderer/astro/lib/code.js +21 -0
- package/dist/renderer/astro/lib/code.js.map +1 -0
- package/dist/renderer/astro/lib/code.ts +21 -0
- package/dist/renderer/astro/pages/index.astro +144 -36
- package/dist/renderer/astro/pages/p/[...slug].astro +403 -55
- package/dist/renderer/index.d.ts +23 -0
- package/dist/renderer/index.d.ts.map +1 -1
- package/dist/renderer/index.js +117 -30
- package/dist/renderer/index.js.map +1 -1
- package/package.json +5 -1
- package/dist/renderer/astro/components/CopyButton.astro +0 -24
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
2
|
-
import { useMemo, useState } from "preact/hooks";
|
|
2
|
+
import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "preact/hooks";
|
|
3
|
+
// Lucide (ISC) draws the UI; brand marks come from `@mdi/js`, which Lucide
|
|
4
|
+
// deliberately does not carry. No SVG on this site is hand-written.
|
|
5
|
+
import { Check, FolderRoot, Globe, Image, ImageOff } from "lucide-preact";
|
|
6
|
+
import { mdiMicrosoftVisualStudioCode } from "@mdi/js";
|
|
7
|
+
import { BrandMark } from "./BrandMark.js";
|
|
3
8
|
import { withBase } from "../lib/base.js";
|
|
4
9
|
import { timeAgo, vscodeUrl } from "../lib/catalog.js";
|
|
5
10
|
// Known kinds get stable chip ordering + badge colors; unknown kinds
|
|
@@ -21,39 +26,321 @@ function compare(a, b, sort) {
|
|
|
21
26
|
return (a.created ? 0 : 1) - (b.created ? 0 : 1);
|
|
22
27
|
return new Date(b.created).getTime() - new Date(a.created).getTime();
|
|
23
28
|
}
|
|
24
|
-
// The two install scopes
|
|
25
|
-
// "project" and "global" read identically in both
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
29
|
+
// The two install scopes previously wore the VS Code extension's own
|
|
30
|
+
// codicons so "project" and "global" read identically in both. That parity
|
|
31
|
+
// is gone on purpose: every icon now comes from one set. `FolderRoot` and
|
|
32
|
+
// `Globe` are the nearest Lucide equivalents and carry the same meaning.
|
|
33
|
+
/** Typing inside one of these means a bare keystroke is text, not a shortcut. */
|
|
34
|
+
function isTyping(el) {
|
|
35
|
+
const node = el;
|
|
36
|
+
if (!node)
|
|
37
|
+
return false;
|
|
38
|
+
return node.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(node.tagName);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* How many cards the grid actually laid out per row.
|
|
42
|
+
*
|
|
43
|
+
* Measured, not read from CSS: the track list is `auto-fill` with a minimum
|
|
44
|
+
* width, so the count is a layout outcome that depends on the viewport. The
|
|
45
|
+
* first card whose top edge drops below the first row's starts row two.
|
|
46
|
+
*/
|
|
47
|
+
function columnCount(cards) {
|
|
48
|
+
if (cards.length < 2)
|
|
49
|
+
return 1;
|
|
50
|
+
const top = cards[0].offsetTop;
|
|
51
|
+
const wrapped = cards.findIndex((card) => card.offsetTop > top);
|
|
52
|
+
return wrapped === -1 ? cards.length : wrapped;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The card's 28px logo slot, in its three states.
|
|
56
|
+
*
|
|
57
|
+
* The third one is the reason this is a component rather than inline JSX: a
|
|
58
|
+
* package can declare a `logo` whose file is not actually served — the
|
|
59
|
+
* enrich step failed, the asset was pruned, the path is stale — and the
|
|
60
|
+
* browser's own broken-image glyph is both ugly and says nothing. So a
|
|
61
|
+
* declared-but-unreachable logo degrades to a marked placeholder, which is
|
|
62
|
+
* deliberately *not* the same as the initial-letter tile a package with no
|
|
63
|
+
* logo at all gets: one is a fault worth seeing, the other is normal.
|
|
64
|
+
*
|
|
65
|
+
* The static detail page needs the same treatment but cannot use `onError`,
|
|
66
|
+
* so it opts into the global handler in `Base.astro` instead — keep the two
|
|
67
|
+
* placeholders looking alike.
|
|
68
|
+
*/
|
|
69
|
+
function CardLogo({ pkg }) {
|
|
70
|
+
const [state, setState] = useState("loading");
|
|
71
|
+
const imgRef = useRef(null);
|
|
72
|
+
// The image is server-rendered, so the browser begins fetching it while
|
|
73
|
+
// parsing the HTML — long before this island hydrates. Two consequences,
|
|
74
|
+
// and the slot markup below answers both: `onError` can fire before any
|
|
75
|
+
// listener exists (the placeholder used to appear only sometimes), and a
|
|
76
|
+
// failed image paints the browser's broken glyph on the way (the flash on
|
|
77
|
+
// reload). Starting the image hidden means nothing is ever shown until it
|
|
78
|
+
// is known to be good.
|
|
79
|
+
//
|
|
80
|
+
// `complete` says the browser finished, not how it went. `decode()` is
|
|
81
|
+
// what separates the two: it rejects for a failure and resolves for a good
|
|
82
|
+
// image — including an SVG with no intrinsic size, where the usual
|
|
83
|
+
// `naturalWidth === 0` test reports a false failure. Gating on `complete`
|
|
84
|
+
// means it never starts a fetch, so `loading="lazy"` still holds off
|
|
85
|
+
// -screen cards.
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
setState("loading");
|
|
88
|
+
const img = imgRef.current;
|
|
89
|
+
if (!img?.complete)
|
|
90
|
+
return;
|
|
91
|
+
let live = true;
|
|
92
|
+
img.decode().then(() => live && setState("ready"), () => live && setState("broken"));
|
|
93
|
+
return () => {
|
|
94
|
+
live = false;
|
|
95
|
+
};
|
|
96
|
+
}, [pkg.logo]);
|
|
97
|
+
if (!pkg.logo) {
|
|
98
|
+
return (_jsx("span", { class: "card-logo card-logo-fallback", "aria-hidden": "true", style: { background: `var(--kind-${pkg.kind}, var(--muted))` }, children: pkg.name[0]?.toUpperCase() }));
|
|
99
|
+
}
|
|
100
|
+
return (_jsxs("span", { class: "card-logo logo-slot", "data-state": state, role: state === "broken" ? "img" : undefined, "aria-label": state === "broken" ? "Logo image unavailable" : undefined, title: state === "broken" ? "Logo image unavailable" : undefined, children: [state === "broken" ? (_jsx(ImageOff, { class: "logo-mark", "aria-hidden": "true" })) : (_jsx(Image, { class: "logo-mark", "aria-hidden": "true" })), _jsx("img", { ref: imgRef, src: withBase(pkg.logo), alt: "", loading: "lazy", onLoad: () => setState("ready"), onError: () => setState("broken") })] }));
|
|
101
|
+
}
|
|
102
|
+
function CopyButton({ command, variant = "default", name, }) {
|
|
32
103
|
const [copied, setCopied] = useState(false);
|
|
33
104
|
const copy = () => {
|
|
34
105
|
navigator.clipboard.writeText(command).then(() => {
|
|
35
106
|
setCopied(true);
|
|
107
|
+
// The toast lives in Base.astro's inline script, outside this island —
|
|
108
|
+
// an event is how a hydrated component reaches it without either side
|
|
109
|
+
// importing the other.
|
|
110
|
+
document.dispatchEvent(new CustomEvent("grimoire:copied", { detail: { name, value: command } }));
|
|
36
111
|
setTimeout(() => setCopied(false), 1500);
|
|
37
112
|
});
|
|
38
113
|
};
|
|
39
|
-
return (_jsx("button", { type: "button", class: copied ? "copy copied" : "copy", title: command, "aria-label": `Copy: ${command}`,
|
|
114
|
+
return (_jsx("button", { type: "button", class: copied ? "copy copied" : "copy", title: command, "aria-label": `Copy: ${command}`,
|
|
115
|
+
// Out of the Tab sequence: the card is the stop, and the same command
|
|
116
|
+
// is copyable from the detail page Enter opens.
|
|
117
|
+
tabIndex: -1, onClick: copy, children: copied ? _jsx(Check, { size: 14 }) : variant === "global" ? _jsx(Globe, { size: 14 }) : _jsx(FolderRoot, { size: 14 }) }));
|
|
40
118
|
}
|
|
41
119
|
// `vscodeExtension` arrives as a prop, not from lib/data: this island
|
|
42
120
|
// hydrates in the browser, so importing the build-time payload here would
|
|
43
121
|
// ship the whole catalog twice.
|
|
44
122
|
export default function Catalog({ packages, vscodeExtension, }) {
|
|
45
|
-
|
|
123
|
+
// Seeded from `?q=…` on the very first render, not from an effect: a
|
|
124
|
+
// keyword chip on a package page links here, and filtering one render late
|
|
125
|
+
// means painting the full catalog and then collapsing it. The server has
|
|
126
|
+
// no `location`, so it renders the unfiltered list — which is what a
|
|
127
|
+
// crawler and a `?q=`-less visitor should both get.
|
|
128
|
+
const [query, setQuery] = useState(() => typeof location === "undefined" ? "" : (new URLSearchParams(location.search).get("q") ?? ""));
|
|
46
129
|
const [kind, setKind] = useState(null);
|
|
47
130
|
const [sort, setSort] = useState("name");
|
|
131
|
+
// Deprecated packages are hidden until asked for: a retired package is
|
|
132
|
+
// noise for someone browsing what to install, and the publisher already
|
|
133
|
+
// said as much by deprecating it.
|
|
134
|
+
const [showDeprecated, setShowDeprecated] = useState(false);
|
|
135
|
+
const searchRef = useRef(null);
|
|
136
|
+
const gridRef = useRef(null);
|
|
137
|
+
const controlsRef = useRef(null);
|
|
138
|
+
const cardsOf = () => [...(gridRef.current?.querySelectorAll("li.card") ?? [])];
|
|
139
|
+
const chipsOf = () => [
|
|
140
|
+
...(controlsRef.current?.querySelectorAll("button.chip") ?? []),
|
|
141
|
+
];
|
|
142
|
+
/** Move focus `delta` cards along, clamping at both ends rather than wrapping. */
|
|
143
|
+
const focusCard = (from, delta) => {
|
|
144
|
+
const cards = cardsOf();
|
|
145
|
+
if (cards.length === 0)
|
|
146
|
+
return;
|
|
147
|
+
const next = Math.min(cards.length - 1, Math.max(0, from + delta));
|
|
148
|
+
cards[next]?.focus();
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Focus the search box and bring it to the top of the viewport, so the
|
|
152
|
+
* results — not whatever was on screen before — are what you are looking
|
|
153
|
+
* at while typing. `scroll-margin-top` on the field supplies the gap.
|
|
154
|
+
*
|
|
155
|
+
* Used by every path that moves focus there deliberately (`/`, arrowing up
|
|
156
|
+
* out of the chips, Escape). A plain mouse click is left alone: scrolling
|
|
157
|
+
* the page under a reader who just clicked a visible field is a jolt, not
|
|
158
|
+
* a help.
|
|
159
|
+
*/
|
|
160
|
+
const focusSearch = () => {
|
|
161
|
+
const input = searchRef.current;
|
|
162
|
+
if (!input)
|
|
163
|
+
return;
|
|
164
|
+
input.focus();
|
|
165
|
+
input.select();
|
|
166
|
+
input.scrollIntoView({
|
|
167
|
+
block: "start",
|
|
168
|
+
behavior: matchMedia("(prefers-reduced-motion: reduce)").matches ? "auto" : "smooth",
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
// Base.astro hides the catalog before first paint when the URL carries a
|
|
172
|
+
// query. Reveal it once this render — the filtered one — has hit the DOM.
|
|
173
|
+
// A layout effect, so the reveal lands in the same frame as the content.
|
|
174
|
+
useLayoutEffect(() => {
|
|
175
|
+
// Hydration attaches handlers but does not diff props against the server
|
|
176
|
+
// markup, so the box the server rendered empty stays empty even though
|
|
177
|
+
// this render filtered on `query`. Written straight to the DOM, which is
|
|
178
|
+
// what the vnode already claims.
|
|
179
|
+
const input = searchRef.current;
|
|
180
|
+
if (input && input.value !== query)
|
|
181
|
+
input.value = query;
|
|
182
|
+
delete document.documentElement.dataset.query;
|
|
183
|
+
}, []);
|
|
184
|
+
// `/` jumps to the search box, the convention every package registry
|
|
185
|
+
// shares. Bound on the document so it works wherever the reader is.
|
|
186
|
+
useEffect(() => {
|
|
187
|
+
const onKeyDown = (event) => {
|
|
188
|
+
if (event.key !== "/" || event.metaKey || event.ctrlKey || event.altKey)
|
|
189
|
+
return;
|
|
190
|
+
if (isTyping(event.target))
|
|
191
|
+
return;
|
|
192
|
+
event.preventDefault();
|
|
193
|
+
focusSearch();
|
|
194
|
+
};
|
|
195
|
+
document.addEventListener("keydown", onKeyDown);
|
|
196
|
+
return () => document.removeEventListener("keydown", onKeyDown);
|
|
197
|
+
}, []);
|
|
198
|
+
/**
|
|
199
|
+
* Escape drops the selection, from wherever the reader is — the search
|
|
200
|
+
* box, a chip, a card. "Selection" is both halves of it: the active
|
|
201
|
+
* filters, and the card currently holding focus, which wears the accent
|
|
202
|
+
* border and reads as picked. Clearing one and leaving the other visibly
|
|
203
|
+
* selected is the wrong half.
|
|
204
|
+
*
|
|
205
|
+
* The card is blurred rather than handed back to the search box: Escape
|
|
206
|
+
* means "never mind", not "go here instead", and `/` reaches search from
|
|
207
|
+
* anywhere. It matches what a second Escape in the search box already does.
|
|
208
|
+
*
|
|
209
|
+
* Document-level for the same reason `/` is: this is one piece of state,
|
|
210
|
+
* so the key that clears it should not depend on what happens to hold
|
|
211
|
+
* focus. Bailing on `defaultPrevented` leaves the menus that close
|
|
212
|
+
* themselves on Escape — the platform picker, the version popovers — to do
|
|
213
|
+
* that first without also wiping the catalog.
|
|
214
|
+
*/
|
|
215
|
+
useEffect(() => {
|
|
216
|
+
const onEscape = (event) => {
|
|
217
|
+
if (event.key !== "Escape" || event.defaultPrevented)
|
|
218
|
+
return;
|
|
219
|
+
const active = document.activeElement;
|
|
220
|
+
// Also true for a control *inside* a card, which is still the card
|
|
221
|
+
// being selected as far as the reader is concerned.
|
|
222
|
+
const card = active instanceof HTMLElement ? active.closest("li.card") : null;
|
|
223
|
+
if (!query && kind === null && !card)
|
|
224
|
+
return; // nothing selected: not our key
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
setQuery("");
|
|
227
|
+
setKind(null);
|
|
228
|
+
if (card)
|
|
229
|
+
active.blur();
|
|
230
|
+
};
|
|
231
|
+
document.addEventListener("keydown", onEscape);
|
|
232
|
+
return () => document.removeEventListener("keydown", onEscape);
|
|
233
|
+
}, [query, kind]);
|
|
234
|
+
/**
|
|
235
|
+
* The filter and sort chips are not Tab stops — Tab is reserved for
|
|
236
|
+
* crossing the catalog, so it runs search → card → card. The chips sit in
|
|
237
|
+
* the row above the grid, so they are reached the way that row is:
|
|
238
|
+
* ArrowUp out of the top card row, ArrowDown back into it.
|
|
239
|
+
*
|
|
240
|
+
* The one case that would strand them is an empty result set, where there
|
|
241
|
+
* is no card to arrow up from — so with nothing shown they rejoin the Tab
|
|
242
|
+
* order (see `chipTabIndex` below), which is also exactly when a reader
|
|
243
|
+
* needs them most.
|
|
244
|
+
*/
|
|
245
|
+
const onChipKeyDown = (event) => {
|
|
246
|
+
const chips = chipsOf();
|
|
247
|
+
const index = chips.indexOf(event.currentTarget);
|
|
248
|
+
if (index === -1)
|
|
249
|
+
return;
|
|
250
|
+
switch (event.key) {
|
|
251
|
+
case "ArrowRight":
|
|
252
|
+
event.preventDefault();
|
|
253
|
+
return chips[Math.min(chips.length - 1, index + 1)]?.focus();
|
|
254
|
+
case "ArrowLeft":
|
|
255
|
+
event.preventDefault();
|
|
256
|
+
return chips[Math.max(0, index - 1)]?.focus();
|
|
257
|
+
case "ArrowDown":
|
|
258
|
+
event.preventDefault();
|
|
259
|
+
return cardsOf()[0]?.focus();
|
|
260
|
+
case "ArrowUp":
|
|
261
|
+
// Not Escape any more — that clears the filters now, from here as
|
|
262
|
+
// much as anywhere else. ArrowUp is still the way back to search.
|
|
263
|
+
event.preventDefault();
|
|
264
|
+
return focusSearch();
|
|
265
|
+
default:
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
const onSearchKeyDown = (event) => {
|
|
270
|
+
if (event.key === "ArrowDown") {
|
|
271
|
+
event.preventDefault();
|
|
272
|
+
cardsOf()[0]?.focus();
|
|
273
|
+
}
|
|
274
|
+
else if (event.key === "Escape" && !query && kind === null) {
|
|
275
|
+
// Clearing is the document handler's job; this is only the second
|
|
276
|
+
// press, once there is nothing left to clear — so Escape leaves the
|
|
277
|
+
// field rather than being a dead key.
|
|
278
|
+
searchRef.current?.blur();
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
const onCardKeyDown = (event) => {
|
|
282
|
+
const card = event.currentTarget;
|
|
283
|
+
const index = cardsOf().indexOf(card);
|
|
284
|
+
if (index === -1)
|
|
285
|
+
return;
|
|
286
|
+
switch (event.key) {
|
|
287
|
+
case "ArrowRight":
|
|
288
|
+
event.preventDefault();
|
|
289
|
+
return focusCard(index, 1);
|
|
290
|
+
case "ArrowLeft":
|
|
291
|
+
event.preventDefault();
|
|
292
|
+
return focusCard(index, -1);
|
|
293
|
+
case "ArrowDown":
|
|
294
|
+
event.preventDefault();
|
|
295
|
+
return focusCard(index, columnCount(cardsOf()));
|
|
296
|
+
case "ArrowUp": {
|
|
297
|
+
event.preventDefault();
|
|
298
|
+
const columns = columnCount(cardsOf());
|
|
299
|
+
// Up out of the first row lands on the control row that sits above
|
|
300
|
+
// the grid — the chips, which have no other keyboard path. Search is
|
|
301
|
+
// one more ArrowUp away, and `/` reaches it from anywhere.
|
|
302
|
+
if (index < columns) {
|
|
303
|
+
const chip = chipsOf()[0];
|
|
304
|
+
if (chip)
|
|
305
|
+
return chip.focus();
|
|
306
|
+
return focusSearch();
|
|
307
|
+
}
|
|
308
|
+
return focusCard(index, -columns);
|
|
309
|
+
}
|
|
310
|
+
case "Home":
|
|
311
|
+
event.preventDefault();
|
|
312
|
+
return focusCard(index, -index);
|
|
313
|
+
case "End":
|
|
314
|
+
event.preventDefault();
|
|
315
|
+
return focusCard(index, cardsOf().length);
|
|
316
|
+
case "Enter":
|
|
317
|
+
case " ":
|
|
318
|
+
// Only when the card itself holds focus: an inner control reached by
|
|
319
|
+
// mouse must keep its own Space/Enter behaviour.
|
|
320
|
+
if (event.target !== card)
|
|
321
|
+
return;
|
|
322
|
+
event.preventDefault();
|
|
323
|
+
card.querySelector("h2 a")?.click();
|
|
324
|
+
return;
|
|
325
|
+
default:
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
// The catalog as the kind chips and the search placeholder count it —
|
|
330
|
+
// deprecated entries drop out of those totals too while they are hidden,
|
|
331
|
+
// so no count ever promises more than the grid shows.
|
|
332
|
+
const counted = useMemo(() => (showDeprecated ? packages : packages.filter((p) => !p.deprecated)), [packages, showDeprecated]);
|
|
48
333
|
const kinds = useMemo(() => {
|
|
49
334
|
const counts = new Map();
|
|
50
|
-
for (const p of
|
|
335
|
+
for (const p of counted)
|
|
51
336
|
counts.set(p.kind, (counts.get(p.kind) ?? 0) + 1);
|
|
52
337
|
return [...counts.entries()].sort((a, b) => kindOrder(a[0]) - kindOrder(b[0]) || a[0].localeCompare(b[0]));
|
|
53
|
-
}, [
|
|
338
|
+
}, [counted]);
|
|
54
339
|
const q = query.trim().toLowerCase();
|
|
55
|
-
|
|
56
|
-
|
|
340
|
+
// Query and kind first, deprecation last — so the toggle can report how
|
|
341
|
+
// many entries *it alone* is holding back, rather than a catalog-wide
|
|
342
|
+
// number that has nothing to do with what is on screen.
|
|
343
|
+
const matching = packages.filter((p) => {
|
|
57
344
|
if (kind && p.kind !== kind)
|
|
58
345
|
return false;
|
|
59
346
|
if (!q)
|
|
@@ -67,8 +354,13 @@ export default function Catalog({ packages, vscodeExtension, }) {
|
|
|
67
354
|
p.summary ?? "",
|
|
68
355
|
(p.keywords ?? []).join(" "),
|
|
69
356
|
].some((field) => field.toLowerCase().includes(q));
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
|
|
357
|
+
});
|
|
358
|
+
const shown = (showDeprecated ? matching : matching.filter((p) => !p.deprecated)).sort((a, b) => compare(a, b, sort));
|
|
359
|
+
// A catalog with nothing deprecated gets no toggle — a control that can
|
|
360
|
+
// only ever be a no-op is worse than its absence.
|
|
361
|
+
const hasDeprecated = packages.some((p) => p.deprecated);
|
|
362
|
+
// Chips leave the Tab order only while there is a grid to arrow up from.
|
|
363
|
+
const chipTabIndex = shown.length === 0 ? 0 : -1;
|
|
364
|
+
return (_jsxs("section", { class: "catalog", children: [_jsxs("div", { class: "controls", ref: controlsRef, children: [_jsxs("div", { class: "search-field", children: [_jsx("input", { ref: searchRef, type: "search", placeholder: `Search ${counted.length} packages…`, value: query, onInput: (e) => setQuery(e.target.value), onKeyDown: onSearchKeyDown, "aria-label": "Search packages", "aria-keyshortcuts": "/" }), _jsx("kbd", { class: "search-hint", "aria-hidden": "true", children: "/" })] }), _jsxs("div", { class: "chips", role: "group", "aria-label": "Sort by", children: [_jsx("button", { type: "button", class: sort === "name" ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("name"), children: "name" }), _jsx("button", { type: "button", class: sort === "updated" ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setSort("updated"), children: "updated" })] }), _jsx("span", { class: "chip-sep", "aria-hidden": "true" }), _jsxs("div", { class: "chips", role: "group", "aria-label": "Filter by kind", children: [_jsxs("button", { type: "button", class: kind === null ? "chip active" : "chip", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setKind(null), children: ["all ", _jsx("small", { children: counted.length })] }), kinds.map(([k, count]) => (_jsxs("button", { type: "button", class: kind === k ? `chip active kind-${k}` : `chip kind-${k}`, tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setKind(kind === k ? null : k), children: [k, " ", _jsx("small", { children: count })] }, k)))] }), hasDeprecated && (_jsx("button", { type: "button", class: showDeprecated ? "chip deprecated-toggle active" : "chip deprecated-toggle", "aria-pressed": showDeprecated, title: showDeprecated ? "Hide deprecated packages" : "Show deprecated packages", tabIndex: chipTabIndex, onKeyDown: onChipKeyDown, onClick: () => setShowDeprecated((on) => !on), children: "deprecated" }))] }), shown.length === 0 ? (_jsx("p", { class: "empty", children: "No packages match." })) : (_jsx("ul", { class: "grid", ref: gridRef, children: shown.map((p) => (_jsxs("li", { class: "card", tabIndex: 0, onKeyDown: onCardKeyDown, children: [_jsxs("div", { class: "card-head", children: [_jsx(CardLogo, { pkg: p }), _jsx("h2", { children: _jsx("a", { href: withBase(`/p/${p.namespace}/${p.name}/`), tabIndex: -1, children: p.name }) }), p.deprecated ? (_jsx("span", { class: "badge deprecated", children: "deprecated" })) : (_jsx("span", { class: `badge kind-${p.kind}`, children: p.kind }))] }), _jsx("p", { class: "namespace", children: p.namespace }), (p.version || p.license || p.created) && (_jsxs("div", { class: "meta-row", children: [p.version && _jsxs("span", { class: "pill version", children: ["v", p.version] }), p.license && _jsx("span", { class: "pill license", children: p.license }), p.created && timeAgo(p.created) && (_jsxs("time", { class: "updated", datetime: p.created, title: p.created, children: ["updated ", timeAgo(p.created)] }))] })), p.deprecated && (_jsxs("p", { class: "deprecated-strip", children: ["deprecated", p.replacedBy ? ` — replaced by ${p.replacedBy}` : ""] })), p.description && _jsx("p", { class: "description", children: p.description }), p.keywords && p.keywords.length > 0 && (_jsxs("div", { class: "keywords", children: [p.keywords.slice(0, 5).map((kw) => (_jsx("button", { type: "button", class: "chip keyword", tabIndex: -1, onClick: () => setQuery(kw), children: kw }, kw))), p.keywords.length > 5 && (_jsxs("span", { class: "chip keyword overflow", children: ["+", p.keywords.length - 5] }))] })), _jsxs("div", { class: "card-foot", children: [_jsxs("div", { class: "copy-group", children: [_jsx(CopyButton, { command: `grim add --global ${p.ref}`, variant: "global", name: `global add for ${p.name}` }), _jsx(CopyButton, { command: `grim add ${p.ref}`, name: `project add for ${p.name}` }), vscodeUrl(vscodeExtension, p.ref) && (_jsx("a", { class: "copy vscode", href: vscodeUrl(vscodeExtension, p.ref), title: "Open in VS Code", "aria-label": `Open ${p.name} in VS Code`, tabIndex: -1, children: _jsx(BrandMark, { path: mdiMicrosoftVisualStudioCode }) }))] }), p.repository && (_jsx("a", { class: "source", href: p.repository, target: "_blank", rel: "noopener noreferrer", tabIndex: -1, children: "source" }))] })] }, `${p.namespace}/${p.name}`))) }))] }));
|
|
73
365
|
}
|
|
74
366
|
//# sourceMappingURL=Catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../../../src/renderer/astro/components/Catalog.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../../../src/renderer/astro/components/Catalog.tsx"],"names":[],"mappings":"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"}
|