22 lines
		
	
	
		
			809 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			809 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { getCurrentInstance, inject, unref } from 'vue';
 | |
| import { computedEager } from '@vueuse/core';
 | |
| import { useGetDerivedNamespace } from '../use-namespace/index.mjs';
 | |
| 
 | |
| const defaultIdInjection = {
 | |
|   prefix: Math.floor(Math.random() * 1e4),
 | |
|   current: 0
 | |
| };
 | |
| const ID_INJECTION_KEY = Symbol("elIdInjection");
 | |
| const useIdInjection = () => {
 | |
|   return getCurrentInstance() ? inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection;
 | |
| };
 | |
| const useId = (deterministicId) => {
 | |
|   const idInjection = useIdInjection();
 | |
|   const namespace = useGetDerivedNamespace();
 | |
|   const idRef = computedEager(() => unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`);
 | |
|   return idRef;
 | |
| };
 | |
| 
 | |
| export { ID_INJECTION_KEY, useId, useIdInjection };
 | |
| //# sourceMappingURL=index.mjs.map
 |