@hanxx/vue-hooks
Version:
⚡️ Awesome Vue Hooks
43 lines (42 loc) • 1.6 kB
JavaScript
var _a;
import { computed, getCurrentInstance } from '@vue/composition-api';
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex';
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.
var vm = getCurrentInstance();
return computed(function () { return mappedFn.call(vm); });
}
function handleMethods(mappedFn) {
var vm = getCurrentInstance();
return mappedFn.bind(vm);
}
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;
});
}