@opensumi/ide-webview 2.12.1-next-079c1930
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/abstract-webview.d.ts +57 -0
- package/lib/browser/abstract-webview.d.ts.map +1 -0
- package/lib/browser/abstract-webview.js +167 -0
- package/lib/browser/abstract-webview.js.map +1 -0
- package/lib/browser/contribution.d.ts +11 -0
- package/lib/browser/contribution.d.ts.map +1 -0
- package/lib/browser/contribution.js +85 -0
- package/lib/browser/contribution.js.map +1 -0
- package/lib/browser/editor-webview.d.ts +24 -0
- package/lib/browser/editor-webview.d.ts.map +1 -0
- package/lib/browser/editor-webview.js +167 -0
- package/lib/browser/editor-webview.js.map +1 -0
- package/lib/browser/electron-webview-webview.d.ts +21 -0
- package/lib/browser/electron-webview-webview.d.ts.map +1 -0
- package/lib/browser/electron-webview-webview.js +137 -0
- package/lib/browser/electron-webview-webview.js.map +1 -0
- package/lib/browser/iframe-webview.d.ts +21 -0
- package/lib/browser/iframe-webview.d.ts.map +1 -0
- package/lib/browser/iframe-webview.js +118 -0
- package/lib/browser/iframe-webview.js.map +1 -0
- package/lib/browser/index.d.ts +8 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +29 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/plain-webview.d.ts +45 -0
- package/lib/browser/plain-webview.d.ts.map +1 -0
- package/lib/browser/plain-webview.js +199 -0
- package/lib/browser/plain-webview.js.map +1 -0
- package/lib/browser/types.d.ts +171 -0
- package/lib/browser/types.d.ts.map +1 -0
- package/lib/browser/types.js +10 -0
- package/lib/browser/types.js.map +1 -0
- package/lib/browser/webview-window.d.ts +33 -0
- package/lib/browser/webview-window.d.ts.map +1 -0
- package/lib/browser/webview-window.js +104 -0
- package/lib/browser/webview-window.js.map +1 -0
- package/lib/browser/webview.service.d.ts +76 -0
- package/lib/browser/webview.service.d.ts.map +1 -0
- package/lib/browser/webview.service.js +380 -0
- package/lib/browser/webview.service.js.map +1 -0
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +5 -0
- package/lib/common/index.js.map +1 -0
- package/lib/electron-main/index.d.ts +9 -0
- package/lib/electron-main/index.d.ts.map +1 -0
- package/lib/electron-main/index.js +41 -0
- package/lib/electron-main/index.js.map +1 -0
- package/lib/electron-webview/host-channel.d.ts +13 -0
- package/lib/electron-webview/host-channel.d.ts.map +1 -0
- package/lib/electron-webview/host-channel.js +57 -0
- package/lib/electron-webview/host-channel.js.map +1 -0
- package/lib/electron-webview/host-preload.js +2 -0
- package/lib/electron-webview/plain-preload.js +55 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/lib/webview-host/common.d.ts +12 -0
- package/lib/webview-host/common.d.ts.map +1 -0
- package/lib/webview-host/common.js +97 -0
- package/lib/webview-host/common.js.map +1 -0
- package/lib/webview-host/web-preload.d.ts +16 -0
- package/lib/webview-host/web-preload.d.ts.map +1 -0
- package/lib/webview-host/web-preload.js +69 -0
- package/lib/webview-host/web-preload.js.map +1 -0
- package/lib/webview-host/webview-manager.d.ts +26 -0
- package/lib/webview-host/webview-manager.d.ts.map +1 -0
- package/lib/webview-host/webview-manager.js +314 -0
- package/lib/webview-host/webview-manager.js.map +1 -0
- package/lib/webview-host/webview.html +14 -0
- package/package.json +35 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElectronWebviewWebviewPanel = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
6
|
+
const abstract_webview_1 = require("./abstract-webview");
|
|
7
|
+
const di_1 = require("@opensumi/di");
|
|
8
|
+
const common_1 = require("../common");
|
|
9
|
+
let ElectronWebviewWebviewPanel = class ElectronWebviewWebviewPanel extends abstract_webview_1.AbstractWebviewPanel {
|
|
10
|
+
constructor(id, options = {}) {
|
|
11
|
+
super(id, options);
|
|
12
|
+
this.id = id;
|
|
13
|
+
this._needReload = false;
|
|
14
|
+
this._iframeDisposer = new ide_core_browser_1.Disposable();
|
|
15
|
+
this.webview = document.createElement('webview');
|
|
16
|
+
this.webview.src = `${common_1.WebviewScheme}://index.html`;
|
|
17
|
+
this.webview.preload = ide_core_browser_1.electronEnv.webviewPreload;
|
|
18
|
+
this.webview.style.border = 'none';
|
|
19
|
+
this.webview.style.width = '100%';
|
|
20
|
+
this.webview.style.position = 'absolute';
|
|
21
|
+
this.webview.style.height = '100%';
|
|
22
|
+
this.webview.style.zIndex = '2';
|
|
23
|
+
super.init();
|
|
24
|
+
}
|
|
25
|
+
prepareContainer() {
|
|
26
|
+
this.clear();
|
|
27
|
+
this._iframeDisposer = new ide_core_browser_1.Disposable();
|
|
28
|
+
this._ready = new Promise((resolve) => {
|
|
29
|
+
// tslint:disable-next-line: no-unused-variable
|
|
30
|
+
const disposer = this._onWebviewMessage('webview-ready', () => {
|
|
31
|
+
if (this._isReady) {
|
|
32
|
+
// 这种情况一般是由于iframe在dom中的位置变动导致了重载。
|
|
33
|
+
// 此时我们需要重新初始化
|
|
34
|
+
// electronWebview不需要重新监听事件
|
|
35
|
+
this.updateStyle();
|
|
36
|
+
this.doUpdateContent();
|
|
37
|
+
}
|
|
38
|
+
this._isReady = true;
|
|
39
|
+
resolve();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
this._needReload = false;
|
|
43
|
+
}
|
|
44
|
+
getDomNode() {
|
|
45
|
+
return this.webview;
|
|
46
|
+
}
|
|
47
|
+
_sendToWebview(channel, data) {
|
|
48
|
+
if (!this._isListening) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this._ready.then(() => {
|
|
52
|
+
if (!this.webview) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.webview.send(channel, data);
|
|
56
|
+
}).catch((err) => {
|
|
57
|
+
(0, ide_core_browser_1.getDebugLogger)().error(err);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
_onWebviewMessage(channel, listener) {
|
|
61
|
+
return this._iframeDisposer.addDispose(new ide_core_browser_1.DomListener(this.webview, 'ipc-message', (e) => {
|
|
62
|
+
if (!this.webview) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (e.channel === channel) {
|
|
66
|
+
if (!this._isListening) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
listener(e.args[0]);
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
appendTo(container) {
|
|
74
|
+
if (this.webview) {
|
|
75
|
+
if (container.style.position === 'static' || !container.style.position) {
|
|
76
|
+
container.style.position = 'relative';
|
|
77
|
+
}
|
|
78
|
+
container.innerHTML = '';
|
|
79
|
+
container.appendChild(this.webview);
|
|
80
|
+
if (this._needReload) {
|
|
81
|
+
this.init();
|
|
82
|
+
this.doUpdateContent();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
remove() {
|
|
87
|
+
if (this.webview) {
|
|
88
|
+
this.webview.remove();
|
|
89
|
+
this._onRemove.fire();
|
|
90
|
+
// remove 只是视图被销毁,但是html,state等内容保留,因此这里之前是改坏了
|
|
91
|
+
// this.dispose();
|
|
92
|
+
this.clear();
|
|
93
|
+
this._needReload = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
clear() {
|
|
97
|
+
if (this._iframeDisposer) {
|
|
98
|
+
this._iframeDisposer.dispose();
|
|
99
|
+
this._iframeDisposer = null;
|
|
100
|
+
}
|
|
101
|
+
this._isReady = false;
|
|
102
|
+
}
|
|
103
|
+
dispose() {
|
|
104
|
+
super.dispose();
|
|
105
|
+
if (this._iframeDisposer) {
|
|
106
|
+
this._iframeDisposer.dispose();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
(0, tslib_1.__decorate)([
|
|
111
|
+
(0, di_1.Autowired)(ide_core_browser_1.AppConfig),
|
|
112
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
113
|
+
], ElectronWebviewWebviewPanel.prototype, "config", void 0);
|
|
114
|
+
ElectronWebviewWebviewPanel = (0, tslib_1.__decorate)([
|
|
115
|
+
(0, di_1.Injectable)({ multiple: true }),
|
|
116
|
+
(0, tslib_1.__metadata)("design:paramtypes", [String, Object])
|
|
117
|
+
], ElectronWebviewWebviewPanel);
|
|
118
|
+
exports.ElectronWebviewWebviewPanel = ElectronWebviewWebviewPanel;
|
|
119
|
+
// tslint:disable-next-line: no-unused-variable
|
|
120
|
+
const WebviewHTMLStr = `<!DOCTYPE html>
|
|
121
|
+
<html lang="en" style="width: 100%; height: 100%;">
|
|
122
|
+
|
|
123
|
+
<head>
|
|
124
|
+
<meta charset="UTF-8">
|
|
125
|
+
<meta http-equiv="Content-Security-Policy"
|
|
126
|
+
content="default-src 'self'; script-src 'self'; frame-src 'self'; style-src 'unsafe-inline'; worker-src 'self'; img-src * data: ; " />
|
|
127
|
+
|
|
128
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
129
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
130
|
+
<title>Webview Panel Container</title>
|
|
131
|
+
</head>
|
|
132
|
+
|
|
133
|
+
<body style="margin: 0; overflow: hidden; width: 100%; height: 100%">
|
|
134
|
+
</body>
|
|
135
|
+
|
|
136
|
+
</html>`;
|
|
137
|
+
//# sourceMappingURL=electron-webview-webview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electron-webview-webview.js","sourceRoot":"","sources":["../../src/browser/electron-webview-webview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IWebview, IWebviewContentOptions } from './types';
|
|
2
|
+
import { IDisposable, AppConfig } from '@opensumi/ide-core-browser';
|
|
3
|
+
import { AbstractWebviewPanel } from './abstract-webview';
|
|
4
|
+
export declare class IFrameWebviewPanel extends AbstractWebviewPanel implements IWebview {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
private iframe;
|
|
7
|
+
private _needReload;
|
|
8
|
+
private _iframeDisposer;
|
|
9
|
+
private _isReady;
|
|
10
|
+
config: AppConfig;
|
|
11
|
+
constructor(id: string, options?: IWebviewContentOptions);
|
|
12
|
+
prepareContainer(): void;
|
|
13
|
+
getDomNode(): HTMLIFrameElement;
|
|
14
|
+
protected _sendToWebview(channel: string, data: any): void;
|
|
15
|
+
protected _onWebviewMessage(channel: string, listener: (data: any) => any): IDisposable;
|
|
16
|
+
appendTo(container: HTMLElement): void;
|
|
17
|
+
remove(): void;
|
|
18
|
+
clear(): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=iframe-webview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe-webview.d.ts","sourceRoot":"","sources":["../../src/browser/iframe-webview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAA2C,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,qBACa,kBAAmB,SAAQ,oBAAqB,YAAW,QAAQ;aAalD,EAAE,EAAE,MAAM;IAXtC,OAAO,CAAC,MAAM,CAAoB;IAElC,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,QAAQ,CAAU;IAG1B,MAAM,EAAE,SAAS,CAAC;gBAEU,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAgB5E,gBAAgB;IAmBhB,UAAU;IAIV,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAiBnD,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,WAAW;IAWvF,QAAQ,CAAC,SAAS,EAAE,WAAW;IAc/B,MAAM;IAWN,KAAK;IAQL,OAAO;CAOR"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IFrameWebviewPanel = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
6
|
+
const abstract_webview_1 = require("./abstract-webview");
|
|
7
|
+
const di_1 = require("@opensumi/di");
|
|
8
|
+
let IFrameWebviewPanel = class IFrameWebviewPanel extends abstract_webview_1.AbstractWebviewPanel {
|
|
9
|
+
constructor(id, options = {}) {
|
|
10
|
+
super(id, options);
|
|
11
|
+
this.id = id;
|
|
12
|
+
this._needReload = false;
|
|
13
|
+
this._iframeDisposer = new ide_core_browser_1.Disposable();
|
|
14
|
+
this.iframe = document.createElement('iframe');
|
|
15
|
+
this.iframe.setAttribute('allow', 'autoplay');
|
|
16
|
+
this.iframe.setAttribute('sandbox', options.allowScripts ? 'allow-scripts allow-forms allow-same-origin' : 'allow-scripts allow-same-origin');
|
|
17
|
+
this.iframe.setAttribute('src', `${this.config.webviewEndpoint}/index.html?id=${this.id}`);
|
|
18
|
+
this.iframe.style.border = 'none';
|
|
19
|
+
this.iframe.style.width = '100%';
|
|
20
|
+
this.iframe.style.position = 'absolute';
|
|
21
|
+
this.iframe.style.height = '100%';
|
|
22
|
+
this.iframe.style.zIndex = '2';
|
|
23
|
+
super.init();
|
|
24
|
+
}
|
|
25
|
+
prepareContainer() {
|
|
26
|
+
this.clear();
|
|
27
|
+
this._iframeDisposer = new ide_core_browser_1.Disposable();
|
|
28
|
+
this._ready = new Promise((resolve) => {
|
|
29
|
+
// tslint:disable-next-line: no-unused-variable
|
|
30
|
+
const disposer = this._onWebviewMessage('webview-ready', () => {
|
|
31
|
+
if (this._isReady) {
|
|
32
|
+
// 这种情况一般是由于iframe在dom中的位置变动导致了重载。
|
|
33
|
+
// 此时我们需要重新初始化
|
|
34
|
+
this.initEvents();
|
|
35
|
+
this.doUpdateContent();
|
|
36
|
+
}
|
|
37
|
+
this._isReady = true;
|
|
38
|
+
resolve();
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
this._needReload = false;
|
|
42
|
+
}
|
|
43
|
+
getDomNode() {
|
|
44
|
+
return this.iframe;
|
|
45
|
+
}
|
|
46
|
+
_sendToWebview(channel, data) {
|
|
47
|
+
if (!this._isListening) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this._ready.then(() => {
|
|
51
|
+
if (!this.iframe) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.iframe.contentWindow.postMessage({
|
|
55
|
+
channel,
|
|
56
|
+
data,
|
|
57
|
+
}, '*');
|
|
58
|
+
}).catch((err) => {
|
|
59
|
+
(0, ide_core_browser_1.getDebugLogger)().error(err);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
_onWebviewMessage(channel, listener) {
|
|
63
|
+
return this._iframeDisposer.addDispose(new ide_core_browser_1.DomListener(window, 'message', (e) => {
|
|
64
|
+
if (e.data && e.data.target === this.id && e.data.channel === channel) {
|
|
65
|
+
if (!this._isListening) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
listener(e.data.data);
|
|
69
|
+
}
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
appendTo(container) {
|
|
73
|
+
if (this.iframe) {
|
|
74
|
+
if (container.style.position === 'static' || !container.style.position) {
|
|
75
|
+
container.style.position = 'relative';
|
|
76
|
+
}
|
|
77
|
+
container.innerHTML = '';
|
|
78
|
+
container.appendChild(this.iframe);
|
|
79
|
+
if (this._needReload) {
|
|
80
|
+
this.init();
|
|
81
|
+
this.doUpdateContent();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
remove() {
|
|
86
|
+
if (this.iframe) {
|
|
87
|
+
this.iframe.remove();
|
|
88
|
+
this._onRemove.fire();
|
|
89
|
+
// remove 只是视图被销毁,但是html,state等内容保留,因此这里之前是改坏了
|
|
90
|
+
// this.dispose();
|
|
91
|
+
this.clear();
|
|
92
|
+
this._needReload = true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
clear() {
|
|
96
|
+
if (this._iframeDisposer) {
|
|
97
|
+
this._iframeDisposer.dispose();
|
|
98
|
+
this._iframeDisposer = null;
|
|
99
|
+
}
|
|
100
|
+
this._isReady = false;
|
|
101
|
+
}
|
|
102
|
+
dispose() {
|
|
103
|
+
super.dispose();
|
|
104
|
+
if (this._iframeDisposer) {
|
|
105
|
+
this._iframeDisposer.dispose();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
(0, tslib_1.__decorate)([
|
|
110
|
+
(0, di_1.Autowired)(ide_core_browser_1.AppConfig),
|
|
111
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
112
|
+
], IFrameWebviewPanel.prototype, "config", void 0);
|
|
113
|
+
IFrameWebviewPanel = (0, tslib_1.__decorate)([
|
|
114
|
+
(0, di_1.Injectable)({ multiple: true }),
|
|
115
|
+
(0, tslib_1.__metadata)("design:paramtypes", [String, Object])
|
|
116
|
+
], IFrameWebviewPanel);
|
|
117
|
+
exports.IFrameWebviewPanel = IFrameWebviewPanel;
|
|
118
|
+
//# sourceMappingURL=iframe-webview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe-webview.js","sourceRoot":"","sources":["../../src/browser/iframe-webview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Provider } from '@opensumi/di';
|
|
2
|
+
import { BrowserModule } from '@opensumi/ide-core-browser';
|
|
3
|
+
export * from './types';
|
|
4
|
+
export { PlainWebview } from './editor-webview';
|
|
5
|
+
export declare class WebviewModule extends BrowserModule {
|
|
6
|
+
providers: Provider[];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,qBACa,aAAc,SAAQ,aAAa;IAC9C,SAAS,EAAE,QAAQ,EAAE,CAMnB;CACH"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebviewModule = exports.PlainWebview = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const di_1 = require("@opensumi/di");
|
|
6
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const webview_service_1 = require("./webview.service");
|
|
9
|
+
const contribution_1 = require("./contribution");
|
|
10
|
+
(0, tslib_1.__exportStar)(require("./types"), exports);
|
|
11
|
+
var editor_webview_1 = require("./editor-webview");
|
|
12
|
+
Object.defineProperty(exports, "PlainWebview", { enumerable: true, get: function () { return editor_webview_1.PlainWebview; } });
|
|
13
|
+
let WebviewModule = class WebviewModule extends ide_core_browser_1.BrowserModule {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.providers = [
|
|
17
|
+
{
|
|
18
|
+
token: types_1.IWebviewService,
|
|
19
|
+
useClass: webview_service_1.WebviewServiceImpl,
|
|
20
|
+
},
|
|
21
|
+
contribution_1.WebviewModuleContribution,
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
WebviewModule = (0, tslib_1.__decorate)([
|
|
26
|
+
(0, di_1.Injectable)()
|
|
27
|
+
], WebviewModule);
|
|
28
|
+
exports.WebviewModule = WebviewModule;
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAC3D,mCAA0C;AAC1C,uDAAuD;AACvD,iDAA2D;AAC3D,uDAAwB;AACxB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AAGrB,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,gCAAa;IAAhD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,uBAAe;gBACtB,QAAQ,EAAE,oCAAkB;aAC7B;YACD,wCAAyB;SAC1B,CAAC;IACJ,CAAC;CAAA,CAAA;AARY,aAAa;IADzB,IAAA,eAAU,GAAE;GACA,aAAa,CAQzB;AARY,sCAAa"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { IPlainWebview } from './types';
|
|
2
|
+
import { Disposable, Emitter, Event } from '@opensumi/ide-core-browser';
|
|
3
|
+
export declare class IframePlainWebview extends Disposable implements IPlainWebview {
|
|
4
|
+
private _url;
|
|
5
|
+
private _iframe;
|
|
6
|
+
private wrapper;
|
|
7
|
+
_onMessage: Emitter<any>;
|
|
8
|
+
onMessage: Event<any>;
|
|
9
|
+
_onRemove: Emitter<void>;
|
|
10
|
+
onRemove: Event<void>;
|
|
11
|
+
_onLoadURL: Emitter<string>;
|
|
12
|
+
onLoadURL: Event<string>;
|
|
13
|
+
private _ready;
|
|
14
|
+
get ready(): Promise<void>;
|
|
15
|
+
constructor();
|
|
16
|
+
get url(): string | undefined;
|
|
17
|
+
loadURL(url: string): Promise<void>;
|
|
18
|
+
getDomNode(): HTMLIFrameElement | null;
|
|
19
|
+
appendTo(container: HTMLElement): void;
|
|
20
|
+
dispose(): void;
|
|
21
|
+
postMessage(message: any): void;
|
|
22
|
+
remove(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare class ElectronPlainWebview extends Disposable implements IPlainWebview {
|
|
25
|
+
private _url;
|
|
26
|
+
private webview;
|
|
27
|
+
private wrapper;
|
|
28
|
+
private webviewDomReady;
|
|
29
|
+
_onMessage: Emitter<any>;
|
|
30
|
+
onMessage: Event<any>;
|
|
31
|
+
_onRemove: Emitter<void>;
|
|
32
|
+
onRemove: Event<void>;
|
|
33
|
+
_onLoadURL: Emitter<string>;
|
|
34
|
+
onLoadURL: Event<string>;
|
|
35
|
+
constructor();
|
|
36
|
+
get url(): string | undefined;
|
|
37
|
+
getDomNode(): HTMLDivElement | null;
|
|
38
|
+
loadURL(url: string): Promise<void>;
|
|
39
|
+
private doLoadURL;
|
|
40
|
+
appendTo(container: HTMLElement): void;
|
|
41
|
+
dispose(): void;
|
|
42
|
+
postMessage(message: any): void;
|
|
43
|
+
remove(): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=plain-webview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-webview.d.ts","sourceRoot":"","sources":["../../src/browser/plain-webview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,UAAU,EAA4B,OAAO,EAAY,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE5G,qBAAa,kBAAmB,SAAQ,UAAW,YAAW,aAAa;IAEzE,OAAO,CAAC,IAAI,CAAqB;IAEjC,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,OAAO,CAA2B;IAE1C,UAAU,eAAsB;IAChC,SAAS,aAAyB;IAElC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAuB;IAC/C,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAwB;IAE7C,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAyB;IACpD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAyB;IAEjD,OAAO,CAAC,MAAM,CAAwB;IAEtC,IAAI,KAAK,kBAER;;IAwBD,IAAI,GAAG,uBAEN;IAEK,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BzC,UAAU;IAIV,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAatC,OAAO;IAYP,WAAW,CAAC,OAAO,EAAE,GAAG;IAMxB,MAAM;CAWP;AAED,qBAAa,oBAAqB,SAAQ,UAAW,YAAW,aAAa;IAE3E,OAAO,CAAC,IAAI,CAAqB;IAGjC,OAAO,CAAC,OAAO,CAA6B;IAE5C,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,eAAe,CAAkC;IAEzD,UAAU,eAAsB;IAChC,SAAS,aAAyB;IAElC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAuB;IAC/C,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAwB;IAE7C,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAyB;IACpD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAyB;;IAcjD,IAAI,GAAG,uBAEN;IAED,UAAU;IAIJ,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAgC3B,SAAS;IAYvB,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAOtC,OAAO;IAOP,WAAW,CAAC,OAAO,EAAE,GAAG;IAMxB,MAAM;CAOP"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElectronPlainWebview = exports.IframePlainWebview = void 0;
|
|
4
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
5
|
+
class IframePlainWebview extends ide_core_browser_1.Disposable {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this._onMessage = new ide_core_browser_1.Emitter();
|
|
9
|
+
this.onMessage = this._onMessage.event;
|
|
10
|
+
this._onRemove = new ide_core_browser_1.Emitter();
|
|
11
|
+
this.onRemove = this._onRemove.event;
|
|
12
|
+
this._onLoadURL = new ide_core_browser_1.Emitter();
|
|
13
|
+
this.onLoadURL = this._onLoadURL.event;
|
|
14
|
+
this._ready = new ide_core_browser_1.Deferred();
|
|
15
|
+
this.wrapper = document.createElement('iframe');
|
|
16
|
+
this.wrapper.setAttribute('src', 'javascript:""');
|
|
17
|
+
this.wrapper.style.width = '100%';
|
|
18
|
+
this.wrapper.style.height = '100%';
|
|
19
|
+
this.wrapper.style.display = 'block';
|
|
20
|
+
this.wrapper.style.position = 'absolute';
|
|
21
|
+
this.wrapper.style.border = 'none';
|
|
22
|
+
this.wrapper.style.zIndex = '2';
|
|
23
|
+
const disposer = this.addDispose(new ide_core_browser_1.DomListener(this.wrapper, 'load', () => {
|
|
24
|
+
this.addDispose(new ide_core_browser_1.DomListener(this.wrapper.contentWindow, 'message', (e) => {
|
|
25
|
+
this._onMessage.fire(e.data);
|
|
26
|
+
}));
|
|
27
|
+
this.wrapper.contentDocument.body.style.margin = '0';
|
|
28
|
+
this._ready.resolve();
|
|
29
|
+
disposer.dispose();
|
|
30
|
+
}));
|
|
31
|
+
this.addDispose(this._onMessage);
|
|
32
|
+
}
|
|
33
|
+
get ready() {
|
|
34
|
+
return this._ready.promise;
|
|
35
|
+
}
|
|
36
|
+
get url() {
|
|
37
|
+
return this._url;
|
|
38
|
+
}
|
|
39
|
+
async loadURL(url) {
|
|
40
|
+
if (!this.wrapper) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
await this.ready;
|
|
44
|
+
if (!this.wrapper) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this._url = url;
|
|
48
|
+
if (!this._iframe) {
|
|
49
|
+
this._iframe = document.createElement('iframe');
|
|
50
|
+
this._iframe.style.width = '100%';
|
|
51
|
+
this._iframe.style.height = '100%';
|
|
52
|
+
this._iframe.style.display = 'block';
|
|
53
|
+
this._iframe.style.border = 'none';
|
|
54
|
+
this.wrapper.contentWindow.document.body.appendChild(this._iframe);
|
|
55
|
+
}
|
|
56
|
+
this._iframe.setAttribute('src', url);
|
|
57
|
+
this._onLoadURL.fire(url);
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
this.addDispose(new ide_core_browser_1.DomListener(this._iframe, 'load', () => {
|
|
60
|
+
resolve();
|
|
61
|
+
}));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
getDomNode() {
|
|
65
|
+
return this.wrapper;
|
|
66
|
+
}
|
|
67
|
+
appendTo(container) {
|
|
68
|
+
if (this.wrapper) {
|
|
69
|
+
if (this.wrapper.parentElement) {
|
|
70
|
+
this.wrapper.remove();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
container.innerHTML = '';
|
|
74
|
+
container.appendChild(this.wrapper);
|
|
75
|
+
if (this._url) {
|
|
76
|
+
this.loadURL(this._url);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
dispose() {
|
|
80
|
+
super.dispose();
|
|
81
|
+
if (this.wrapper) {
|
|
82
|
+
this.wrapper.remove();
|
|
83
|
+
this.wrapper = null;
|
|
84
|
+
}
|
|
85
|
+
if (this._iframe) {
|
|
86
|
+
this._iframe.remove();
|
|
87
|
+
this._iframe = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
postMessage(message) {
|
|
91
|
+
if (this._iframe) {
|
|
92
|
+
this._iframe.contentWindow.postMessage(message, '*');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
remove() {
|
|
96
|
+
if (this.wrapper) {
|
|
97
|
+
this.wrapper.remove();
|
|
98
|
+
if (this._iframe) {
|
|
99
|
+
this._iframe.remove();
|
|
100
|
+
this._iframe = null;
|
|
101
|
+
}
|
|
102
|
+
this._onRemove.fire();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.IframePlainWebview = IframePlainWebview;
|
|
107
|
+
class ElectronPlainWebview extends ide_core_browser_1.Disposable {
|
|
108
|
+
constructor() {
|
|
109
|
+
super();
|
|
110
|
+
this.webviewDomReady = new ide_core_browser_1.Deferred();
|
|
111
|
+
this._onMessage = new ide_core_browser_1.Emitter();
|
|
112
|
+
this.onMessage = this._onMessage.event;
|
|
113
|
+
this._onRemove = new ide_core_browser_1.Emitter();
|
|
114
|
+
this.onRemove = this._onRemove.event;
|
|
115
|
+
this._onLoadURL = new ide_core_browser_1.Emitter();
|
|
116
|
+
this.onLoadURL = this._onLoadURL.event;
|
|
117
|
+
this.wrapper = document.createElement('div');
|
|
118
|
+
this.wrapper.style.width = '100%';
|
|
119
|
+
this.wrapper.style.height = '100%';
|
|
120
|
+
this.wrapper.style.display = 'block';
|
|
121
|
+
this.wrapper.style.position = 'absolute';
|
|
122
|
+
this.wrapper.style.border = 'none';
|
|
123
|
+
this.wrapper.style.zIndex = '2';
|
|
124
|
+
this.addDispose(this._onMessage);
|
|
125
|
+
}
|
|
126
|
+
get url() {
|
|
127
|
+
return this._url;
|
|
128
|
+
}
|
|
129
|
+
getDomNode() {
|
|
130
|
+
return this.wrapper;
|
|
131
|
+
}
|
|
132
|
+
async loadURL(url) {
|
|
133
|
+
if (!this.wrapper) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this._url = url;
|
|
137
|
+
if (!this.webview) {
|
|
138
|
+
this.webview = document.createElement('webview');
|
|
139
|
+
this.wrapper.appendChild(this.webview);
|
|
140
|
+
this.webview.style.width = '100%';
|
|
141
|
+
this.webview.style.height = '100%';
|
|
142
|
+
this.webview.style.border = 'none';
|
|
143
|
+
this.webview.style.zIndex = '2';
|
|
144
|
+
this.webview.src = url;
|
|
145
|
+
this.webview.preload = ide_core_browser_1.electronEnv.plainWebviewPreload;
|
|
146
|
+
this.webview.addEventListener('ipc-message', (event) => {
|
|
147
|
+
if (event.channel === 'webview-message') {
|
|
148
|
+
this._onMessage.fire(event.args[0]);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
this.addDispose(new ide_core_browser_1.DomListener(this.webview, 'dom-ready', () => {
|
|
152
|
+
this.webviewDomReady.resolve();
|
|
153
|
+
}));
|
|
154
|
+
this.addDispose(new ide_core_browser_1.DomListener(this.webview, 'destroyed', () => {
|
|
155
|
+
this.webviewDomReady = new ide_core_browser_1.Deferred();
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
this._url = url;
|
|
159
|
+
if (document.body.contains(this.wrapper)) {
|
|
160
|
+
return this.doLoadURL();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async doLoadURL() {
|
|
164
|
+
return new Promise(async (resolve) => {
|
|
165
|
+
await this.webviewDomReady.promise;
|
|
166
|
+
this.webview.loadURL(this.url);
|
|
167
|
+
const disposer = this.addDispose(new ide_core_browser_1.DomListener(this.webview, 'did-finish-load', () => {
|
|
168
|
+
disposer.dispose();
|
|
169
|
+
this._onLoadURL.fire(this.url);
|
|
170
|
+
resolve();
|
|
171
|
+
}));
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
appendTo(container) {
|
|
175
|
+
container.appendChild(this.wrapper);
|
|
176
|
+
if (this._url) {
|
|
177
|
+
this.doLoadURL();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
dispose() {
|
|
181
|
+
this.wrapper.remove();
|
|
182
|
+
this.wrapper = null;
|
|
183
|
+
this.webview.remove();
|
|
184
|
+
this.webview = null;
|
|
185
|
+
}
|
|
186
|
+
postMessage(message) {
|
|
187
|
+
if (this.webview) {
|
|
188
|
+
this.webview.send('webview-message', message);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
remove() {
|
|
192
|
+
if (this.wrapper) {
|
|
193
|
+
this.wrapper.remove();
|
|
194
|
+
this._onRemove.fire();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
exports.ElectronPlainWebview = ElectronPlainWebview;
|
|
199
|
+
//# sourceMappingURL=plain-webview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-webview.js","sourceRoot":"","sources":["../../src/browser/plain-webview.ts"],"names":[],"mappings":"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"}
|