@@ -179,21 +179,39 @@ async function getWebviewContent(url: string, profile: Profile, options: Webview
179179 const vscode = acquireVsCodeApi();
180180 const pframe = document.createElement('iframe')
181181 // forward messages
182- window.addEventListener('message', event => {
183- if (event.origin.indexOf('vscode-webview:')>-1) {
184- // Else extension -> webview
185- pframe.contentWindow.postMessage(event.data, '${ serverUri } ');
186- } else {
187- // If iframe -> webview
188- if(event.data.action == 'keydown'){
189- // incoming keyboard event
190- if(navigator.platform.toLowerCase().indexOf('mac') === 0)
191- window.dispatchEvent(new KeyboardEvent('keydown', event.data));
192- }else{
193- // forward message to vscode extension
194- vscode.postMessage(event.data)
182+
183+ window.addEventListener('paste', function (evt) {
184+ pframe.contentWindow.postMessage({action:"paste", data:evt.clipboardData.getData('text/plain')},'${ serverUri } ');
185+ });
186+
187+ window.addEventListener('copy', function (evt) {
188+ pframe.contentWindow.postMessage({action:"copy"},'${ serverUri } ');
189+ });
190+
191+ window.addEventListener('message', event => {
192+ if (event.origin.indexOf('vscode-webview:')>-1) {
193+ // Else extension -> webview
194+ pframe.contentWindow.postMessage(event.data, '${ serverUri } ');
195+ } else {
196+ // If iframe -> webview
197+ if(event.data.action == 'keydown'){
198+ // incoming keyboard event
199+ if(navigator.platform.toLowerCase().indexOf('mac') === 0)
200+ window.dispatchEvent(new KeyboardEvent('keydown', event.data));
201+ }else if(event.data.action == 'copy'){
202+ // put data in clipboard
203+ if(navigator.platform.toLowerCase().indexOf('mac') === 0){
204+ navigator.permissions.query({name: "clipboard-write"}).then(result => {
205+ if (result.state == "granted" || result.state == "prompt") {
206+ navigator.clipboard.writeText(event.data.data)
207+ }
208+ });
209+ }
210+ }else{
211+ // forward message to vscode extension
212+ vscode.postMessage(event.data)
213+ }
195214 }
196- }
197215 });
198216
199217 pframe.setAttribute('sandbox', 'allow-popups allow-scripts allow-same-origin allow-downloads allow-forms allow-top-navigation')
0 commit comments