diff --git a/package.json b/package.json
index 50df208ab..318a25736 100644
--- a/package.json
+++ b/package.json
@@ -74,6 +74,14 @@
"mimeTypes": [
"ms-vscode.r-notebook/table"
]
+ },
+ {
+ "id": "r-notebook-viewer-renderer",
+ "displayName": "Notebook Viewer Render",
+ "entrypoint": "./dist/viewerRenderer.js",
+ "mimeTypes": [
+ "ms-vscode.r-notebook/viewer"
+ ]
}
],
"viewsContainers": {
diff --git a/samples/test1.rmd b/samples/test1.rmd
index f379dcf57..774ee9d3f 100644
--- a/samples/test1.rmd
+++ b/samples/test1.rmd
@@ -8,10 +8,10 @@ df = data.frame(a = c(1,2,3,4), b = c(10, 20, 13, 1))
library(ggplot2)
library(plotly)
-df
+ggplotly(ggplot(df, aes(a, b)) + geom_point())
```
```{r}
-ggplot(df, aes(a, b)) + geom_point()
+ggplotly(ggplot(df, aes(a, b)) + geom_point())
```
```{r}
diff --git a/src/client/renderers/viewerRenderer.tsx b/src/client/renderers/viewerRenderer.tsx
index 5296677c6..5981cb13f 100644
--- a/src/client/renderers/viewerRenderer.tsx
+++ b/src/client/renderers/viewerRenderer.tsx
@@ -1,7 +1,15 @@
-const notebookApi = acquireNotebookRendererApi("r-notebook-table-renderer");
+const notebookApi = acquireNotebookRendererApi("r-notebook-viewer-renderer");
notebookApi.onDidCreateOutput((evt) => {
const output = evt.output.data[evt.mimeType];
- evt.element.innerHTML =
+ const iframe = document.createElement("iframe");
+ iframe.style.border = "0";
+ iframe.style.width = "90vw"
+ iframe.style.minHeight = "30vw"
+ iframe.sandbox.add("allow-scripts");
+ iframe.sandbox.add("allow-forms");
+ iframe.sandbox.add("allow-same-origin");
+ iframe.srcdoc = output
+ evt.element.appendChild(iframe)
});
diff --git a/src/extension/notebook.ts b/src/extension/notebook.ts
index 720ded5ed..349c373bc 100644
--- a/src/extension/notebook.ts
+++ b/src/extension/notebook.ts
@@ -341,17 +341,11 @@ export class RNotebookProvider implements vscode.NotebookContentProvider, vscode
const html = (await vscode.workspace.fs.readFile(vscode.Uri.parse(response.result))).toString();
const htmlDir = dirname(response.result)
const htmlInline = await inlineAll(html, htmlDir)
- const htmlWrapped = `
-
-
- `
+
return {
outputKind: vscode.CellOutputKind.Rich,
data: {
- 'text/html': htmlWrapped
+ 'ms-vscode.r-notebook/viewer': htmlInline
},
}
}
diff --git a/webpack.config.js b/webpack.config.js
index f28c42232..e33c337f5 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -64,7 +64,8 @@ const extensionConfig = {
const clientConfig = {
target: 'web',
entry: {
- "tableRenderer": "./src/client/renderers/tableRenderer.tsx"
+ "tableRenderer": "./src/client/renderers/tableRenderer.tsx",
+ "viewerRenderer": "./src/client/renderers/viewerRenderer.tsx"
},
output: {
// the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
@@ -108,5 +109,5 @@ const clientConfig = {
]
}
-// module.exports = [extensionConfig, clientConfig]
-module.exports = [clientConfig]
+module.exports = [extensionConfig, clientConfig]
+// module.exports = [clientConfig]