@dotglitch/ngx-common 1.0.42 → 1.0.44
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/components/vscode/vscode.component.d.ts +1 -5
- package/esm2020/components/vscode/vscode.component.mjs +49 -50
- package/fesm2015/dotglitch-ngx-common.mjs +49 -50
- package/fesm2015/dotglitch-ngx-common.mjs.map +1 -1
- package/fesm2020/dotglitch-ngx-common.mjs +49 -50
- package/fesm2020/dotglitch-ngx-common.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -44,13 +44,9 @@ export declare class VscodeComponent implements AfterViewInit, OnDestroy {
|
|
|
44
44
|
ngOnDestroy(): void;
|
|
45
45
|
private createEditor;
|
|
46
46
|
private configureLanguageSupport;
|
|
47
|
-
/**
|
|
48
|
-
* true if the monaco UMD files are injected into the webpage
|
|
49
|
-
*/
|
|
50
|
-
private static isMonacoInstalled;
|
|
51
|
-
private installMonaco;
|
|
52
47
|
download(): void;
|
|
53
48
|
resize: () => void;
|
|
54
49
|
static ɵfac: i0.ɵɵFactoryDeclaration<VscodeComponent, never>;
|
|
55
50
|
static ɵcmp: i0.ɵɵComponentDeclaration<VscodeComponent, "app-vscode", never, { "code": "code"; "customLanguage": "customLanguage"; "language": "language"; "installationLocation": "installationLocation"; "tabSize": "tabSize"; "readOnly": "readOnly"; "theme": "theme"; "fontFamily": "fontFamily"; "fontSize": "fontSize"; "automaticLayout": "automaticLayout"; "colorDecorators": "colorDecorators"; "folding": "folding"; "minimapEnabled": "minimapEnabled"; "minimap": "minimap"; "scrollbar": "scrollbar"; "smoothScrolling": "smoothScrolling"; "mouseWheelScrollSensitivity": "mouseWheelScrollSensitivity"; "scrollBeyondLastLine": "scrollBeyondLastLine"; "scrollBeyondLastColumn": "scrollBeyondLastColumn"; "lineNumbers": "lineNumbers"; "restSettings": "restSettings"; }, { "codeChange": "codeChange"; }, never, never, true, never>;
|
|
56
51
|
}
|
|
52
|
+
export declare const InstallMonacoUMD: (path?: string) => Promise<any>;
|
|
@@ -75,7 +75,7 @@ export class VscodeComponent {
|
|
|
75
75
|
this.resize = () => {
|
|
76
76
|
this.editor?.layout();
|
|
77
77
|
};
|
|
78
|
-
this.
|
|
78
|
+
InstallMonacoUMD(this.installationLocation);
|
|
79
79
|
this._sub = this.typeDebounce.subscribe(t => {
|
|
80
80
|
this.codeChange.next(this._code = this.editor.getValue());
|
|
81
81
|
});
|
|
@@ -92,21 +92,7 @@ export class VscodeComponent {
|
|
|
92
92
|
Monaco?.editor.setTheme(this.theme);
|
|
93
93
|
}
|
|
94
94
|
async ngAfterViewInit() {
|
|
95
|
-
await
|
|
96
|
-
let count = 0;
|
|
97
|
-
let i = window.setInterval(() => {
|
|
98
|
-
count++;
|
|
99
|
-
if (window['monaco'] != undefined) {
|
|
100
|
-
window.clearInterval(i);
|
|
101
|
-
Monaco = window['monaco'];
|
|
102
|
-
res(true);
|
|
103
|
-
}
|
|
104
|
-
if (count >= 100) {
|
|
105
|
-
window.clearInterval(i);
|
|
106
|
-
res(false);
|
|
107
|
-
}
|
|
108
|
-
}, 100);
|
|
109
|
-
});
|
|
95
|
+
await InstallMonacoUMD();
|
|
110
96
|
this.createEditor();
|
|
111
97
|
}
|
|
112
98
|
ngOnDestroy() {
|
|
@@ -130,35 +116,6 @@ export class VscodeComponent {
|
|
|
130
116
|
}
|
|
131
117
|
configureLanguageSupport() {
|
|
132
118
|
}
|
|
133
|
-
installMonaco() {
|
|
134
|
-
if (VscodeComponent.isMonacoInstalled)
|
|
135
|
-
return;
|
|
136
|
-
if (window['monaco']) {
|
|
137
|
-
VscodeComponent.isMonacoInstalled = true;
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
// Monaco has a UMD loader that requires this
|
|
141
|
-
// Merge with any pre-existing global require objects.
|
|
142
|
-
if (!window['require'])
|
|
143
|
-
window['require'] = {};
|
|
144
|
-
if (!window['require']['paths'])
|
|
145
|
-
window['require']['paths'] = {};
|
|
146
|
-
if (this.installationLocation.endsWith('/'))
|
|
147
|
-
this.installationLocation = this.installationLocation.slice(0, -1);
|
|
148
|
-
window['require']['paths'].vs = this.installationLocation;
|
|
149
|
-
const monacoFiles = [
|
|
150
|
-
'loader.js',
|
|
151
|
-
'editor/editor.main.nls.js',
|
|
152
|
-
'editor/editor.main.js',
|
|
153
|
-
];
|
|
154
|
-
for (let i = 0; i < monacoFiles.length; i++) {
|
|
155
|
-
const script = document.createElement("script");
|
|
156
|
-
script.setAttribute("defer", "");
|
|
157
|
-
script.setAttribute("src", this.installationLocation + '/' + monacoFiles[i]);
|
|
158
|
-
document.body.append(script);
|
|
159
|
-
}
|
|
160
|
-
VscodeComponent.isMonacoInstalled = true;
|
|
161
|
-
}
|
|
162
119
|
download() {
|
|
163
120
|
const code = this.editor.getValue();
|
|
164
121
|
let blob = new Blob([code], { type: 'text/log' });
|
|
@@ -174,10 +131,6 @@ export class VscodeComponent {
|
|
|
174
131
|
URL.revokeObjectURL(blobURL);
|
|
175
132
|
}
|
|
176
133
|
}
|
|
177
|
-
/**
|
|
178
|
-
* true if the monaco UMD files are injected into the webpage
|
|
179
|
-
*/
|
|
180
|
-
VscodeComponent.isMonacoInstalled = false;
|
|
181
134
|
VscodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VscodeComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
182
135
|
VscodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: VscodeComponent, isStandalone: true, selector: "app-vscode", inputs: { code: "code", customLanguage: "customLanguage", language: "language", installationLocation: "installationLocation", tabSize: "tabSize", readOnly: "readOnly", theme: "theme", fontFamily: "fontFamily", fontSize: "fontSize", automaticLayout: "automaticLayout", colorDecorators: "colorDecorators", folding: "folding", minimapEnabled: "minimapEnabled", minimap: "minimap", scrollbar: "scrollbar", smoothScrolling: "smoothScrolling", mouseWheelScrollSensitivity: "mouseWheelScrollSensitivity", scrollBeyondLastLine: "scrollBeyondLastLine", scrollBeyondLastColumn: "scrollBeyondLastColumn", lineNumbers: "lineNumbers", restSettings: "restSettings" }, outputs: { codeChange: "codeChange" }, host: { listeners: { "window:resize": "resize($event)" } }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":host{display:block;height:100%;max-height:100vh;max-width:100vw}\n"] });
|
|
183
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VscodeComponent, decorators: [{
|
|
@@ -231,4 +184,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
231
184
|
type: HostListener,
|
|
232
185
|
args: ['window:resize', ['$event']]
|
|
233
186
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy92c2NvZGUvdnNjb2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBRzNKLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRXBDLElBQUksTUFBMkIsQ0FBQztBQWVoQyxNQUFNLE9BQU8sZUFBZTtJQU14QixJQUFhLElBQUksQ0FBQyxLQUFhO1FBQzNCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ25CLE9BQU87UUFDWCxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVE7WUFDeEIsTUFBTSxJQUFJLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUEsQ0FBQztJQUNGLElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFTeEMsSUFBYSxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2IsSUFBSSxFQUFFLFlBQVk7WUFDbEIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztTQUNoQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUE7SUFDL0IsQ0FBQztJQUNELElBQUksUUFBUSxL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QkFBbkMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkE2Sk4sTUFBTTtzQkFETCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyBNb25hY29FZGl0b3IgZnJvbSAnbW9uYWNvLWVkaXRvcic7XHJcbmltcG9ydCB7IE1vbmFjb0F1dG9UeXBlSW1wb3J0ZXIgfSBmcm9tICcuL3RzLXR5cGUtcmVzb2x2ZXIvbWFpbic7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xyXG5cclxubGV0IE1vbmFjbzogdHlwZW9mIE1vbmFjb0VkaXRvcjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtdnNjb2RlJyxcclxuICAgIHRlbXBsYXRlOiAnJyxcclxuICAgIHN0eWxlczogW2BcclxuOmhvc3Qge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDB2aDtcclxuICAgIG1heC13aWR0aDogMTAwdnc7XHJcbn1cclxuICAgIGBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVnNjb2RlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIGlzRGlydHkgPSBmYWxzZTtcclxuICAgIGVkaXRvcjogTW9uYWNvRWRpdG9yLmVkaXRvci5JU3RhbmRhbG9uZUNvZGVFZGl0b3I7XHJcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgX2NvZGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHNldCBjb2RlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT0gdGhpcy5fY29kZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT0gXCJzdHJpbmdcIilcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlZhbHVlIG11c3QgYmUgb2YgdHlwZSBzdHJpbmdcIik7XHJcblxyXG4gICAgICAgIHRoaXMuX2NvZGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmVkaXRvcj8uc2V0VmFsdWUodGhpcy5jb2RlKTtcclxuICAgIH07XHJcbiAgICBnZXQgY29kZSgpIHsgcmV0dXJuIHRoaXMuX2NvZGU/LnRyaW0oKSB9XHJcbiAgICBAT3V0cHV0KCkgY29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgcHJpdmF0ZSBvbkNvZGVUeXBlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIHR5cGVEZWJvdW5jZSA9IHRoaXMub25Db2RlVHlwZS5waXBlKGRlYm91bmNlVGltZSgxMDApKTtcclxuXHJcbiAgICBASW5wdXQoKSBjdXN0b21MYW5ndWFnZTogeyBpbml0OiBGdW5jdGlvbjsgfTtcclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UgPSB7XHJcbiAgICAgICAgICAgICd0cyc6IFwidHlwZXNjcmlwdFwiLFxyXG4gICAgICAgICAgICAnaHRtbCc6ICd4bWwnLFxyXG4gICAgICAgICAgICAnc2Nzcyc6ICdjc3MnXHJcbiAgICAgICAgfVt2YWx1ZV0gfHwgdmFsdWUgfHwgXCJhdXRvXCJcclxuICAgIH1cclxuICAgIGdldCBsYW5ndWFnZSgpIHsgcmV0dXJuIHRoaXMuX2xhbmd1YWdlIH1cclxuXHJcbiAgICBASW5wdXQoKSBpbnN0YWxsYXRpb25Mb2NhdGlvbiA9IFwiL2xpYi9tb25hY28vdnNcIjtcclxuXHJcblxyXG4gICAgQElucHV0KCkgdGFiU2l6ZSA9IDI7XHJcbiAgICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgdGhlbWUgPSBcInZzLWRhcmtcIjtcclxuICAgIEBJbnB1dCgpIGZvbnRGYW1pbHkgPSBcIkRyb2lkIFNhbnMgTW9ub1wiO1xyXG4gICAgQElucHV0KCkgZm9udFNpemUgPSAxNDtcclxuXHJcbiAgICBASW5wdXQoKSBhdXRvbWF0aWNMYXlvdXQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgY29sb3JEZWNvcmF0b3JzID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIGZvbGRpbmcgPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIG1pbmltYXBFbmFibGVkID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIG1pbmltYXA6IE1vbmFjb0VkaXRvci5lZGl0b3IuSUVkaXRvck1pbmltYXBPcHRpb25zID0ge1xyXG4gICAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgIH07XHJcbiAgICBASW5wdXQoKSBzY3JvbGxiYXI6IE1vbmFjb0VkaXRvci5lZGl0b3IuSUVkaXRvclNjcm9sbGJhck9wdGlvbnMgPSB7XHJcbiAgICAgICAgYWx3YXlzQ29uc3VtZU1vdXNlV2hlZWw6IGZhbHNlLFxyXG4gICAgICAgIC8vIHNjcm9sbEJ5UGFnZTogdHJ1ZVxyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIHNtb290aFNjcm9sbGluZyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkgPSAyO1xyXG4gICAgQElucHV0KCkgc2Nyb2xsQmV5b25kTGFzdExpbmUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNjcm9sbEJleW9uZExhc3RDb2x1bW4gPSAwO1xyXG5cclxuICAgIEBJbnB1dCgpIGxpbmVOdW1iZXJzOiBNb25hY29FZGl0b3IuZWRpdG9yLkxpbmVOdW1iZXJzVHlwZSA9IFwib25cIjtcclxuXHJcbiAgICBASW5wdXQoKSByZXN0U2V0dGluZ3M6IE1vbmFjb0VkaXRvci5lZGl0b3IuSVN0YW5kYWxvbmVFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zID0ge307XHJcblxyXG4gICAgZ2V0IHNldHRpbmdzKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMucmVzdFNldHRpbmdzLFxyXG4gICAgICAgICAgICB0aGVtZTogdGhpcy50aGVtZSxcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2UsXHJcbiAgICAgICAgICAgIHRhYlNpemU6IHRoaXMudGFiU2l6ZSxcclxuICAgICAgICAgICAgcmVhZE9ubHk6IHRoaXMucmVhZE9ubHksXHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZm9udEZhbWlseSxcclxuICAgICAgICAgICAgZm9udFNpemU6IHRoaXMuZm9udFNpemUsXHJcbiAgICAgICAgICAgIGF1dG9tYXRpY0xheW91dDogdGhpcy5hdXRvbWF0aWNMYXlvdXQsXHJcbiAgICAgICAgICAgIHNjcm9sbEJleW9uZExhc3RMaW5lOiB0aGlzLnNjcm9sbEJleW9uZExhc3RMaW5lLFxyXG4gICAgICAgICAgICBjb2xvckRlY29yYXRvcnM6IHRoaXMuY29sb3JEZWNvcmF0b3JzLFxyXG4gICAgICAgICAgICBmb2xkaW5nOiB0aGlzLmZvbGRpbmcsXHJcbiAgICAgICAgICAgIHNjcm9sbEJleW9uZExhc3RDb2x1bW46IHRoaXMuc2Nyb2xsQmV5b25kTGFzdENvbHVtbixcclxuICAgICAgICAgICAgbWluaW1hcDogdGhpcy5taW5pbWFwLFxyXG4gICAgICAgICAgICBzY3JvbGxiYXI6IHRoaXMuc2Nyb2xsYmFyLFxyXG4gICAgICAgICAgICBzbW9vdGhTY3JvbGxpbmc6IHRoaXMuc21vb3RoU2Nyb2xsaW5nLFxyXG4gICAgICAgICAgICBtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk6IHRoaXMubW91c2VXaGVlbFNjcm9sbFNlbnNpdGl2aXR5LFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyczogdGhpcy5saW5lTnVtYmVyc1xyXG4gICAgICAgIH0gYXMgTW9uYWNvRWRpdG9yLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc3ViO1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgdGhpcy5pbnN0YWxsTW9uYWNvKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N1YiA9IHRoaXMudHlwZURlYm91bmNlLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2RlQ2hhbmdlLm5leHQodGhpcy5fY29kZSA9IHRoaXMuZWRpdG9yLmdldFZhbHVlKCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICAvLyBJZiB3ZSBjaGFuZ2VkIGFueXRoaW5nIE9USEVSIHRoYW4gY29kZSwgcmVsb2FkIHRoZSBlZGl0b3JcclxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlcykubGVuZ3RoID4gMSB8fCAhY2hhbmdlc1snY29kZSddKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3I/LmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRWRpdG9yKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RoZW1lJ10pXHJcbiAgICAgICAgICAgIE1vbmFjbz8uZWRpdG9yLnNldFRoZW1lKHRoaXMudGhlbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIGxldCBpID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvd1snbW9uYWNvJ10gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIE1vbmFjbyA9IHdpbmRvd1snbW9uYWNvJ107XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ID49IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlRWRpdG9yKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3I/LmRpc3Bvc2UoKTtcclxuICAgICAgICB0aGlzLl9zdWI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVFZGl0b3IoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tTGFuZ3VhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXN0b21MYW5ndWFnZS5pbml0KE1vbmFjbyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IGVkaXRvciA9IHRoaXMuZWRpdG9yID0gTW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy52aWV3Q29udGFpbmVyPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50LCB0aGlzLnNldHRpbmdzIGFzIGFueSk7XHJcblxyXG4gICAgICAgIC8vIGNvbnN0IGF1dG9UeXBpbmdzID0gYXdhaXRcclxuICAgICAgICBNb25hY29BdXRvVHlwZUltcG9ydGVyLmNyZWF0ZShlZGl0b3IsIHtcclxuICAgICAgICAgICAgbW9uYWNvOiBNb25hY28sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlndXJlTGFuZ3VhZ2VTdXBwb3J0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvZGUpIHtcclxuICAgICAgICAgICAgZWRpdG9yLnNldFZhbHVlKHRoaXMuY29kZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlZGl0b3IuZ2V0TW9kZWwoKS5vbkRpZENoYW5nZUNvbnRlbnQoKCkgPT4gdGhpcy5vbkNvZGVUeXBlLmVtaXQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVMYW5ndWFnZVN1cHBvcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJ1ZSBpZiB0aGUgbW9uYWNvIFVNRCBmaWxlcyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgd2VicGFnZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBpc01vbmFjb0luc3RhbGxlZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBpbnN0YWxsTW9uYWNvKCkge1xyXG4gICAgICAgIGlmIChWc2NvZGVDb21wb25lbnQuaXNNb25hY29JbnN0YWxsZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHdpbmRvd1snbW9uYWNvJ10pIHtcclxuICAgICAgICAgICAgVnNjb2RlQ29tcG9uZW50LmlzTW9uYWNvSW5zdGFsbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTW9uYWNvIGhhcyBhIFVNRCBsb2FkZXIgdGhhdCByZXF1aXJlcyB0aGlzXHJcbiAgICAgICAgLy8gTWVyZ2Ugd2l0aCBhbnkgcHJlLWV4aXN0aW5nIGdsb2JhbCByZXF1aXJlIG9iamVjdHMuXHJcbiAgICAgICAgaWYgKCF3aW5kb3dbJ3JlcXVpcmUnXSkgd2luZG93WydyZXF1aXJlJ10gPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKCF3aW5kb3dbJ3JlcXVpcmUnXVsncGF0aHMnXSkgd2luZG93WydyZXF1aXJlJ11bJ3BhdGhzJ10gPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFsbGF0aW9uTG9jYXRpb24uZW5kc1dpdGgoJy8nKSlcclxuICAgICAgICAgICAgdGhpcy5pbnN0YWxsYXRpb25Mb2NhdGlvbiA9IHRoaXMuaW5zdGFsbGF0aW9uTG9jYXRpb24uc2xpY2UoMCwgLTEpO1xyXG5cclxuICAgICAgICB3aW5kb3dbJ3JlcXVpcmUnXVsncGF0aHMnXS52cyA9IHRoaXMuaW5zdGFsbGF0aW9uTG9jYXRpb247XHJcblxyXG4gICAgICAgIGNvbnN0IG1vbmFjb0ZpbGVzID0gW1xyXG4gICAgICAgICAgICAnbG9hZGVyLmpzJyxcclxuICAgICAgICAgICAgJ2VkaXRvci9lZGl0b3IubWFpbi5ubHMuanMnLFxyXG4gICAgICAgICAgICAnZWRpdG9yL2VkaXRvci5tYWluLmpzJyxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbmFjb0ZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XHJcbiAgICAgICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJkZWZlclwiLCBcIlwiKTtcclxuICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcInNyY1wiLCB0aGlzLmluc3RhbGxhdGlvbkxvY2F0aW9uICsgJy8nICsgbW9uYWNvRmlsZXNbaV0pO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBWc2NvZGVDb21wb25lbnQuaXNNb25hY29JbnN0YWxsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkKCkge1xyXG4gICAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLmVkaXRvci5nZXRWYWx1ZSgpO1xyXG5cclxuICAgICAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKFtjb2RlXSwgeyB0eXBlOiAndGV4dC9sb2cnIH0pO1xyXG4gICAgICAgIGxldCBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgbGV0IGJsb2JVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGRhdGEgdmFsdWVzLlxyXG4gICAgICAgIGVsbS5ocmVmID0gYmxvYlVSTDtcclxuICAgICAgICBlbG0uZG93bmxvYWQgPSB0aGlzLmZpbGVuYW1lO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsbSk7XHJcbiAgICAgICAgZWxtLmNsaWNrKCk7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxtKTtcclxuICAgICAgICBlbG0ucmVtb3ZlKCk7XHJcblxyXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVSTCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgICByZXNpemUgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3I/LmxheW91dCgpO1xyXG4gICAgfTtcclxufVxyXG4iXX0=
|
|
187
|
+
export const InstallMonacoUMD = async (path) => {
|
|
188
|
+
if (window['monaco'])
|
|
189
|
+
return window['monaco'];
|
|
190
|
+
// Prevent duplicate injection
|
|
191
|
+
const scriptEls = document.querySelectorAll('body>script[monaco][defer][src]');
|
|
192
|
+
// Only perform installation if a path is specified.
|
|
193
|
+
if (path && scriptEls.length == 0) {
|
|
194
|
+
// Monaco has a UMD loader that requires this
|
|
195
|
+
// Merge with any pre-existing global require objects.
|
|
196
|
+
if (!window['require'])
|
|
197
|
+
window['require'] = {};
|
|
198
|
+
if (!window['require']['paths'])
|
|
199
|
+
window['require']['paths'] = {};
|
|
200
|
+
if (path.endsWith('/'))
|
|
201
|
+
path = path.slice(0, -1);
|
|
202
|
+
window['require']['paths'].vs = path;
|
|
203
|
+
const monacoFiles = [
|
|
204
|
+
'loader.js',
|
|
205
|
+
'editor/editor.main.nls.js',
|
|
206
|
+
'editor/editor.main.js',
|
|
207
|
+
];
|
|
208
|
+
for (let i = 0; i < monacoFiles.length; i++) {
|
|
209
|
+
const script = document.createElement("script");
|
|
210
|
+
script.setAttribute("monaco", "");
|
|
211
|
+
script.setAttribute("defer", "");
|
|
212
|
+
script.setAttribute("src", path + '/' + monacoFiles[i]);
|
|
213
|
+
document.body.append(script);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Return a promise that will resolve when monaco finishes loading
|
|
217
|
+
return await new Promise((res, rej) => {
|
|
218
|
+
let count = 0;
|
|
219
|
+
let i = window.setInterval(() => {
|
|
220
|
+
count++;
|
|
221
|
+
if (window['monaco'] != undefined) {
|
|
222
|
+
window.clearInterval(i);
|
|
223
|
+
Monaco = window['monaco'];
|
|
224
|
+
res(true);
|
|
225
|
+
}
|
|
226
|
+
else if (count >= 100) {
|
|
227
|
+
window.clearInterval(i);
|
|
228
|
+
res(false);
|
|
229
|
+
}
|
|
230
|
+
}, 100);
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvY29tcG9uZW50cy92c2NvZGUvdnNjb2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQThDLE1BQU0sZUFBZSxDQUFDO0FBRzNKLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRXBDLElBQUksTUFBMkIsQ0FBQztBQWVoQyxNQUFNLE9BQU8sZUFBZTtJQU14QixJQUFhLElBQUksQ0FBQyxLQUFhO1FBQzNCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ25CLE9BQU87UUFDWCxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVE7WUFDeEIsTUFBTSxJQUFJLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUEsQ0FBQztJQUNGLElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFTeEMsSUFBYSxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2IsSUFBSSxFQUFFLFlBQVk7WUFDbEIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztTQUNoQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUE7SUFDL0IsQ0FBQztJQUNELElBQUksUUFBUSxL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QUFDLENBQUMsQ0FBQztnQkFFeEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2I7aUJBQ0ksSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO2dCQUNuQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZDtRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCAqIGFzIE1vbmFjb0VkaXRvciBmcm9tICdtb25hY28tZWRpdG9yJztcclxuaW1wb3J0IHsgTW9uYWNvQXV0b1R5cGVJbXBvcnRlciB9IGZyb20gJy4vdHMtdHlwZS1yZXNvbHZlci9tYWluJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XHJcblxyXG5sZXQgTW9uYWNvOiB0eXBlb2YgTW9uYWNvRWRpdG9yO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC12c2NvZGUnLFxyXG4gICAgdGVtcGxhdGU6ICcnLFxyXG4gICAgc3R5bGVzOiBbYFxyXG46aG9zdCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG1heC1oZWlnaHQ6IDEwMHZoO1xyXG4gICAgbWF4LXdpZHRoOiAxMDB2dztcclxufVxyXG4gICAgYF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWc2NvZGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgaXNEaXJ0eSA9IGZhbHNlO1xyXG4gICAgZWRpdG9yOiBNb25hY29FZGl0b3IuZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcclxuICAgIGZpbGVuYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29kZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2V0IGNvZGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0aGlzLl9jb2RlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSBcInN0cmluZ1wiKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZ1wiKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY29kZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yPy5zZXRWYWx1ZSh0aGlzLmNvZGUpO1xyXG4gICAgfTtcclxuICAgIGdldCBjb2RlKCkgeyByZXR1cm4gdGhpcy5fY29kZT8udHJpbSgpIH1cclxuICAgIEBPdXRwdXQoKSBjb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIG9uQ29kZVR5cGUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIHByaXZhdGUgdHlwZURlYm91bmNlID0gdGhpcy5vbkNvZGVUeXBlLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpO1xyXG5cclxuICAgIEBJbnB1dCgpIGN1c3RvbUxhbmd1YWdlOiB7IGluaXQ6IEZ1bmN0aW9uOyB9O1xyXG5cclxuXHJcbiAgICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgc2V0IGxhbmd1YWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9sYW5ndWFnZSA9IHtcclxuICAgICAgICAgICAgJ3RzJzogXCJ0eXBlc2NyaXB0XCIsXHJcbiAgICAgICAgICAgICdodG1sJzogJ3htbCcsXHJcbiAgICAgICAgICAgICdzY3NzJzogJ2NzcydcclxuICAgICAgICB9W3ZhbHVlXSB8fCB2YWx1ZSB8fCBcImF1dG9cIlxyXG4gICAgfVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkgeyByZXR1cm4gdGhpcy5fbGFuZ3VhZ2UgfVxyXG5cclxuICAgIEBJbnB1dCgpIGluc3RhbGxhdGlvbkxvY2F0aW9uID0gXCIvbGliL21vbmFjby92c1wiO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKSB0YWJTaXplID0gMjtcclxuICAgIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB0aGVtZSA9IFwidnMtZGFya1wiO1xyXG4gICAgQElucHV0KCkgZm9udEZhbWlseSA9IFwiRHJvaWQgU2FucyBNb25vXCI7XHJcbiAgICBASW5wdXQoKSBmb250U2l6ZSA9IDE0O1xyXG5cclxuICAgIEBJbnB1dCgpIGF1dG9tYXRpY0xheW91dCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBjb2xvckRlY29yYXRvcnMgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZm9sZGluZyA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgbWluaW1hcEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgbWluaW1hcDogTW9uYWNvRWRpdG9yLmVkaXRvci5JRWRpdG9yTWluaW1hcE9wdGlvbnMgPSB7XHJcbiAgICAgICAgZW5hYmxlZDogdHJ1ZVxyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIHNjcm9sbGJhcjogTW9uYWNvRWRpdG9yLmVkaXRvci5JRWRpdG9yU2Nyb2xsYmFyT3B0aW9ucyA9IHtcclxuICAgICAgICBhbHdheXNDb25zdW1lTW91c2VXaGVlbDogZmFsc2UsXHJcbiAgICAgICAgLy8gc2Nyb2xsQnlQYWdlOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgQElucHV0KCkgc21vb3RoU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIG1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eSA9IDI7XHJcbiAgICBASW5wdXQoKSBzY3JvbGxCZXlvbmRMYXN0TGluZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgc2Nyb2xsQmV5b25kTGFzdENvbHVtbiA9IDA7XHJcblxyXG4gICAgQElucHV0KCkgbGluZU51bWJlcnM6IE1vbmFjb0VkaXRvci5lZGl0b3IuTGluZU51bWJlcnNUeXBlID0gXCJvblwiO1xyXG5cclxuICAgIEBJbnB1dCgpIHJlc3RTZXR0aW5nczogTW9uYWNvRWRpdG9yLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICBnZXQgc2V0dGluZ3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4udGhpcy5yZXN0U2V0dGluZ3MsXHJcbiAgICAgICAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogdGhpcy5sYW5ndWFnZSxcclxuICAgICAgICAgICAgdGFiU2l6ZTogdGhpcy50YWJTaXplLFxyXG4gICAgICAgICAgICByZWFkT25seTogdGhpcy5yZWFkT25seSxcclxuICAgICAgICAgICAgZm9udEZhbWlseTogdGhpcy5mb250RmFtaWx5LFxyXG4gICAgICAgICAgICBmb250U2l6ZTogdGhpcy5mb250U2l6ZSxcclxuICAgICAgICAgICAgYXV0b21hdGljTGF5b3V0OiB0aGlzLmF1dG9tYXRpY0xheW91dCxcclxuICAgICAgICAgICAgc2Nyb2xsQmV5b25kTGFzdExpbmU6IHRoaXMuc2Nyb2xsQmV5b25kTGFzdExpbmUsXHJcbiAgICAgICAgICAgIGNvbG9yRGVjb3JhdG9yczogdGhpcy5jb2xvckRlY29yYXRvcnMsXHJcbiAgICAgICAgICAgIGZvbGRpbmc6IHRoaXMuZm9sZGluZyxcclxuICAgICAgICAgICAgc2Nyb2xsQmV5b25kTGFzdENvbHVtbjogdGhpcy5zY3JvbGxCZXlvbmRMYXN0Q29sdW1uLFxyXG4gICAgICAgICAgICBtaW5pbWFwOiB0aGlzLm1pbmltYXAsXHJcbiAgICAgICAgICAgIHNjcm9sbGJhcjogdGhpcy5zY3JvbGxiYXIsXHJcbiAgICAgICAgICAgIHNtb290aFNjcm9sbGluZzogdGhpcy5zbW9vdGhTY3JvbGxpbmcsXHJcbiAgICAgICAgICAgIG1vdXNlV2hlZWxTY3JvbGxTZW5zaXRpdml0eTogdGhpcy5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHksXHJcbiAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0aGlzLmxpbmVOdW1iZXJzXHJcbiAgICAgICAgfSBhcyBNb25hY29FZGl0b3IuZWRpdG9yLklTdGFuZGFsb25lRWRpdG9yQ29uc3RydWN0aW9uT3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zdWI7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBJbnN0YWxsTW9uYWNvVU1EKHRoaXMuaW5zdGFsbGF0aW9uTG9jYXRpb24pO1xyXG5cclxuICAgICAgICB0aGlzLl9zdWIgPSB0aGlzLnR5cGVEZWJvdW5jZS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY29kZUNoYW5nZS5uZXh0KHRoaXMuX2NvZGUgPSB0aGlzLmVkaXRvci5nZXRWYWx1ZSgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgLy8gSWYgd2UgY2hhbmdlZCBhbnl0aGluZyBPVEhFUiB0aGFuIGNvZGUsIHJlbG9hZCB0aGUgZWRpdG9yXHJcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNoYW5nZXMpLmxlbmd0aCA+IDEgfHwgIWNoYW5nZXNbJ2NvZGUnXSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yPy5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGFuZ2VzWyd0aGVtZSddKVxyXG4gICAgICAgICAgICBNb25hY28/LmVkaXRvci5zZXRUaGVtZSh0aGlzLnRoZW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgYXdhaXQgSW5zdGFsbE1vbmFjb1VNRCgpO1xyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yPy5kaXNwb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fc3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlRWRpdG9yKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUxhbmd1YWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tTGFuZ3VhZ2UuaW5pdChNb25hY28pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGVkaXRvciA9IHRoaXMuZWRpdG9yID0gTW9uYWNvLmVkaXRvci5jcmVhdGUoXHJcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lcj8uZWxlbWVudD8ubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncyBhcyBhbnlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyBjb25zdCBhdXRvVHlwaW5ncyA9IGF3YWl0XHJcbiAgICAgICAgTW9uYWNvQXV0b1R5cGVJbXBvcnRlci5jcmVhdGUoZWRpdG9yLCB7XHJcbiAgICAgICAgICAgIG1vbmFjbzogTW9uYWNvLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyZUxhbmd1YWdlU3VwcG9ydCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jb2RlKSB7XHJcbiAgICAgICAgICAgIGVkaXRvci5zZXRWYWx1ZSh0aGlzLmNvZGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWRpdG9yLmdldE1vZGVsKCkub25EaWRDaGFuZ2VDb250ZW50KCgpID0+IHRoaXMub25Db2RlVHlwZS5lbWl0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29uZmlndXJlTGFuZ3VhZ2VTdXBwb3J0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZCgpIHtcclxuICAgICAgICBjb25zdCBjb2RlID0gdGhpcy5lZGl0b3IuZ2V0VmFsdWUoKTtcclxuXHJcbiAgICAgICAgbGV0IGJsb2IgPSBuZXcgQmxvYihbY29kZV0sIHsgdHlwZTogJ3RleHQvbG9nJyB9KTtcclxuICAgICAgICBsZXQgZWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIGxldCBibG9iVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBkYXRhIHZhbHVlcy5cclxuICAgICAgICBlbG0uaHJlZiA9IGJsb2JVUkw7XHJcbiAgICAgICAgZWxtLmRvd25sb2FkID0gdGhpcy5maWxlbmFtZTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbG0pO1xyXG4gICAgICAgIGVsbS5jbGljaygpO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsbSk7XHJcbiAgICAgICAgZWxtLnJlbW92ZSgpO1xyXG5cclxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVUkwpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gICAgcmVzaXplID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yPy5sYXlvdXQoKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJbnN0YWxsTW9uYWNvVU1EID0gYXN5bmMgKHBhdGg/OiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh3aW5kb3dbJ21vbmFjbyddKSByZXR1cm4gd2luZG93Wydtb25hY28nXTtcclxuXHJcbiAgICAvLyBQcmV2ZW50IGR1cGxpY2F0ZSBpbmplY3Rpb25cclxuICAgIGNvbnN0IHNjcmlwdEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHk+c2NyaXB0W21vbmFjb11bZGVmZXJdW3NyY10nKTtcclxuXHJcbiAgICAvLyBPbmx5IHBlcmZvcm0gaW5zdGFsbGF0aW9uIGlmIGEgcGF0aCBpcyBzcGVjaWZpZWQuXHJcbiAgICBpZiAocGF0aCAmJiBzY3JpcHRFbHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAvLyBNb25hY28gaGFzIGEgVU1EIGxvYWRlciB0aGF0IHJlcXVpcmVzIHRoaXNcclxuICAgICAgICAvLyBNZXJnZSB3aXRoIGFueSBwcmUtZXhpc3RpbmcgZ2xvYmFsIHJlcXVpcmUgb2JqZWN0cy5cclxuICAgICAgICBpZiAoIXdpbmRvd1sncmVxdWlyZSddKSB3aW5kb3dbJ3JlcXVpcmUnXSA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoIXdpbmRvd1sncmVxdWlyZSddWydwYXRocyddKSB3aW5kb3dbJ3JlcXVpcmUnXVsncGF0aHMnXSA9IHt9O1xyXG5cclxuICAgICAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKVxyXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XHJcblxyXG4gICAgICAgIHdpbmRvd1sncmVxdWlyZSddWydwYXRocyddLnZzID0gcGF0aDtcclxuXHJcbiAgICAgICAgY29uc3QgbW9uYWNvRmlsZXMgPSBbXHJcbiAgICAgICAgICAgICdsb2FkZXIuanMnLFxyXG4gICAgICAgICAgICAnZWRpdG9yL2VkaXRvci5tYWluLm5scy5qcycsXHJcbiAgICAgICAgICAgICdlZGl0b3IvZWRpdG9yLm1haW4uanMnLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9uYWNvRmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcclxuICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcIm1vbmFjb1wiLCBcIlwiKTtcclxuICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImRlZmVyXCIsIFwiXCIpO1xyXG4gICAgICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKFwic3JjXCIsIHBhdGggKyAnLycgKyBtb25hY29GaWxlc1tpXSk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybiBhIHByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgd2hlbiBtb25hY28gZmluaXNoZXMgbG9hZGluZ1xyXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xyXG4gICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgbGV0IGkgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb3VudCsrO1xyXG5cclxuICAgICAgICAgICAgaWYgKHdpbmRvd1snbW9uYWNvJ10gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBNb25hY28gPSB3aW5kb3dbJ21vbmFjbyddO1xyXG4gICAgICAgICAgICAgICAgcmVzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID49IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaSk7XHJcbiAgICAgICAgICAgICAgICByZXMoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgIH0pO1xyXG59XHJcbiJdfQ==
|
|
@@ -10397,7 +10397,7 @@ class VscodeComponent {
|
|
|
10397
10397
|
var _a;
|
|
10398
10398
|
(_a = this.editor) === null || _a === void 0 ? void 0 : _a.layout();
|
|
10399
10399
|
};
|
|
10400
|
-
this.
|
|
10400
|
+
InstallMonacoUMD(this.installationLocation);
|
|
10401
10401
|
this._sub = this.typeDebounce.subscribe(t => {
|
|
10402
10402
|
this.codeChange.next(this._code = this.editor.getValue());
|
|
10403
10403
|
});
|
|
@@ -10416,21 +10416,7 @@ class VscodeComponent {
|
|
|
10416
10416
|
}
|
|
10417
10417
|
ngAfterViewInit() {
|
|
10418
10418
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10419
|
-
yield
|
|
10420
|
-
let count = 0;
|
|
10421
|
-
let i = window.setInterval(() => {
|
|
10422
|
-
count++;
|
|
10423
|
-
if (window['monaco'] != undefined) {
|
|
10424
|
-
window.clearInterval(i);
|
|
10425
|
-
Monaco = window['monaco'];
|
|
10426
|
-
res(true);
|
|
10427
|
-
}
|
|
10428
|
-
if (count >= 100) {
|
|
10429
|
-
window.clearInterval(i);
|
|
10430
|
-
res(false);
|
|
10431
|
-
}
|
|
10432
|
-
}, 100);
|
|
10433
|
-
});
|
|
10419
|
+
yield InstallMonacoUMD();
|
|
10434
10420
|
this.createEditor();
|
|
10435
10421
|
});
|
|
10436
10422
|
}
|
|
@@ -10457,35 +10443,6 @@ class VscodeComponent {
|
|
|
10457
10443
|
}
|
|
10458
10444
|
configureLanguageSupport() {
|
|
10459
10445
|
}
|
|
10460
|
-
installMonaco() {
|
|
10461
|
-
if (VscodeComponent.isMonacoInstalled)
|
|
10462
|
-
return;
|
|
10463
|
-
if (window['monaco']) {
|
|
10464
|
-
VscodeComponent.isMonacoInstalled = true;
|
|
10465
|
-
return;
|
|
10466
|
-
}
|
|
10467
|
-
// Monaco has a UMD loader that requires this
|
|
10468
|
-
// Merge with any pre-existing global require objects.
|
|
10469
|
-
if (!window['require'])
|
|
10470
|
-
window['require'] = {};
|
|
10471
|
-
if (!window['require']['paths'])
|
|
10472
|
-
window['require']['paths'] = {};
|
|
10473
|
-
if (this.installationLocation.endsWith('/'))
|
|
10474
|
-
this.installationLocation = this.installationLocation.slice(0, -1);
|
|
10475
|
-
window['require']['paths'].vs = this.installationLocation;
|
|
10476
|
-
const monacoFiles = [
|
|
10477
|
-
'loader.js',
|
|
10478
|
-
'editor/editor.main.nls.js',
|
|
10479
|
-
'editor/editor.main.js',
|
|
10480
|
-
];
|
|
10481
|
-
for (let i = 0; i < monacoFiles.length; i++) {
|
|
10482
|
-
const script = document.createElement("script");
|
|
10483
|
-
script.setAttribute("defer", "");
|
|
10484
|
-
script.setAttribute("src", this.installationLocation + '/' + monacoFiles[i]);
|
|
10485
|
-
document.body.append(script);
|
|
10486
|
-
}
|
|
10487
|
-
VscodeComponent.isMonacoInstalled = true;
|
|
10488
|
-
}
|
|
10489
10446
|
download() {
|
|
10490
10447
|
const code = this.editor.getValue();
|
|
10491
10448
|
let blob = new Blob([code], { type: 'text/log' });
|
|
@@ -10501,10 +10458,6 @@ class VscodeComponent {
|
|
|
10501
10458
|
URL.revokeObjectURL(blobURL);
|
|
10502
10459
|
}
|
|
10503
10460
|
}
|
|
10504
|
-
/**
|
|
10505
|
-
* true if the monaco UMD files are injected into the webpage
|
|
10506
|
-
*/
|
|
10507
|
-
VscodeComponent.isMonacoInstalled = false;
|
|
10508
10461
|
VscodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VscodeComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10509
10462
|
VscodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: VscodeComponent, isStandalone: true, selector: "app-vscode", inputs: { code: "code", customLanguage: "customLanguage", language: "language", installationLocation: "installationLocation", tabSize: "tabSize", readOnly: "readOnly", theme: "theme", fontFamily: "fontFamily", fontSize: "fontSize", automaticLayout: "automaticLayout", colorDecorators: "colorDecorators", folding: "folding", minimapEnabled: "minimapEnabled", minimap: "minimap", scrollbar: "scrollbar", smoothScrolling: "smoothScrolling", mouseWheelScrollSensitivity: "mouseWheelScrollSensitivity", scrollBeyondLastLine: "scrollBeyondLastLine", scrollBeyondLastColumn: "scrollBeyondLastColumn", lineNumbers: "lineNumbers", restSettings: "restSettings" }, outputs: { codeChange: "codeChange" }, host: { listeners: { "window:resize": "resize($event)" } }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":host{display:block;height:100%;max-height:100vh;max-width:100vw}\n"] });
|
|
10510
10463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VscodeComponent, decorators: [{
|
|
@@ -10558,6 +10511,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
10558
10511
|
type: HostListener,
|
|
10559
10512
|
args: ['window:resize', ['$event']]
|
|
10560
10513
|
}] } });
|
|
10514
|
+
const InstallMonacoUMD = (path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
10515
|
+
if (window['monaco'])
|
|
10516
|
+
return window['monaco'];
|
|
10517
|
+
// Prevent duplicate injection
|
|
10518
|
+
const scriptEls = document.querySelectorAll('body>script[monaco][defer][src]');
|
|
10519
|
+
// Only perform installation if a path is specified.
|
|
10520
|
+
if (path && scriptEls.length == 0) {
|
|
10521
|
+
// Monaco has a UMD loader that requires this
|
|
10522
|
+
// Merge with any pre-existing global require objects.
|
|
10523
|
+
if (!window['require'])
|
|
10524
|
+
window['require'] = {};
|
|
10525
|
+
if (!window['require']['paths'])
|
|
10526
|
+
window['require']['paths'] = {};
|
|
10527
|
+
if (path.endsWith('/'))
|
|
10528
|
+
path = path.slice(0, -1);
|
|
10529
|
+
window['require']['paths'].vs = path;
|
|
10530
|
+
const monacoFiles = [
|
|
10531
|
+
'loader.js',
|
|
10532
|
+
'editor/editor.main.nls.js',
|
|
10533
|
+
'editor/editor.main.js',
|
|
10534
|
+
];
|
|
10535
|
+
for (let i = 0; i < monacoFiles.length; i++) {
|
|
10536
|
+
const script = document.createElement("script");
|
|
10537
|
+
script.setAttribute("monaco", "");
|
|
10538
|
+
script.setAttribute("defer", "");
|
|
10539
|
+
script.setAttribute("src", path + '/' + monacoFiles[i]);
|
|
10540
|
+
document.body.append(script);
|
|
10541
|
+
}
|
|
10542
|
+
}
|
|
10543
|
+
// Return a promise that will resolve when monaco finishes loading
|
|
10544
|
+
return yield new Promise((res, rej) => {
|
|
10545
|
+
let count = 0;
|
|
10546
|
+
let i = window.setInterval(() => {
|
|
10547
|
+
count++;
|
|
10548
|
+
if (window['monaco'] != undefined) {
|
|
10549
|
+
window.clearInterval(i);
|
|
10550
|
+
Monaco = window['monaco'];
|
|
10551
|
+
res(true);
|
|
10552
|
+
}
|
|
10553
|
+
else if (count >= 100) {
|
|
10554
|
+
window.clearInterval(i);
|
|
10555
|
+
res(false);
|
|
10556
|
+
}
|
|
10557
|
+
}, 100);
|
|
10558
|
+
});
|
|
10559
|
+
});
|
|
10561
10560
|
|
|
10562
10561
|
/**
|
|
10563
10562
|
* Extend this component to automatically generate
|
|
@@ -10638,5 +10637,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
10638
10637
|
* Generated bundle index. Do not edit.
|
|
10639
10638
|
*/
|
|
10640
10639
|
|
|
10641
|
-
export { ComponentResolveStrategy, DependencyService, DialogService, DynamicHTMLComponent, DynamicHTMLOptions, DynamicHTMLRenderer, Fetch, FileService, FilemanagerComponent, HtmlBypass, KeyboardService, LazyLoaderComponent, LazyLoaderModule, LazyLoaderService, MenuDirective, NGX_DYNAMIC_CONFIG, NGX_LAZY_LOADER_CONFIG, NGX_WEB_COMPONENTS_CONFIG, NavigationService, NgxDynamicHTMLModule, OnMount, ReactMagicWrapperComponent, ResourceBypass, ScriptBypass, StyleBypass, TabulatorComponent, ThemeService, TooltipDirective, UrlBypass, VscodeComponent, openMenu, openTooltip };
|
|
10640
|
+
export { ComponentResolveStrategy, DependencyService, DialogService, DynamicHTMLComponent, DynamicHTMLOptions, DynamicHTMLRenderer, Fetch, FileService, FilemanagerComponent, HtmlBypass, InstallMonacoUMD, KeyboardService, LazyLoaderComponent, LazyLoaderModule, LazyLoaderService, MenuDirective, NGX_DYNAMIC_CONFIG, NGX_LAZY_LOADER_CONFIG, NGX_WEB_COMPONENTS_CONFIG, NavigationService, NgxDynamicHTMLModule, OnMount, ReactMagicWrapperComponent, ResourceBypass, ScriptBypass, StyleBypass, TabulatorComponent, ThemeService, TooltipDirective, UrlBypass, VscodeComponent, openMenu, openTooltip };
|
|
10642
10641
|
//# sourceMappingURL=dotglitch-ngx-common.mjs.map
|