29 lines
		
	
	
		
			745 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			745 B
		
	
	
	
		
			TypeScript
		
	
	
| import type { Ref } from 'vue';
 | |
| import { computed } from 'vue';
 | |
| import type { RawValueType, FlattenOptionsType, Key } from '../interface/generator';
 | |
| 
 | |
| export default function useCacheOptions<
 | |
|   OptionType extends {
 | |
|     value?: RawValueType;
 | |
|     label?: any;
 | |
|     key?: Key;
 | |
|     disabled?: boolean;
 | |
|   },
 | |
| >(options: Ref) {
 | |
|   const optionMap = computed(() => {
 | |
|     const map: Map<RawValueType, FlattenOptionsType<OptionType>[number]> = new Map();
 | |
|     options.value.forEach((item: any) => {
 | |
|       const {
 | |
|         data: { value },
 | |
|       } = item;
 | |
|       map.set(value, item);
 | |
|     });
 | |
|     return map;
 | |
|   });
 | |
| 
 | |
|   const getValueOption = (vals: RawValueType[]) =>
 | |
|     vals.map(value => optionMap.value.get(value)).filter(Boolean);
 | |
| 
 | |
|   return getValueOption;
 | |
| }
 |