mirror of
				https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
				synced 2025-10-31 18:15:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* alt+left/right moves text in prompt */
 | |
| 
 | |
| function keyupEditOrder(event) {
 | |
|     if (!opts.keyedit_move) return;
 | |
| 
 | |
|     let target = event.originalTarget || event.composedPath()[0];
 | |
|     if (!target.matches("*:is([id*='_toprow'] [id*='_prompt'], .prompt) textarea")) return;
 | |
|     if (!event.altKey) return;
 | |
| 
 | |
|     let isLeft = event.key == "ArrowLeft";
 | |
|     let isRight = event.key == "ArrowRight";
 | |
|     if (!isLeft && !isRight) return;
 | |
|     event.preventDefault();
 | |
| 
 | |
|     let selectionStart = target.selectionStart;
 | |
|     let selectionEnd = target.selectionEnd;
 | |
|     let text = target.value;
 | |
|     let items = text.split(",");
 | |
|     let indexStart = (text.slice(0, selectionStart).match(/,/g) || []).length;
 | |
|     let indexEnd = (text.slice(0, selectionEnd).match(/,/g) || []).length;
 | |
|     let range = indexEnd - indexStart + 1;
 | |
| 
 | |
|     if (isLeft && indexStart > 0) {
 | |
|         items.splice(indexStart - 1, 0, ...items.splice(indexStart, range));
 | |
|         target.value = items.join();
 | |
|         target.selectionStart = items.slice(0, indexStart - 1).join().length + (indexStart == 1 ? 0 : 1);
 | |
|         target.selectionEnd = items.slice(0, indexEnd).join().length;
 | |
|     } else if (isRight && indexEnd < items.length - 1) {
 | |
|         items.splice(indexStart + 1, 0, ...items.splice(indexStart, range));
 | |
|         target.value = items.join();
 | |
|         target.selectionStart = items.slice(0, indexStart + 1).join().length + 1;
 | |
|         target.selectionEnd = items.slice(0, indexEnd + 2).join().length;
 | |
|     }
 | |
| 
 | |
|     event.preventDefault();
 | |
|     updateInput(target);
 | |
| }
 | |
| 
 | |
| addEventListener('keydown', (event) => {
 | |
|     keyupEditOrder(event);
 | |
| });
 | 
