@@ -10,6 +10,7 @@ import Preview from './components/Preview'
1010export default function App ( ) {
1111 const [ content , setContent ] = createSignal ( '' )
1212 const [ editorWidth , setEditorWidth ] = createSignal ( 50 )
13+ const [ viewMode , setViewMode ] = createSignal ( 'rendered' ) // 'source', 'split', 'rendered'
1314
1415 const fileSystem = useFileSystem ( )
1516 const { parse } = useMarkdown ( )
@@ -19,11 +20,20 @@ export default function App() {
1920 const file = fileSystem . currentFile ( )
2021 const dirty = fileSystem . isDirty ( )
2122 const title = file
22- ? `${ file } ${ dirty ? ' *' : '' } - Markdown Editor `
23- : 'Markdown Editor '
23+ ? `${ file } ${ dirty ? ' *' : '' } - mkdedit `
24+ : 'mkdedit '
2425 document . title = title
2526 } )
2627
28+ // Switch to split view if no file is loaded after startup
29+ onMount ( ( ) => {
30+ setTimeout ( ( ) => {
31+ if ( ! fileSystem . currentFile ( ) && ! content ( ) ) {
32+ setViewMode ( 'split' )
33+ }
34+ } , 1200 ) // Wait for CLI/Open With file to load
35+ } )
36+
2737 // Keyboard shortcut: Ctrl+S to save
2838 onMount ( ( ) => {
2939 const handleKeyDown = ( e ) => {
@@ -41,6 +51,7 @@ export default function App() {
4151 const { path, content : fileContent } = event . payload
4252 fileSystem . setOpenFile ( path )
4353 setContent ( fileContent )
54+ setViewMode ( 'rendered' )
4455 } )
4556 onCleanup ( ( ) => unlisten ( ) )
4657 }
@@ -55,12 +66,14 @@ export default function App() {
5566 function handleNew ( ) {
5667 setContent ( '' )
5768 fileSystem . newFile ( )
69+ setViewMode ( 'split' )
5870 }
5971
6072 async function handleOpen ( ) {
6173 const fileContent = await fileSystem . openFile ( )
6274 if ( fileContent !== null ) {
6375 setContent ( fileContent )
76+ setViewMode ( 'rendered' )
6477 }
6578 }
6679
@@ -78,22 +91,32 @@ export default function App() {
7891 currentFile = { fileSystem . currentFile }
7992 isDirty = { fileSystem . isDirty }
8093 supportsFileSystemAccess = { fileSystem . supportsFileSystemAccess }
94+ viewMode = { viewMode }
95+ onViewModeChange = { setViewMode }
8196 onNew = { handleNew }
8297 onOpen = { handleOpen }
8398 onSave = { handleSave }
8499 onSaveAs = { handleSaveAs }
85100 />
86101 < main class = "editor-container" >
87- < Editor
88- content = { content }
89- onInput = { handleContentChange }
90- width = { editorWidth }
91- />
92- < Splitter onResize = { setEditorWidth } />
93- < Preview
94- html = { ( ) => parse ( content ( ) ) }
95- width = { ( ) => 100 - editorWidth ( ) }
96- />
102+ { ( viewMode ( ) === 'source' || viewMode ( ) === 'split' ) && (
103+ < Editor
104+ content = { content }
105+ onInput = { handleContentChange }
106+ width = { ( ) => viewMode ( ) === 'split' ? editorWidth ( ) : 100 }
107+ viewMode = { viewMode }
108+ />
109+ ) }
110+ { viewMode ( ) === 'split' && (
111+ < Splitter onResize = { setEditorWidth } />
112+ ) }
113+ { ( viewMode ( ) === 'rendered' || viewMode ( ) === 'split' ) && (
114+ < Preview
115+ html = { ( ) => parse ( content ( ) ) }
116+ width = { ( ) => viewMode ( ) === 'split' ? 100 - editorWidth ( ) : 100 }
117+ viewMode = { viewMode }
118+ />
119+ ) }
97120 </ main >
98121 </ div >
99122 )
0 commit comments