38 lines
903 B
JavaScript
38 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);
|
|
}
|
|
},
|
|
});
|
|
},
|
|
};
|