Skip to content

Commit 936031c

Browse files
committed
chore: web 项目修改
1 parent ea3a537 commit 936031c

File tree

7 files changed

+117
-55
lines changed

7 files changed

+117
-55
lines changed

packages/vscode/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-protobuf-to-typescript",
33
"displayName": "Protobuf To Typescript",
44
"description": "Convert protobuf struct to typescript type",
5-
"version": "0.0.8",
5+
"version": "0.0.10",
66
"private": true,
77
"icon": "icon.png",
88
"publisher": "yishi",

packages/vscode/src/extension.ts

+20-5
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,27 @@ function transformFromClipboard() {
6363
});
6464
}
6565

66-
function transformOnPanel (ctx: ExtensionContext) {
66+
function transformOnPanel(ctx: ExtensionContext) {
6767
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
7287
);
7388

7489
panel.webview.html = getWebviewContent(ctx);

packages/vscode/webview/index.html

+61-48
Large diffs are not rendered by default.

packages/web/app/pages/ast.svelte

+7
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ message MyResponse {
4040
};
4141
onProtobuf();
4242
});
43+
44+
window.addEventListener('message', event => {
45+
const message = event.data;
46+
if (message.command === 'paste') {
47+
src += message.text;
48+
}
49+
});
4350
</script>
4451

4552
<div id="container">

packages/web/app/pages/index.svelte

+8
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ message MyResponse {
4747
onProtobuf();
4848
new ClipboardJS('.button');
4949
});
50+
51+
52+
window.addEventListener('message', event => {
53+
const message = event.data;
54+
if (message.command === 'paste') {
55+
src += message.text;
56+
}
57+
});
5058
</script>
5159

5260
<div id="container">

packages/web/app/pages/mock.svelte

+7
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ message HelloReply {
6969
onProtobuf();
7070
new ClipboardJS('.button');
7171
});
72+
73+
window.addEventListener('message', event => {
74+
const message = event.data;
75+
if (message.command === 'paste') {
76+
src += message.text;
77+
}
78+
});
7279
</script>
7380

7481
<div id="container">

packages/web/vite.vscode.config.js

+13-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,19 @@ export default defineConfig({
1515
inject: {
1616
data: {
1717
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+
`,
1931
},
2032
},
2133
}),

0 commit comments

Comments
 (0)