mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-03 18:53:17 -05:00 
			
		
		
		
	
		
			
	
	
		
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import { useClipboard } from "@vueuse/core";
							 | 
						||
| 
								 | 
							
								import { alert } from "./use-toast";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function useCopyList() {
							 | 
						||
| 
								 | 
							
								  const { copy, isSupported } = useClipboard();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function checkClipboard() {
							 | 
						||
| 
								 | 
							
								    if (!isSupported) {
							 | 
						||
| 
								 | 
							
								      alert.error("Your browser does not support clipboard");
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function copyPlain(list: string[]) {
							 | 
						||
| 
								 | 
							
								    if (!checkClipboard()) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const text = list.join("\n");
							 | 
						||
| 
								 | 
							
								    copyText(text, list.length);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function copyMarkdown(list: string[]) {
							 | 
						||
| 
								 | 
							
								    if (!checkClipboard()) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const text = list.map((item) => `- ${item}`).join("\n");
							 | 
						||
| 
								 | 
							
								    copyText(text, list.length);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function copyMarkdownCheckList(list: string[]) {
							 | 
						||
| 
								 | 
							
								    if (!checkClipboard()) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const text = list.map((item) => `- [ ] ${item}`).join("\n");
							 | 
						||
| 
								 | 
							
								    copyText(text, list.length);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function copyText(text: string, len: number) {
							 | 
						||
| 
								 | 
							
								    copy(text).then(() => {
							 | 
						||
| 
								 | 
							
								      alert.success(`Copied ${len} items to clipboard`);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    copyPlain,
							 | 
						||
| 
								 | 
							
								    copyMarkdown,
							 | 
						||
| 
								 | 
							
								    copyMarkdownCheckList,
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |