forked from
npmx.dev/npmx.dev
[READ-ONLY]
a fast, modern browser for the npm registry
1/**
2 * Creates a computed property that uses route query parameters by default,
3 * with an option to use local state instead.
4 */
5export function usePermalink<T extends string = string>(
6 queryKey: string,
7 defaultValue: T = '' as T,
8 options: { permanent?: boolean } = {},
9): WritableComputedRef<T> {
10 const { permanent = true } = options
11 const localValue = shallowRef<T>(defaultValue)
12 const routeValue = useRouteQuery<T>(queryKey, defaultValue)
13
14 const permalinkValue = computed({
15 get: () => (permanent ? routeValue.value : localValue.value),
16 set: (value: T) => {
17 if (permanent) {
18 routeValue.value = value
19 } else {
20 localValue.value = value
21 }
22 },
23 })
24
25 return permalinkValue
26}