diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index 7859ecb23c..44fbd0fe20 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -1,16 +1,6 @@ 'use strict' import { RunTab, makeUdapp } from './app/udapp' -import { RemixEngine } from './remixEngine' import { RemixAppManager } from './remixAppManager' -import { ThemeModule } from './app/tabs/theme-module' -import { NetworkModule } from './app/tabs/network-module' -import { Web3ProviderModule } from './app/tabs/web3-provider' -import { SidePanel } from './app/components/side-panel' -import { HiddenPanel } from './app/components/hidden-panel' -import { VerticalIcons } from './app/components/vertical-icons' -import { LandingPage } from './app/ui/landing-page/landing-page' -import { MainPanel } from './app/components/main-panel' -import { PermissionHandlerPlugin } from './app/plugins/permission-handler-plugin' import { WalkthroughService } from './walkthroughService' @@ -95,7 +85,7 @@ class AppComponent { const pluginLoader = self.appManager.pluginLoader self.panels = {} self.workspace = pluginLoader.get() - self.engine = new RemixEngine() + self.engine = new (await import('./remixEngine')).RemixEngine self.engine.register(appManager) const matomoDomains = { @@ -126,7 +116,7 @@ class AppComponent { // ----------------- gist service --------------------------------- self.gistHandler = new GistHandler() // ----------------- theme service --------------------------------- - self.themeModule = new ThemeModule() + self.themeModule = new (await import('./app/tabs/theme-module')).ThemeModule() Registry.getInstance().put({ api: self.themeModule, name: 'themeModule' }) // ----------------- editor service ---------------------------- @@ -159,9 +149,9 @@ class AppComponent { // service which fetch contract artifacts from sourve-verify, put artifacts in remix and compile it const fetchAndCompile = new FetchAndCompile() // ----------------- network service (resolve network id / name) ----- - const networkModule = new NetworkModule(blockchain) + const networkModule = new (await import('./app/tabs/network-module')).NetworkModule(blockchain) // ----------------- represent the current selected web3 provider ---- - const web3Provider = new Web3ProviderModule(blockchain) + const web3Provider = new (await import('./app/tabs/web3-provider')).Web3ProviderModule(blockchain) const hardhatProvider = new HardhatProvider(blockchain) // ----------------- convert offset to line/column service ----------- const offsetToLineColumnConverter = new OffsetToLineColumnConverter() @@ -192,7 +182,7 @@ class AppComponent { const configPlugin = new ConfigPlugin() self.layout = new Layout() - const permissionHandler = new PermissionHandlerPlugin() + const permissionHandler = new (await import('./app/plugins/permission-handler-plugin')).PermissionHandlerPlugin() self.engine.register([ permissionHandler, @@ -219,22 +209,22 @@ class AppComponent { ]) // LAYOUT & SYSTEM VIEWS - const appPanel = new MainPanel() + const appPanel = new (await import('./app/components/main-panel')).MainPanel() Registry.getInstance().put({ api: self.mainview, name: 'mainview' }) const tabProxy = new TabProxy(fileManager, editor) self.engine.register([appPanel, tabProxy]) // those views depend on app_manager - self.menuicons = new VerticalIcons() - self.sidePanel = new SidePanel() - self.hiddenPanel = new HiddenPanel() + self.menuicons = new (await import('./app/components/vertical-icons')).VerticalIcons() + self.sidePanel = new (await import('./app/components/side-panel')).SidePanel() + self.hiddenPanel = new (await import('./app/components/hidden-panel')).HiddenPanel() const pluginManagerComponent = new PluginManagerComponent( appManager, self.engine ) const filePanel = new FilePanel(appManager) - const landingPage = new LandingPage( + const landingPage = new (await import('./app/ui/landing-page/landing-page')).LandingPage( appManager, self.menuicons, fileManager, diff --git a/apps/remix-ide/src/index.tsx b/apps/remix-ide/src/index.tsx index 9a20939ed4..ff690d4c5e 100644 --- a/apps/remix-ide/src/index.tsx +++ b/apps/remix-ide/src/index.tsx @@ -1,16 +1,37 @@ // eslint-disable-next-line no-use-before-define import React from 'react' -import ReactDOM from 'react-dom' -import AppComponent from './app' +import { render } from 'react-dom' // eslint-disable-next-line no-unused-vars import { RemixApp } from '@remix-ui/app' -const appComponent = new AppComponent() -appComponent.run() +(function () { + render( + +
+ + + + + +
+ REMIX IDE +
+
+
, + document.getElementById('root') + ) +})() -ReactDOM.render( - - - , - document.getElementById('root') -) +import ('./app').then((AppComponent) => { + const appComponent = new AppComponent.default() + appComponent.run().then(() => { + render( + + + , + document.getElementById('root') + ) + }) +}).catch(err => { + console.log('Error on loading Remix:', err) +}) diff --git a/apps/remix-ide/tsconfig.json b/apps/remix-ide/tsconfig.json index 04d219a926..b2a6956c94 100644 --- a/apps/remix-ide/tsconfig.json +++ b/apps/remix-ide/tsconfig.json @@ -4,10 +4,8 @@ "jsx": "react", "allowJs": true, "esModuleInterop": true, - "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "types": ["node", "jest"], - "module": "es6", "resolveJsonModule": true }, "files": [