39 lines
903 B
JavaScript
39 lines
903 B
JavaScript
|
import Vue from 'vue';
|
||
|
import {
|
||
|
createStore,
|
||
|
mapState,
|
||
|
mapGetters,
|
||
|
mapActions,
|
||
|
mapMutations,
|
||
|
createNamespacedHelpers,
|
||
|
} from 'vuex-vue3';
|
||
|
|
||
|
export { mapState, mapGetters, mapActions, mapMutations, createNamespacedHelpers };
|
||
|
|
||
|
const installedStores = new WeakMap();
|
||
|
|
||
|
export default {
|
||
|
Store: class VuexCompatStore {
|
||
|
constructor(...args) {
|
||
|
// eslint-disable-next-line no-constructor-return
|
||
|
return createStore(...args);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
install() {
|
||
|
Vue.mixin({
|
||
|
beforeCreate() {
|
||
|
const { app } = this.$.appContext;
|
||
|
const { store } = this.$options;
|
||
|
if (store && !installedStores.get(app)?.has(store)) {
|
||
|
if (!installedStores.has(app)) {
|
||
|
installedStores.set(app, new WeakSet());
|
||
|
}
|
||
|
installedStores.get(app).add(store);
|
||
|
this.$.appContext.app.use(this.$options.store);
|
||
|
}
|
||
|
},
|
||
|
});
|
||
|
},
|
||
|
};
|