66 NotebookCellKind ,
77 NotebookEdit ,
88 NotebookRange ,
9- NotebookCell
9+ NotebookCell ,
10+ NotebookEditorRevealType
1011} from 'vscode' ;
1112import z from 'zod' ;
1213
@@ -25,7 +26,8 @@ import {
2526 DeepnoteDateInputMetadataSchema ,
2627 DeepnoteDateRangeInputMetadataSchema ,
2728 DeepnoteFileInputMetadataSchema ,
28- DeepnoteButtonMetadataSchema
29+ DeepnoteButtonMetadataSchema ,
30+ DeepnoteSqlMetadata
2931} from './deepnoteSchemas' ;
3032
3133type InputBlockType =
@@ -88,12 +90,17 @@ export function getNextDeepnoteVariableName(cells: NotebookCell[], prefix: 'df'
8890 acc . push ( contentValue ) ;
8991 }
9092
91- const parsedMetadataValue = z . string ( ) . safeParse ( cell . metadata . __deepnotePocket ?. variableName ) ;
92-
93+ const parsedMetadataValue = z . string ( ) . safeParse ( cell . metadata [ 'deepnote_variable_name' ] ) ;
9394 if ( parsedMetadataValue . success ) {
9495 acc . push ( parsedMetadataValue . data ) ;
9596 }
9697
98+ const parsedPocketMetadataValue = z . string ( ) . safeParse ( cell . metadata . __deepnotePocket ?. deepnote_variable_name ) ;
99+
100+ if ( parsedPocketMetadataValue . success ) {
101+ acc . push ( parsedPocketMetadataValue . data ) ;
102+ }
103+
97104 return acc ;
98105 } , [ ] ) ;
99106
@@ -175,6 +182,14 @@ export class DeepnoteNotebookCommandListener implements IExtensionSyncActivation
175182 }
176183 const document = editor . notebook ;
177184 const selection = editor . selection ;
185+ const cells = editor . notebook . getCells ( ) ;
186+ const deepnoteVariableName = getNextDeepnoteVariableName ( cells , 'df' ) ;
187+
188+ const defaultMetadata : DeepnoteSqlMetadata = {
189+ deepnote_variable_name : deepnoteVariableName ,
190+ deepnote_return_variable_type : 'dataframe' ,
191+ sql_integration_id : ''
192+ } ;
178193
179194 // Determine the index where to insert the new cell (below current selection or at the end)
180195 const insertIndex = selection ? selection . end : document . cellCount ;
@@ -185,14 +200,22 @@ export class DeepnoteNotebookCommandListener implements IExtensionSyncActivation
185200 const newCell = new NotebookCellData ( NotebookCellKind . Code , '' , 'sql' ) ;
186201 newCell . metadata = {
187202 __deepnotePocket : {
188- type : 'sql'
189- }
203+ type : 'sql' ,
204+ ...defaultMetadata
205+ } ,
206+ ...defaultMetadata
190207 } ;
191208 const nbEdit = NotebookEdit . insertCells ( insertIndex , [ newCell ] ) ;
192209 edit . set ( document . uri , [ nbEdit ] ) ;
193210 } ) . then (
194211 ( ) => {
195- editor . selection = new NotebookRange ( insertIndex , insertIndex + 1 ) ;
212+ const notebookRange = new NotebookRange ( insertIndex , insertIndex + 1 ) ;
213+ editor . revealRange ( notebookRange , NotebookEditorRevealType . Default ) ;
214+ editor . selection = notebookRange ;
215+ // Enter edit mode on the new cell
216+ commands
217+ . executeCommand ( 'notebook.cell.edit' )
218+ . then ( undefined , ( error ) => logger . error ( 'Error entering edit mode' , error ) ) ;
196219 } ,
197220 ( error ) => {
198221 logger . error ( 'Error inserting SQL block' , error ) ;
@@ -231,7 +254,13 @@ export class DeepnoteNotebookCommandListener implements IExtensionSyncActivation
231254 edit . set ( document . uri , [ nbEdit ] ) ;
232255 } ) . then (
233256 ( ) => {
234- editor . selection = new NotebookRange ( insertIndex , insertIndex + 1 ) ;
257+ const notebookRange = new NotebookRange ( insertIndex , insertIndex + 1 ) ;
258+ editor . revealRange ( notebookRange , NotebookEditorRevealType . Default ) ;
259+ editor . selection = notebookRange ;
260+ // Enter edit mode on the new cell
261+ commands
262+ . executeCommand ( 'notebook.cell.edit' )
263+ . then ( undefined , ( error ) => logger . error ( 'Error entering edit mode' , error ) ) ;
235264 } ,
236265 ( error ) => {
237266 logger . error ( 'Error inserting big number chart block' , error ) ;
@@ -273,7 +302,13 @@ export class DeepnoteNotebookCommandListener implements IExtensionSyncActivation
273302 edit . set ( document . uri , [ nbEdit ] ) ;
274303 } ) . then (
275304 ( ) => {
276- editor . selection = new NotebookRange ( insertIndex , insertIndex + 1 ) ;
305+ const notebookRange = new NotebookRange ( insertIndex , insertIndex + 1 ) ;
306+ editor . revealRange ( notebookRange , NotebookEditorRevealType . Default ) ;
307+ editor . selection = notebookRange ;
308+ // Enter edit mode on the new cell
309+ commands
310+ . executeCommand ( 'notebook.cell.edit' )
311+ . then ( undefined , ( error ) => logger . error ( 'Error entering edit mode' , error ) ) ;
277312 } ,
278313 ( error ) => {
279314 logger . error ( 'Error inserting input block' , error ) ;
0 commit comments