25 lines
		
	
	
		
			885 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			885 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Utilities
 | |
| import { computed, warn } from 'vue';
 | |
| import { IN_BROWSER } from "../util/index.mjs"; // Types
 | |
| export function useTeleport(target) {
 | |
|   const teleportTarget = computed(() => {
 | |
|     const _target = target.value;
 | |
|     if (_target === true || !IN_BROWSER) return undefined;
 | |
|     const targetElement = _target === false ? document.body : typeof _target === 'string' ? document.querySelector(_target) : _target;
 | |
|     if (targetElement == null) {
 | |
|       warn(`Unable to locate target ${_target}`);
 | |
|       return undefined;
 | |
|     }
 | |
|     let container = targetElement.querySelector(':scope > .v-overlay-container');
 | |
|     if (!container) {
 | |
|       container = document.createElement('div');
 | |
|       container.className = 'v-overlay-container';
 | |
|       targetElement.appendChild(container);
 | |
|     }
 | |
|     return container;
 | |
|   });
 | |
|   return {
 | |
|     teleportTarget
 | |
|   };
 | |
| }
 | |
| //# sourceMappingURL=teleport.mjs.map
 |