1
1
import { useRef , useEffect } from 'react' ;
2
- import { type Monaco , type monacoTypes } from '@grafana/ui' ;
2
+ import { type Monaco , type monacoTypes , type MonacoEditor } from '@grafana/ui' ;
3
3
import { languages } from 'monaco-editor' ;
4
4
import completionData from './completions.json' ;
5
5
@@ -9,10 +9,9 @@ interface CompletionState {
9
9
fields ?: string [ ] | string ;
10
10
}
11
11
12
-
13
12
// Supports JSON only right now
14
13
class CompletionProvider implements monacoTypes . languages . CompletionItemProvider {
15
- constructor ( private readonly editor : monacoTypes . editor . IStandaloneCodeEditor ) { }
14
+ constructor ( private readonly editor : MonacoEditor ) { }
16
15
17
16
provideCompletionItems (
18
17
model : monacoTypes . editor . ITextModel ,
@@ -71,36 +70,34 @@ export function useAutocomplete() {
71
70
} ;
72
71
} , [ ] ) ;
73
72
74
- return ( editor : monacoTypes . editor . IStandaloneCodeEditor , monaco : Monaco ) => {
73
+ return ( editor : MonacoEditor , monaco : Monaco ) => {
75
74
const provider = new CompletionProvider ( editor ) ;
76
75
const { dispose } = monaco . languages . registerCompletionItemProvider ( 'json' , provider ) ;
77
76
autocompleteDisposeFun . current = dispose ;
78
77
} ;
79
78
}
80
79
81
-
82
-
83
-
84
80
function createInsertText ( { name, fields } : CompletionState ) {
85
81
if ( fields ) {
86
82
if ( Array . isArray ( fields ) ) {
87
- let insertText = `"\\${ name } ": {\n\t`
83
+ let insertText = `"\\${ name } ": {\n\t` ;
88
84
for ( let i = 0 ; i < fields . length ; i ++ ) {
89
- const field = fields [ i ]
90
- insertText += `"${ field } ": \${${ i + 1 } :${ field } }`
85
+ const field = fields [ i ] ;
86
+ insertText += `"${ field } ": \${${ i + 1 } :${ field } }` ;
91
87
92
88
if ( i == 0 ) {
93
- insertText += '$0'
89
+ insertText += '$0' ;
94
90
}
95
91
96
92
if ( i != fields . length - 1 ) {
97
- insertText += ',\n\t'
93
+ insertText += ',\n\t' ;
98
94
}
99
95
}
96
+ insertText += '\n}' ;
100
97
101
- return insertText
98
+ return insertText ;
102
99
}
103
- return `"\\${ name } ": \${1:${ fields } }`
100
+ return `"\\${ name } ": \${1:${ fields } }` ;
104
101
}
105
- return `"\\${ name } ": {\n\t$0\n}`
106
- }
102
+ return `"\\${ name } ": {\n\t$0\n}` ;
103
+ }
0 commit comments