|  | 
| 163 | 163 | 					:is-sidebar-shown="isSidebarShown" | 
| 164 | 164 | 					:loaded.sync="currentFile.loaded" | 
| 165 | 165 | 					class="viewer__file viewer__file--active" | 
|  | 166 | +					@update:editing="toggleEditor" | 
| 166 | 167 | 					@error="currentFailed" /> | 
| 167 | 168 | 				<Error v-else | 
| 168 | 169 | 					:name="currentFile.basename" /> | 
| @@ -208,6 +209,7 @@ import canDownload from '../utils/canDownload.js' | 
| 208 | 209 | import Error from '../components/Error.vue' | 
| 209 | 210 | import File from '../models/file.js' | 
| 210 | 211 | import getFileInfo from '../services/FileInfo.ts' | 
|  | 212 | +import fetchNode from '../services/FetchFile.ts' | 
| 211 | 213 | import getFileList from '../services/FileList.ts' | 
| 212 | 214 | import legacyFilesActionHandler from '../services/LegacyFilesActionHandler.js' | 
| 213 | 215 | import logger from '../services/logger.js' | 
| @@ -563,6 +565,7 @@ export default defineComponent({ | 
| 563 | 565 | 		subscribe('files:node:updated', this.handleFileUpdated) | 
| 564 | 566 | 		subscribe('viewer:trapElements:changed', this.handleTrapElementsChange) | 
| 565 | 567 | 		subscribe('editor:toggle', this.toggleEditor) | 
|  | 568 | +		subscribe('editor:file:created', this.handleNewFile) | 
| 566 | 569 | 		window.addEventListener('keydown', this.keyboardDeleteFile) | 
| 567 | 570 | 		window.addEventListener('keydown', this.keyboardDownloadFile) | 
| 568 | 571 | 		window.addEventListener('keydown', this.keyboardEditFile) | 
| @@ -664,6 +667,22 @@ export default defineComponent({ | 
| 664 | 667 | 				} | 
| 665 | 668 | 			} | 
| 666 | 669 | 		}, | 
|  | 670 | +		async handleNewFile(source) { | 
|  | 671 | +			let path | 
|  | 672 | +			try { | 
|  | 673 | +				path = extractFilePathFromSource(source) | 
|  | 674 | +				this.openFile(path) | 
|  | 675 | +
 | 
|  | 676 | +			} catch (e) { | 
|  | 677 | +				logger.error('Could not extract file path from source', { source, e }) | 
|  | 678 | +			} | 
|  | 679 | +			try { | 
|  | 680 | +				const node = await fetchNode('/' + path) | 
|  | 681 | +				emit('files:node:created', node) | 
|  | 682 | +			} catch (e) { | 
|  | 683 | +				logger.error('Could not fetch new file', { path, e }) | 
|  | 684 | +			} | 
|  | 685 | +		}, | 
| 667 | 686 | 
 | 
| 668 | 687 | 		/** | 
| 669 | 688 | 		 * Open the view and display the clicked file from a known file info object | 
|  | 
0 commit comments