瀏覽代碼

Give up on top-level inclusion of xterm and CheerpX

In preparation for SSR
Alessandro Pignotti 9 月之前
父節點
當前提交
d4db6f8e16
共有 1 個文件被更改,包括 12 次插入12 次删除
  1. 12 12
      src/lib/WebVM.svelte

+ 12 - 12
src/lib/WebVM.svelte

@@ -1,11 +1,7 @@
 <script>
 	import { onMount } from 'svelte';
-	import { Terminal } from '@xterm/xterm';
-	import { FitAddon } from '@xterm/addon-fit';
-	import { WebLinksAddon } from '@xterm/addon-web-links';
 	import Nav from 'labs/packages/global-navbar/src/Nav.svelte';
 	import SideBar from '$lib/SideBar.svelte';
-	import * as CheerpX from '@leaningtech/cheerpx';
 	import '$lib/global.css';
 	import '@xterm/xterm/css/xterm.css'
 	import '@fortawesome/fontawesome-free/css/all.min.css'
@@ -17,12 +13,8 @@
 	export let processCallback = null;
 	export let cacheId = null;
 
-	var term = new Terminal({cursorBlink:true, convertEol:true, fontFamily:"monospace", fontWeight: 400, fontWeightBold: 700});
+	var term = null;
 	var cx = null;
-	var fitAddon = new FitAddon();
-	term.loadAddon(fitAddon);
-	var linkAddon = new WebLinksAddon();
-	term.loadAddon(linkAddon);
 	var cxReadFunc = null;
 	var processCount = 0;
 	var curVT = 0;
@@ -52,15 +44,23 @@
 	{
 		cpuActivity.set(state != "ready");
 	}
-	term.onData(readData);
-	function initTerminal()
+	async function initTerminal()
 	{
+		const { Terminal } = await import('@xterm/xterm');
+		const { FitAddon } = await import('@xterm/addon-fit');
+		const { WebLinksAddon } = await import('@xterm/addon-web-links');
+		term = new Terminal({cursorBlink:true, convertEol:true, fontFamily:"monospace", fontWeight: 400, fontWeightBold: 700});
+		var fitAddon = new FitAddon();
+		term.loadAddon(fitAddon);
+		var linkAddon = new WebLinksAddon();
+		term.loadAddon(linkAddon);
 		const consoleDiv = document.getElementById("console");
 		term.open(consoleDiv);
 		term.scrollToTop();
 		fitAddon.fit();
 		window.addEventListener("resize", function(ev){ fitAddon.fit(); });
 		term.focus();
+		term.onData(readData);
 		// Avoid undesired default DnD handling
 		function preventDefaults (e) {
 			e.preventDefault()
@@ -94,7 +94,7 @@
 	}
 	async function initCheerpX()
 	{
-		// TODO: Check for SAB support
+		const CheerpX = await import('@leaningtech/cheerpx');
 		var blockDevice = null;
 		switch(configObj.diskImageType)
 		{