import { defineStore } from 'pinia'; import { store } from '@/store'; import { IParam } from '@/core'; interface ViewActionState { appViews: any[]; viewSplit: IParam; } const useViewActionStore = defineStore({ id: 'viewAction', state: (): ViewActionState => ({ appViews: [], viewSplit: {}, }), getters: { getStateByPath() { return (path: string): boolean => { if (path) { const appView = this.appViews.find((appView: any) => Object.is(appView.path, path) ); if (appView) { return appView.viewDataSate; } } return false; }; }, getStateByTag() { return (tag: string): boolean => { if (tag) { const appView = this.appViews.find((appView: any) => Object.is(appView.tag, tag) ); if (appView) { return appView.viewDataSate; } } return false; }; }, getViewSplit() { return (tag: string): number | undefined => { if (this.viewSplit.hasOwnProperty(tag)) { return this.viewSplit[tag]; } return undefined; }; }, }, actions: { setViewSplit(tag: string, split: number) { this.viewSplit[tag] = split; }, addAppViews(path: string, tag: string) { const index = this.appViews.findIndex((appView: any) => Object.is(appView.tag, tag) ); if (index) { this.appViews.splice(index, 1, { path, tag }); } else { this.appViews.push({ path, tag }); } }, setViewDataState(tag: string, viewDataSate: boolean) { if (tag) { const appView = this.appViews.find((appView: any) => Object.is(appView.tag, tag) ); if (appView) { Object.assign(appView, { viewDataSate }); } } }, removeAppViewsByTag(tag: string) { if (tag) { const index = this.appViews.findIndex((appView: any) => Object.is(appView.tag, tag)); if (index > -1) { this.appViews.splice(index, 1); } } }, removeAppViewsByPath(path: string) { if (path) { const index = this.appViews.findIndex((appView: any) => Object.is(appView.path, path)); if (index > -1) { this.appViews.splice(index, 1); } } }, }, }); export function useViewActionStoreWithOut() { return useViewActionStore(store); }