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