UNPKG

@prefecthq/vue-compositions

Version:

A collection of reusable vue compositions.

35 lines 1.42 kB
/* eslint-disable @typescript-eslint/unified-signatures */ import isEqual from 'lodash.isequal'; import { computed } from 'vue'; import { useRouteQuery } from '../useRouteQuery/useRouteQuery'; import { isRouteParamClass } from '../useRouteQueryParam/formats/RouteParam'; import { StringRouteParam } from '../useRouteQueryParam/formats/StringRouteParam'; import { asArray } from '../utilities/arrays'; function isDefaultValue(value) { const [first] = asArray(value); return !isRouteParamClass(first); } export function useRouteQueryParam(key, formatterOrDefaultValue, maybeDefaultValue) { const isStringParamWithDefaultValue = isDefaultValue(formatterOrDefaultValue); if (isStringParamWithDefaultValue) { return useRouteQueryParam(key, StringRouteParam, formatterOrDefaultValue); } const { query } = useRouteQuery(); const multiple = Array.isArray(formatterOrDefaultValue); const [formatter] = asArray(formatterOrDefaultValue); const defaultValue = maybeDefaultValue; const format = new formatter({ key, defaultValue, multiple }); return computed({ get(oldValue) { const value = format.get(query); if (isEqual(value, oldValue)) { return oldValue; } return value; }, set(value) { format.set(query, value); }, }); } //# sourceMappingURL=useRouteQueryParam.js.map