@u3u/vue-hooks
Version:
⚡️ Awesome Vue Hooks
42 lines (41 loc) • 1.58 kB
JavaScript
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;
});
}