UNPKG

@u3u/vue-hooks

Version:
42 lines (41 loc) 1.58 kB
var _a; import { computed } from '@vue/composition-api'; import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'; import { getRuntimeVM } from '../../util/runtime'; export var Helper; (function (Helper) { Helper[Helper["State"] = 0] = "State"; Helper[Helper["Getters"] = 1] = "Getters"; Helper[Helper["Mutations"] = 2] = "Mutations"; Helper[Helper["Actions"] = 3] = "Actions"; })(Helper || (Helper = {})); function handleComputed(mappedFn) { // TypeError: Cannot read property '_modulesNamespaceMap' of undefined // You must get `runtimeVM` in real time in the calculation properties. return computed(function () { return mappedFn.call(getRuntimeVM()); }); } function handleMethods(mappedFn) { return mappedFn.bind(getRuntimeVM()); } var helpers = (_a = {}, _a[Helper.State] = { fn: mapState, handler: handleComputed }, _a[Helper.Getters] = { fn: mapGetters, handler: handleComputed }, _a[Helper.Mutations] = { fn: mapMutations, handler: handleMethods }, _a[Helper.Actions] = { fn: mapActions, handler: handleMethods }, _a); export default function createVuexHelper(h) { var helper = helpers[h]; return (function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } // @ts-ignore var mapper = helper.fn.apply(helper, args); var dictionary = {}; Object.keys(mapper).forEach(function (key) { dictionary[key] = helper.handler(mapper[key]); }); return dictionary; }); }