| 10 | }): (key: K) => WritableComputedRef<V>; |
| 11 | |
| 12 | export function createComputedDict<K = string, V = any>(params: { |
| 13 | get: (key: K) => V; |
| 14 | set?: (key: K, value: V) => void; |
| 15 | }): unknown { |
| 16 | const dict = new Map<K, ComputedRef<V> | WritableComputedRef<V>>(); |
| 17 | |
| 18 | return (key: K) => { |
| 19 | let result: ComputedRef<V> | WritableComputedRef<V> | undefined = |
| 20 | dict.get(key); |
| 21 | |
| 22 | if (result == null) { |
| 23 | if ('set' in params) { |
| 24 | result = computed({ |
| 25 | get: () => params.get(key), |
| 26 | set: (value) => params.set?.(key, value), |
| 27 | }); |
| 28 | } else { |
| 29 | result = computed(() => params.get(key)); |
| 30 | } |
| 31 | |
| 32 | dict.set(key, result); |
| 33 | } |
| 34 | |
| 35 | return result; |
| 36 | }; |
| 37 | } |