import { defineStore } from 'pinia'

/**
 * 有关全局组件的状态
 */
export const useComStore = defineStore({
    id: 'com',
    state: () => {
        return {
            // 当前次级路由视图获取函数 
            currViewFunction: null,
            // 所有需要在窗口大小变动时更改的组件 --- 形如：{name: fn}
            resizeList: {}      
        }
    },
    actions: {
        // 获取当前路由对应的视图组件 
        currView: function() {
            if(this.currViewFunction) {
                return this.currViewFunction();
            }
            return null;
        },
        // 注册一个回调函数 
        pushResizeCallback: function (name, fn) {
            this.resizeList[name] = fn;
        },
        // 触发一次 
        winResize: function () {
            for (let name in this.resizeList) {
                this.resizeList[name]();
            }
        }
    }
})
