schangxiang@126.com
2025-05-07 cace264ad9d86a7831099810b079da1141957add
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { provide, inject, ref, isRef, Ref, reactive, toRaw } from 'vue'
import mitt from 'mitt'
import type { Store, StoreKey } from '../type/index'
import GraphEvent from './GraphEvent'
 
const selected = ref(null)
const lf = ref()
const theme = ref({})
const lastLines = ref<any[]>([])
/**
 * Name,value
 */
const flowMap: Map<string, any> = new Map()
/**
 * id,value
 */
const flowNodeMap: Map<string, any> = new Map()
const xmlData = ref(null)
/**
 * 保存时配置
 */
const flowBaseConfig = ref<{
  type?: number
  version?: number
  content?: string
}>({})
const edgeMap = new Map()
const nodeMap = new Map()
const flowConfig: {
  type?: number
  version?: number
} = {}
export const baseStore: any = {
  lf,
  theme,
  xmlData,
  flowNodeMap,
  edgeMap,
  flowMap,
  selected,
  lastLines,
  flowBaseConfig,
  nodeMap,
  flowConfig,
}
const graphEvent = new GraphEvent(baseStore)
const store = {
  ...baseStore,
  graphEvent,
} as Store
 
export const resetStore = () => {
  flowMap.clear()
  flowNodeMap.clear()
  flowBaseConfig.value = {}
  xmlData.value = null
  lastLines.value = []
  edgeMap.clear()
  nodeMap.clear()
}
export const createStore = () => {
  return store
}
 
export const injectStore = (key?: StoreKey) => {
  if (key) {
    return store[key]
  }
  return store as Store
}
 
export const emitter = mitt()