UNPKG

vuex-composition-helpers

Version:
33 lines (30 loc) 1.62 kB
import {Store} from 'vuex'; import {computed} from '@vue/composition-api'; import {computedGetter, getAction, getMutation, getStoreFromInstance, useMapping, KnownKeys, RefTypes, ExtractTypes, ExtractGetterTypes, Nullish} from './util'; import {useActions, useState, useGetters, useMutations} from './global' export const useNamespacedActions = useActions export const useNamespacedGetters = useGetters export const useNamespacedMutations = useMutations export const useNamespacedState = useState export function createNamespacedHelpers<TState = any, TGetters = any, TActions = any, TMutations = any>(storeOrNamespace: Store<any> | string, namespace?: string):{ useState: (map?: KnownKeys<TState>[]) => RefTypes<TState>; useGetters: (map?: KnownKeys<TGetters>[]) => ExtractGetterTypes<TGetters>; useMutations: (map?: KnownKeys<TMutations>[]) => ExtractTypes<TMutations, Function>; useActions: (map?: KnownKeys<TActions>[]) => ExtractTypes<TActions, Function>; } { let store: Store<any> | Nullish = undefined; if (arguments.length === 1) { namespace = storeOrNamespace as string; } else { store = storeOrNamespace as Store<any>; if (!namespace) { throw new Error('Namespace is missing to provide namespaced helpers') } } return { useState: (map?: KnownKeys<TState>[]) => useState(store, namespace as string, map), useGetters: (map?: KnownKeys<TGetters>[]) => useGetters(store, namespace as string, map), useMutations: (map?: KnownKeys<TMutations>[]) => useMutations(store, namespace as string, map), useActions: (map?: KnownKeys<TActions>[]) => useActions(store, namespace as string, map), } }