@@ -3,40 +3,41 @@ import { ref, Ref, markRaw } from 'vue'
3
3
type MapValue < K , T > = Iterable < readonly [ K , T ] >
4
4
5
5
type Actions < K , T > = {
6
- set : ( key : K , value : T ) => void
7
- get : ( key : K ) => T | undefined
8
- remove : ( key : K ) => void
9
- has : ( key : K ) => boolean
10
- clear : ( ) => void
11
- setAll : ( newMap : MapValue < K , T > ) => void
12
- reset : ( ) => void
6
+ set : ( key : K , value : T ) => void
7
+ get : ( key : K ) => T | undefined
8
+ remove : ( key : K ) => void
9
+ has : ( key : K ) => boolean
10
+ clear : ( ) => void
11
+ setAll : ( newMap : MapValue < K , T > ) => void
12
+ reset : ( ) => void
13
13
}
14
14
15
- function useMap < K , T > (
16
- initialValue ?: MapValue < K , T >
17
- ) : [ Ref < Map < K , T > > , Actions < K , T > ] {
18
- const initialMap = initialValue ? new Map ( initialValue ) : new Map ( )
19
- const state = ref ( initialMap ) as Ref < Map < K , T > >
15
+ function useMap < K , T > ( initialValue ?: MapValue < K , T > ) : [ Ref < Map < K , T > > , Actions < K , T > ] {
16
+ const getInitValue = ( ) => {
17
+ return initialValue ? new Map ( initialValue ) : new Map ( )
18
+ }
20
19
21
- const actions : Actions < K , T > = {
22
- set : ( key , value ) => {
23
- state . value . set ( key , value )
24
- } ,
25
- get : ( key ) => {
26
- return state . value . get ( key )
27
- } ,
28
- remove : ( key ) => {
29
- state . value . delete ( key )
30
- } ,
31
- has : ( key ) => state . value . has ( key ) ,
32
- clear : ( ) => state . value . clear ( ) ,
33
- setAll : ( newMap ) => {
34
- state . value = new Map ( newMap )
35
- } ,
36
- reset : ( ) => ( state . value = initialMap ) ,
37
- }
20
+ const state = ref ( getInitValue ( ) ) as Ref < Map < K , T > >
38
21
39
- return [ state , markRaw ( actions ) ]
22
+ const actions : Actions < K , T > = {
23
+ set : ( key , value ) => {
24
+ state . value . set ( key , value )
25
+ } ,
26
+ get : key => {
27
+ return state . value . get ( key )
28
+ } ,
29
+ remove : key => {
30
+ state . value . delete ( key )
31
+ } ,
32
+ has : key => state . value . has ( key ) ,
33
+ clear : ( ) => state . value . clear ( ) ,
34
+ setAll : newMap => {
35
+ state . value = new Map ( newMap )
36
+ } ,
37
+ reset : ( ) => ( state . value = getInitValue ( ) ) ,
38
+ }
39
+
40
+ return [ state , markRaw ( actions ) ]
40
41
}
41
42
42
43
export default useMap
0 commit comments