File tree 7 files changed +117
-55
lines changed
7 files changed +117
-55
lines changed Original file line number Diff line number Diff line change 2
2
"name" : " vscode-protobuf-to-typescript" ,
3
3
"displayName" : " Protobuf To Typescript" ,
4
4
"description" : " Convert protobuf struct to typescript type" ,
5
- "version" : " 0.0.8 " ,
5
+ "version" : " 0.0.10 " ,
6
6
"private" : true ,
7
7
"icon" : " icon.png" ,
8
8
"publisher" : " yishi" ,
Original file line number Diff line number Diff line change @@ -63,12 +63,27 @@ function transformFromClipboard() {
63
63
} ) ;
64
64
}
65
65
66
- function transformOnPanel ( ctx : ExtensionContext ) {
66
+ function transformOnPanel ( ctx : ExtensionContext ) {
67
67
const panel = window . createWebviewPanel (
68
- 'protobuf to typescript' , // Identifies the type of the webview. Used internally
69
- 'protobuf to typescript' , // Title of the panel displayed to the user
70
- ViewColumn . One , // Editor column to show the new webview panel in.
71
- { enableScripts : true } // Webview options. More on these later.
68
+ 'protobuf to typescript' ,
69
+ 'protobuf to typescript' ,
70
+ ViewColumn . One ,
71
+ {
72
+ enableScripts : true ,
73
+ retainContextWhenHidden : true
74
+ }
75
+ ) ;
76
+
77
+ // Add message handler for paste events
78
+ panel . webview . onDidReceiveMessage (
79
+ async message => {
80
+ if ( message . command === 'requestPaste' ) {
81
+ const text = await getClipboardText ( ) ;
82
+ panel . webview . postMessage ( { command : 'paste' , text } ) ;
83
+ }
84
+ } ,
85
+ undefined ,
86
+ ctx . subscriptions
72
87
) ;
73
88
74
89
panel . webview . html = getWebviewContent ( ctx ) ;
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change @@ -40,6 +40,13 @@ message MyResponse {
40
40
};
41
41
onProtobuf ();
42
42
});
43
+
44
+ window .addEventListener (' message' , event => {
45
+ const message = event .data ;
46
+ if (message .command === ' paste' ) {
47
+ src += message .text ;
48
+ }
49
+ });
43
50
</script >
44
51
45
52
<div id =" container" >
Original file line number Diff line number Diff line change @@ -47,6 +47,14 @@ message MyResponse {
47
47
onProtobuf ();
48
48
new ClipboardJS (' .button' );
49
49
});
50
+
51
+
52
+ window .addEventListener (' message' , event => {
53
+ const message = event .data ;
54
+ if (message .command === ' paste' ) {
55
+ src += message .text ;
56
+ }
57
+ });
50
58
</script >
51
59
52
60
<div id =" container" >
Original file line number Diff line number Diff line change @@ -69,6 +69,13 @@ message HelloReply {
69
69
onProtobuf ();
70
70
new ClipboardJS (' .button' );
71
71
});
72
+
73
+ window .addEventListener (' message' , event => {
74
+ const message = event .data ;
75
+ if (message .command === ' paste' ) {
76
+ src += message .text ;
77
+ }
78
+ });
72
79
</script >
73
80
74
81
<div id =" container" >
Original file line number Diff line number Diff line change @@ -15,7 +15,19 @@ export default defineConfig({
15
15
inject : {
16
16
data : {
17
17
injectHead :
18
- "<script>document.documentElement.classList.add('dark');</script>" ,
18
+ `
19
+ <script>
20
+ document.documentElement.classList.add('dark');
21
+
22
+ const vscode = acquireVsCodeApi();
23
+
24
+ document.addEventListener('keydown', event => {
25
+ if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
26
+ vscode.postMessage({ command: 'requestPaste' });
27
+ }
28
+ });
29
+ </script>
30
+ ` ,
19
31
} ,
20
32
} ,
21
33
} ) ,
You can’t perform that action at this time.
0 commit comments