text: import { uniqueId } from 'lodash'
  // 设置文件
  import setting from '@/setting.js'
  
  /**
   * 给菜单数据补充上 path 字段
   * https://github.com/d2-projects/d2-admin/issues/209
   * @param {Array} menu 原始的菜单数据
   */
  function supplementMenuPath (menu) {
    return menu.map(e => ({
      ...e,
      path: e.path || uniqueId('d2-menu-empty-'),
      ...e.children ? {
        children: supplementMenuPath(e.children)
      } : {}
    }))
  }
  
  export default {
    namespaced: true,
    inject:['reload'],
    state: {
      // 顶栏菜单
      header: [],
      // 侧栏菜单
      aside: [],
      // 侧边栏收缩
      asideCollapse: setting.menu.asideCollapse
    },
    actions: {
      /**
       * 设置侧边栏展开或者收缩
       * @param {Object} context
       * @param {Boolean} collapse is collapse
       */
      asideCollapseSet ({ state, dispatch }, collapse) {
        return new Promise(async resolve => {
          // store 赋值
          state.asideCollapse = collapse
          // 持久化
          await dispatch('d2admin/db/set', {
            dbName: 'sys',
            path: 'menu.asideCollapse',
            value: state.asideCollapse,
            user: true
          }, { root: true })
          // end
          resolve()
        })
      },
      /**
       * 切换侧边栏展开和收缩
       * @param {Object} context
       */
      asideCollapseToggle ({ state, dispatch }) {
        return new Promise(async resolve => {
          // store 赋值
          state.asideCollapse = !state.asideCollapse
          // 持久化
          await dispatch('d2admin/db/set', {
            dbName: 'sys',
            path: 'menu.asideCollapse',
            value: state.asideCollapse,
            user: true
          }, { root: true })
          // end
          resolve()
        })
      },
      /**
       * 从持久化数据读取侧边栏展开或者收缩
       * @param {Object} context
       */
      asideCollapseLoad ({ state, dispatch }) {
        return new Promise(async resolve => {
          // store 赋值
          state.asideCollapse = await dispatch('d2admin/db/get', {
            dbName: 'sys',
            path: 'menu.asideCollapse',
            defaultValue: setting.menu.asideCollapse,
            user: true
          }, { root: true })
          // end
          resolve()
        })
      }
    },
    mutations: {
      /**
       * @description 设置顶栏菜单
       * @param {Object} state state
       * @param {Array} menu menu setting
       */
      headerSet (state, menu) {
        // store 赋值
        state.header = supplementMenuPath(menu)
      },
      /**
       * @description 设置侧边栏菜单
       * @param {Object} state state
       * @param {Array} menu menu setting
       */
      asideSet (state, menu) {
        // store 赋值
        state.aside = supplementMenuPath(menu)
      }
    }
  }
  