Skip to content

Commit 9d52025

Browse files
committed
chore: refactor header shortcuts
Just a simplification since these are getting lengthy and repetitive already.
1 parent 1d1f450 commit 9d52025

File tree

1 file changed

+20
-52
lines changed

1 file changed

+20
-52
lines changed

app/components/Package/Header.vue

Lines changed: 20 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ function hasProvenance(version: PackumentVersion | null): boolean {
7272
return !!(version.dist as { attestations?: unknown }).attestations
7373
}
7474
75-
const router = useRouter()
7675
// Docs URL: use our generated API docs
7776
const docsLink = computed(() => {
7877
if (!props.resolvedVersion) return null
@@ -122,57 +121,26 @@ const diffLink = computed((): RouteLocationRaw | null => {
122121
123122
const keyboardShortcuts = useKeyboardShortcuts()
124123
125-
onKeyStroke(
126-
e => keyboardShortcuts.value && isKeyWithoutModifiers(e, '.') && !isEditableElement(e.target),
127-
e => {
128-
if (codeLink.value === null) return
129-
e.preventDefault()
130-
131-
navigateTo(codeLink.value)
132-
},
133-
{ dedupe: true },
134-
)
135-
136-
onKeyStroke(
137-
e => keyboardShortcuts.value && isKeyWithoutModifiers(e, 'm') && !isEditableElement(e.target),
138-
e => {
139-
if (mainLink.value === null) return
140-
e.preventDefault()
141-
142-
navigateTo(mainLink.value)
143-
},
144-
{ dedupe: true },
145-
)
146-
147-
onKeyStroke(
148-
e => keyboardShortcuts.value && isKeyWithoutModifiers(e, 'd') && !isEditableElement(e.target),
149-
e => {
150-
if (!docsLink.value) return
151-
e.preventDefault()
152-
navigateTo(docsLink.value)
153-
},
154-
{ dedupe: true },
155-
)
156-
157-
onKeyStroke(
158-
e => keyboardShortcuts.value && isKeyWithoutModifiers(e, 'c') && !isEditableElement(e.target),
159-
e => {
160-
if (!props.pkg) return
161-
e.preventDefault()
162-
router.push({ name: 'compare', query: { packages: props.pkg.name } })
163-
},
164-
{ dedupe: true },
165-
)
166-
167-
onKeyStroke(
168-
e => keyboardShortcuts.value && isKeyWithoutModifiers(e, 'f') && !isEditableElement(e.target),
169-
e => {
170-
if (diffLink.value === null) return
171-
e.preventDefault()
172-
navigateTo(diffLink.value)
173-
},
174-
{ dedupe: true },
175-
)
124+
const shortcuts: [string, () => RouteLocationRaw | null | false | undefined][] = [
125+
['.', () => codeLink.value],
126+
['m', () => mainLink.value],
127+
['d', () => docsLink.value],
128+
['c', () => props.pkg && { name: 'compare' as const, query: { packages: props.pkg.name } }],
129+
['f', () => diffLink.value],
130+
]
131+
132+
for (const [key, getTarget] of shortcuts) {
133+
onKeyStroke(
134+
e => keyboardShortcuts.value && isKeyWithoutModifiers(e, key) && !isEditableElement(e.target),
135+
e => {
136+
const target = getTarget()
137+
if (!target) return
138+
e.preventDefault()
139+
navigateTo(target)
140+
},
141+
{ dedupe: true },
142+
)
143+
}
176144
177145
const fundingUrl = computed(() => {
178146
let funding = props.displayVersion?.funding

0 commit comments

Comments
 (0)