Welcome to mirror list, hosted at ThFree Co, Russian Federation.

vuex.js « vue3compat « utils « lib « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ff94ff3d04a1c9db7a591e977c52c4be3d196575 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);
        }
      },
    });
  },
};