text: const tagsView = {
    state: {
      visitedViews: [],
      cachedViews: [],
    },
    mutations: {
      ADD_VISITED_VIEWS: (state, view) => {
        if (state.visitedViews.some((v) => v.path === view.path)) return;
        state.visitedViews.push({
          name: view.name,
          path: view.path,
          title: view.meta.title || 'no-name',
        });
        if (!view.meta.noCache) {
          state.cachedViews.push(view.name);
        }
      },
      DEL_VISITED_VIEWS: (state, view) => {
        for (const [i, v] of state.visitedViews.entries()) {
          if (v.path === view.path) {
            state.visitedViews.splice(i, 1);
            break;
          }
        }
        for (const i of state.cachedViews) {
          if (i === view.name) {
            const index = state.cachedViews.indexOf(i);
            state.cachedViews.splice(index, 1);
            break;
          }
        }
      },
      DEL_OTHERS_VIEWS: (state, view) => {
        for (const [i, v] of state.visitedViews.entries()) {
          if (v.path === view.path) {
            state.visitedViews = state.visitedViews.slice(i, i + 1);
            break;
          }
        }
        for (const i of state.cachedViews) {
          if (i === view.name) {
            const index = state.cachedViews.indexOf(i);
            state.cachedViews = state.cachedViews.slice(index, i + 1);
            break;
          }
        }
      },
      DEL_ALL_VIEWS: (state) => {
        state.visitedViews = [];
        state.cachedViews = [];
      },
    },
    actions: {
      addVisitedViews({commit}, view) {
        commit('ADD_VISITED_VIEWS', view);
      },
      delVisitedViews({commit, state}, view) {
        return new Promise((resolve) => {
          commit('DEL_VISITED_VIEWS', view);
          resolve([...state.visitedViews]);
        });
      },
      delOthersViews({commit, state}, view) {
        return new Promise((resolve) => {
          commit('DEL_OTHERS_VIEWS', view);
          resolve([...state.visitedViews]);
        });
      },
      delAllViews({commit, state}) {
        return new Promise((resolve) => {
          commit('DEL_ALL_VIEWS');
          resolve([...state.visitedViews]);
        });
      },
    },
  };
  
  export default tagsView;
  